|
@@ -667,12 +667,28 @@ $(document).ready(function() {
|
|
|
callback: function (key, opt) {
|
|
|
treeOperationObj.addNode(ledgerSpread.getActiveSheet());
|
|
|
},
|
|
|
- visible: function(key, opt){
|
|
|
+ disabled: function (key, opt) {
|
|
|
const sheet = ledgerSpread.getActiveSheet();
|
|
|
const selection = sheet.getSelections();
|
|
|
- const row = selection[0].row;
|
|
|
- const select = ledgerTree.nodes[row];
|
|
|
- return select;
|
|
|
+ const sel = selection ? selection[0] : sheet.getSelections()[0];
|
|
|
+ const row = sel ? sel.row : -1;
|
|
|
+ const tree = sheet.zh_tree;
|
|
|
+ if (!tree) return true;
|
|
|
+ const first = sheet.zh_tree.nodes[row];
|
|
|
+ let last = first, sameParent = true;
|
|
|
+ if (sel.rowCount > 1) {
|
|
|
+ for (let r = 1; r < sel.rowCount; r++) {
|
|
|
+ const rNode = tree.nodes[sel.row + r];
|
|
|
+ if (rNode.level > first.level) continue;
|
|
|
+ if ((rNode.level < first.level) || (rNode.level === first.level && rNode.pid !== first.pid)) {
|
|
|
+ sameParent = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ last = rNode;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ const valid = !sheet.zh_setting.readOnly;
|
|
|
+ return !(valid && first && first.level > 1);
|
|
|
}
|
|
|
},
|
|
|
'delete': {
|
|
@@ -681,12 +697,28 @@ $(document).ready(function() {
|
|
|
callback: function (key, opt) {
|
|
|
treeOperationObj.deleteNode(ledgerSpread.getActiveSheet());
|
|
|
},
|
|
|
- visible: function (key, opt) {
|
|
|
+ disabled: function (key, opt) {
|
|
|
const sheet = ledgerSpread.getActiveSheet();
|
|
|
const selection = sheet.getSelections();
|
|
|
- const row = selection[0].row;
|
|
|
- const select = ledgerTree.nodes[row];
|
|
|
- return select;
|
|
|
+ const sel = selection ? selection[0] : sheet.getSelections()[0];
|
|
|
+ const row = sel ? sel.row : -1;
|
|
|
+ const tree = sheet.zh_tree;
|
|
|
+ if (!tree) return true;
|
|
|
+ const first = sheet.zh_tree.nodes[row];
|
|
|
+ let last = first, sameParent = true;
|
|
|
+ if (sel.rowCount > 1) {
|
|
|
+ for (let r = 1; r < sel.rowCount; r++) {
|
|
|
+ const rNode = tree.nodes[sel.row + r];
|
|
|
+ if (rNode.level > first.level) continue;
|
|
|
+ if ((rNode.level < first.level) || (rNode.level === first.level && rNode.pid !== first.pid)) {
|
|
|
+ sameParent = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ last = rNode;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ const valid = !sheet.zh_setting.readOnly;
|
|
|
+ return !(valid && first && sameParent && first.level > 1 && !first.node_type);
|
|
|
}
|
|
|
},
|
|
|
'copyBlock': {
|