web staff autogrid; sorting
authorBill Erickson <berick@esilibrary.com>
Mon, 24 Mar 2014 13:14:01 +0000 (09:14 -0400)
committerBill Erickson <berick@esilibrary.com>
Mon, 24 Mar 2014 13:14:01 +0000 (09:14 -0400)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/src/templates/staff/parts/t_autogrid.tt2
Open-ILS/web/js/ui/default/staff/services/autogrid.js

index 15c8b55..9379c4b 100644 (file)
@@ -1,7 +1,7 @@
 <style>
   /* TODO: move me */
-  /*.eg-grid > div:nth-child(odd) {background-color: rgb(248, 248, 248);}*/
-  .eg-grid-row:hover > .eg-grid-cell {background-color: rgb(248, 248, 248)}
+  .eg-grid > div:nth-child(odd) {background-color: rgb(248, 248, 248);}
+  /*.eg-grid-row:hover > .eg-grid-cell {background-color: rgb(248, 248, 248)}*/
   .eg-grid-scroll {overflow-y:scroll; height: 600px}
 
   .eg-grid-header-row { 
@@ -11,6 +11,7 @@
     display: flex;
     width: 100%;
     border-left: 1px solid #ccc;
+    border-right: 1px solid #ccc;
   }
 
   .eg-grid-header-row > .eg-grid-cell {
   }
   .eg-grid-cell {
     border-bottom: 1px solid #ccc;
-    border-right: 1px solid #DDD;
+    /*border-right: 1px solid #DDD;*/
     padding: 2px;
     overflow: hidden;
   }
-  .eg-grid-cell-1 {
-    flex: 1;
-  }
+
+
+  /* stock columns need fixed-width controls */
+  .eg-grid-cell-1 {flex: 1}
+  .eg-grid-cell-2 {flex: 2}
   .eg-grid-row-selected > .eg-grid-cell { 
     color: rgb(51, 51, 51);
-    background-color: rgb(248, 248, 248);
+    /*background-color: rgb(248, 248, 248);*/
+    background-color: rgb(201, 221, 225);
     border-bottom: 1px solid #888;
   }
 </style>
 
+<div ng-if="showGridConf">
+  <style>
+  .eg-grid-cell {
+    border-right: 1px solid #DDD;
+  }
+  </style>
+</div>
+
 <div class="eg-grid">
   <!-- import embedded eg-grid-field defs via no-op transclude -->
   <div ng-transclude></div>
   </div>
 
   <div class="eg-grid-row eg-grid-header-row" ng-show="showGridConf">
-    <div class="eg-grid-cell eg-grid-cell-1">
-    </div>
-    <div class="eg-grid-cell eg-grid-cell-1">
+    <div class="eg-grid-cell eg-grid-cell-2">
+      <div style="width:100%;text-align:right">[% l('Wider') %]</div>
+      <div style="width:100%;text-align:right;border-top:1px solid #ccc">
+        [% l('Narrower') %]</div>
+      <div style="width:100%;text-align:right;border-top:1px solid #ccc">
+        [% l('Sort') %]</div>
     </div>
     <div class="eg-grid-cell"
       ng-repeat="column in dataList.allColumns"
index 71a2e98..47db665 100644 (file)
@@ -71,15 +71,19 @@ angular.module('egGridMod', ['egCoreMod', 'egListMod', 'egUiMod', 'ui.bootstrap'
             }
 
             // maps numeric sort priority to flattener sort blob
+            // e.g. 
+            // name = 1; code = -2; type = 3
+            // compiles to:
+            // [{name : "asc"}, {code : "desc"}, {type : "asc"}]
             this.compileSort = function() {
 
                 var sortList = $scope.dataList.allColumns.filter(
-                    function(col) { return Number(col.sortPriority) }
+                    function(col) { return Number(col.sortPriority) != 0 }
                 ).sort( 
                     function(a, b) { 
-                        return 
-                            Math.abs(a.sortPriority) < Math.abs(b.sortPriority)
-                            ? -1 : 1;
+                        if (Math.abs(a.sortPriority) < Math.abs(b.sortPriority))
+                            return -1;
+                        return 1;
                     }
                 );
 
@@ -88,14 +92,15 @@ angular.module('egGridMod', ['egCoreMod', 'egListMod', 'egUiMod', 'ui.bootstrap'
                     blob[col.name] = col.sortPriority < 0 ? 'desc' : 'asc';
                     return blob;
                 });
-                console.log(js2JSON($scope.sort));
             },
 
             $scope.toggleGridConf = function() {
                 if ($scope.showGridConf) {
                     $scope.showGridConf = false;
-                    // configuration done; reload data
-                    self.compileSort();
+                    self.compileSort(); 
+
+                    // config done; 
+                    // reload data in case sort priorities changed.
                     $scope.fetchData();
                 } else {
                     $scope.showGridConf = true;