mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
061afb3a94
Also alows multiple args to be passed to an action.
55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
RED.actions = (function() {
|
|
var actions = {
|
|
|
|
}
|
|
|
|
function addAction(name,handler) {
|
|
if (typeof handler !== 'function') {
|
|
throw new Error("Action handler not a function");
|
|
}
|
|
if (actions[name]) {
|
|
throw new Error("Cannot override existing action");
|
|
}
|
|
actions[name] = handler;
|
|
}
|
|
function removeAction(name) {
|
|
delete actions[name];
|
|
}
|
|
function getAction(name) {
|
|
return actions[name];
|
|
}
|
|
function invokeAction() {
|
|
var args = Array.prototype.slice.call(arguments);
|
|
var name = args.shift();
|
|
if (actions.hasOwnProperty(name)) {
|
|
actions[name].apply(null, args);
|
|
}
|
|
}
|
|
function listActions() {
|
|
var result = [];
|
|
Object.keys(actions).forEach(function(action) {
|
|
var shortcut = RED.keyboard.getShortcut(action);
|
|
var isUser = false;
|
|
if (shortcut) {
|
|
isUser = shortcut.user;
|
|
} else {
|
|
isUser = !!RED.keyboard.getUserShortcut(action);
|
|
}
|
|
result.push({
|
|
id:action,
|
|
scope:shortcut?shortcut.scope:undefined,
|
|
key:shortcut?shortcut.key:undefined,
|
|
user:isUser
|
|
})
|
|
})
|
|
return result;
|
|
}
|
|
return {
|
|
add: addAction,
|
|
remove: removeAction,
|
|
get: getAction,
|
|
invoke: invokeAction,
|
|
list: listActions
|
|
}
|
|
})();
|