devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
157 lines (153 loc) • 7.09 kB
JavaScript
var Class = require("../core/class"),
grep = require("../core/utils/common").grep,
extend = require("../core/utils/extend").extend,
each = require("../core/utils/iterator").each,
inArray = require("../core/utils/array").inArray,
errors = require("./errors");
var CommandMapping = Class.inherit({
ctor: function ctor() {
this._commandMappings = {};
this._containerDefaults = {};
},
setDefaults: function setDefaults(containerId, defaults) {
this._containerDefaults[containerId] = defaults;
return this;
},
mapCommands: function mapCommands(containerId, commandMappings) {
var that = this;
each(commandMappings, function (index, commandMapping) {
if (typeof commandMapping === "string") {
commandMapping = { id: commandMapping };
}
var commandId = commandMapping.id;
var mappings = that._commandMappings[containerId] || {};
mappings[commandId] = extend({ showIcon: true, showText: true }, that._containerDefaults[containerId] || {}, commandMapping);
that._commandMappings[containerId] = mappings;
});
this._initExistingCommands();
return this;
},
unmapCommands: function unmapCommands(containerId, commandIds) {
var that = this;
each(commandIds, function (index, commandId) {
var mappings = that._commandMappings[containerId] || {};
if (mappings) {
delete mappings[commandId];
}
});
this._initExistingCommands();
},
getCommandMappingForContainer: function getCommandMappingForContainer(commandId, containerId) {
return (this._commandMappings[containerId] || {})[commandId];
},
checkCommandsExist: function checkCommandsExist(commands) {
var that = this,
result = grep(commands, function (commandName, index) {
return inArray(commandName, that._existingCommands) < 0 && inArray(commandName, commands) === index;
});
if (result.length !== 0) {
// https://js.devexpress.com/Documentation/ApiReference/SPA_Framework/HtmlApplication/Configuration/#commandMapping
throw errors.Error("E3005", result.join("', '"), result.length === 1 ? " is" : "s are");
}
},
load: function load(config) {
if (!config) return;
var that = this;
each(config, function (name, container) {
that.setDefaults(name, container.defaults);
that.mapCommands(name, container.commands);
});
return this;
},
_initExistingCommands: function _initExistingCommands() {
var that = this;
this._existingCommands = [];
each(that._commandMappings, function (name, _commands) {
each(_commands, function (index, command) {
if (inArray(command.id, that._existingCommands) < 0) {
that._existingCommands.push(command.id);
}
});
});
}
});
CommandMapping.defaultMapping = {
"global-navigation": {
defaults: { showIcon: true, showText: true },
commands: []
},
"ios-header-toolbar": {
defaults: { showIcon: false, showText: true, location: "after" },
commands: ["edit", "save", { id: "back", location: "before" }, { id: "cancel", location: "before" }, { id: "create", showIcon: true, showText: false }]
},
"ios-action-sheet": {
defaults: { showIcon: false, showText: true },
commands: []
},
"ios-view-footer": {
defaults: { showIcon: false, showText: true },
commands: [{ id: "delete", type: "danger" }]
},
"android-header-toolbar": {
defaults: { showIcon: true, showText: false, location: "after" },
commands: [{ id: "back", showIcon: false, location: "before" }, "create", { id: "save", showText: true, showIcon: false, location: "after" }, { id: "edit", showText: false, location: "after" }, { id: "cancel", showText: false, location: "before" }, { id: "delete", showText: false, location: "after" }]
},
"android-simple-toolbar": {
defaults: { showIcon: true, showText: false, location: "after" },
commands: [{ id: "back", showIcon: false, location: "before" }, { id: "create" }, { id: "save", showText: true, showIcon: false, location: "after" }, { id: "edit", showText: false, location: "after" }, { id: "cancel", showText: false, location: "before" }, { id: "delete", showText: false, location: "after" }]
},
"android-footer-toolbar": {
defaults: { location: "after" },
commands: [{ id: "create", showText: false, location: "center" }, { id: "edit", showText: false, location: "before" }, { id: "delete", locateInMenu: "always" }, { id: "save", showIcon: false, location: "before" }]
},
"generic-header-toolbar": {
defaults: { showIcon: false, showText: true, location: "after" },
commands: ["edit", "save", { id: "back", location: "before" }, { id: "cancel", location: "before" }, { id: "create", showIcon: true, showText: false }]
},
"generic-view-footer": {
defaults: { showIcon: false, showText: true },
commands: [{ id: "delete", type: "danger" }]
},
"win8-appbar": {
defaults: { location: "after" },
commands: ["edit", "cancel", "save", "delete", { id: "create", location: "before" }, { id: "refresh", location: "before" }]
},
"win8-toolbar": {
defaults: { showText: false, location: "before" },
commands: [{ id: "previousPage" }]
},
"win8-phone-appbar": {
defaults: { location: "center" },
commands: ["create", "edit", "cancel", "save", "refresh", { id: "delete", locateInMenu: "always" }]
},
"win8-split-toolbar": {
defaults: { showIcon: true, showText: false, location: "after" },
commands: [{ id: "back", showIcon: false, location: "before" }, { id: "create" }, { id: "save", showText: true, location: "before" }, { id: "edit", showText: true, locateInMenu: "always" }, { id: "cancel", showText: true, locateInMenu: "always" }, { id: "delete", showText: true, locateInMenu: "always" }]
},
"win8-master-detail-toolbar": {
defaults: {
showText: false,
location: "before"
},
commands: ["back"]
},
"win10-appbar": {
defaults: {
showText: false,
location: "after"
},
commands: [{ id: "back", location: "before" }, "edit", "cancel", "save", "delete", "create", "refresh"]
},
"win10-phone-appbar": {
defaults: {
location: "after"
},
commands: ["create", "edit", "cancel", "save", "refresh", { id: "delete", locateInMenu: "always" }]
},
"desktop-toolbar": {
defaults: { showIcon: false, showText: true, location: "after" },
commands: ["cancel", "create", "edit", "save", { id: "delete", type: "danger" }]
}
};
module.exports = CommandMapping;
;