|
@@ -101,15 +101,34 @@ $(document).ready(() => {
|
|
|
obj.addClass('disabled');
|
|
|
}
|
|
|
};
|
|
|
+ const invalidAll = function () {
|
|
|
+ setObjEnable($('a[type=add]'), false);
|
|
|
+ setObjEnable($('a[type=delete]'), false);
|
|
|
+ setObjEnable($('a[type=up-move]'), false);
|
|
|
+ setObjEnable($('a[type=down-move]'), false);
|
|
|
+ setObjEnable($('a[type=up-level]'), false);
|
|
|
+ setObjEnable($('a[type=down-level]'), false);
|
|
|
+ };
|
|
|
const sel = selection ? selection[0] : sheet.getSelections()[0];
|
|
|
const row = sel ? sel.row : -1;
|
|
|
const tree = sheet.zh_tree;
|
|
|
- if (!tree) return;
|
|
|
+ if (!tree) {
|
|
|
+ invalidAll();
|
|
|
+ return;
|
|
|
+ }
|
|
|
const first = sheet.zh_tree.nodes[row];
|
|
|
+ if (!first) {
|
|
|
+ invalidAll();
|
|
|
+ return;
|
|
|
+ }
|
|
|
let last = first, sameParent = true, nodeUsed = first.used;
|
|
|
- if (sel.rowCount > 1) {
|
|
|
+ if (sel.rowCount > 1 && first) {
|
|
|
for (let r = 1; r < sel.rowCount; r++) {
|
|
|
const rNode = tree.nodes[sel.row + r];
|
|
|
+ if (!rNode) {
|
|
|
+ sameParent = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
nodeUsed = nodeUsed || rNode.used;
|
|
|
if (rNode.level > first.level) continue;
|
|
|
if ((rNode.level < first.level) || (rNode.level === first.level && rNode.pid !== first.pid)) {
|
|
@@ -122,7 +141,7 @@ $(document).ready(() => {
|
|
|
const preNode = tree.getPreSiblingNode(first);
|
|
|
const valid = !sheet.zh_setting.readOnly;
|
|
|
|
|
|
- setObjEnable($('a[type=insert]'), valid && first && first.level > 1);
|
|
|
+ setObjEnable($('a[type=add]'), valid && first && first.level > 1);
|
|
|
setObjEnable($('a[type=delete]'), valid && first && sameParent && first.level > 1 && !nodeUsed);
|
|
|
setObjEnable($('a[type=up-move]'), valid && first && sameParent && first.level > 1 && preNode);
|
|
|
setObjEnable($('a[type=down-move]'), valid && first && sameParent && first.level > 1 && !tree.isLastSibling(last));
|