From 4edf2d961a4b480decfb98a2f7c569804e4d5aa7 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Mon, 28 Apr 2014 16:26:20 -0400 Subject: [PATCH] moving more code over from list, etc. to grid Signed-off-by: Bill Erickson --- .../templates/staff/cat/bucket/record/index.tt2 | 16 ++++- .../staff/cat/bucket/record/t_grid_menu.tt2 | 20 ++++++ .../staff/cat/bucket/record/t_pending.tt2 | 45 +------------ .../templates/staff/cat/bucket/record/t_search.tt2 | 31 ++------- .../templates/staff/cat/bucket/record/t_view.tt2 | 28 +------- .../js/ui/default/staff/cat/bucket/record/app.js | 75 +++++++++------------- Open-ILS/web/js/ui/default/staff/services/grid.js | 17 +++-- 7 files changed, 89 insertions(+), 143 deletions(-) create mode 100644 Open-ILS/src/templates/staff/cat/bucket/record/t_grid_menu.tt2 diff --git a/Open-ILS/src/templates/staff/cat/bucket/record/index.tt2 b/Open-ILS/src/templates/staff/cat/bucket/record/index.tt2 index 4ebfb1efa4..f92c4aa3b1 100644 --- a/Open-ILS/src/templates/staff/cat/bucket/record/index.tt2 +++ b/Open-ILS/src/templates/staff/cat/bucket/record/index.tt2 @@ -6,7 +6,6 @@ %] [% BLOCK APP_JS %] - @@ -42,6 +41,21 @@ changing routes with each tab selection anyway.
+ + +
+
+ [% INCLUDE 'staff/cat/bucket/record/t_bucket_info.tt2' %] +
+
+ + +
+
+ [% l('The selected bucket "{{bucketId}}" is not visible to this login.') %] +
+
+
diff --git a/Open-ILS/src/templates/staff/cat/bucket/record/t_grid_menu.tt2 b/Open-ILS/src/templates/staff/cat/bucket/record/t_grid_menu.tt2 new file mode 100644 index 0000000000..a2e2bde533 --- /dev/null +++ b/Open-ILS/src/templates/staff/cat/bucket/record/t_grid_menu.tt2 @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + diff --git a/Open-ILS/src/templates/staff/cat/bucket/record/t_pending.tt2 b/Open-ILS/src/templates/staff/cat/bucket/record/t_pending.tt2 index 64c0b03014..bd68db5556 100644 --- a/Open-ILS/src/templates/staff/cat/bucket/record/t_pending.tt2 +++ b/Open-ILS/src/templates/staff/cat/bucket/record/t_pending.tt2 @@ -1,15 +1,3 @@ -
-
- [% INCLUDE 'staff/cat/bucket/record/t_bucket_info.tt2' %] -
-
- -
-
- [% l('The selected bucket "{{bucketId}}" is not visible to this login.') %] -
-
- + persist-key="eg.staff.cat.bucket.record.pending"> - - - - - - - + [% INCLUDE 'staff/cat/bucket/record/t_grid_menu.tt2' %] + - - - diff --git a/Open-ILS/src/templates/staff/cat/bucket/record/t_search.tt2 b/Open-ILS/src/templates/staff/cat/bucket/record/t_search.tt2 index d5ad33796c..4afc58eeb7 100644 --- a/Open-ILS/src/templates/staff/cat/bucket/record/t_search.tt2 +++ b/Open-ILS/src/templates/staff/cat/bucket/record/t_search.tt2 @@ -1,16 +1,6 @@ -
-
- [% INCLUDE 'staff/cat/bucket/record/t_bucket_info.tt2' %] -
-
- -
-
- [% l('The selected bucket "{{bucketId}}" is not visible to this login.') %] -
-
-
+ +
@@ -42,25 +32,14 @@ auto-fields="true" query="gridQuery" menu-label="[% l('Buckets') %]" - persist-key="eg.staff.cat.bucket.record.view"> + persist-key="eg.staff.cat.bucket.record.search"> - - - - - - - + [% INCLUDE 'staff/cat/bucket/record/t_grid_menu.tt2' %] + diff --git a/Open-ILS/src/templates/staff/cat/bucket/record/t_view.tt2 b/Open-ILS/src/templates/staff/cat/bucket/record/t_view.tt2 index 06fc8a7aac..c2bc94e390 100644 --- a/Open-ILS/src/templates/staff/cat/bucket/record/t_view.tt2 +++ b/Open-ILS/src/templates/staff/cat/bucket/record/t_view.tt2 @@ -1,16 +1,3 @@ - -
-
- [% INCLUDE 'staff/cat/bucket/record/t_bucket_info.tt2' %] -
-
- -
-
- [% l('The selected bucket "{{bucketId}}" is not visible to this login.') %] -
-
- - - - - - - - + [% INCLUDE 'staff/cat/bucket/record/t_grid_menu.tt2' %] + diff --git a/Open-ILS/web/js/ui/default/staff/cat/bucket/record/app.js b/Open-ILS/web/js/ui/default/staff/cat/bucket/record/app.js index cbc598e079..9e0b6fade8 100644 --- a/Open-ILS/web/js/ui/default/staff/cat/bucket/record/app.js +++ b/Open-ILS/web/js/ui/default/staff/cat/bucket/record/app.js @@ -15,8 +15,9 @@ angular.module('egCatRecordBuckets', ['ngRoute', 'ui.bootstrap', 'egCoreMod', 'egUiMod', 'egGridMod']) -.config(function($routeProvider, $locationProvider) { +.config(function($routeProvider, $locationProvider, $compileProvider) { $locationProvider.html5Mode(true); + $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|blob):/); // grid export var resolver = {delay : function(egStartup) {return egStartup.go()}}; @@ -251,18 +252,11 @@ function($scope, $location, $q, $timeout, $modal, $scope.tab + '/' + encodeURIComponent(id)); } - // TODO: grid selected items.. - $scope.addToBucket = function(all) { - /** TODO: open-ils.actor.container.item.create almost works - * with batches, but not quite ... */ - - var items = all ? $scope.pageList.items : - $scope.pageList.selectedItems(); - if (items.length == 0) return; - + $scope.addToBucket = function(recs) { + if (recs.length == 0) return; bucketSvc.bucketNeedsRefresh = true; - angular.forEach(items, + angular.forEach(recs, function(rec) { var item = new egIDL.cbrebi(); item.bucket(bucketSvc.currentBucket.id()); @@ -300,6 +294,7 @@ function($scope, $location, $q, $timeout, $modal, if (!id) return; bucketSvc.viewList = []; bucketSvc.allBuckets = []; // reset + bucketSvc.currentBucket = null; $location.path( '/cat/bucket/record/' + $scope.tab + '/' + id); } @@ -410,7 +405,12 @@ function($scope, $routeParams, egAuth, egNet, egIDL, bucketSvc) { $scope.setTab('search'); $scope.focusMe = true; var idQueryHash = {}; - $scope.gridQuery = function() { return idQueryHash } + $scope.gridQuery = function() { + if (bucketSvc.queryRecords.length) + return {id : bucketSvc.queryRecords}; + else + return {}; + } // add selected items directly to the pending list $scope.addToPending = function(recs) { @@ -432,13 +432,10 @@ function($scope, $routeParams, egAuth, egNet, egIDL, bucketSvc) { limit : 500 // meh }, bucketSvc.queryString, true ).then(function(resp) { + bucketSvc.queryRecords = + resp.ids.map(function(id){return id[0]}); + })['finally'](function() { $scope.searchInProgress = false; - bucketSvc.queryRecords = resp.ids.map(function(id){return id[0]}); - if (bucketSvc.queryRecords.length) { - idQueryHash = {id : bucketSvc.queryRecords}; - } else { - idQueryHash = {}; - } }); } @@ -491,23 +488,21 @@ function($scope, $q , $routeParams, bucketSvc) { // idQuery contents will change with each bucket loaded // as the query changes, the grid will notice and refresh itself - var idQueryHash = {}; - $scope.gridQuery = function() { return idQueryHash } + $scope.gridQuery = function() { + if (bucketSvc.currentBucket) { + var ids = bucketSvc.currentBucket.items().map( + function(i){return i.target_biblio_record_entry()} + ); + if (ids.length) return {id : ids}; + } + return {}; + } function drawBucket() { - bucketSvc.bucketNeedsRefresh = true; // meh about this.. - return bucketSvc.fetchBucket($scope.bucketId).then( - function(bucket) { - ids = bucket.items().map( - function(i){return i.target_biblio_record_entry()} - ); - if (ids.length) { - idQueryHash = {id : ids}; - } else { - idQueryHash = {}; // avoid empty array query errors - } - } - ); + if (!$scope.bucketId || + bucketSvc.bucketRefreshLevel($scope.bucketId) == 2) + return $q.when(); + return bucketSvc.fetchBucket($scope.bucketId); } $scope.detachRecords = function(records) { @@ -522,18 +517,10 @@ function($scope, $q , $routeParams, bucketSvc) { promises.push(bucketSvc.detachRecord(item[0].id())); }); + bucketSvc.bucketNeedsRefresh = true; return $q.all(promises).then(drawBucket); } - // avoid re-fetching the records for a bucket if the bucket - // is already loaded and we are navigating back to the - // view tab. - if ($scope.bucketId && ( - bucketSvc.bucketRefreshLevel($scope.bucketId) == 1 || - bucketSvc.currentBucket.items().length == 0) ) { - - drawBucket()['catch']( - function() { $scope.forbidden = true } - ); - } + // fetch the bucket; on error show the not-allowed message + drawBucket()['catch'](function() { $scope.forbidden = true }); }]) diff --git a/Open-ILS/web/js/ui/default/staff/services/grid.js b/Open-ILS/web/js/ui/default/staff/services/grid.js index 46a5c78b83..6f444f177c 100644 --- a/Open-ILS/web/js/ui/default/staff/services/grid.js +++ b/Open-ILS/web/js/ui/default/staff/services/grid.js @@ -130,7 +130,11 @@ angular.module('egGridMod', $scope.$watch( function() { return $scope.query() }, - function() { grid.collect() }, + function(newVal, oldVal) { + // hmm, why is this check necessary? + if (!angular.equals(newVal, oldVal)) + grid.collect() + }, true // object comparison ); } @@ -912,14 +916,19 @@ angular.module('egGridMod', egGridCtrl.dragColumn = attrs.column; egGridCtrl.dragType = attrs.dragType || 'move'; // or resize egGridCtrl.colResizeDir = 0; - angular.element(e.target).addClass( - 'eg-grid-column-move-handle-active'); + + if (egGridCtrl.dragType == 'move') { + // style the column getting moved + angular.element(e.target).addClass( + 'eg-grid-column-move-handle-active'); + } }); element.bind('dragend', function(e) { - if (egGridCtrl.dragType == 'move') + if (egGridCtrl.dragType == 'move') { angular.element(e.target).removeClass( 'eg-grid-column-move-handle-active'); + } }); } }; -- 2.11.0