item status UI continued
authorBill Erickson <berick@esilibrary.com>
Fri, 16 May 2014 00:23:51 +0000 (20:23 -0400)
committerBill Erickson <berick@esilibrary.com>
Fri, 16 May 2014 00:23:51 +0000 (20:23 -0400)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/src/templates/staff/cat/item/index.tt2
Open-ILS/src/templates/staff/cat/item/t_circs_pane.tt2
Open-ILS/src/templates/staff/cat/item/t_holds_pane.tt2
Open-ILS/web/js/ui/default/staff/cat/item/app.js

index 9e1a540..0ad87d7 100644 (file)
@@ -16,9 +16,7 @@
   /* FIXME: MOVE ME */
   #item-status-barcode {width: 16em;}
   #item-status-form { 
-    padding-bottom: 10px; 
-    margin-bottom: 10px; 
-    /*border-bottom: 1px solid #CCC; */
+    margin-bottom: 20px; 
   }
 </style>
 
index c61397b..bfad35b 100644 (file)
 <div class="col-md-12">
-
-    <div class="flex-row">
-      <div class="flex-cell flex-2 header-label-big">
-        [% l('Previous Circ Group') %]
-      </div>
-      <div class="flex-cell flex-2 header-label-big">
-        [% l('Most Recent Circ Group') %]
-      </div>
+  <div class="flex-row">
+    <div class="flex-cell flex-2 header-label-big">
+      [% l('Previous Circ Group') %]
     </div>
-
-    <div class="flex-row">
-      <div class="flex-cell">[% l('Patron') %]</div>
-      <div class="flex-cell flex-cell-well">
-        <a href="./circ/patron/{{prev_circ_usr.id()}}/checkout" 
-          ng-if="prev_circ_summary" target="_self">
-          [% l('[_1], [_2] [_3] : [_4]', 
-            '{{prev_circ_usr.family_name()}}'
-            '{{prev_circ_usr.first_given_name()}}'
-            '{{prev_circ_usr.second_given_name()}}'
-            '{{prev_circ_usr.card().barcode()}}') %]
-        </a>
-      </div>
-      <div class="flex-cell">[% l('Patron') %]</div>
-      <div class="flex-cell flex-cell-well">
-        <a href="./circ/patron/{{circ.usr().id()}}/checkout" 
-          ng-if="circ" target="_self">
-          [% l('[_1], [_2] [_3] : [_4]', 
-            '{{circ.usr().family_name()}}'
-            '{{circ.usr().first_given_name()}}'
-            '{{circ.usr().second_given_name()}}'
-            '{{circ.usr().card().barcode()}}') %]
-        </a>
-      </div>
+    <div class="flex-cell flex-2 header-label-big">
+      [% l('Most Recent Circ Group') %]
     </div>
+  </div>
 
-    <div class="flex-row">
-      <div class="flex-cell">[% l('Total Circs') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{prev_circ_summary.num_circs()}}
-      </div>
-      <div class="flex-cell">[% l('Total Circs') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{circ_summary.num_circs()}}
-      </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Patron') %]</div>
+    <div class="flex-cell flex-cell-well">
+      <a href="./circ/patron/{{prev_circ_usr.id()}}/checkout" 
+        ng-if="prev_circ_summary" target="_self">
+        [% l('[_1], [_2] [_3] : [_4]', 
+          '{{prev_circ_usr.family_name()}}'
+          '{{prev_circ_usr.first_given_name()}}'
+          '{{prev_circ_usr.second_given_name()}}'
+          '{{prev_circ_usr.card().barcode()}}') %]
+      </a>
     </div>
