Copy Location Circ Limit Sets : UI 2
authorBill Erickson <berick@esilibrary.com>
Mon, 16 Apr 2012 13:29:19 +0000 (09:29 -0400)
committerBill Erickson <berick@esilibrary.com>
Mon, 16 Apr 2012 13:29:19 +0000 (09:29 -0400)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/web/js/ui/default/conify/global/config/circ_limit_set.js

index 7466054..eca7c98 100644 (file)
@@ -8,6 +8,7 @@ dojo.require('openils.User');
 
 var linkedEditor = null;
 var circModEntryCache = [];
+var copyLocEntryCache = [];
 var limitGroupEntryCache = [];
 var circModCache = {};
 var copyLocCache = {};
@@ -47,6 +48,7 @@ function byName(name, ctxt) {
 function buildEditPaneAdditions(editPane) {
     circModEntryCache = [];
     limitGroupEntryCache = [];
+    copyLocEntryCache = [];
     var tr = document.createElement('tr');
     var td = document.createElement('td');
     td.setAttribute('colspan','2');
@@ -136,8 +138,10 @@ function buildEditPaneAdditions(editPane) {
     if(editPane.mode == 'update') {
         var pcrud = new openils.PermaCrud();
         circModEntryCache = pcrud.search('cclscmm', {limit_set: limitSet});
+        copyLocEntryCache = pcrud.search('cclsacpl', {limit_set: limitSet});
         limitGroupEntryCache = pcrud.search('cclsgm', {limit_set: limitSet});
         dojo.forEach(circModEntryCache, function(g) { addCircMod(circModTmpl, g); } );
+        dojo.forEach(copyLocEntryCache, function(g) { addCopyLoc(copyLocTmpl, g); } );
         dojo.forEach(limitGroupEntryCache, function(g) { addLimitGroup(limitGroupTmpl, g); } );
     } 
 }
@@ -222,6 +226,30 @@ function updateLinked(fmObject, rowindex) {
         }
     );
 
+    // Next, copy locations
+    var copy_locs = [];
+    dojo.query('[name=copy-loc-entry-row]', this.editPane.domNode).forEach(
+        function(row) {
+            var loc_id = row.getAttribute('loc_id');
+            copy_locs.push(loc_id);
+            if(!copyLocEntryCache.filter(function(i) { return (i.copy_loc() == loc_id); })[0]) {
+                var entry = new fieldmapper.cclsacpl();
+                entry.isnew(true);
+                entry.limit_set(id);
+                entry.copy_loc(loc_id);
+                add.push(entry);
+            }
+        }
+    );
+    dojo.forEach(copyLocEntryCache, function(eLoc) {
+            if(!copy_locs.filter(function(i) { return (i == eLoc.copy_loc()); })[0]) {
+                eLoc.isdeleted(true);
+                remove.push(eLoc);
+            }
+        }
+    );
+
+
     // Next, limit groups
     var limit_groups = [];
     dojo.query('[name=limit-group-entry-row]', this.editPane.domNode).forEach(