nutella_framework 0.4.23 → 0.4.24

Sign up to get free protection for your applications and to get access to all the features.
Files changed (148) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/framework_components/monitoring-bot/monitoring-bot.rb +11 -2
  4. data/framework_components/monitoring-interface/.gitignore +2 -0
  5. data/framework_components/monitoring-interface/README.md +1 -0
  6. data/framework_components/monitoring-interface/bower.json +29 -0
  7. data/framework_components/monitoring-interface/bower_components/bower-mqttws/.bower.json +23 -0
  8. data/framework_components/monitoring-interface/bower_components/bower-mqttws/bower.json +14 -0
  9. data/framework_components/monitoring-interface/bower_components/bower-mqttws/mqttws31.js +2081 -0
  10. data/framework_components/monitoring-interface/bower_components/bower-mqttws/readme.md +4 -0
  11. data/framework_components/monitoring-interface/bower_components/nutella_lib/.bower.json +37 -0
  12. data/framework_components/monitoring-interface/bower_components/nutella_lib/LICENSE +21 -0
  13. data/framework_components/monitoring-interface/bower_components/nutella_lib/README.md +15 -0
  14. data/framework_components/monitoring-interface/bower_components/nutella_lib/bower.json +28 -0
  15. data/framework_components/monitoring-interface/bower_components/nutella_lib/examples/browser/mqtt_client_hello_world.html +23 -0
  16. data/framework_components/monitoring-interface/bower_components/nutella_lib/examples/browser/nutella_hello_world.html +52 -0
  17. data/framework_components/monitoring-interface/bower_components/nutella_lib/examples/node/mqtt_client_hello_world.js +14 -0
  18. data/framework_components/monitoring-interface/bower_components/nutella_lib/examples/node/nutella_hello_world.js +38 -0
  19. data/framework_components/monitoring-interface/bower_components/nutella_lib/nutella_lib.js +789 -0
  20. data/framework_components/monitoring-interface/bower_components/nutella_lib/package.json +30 -0
  21. data/framework_components/monitoring-interface/css/Monitoring Interface.html +215 -0
  22. data/framework_components/monitoring-interface/css/Monitoring Interface_files/animations.js +27 -0
  23. data/framework_components/monitoring-interface/css/Monitoring Interface_files/application-view-controller.js +232 -0
  24. data/framework_components/monitoring-interface/css/Monitoring Interface_files/applications-model.js +61 -0
  25. data/framework_components/monitoring-interface/css/Monitoring Interface_files/bootstrap.min.js +7 -0
  26. data/framework_components/monitoring-interface/css/Monitoring Interface_files/cursor.css +7 -0
  27. data/framework_components/monitoring-interface/css/Monitoring Interface_files/d3.v3.min.js +5 -0
  28. data/framework_components/monitoring-interface/css/Monitoring Interface_files/graphics.js +156 -0
  29. data/framework_components/monitoring-interface/css/Monitoring Interface_files/grid-layout.js +103 -0
  30. data/framework_components/monitoring-interface/css/Monitoring Interface_files/highlight.min.js +2 -0
  31. data/framework_components/monitoring-interface/css/Monitoring Interface_files/instance-view-controller.js +104 -0
  32. data/framework_components/monitoring-interface/css/Monitoring Interface_files/jquery-1.10.0.min.js +6 -0
  33. data/framework_components/monitoring-interface/css/Monitoring Interface_files/notification-center.js +63 -0
  34. data/framework_components/monitoring-interface/css/Monitoring Interface_files/notifications.js +14 -0
  35. data/framework_components/monitoring-interface/css/Monitoring Interface_files/page.css +33 -0
  36. data/framework_components/monitoring-interface/css/Monitoring Interface_files/radial-layout.js +175 -0
  37. data/framework_components/monitoring-interface/css/Monitoring Interface_files/tab-table.js +8 -0
  38. data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-application.css +0 -0
  39. data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-application.js +320 -0
  40. data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-connection-view.css +10 -0
  41. data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-connection-view.js +426 -0
  42. data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-element.js +205 -0
  43. data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-notification.js +94 -0
  44. data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-tab.js +229 -0
  45. data/framework_components/monitoring-interface/css/Monitoring Interface_files/underscore-min.js +5 -0
  46. data/framework_components/monitoring-interface/css/Monitoring Interface_files/view-controller.js +68 -0
  47. data/framework_components/monitoring-interface/css/Monitoring Interface_files/window-view-controller.js +169 -0
  48. data/framework_components/monitoring-interface/css/alerts.css +3 -0
  49. data/framework_components/monitoring-interface/css/bootstrap.min.css +5 -0
  50. data/framework_components/monitoring-interface/css/cursor.css +7 -0
  51. data/framework_components/monitoring-interface/css/highlight.default.min.css +1 -0
  52. data/framework_components/monitoring-interface/css/page.css +41 -0
  53. data/framework_components/monitoring-interface/css/ui-application.css +0 -0
  54. data/framework_components/monitoring-interface/css/ui-connection-view.css +10 -0
  55. data/framework_components/monitoring-interface/css/ui-legend-view.css +7 -0
  56. data/framework_components/monitoring-interface/data/alert.json +8 -0
  57. data/framework_components/monitoring-interface/data/data.json +2118 -0
  58. data/framework_components/monitoring-interface/data/data2.json +814 -0
  59. data/framework_components/monitoring-interface/data/data3.json +823 -0
  60. data/framework_components/monitoring-interface/data/data4.json +848 -0
  61. data/framework_components/monitoring-interface/data/message.json +999 -0
  62. data/framework_components/monitoring-interface/gulpfile.js +29 -0
  63. data/framework_components/monitoring-interface/img/arrow_white.svg +120 -0
  64. data/framework_components/monitoring-interface/img/arrow_white_right.svg +104 -0
  65. data/framework_components/monitoring-interface/img/back.svg +164 -0
  66. data/framework_components/monitoring-interface/img/cross_red_border_white.svg +143 -0
  67. data/framework_components/monitoring-interface/img/cross_red_border_white_mouseover.svg +143 -0
  68. data/framework_components/monitoring-interface/img/email.svg +89 -0
  69. data/framework_components/monitoring-interface/img/email_highlighted.svg +89 -0
  70. data/framework_components/monitoring-interface/index.html +144 -0
  71. data/framework_components/monitoring-interface/js/d3/layout/grid-layout.js +103 -0
  72. data/framework_components/monitoring-interface/js/d3/layout/radial-layout.js +184 -0
  73. data/framework_components/monitoring-interface/js/d3/plugin/graphics.js +156 -0
  74. data/framework_components/monitoring-interface/js/d3/plugin/tab-table.js +8 -0
  75. data/framework_components/monitoring-interface/js/d3/ui/animations.js +27 -0
  76. data/framework_components/monitoring-interface/js/d3/ui/ui-application.js +471 -0
  77. data/framework_components/monitoring-interface/js/d3/ui/ui-connection-view.js +847 -0
  78. data/framework_components/monitoring-interface/js/d3/ui/ui-element.js +245 -0
  79. data/framework_components/monitoring-interface/js/d3/ui/ui-legend.js +174 -0
  80. data/framework_components/monitoring-interface/js/d3/ui/ui-notification.js +90 -0
  81. data/framework_components/monitoring-interface/js/d3/ui/ui-tab.js +309 -0
  82. data/framework_components/monitoring-interface/js/lib/JSXTransformer-0.12.2.js +15199 -0
  83. data/framework_components/monitoring-interface/js/lib/bootstrap.min.js +7 -0
  84. data/framework_components/monitoring-interface/js/lib/d3.v3.min.js +5 -0
  85. data/framework_components/monitoring-interface/js/lib/highlight.min.js +2 -0
  86. data/framework_components/monitoring-interface/js/lib/jquery-1.10.0.min.js +6 -0
  87. data/framework_components/monitoring-interface/js/lib/nutella_lib.js +5121 -0
  88. data/framework_components/monitoring-interface/js/lib/react-with-addons-0.12.2.js +19822 -0
  89. data/framework_components/monitoring-interface/js/lib/underscore-min.js +5 -0
  90. data/framework_components/monitoring-interface/js/model/alerts-model.js +74 -0
  91. data/framework_components/monitoring-interface/js/model/applications-model.js +78 -0
  92. data/framework_components/monitoring-interface/js/model/messages-model.js +112 -0
  93. data/framework_components/monitoring-interface/js/notification/notification-center.js +63 -0
  94. data/framework_components/monitoring-interface/js/notification/notifications.js +21 -0
  95. data/framework_components/monitoring-interface/js/react/dist/ui-alerts.js +178 -0
  96. data/framework_components/monitoring-interface/js/react/dist/ui-message-send.js +389 -0
  97. data/framework_components/monitoring-interface/js/react/dist/ui-messages.js +103 -0
  98. data/framework_components/monitoring-interface/js/react/src/ui-alerts.js +178 -0
  99. data/framework_components/monitoring-interface/js/react/src/ui-message-send.js +389 -0
  100. data/framework_components/monitoring-interface/js/react/src/ui-messages.js +103 -0
  101. data/framework_components/monitoring-interface/js/view-controller/application-view-controller.js +256 -0
  102. data/framework_components/monitoring-interface/js/view-controller/instance-view-controller.js +112 -0
  103. data/framework_components/monitoring-interface/js/view-controller/view-controller.js +74 -0
  104. data/framework_components/monitoring-interface/js/view-controller/window-view-controller.js +169 -0
  105. data/framework_components/monitoring-interface/nutella.json +6 -0
  106. data/framework_components/order.json +1 -0
  107. data/framework_components/roomcast-bot/roomcast_bot.rb +139 -117
  108. data/framework_components/roomcast-channel-creator/dist/app.js +9 -7
  109. data/framework_components/roomcast-channel-creator/index.html +1 -1
  110. data/framework_components/roomcast-channel-creator/src/app/components/main.js +8 -6
  111. data/framework_components/roomcast-package-creator/dist/app.js +4 -4
  112. data/framework_components/roomcast-package-creator/index.html +1 -1
  113. data/framework_components/roomcast-package-creator/package.json +3 -3
  114. data/framework_components/roomcast-package-creator/src/app/components/ConfigurationsPanel.js +2 -2
  115. data/framework_components/roomcast-package-creator/src/app/components/PoolRow.js +1 -1
  116. data/framework_components/roomcast-teacher-controls/.gitignore +2 -0
  117. data/framework_components/roomcast-teacher-controls/README.md +9 -0
  118. data/framework_components/roomcast-teacher-controls/dist/app.js +38327 -0
  119. data/framework_components/roomcast-teacher-controls/dist/main.css +3052 -0
  120. data/framework_components/roomcast-teacher-controls/dist/nutella_lib.js +5121 -0
  121. data/framework_components/roomcast-teacher-controls/gulp/config.js +51 -0
  122. data/framework_components/roomcast-teacher-controls/gulp/tasks/browserify.js +77 -0
  123. data/framework_components/roomcast-teacher-controls/gulp/tasks/build.js +3 -0
  124. data/framework_components/roomcast-teacher-controls/gulp/tasks/css.js +7 -0
  125. data/framework_components/roomcast-teacher-controls/gulp/tasks/default.js +3 -0
  126. data/framework_components/roomcast-teacher-controls/gulp/tasks/fonts.js +7 -0
  127. data/framework_components/roomcast-teacher-controls/gulp/tasks/less.js +16 -0
  128. data/framework_components/roomcast-teacher-controls/gulp/tasks/mui-fonts.js +7 -0
  129. data/framework_components/roomcast-teacher-controls/gulp/tasks/nutella.js +7 -0
  130. data/framework_components/roomcast-teacher-controls/gulp/tasks/setWatch.js +5 -0
  131. data/framework_components/roomcast-teacher-controls/gulp/tasks/svgs.js +7 -0
  132. data/framework_components/roomcast-teacher-controls/gulp/tasks/watch.js +12 -0
  133. data/framework_components/roomcast-teacher-controls/gulp/util/bundleLogger.js +21 -0
  134. data/framework_components/roomcast-teacher-controls/gulp/util/handleErrors.js +15 -0
  135. data/framework_components/roomcast-teacher-controls/gulpfile.js +16 -0
  136. data/framework_components/roomcast-teacher-controls/index.html +51 -0
  137. data/framework_components/roomcast-teacher-controls/nutella.json +6 -0
  138. data/framework_components/roomcast-teacher-controls/package.json +38 -0
  139. data/framework_components/roomcast-teacher-controls/src/app/app.js +22 -0
  140. data/framework_components/roomcast-teacher-controls/src/app/components/ActivitiesGrid.js +87 -0
  141. data/framework_components/roomcast-teacher-controls/src/app/components/ActivityCard.js +141 -0
  142. data/framework_components/roomcast-teacher-controls/src/app/components/Channel.js +70 -0
  143. data/framework_components/roomcast-teacher-controls/src/app/components/Footer.js +34 -0
  144. data/framework_components/roomcast-teacher-controls/src/app/components/main.js +74 -0
  145. data/framework_components/roomcast-teacher-controls/src/less/main.less +186 -0
  146. data/framework_components/roomcast-teacher-controls/src/less/my_overrides.less +14 -0
  147. data/lib/commands/meta/run_command.rb +11 -9
  148. metadata +135 -2