-
-    <div class="flex-row">
-      <div class="flex-cell">[% l('Checkout Date') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{prev_circ_summary.start_time() | date:'short'}}
-      </div>
-      <div class="flex-cell">[% l('Checkout Date') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{circ.xact_start() | date:'short'}}
-      </div>
+    <div class="flex-cell">[% l('Patron') %]</div>
+    <div class="flex-cell flex-cell-well">
+      <a href="./circ/patron/{{circ.usr().id()}}/checkout" 
+        ng-if="circ" target="_self">
+        [% l('[_1], [_2] [_3] : [_4]', 
+          '{{circ.usr().family_name()}}'
+          '{{circ.usr().first_given_name()}}'
+          '{{circ.usr().second_given_name()}}'
+          '{{circ.usr().card().barcode()}}') %]
+      </a>
     </div>
+  </div>
 
-    <div class="flex-row">
-      <div class="flex-cell">[% l('Checkout Workstation') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{prev_circ_summary.checkout_workstation()}}
-      </div>
-      <div class="flex-cell">[% l('Checkout Workstation') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{circ.workstation().name()}}
-      </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Total Circs') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{prev_circ_summary.num_circs()}}
+    </div>
+    <div class="flex-cell">[% l('Total Circs') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{circ_summary.num_circs()}}
     </div>
+  </div>
 
-    <div class="flex-row">
-      <div class="flex-cell">[% l('Last Renewed On') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{prev_circ_summary.last_renewal_time() | date:'short'}}
-      </div>
-      <div class="flex-cell">[% l('Last Renewed On') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{circ_summary.last_renewal_time() | date:'short'}}
-      </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Checkout Date') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{prev_circ_summary.start_time() | date:'short'}}
     </div>
+    <div class="flex-cell">[% l('Checkout Date') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{circ.xact_start() | date:'short'}}
+    </div>
+  </div>
 
-    <div class="flex-row">
-      <div class="flex-cell">[% l('Renewal Workstation') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{prev_circ_summary.last_renewal_workstation()}}
-      </div>
-      <div class="flex-cell">[% l('Renewal Workstation') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{circ_summary.last_renewal_workstation()}}
-      </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Checkout Workstation') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{prev_circ_summary.checkout_workstation()}}
+    </div>
+    <div class="flex-cell">[% l('Checkout Workstation') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{circ.workstation().name()}}
     </div>
+  </div>
 
-    <div class="flex-row">
-      <div class="flex-cell">[% l('Stop Fines Reason') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{prev_circ_summary.last_stop_fines()}}
-      </div>
-      <div class="flex-cell">[% l('Stop Fines Reason') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{circ.stop_fines()}}
-      </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Last Renewed On') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{prev_circ_summary.last_renewal_time() | date:'short'}}
     </div>
+    <div class="flex-cell">[% l('Last Renewed On') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{circ_summary.last_renewal_time() | date:'short'}}
+    </div>
+  </div>
 
-    <div class="flex-row">
-      <div class="flex-cell">[% l('Stop Fines Time') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{prev_circ_summary.last_stop_fines_time() | date:'short'}}
-      </div>
-      <div class="flex-cell">[% l('Stop Fines Time') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{circ.stop_fines_time() | date:'short'}}
-      </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Renewal Workstation') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{prev_circ_summary.last_renewal_workstation()}}
+    </div>
+    <div class="flex-cell">[% l('Renewal Workstation') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{circ_summary.last_renewal_workstation()}}
     </div>
+  </div>
 
-    <div class="flex-row">
-      <div class="flex-cell">[% l('Checkin Time') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{prev_circ_summary.last_checkin_time() | date:'short'}}
-      </div>
-      <div class="flex-cell">[% l('Checkin Time') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{circ.checkin_time() | date:'short'}}
-      </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Stop Fines Reason') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{prev_circ_summary.last_stop_fines()}}
     </div>
+    <div class="flex-cell">[% l('Stop Fines Reason') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{circ.stop_fines()}}
+    </div>
+  </div>
 
