webstaff: allow batch copy attribute editing across bib records
authorMike Rylander <mrylander@gmail.com>
Mon, 12 Oct 2015 20:10:04 +0000 (16:10 -0400)
committerKathy Lussier <klussier@masslnc.org>
Tue, 2 Feb 2016 19:58:51 +0000 (14:58 -0500)
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Open-ILS/src/templates/staff/cat/volcopy/t_edit.tt2
Open-ILS/src/templates/staff/cat/volcopy/t_view.tt2
Open-ILS/web/js/ui/default/staff/cat/bucket/copy/app.js
Open-ILS/web/js/ui/default/staff/cat/services/record.js
Open-ILS/web/js/ui/default/staff/cat/volcopy/app.js
Open-ILS/web/js/ui/default/staff/services/ui.js

index 519765e..d5b4725 100644 (file)
@@ -11,7 +11,7 @@
     </div>
 
     <div class="container-fluid pad-vert" ng-show="show_vols">
-        <div class="row bg-info">
+        <div ng-show="record_id" class="row bg-info">
             <div class="col-xs-2"><h4 class="center-block">[% l('Batch Apply') %]</h4></div>
             <div class="col-xs-10">
                 <div class="row">
@@ -64,7 +64,7 @@
             focus-next="focusNextFirst"
             ng-repeat="(lib,callnumbers) in data.tree | orderBy:lib track by lib"
             ng-init="ind = $index"
-            record="record.id()"
+            record="{{record_id}}"
             only-vols="only_vols"
             lib="{{lib}}"
             allcopies="data.copies"
index 2fb627e..1cfa4e0 100644 (file)
@@ -7,7 +7,7 @@ eg-navbar {
 }
 </style>
 
-<eg-record-summary ng-if="!embedded"
+<eg-record-summary ng-if="!embedded && record_id"
      record-id="record_id" record="summaryRecord"></eg-record-summary>
 
 <!-- tabbed copy data view -->
index ebc4bb9..da8d00d 100644 (file)
@@ -449,31 +449,27 @@ function($scope,  $q , $routeParams , $timeout , $window , $modal , bucketSvc ,
     }
 
     $scope.spawnHoldingsEdit = function (copies) {
-        var rec_hash = {};
+        var cp_list = []
         angular.forEach($scope.gridControls.selectedItems(), function (i) {
-            var rec = i['call_number.record.id'];
-            if (!rec_hash[rec]) rec_hash[rec] = [];
-            rec_hash[rec].push(i.id);
+            cp_list.push(i.id);
         })
 
-        angular.forEach(rec_hash, function(cp_list,r) {
-            egCore.net.request(
-                'open-ils.actor',
-                'open-ils.actor.anon_cache.set_value',
-                null, 'edit-these-copies', {
-                    record_id: r,
-                    copies: cp_list,
-                    hide_vols : true,
-                    hide_copies : false
-                }
-            ).then(function(key) {
-                if (key) {
-                    var url = egCore.env.basePath + 'cat/volcopy/' + key;
-                    $timeout(function() { $window.open(url, '_blank') });
-                } else {
-                    alert('Could not create anonymous cache key!');
-                }
-            });
+        egCore.net.request(
+            'open-ils.actor',
+            'open-ils.actor.anon_cache.set_value',
+            null, 'edit-these-copies', {
+                record_id: 0, // false-y value for record_id disables record summary
+                copies: cp_list,
+                hide_vols : true,
+                hide_copies : false
+            }
+        ).then(function(key) {
+            if (key) {
+                var url = egCore.env.basePath + 'cat/volcopy/' + key;
+                $timeout(function() { $window.open(url, '_blank') });
+            } else {
+                alert('Could not create anonymous cache key!');
+            }
         });
     }
 
index 853a046..590dea3 100644 (file)
@@ -165,7 +165,9 @@ angular.module('egCoreMod')
                     });
                     $scope.bib_cn = null;
                     $scope.bib_cn_tooltip = '';
