Merge remote-tracking branch 'origin/develop/2.0' into develop/2.0

# Conflicts:
#	rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mail/TbSendEmailNode.java
This commit is contained in:
vparomskiy 2018-05-21 16:32:27 +03:00
commit 53f84b625b
11 changed files with 87 additions and 102 deletions

View File

@ -39,9 +39,9 @@ import org.thingsboard.server.common.msg.TbMsg;
nodeDetails = nodeDetails =
"Details - JS function that creates JSON object based on incoming message. This object will be added into Alarm.details field.\n" + "Details - JS function that creates JSON object based on incoming message. This object will be added into Alarm.details field.\n" +
"Node output:\n" + "Node output:\n" +
"If alarm was not cleared, original message is returned. Otherwise new Message returned with type 'ALARM', Alarm object in 'msg' property and 'matadata' will contains 'isClearedAlarm' property " + "If alarm was not cleared, original message is returned. Otherwise new Message returned with type 'ALARM', Alarm object in 'msg' property and 'matadata' will contains 'isClearedAlarm' property. " +
"Message payload can be accessed via <code>msg</code> property. For example <code>'temperature = ' + msg.temperature ;</code>" + "Message payload can be accessed via <code>msg</code> property. For example <code>'temperature = ' + msg.temperature ;</code>. " +
"Message metadata can be accessed via <code>metadata</code> property. For example <code>'name = ' + metadata.customerName;</code>", "Message metadata can be accessed via <code>metadata</code> property. For example <code>'name = ' + metadata.customerName;</code>.",
uiResources = {"static/rulenode/rulenode-core-config.js"}, uiResources = {"static/rulenode/rulenode-core-config.js"},
configDirective = "tbActionNodeClearAlarmConfig", configDirective = "tbActionNodeClearAlarmConfig",
icon = "notifications_off" icon = "notifications_off"

View File

@ -41,9 +41,9 @@ import org.thingsboard.server.common.msg.TbMsg;
nodeDetails = nodeDetails =
"Details - JS function that creates JSON object based on incoming message. This object will be added into Alarm.details field.\n" + "Details - JS function that creates JSON object based on incoming message. This object will be added into Alarm.details field.\n" +
"Node output:\n" + "Node output:\n" +
"If alarm was not created, original message is returned. Otherwise new Message returned with type 'ALARM', Alarm object in 'msg' property and 'matadata' will contains one of those properties 'isNewAlarm/isExistingAlarm' " + "If alarm was not created, original message is returned. Otherwise new Message returned with type 'ALARM', Alarm object in 'msg' property and 'matadata' will contains one of those properties 'isNewAlarm/isExistingAlarm'. " +
"Message payload can be accessed via <code>msg</code> property. For example <code>'temperature = ' + msg.temperature ;</code>" + "Message payload can be accessed via <code>msg</code> property. For example <code>'temperature = ' + msg.temperature ;</code>. " +
"Message metadata can be accessed via <code>metadata</code> property. For example <code>'name = ' + metadata.customerName;</code>", "Message metadata can be accessed via <code>metadata</code> property. For example <code>'name = ' + metadata.customerName;</code>.",
uiResources = {"static/rulenode/rulenode-core-config.js"}, uiResources = {"static/rulenode/rulenode-core-config.js"},
configDirective = "tbActionNodeCreateAlarmConfig", configDirective = "tbActionNodeCreateAlarmConfig",
icon = "notifications_active" icon = "notifications_active"

View File

@ -31,8 +31,8 @@ import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS;
configClazz = TbLogNodeConfiguration.class, configClazz = TbLogNodeConfiguration.class,
nodeDescription = "Log incoming messages using JS script for transformation Message into String", nodeDescription = "Log incoming messages using JS script for transformation Message into String",
nodeDetails = "Transform incoming Message with configured JS function to String and log final value into Thingsboard log file. " + nodeDetails = "Transform incoming Message with configured JS function to String and log final value into Thingsboard log file. " +
"Message payload can be accessed via <code>msg</code> property. For example <code>'temperature = ' + msg.temperature ;</code>" + "Message payload can be accessed via <code>msg</code> property. For example <code>'temperature = ' + msg.temperature ;</code>. " +
"Message metadata can be accessed via <code>metadata</code> property. For example <code>'name = ' + metadata.customerName;</code>", "Message metadata can be accessed via <code>metadata</code> property. For example <code>'name = ' + metadata.customerName;</code>.",
uiResources = {"static/rulenode/rulenode-core-config.js"}, uiResources = {"static/rulenode/rulenode-core-config.js"},
configDirective = "tbActionNodeLogConfig", configDirective = "tbActionNodeLogConfig",
icon = "menu" icon = "menu"