-    <div class="flex-row">
-      <div class="flex-cell">[% l('Checkin Scan Time') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{prev_circ_summary.last_checkin_scan_time() | date:'short'}}
-      </div>
-      <div class="flex-cell">[% l('Checkin Scan Time') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{circ.checkin_scan_time() | date:'short'}}
-      </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Stop Fines Time') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{prev_circ_summary.last_stop_fines_time() | date:'short'}}
+    </div>
+    <div class="flex-cell">[% l('Stop Fines Time') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{circ.stop_fines_time() | date:'short'}}
     </div>
+  </div>
 
-    <div class="flex-row">
-      <div class="flex-cell">[% l('Checkin Workstation') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{prev_circ_summary.last_checkin_workstation()}}
-      </div>
-      <div class="flex-cell">[% l('Checkin Workstation') %]</div>
-      <div class="flex-cell flex-cell-well">
-        {{circ.checkin_workstation.name()}}
-      </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Checkin Time') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{prev_circ_summary.last_checkin_time() | date:'short'}}
     </div>
+    <div class="flex-cell">[% l('Checkin Time') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{circ.checkin_time() | date:'short'}}
+    </div>
+  </div>
 
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Checkin Scan Time') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{prev_circ_summary.last_checkin_scan_time() | date:'short'}}
+    </div>
+    <div class="flex-cell">[% l('Checkin Scan Time') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{circ.checkin_scan_time() | date:'short'}}
+    </div>
+  </div>
 
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Checkin Workstation') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{prev_circ_summary.last_checkin_workstation()}}
+    </div>
+    <div class="flex-cell">[% l('Checkin Workstation') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{circ.checkin_workstation.name()}}
+    </div>
+  </div>
 </div>
 
index f4cbcac..a5f7e50 100644 (file)
@@ -1 +1,125 @@
-<h1>summary</h1>
+<div class="col-md-6" ng-show="!hold">
+  <div class="alert alert-info">
+    [% l('Item is not captured for a hold') %]
+  </div>
+</div>
+<div class="col-md-6" ng-show="hold">
+  <div class="flex-row">
+    <div class="flex-cell flex-2 header-label-big">
+      [% l('Captured Hold Info') %]
+    </div>
+  </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Patron') %]</div>
+    <div class="flex-cell flex-cell-well">
+      <a href="./circ/patron/{{hold.usr().id()}}/checkout" 
+        ng-if="hold" target="_self">
+        [% l('[_1], [_2] [_3] : [_4]', 
+          '{{hold.usr().family_name()}}'
+          '{{hold.usr().first_given_name()}}'
+          '{{hold.usr().second_given_name()}}'
+          '{{hold.usr().card().barcode()}}') %]
+      </a>
+    </div>
+  </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Requestor') %]</div>
+    <div class="flex-cell flex-cell-well">
+      <a href="./circ/patron/{{hold.requestor().id()}}/checkout" 
+        ng-if="hold" target="_self">
+        [% l('[_1], [_2] [_3] : [_4]', 
+          '{{hold.requestor().family_name()}}'
+          '{{hold.requestor().first_given_name()}}'
+          '{{hold.requestor().second_given_name()}}'
+          '{{hold.requestor().card().barcode()}}') %]
+      </a>
+    </div>
+  </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Pickup Lib') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{hold.pickup_lib().shortname()}}
+    </div>
+  </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Current Shelf Lib') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{hold.current_shelf_lib().shortname()}}
+    </div>
+  </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Request Date') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{hold.request_time() | date:'short'}}
+    </div>
+  </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Capture Date') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{hold.capture_time() | date:'short'}}
+    </div>
+  </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Shelf Time') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{hold.shelf_time() | date:'short'}}
+    </div>
+  </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Shelf Expire Time') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{hold.shelf_expire_time() | date:'short'}}
+    </div>
+  </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Hold Expire Time') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{hold.expire_time() | date:'short'}}
+    </div>
+  </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Behind Desk') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{hold.behind_desk()}}
+    </div>
+  </div>
+</div>
+
+<div class="col-md-6" ng-show="!transit">
+  <div class="alert alert-info">
+    [% l('Item has not transited') %]
+  </div>
+</div>
+
+<div class="col-md-6" ng-show="transit">
+  <div class="flex-row">
+    <div class="flex-cell flex-2 header-label-big">
+      [% l('Most Recent Transit') %]
+    </div>
+  </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Transit Source') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{transit.source().shortname()}}
+    </div>
+  </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Transit Destination') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{transit.dest().shortname()}}
+    </div>
+  </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Transit Send Time') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{transit.source_send_time() | date:'short'}}
+    </div>
+  </div>
+  <div class="flex-row">
+    <div class="flex-cell">[% l('Transit Receive Time') %]</div>
+    <div class="flex-cell flex-cell-well">
+      {{transit.source_recv_time() | date:'short'}}
+    </div>
+  </div>
+</div>
+
index 0652158..b229f78 100644 (file)
@@ -207,9 +207,7 @@ function($scope , $location , $routeParams , egCore , itemSvc) {
                 limit :  1
             }
 
