nutella_framework 0.4.23 → 0.4.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+