From 03da3caa68f5b167c0403568513c3f75d8ebc9c9 Mon Sep 17 00:00:00 2001 From: Jean-Roch Maitre Date: Mon, 6 Jul 2015 16:18:55 -0700 Subject: [PATCH] UI-377: Added restart feature to SmartPBX --- i18n/en-US.json | 8 ++++++++ i18n/fr-FR.json | 8 ++++++++ submodules/devices/devices.css | 5 +++++ submodules/devices/devices.js | 37 +++++++++++++++++++++++++++++----- views/devices-row.html | 2 +- views/devices-sip_device.html | 12 ++++++++++- 6 files changed, 65 insertions(+), 7 deletions(-) diff --git a/i18n/en-US.json b/i18n/en-US.json index ae3661d..6ca4f98 100644 --- a/i18n/en-US.json +++ b/i18n/en-US.json @@ -186,6 +186,14 @@ "ignoreCompletedElsewhere": { "label": "Ignore Completed Elsewhere", "help": "When checked supporting phones will show a call missed if it was part of a ring group answered elsewhere." + }, + "__comment": "UI-377: Adding Restart device feature", + "__version": "3.21", + "restart": { + "label": "Send a Restart request", + "button": "Restart", + "help": "This sends a request to restart the device. This action is only available if the device is currently registered to the platform.", + "success": "You successfully sent a Restart request to this device!" } }, "restrictions": { diff --git a/i18n/fr-FR.json b/i18n/fr-FR.json index ad911aa..9911e26 100644 --- a/i18n/fr-FR.json +++ b/i18n/fr-FR.json @@ -165,6 +165,14 @@ "ignoreCompletedElsewhere": { "label": "Afficher les appels manqués des groupes d'Appels", "help": "Si cette case est cochée, les téléphones ayant accès à cette fonctionnalité afficheront les appels manqués même s'ils viennent d'un Groupe d'Appel et que l'appel a été pris par un collègue" + }, + "__comment": "UI-377: Adding Restart device feature", + "__version": "3.21", + "restart": { + "label": "Envoyer une requête de redémarrage", + "button": "Redémarrer", + "help": "Ce bouton envoie une requête de redémarrage. Cette action n'est disponible que pour les appareils qui sont actuellement connectés à la plateforme.", + "success": "Vous avez envoyé une requête de redémarrage avec succès!" } }, "restrictions": { diff --git a/submodules/devices/devices.css b/submodules/devices/devices.css index 90d165e..f833ebe 100644 --- a/submodules/devices/devices.css +++ b/submodules/devices/devices.css @@ -397,3 +397,8 @@ margin-left: 35px; padding-top: 3px; } + +/* Restart Button */ +.edit-device #restart_device { + margin-left: 10px; +} \ No newline at end of file diff --git a/submodules/devices/devices.js b/submodules/devices/devices.js index c7775dc..9a055b3 100644 --- a/submodules/devices/devices.js +++ b/submodules/devices/devices.js @@ -127,10 +127,10 @@ define(function(require){ template.find('.settings').on('click', function() { var $this = $(this), dataDevice = { - id: $this.parents('.grid-row').data('id') + id: $this.parents('.grid-row').data('id'), + isRegistered: $this.parents('.grid-row').data('registered') === 'true' }; - self.devicesRenderEdit({ data: dataDevice, callbackSave: function(dataDevice) { self.devicesRender({ deviceId: dataDevice.id }); }}); @@ -365,6 +365,14 @@ define(function(require){ templateDevice.find('#rtp_method').toggle(); }); + templateDevice.find('#restart_device').on('click', function() { + if(!$(this).hasClass('disabled')) { + self.devicesRestart(data.id, function() { + toastr.success(self.i18n.active().devices.popupSettings.miscellaneous.restart.success); + }); + } + }); + templateDevice.find('.actions .save').on('click', function() { if(monster.ui.valid(deviceForm)) { templateDevice.find('.feature-key-value:not(.active)').remove(); @@ -498,6 +506,21 @@ define(function(require){ }); }, + devicesRestart: function(deviceId, callback) { + var self = this; + + self.callApi({ + resource: 'device.restart', + data: { + accountId: self.accountId, + deviceId: deviceId + }, + success: function(data) { + callback && callback(data.data); + } + }); + }, + devicesMergeData: function(originalData, template, audioCodecs, videoCodecs) { var self = this, hasCodecs = $.inArray(originalData.device_type, ['sip_device', 'landline', 'fax', 'ata', 'softphone', 'smartphone', 'mobile', 'sip_uri']) > -1, @@ -612,7 +635,7 @@ define(function(require){ return mergedData; }, - devicesFormatData: function(data) { + devicesFormatData: function(data, dataList) { var self = this, defaults = { extra: { @@ -763,6 +786,8 @@ define(function(require){ formattedData.media.video.codecs = data.device.media.video.codecs; } + formattedData.extra.isRegistered = dataList.isRegistered; + return formattedData; }, @@ -807,7 +832,8 @@ define(function(require){ type: device.device_type, friendlyType: self.i18n.active().devices.types[device.device_type], registered: false, - classStatus: device.enabled ? 'unregistered' : 'disabled' /* Display a device in black if it's disabled, otherwise, until we know whether it's registered or not, we set the color to red */ + classStatus: device.enabled ? 'unregistered' : 'disabled' /* Display a device in black if it's disabled, otherwise, until we know whether it's registered or not, we set the color to red */, + isRegistered: false } }); @@ -820,6 +846,7 @@ define(function(require){ /* Now that we know if it's registered, we set the color to green */ if(device.enabled) { device.classStatus = 'registered'; + device.isRegistered = true; } } }); @@ -972,7 +999,7 @@ define(function(require){ } }, function(error, results) { - var formattedData = self.devicesFormatData(results); + var formattedData = self.devicesFormatData(results, dataDevice); callback && callback(formattedData); } diff --git a/views/devices-row.html b/views/devices-row.html index 41d1069..62e9493 100644 --- a/views/devices-row.html +++ b/views/devices-row.html @@ -1,4 +1,4 @@ -
+
diff --git a/views/devices-sip_device.html b/views/devices-sip_device.html index 711cee6..a1bdf21 100644 --- a/views/devices-sip_device.html +++ b/views/devices-sip_device.html @@ -209,7 +209,7 @@
-
+
+ + {{#if provision}} +
+ +
+ + +
+
+ {{/if}}
{{#if provision.feature_keys}}