diff --git a/app/board.ctrl.js b/app/board.ctrl.js index ac017a9..5fc676a 100644 --- a/app/board.ctrl.js +++ b/app/board.ctrl.js @@ -3,17 +3,26 @@ angular.module('app').controller('BoardCtrl', Ctrl); - function Ctrl() { + Ctrl.$inject = ['board']; + + function Ctrl(board) { var vm = this; - vm.toggleAlarm = toggleAlarm; + vm.state = {}; - vm.state = { light: false, alarm: false }; + init(); + function init() { + board.getBoardState().then(function(state) { + vm.state = state + }); + } - function toggleAlarm() { - vm.state.alarm = !vm.state.alarm; + vm.lightSwitchCallback = function(isOn) { + board.setLight(isOn).then(init) + } + + vm.alarmSwitchCallback = function(isOn) { + board.setAlarm(isOn).then(init) } } })(); - - diff --git a/app/board.srv.js b/app/board.srv.js index a6937ac..dd6c495 100644 --- a/app/board.srv.js +++ b/app/board.srv.js @@ -3,24 +3,42 @@ angular.module('app').service('board', Srv); - Srv.$inject = ['$q']; + Srv.$inject = ['$q', '$window']; - function Srv($q) { + function Srv($q, $window) { this.getBoardState = getBoardState; this.setLight = setLight; this.setAlarm = setAlarm; function getBoardState() { - return { light: false, alarm: true }; + return $q.when(getState()) } + function getState() { + var string = $window.sessionStorage.getItem('BOARD-STATE'); + return string ? JSON.parse(string) : {}; + } + + function saveState(state) { + var string = JSON.stringify(state); + $window.sessionStorage.setItem('BOARD-STATE', string); + } + + function setLight(isOn) { + var state = getState(); + state.light = isOn; + saveState(state); + return $q.when(); } function setAlarm(isOn) { + var state = getState(); + state.alarm = isOn; + saveState(state); + return $q.when(); } - } diff --git a/app/switch.cmp.js b/app/switch.cmp.js index e8e42f1..ccb2fc4 100644 --- a/app/switch.cmp.js +++ b/app/switch.cmp.js @@ -4,14 +4,23 @@ var options = { templateUrl: 'app/switch.cmp.html', controller: Controller, - bindings: {} + bindings: { + isOn: '
- Toggle alarm + + Light: + + + Alarm: + +