@@ -0,0 +1,389 @@
1
+ var UIJSONAttribute = React.createClass ({
2
+ getInitialState: function() {
3
+ return({
4
+ type: "string",
5
+ value: "",
6
+ key: "",
7
+ application: undefined,
8
+ instance: undefined,
9
+ component: undefined
10
+ })
11
+ },
12
+ handleTypeChange: function(type) {
13
+ this.setState({type: type});
14
+ this.updateJson = true;
15
+ },
16
+ handleKeyChange: function(event) {
17
+ /*
18
+ switch(this.state.type) {
19
+ case "string":
20
+ this.setState({key: event.target.value});
21
+ break;
22
+ }
23
+ */
24
+ this.setState({key: event.target.value});
25
+ this.props.updateJSON();
26
+ },
27
+ handleValueChange: function() {
28
+ switch(this.state.type) {
29
+ case "string":
30
+ case "number":
31
+ this.setState({value: event.target.value});
32
+ break;
33
+ }
34
+ this.props.updateJSON();
35
+ },
36
+ getJson: function() {
37
+ if(this.props.keyEnabled) {
38
+ var json = {};
39
+ switch (this.state.type) {
40
+ case "string":
41
+ json[this.refs.key.getDOMNode().value] = this.refs.value.getDOMNode().value;
42
+ break;
43
+ case "number":
44
+ json[this.refs.key.getDOMNode().value] = parseFloat(this.refs.value.getDOMNode().value);
45
+ break;
46
+ case "array":
47
+ // TODO: check refs
48
+ json[this.refs.key.getDOMNode().value] = this.refs.array.getJson();
49
+ break;
50
+ case "object":
51
+ json[this.refs.key.getDOMNode().value] = this.refs.object.getJson();
52
+ break;
53
+ }
54
+ return json;
55
+ }
56
+ else {
57
+ switch (this.state.type) {
58
+ case "string":
59
+ return this.refs.value.getDOMNode().value;
60
+ break;
61
+ case "number":
62
+ return parseFloat(this.refs.value.getDOMNode().value);
63
+ break;
64
+ case "array":
65
+ // TODO: check refs
66
+ return this.refs.array.getJson();
67
+ break;
68
+ case "object":
69
+ return this.refs.object.getJson();
70
+ break;
71
+ }
72
+ }
73
+ },
74
+ render: function() {
75
+
76
+ var self = this;
77
+
78
+ var inputBox = "";
79
+ switch(this.state.type) {
80
+ case "string":
81
+ case "number":
82
+ inputBox = <div>
83
+ <button type="button"
84
+ className="close"
85
+ aria-label="Close"
86
+ onClick={_.partial(self.props.deleteAttribute, self.state.key)}>
87
+ <span aria-hidden="true">&times;</span>
88
+ </button>
89
+ <div className="col-lg-4 col-md-4 col-sm-4" style={{padding: "10px"}}>
90
+ <input
91
+ onChange={this.handleValueChange}
92
+ type="text" className="form-control"
93
+ placeholder="String"
94
+ aria-describedby="basic-addon2"
95
+ value={this.state.value}
96
+ ref="value"/>
97
+ </div>
98
+ </div>;
99
+ break;
100
+ case "array":
101
+ inputBox = <div>
102
+ <button type="button"
103
+ className="close"
104
+ aria-label="Close"
105
+ onClick={_.partial(self.props.deleteAttribute, self.state.key)}>
106
+ <span aria-hidden="true">&times;</span>
107
+ </button>
108
+ <div className="col-lg-12 col-md-12 col-sm-12" style={{padding: "10px"}}>
109
+ <UIJSONArray updateJSON={this.props.updateJSON} ref="array"/>
110
+ </div>
111
+ </div>;
112
+ break;
113
+ case "object":
114
+ inputBox = <div>
115
+ <button type="button"
116
+ className="close"
117
+ aria-label="Close"
118
+ onClick={_.partial(self.props.deleteAttribute, self.state.key)}>
119
+ <span aria-hidden="true">&times;</span>
120
+ </button>
121
+ <div className="col-lg-12 col-md-12 col-sm-12" style={{padding: "10px"}}>
122
+ <UIJSONObject updateJSON={this.props.updateJSON} ref="object"/>
123
+ </div>
124
+ </div>;
125
+ break;
126
+ }
127
+
128
+ return (
129
+ <div>
130
+ <div className="col-lg-6 col-md-6 col-sm-6 " style={{padding: "10px"}}>
131
+ <div className="input-group">
132
+ { this.props.keyEnabled ?
133
+ <input
134
+ onChange={this.handleKeyChange}
135
+ type="text" className="form-control"
136
+ placeholder="Key"
137
+ aria-describedby="basic-addon2"
138
+ value={this.state.key}
139
+ ref="key"/>
140
+ :
141
+ ""
142
+ }
143
+ <div className="input-group-btn">
144
+ <button className="btn btn-default dropdown-toggle" type="button" id="menu1" data-toggle="dropdown">{self.state.type}
145
+ <span className="caret"></span></button>
146
+ <ul className="dropdown-menu" role="menu" aria-labelledby="menu1">
147
+ <li role="presentation"><a role="menuitem" tabindex="-1" onClick={function() { self.handleTypeChange("string")}}>String</a></li>
148
+ <li role="presentation"><a role="menuitem" tabindex="-1" onClick={function() { self.handleTypeChange("number")}}>Number</a></li>
149
+ <li role="presentation"><a role="menuitem" tabindex="-1" onClick={function() { self.handleTypeChange("array")}}>Array</a></li>
150
+ <li role="presentation"><a role="menuitem" tabindex="-1" onClick={function() { self.handleTypeChange("object")}}>Object</a></li>
151
+ </ul>
152
+ </div>
153
+ </div>
154
+ </div>
155
+ {inputBox}
156
+ </div>
157
+ );
158
+ },
159
+ updateJson: false,
160
+ componentDidUpdate: function() {
161
+ if(this.updateJson) {
162
+ this.props.updateJSON();
163
+ this.updateJson = false;
164
+ }
165
+ }
166
+ });
167
+
168
+ var UIJSONArray = React.createClass ({
169
+ getInitialState: function () {
170
+ return ({
171
+ elements: 1
172
+ })
173
+ },
174
+ deleteElement: function(key) {
175
+ this.setState({
176
+ elements: this.state.elements - 1
177
+ });
178
+ this.updateJson = true;
179
+ },
180
+ addElement: function() {
181
+ this.setState({elements: this.state.elements + 1});
182
+ },
183
+ getJson: function() {
184
+ var array = [];
185
+
186
+ // Construct the json with the children
187
+ for(var i = 0; i < this.state.elements; i++) {
188
+ var element = this.refs['array-element-' + i].getJson();
189
+ array.push(element);
190
+ }
191
+
192
+ this.setState({oldJson: array});
193
+ return array;
194
+
195
+ },
196
+ render: function() {
197
+ var attributes = [];
198
+
199
+ for(var i = 0; i < this.state.elements; i++) {
200
+ attributes.push(
201
+ <UIJSONAttribute
202
+ updateJSON={this.props.updateJSON}
203
+ ref={"array-element-" + i}
204
+ keyEnabled = {false}
205
+ deleteAttribute = {this.deleteElement}/>
206
+ );
207
+ }
208
+
209
+ return(
210
+ <div className="panel panel-default">
211
+ <div className="panel-body">
212
+ {attributes}
213
+ <div className="col-lg-12 col-md-12 col-sm-12">
214
+ <button onClick={this.addElement} type="button" className="btn btn-default">
215
+ <span className="glyphicon glyphicon-plus" aria-hidden="true"></span> Add
216
+ </button>
217
+ </div>
218
+ </div>
219
+ </div>
220
+ );
221
+ },
222
+ updateJson: false,
223
+ componentDidUpdate: function() {
224
+ if(this.updateJson) {
225
+ this.props.updateJSON();
226
+ this.updateJson = false;
227
+ }
228
+ }
229
+ });
230
+
231
+ var UIJSONObject = React.createClass ({
232
+ getInitialState: function() {
233
+ return({
234
+ attributes: 1
235
+ })
236
+ },
237
+ getJson: function() {
238
+ //alert("Get json UIJSONObject");
239
+ var json = {};
240
+
241
+ // Construct the json with the children
242
+ for(var i = 0; i < this.state.attributes; i++) {
243
+ var attribute = this.refs['object-attribute-' + i].getJson();
244
+ json = _.extend(json, attribute);
245
+ }
246
+
247
+ this.setState({oldJson: json});
248
+ return json;
249
+
250
+ },
251
+ deleteAttribute: function(key) {
252
+ this.setState({
253
+ attributes: this.state.attributes - 1
254
+ });
255
+ this.updateJson = true;
256
+ },
257
+ addAttribute: function() {
258
+ this.setState({attributes: this.state.attributes + 1});
259
+ },
260
+ render: function() {
261
+ var attributes = [];
262
+
263
+ for(var i = 0; i < this.state.attributes; i++) {
264
+ attributes.push(
265
+ <UIJSONAttribute
266
+ updateJSON={this.props.updateJSON}
267
+ ref={"object-attribute-" + i}
268
+ keyEnabled = {true}
269
+ deleteAttribute = {this.deleteAttribute}/>
270
+ );
271
+ }
272
+
273
+ return(
274
+ <div className="panel panel-default">
275
+ <div className="panel-body">
276
+ {attributes}
277
+ <div className="col-lg-12 col-md-12 col-sm-12">
278
+ <button onClick={this.addAttribute} type="button" className="btn btn-default">
279
+ <span className="glyphicon glyphicon-plus" aria-hidden="true"></span> Add
280
+ </button>
281
+ </div>
282
+ </div>
283
+ </div>
284
+ );
285
+ },
286
+ updateJson: false,
287
+ componentDidUpdate: function() {
288
+ if(this.updateJson) {
289
+ this.props.updateJSON();
290
+ this.updateJson = false;
291
+ }
292
+ }
293
+ });
294
+
295
+ var UIJSONRender = React.createClass ({
296
+ render: function() {
297
+ return(
298
+ <pre>
299
+ <code className="JSON">
300
+ {JSON.stringify(this.props.json, null, 4)}
301
+ </code>
302
+ </pre>
303
+ );
304
+ },
305
+ /*
306
+ componentDidUpdate: function() {
307
+ $('pre code').each(function(i, block) {
308
+ hljs.highlightBlock(block);
309
+ });
310
+ }
311
+ */
312
+ });
313
+
314
+ var UIMessageSend = React.createClass ({
315
+ getInitialState: function() {
316
+ return {
317
+ application: undefined,
318
+ instance: undefined,
319
+ component: undefined,
320
+ json: {}
321
+ }
322
+ },
323
+
324
+ componentDidMount: function() {
325
+ var self = this;
326
+
327
+ notificationCenter.subscribe(Notifications.alerts.ALERT_CHANGE, function() {
328
+ self.setState({
329
+ application: alertsModel.application,
330
+ instance: alertsModel.instance,
331
+ component: alertsModel.component
332
+ });
333
+ });
334
+ },
335
+ updateJSON: function() {
336
+ //alert("Update JSON");
337
+ this.setState({json: this.refs.jsonObject.getJson()})
338
+ },
339
+ sendMessage: function() {
340
+ alert("Send message");
341
+ var payload = this.refs.jsonObject.getJson();
342
+ console.log(payload);
343
+ var channel = messageModel.channel;
344
+ nutellaFramework.f.net.publish_to_run(this.state.application, this.state.instance, channel, payload)
345
+ },
346
+ render: function() {
347
+ var self = this;
348
+
349
+ subscription = [];
350
+
351
+ if(this.state.application != undefined) {
352
+ subscription.push(<span>application: <span className="label label-default">{this.state.application}</span></span>);
353
+ }
354
+
355
+ if(this.state.instance != undefined) {
356
+ subscription.push(<span> instance: <span className="label label-default">{this.state.instance}</span></span>);
357
+ }
358
+
359
+ if(this.state.component != undefined) {
360
+ subscription.push(<span> component: <span className="label label-default">{this.state.component}</span></span>);
361
+ }
362
+
363
+ subscription.push(<span> on channel: <span className="label label-default">{messageModel.channel}</span></span>);
364
+
365
+ return (
366
+ <div className="modal-dialog modal-messages">
367
+ <div className="modal-content">
368
+ <div className="modal-header">
369
+ <button type="button" className="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
370
+ <h4 className="modal-title text-center" id="myMailLabel">Send message to {subscription}</h4>
371
+ </div>
372
+ <div className="modal-body">
373
+ <div className="col-lg-4 col-md-4 col-sm-4">
374
+ <UIJSONRender json={this.state.json}/>
375
+ </div>
376
+ <div className="col-lg-8 col-md-8 col-sm-8">
377
+ <UIJSONObject updateJSON={this.updateJSON} ref="jsonObject"/>
378
+ </div>
379
+ </div>
380
+ <div className="modal-footer">
381
+ <button type="button" className="btn btn-default" onClick={this.sendMessage}>Send</button>
382
+ <button type="button" className="btn btn-default" data-dismiss="modal">Close</button>
383
+ </div>
384
+ </div>
385
+ </div>
386
+ );
387
+ }
388
+ });
389
+
@@ -0,0 +1,103 @@
1
+ var UIMessages = React.createClass({
2
+ getInitialState: function () {
3
+ return {
4
+ messages: [],
5
+ from: undefined,
6
+ to: undefined,
7
+ type: undefined
8
+ };
9
+ },
10
+ componentDidMount: function () {
11
+ var self = this;
12
+ notificationCenter.subscribe(Notifications.data.MESSAGE_DATA_CHANGE, function() {
13
+
14
+ var messages = [];
15
+
16
+ if(messageModel.data != undefined)
17
+ messages = messageModel.data.messages;
18
+
19
+ self.setState({messages: messages,
20
+ from: messageModel.from,
21
+ to: messageModel.to,
22
+ type: messageModel.type
23
+ });
24
+ });
25
+
26
+ messageModel.downloadMessages();
27
+
28
+ /*
29
+ messageModel.fetchData("data/message.json");
30
+
31
+ setTimeout(function() {
32
+ messageModel.fetchData("data/message.json");
33
+ }, 10000)
34
+ */
35
+ },
36
+ render: function () {
37
+ var self = this;
38
+
39
+ var messages = this.state.messages.map(function(message, index) {
40
+
41
+ var date = new Date(message.date);
42
+
43
+ return (
44
+ <div className="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
45
+ <div className="panel panel-default">
46
+ <a data-toggle="collapse" data-parent="#accordion" href={"#collapse"+index} aria-expanded="true" aria-controls={"collapse"+index}>
47
+ <div className="panel-heading" role="tab" id="headingOne">
48
+ <h4 className="panel-title">
49
+ {date.getUTCDate()+"/"+(date.getUTCMonth()+1)+"/"+date.getUTCFullYear()+" "+date.getUTCHours()+":"+date.getUTCMinutes()+":"+date.getUTCSeconds()+"."+date.getUTCMilliseconds()+
50
+ " - "+message.type}
51
+ </h4>
52
+ </div>
53
+ </a>
54
+ <div id={"collapse"+index} className="panel-collapse collapse" role="tabpanel" aria-labelledby={"heading"+index}>
55
+ <div className="panel-body">
56
+ <pre>
57
+ <code className="JSON">
58
+ {JSON.stringify(message.payload, null, 4)}
59
+ </code>
60
+ </pre>
61
+ </div>
62
+ </div>
63
+ </div>
64
+ </div>
65
+ );
66
+ });
67
+
68
+ return(
69
+ <div className="modal-dialog modal-messages">
70
+ <div className="modal-content">
71
+ <div className="modal-header">
72
+ <button type="button" className="close" data-dismiss="modal" aria-label="Close">
73
+ <span aria-hidden="true">&times;</span>
74
+ </button>
75
+ <h4 className="modal-title" id="modalLabel">Message display</h4>
76
+ <svg style={{height: "40px", width: "100%"}} viewBox="0 0 1000 40">
77
+ <text x="50" y="20" textAnchor="middle" fill="black">{this.state.to}</text>
78
+ <text x="950" y="20" textAnchor="middle" fill="black">{this.state.from}</text>
79
+ <line x1="0" y1="35" x2="990" y2="35" style={{stroke: "#425266", strokeWidth: "5"}} />
80
+ {self.state.type == messageModel.constant.type.publish ?
81
+ <polygon points="990,40 990,30 1000,35" style={{fill:"#425266",stroke:"#425266",strokeWidth:1}} />
82
+ :
83
+ <polygon points="990,40 990,30 1000,30 1000,40" style={{fill:"#425266",stroke:"#425266",strokeWidth:1}} />}
84
+ </svg>
85
+ </div>
86
+ <div className="modal-body">
87
+ {messages}
88
+ </div>
89
+ <div className="modal-footer">
90
+ <button type="button" className="btn btn-default" data-dismiss="modal">Close</button>
91
+ </div>
92
+ </div>
93
+ </div>
94
+ );
95
+
96
+ },
97
+ componentDidUpdate: function() {
98
+ $('pre code').each(function(i, block) {
99
+ hljs.highlightBlock(block);
100
+ });
101
+ }
102
+ });
103
+