[SSE] Bug 37388 (move worksheet)

This commit is contained in:
Julia Svinareva 2019-10-01 11:49:43 +03:00
parent 8f4537a22a
commit 9df4e5f763
4 changed files with 106 additions and 20 deletions

View file

@ -294,6 +294,61 @@ define([
document.removeEventListener('dragstart',dragDropText);
});
}
},
setHookTabs: function (e, bar, tabs) {
var me = this;
function dragComplete() {
if (!_.isUndefined(me.drag)) {
bar.dragging = false;
bar.$el.find('li.mousemove').removeClass('mousemove right');
var arrSelectIndex = [];
tabs.forEach(function (item) {
arrSelectIndex.push(item.sheetindex);
});
if (!_.isUndefined(me.drag.place)) {
me.bar.trigger('tab:move', arrSelectIndex, me.drag.place);
me.bar.$bar.scrollLeft(me.scrollLeft);
me.bar.scrollX = undefined;
} else {
me.bar.trigger('tab:move', arrSelectIndex);
me.bar.$bar.scrollLeft(me.scrollLeft);
me.bar.scrollX = undefined;
}
me.drag = undefined;
}
}
function dragMove (event) {
if (!_.isUndefined(me.drag)) {
me.drag.moveX = event.clientX*Common.Utils.zoom();
if (me.drag.moveX > me.tabBarRight) {
bar.tabs[bar.tabs.length - 1].$el.addClass('mousemove right');
me.drag.place = bar.tabs.length;
} else {
$(event.target).parent().parent().find('li.mousemove').removeClass('mousemove right');
$(event.target).parent().addClass('mousemove');
var name = event.target.parentElement.dataset.label,
currentTab = _.findWhere(bar.tabs, {label: name});
if (!_.isUndefined(currentTab)) {
me.drag.place = currentTab.sheetindex;
}
}
}
}
if (!_.isUndefined(bar) && !_.isUndefined(tabs) && bar.tabs.length > 1) {
me.bar = bar;
me.drag = {tabs: tabs};
bar.dragging = true;
this.calculateBounds();
$(document).on('mousemove.tabbar', dragMove);
$(document).on('mouseup.tabbar', function (e) {
dragComplete(e);
$(document).off('mouseup.tabbar');
$(document).off('mousemove.tabbar', dragMove);
});
}
}
}
});
@ -337,7 +392,11 @@ define([
mousedown: $.proxy(function (e) {
if (this.bar.options.draggable && !_.isUndefined(dragHelper) && (3 !== e.which)) {
if (!tab.isLockTheDrag) {
dragHelper.setHook(e, this.bar, tab);
if (this.bar.selectTabs.length > 1) {
dragHelper.setHookTabs(e, this.bar, this.bar.selectTabs);
} else {
dragHelper.setHook(e, this.bar, tab);
}
}
}
}, this)

View file

@ -265,10 +265,10 @@ define([
this.renameWorksheet();
break;
case 'copy':
this.moveWorksheet(false);
this.moveWorksheet(arrIndex, false);
break;
case 'move':
this.moveWorksheet(true);
this.moveWorksheet(arrIndex, true);
break;
case 'hide':
setTimeout(function () {
@ -390,26 +390,38 @@ define([
}
},
moveWorksheet: function(cut, silent, index, destPos) {
moveWorksheet: function(selectArr, cut, silent, index, destPos) {
var me = this;
var wc = me.api.asc_getWorksheetsCount(), items = [], i = -1;
var wc = me.api.asc_getWorksheetsCount(), items = [], arrIndex = [], i = -1;
while (++i < wc) {
if (!this.api.asc_isWorksheetHidden(i)) {
items.push({
value : me.api.asc_getWorksheetName(i),
inindex : i
value: me.api.asc_getWorksheetName(i),
inindex: i
});
}
}
if (!_.isUndefined(selectArr)) {
items.forEach(function (item) {
if (selectArr.indexOf(item.inindex) !== -1) {
arrIndex.push(item.inindex);
}
});
}
if (!_.isUndefined(silent)) {
me.api.asc_showWorksheet(items[index].inindex);
if (_.isUndefined(selectArr)) {
me.api.asc_showWorksheet(items[index].inindex);
Common.NotificationCenter.trigger('comments:updatefilter', ['doc', 'sheet' + this.api.asc_getActiveWorksheetId()]);
Common.NotificationCenter.trigger('comments:updatefilter', ['doc', 'sheet' + this.api.asc_getActiveWorksheetId()]);
if (!_.isUndefined(destPos)) {
me.api.asc_moveWorksheet(items.length === destPos ? wc : items[destPos].inindex);
if (!_.isUndefined(destPos)) {
me.api.asc_moveWorksheet(items.length === destPos ? wc : items[destPos].inindex);
}
} else {
if (!_.isUndefined(destPos)) {
me.api.asc_moveWorksheet(destPos, arrIndex);
}
}
return;
}
@ -420,7 +432,7 @@ define([
handler : function(btn, i) {
if (btn == 'ok') {
if (cut) {
me.api.asc_moveWorksheet(i == -255 ? wc : i);
me.api.asc_moveWorksheet(i == -255 ? wc : i, arrIndex);
} else {
var new_text = me.createCopyName(me.api.asc_getWorksheetName(me.api.asc_getActiveWorksheetIndex()));
me.api.asc_copyWorksheet(i == -255 ? wc : i, new_text);

View file

@ -182,19 +182,23 @@ define([
me.fireEvent('sheet:changename');
}
}, this),
'tab:move' : _.bind(function (tabIndex, index) {
'tab:move' : _.bind(function (selectTabs, index) {
me.tabBarScroll = {scrollLeft: me.tabbar.scrollX};
if (_.isUndefined(index) || tabIndex === index) {
if (_.isUndefined(selectTabs) || _.isUndefined(index) || selectTabs === index) {
return;
}
if (_.isArray(selectTabs)) {
me.fireEvent('sheet:move', [selectTabs, false, true, undefined, index]);
} else {
var tabIndex = selectTabs;
if (tabIndex < index) {
++index;
if (tabIndex < index) {
++index;
}
me.fireEvent('sheet:move', [undefined, false, true, tabIndex, index]);
}
me.fireEvent('sheet:move', [false, true, tabIndex, index]);
}, this)
});

View file

@ -232,6 +232,17 @@
color: @gray-darker;
}
}
&.mousemove {
> a {
background: linear-gradient(to right, @black, @gray-light 1px);
}
&.right {
> a {
background: linear-gradient(to left, @black, @gray-light 1px);
}
}
}
}
}