ACQ Vandelay : PoC UI bits and pieces; next steps -> ui refactoring
authorBill Erickson <berick@esilibrary.com>
Wed, 30 Nov 2011 22:12:16 +0000 (17:12 -0500)
committerBill Erickson <berick@esilibrary.com>
Wed, 30 Nov 2011 22:12:16 +0000 (17:12 -0500)
Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/examples/fm_IDL.xml
Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/Vandelay.pm
Open-ILS/src/templates/acq/picklist/upload.tt2
Open-ILS/web/js/ui/default/acq/picklist/upload.js

index d605f1d..d36b378 100644 (file)
@@ -533,7 +533,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
 
        <class id="vms" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="vandelay::match_set" oils_persist:tablename="vandelay.match_set" reporter:label="Record Matching Definition Set">
                <fields oils_persist:primary="id" oils_persist:sequence="vandelay.match_set_id_seq">
-                       <field reporter:label="Match Set ID" name="id" reporter:datatype="id"/>
+                       <field reporter:label="Match Set ID" name="id" reporter:datatype="id" reporter:selector="name"/>
                        <field reporter:label="Name" name="name" reporter:datatype="text"/>
                        <field reporter:label="Owning Library" name="owner" reporter:datatype="link"/>
                        <field reporter:label="Match Set Type" name="mtype" reporter:datatype="text"/>
