nutella_framework 0.4.13 → 0.4.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (176) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/VERSION +1 -1
  4. data/framework_components/order.json +2 -1
  5. data/framework_components/roomcast-bot/data/default/channels-data.json +1 -0
  6. data/framework_components/roomcast-bot/data/default/channels.json +1 -0
  7. data/framework_components/roomcast-bot/data/default/configs.json +1 -0
  8. data/framework_components/roomcast-bot/data/default/mapping.json +1 -0
  9. data/framework_components/roomcast-bot/roomcast_bot.rb +178 -0
  10. data/framework_components/roomcast-bot/startup +5 -0
  11. data/framework_components/roomcast-channel-creator/.gitignore +2 -0
  12. data/framework_components/roomcast-channel-creator/README.md +9 -0
  13. data/framework_components/roomcast-channel-creator/dist/app.js +29607 -0
  14. data/framework_components/roomcast-channel-creator/dist/css/font-awesome.min.css +4 -0
  15. data/framework_components/roomcast-channel-creator/dist/css/ionicons.min.css +11 -0
  16. data/framework_components/roomcast-channel-creator/dist/fonts/FontAwesome.otf +0 -0
  17. data/framework_components/roomcast-channel-creator/dist/fonts/fontawesome-webfont.eot +0 -0
  18. data/framework_components/roomcast-channel-creator/dist/fonts/fontawesome-webfont.svg +565 -0
  19. data/framework_components/roomcast-channel-creator/dist/fonts/fontawesome-webfont.ttf +0 -0
  20. data/framework_components/roomcast-channel-creator/dist/fonts/fontawesome-webfont.woff +0 -0
  21. data/framework_components/roomcast-channel-creator/dist/fonts/fontawesome-webfont.woff2 +0 -0
  22. data/framework_components/roomcast-channel-creator/dist/fonts/ionicons.eot +0 -0
  23. data/framework_components/roomcast-channel-creator/dist/fonts/ionicons.svg +2230 -0
  24. data/framework_components/roomcast-channel-creator/dist/fonts/ionicons.ttf +0 -0
  25. data/framework_components/roomcast-channel-creator/dist/fonts/ionicons.woff +0 -0
  26. data/framework_components/roomcast-channel-creator/dist/main.css +3304 -0
  27. data/framework_components/roomcast-channel-creator/dist/nutella_lib.js +5068 -0
  28. data/framework_components/roomcast-channel-creator/gulp/config.js +51 -0
  29. data/framework_components/roomcast-channel-creator/gulp/tasks/browserify.js +77 -0
  30. data/framework_components/roomcast-channel-creator/gulp/tasks/build.js +3 -0
  31. data/framework_components/roomcast-channel-creator/gulp/tasks/css.js +7 -0
  32. data/framework_components/roomcast-channel-creator/gulp/tasks/default.js +3 -0
  33. data/framework_components/roomcast-channel-creator/gulp/tasks/fonts.js +7 -0
  34. data/framework_components/roomcast-channel-creator/gulp/tasks/less.js +16 -0
  35. data/framework_components/roomcast-channel-creator/gulp/tasks/mui-fonts.js +7 -0
  36. data/framework_components/roomcast-channel-creator/gulp/tasks/nutella.js +7 -0
  37. data/framework_components/roomcast-channel-creator/gulp/tasks/setWatch.js +5 -0
  38. data/framework_components/roomcast-channel-creator/gulp/tasks/svgs.js +7 -0
  39. data/framework_components/roomcast-channel-creator/gulp/tasks/watch.js +12 -0
  40. data/framework_components/roomcast-channel-creator/gulp/util/bundleLogger.js +21 -0
  41. data/framework_components/roomcast-channel-creator/gulp/util/handleErrors.js +15 -0
  42. data/framework_components/roomcast-channel-creator/gulpfile.js +16 -0
  43. data/framework_components/roomcast-channel-creator/index.html +52 -0
  44. data/framework_components/roomcast-channel-creator/nutella.json +6 -0
  45. data/framework_components/roomcast-channel-creator/package.json +37 -0
  46. data/framework_components/roomcast-channel-creator/src/app/app.js +22 -0
  47. data/framework_components/roomcast-channel-creator/src/app/components/AnimationMixin.js +44 -0
  48. data/framework_components/roomcast-channel-creator/src/app/components/CataloguePage.js +130 -0
  49. data/framework_components/roomcast-channel-creator/src/app/components/Channel.js +378 -0
  50. data/framework_components/roomcast-channel-creator/src/app/components/ColorCell.js +28 -0
  51. data/framework_components/roomcast-channel-creator/src/app/components/ColorPicker.js +53 -0
  52. data/framework_components/roomcast-channel-creator/src/app/components/DetailPage.js +66 -0
  53. data/framework_components/roomcast-channel-creator/src/app/components/NutellaMixin.js +40 -0
  54. data/framework_components/roomcast-channel-creator/src/app/components/PageSliderMixin.js +68 -0
  55. data/framework_components/roomcast-channel-creator/src/app/components/Router.js +52 -0
  56. data/framework_components/roomcast-channel-creator/src/app/components/TopBar.js +86 -0
  57. data/framework_components/roomcast-channel-creator/src/app/components/main.js +333 -0
  58. data/framework_components/roomcast-channel-creator/src/css/font-awesome.min.css +4 -0
  59. data/framework_components/roomcast-channel-creator/src/css/ionicons.min.css +11 -0
  60. data/framework_components/roomcast-channel-creator/src/fonts/FontAwesome.otf +0 -0
  61. data/framework_components/roomcast-channel-creator/src/fonts/fontawesome-webfont.eot +0 -0
  62. data/framework_components/roomcast-channel-creator/src/fonts/fontawesome-webfont.svg +565 -0
  63. data/framework_components/roomcast-channel-creator/src/fonts/fontawesome-webfont.ttf +0 -0
  64. data/framework_components/roomcast-channel-creator/src/fonts/fontawesome-webfont.woff +0 -0
  65. data/framework_components/roomcast-channel-creator/src/fonts/fontawesome-webfont.woff2 +0 -0
  66. data/framework_components/roomcast-channel-creator/src/fonts/ionicons.eot +0 -0
  67. data/framework_components/roomcast-channel-creator/src/fonts/ionicons.svg +2230 -0
  68. data/framework_components/roomcast-channel-creator/src/fonts/ionicons.ttf +0 -0
  69. data/framework_components/roomcast-channel-creator/src/fonts/ionicons.woff +0 -0
  70. data/framework_components/roomcast-channel-creator/src/less/main.less +500 -0
  71. data/framework_components/roomcast-channel-creator/src/less/my_overrides.less +14 -0
  72. data/framework_components/roomcast-package-creator/.gitignore +2 -0
  73. data/framework_components/roomcast-package-creator/README.md +9 -0
  74. data/framework_components/roomcast-package-creator/dist/app.js +36624 -0
  75. data/framework_components/roomcast-package-creator/dist/css/font-awesome.min.css +4 -0
  76. data/framework_components/roomcast-package-creator/dist/css/ionicons.min.css +11 -0
  77. data/framework_components/roomcast-package-creator/dist/fonts/FontAwesome.otf +0 -0
  78. data/framework_components/roomcast-package-creator/dist/fonts/fontawesome-webfont.eot +0 -0
  79. data/framework_components/roomcast-package-creator/dist/fonts/fontawesome-webfont.svg +565 -0
  80. data/framework_components/roomcast-package-creator/dist/fonts/fontawesome-webfont.ttf +0 -0
  81. data/framework_components/roomcast-package-creator/dist/fonts/fontawesome-webfont.woff +0 -0
  82. data/framework_components/roomcast-package-creator/dist/fonts/fontawesome-webfont.woff2 +0 -0
  83. data/framework_components/roomcast-package-creator/dist/fonts/ionicons.eot +0 -0
  84. data/framework_components/roomcast-package-creator/dist/fonts/ionicons.svg +2230 -0
  85. data/framework_components/roomcast-package-creator/dist/fonts/ionicons.ttf +0 -0
  86. data/framework_components/roomcast-package-creator/dist/fonts/ionicons.woff +0 -0
  87. data/framework_components/roomcast-package-creator/dist/fonts/material-ui-icons.eot +0 -0
  88. data/framework_components/roomcast-package-creator/dist/fonts/material-ui-icons.svg +14 -0
  89. data/framework_components/roomcast-package-creator/dist/fonts/material-ui-icons.ttf +0 -0
  90. data/framework_components/roomcast-package-creator/dist/fonts/material-ui-icons.woff +0 -0
  91. data/framework_components/roomcast-package-creator/dist/main.css +5932 -0
  92. data/framework_components/roomcast-package-creator/dist/nutella_lib.js +5068 -0
  93. data/framework_components/roomcast-package-creator/gulp/config.js +51 -0
  94. data/framework_components/roomcast-package-creator/gulp/tasks/browserify.js +77 -0
  95. data/framework_components/roomcast-package-creator/gulp/tasks/build.js +3 -0
  96. data/framework_components/roomcast-package-creator/gulp/tasks/css.js +7 -0
  97. data/framework_components/roomcast-package-creator/gulp/tasks/default.js +3 -0
  98. data/framework_components/roomcast-package-creator/gulp/tasks/fonts.js +7 -0
  99. data/framework_components/roomcast-package-creator/gulp/tasks/less.js +16 -0
  100. data/framework_components/roomcast-package-creator/gulp/tasks/mui-fonts.js +7 -0
  101. data/framework_components/roomcast-package-creator/gulp/tasks/nutella.js +7 -0
  102. data/framework_components/roomcast-package-creator/gulp/tasks/setWatch.js +5 -0
  103. data/framework_components/roomcast-package-creator/gulp/tasks/svgs.js +7 -0
  104. data/framework_components/roomcast-package-creator/gulp/tasks/watch.js +12 -0
  105. data/framework_components/roomcast-package-creator/gulp/util/bundleLogger.js +21 -0
  106. data/framework_components/roomcast-package-creator/gulp/util/handleErrors.js +15 -0
  107. data/framework_components/roomcast-package-creator/gulpfile.js +16 -0
  108. data/framework_components/roomcast-package-creator/index.html +51 -0
  109. data/framework_components/roomcast-package-creator/nutella.json +6 -0
  110. data/framework_components/roomcast-package-creator/package.json +38 -0
  111. data/framework_components/roomcast-package-creator/src/app/app.js +19 -0
  112. data/framework_components/roomcast-package-creator/src/app/components/ButtonInteractionsMixin.js +45 -0
  113. data/framework_components/roomcast-package-creator/src/app/components/ChannelCard.js +87 -0
  114. data/framework_components/roomcast-package-creator/src/app/components/ChannelItem.js +71 -0
  115. data/framework_components/roomcast-package-creator/src/app/components/ChannelsCatalogue.js +64 -0
  116. data/framework_components/roomcast-package-creator/src/app/components/ChannelsPanel.js +127 -0
  117. data/framework_components/roomcast-package-creator/src/app/components/ConfigField.js +50 -0
  118. data/framework_components/roomcast-package-creator/src/app/components/ConfigurationsPanel.js +114 -0
  119. data/framework_components/roomcast-package-creator/src/app/components/ContextButton.js +37 -0
  120. data/framework_components/roomcast-package-creator/src/app/components/GlobalButton.js +26 -0
  121. data/framework_components/roomcast-package-creator/src/app/components/NutellaMixin.js +23 -0
  122. data/framework_components/roomcast-package-creator/src/app/components/PoolHeader.js +67 -0
  123. data/framework_components/roomcast-package-creator/src/app/components/PoolRow.js +160 -0
  124. data/framework_components/roomcast-package-creator/src/app/components/ResourceFamilyPool.js +168 -0
  125. data/framework_components/roomcast-package-creator/src/app/components/ResourcesPanel.js +76 -0
  126. data/framework_components/roomcast-package-creator/src/app/components/main.js +222 -0
  127. data/framework_components/roomcast-package-creator/src/app/components/material-ui/dialog_.jsx +66 -0
  128. data/framework_components/roomcast-package-creator/src/app/components/material-ui/drop-down-menu.jsx +163 -0
  129. data/framework_components/roomcast-package-creator/src/app/components/material-ui/enhanced-textarea.jsx +113 -0
  130. data/framework_components/roomcast-package-creator/src/app/components/material-ui/floating-action-button_.jsx +73 -0
  131. data/framework_components/roomcast-package-creator/src/app/components/material-ui/menu-item.jsx +100 -0
  132. data/framework_components/roomcast-package-creator/src/app/components/material-ui/menu.jsx +209 -0
  133. data/framework_components/roomcast-package-creator/src/app/components/material-ui/overlay.jsx +21 -0
  134. data/framework_components/roomcast-package-creator/src/app/components/material-ui/raised-button_.jsx +72 -0
  135. data/framework_components/roomcast-package-creator/src/app/components/material-ui/right-nav.jsx +108 -0
  136. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/drop-down-arrow.jsx +17 -0
  137. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/navigation-chevron-left.jsx +16 -0
  138. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/navigation-chevron-right.jsx +17 -0
  139. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/navigation-menu.jsx +16 -0
  140. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/svg-icon.jsx +23 -0
  141. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/toggle-check-box-checked.jsx +16 -0
  142. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/toggle-check-box-outline-blank.jsx +16 -0
  143. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/toggle-radio-button-off.jsx +16 -0
  144. data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/toggle-radio-button-on.jsx +16 -0
  145. data/framework_components/roomcast-package-creator/src/app/components/material-ui/text-field.jsx +215 -0
  146. data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/css-event.js +52 -0
  147. data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/date-time.js +132 -0
  148. data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/dom.js +71 -0
  149. data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/events.js +34 -0
  150. data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/key-code.js +10 -0
  151. data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/key-line.js +13 -0
  152. data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/unique-id.js +7 -0
  153. data/framework_components/roomcast-package-creator/src/css/font-awesome.min.css +4 -0
  154. data/framework_components/roomcast-package-creator/src/css/ionicons.min.css +11 -0
  155. data/framework_components/roomcast-package-creator/src/fonts/FontAwesome.otf +0 -0
  156. data/framework_components/roomcast-package-creator/src/fonts/fontawesome-webfont.eot +0 -0
  157. data/framework_components/roomcast-package-creator/src/fonts/fontawesome-webfont.svg +565 -0
  158. data/framework_components/roomcast-package-creator/src/fonts/fontawesome-webfont.ttf +0 -0
  159. data/framework_components/roomcast-package-creator/src/fonts/fontawesome-webfont.woff +0 -0
  160. data/framework_components/roomcast-package-creator/src/fonts/fontawesome-webfont.woff2 +0 -0
  161. data/framework_components/roomcast-package-creator/src/fonts/ionicons.eot +0 -0
  162. data/framework_components/roomcast-package-creator/src/fonts/ionicons.svg +2230 -0
  163. data/framework_components/roomcast-package-creator/src/fonts/ionicons.ttf +0 -0
  164. data/framework_components/roomcast-package-creator/src/fonts/ionicons.woff +0 -0
  165. data/framework_components/roomcast-package-creator/src/less/drop-down-icon.less +43 -0
  166. data/framework_components/roomcast-package-creator/src/less/drop-down-menu.less +77 -0
  167. data/framework_components/roomcast-package-creator/src/less/enhanced-textarea.less +16 -0
  168. data/framework_components/roomcast-package-creator/src/less/main.less +491 -0
  169. data/framework_components/roomcast-package-creator/src/less/menu-item.less +69 -0
  170. data/framework_components/roomcast-package-creator/src/less/menu.less +50 -0
  171. data/framework_components/roomcast-package-creator/src/less/my_overrides.less +15 -0
  172. data/framework_components/roomcast-package-creator/src/less/svg-icon.less +11 -0
  173. data/framework_components/roomcast-package-creator/src/less/text-field.less +168 -0
  174. data/lib/commands/checkup.rb +1 -1
  175. data/nutella_lib/framework_net.rb +0 -1
  176. metadata +173 -4
