From c12b4833449f82af3cbb8e13a890339da001ba78 Mon Sep 17 00:00:00 2001 From: Joris Tirado Date: Fri, 27 Jul 2018 10:46:39 -0700 Subject: [PATCH] UI-3121: Check if user types are available before trying to filter users by them (#76) * Fix linting error + use lodash#oderBy to sort descendingly * Check if service plan exists before user count increment * See if user types are available when sorting users --- app.js | 3 ++- submodules/myOffice/myOffice.js | 45 +++++++++++++++++++++++++-------- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/app.js b/app.js index 4994f8cb..9d3a073f 100644 --- a/app.js +++ b/app.js @@ -116,7 +116,8 @@ define(function(require) { } } }, function(err, results) { - self.appFlags.global = results; + self.appFlags.global.servicePlansRole = results.servicePlansRole; + self.appFlags.global.showUserTypes = !_.isEmpty(results.servicePlansRole); callback && callback(self.appFlags.global); }); diff --git a/submodules/myOffice/myOffice.js b/submodules/myOffice/myOffice.js index 4c5c5dbf..2b09ba84 100644 --- a/submodules/myOffice/myOffice.js +++ b/submodules/myOffice/myOffice.js @@ -2,7 +2,7 @@ define(function(require) { var $ = require('jquery'), _ = require('lodash'), monster = require('monster'), - chart = require('chart'); + Chart = require('chart'); var app = { @@ -59,14 +59,30 @@ define(function(require) { faxingNumbers: myOfficeData.faxingNumbers || [], faxNumbers: myOfficeData.faxNumbers || [], topMessage: myOfficeData.topMessage, - devicesList: _.toArray(myOfficeData.devicesData).sort(function(a, b) { return b.count - a.count; }), - usersList: _.toArray(myOfficeData.usersData).sort(function(a, b) { return b.count - a.count ; }), - assignedNumbersList: _.toArray(myOfficeData.assignedNumbersData).sort(function(a, b) { return b.count - a.count; }), - // numberTypesList: _.toArray(myOfficeData.numberTypesData).sort(function(a, b) { return b.count - a.count ; }), + devicesList: _ + .chain(myOfficeData.devicesData) + .toArray() + .orderBy('count', 'desc') + .value(), + usersList: _ + .chain(myOfficeData.usersData) + .toArray() + .orderBy('count', 'desc') + .value(), + assignedNumbersList: _ + .chain(myOfficeData.assignedNumbersData) + .toArray() + .orderBy('count', 'desc') + .value(), + // numberTypesList: _ + // .chain(myOfficeData.numberTypesData) + // .toArray() + // .orderBy('count', 'desc') + // .value(), classifiedNumbers: myOfficeData.classifiedNumbers, directoryUsers: myOfficeData.directory.users && myOfficeData.directory.users.length || 0, directoryLink: myOfficeData.directoryLink, - showUserTypes: _.size(self.appFlags.global.servicePlansRole) > 0 + showUserTypes: self.appFlags.global.showUserTypes }, template = $(self.getTemplate({ name: 'layout', @@ -473,7 +489,7 @@ define(function(require) { totalCount: 0 }, users = { - "_unassigned": { + _unassigned: { label: self.i18n.active().myOffice.userChartLegend.none, count: 0, color: self.chartColors[8] @@ -503,7 +519,7 @@ define(function(require) { registeredDevices = _.map(data.devicesStatus, function(device) { return device.device_id; }), unregisteredDevices = 0; - if (_.size(self.appFlags.global.servicePlansRole) > 0) { + if (self.appFlags.global.showUserTypes) { var i = 7; // start from the end of chart colors so all the charts don't look the same _.each(self.appFlags.global.servicePlansRole, function(role, id) { users[id] = { @@ -579,7 +595,10 @@ define(function(require) { }); _.each(data.users, function(val) { - if (val.hasOwnProperty('service') && val.service.hasOwnProperty('plans') && !_.isEmpty(val.service.plans)) { + if (self.appFlags.global.showUserTypes + && val.hasOwnProperty('service') + && val.service.hasOwnProperty('plans') + && !_.isEmpty(val.service.plans)) { var planId; for (var key in val.service.plans) { @@ -589,12 +608,16 @@ define(function(require) { } } - users[planId].count++; + if (users.hasOwnProperty(planId)) { + users[planId].count += 1; + } else { + users._unassigned.count += 1; + } } else { users._unassigned.count++; } - if (val.features.indexOf("conferencing") >= 0) { + if (val.features.indexOf('conferencing') >= 0) { totalConferences++; } });