-                    var label_class = egCore.env.aous['cat.default_classification_scheme'] || 1;
+                    var label_class = 1;
+                    if (egCore.env.aous) 
+                        label_class = egCore.env.aous['cat.default_classification_scheme'] || 1;
                     egCore.net.request(
                         'open-ils.cat',
                         'open-ils.cat.biblio.record.marc_cn.retrieve',
index d58ac9f..031a43b 100644 (file)
@@ -252,10 +252,10 @@ function(egCore , $q) {
                     ' type="text" ng-model="barcode" ng-change="updateBarcode()"/>'+
                 '</div>'+
                 '<div class="col-xs-3"><input class="form-control" type="number" ng-model="copy_number" ng-change="updateCopyNo()"/></div>'+
-                '<div class="col-xs-4"><eg-basic-combo-box list="parts" selected="part"></eg-basic-combo-box></div>'+
+                '<div class="col-xs-4"><eg-basic-combo-box eg-disabled="record == 0" list="parts" selected="part"></eg-basic-combo-box></div>'+
             '</div>',
 
-        scope: { focusNext: "=", copy: "=", callNumber: "=", index: "@" },
+        scope: { focusNext: "=", copy: "=", callNumber: "=", index: "@", record: "@" },
         controller : ['$scope','itemSvc','egCore',
             function ( $scope , itemSvc , egCore ) {
                 $scope.new_part_id = 0;
@@ -328,22 +328,22 @@ function(egCore , $q) {
         template:
             '<div class="row">'+
                 '<div class="col-xs-2">'+
-                    '<select class="form-control" ng-model="classification" ng-change="updateClassification()" ng-options="cl.name() for cl in classification_list"/>'+
+                    '<select ng-disabled="record == 0" class="form-control" ng-model="classification" ng-change="updateClassification()" ng-options="cl.name() for cl in classification_list"/>'+
                 '</div>'+
                 '<div class="col-xs-1">'+
-                    '<select class="form-control" ng-model="prefix" ng-change="updatePrefix()" ng-options="p.label() for p in prefix_list"/>'+
+                    '<select ng-disabled="record == 0" class="form-control" ng-model="prefix" ng-change="updatePrefix()" ng-options="p.label() for p in prefix_list"/>'+
                 '</div>'+
-                '<div class="col-xs-2"><input class="form-control" type="text" ng-change="updateLabel()" ng-model="label"/></div>'+
+                '<div class="col-xs-2"><input ng-disabled="record == 0" class="form-control" type="text" ng-change="updateLabel()" ng-model="label"/></div>'+
                 '<div class="col-xs-1">'+
-                    '<select class="form-control" ng-model="suffix" ng-change="updateSuffix()" ng-options="s.label() for s in suffix_list"/>'+
+                    '<select ng-disabled="record == 0" class="form-control" ng-model="suffix" ng-change="updateSuffix()" ng-options="s.label() for s in suffix_list"/>'+
                 '</div>'+
-                '<div ng-hide="onlyVols" class="col-xs-1"><input class="form-control" type="number" ng-model="copy_count" min="{{orig_copy_count}}" ng-change="changeCPCount()"></div>'+
+                '<div ng-hide="onlyVols" class="col-xs-1"><input ng-disabled="record == 0" class="form-control" type="number" ng-model="copy_count" min="{{orig_copy_count}}" ng-change="changeCPCount()"></div>'+
                 '<div ng-hide="onlyVols" class="col-xs-5">'+
-                    '<eg-vol-copy-edit ng-repeat="cp in copies track by idTracker(cp)" focus-next="focusNextBarcode" copy="cp" call-number="callNumber"></eg-vol-copy-edit>'+
+                    '<eg-vol-copy-edit record="{{record}}" ng-repeat="cp in copies track by idTracker(cp)" focus-next="focusNextBarcode" copy="cp" call-number="callNumber"></eg-vol-copy-edit>'+
                 '</div>'+
             '</div>',
 
-        scope: {focusNext: "=", allcopies: "=", copies: "=", onlyVols: "=" },
+        scope: {focusNext: "=", allcopies: "=", copies: "=", onlyVols: "=", record: "@" },
         controller : ['$scope','itemSvc','egCore',
             function ( $scope , itemSvc , egCore ) {
                 $scope.callNumber =  $scope.copies[0].call_number();
@@ -509,10 +509,10 @@ function(egCore , $q) {
         replace: true,
         template:
             '<div class="row">'+
-                '<div class="col-xs-1"><eg-org-selector selected="owning_lib" disableTest="cant_have_vols"></eg-org-selector></div>'+
-                '<div class="col-xs-1"><input class="form-control" type="number" min="{{orig_cn_count}}" ng-model="cn_count" ng-change="changeCNCount()"/></div>'+
+                '<div class="col-xs-1"><eg-org-selector alldisabled="{{record == 0}}" selected="owning_lib" disableTest="cant_have_vols"></eg-org-selector></div>'+
+                '<div class="col-xs-1"><input ng-disabled="record == 0" class="form-control" type="number" min="{{orig_cn_count}}" ng-model="cn_count" ng-change="changeCNCount()"/></div>'+
                 '<div class="col-xs-10">'+
-                    '<eg-vol-row only-vols="onlyVols"'+
+                    '<eg-vol-row only-vols="onlyVols" record="{{record}}"'+
                         'ng-repeat="(cn,copies) in struct | orderBy:cn track by cn" '+
                         'focus-next="focusNextFirst" copies="copies" allcopies="allcopies">'+
                     '</eg-vol-row>'+
index af64ef4..fefe0c4 100644 (file)
@@ -216,11 +216,12 @@ function($modal, $interpolate) {
         replace: true,
         scope: {
             list: "=", // list of strings
-            selected: "="
+            selected: "=",
+            egDisabled: "="
         },
         template:
             '<div class="input-group">'+
-                '<input type="text" class="form-control" ng-model="selected" ng-change="makeOpen()">'+
+                '<input type="text" ng-disabled="egDisabled" class="form-control" ng-model="selected" ng-change="makeOpen()">'+
                 '<div class="input-group-btn" dropdown ng-class="{open:isopen}">'+
                     '<button type="button" ng-click="showAll()" class="btn btn-default dropdown-toggle"><span class="caret"></span></button>'+
                     '<ul class="dropdown-menu dropdown-menu-right">'+