/** * Created by Mai on 2017/4/1. */ var TREE_SHEET_CONTROLLER = { createNew: function (tree, sheet, setting) { var controller = function () { this.tree = tree; this.sheet = sheet; this.setting = setting; this.event = { treeSelectedChanged: null } }; controller.prototype.showTreeData = function () { var that = this; TREE_SHEET_HELPER.loadSheetHeader(this.setting, this.sheet); TREE_SHEET_HELPER.showTreeData(this.setting, this.sheet, this.tree); this.sheet.bind(GC.Spread.Sheets.Events.SelectionChanged, function (e, info) { that.tree.selected = that.tree.findNode(info.sheet.getTag(info.newSelections[0].row, info.newSelections[0].col)); if (that.event.treeSelectedChanged) { that.event.treeSelectedChanged(that.tree.selected); } }); this.sheet.bind(GC.Spread.Sheets.Events.EditEnded, function (sender, args) { var result = tree.editedData(setting.cols[args.col].data.field, args.sheet.getTag(args.row, args.col), args.editingText); if (result.allow) { TREE_SHEET_HELPER.refreshTreeNodeData(that.setting, that.sheet, result.nodes, false); } else { TREE_SHEET_HELPER.refreshTreeNodeData(that.setting, that.sheet, [tree.findNode(args.sheet.getTag(args.row, args.col))], false); }; }); }; controller.prototype.insert = function () { var newNode = null, that = this; if (this.tree && this.tree.selected) { newNode = this.tree.insert(this.tree.selected.getParentID(), this.tree.selected.getNextSiblingID()); if (newNode) { TREE_SHEET_HELPER.massOperationSheet(this.sheet, function () { var sels = that.sheet.getSelections(); var iRow = sels[0].row, newNodeRow = iRow + that.tree.selected.posterityCount() + 1; that.sheet.addRows(newNodeRow, 1); TREE_SHEET_HELPER.refreshTreeNodeData(that.setting, that.sheet, [newNode], false); that.tree.selected = newNode; that.sheet.setSelection(newNode.serialNo(), sels[0].col, 1, 1); that.sheet.showRow(newNode.serialNo(), GC.Spread.Sheets.VerticalPosition.center) }) } } }; controller.prototype.delete = function () { var that = this; if (this.tree.selected) { if (this.tree.delete(this.tree.selected)) { TREE_SHEET_HELPER.massOperationSheet(this.sheet, function () { var sels = that.sheet.getSelections(); var iRow = sels[0].row; that.sheet.deleteRows(iRow, that.tree.selected.posterityCount() + 1); that.tree.selected = that.tree.findNode(that.sheet.getTag(iRow, 0, GC.Spread.Sheets.SheetArea.viewport)); }); } } }; controller.prototype.upLevel = function () { var that = this; if (this.tree.selected) { if (this.tree.selected.upLevel()) { TREE_SHEET_HELPER.massOperationSheet(this.sheet, function () { TREE_SHEET_HELPER.refreshNodesVisible([that.tree.selected], that.sheet, true); that.sheet.showRow(that.tree.selected.serialNo(), GC.Spread.Sheets.VerticalPosition.center); }); } } }; controller.prototype.downLevel = function () { var that = this; if (this.tree.selected) { if (this.tree.selected.downLevel()) { TREE_SHEET_HELPER.massOperationSheet(that.sheet, function () { TREE_SHEET_HELPER.refreshNodesVisible([that.tree.selected.parent], that.sheet, true); that.sheet.showRow(that.tree.selected.serialNo(), GC.Spread.Sheets.VerticalPosition.center); }); } } }; controller.prototype.upMove = function () { var that = this; if (this.tree.selected) { if (this.tree.selected.upMove()) { TREE_SHEET_HELPER.massOperationSheet(this.sheet, function () { var sels = that.sheet.getSelections(); var iRow = sels[0].row; TREE_SHEET_HELPER.refreshTreeNodeData(that.setting, that.sheet, [that.tree.selected, that.tree.selected.nextSibling], true); that.sheet.setSelection(that.tree.selected.serialNo(), sels[0].col, 1, 1); }); } } }; controller.prototype.downMove = function () { var that = this; if (this.tree.selected) { if (this.tree.selected.downMove()) { TREE_SHEET_HELPER.massOperationSheet(this.sheet, function () { var sels = that.sheet.getSelections(); var iRow = sels[0].row; TREE_SHEET_HELPER.refreshTreeNodeData(that.setting, that.sheet, [that.tree.selected, that.tree.selected.preSibling], true); that.sheet.setSelection(that.tree.selected.serialNo(), sels[0].col, 1, 1); }); } } }; controller.prototype.bind = function (eventName, eventFun) { this.event[eventName] = eventFun; }; return new controller(); } };