From 626cb58ec6ce5a22c07ff85d4ecc9ba59f7de493 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Wed, 14 May 2014 12:04:22 -0400 Subject: [PATCH] initial item status UI Signed-off-by: Bill Erickson --- Open-ILS/src/templates/staff/cat/item/index.tt2 | 21 ++++ .../templates/staff/cat/item/summary_header.tt2 | 58 ++++++++++ .../src/templates/staff/cat/item/t_cat_pane.tt2 | 1 + .../src/templates/staff/cat/item/t_circs_pane.tt2 | 1 + .../src/templates/staff/cat/item/t_holds_pane.tt2 | 1 + Open-ILS/src/templates/staff/cat/item/t_list.tt2 | 1 + .../templates/staff/cat/item/t_summary_pane.tt2 | 32 ++++++ Open-ILS/src/templates/staff/cat/item/t_view.tt2 | 34 ++++++ Open-ILS/src/templates/staff/css/style.css.tt2 | 6 +- Open-ILS/src/templates/staff/navbar.tt2 | 6 + Open-ILS/web/js/ui/default/staff/cat/item/app.js | 125 +++++++++++++++++++++ 11 files changed, 285 insertions(+), 1 deletion(-) create mode 100644 Open-ILS/src/templates/staff/cat/item/index.tt2 create mode 100644 Open-ILS/src/templates/staff/cat/item/summary_header.tt2 create mode 100644 Open-ILS/src/templates/staff/cat/item/t_cat_pane.tt2 create mode 100644 Open-ILS/src/templates/staff/cat/item/t_circs_pane.tt2 create mode 100644 Open-ILS/src/templates/staff/cat/item/t_holds_pane.tt2 create mode 100644 Open-ILS/src/templates/staff/cat/item/t_list.tt2 create mode 100644 Open-ILS/src/templates/staff/cat/item/t_summary_pane.tt2 create mode 100644 Open-ILS/src/templates/staff/cat/item/t_view.tt2 create mode 100644 Open-ILS/web/js/ui/default/staff/cat/item/app.js diff --git a/Open-ILS/src/templates/staff/cat/item/index.tt2 b/Open-ILS/src/templates/staff/cat/item/index.tt2 new file mode 100644 index 0000000000..2e99a90f57 --- /dev/null +++ b/Open-ILS/src/templates/staff/cat/item/index.tt2 @@ -0,0 +1,21 @@ +[% + WRAPPER "staff/base.tt2"; + ctx.page_title = l("Item Status"); + ctx.page_app = "egItemStatus"; + ctx.page_ctrl = "SearchCtrl"; +%] + +[% BLOCK APP_JS %] + + + + +[% END %] + +

search bar goes here

+ +
+ +[% END %] + + diff --git a/Open-ILS/src/templates/staff/cat/item/summary_header.tt2 b/Open-ILS/src/templates/staff/cat/item/summary_header.tt2 new file mode 100644 index 0000000000..0bfb53566f --- /dev/null +++ b/Open-ILS/src/templates/staff/cat/item/summary_header.tt2 @@ -0,0 +1,58 @@ + + +
+
[% l('Title:') %]
+
+ {{copy.call_number().record().simple_record().title() || copy.dummy_title()}} +
+ + +
+
[% l('Edition:') %]
+
+ +
[% l('TCN:') %]
+
{{copy.call_number().record().tcn_value()}}
+ +
[% l('Created By:') %]
+
{{copy.call_number().record().creator().usrname()}}
+
+
+ +
+
[% l('Author:') %]
+
+ {{copy.call_number().record().simple_record().author() || copy.dummy_author()}} +
+ +
+
[% l('Pub Date:') %]
+
+ {{copy.call_number().record().simple_record().pubdate()}} +
+ +
[% l('Databse ID:') %]
+
{{copy.call_number().record().id()}}
+ +
[% l('Last Edited By:') %]
+
{{copy.call_number().record().editor().usrname()}}
+
+
+ +
+
[% l('Bib Call #:') %]
+
+ +
+
[% l('Item CAll #:') %]
+
{{copy.call_number().label()}}
+ +
[% l('Record Owner:') %]
+
{{copy.call_number().record().owner().shortname()}}
+ +
[% l('Last Edited On:') %]
+
{{copy.edit_date() | date:'short'}}
+
+
+ + diff --git a/Open-ILS/src/templates/staff/cat/item/t_cat_pane.tt2 b/Open-ILS/src/templates/staff/cat/item/t_cat_pane.tt2 new file mode 100644 index 0000000000..f4cbcacaca --- /dev/null +++ b/Open-ILS/src/templates/staff/cat/item/t_cat_pane.tt2 @@ -0,0 +1 @@ +

