Changeset 9531

Show
Ignore:
Timestamp:
05/08/08 11:34:53 (1 week ago)
Author:
erickson
Message:

making better use of dojo form handling. added search progress bar (needs style).

Location:
branches/acq-experiment/Open-ILS/web/oilsweb/oilsweb
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • branches/acq-experiment/Open-ILS/web/oilsweb/oilsweb/public/oils/media/css/skin/default/acq.css

    r8929 r9531  
    2424#oils-acq-search-fields-label { margin-bottom: 10px; } 
    2525#oils-acq-search-fields-submit-block { margin: 5px; text-align: center;} 
     26#oils-acq-search-progress {width: 100%, text-align: center;} 
    2627 
    2728/* list of picklists */ 
  • branches/acq-experiment/Open-ILS/web/oilsweb/oilsweb/templates/oils/default/acq/picklist/bib_search.html

    r9519 r9531  
    1111 
    1212    <script> 
    13         //dojo.require('dijit.form.MultiSelect'); 
    1413        dojo.require('dojox.form.CheckedMultiSelect'); 
    1514        dojo.require('fieldmapper.Fieldmapper'); 
    1615        dojo.require('dojo.data.ItemFileReadStore'); 
     16        dojo.require('dijit.ProgressBar'); 
    1717        dojo.require('openils.Event'); 
    1818 
     19        var searchLimit = ${c.oils.acq.limit.value} || 10; 
     20        var searchOffset = ${c.oils.acq.offset.value} || 0; 
    1921        var searchFields = []; 
    20  
     22        var resultPicklist; 
     23        var recvCount = 0; 
     24        var sourceCount = 0; // how many sources are we searching 
    2125        var user = new openils.User(); 
     26 
    2227        function drawForm() { 
    2328 
     
    4752            ); 
    4853 
     54            //alert(dojo.query('[name=label]', 'oils-acq-search-fields-template')); 
     55            var tbody = dojo.byId('oils-acq-search-fields-tbody'); 
     56            var tmpl = tbody.removeChild(dojo.byId('oils-acq-search-fields-template')); 
     57 
    4958            for(var f in searchFields) { 
    5059                var field = searchFields[f]; 
    51                 if(dijit.byId('text_input_'+field.name)) 
    52                     continue; 
     60                if(dijit.byId('text_input_'+field.name)) continue; 
     61                var row = tmpl.cloneNode(true); 
     62                tbody.appendChild(row); 
     63                var labelCell = dojo.query('[name=label]', row)[0]; 
     64                var inputCell = dojo.query('[name=input]', row)[0]; 
     65                labelCell.appendChild(document.createTextNode(field.label)); 
    5366                input = new dijit.form.TextBox({name:field.name, label:field.label, id:'text_input_'+field.name}); 
    54                 dojo.byId('oils-acq-search-fields').appendChild(document.createTextNode(field.label)); 
    55                 dojo.byId('oils-acq-search-fields').appendChild(input.domNode); 
    56                 dojo.byId('oils-acq-search-fields').appendChild(document.createElement('br')); 
    57             } 
    58         } 
    59         dojo.addOnLoad(drawForm); 
    60  
    61         function doSearch() { 
     67                inputCell.appendChild(input.domNode); 
     68            } 
     69        } 
     70 
     71        function doSearch(values) { 
     72            dojo.style('searchProgress', 'visibility', 'visible'); 
    6273 
    6374            search = { 
     
    6677                password : [], 
    6778                search : {}, 
    68                 limit : ${c.oils.acq.limit.value}, 
    69                 offset : ${c.oils.acq.offset.value} 
     79                limit : searchLimit, 
     80                offset : searchOffset 
    7081            } 
    7182 
     
    7586                search.username.push(''); 
    7687                search.password.push(''); 
    77             } 
    78  
    79             for(var f in searchFields) { 
    80                 var field = searchFields[f]; 
    81                 var input = dijit.byId('text_input_'+field.name); 
    82                 if(input.getValue()) 
    83                     search.search[field.name] = input.getValue(); 
    84             } 
    85  
    86             alert(js2JSON(search)); 
     88                sourceCount++; 
     89            } 
     90 
     91            for(var v in values) { 
     92                if(values[v]) { 
     93                    var input = dijit.byId('text_input_'+v); 
     94                    search.search[v] = values[v]; 
     95                } 
     96            } 
     97 
    8798            fieldmapper.standardRequest( 
    8899                ['open-ils.search', 'open-ils.search.z3950.search_class'], 
     
    99110        } 
    100111 
    101         var resultPicklist; 
    102112        function handleResult(r) { 
    103113            var result = r.recv().content(); 
     
    105115                createResultPicklist(); 
    106116 
     117            searchProgress.update({maximum: sourceCount*searchLimit+1, progress: ++recvCount}); 
     118 
    107119            for(var idx in result.records) { 
     120                searchProgress.update({progress: ++recvCount}); 
    108121                var rec = result.records[idx]; 
    109122                var lineitem =  new jub() 
     
    118131                    [user.authtoken, lineitem] 
    119132                ); 
    120                 alert('created id ' + id); 
    121133            } 
    122134        } 
     
    126138            resultPicklist.name(''); 
    127139            resultPicklist.owner(user.user.id()); 
    128  
    129             alert(js2JSON(resultPicklist)); 
    130140 
    131141            /* delete the old picklist with name = '' */ 
     
    150160        } 
    151161 
     162        dojo.addOnLoad(drawForm); 
     163 
    152164    </script> 
    153165 
    154166    <div id='oils-acq-search-block' class='container'> 
    155         <div id='oils-acq-search-sources-block'> 
    156             <div id='oils-acq-search-sources-label'>${_('Search Sources')}</div> 
    157             <select multiple='true' jsId="bibSourceSelect" dojoType="dojox.form.CheckedMultiSelect"> 
    158                 <option value='native-evergreen-catalog'>${_('Evergreen Catalog')}</option> 
    159             </select> 
    160         </div> 
    161         <div id='oils-acq-search-form-block'> 
    162             <div id='oils-acq-search-fields-label'>${_('Search Fields')}</div> 
    163             <div id='oils-acq-search-fields'> 
     167        <form dojoType='dijit.form.Form' action='' method=''> 
     168            <script type="dojo/method" event="onSubmit"> 
     169                doSearch(this.getValues()); 
     170                return false; /* don't redirect */ 
     171            </script> 
     172            <div id='oils-acq-search-sources-block'> 
     173                <div id='oils-acq-search-sources-label'>${_('Search Sources')}</div> 
     174                <select multiple='true' jsId="bibSourceSelect" dojoType="dojox.form.CheckedMultiSelect"> 
     175                    <option value='native-evergreen-catalog'>${_('Evergreen Catalog')}</option> 
     176                </select> 
    164177            </div> 
    165             <div id='oils-acq-search-fields-submit-block'> 
    166                 <div dojoType='dijit.form.Button' onclick='doSearch();'>${_("Submit")}</div> 
     178            <div id='oils-acq-search-form-block'> 
     179                <div id='oils-acq-search-fields-label'>${_('Search Fields')}</div> 
     180                <div id='oils-acq-search-fields'> 
     181                </div> 
     182                <table> 
     183                    <tbody id='oils-acq-search-fields-tbody'> 
     184                        <tr id='oils-acq-search-fields-template'> 
     185                            <td name='label'> </td> 
     186                            <td name='input'> </td> 
     187                        </tr> 
     188                    </tbody> 
     189                </table> 
     190                <div id='oils-acq-search-fields-submit-block'> 
     191                    <div dojoType='dijit.form.Button' type='submit'>${_("Submit")}</div> 
     192                </div> 
    167193            </div> 
    168194        </div> 
     195    </form> 
     196    <div id='oils-acq-search-progress'> 
     197        <div dojoType="dijit.ProgressBar" style="width:300px" jsId="searchProgress" id="searchProgress"></div> 
    169198    </div> 
     199    <script>dojo.style('searchProgress', 'visibility', 'hidden');</script> 
    170200</%def> 
    171201 
     202