From 6b8acf6d0c4ceb84a38d54d4d8f4f4042402f34c Mon Sep 17 00:00:00 2001 From: JR Maitre Date: Thu, 27 Jul 2017 15:57:27 -0700 Subject: [PATCH] UI-2814: properly handled registered devices in main view, devices view and user view --- submodules/devices/devices.js | 26 +++++++------------------- submodules/myOffice/myOffice.js | 11 +++++++++-- submodules/users/users.js | 5 +++-- 3 files changed, 19 insertions(+), 23 deletions(-) diff --git a/submodules/devices/devices.js b/submodules/devices/devices.js index a46c7b2..6144b03 100644 --- a/submodules/devices/devices.js +++ b/submodules/devices/devices.js @@ -907,14 +907,16 @@ define(function(require) { sip_uri: 'icon-telicon-voip-phone', fax: 'icon-telicon-fax', ata: 'icon-telicon-ata' - }; + }, + registeredDevices = _.map(data.status, function(device) { return device.device_id; }); _.each(data.users, function(user) { mapUsers[user.id] = user; }); _.each(data.devices, function(device) { - var isAssigned = device.owner_id ? true : false; + var isAssigned = device.owner_id ? true : false, + isRegistered = ['sip_device', 'smartphone', 'softphone', 'fax', 'ata'].indexOf(device.device_type) >= 0 ? registeredDevices.indexOf(device.id) >= 0 : true; formattedData.countDevices++; @@ -929,27 +931,13 @@ define(function(require) { enabled: device.enabled, 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 */, - isRegistered: false, + registered: isRegistered, + isRegistered: device.enabled && isRegistered, // even though a device is registered, we don't count it as registered if it's disabled + classStatus: device.enabled ? (isRegistered ? 'registered' : '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 */, sipUserName: device.username }; }); - _.each(data.status, function(status) { - if (status.registered === true && status.device_id in formattedData.devices) { - var device = formattedData.devices[status.device_id]; - - device.registered = true; - - /* Now that we know if it's registered, we set the color to green */ - if (device.enabled) { - device.classStatus = 'registered'; - device.isRegistered = true; - } - } - }); - var arrayToSort = []; _.each(formattedData.devices, function(device) { diff --git a/submodules/myOffice/myOffice.js b/submodules/myOffice/myOffice.js index 5ac7121..f89f353 100644 --- a/submodules/myOffice/myOffice.js +++ b/submodules/myOffice/myOffice.js @@ -50,7 +50,7 @@ define(function(require) { account: myOfficeData.account, totalUsers: myOfficeData.users.length, totalDevices: myOfficeData.devices.length, - unregisteredDevices: myOfficeData.devices.length - myOfficeData.devicesStatus.length, + unregisteredDevices: myOfficeData.unregisteredDevices, totalNumbers: _.size(myOfficeData.numbers), totalConferences: myOfficeData.totalConferences, totalChannels: myOfficeData.totalChannels, @@ -455,7 +455,9 @@ define(function(require) { totalConferences = 0, channelsArray = [], classifierRegexes = {}, - classifiedNumbers = {}; + classifiedNumbers = {}, + registeredDevices = _.map(data.devicesStatus, function(device) { return device.device_id; }), + unregisteredDevices = 0; _.each(data.numbers, function(numData, num) { _.find(data.classifiers, function(classifier, classifierKey) { @@ -500,6 +502,10 @@ define(function(require) { if (val.device_type in devices) { devices[val.device_type].count++; devices.totalCount++; + + if (val.enabled === false || (['sip_device', 'smartphone', 'softphone', 'fax', 'ata'].indexOf(val.device_type) >= 0 && registeredDevices.indexOf(val.id) < 0)) { + unregisteredDevices++; + } } else { console.log('Unknown device type: ' + val.device_type); } @@ -582,6 +588,7 @@ define(function(require) { data.assignedNumbersData = assignedNumbers; // data.numberTypesData = numberTypes; data.totalConferences = totalConferences; + data.unregisteredDevices = unregisteredDevices; if (data.directory && data.directory.id) { data.directoryLink = self.apiUrl + 'accounts/' + self.accountId + '/directories/' + data.directory.id + '?accept=pdf&auth_token=' + self.getAuthToken(); diff --git a/submodules/users/users.js b/submodules/users/users.js index f2f8be3..1627770 100644 --- a/submodules/users/users.js +++ b/submodules/users/users.js @@ -332,7 +332,8 @@ define(function(require) { existingExtensions: [], countUsers: data.users.length }, - mapUsers = {}; + mapUsers = {}, + registeredDevices = _.map(data.deviceStatus, function(device) { return device.device_id; }); _.each(data.users, function(user) { mapUsers[user.id] = self.usersFormatUserData(user); @@ -386,7 +387,7 @@ define(function(require) { var userId = device.owner_id; if (userId in mapUsers) { - var isRegistered = _.find(data.deviceStatus, function(status) { return (status.device_id === device.id && status.registered === true); }) ? true : false; + var isRegistered = device.enabled && (['sip_device', 'smartphone', 'softphone', 'fax', 'ata'].indexOf(device.device_type) >= 0 ? registeredDevices.indexOf(device.id) >= 0 : true); if (mapUsers[userId].extra.devices.length >= 2) { if (mapUsers[userId].extra.additionalDevices === 0) {