diff --git a/ui/src/kapacitor/components/CodeData.js b/ui/src/kapacitor/components/CodeData.js
new file mode 100644
index 000000000..fe1935130
--- /dev/null
+++ b/ui/src/kapacitor/components/CodeData.js
@@ -0,0 +1,34 @@
+import React, {Component, PropTypes} from 'react'
+
+// needs to be React Component for click handler to work
+class CodeData extends Component {
+ constructor(props) {
+ super(props)
+ }
+
+ render() {
+ const {onClickTemplate, template} = this.props
+
+ return (
+
+ {template.label}
+
+ )
+ }
+}
+
+const {func, shape, string} = PropTypes
+
+CodeData.propTypes = {
+ onClickTemplate: func,
+ template: shape({
+ label: string,
+ text: string,
+ }),
+}
+
+export default CodeData
diff --git a/ui/src/kapacitor/components/RuleMessage.js b/ui/src/kapacitor/components/RuleMessage.js
index e207e1f59..5876d83c8 100644
--- a/ui/src/kapacitor/components/RuleMessage.js
+++ b/ui/src/kapacitor/components/RuleMessage.js
@@ -1,10 +1,10 @@
import React, {PropTypes} from 'react'
import classnames from 'classnames'
-import ReactTooltip from 'react-tooltip'
import RuleMessageAlertConfig from 'src/kapacitor/components/RuleMessageAlertConfig'
+import RuleMessageTemplates from 'src/kapacitor/components/RuleMessageTemplates'
-import {RULE_MESSAGE_TEMPLATES as templates, DEFAULT_ALERTS} from '../constants'
+import {RULE_MESSAGE_TEMPLATES, DEFAULT_ALERTS} from '../constants'
const {arrayOf, func, shape, string} = PropTypes
@@ -98,57 +98,15 @@ export const RuleMessage = React.createClass({
value={rule.message}
spellCheck={false}
/>
-
Templates:
- {Object.keys(templates).map(t => { - return ( -
- {label}
-
- )
- },
-})
-
export default RuleMessage
diff --git a/ui/src/kapacitor/components/RuleMessageTemplates.js b/ui/src/kapacitor/components/RuleMessageTemplates.js
new file mode 100644
index 000000000..915e1fe20
--- /dev/null
+++ b/ui/src/kapacitor/components/RuleMessageTemplates.js
@@ -0,0 +1,50 @@
+import React, {Component, PropTypes} from 'react'
+import ReactTooltip from 'react-tooltip'
+
+import CodeData from 'src/kapacitor/components/CodeData'
+
+// needs to be React Component for CodeData click handler to work
+class RuleMessageTemplates extends Component {
+ constructor(props) {
+ super(props)
+ }
+
+ render() {
+ const {templates, actions, rule} = this.props
+
+ return (
+ Templates:
+ {Object.keys(templates).map(t => { + return ( +