-        ).then(function(circ) {
-            if (!circ) return;
-
+        ).then(null, null, function(circ) {
             $scope.circ = circ;
 
             // load the chain for this circ
@@ -228,14 +226,16 @@ function($scope , $location , $routeParams , egCore , itemSvc) {
                 'open-ils.circ',
                 'open-ils.circ.prev_renewal_chain.retrieve_by_circ.summary',
                 egCore.auth.token(), $scope.circ.id()
-            ).then(function(summary) {
+
+            ).then(null, null, function(summary) {
                 $scope.prev_circ_summary = summary.summary;
-                return summary.usr;
-            }).then(function(user_id) {
-                return egCore.pcrud.retrieve('au', user_id, 
-                    {flesh : 1, flesh_fields : {au : ['card']}});
-            }).then(function(user) {
-                $scope.prev_circ_usr = user;
+
+                egCore.pcrud.retrieve('au', summary.usr,
+                    {flesh : 1, flesh_fields : {au : ['card']}})
+
+                .then(function(user) {
+                    $scope.prev_circ_usr = user;
+                });
             });
         });
     }
@@ -274,6 +274,47 @@ function($scope , $location , $routeParams , egCore , itemSvc) {
         });
     }
 
+    function loadHolds() {
+        delete $scope.hold;
+
+        egCore.pcrud.search('ahr', 
+            {   current_copy : copyId, 
+                cancel_time : null, 
+                fulfillment_time : null,
+                capture_time : {'<>' : null}
+            }, {
+                flesh : 2,
+                flesh_fields : {
+                    ahr : ['requestor', 'usr'],
+                    au  : ['card']
+                }
+            }
+        ).then(null, null, function(hold) {
+            $scope.hold = hold;
+            hold.pickup_lib(egCore.org.get(hold.pickup_lib()));
+            if (hold.current_shelf_lib()) {
+                hold.current_shelf_lib(
+                    egCore.org.get(hold.current_shelf_lib()));
+            }
+            hold.behind_desk(Boolean(hold.behind_desk() == 't'));
+        });
+    }
+
+    function loadTransits() {
+        delete $scope.transit;
+        delete $scope.hold_transit;
+
+        egCore.pcrud.search('atc', 
+            {target_copy : copyId},
+            {order_by : {atc : 'source_send_time DESC'}}
+
+        ).then(null, null, function(transit) {
+            $scope.transit = transit;
+            transit.source(egCore.org.get(transit.source()));
+            transit.dest(egCore.org.get(transit.dest()));
+        })
+    }
+
 
     // we don't need all data on all tabs, so fetch what's needed when needed.
     function loadTabData() {
@@ -286,6 +327,11 @@ function($scope , $location , $routeParams , egCore , itemSvc) {
             case 'circs':
                 loadCurrentCirc(true);
                 break;
+
+            case 'holds':
+                loadHolds()
+                loadTransits();
+                break;
         }
     }