View File

@ -38,7 +38,7 @@ import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS;
name = "generator", name = "generator",
configClazz = TbMsgGeneratorNodeConfiguration.class, configClazz = TbMsgGeneratorNodeConfiguration.class,
nodeDescription = "Periodically generates messages", nodeDescription = "Periodically generates messages",
nodeDetails = "Generates messages with configurable period. Javascript function used fore message generation.", nodeDetails = "Generates messages with configurable period. Javascript function used for message generation.",
inEnabled = false, inEnabled = false,
uiResources = {"static/rulenode/rulenode-core-config.js", "static/rulenode/rulenode-core-config.css"}, uiResources = {"static/rulenode/rulenode-core-config.js", "static/rulenode/rulenode-core-config.css"},
configDirective = "tbActionNodeGeneratorConfig", configDirective = "tbActionNodeGeneratorConfig",

View File

@ -35,9 +35,9 @@ import static org.thingsboard.rule.engine.mail.TbSendEmailNode.SEND_EMAIL_TYPE;
type = ComponentType.TRANSFORMATION, type = ComponentType.TRANSFORMATION,
name = "to email", name = "to email",
configClazz = TbMsgToEmailNodeConfiguration.class, configClazz = TbMsgToEmailNodeConfiguration.class,
nodeDescription = "Change Message Originator To Tenant/Customer/Related Entity", nodeDescription = "Transforms message to email message",
nodeDetails = "Related Entity found using configured relation direction and Relation Type. " + nodeDetails = "Transforms message to email message by populating email fields using values derived from message metadata. " +
"If multiple Related Entities are found, only first Entity is used as new Originator, other entities are discarded. ", "Set 'SEND_EMAIL' output message type.",
uiResources = {"static/rulenode/rulenode-core-config.js"}, uiResources = {"static/rulenode/rulenode-core-config.js"},
configDirective = "tbTransformationNodeToEmailConfig", configDirective = "tbTransformationNodeToEmailConfig",
icon = "email" icon = "email"

View File

@ -37,7 +37,7 @@ import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS;
type = ComponentType.EXTERNAL, type = ComponentType.EXTERNAL,
name = "send email", name = "send email",
configClazz = TbSendEmailNodeConfiguration.class, configClazz = TbSendEmailNodeConfiguration.class,
nodeDescription = "Sends message using configured Mail Server.", nodeDescription = "Sends email message via SMTP server.",
nodeDetails = "Expects messages with <b>SEND_EMAIL</b> type. Node works only with messages that " + nodeDetails = "Expects messages with <b>SEND_EMAIL</b> type. Node works only with messages that " +
" where created using <code>to Email</code> transformation Node, please connect this Node " + " where created using <code>to Email</code> transformation Node, please connect this Node " +
"with <code>to Email</code> Node using <code>Successful</code> chain.", "with <code>to Email</code> Node using <code>Successful</code> chain.",

View File

