diff --git a/res/app/components/stf/common-ui/include-cached/compile-cache-service.js b/res/app/components/stf/common-ui/include-cached/compile-cache-service.js
new file mode 100644
index 00000000..4ca2d9a5
--- /dev/null
+++ b/res/app/components/stf/common-ui/include-cached/compile-cache-service.js
@@ -0,0 +1,16 @@
+module.exports = function ($http, $templateCache, $compile) {
+ var cache = {}
+
+ return function (src, scope, cloneAttachFn) {
+ var compileFn = cache[src]
+ if (compileFn) {
+ compileFn(scope, cloneAttachFn)
+ } else {
+ $http.get(src, { cache: $templateCache }).success(function (response) {
+ var responseContents = angular.element('
').html(response).contents()
+ compileFn = cache[src] = $compile(responseContents)
+ compileFn(scope, cloneAttachFn)
+ })
+ }
+ }
+}
diff --git a/res/app/components/stf/common-ui/include-cached/include-cached-directive.js b/res/app/components/stf/common-ui/include-cached/include-cached-directive.js
new file mode 100644
index 00000000..563ed103
--- /dev/null
+++ b/res/app/components/stf/common-ui/include-cached/include-cached-directive.js
@@ -0,0 +1,17 @@
+module.exports = function includeCachedDirective(CompileCacheService) {
+ return {
+ restrict: 'ECA',
+ terminal: true,
+ compile: function (element, attrs) {
+ var srcExp = attrs.ngIncludeCached || attrs.src
+
+ return function (scope, element) {
+ var src = scope.$eval(srcExp)
+ var newScope = scope.$new()
+ CompileCacheService(src, newScope, function (compiledElm) {
+ element.append(compiledElm)
+ })
+ }
+ }
+ }
+}
diff --git a/res/app/components/stf/common-ui/include-cached/include-cached-spec.js b/res/app/components/stf/common-ui/include-cached/include-cached-spec.js
new file mode 100644
index 00000000..cf391f8c
--- /dev/null
+++ b/res/app/components/stf/common-ui/include-cached/include-cached-spec.js
@@ -0,0 +1,23 @@
+describe('includeCached', function () {
+
+ beforeEach(module('stf.include-cached'));
+
+ var scope, compile;
+
+ beforeEach(inject(function ($rootScope, $compile) {
+ scope = $rootScope.$new();
+ compile = $compile;
+ }));
+
+ it('should ...', function () {
+
+ /*
+ To test your directive, you need to create some html that would use your directive,
+ send that through compile() then compare the results.
+
+ var element = compile('hi
')(scope);
+ expect(element.text()).toBe('hello, world');
+ */
+
+ });
+});
\ No newline at end of file
diff --git a/res/app/components/stf/common-ui/include-cached/index.js b/res/app/components/stf/common-ui/include-cached/index.js
new file mode 100644
index 00000000..fcea6c8f
--- /dev/null
+++ b/res/app/components/stf/common-ui/include-cached/index.js
@@ -0,0 +1,5 @@
+module.exports = angular.module('stf.include-cached', [
+
+])
+ .factory('CompileCacheService', require('./compile-cache-service'))
+ .directive('ngIncludeCached', require('./include-cached-directive'))
diff --git a/res/app/components/stf/common-ui/index.js b/res/app/components/stf/common-ui/index.js
index 59769361..6f5edef9 100644
--- a/res/app/components/stf/common-ui/index.js
+++ b/res/app/components/stf/common-ui/index.js
@@ -8,5 +8,6 @@ module.exports = angular.module('stf/common-ui', [
require('./ng-enter').name,
require('./tooltips').name,
//require('./tree').name,
- require('./modals').name
+ require('./modals').name,
+ require('./include-cached').name
])
diff --git a/res/app/device-list/device-list-details-controller.js b/res/app/device-list/device-list-details-controller.js
index 17c2818f..ccc4041a 100644
--- a/res/app/device-list/device-list-details-controller.js
+++ b/res/app/device-list/device-list-details-controller.js
@@ -80,7 +80,7 @@ module.exports = function DeviceListCtrlDetails($scope, DeviceService, GroupServ
})
//}
- if (!$scope.ngTableEnabled) {
+ //if (!$scope.ngTableEnabled) {
$scope.tableLimit = 1000
$scope.dynamicColumns = [
@@ -108,7 +108,6 @@ module.exports = function DeviceListCtrlDetails($scope, DeviceService, GroupServ
{ title: gettext('User'), field: 'enhancedUserName', templateUrl: 'device-list/details/user.jade', visible: true }
]
- //$scope.selectedColumns = [$scope.dynamicColumns[1], $scope.dynamicColumns[2]]
$scope.selectedColumns = [
$scope.dynamicColumns[0],
$scope.dynamicColumns[1],
@@ -120,7 +119,7 @@ module.exports = function DeviceListCtrlDetails($scope, DeviceService, GroupServ
$scope.dynamicColumns[20],
$scope.dynamicColumns[21]
]
- }
+ //}
$scope.tryToKick = function (device) {
diff --git a/res/app/device-list/device-list.jade b/res/app/device-list/device-list.jade
index a7f7d2ab..4d7f4d41 100644
--- a/res/app/device-list/device-list.jade
+++ b/res/app/device-list/device-list.jade
@@ -94,7 +94,7 @@ div.stf-device-list
i.fa.fa-list-alt
span {{"Show All"|translate}}
- //span(ng-if='!ngTableEnabled')
+ //span(ng-if='true')
.btn-group(dropdown).pull-right
button.btn.btn-sm.btn-primary-outline.dropdown-toggle
i.fa.fa-list-alt
@@ -118,76 +118,79 @@ div.stf-device-list
span(ng-if='column.templateUrl', ng-include='column.templateUrl')
span(ng-if='!column.templateUrl') {{ device[column.field] }}
- //table.table.table-hover.dataTable(ng-table='tableParams')
+ //table.table.ng-table.table-hover.dataTable(ng-table='tableParams').device-list-details
thead
tr
- th(ng-repeat='column in selectedColumns', ng-show='column.visible')
- div PEPE
+ th(ng-repeat='column in selectedColumns', ng-if='column.visible')
+ div(ng-bind='column.title | translate')
tbody
- tr(ng-repeat='device in $data | limitTo:5', ng-class='{ "device-not-usable": !device.usable }')
- td(ng-repeat='column in selectedColumns', ng-show='column.visible', sortable='column.field')
- span {{ device[column.field] }}
+ tr(ng-repeat='device in $data | limitTo:tableLimit', ng-class='{ "device-not-usable": !device.usable }')
+ td(ng-repeat='column in selectedColumns', ng-if='column.visible', sortable='column.field')
+ span(ng-if='column.templateUrl', ng-include-cached='column.templateUrl')
+ span(ng-if='!column.templateUrl', ng-bind='device[column.field]')
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 }')
- td(data-title="'Status'|translate", sortable='"enhancedStateSorting"', 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.enhancedStateAction | translate}}
+ ng-click='device.usable && toggle(device)',
+ ng-bind='device.enhancedStateAction | translate').btn.btn-xs.device-status
td(data-title="::'Model'|translate", sortable='"model"', filter='{"model": "text"}')
span.device-small-image
img(ng-src='{{device.enhancedImage24}}')
- span(ng-if='device.state !== "using"') {{device.enhancedModel}}
- a(ng-if='device.state === "using"', ng-href='/#!/control/{{ device.serial }}') {{device.enhancedModel}}
+ span(ng-if='device.state !== "using"', ng-bind='::device.enhancedModel')
+ a(ng-if='device.state === "using"', ng-href='/#!/control/{{ device.serial }}', ng-bind='::device.enhancedModel')
td(data-title="'Product'|translate", sortable='"enhancedName"', filter='{"enhancedName": "text"}').device-list-product
- span {{::device.enhancedName}}
+ span(ng-bind='::device.enhancedName')
td(data-title="'Carrier'|translate", sortable='"operator"', filter='{"operator": "text"}').device-list-carrier
- span {{::device.operator}}
+ span(ng-bind='::device.operator')
td(data-title="'Released'|translate", sortable='"enhancedReleasedAt"', filter='{"enhancedReleasedAt": "text"}')
- span {{::device.enhancedReleasedAt}}
+ span(ng-bind='::device.enhancedReleasedAt')
td(data-title="'OS'|translate", sortable='"version"', filter='{"version": "text"}')
- span {{::device.version}}
+ span(ng-bind='::device.version')
td(data-title="'Network'|translate", sortable='"phone.network"', filter='{"phone": "text"}')
- span {{device.phone.network}}
+ span(ng-bind='device.phone.network')
td(ng-show='showAll', data-title="'Screen'|translate", sortable='"enhanceDisplayRes"', filter='{"enhanceDisplayRes": "text"}')
- span {{device.enhanceDisplayRes }}
+ span(ng-bind='::device.enhanceDisplayRes')
td(ng-show='showAll', data-title="'Serial'|translate", sortable='"serial"', filter='{"serial": "text"}')
- span {{::device.serial}}
+ span(ng-bind='::device.serial')
td(ng-show='showAll', data-title="'Manufacturer'|translate", sortable='"manufacturer"', filter='{"manufacturer": "text"}')
- span {{::device.manufacturer}}
+ span(ng-bind='::device.manufacturer')
td(ng-show='showAll', data-title="'SDK'|translate", sortable='"sdk"', filter='{"sdk": "text"}')
- span {{::device.sdk}}
+ span(ng-bind='::device.sdk')
td(ng-show='showAll', data-title="'ABI'|translate", sortable='"abi"', filter='{"abi": "text"}')
- span {{::device.abi}}
+ span(ng-bind='::device.abi')
td(ng-show='showAll', data-title="'Phone'|translate", sortable='"phone.phoneNumber"')
- span {{device.phone.phoneNumber }}
+ span(ng-bind='device.phone.phoneNumber')
td(ng-show='showAll', data-title="'Phone IMEI'|translate", sortable='"phone.imei"')
- span {{device.phone.imei}}
+ span(ng-bind='device.phone.imei')
td(ng-show='showAll', data-title="'Phone ICCID'|translate", sortable='"phone.iccid"')
- span {{device.phone.iccid}}
+ span(ng-bind='device.phone.iccid')
td(ng-show='showAll', data-title="'Battery Health'|translate", sortable='"enhancedBatteryHealth"')
- span {{ device.enhancedBatteryHealth | translate }}
+ span(ng-bind='device.enhancedBatteryHealth | translate')
td(ng-show='showAll', data-title="'Battery Source'|translate", sortable='"enhancedBatterySource"')
- span {{ device.enhancedBatterySource | translate }}
+ span(ng-bind='device.enhancedBatterySource | translate')
td(ng-show='showAll', data-title="'Battery Status'|translate", sortable='"enhancedBatteryStatus"')
- span {{ device.enhancedBatteryStatus | translate }}
+ span(ng-bind='device.enhancedBatteryStatus | translate')
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.enhancedBatteryPercentage }}
+ span(ng-bind='device.enhancedBatteryPercentage')
td(ng-show='showAll', data-title="'Battery Temperature'|translate", sortable='"battery.temp"')
- span {{ device.enhancedBatteryTem }}
+ span(ng-bind='device.enhancedBatteryTemp')
td(data-title="'Location'|translate", sortable='"provider.name"', filter='{"provider": "text"}')
- span {{::device.provider.name}}
+ span(ng-bind='::device.provider.name')
td(data-title="'User'|translate", sortable='"owner.name"', filter='{"owner": "text"}')
- a(ng-if='device.owner', ng-href='{{ device.enhancedUserContactUrl }}', role='button', target='_href') {{ device.enhancedUserName }}
+ a(ng-if='device.owner', ng-href='{{ device.enhancedUserContactUrl }}', role='button', target='_href', ng-bind='device.enhancedUserName')
a(ng-if='!device.owner') -
//p
strong Sorting