[% 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) {
}]);
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') %]">
--- /dev/null
+<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>
-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')
})
.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) {
--- /dev/null
+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);
+ }
+ });
+
+}]}});
--- /dev/null
+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;
+}]);