devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
265 lines (264 loc) • 9.66 kB
JavaScript
/**
* DevExtreme (esm/ui/gantt/ui.gantt.bars.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/
*/
import $ from "../../core/renderer";
import ToolbarMenu from "../toolbar";
import ContextMenu from "../context_menu";
import messageLocalization from "../../localization/message";
import {
extend
} from "../../core/utils/extend";
var TOOLBAR_SEPARATOR_CLASS = "dx-gantt-toolbar-separator";
var COMMANDS = {
createTask: 0,
createSubTask: 1,
removeTask: 2,
removeDependency: 3,
taskInformation: 4,
taskAddContextItem: 5,
undo: 6,
redo: 7,
zoomIn: 8,
zoomOut: 9,
fullScreen: 10,
collapseAll: 11,
expandAll: 12,
resourceManager: 13
};
class Bar {
constructor(element, owner) {
this._element = element;
this._owner = owner;
this._items = [];
this._createControl()
}
createItems(items) {
this._cache = null;
this._items = this._createItemsCore(items);
this._menu.option("items", this._items)
}
_createItemsCore(items) {
return items.map(item => {
var result;
if ("string" === typeof item) {
result = this._createItemByText(item)
} else {
result = item.name ? extend(this._createItemByText(item.name), item) : extend(this._getDefaultItemOptions(), item)
}
if (item.items) {
result.items = this._createItemsCore(item.items)
}
return result
})
}
_createItemByText(text) {
switch (text.toLowerCase()) {
case "separator":
return this._createSeparator();
case "undo":
return this._createDefaultItem(COMMANDS.undo, messageLocalization.format("dxGantt-undo"), this._getIcon("undo"));
case "redo":
return this._createDefaultItem(COMMANDS.redo, messageLocalization.format("dxGantt-redo"), this._getIcon("redo"));
case "expandall":
return this._createDefaultItem(COMMANDS.expandAll, messageLocalization.format("dxGantt-expandAll"), this._getIcon("expand"));
case "collapseall":
return this._createDefaultItem(COMMANDS.collapseAll, messageLocalization.format("dxGantt-collapseAll"), this._getIcon("collapse"));
case "addtask":
return this._createDefaultItem(COMMANDS.createTask, messageLocalization.format("dxGantt-addNewTask"), this._getIcon("add"));
case "addsubtask":
return this._createDefaultItem(COMMANDS.createSubTask, messageLocalization.format("dxGantt-contextMenuNewSubtask"), this._getIcon("add-sub-task"));
case "deletetask":
return this._createDefaultItem(COMMANDS.removeTask, messageLocalization.format("dxGantt-deleteSelectedTask"), this._getIcon("delete"));
case "deletedependency":
return this._createDefaultItem(COMMANDS.removeDependency, messageLocalization.format("dxGantt-contextMenuDeleteDependency"), this._getIcon("delete-dependency"));
case "zoomin":
return this._createDefaultItem(COMMANDS.zoomIn, messageLocalization.format("dxGantt-zoomIn"), this._getIcon("zoom-in"));
case "zoomout":
return this._createDefaultItem(COMMANDS.zoomOut, messageLocalization.format("dxGantt-zoomOut"), this._getIcon("zoom-out"));
case "fullscreen":
return this._createDefaultItem(COMMANDS.fullScreen, messageLocalization.format("dxGantt-fullScreen"), this._getIcon("full-screen"));
case "taskdetails":
return this._createDefaultItem(COMMANDS.taskInformation, messageLocalization.format("dxGantt-dialogTaskDetailsTitle") + "...", this._getIcon("task-details"));
case "resourcemanager":
return this._createDefaultItem(COMMANDS.resourceManager, messageLocalization.format("dxGantt-dialogResourceManagerTitle"), this._getIcon("resource-manager"));
default:
return extend(this._getDefaultItemOptions(), {
options: {
text: text
}
})
}
}
_getDefaultItemOptions() {
return {}
}
_getItemsCache() {
if (!this._cache) {
this._cache = {};
this._fillCache(this._items)
}
return this._cache
}
_fillCache(items) {
items.forEach(item => {
var key = item.commandId;
if (void 0 !== key) {
if (!this._cache[key]) {
this._cache[key] = []
}
this._cache[key].push(item)
}
if (item.items) {
this._fillCache(item.items)
}
})
}
_getIcon(name) {
return "dx-gantt-i dx-gantt-i-" + name
}
getCommandKeys() {
var itemsCache = this._getItemsCache();
var result = [];
for (var itemKey in itemsCache) {
result.push(parseInt(itemKey))
}
return result
}
setItemEnabled(key, enabled) {
var itemsCache = this._getItemsCache();
itemsCache[key].forEach(item => {
item.disabled = !enabled
})
}
setItemVisible(key, visible) {
var itemsCache = this._getItemsCache();
itemsCache[key].forEach(item => {
item.visible = visible
})
}
setItemValue(_key, _value) {}
setEnabled(enabled) {
this._menu.option("disabled", !enabled)
}
updateItemsList() {}
isVisible() {
return true
}
isContextMenu() {
return false
}
completeUpdate() {}
}
export class GanttToolbar extends Bar {
_createControl() {
this._menu = this._owner._createComponent(this._element, ToolbarMenu, {
onItemClick: e => {
var commandId = e.itemData.commandId;
if (void 0 !== commandId) {
this._owner._executeCoreCommand(e.itemData.commandId)
}
}
})
}
_createDefaultItem(commandId, hint, icon) {
return {
commandId: commandId,
disabled: true,
widget: "dxButton",
location: "before",
options: {
icon: icon,
stylingMode: "text",
hint: hint
}
}
}
_createSeparator() {
return {
location: "before",
template: (_data, _index, element) => {
$(element).addClass(TOOLBAR_SEPARATOR_CLASS)
}
}
}
_getDefaultItemOptions() {
return {
location: "before",
widget: "dxButton"
}
}
completeUpdate() {
this._menu.option("items", this._items)
}
}
export class GanttContextMenuBar extends Bar {
_createControl() {
this._menu = this._owner._createComponent(this._element, ContextMenu, {
showEvent: void 0,
onItemClick: e => {
if (void 0 !== e.itemData.commandId) {
this._owner._executeCoreCommand(e.itemData.commandId)
} else if (void 0 !== e.itemData.name) {
this._owner._raiseCustomCommand(e.itemData.name)
}
}
})
}
createItems(items) {
if (!items || 0 === items.length) {
items = this._getDefaultItems()
}
super.createItems(items)
}
_getDefaultItems() {
return [{
text: messageLocalization.format("dxGantt-dialogButtonAdd"),
commandId: COMMANDS.taskAddContextItem,
icon: this._getIcon("add"),
items: [{
text: messageLocalization.format("dxGantt-contextMenuNewTask"),
commandId: COMMANDS.createTask,
icon: this._getIcon("add-task")
}, {
text: messageLocalization.format("dxGantt-contextMenuNewSubtask"),
commandId: COMMANDS.createSubTask,
icon: this._getIcon("add-sub-task")
}]
}, {
text: messageLocalization.format("dxGantt-dialogTaskDetailsTitle") + "...",
commandId: COMMANDS.taskInformation,
icon: this._getIcon("task-details")
}, {
text: messageLocalization.format("dxGantt-contextMenuDeleteTask"),
commandId: COMMANDS.removeTask,
icon: this._getIcon("delete")
}, {
text: messageLocalization.format("dxGantt-contextMenuDeleteDependency"),
commandId: COMMANDS.removeDependency,
icon: this._getIcon("delete-dependency")
}]
}
_createDefaultItem(commandId, text, icon) {
return {
commandId: commandId,
text: text,
icon: icon
}
}
show(point, items) {
this._menu.option("items", items || this._items);
this._menu.option("position.offset", {
x: point.x,
y: point.y
});
this._menu.show()
}
isContextMenu() {
return true
}
}