thingsboard-aplcache

Improve devices attributes table.

4/26/2017 3:39:42 PM

Details

diff --git a/ui/src/app/device/attribute/attribute-table.directive.js b/ui/src/app/device/attribute/attribute-table.directive.js
index 560a4dc..701fd37 100644
--- a/ui/src/app/device/attribute/attribute-table.directive.js
+++ b/ui/src/app/device/attribute/attribute-table.directive.js
@@ -72,7 +72,7 @@ export default function AttributeTableDirective($compile, $templateCache, $rootS
         scope.$watch("deviceId", function(newVal, prevVal) {
             if (newVal && !angular.equals(newVal, prevVal)) {
                 scope.resetFilter();
-                scope.getDeviceAttributes();
+                scope.getDeviceAttributes(false, true);
             }
         });
 
@@ -81,7 +81,7 @@ export default function AttributeTableDirective($compile, $templateCache, $rootS
                 scope.mode = 'default';
                 scope.query.search = null;
                 scope.selectedAttributes = [];
-                scope.getDeviceAttributes();
+                scope.getDeviceAttributes(false, true);
             }
         });
 
@@ -117,15 +117,25 @@ export default function AttributeTableDirective($compile, $templateCache, $rootS
             }
         }
 
-        scope.getDeviceAttributes = function(forceUpdate) {
+        scope.onReorder = function() {
+            scope.getDeviceAttributes(false, false);
+        }
+
+        scope.onPaginate = function() {
+            scope.getDeviceAttributes(false, false);
+        }
+
+        scope.getDeviceAttributes = function(forceUpdate, reset) {
             if (scope.attributesDeferred) {
                 scope.attributesDeferred.resolve();
             }
             if (scope.deviceId && scope.attributeScope) {
-                scope.attributes = {
-                    count: 0,
-                    data: []
-                };
+                if (reset) {
+                    scope.attributes = {
+                        count: 0,
+                        data: []
+                    };
+                }
                 scope.checkSubscription();
                 scope.attributesDeferred = deviceService.getDeviceAttributes(scope.deviceId, scope.attributeScope.value,
                     scope.query, function(attributes, update, apply) {
diff --git a/ui/src/app/device/attribute/attribute-table.tpl.html b/ui/src/app/device/attribute/attribute-table.tpl.html
index 915fbea..b6099c4 100644
--- a/ui/src/app/device/attribute/attribute-table.tpl.html
+++ b/ui/src/app/device/attribute/attribute-table.tpl.html
@@ -126,7 +126,7 @@
         </md-toolbar>
         <md-table-container ng-show="mode!='widget'">
             <table md-table md-row-select multiple="" ng-model="selectedAttributes" md-progress="attributesDeferred.promise">
-                <thead md-head md-order="query.order" md-on-reorder="getDeviceAttributes">
+                <thead md-head md-order="query.order" md-on-reorder="onReorder">
                     <tr md-row>
                         <th md-column md-order-by="lastUpdateTs"><span>Last update time</span></th>
                         <th md-column md-order-by="key"><span>Key</span></th>
@@ -147,7 +147,7 @@
         </md-table-container>
         <md-table-pagination ng-show="mode!='widget'" md-limit="query.limit" md-limit-options="[5, 10, 15]"
                              md-page="query.page" md-total="{{attributes.count}}"
-                             md-on-paginate="getDeviceAttributes" md-page-select>
+                             md-on-paginate="onPaginate" md-page-select>
         </md-table-pagination>
         <ul flex rn-carousel ng-if="mode==='widget'" class="widgets-carousel"
             rn-carousel-index="widgetsCarousel.index"