From 7982e2bcbe5ce77808d7e09ca8ba8c5aaf4db170 Mon Sep 17 00:00:00 2001 From: Gunther Brunner Date: Wed, 18 Jun 2014 01:25:22 +0900 Subject: [PATCH] Started enhancing device list details with prefiltered information. Moved enhanced data away from device service. --- .../stf/device/device-info-filter/index.js | 34 +++++++++---------- .../components/stf/device/device-service.js | 19 ----------- .../device-list-details-controller.js | 10 +++--- res/app/device-list/device-list.jade | 32 ++++++++--------- 4 files changed, 39 insertions(+), 56 deletions(-) diff --git a/res/app/components/stf/device/device-info-filter/index.js b/res/app/components/stf/device/device-info-filter/index.js index 1385c9b6..7ff4b399 100644 --- a/res/app/components/stf/device/device-info-filter/index.js +++ b/res/app/components/stf/device/device-info-filter/index.js @@ -15,35 +15,35 @@ module.exports = angular.module('stf.device-status', []) } }) // TODO: translate here the rest - .filter('batteryHealth', function (gettext) { + .filter('batteryHealth', function (gettext, $filter) { return function (text) { - return { + return $filter('translate')({ 'cold': gettext('Cold'), 'good': gettext('Good'), 'dead': gettext('Dead'), 'over_voltage': gettext('Over Voltage'), 'overheat': gettext('Overheat'), 'unspecified_failure': gettext('Unspecified Failure') - }[text] || gettext('-') + }[text] || gettext('-')) } }) - .filter('batterySource', function (gettext) { + .filter('batterySource', function (gettext, $filter) { return function (text) { - return { + return $filter('translate')({ 'ac': gettext('AC'), 'usb': gettext('USB'), 'wireless': gettext('Wireless') - }[text] || gettext('-') + }[text] || gettext('-')) } }) - .filter('batteryStatus', function (gettext) { + .filter('batteryStatus', function (gettext, $filter) { return function (text) { - return { + return $filter('translate')({ 'charging': gettext('Charging'), 'discharging': gettext('Discharging'), 'full': gettext('Full'), 'not_charging': gettext('Not Charging') - }[text] || gettext('-') + }[text] || gettext('-')) } }) .filter('displayDensity', function (gettext) { @@ -58,9 +58,9 @@ module.exports = angular.module('stf.device-status', []) }[text] || text } }) - .filter('networkType', function (gettext) { + .filter('networkType', function (gettext, $filter) { return function (text) { - return { + return $filter('translate')({ 'bluetooth': gettext('Bluetooth'), 'dummy': gettext('Dummy'), 'ethernet': gettext('Ethernet'), @@ -71,17 +71,17 @@ module.exports = angular.module('stf.device-status', []) 'mobile_supl': gettext('Mobile SUPL'), 'mobile_wifi': gettext('WiFi'), 'wimax': gettext('WiMAX') - }[text] || text + }[text] || text) } }) - .filter('networkSubType', function (gettext) { + .filter('networkSubType', function (gettext, $filter) { return function (text) { - return { - 'mobile_wifi': gettext('WiFi'), - }[text] || text + return $filter('translate')({ + 'mobile_wifi': gettext('WiFi') + }[text] || text) } }) - .filter('humanizedBool', function (gettext) { + .filter('humanizedBool', function (gettext, $filter) { return function (text) { switch (text) { case true: diff --git a/res/app/components/stf/device/device-service.js b/res/app/components/stf/device/device-service.js index 9cb6fa5b..0157aead 100644 --- a/res/app/components/stf/device/device-service.js +++ b/res/app/components/stf/device/device-service.js @@ -94,28 +94,9 @@ module.exports = function DeviceServiceFactory($http, socket, $filter) { } } - // 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') - $scope.$broadcast('device.synced', data) } - // For convenience, add the sorting priority to each state - function getStateSorting(state) { - return { - 'using': 1, - 'available': 2, - 'ready': 3, - 'present': 4, - 'busy': 5, - 'unauthorized': 6, - 'offline': 7, - 'preparing': 8, - 'absent': 9 - }[state] || 10 - } function get(data) { return devices[devicesBySerial[data.serial]] diff --git a/res/app/device-list/device-list-details-controller.js b/res/app/device-list/device-list-details-controller.js index ca6f9d67..cd6d9ffc 100644 --- a/res/app/device-list/device-list-details-controller.js +++ b/res/app/device-list/device-list-details-controller.js @@ -29,8 +29,8 @@ module.exports = function DeviceListCtrlDetails($scope, DeviceService, GroupServ // }) var initialSorting = { - stateSorting: 'asc', - name: 'asc' + enhancedStateSorting: 'asc', + enhancedName: 'asc' } $scope.tableSorting = initialSorting @@ -102,14 +102,16 @@ module.exports = function DeviceListCtrlDetails($scope, DeviceService, GroupServ } } + + // TODO: Implement real dynamic colums! Using showAll is too slow $scope.dynamicColumns = [ - { title: 'Model', field: 'model', sortable: 'model', filter: {model: 'text'}, visible: true + { title: 'Model', field: 'enhancedModel', sortable: 'enhancedModel', filter: {enhancedModel: 'text'}, visible: true } , - { title: 'Product', field: 'name', sortable: 'name', filter: {name: 'text'}, visible: true + { title: 'Product', field: 'enhancedName', sortable: 'enhancedName', filter: {enhancedName: 'text'}, visible: true } , { title: 'Carrier', field: 'operator', sortable: 'operator', filter: {operator: 'text'}, visible: true diff --git a/res/app/device-list/device-list.jade b/res/app/device-list/device-list.jade index c1e4e433..63ead814 100644 --- a/res/app/device-list/device-list.jade +++ b/res/app/device-list/device-list.jade @@ -93,32 +93,32 @@ div.stf-device-list table.table.table-hover.dataTable(ng-table='tableParams', show-filter='filterEnabled', ng-show='tracker.devices.length').device-list-details tr(ng-repeat='device in $data', ng-class='{ "device-not-usable": !device.usable }', ng-hide='!device.model') - td(data-title="'Status'|translate", sortable='"stateSorting"', filter="{ 'usable': 'select' }", filter-data="statusFilter($column)") + td(data-title="'Status'|translate", sortable='"enhancedStateSorting"', filter="{ 'usable': 'select' }", filter-data="statusFilter($column)") button(ng-class='device.enhancedButtonClass', ng-dblclick='tryToKick(device)', - ng-click='device.usable && toggle(device)').btn.btn-xs.device-status {{device.state|statusName|translate}} + ng-click='device.usable && toggle(device)').btn.btn-xs.device-status {{device.enhancedState}} td(data-title="::'Model'|translate", sortable='"model"', filter='{"model": "text"}') span.device-small-image - img(ng-src='/static/devices/icon/x24/{{ ::device.image || "E30HT.jpg" }}') + img(ng-src='{{device.enhancedImage24}}') - span(ng-if='device.state !== "using"') {{device.model}} - a(ng-if='device.state === "using"', ng-href='/#!/control/{{ device.serial }}') {{device.model}} + span(ng-if='device.state !== "using"') {{device.enhancedModel}} + a(ng-if='device.state === "using"', ng-href='/#!/control/{{ device.serial }}') {{device.enhancedModel}} - td(data-title="'Product'|translate", sortable='"name"', filter='{"name": "text"}').device-list-product - span {{::device.name}} + td(data-title="'Product'|translate", sortable='"enhancedName"', filter='{"enhancedName": "text"}').device-list-product + span {{::device.enhancedName}} td(data-title="'Carrier'|translate", sortable='"operator"', filter='{"operator": "text"}').device-list-carrier span {{::device.operator}} - td(data-title="'Released'|translate", sortable='"releasedAtFormatted"', filter='{"releasedAtFormatted": "text"}') - span {{::device.releasedAtFormatted}} + td(data-title="'Released'|translate", sortable='"enhancedReleasedAt"', filter='{"enhancedReleasedAt": "text"}') + span {{::device.enhancedReleasedAt}} td(data-title="'OS'|translate", sortable='"version"', filter='{"version": "text"}') span {{::device.version}} td(data-title="'Network'|translate", sortable='"phone.network"', filter='{"phone": "text"}') span {{device.phone.network}} - td(ng-show='showAll', data-title="'Screen'|translate", sortable='"display.width"', filter='{"display": "text"}') - span {{device.display.width}}x{{device.display.height}} + td(ng-show='showAll', data-title="'Screen'|translate", sortable='"enhanceDisplayRes"', filter='{"enhanceDisplayRes": "text"}') + span {{device.enhanceDisplayRes}} td(ng-show='showAll', data-title="'Serial'|translate", sortable='"serial"', filter='{"serial": "text"}') span {{::device.serial}} td(ng-show='showAll', data-title="'Manufacturer'|translate", sortable='"manufacturer"', filter='{"manufacturer": "text"}') @@ -135,16 +135,16 @@ div.stf-device-list span {{device.phone.iccid}} td(ng-show='showAll', data-title="'Battery Health'|translate", sortable='"battery.health"') - span {{device.battery.health | batteryHealth | translate }} + span {{ enhancedBatteryHealth }} td(ng-show='showAll', data-title="'Battery Source'|translate", sortable='"battery.source"') - span {{device.battery.source | batterySource | translate }} + span {{ enhancedBatterySource }} td(ng-show='showAll', data-title="'Battery Status'|translate", sortable='"battery.status"') - span {{device.battery.status | batteryStatus | translate }} + span {{ enhancedBatteryStatus }} td(ng-show='showAll', data-title="'Battery Level'|translate", sortable='"battery.level"') progressbar(value='device.battery.level', max='device.battery.scale', type='success') - span {{ device.battery.level / device.battery.scale * 100 }}% + span {{ device.enhancedBatteryPercentage }} td(ng-show='showAll', data-title="'Battery Temperature'|translate", sortable='"battery.temp"') - span {{device.battery.temp}}°C + span {{device.enhancedBatteryTemp}} td(data-title="'Location'|translate", sortable='"provider.name"', filter='{"provider": "text"}') span {{::device.provider.name}}