ACQ Vandelay : Ui refactor for standalone vl agent part deux
authorBill Erickson <berick@esilibrary.com>
Thu, 1 Dec 2011 20:48:57 +0000 (15:48 -0500)
committerBill Erickson <berick@esilibrary.com>
Thu, 1 Dec 2011 20:48:57 +0000 (15:48 -0500)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm
Open-ILS/src/templates/acq/common/vlagent.tt2 [new file with mode: 0644]
Open-ILS/web/js/ui/default/acq/common/vlagent.js [new file with mode: 0644]

index 61eb569..382048c 100644 (file)
@@ -319,22 +319,27 @@ sub delete_lineitem {
 
 # begins and commit transactions as it goes
 sub create_lineitem_list_assets {
-    my($mgr, $li_ids) = @_;
+    my($mgr, $li_ids, $vandelay) = @_;
     return undef if check_import_li_marc_perms($mgr, $li_ids);
 
+    $li_ids = import_lineitems_via_vandelay($mgr, $li_ids, $vandelay);
+
     # create the bibs/volumes/copies and ingest the records
     for my $li_id (@$li_ids) {
         $mgr->editor->xact_begin;
         my $data = create_lineitem_assets($mgr, $li_id) or return undef;
         $mgr->editor->xact_commit;
-        # XXX ingest is in-db now
-        #$mgr->push_ingest_queue($data->{li}->eg_bib_id) if $data->{new_bib};
         $mgr->respond;
     }
     $mgr->process_ingest_records;
     return 1;
 }
 
+
+sub import_lineitems_via_vandelay {
+    my ($mgr, $li_ids, $vandelay) = @_;
+}
+
 # returns event on error, undef on success
 sub check_import_li_marc_perms {
     my($mgr, $li_ids) = @_;
@@ -1204,7 +1209,7 @@ sub upload_records {
     my $create_po       = $args->{create_po};
     my $activate_po     = $args->{activate_po};
     my $ordering_agency = $args->{ordering_agency};
-    my $create_assets   = $args->{create_assets};
+    my $vandelay        = $args->{vandelay};
     my $po;
     my $evt;
 
@@ -1302,8 +1307,8 @@ sub upload_records {
     unlink($filename);
     $cache->delete_cache('vandelay_import_spool_' . $key);
 
-    if ($create_assets) {
-        create_lineitem_list_assets($mgr, \@li_list) or return $e->die_event;
+    if ($vandelay) {
+        create_lineitem_list_assets($mgr, \@li_list, $vandelay) or return $e->die_event;
     }
 
     return $mgr->respond_complete;
diff --git a/Open-ILS/src/templates/acq/common/vlagent.tt2 b/Open-ILS/src/templates/acq/common/vlagent.tt2
new file mode 100644 (file)
index 0000000..ce14f80
--- /dev/null
@@ -0,0 +1,40 @@
+<tr>
+    <td>[% l('Record Match Set') %]</td>
+    <td><div id='acq_vl:match_set'></div></td>
+</tr>
+<tr>
+    <td>[% l('Merge Profile') %]</td>
+    <td><div id='acq_vl:merge_profile'></div></td>
+</tr>
+<tr>
+    <td>[% l('Import Non-Matching Records') %]</td>
+    <td><input dojoType='dijit.form.CheckBox' id='acq_vl:import_no_match'></input></td>
+</tr>
+<tr>
+    <td>[% l('Select a Record Source') %]</td>
+    <td><div id='acq_vl:bib_source'></div></td>
+</tr>
+<tr>
+    <td>[% l('Merge On Exact Match (901c)') %]</td>
+    <td><input dojoType='dijit.form.CheckBox' id='acq_vl:auto_overlay_exact'></input></td>
+</tr>
+<tr>
+    <td>[% l('Merge On Single Match') %]</td>
+    <td><input dojoType='dijit.form.CheckBox' id='acq_vl:auto_overlay_1match'></input></td>
+</tr>
+<tr>
+    <td>[% l('Merge On Best Match') %]</td>
+    <td><input dojoType='dijit.form.CheckBox' id='acq_vl:auto_overlay_best_match'></input></td>
+</tr>
+<tr>
+    <td>[% l('Best/Single Match Minimum Quality Ratio') %]</td>
+    <td colspan='4'>
+        <input style='width:3em' value='0.0' id='acq_vl:match_quality_ratio' dojoType='dijit.form.TextBox'/>
+        <span style='padding-left: 10px; font-size:90%'>[% l('New Record Quality / Quality of Best Match') %]</span>
+    </td>
+</tr>
+<tr>
+    <td>[% l('Insufficient Quality Fall-Through Profile') %]</td>
+    <td><div id='acq_vl:fall_through_merge_profile'></div></td>
+</tr>
+
diff --git a/Open-ILS/web/js/ui/default/acq/common/vlagent.js b/Open-ILS/web/js/ui/default/acq/common/vlagent.js
new file mode 100644 (file)
index 0000000..bd305af
--- /dev/null
@@ -0,0 +1,51 @@
+dojo.require('openils.widget.AutoFieldWidget');
+
+function VLAgent(args) {
+    args = args || {};
+    for (var key in args) { 
+        this[key] = args[key]; 
+    }
+
+    this.widgets = [  
+        {key : 'import_no_match'},
+        {key : 'auto_overlay_exact'},
+        {key : 'auto_overlay_1match'},
+        {key : 'auto_overlay_best_match'},
+        {key : 'match_quality_ratio'},
+        {key : 'match_set', cls : 'vms'},
+        {key : 'bib_source', cls : 'cbs'},
+        {key : 'merge_profile', cls : 'vmp'},
+        {key : 'fall_through_merge_profile', cls : 'vmp'}
+    ];
+
+    this.init = function() {
+        var self = this;
+
+        dojo.forEach(this.widgets,
+            function(widg) {
+
+                if (widg.cls) { // selectors
+                    new openils.widget.AutoFieldWidget({
+                        fmClass : widg.cls,
+                        selfReference : true,
+                        orgLimitPerms : [self.limitPerm || 'CREATE_PURCHASE_ORDER'],
+                        parentNode : dojo.byId('acq_vl:' + widg.key)
+                    }).build(function(w) { widg.dijit = w }); 
+
+                } else { // bools
+                    widg.dijit = dijit.byId('acq_vl:' + widg.key);
+                }
+            }
+        );
+    }
+
+    this.values = function() {
+        var values = {};
+        dojo.forEach(this.widgets,
+            function(widg) {
+                values[widg.key] = widg.dijit.attr('value');
+            }
+        );
+        return values;
+    }
+}