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.
- checksums.yaml +5 -5
- data/Gemfile +1 -1
- data/VERSION +1 -1
- data/framework_components/order.json +1 -6
- data/nutella_framework.gemspec +7 -507
- metadata +5 -505
- data/framework_components/beacon-cloud-bot/README.md +0 -27
- data/framework_components/beacon-cloud-bot/beacon_cloud_bot.rb +0 -150
- data/framework_components/beacon-cloud-bot/beacons.json +0 -1
- data/framework_components/beacon-cloud-bot/startup +0 -5
- data/framework_components/logging_bot/logging_bot.rb +0 -42
- data/framework_components/logging_bot/startup +0 -5
- data/framework_components/logging_bot/utils.rb +0 -8
- data/framework_components/monitoring-bot/.gitignore +0 -34
- data/framework_components/monitoring-bot/README.md +0 -1
- data/framework_components/monitoring-bot/monitoring-bot.rb +0 -472
- data/framework_components/monitoring-bot/nutella.json +0 -6
- data/framework_components/monitoring-bot/startup +0 -6
- data/framework_components/monitoring-interface/.gitignore +0 -2
- data/framework_components/monitoring-interface/README.md +0 -1
- data/framework_components/monitoring-interface/bower.json +0 -29
- data/framework_components/monitoring-interface/bower_components/bower-mqttws/.bower.json +0 -23
- data/framework_components/monitoring-interface/bower_components/bower-mqttws/bower.json +0 -14
- data/framework_components/monitoring-interface/bower_components/bower-mqttws/mqttws31.js +0 -2081
- data/framework_components/monitoring-interface/bower_components/bower-mqttws/readme.md +0 -4
- data/framework_components/monitoring-interface/bower_components/nutella_lib/.bower.json +0 -37
- data/framework_components/monitoring-interface/bower_components/nutella_lib/LICENSE +0 -21
- data/framework_components/monitoring-interface/bower_components/nutella_lib/README.md +0 -15
- data/framework_components/monitoring-interface/bower_components/nutella_lib/bower.json +0 -28
- data/framework_components/monitoring-interface/bower_components/nutella_lib/examples/browser/mqtt_client_hello_world.html +0 -23
- data/framework_components/monitoring-interface/bower_components/nutella_lib/examples/browser/nutella_hello_world.html +0 -52
- data/framework_components/monitoring-interface/bower_components/nutella_lib/examples/node/mqtt_client_hello_world.js +0 -14
- data/framework_components/monitoring-interface/bower_components/nutella_lib/examples/node/nutella_hello_world.js +0 -38
- data/framework_components/monitoring-interface/bower_components/nutella_lib/nutella_lib.js +0 -789
- data/framework_components/monitoring-interface/bower_components/nutella_lib/package.json +0 -30
- data/framework_components/monitoring-interface/css/Monitoring Interface.html +0 -215
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/animations.js +0 -27
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/application-view-controller.js +0 -232
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/applications-model.js +0 -61
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/bootstrap.min.js +0 -7
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/cursor.css +0 -7
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/d3.v3.min.js +0 -5
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/graphics.js +0 -156
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/grid-layout.js +0 -103
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/highlight.min.js +0 -2
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/instance-view-controller.js +0 -104
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/jquery-1.10.0.min.js +0 -6
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/notification-center.js +0 -63
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/notifications.js +0 -14
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/page.css +0 -33
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/radial-layout.js +0 -175
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/tab-table.js +0 -8
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-application.css +0 -0
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-application.js +0 -320
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-connection-view.css +0 -10
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-connection-view.js +0 -426
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-element.js +0 -205
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-notification.js +0 -94
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/ui-tab.js +0 -229
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/underscore-min.js +0 -5
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/view-controller.js +0 -68
- data/framework_components/monitoring-interface/css/Monitoring Interface_files/window-view-controller.js +0 -169
- data/framework_components/monitoring-interface/css/alerts.css +0 -3
- data/framework_components/monitoring-interface/css/bootstrap.min.css +0 -5
- data/framework_components/monitoring-interface/css/cursor.css +0 -7
- data/framework_components/monitoring-interface/css/highlight.default.min.css +0 -1
- data/framework_components/monitoring-interface/css/page.css +0 -41
- data/framework_components/monitoring-interface/css/ui-application.css +0 -0
- data/framework_components/monitoring-interface/css/ui-connection-view.css +0 -10
- data/framework_components/monitoring-interface/css/ui-legend-view.css +0 -7
- data/framework_components/monitoring-interface/data/alert.json +0 -8
- data/framework_components/monitoring-interface/data/data.json +0 -2118
- data/framework_components/monitoring-interface/data/data2.json +0 -814
- data/framework_components/monitoring-interface/data/data3.json +0 -823
- data/framework_components/monitoring-interface/data/data4.json +0 -848
- data/framework_components/monitoring-interface/data/message.json +0 -999
- data/framework_components/monitoring-interface/gulpfile.js +0 -29
- data/framework_components/monitoring-interface/img/arrow_white.svg +0 -120
- data/framework_components/monitoring-interface/img/arrow_white_right.svg +0 -104
- data/framework_components/monitoring-interface/img/back.svg +0 -164
- data/framework_components/monitoring-interface/img/cross_red_border_white.svg +0 -143
- data/framework_components/monitoring-interface/img/cross_red_border_white_mouseover.svg +0 -143
- data/framework_components/monitoring-interface/img/email.svg +0 -89
- data/framework_components/monitoring-interface/img/email_highlighted.svg +0 -89
- data/framework_components/monitoring-interface/index.html +0 -144
- data/framework_components/monitoring-interface/js/d3/layout/grid-layout.js +0 -103
- data/framework_components/monitoring-interface/js/d3/layout/radial-layout.js +0 -184
- data/framework_components/monitoring-interface/js/d3/plugin/graphics.js +0 -156
- data/framework_components/monitoring-interface/js/d3/plugin/tab-table.js +0 -8
- data/framework_components/monitoring-interface/js/d3/ui/animations.js +0 -27
- data/framework_components/monitoring-interface/js/d3/ui/ui-application.js +0 -471
- data/framework_components/monitoring-interface/js/d3/ui/ui-connection-view.js +0 -861
- data/framework_components/monitoring-interface/js/d3/ui/ui-element.js +0 -245
- data/framework_components/monitoring-interface/js/d3/ui/ui-legend.js +0 -174
- data/framework_components/monitoring-interface/js/d3/ui/ui-notification.js +0 -90
- data/framework_components/monitoring-interface/js/d3/ui/ui-tab.js +0 -309
- data/framework_components/monitoring-interface/js/lib/JSXTransformer-0.12.2.js +0 -15199
- data/framework_components/monitoring-interface/js/lib/bootstrap.min.js +0 -7
- data/framework_components/monitoring-interface/js/lib/d3.v3.min.js +0 -5
- data/framework_components/monitoring-interface/js/lib/highlight.min.js +0 -2
- data/framework_components/monitoring-interface/js/lib/jquery-1.10.0.min.js +0 -6
- data/framework_components/monitoring-interface/js/lib/nutella_lib.js +0 -5121
- data/framework_components/monitoring-interface/js/lib/react-with-addons-0.12.2.js +0 -19822
- data/framework_components/monitoring-interface/js/lib/underscore-min.js +0 -5
- data/framework_components/monitoring-interface/js/model/alerts-model.js +0 -74
- data/framework_components/monitoring-interface/js/model/applications-model.js +0 -78
- data/framework_components/monitoring-interface/js/model/messages-model.js +0 -112
- data/framework_components/monitoring-interface/js/notification/notification-center.js +0 -63
- data/framework_components/monitoring-interface/js/notification/notifications.js +0 -21
- data/framework_components/monitoring-interface/js/react/dist/ui-alerts.js +0 -178
- data/framework_components/monitoring-interface/js/react/dist/ui-message-send.js +0 -389
- data/framework_components/monitoring-interface/js/react/dist/ui-messages.js +0 -103
- data/framework_components/monitoring-interface/js/react/src/ui-alerts.js +0 -178
- data/framework_components/monitoring-interface/js/react/src/ui-message-send.js +0 -389
- data/framework_components/monitoring-interface/js/react/src/ui-messages.js +0 -103
- data/framework_components/monitoring-interface/js/view-controller/application-view-controller.js +0 -259
- data/framework_components/monitoring-interface/js/view-controller/instance-view-controller.js +0 -112
- data/framework_components/monitoring-interface/js/view-controller/view-controller.js +0 -74
- data/framework_components/monitoring-interface/js/view-controller/window-view-controller.js +0 -169
- data/framework_components/monitoring-interface/nutella.json +0 -6
- data/framework_components/room-places-beacon-cloud-interface/LICENSE +0 -21
- data/framework_components/room-places-beacon-cloud-interface/Readme.md +0 -0
- data/framework_components/room-places-beacon-cloud-interface/bower.json +0 -29
- data/framework_components/room-places-beacon-cloud-interface/bower_components/bower-mqttws/.bower.json +0 -23
- data/framework_components/room-places-beacon-cloud-interface/bower_components/bower-mqttws/bower.json +0 -14
- data/framework_components/room-places-beacon-cloud-interface/bower_components/bower-mqttws/mqttws31.js +0 -2081
- data/framework_components/room-places-beacon-cloud-interface/bower_components/bower-mqttws/readme.md +0 -4
- data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/.bower.json +0 -37
- data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/LICENSE +0 -21
- data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/README.md +0 -15
- data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/bower.json +0 -28
- data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/examples/browser/mqtt_client_hello_world.html +0 -23
- data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/examples/browser/nutella_hello_world.html +0 -52
- data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/examples/node/mqtt_client_hello_world.js +0 -14
- data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/examples/node/nutella_hello_world.js +0 -38
- data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/nutella_lib.js +0 -789
- data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/package.json +0 -30
- data/framework_components/room-places-beacon-cloud-interface/bower_components/nutella_lib/simple-js-mqtt-client.js +0 -428
- data/framework_components/room-places-beacon-cloud-interface/css/animation.css +0 -17
- data/framework_components/room-places-beacon-cloud-interface/css/cursor.css +0 -16
- data/framework_components/room-places-beacon-cloud-interface/css/page_layout.css +0 -73
- data/framework_components/room-places-beacon-cloud-interface/index.html +0 -157
- data/framework_components/room-places-beacon-cloud-interface/js/lib/nutella_lib.js +0 -5121
- data/framework_components/room-places-beacon-cloud-interface/js/react/beacon-add.js +0 -102
- data/framework_components/room-places-beacon-cloud-interface/js/react/beacon-table.js +0 -73
- data/framework_components/room-places-beacon-cloud-interface/js/react/beacon.js +0 -97
- data/framework_components/room-places-beacon-cloud-interface/nutella.json +0 -6
- data/framework_components/room-places-bot/.gitignore +0 -4
- data/framework_components/room-places-bot/Gemfile +0 -3
- data/framework_components/room-places-bot/README.md +0 -66
- data/framework_components/room-places-bot/nutella.json +0 -6
- data/framework_components/room-places-bot/room_places_bot.rb +0 -766
- data/framework_components/room-places-bot/startup +0 -6
- data/framework_components/room-places-bot/virtual_beacons.rb +0 -124
- data/framework_components/room-places-interface/.gitignore +0 -3
- data/framework_components/room-places-interface/LICENSE +0 -21
- data/framework_components/room-places-interface/Readme.md +0 -0
- data/framework_components/room-places-interface/bower.json +0 -29
- data/framework_components/room-places-interface/bower_components/bower-mqttws/.bower.json +0 -23
- data/framework_components/room-places-interface/bower_components/bower-mqttws/bower.json +0 -14
- data/framework_components/room-places-interface/bower_components/bower-mqttws/mqttws31.js +0 -2081
- data/framework_components/room-places-interface/bower_components/bower-mqttws/readme.md +0 -4
- data/framework_components/room-places-interface/bower_components/nutella_lib/.bower.json +0 -37
- data/framework_components/room-places-interface/bower_components/nutella_lib/LICENSE +0 -21
- data/framework_components/room-places-interface/bower_components/nutella_lib/README.md +0 -15
- data/framework_components/room-places-interface/bower_components/nutella_lib/bower.json +0 -28
- data/framework_components/room-places-interface/bower_components/nutella_lib/examples/browser/mqtt_client_hello_world.html +0 -23
- data/framework_components/room-places-interface/bower_components/nutella_lib/examples/browser/nutella_hello_world.html +0 -52
- data/framework_components/room-places-interface/bower_components/nutella_lib/examples/node/mqtt_client_hello_world.js +0 -14
- data/framework_components/room-places-interface/bower_components/nutella_lib/examples/node/nutella_hello_world.js +0 -38
- data/framework_components/room-places-interface/bower_components/nutella_lib/nutella_lib.js +0 -789
- data/framework_components/room-places-interface/bower_components/nutella_lib/package.json +0 -30
- data/framework_components/room-places-interface/css/animation.css +0 -22
- data/framework_components/room-places-interface/css/bootstrap.min.css +0 -5
- data/framework_components/room-places-interface/css/cursor.css +0 -22
- data/framework_components/room-places-interface/css/font-awesome/css/font-awesome.css +0 -1801
- data/framework_components/room-places-interface/css/font-awesome/css/font-awesome.min.css +0 -4
- data/framework_components/room-places-interface/css/font-awesome/fonts/FontAwesome.otf +0 -0
- data/framework_components/room-places-interface/css/font-awesome/fonts/fontawesome-webfont.eot +0 -0
- data/framework_components/room-places-interface/css/font-awesome/fonts/fontawesome-webfont.svg +0 -565
- data/framework_components/room-places-interface/css/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
- data/framework_components/room-places-interface/css/font-awesome/fonts/fontawesome-webfont.woff +0 -0
- data/framework_components/room-places-interface/css/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
- data/framework_components/room-places-interface/css/font-awesome/less/animated.less +0 -34
- data/framework_components/room-places-interface/css/font-awesome/less/bordered-pulled.less +0 -16
- data/framework_components/room-places-interface/css/font-awesome/less/core.less +0 -13
- data/framework_components/room-places-interface/css/font-awesome/less/fixed-width.less +0 -6
- data/framework_components/room-places-interface/css/font-awesome/less/font-awesome.less +0 -17
- data/framework_components/room-places-interface/css/font-awesome/less/icons.less +0 -596
- data/framework_components/room-places-interface/css/font-awesome/less/larger.less +0 -13
- data/framework_components/room-places-interface/css/font-awesome/less/list.less +0 -19
- data/framework_components/room-places-interface/css/font-awesome/less/mixins.less +0 -27
- data/framework_components/room-places-interface/css/font-awesome/less/path.less +0 -15
- data/framework_components/room-places-interface/css/font-awesome/less/rotated-flipped.less +0 -20
- data/framework_components/room-places-interface/css/font-awesome/less/stacked.less +0 -20
- data/framework_components/room-places-interface/css/font-awesome/less/variables.less +0 -606
- data/framework_components/room-places-interface/css/font-awesome/scss/_animated.scss +0 -34
- data/framework_components/room-places-interface/css/font-awesome/scss/_bordered-pulled.scss +0 -16
- data/framework_components/room-places-interface/css/font-awesome/scss/_core.scss +0 -13
- data/framework_components/room-places-interface/css/font-awesome/scss/_fixed-width.scss +0 -6
- data/framework_components/room-places-interface/css/font-awesome/scss/_icons.scss +0 -596
- data/framework_components/room-places-interface/css/font-awesome/scss/_larger.scss +0 -13
- data/framework_components/room-places-interface/css/font-awesome/scss/_list.scss +0 -19
- data/framework_components/room-places-interface/css/font-awesome/scss/_mixins.scss +0 -27
- data/framework_components/room-places-interface/css/font-awesome/scss/_path.scss +0 -15
- data/framework_components/room-places-interface/css/font-awesome/scss/_rotated-flipped.scss +0 -20
- data/framework_components/room-places-interface/css/font-awesome/scss/_stacked.scss +0 -20
- data/framework_components/room-places-interface/css/font-awesome/scss/_variables.scss +0 -606
- data/framework_components/room-places-interface/css/font-awesome/scss/font-awesome.scss +0 -17
- data/framework_components/room-places-interface/css/icomoon.css +0 -57
- data/framework_components/room-places-interface/css/page_layout.css +0 -82
- data/framework_components/room-places-interface/fonts/glyphicons-halflings-regular.eot +0 -0
- data/framework_components/room-places-interface/fonts/glyphicons-halflings-regular.svg +0 -288
- data/framework_components/room-places-interface/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/framework_components/room-places-interface/fonts/glyphicons-halflings-regular.woff +0 -0
- data/framework_components/room-places-interface/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/framework_components/room-places-interface/fonts/icomoon.eot +0 -0
- data/framework_components/room-places-interface/fonts/icomoon.svg +0 -17
- data/framework_components/room-places-interface/fonts/icomoon.ttf +0 -0
- data/framework_components/room-places-interface/fonts/icomoon.woff +0 -0
- data/framework_components/room-places-interface/gulpfile.js +0 -24
- data/framework_components/room-places-interface/index.html +0 -73
- data/framework_components/room-places-interface/index2.html +0 -1753
- data/framework_components/room-places-interface/js/component.js +0 -438
- data/framework_components/room-places-interface/js/lib/JSXTransformer-0.12.2.js +0 -15199
- data/framework_components/room-places-interface/js/lib/bootstrap.min.js +0 -7
- data/framework_components/room-places-interface/js/lib/d3.v3.min.js +0 -5
- data/framework_components/room-places-interface/js/lib/jquery-1.10.0.min.js +0 -6
- data/framework_components/room-places-interface/js/lib/nutella_lib.js +0 -4145
- data/framework_components/room-places-interface/js/lib/react-with-addons-0.12.2.js +0 -19822
- data/framework_components/room-places-interface/js/lib/underscore.js +0 -6
- data/framework_components/room-places-interface/js/map.js +0 -1593
- data/framework_components/room-places-interface/js/position.js +0 -6
- data/framework_components/room-places-interface/js/react/dist/beacon.js +0 -30
- data/framework_components/room-places-interface/js/react/dist/discrete.js +0 -282
- data/framework_components/room-places-interface/js/react/dist/interactive-label.js +0 -54
- data/framework_components/room-places-interface/js/react/dist/resource-add.js +0 -203
- data/framework_components/room-places-interface/js/react/dist/resource-table.js +0 -227
- data/framework_components/room-places-interface/js/react/dist/resource.js +0 -433
- data/framework_components/room-places-interface/js/react/src/beacon.js +0 -30
- data/framework_components/room-places-interface/js/react/src/discrete.js +0 -282
- data/framework_components/room-places-interface/js/react/src/interactive-label.js +0 -54
- data/framework_components/room-places-interface/js/react/src/resource-add.js +0 -203
- data/framework_components/room-places-interface/js/react/src/resource-table.js +0 -227
- data/framework_components/room-places-interface/js/react/src/resource.js +0 -433
- data/framework_components/room-places-interface/js/room.js +0 -65
- data/framework_components/room-places-interface/nutella.json +0 -6
- data/framework_components/roomcast-bot/data/default/channels.json +0 -1
- data/framework_components/roomcast-bot/data/default/configs.json +0 -1
- data/framework_components/roomcast-bot/roomcast_bot.rb +0 -284
- data/framework_components/roomcast-bot/startup +0 -6
- data/framework_components/roomcast-channel-creator/.gitignore +0 -2
- data/framework_components/roomcast-channel-creator/README.md +0 -9
- data/framework_components/roomcast-channel-creator/dist/app.js +0 -44376
- data/framework_components/roomcast-channel-creator/dist/css/font-awesome.min.css +0 -4
- data/framework_components/roomcast-channel-creator/dist/css/ionicons.min.css +0 -11
- data/framework_components/roomcast-channel-creator/dist/fonts/FontAwesome.otf +0 -0
- data/framework_components/roomcast-channel-creator/dist/fonts/fontawesome-webfont.eot +0 -0
- data/framework_components/roomcast-channel-creator/dist/fonts/fontawesome-webfont.svg +0 -565
- data/framework_components/roomcast-channel-creator/dist/fonts/fontawesome-webfont.ttf +0 -0
- data/framework_components/roomcast-channel-creator/dist/fonts/fontawesome-webfont.woff +0 -0
- data/framework_components/roomcast-channel-creator/dist/fonts/fontawesome-webfont.woff2 +0 -0
- data/framework_components/roomcast-channel-creator/dist/fonts/ionicons.eot +0 -0
- data/framework_components/roomcast-channel-creator/dist/fonts/ionicons.svg +0 -2230
- data/framework_components/roomcast-channel-creator/dist/fonts/ionicons.ttf +0 -0
- data/framework_components/roomcast-channel-creator/dist/fonts/ionicons.woff +0 -0
- data/framework_components/roomcast-channel-creator/dist/main.css +0 -3310
- data/framework_components/roomcast-channel-creator/dist/nutella_lib.js +0 -5128
- data/framework_components/roomcast-channel-creator/gulp/config.js +0 -51
- data/framework_components/roomcast-channel-creator/gulp/tasks/browserify.js +0 -77
- data/framework_components/roomcast-channel-creator/gulp/tasks/build.js +0 -3
- data/framework_components/roomcast-channel-creator/gulp/tasks/css.js +0 -7
- data/framework_components/roomcast-channel-creator/gulp/tasks/default.js +0 -3
- data/framework_components/roomcast-channel-creator/gulp/tasks/fonts.js +0 -7
- data/framework_components/roomcast-channel-creator/gulp/tasks/less.js +0 -16
- data/framework_components/roomcast-channel-creator/gulp/tasks/mui-fonts.js +0 -7
- data/framework_components/roomcast-channel-creator/gulp/tasks/nutella.js +0 -7
- data/framework_components/roomcast-channel-creator/gulp/tasks/setWatch.js +0 -5
- data/framework_components/roomcast-channel-creator/gulp/tasks/svgs.js +0 -7
- data/framework_components/roomcast-channel-creator/gulp/tasks/watch.js +0 -12
- data/framework_components/roomcast-channel-creator/gulp/util/bundleLogger.js +0 -21
- data/framework_components/roomcast-channel-creator/gulp/util/handleErrors.js +0 -15
- data/framework_components/roomcast-channel-creator/gulpfile.js +0 -16
- data/framework_components/roomcast-channel-creator/index.html +0 -40
- data/framework_components/roomcast-channel-creator/nutella.json +0 -6
- data/framework_components/roomcast-channel-creator/package.json +0 -38
- data/framework_components/roomcast-channel-creator/roomcast-default.png +0 -0
- data/framework_components/roomcast-channel-creator/src/app/app.js +0 -28
- data/framework_components/roomcast-channel-creator/src/app/components/AnimationMixin.js +0 -44
- data/framework_components/roomcast-channel-creator/src/app/components/CataloguePage.js +0 -148
- data/framework_components/roomcast-channel-creator/src/app/components/Channel.js +0 -406
- data/framework_components/roomcast-channel-creator/src/app/components/ColorCell.js +0 -28
- data/framework_components/roomcast-channel-creator/src/app/components/ColorPicker.js +0 -53
- data/framework_components/roomcast-channel-creator/src/app/components/DetailPage.js +0 -66
- data/framework_components/roomcast-channel-creator/src/app/components/NutellaMixin.js +0 -40
- data/framework_components/roomcast-channel-creator/src/app/components/PageSliderMixin.js +0 -68
- data/framework_components/roomcast-channel-creator/src/app/components/Router.js +0 -52
- data/framework_components/roomcast-channel-creator/src/app/components/TopBar.js +0 -86
- data/framework_components/roomcast-channel-creator/src/app/components/UploadingScreen.js +0 -74
- data/framework_components/roomcast-channel-creator/src/app/components/main.js +0 -342
- data/framework_components/roomcast-channel-creator/src/css/font-awesome.min.css +0 -4
- data/framework_components/roomcast-channel-creator/src/css/ionicons.min.css +0 -11
- data/framework_components/roomcast-channel-creator/src/fonts/FontAwesome.otf +0 -0
- data/framework_components/roomcast-channel-creator/src/fonts/fontawesome-webfont.eot +0 -0
- data/framework_components/roomcast-channel-creator/src/fonts/fontawesome-webfont.svg +0 -565
- data/framework_components/roomcast-channel-creator/src/fonts/fontawesome-webfont.ttf +0 -0
- data/framework_components/roomcast-channel-creator/src/fonts/fontawesome-webfont.woff +0 -0
- data/framework_components/roomcast-channel-creator/src/fonts/fontawesome-webfont.woff2 +0 -0
- data/framework_components/roomcast-channel-creator/src/fonts/ionicons.eot +0 -0
- data/framework_components/roomcast-channel-creator/src/fonts/ionicons.svg +0 -2230
- data/framework_components/roomcast-channel-creator/src/fonts/ionicons.ttf +0 -0
- data/framework_components/roomcast-channel-creator/src/fonts/ionicons.woff +0 -0
- data/framework_components/roomcast-channel-creator/src/less/main.less +0 -506
- data/framework_components/roomcast-channel-creator/src/less/my_overrides.less +0 -14
- data/framework_components/roomcast-channel-creator/upload.svg +0 -216
- data/framework_components/roomcast-main-app/.gitignore +0 -2
- data/framework_components/roomcast-main-app/README.md +0 -9
- data/framework_components/roomcast-main-app/dist/LICENSE +0 -21
- data/framework_components/roomcast-main-app/dist/app.js +0 -54373
- data/framework_components/roomcast-main-app/dist/assets/Logo.png +0 -0
- data/framework_components/roomcast-main-app/dist/assets/Logo_alpha.png +0 -0
- data/framework_components/roomcast-main-app/dist/assets/Logo_grid.svg +0 -216
- data/framework_components/roomcast-main-app/dist/css/ionicons.min.css +0 -11
- data/framework_components/roomcast-main-app/dist/fonts/ionicons.eot +0 -0
- data/framework_components/roomcast-main-app/dist/fonts/ionicons.svg +0 -2230
- data/framework_components/roomcast-main-app/dist/fonts/ionicons.ttf +0 -0
- data/framework_components/roomcast-main-app/dist/fonts/ionicons.woff +0 -0
- data/framework_components/roomcast-main-app/dist/main.css +0 -3234
- data/framework_components/roomcast-main-app/gulp/config.js +0 -47
- data/framework_components/roomcast-main-app/gulp/tasks/browserify.js +0 -77
- data/framework_components/roomcast-main-app/gulp/tasks/build.js +0 -3
- data/framework_components/roomcast-main-app/gulp/tasks/css.js +0 -7
- data/framework_components/roomcast-main-app/gulp/tasks/default.js +0 -3
- data/framework_components/roomcast-main-app/gulp/tasks/fonts.js +0 -7
- data/framework_components/roomcast-main-app/gulp/tasks/less.js +0 -16
- data/framework_components/roomcast-main-app/gulp/tasks/markup.js +0 -7
- data/framework_components/roomcast-main-app/gulp/tasks/setWatch.js +0 -5
- data/framework_components/roomcast-main-app/gulp/tasks/svgs.js +0 -7
- data/framework_components/roomcast-main-app/gulp/tasks/watch.js +0 -12
- data/framework_components/roomcast-main-app/gulp/util/bundleLogger.js +0 -21
- data/framework_components/roomcast-main-app/gulp/util/handleErrors.js +0 -15
- data/framework_components/roomcast-main-app/gulpfile.js +0 -16
- data/framework_components/roomcast-main-app/index.html +0 -37
- data/framework_components/roomcast-main-app/nutella.json +0 -6
- data/framework_components/roomcast-main-app/package.json +0 -47
- data/framework_components/roomcast-main-app/roomcast-default.png +0 -0
- data/framework_components/roomcast-main-app/src/app/app.js +0 -15
- data/framework_components/roomcast-main-app/src/app/components/NutellaMixin.js +0 -56
- data/framework_components/roomcast-main-app/src/app/components/app/Channel.js +0 -68
- data/framework_components/roomcast-main-app/src/app/components/app/Player.js +0 -139
- data/framework_components/roomcast-main-app/src/app/components/app/iOSMixin.js +0 -22
- data/framework_components/roomcast-main-app/src/app/components/app/main.js +0 -567
- data/framework_components/roomcast-main-app/src/app/components/app/material-ui/menu-item.jsx +0 -79
- data/framework_components/roomcast-main-app/src/app/components/app/material-ui/menu.jsx +0 -177
- data/framework_components/roomcast-main-app/src/app/components/app/material-ui/overlay.jsx +0 -21
- data/framework_components/roomcast-main-app/src/app/components/app/material-ui/right-nav.jsx +0 -108
- data/framework_components/roomcast-main-app/src/app/components/identity-selector/IdentitiesGrid.js +0 -95
- data/framework_components/roomcast-main-app/src/app/components/identity-selector/IdentityCard.js +0 -103
- data/framework_components/roomcast-main-app/src/app/components/identity-selector/iOSMixin.js +0 -19
- data/framework_components/roomcast-main-app/src/app/components/identity-selector/main.js +0 -109
- data/framework_components/roomcast-main-app/src/app/components/login/AppIdPage.js +0 -97
- data/framework_components/roomcast-main-app/src/app/components/login/BrokerPage.js +0 -139
- data/framework_components/roomcast-main-app/src/app/components/login/IdentitiesGrid.js +0 -93
- data/framework_components/roomcast-main-app/src/app/components/login/IdentityCard.js +0 -99
- data/framework_components/roomcast-main-app/src/app/components/login/RunIdPage.js +0 -78
- data/framework_components/roomcast-main-app/src/app/components/login/iOSMixin.js +0 -23
- data/framework_components/roomcast-main-app/src/app/components/login/main.js +0 -125
- data/framework_components/roomcast-main-app/src/app/components/main.js +0 -64
- data/framework_components/roomcast-main-app/src/less/main.less +0 -365
- data/framework_components/roomcast-main-app/src/less/my_overrides.less +0 -53
- data/framework_components/roomcast-main-app/src/less/right-nav.less +0 -31
- data/framework_components/roomcast-package-creator/.gitignore +0 -2
- data/framework_components/roomcast-package-creator/README.md +0 -9
- data/framework_components/roomcast-package-creator/dist/app.js +0 -51196
- data/framework_components/roomcast-package-creator/dist/css/font-awesome.min.css +0 -4
- data/framework_components/roomcast-package-creator/dist/css/ionicons.min.css +0 -11
- data/framework_components/roomcast-package-creator/dist/fonts/FontAwesome.otf +0 -0
- data/framework_components/roomcast-package-creator/dist/fonts/fontawesome-webfont.eot +0 -0
- data/framework_components/roomcast-package-creator/dist/fonts/fontawesome-webfont.svg +0 -565
- data/framework_components/roomcast-package-creator/dist/fonts/fontawesome-webfont.ttf +0 -0
- data/framework_components/roomcast-package-creator/dist/fonts/fontawesome-webfont.woff +0 -0
- data/framework_components/roomcast-package-creator/dist/fonts/fontawesome-webfont.woff2 +0 -0
- data/framework_components/roomcast-package-creator/dist/fonts/ionicons.eot +0 -0
- data/framework_components/roomcast-package-creator/dist/fonts/ionicons.svg +0 -2230
- data/framework_components/roomcast-package-creator/dist/fonts/ionicons.ttf +0 -0
- data/framework_components/roomcast-package-creator/dist/fonts/ionicons.woff +0 -0
- data/framework_components/roomcast-package-creator/dist/fonts/material-ui-icons.eot +0 -0
- data/framework_components/roomcast-package-creator/dist/fonts/material-ui-icons.svg +0 -14
- data/framework_components/roomcast-package-creator/dist/fonts/material-ui-icons.ttf +0 -0
- data/framework_components/roomcast-package-creator/dist/fonts/material-ui-icons.woff +0 -0
- data/framework_components/roomcast-package-creator/dist/main.css +0 -5682
- data/framework_components/roomcast-package-creator/dist/nutella_lib.js +0 -5128
- data/framework_components/roomcast-package-creator/gulp/config.js +0 -51
- data/framework_components/roomcast-package-creator/gulp/tasks/browserify.js +0 -77
- data/framework_components/roomcast-package-creator/gulp/tasks/build.js +0 -3
- data/framework_components/roomcast-package-creator/gulp/tasks/css.js +0 -7
- data/framework_components/roomcast-package-creator/gulp/tasks/default.js +0 -3
- data/framework_components/roomcast-package-creator/gulp/tasks/fonts.js +0 -7
- data/framework_components/roomcast-package-creator/gulp/tasks/less.js +0 -16
- data/framework_components/roomcast-package-creator/gulp/tasks/mui-fonts.js +0 -7
- data/framework_components/roomcast-package-creator/gulp/tasks/nutella.js +0 -7
- data/framework_components/roomcast-package-creator/gulp/tasks/setWatch.js +0 -5
- data/framework_components/roomcast-package-creator/gulp/tasks/svgs.js +0 -7
- data/framework_components/roomcast-package-creator/gulp/tasks/watch.js +0 -12
- data/framework_components/roomcast-package-creator/gulp/util/bundleLogger.js +0 -21
- data/framework_components/roomcast-package-creator/gulp/util/handleErrors.js +0 -15
- data/framework_components/roomcast-package-creator/gulpfile.js +0 -16
- data/framework_components/roomcast-package-creator/index.html +0 -38
- data/framework_components/roomcast-package-creator/nutella.json +0 -6
- data/framework_components/roomcast-package-creator/package.json +0 -39
- data/framework_components/roomcast-package-creator/roomcast-default.png +0 -0
- data/framework_components/roomcast-package-creator/src/app/app.js +0 -30
- data/framework_components/roomcast-package-creator/src/app/components/ButtonInteractionsMixin.js +0 -45
- data/framework_components/roomcast-package-creator/src/app/components/ChannelCard.js +0 -100
- data/framework_components/roomcast-package-creator/src/app/components/ChannelItem.js +0 -71
- data/framework_components/roomcast-package-creator/src/app/components/ChannelsCatalogue.js +0 -51
- data/framework_components/roomcast-package-creator/src/app/components/ChannelsPanel.js +0 -127
- data/framework_components/roomcast-package-creator/src/app/components/ConfigField.js +0 -50
- data/framework_components/roomcast-package-creator/src/app/components/ConfigurationsPanel.js +0 -112
- data/framework_components/roomcast-package-creator/src/app/components/ContextButton.js +0 -37
- data/framework_components/roomcast-package-creator/src/app/components/GlobalButton.js +0 -28
- data/framework_components/roomcast-package-creator/src/app/components/NutellaMixin.js +0 -58
- data/framework_components/roomcast-package-creator/src/app/components/PoolHeader.js +0 -67
- data/framework_components/roomcast-package-creator/src/app/components/PoolRow.js +0 -160
- data/framework_components/roomcast-package-creator/src/app/components/ResourceFamilyPool.js +0 -168
- data/framework_components/roomcast-package-creator/src/app/components/ResourcesPanel.js +0 -76
- data/framework_components/roomcast-package-creator/src/app/components/main.js +0 -239
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/dialog_.jsx +0 -66
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/drop-down-menu.jsx +0 -159
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/enhanced-textarea.jsx +0 -113
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/floating-action-button_.jsx +0 -73
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/menu-item.jsx +0 -100
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/menu.jsx +0 -211
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/overlay.jsx +0 -21
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/raised-button_.jsx +0 -72
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/right-nav.jsx +0 -108
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/ripple.jsx +0 -52
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/drop-down-arrow.jsx +0 -17
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/navigation-chevron-left.jsx +0 -16
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/navigation-chevron-right.jsx +0 -17
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/navigation-menu.jsx +0 -16
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/svg-icon.jsx +0 -23
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/toggle-check-box-checked.jsx +0 -16
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/toggle-check-box-outline-blank.jsx +0 -16
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/toggle-radio-button-off.jsx +0 -16
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/svg-icons/toggle-radio-button-on.jsx +0 -16
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/text-field.jsx +0 -215
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/css-event.js +0 -52
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/date-time.js +0 -132
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/dom.js +0 -71
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/events.js +0 -34
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/key-code.js +0 -10
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/key-line.js +0 -13
- data/framework_components/roomcast-package-creator/src/app/components/material-ui/utils/unique-id.js +0 -7
- data/framework_components/roomcast-package-creator/src/css/font-awesome.min.css +0 -4
- data/framework_components/roomcast-package-creator/src/css/ionicons.min.css +0 -11
- data/framework_components/roomcast-package-creator/src/fonts/FontAwesome.otf +0 -0
- data/framework_components/roomcast-package-creator/src/fonts/fontawesome-webfont.eot +0 -0
- data/framework_components/roomcast-package-creator/src/fonts/fontawesome-webfont.svg +0 -565
- data/framework_components/roomcast-package-creator/src/fonts/fontawesome-webfont.ttf +0 -0
- data/framework_components/roomcast-package-creator/src/fonts/fontawesome-webfont.woff +0 -0
- data/framework_components/roomcast-package-creator/src/fonts/fontawesome-webfont.woff2 +0 -0
- data/framework_components/roomcast-package-creator/src/fonts/ionicons.eot +0 -0
- data/framework_components/roomcast-package-creator/src/fonts/ionicons.svg +0 -2230
- data/framework_components/roomcast-package-creator/src/fonts/ionicons.ttf +0 -0
- data/framework_components/roomcast-package-creator/src/fonts/ionicons.woff +0 -0
- data/framework_components/roomcast-package-creator/src/less/drop-down-icon.less +0 -43
- data/framework_components/roomcast-package-creator/src/less/drop-down-menu.less +0 -77
- data/framework_components/roomcast-package-creator/src/less/enhanced-textarea.less +0 -16
- data/framework_components/roomcast-package-creator/src/less/main.less +0 -514
- data/framework_components/roomcast-package-creator/src/less/menu-item.less +0 -71
- data/framework_components/roomcast-package-creator/src/less/menu.less +0 -50
- data/framework_components/roomcast-package-creator/src/less/my_overrides.less +0 -15
- data/framework_components/roomcast-package-creator/src/less/svg-icon.less +0 -11
- data/framework_components/roomcast-package-creator/src/less/text-field.less +0 -168
- data/framework_components/roomcast-teacher-controls/.gitignore +0 -2
- data/framework_components/roomcast-teacher-controls/README.md +0 -9
- data/framework_components/roomcast-teacher-controls/dist/app.js +0 -43614
- data/framework_components/roomcast-teacher-controls/dist/main.css +0 -3043
- data/framework_components/roomcast-teacher-controls/dist/nutella_lib.js +0 -5128
- data/framework_components/roomcast-teacher-controls/gulp/config.js +0 -51
- data/framework_components/roomcast-teacher-controls/gulp/tasks/browserify.js +0 -77
- data/framework_components/roomcast-teacher-controls/gulp/tasks/build.js +0 -3
- data/framework_components/roomcast-teacher-controls/gulp/tasks/css.js +0 -7
- data/framework_components/roomcast-teacher-controls/gulp/tasks/default.js +0 -3
- data/framework_components/roomcast-teacher-controls/gulp/tasks/fonts.js +0 -7
- data/framework_components/roomcast-teacher-controls/gulp/tasks/less.js +0 -16
- data/framework_components/roomcast-teacher-controls/gulp/tasks/mui-fonts.js +0 -7
- data/framework_components/roomcast-teacher-controls/gulp/tasks/nutella.js +0 -7
- data/framework_components/roomcast-teacher-controls/gulp/tasks/setWatch.js +0 -5
- data/framework_components/roomcast-teacher-controls/gulp/tasks/svgs.js +0 -7
- data/framework_components/roomcast-teacher-controls/gulp/tasks/watch.js +0 -12
- data/framework_components/roomcast-teacher-controls/gulp/util/bundleLogger.js +0 -21
- data/framework_components/roomcast-teacher-controls/gulp/util/handleErrors.js +0 -15
- data/framework_components/roomcast-teacher-controls/gulpfile.js +0 -16
- data/framework_components/roomcast-teacher-controls/index.html +0 -37
- data/framework_components/roomcast-teacher-controls/nutella.json +0 -6
- data/framework_components/roomcast-teacher-controls/package.json +0 -38
- data/framework_components/roomcast-teacher-controls/src/app/app.js +0 -28
- data/framework_components/roomcast-teacher-controls/src/app/components/ActivitiesGrid.js +0 -87
- data/framework_components/roomcast-teacher-controls/src/app/components/ActivityCard.js +0 -183
- data/framework_components/roomcast-teacher-controls/src/app/components/Footer.js +0 -37
- data/framework_components/roomcast-teacher-controls/src/app/components/NutellaMixin.js +0 -58
- data/framework_components/roomcast-teacher-controls/src/app/components/main.js +0 -125
- data/framework_components/roomcast-teacher-controls/src/less/main.less +0 -196
- 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,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,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
|