Browse Source

Rule Chain UI improvements.

pull/804/head
Igor Kulikov 8 years ago
parent
commit
606d21ab79
  1. 2
      ui/src/app/common/types.constant.js
  2. 2
      ui/src/app/locale/locale.constant.js
  3. 45
      ui/src/app/rulechain/rulechain.controller.js
  4. 8
      ui/src/app/rulechain/rulechain.scss

2
ui/src/app/common/types.constant.js

@ -560,6 +560,8 @@ export default angular.module('thingsboard.types', [])
},
INPUT: {
value: "INPUT",
name: "rulenode.type-input",
details: "rulenode.type-input-details",
nodeClass: "tb-input-type",
icon: "input",
special: true

2
ui/src/app/locale/locale.constant.js

@ -1268,6 +1268,8 @@ export default angular.module('thingsboard.locale', [])
"type-external-details": "Interacts with external system",
"type-rule-chain": "Rule Chain",
"type-rule-chain-details": "Forwards incoming messages to specified Rule Chain",
"type-input": "Input",
"type-input-details": "Logical input of Rule Chain, forwards incoming messages to next related Rule Node",
"directive-is-not-loaded": "Defined configuration directive '{{directiveName}}' is not available.",
"ui-resources-load-error": "Failed to load configuration ui resources.",
"invalid-target-rulechain": "Unable to resolve target rule chain!",

45
ui/src/app/rulechain/rulechain.controller.js

@ -448,7 +448,7 @@ export function RuleChainController($state, $scope, $compile, $q, $mdUtil, $time
vm.nodeLibCallbacks = {
nodeCallbacks: {
'mouseEnter': function (event, node) {
displayNodeDescriptionTooltip(event, node);
displayLibNodeDescriptionTooltip(event, node);
},
'mouseLeave': function () {
destroyTooltips();
@ -462,8 +462,8 @@ export function RuleChainController($state, $scope, $compile, $q, $mdUtil, $time
vm.typeHeaderMouseEnter = function(event, typeId) {
var ruleNodeType = types.ruleNodeType[typeId];
displayTooltip(event,
'<div class="tb-rule-node-tooltip">' +
'<div id="tooltip-content" layout="column">' +
'<div class="tb-rule-node-tooltip tb-lib-tooltip">' +
'<div id="tb-node-content" layout="column">' +
'<div class="tb-node-title">' + $translate.instant(ruleNodeType.name) + '</div>' +
'<div class="tb-node-details">' + $translate.instant(ruleNodeType.details) + '</div>' +
'</div>' +
@ -486,9 +486,9 @@ export function RuleChainController($state, $scope, $compile, $q, $mdUtil, $time
});
}
function displayNodeDescriptionTooltip(event, node) {
function displayLibNodeDescriptionTooltip(event, node) {
displayTooltip(event,
'<div class="tb-rule-node-tooltip">' +
'<div class="tb-rule-node-tooltip tb-lib-tooltip">' +
'<div id="tb-node-content" layout="column">' +
'<div class="tb-node-title">' + node.component.name + '</div>' +
'<div class="tb-node-description">' + node.component.configurationDescriptor.nodeDefinition.description + '</div>' +
@ -498,6 +498,32 @@ export function RuleChainController($state, $scope, $compile, $q, $mdUtil, $time
);
}
function displayNodeDescriptionTooltip(event, node) {
if (!vm.errorTooltips[node.id]) {
var name, desc, details;
if (node.component.type == vm.types.ruleNodeType.INPUT.value) {
name = $translate.instant(vm.types.ruleNodeType.INPUT.name) + '';
desc = $translate.instant(vm.types.ruleNodeType.INPUT.details) + '';
} else {
name = node.name;
desc = $translate.instant(vm.types.ruleNodeType[node.component.type].name) + ' - ' + node.component.name;
if (node.additionalInfo) {
details = node.additionalInfo.description;
}
}
var tooltipContent = '<div class="tb-rule-node-tooltip">' +
'<div id="tb-node-content" layout="column">' +
'<div class="tb-node-title">' + name + '</div>' +
'<div class="tb-node-description">' + desc + '</div>';
if (details) {
tooltipContent += '<div class="tb-node-details">' + details + '</div>';
}
tooltipContent += '</div>' +
'</div>';
displayTooltip(event, tooltipContent);
}
}
function displayTooltip(event, content) {
destroyTooltips();
vm.tooltipTimeout = $timeout(() => {
@ -607,6 +633,15 @@ export function RuleChainController($state, $scope, $compile, $q, $mdUtil, $time
},
'nodeEdit': function (event, node) {
openNodeDetails(node);
},
'mouseEnter': function (event, node) {
displayNodeDescriptionTooltip(event, node);
},
'mouseLeave': function () {
destroyTooltips();
},
'mouseDown': function () {
destroyTooltips();
}
},
isValidEdge: function (source, destination) {

8
ui/src/app/rulechain/rulechain.scss

@ -146,6 +146,9 @@
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
svg {
display: block;
}
}
.tb-rule-node, #tb-rule-chain-context-menu .tb-context-menu-header {
@ -467,7 +470,10 @@
.tb-rule-node-tooltip {
font-size: 14px;
width: 300px;
max-width: 300px;
&.tb-lib-tooltip {
width: 300px;
}
}
.tb-rule-node-help {

Loading…
Cancel
Save