From f56d70cebb88c259c4e6806c2dd5fce683ef748f Mon Sep 17 00:00:00 2001 From: Gunther Brunner Date: Wed, 11 Jun 2014 16:02:04 +0900 Subject: [PATCH] Performance: Starting to remove biggest bottlenecks from digest cycle, filters. Biggest are releasedAt and showAll, both consuming more than 1000ms (!). --- res/app/components/stf/device/device-service.js | 6 +++++- res/app/device-list/device-list-details-controller.js | 2 ++ res/app/device-list/device-list.jade | 7 +++---- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/res/app/components/stf/device/device-service.js b/res/app/components/stf/device/device-service.js index 42b4eeec..49f2ee0e 100644 --- a/res/app/components/stf/device/device-service.js +++ b/res/app/components/stf/device/device-service.js @@ -1,7 +1,7 @@ var oboe = require('oboe') var _ = require('lodash') -module.exports = function DeviceServiceFactory($http, socket) { +module.exports = function DeviceServiceFactory($http, socket, $filter) { var deviceService = {} function Tracker($scope, options) { @@ -94,7 +94,11 @@ module.exports = function DeviceServiceFactory($http, socket) { } } + // NOTE: For overall performance reasons, put all the filters here: data.stateSorting = getStateSorting(data.state) + // TODO: i18n shortDate + data.releasedAtFormatted = $filter('date')(data.releasedAt, 'yyyy/MM/dd - X') + } // For convenience, add the sorting priority to each state diff --git a/res/app/device-list/device-list-details-controller.js b/res/app/device-list/device-list-details-controller.js index 9547dbe2..36ae4566 100644 --- a/res/app/device-list/device-list-details-controller.js +++ b/res/app/device-list/device-list-details-controller.js @@ -102,6 +102,8 @@ module.exports = function DeviceListCtrlDetails($scope, DeviceService, GroupServ } } + // TODO: Implement real dynamic colums! Using showAll is too slow + $scope.columns = [ { title: 'Model', field: 'model', sortable: 'model', filter: {model: 'text'}, visible: true } diff --git a/res/app/device-list/device-list.jade b/res/app/device-list/device-list.jade index 8876a307..53e83d05 100644 --- a/res/app/device-list/device-list.jade +++ b/res/app/device-list/device-list.jade @@ -53,7 +53,7 @@ div.stf-device-list tab(active='activeTabs.details', ng-show='!$root.basicMode') tab-heading - i.fa.fa-list(translate) + i.fa.fa-list span(translate) Details div(ng-show='activeTabs.details', ng-controller='DeviceListDetailsCtrl').device-list-details-content nothing-to-show(message='{{"No devices connected"|translate}}', icon='fa-sitemap', ng-show='!tracker.devices.length') @@ -98,9 +98,8 @@ div.stf-device-list span {{device.name}} td(data-title="'Carrier'|translate", sortable='"operator"', filter='{"operator": "text"}').device-list-carrier span {{device.operator}} - td(data-title="'Released'|translate", sortable='"releasedAt"', filter='{"releasedAt": "text"}') - span {{device.releasedAt | date:'yyyy/MM/dd'}} - //span {{device.releasedAt | date:'shortDate'}} + td(data-title="'Released'|translate", sortable='"releasedAtFormatted"', filter='{"releasedAtFormatted": "text"}') + span {{device.releasedAtFormatted}} td(data-title="'OS'|translate", sortable='"version"', filter='{"version": "text"}') span {{device.version}} td(data-title="'Network'|translate", sortable='"phone.network"', filter='{"phone": "text"}')