nutella_framework 0.7.3 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (506) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +1 -1
  3. data/VERSION +1 -1
  4. data/framework_components/order.json +1 -6
  5. data/nutella_framework.gemspec +7 -507
  6. metadata +5 -505
  7. data/framework_components/beacon-cloud-bot/README.md +0 -27
  8. data/framework_components/beacon-cloud-bot/beacon_cloud_bot.rb +0 -150
  9. data/framework_components/beacon-cloud-bot/beacons.json +0 -1
  10. data/framework_components/beacon-cloud-bot/startup +0 -5
  11. data/framework_components/logging_bot/logging_bot.rb +0 -42
  12. data/framework_components/logging_bot/startup +0 -5
  13. data/framework_components/logging_bot/utils.rb +0 -8
  14. data/framework_components/monitoring-bot/.gitignore +0 -34
  15. data/framework_components/monitoring-bot/README.md +0 -1
  16. data/framework_components/monitoring-bot/monitoring-bot.rb +0 -472
  17. data/framework_components/monitoring-bot/nutella.json +0 -6
  18. data/framework_components/monitoring-bot/startup +0 -6
  19. data/framework_components/monitoring-interface/.gitignore +0 -2
  20. data/framework_components/monitoring-interface/README.md +0 -1
  21. data/framework_components/monitoring-interface/bower.json +0 -29
  22. data/framework_components/monitoring-interface/bower_components/bower-mqttws/.bower.json +0 -23
  23. data/framework_components/monitoring-interface/bower_components/bower-mqttws/bower.json +0 -14
  24. data/framework_components/monitoring-interface/bower_components/bower-mqttws/mqttws31.js +0 -2081
  25. data/framework_components/monitoring-interface/bower_components/bower-mqttws/readme.md +0 -4
  26. data/framework_components/monitoring-interface/bower_components/nutella_lib/.bower.json +0 -37
  27. data/framework_components/monitoring-interface/bower_components/nutella_lib/LICENSE +0 -21
  28. data/framework_components/monitoring-interface/bower_components/nutella_lib/README.md +0 -15
  29. data/framework_components/monitoring-interface/bower_components/nutella_lib/bower.json +0 -28
  30. data/framework_components/monitoring-interface/bower_components/nutella_lib/examples/browser/mqtt_client_hello_world.html +0 -23
  31. data/framework_components/monitoring-interface/bower_components/nutella_lib/examples/browser/nutella_hello_world.html +0 -52
  32. data/framework_components/monitoring-interface/bower_components/nutella_lib/examples/node/mqtt_client_hello_world.js +0 -14
  33. data/framework_components/monitoring-interface/bower_components/nutella_lib/examples/node/nutella_hello_world.js +0 -38
  34. data/framework_components/monitoring-interface/bower_components/nutella_lib/nutella_lib.js +0 -789
  35. data/framework_components/monitoring-interface/bower_components/nutella_lib/package.json +0 -30
  36. data/framework_components/monitoring-interface/css/Monitoring Interface.html +0 -215
  37. data/framework_components/monitoring-interface/css/Monitoring Interface_files/animations.js +0 -27
  38. data/framework_components/monitoring-interface/css/Monitoring Interface_files/application-view-controller.js +0 -232
  39. data/framework_components/monitoring-interface/css/Monitoring Interface_files/applications-model.js +0 -61
  40. data/framework_components/monitoring-interface/css/Monitoring Interface_files/bootstrap.min.js +0 -7
  41. data/framework_components/monitoring-interface/css/Monitoring Interface_files/cursor.css +0 -7
  42. data/framework_components/monitoring-interface/css/Monitoring Interface_files/d3.v3.min.js +0 -5
  43. data/framework_components/monitoring-interface/css/Monitoring Interface_files/graphics.js +0 -156
  44. data/framework_components/monitoring-interface/css/Monitoring Interface_files/grid-layout.js +0 -103
  45. data/framework_components/monitoring-interface/css/Monitoring Interface_files/highlight.min.js +0 -2
  46. data/framework_components/monitoring-interface/css/Monitoring Interface_files/instance-view-controller.js +0 -104
  47. data/framework_components/monitoring-interface/css/Monitoring Interface_files/jquery-1.10.0.min.js +0 -6
  48. data/framework_components/monitoring-interface/css/Monitoring Interface_files/notification-center.js +0 -63
  49. data/framework_components/monitoring-interface/css/Monitoring Interface_files/notifications.js +0 -14
  50. data/framework_components/monitoring-interface/css/Monitoring Interface_files/page.css +0 -33
  51. data/framework_components/monitoring-interface/css/Monitoring Interface_files/radial-layout.js +0 -175
  52. data/framework_components/monitoring-interface/css/Monitoring Interface_files/tab-table.js +0 -8
  53. data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-application.css +0 -0
  54. data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-application.js +0 -320
  55. data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-connection-view.css +0 -10
  56. data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-connection-view.js +0 -426
  57. data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-element.js +0 -205
  58. data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-notification.js +0 -94
  59. data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-tab.js +0 -229
  60. data/framework_components/monitoring-interface/css/Monitoring Interface_files/underscore-min.js +0 -5
  61. data/framework_components/monitoring-interface/css/Monitoring Interface_files/view-controller.js +0 -68
  62. data/framework_components/monitoring-interface/css/Monitoring Interface_files/window-view-controller.js +0 -169
  63. data/framework_components/monitoring-interface/css/alerts.css +0 -3
  64. data/framework_components/monitoring-interface/css/bootstrap.min.css +0 -5
  65. data/framework_components/monitoring-interface/css/cursor.css +0 -7
  66. data/framework_components/monitoring-interface/css/highlight.default.min.css +0 -1
  67. data/framework_components/monitoring-interface/css/page.css +0 -41
  68. data/framework_components/monitoring-interface/css/ui-application.css +0 -0
  69. data/framework_components/monitoring-interface/css/ui-connection-view.css +0 -10
  70. data/framework_components/monitoring-interface/css/ui-legend-view.css +0 -7
  71. data/framework_components/monitoring-interface/data/alert.json +0 -8
  72. data/framework_components/monitoring-interface/data/data.json +0 -2118
  73. data/framework_components/monitoring-interface/data/data2.json +0 -814
  74. data/framework_components/monitoring-interface/data/data3.json +0 -823
  75. data/framework_components/monitoring-interface/data/data4.json +0 -848
  76. data/framework_components/monitoring-interface/data/message.json +0 -999
  77. data/framework_components/monitoring-interface/gulpfile.js +0 -29
  78. data/framework_components/monitoring-interface/img/arrow_white.svg +0 -120
  79. data/framework_components/monitoring-interface/img/arrow_white_right.svg +0 -104
  80. data/framework_components/monitoring-interface/img/back.svg +0 -164
  81. data/framework_components/monitoring-interface/img/cross_red_border_white.svg +0 -143
  82. data/framework_components/monitoring-interface/img/cross_red_border_white_mouseover.svg +0 -143
  83. data/framework_components/monitoring-interface/img/email.svg +0 -89
  84. data/framework_components/monitoring-interface/img/email_highlighted.svg +0 -89
  85. data/framework_components/monitoring-interface/index.html +0 -144
  86. data/framework_components/monitoring-interface/js/d3/layout/grid-layout.js +0 -103
  87. data/framework_components/monitoring-interface/js/d3/layout/radial-layout.js +0 -184
  88. data/framework_components/monitoring-interface/js/d3/plugin/graphics.js +0 -156
  89. data/framework_components/monitoring-interface/js/d3/plugin/tab-table.js +0 -8
  90. data/framework_components/monitoring-interface/js/d3/ui/animations.js +0 -27
  91. data/framework_components/monitoring-interface/js/d3/ui/ui-application.js +0 -471
  92. data/framework_components/monitoring-interface/js/d3/ui/ui-connection-view.js +0 -861
  93. data/framework_components/monitoring-interface/js/d3/ui/ui-element.js +0 -245
  94. data/framework_components/monitoring-interface/js/d3/ui/ui-legend.js +0 -174
  95. data/framework_components/monitoring-interface/js/d3/ui/ui-notification.js +0 -90
  96. data/framework_components/monitoring-interface/js/d3/ui/ui-tab.js +0 -309
  97. data/framework_components/monitoring-interface/js/lib/JSXTransformer-0.12.2.js +0 -15199
  98. data/framework_components/monitoring-interface/js/lib/bootstrap.min.js +0 -7
  99. data/framework_components/monitoring-interface/js/lib/d3.v3.min.js +0 -5
  100. data/framework_components/monitoring-interface/js/lib/highlight.min.js +0 -2
  101. data/framework_components/monitoring-interface/js/lib/jquery-1.10.0.min.js +0 -6
  102. data/framework_components/monitoring-interface/js/lib/nutella_lib.js +0 -5121
  103. data/framework_components/monitoring-interface/js/lib/react-with-addons-0.12.2.js +0 -19822
  104. data/framework_components/monitoring-interface/js/lib/underscore-min.js +0 -5
  105. data/framework_components/monitoring-interface/js/model/alerts-model.js +0 -74
  106. data/framework_components/monitoring-interface/js/model/applications-model.js +0 -78
  107. data/framework_components/monitoring-interface/js/model/messages-model.js +0 -112
  108. data/framework_components/monitoring-interface/js/notification/notification-center.js +0 -63
  109. data/framework_components/monitoring-interface/js/notification/notifications.js +0 -21
  110. data/framework_components/monitoring-interface/js/react/dist/ui-alerts.js +0 -178
  111. data/framework_components/monitoring-interface/js/react/dist/ui-message-send.js +0 -389
  112. data/framework_components/monitoring-interface/js/react/dist/ui-messages.js +0 -103
  113. data/framework_components/monitoring-interface/js/react/src/ui-alerts.js +0 -178
  114. data/framework_components/monitoring-interface/js/react/src/ui-message-send.js +0 -389
  115. data/framework_components/monitoring-interface/js/react/src/ui-messages.js +0 -103
  116. data/framework_components/monitoring-interface/js/view-controller/application-view-controller.js +0 -259
  117. data/framework_components/monitoring-interface/js/view-controller/instance-view-controller.js +0 -112
  118. data/framework_components/monitoring-interface/js/view-controller/view-controller.js +0 -74
  119. data/framework_components/monitoring-interface/js/view-controller/window-view-controller.js +0 -169
  120. data/framework_components/monitoring-interface/nutella.json +0 -6
  121. data/framework_components/room-places-beacon-cloud-interface/LICENSE +0 -21
  122. data/framework_components/room-places-beacon-cloud-interface/Readme.md +0 -0
  123. data/framework_components/room-places-beacon-cloud-interface/bower.json +0 -29
  124. data/framework_components/room-places-beacon-cloud-interface/bower_components/bower-mqttws/.bower.json +0 -23
  125. data/framework_components/room-places-beacon-cloud-interface/bower_components/bower-mqttws/bower.json +0 -14
  126. data/framework_components/room-places-beacon-cloud-interface/bower_components/bower-mqttws/mqttws31.js +0 -2081
  127. data/framework_components/room-places-beacon-cloud-interface/bower_components/bower-mqttws/readme.md +0 -4
  128. data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/.bower.json +0 -37
  129. data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/LICENSE +0 -21
  130. data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/README.md +0 -15
  131. data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/bower.json +0 -28
  132. data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/examples/browser/mqtt_client_hello_world.html +0 -23
  133. data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/examples/browser/nutella_hello_world.html +0 -52
  134. data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/examples/node/mqtt_client_hello_world.js +0 -14
  135. data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/examples/node/nutella_hello_world.js +0 -38
  136. data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/nutella_lib.js +0 -789
  137. data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/package.json +0 -30
  138. data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/simple-js-mqtt-client.js +0 -428
  139. data/framework_components/room-places-beacon-cloud-interface/css/animation.css +0 -17
  140. data/framework_components/room-places-beacon-cloud-interface/css/cursor.css +0 -16
  141. data/framework_components/room-places-beacon-cloud-interface/css/page_layout.css +0 -73
  142. data/framework_components/room-places-beacon-cloud-interface/index.html +0 -157
  143. data/framework_components/room-places-beacon-cloud-interface/js/lib/nutella_lib.js +0 -5121
  144. data/framework_components/room-places-beacon-cloud-interface/js/react/beacon-add.js +0 -102
  145. data/framework_components/room-places-beacon-cloud-interface/js/react/beacon-table.js +0 -73
  146. data/framework_components/room-places-beacon-cloud-interface/js/react/beacon.js +0 -97
  147. data/framework_components/room-places-beacon-cloud-interface/nutella.json +0 -6
  148. data/framework_components/room-places-bot/.gitignore +0 -4
  149. data/framework_components/room-places-bot/Gemfile +0 -3
  150. data/framework_components/room-places-bot/README.md +0 -66
  151. data/framework_components/room-places-bot/nutella.json +0 -6
  152. data/framework_components/room-places-bot/room_places_bot.rb +0 -766
  153. data/framework_components/room-places-bot/startup +0 -6
  154. data/framework_components/room-places-bot/virtual_beacons.rb +0 -124
  155. data/framework_components/room-places-interface/.gitignore +0 -3
  156. data/framework_components/room-places-interface/LICENSE +0 -21
  157. data/framework_components/room-places-interface/Readme.md +0 -0
  158. data/framework_components/room-places-interface/bower.json +0 -29
  159. data/framework_components/room-places-interface/bower_components/bower-mqttws/.bower.json +0 -23
  160. data/framework_components/room-places-interface/bower_components/bower-mqttws/bower.json +0 -14
  161. data/framework_components/room-places-interface/bower_components/bower-mqttws/mqttws31.js +0 -2081
  162. data/framework_components/room-places-interface/bower_components/bower-mqttws/readme.md +0 -4
  163. data/framework_components/room-places-interface/bower_components/nutella_lib/.bower.json +0 -37
  164. data/framework_components/room-places-interface/bower_components/nutella_lib/LICENSE +0 -21
  165. data/framework_components/room-places-interface/bower_components/nutella_lib/README.md +0 -15
  166. data/framework_components/room-places-interface/bower_components/nutella_lib/bower.json +0 -28
  167. data/framework_components/room-places-interface/bower_components/nutella_lib/examples/browser/mqtt_client_hello_world.html +0 -23
  168. data/framework_components/room-places-interface/bower_components/nutella_lib/examples/browser/nutella_hello_world.html +0 -52
  169. data/framework_components/room-places-interface/bower_components/nutella_lib/examples/node/mqtt_client_hello_world.js +0 -14
  170. data/framework_components/room-places-interface/bower_components/nutella_lib/examples/node/nutella_hello_world.js +0 -38
  171. data/framework_components/room-places-interface/bower_components/nutella_lib/nutella_lib.js +0 -789
  172. data/framework_components/room-places-interface/bower_components/nutella_lib/package.json +0 -30
  173. data/framework_components/room-places-interface/css/animation.css +0 -22
  174. data/framework_components/room-places-interface/css/bootstrap.min.css +0 -5
  175. data/framework_components/room-places-interface/css/cursor.css +0 -22
  176. data/framework_components/room-places-interface/css/font-awesome/css/font-awesome.css +0 -1801
  177. data/framework_components/room-places-interface/css/font-awesome/css/font-awesome.min.css +0 -4
  178. data/framework_components/room-places-interface/css/font-awesome/fonts/FontAwesome.otf +0 -0
  179. data/framework_components/room-places-interface/css/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  180. data/framework_components/room-places-interface/css/font-awesome/fonts/fontawesome-webfont.svg +0 -565
  181. data/framework_components/room-places-interface/css/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  182. data/framework_components/room-places-interface/css/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  183. data/framework_components/room-places-interface/css/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  184. data/framework_components/room-places-interface/css/font-awesome/less/animated.less +0 -34
  185. data/framework_components/room-places-interface/css/font-awesome/less/bordered-pulled.less +0 -16
  186. data/framework_components/room-places-interface/css/font-awesome/less/core.less +0 -13
  187. data/framework_components/room-places-interface/css/font-awesome/less/fixed-width.less +0 -6
  188. data/framework_components/room-places-interface/css/font-awesome/less/font-awesome.less +0 -17
  189. data/framework_components/room-places-interface/css/font-awesome/less/icons.less +0 -596
  190. data/framework_components/room-places-interface/css/font-awesome/less/larger.less +0 -13
  191. data/framework_components/room-places-interface/css/font-awesome/less/list.less +0 -19
  192. data/framework_components/room-places-interface/css/font-awesome/less/mixins.less +0 -27
  193. data/framework_components/room-places-interface/css/font-awesome/less/path.less +0 -15
  194. data/framework_components/room-places-interface/css/font-awesome/less/rotated-flipped.less +0 -20
  195. data/framework_components/room-places-interface/css/font-awesome/less/stacked.less +0 -20
  196. data/framework_components/room-places-interface/css/font-awesome/less/variables.less +0 -606
  197. data/framework_components/room-places-interface/css/font-awesome/scss/_animated.scss +0 -34
  198. data/framework_components/room-places-interface/css/font-awesome/scss/_bordered-pulled.scss +0 -16
  199. data/framework_components/room-places-interface/css/font-awesome/scss/_core.scss +0 -13
  200. data/framework_components/room-places-interface/css/font-awesome/scss/_fixed-width.scss +0 -6
  201. data/framework_components/room-places-interface/css/font-awesome/scss/_icons.scss +0 -596
  202. data/framework_components/room-places-interface/css/font-awesome/scss/_larger.scss +0 -13
  203. data/framework_components/room-places-interface/css/font-awesome/scss/_list.scss +0 -19
  204. data/framework_components/room-places-interface/css/font-awesome/scss/_mixins.scss +0 -27
  205. data/framework_components/room-places-interface/css/font-awesome/scss/_path.scss +0 -15
  206. data/framework_components/room-places-interface/css/font-awesome/scss/_rotated-flipped.scss +0 -20
  207. data/framework_components/room-places-interface/css/font-awesome/scss/_stacked.scss +0 -20
  208. data/framework_components/room-places-interface/css/font-awesome/scss/_variables.scss +0 -606
  209. data/framework_components/room-places-interface/css/font-awesome/scss/font-awesome.scss +0 -17
  210. data/framework_components/room-places-interface/css/icomoon.css +0 -57
  211. data/framework_components/room-places-interface/css/page_layout.css +0 -82
  212. data/framework_components/room-places-interface/fonts/glyphicons-halflings-regular.eot +0 -0
  213. data/framework_components/room-places-interface/fonts/glyphicons-halflings-regular.svg +0 -288
  214. data/framework_components/room-places-interface/fonts/glyphicons-halflings-regular.ttf +0 -0
  215. data/framework_components/room-places-interface/fonts/glyphicons-halflings-regular.woff +0 -0
  216. data/framework_components/room-places-interface/fonts/glyphicons-halflings-regular.woff2 +0 -0
  217. data/framework_components/room-places-interface/fonts/icomoon.eot +0 -0
  218. data/framework_components/room-places-interface/fonts/icomoon.svg +0 -17
  219. data/framework_components/room-places-interface/fonts/icomoon.ttf +0 -0
  220. data/framework_components/room-places-interface/fonts/icomoon.woff +0 -0
  221. data/framework_components/room-places-interface/gulpfile.js +0 -24
  222. data/framework_components/room-places-interface/index.html +0 -73
  223. data/framework_components/room-places-interface/index2.html +0 -1753
  224. data/framework_components/room-places-interface/js/component.js +0 -438
  225. data/framework_components/room-places-interface/js/lib/JSXTransformer-0.12.2.js +0 -15199
  226. data/framework_components/room-places-interface/js/lib/bootstrap.min.js +0 -7
  227. data/framework_components/room-places-interface/js/lib/d3.v3.min.js +0 -5
  228. data/framework_components/room-places-interface/js/lib/jquery-1.10.0.min.js +0 -6
  229. data/framework_components/room-places-interface/js/lib/nutella_lib.js +0 -4145
  230. data/framework_components/room-places-interface/js/lib/react-with-addons-0.12.2.js +0 -19822
  231. data/framework_components/room-places-interface/js/lib/underscore.js +0 -6
  232. data/framework_components/room-places-interface/js/map.js +0 -1593
  233. data/framework_components/room-places-interface/js/position.js +0 -6
  234. data/framework_components/room-places-interface/js/react/dist/beacon.js +0 -30
  235. data/framework_components/room-places-interface/js/react/dist/discrete.js +0 -282
  236. data/framework_components/room-places-interface/js/react/dist/interactive-label.js +0 -54
  237. data/framework_components/room-places-interface/js/react/dist/resource-add.js +0 -203
  238. data/framework_components/room-places-interface/js/react/dist/resource-table.js +0 -227
  239. data/framework_components/room-places-interface/js/react/dist/resource.js +0 -433
  240. data/framework_components/room-places-interface/js/react/src/beacon.js +0 -30
  241. data/framework_components/room-places-interface/js/react/src/discrete.js +0 -282
  242. data/framework_components/room-places-interface/js/react/src/interactive-label.js +0 -54
  243. data/framework_components/room-places-interface/js/react/src/resource-add.js +0 -203
  244. data/framework_components/room-places-interface/js/react/src/resource-table.js +0 -227
  245. data/framework_components/room-places-interface/js/react/src/resource.js +0 -433
  246. data/framework_components/room-places-interface/js/room.js +0 -65
  247. data/framework_components/room-places-interface/nutella.json +0 -6
  248. data/framework_components/roomcast-bot/data/default/channels.json +0 -1
  249. data/framework_components/roomcast-bot/data/default/configs.json +0 -1
  250. data/framework_components/roomcast-bot/roomcast_bot.rb +0 -284
  251. data/framework_components/roomcast-bot/startup +0 -6
  252. data/framework_components/roomcast-channel-creator/.gitignore +0 -2
  253. data/framework_components/roomcast-channel-creator/README.md +0 -9
  254. data/framework_components/roomcast-channel-creator/dist/app.js +0 -44376
  255. data/framework_components/roomcast-channel-creator/dist/css/font-awesome.min.css +0 -4
  256. data/framework_components/roomcast-channel-creator/dist/css/ionicons.min.css +0 -11
  257. data/framework_components/roomcast-channel-creator/dist/fonts/FontAwesome.otf +0 -0
  258. data/framework_components/roomcast-channel-creator/dist/fonts/fontawesome-webfont.eot +0 -0
  259. data/framework_components/roomcast-channel-creator/dist/fonts/fontawesome-webfont.svg +0 -565
  260. data/framework_components/roomcast-channel-creator/dist/fonts/fontawesome-webfont.ttf +0 -0
  261. data/framework_components/roomcast-channel-creator/dist/fonts/fontawesome-webfont.woff +0 -0
  262. data/framework_components/roomcast-channel-creator/dist/fonts/fontawesome-webfont.woff2 +0 -0
  263. data/framework_components/roomcast-channel-creator/dist/fonts/ionicons.eot +0 -0
  264. data/framework_components/roomcast-channel-creator/dist/fonts/ionicons.svg +0 -2230
  265. data/framework_components/roomcast-channel-creator/dist/fonts/ionicons.ttf +0 -0
  266. data/framework_components/roomcast-channel-creator/dist/fonts/ionicons.woff +0 -0
  267. data/framework_components/roomcast-channel-creator/dist/main.css +0 -3310
  268. data/framework_components/roomcast-channel-creator/dist/nutella_lib.js +0 -5128
  269. data/framework_components/roomcast-channel-creator/gulp/config.js +0 -51
  270. data/framework_components/roomcast-channel-creator/gulp/tasks/browserify.js +0 -77
  271. data/framework_components/roomcast-channel-creator/gulp/tasks/build.js +0 -3
  272. data/framework_components/roomcast-channel-creator/gulp/tasks/css.js +0 -7
  273. data/framework_components/roomcast-channel-creator/gulp/tasks/default.js +0 -3
  274. data/framework_components/roomcast-channel-creator/gulp/tasks/fonts.js +0 -7
  275. data/framework_components/roomcast-channel-creator/gulp/tasks/less.js +0 -16
  276. data/framework_components/roomcast-channel-creator/gulp/tasks/mui-fonts.js +0 -7
  277. data/framework_components/roomcast-channel-creator/gulp/tasks/nutella.js +0 -7
  278. data/framework_components/roomcast-channel-creator/gulp/tasks/setWatch.js +0 -5
  279. data/framework_components/roomcast-channel-creator/gulp/tasks/svgs.js +0 -7
  280. data/framework_components/roomcast-channel-creator/gulp/tasks/watch.js +0 -12
  281. data/framework_components/roomcast-channel-creator/gulp/util/bundleLogger.js +0 -21
  282. data/framework_components/roomcast-channel-creator/gulp/util/handleErrors.js +0 -15
  283. data/framework_components/roomcast-channel-creator/gulpfile.js +0 -16
  284. data/framework_components/roomcast-channel-creator/index.html +0 -40
  285. data/framework_components/roomcast-channel-creator/nutella.json +0 -6
  286. data/framework_components/roomcast-channel-creator/package.json +0 -38
  287. data/framework_components/roomcast-channel-creator/roomcast-default.png +0 -0
  288. data/framework_components/roomcast-channel-creator/src/app/app.js +0 -28
  289. data/framework_components/roomcast-channel-creator/src/app/components/AnimationMixin.js +0 -44
  290. data/framework_components/roomcast-channel-creator/src/app/components/CataloguePage.js +0 -148
  291. data/framework_components/roomcast-channel-creator/src/app/components/Channel.js +0 -406
  292. data/framework_components/roomcast-channel-creator/src/app/components/ColorCell.js +0 -28
  293. data/framework_components/roomcast-channel-creator/src/app/components/ColorPicker.js +0 -53
  294. data/framework_components/roomcast-channel-creator/src/app/components/DetailPage.js +0 -66
  295. data/framework_components/roomcast-channel-creator/src/app/components/NutellaMixin.js +0 -40
  296. data/framework_components/roomcast-channel-creator/src/app/components/PageSliderMixin.js +0 -68
  297. data/framework_components/roomcast-channel-creator/src/app/components/Router.js +0 -52
  298. data/framework_components/roomcast-channel-creator/src/app/components/TopBar.js +0 -86
  299. data/framework_components/roomcast-channel-creator/src/app/components/UploadingScreen.js +0 -74
  300. data/framework_components/roomcast-channel-creator/src/app/components/main.js +0 -342
  301. data/framework_components/roomcast-channel-creator/src/css/font-awesome.min.css +0 -4
  302. data/framework_components/roomcast-channel-creator/src/css/ionicons.min.css +0 -11
  303. data/framework_components/roomcast-channel-creator/src/fonts/FontAwesome.otf +0 -0
  304. data/framework_components/roomcast-channel-creator/src/fonts/fontawesome-webfont.eot +0 -0
  305. data/framework_components/roomcast-channel-creator/src/fonts/fontawesome-webfont.svg +0 -565
  306. data/framework_components/roomcast-channel-creator/src/fonts/fontawesome-webfont.ttf +0 -0
  307. data/framework_components/roomcast-channel-creator/src/fonts/fontawesome-webfont.woff +0 -0
  308. data/framework_components/roomcast-channel-creator/src/fonts/fontawesome-webfont.woff2 +0 -0
  309. data/framework_components/roomcast-channel-creator/src/fonts/ionicons.eot +0 -0
  310. data/framework_components/roomcast-channel-creator/src/fonts/ionicons.svg +0 -2230
  311. data/framework_components/roomcast-channel-creator/src/fonts/ionicons.ttf +0 -0
  312. data/framework_components/roomcast-channel-creator/src/fonts/ionicons.woff +0 -0
  313. data/framework_components/roomcast-channel-creator/src/less/main.less +0 -506
  314. data/framework_components/roomcast-channel-creator/src/less/my_overrides.less +0 -14
  315. data/framework_components/roomcast-channel-creator/upload.svg +0 -216
  316. data/framework_components/roomcast-main-app/.gitignore +0 -2
  317. data/framework_components/roomcast-main-app/README.md +0 -9
  318. data/framework_components/roomcast-main-app/dist/LICENSE +0 -21
  319. data/framework_components/roomcast-main-app/dist/app.js +0 -54373
  320. data/framework_components/roomcast-main-app/dist/assets/Logo.png +0 -0
  321. data/framework_components/roomcast-main-app/dist/assets/Logo_alpha.png +0 -0
  322. data/framework_components/roomcast-main-app/dist/assets/Logo_grid.svg +0 -216
  323. data/framework_components/roomcast-main-app/dist/css/ionicons.min.css +0 -11
  324. data/framework_components/roomcast-main-app/dist/fonts/ionicons.eot +0 -0
  325. data/framework_components/roomcast-main-app/dist/fonts/ionicons.svg +0 -2230
  326. data/framework_components/roomcast-main-app/dist/fonts/ionicons.ttf +0 -0
  327. data/framework_components/roomcast-main-app/dist/fonts/ionicons.woff +0 -0
  328. data/framework_components/roomcast-main-app/dist/main.css +0 -3234
  329. data/framework_components/roomcast-main-app/gulp/config.js +0 -47
  330. data/framework_components/roomcast-main-app/gulp/tasks/browserify.js +0 -77
  331. data/framework_components/roomcast-main-app/gulp/tasks/build.js +0 -3
  332. data/framework_components/roomcast-main-app/gulp/tasks/css.js +0 -7
  333. data/framework_components/roomcast-main-app/gulp/tasks/default.js +0 -3
  334. data/framework_components/roomcast-main-app/gulp/tasks/fonts.js +0 -7
  335. data/framework_components/roomcast-main-app/gulp/tasks/less.js +0 -16
  336. data/framework_components/roomcast-main-app/gulp/tasks/markup.js +0 -7
  337. data/framework_components/roomcast-main-app/gulp/tasks/setWatch.js +0 -5
  338. data/framework_components/roomcast-main-app/gulp/tasks/svgs.js +0 -7
  339. data/framework_components/roomcast-main-app/gulp/tasks/watch.js +0 -12
  340. data/framework_components/roomcast-main-app/gulp/util/bundleLogger.js +0 -21
  341. data/framework_components/roomcast-main-app/gulp/util/handleErrors.js +0 -15
  342. data/framework_components/roomcast-main-app/gulpfile.js +0 -16
  343. data/framework_components/roomcast-main-app/index.html +0 -37
  344. data/framework_components/roomcast-main-app/nutella.json +0 -6
  345. data/framework_components/roomcast-main-app/package.json +0 -47
  346. data/framework_components/roomcast-main-app/roomcast-default.png +0 -0
  347. data/framework_components/roomcast-main-app/src/app/app.js +0 -15
  348. data/framework_components/roomcast-main-app/src/app/components/NutellaMixin.js +0 -56
  349. data/framework_components/roomcast-main-app/src/app/components/app/Channel.js +0 -68
  350. data/framework_components/roomcast-main-app/src/app/components/app/Player.js +0 -139
  351. data/framework_components/roomcast-main-app/src/app/components/app/iOSMixin.js +0 -22
  352. data/framework_components/roomcast-main-app/src/app/components/app/main.js +0 -567
  353. data/framework_components/roomcast-main-app/src/app/components/app/material-ui/menu-item.jsx +0 -79
  354. data/framework_components/roomcast-main-app/src/app/components/app/material-ui/menu.jsx +0 -177
  355. data/framework_components/roomcast-main-app/src/app/components/app/material-ui/overlay.jsx +0 -21
  356. data/framework_components/roomcast-main-app/src/app/components/app/material-ui/right-nav.jsx +0 -108
  357. data/framework_components/roomcast-main-app/src/app/components/identity-selector/IdentitiesGrid.js +0 -95
  358. data/framework_components/roomcast-main-app/src/app/components/identity-selector/IdentityCard.js +0 -103
  359. data/framework_components/roomcast-main-app/src/app/components/identity-selector/iOSMixin.js +0 -19
  360. data/framework_components/roomcast-main-app/src/app/components/identity-selector/main.js +0 -109
  361. data/framework_components/roomcast-main-app/src/app/components/login/AppIdPage.js +0 -97
  362. data/framework_components/roomcast-main-app/src/app/components/login/BrokerPage.js +0 -139
  363. data/framework_components/roomcast-main-app/src/app/components/login/IdentitiesGrid.js +0 -93
  364. data/framework_components/roomcast-main-app/src/app/components/login/IdentityCard.js +0 -99
  365. data/framework_components/roomcast-main-app/src/app/components/login/RunIdPage.js +0 -78
  366. data/framework_components/roomcast-main-app/src/app/components/login/iOSMixin.js +0 -23
  367. data/framework_components/roomcast-main-app/src/app/components/login/main.js +0 -125
  368. data/framework_components/roomcast-main-app/src/app/components/main.js +0 -64
  369. data/framework_components/roomcast-main-app/src/less/main.less +0 -365
  370. data/framework_components/roomcast-main-app/src/less/my_overrides.less +0 -53
  371. data/framework_components/roomcast-main-app/src/less/right-nav.less +0 -31
  372. data/framework_components/roomcast-package-creator/.gitignore +0 -2
  373. data/framework_components/roomcast-package-creator/README.md +0 -9
  374. data/framework_components/roomcast-package-creator/dist/app.js +0 -51196
  375. data/framework_components/roomcast-package-creator/dist/css/font-awesome.min.css +0 -4
  376. data/framework_components/roomcast-package-creator/dist/css/ionicons.min.css +0 -11
  377. data/framework_components/roomcast-package-creator/dist/fonts/FontAwesome.otf +0 -0
  378. data/framework_components/roomcast-package-creator/dist/fonts/fontawesome-webfont.eot +0 -0
  379. data/framework_components/roomcast-package-creator/dist/fonts/fontawesome-webfont.svg +0 -565
  380. data/framework_components/roomcast-package-creator/dist/fonts/fontawesome-webfont.ttf +0 -0
  381. data/framework_components/roomcast-package-creator/dist/fonts/fontawesome-webfont.woff +0 -0
  382. data/framework_components/roomcast-package-creator/dist/fonts/fontawesome-webfont.woff2 +0 -0
  383. data/framework_components/roomcast-package-creator/dist/fonts/ionicons.eot +0 -0
  384. data/framework_components/roomcast-package-creator/dist/fonts/ionicons.svg +0 -2230
  385. data/framework_components/roomcast-package-creator/dist/fonts/ionicons.ttf +0 -0
  386. data/framework_components/roomcast-package-creator/dist/fonts/ionicons.woff +0 -0
  387. data/framework_components/roomcast-package-creator/dist/fonts/material-ui-icons.eot +0 -0
  388. data/framework_components/roomcast-package-creator/dist/fonts/material-ui-icons.svg +0 -14
  389. data/framework_components/roomcast-package-creator/dist/fonts/material-ui-icons.ttf +0 -0
  390. data/framework_components/roomcast-package-creator/dist/fonts/material-ui-icons.woff +0 -0
  391. data/framework_components/roomcast-package-creator/dist/main.css +0 -5682
  392. data/framework_components/roomcast-package-creator/dist/nutella_lib.js +0 -5128
  393. data/framework_components/roomcast-package-creator/gulp/config.js +0 -51
  394. data/framework_components/roomcast-package-creator/gulp/tasks/browserify.js +0 -77
  395. data/framework_components/roomcast-package-creator/gulp/tasks/build.js +0 -3
  396. data/framework_components/roomcast-package-creator/gulp/tasks/css.js +0 -7
  397. data/framework_components/roomcast-package-creator/gulp/tasks/default.js +0 -3
  398. data/framework_components/roomcast-package-creator/gulp/tasks/fonts.js +0 -7
  399. data/framework_components/roomcast-package-creator/gulp/tasks/less.js +0 -16
  400. data/framework_components/roomcast-package-creator/gulp/tasks/mui-fonts.js +0 -7
  401. data/framework_components/roomcast-package-creator/gulp/tasks/nutella.js +0 -7
  402. data/framework_components/roomcast-package-creator/gulp/tasks/setWatch.js +0 -5
  403. data/framework_components/roomcast-package-creator/gulp/tasks/svgs.js +0 -7
  404. data/framework_components/roomcast-package-creator/gulp/tasks/watch.js +0 -12
  405. data/framework_components/roomcast-package-creator/gulp/util/bundleLogger.js +0 -21
  406. data/framework_components/roomcast-package-creator/gulp/util/handleErrors.js +0 -15
  407. data/framework_components/roomcast-package-creator/gulpfile.js +0 -16
  408. data/framework_components/roomcast-package-creator/index.html +0 -38
  409. data/framework_components/roomcast-package-creator/nutella.json +0 -6
  410. data/framework_components/roomcast-package-creator/package.json +0 -39
  411. data/framework_components/roomcast-package-creator/roomcast-default.png +0 -0
  412. data/framework_components/roomcast-package-creator/src/app/app.js +0 -30
  413. data/framework_components/roomcast-package-creator/src/app/components/ButtonInteractionsMixin.js +0 -45
  414. data/framework_components/roomcast-package-creator/src/app/components/ChannelCard.js +0 -100
  415. data/framework_components/roomcast-package-creator/src/app/components/ChannelItem.js +0 -71
  416. data/framework_components/roomcast-package-creator/src/app/components/ChannelsCatalogue.js +0 -51
  417. data/framework_components/roomcast-package-creator/src/app/components/ChannelsPanel.js +0 -127
  418. data/framework_components/roomcast-package-creator/src/app/components/ConfigField.js +0 -50
  419. data/framework_components/roomcast-package-creator/src/app/components/ConfigurationsPanel.js +0 -112
  420. data/framework_components/roomcast-package-creator/src/app/components/ContextButton.js +0 -37
  421. data/framework_components/roomcast-package-creator/src/app/components/GlobalButton.js +0 -28
  422. data/framework_components/roomcast-package-creator/src/app/components/NutellaMixin.js +0 -58
  423. data/framework_components/roomcast-package-creator/src/app/components/PoolHeader.js +0 -67
  424. data/framework_components/roomcast-package-creator/src/app/components/PoolRow.js +0 -160
  425. data/framework_components/roomcast-package-creator/src/app/components/ResourceFamilyPool.js +0 -168
  426. data/framework_components/roomcast-package-creator/src/app/components/ResourcesPanel.js +0 -76
  427. data/framework_components/roomcast-package-creator/src/app/components/main.js +0 -239
  428. data/framework_components/roomcast-package-creator/src/app/components/material-ui/dialog_.jsx +0 -66
  429. data/framework_components/roomcast-package-creator/src/app/components/material-ui/drop-down-menu.jsx +0 -159
  430. data/framework_components/roomcast-package-creator/src/app/components/material-ui/enhanced-textarea.jsx +0 -113
  431. data/framework_components/roomcast-package-creator/src/app/components/material-ui/floating-action-button_.jsx +0 -73
  432. data/framework_components/roomcast-package-creator/src/app/components/material-ui/menu-item.jsx +0 -100
  433. data/framework_components/roomcast-package-creator/src/app/components/material-ui/menu.jsx +0 -211
  434. data/framework_components/roomcast-package-creator/src/app/components/material-ui/overlay.jsx +0 -21
  435. data/framework_components/roomcast-package-creator/src/app/components/material-ui/raised-button_.jsx +0 -72
  436. data/framework_components/roomcast-package-creator/src/app/components/material-ui/right-nav.jsx +0 -108
  437. data/framework_components/roomcast-package-creator/src/app/components/material-ui/ripple.jsx +0 -52
  438. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/drop-down-arrow.jsx +0 -17
  439. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/navigation-chevron-left.jsx +0 -16
  440. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/navigation-chevron-right.jsx +0 -17
  441. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/navigation-menu.jsx +0 -16
  442. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/svg-icon.jsx +0 -23
  443. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/toggle-check-box-checked.jsx +0 -16
  444. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/toggle-check-box-outline-blank.jsx +0 -16
  445. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/toggle-radio-button-off.jsx +0 -16
  446. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/toggle-radio-button-on.jsx +0 -16
  447. data/framework_components/roomcast-package-creator/src/app/components/material-ui/text-field.jsx +0 -215
  448. data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/css-event.js +0 -52
  449. data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/date-time.js +0 -132
  450. data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/dom.js +0 -71
  451. data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/events.js +0 -34
  452. data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/key-code.js +0 -10
  453. data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/key-line.js +0 -13
  454. data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/unique-id.js +0 -7
  455. data/framework_components/roomcast-package-creator/src/css/font-awesome.min.css +0 -4
  456. data/framework_components/roomcast-package-creator/src/css/ionicons.min.css +0 -11
  457. data/framework_components/roomcast-package-creator/src/fonts/FontAwesome.otf +0 -0
  458. data/framework_components/roomcast-package-creator/src/fonts/fontawesome-webfont.eot +0 -0
  459. data/framework_components/roomcast-package-creator/src/fonts/fontawesome-webfont.svg +0 -565
  460. data/framework_components/roomcast-package-creator/src/fonts/fontawesome-webfont.ttf +0 -0
  461. data/framework_components/roomcast-package-creator/src/fonts/fontawesome-webfont.woff +0 -0
  462. data/framework_components/roomcast-package-creator/src/fonts/fontawesome-webfont.woff2 +0 -0
  463. data/framework_components/roomcast-package-creator/src/fonts/ionicons.eot +0 -0
  464. data/framework_components/roomcast-package-creator/src/fonts/ionicons.svg +0 -2230
  465. data/framework_components/roomcast-package-creator/src/fonts/ionicons.ttf +0 -0
  466. data/framework_components/roomcast-package-creator/src/fonts/ionicons.woff +0 -0
  467. data/framework_components/roomcast-package-creator/src/less/drop-down-icon.less +0 -43
  468. data/framework_components/roomcast-package-creator/src/less/drop-down-menu.less +0 -77
  469. data/framework_components/roomcast-package-creator/src/less/enhanced-textarea.less +0 -16
  470. data/framework_components/roomcast-package-creator/src/less/main.less +0 -514
  471. data/framework_components/roomcast-package-creator/src/less/menu-item.less +0 -71
  472. data/framework_components/roomcast-package-creator/src/less/menu.less +0 -50
  473. data/framework_components/roomcast-package-creator/src/less/my_overrides.less +0 -15
  474. data/framework_components/roomcast-package-creator/src/less/svg-icon.less +0 -11
  475. data/framework_components/roomcast-package-creator/src/less/text-field.less +0 -168
  476. data/framework_components/roomcast-teacher-controls/.gitignore +0 -2
  477. data/framework_components/roomcast-teacher-controls/README.md +0 -9
  478. data/framework_components/roomcast-teacher-controls/dist/app.js +0 -43614
  479. data/framework_components/roomcast-teacher-controls/dist/main.css +0 -3043
  480. data/framework_components/roomcast-teacher-controls/dist/nutella_lib.js +0 -5128
  481. data/framework_components/roomcast-teacher-controls/gulp/config.js +0 -51
  482. data/framework_components/roomcast-teacher-controls/gulp/tasks/browserify.js +0 -77
  483. data/framework_components/roomcast-teacher-controls/gulp/tasks/build.js +0 -3
  484. data/framework_components/roomcast-teacher-controls/gulp/tasks/css.js +0 -7
  485. data/framework_components/roomcast-teacher-controls/gulp/tasks/default.js +0 -3
  486. data/framework_components/roomcast-teacher-controls/gulp/tasks/fonts.js +0 -7
  487. data/framework_components/roomcast-teacher-controls/gulp/tasks/less.js +0 -16
  488. data/framework_components/roomcast-teacher-controls/gulp/tasks/mui-fonts.js +0 -7
  489. data/framework_components/roomcast-teacher-controls/gulp/tasks/nutella.js +0 -7
  490. data/framework_components/roomcast-teacher-controls/gulp/tasks/setWatch.js +0 -5
  491. data/framework_components/roomcast-teacher-controls/gulp/tasks/svgs.js +0 -7
  492. data/framework_components/roomcast-teacher-controls/gulp/tasks/watch.js +0 -12
  493. data/framework_components/roomcast-teacher-controls/gulp/util/bundleLogger.js +0 -21
  494. data/framework_components/roomcast-teacher-controls/gulp/util/handleErrors.js +0 -15
  495. data/framework_components/roomcast-teacher-controls/gulpfile.js +0 -16
  496. data/framework_components/roomcast-teacher-controls/index.html +0 -37
  497. data/framework_components/roomcast-teacher-controls/nutella.json +0 -6
  498. data/framework_components/roomcast-teacher-controls/package.json +0 -38
  499. data/framework_components/roomcast-teacher-controls/src/app/app.js +0 -28
  500. data/framework_components/roomcast-teacher-controls/src/app/components/ActivitiesGrid.js +0 -87
  501. data/framework_components/roomcast-teacher-controls/src/app/components/ActivityCard.js +0 -183
  502. data/framework_components/roomcast-teacher-controls/src/app/components/Footer.js +0 -37
  503. data/framework_components/roomcast-teacher-controls/src/app/components/NutellaMixin.js +0 -58
  504. data/framework_components/roomcast-teacher-controls/src/app/components/main.js +0 -125
  505. data/framework_components/roomcast-teacher-controls/src/less/main.less +0 -196
  506. data/framework_components/roomcast-teacher-controls/src/less/my_overrides.less +0 -14
