From aebeb4d35780efa5782ffabb098aa8ecc961755e Mon Sep 17 00:00:00 2001 From: Gunther Brunner Date: Thu, 19 Jun 2014 21:13:20 +0900 Subject: [PATCH] Added Restart Device functionality. Added device status to Fatal Message modal. Added auto-reconnect to Fatal Message modal. --- .../fatal-message/fatal-message-service.js | 32 +++++++++++++++++-- .../modals/fatal-message/fatal-message.jade | 24 ++++---------- .../maintenance/maintenance-controller.js | 7 ++-- .../control-panes/control-panes-controller.js | 7 +++- res/app/layout/layout-controller.js | 2 +- 5 files changed, 47 insertions(+), 25 deletions(-) diff --git a/res/app/components/stf/common-ui/modals/fatal-message/fatal-message-service.js b/res/app/components/stf/common-ui/modals/fatal-message/fatal-message-service.js index d6165ddc..38e21aa9 100644 --- a/res/app/components/stf/common-ui/modals/fatal-message/fatal-message-service.js +++ b/res/app/components/stf/common-ui/modals/fatal-message/fatal-message-service.js @@ -1,6 +1,7 @@ -module.exports = function FatalMessageServiceFactory($modal, $location, $route) { +module.exports = function FatalMessageServiceFactory($modal, $location, $route, $interval) { var FatalMessageService = {} + var intervalDeviceInfo var ModalInstanceCtrl = function ($scope, $modalInstance, device) { $scope.ok = function () { @@ -9,6 +10,18 @@ module.exports = function FatalMessageServiceFactory($modal, $location, $route) //$location.path('/control/' + device.serial) } + // TODO: this is ugly, find why its not updated correctly (also on the device list) + intervalDeviceInfo = $interval(function () { + $scope.device = device + + if (device.usable) { + // Try to reconnect + $scope.ok() + } + }, 1000, 500) + + $scope.device = device + $scope.second = function () { $modalInstance.dismiss() $location.path('/devices/') @@ -17,6 +30,17 @@ module.exports = function FatalMessageServiceFactory($modal, $location, $route) $scope.cancel = function () { $modalInstance.dismiss('cancel') } + + var destroyInterval = function () { + if (angular.isDefined(intervalDeviceInfo)) { + $interval.cancel(intervalDeviceInfo) + intervalDeviceInfo = undefined + } + } + + $scope.$on('$destroy', function () { + destroyInterval() + }) } FatalMessageService.open = function (device) { @@ -24,11 +48,13 @@ module.exports = function FatalMessageServiceFactory($modal, $location, $route) template: require('./fatal-message.jade'), controller: ModalInstanceCtrl, resolve: { - device: device + device: function () { + return device + } } }) - modalInstance.result.then(function (selectedItem) { + modalInstance.result.then(function () { }, function () { }) diff --git a/res/app/components/stf/common-ui/modals/fatal-message/fatal-message.jade b/res/app/components/stf/common-ui/modals/fatal-message/fatal-message.jade index 31a6f8d5..49bbf965 100644 --- a/res/app/components/stf/common-ui/modals/fatal-message/fatal-message.jade +++ b/res/app/components/stf/common-ui/modals/fatal-message/fatal-message.jade @@ -4,8 +4,13 @@ h4.modal-title.text-danger i.fa.fa-warning .button-spacer - span(translate) Device was disconnected - .modal-body.text-danger(translate) You are no longer controlling the device. + span(translate) {{ device.enhancedName }} was disconnected + .modal-body + .text-danger(translate) You are no longer controlling the device. + br + h4(translate).pull-right {{ device.enhancedName }} current status: + //span(ng-class='device.enhancedButtonClass').btn.btn-xs.device-status {{device.enhancedState }} + span {{ device.enhancedState }} .modal-footer button.btn.btn-primary(type='button', ng-click='ok()') i.fa.fa-refresh @@ -13,18 +18,3 @@ button.btn.btn-success(ng-click='second()') i.fa.fa-sitemap span(translate) Go to Device List - //button.btn.btn-warning(ng-click='cancel()') Close - - //' - // - // - //' diff --git a/res/app/control-panes/advanced/maintenance/maintenance-controller.js b/res/app/control-panes/advanced/maintenance/maintenance-controller.js index acc5b3e6..c44bae69 100644 --- a/res/app/control-panes/advanced/maintenance/maintenance-controller.js +++ b/res/app/control-panes/advanced/maintenance/maintenance-controller.js @@ -1,6 +1,6 @@ module.exports = function ($scope, gettext, $filter) { - $scope.reboot = function (device) { + $scope.reboot = function () { var config = { rebootEnabled: true } @@ -8,8 +8,9 @@ module.exports = function ($scope, gettext, $filter) { if (config.rebootEnabled) { if (confirm($filter('translate')( gettext('Are you sure you want to reboot this device? \nThe device will be unavailable for a moment.')))) { - console.log('reboot') - + $scope.control.reboot().then(function (result) { + console.error(result) + }) } } } diff --git a/res/app/control-panes/control-panes-controller.js b/res/app/control-panes/control-panes-controller.js index 7cbe5da4..5221e1e9 100644 --- a/res/app/control-panes/control-panes-controller.js +++ b/res/app/control-panes/control-panes-controller.js @@ -151,6 +151,8 @@ module.exports = function ControlPanesController($scope, $http, gettext, $routeP $scope.device = device $scope.control = ControlService.create(device, device.channel) + //FatalMessageService.open($scope.device) + return device }) .catch(function () { @@ -159,14 +161,17 @@ module.exports = function ControlPanesController($scope, $http, gettext, $routeP }) }) + // TODO: WHAT??? $scope.$watch('device') + + $scope.$watch('device.state', function (newValue, oldValue) { if (newValue !== oldValue) { if (oldValue === 'using') { - FatalMessageService.open(angular.copy($scope.device)) + FatalMessageService.open($scope.device) } } else if (typeof newValue === 'undefined' && typeof oldValue === 'undefined') { //FatalMessageService.open(angular.copy($scope.device)) diff --git a/res/app/layout/layout-controller.js b/res/app/layout/layout-controller.js index d196e5f0..8bc5e1f2 100644 --- a/res/app/layout/layout-controller.js +++ b/res/app/layout/layout-controller.js @@ -1,3 +1,3 @@ -module.exports = function LayoutCtrl(FatalMessageService, LanguageService) { +module.exports = function LayoutCtrl(LanguageService) { LanguageService.init() }