[SSE] Move sheet: drag and drop

This commit is contained in:
Julia Svinareva 2020-02-18 14:43:56 +03:00
parent b1a6e69991
commit e56033fee2
2 changed files with 66 additions and 44 deletions

View file

@ -274,6 +274,13 @@ define([
$(e.currentTarget).parent().removeClass('mousemove right'); $(e.currentTarget).parent().removeClass('mousemove right');
}, this), }, this),
dragend: $.proxy(function (e) { dragend: $.proxy(function (e) {
var event = e.originalEvent;
var data = event.dataTransfer.getData('status');
if (event.dataTransfer.dropEffect === 'move') {
this.bar.trigger('tab:dragend', true);
} else {
this.bar.trigger('tab:dragend', false);
}
this.bar.$el.find('.mousemove').removeClass('mousemove right'); this.bar.$el.find('.mousemove').removeClass('mousemove right');
}, this), }, this),
drop: $.proxy(function (e) { drop: $.proxy(function (e) {
@ -281,6 +288,7 @@ define([
index = $(event.currentTarget).data('index'); index = $(event.currentTarget).data('index');
this.bar.$el.find('.mousemove').removeClass('mousemove right'); this.bar.$el.find('.mousemove').removeClass('mousemove right');
this.bar.trigger('tab:drop', event.dataTransfer, index); this.bar.trigger('tab:drop', event.dataTransfer, index);
event.stopPropagation();
}, this) }, this)
}); });
}; };
@ -335,6 +343,7 @@ define([
var index = this.tabs.length; var index = this.tabs.length;
this.$el.find('.mousemove').removeClass('mousemove right'); this.$el.find('.mousemove').removeClass('mousemove right');
this.trigger('tab:drop', event.dataTransfer, index); this.trigger('tab:drop', event.dataTransfer, index);
event.stopPropagation();
}, this)); }, this));
this.manager = new StateManager({bar: this}); this.manager = new StateManager({bar: this});

View file

@ -224,32 +224,31 @@ define([
arrName.push(item.value); arrName.push(item.value);
} }
}); });
var stringSheet, var stringSheet, arr = [];
stringSheetJson, stringSheet = this.api.asc_StartMoveSheet(_.clone(arrTabs));
stringNameJson, arr.push({type: 'onlyoffice', value: stringSheet});
stringIndexJson; arr.push({type: 'indexes', value: arrTabs});
stringIndexJson = JSON.stringify(arrTabs); arr.push({type: 'names', value: arrName});
stringSheet = this.api.asc_StartMoveSheet(arrTabs); arr.push({type: 'key', value: Common.Utils.InternalSettings.get("sse-doc-info-key")});
stringSheetJson = JSON.stringify(stringSheet); var json = JSON.stringify(arr);
stringNameJson = JSON.stringify(arrName); dataTransfer.setData("text/plain", json);
dataTransfer.setData("onlyoffice", stringSheetJson); this.dropTabs = selectTabs;
dataTransfer.setData("name", stringNameJson);
dataTransfer.setData("arrindex", stringIndexJson);
dataTransfer.setData("key", Common.Utils.InternalSettings.get("sse-doc-info-key"));
}, this), }, this),
'tab:drop': _.bind(function (dataTransfer, index) { 'tab:drop': _.bind(function (dataTransfer, index) {
var arrSheets = JSON.parse(dataTransfer.getData("onlyoffice")), var data = dataTransfer.getData("text/plain");
arrNames = JSON.parse(dataTransfer.getData("name")), if (data) {
arrIndex = JSON.parse(dataTransfer.getData("arrindex")), var arrData = JSON.parse(data);
key = dataTransfer.getData("key"); if (arrData[0].type === 'onlyoffice') {
var key = _.findWhere(arrData, {type: 'key'}).value;
if (Common.Utils.InternalSettings.get("sse-doc-info-key") === key) { if (Common.Utils.InternalSettings.get("sse-doc-info-key") === key) {
this.api.asc_moveWorksheet(index, arrIndex); this.api.asc_moveWorksheet(index, _.findWhere(arrData, {type: 'indexes'}).value);
} else { } else {
var names = [], wc = this.api.asc_getWorksheetsCount(); var names = [], wc = this.api.asc_getWorksheetsCount();
while (wc--) { while (wc--) {
names.push(this.api.asc_getWorksheetName(wc).toLowerCase()); names.push(this.api.asc_getWorksheetName(wc).toLowerCase());
} }
var newNames = []; var newNames = [];
var arrNames = _.findWhere(arrData, {type: 'names'}).value;
arrNames.forEach(function (name) { arrNames.forEach(function (name) {
var ind = 0, var ind = 0,
name = name; name = name;
@ -268,8 +267,22 @@ define([
newNames.push(name); newNames.push(name);
} }
}); });
this.api.asc_EndMoveSheet(index, newNames, arrSheets); this.api.asc_EndMoveSheet(index, newNames, _.findWhere(arrData, {type: 'onlyoffice'}).value);
} }
}
}
}, this),
'tab:dragend': _.bind(function (cut) {
if (cut) {
if (this.dropTabs.length > 0) {
var arr = [];
this.dropTabs.forEach(function (tab) {
arr.push(tab.sheetindex);
});
me.api.asc_deleteWorksheet(arr);
}
}
this.dropTabs = undefined;
}, this) }, this)
}); });