@@ -0,0 +1 @@
1
+ {"channels":{"1":{"name":"Admin","icon":"#fde0ef","screenshot":"Admin.png","description":"description: first channel","url":"http://matteopalvarini.com/viz/Project3","type":"web"},"2":{"name":"AggregateView","icon":"#e7d4e8","screenshot":"AggregateView.png","description":"","url":"http://google.it","type":"web"},"3":{"name":"Seismograph1","icon":"#e6f5d0","screenshot":"Seismograph1.png","description":"","url":"roomquake.seismometer://","type":"iOS"},"4":{"name":"Seismograph2","icon":"#f6e8c3","screenshot":"Seismograph2.png","description":"Descr","url":"http://d3js.org","type":"iOS"},"5":{"name":"Seismograph3","icon":"#f46d43","screenshot":"Seismograph3.png","description":"Description","url":"roomquake.seismometer://","type":"iOS"},"6":{"name":"Seismograph4","icon":"#c7eae5","screenshot":"Seismograph4.png","description":"","url":"roomquake.seismometer://","type":"iOS"},"7":{"name":"Student Forms","icon":"#fee0b6","screenshot":"StudentsForms.png","description":"","url":"http://uic.edu","type":"web"},"8":{"name":" New channel","icon":"#e7d4e8","screenshot":"IMG_0020.JPG","description":"Description - new","url":"iOS custom url","type":"iOS"}}}
@@ -0,0 +1 @@
1
+ {"configs":{"1":{"name":"Very old","mapping":[{"family":"iPad","items":[{"name":"Very old","channels":["01","07"]},{"name":"group3","channels":["01","02","04","07"]},{"name":"group4","channels":["01","02","03","04","05","06","07"]},{"name":"Predators","channels":["01","02"]}]},{"family":"Mac","items":[{"name":"mac1","channels":["01"]},{"name":"mac2","channels":["01"]},{"name":"mac3","channels":["01","02"]},{"name":"","channels":[]},{"name":"","channels":[]},{"name":"mac","channels":[]},{"name":"","channels":[]}]}]},"2":{"name":"Old","mapping":[{"family":"iPad","items":[{"name":"Old","channels":["01","07"]},{"name":"Prey","channels":["01","02","04","07"]}]},{"family":"Mac","items":[{"name":"mac1","channels":["01","02"]},{"name":"mac2","channels":["03"]}]}]},"3":{"name":"New","mapping":[{"family":"iPad","items":[{"name":"New","channels":["01","07"]},{"name":"Girls","channels":[]},{"name":"","channels":[]}]},{"family":"Mac","items":[{"name":"mac1","channels":["01","02"]},{"name":"mac2","channels":["03"]},{"name":"","channels":[]},{"name":"","channels":[]},{"name":"","channels":[]},{"name":"","channels":[]},{"name":"","channels":[]},{"name":"","channels":[]}]}]},"4":{"name":"Newest","mapping":[{"family":"iPad","items":[{"name":"Newest","channels":["01"]},{"name":"Group 2","channels":["01"]}]},{"family":"Mac","items":[{"name":"","channels":[]}]}]},"5":{"name":"Next week","mapping":[{"family":"iPad","items":[{"name":"1","channels":[]},{"name":"5","channels":[]}]},{"family":"Mac","items":[{"name":"2","channels":[]},{"name":"3","channels":[]},{"name":"4","channels":[]}]}]},"6":{"name":"RoomQuake","mapping":[{"family":"iPad","items":[{"name":"","channels":[]}]},{"family":"Mac","items":[{"name":"","channels":[]}]}]},"7":{"name":"","mapping":[{"family":"iPad","items":[{"name":"","channels":[]}]},{"family":"Mac","items":[{"name":"","channels":[]}]}]},"8":{"name":"","mapping":[{"family":"iPad","items":[{"name":"","channels":[]}]},{"family":"Mac","items":[{"name":"","channels":[]}]}]}},"currentConfig":5}
@@ -0,0 +1 @@
1
+ {"mapping":[{"family":"iPad","items":[{"name":"iPad1","channels":["01","07"]},{"name":"group3","channels":["01","02","04","07"]},{"name":"group4","channels":["01","02","03","04","05","06","07"]},{"name":"Predators","channels":["02"]}]},{"family":"Mac","items":[{"name":"mac1","channels":["01","02"]},{"name":"mac2","channels":["01"]},{"name":"mac3","channels":["01","02"]}]}]}
@@ -0,0 +1,178 @@
1
+ require_relative '../../lib/config/runlist'
2
+ require_relative '../../lib/config/config'
3
+ require_relative '../../nutella_lib/framework_core'
4
+ require 'json'
5
+
6
+ nutella.f.init(Nutella.config['broker'], 'roomcast-bot')
7
+
8
+ puts 'Initializing RoomCast...'
9
+
10
+ # Open the database
11
+ #configs_db = nutella.persist.get_json_object_store('configs')
12
+ #channels_db = nutella.persist.get_json_object_store('channels')
13
+ #channelsData_db = nutella.persist.get_json_object_store('channels-data')
14
+
15
+ nutella.f.net.subscribe_to_all_runs('configs/update', lambda do |message, app_id, run_id, from|
16
+
17
+ new_configs = message
18
+
19
+ puts 'configs/update:'
20
+ puts new_configs
21
+
22
+ # Update
23
+ configs_db = nutella.f.persist.get_run_json_object_store(app_id, run_id, 'configs')
24
+ if new_configs != nil
25
+ configs_db[:configs] = new_configs
26
+ end
27
+
28
+ puts 'Updated DB'
29
+
30
+ # Notify Update
31
+
32
+ # Notify change of all configs
33
+ publish_configs_update(new_configs)
34
+
35
+ # Notify possible change of current config
36
+ configs = configs_db['configs']
37
+ id = '%d' % configs_db['currentConfig']
38
+ config = configs[id]
39
+ publish_mapping_update(config['mapping'])
40
+
41
+ end)
42
+
43
+ nutella.f.net.handle_requests_on_all_runs('configs/retrieve', lambda do |request, app_id, run_id, from|
44
+ puts 'request: ' + request
45
+ reply = {}
46
+ if request == {}
47
+ reply
48
+ elsif request == 'all'
49
+ configs_db = nutella.f.persist.get_run_json_object_store(app_id, run_id, 'configs')
50
+ reply = configs_db['configs']
51
+ puts reply
52
+ reply
53
+ end
54
+ end)
55
+
56
+ # 'mapping' is the current running configuration
57
+ nutella.f.net.handle_requests_on_all_runs('mapping/retrieve', lambda do |request, app_id, run_id, from|
58
+ puts 'request: ' + request
59
+ reply = {}
60
+ if request == {}
61
+ reply
62
+ elsif request == 'all'
63
+ configs_db = nutella.f.persist.get_run_json_object_store(app_id, run_id, 'configs')
64
+ configs = configs_db['configs']
65
+ id = '%d' % configs_db['currentConfig']
66
+ config = configs[id]
67
+ reply = config['mapping']
68
+ puts reply
69
+ reply
70
+ end
71
+ end)
72
+
73
+ nutella.f.net.subscribe_to_all_runs('currentConfig/update', lambda do |message, app_id, run_id, from|
74
+
75
+ new_config = message
76
+
77
+ puts 'currentConfig/update:'
78
+ puts new_config
79
+
80
+ # Update
81
+ if new_config != nil
82
+ configs_db = nutella.f.persist.get_run_json_object_store(app_id, run_id, 'configs')
83
+ configs_db['currentConfig'] = new_config
84
+ end
85
+
86
+ puts 'Updated DB'
87
+
88
+ # Notify Update
89
+ publish_current_config_update(new_config)
90
+
91
+ end)
92
+
93
+ # Reacts to updates to config id by publishing the updated mapping
94
+ nutella.f.net.subscribe_to_all_runs('currentConfig/updated', lambda do |message, app_id, run_id, from|
95
+
96
+ begin
97
+ configs_db = nutella.f.persist.get_run_json_object_store(app_id, run_id, 'configs')
98
+ configs = configs_db['configs']
99
+ id = '%d' % configs_db['currentConfig']
100
+ config = configs[id]
101
+ publish_switch_config(config['mapping'])
102
+ rescue => exception
103
+ puts exception
104
+ puts exception.backtrace
105
+ raise exception
106
+ end
107
+
108
+ end)
109
+
110
+ nutella.f.net.handle_requests_on_all_runs('currentConfig/retrieve', lambda do |request, app_id, run_id, from|
111
+ puts 'request: ' + request
112
+ reply = {}
113
+ configs_db = nutella.f.persist.get_run_json_object_store(app_id, run_id, 'configs')
114
+ reply = configs_db['currentConfig']
115
+ puts reply
116
+ reply
117
+ end)
118
+
119
+ nutella.f.net.subscribe_to_all_runs('channels/update', lambda do |message, app_id, run_id, from|
120
+
121
+ new_channels = message
122
+
123
+ # Update
124
+ if new_channels != nil
125
+ channels_db = nutella.f.persist.get_run_json_object_store(app_id, run_id, 'channels')
126
+ channels_db['channels'] = new_channels
127
+ end
128
+
129
+ # Notify Update
130
+ publish_channels_update(new_channels)
131
+
132
+ end)
133
+
134
+ nutella.f.net.handle_requests_on_all_runs('channels/retrieve', lambda do |request, app_id, run_id, from|
135
+ reply = {}
136
+ if request == {}
137
+ reply
138
+ elsif request == 'all'
139
+ puts 'requesting channels'
140
+ channels_db = nutella.f.persist.get_run_json_object_store(app_id, run_id, 'channels')
141
+ reply = channels_db['channels']
142
+ puts reply
143
+ reply
144
+ end
145
+ end)
146
+
147
+ def publish_configs_update(configs)
148
+ nutella.net.publish('configs/updated', configs)
149
+ puts 'Sent configs/updated'
150
+ end
151
+
152
+ # Sends the update config id
153
+ def publish_current_config_update(config_id)
154
+ nutella.net.publish('currentConfig/updated', config_id)
155
+ puts 'Sent currentConfig/updated'
156
+ end
157
+
158
+ # Sends the whole new current configuration
159
+ def publish_switch_config(mapping)
160
+ nutella.net.publish('currentConfig/switched', mapping)
161
+ puts 'Sent currentConfig/switched'
162
+ end
163
+
164
+ # Sends the current config (mapping), which might have been updated
165
+ def publish_mapping_update(mapping)
166
+ nutella.net.publish('mapping/updated', mapping)
167
+ puts 'Sent mapping/updated'
168
+ end
169
+
170
+ def publish_channels_update(channels)
171
+ nutella.net.publish('channels/updated', channels)
172
+ puts 'Sent channels/updated'
173
+ end
174
+
175
+ puts 'Initialization complete.'
176
+
177
+ # Just sit there waiting for messages to come
178
+ nutella.net.listen
@@ -0,0 +1,5 @@
1
+ #!/bin/sh
2
+
3
+ BASEDIR=$(dirname $0)
4
+ ruby $BASEDIR/roomcast_bot.rb > /dev/null 2>&1 &
5
+ echo $! > $BASEDIR/.pid
@@ -0,0 +1,2 @@
1
+ .idea/
2
+ node_modules
@@ -0,0 +1,9 @@
1
+ # RoomCast Channel Creator web interface
2
+ Framework interface to create channels for RoomCast.
3
+
4
+ To build:
5
+ ```
6
+ npm install -g gulp # Optional, if you don't have gulp
7
+ npm install # To install dependencies
8
+ gulp # To build
9
+ ```