@visactor/vtable-gantt
Version:
canvas table width high performance
88 lines (78 loc) • 6.02 kB
JavaScript
import { updateSplitLineAndResizeLine } from "../gantt-helper";
import { TasksShowMode } from "../ts-types";
import { TaskType } from "../ts-types";
export function syncScrollStateToTable(gantt) {
const {scroll: scroll} = gantt.stateManager, {verticalBarPos: verticalBarPos} = scroll;
gantt.taskListTableInstance.stateManager.setScrollTop(verticalBarPos, void 0, !1);
}
export function syncScrollStateFromTable(gantt) {
var _a;
gantt.taskListTableInstance && (null === (_a = gantt.taskListTableInstance) || void 0 === _a || _a.on("scroll", (args => {
if ("vertical" === args.scrollDirection) {
const {scroll: scroll} = gantt.taskListTableInstance.stateManager, {verticalBarPos: verticalBarPos} = scroll;
gantt.stateManager.scroll.verticalBarPos !== verticalBarPos && gantt.stateManager.setScrollTop(verticalBarPos, !1);
}
})));
}
export function syncEditCellFromTable(gantt) {
var _a;
null === (_a = gantt.taskListTableInstance) || void 0 === _a || _a.on("change_cell_value", (args => {
const {col: col, row: row} = args;
gantt.taskListTableInstance.isHeader(col, row) || gantt._refreshTaskBar(row - gantt.taskListTableInstance.columnHeaderLevelCount);
}));
}
export function syncTreeChangeFromTable(gantt) {
var _a;
null === (_a = gantt.taskListTableInstance) || void 0 === _a || _a.on("tree_hierarchy_state_change", (args => {
var _a, _b;
const {row: row, hierarchyState: hierarchyState} = args;
if (gantt.parsedOptions.tasksShowMode === TasksShowMode.Project_Sub_Tasks_Inline) {
const recordIndex = row - gantt.taskListTableInstance.columnHeaderLevelCount, record = gantt.getRecordByIndex(recordIndex);
record && record.type === TaskType.PROJECT && (null === (_a = record.children) || void 0 === _a ? void 0 : _a.length) > 0 && (record.hierarchyState = hierarchyState);
}
gantt._syncPropsFromTable(), gantt.scenegraph.refreshTaskBarsAndGrid(), !gantt.taskListTableInstance.checkHasColumnAutoWidth() || "auto" !== (null === (_b = gantt.options.taskListTable) || void 0 === _b ? void 0 : _b.tableWidth) && -1 !== gantt.taskTableWidth || _syncTableSize(gantt);
const left = gantt.stateManager.scroll.horizontalBarPos, top = gantt.stateManager.scroll.verticalBarPos;
gantt.scenegraph.setX(-left), gantt.scenegraph.setY(-top);
}));
}
export function syncSortFromTable(gantt) {
var _a;
null === (_a = gantt.taskListTableInstance) || void 0 === _a || _a.on("after_sort", (args => {
gantt.scenegraph.refreshTaskBars();
const left = gantt.stateManager.scroll.horizontalBarPos, top = gantt.stateManager.scroll.verticalBarPos;
gantt.scenegraph.setX(-left), gantt.scenegraph.setY(-top);
}));
}
export function syncDragOrderFromTable(gantt) {
var _a, _b, _c, _d;
null === (_a = gantt.taskListTableInstance) || void 0 === _a || _a.on("change_header_position", (args => {
gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Arrange || gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Compact || gantt.parsedOptions.tasksShowMode === TasksShowMode.Sub_Tasks_Separate || gantt.parsedOptions.tasksShowMode === TasksShowMode.Project_Sub_Tasks_Inline ? gantt.scenegraph.refreshTaskBarsAndGrid() : gantt.scenegraph.refreshTaskBars(),
gantt.scenegraph.dragOrderLine.hideDragLine();
const left = gantt.stateManager.scroll.horizontalBarPos, top = gantt.stateManager.scroll.verticalBarPos;
gantt.scenegraph.setX(-left), gantt.scenegraph.setY(-top);
})), null === (_b = gantt.taskListTableInstance) || void 0 === _b || _b.on("change_header_position_start", (args => {
const {col: col, row: row, x: x, y: y, backX: backX, lineX: lineX, backY: backY, lineY: lineY, event: event} = args;
gantt.scenegraph.dragOrderLine.showDragLine(lineY), gantt.scenegraph.updateNextFrame();
})), null === (_c = gantt.taskListTableInstance) || void 0 === _c || _c.on("changing_header_position", (args => {
const {col: col, row: row, x: x, y: y, backX: backX, lineX: lineX, backY: backY, lineY: lineY, event: event} = args;
gantt.scenegraph.dragOrderLine.showDragLine(lineY), gantt.scenegraph.updateNextFrame();
})), null === (_d = gantt.taskListTableInstance) || void 0 === _d || _d.on("change_header_position_fail", (args => {
gantt.scenegraph.dragOrderLine.hideDragLine(), gantt.scenegraph.updateNextFrame();
}));
}
export function syncTableWidthFromTable(gantt) {
var _a;
null === (_a = gantt.taskListTableInstance) || void 0 === _a || _a.on("resize_column", (args => {
_syncTableSize(gantt);
}));
}
function _syncTableSize(gantt) {
var _a, _b, _c, _d, _e, _f, _g, _h;
const oldTaskTableWidth = gantt.taskTableWidth;
gantt.taskTableWidth = gantt.taskListTableInstance.getAllColsWidth() + gantt.parsedOptions.outerFrameStyle.borderLineWidth,
(null === (_b = null === (_a = gantt.options) || void 0 === _a ? void 0 : _a.taskListTable) || void 0 === _b ? void 0 : _b.maxTableWidth) && (gantt.taskTableWidth = Math.min(null === (_d = null === (_c = gantt.options) || void 0 === _c ? void 0 : _c.taskListTable) || void 0 === _d ? void 0 : _d.maxTableWidth, gantt.taskTableWidth)),
(null === (_f = null === (_e = gantt.options) || void 0 === _e ? void 0 : _e.taskListTable) || void 0 === _f ? void 0 : _f.minTableWidth) && (gantt.taskTableWidth = Math.max(null === (_h = null === (_g = gantt.options) || void 0 === _g ? void 0 : _g.taskListTable) || void 0 === _h ? void 0 : _h.minTableWidth, gantt.taskTableWidth)),
oldTaskTableWidth !== gantt.taskTableWidth && (gantt.element.style.left = gantt.taskTableWidth ? `${gantt.taskTableWidth}px` : "0px",
gantt.taskListTableInstance.setCanvasSize(gantt.taskTableWidth, gantt.tableNoFrameHeight + 2 * gantt.parsedOptions.outerFrameStyle.borderLineWidth),
gantt._updateSize(), updateSplitLineAndResizeLine(gantt));
}