[SSE] Bug 37388 (move worksheet)
This commit is contained in:
parent
8f4537a22a
commit
9df4e5f763
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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)
|
||||
});
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue