start fleshing out the to-be-staged tab
authorGalen Charlton <gmc@equinoxinitiative.org>
Tue, 26 May 2020 23:03:21 +0000 (19:03 -0400)
committerGalen Charlton <gmc@equinoxinitiative.org>
Tue, 26 May 2020 23:03:21 +0000 (19:03 -0400)
Open-ILS/src/templates/staff/circ/curbside/index.tt2
Open-ILS/src/templates/staff/circ/curbside/t_main.tt2
Open-ILS/src/templates/staff/circ/curbside/t_to_be_staged_manager.tt2 [new file with mode: 0644]
Open-ILS/web/js/ui/default/staff/circ/curbside/app.js
Open-ILS/web/js/ui/default/staff/circ/curbside/directives/to_be_staged_manager.js [new file with mode: 0644]
Open-ILS/web/js/ui/default/staff/circ/curbside/services/core.js [new file with mode: 0644]

index 2eae7ae..95b4ea0 100644 (file)
@@ -6,7 +6,9 @@
 
 [% BLOCK APP_JS %]
 <script src="[% ctx.media_prefix %]/js/ui/default/staff/services/grid.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/circ/curbside/services/core.js"></script>
 <script src="[% ctx.media_prefix %]/js/ui/default/staff/circ/curbside/app.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/circ/curbside/directives/to_be_staged_manager.js"></script>
 <script>
 angular.module('egCoreMod').run(['egStrings', function(s) {
 }]);
index 768e532..bb1ddb9 100644 (file)
@@ -11,7 +11,7 @@
            otherwise selecting the active table won't work cleanly -->
       <uib-tab index="'to-be-staged'" heading="[% l('To Be Staged') %]">
         <div class="container-fluid">
-           XXX
+           <eg-curbside-to-be-staged-manager></eg-curbside-to-be-staged-manager>
         </div>
       </uib-tab>
       <uib-tab index="'staged'" heading="[% l('Staged And Ready') %]">
diff --git a/Open-ILS/src/templates/staff/circ/curbside/t_to_be_staged_manager.tt2 b/Open-ILS/src/templates/staff/circ/curbside/t_to_be_staged_manager.tt2
new file mode 100644 (file)
index 0000000..635acaa
--- /dev/null
@@ -0,0 +1,27 @@
+<div>
+  <eg-grid
+    id-field="slot_id"
+    features="-sort,-multisort,-picker,-multiselect"
+    items-provider="gridDataProvider"
+    grid-controls="gridControls"
+    dateformat="{{$root.egDateAndTimeFormat}}">
+
+    <eg-grid-menu-item handler="refresh_staging" standalone="true"
+        label="[% l('Refresh List') %]"></eg-grid-menu-item>
+
+    <eg-grid-field label="[% l('Pickup Date/Time') %]" path="slot.slot" datatype="timestamp"></eg-grid-field>
+    <eg-grid-field label="[% l('Patron') %]" path="slot.patron">
+      <a href="./circ/patron/{{item.slot.patron().id()}}/holds" target="_blank">
+        {{item.slot.patron().family_name()}} / {{item.slot.patron().card().barcode()}}
+        <span ng-show="item.id" class="glyphicon glyphicon-new-window"></span>
+      </a>
+    </eg-grid-field>
+    <eg-grid-field label="[% l('Appointment ID') %]" path="slot.id"></eg-grid-field>
+    <eg-grid-field label="[% l('Items for Pickup') %]" path="holds">
+       TODO
+    </eg-grid-field>
+    <eg-grid-field label="[% l('Action') %]">
+      <button class="btn btn-sm btn-primary">[% l('Staged') %]</button>
+    </eg-grid-field>
+  </eg-grid>
+</div>
index df25ee9..c27a592 100644 (file)
@@ -1,4 +1,4 @@
-angular.module('egCurbsideApp', ['ui.bootstrap','ngRoute','egCoreMod','egGridMod','ngToast','egCurbsideAppDep']);
+angular.module('egCurbsideApp', ['ui.bootstrap','ngRoute','egCoreMod','egGridMod','ngToast','egCurbsideMod','egCurbsideAppDep']);
 angular.module('egCurbsideAppDep', []);
 
 angular.module('egCurbsideApp')
@@ -32,8 +32,8 @@ angular.module('egCurbsideApp')
 })
     
 .controller('CurbsideCtrl',
-       ['$scope','$routeParams','$location',
-function($scope , $routeParams , $location ) {
+       ['$scope','$routeParams','$location','egCurbsideCoreSvc',
+function($scope , $routeParams , $location , egCurbsideCoreSvc ) {
     $scope.active_tab = $routeParams.active_tab ?  $routeParams.active_tab : 'to-be-staged';
 
     $scope.$watch('active_tab', function(newVal, oldVal) {
diff --git a/Open-ILS/web/js/ui/default/staff/circ/curbside/directives/to_be_staged_manager.js b/Open-ILS/web/js/ui/default/staff/circ/curbside/directives/to_be_staged_manager.js
new file mode 100644 (file)
index 0000000..1397e29
--- /dev/null
@@ -0,0 +1,25 @@
+angular.module('egCurbsideAppDep')
+
+.directive('egCurbsideToBeStagedManager', function() {
+    return {
+        transclude: true,
+        restrict:   'E',
+        scope: { },
+        templateUrl: './circ/curbside/t_to_be_staged_manager',
+        controller:
+       ['$scope','$q','egCurbsideCoreSvc','egCore','egGridDataProvider',
+        '$uibModal','$timeout','$location','egConfirmDialog','ngToast',
+function($scope , $q , egCurbsideCoreSvc , egCore , egGridDataProvider ,
+         $uibModal , $timeout , $location , egConfirmDialog , ngToast) {
+
+    $scope.gridControls = {
+        activateItem : function (item) {  console.debug('gmc') } // TODO
+    };
+
+    $scope.gridDataProvider = egGridDataProvider.instance({
+        get : function(offset, count) {
+            return egCurbsideCoreSvc.get_to_be_staged(offset, count);
+        }
+    });
+
+}]}});
diff --git a/Open-ILS/web/js/ui/default/staff/circ/curbside/services/core.js b/Open-ILS/web/js/ui/default/staff/circ/curbside/services/core.js
new file mode 100644 (file)
index 0000000..d70e92b
--- /dev/null
@@ -0,0 +1,19 @@
+angular.module('egCurbsideMod', ['egCoreMod'])
+.factory('egCurbsideCoreSvc',
+       ['egCore','orderByFilter','$q','$filter','$uibModal','ngToast','egConfirmDialog',
+function(egCore , orderByFilter , $q , $filter , $uibModal , ngToast , egConfirmDialog) {
+    var service = { };
+
+    service.get_to_be_staged = function(offset, count) {
+        return egCore.net.request(
+            'open-ils.curbside',
+            'open-ils.curbside.fetch_to_be_staged',
+            egCore.auth.token(),
+            egCore.auth.user().ws_ou(),
+            count, // yep, count first
+            offset
+        );
+    };
+
+    return service;
+}]);