ACQ upload form persist scratch
authorBill Erickson <berick@esilibrary.com>
Mon, 28 Jan 2013 16:41:48 +0000 (11:41 -0500)
committerBill Erickson <berick@esilibrary.com>
Mon, 28 Jan 2013 16:41:48 +0000 (11:41 -0500)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/web/js/ui/default/acq/picklist/upload.js

index fed74d3..3339798 100644 (file)
@@ -21,8 +21,56 @@ var usingNewPl = false;
 
 var xulStorage = openils.XUL.localStorage();
 var storekey = 'eg.acq.upload.';
+var osetkey = 'acq.upload.default.';
+var persistOrgSettings;
+// some org setting names don't map directly to dijit names
+var setNameMap = {
+    match_set : 'vandelay.match_set',
+    merge_profile : 'vandelay.merge_profile',
+    create_assets : 'vandelay.load_item_for_imported',
+    match_quality_ratio : 'vandelay.quality_ratio',
+    auto_overlay_1match : 'vandelay.merge_on_single',
+    import_no_match : 'vandelay.import_non_matching',
+    fall_through_merge_profile : 'vandelay.low_quality_fall_thru_profile',
+    auto_overlay_exact : 'vandelay.merge_on_exact',
+    auto_overlay_best_match : 'vandelay.merge_on_best'
+}
+
+// per-UI setting to change this?
+// if true, set default widget values from org settings
+// (when defined) regardless of any locally persisted value
+var ouSettingTrumpsPersist = true;
 
 function init() {
+
+    fieldmapper.standardRequest(
+        ['open-ils.actor','open-ils.actor.ou_setting.ancestor_default.batch'],
+        {   async : true,
+            params : [
+                new openils.User().user.ws_ou(),
+                [   osetkey + 'create_po',
+                    osetkey + 'activate_po',
+                    osetkey + 'provider',
+                    osetkey + 'vandelay.match_set',
+                    osetkey + 'vandelay.merge_profile',
+                    osetkey + 'vandelay.import_non_matching',
+                    osetkey + 'vandelay.merge_on_exact',
+                    osetkey + 'vandelay.merge_on_best',
+                    osetkey + 'vandelay.merge_on_single',
+                    osetkey + 'vandelay.quality_ratio',
+                    osetkey + 'vandelay.low_quality_fall_thru_profile',
+                    osetkey + 'vandelay.load_item_for_imported'
+                ]
+            ],
+            oncomplete : function(r) {
+                persistOrgSettings = openils.Util.readResponse(r);
+                init2();
+            }
+        }
+    );
+}
+
+function init2() {
     dojo.byId('acq-pl-upload-ses').value = openils.User.authtoken;
 
     loadYearSelector();
@@ -74,19 +122,34 @@ function init() {
 }
 
 function readCachedValue(dij, key) {
-    // TODO: check for org settings first
-    var val = xulStorage.getItem(storekey + key);
-    if (dij && val) dij.attr('value', val);
+    var val;
+    var setname = osetkey + (setNameMap[key] ? setNameMap[key] : key);
+
+    if (ouSettingTrumpsPersist && persistOrgSettings[setname]) {
+        val = persistOrgSettings[setname].value;
+    } else {
+        val = xulStorage.getItem(storekey + key);
+        if (!val && persistOrgSettings[setname])
+            val = persistOrgSettings[setname].value;
+    }
+
+    if (val) dij.attr('value', val);
     return val;
 }
 
 function writeCachedValue(dij, key) {
-    // TODO: if org settings exist for key, do not store
-    var val = dij.attr('value');
-    if (val === null || val === false || val == '') {
+    if (ouSettingTrumpsPersist && persistOrgSettings[setname]) {
+        // don't muck up localStorage if we're using org settings
         xulStorage.removeItem(storekey + key);
+
     } else {
-        xulStorage.setItem(storekey + key, val);
+        var val = dij.attr('value');
+
+        if (val === null || val === false || val == '') {
+            xulStorage.removeItem(storekey + key);
+        } else {
+            xulStorage.setItem(storekey + key, val);
+        }
     }
 }