1
0
Fork 0
mirror of https://github.com/openstf/stf synced 2025-10-05 19:42:01 +02:00

Keep device data up to date on device page.

This commit is contained in:
Simo Kinnunen 2014-03-17 20:01:07 +09:00
parent ee8951e467
commit 238d5d6f4e
3 changed files with 18 additions and 6 deletions

View file

@ -10,18 +10,25 @@ module.exports = function DeviceServiceFactory($rootScope, $http, socket) {
, devicesBySerial = Object.create(null) , devicesBySerial = Object.create(null)
, scopedSocket = socket.scoped($scope) , scopedSocket = socket.scoped($scope)
function notify() {
// Not great. Consider something else
if (!$scope.$$phase) {
$scope.$digest()
}
}
function get(data) { function get(data) {
return devices[devicesBySerial[data.serial]] return devices[devicesBySerial[data.serial]]
} }
function insert(data) { function insert(data) {
devicesBySerial[data.serial] = devices.push(data) - 1 devicesBySerial[data.serial] = devices.push(data) - 1
$scope.$digest() notify()
} }
function modify(oldData, newData) { function modify(oldData, newData) {
_.assign(oldData, newData) _.assign(oldData, newData)
$scope.$digest() notify()
} }
function remove(data) { function remove(data) {
@ -29,7 +36,7 @@ module.exports = function DeviceServiceFactory($rootScope, $http, socket) {
if (index >= 0) { if (index >= 0) {
devices.splice(index, 1) devices.splice(index, 1)
delete devicesBySerial[data.serial] delete devicesBySerial[data.serial]
$scope.$digest() notify()
} }
} }
@ -78,9 +85,14 @@ module.exports = function DeviceServiceFactory($rootScope, $http, socket) {
return tracker return tracker
} }
deviceService.get = function (serial) { deviceService.get = function (serial, $scope) {
var tracker = new Tracker($scope, {
auto: false
})
return $http.get('/api/v1/devices/' + serial) return $http.get('/api/v1/devices/' + serial)
.then(function (response) { .then(function (response) {
tracker.add(response.data.device)
return response.data.device return response.data.device
}) })
} }

View file

@ -1,7 +1,7 @@
module.exports = function DeviceControlCtrl($scope, $routeParams, $location, DeviceService, GroupService, ControlService) { module.exports = function DeviceControlCtrl($scope, $routeParams, $location, DeviceService, GroupService, ControlService) {
$scope.control = null $scope.control = null
$scope.device = { $scope.device = {
promise: DeviceService.get($routeParams.serial) promise: DeviceService.get($routeParams.serial, $scope)
.then(function(device) { .then(function(device) {
return GroupService.invite(device) return GroupService.invite(device)
}) })

View file

@ -1,4 +1,4 @@
h1 {{ device.value.serial }} h1 {{ device.value.serial }} {{ device.value.present ? 'present' : 'absent' }}
button(ng-click='showScreen = !showScreen') Show/Hide button(ng-click='showScreen = !showScreen') Show/Hide
button(ng-click='control.identify()') Identify button(ng-click='control.identify()') Identify