diff --git a/apps/common/main/lib/component/DataView.js b/apps/common/main/lib/component/DataView.js
index cf224cdee5..7aa254af0a 100644
--- a/apps/common/main/lib/component/DataView.js
+++ b/apps/common/main/lib/component/DataView.js
@@ -561,6 +561,8 @@ define([
},
onResetItems: function() {
+ this.trigger('reset:before', this);
+
_.each(this.dataViewItems, function(item) {
var tip = item.$el.data('bs.tooltip');
if (tip) {
diff --git a/apps/spreadsheeteditor/main/app/view/ExternalLinksDlg.js b/apps/spreadsheeteditor/main/app/view/ExternalLinksDlg.js
index 433741cafa..fe147c07e7 100644
--- a/apps/spreadsheeteditor/main/app/view/ExternalLinksDlg.js
+++ b/apps/spreadsheeteditor/main/app/view/ExternalLinksDlg.js
@@ -113,12 +113,15 @@ define([
],
itemTemplate: _.template([
'
',
- '
<%= value %>
',
- '
<%= status %>
',
+ '
<%= value %>
',
+ '
<%= status %>
',
'
'
].join('')),
tabindex: 1
});
+ this.linksList.on('item:add', _.bind(this.addTooltips, this));
+ this.linksList.on('item:change', _.bind(this.addTooltips, this));
+ this.linksList.on('reset:before', _.bind(this.resetItemsBefore, this));
this.btnUpdate = new Common.UI.Button({
parentEl: $('#external-links-btn-update', this.$window),
@@ -286,7 +289,6 @@ define([
},
setIsUpdating: function(status, immediately) {
- console.log(status);
immediately = immediately || !status; // set timeout when start updating only
this.isUpdating = status;
if (!status && this.timerId) {
@@ -311,6 +313,65 @@ define([
this.linkStatus[id] = result || this.textOk;
},
+ resetItemsBefore: function (dataview) {
+ dataview.dataViewItems && _.each(dataview.dataViewItems, function(view) {
+ if (view.tipsArray) {
+ view.tipsArray.forEach(function (item) {
+ if (item) {
+ if (item.dontShow===undefined)
+ item.dontShow = true;
+ (item.tip()).remove();
+ }
+ });
+ }
+ }, this);
+ },
+
+ addTooltips: function (dataview, view, record) {
+ if (view.tipsArray) {
+ view.tipsArray.forEach(function (item) {
+ if (item) {
+ if (item.dontShow===undefined)
+ item.dontShow = true;
+ (item.tip()).remove();
+ }
+ });
+ }
+
+ var el = document.createElement('span');
+ el.style.fontSize = document.documentElement.style.getPropertyValue("--font-size-base-app-custom") || '11px';
+ el.style.fontFamily = document.documentElement.style.getPropertyValue("--font-family-base-custom") || 'Arial, Helvetica, "Helvetica Neue", sans-serif';
+ el.style.position = "absolute";
+ el.style.top = '-1000px';
+ el.style.left = '-1000px';
+ document.body.appendChild(el);
+
+ var divs = $(view.el).find('.list-item > div');
+ this.checkTextOfItem(el, view, $(divs[0]), record.get('value'), this.linksList.options.headers[0].width );
+ this.checkTextOfItem(el, view, $(divs[1]), record.get('status'), this.linksList.options.headers[1].width );
+
+ document.body.removeChild(el);
+ view.tipsArray = [];
+ },
+
+ checkTextOfItem: function (test_el, view, div, txt, limit ) {
+ test_el.innerHTML = txt;
+
+ var dataview = this.linksList;
+ if (test_el.offsetWidth > limit) {
+ div.one('mouseenter', function(e){ // hide tooltip when mouse is over menu
+ var $target = $(e.target);
+ $target.tooltip({
+ title : txt, // use actual tip, because it can be changed
+ placement : 'cursor',
+ zIndex : dataview.tipZIndex
+ });
+ $target.mouseenter();
+ view.tipsArray.push($target.data('bs.tooltip'));
+ });
+ }
+ },
+
txtTitle: 'External Links',
textUpdate: 'Update Values',
textUpdateAll: 'Update All',