|
@@ -1,14 +1,16 @@
|
|
|
/**
|
|
|
* Created by CSL on 2017-06-08.
|
|
|
*/
|
|
|
+ //modified by zhong on 2017-09-25
|
|
|
var rationCoeOprObj = {
|
|
|
sheet: null,
|
|
|
libID: null,
|
|
|
curRation: null,
|
|
|
+ tempDelArr: [],
|
|
|
cache: {},
|
|
|
setting: {
|
|
|
header:[
|
|
|
- {headerName:"编码",headerWidth:120,dataCode:"ID", dataType: "Number"},
|
|
|
+ {headerName:"编码",headerWidth:120,dataCode:"ID", dataType: "Number", hAlign: 'left'},
|
|
|
{headerName:"名称",headerWidth:400,dataCode:"name", dataType: "String"},
|
|
|
{headerName:"内容",headerWidth:300,dataCode:"content", dataType: "String"}
|
|
|
],
|
|
@@ -27,7 +29,7 @@ var rationCoeOprObj = {
|
|
|
me.sheet.bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
|
|
|
me.sheet.bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted);
|
|
|
me.sheet.bind(GC.Spread.Sheets.Events.EditEnded, me.onEditEnded);
|
|
|
- me.sheet.bind(GC.Spread.Sheets.Events.RangeChanged, me.onRangeChanged);
|
|
|
+ // me.sheet.bind(GC.Spread.Sheets.Events.RangeChanged, me.onRangeChanged);
|
|
|
},
|
|
|
|
|
|
onClipboardPasting: function(sender, args) {
|
|
@@ -42,12 +44,49 @@ var rationCoeOprObj = {
|
|
|
if (me.libID) {
|
|
|
// 修改第一列(编号)
|
|
|
if (info.cellRange.col == 0) {
|
|
|
+ me.tempDelArr = [];
|
|
|
var coeIDs = [];
|
|
|
- var temp = sheetCommonObj.analyzePasteData({header:[{dataCode: "ID"}] }, info);
|
|
|
- for (let obj of temp) {
|
|
|
- coeIDs.push(obj.ID);
|
|
|
- };
|
|
|
+ var items = sheetCommonObj.analyzePasteData({header:[{dataCode: "ID"}] }, info);
|
|
|
+ let curCache = typeof me.cache["_Coe_" + me.curRation.ID] !== 'undefined' ? me.cache["_Coe_" + me.curRation.ID] : [];
|
|
|
+ let isRefresh = false;
|
|
|
+ for(let i = 0, len = items.length; i < len; i++){
|
|
|
+ let row = i + info.cellRange.row;
|
|
|
+ //update
|
|
|
+ if(row < curCache.length){
|
|
|
+ let isExist = false;
|
|
|
+ for(let j = 0, jLen = curCache.length; j < jLen; j++){
|
|
|
+ if(items[i].ID === curCache[j].ID && j !== row){
|
|
|
+ isExist = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(!isExist){
|
|
|
+ me.tempDelArr.push({org: curCache[row], newID: items[i].ID});
|
|
|
+ coeIDs.push(items[i].ID);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ isRefresh = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ coeIDs.push(items[i].ID);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //delete in front
|
|
|
+ if(me.tempDelArr.length > 0){
|
|
|
+ for(let i = 0, len = me.tempDelArr.length; i < len; i++){
|
|
|
+ for(let j = 0; j < curCache.length; j++){
|
|
|
+ if(me.tempDelArr[i].org.ID === curCache[j].ID){
|
|
|
+ curCache.splice(j, 1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
me.addCoeItems(coeIDs);
|
|
|
+ if(isRefresh){
|
|
|
+ me.showCoeItems(me.curRation.ID);
|
|
|
+ }
|
|
|
} else {
|
|
|
//修改其它列。
|
|
|
}
|
|
@@ -56,52 +95,79 @@ var rationCoeOprObj = {
|
|
|
|
|
|
onEditEnded: function(sender, args){
|
|
|
var me = rationCoeOprObj;
|
|
|
- if (args.col == 0) { // 编号列
|
|
|
- //delete
|
|
|
- if (args.editingText == null || args.editingText.trim() == "") {
|
|
|
- var curCache = me.cache["_Coe_" + me.curRation.ID];
|
|
|
- if (curCache) {
|
|
|
- if (args.row < curCache.length) {
|
|
|
- curCache.splice(args.row, 1);
|
|
|
- me.updateCurRation();
|
|
|
- sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
|
|
|
- me.showCoeItems(me.curRation.ID);
|
|
|
+ if (args.col == 0 && args.editingText && args.editingText.toString().trim().length > 0 && !isNaN(args.editingText)) { // 编号列
|
|
|
+ let curCahe = typeof me.cache["_Coe_" + me.curRation.ID] !== 'undefined' ? me.cache["_Coe_" + me.curRation.ID] : [];
|
|
|
+ me.tempDelArr = [];
|
|
|
+ //update
|
|
|
+ if(args.row < curCahe.length && args.editingText != curCahe[args.row].ID){
|
|
|
+ let isExist = false;
|
|
|
+ for(let i = 0, len = curCahe.length; i < len; i++){
|
|
|
+ if(args.editingText == curCahe[i].ID){
|
|
|
+ isExist = true;
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
- } else {
|
|
|
- if (me.libID) {
|
|
|
- var ID = args.editingText.trim();
|
|
|
- if (!isNaN(ID)) {
|
|
|
- me.addCoeItems([ID]);
|
|
|
- };
|
|
|
- };
|
|
|
- };
|
|
|
- };
|
|
|
- },
|
|
|
-
|
|
|
- onRangeChanged: function(sender, args) {
|
|
|
- if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
|
|
|
- if (!confirm(`确定要删除选中的 ${args.rowCount} 条附注条件吗?`)){return; }
|
|
|
- var me = rationCoeOprObj;
|
|
|
- if (args.col == 0) {
|
|
|
- var curCache = me.cache["_Coe_" + me.curRation.ID];
|
|
|
- if (curCache) {
|
|
|
- for (var i = args.rowCount - 1; i >= 0; i--) {
|
|
|
- if (args.row + i < curCache.length) {
|
|
|
- curCache.splice(args.row + i, 1);
|
|
|
- };
|
|
|
- };
|
|
|
- me.updateCurRation();
|
|
|
- sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
|
|
|
+ if(!isExist){
|
|
|
+ me.tempDelArr.push({org: curCahe[args.row], newID: args.editingText});
|
|
|
+ curCahe.splice(args.row, 1);
|
|
|
+ me.addCoeItems([args.editingText]);
|
|
|
+ }
|
|
|
+ else{
|
|
|
me.showCoeItems(me.curRation.ID);
|
|
|
- };
|
|
|
- };
|
|
|
- };
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //insert
|
|
|
+ else{
|
|
|
+ me.addCoeItems([args.editingText]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ me.showCoeItems(me.curRation.ID);
|
|
|
+ }
|
|
|
},
|
|
|
|
|
|
+ bindRationCoeDel: function () {
|
|
|
+ let me = rationCoeOprObj;
|
|
|
+ let workBook = me.sheet.getParent();
|
|
|
+ workBook.commandManager().register('rationCoeDel', function () {
|
|
|
+ let sels = me.sheet.getSelections(), isUpdate = false;
|
|
|
+ let curCahe = me.cache["_Coe_" + me.curRation.ID];
|
|
|
+ for(let i = 0, len = sels.length; i < len; i ++ ){
|
|
|
+ if(sels[i].colCount === me.setting.header.length){
|
|
|
+ if(sels[i].row < curCahe.length){
|
|
|
+ isUpdate = true;
|
|
|
+ curCahe.splice(sels[i].row, sels[i].rowCount);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(isUpdate){
|
|
|
+ me.updateCurRation();
|
|
|
+ sheetCommonObj.cleanData(me.sheet, me.setting, -1);
|
|
|
+ me.showCoeItems(me.curRation.ID);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ workBook.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false);
|
|
|
+ workBook.commandManager().setShortcutKey('rationCoeDel', GC.Spread.Commands.Key.del, false, false, false, false);
|
|
|
+ },
|
|
|
+ getRecoveryArr: function (tempDelArr, newArr) {//获得更新的coe不存在,恢复删除的被更新数据
|
|
|
+ let rst = [];
|
|
|
+ for(let i = 0, len = tempDelArr.length; i < len; i++){
|
|
|
+ let isExist = false;
|
|
|
+ for(let j = 0, jLen = newArr.length; j < jLen; j++){
|
|
|
+ if(tempDelArr[i].newID == newArr[j].ID){
|
|
|
+ isExist = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(!isExist){
|
|
|
+ rst.push(tempDelArr[i].org);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+ },
|
|
|
addCoeItems: function(coeIDs) {
|
|
|
var me = this;
|
|
|
- sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
|
|
|
+ sheetCommonObj.cleanData(me.sheet, me.setting, -1);
|
|
|
|
|
|
var curCache = me.cache["_Coe_" + me.curRation.ID];
|
|
|
var temp = [];
|
|
@@ -142,14 +208,10 @@ var rationCoeOprObj = {
|
|
|
}else{
|
|
|
curCache = rstArr;
|
|
|
}
|
|
|
-
|
|
|
- curCache.sort(function(a, b) {
|
|
|
- var rst = 0;
|
|
|
- if (a.ID > b.ID) rst = 1
|
|
|
- else if (a.ID < b.ID) rst = -1;
|
|
|
- return rst;
|
|
|
- });
|
|
|
-
|
|
|
+ let recoveryArr = me.getRecoveryArr(me.tempDelArr, result.data);
|
|
|
+ if(recoveryArr.length > 0){
|
|
|
+ curCache = curCache.concat(recoveryArr);
|
|
|
+ }
|
|
|
me.cache["_Coe_" + me.curRation.ID] = curCache;
|
|
|
me.updateCurRation();
|
|
|
me.showCoeItems(me.curRation.ID);
|
|
@@ -186,7 +248,7 @@ var rationCoeOprObj = {
|
|
|
cache:false,
|
|
|
timeout:5000,
|
|
|
success:function(result){
|
|
|
- sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
|
|
|
+ sheetCommonObj.cleanData(me.sheet, me.setting, -1);
|
|
|
if (result.data) {
|
|
|
var tempResult = [];
|
|
|
for (let obj of result.data) {
|
|
@@ -211,6 +273,12 @@ var rationCoeOprObj = {
|
|
|
var me = this;
|
|
|
var curCache = me.cache["_Coe_" + rationID];
|
|
|
if (curCache) {
|
|
|
+ curCache.sort(function(a, b) {
|
|
|
+ var rst = 0;
|
|
|
+ if (a.ID > b.ID) rst = 1
|
|
|
+ else if (a.ID < b.ID) rst = -1;
|
|
|
+ return rst;
|
|
|
+ });
|
|
|
sheetCommonObj.showData(me.sheet, me.setting, curCache);
|
|
|
}
|
|
|
},
|
|
@@ -230,4 +298,6 @@ var rationCoeOprObj = {
|
|
|
};
|
|
|
};
|
|
|
}
|
|
|
-}
|
|
|
+}
|
|
|
+
|
|
|
+
|