devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
1,157 lines (1,153 loc) • 78.4 kB
JavaScript
/**
* DevExtreme (cjs/ui/gantt/ui.gantt.js)
* Version: 21.1.4
* Build date: Mon Jun 21 2021
*
* Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
"use strict";
exports.default = void 0;
var _renderer = _interopRequireDefault(require("../../core/renderer"));
var _type = require("../../core/utils/type");
var _ui = _interopRequireDefault(require("../widget/ui.widget"));
var _component_registrator = _interopRequireDefault(require("../../core/component_registrator"));
var _data = require("../../core/utils/data");
var _uiGantt = require("./ui.gantt.view");
var _uiGantt2 = require("./ui.gantt.bars");
var _tree_list = _interopRequireDefault(require("../tree_list"));
var _extend = require("../../core/utils/extend");
var _position = require("../../core/utils/position");
var _window = require("../../core/utils/window");
var _uiGanttData = _interopRequireDefault(require("./ui.gantt.data.option"));
var _splitter = _interopRequireDefault(require("../splitter"));
var _uiGantt3 = require("./ui.gantt.dialogs");
var _load_panel = _interopRequireDefault(require("../load_panel"));
var _element = require("../../core/element");
var _uiGantt4 = require("./ui.gantt.cache");
var _uiGantt5 = require("./ui.gantt.export_helper");
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
}
}
function _inheritsLoose(subClass, superClass) {
subClass.prototype = Object.create(superClass.prototype);
subClass.prototype.constructor = subClass;
_setPrototypeOf(subClass, superClass)
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function(o, p) {
o.__proto__ = p;
return o
};
return _setPrototypeOf(o, p)
}
var window = (0, _window.getWindow)();
var GANTT_CLASS = "dx-gantt";
var GANTT_VIEW_CLASS = "dx-gantt-view";
var GANTT_COLLAPSABLE_ROW = "dx-gantt-collapsable-row";
var GANTT_TREE_LIST_WRAPPER = "dx-gantt-treelist-wrapper";
var GANTT_TOOLBAR_WRAPPER = "dx-gantt-toolbar-wrapper";
var GANTT_MAIN_WRAPPER = "dx-gantt-main-wrapper";
var GANTT_TASKS = "tasks";
var GANTT_DEPENDENCIES = "dependencies";
var GANTT_RESOURCES = "resources";
var GANTT_RESOURCE_ASSIGNMENTS = "resourceAssignments";
var GANTT_NEW_TASK_CACHE_KEY = "gantt_new_task_key";
var GANTT_DEFAULT_ROW_HEIGHT = 34;
var GANTT_MAPPED_FIELD_REGEX = /(\w*)Expr/;
var Gantt = function(_Widget) {
_inheritsLoose(Gantt, _Widget);
function Gantt() {
return _Widget.apply(this, arguments) || this
}
var _proto = Gantt.prototype;
_proto._init = function() {
_Widget.prototype._init.call(this);
this._cache = new _uiGantt4.GanttDataCache;
this._isGanttRendered = false
};
_proto._initMarkup = function() {
_Widget.prototype._initMarkup.call(this);
this.$element().addClass(GANTT_CLASS);
this._$toolbarWrapper = (0, _renderer.default)("<div>").addClass(GANTT_TOOLBAR_WRAPPER).appendTo(this.$element());
this._$toolbar = (0, _renderer.default)("<div>").appendTo(this._$toolbarWrapper);
this._$mainWrapper = (0, _renderer.default)("<div>").addClass(GANTT_MAIN_WRAPPER).appendTo(this.$element());
this._$treeListWrapper = (0, _renderer.default)("<div>").addClass(GANTT_TREE_LIST_WRAPPER).appendTo(this._$mainWrapper);
this._$treeList = (0, _renderer.default)("<div>").appendTo(this._$treeListWrapper);
this._$splitter = (0, _renderer.default)("<div>").appendTo(this._$mainWrapper);
this._$ganttView = (0, _renderer.default)("<div>").addClass(GANTT_VIEW_CLASS).appendTo(this._$mainWrapper);
this._$dialog = (0, _renderer.default)("<div>").appendTo(this.$element());
this._$loadPanel = (0, _renderer.default)("<div>").appendTo(this.$element());
this._$contextMenu = (0, _renderer.default)("<div>").appendTo(this.$element());
this._refreshDataSource(GANTT_TASKS);
this._refreshDataSource(GANTT_DEPENDENCIES);
this._refreshDataSource(GANTT_RESOURCES);
this._refreshDataSource(GANTT_RESOURCE_ASSIGNMENTS)
};
_proto._refresh = function() {
this._isGanttRendered = false;
_Widget.prototype._refresh.call(this)
};
_proto._renderContent = function() {
this._isMainElementVisible = this.$element().is(":visible");
if (this._isMainElementVisible && !this._isGanttRendered) {
this._isGanttRendered = true;
this._renderBars();
this._renderTreeList();
this._renderSplitter()
}
};
_proto._renderTreeList = function() {
var _this = this;
var _this$option = this.option(GANTT_TASKS),
keyExpr = _this$option.keyExpr,
parentIdExpr = _this$option.parentIdExpr;
this._treeList = this._createComponent(this._$treeList, _tree_list.default, {
dataSource: this._tasksRaw,
keyExpr: keyExpr,
parentIdExpr: parentIdExpr,
columns: this._getTreeListColumns(),
columnResizingMode: "nextColumn",
height: this._getTreeListHeight(),
width: this.option("taskListWidth"),
selection: {
mode: this._getSelectionMode(this.option("allowSelection"))
},
selectedRowKeys: this._getArrayFromOneElement(this.option("selectedRowKey")),
sorting: {
mode: "none"
},
scrolling: {
showScrollbar: "onHover",
mode: "virtual"
},
allowColumnResizing: true,
autoExpandAll: true,
showRowLines: this.option("showRowLines"),
rootValue: this.option("rootValue"),
onContentReady: function(e) {
_this._onTreeListContentReady(e)
},
onSelectionChanged: function(e) {
_this._onTreeListSelectionChanged(e)
},
onRowCollapsed: function(e) {
_this._onTreeListRowCollapsed(e)
},
onRowExpanded: function(e) {
_this._onTreeListRowExpanded(e)
},
onRowPrepared: function(e) {
_this._onTreeListRowPrepared(e)
},
onContextMenuPreparing: function(e) {
_this._onTreeListContextMenuPreparing(e)
},
onRowClick: function(e) {
_this._onTreeListRowClick(e)
},
onRowDblClick: function(e) {
_this._onTreeListRowDblClick(e)
}
})
};
_proto._renderSplitter = function() {
this._splitter = this._createComponent(this._$splitter, _splitter.default, {
container: this.$element(),
leftElement: this._$treeListWrapper,
rightElement: this._$ganttView,
onApplyPanelSize: this._onApplyPanelSize.bind(this)
});
this._splitter.option("initialLeftPanelWidth", this.option("taskListWidth"))
};
_proto._renderBars = function() {
this._bars = [];
this._toolbar = new _uiGantt2.GanttToolbar(this._$toolbar, this);
this._updateToolbarContent();
this._bars.push(this._toolbar);
this._contextMenuBar = new _uiGantt2.GanttContextMenuBar(this._$contextMenu, this);
this._updateContextMenu();
this._bars.push(this._contextMenuBar)
};
_proto._initGanttView = function() {
var _this2 = this;
if (this._ganttView) {
return
}
this._ganttView = this._createComponent(this._$ganttView, _uiGantt.GanttView, {
width: "100%",
height: this._treeList._$element.get(0).offsetHeight,
rowHeight: this._getTreeListRowHeight(),
headerHeight: this._getTreeListHeaderHeight(),
tasks: this._tasks,
dependencies: this._dependencies,
resources: this._resources,
resourceAssignments: this._resourceAssignments,
allowSelection: this.option("allowSelection"),
selectedRowKey: this.option("selectedRowKey"),
showResources: this.option("showResources"),
taskTitlePosition: this.option("taskTitlePosition"),
firstDayOfWeek: this.option("firstDayOfWeek"),
showRowLines: this.option("showRowLines"),
scaleType: this.option("scaleType"),
editing: this.option("editing"),
validation: this.option("validation"),
stripLines: this.option("stripLines"),
bars: this._bars,
mainElement: this.$element(),
onSelectionChanged: this._onGanttViewSelectionChanged.bind(this),
onScroll: this._onGanttViewScroll.bind(this),
onDialogShowing: this._showDialog.bind(this),
onPopupMenuShowing: this._showPopupMenu.bind(this),
onExpandAll: this._expandAll.bind(this),
onCollapseAll: this._collapseAll.bind(this),
modelChangesListener: this._createModelChangesListener(),
exportHelper: this._getExportHelper(),
taskTooltipContentTemplate: this._getTaskTooltipContentTemplateFunc(this.option("taskTooltipContentTemplate")),
taskProgressTooltipContentTemplate: this._getTaskProgressTooltipContentTemplateFunc(this.option("taskProgressTooltipContentTemplate")),
taskTimeTooltipContentTemplate: this._getTaskTimeTooltipContentTemplateFunc(this.option("taskTimeTooltipContentTemplate")),
taskContentTemplate: this._getTaskContentTemplateFunc(this.option("taskContentTemplate")),
onTaskClick: function(e) {
_this2._onTreeListRowClick(e)
},
onTaskDblClick: function(e) {
_this2._onTreeListRowDblClick(e)
},
onAdjustControl: function() {
_this2._onAdjustControl()
}
});
this._fireContentReadyAction()
};
_proto._onAdjustControl = function() {
var elementHeight = this._$element.height();
this._updateGanttWidth();
this._setGanttHeight(elementHeight)
};
_proto._onApplyPanelSize = function(e) {
this._setInnerElementsWidth(e);
this._updateGanttRowHeights()
};
_proto._updateGanttRowHeights = function() {
var rowHeight = this._getTreeListRowHeight();
if (this._getGanttViewOption("rowHeight") !== rowHeight) {
var _this$_ganttView;
this._setGanttViewOption("rowHeight", rowHeight);
null === (_this$_ganttView = this._ganttView) || void 0 === _this$_ganttView ? void 0 : _this$_ganttView._ganttViewCore.updateRowHeights(rowHeight)
}
};
_proto._onTreeListContentReady = function(e) {
if (e.component.getDataSource()) {
this._initGanttView();
this._initScrollSync(e.component)
}
};
_proto._onTreeListRowPrepared = function(e) {
if ("data" === e.rowType && e.node.children.length > 0) {
(0, _renderer.default)(e.rowElement).addClass(GANTT_COLLAPSABLE_ROW)
}
};
_proto._onTreeListContextMenuPreparing = function(e) {
var _e$row, _e$row2;
if ("data" === (null === (_e$row = e.row) || void 0 === _e$row ? void 0 : _e$row.rowType)) {
this._setTreeListOption("selectedRowKeys", [e.row.data[this.option("tasks.keyExpr")]])
}
e.items = [];
var info = {
cancel: false,
event: e.event,
type: "task",
key: null === (_e$row2 = e.row) || void 0 === _e$row2 ? void 0 : _e$row2.key,
position: {
x: e.event.pageX,
y: e.event.pageY
}
};
this._showPopupMenu(info)
};
_proto._onTreeListRowClick = function(e) {
this._raiseTaskClickAction(e.key, e.event)
};
_proto._onTreeListRowDblClick = function(e) {
if (this._raiseTaskDblClickAction(e.key, e.event)) {
this._ganttView._ganttViewCore.showTaskEditDialog()
}
};
_proto._onTreeListSelectionChanged = function(e) {
var selectedRowKey = e.currentSelectedRowKeys[0];
this._setGanttViewOption("selectedRowKey", selectedRowKey);
this._setOptionWithoutOptionChange("selectedRowKey", selectedRowKey);
this._raiseSelectionChangedAction(selectedRowKey)
};
_proto._onTreeListRowCollapsed = function(e) {
this._ganttView.changeTaskExpanded(e.key, false);
this._adjustHeight()
};
_proto._onTreeListRowExpanded = function(e) {
this._ganttView.changeTaskExpanded(e.key, true);
this._adjustHeight()
};
_proto._adjustHeight = function() {
if (!this._hasHeight) {
this._setGanttViewOption("height", 0);
this._setGanttViewOption("height", this._treeList._$element.get(0).offsetHeight)
}
};
_proto._getTreeListHeight = function() {
if (this._$treeList.height()) {
return this._$treeList.height()
}
this._hasHeight = (0, _type.isDefined)(this.option("height")) && "" !== this.option("height");
return this._hasHeight ? "100%" : ""
};
_proto._getTreeListColumns = function() {
var columns = this.option("columns");
if (columns) {
for (var i = 0; i < columns.length; i++) {
var column = columns[i];
var isKeyColumn = column.dataField === this.option("".concat(GANTT_TASKS, ".keyExpr")) || column.dataField === this.option("".concat(GANTT_TASKS, ".parentIdExpr"));
if (isKeyColumn && !column.dataType) {
column.dataType = "object"
}
}
}
return columns
};
_proto._onGanttViewSelectionChanged = function(e) {
this._setTreeListOption("selectedRowKeys", this._getArrayFromOneElement(e.id))
};
_proto._onGanttViewScroll = function(e) {
var treeListScrollable = this._treeList.getScrollable();
if (treeListScrollable) {
var diff = e.scrollTop - treeListScrollable.scrollTop();
if (0 !== diff) {
treeListScrollable.scrollBy({
left: 0,
top: diff
})
}
}
};
_proto._onTreeListScroll = function(treeListScrollView) {
var ganttViewTaskAreaContainer = this._ganttView.getTaskAreaContainer();
if (ganttViewTaskAreaContainer.scrollTop !== treeListScrollView.component.scrollTop()) {
ganttViewTaskAreaContainer.scrollTop = treeListScrollView.component.scrollTop()
}
};
_proto._expandAll = function() {
var _this3 = this;
this._treeList.forEachNode((function(node) {
if (node.children && node.children.length) {
_this3._treeList.expandRow(node.key);
_this3._ganttView.changeTaskExpanded(node.key, true)
}
}))
};
_proto._collapseAll = function() {
var _this4 = this;
this._treeList.forEachNode((function(node) {
if (node.children && node.children.length) {
_this4._treeList.collapseRow(node.key);
_this4._ganttView.changeTaskExpanded(node.key, false)
}
}))
};
_proto._initScrollSync = function(treeList) {
var _this5 = this;
var treeListScrollable = treeList.getScrollable();
if (treeListScrollable) {
treeListScrollable.off("scroll");
treeListScrollable.on("scroll", (function(e) {
_this5._onTreeListScroll(e)
}))
}
};
_proto._getTreeListRowHeight = function() {
var $row = this._treeList._$element.find(".dx-data-row");
var height = $row.length ? (0, _position.getBoundingRect)($row.last().get(0)).height : GANTT_DEFAULT_ROW_HEIGHT;
if (!height) {
height = GANTT_DEFAULT_ROW_HEIGHT
}
this._correctRowsViewRowHeight(height);
return height
};
_proto._correctRowsViewRowHeight = function(height) {
var view = this._treeList._views && this._treeList._views.rowsView;
if ((null === view || void 0 === view ? void 0 : view._rowHeight) !== height) {
view._rowHeight = height
}
};
_proto._getTreeListHeaderHeight = function() {
return (0, _position.getBoundingRect)(this._treeList._$element.find(".dx-treelist-headers").get(0)).height
};
_proto._setInnerElementsWidth = function(widths) {
if (!(0, _window.hasWindow)()) {
return
}
if (!widths) {
widths = this._getPanelsWidthByOption()
}
this._setTreeListDimension("width", widths.leftPanelWidth);
this._setGanttViewDimension("width", widths.rightPanelWidth)
};
_proto._setTreeListDimension = function(dimension, value) {
this._$treeListWrapper[dimension](value);
this._setTreeListOption(dimension, this._$treeListWrapper[dimension]())
};
_proto._setGanttViewDimension = function(dimension, value) {
this._$ganttView[dimension](value);
this._setGanttViewOption(dimension, this._$ganttView[dimension]())
};
_proto._updateGanttWidth = function() {
this._splitter._dimensionChanged()
};
_proto._setGanttHeight = function(height) {
var _this$_ganttView2;
var toolbarHeightOffset = this._$toolbarWrapper.get(0).offsetHeight;
var mainWrapperHeight = height - toolbarHeightOffset;
this._setTreeListDimension("height", mainWrapperHeight);
this._setGanttViewDimension("height", mainWrapperHeight);
null === (_this$_ganttView2 = this._ganttView) || void 0 === _this$_ganttView2 ? void 0 : _this$_ganttView2._ganttViewCore.resetAndUpdate()
};
_proto._getPanelsWidthByOption = function() {
return {
leftPanelWidth: this.option("taskListWidth"),
rightPanelWidth: this._$element.width() - this.option("taskListWidth")
}
};
_proto._setGanttViewOption = function(optionName, value) {
this._ganttView && this._ganttView.option(optionName, value)
};
_proto._getGanttViewOption = function(optionName, value) {
var _this$_ganttView3;
return null === (_this$_ganttView3 = this._ganttView) || void 0 === _this$_ganttView3 ? void 0 : _this$_ganttView3.option(optionName)
};
_proto._setTreeListOption = function(optionName, value) {
this._treeList && this._treeList.option(optionName, value)
};
_proto._refreshDataSource = function(name) {
var _this6 = this;
var dataOption = this["_".concat(name, "Option")];
if (dataOption) {
dataOption._disposeDataSource();
delete this["_".concat(name, "Option")];
delete this["_".concat(name)]
}
if (this.option("".concat(name, ".dataSource"))) {
dataOption = new _uiGanttData.default(name, this._getLoadPanel(), (function(name, data) {
_this6._dataSourceChanged(name, data)
}));
dataOption.option("dataSource", this._getSpecificDataSourceOption(name));
dataOption._refreshDataSource();
this["_".concat(name, "Option")] = dataOption
}
};
_proto._getSpecificDataSourceOption = function(name) {
var dataSource = this.option("".concat(name, ".dataSource"));
if (Array.isArray(dataSource)) {
return {
store: {
type: "array",
data: dataSource,
key: this.option("".concat(name, ".keyExpr"))
}
}
}
return dataSource
};
_proto._compileGettersByOption = function(optionName) {
var getters = {};
var optionValue = this.option(optionName);
for (var field in optionValue) {
var exprMatches = field.match(/(\w*)Expr/);
if (exprMatches) {
getters[exprMatches[1]] = (0, _data.compileGetter)(optionValue[exprMatches[0]])
}
}
return getters
};
_proto._compileSettersByOption = function(optionName) {
var setters = {};
var optionValue = this.option(optionName);
for (var field in optionValue) {
var exprMatches = field.match(/(\w*)Expr/);
if (exprMatches) {
setters[exprMatches[1]] = (0, _data.compileSetter)(optionValue[exprMatches[0]])
}
}
return setters
};
_proto._getStoreObject = function(optionName, modelObject) {
var setters = this._compileSettersByOption(optionName);
return Object.keys(setters).reduce((function(previous, key) {
if ("key" !== key) {
setters[key](previous, modelObject[key])
}
return previous
}), {})
};
_proto._prepareSetterMapHandler = function(setters) {
return function(data) {
return Object.keys(setters).reduce((function(previous, key) {
var resultKey = "key" === key ? "id" : key;
setters[key](previous, data[resultKey]);
return previous
}), {})
}
};
_proto._prepareMapHandler = function(getters) {
return function(data) {
return Object.keys(getters).reduce((function(previous, key) {
var resultKey = "key" === key ? "id" : key;
previous[resultKey] = getters[key](data);
return previous
}), {})
}
};
_proto._dataSourceChanged = function(dataSourceName, data) {
var _this7 = this;
var getters = this._compileGettersByOption(dataSourceName);
var mappedData = data.map(this._prepareMapHandler(getters));
this["_".concat(dataSourceName)] = mappedData;
this._setGanttViewOption(dataSourceName, mappedData);
if (dataSourceName === GANTT_TASKS) {
this._tasksRaw = data;
var expandedRowKeys = data.map((function(t) {
return t[_this7.option("tasks.parentIdExpr")]
})).filter((function(value, index, self) {
return value && self.indexOf(value) === index
}));
this._setTreeListOption("expandedRowKeys", expandedRowKeys);
this._setTreeListOption("dataSource", data)
}
};
_proto._createModelChangesListener = function() {
var _this8 = this;
return {
NotifyTaskCreated: function(task, callback, errorCallback) {
_this8._onRecordInserted(GANTT_TASKS, task, callback)
},
NotifyTaskRemoved: function(taskId, errorCallback, task) {
_this8._onRecordRemoved(GANTT_TASKS, taskId, task)
},
NotifyTaskTitleChanged: function(taskId, newValue, errorCallback) {
_this8._onRecordUpdated(GANTT_TASKS, taskId, "title", newValue)
},
NotifyTaskDescriptionChanged: function(taskId, newValue, errorCallback) {
_this8._onRecordUpdated(GANTT_TASKS, taskId, "description", newValue)
},
NotifyTaskStartChanged: function(taskId, newValue, errorCallback) {
_this8._onRecordUpdated(GANTT_TASKS, taskId, "start", newValue)
},
NotifyTaskEndChanged: function(taskId, newValue, errorCallback) {
_this8._onRecordUpdated(GANTT_TASKS, taskId, "end", newValue)
},
NotifyTaskProgressChanged: function(taskId, newValue, errorCallback) {
_this8._onRecordUpdated(GANTT_TASKS, taskId, "progress", newValue)
},
NotifyTaskColorChanged: function(taskId, newValue, errorCallback) {
_this8._onRecordUpdated(GANTT_TASKS, taskId, "color", newValue)
},
NotifyParentTaskUpdated: function(task, errorCallback) {
_this8._onParentTaskUpdated(task)
},
NotifyDependencyInserted: function(dependency, callback, errorCallback) {
_this8._onRecordInserted(GANTT_DEPENDENCIES, dependency, callback)
},
NotifyDependencyRemoved: function(dependencyId, errorCallback, dependency) {
_this8._onRecordRemoved(GANTT_DEPENDENCIES, dependencyId, dependency)
},
NotifyResourceCreated: function(resource, callback, errorCallback) {
_this8._onRecordInserted(GANTT_RESOURCES, resource, callback)
},
NotifyResourceRemoved: function(resourceId, errorCallback, resource) {
_this8._onRecordRemoved(GANTT_RESOURCES, resourceId, resource)
},
NotifyResourceAssigned: function(assignment, callback, errorCallback) {
_this8._onRecordInserted(GANTT_RESOURCE_ASSIGNMENTS, assignment, callback)
},
NotifyResourceUnassigned: function(assignmentId, errorCallback, assignment) {
_this8._onRecordRemoved(GANTT_RESOURCE_ASSIGNMENTS, assignmentId, assignment)
},
NotifyParentDataRecalculated: function(data) {
_this8._onParentTasksRecalculated(data)
},
NotifyTaskCreating: function(args) {
_this8._raiseInsertingAction(GANTT_TASKS, args)
},
NotifyTaskRemoving: function(args) {
_this8._raiseDeletingAction(GANTT_TASKS, args)
},
NotifyTaskUpdating: function(args) {
_this8._raiseUpdatingAction(GANTT_TASKS, args)
},
NotifyTaskMoving: function(args) {
_this8._raiseUpdatingAction(GANTT_TASKS, args, _this8._getTaskMovingAction())
},
NotifyTaskEditDialogShowing: function(args) {
_this8._raiseTaskEditDialogShowingAction(args)
},
NotifyResourceManagerDialogShowing: function(args) {
_this8._raiseResourceManagerDialogShowingAction(args)
},
NotifyDependencyInserting: function(args) {
_this8._raiseInsertingAction(GANTT_DEPENDENCIES, args)
},
NotifyDependencyRemoving: function(args) {
_this8._raiseDeletingAction(GANTT_DEPENDENCIES, args)
},
NotifyResourceCreating: function(args) {
_this8._raiseInsertingAction(GANTT_RESOURCES, args)
},
NotifyResourceRemoving: function(args) {
_this8._raiseDeletingAction(GANTT_RESOURCES, args)
},
NotifyResourceAssigning: function(args) {
_this8._raiseInsertingAction(GANTT_RESOURCE_ASSIGNMENTS, args)
},
NotifyResourceUnassigning: function(args) {
_this8._raiseDeletingAction(GANTT_RESOURCE_ASSIGNMENTS, args)
}
}
};
_proto._onRecordInserted = function(optionName, record, callback) {
var _this9 = this;
var dataOption = this["_".concat(optionName, "Option")];
if (dataOption) {
var data = this._getStoreObject(optionName, record);
if (optionName === GANTT_TASKS) {
this._addCustomFieldsDataFromCache(GANTT_NEW_TASK_CACHE_KEY, data)
}
dataOption.insert(data, (function(response) {
var keyGetter = (0, _data.compileGetter)(_this9.option("".concat(optionName, ".keyExpr")));
var insertedId = keyGetter(response);
callback(insertedId);
if (optionName === GANTT_TASKS) {
_this9._updateTreeListDataSource();
var parentId = record.parentId;
if (void 0 !== parentId) {
var expandedRowKeys = _this9._treeList.option("expandedRowKeys");
if (-1 === expandedRowKeys.indexOf(parentId)) {
expandedRowKeys.push(parentId);
_this9._treeList.option("expandedRowKeys", expandedRowKeys)
}
}
_this9._selectTreeListRows(_this9._getArrayFromOneElement(insertedId));
_this9._setTreeListOption("focusedRowKey", insertedId);
setTimeout((function() {
_this9._updateGanttRowHeights()
}), 300)
}
dataOption._reloadDataSource();
_this9._raiseInsertedAction(optionName, data, insertedId)
}))
}
};
_proto._onRecordRemoved = function(optionName, key, data) {
var _this10 = this;
var dataOption = this["_".concat(optionName, "Option")];
if (dataOption) {
dataOption.remove(key, (function() {
if (optionName === GANTT_TASKS) {
_this10._updateTreeListDataSource()
}
dataOption._reloadDataSource();
_this10._raiseDeletedAction(optionName, key, _this10._convertCoreToMappedData(optionName, data))
}))
}
};
_proto._onRecordUpdated = function(optionName, key, fieldName, value) {
var _this11 = this;
var dataOption = this["_".concat(optionName, "Option")];
var isTaskUpdated = optionName === GANTT_TASKS;
if (dataOption) {
var setter = (0, _data.compileSetter)(this.option("".concat(optionName, ".").concat(fieldName, "Expr")));
var data = {};
setter(data, value);
var hasCustomFieldsData = isTaskUpdated && this._cache.hasData(key);
if (hasCustomFieldsData) {
this._addCustomFieldsDataFromCache(key, data)
}
dataOption.update(key, data, (function() {
if (isTaskUpdated) {
_this11._updateTreeListDataSource()
}
dataOption._reloadDataSource();
_this11._raiseUpdatedAction(optionName, data, key)
}))
}
};
_proto._onParentTaskUpdated = function(data) {
var mappedData = this.getTaskDataByCoreData(data);
this._raiseUpdatedAction(GANTT_TASKS, mappedData, data.id)
};
_proto._onParentTasksRecalculated = function(data) {
var setters = this._compileSettersByOption(GANTT_TASKS);
var treeDataSource = this._appendCustomFields(data.map(this._prepareSetterMapHandler(setters)));
this._setTreeListOption("dataSource", treeDataSource)
};
_proto._appendCustomFields = function(data) {
var modelData = this._tasksOption && this._tasksOption._getItems();
var keyGetter = this._getTaskKeyGetter();
var invertedData = this.getInvertedData(modelData, keyGetter);
return data.reduce((function(previous, item) {
var key = keyGetter(item);
var modelItem = invertedData[key];
if (!modelItem) {
previous.push(item)
} else {
var updatedItem = {};
for (var field in modelItem) {
updatedItem[field] = Object.prototype.hasOwnProperty.call(item, field) ? item[field] : modelItem[field]
}
previous.push(updatedItem)
}
return previous
}), [])
};
_proto._getTaskKeyGetter = function() {
return (0, _data.compileGetter)(this.option("".concat(GANTT_TASKS, ".keyExpr")))
};
_proto.getInvertedData = function(data, keyGetter) {
var inverted = {};
if (data) {
for (var i = 0; i < data.length; i++) {
var dataItem = data[i];
var key = keyGetter(dataItem);
inverted[key] = dataItem
}
}
return inverted
};
_proto._updateTreeListDataSource = function() {
var forceUpdate = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;
if (!this._skipUpdateTreeListDataSource()) {
var dataSource = this.option("tasks.dataSource");
var storeArray = this._tasksOption._getStore()._array || dataSource.items && dataSource.items();
this._setTreeListOption("dataSource", storeArray ? storeArray : dataSource)
} else if (forceUpdate) {
var data = this._treeList.option("dataSource");
this._onParentTasksRecalculated(data)
}
};
_proto._skipUpdateTreeListDataSource = function() {
return this.option("validation.autoUpdateParentTasks")
};
_proto._selectTreeListRows = function(keys) {
this._setTreeListOption("selectedRowKeys", keys)
};
_proto._addCustomFieldsDataFromCache = function(key, data) {
this._cache.pullDataFromCache(key, data)
};
_proto._saveCustomFieldsDataToCache = function(key, data) {
var _this12 = this;
var forceUpdateOnKeyExpire = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;
var isCustomFieldsUpdateOnly = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false;
var customFieldsData = this._getCustomFieldsData(data);
if (Object.keys(customFieldsData).length > 0) {
var updateCallback = function(key, data) {
var dataOption = _this12["_".concat(GANTT_TASKS, "Option")];
if (dataOption && data) {
dataOption.update(key, data, (function(data, key) {
var updatedCustomFields = {};
_this12._addCustomFieldsData(key, updatedCustomFields);
_this12._updateTreeListDataSource(isCustomFieldsUpdateOnly);
dataOption._reloadDataSource();
var selectedRowKey = _this12.option("selectedRowKey");
_this12._ganttView._selectTask(selectedRowKey);
_this12._raiseUpdatedAction(GANTT_TASKS, updatedCustomFields, key)
}))
}
};
this._cache.saveData(key, customFieldsData, forceUpdateOnKeyExpire ? updateCallback : null)
}
};
_proto._getLoadPanel = function() {
if (!this._loadPanel) {
this._loadPanel = this._createComponent(this._$loadPanel, _load_panel.default, {
position: {
of: this.$element()
}
})
}
return this._loadPanel
};
_proto._createSelectionChangedAction = function() {
this._selectionChangedAction = this._createActionByOption("onSelectionChanged")
};
_proto._createTaskClickAction = function() {
this._taskClickAction = this._createActionByOption("onTaskClick")
};
_proto._createTaskDblClickAction = function() {
this._taskDblClickAction = this._createActionByOption("onTaskDblClick")
};
_proto._createCustomCommandAction = function() {
this._customCommandAction = this._createActionByOption("onCustomCommand")
};
_proto._createContextMenuPreparingAction = function() {
this._contextMenuPreparingAction = this._createActionByOption("onContextMenuPreparing")
};
_proto._raiseSelectionChangedAction = function(selectedRowKey) {
if (!this._selectionChangedAction) {
this._createSelectionChangedAction()
}
this._selectionChangedAction({
selectedRowKey: selectedRowKey
})
};
_proto._raiseCustomCommand = function(commandName) {
if (!this._customCommandAction) {
this._createCustomCommandAction()
}
this._customCommandAction({
name: commandName
})
};
_proto._raiseContextMenuPreparing = function(options) {
if (!this._contextMenuPreparingAction) {
this._createContextMenuPreparingAction()
}
this._contextMenuPreparingAction(options)
};
_proto._raiseInsertingAction = function(optionName, coreArgs) {
var action = this._getInsertingAction(optionName);
if (action) {
var args = {
cancel: false,
values: this._convertCoreToMappedData(optionName, coreArgs.values)
};
action(args);
coreArgs.cancel = args.cancel;
coreArgs.values = this._convertMappedToCoreData(optionName, args.values);
if (optionName === GANTT_TASKS) {
this._saveCustomFieldsDataToCache(GANTT_NEW_TASK_CACHE_KEY, args.values)
}
}
};
_proto._raiseInsertedAction = function(optionName, data, key) {
var action = this._getInsertedAction(optionName);
if (action) {
var args = {
values: data,
key: key
};
action(args)
}
};
_proto._raiseDeletingAction = function(optionName, coreArgs) {
var action = this._getDeletingAction(optionName);
if (action) {
var args = {
cancel: false,
key: coreArgs.key,
values: this._convertCoreToMappedData(optionName, coreArgs.values)
};
action(args);
coreArgs.cancel = args.cancel
}
};
_proto._raiseDeletedAction = function(optionName, key, data) {
var action = this._getDeletedAction(optionName);
if (action) {
var args = {
key: key,
values: data
};
action(args)
}
};
_proto._raiseUpdatingAction = function(optionName, coreArgs, action) {
action = action || this._getUpdatingAction(optionName);
if (action) {
var args = {
cancel: false,
key: coreArgs.key,
newValues: this._convertCoreToMappedData(optionName, coreArgs.newValues),
values: this._convertCoreToMappedData(optionName, coreArgs.values)
};
action(args);
coreArgs.cancel = args.cancel;
coreArgs.newValues = this._convertMappedToCoreData(optionName, args.newValues);
if (optionName === GANTT_TASKS) {
var forceUpdateOnKeyExpire = !Object.keys(coreArgs.newValues).length;
this._saveCustomFieldsDataToCache(args.key, args.newValues, forceUpdateOnKeyExpire)
}
}
};
_proto._raiseUpdatedAction = function(optionName, data, key) {
var action = this._getUpdatedAction(optionName);
if (action) {
var args = {
values: data,
key: key
};
action(args)
}
};
_proto._raiseTaskEditDialogShowingAction = function(coreArgs) {
var action = this._getTaskEditDialogShowingAction();
if (action) {
var args = {
cancel: false,
key: coreArgs.key,
values: this._convertCoreToMappedData(GANTT_TASKS, coreArgs.values),
readOnlyFields: this._convertCoreToMappedFields(GANTT_TASKS, coreArgs.readOnlyFields),
hiddenFields: this._convertCoreToMappedFields(GANTT_TASKS, coreArgs.hiddenFields)
};
action(args);
coreArgs.cancel = args.cancel;
coreArgs.values = this._convertMappedToCoreData(GANTT_TASKS, args.values);
coreArgs.readOnlyFields = this._convertMappedToCoreFields(GANTT_TASKS, args.readOnlyFields);
coreArgs.hiddenFields = this._convertMappedToCoreFields(GANTT_TASKS, args.hiddenFields)
}
};
_proto._raiseResourceManagerDialogShowingAction = function(coreArgs) {
var _this13 = this;
var action = this._getResourceManagerDialogShowingAction();
if (action) {
var mappedResources = coreArgs.values.resources.items.map((function(r) {
return _this13._convertMappedToCoreData(GANTT_RESOURCES, r)
}));
var args = {
cancel: false,
values: mappedResources
};
action(args);
coreArgs.cancel = args.cancel
}
};
_proto._raiseTaskClickAction = function(key, event) {
if (!this._taskClickAction) {
this._createTaskClickAction()
}
var args = {
key: key,
event: event,
data: this.getTaskData(key)
};
this._taskClickAction(args)
};
_proto._raiseTaskDblClickAction = function(key, event) {
if (!this._taskDblClickAction) {
this._createTaskDblClickAction()
}
var args = {
cancel: false,
data: this.getTaskData(key),
event: event,
key: key
};
this._taskDblClickAction(args);
return !args.cancel
};
_proto._getInsertingAction = function(optionName) {
switch (optionName) {
case GANTT_TASKS:
return this._getTaskInsertingAction();
case GANTT_DEPENDENCIES:
return this._getDependencyInsertingAction();
case GANTT_RESOURCES:
return this._getResourceInsertingAction();
case GANTT_RESOURCE_ASSIGNMENTS:
return this._getResourceAssigningAction()
}
return function() {}
};
_proto._getInsertedAction = function(optionName) {
switch (optionName) {
case GANTT_TASKS:
return this._getTaskInsertedAction();
case GANTT_DEPENDENCIES:
return this._getDependencyInsertedAction();
case GANTT_RESOURCES:
return this._getResourceInsertedAction();
case GANTT_RESOURCE_ASSIGNMENTS:
return this._getResourceAssignedAction()
}
return function() {}
};
_proto._getDeletingAction = function(optionName) {
switch (optionName) {
case GANTT_TASKS:
return this._getTaskDeletingAction();
case GANTT_DEPENDENCIES:
return this._getDependencyDeletingAction();
case GANTT_RESOURCES:
return this._getResourceDeletingAction();
case GANTT_RESOURCE_ASSIGNMENTS:
return this._getResourceUnassigningAction()
}
return function() {}
};
_proto._getDeletedAction = function(optionName) {
switch (optionName) {
case GANTT_TASKS:
return this._getTaskDeletedAction();
case GANTT_DEPENDENCIES:
return this._getDependencyDeletedAction();
case GANTT_RESOURCES:
return this._getResourceDeletedAction();
case GANTT_RESOURCE_ASSIGNMENTS:
return this._getResourceUnassignedAction()
}
return function() {}
};
_proto._getUpdatingAction = function(optionName) {
switch (optionName) {
case GANTT_TASKS:
return this._getTaskUpdatingAction()
}
return function() {}
};
_proto._getUpdatedAction = function(optionName) {
switch (optionName) {
case GANTT_TASKS:
return this._getTaskUpdatedAction()
}
return function() {}
};
_proto._getTaskInsertingAction = function() {
if (!this._taskInsertingAction) {
this._createTaskInsertingAction()
}
return this._taskInsertingAction
};
_proto._getTaskInsertedAction = function() {
if (!this._taskInsertedAction) {
this._createTaskInsertedAction()
}
return this._taskInsertedAction
};
_proto._getTaskDeletingAction = function() {
if (!this._taskDeletingAction) {
this._createTaskDeletingAction()
}
return this._taskDeletingAction
};
_proto._getTaskDeletedAction = function() {
if (!this._taskDeletedAction) {
this._createTaskDeletedAction()
}
return this._taskDeletedAction
};
_proto._getTaskUpdatingAction = function() {
if (!this._taskUpdatingAction) {
this._createTaskUpdatingAction()
}
return this._taskUpdatingAction
};
_proto._getTaskUpdatedAction = function() {
if (!this._taskUpdatedAction) {
this._createTaskUpdatedAction()
}
return this._taskUpdatedAction
};
_proto._getTaskMovingAction = function() {
if (!this._taskMovingAction) {
this._createTaskMovingAction()
}
return this._taskMovingAction
};
_proto._getTaskEditDialogShowingAction = function() {
if (!this._taskEditDialogShowingAction) {
this._createTaskEditDialogShowingAction()
}
return this._taskEditDialogShowingAction
};
_proto._getResourceManagerDialogShowingAction = function() {
if (!this._resourceManagerDialogShowingAction) {
this._createResourceManagerDialogShowingAction()
}
return this._resourceManagerDialogShowingAction
};
_proto._getDependencyInsertingAction = function() {
if (!this._dependencyInsertingAction) {
this._createDependencyInsertingAction()
}
return this._dependencyInsertingAction
};
_proto._getDependencyInsertedAction = function() {
if (!this._dependencyInsertedAction) {
this._createDependencyInsertedAction()
}
return this._dependencyInsertedAction
};
_proto._getDependencyDeletingAction = function() {
if (!this._dependencyDeletingAction) {
this._createDependencyDeletingAction()
}
return this._dependencyDeletingAction
};
_proto._getDependencyDeletedAction = function() {
if (!this._dependencyDeletedAction) {
this._createDependencyDeletedAction()
}
return this._dependencyDeletedAction
};
_proto._getResourceInsertingAction = function() {
if (!this._resourceInsertingAction) {
this._createResourceInsertingAction()
}
return this._resourceInsertingAction
};
_proto._getResourceInsertedAction = function() {
if (!this._resourceInsertedAction) {
this._createResourceInsertedAction()
}
return this._resourceInsertedAction
};
_proto._getResourceDeletingAction = function() {
if (!this._resourceDeletingAction) {
this._createResourceDeletingAction()
}
return this._resourceDeletingAction
};
_proto._getResourceDeletedAction = function() {
if (!this._resourceDeletedAction) {
this._createResourceDeletedAction()
}
return this._resourceDeletedAction
};
_proto._getResourceAssigningAction = function() {
if (!this._resourceAssigningAction) {
this._createResourceAssigningAction()
}
return this._resourceAssigningAction
};
_proto._getResourceAssignedAction = function() {
if (!this._resourceAssignedAction) {
this._createResourceAssignedAction()
}
return this._resourceAssignedAction
};
_proto._getResourceUnassigningAction = function() {
if (!this._resourceUnassigningAction) {
this._createResourceUnassigningAction()
}
return this._resourceUnassigningAction
};
_proto._getResourceUnassignedAction = function() {
if (!this._resourceUnassignedAction) {
this._createResourceUnassignedAction()
}
return this._resourceUnassignedAction
};
_proto._createResourceUnassigningAction = function() {
this._resourceUnassigningAction = this._createActionByOption("onResourceUnassigning")
};
_proto._createResourceUnassignedAction = function() {
this._resourceUnassignedAction = this._createActionByOption("onResourceUnassigned")
};
_proto._createTaskInsertingAction = function() {
this._taskInsertingAction = this._createActionByOption("onTaskInserting")
};
_proto._createTaskInsertedAction = function() {
this._taskInsertedAction = this._createActionByOption("onTaskInserted")
};
_proto._createTaskDeletingAction = function() {
this._taskDeletingAction = this._createActionByOption("onTaskDeleting")
};
_proto._createTaskDeletedAction = function() {
this._taskDeletedA