index 1b1aff3..61eb569 100644 (file)
@@ -1188,7 +1188,8 @@ __PACKAGE__->register_method(
 );
 
 sub upload_records {
-    my($self, $conn, $auth, $key) = @_;
+    my($self, $conn, $auth, $key, $args) = @_;
+    $args ||= {};
 
        my $e = new_editor(authtoken => $auth, xact => 1);
     return $e->die_event unless $e->checkauth;
@@ -1197,14 +1198,13 @@ sub upload_records {
     my $cache = OpenSRF::Utils::Cache->new;
 
     my $data = $cache->get_cache("vandelay_import_spool_$key");
-    my $purpose         = $data->{purpose};
     my $filename        = $data->{path};
-    my $provider        = $data->{provider};
-    my $picklist        = $data->{picklist};
-    my $create_po       = $data->{create_po};
-    my $activate_po     = $data->{activate_po};
-    my $ordering_agency = $data->{ordering_agency};
-    my $create_assets   = $data->{create_assets};
+    my $provider        = $args->{provider};
+    my $picklist        = $args->{picklist};
+    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 $po;
     my $evt;
 
index f5cb956..af2ade1 100644 (file)
@@ -113,11 +113,6 @@ sub spool_marc {
                    {   purpose => $purpose, 
                 path => $outfile,
                 bib_source => $bib_source,
-                provider => $provider,
-                picklist => $picklist,
-                create_po => $create_po,
-                create_assets => $create_assets,
-                ordering_agency => $ordering_agency
             }
            );
     }
index 31b7620..ac7308b 100644 (file)
@@ -8,20 +8,13 @@
             <tr>
                 <td>Create Purchase Order</td>
                 <td>
-                    <input dojoType='dijit.form.CheckBox' name='create_po'></input>
+                    <input dojoType='dijit.form.CheckBox' jsId='acqPlUploadCreatePo'></input>
                 </td>
             </tr>
             <tr>
                 <td>Activate Purchase Order</td>
                 <td>
-                    <input dojoType='dijit.form.CheckBox' name='activate_po'></input>
-                </td>
-            </tr>
-            <tr>
-                <!-- XXX CHECK IMPORT PERMS TO ENABLE -->
-                <td>Load Bibs and Items into the ILS</td>
-                <td>
-                    <input dojoType='dijit.form.CheckBox' name='create_assets'></input>
+                    <input dojoType='dijit.form.CheckBox' jsId='acqPlUploadActivatePo'></input>
                 </td>
             </tr>
             <tr>
                     <select jsId='acqPlUploadPlSelector' dojoType='dijit.form.ComboBox'></select>
                 </td>
             </tr>
+
+            <tr><td colspan='2'><hr/></td></tr>
+
+            <tr>
+                <td>[% l('Record Match Set') %]</td>
+                <td><div id='acq-upload-vl-match-set'></div></td>
+            </tr>
+            <tr>
+                <td>[% l('Merge Profile') %]</td>
+                <td><div id='acq-upload-vl-merge-profile'></div></td>
+            </tr>
+            <tr>
+                <td>[% l('Import Non-Matching Records') %]</td>
+                <td><input dojoType='dijit.form.CheckBox' jsId='acqPlUploadImportNomatch'></input></td>
+            </tr>
+            <tr>
+                <td>[% l('Select a Record Source') %]</td>
+                <td><div id='acq-upload-vl-bib-source'></div></td>
+            </tr>
+            <tr>
+                <td>[% l('Merge On Exact Match (901c)') %]</td>
+                <td><input dojoType='dijit.form.CheckBox' jsId='acqPlUploadAutoOverlayExact'></input></td>
+            </tr>
+            <tr>
+                <td>[% l('Merge On Single Match') %]</td>
+                <td><input dojoType='dijit.form.CheckBox' jsId='acqPlUploadAutoOverlay1Match'></input></td>
+            </tr>
+            <tr>
+                <td>[% l('Merge On Best Match') %]</td>
+                <td><input dojoType='dijit.form.CheckBox' jsId='acqPlUploadAutoOverlayBestMatch'></input></td>
+            </tr>
+            <tr>
+                <td>[% l('Best/Single Match Minimum Quality Ratio') %]</td>
+                <td colspan='4'>
+                    <input style='width:3em' value='0.0' jsId='vlUploadQueueAutoOverlayBestMatchRatio' 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>Records File</td>
-                <td><input size='36' type="file" name="marc_upload"></input></td>
+                <td>[% l('Insufficient Quality Fall-Through Profile') %]</td>
+                <td><div id='acq-upload-vl-fallthru-merge-profile'></div></td>
             </tr>
+
+            <tr><td colspan='2'><hr/></td></tr>
+
             <tr>
-                <td align='center' colspan='2'>
-                    <button dojoType="dijit.form.Button" onClick="acqUploadRecords()">Upload</button>
+                <td colspan='5'>
+                    <span id="vl-file-label">[% l('File to Upload:') %]</span>
+                    <input size='48' style='border:1px solid #888;' type="file" name="marc_upload"/>
+                    <span style='margin-left:10px;'><button dojoType="dijit.form.Button" onclick="acqUploadRecords()">[% l('Upload') %]</button></span>
                 </td>
             </tr>
+
         </tbody>
     </table>
 
index 62a7145..f64544f 100644 (file)
@@ -14,6 +14,12 @@ var VANDELAY_URL = '/vandelay-upload';
 var providerWidget;
 var orderAgencyWidget;
 
+var matchSet;
+var mergeProfile;
+var importNomatch;
+var importBibSource;
+var autoOveralayExact;
+
 function init() {
     dojo.byId('acq-pl-upload-ses').value = openils.User.authtoken;
 
@@ -35,6 +41,34 @@ function init() {
         function(w) { orderAgencyWidget = w }
     );
 
+    new openils.widget.AutoFieldWidget({
+        fmClass : 'vms', 
+        selfReference : true,
+        orgLimitPerms : ['CREATE_PURCHASE_ORDER'],
+        parentNode : dojo.byId('acq-upload-vl-match-set')
+    }).build(function(w) {  }); 
+
+    new openils.widget.AutoFieldWidget({
+        fmClass : 'vmp', 
+        selfReference : true,
+        orgLimitPerms : ['CREATE_PURCHASE_ORDER'],
+        parentNode : dojo.byId('acq-upload-vl-merge-profile')
+    }).build(function(w) {  }); 
+
+    new openils.widget.AutoFieldWidget({
+        fmClass : 'vmp', 
+        selfReference : true,
+        orgLimitPerms : ['CREATE_PURCHASE_ORDER'],
+        parentNode : dojo.byId('acq-upload-vl-fallthru-merge-profile')
+    }).build(function(w) {  }); 
+
+    new openils.widget.AutoFieldWidget({
+        fmClass : 'cbs', 
+        selfReference : true,
+        orgLimitPerms : ['CREATE_PURCHASE_ORDER'],
+        parentNode : dojo.byId('acq-upload-vl-bib-source')
+    }).build(function(w) {  }); 
+
     fieldmapper.standardRequest(
         ['open-ils.acq', 'open-ils.acq.picklist.user.retrieve.atomic'],
         {   async: true,
@@ -79,11 +113,6 @@ function acqSendUploadForm(args) {
         method: "post",
         handleAs: "html",
         form: dojo.byId('acq-pl-upload-form'),
-        content : {
-            picklist : args.picklist,
-            provider : providerWidget.attr('value'),
-            ordering_agency : orderAgencyWidget.attr('value')
-        },
         handle: function(data, ioArgs){
             acqHandlePostUpload(data.documentElement.textContent);
         }
@@ -92,6 +121,21 @@ function acqSendUploadForm(args) {
 
 
 function acqHandlePostUpload(key) {
+
+    var args = {
+        picklist : args.picklist,
+        provider : providerWidget.attr('value'),
+        ordering_agency : orderAgencyWidget.attr('value'),
+        create_po : acqPlUploadCreatePo.attr('value'),
+        activate_po : acqPlUploadActivatePo.attr('value'),
+        vandelay : {
+            import_no_match : acqPlUploadImportNomatch.attr('value'),
+            auto_overlay_exact : acqPlUploadAutoOverlayExact.attr('value'),
+            auto_overlay_1match : acqPlUploadAutoOverlay1Match.attr('value'),
+            auto_overlay_best_match : acqPlUploadAutoOverlayBestMatch.attr('value')
+        }
+    };
+
     fieldmapper.standardRequest(
         ['open-ils.acq', 'open-ils.acq.process_upload_records'],
         {   async: true,