[SSE] Move sheet: drag and drop
This commit is contained in:
parent
b1a6e69991
commit
e56033fee2
|
@ -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});
|
||||||
|
|
|
@ -201,7 +201,7 @@ define([
|
||||||
}
|
}
|
||||||
|
|
||||||
}, this),
|
}, this),
|
||||||
'tab:dragstart' : _.bind(function (dataTransfer, selectTabs) {
|
'tab:dragstart': _.bind(function (dataTransfer, selectTabs) {
|
||||||
var arrTabs = [],
|
var arrTabs = [],
|
||||||
arrName = [],
|
arrName = [],
|
||||||
me = this;
|
me = this;
|
||||||
|
@ -224,52 +224,65 @@ 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') {
|
||||||
if (Common.Utils.InternalSettings.get("sse-doc-info-key") === key) {
|
var key = _.findWhere(arrData, {type: 'key'}).value;
|
||||||
this.api.asc_moveWorksheet(index, arrIndex);
|
if (Common.Utils.InternalSettings.get("sse-doc-info-key") === key) {
|
||||||
} else {
|
this.api.asc_moveWorksheet(index, _.findWhere(arrData, {type: 'indexes'}).value);
|
||||||
var names = [], wc = this.api.asc_getWorksheetsCount();
|
} else {
|
||||||
while (wc--) {
|
var names = [], wc = this.api.asc_getWorksheetsCount();
|
||||||
names.push(this.api.asc_getWorksheetName(wc).toLowerCase());
|
while (wc--) {
|
||||||
|
names.push(this.api.asc_getWorksheetName(wc).toLowerCase());
|
||||||
|
}
|
||||||
|
var newNames = [];
|
||||||
|
var arrNames = _.findWhere(arrData, {type: 'names'}).value;
|
||||||
|
arrNames.forEach(function (name) {
|
||||||
|
var ind = 0,
|
||||||
|
name = name;
|
||||||
|
var first = name;
|
||||||
|
if (names.indexOf(name.toLowerCase()) !== -1) {
|
||||||
|
while (true) {
|
||||||
|
if (names.indexOf(name.toLowerCase()) === -1) {
|
||||||
|
newNames.push(name);
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
ind++;
|
||||||
|
name = first + '(' + ind + ')';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
newNames.push(name);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
var newNames = [];
|
|
||||||
arrNames.forEach(function (name) {
|
|
||||||
var ind = 0,
|
|
||||||
name = name;
|
|
||||||
var first = name;
|
|
||||||
if (names.indexOf(name.toLowerCase()) !== -1) {
|
|
||||||
while (true) {
|
|
||||||
if (names.indexOf(name.toLowerCase()) === -1) {
|
|
||||||
newNames.push(name);
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
ind++;
|
|
||||||
name = first + '(' + ind + ')';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
newNames.push(name);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.api.asc_EndMoveSheet(index, newNames, arrSheets);
|
|
||||||
}
|
}
|
||||||
|
this.dropTabs = undefined;
|
||||||
}, this)
|
}, this)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue