From 694cc18a40ae5c71ec280b3aea2e1fa4d51ab640 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Tue, 8 Sep 2015 17:59:56 +0200 Subject: wip --- .bowerrc | 2 +- bower.json | 3 +- deploy | 3 ++ src/BeerDuke.js | 78 ++++++++++++++++++++++++--------------------- src/BeerDukeController.js | 4 +-- src/BeerDukeTap.js | 38 +++++++++++++++------- src/controller.html | 5 +-- src/tap.html | 1 + src/templates/footer.html | 2 +- src/templates/settings.html | 13 ++++++-- src/templates/tap.html | 8 ++++- 11 files changed, 97 insertions(+), 60 deletions(-) create mode 100755 deploy diff --git a/.bowerrc b/.bowerrc index 6ff629d..aa5a0f2 100644 --- a/.bowerrc +++ b/.bowerrc @@ -1,3 +1,3 @@ { - "directory": "fuck" + "directory": "src/bower_components" } diff --git a/bower.json b/bower.json index 9440f4d..7df0965 100644 --- a/bower.json +++ b/bower.json @@ -13,6 +13,7 @@ "tests" ], "dependencies": { - "angular-route": "~1.4.5" + "angular-route": "~1.4.5", + "lodash": "~3.10.1" } } diff --git a/deploy b/deploy new file mode 100755 index 0000000..1fcce9c --- /dev/null +++ b/deploy @@ -0,0 +1,3 @@ +#!/bin/bash + +rsync -a --progress src/ trygvis.io:/var/www/beer.java.no/htdocs diff --git a/src/BeerDuke.js b/src/BeerDuke.js index 6f88016..eb30307 100644 --- a/src/BeerDuke.js +++ b/src/BeerDuke.js @@ -4,60 +4,46 @@ function SettingsController($log, $location, BeerDukeSettings) { var ctrl = this; - ctrl.clientId = BeerDukeSettings.clientId(); - ctrl.showSettings = BeerDukeSettings.showSettings(); + ctrl.settings = BeerDukeSettings.values; ctrl.save = function () { - BeerDukeSettings.clientId(ctrl.clientId); - BeerDukeSettings.showSettings(ctrl.showSettings); BeerDukeSettings.save(); - $location.path('/') } } function BeerDukeSettings() { + var keys = [ + 'clientId', + 'showSettings', + 'tsUrl' + ]; + + var values = {}; + function save() { - store('clientId', clientId_); - store('showSettings', showSettings_); + _.forEach(keys, function (key) { + store('key', values[key]); + }); } - function store(key, value) { - window.localStorage[key] = angular.toJson(value); - return value; + function store() { + window.localStorage['beer-duke'] = angular.toJson(values); } - function load(key) { - var x = window.localStorage[key]; - if (typeof x === 'undefined') { - return x; - } - - return angular.fromJson(x); + function load() { + values = angular.fromJson(window.localStorage['beer-duke'] || '{}'); } - var clientId_ = load('clientId') || 'beer-duke-' + Math.round(Math.random() * 100000); - var showSettings_ = load('showSettings') || false; + load(); + values.clientId = values.clientId || 'beer-duke-' + Math.round(Math.random() * 100000); + values.showSettings = values.showSettings || false; save(); - function clientId(x) { - if (x) { - clientId_ = x; - } - return clientId_; - } - - function showSettings(x) { - if (x) { - showSettings_ = x; - } - return showSettings_; - } - return { - clientId: clientId, - showSettings: showSettings, + keys: keys, + values: values, load: load, save: save } @@ -70,7 +56,7 @@ var callbacks = {}; function connect(type) { - var clientId = BeerDukeSettings.clientId() + "-" + type; + var clientId = BeerDukeSettings.values.clientId + "-" + type; var client = new Paho.MQTT.Client("wss://trygvis.io:9001/", clientId); client.onConnectionLost = function (a) { $timeout(function () { @@ -164,6 +150,23 @@ } } + function TsService($log, $http, BeerDukeSettings) { + var url = BeerDukeSettings.values.tsUrl; + + function giveBeer() { + if (!url) { + return; + } + $http.get(url + '/GiveBeer').then(function () { + $log.info('beer dispensed!') + }); + } + + return { + giveBeer: giveBeer + } + } + function config($routeProvider) { $routeProvider .when('/settings', { @@ -177,7 +180,7 @@ } function run($rootScope, BeerDukeSettings, BeerDukeService) { - $rootScope.settings = BeerDukeSettings; + $rootScope.settings = BeerDukeSettings.values; $rootScope.mqtt = { connected: BeerDukeService.connected } @@ -185,6 +188,7 @@ angular.module('BeerDuke', ['ngRoute']) .factory('BeerDukeService', BeerDukeService) + .factory('TsService', TsService) .factory('BeerDukeSettings', BeerDukeSettings) .config(config) .run(run); diff --git a/src/BeerDukeController.js b/src/BeerDukeController.js index 8aeafb8..48e9cd4 100644 --- a/src/BeerDukeController.js +++ b/src/BeerDukeController.js @@ -4,7 +4,7 @@ function BeerDukeControllerController($log, BeerDukeService, BeerDukeSettings) { var ctrl = this; - if (BeerDukeSettings.showSettings()) { + if (BeerDukeSettings.values.showSettings) { ctrl.code = 123; ctrl.email = 'foo@example.org'; } @@ -16,7 +16,7 @@ }; $log.info('payload', payload); - BeerDukeService.submit('/beer-duke', payload); + BeerDukeService.submit('/beer-duke/give-beer', payload); }; BeerDukeService.callbacks.onMessageArrived = function (m) { diff --git a/src/BeerDukeTap.js b/src/BeerDukeTap.js index ed12a17..6370071 100644 --- a/src/BeerDukeTap.js +++ b/src/BeerDukeTap.js @@ -1,36 +1,50 @@ (function () { 'use strict'; - function BeerDukeTapController($log, $timeout, BeerDukeService) { + function BeerDukeTapController($log, $timeout, BeerDukeService, TsService) { var ctrl = this; + var messages = ctrl.messages = []; + ctrl.count = 0; + ctrl.code = ''; rotateCode(); - self.count = 0; - self.code = ''; function rotateCode() { - self.code = '' + self.count++; + ctrl.code = '' + ctrl.count++; $timeout(function () { rotateCode(); }, 1000); } BeerDukeService.callbacks.onConnect = function () { - BeerDukeService.subscribe('/beer-duke'); + BeerDukeService.subscribe('/beer-duke/give-beer'); }; BeerDukeService.callbacks.onMessageArrived = function (m) { $log.info('m.payloadString =', m.payloadString); - var payload = angular.fromJson(m.payloadString); - var code = payload.code; - var email = payload.email; - - if (typeof code !== 'string' && typeof email !== 'string') { - $log.warn('bad payload', payload.code); + var payload; + try { + payload = angular.fromJson(m.payloadString); + messages.unshift(payload); + } catch (e) { + $log.warn('could not parse json payload', e); + $log.warn('JSON:', payloadString); return; } - ctrl.message = payload; + if (m.destinationName == '/beer-duke/give-beer') { + var code = payload.code; + var email = payload.email; + + if (typeof code !== 'string' && typeof email !== 'string') { + $log.warn('bad payload', payload.code); + return; + } + + TsService.giveBeer(); + + ctrl.message = payload; + } }; BeerDukeService.connect('tap'); diff --git a/src/controller.html b/src/controller.html index 33477f9..a4d2507 100644 --- a/src/controller.html +++ b/src/controller.html @@ -1,8 +1,9 @@ - - + + + diff --git a/src/tap.html b/src/tap.html index 5196b97..85aab0a 100644 --- a/src/tap.html +++ b/src/tap.html @@ -3,6 +3,7 @@ + diff --git a/src/templates/footer.html b/src/templates/footer.html index 182554d..4820e68 100644 --- a/src/templates/footer.html +++ b/src/templates/footer.html @@ -1,4 +1,4 @@ -
+

settings
connected = {{mqtt.connected()}} diff --git a/src/templates/settings.html b/src/templates/settings.html index f118e47..cca9f22 100644 --- a/src/templates/settings.html +++ b/src/templates/settings.html @@ -1,4 +1,4 @@ -
+

Settings

@@ -8,14 +8,21 @@

+

+ +

+

diff --git a/src/templates/tap.html b/src/templates/tap.html index 48d5e37..bf99523 100644 --- a/src/templates/tap.html +++ b/src/templates/tap.html @@ -1,5 +1,11 @@
Last: {{ctrl.message | json}} - + + +
+ Messages: +
{{m}}
+
+
-- cgit v1.2.3