@ -13,36 +13,36 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
var pluginClazzHelpLinkMap = {
'org.thingsboard.server.extensions.core.plugin.messaging.DeviceMessagingPlugin': 'pluginDeviceMessaging',
'org.thingsboard.server.extensions.core.plugin.telemetry.TelemetryStoragePlugin': 'pluginTelemetryStorage',
'org.thingsboard.server.extensions.core.plugin.rpc.RpcPlugin': 'pluginRpcPlugin',
'org.thingsboard.server.extensions.core.plugin.mail.MailPlugin': 'pluginMailPlugin',
'org.thingsboard.server.extensions.rest.plugin.RestApiCallPlugin': 'pluginRestApiCallPlugin',
'org.thingsboard.server.extensions.core.plugin.time.TimePlugin': 'pluginTimePlugin',
'org.thingsboard.server.extensions.kafka.plugin.KafkaPlugin': 'pluginKafkaPlugin',
'org.thingsboard.server.extensions.rabbitmq.plugin.RabbitMqPlugin': 'pluginRabbitMqPlugin'
}; var ruleNodeClazzHelpLinkMap = {
'org.thingsboard.rule.engine.filter.TbJsFilterNode': 'ruleNodeJsFilter',
var filterClazzHelpLinkMap = { 'org.thingsboard.rule.engine.filter.TbJsSwitchNode': 'ruleNodeJsSwitch',
'org.thingsboard.server.extensions.core.filter.MsgTypeFilter': 'filterMsgType', 'org.thingsboard.rule.engine.filter.TbMsgTypeFilterNode': 'ruleNodeMessageTypeFilter',
'org.thingsboard.server.extensions.core.filter.DeviceTelemetryFilter': 'filterDeviceTelemetry', 'org.thingsboard.rule.engine.filter.TbMsgTypeSwitchNode': 'ruleNodeMessageTypeSwitch',
'org.thingsboard.server.extensions.core.filter.MethodNameFilter': 'filterMethodName', 'org.thingsboard.rule.engine.metadata.TbGetAttributesNode': 'ruleNodeOriginatorAttributes',
'org.thingsboard.server.extensions.core.filter.DeviceAttributesFilter': 'filterDeviceAttributes' 'org.thingsboard.rule.engine.metadata.TbGetCustomerAttributeNode': 'ruleNodeCustomerAttributes',
}; 'org.thingsboard.rule.engine.metadata.TbGetDeviceAttrNode': 'ruleNodeDeviceAttributes',
'org.thingsboard.rule.engine.metadata.TbGetRelatedAttributeNode': 'ruleNodeRelatedAttributes',
var processorClazzHelpLinkMap = { 'org.thingsboard.rule.engine.metadata.TbGetTenantAttributeNode': 'ruleNodeTenantAttributes',
'org.thingsboard.server.extensions.core.processor.AlarmDeduplicationProcessor': 'processorAlarmDeduplication' 'org.thingsboard.rule.engine.transform.TbChangeOriginatorNode': 'ruleNodeChangeOriginator',
}; 'org.thingsboard.rule.engine.transform.TbTransformMsgNode': 'ruleNodeTransformMsg',
'org.thingsboard.rule.engine.mail.TbMsgToEmailNode': 'ruleNodeMsgToEmail',
var pluginActionsClazzHelpLinkMap = { 'org.thingsboard.rule.engine.action.TbClearAlarmNode': 'ruleNodeClearAlarm',
'org.thingsboard.server.extensions.core.action.rpc.RpcPluginAction': 'pluginActionRpc', 'org.thingsboard.rule.engine.action.TbCreateAlarmNode': 'ruleNodeCrateAlarm',
'org.thingsboard.server.extensions.core.action.mail.SendMailAction': 'pluginActionSendMail', 'org.thingsboard.rule.engine.debug.TbMsgGeneratorNode': 'ruleNodeMsgGenerator',
'org.thingsboard.server.extensions.core.action.telemetry.TelemetryPluginAction': 'pluginActionTelemetry', 'org.thingsboard.rule.engine.action.TbLogNode': 'ruleNodeLog',
'org.thingsboard.server.extensions.kafka.action.KafkaPluginAction': 'pluginActionKafka', 'org.thingsboard.rule.engine.rpc.TbSendRPCReplyNode': 'ruleNodeRpcCallReply',
'org.thingsboard.server.extensions.rabbitmq.action.RabbitMqPluginAction': 'pluginActionRabbitMq', 'org.thingsboard.rule.engine.rpc.TbSendRPCRequestNode': 'ruleNodeRpcCallRequest',
'org.thingsboard.server.extensions.rest.action.RestApiCallPluginAction': 'pluginActionRestApiCall' 'org.thingsboard.rule.engine.telemetry.TbMsgAttributesNode': 'ruleNodeSaveAttributes',
'org.thingsboard.rule.engine.telemetry.TbMsgTimeseriesNode': 'ruleNodeSaveTimeseries',
'tb.internal.RuleChain': 'ruleNodeRuleChain',
'org.thingsboard.rule.engine.aws.sns.TbSnsNode': 'ruleNodeAwsSns',
'org.thingsboard.rule.engine.aws.sqs.TbSqsNode': 'ruleNodeAwsSqs',
'org.thingsboard.rule.engine.kafka.TbKafkaNode': 'ruleNodeKafka',
'org.thingsboard.rule.engine.mqtt.TbMqttNode': 'ruleNodeMqtt',
'org.thingsboard.rule.engine.rabbitmq.TbRabbitMqNode': 'ruleNodeRabbitMq',
'org.thingsboard.rule.engine.rest.TbRestApiCallNode': 'ruleNodeRestApiCall',
'org.thingsboard.rule.engine.mail.TbSendEmailNode': 'ruleNodeSendEmail'
}; };
var helpBaseUrl = "https://thingsboard.io"; var helpBaseUrl = "https://thingsboard.io";
@ -52,30 +52,36 @@ export default angular.module('thingsboard.help', [])
{ {
linksMap: { linksMap: {
outgoingMailSettings: helpBaseUrl + "/docs/user-guide/ui/mail-settings", outgoingMailSettings: helpBaseUrl + "/docs/user-guide/ui/mail-settings",
plugins: helpBaseUrl + "/docs/user-guide/rule-engine/#plugins", ruleEngine: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/overview/",
pluginDeviceMessaging: helpBaseUrl + "/docs/reference/plugins/messaging/", ruleNodeJsFilter: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/filter-nodes/#script-filter-node",
pluginTelemetryStorage: helpBaseUrl + "/docs/reference/plugins/telemetry/", ruleNodeJsSwitch: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/filter-nodes/#switch-node",
pluginRpcPlugin: helpBaseUrl + "/docs/reference/plugins/rpc/", ruleNodeMessageTypeFilter: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/filter-nodes/#message-type-filter-node",
pluginMailPlugin: helpBaseUrl + "/docs/reference/plugins/mail/", ruleNodeMessageTypeSwitch: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/filter-nodes/#message-type-switch-node",
pluginRestApiCallPlugin: helpBaseUrl + "/docs/reference/plugins/rest/", ruleNodeOriginatorAttributes: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/enrichment-nodes/#originator-attributes",
pluginTimePlugin: helpBaseUrl + "/docs/reference/plugins/time/", ruleNodeCustomerAttributes: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/enrichment-nodes/#customer-attributes",
pluginKafkaPlugin: helpBaseUrl + "/docs/reference/plugins/kafka/", ruleNodeDeviceAttributes: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/enrichment-nodes/#device-attributes",
pluginRabbitMqPlugin: helpBaseUrl + "/docs/reference/plugins/rabbitmq/", ruleNodeRelatedAttributes: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/enrichment-nodes/#related-attributes",
rules: helpBaseUrl + "/docs/user-guide/rule-engine/#rules", ruleNodeTenantAttributes: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/enrichment-nodes/#tenant-attributes",
filters: helpBaseUrl + "/docs/user-guide/rule-engine/#filters", ruleNodeChangeOriginator: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/transformation-nodes/#change-originator",
filterMsgType: helpBaseUrl + "/docs/reference/filters/message-type-filter", ruleNodeTransformMsg: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/transformation-nodes/#script-transformation-node",
filterDeviceTelemetry: helpBaseUrl + "/docs/reference/filters/device-telemetry-filter", ruleNodeMsgToEmail: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/transformation-nodes/#to-email-node",
filterMethodName: helpBaseUrl + "/docs/reference/filters/method-name-filter/", ruleNodeClearAlarm: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/action-nodes/#clear-alarm-node",
filterDeviceAttributes: helpBaseUrl + "/docs/reference/filters/device-attributes-filter", ruleNodeCrateAlarm: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/action-nodes/#create-alarm-node",
processors: helpBaseUrl + "/docs/user-guide/rule-engine/#processors", ruleNodeMsgGenerator: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/action-nodes/#generator-node",
processorAlarmDeduplication: "http://thingsboard.io/docs/#q=processorAlarmDeduplication", ruleNodeLog: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/action-nodes/#log-node",
pluginActions: helpBaseUrl + "/docs/user-guide/rule-engine/#actions", ruleNodeRpcCallReply: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/action-nodes/#rpc-call-reply-node",
pluginActionRpc: helpBaseUrl + "/docs/reference/actions/rpc-plugin-action", ruleNodeRpcCallRequest: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/action-nodes/#rpc-call-request-node",
pluginActionSendMail: helpBaseUrl + "/docs/reference/actions/send-mail-action", ruleNodeSaveAttributes: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/action-nodes/#save-attributes-node",
pluginActionTelemetry: helpBaseUrl + "/docs/reference/actions/telemetry-plugin-action/", ruleNodeSaveTimeseries: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/action-nodes/#save-timeseries-node",
pluginActionKafka: helpBaseUrl + "/docs/reference/actions/kafka-plugin-action", ruleNodeRuleChain: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/rule-chains/",
pluginActionRabbitMq: helpBaseUrl + "/docs/reference/actions/rabbitmq-plugin-action", ruleNodeAwsSns: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/external-nodes/#aws-sns-node",
pluginActionRestApiCall: helpBaseUrl + "/docs/reference/actions/rest-api-call-plugin-action", ruleNodeAwsSqs: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/external-nodes/#aws-sqs-node",
ruleNodeKafka: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/external-nodes/#kafka-node",
ruleNodeMqtt: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/external-nodes/#mqtt-node",
ruleNodeRabbitMq: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/external-nodes/#rabbitmq-node",
ruleNodeRestApiCall: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/external-nodes/#rest-api-call-node",
ruleNodeSendEmail: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/external-nodes/#send-email-node",
rulechains: helpBaseUrl + "/docs/user-guide/rule-engine-2-0/rule-chains/",
tenants: helpBaseUrl + "/docs/user-guide/ui/tenants", tenants: helpBaseUrl + "/docs/user-guide/ui/tenants",
customers: helpBaseUrl + "/docs/user-guide/ui/customers", customers: helpBaseUrl + "/docs/user-guide/ui/customers",
assets: helpBaseUrl + "/docs/user-guide/ui/assets", assets: helpBaseUrl + "/docs/user-guide/ui/assets",
@ -90,38 +96,11 @@ export default angular.module('thingsboard.help', [])
widgetsConfigAlarm: helpBaseUrl + "/docs/user-guide/ui/dashboards#alarm", widgetsConfigAlarm: helpBaseUrl + "/docs/user-guide/ui/dashboards#alarm",
widgetsConfigStatic: helpBaseUrl + "/docs/user-guide/ui/dashboards#static", widgetsConfigStatic: helpBaseUrl + "/docs/user-guide/ui/dashboards#static",
}, },
getPluginLink: function(plugin) { getRuleNodeLink: function(ruleNode) {
var link = 'plugins'; var link = 'ruleEngine';
if (plugin && plugin.clazz) { if (ruleNode && ruleNode.component && ruleNode.component.clazz) {
if (pluginClazzHelpLinkMap[plugin.clazz]) { if (ruleNodeClazzHelpLinkMap[ruleNode.component.clazz]) {
link = pluginClazzHelpLinkMap[plugin.clazz]; link = ruleNodeClazzHelpLinkMap[ruleNode.component.clazz];
}
}
return link;
},
getFilterLink: function(filter) {
var link = 'filters';
if (filter && filter.clazz) {
if (filterClazzHelpLinkMap[filter.clazz]) {
link = filterClazzHelpLinkMap[filter.clazz];
}
}
return link;
},
getProcessorLink: function(processor) {
var link = 'processors';
if (processor && processor.clazz) {
if (processorClazzHelpLinkMap[processor.clazz]) {
link = processorClazzHelpLinkMap[processor.clazz];
}
}
return link;
},
getPluginActionLink: function(pluginAction) {
var link = 'pluginActions';
if (pluginAction && pluginAction.clazz) {
if (pluginActionsClazzHelpLinkMap[pluginAction.clazz]) {
link = pluginActionsClazzHelpLinkMap[pluginAction.clazz];
} }
} }
return link; return link;

View File

@ -15,7 +15,7 @@
limitations under the License. limitations under the License.
--> -->
<md-dialog aria-label="{{ 'rulenode.add-link' | translate }}" tb-help="'rulechains'" help-container-id="help-container"> <md-dialog aria-label="{{ 'rulenode.add-link' | translate }}" tb-help="'ruleEngine'" help-container-id="help-container">
<form name="theForm" ng-submit="vm.add()"> <form name="theForm" ng-submit="vm.add()">
<md-toolbar> <md-toolbar>
<div class="md-toolbar-tools"> <div class="md-toolbar-tools">

View File

@ -15,7 +15,7 @@
limitations under the License. limitations under the License.
--> -->
<md-dialog aria-label="{{ 'rulenode.add' | translate }}" tb-help="'rulechains'" help-container-id="help-container" style="min-width: 650px;"> <md-dialog aria-label="{{ 'rulenode.add' | translate }}" tb-help="vm.helpLinks.getRuleNodeLink(vm.ruleNode)" help-container-id="help-container" style="min-width: 650px;">
<form name="theForm" ng-submit="vm.add()"> <form name="theForm" ng-submit="vm.add()">
<md-toolbar> <md-toolbar>
<div class="md-toolbar-tools"> <div class="md-toolbar-tools">

View File

@ -30,7 +30,7 @@ import addRuleNodeLinkTemplate from './add-link.tpl.html';
/*@ngInject*/ /*@ngInject*/
export function RuleChainController($state, $scope, $compile, $q, $mdUtil, $timeout, $mdExpansionPanel, $window, $document, $mdDialog, export function RuleChainController($state, $scope, $compile, $q, $mdUtil, $timeout, $mdExpansionPanel, $window, $document, $mdDialog,
$filter, $translate, hotkeys, types, ruleChainService, itembuffer, Modelfactory, flowchartConstants, $filter, $translate, hotkeys, types, ruleChainService, itembuffer, Modelfactory, flowchartConstants,
ruleChain, ruleChainMetaData, ruleNodeComponents) { ruleChain, ruleChainMetaData, ruleNodeComponents, helpLinks) {
var vm = this; var vm = this;
@ -113,6 +113,8 @@ export function RuleChainController($state, $scope, $compile, $q, $mdUtil, $time
vm.openRuleChainContextMenu = openRuleChainContextMenu; vm.openRuleChainContextMenu = openRuleChainContextMenu;
vm.helpLinkIdForRuleNodeType = helpLinkIdForRuleNodeType;
initHotKeys(); initHotKeys();
function openRuleChainContextMenu($event, $mdOpenMousepointMenu) { function openRuleChainContextMenu($event, $mdOpenMousepointMenu) {
@ -473,6 +475,10 @@ export function RuleChainController($state, $scope, $compile, $q, $mdUtil, $time
vm.destroyTooltips = destroyTooltips; vm.destroyTooltips = destroyTooltips;
function helpLinkIdForRuleNodeType() {
return helpLinks.getRuleNodeLink(vm.editingRuleNode);
}
function destroyTooltips() { function destroyTooltips() {
if (vm.tooltipTimeout) { if (vm.tooltipTimeout) {
$timeout.cancel(vm.tooltipTimeout); $timeout.cancel(vm.tooltipTimeout);

View File

@ -202,7 +202,7 @@
on-toggle-details-edit-mode="vm.onRevertRuleNodeLinkEdit(vm.ruleNodeLinkForm)" on-toggle-details-edit-mode="vm.onRevertRuleNodeLinkEdit(vm.ruleNodeLinkForm)"
on-apply-details="vm.saveRuleNodeLink(vm.ruleNodeLinkForm)" on-apply-details="vm.saveRuleNodeLink(vm.ruleNodeLinkForm)"
the-form="vm.ruleNodeLinkForm"> the-form="vm.ruleNodeLinkForm">
<details-buttons tb-help="vm.helpLinkIdForRuleNodeLink()" help-container-id="link-help-container"> <details-buttons tb-help="'ruleEngine'" help-container-id="link-help-container">
<div id="link-help-container"></div> <div id="link-help-container"></div>
</details-buttons> </details-buttons>
<form name="vm.ruleNodeLinkForm" ng-if="vm.isEditingRuleNodeLink"> <form name="vm.ruleNodeLinkForm" ng-if="vm.isEditingRuleNodeLink">