|
|
|
@ -27,15 +27,10 @@ import addRuleNodeLinkTemplate from './add-link.tpl.html'; |
|
|
|
|
|
|
|
/* eslint-enable import/no-unresolved, import/default */ |
|
|
|
|
|
|
|
|
|
|
|
const deleteKeyCode = 46; |
|
|
|
const ctrlKeyCode = 17; |
|
|
|
const aKeyCode = 65; |
|
|
|
const escKeyCode = 27; |
|
|
|
|
|
|
|
/*@ngInject*/ |
|
|
|
export function RuleChainController($stateParams, $scope, $compile, $q, $mdUtil, $timeout, $mdExpansionPanel, $document, $mdDialog, |
|
|
|
$filter, $translate, types, ruleChainService, Modelfactory, flowchartConstants, ruleChain, ruleChainMetaData) { |
|
|
|
$filter, $translate, hotkeys, types, ruleChainService, Modelfactory, flowchartConstants, |
|
|
|
ruleChain, ruleChainMetaData, ruleNodeComponents) { |
|
|
|
|
|
|
|
var vm = this; |
|
|
|
|
|
|
|
@ -76,39 +71,62 @@ export function RuleChainController($stateParams, $scope, $compile, $q, $mdUtil, |
|
|
|
|
|
|
|
vm.modelservice = Modelfactory(vm.ruleChainModel, vm.selectedObjects); |
|
|
|
|
|
|
|
vm.ctrlDown = false; |
|
|
|
|
|
|
|
vm.saveRuleChain = saveRuleChain; |
|
|
|
vm.revertRuleChain = revertRuleChain; |
|
|
|
|
|
|
|
vm.keyDown = function (evt) { |
|
|
|
if (evt.keyCode === ctrlKeyCode) { |
|
|
|
vm.ctrlDown = true; |
|
|
|
evt.stopPropagation(); |
|
|
|
evt.preventDefault(); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
vm.keyUp = function (evt) { |
|
|
|
|
|
|
|
if (evt.keyCode === deleteKeyCode) { |
|
|
|
vm.modelservice.deleteSelected(); |
|
|
|
} |
|
|
|
|
|
|
|
if (evt.keyCode == aKeyCode && vm.ctrlDown) { |
|
|
|
vm.modelservice.selectAll(); |
|
|
|
} |
|
|
|
vm.objectsSelected = objectsSelected; |
|
|
|
vm.deleteSelected = deleteSelected; |
|
|
|
|
|
|
|
if (evt.keyCode == escKeyCode) { |
|
|
|
vm.modelservice.deselectAll(); |
|
|
|
} |
|
|
|
initHotKeys(); |
|
|
|
|
|
|
|
if (evt.keyCode === ctrlKeyCode) { |
|
|
|
vm.ctrlDown = false; |
|
|
|
evt.stopPropagation(); |
|
|
|
evt.preventDefault(); |
|
|
|
} |
|
|
|
}; |
|
|
|
function initHotKeys() { |
|
|
|
hotkeys.bindTo($scope) |
|
|
|
.add({ |
|
|
|
combo: 'ctrl+a', |
|
|
|
description: $translate.instant('rulenode.select-all'), |
|
|
|
allowIn: ['INPUT', 'SELECT', 'TEXTAREA'], |
|
|
|
callback: function (event) { |
|
|
|
event.preventDefault(); |
|
|
|
vm.modelservice.selectAll(); |
|
|
|
} |
|
|
|
}) |
|
|
|
.add({ |
|
|
|
combo: 'esc', |
|
|
|
description: $translate.instant('rulenode.deselect-all'), |
|
|
|
allowIn: ['INPUT', 'SELECT', 'TEXTAREA'], |
|
|
|
callback: function (event) { |
|
|
|
event.preventDefault(); |
|
|
|
vm.modelservice.deselectAll(); |
|
|
|
} |
|
|
|
}) |
|
|
|
.add({ |
|
|
|
combo: 'ctrl+s', |
|
|
|
description: $translate.instant('action.apply'), |
|
|
|
allowIn: ['INPUT', 'SELECT', 'TEXTAREA'], |
|
|
|
callback: function (event) { |
|
|
|
event.preventDefault(); |
|
|
|
vm.saveRuleChain(); |
|
|
|
} |
|
|
|
}) |
|
|
|
.add({ |
|
|
|
combo: 'ctrl+z', |
|
|
|
description: $translate.instant('action.decline-changes'), |
|
|
|
allowIn: ['INPUT', 'SELECT', 'TEXTAREA'], |
|
|
|
callback: function (event) { |
|
|
|
event.preventDefault(); |
|
|
|
vm.revertRuleChain(); |
|
|
|
} |
|
|
|
}) |
|
|
|
.add({ |
|
|
|
combo: 'del', |
|
|
|
description: $translate.instant('rulenode.delete-selected-objects'), |
|
|
|
allowIn: ['INPUT', 'SELECT', 'TEXTAREA'], |
|
|
|
callback: function (event) { |
|
|
|
event.preventDefault(); |
|
|
|
vm.modelservice.deleteSelected(); |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
vm.onEditRuleNodeClosed = function() { |
|
|
|
vm.editingRuleNode = null; |
|
|
|
@ -286,44 +304,40 @@ export function RuleChainController($stateParams, $scope, $compile, $q, $mdUtil, |
|
|
|
loadRuleChainLibrary(); |
|
|
|
|
|
|
|
function loadRuleChainLibrary() { |
|
|
|
ruleChainService.getRuleNodeComponents().then( |
|
|
|
(ruleNodeComponents) => { |
|
|
|
for (var i=0;i<ruleNodeComponents.length;i++) { |
|
|
|
var ruleNodeComponent = ruleNodeComponents[i]; |
|
|
|
var componentType = ruleNodeComponent.type; |
|
|
|
var model = vm.ruleNodeTypesModel[componentType].model; |
|
|
|
var node = { |
|
|
|
id: model.nodes.length, |
|
|
|
component: ruleNodeComponent, |
|
|
|
name: '', |
|
|
|
nodeClass: vm.types.ruleNodeType[componentType].nodeClass, |
|
|
|
icon: vm.types.ruleNodeType[componentType].icon, |
|
|
|
x: 30, |
|
|
|
y: 10+50*model.nodes.length, |
|
|
|
connectors: [] |
|
|
|
}; |
|
|
|
if (ruleNodeComponent.configurationDescriptor.nodeDefinition.inEnabled) { |
|
|
|
node.connectors.push( |
|
|
|
{ |
|
|
|
type: flowchartConstants.leftConnectorType, |
|
|
|
id: model.nodes.length * 2 |
|
|
|
} |
|
|
|
); |
|
|
|
for (var i=0;i<ruleNodeComponents.length;i++) { |
|
|
|
var ruleNodeComponent = ruleNodeComponents[i]; |
|
|
|
var componentType = ruleNodeComponent.type; |
|
|
|
var model = vm.ruleNodeTypesModel[componentType].model; |
|
|
|
var node = { |
|
|
|
id: model.nodes.length, |
|
|
|
component: ruleNodeComponent, |
|
|
|
name: '', |
|
|
|
nodeClass: vm.types.ruleNodeType[componentType].nodeClass, |
|
|
|
icon: vm.types.ruleNodeType[componentType].icon, |
|
|
|
x: 30, |
|
|
|
y: 10+50*model.nodes.length, |
|
|
|
connectors: [] |
|
|
|
}; |
|
|
|
if (ruleNodeComponent.configurationDescriptor.nodeDefinition.inEnabled) { |
|
|
|
node.connectors.push( |
|
|
|
{ |
|
|
|
type: flowchartConstants.leftConnectorType, |
|
|
|
id: model.nodes.length * 2 |
|
|
|
} |
|
|
|
if (ruleNodeComponent.configurationDescriptor.nodeDefinition.outEnabled) { |
|
|
|
node.connectors.push( |
|
|
|
{ |
|
|
|
type: flowchartConstants.rightConnectorType, |
|
|
|
id: model.nodes.length * 2 + 1 |
|
|
|
} |
|
|
|
); |
|
|
|
); |
|
|
|
} |
|
|
|
if (ruleNodeComponent.configurationDescriptor.nodeDefinition.outEnabled) { |
|
|
|
node.connectors.push( |
|
|
|
{ |
|
|
|
type: flowchartConstants.rightConnectorType, |
|
|
|
id: model.nodes.length * 2 + 1 |
|
|
|
} |
|
|
|
model.nodes.push(node); |
|
|
|
} |
|
|
|
vm.ruleChainLibraryLoaded = true; |
|
|
|
prepareRuleChain(); |
|
|
|
); |
|
|
|
} |
|
|
|
); |
|
|
|
model.nodes.push(node); |
|
|
|
} |
|
|
|
vm.ruleChainLibraryLoaded = true; |
|
|
|
prepareRuleChain(); |
|
|
|
} |
|
|
|
|
|
|
|
function prepareRuleChain() { |
|
|
|
@ -632,6 +646,14 @@ export function RuleChainController($stateParams, $scope, $compile, $q, $mdUtil, |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
function objectsSelected() { |
|
|
|
return vm.modelservice.nodes.getSelectedNodes().length > 0 || |
|
|
|
vm.modelservice.edges.getSelectedEdges().length > 0 |
|
|
|
} |
|
|
|
|
|
|
|
function deleteSelected() { |
|
|
|
vm.modelservice.deleteSelected(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/*@ngInject*/ |
|
|
|
|