@@ -1,102 +0,0 @@
1
- var BeaconAdd = React.createClass({
2
- getInitialState: function() {
3
- return {
4
- beacon: {rid: "", uuid: "", major: "", minor: ""}
5
- };
6
- },
7
- handleChangeRid: function(e) {
8
- var beacon = this.state.beacon;
9
- beacon.rid = event.target.value;
10
- this.setState({beacon: beacon});
11
- },
12
- handleChangeUuid: function(e) {
13
- var beacon = this.state.beacon;
14
- beacon.uuid = event.target.value;
15
-
16
- // If it is not a valid UUID try to fix it
17
- if(!beacon.uuid.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i)) {
18
- var uuid = beacon.uuid;
19
-
20
- var re = new RegExp("-", 'g');
21
- uuid = uuid.replace(re, '');
22
-
23
- var uuidTemp = "";
24
-
25
- uuidTemp += uuid.substring(0,8);
26
- if(uuid.length >= 8) {
27
- uuidTemp += "-";
28
- }
29
- uuidTemp += uuid.substring(8,12);
30
- if(uuid.length >= 12) {
31
- uuidTemp += "-";
32
- }
33
- uuidTemp += uuid.substring(12,16);
34
- if(uuid.length >= 16) {
35
- uuidTemp += "-";
36
- }
37
- uuidTemp += uuid.substring(16,20);
38
- if(uuid.length >= 20) {
39
- uuidTemp += "-";
40
- }
41
- uuidTemp += uuid.substring(20,32);
42
- beacon.uuid = uuidTemp;
43
- }
44
-
45
-
46
- this.setState({beacon: beacon});
47
- },
48
- handleChangeMajor: function(e) {
49
- var beacon = this.state.beacon;
50
- if(event.target.value.match(/^[0-9]*$/i)) {
51
- beacon.major = event.target.value;
52
- this.setState({beacon: beacon});
53
- }
54
- },
55
- handleChangeMinor: function(e) {
56
- var beacon = this.state.beacon;
57
- if(event.target.value.match(/^[0-9]*$/i)) {
58
- beacon.minor = event.target.value;
59
- this.setState({beacon: beacon});
60
- }
61
- },
62
- handleKeyDownUUID: function(evt) {
63
- var beacon = this.state.beacon;
64
- if (evt.keyCode == 8 &&
65
- (
66
- beacon.uuid.length == 9 ||
67
- beacon.uuid.length == 14 ||
68
- beacon.uuid.length == 19 ||
69
- beacon.uuid.length == 24
70
- )
71
- ) {
72
- beacon.uuid = beacon.uuid.substring(0, beacon.uuid.length - 1);
73
- this.setState({beacon: beacon});
74
- }
75
- this.handleKeyDown(evt);
76
- },
77
- handleKeyDown: function(evt) {
78
- if (evt.keyCode == 13 ) {
79
- if( this.state.beacon.rid != "" &&
80
- this.state.beacon.uuid != "" &&
81
- this.state.beacon.major != "" &&
82
- this.state.beacon.minor != "") {
83
- this.props.addBeacon(this.state.beacon);
84
- this.setState({beacon: {rid: "", uuid: "", major: "", minor: ""}})
85
- }
86
- else {
87
- alert("Incomplete beacon")
88
- }
89
-
90
- }
91
- },
92
- render: function() {
93
- return (
94
- <tr>
95
- <td className="col-md-2 col-sm-2 col-xs-2 add"><input type="text" onKeyDown={this.handleKeyDown} className="form-control" value={this.state.beacon.rid} placeholder="rid" onChange={this.handleChangeRid} ref="rid"/></td>
96
- <td className="col-md-6 col-sm-6 col-xs-6 add"><input type="text" onKeyDown={this.handleKeyDownUUID} className="form-control" value={this.state.beacon.uuid} placeholder="uuid" onChange={this.handleChangeUuid} ref="uuid"/></td>
97
- <td className="col-md-2 col-sm-2 col-xs-2 add"><input type="text" onKeyDown={this.handleKeyDown} className="form-control" value={this.state.beacon.major} placeholder="major" onChange={this.handleChangeMajor} ref="major"/></td>
98
- <td className="col-md-2 col-sm-2 col-xs-2 add"><input type="text" onKeyDown={this.handleKeyDown} className="form-control" value={this.state.beacon.minor} placeholder="minor" onChange={this.handleChangeMinor} ref="minor"/></td>
99
- </tr>
100
- );
101
- }
102
- });
@@ -1,73 +0,0 @@
1
- var BeaconTable = React.createClass({
2
- getInitialState: function() {
3
- return {
4
- beaconData: []
5
- };
6
- },
7
- componentDidMount: function() {
8
- self = this;
9
-
10
- // Download all beacons
11
- nutella.f.net.request("beacon/beacons", {}, function(reply) {
12
- self.setState({beaconData: reply.beacons});
13
- });
14
-
15
- // Wait for new added beacons
16
- nutella.f.net.subscribe("beacon/beacons/added", function(message) {
17
- var data = self.state.beaconData;
18
- data = data.concat(message.beacons);
19
-
20
- self.setState({beaconData: data});
21
- });
22
-
23
- // Wait for removed beacons
24
- nutella.f.net.subscribe("beacon/beacons/removed", function(message) {
25
- var data = self.state.beaconData;
26
- data = data.filter(function(d) {
27
- return $.inArray(d.rid, message.beacons.map(function(r) {
28
- return r.rid;
29
- })) == -1;
30
- });
31
-
32
- self.setState({beaconData: data});
33
- });
34
- },
35
- hendleBeaconAdd: function(beacon) {
36
- nutella.f.net.publish("beacon/beacon/add", beacon);
37
- },
38
- hendleBeaconRemove: function(beacon) {
39
- nutella.f.net.publish("beacon/beacon/remove", {rid: beacon.rid});
40
- },
41
- render: function() {
42
- var self = this;
43
-
44
- // Reorder the beacons
45
- var beaconData = this.state.beaconData;
46
- beaconData = beaconData.sort(function(a, b) {
47
- return a.rid.localeCompare(b.rid)
48
- });
49
-
50
- var beacons = beaconData.map(function (beacon, index) {
51
- return <Beacon beacon={beacon} key={beacon.rid} removeBeacon={self.hendleBeaconRemove} addBeacon={self.hendleBeaconAdd}/>
52
- });
53
-
54
- return (
55
- <div className="table-responsive col-md-8 col-md-offset-2 col-sm-12">
56
- <table className="table table-bordered table-striped table-hover">
57
- <thead>
58
- <tr>
59
- <th className="col-md-2 col-sm-2 col-xs-2">Resource Id</th>
60
- <th className="col-md-6 col-sm-6 col-xs-6">UUID</th>
61
- <th className="col-md-2 col-sm-2 col-xs-2">Major</th>
62
- <th className="col-md-2 col-sm-2 col-xs-2">Minor</th>
63
- </tr>
64
- </thead>
65
- <tbody>
66
- {beacons}
67
- <BeaconAdd addBeacon={this.hendleBeaconAdd} />
68
- </tbody>
69
- </table>
70
- </div>
71
- );
72
- }
73
- });
@@ -1,97 +0,0 @@
1
- var Beacon = React.createClass({
2
- getInitialState: function() {
3
- return {ridEdit: false, uuidEdit: false, majorEdit: false, minorEdit: false};
4
- },
5
- handleRemoveButton: function() {
6
- this.props.removeBeacon(this.props.beacon);
7
- },
8
- handleRidClicked: function() {
9
- this.replaceState({ridEdit: true});
10
- },
11
- handleUuidClicked: function() {
12
- this.replaceState({uuidEdit: true});
13
- },
14
- handleMajorClicked: function() {
15
- this.replaceState({majorEdit: true});
16
- },
17
- handleMinorClicked: function() {
18
- this.replaceState({minorEdit: true});
19
- },
20
- handleKeyDownRid: function(evt) {
21
- if (evt.keyCode == 13 ) {
22
- var beacon = this.props.beacon;
23
- this.props.removeBeacon(beacon);
24
- beacon.rid = this.refs.rid.getDOMNode().value.trim();
25
- this.props.addBeacon(beacon);
26
- }
27
- },
28
- handleKeyDownUuid: function(evt) {
29
- if (evt.keyCode == 13 ) {
30
- var beacon = this.props.beacon;
31
- this.props.removeBeacon(beacon);
32
- beacon.uuid = this.refs.uuid.getDOMNode().value.trim();
33
- this.props.addBeacon(beacon);
34
- }
35
- },
36
- handleKeyDownMajor: function(evt) {
37
- if (evt.keyCode == 13 ) {
38
- var beacon = this.props.beacon;
39
- this.props.removeBeacon(beacon);
40
- beacon.major = this.refs.major.getDOMNode().value.trim();
41
- this.props.addBeacon(beacon);
42
- }
43
- },
44
- handleKeyDownMinor: function(evt) {
45
- if (evt.keyCode == 13 ) {
46
- var beacon = this.props.beacon;
47
- this.props.removeBeacon(beacon);
48
- beacon.minor = this.refs.minor.getDOMNode().value.trim();
49
- this.props.addBeacon(beacon);
50
- }
51
- },
52
- render: function() {
53
- var b = {};
54
-
55
- if(this.state.ridEdit)
56
- b.rid = <input type="text" onKeyDown={this.handleKeyDownRid} className="form-control" defaultValue={this.props.beacon.rid} placeholder="rid" onChange={this.handleChangeRid} ref="rid"/>;
57
- else
58
- b.rid = this.props.beacon.rid;
59
-
60
- if(this.state.uuidEdit)
61
- b.uuid = <input type="text" onKeyDown={this.handleKeyDownUuid} className="form-control" defaultValue={this.props.beacon.uuid} placeholder="uuid" onChange={this.handleChangeUuid} ref="uuid"/>;
62
- else
63
- b.uuid = this.props.beacon.uuid;
64
-
65
- if(this.state.majorEdit)
66
- b.major = <input type="text" onKeyDown={this.handleKeyDownMajor} className="form-control" defaultValue={this.props.beacon.major} placeholder="major" onChange={this.handleChangeMajor} ref="major"/>;
67
- else
68
- b.major = this.props.beacon.major;
69
-
70
- if(this.state.minorEdit)
71
- b.minor = <input type="text" onKeyDown={this.handleKeyDownMinor} className="form-control" defaultValue={this.props.beacon.minor} placeholder="minor" onChange={this.handleChangeMinor} ref="minor"/>;
72
- else
73
- b.minor = this.props.beacon.minor;
74
-
75
- if(this.state.ridEdit || this.state.uuidEdit || this.state.majorEdit || this.state.minorEdit)
76
- add = "add";
77
- else
78
- add = "";
79
-
80
- return (
81
-
82
- <tr>
83
- <td className={"col-md-2 col-sm-2 col-xs-2 "+add} onClick={this.handleRidClicked}>{b.rid}</td>
84
- <td className={"col-md-6 col-sm-6 col-xs-6 "+add} onClick={this.handleUuidClicked}>{b.uuid}</td>
85
- <td className={"col-md-2 col-sm-2 col-xs-2 "+add} onClick={this.handleMajorClicked}>{b.major}</td>
86
- <td className={"col-md-2 col-sm-2 col-xs-2 "+add} onClick={this.handleMinorClicked}>
87
- <span>
88
- {b.minor}
89
- </span>
90
- <button type="button" className="btn btn-danger btn-xs right" onClick={this.handleRemoveButton}>
91
- <span className="glyphicon glyphicon-remove" aria-hidden="true"></span>
92
- </button>
93
- </td>
94
- </tr>
95
- );
96
- }
97
- });
@@ -1,6 +0,0 @@
1
- {
2
- "name": "beacon-cloud-interface",
3
- "version": "0.0.1",
4
- "type": "interface",
5
- "description": "The web interface of Beacon Cloud"
6
- }
@@ -1,4 +0,0 @@
1
- .DS_Store
2
- .idea
3
-
4
- Gemfile.lock
@@ -1,3 +0,0 @@
1
- source 'http://rubygems.org'
2
-
3
- gem 'nutella_lib','~>0.4.11'
@@ -1,66 +0,0 @@
1
- # room-places-bot
2
- This is the RoomPlaces bot that keeps track of resource position in 2D or 3D space.
3
-
4
- In order to interact with this bot you can use the library Nutella client library using the methods described below:
5
-
6
- ## Publish - Subscribe channels
7
-
8
- | Channel | Function | Direction | Content |
9
- | --------------------------------------- | ---------------------------- | ----------------- | ---------------------------------------------- |
10
- | /location/resource/add | Add a new resource | client -> server | {rid: '\<string\>', model: '\<model\>', type: '\<type\>'[, proximity_range: \<float\>]} |
11
- | /location/resource/remove | Remove a resource | client -> server | {rid: '\<string\>'} |
12
- | /location/resource/update | Update a resource | client -> server | \<resource_update\> |
13
- | /location/resources/update | Update resources | client -> server | {resources: [\<resource_update\>*]} |
14
- | /location/group/add | Add a group | client -> server | {group: '\<string\>'} |
15
- | /location/group/remove | Remove a group | client -> server | {group: '\<string\>'} |
16
- | /location/group/resource/add | Add resource to a group | client -> server | {rid: '\<string\>', group: '\<string\>'} |
17
- | /location/group/resource/remove | Remove resource to a group | client -> server | {rid: '\<string\>', group: '\<string\>'} |
18
- | /location/resources/added | Publish added resources | server -> client | {resources: [\<resource\>*]} |
19
- | /location/resources/removed | Publish removed resources | server -> client | {resources: [\<resource\>*]} |
20
- | /location/resources/updated | Update a resource | client -> server | {resources: [\<resource_updated\>*]} |
21
- | /location/room/update | Update the room size | client -> server | {x: \<float\>, y: \<float\> [,z:\<float\>]} |
22
- | /location/room/updated | Notify a room update | server -> client | {x: \<float\>, y: \<float\> [,z:\<float\>]} |
23
- | /location/resource/static/\<rid\>/enter | Notify resource enter area | server -> client | {resources: ['\<resource\>'*]} |
24
- | /location/resource/static/\<rid\>/exit | Notify resource exit area | server -> client | {resources: ['\<resource\>'*]} |
25
- | /location/tracking/discrete/update | Update the discrete tracking | client -> server | {tracking: \<discrete_tracking\>|{}} |
26
- | /location/tracking/discrete/updated | Notify discrete update | client -> server | {tracking: \<discrete_tracking\>|{}} |
27
-
28
- \<type\> ::= STATIC | DYNAMIC
29
-
30
- \<model\> ::= IMAC | IPHONE | IPAD | IBEACON
31
-
32
- ## Request - Response channels
33
-
34
- | Channel | Function | Request -> Response | Request | Response |
35
- | -------------------------------------- | ----------------------------- | ------------------- | ----------------- | ------------------------------------------ |
36
- | /location/resources | Request all the resources | client -> server | {} | {resources: [\<resource\>*]} |
37
- | /location/estimote | Request all the iBeacons | client -> server | {} | {resources: [\<resource_estimote\>*]} |
38
- | /location/room | Request the room size | client -> server | {} | {x: \<float\>, y: \<float\> [,z:\<float\>]}|
39
- | /location/resource/static/<rid>/inside | Notify resource enter area | client -> server | {} | {resources: ['\<resource\>'*]} |
40
- | /location/tracking/discrete | Request the discrete tracking | client -> server | {} | {tracking: \<discrete_tracking\>|{}} |
41
-
42
- \<resource\> ::= {rid: '\<string\>', model: '\<model\>', type: '\<type\>'}
43
-
44
- \<resource_update\> ::= {rid: '\<string\>', (\<continuous\> | \<discrete\> | \<proximity\> | \<parameters\>)}
45
-
46
- \<resource_updated\> ::= {rid: '\<string\>', model: '\<model\>', type: '\<type\>', (\<continuous\> | \<discrete\> | \<proximity\>), \<parameters_updated\> [, proximity_range: \<float\>]}
47
-
48
- \<continuous\> ::= continuous: {x: \<float\>, y: \<float\>}
49
-
50
- \<discrete\> ::= discrete: {x: \<discrete_n\>, y: \<discrete_n\> [, z: \<discrete_n\>]}
51
-
52
- \<discrete_n\> ::= \<int\> | \<uppercase_char\>
53
-
54
- \<proximity\> ::= proximity: {[rid: '', distance: '\<float\>']}
55
-
56
- \<parameters\> ::= parameters: [\<parameter>*]
57
-
58
- \<parameters_updated\> ::= parameters: {(\<key\>: '\<string\>')*}
59
-
60
- \<parameter\> ::= {key: '\<string\>' , (value: '\<string\>' | delete: true)}
61
-
62
- \<resource_estimote\> ::= {name: '\<string\>'}
63
-
64
- \<discrete_tracking\> ::= {x: \<float\>, y: \<float\>, width: \<float\>, height: \<float\>, n_x: \<float\>, n_y: \<float\>, t_x: \<discrete_type\>, t_y: \<discrete_type\>}
65
-
66
- \<discrete_type\> ::= 'NUMBER' | 'LETTER'
@@ -1,6 +0,0 @@
1
- {
2
- "name": "room-places-bot",
3
- "version": "0.0.1",
4
- "type": "bot",
5
- "description": "This bot keeps track of the location of physical resources in a 2D or 3D spcace"
6
- }
@@ -1,766 +0,0 @@
1
- require_relative '../../lib/config/runlist'
2
- require_relative '../../lib/config/config'
3
- require_relative '../../nutella_lib/framework_core'
4
- require_relative '../../lib/commands/util/components_list'
5
- require 'nutella_lib'
6
- require 'net/http'
7
- require 'net/https'
8
- require 'uri'
9
- require 'json'
10
-
11
- # Initialize this bot as framework component
12
- nutella.f.init(Nutella.config['broker'], 'room_places_bot')
13
-
14
- # Buffer object that caches all the updates
15
- class RoomPlacesCachePublish
16
-
17
- @@cache_list = {}
18
-
19
- def initialize(app_id, run_id)
20
- @app_id = app_id
21
- @run_id = run_id
22
-
23
- @resource_updated = {}
24
- @resource_added = []
25
- @resource_removed = []
26
- @resource_entered = {}
27
- @resource_exited = {}
28
-
29
- # Semaphores for threads safety
30
- @s1 = Mutex.new
31
- @s2 = Mutex.new
32
- @s3 = Mutex.new
33
- @s4 = Mutex.new
34
- @s5 = Mutex.new
35
- @s6 = Mutex.new
36
- @s7 = Mutex.new
37
- @s8 = Mutex.new
38
- @s9 = Mutex.new
39
- @s10 = Mutex.new
40
- end
41
-
42
- def resources_update(resources)
43
- @s1.synchronize {
44
- resources.each do |resource|
45
- @resource_updated[resource['rid']] = resource
46
- end
47
- }
48
- end
49
-
50
- def resources_add(resources)
51
- @s2.synchronize {
52
- @resource_added += resources
53
- }
54
- end
55
-
56
- def resources_remove(resources)
57
- @s3.synchronize {
58
- @resource_removed += resources
59
- }
60
- end
61
-
62
- def resources_enter(resources, baseStationRid)
63
- @s4.synchronize {
64
- if @resource_entered[baseStationRid] == nil
65
- @resource_entered[baseStationRid] = []
66
- end
67
- @resource_entered[baseStationRid] += resources
68
- }
69
- end
70
-
71
- def resources_exit(resources, baseStationRid)
72
- @s5.synchronize {
73
- if @resource_exited[baseStationRid] == nil
74
- @resource_exited[baseStationRid] = []
75
- end
76
- @resource_exited[baseStationRid] += resources
77
- }
78
- end
79
-
80
- def publish_update()
81
- @s6.synchronize {
82
- if @resource_updated.length > 0
83
- nutella.f.net.publish_to_run(@app_id, @run_id, 'location/resources/updated', {:resources => @resource_updated.values})
84
- @resource_updated = {}
85
- end
86
- }
87
- end
88
-
89
- def publish_add()
90
- @s7.synchronize {
91
- if @resource_added.length > 0
92
- nutella.f.net.publish_to_run(@app_id, @run_id, 'location/resources/added', {:resources => @resource_added})
93
- @resource_added = []
94
- end
95
- }
96
- end
97
-
98
- def publish_remove()
99
- @s8.synchronize {
100
- if @resource_removed.length > 0
101
- nutella.f.net.publish_to_run(@app_id, @run_id, 'location/resources/removed', {:resources => @resource_removed})
102
- @resource_removed = []
103
- end
104
- }
105
- end
106
-
107
- def publish_enter()
108
- @s9.synchronize {
109
- @resource_entered.each do |baseStationRid, resources|
110
- nutella.f.net.publish_to_run(@app_id, @run_id, "location/resource/static/#{baseStationRid}/enter", {'resources' => resources})
111
- end
112
- @resource_entered = {}
113
- }
114
- end
115
-
116
- def publish_exit()
117
- @s10.synchronize {
118
- @resource_exited.each do |baseStationRid, resources|
119
- nutella.f.net.publish_to_run(@app_id, @run_id, "location/resource/static/#{baseStationRid}/exit", {'resources' => resources})
120
- end
121
- @resource_exited = {}
122
- }
123
- end
124
-
125
- def self.get_cache(app_id, run_id)
126
- unless @@cache_list.has_key? [app_id, run_id]
127
- @@cache_list[[app_id, run_id]] = RoomPlacesCachePublish.new(app_id, run_id)
128
- end
129
- @@cache_list[[app_id, run_id]]
130
- end
131
-
132
- end
133
-
134
- puts 'Room places initialization'
135
-
136
- # Open the resources database
137
- #$resources = nutella.f.persist.get_mongo_object_store('resources')
138
- #$groups = nutella.f.persist.get_mongo_object_store('groups')
139
- #$room = nutella.f.persist.get_mongo_object_store('room')
140
- #$discrete_tracking = nutella.f.persist.get_mongo_object_store('discrete_tracking')
141
-
142
- # Create new resource
143
- nutella.f.net.subscribe_to_all_runs('location/resource/add', lambda do |message, app_id, run_id, from|
144
- # Persistent data
145
- resources = nutella.f.persist.get_run_mongo_object_store(app_id, run_id, 'resources')
146
-
147
- # Cache
148
- cache = RoomPlacesCachePublish.get_cache(app_id, run_id)
149
-
150
- rid = message['rid']
151
- type = message['type']
152
- model = message['model']
153
- proximity_range = message['proximity_range']
154
-
155
- if proximity_range == nil
156
- proximity_range = 0
157
- end
158
-
159
- if rid != nil && type != nil && model != nil
160
- if resources[rid] == nil
161
- if type == 'STATIC'
162
- resources[rid]={:rid => rid,
163
- :type => type,
164
- :model => model,
165
- :proximity_range => proximity_range,
166
- :parameters => {}
167
- };
168
- elsif type == 'DYNAMIC'
169
- resources[rid]={:rid => rid,
170
- :type => type,
171
- :model => model,
172
- :parameters => {}
173
- }
174
- end
175
- publishResourceAdd(app_id, run_id, resources[rid])
176
- cache.publish_add
177
- end
178
-
179
- end
180
- end)
181
-
182
- # Remove resource
183
- nutella.f.net.subscribe_to_all_runs('location/resource/remove', lambda do |message, app_id, run_id, from|
184
- # Persistent data
185
- resources = nutella.f.persist.get_run_mongo_object_store(app_id, run_id, 'resources')
186
-
187
- # Cache
188
- cache = RoomPlacesCachePublish.get_cache(app_id, run_id)
189
-
190
- rid = message['rid']
191
- if rid != nil
192
-
193
- resourceCopy = resources[rid]
194
- resources.delete(rid)
195
- publishResourceRemove(app_id, run_id, resourceCopy)
196
- cache.publish_remove
197
-
198
- end
199
- end)
200
-
201
-
202
- # Update the location of the resources
203
- nutella.f.net.subscribe_to_all_runs('location/resource/update', lambda do |message, app_id, run_id, from|
204
- # Cache
205
- cache = RoomPlacesCachePublish.get_cache(app_id, run_id)
206
-
207
- updateResource(app_id, run_id, message)
208
-
209
- cache.publish_update
210
- cache.publish_exit
211
- cache.publish_enter
212
- end)
213
-
214
- # Update the location of the resources
215
- nutella.f.net.subscribe_to_all_runs('location/resources/update', lambda do |message, app_id, run_id, from|
216
- # Cache
217
- cache = RoomPlacesCachePublish.get_cache(app_id, run_id)
218
-
219
- resources = message['resources']
220
- if resources != nil
221
- resources.each do |resource|
222
- updateResource(app_id, run_id, resource)
223
- end
224
- end
225
-
226
- cache.publish_update
227
- cache.publish_exit
228
- cache.publish_enter
229
- end)
230
-
231
- def updateResource(app_id, run_id, updatedResource)
232
- # Persistent data
233
- resources = nutella.f.persist.get_run_mongo_object_store(app_id, run_id, 'resources')
234
- room = nutella.f.persist.get_run_mongo_object_store(app_id, run_id, 'room')
235
- discrete_tracking = nutella.f.persist.get_run_mongo_object_store(app_id, run_id, 'discrete_tracking')
236
-
237
- rid = updatedResource['rid']
238
- type = updatedResource['type']
239
- proximity = updatedResource['proximity']
240
- discrete = updatedResource['discrete']
241
- continuous = updatedResource['continuous']
242
- parameters = updatedResource['parameters']
243
- proximity_range = updatedResource['proximity_range']
244
- resource = nil
245
-
246
- # Retrieve $room data
247
- r = {}
248
-
249
- if room['x'] == nil || room['y'] == nil
250
- r['x'] = 10
251
- r['y'] = 7
252
- else
253
- r['x'] = room['x']
254
- r['y'] = room['y']
255
- end
256
-
257
- if room['z'] != nil
258
- r['z'] = room['z']
259
- end
260
-
261
-
262
- resource = resources[rid]
263
-
264
- if resource == nil
265
- return
266
- end
267
-
268
- if proximity != nil && proximity['rid'] != nil && proximity['distance'] != nil
269
- baseStation = resources[proximity['rid']]
270
-
271
- if baseStation != nil && baseStation['proximity_range'] != nil
272
-
273
- if baseStation['proximity_range'] >= proximity['distance']
274
- if resource['proximity'] != nil && resource['proximity']['rid'] && resource['proximity']['distance']
275
- oldBaseStationRid = resource['proximity']['rid']
276
- if resource['proximity']['rid'] != proximity['rid']
277
- resource['proximity'] = proximity
278
- resource['proximity']['timestamp'] = Time.now.to_f
279
- publishResourceExit(app_id, run_id, resource, oldBaseStationRid)
280
- publishResourceEnter(app_id, run_id, resource, resource['proximity']['rid'])
281
- else
282
- resource['proximity'] = proximity
283
- resource['proximity']['timestamp'] = Time.now.to_f
284
- end
285
- computeResourceUpdate(app_id, run_id, oldBaseStationRid)
286
- else
287
- resource['proximity'] = proximity
288
- resource['proximity']['timestamp'] = Time.now.to_f
289
- publishResourceEnter(app_id, run_id, resource, resource['proximity']['rid'])
290
- end
291
- end
292
- end
293
- elsif proximity == nil
294
- resource.delete('proximity')
295
- else
296
- resource['proximity'] = {}
297
- end
298
-
299
- if continuous != nil
300
- if continuous['x'] > r['x']
301
- continuous['x'] = r['x']
302
- end
303
- if continuous['x'] < 0
304
- continuous['x'] = 0
305
- end
306
- if continuous['y'] > r['y']
307
- continuous['y'] = r['y']
308
- end
309
- if continuous['y'] < 0
310
- continuous['y'] = 0
311
- end
312
-
313
- resource['continuous'] = continuous
314
- else
315
- if resource != nil && resource['continuous'] != nil
316
- resource.delete('continuous');
317
- end
318
- end
319
-
320
- if discrete_tracking['x'] != nil
321
- if discrete != nil
322
-
323
- # Translate all coordinates in numbers
324
- if discrete['x'].instance_of? String
325
- discrete['x'] = discrete['x'].downcase.ord - 'a'.ord
326
- end
327
- if discrete['y'].instance_of? String
328
- discrete['y'] = discrete['y'].downcase.ord - 'a'.ord
329
- end
330
-
331
-
332
- if discrete['x'] > discrete_tracking['n_x'] - 1
333
- discrete['x'] = discrete_tracking['n_x'] - 1
334
- end
335
- if discrete['x'] < 0
336
- discrete['x'] = 0
337
- end
338
- if discrete['y'] > discrete_tracking['n_y'] - 1
339
- discrete['y'] = discrete_tracking['n_y'] - 1
340
- end
341
- if discrete['y'] < 0
342
- discrete['y'] = 0
343
- end
344
-
345
- resource['discrete'] = discrete
346
- else
347
- if resource != nil && resource['discrete'] != nil
348
- resource.delete('discrete');
349
- end
350
- end
351
- end
352
-
353
- if parameters != nil
354
- ps = resource['parameters']
355
- for parameter in parameters
356
- if parameter['delete'] != nil
357
- ps.delete(parameter['key'])
358
- else
359
- ps[parameter['key']] = parameter['value']
360
- end
361
- end
362
- resource['parameters'] = ps
363
- end
364
-
365
- if type != nil
366
- if type == 'STATIC'
367
- resource['type'] = type
368
- resource.delete('proximity')
369
- if proximity_range == nil
370
- resource['proximity_range'] = 1;
371
- end
372
- end
373
-
374
- if type == 'DYNAMIC'
375
- resource['type'] = type
376
- resource.delete('proximity_range')
377
- end
378
- end
379
-
380
- if proximity_range != nil
381
- if resource['type'] == 'STATIC'
382
- resource['proximity_range'] = proximity_range
383
- end
384
- end
385
-
386
- if proximity == nil && discrete == nil && continuous == nil && parameters == nil
387
- resource.delete('proximity')
388
- resource.delete('continuous')
389
- resource.delete('discrete')
390
- end
391
-
392
- resources[rid]=resource
393
- computeResourceUpdate(app_id, run_id, rid)
394
-
395
- end
396
-
397
- # Request the position of a single resource
398
- nutella.f.net.handle_requests_on_all_runs('location/resources', lambda do |request, app_id, run_id, from|
399
- # Persistent data
400
- resources = nutella.f.persist.get_run_mongo_object_store(app_id, run_id, 'resources')
401
- groups = nutella.f.persist.get_run_mongo_object_store(app_id, run_id, 'groups')
402
-
403
- rid = request['rid']
404
- group = request['group']
405
- reply = nil
406
- if rid != nil
407
- reply = resources[rid]
408
-
409
- reply
410
- elsif group != nil
411
- rs = []
412
- reply = []
413
- for resource in groups[group]['resources']
414
- rs.push(resource)
415
- end
416
-
417
- for r in rs
418
- resource = resources[resource]
419
- # Translate discrete coordinate
420
- if resource['discrete'] != nil
421
- resource['discrete'] = translateDiscreteCoordinates(app_id, run_id, resource['discrete'])
422
- end
423
- reply.push(resource)
424
-
425
- end
426
- {:resources => reply}
427
- else
428
- resourceList = []
429
-
430
- resources.to_h.each do |_, resource|
431
- # Translate discrete coordinate
432
- if resource['discrete'] != nil
433
- resource['discrete'] = translateDiscreteCoordinates(app_id, run_id, resource['discrete'])
434
- end
435
- resourceList.push(resource)
436
- end
437
-
438
- {:resources => resourceList}
439
- end
440
- end)
441
-
442
- # Update the room size
443
- nutella.f.net.subscribe_to_all_runs('location/room/update', lambda do |message, app_id, run_id, from|
444
- # Persistent data
445
- room = nutella.f.persist.get_run_mongo_object_store(app_id, run_id, 'room')
446
-
447
- x = message['x']
448
- y = message['y']
449
-
450
- if x != nil && y != nil
451
- r = {}
452
- room['x'] = x
453
- r['x'] = x
454
-
455
- room['y'] = y
456
- r['y'] = y
457
-
458
- publishRoomUpdate(app_id, run_id, r)
459
- end
460
- end)
461
-
462
- # Compute and publish resource
463
- def computeResourceUpdate(app_id, run_id, rid)
464
- resources = nutella.f.persist.get_run_mongo_object_store(app_id, run_id, 'resources')
465
-
466
- resource = resources[rid]
467
-
468
- if resource != nil
469
- if resource['proximity'] != nil
470
- if resource['proximity']['rid'] != nil
471
- baseStation = resources[resource['proximity']['rid']]
472
-
473
- if baseStation != nil && baseStation['continuous'] != nil
474
- resource['proximity']['continuous'] = baseStation['continuous']
475
-
476
- # Update basic station
477
- computeResourceUpdate(app_id, run_id, resource['proximity']['rid'])
478
- end
479
-
480
- if baseStation != nil && baseStation['discrete'] != nil
481
- resource['proximity']['discrete'] = baseStation['discrete']
482
- end
483
- end
484
- end
485
-
486
- resources[rid] = resource
487
-
488
- =begin
489
- if resource['continuous'] != nil
490
- counter = 0 # Number of proximity beacons tracked from this station
491
- for r in $resources.keys()
492
- resource2 = $resources[r]
493
- if resource2['proximity'] != nil && resource2['proximity']['rid'] == resource['rid']
494
- counter += 1
495
- resource2['proximity']['continuous'] = resource['continuous']
496
- $resources[r] = resource2
497
- publishResourceUpdate(resource2)
498
- end
499
- end
500
- puts counter
501
- resource['number_resources'] = counter
502
- end
503
- =end
504
-
505
- # Translate discrete coordinate
506
- if resource['discrete'] != nil
507
- resource['discrete'] = translateDiscreteCoordinates(app_id, run_id, resource['discrete'])
508
- end
509
-
510
- # Send update
511
- publishResourceUpdate(app_id, run_id, resource)
512
-
513
- end
514
- end
515
-
516
- def translateDiscreteCoordinates(app_id, run_id, discrete)
517
- discrete_tracking = nutella.f.persist.get_run_mongo_object_store(app_id, run_id, 'discrete_tracking')
518
-
519
- if discrete != nil && discrete_tracking['t_x'] != nil && discrete_tracking['t_y'] != nil
520
- if discrete_tracking['t_x'] == 'LETTER'
521
- discrete['x'] = (discrete['x'] + 'a'.ord).chr
522
- end
523
- if discrete_tracking['t_y'] == 'LETTER'
524
- discrete['y'] = (discrete['y'] + 'a'.ord).chr
525
- end
526
- end
527
- discrete
528
- end
529
-
530
- # Update the room size
531
- nutella.f.net.subscribe_to_all_runs('location/tracking/discrete/update', lambda do |message, app_id, run_id, from|
532
-
533
- discrete_tracking = nutella.f.persist.get_run_mongo_object_store(app_id, run_id, 'discrete_tracking')
534
- tracking = message['tracking']
535
-
536
- if tracking != nil
537
- x = tracking['x']
538
- y = tracking['y']
539
- width = tracking['width']
540
- height = tracking['height']
541
- n_x = tracking['n_x']
542
- n_y = tracking['n_y']
543
- t_x = tracking['t_x']
544
- t_y = tracking['t_y']
545
-
546
- if x != nil && y != nil && width != nil && height != nil && n_x != nil && n_y != nil && t_x != nil && t_y != nil
547
- discrete_tracking['x'] = x
548
- discrete_tracking['y'] = y
549
- discrete_tracking['width'] = width
550
- discrete_tracking['height'] = height
551
- discrete_tracking['n_x'] = n_x
552
- discrete_tracking['n_y'] = n_y
553
- discrete_tracking['t_x'] = t_x
554
- discrete_tracking['t_y'] = t_y
555
- else
556
- discrete_tracking['x'] = nil
557
- discrete_tracking['y'] = nil
558
- discrete_tracking['width'] = nil
559
- discrete_tracking['height'] = nil
560
- discrete_tracking['n_x'] = nil
561
- discrete_tracking['n_y'] = nil
562
- discrete_tracking['t_x'] = nil
563
- discrete_tracking['t_y'] = nil
564
- end
565
-
566
- publishDiscreteUpdate(app_id, run_id)
567
- end
568
-
569
- end)
570
-
571
-
572
- # Publish an added resource
573
- def publishResourceAdd(app_id, run_id, resource)
574
- # Cache
575
- cache = RoomPlacesCachePublish.get_cache(app_id, run_id)
576
-
577
- cache.resources_add([resource])
578
- #nutella.net.publish('location/resources/added', {:resources => [resource]})
579
- end
580
-
581
- # Publish a removed resource
582
- def publishResourceRemove(app_id, run_id, resource)
583
- # Cache
584
- cache = RoomPlacesCachePublish.get_cache(app_id, run_id)
585
-
586
- cache.resources_remove([resource])
587
- #nutella.net.publish('location/resources/removed', {:resources => [resource]})
588
- end
589
-
590
- # Publish an updated resource
591
- def publishResourceUpdate(app_id, run_id, resource)
592
- # Cache
593
- cache = RoomPlacesCachePublish.get_cache(app_id, run_id)
594
-
595
- cache.resources_update([resource])
596
- #nutella.net.publish('location/resources/updated', {:resources => [resource]})
597
- end
598
-
599
- # Publish an updated room
600
- def publishRoomUpdate(app_id, run_id, room)
601
- nutella.f.net.publish_to_run(app_id, run_id, 'location/room/updated', room)
602
- end
603
-
604
- # Publish resources enter base station proximity area
605
- def publishResourcesEnter(app_id, run_id, resources, baseStationRid)
606
- # Cache
607
- cache = RoomPlacesCachePublish.get_cache(app_id, run_id)
608
-
609
- cache.resources_enter(resources, baseStationRid)
610
- end
611
-
612
- # Publish resources exit base station proximity area
613
- def publishResourcesExit(app_id, run_id, resources, baseStationRid)
614
- # Cache
615
- cache = RoomPlacesCachePublish.get_cache(app_id, run_id)
616
-
617
- cache.resources_exit(resources, baseStationRid)
618
- end
619
-
620
- # Publish resource enter base station proximity area
621
- def publishResourceEnter(app_id, run_id, resource, baseStationRid)
622
- publishResourcesEnter(app_id, run_id, [resource], baseStationRid)
623
- end
624
-
625
- # Publish resource enter base station proximity area
626
- def publishResourceExit(app_id, run_id, resource, baseStationRid)
627
- publishResourcesExit(app_id, run_id, [resource], baseStationRid)
628
- end
629
-
630
- # Publish tracking system update
631
- def publishDiscreteUpdate(app_id, run_id)
632
-
633
- resources = nutella.f.persist.get_run_mongo_object_store(app_id, run_id, 'resources')
634
- discrete_tracking = nutella.f.persist.get_run_mongo_object_store(app_id, run_id, 'discrete_tracking')
635
-
636
- x = discrete_tracking['x']
637
- y = discrete_tracking['y']
638
- width = discrete_tracking['width']
639
- height = discrete_tracking['height']
640
- n_x = discrete_tracking['n_x']
641
- n_y = discrete_tracking['n_y']
642
- t_x = discrete_tracking['t_x']
643
- t_y = discrete_tracking['t_y']
644
-
645
- if x != nil && y != nil && width != nil && height != nil && n_x != nil && n_y != nil && t_x != nil && t_y != nil
646
- message = {
647
- :x => x,
648
- :y => y,
649
- :width => width,
650
- :height => height,
651
- :n_x => n_x,
652
- :n_y => n_y,
653
- :t_x => t_x,
654
- :t_y => t_y
655
- }
656
- nutella.f.net.publish_to_run(app_id, run_id, 'location/tracking/discrete/updated', {:tracking => message})
657
-
658
- # Update all the discrete resources
659
- resources.to_h.each do |_, resource|
660
- if resource['discrete'] != nil
661
- computeResourceUpdate(app_id, run_id, resource)
662
- end
663
- end
664
-
665
- else
666
- nutella.f.net.publish_to_run(app_id, run_id, 'location/tracking/discrete/updated', {:tracking => {}})
667
- end
668
-
669
- end
670
-
671
- # Request the size of the room
672
- nutella.f.net.handle_requests_on_all_runs('location/room', lambda do |request, app_id, run_id, from|
673
- room = nutella.f.persist.get_run_mongo_object_store(app_id, run_id, 'room')
674
-
675
- r = {}
676
-
677
- if room['x'] == nil || room['y'] == nil
678
- r['x'] = 10
679
- r['y'] = 7
680
- else
681
- r['x'] = room['x']
682
- r['y'] = room['y']
683
- end
684
-
685
- if room['z'] != nil
686
- r['z'] = room['z']
687
- end
688
-
689
- r
690
- end)
691
-
692
- # Request discrete tracking system
693
- nutella.f.net.handle_requests_on_all_runs('location/tracking/discrete', lambda do |request, app_id, run_id, from|
694
-
695
- discrete_tracking = nutella.f.persist.get_run_mongo_object_store(app_id, run_id, 'discrete_tracking')
696
-
697
- x = discrete_tracking['x']
698
- y = discrete_tracking['y']
699
- width = discrete_tracking['width']
700
- height = discrete_tracking['height']
701
- n_x = discrete_tracking['n_x']
702
- n_y = discrete_tracking['n_y']
703
- t_x = discrete_tracking['t_x']
704
- t_y = discrete_tracking['t_y']
705
-
706
- if x != nil && y != nil && width != nil && height != nil && n_x != nil && n_y != nil && t_x != nil && t_y != nil
707
- tracking = {
708
- :x => x,
709
- :y => y,
710
- :width => width,
711
- :height => height,
712
- :n_x => n_x,
713
- :n_y => n_y,
714
- :t_x => t_x,
715
- :t_y => t_y
716
- }
717
- {:tracking => tracking}
718
- else
719
- {:tracking => {}}
720
- end
721
- end)
722
-
723
- # Routine that delete old proximity beacons
724
-
725
- while sleep 0.5
726
-
727
- Nutella.runlist.all_apps.each do |app_id|
728
- Nutella.runlist.runs_for_app(app_id).each do |run_id|
729
- baseStations = []
730
- resources = nutella.f.persist.get_run_mongo_object_store(app_id, run_id, 'resources')
731
- resources.set_auto_save(false)
732
-
733
- resources.to_h.each do |_, resource|
734
- if resource['proximity'] != nil && resource['proximity']['timestamp'] != nil
735
- if Time.now.to_f - resource['proximity']['timestamp'] > 5.0
736
- if resource['proximity']['rid'] != nil
737
- baseStations.push(resource['proximity']['rid'])
738
- publishResourceExit(app_id, run_id, resource, resource['proximity']['rid'])
739
- end
740
- resource['proximity'] = {}
741
- resources[resource['rid']] = resource
742
- publishResourceUpdate(app_id, run_id, resource)
743
- end
744
- end
745
- end
746
-
747
- # Update the counters of the base stations
748
- for baseStation in baseStations
749
- computeResourceUpdate(app_id, run_id, baseStation)
750
- end
751
-
752
- # Cache
753
- cache = RoomPlacesCachePublish.get_cache(app_id, run_id)
754
-
755
- cache.publish_update
756
- cache.publish_exit
757
- cache.publish_enter
758
-
759
- resources.save # Save the resource on the DB
760
- end
761
- end
762
-
763
- end
764
-
765
- # Just sit there waiting for messages to come
766
- nutella.net.listen