summary

diff --git a/Open-ILS/src/templates/staff/cat/item/t_circs_pane.tt2 b/Open-ILS/src/templates/staff/cat/item/t_circs_pane.tt2 new file mode 100644 index 0000000000..f4cbcacaca --- /dev/null +++ b/Open-ILS/src/templates/staff/cat/item/t_circs_pane.tt2 @@ -0,0 +1 @@ +

summary

diff --git a/Open-ILS/src/templates/staff/cat/item/t_holds_pane.tt2 b/Open-ILS/src/templates/staff/cat/item/t_holds_pane.tt2 new file mode 100644 index 0000000000..f4cbcacaca --- /dev/null +++ b/Open-ILS/src/templates/staff/cat/item/t_holds_pane.tt2 @@ -0,0 +1 @@ +

summary

diff --git a/Open-ILS/src/templates/staff/cat/item/t_list.tt2 b/Open-ILS/src/templates/staff/cat/item/t_list.tt2 new file mode 100644 index 0000000000..7b02743d2e --- /dev/null +++ b/Open-ILS/src/templates/staff/cat/item/t_list.tt2 @@ -0,0 +1 @@ +

LIST

diff --git a/Open-ILS/src/templates/staff/cat/item/t_summary_pane.tt2 b/Open-ILS/src/templates/staff/cat/item/t_summary_pane.tt2 new file mode 100644 index 0000000000..c3b2e1df87 --- /dev/null +++ b/Open-ILS/src/templates/staff/cat/item/t_summary_pane.tt2 @@ -0,0 +1,32 @@ + +
+
[% l('Barcode') %]
+
{{copy.barcode()}}
+ +
[% l('Circ Library') %]
+
{{copy.circ_lib().shortname()}}
+ +
[% l('Item Call #') %]
+
{{copy.call_number().label()}}
+ +
[% l('Status') %]
+
{{copy.status().name()}}
+
+ +
+
[% l('Price') %]
+
{{copy.price()}}
+ +
[% l('Owning Library') %]
+
{{copy.circ_lib().shortname()}}
+ +
[% l('Renewal Type') %]
+
+
[% l('OPAC') %]
+
[% l('Desk') %]
+
[% l('Phone') %]
+
+ +
[% l('Due Date') %]
+
{{circ.due_date() | date:'short'}}
+
diff --git a/Open-ILS/src/templates/staff/cat/item/t_view.tt2 b/Open-ILS/src/templates/staff/cat/item/t_view.tt2 new file mode 100644 index 0000000000..15aef0b026 --- /dev/null +++ b/Open-ILS/src/templates/staff/cat/item/t_view.tt2 @@ -0,0 +1,34 @@ +[% INCLUDE 'staff/cat/item/summary_header.tt2' %] + + + + +
+
+
+
+
+
+
+ diff --git a/Open-ILS/src/templates/staff/css/style.css.tt2 b/Open-ILS/src/templates/staff/css/style.css.tt2 index 6d452ebf59..d6c1c53d51 100644 --- a/Open-ILS/src/templates/staff/css/style.css.tt2 +++ b/Open-ILS/src/templates/staff/css/style.css.tt2 @@ -113,6 +113,11 @@ table.list tr.selected td { border-bottom:1px solid #CCC; } +/* used for th-like things in grids */ +.header-label { + font-weight: bold; +} + /* ---------------------------------------------------------------------- * Grid * ---------------------------------------------------------------------- */ @@ -286,7 +291,6 @@ table.list tr.selected td { } */ - /* ---------------------------------------------------------------------- * /Grid * ---------------------------------------------------------------------- */ diff --git a/Open-ILS/src/templates/staff/navbar.tt2 b/Open-ILS/src/templates/staff/navbar.tt2 index db4ffc9bbf..d2a668bc6e 100644 --- a/Open-ILS/src/templates/staff/navbar.tt2 +++ b/Open-ILS/src/templates/staff/navbar.tt2 @@ -43,6 +43,12 @@ [% l('Search for Patrons') %] +
  • + + + [% l('Search for Copies by Barcode') %] + +
  • diff --git a/Open-ILS/web/js/ui/default/staff/cat/item/app.js b/Open-ILS/web/js/ui/default/staff/cat/item/app.js new file mode 100644 index 0000000000..90b5730b16 --- /dev/null +++ b/Open-ILS/web/js/ui/default/staff/cat/item/app.js @@ -0,0 +1,125 @@ +/** + * Item Display + */ + +angular.module('egItemStatus', + ['ngRoute', 'ui.bootstrap', 'egCoreMod', 'egUiMod', 'egGridMod']) + +.config(function($routeProvider, $locationProvider, $compileProvider) { + $locationProvider.html5Mode(true); + $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|blob):/); // grid export + + var resolver = {delay : function(egStartup) {return egStartup.go()}}; + + // search page shows the list view by default + $routeProvider.when('/cat/item/search', { + templateUrl: './cat/item/t_list', + controller: 'ListCtrl', + resolve : resolver + }); + + $routeProvider.when('/cat/item/view/:id/:tab', { + templateUrl: './cat/item/t_view', + controller: 'ViewCtrl', + resolve : resolver + }); + + // default page / bucket view + $routeProvider.otherwise({redirectTo : '/cat/item/search'}); +}) + +/** + * Search bar along the top of the page. + * Parent scope for list and detail views + */ +.controller('SearchCtrl', + ['$scope','$location','egCore', +function($scope , $location , egCore) { +// $location.path('/cat/item/view/' + 46879); +}]) + +/** + * List view - grid stuff + */ +.controller('ListCtrl', + ['$scope','$location','egCore', +function($scope , $location , egCore) { + // grid stuff + +}]) + +/** + * Detail view -- shows one copy + */ +.controller('ViewCtrl', + ['$scope','$location','$routeParams','egCore', +function($scope , $location , $routeParams , egCore) { + var copyId = $routeParams.id; + $scope.tab = $routeParams.tab; + + function load() { + + egCore.pcrud.retrieve('acp', copyId, { + flesh : 3, + flesh_fields : { + acp : ['call_number','location','status','location'], + acn : ['record'], + bre : ['simple_record','creator','editor'] + }, + + select : { + // avoid fleshing MARC on the bre + // note: don't add simple_record.. not sure why + bre : ['id','tcn_value','creator','editor'], + } + + }).then(function(copy) { + + if (!copy) { + $scope.copyNotFound = true; + return; + } + + // locally flesh org units + copy.circ_lib(egCore.org.get(copy.circ_lib())); + copy.call_number().owning_lib( + egCore.org.get(copy.call_number().owning_lib())); + + var r = copy.call_number().record(); + if (r.owner()) r.owner(egCore.org.get(r.owner())); + + $scope.copy = copy; + }); + } + + // additional data needed by the summary pane + function loadSummaryData() { + + egCore.pcrud.search('circ', + {target_copy : copyId}, + { flesh : 1, + flesh_fields : { + circ : [ + 'workstation', + 'checkin_workstation', + 'duration_rule', + 'max_fine_rule', + 'recurring_fine_rule' + ] + }, + order_by : {circ : 'xact_start desc' }, + limit : 1 + } + + ).then(function(circ) { + $scope.circ = circ; + }); + } + + load(); + + if ($scope.tab == 'summary') loadSummaryData(); + // ... + +}]) + -- 2.11.0