diff --git a/ui/src/app/rulechain/rulechain.controller.js b/ui/src/app/rulechain/rulechain.controller.js
index 31886b8a28..76d0fec0c5 100644
--- a/ui/src/app/rulechain/rulechain.controller.js
+++ b/ui/src/app/rulechain/rulechain.controller.js
@@ -16,6 +16,10 @@
import './rulechain.scss';
+import 'tooltipster/dist/css/tooltipster.bundle.min.css';
+import 'tooltipster/dist/js/tooltipster.bundle.min.js';
+import 'tooltipster/dist/css/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-shadow.min.css';
+
/* eslint-disable import/no-unresolved, import/default */
import addRuleNodeTemplate from './add-rulenode.tpl.html';
@@ -30,7 +34,7 @@ const aKeyCode = 65;
const escKeyCode = 27;
/*@ngInject*/
-export function RuleChainController($stateParams, $scope, $q, $mdUtil, $mdExpansionPanel, $document, $mdDialog, $filter, types, ruleChainService, Modelfactory, flowchartConstants, ruleChain, ruleChainMetaData) {
+export function RuleChainController($stateParams, $scope, $compile, $q, $mdUtil, $timeout, $mdExpansionPanel, $document, $mdDialog, $filter, types, ruleChainService, Modelfactory, flowchartConstants, ruleChain, ruleChainMetaData) {
var vm = this;
@@ -139,6 +143,82 @@ export function RuleChainController($stateParams, $scope, $q, $mdUtil, $mdExpans
vm.editingRuleNodeLink = angular.copy(edge);
};
+ vm.nodeLibCallbacks = {
+ nodeCallbacks: {
+ 'mouseEnter': function (event, node) {
+ displayNodeDescriptionTooltip(event, node);
+ },
+ 'mouseLeave': function () {
+ destroyTooltips();
+ }
+ }
+ };
+
+ vm.typeHeaderMouseEnter = function(event, typeId) {
+ displayTooltip(event,
+ '
'
+ );
+ };
+
+ vm.destroyTooltips = destroyTooltips;
+
+ function destroyTooltips() {
+ if (vm.tooltipTimeout) {
+ $timeout.cancel(vm.tooltipTimeout);
+ vm.tooltipTimeout = null;
+ }
+ var instances = angular.element.tooltipster.instances();
+ instances.forEach((instance) => {
+ instance.destroy();
+ });
+ }
+
+ function displayNodeDescriptionTooltip(event, node) {
+ displayTooltip(event,
+ ''
+ );
+ }
+
+ function displayTooltip(event, content) {
+ destroyTooltips();
+ vm.tooltipTimeout = $timeout(() => {
+ var element = angular.element(event.target);
+ element.tooltipster(
+ {
+ theme: 'tooltipster-shadow',
+ delay: 100,
+ trigger: 'custom',
+ triggerOpen: {
+ click: false,
+ tap: false
+ },
+ triggerClose: {
+ click: true,
+ tap: true,
+ scroll: true
+ },
+ side: 'right',
+ trackOrigin: true
+ }
+ );
+ var contentElement = angular.element(content);
+ $compile(contentElement)($scope);
+ var tooltip = element.tooltipster('instance');
+ tooltip.content(contentElement);
+ tooltip.open();
+ }, 500);
+ }
+
vm.editCallbacks = {
edgeDoubleClick: function (event, edge) {
var sourceNode = vm.modelservice.nodes.getNodeByConnectorId(edge.source);
diff --git a/ui/src/app/rulechain/rulechain.tpl.html b/ui/src/app/rulechain/rulechain.tpl.html
index 30f2caa91f..9f1141e887 100644
--- a/ui/src/app/rulechain/rulechain.tpl.html
+++ b/ui/src/app/rulechain/rulechain.tpl.html
@@ -23,12 +23,15 @@
-
+
{{vm.types.ruleNodeType[typeId].name}}
-
+
{{vm.types.ruleNodeType[typeId].name}}
@@ -36,6 +39,7 @@
diff --git a/ui/src/app/rulechain/rulenode.tpl.html b/ui/src/app/rulechain/rulenode.tpl.html
index f8e08e0d2c..5a521a8333 100644
--- a/ui/src/app/rulechain/rulenode.tpl.html
+++ b/ui/src/app/rulechain/rulenode.tpl.html
@@ -18,7 +18,10 @@
+ ng-dblclick="callbacks.doubleClick($event, node)"
+ ng-mouseover="callbacks.mouseOver($event, node)"
+ ng-mouseenter="callbacks.mouseEnter($event, node)"
+ ng-mouseleave="callbacks.mouseLeave($event, node)">
{{node.icon}}