Changeset 7565 for cows_wps


Ignore:
Timestamp:
01/10/10 16:08:30 (9 years ago)
Author:
astephen
Message:

Working on how the multiple dependencies on dynamic args will work.
Including WCSWrapper. Cross-domain security is still an issue.

Location:
cows_wps/trunk
Files:
3 added
4 edited

Legend:

Unmodified
Added
Removed
  • cows_wps/trunk/cows_wps/controllers/test.py

    r7537 r7565  
    55from pylons import request, response, session, tmpl_context as c 
    66from pylons.controllers.util import abort, redirect_to 
     7from pylons.decorators import jsonify 
    78 
    89from beaker.middleware import SessionMiddleware 
     
    3334                 
    3435        return resp 
     36 
     37    @jsonify 
     38    def json(self): 
     39        return {"test": 1} 
     40 
     41    def qs(self): 
     42        import os 
     43        return str(request.environ.get("QUERY_STRING", "OHOHO")) 
    3544 
    3645    def show_config(self): 
  • cows_wps/trunk/cows_wps/public/js/ui/dynamic_form/dynamic_form_classes.js

    r7537 r7565  
    4848function URLResolver() { 
    4949        this.form_name = false; //form_id; 
    50 //      this.form = $("#" + form_id); 
    5150} 
    5251 
     
    6463                        var field_name = match.replace("${", "").replace("}", ""); 
    6564 
    66                         var selected_field = this.getSelectedFormField(field_name); 
     65                        var selected_field = getSelectedFormField(field_name); 
    6766                         
    6867                        if (selected_field == false) { 
     
    7372                } 
    7473                return url; 
    75         }, 
    76  
    77         getSelectedFormField: function(field_name) { 
     74        } 
     75} 
     76 
     77/*      getSelectedFormField: function(field_name) { 
    7878                // Need to handle different input types here 
    7979                var field = $("#" + field_name); 
    8080                var ftype = field.attr("type"); 
    8181 
    82                 if (ftype == "select") { 
     82                if (ftype.indexOf("select") == 0) { 
    8383                        var indx = $("#" + field_name + " option").index($("#" + field_name + " option:selected")); 
    8484                        var value = $("#" + field_name + " option").eq(indx).val(); 
    8585 
    86                         if (value == "-- Please select --") { 
     86                        if ((value == "-- Please select --") || (value == "-- Dynamic field (see instructions) --")) { 
    8787                                return false; 
    8888                        } 
     
    9494        } 
    9595} 
     96*/ 
    9697 
    9798 
    9899// updateFormOnAsyncResponse 
    99100/*  - is called as response function after async requests */ 
    100 function updateFormOnAsyncResponseCallback(xml, status, XMLHttpRequestObject) { 
     101function updateFormOnAsyncResponseCallback(json) {  
    101102        // Callback function that picks up and handles the XML response from async calls 
    102103        // Just refers to dynamic_form_manager 
    103         return dynamic_form_manager.updateFormOnAsyncResponse(xml, status, XMLHttpRequestObject); 
     104        return dynamic_form_manager.updateFormOnAsyncResponse(json); 
    104105} 
    105106 
     
    149150                        // If cannot resolve URL tell user to make sure they have selected all available options then return 
    150151                        if (url == false) { 
    151                                 alert("Please select some form elements before clicking 'Update form'."); 
     152                                alert("Please select more of the form fields (or allow existing onees to update) before clicking 'Update form'."); 
    152153                                return false; 
    153154                        } 
    154155 
    155                         if (this.response_cache.isCached(url)) { 
    156                                 var xml = this.response.getCachedResponse(url); 
    157                                 this.updateFormElement(field_name, url, xml); 
     156/*                      if (this.response_cache.isCached(url)) { 
     157                                var xml = this.response_cache.getCachedResponse(url); 
     158//                              this.updateFormElement(field_name, url, xml); 
     159 
    158160                        } else { 
     161*/ 
    159162                                this.sendAsyncRequestForFormFieldValues(field_name, url); 
    160                         } 
     163//                      } 
    161164                } 
    162165        }, 
     
    180183                                } 
    181184                        } 
    182                         this.pending_calss = pending_calls; 
     185                        this.pending_calls = pending_calls; 
    183186                } 
    184187        }, 
     
    202205 
    203206                // Don't call again if this URL has already been called 
    204                 if (this.isPending(url)) { 
     207                if (this.isPending(url) == true) { 
    205208                        return; 
    206209                } 
     
    211214                        type: "GET", 
    212215                        url: url, 
    213                         dataType: "xml", 
     216                        dataType: "json", 
    214217                        success: updateFormOnAsyncResponseCallback, 
    215218                }); 
    216219        }, 
    217220 
    218         updateFormOnAsyncResponse: function(xml, status, XMLHttpRequestObject) { 
     221        updateFormOnAsyncResponse: function(json) {{ 
    219222                // Callback method that picks up and handles the XML response from async calls 
    220                 var url = xml.baseURI; 
     223                var url = json.requested_url;  
     224                var extracted_list = json.response; 
    221225 
    222226                hideLoadingDiv(); 
    223227 
    224                 this.response_cache.addToCache(url, xml); 
     228                this.response_cache.addToCache(url, json); 
    225229                var field_names_to_update = this.url_to_field_name_mapper[url]; 
    226230 
    227231                for (var i = 0; i < field_names_to_update.length; i++) { 
    228232                        var field_name = field_names_to_update[i]; 
    229                         this.updateFormElement(field_name, url, xml); 
     233                        this.updateFormElement(field_name, url, extracted_list); 
    230234                } 
    231235 
     
    234238        }, 
    235239 
    236         updateFormElement: function(field_name, url, xml) { 
     240        updateFormElement: function(field_name, url, response) { 
    237241                // Parses XML to extract required array and updates form element with these values 
    238242                var xml_path = this.form_fields[field_name][1]; 
    239                 var select_options_text = extractFromXML(xml, xml_path); 
    240                 var select_options = select_options_text.split(/\s/); 
     243                var select_options = response;  
    241244 
    242245                // Add invalid selection at top of list so no defaults selected 
    243246 
    244 //              var select_options = new Array(this.invalid_selection).concat(select_options); 
    245 //      var dct = response_dict; 
    246 //      hideLoadingDiv(); 
    247  
    248 //              $("#" + field_name).empty(); 
    249 //              var elem = document.getElementById(field_name); 
    250247                var elem = $("#" + field_name); 
     248                var initial_value = getSelectedFormField(field_name); 
    251249                elem.empty(); 
    252250 
     
    254252 
    255253                for (var i = 0; i < select_options.length; i++) { 
    256 //                      var opt = document.createElement("option"); 
    257254                        var value = select_options[i]; 
    258                         elem.append("<option value='" + value + "'>" + value + "</option>"); 
    259 //                      opt.setAttribute("value", value); 
    260 //                      opt.appendChild(document.createTextNode(value)); 
    261 //                      elem.html(appendChild(opt); 
    262                 } 
    263         } 
    264 } 
     255                        var selected_string = ""; 
     256 
     257                        if (value == initial_value) { 
     258                                selected_string = " selected=\"selected\""; 
     259                        } 
     260 
     261                        elem.append("<option value='" + value + "'" + selected_string + ">" + value + "</option>"); 
     262                } 
     263        } 
     264} 
  • cows_wps/trunk/cows_wps/public/js/ui/submit_utils.js

    r7537 r7565  
    6262} 
    6363 
    64  
     64/* 
    6565function callWPSToUpdateForm() { 
    6666        var resp = new WPSResponse(); 
     
    6868        resp.callWPS("http://ceda-wps1.badc.rl.ac.uk/wps?Request=Execute&Format=text/xml&Identifier=ListPPFileHeader&Store=false&Status=false&DataInputs=FilePath,/disks/kona1/cwps-test-data/africa-lam/prods_op_afr_20100813_18.006pp"); 
    6969} 
     70*/ 
    7071 
    7172/*  
     
    7374   * updates the form by making an AJAX request to WPS or other service and parsing XML 
    7475*/  
     76/* 
    7577function updateForm(response_dict) { 
    7678        var dct = response_dict; 
     
    9294        } 
    9395}        
     96*/ 
    9497 
    9598function convertToMB(bytes) { 
  • cows_wps/trunk/cows_wps/public/js/ui/utils.js

    r7559 r7565  
    126126} 
    127127 
    128 /* 
    129 THIS WORKS: 
    130 $(global_xml).find("ExecuteResponse").each(function() { 
    131 a = $(this); 
    132 }); 
    133 $(a).find("Status").each(function() { 
    134 b = $(this); 
    135 }); 
    136 $(b).find("ProcessSucceeded").each(function() { 
    137 c = $(this).text(); 
    138 }); 
    139 alert(c); 
    140 */ 
     128function getSelectedFormField(field_name) { 
     129        // Returns value for form field 
     130        // Supports both text and select inputs so far 
     131        // Returns false if value is "-- Please select --" or "-- Dynamic field (see instructions) --" 
     132        var field = $("#" + field_name); 
     133        var ftype = field.attr("type"); 
    141134 
    142 var global_xml = null; 
     135        if (ftype.indexOf("select") == 0) { 
     136                // Select element 
     137                var indx = $("#" + field_name + " option").index($("#" + field_name + " option:selected")); 
     138                var value = $("#" + field_name + " option").eq(indx).val(); 
     139 
     140                if ((value == "-- Please select --") || (value == "-- Dynamic field (see instructions) --")) { 
     141                        return false; 
     142                } 
     143        } else { 
     144                // Assume text entry 
     145                var value = $("#" + field_name).val(); 
     146        } 
     147         
     148        return value; 
     149} 
     150 
     151 
    143152function extractFromXML(xml, xml_path) { 
    144153        // Extracts values at xml_path location within XML response 
    145154        // E.g. <person><job>nurse mother</job></person> and "person/job" will resturn ["nurse", "mother"] 
    146 global_xml = xml; 
    147155        var parts = xml_path.split("\/"); 
    148156        var item = parts.shift(); 
Note: See TracChangeset for help on using the changeset viewer.