thingsboard-aplcache

Details

diff --git a/application/src/main/java/org/thingsboard/server/service/component/AnnotationComponentDiscoveryService.java b/application/src/main/java/org/thingsboard/server/service/component/AnnotationComponentDiscoveryService.java
index 096b2bc..f3ceed2 100644
--- a/application/src/main/java/org/thingsboard/server/service/component/AnnotationComponentDiscoveryService.java
+++ b/application/src/main/java/org/thingsboard/server/service/component/AnnotationComponentDiscoveryService.java
@@ -176,6 +176,7 @@ public class AnnotationComponentDiscoveryService implements ComponentDiscoverySe
         nodeDefinition.setConfigDirective(nodeAnnotation.configDirective());
         nodeDefinition.setIcon(nodeAnnotation.icon());
         nodeDefinition.setIconUrl(nodeAnnotation.iconUrl());
+        nodeDefinition.setDocUrl(nodeAnnotation.docUrl());
         return nodeDefinition;
     }
 
diff --git a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/NodeDefinition.java b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/NodeDefinition.java
index aeaf3f1..7852715 100644
--- a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/NodeDefinition.java
+++ b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/NodeDefinition.java
@@ -33,5 +33,6 @@ public class NodeDefinition {
     String configDirective;
     String icon;
     String iconUrl;
+    String docUrl;
 
 }
diff --git a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/RuleNode.java b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/RuleNode.java
index cfb67d3..6cb3a10 100644
--- a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/RuleNode.java
+++ b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/RuleNode.java
@@ -53,6 +53,8 @@ public @interface RuleNode {
 
     String iconUrl() default "";
 
+    String docUrl() default "";
+
     boolean customRelations() default false;
 
 }
diff --git a/ui/src/app/help/help.directive.js b/ui/src/app/help/help.directive.js
index bc7e84f..9227d44 100644
--- a/ui/src/app/help/help.directive.js
+++ b/ui/src/app/help/help.directive.js
@@ -35,6 +35,10 @@ function Help($compile, $window, helpLinks) {
                 $event.stopPropagation();
             }
             var helpUrl = helpLinks.linksMap[scope.helpLinkId];
+            if (!helpUrl && scope.helpLinkId &&
+                    (scope.helpLinkId.startsWith('http://') || scope.helpLinkId.startsWith('https://'))) {
+                helpUrl = scope.helpLinkId;
+            }
             if (helpUrl) {
                 $window.open(helpUrl, '_blank');
             }
diff --git a/ui/src/app/help/help-links.constant.js b/ui/src/app/help/help-links.constant.js
index d5cae15..8d22eeb 100644
--- a/ui/src/app/help/help-links.constant.js
+++ b/ui/src/app/help/help-links.constant.js
@@ -99,13 +99,18 @@ export default angular.module('thingsboard.help', [])
                 widgetsConfigStatic: helpBaseUrl +  "/docs/user-guide/ui/dashboards#static",
             },
             getRuleNodeLink: function(ruleNode) {
-                var link = 'ruleEngine';
-                if (ruleNode && ruleNode.component && ruleNode.component.clazz) {
-                    if (ruleNodeClazzHelpLinkMap[ruleNode.component.clazz]) {
-                        link = ruleNodeClazzHelpLinkMap[ruleNode.component.clazz];
+                if (ruleNode && ruleNode.component) {
+                    if (ruleNode.component.configurationDescriptor &&
+                        ruleNode.component.configurationDescriptor.nodeDefinition &&
+                        ruleNode.component.configurationDescriptor.nodeDefinition.docUrl) {
+                        return ruleNode.component.configurationDescriptor.nodeDefinition.docUrl;
+                    } else if (ruleNode.component.clazz) {
+                        if (ruleNodeClazzHelpLinkMap[ruleNode.component.clazz]) {
+                            return ruleNodeClazzHelpLinkMap[ruleNode.component.clazz];
+                        }
                     }
                 }
-                return link;
+                return 'ruleEngine';
             }
         }
     ).name;
diff --git a/ui/src/scss/main.scss b/ui/src/scss/main.scss
index bbb4931..8fed892 100644
--- a/ui/src/scss/main.scss
+++ b/ui/src/scss/main.scss
@@ -283,13 +283,6 @@ div {
   }
 }
 
-md-input-container {
-  .tk-hint {
-    padding-top: 40px;
-  }
-}
-
-
 .md-caption {
   &.tb-required:after {
     content: ' *';