Changeset 5994 for cows_wps


Ignore:
Timestamp:
11/11/09 12:39:07 (10 years ago)
Author:
astephen
Message:

added type ahead and filepath into UI options.

Location:
cows_wps/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • cows_wps/trunk/cows_wps/lib/ui/proc_config.py

    r5963 r5994  
    145145         
    146146        for (name, input) in inputs: 
    147             resp += """<tr><td width="25%%"><b>%s</b></td><td width="40%%">\n""" % name 
     147            resp += """<tr><td width="25%%"><b>%s</b></td><td width="60%%">\n""" % name 
    148148            al = input["allowed_length"] 
    149149            pv = input["possible_values"] 
     
    159159            elif tp in ("float", "int", "string"): 
    160160                resp += fm.renderTextInput(name, dtype=tp)  
     161            
     162            elif tp == "filepath": 
     163                base_dir = input["basedir"]  
     164                resp += fm.renderTypeAheadDirList(name, base_dir) 
    161165 
    162166            resp += "</td><td>%s</td></tr>\n" % "Eventually we'll put some useful advice here." 
  • cows_wps/trunk/cows_wps/process_handler/validate_arguments.py

    r5615 r5994  
    3939            return item 
    4040 
    41     if dtype == "xml":  
     41    if dtype in ("xml", "filepath"):  
    4242        dtype = "string" 
    4343 
  • cows_wps/trunk/cows_wps/public/js/ui/type_ahead_dirs.js

    r5985 r5994  
    1 /* match.js */ 
     1/* type_ahead_dirs */ 
    22 
    33var current_list = false; 
    44var dir_list_app_url = "/dirlist"; 
     5var icount = 0; 
     6var type_ahead_div = null; 
     7var resp_div = null; 
     8 
     9/* Absolute positions type ahead div */ 
     10function positionRespDiv(pos_obj) { 
     11        $(resp_div).css("top", pos_obj.top - 20); 
     12        $(resp_div).css("left", pos_obj.left); 
     13} 
     14 
     15/* Gets called on page load to tell type ahead which element to use */ 
     16function initTypeAhead(type_ahead_div_id, resp_div_id, base_dir) { 
     17        type_ahead_div = $("#" + type_ahead_div_id); 
     18        resp_div = $("#" + resp_div_id); 
     19        type_ahead_div.val(base_dir); 
     20 
     21        type_ahead_div.keyup(function (e) { 
     22                var item = current_list[icount]; 
     23                if (e.which == 40) { 
     24                        $(type_ahead_div).val(item); 
     25                        icount += 1; 
     26                        if (icount == current_list.length) { 
     27                                icount = 0; 
     28                        } 
     29                        renderSuggestions(icount - 1) 
     30                } else if (e.which == 38) { 
     31                        $(type_ahead_div).val(item); 
     32                        icount -= 1; 
     33                        if (icount == -1) { 
     34                                icount = (current_list.length - 1); 
     35                        } 
     36                        renderSuggestions(icount + 1) 
     37                } else if (e.which == 13) { 
     38                        hideSuggestions(); 
     39                } else { 
     40                        icount = 0; 
     41                        getDirMatches(type_ahead_div.val()); 
     42                } 
     43        }); 
     44 
     45        getDirMatches(type_ahead_div.val()); 
     46        type_ahead_div.focus(); 
     47} 
    548 
    649function hideSuggestions() { 
    7         $("#resp").css("visibility", "hidden"); 
    8         $("#resp").css("z-index", -1); 
     50        resp_div.css("visibility", "hidden"); 
     51        resp_div.css("z-index", -1); 
    952} 
    1053 
    1154function showSuggestions() { 
    12         $("#resp").css("visibility", "visible"); 
    13         $("#resp").css("z-index", 0); 
     55        resp_div.css("visibility", "visible"); 
     56        resp_div.css("z-index", 0); 
    1457} 
    1558 
     
    3073        var html_list = list.join("<br />"); 
    3174 
    32         $("#resp").html(html_list); 
     75        resp_div.html(html_list); 
    3376        showSuggestions(); 
    3477} 
  • cows_wps/trunk/cows_wps/public/typeahead.html

    r5985 r5994  
    66    <script type="text/javascript"> 
    77        var bd = "/disks/droplet1"; 
    8         var icount = 0; 
    98        var current_list = false; 
    109 
    1110        $(document).ready(function(){ 
    12                 $("#itext").val(bd); 
    13                 $("#itext").keyup(function (e) { 
    14                         var item = current_list[icount]; 
    15                         if (e.which == 40) { 
    16                                 $("#itext").val(item); 
    17                                 icount += 1; 
    18                                 if (icount == current_list.length) { 
    19                                         icount = 0; 
    20                                 } 
    21                                 renderSuggestions(icount - 1) 
    22                         } else if (e.which == 38) { 
    23                                 $("#itext").val(item); 
    24                                 icount -= 1; 
    25                                 if (icount == -1) { 
    26                                         icount = (current_list.length - 1); 
    27                                 } 
    28                                 renderSuggestions(icount + 1) 
    29                         } else if (e.which == 13) { 
    30                                 hideSuggestions(); 
    31                         } else { 
    32                                 icount = 0; 
    33                                 getDirMatches($('#itext').val()); 
    34                         } 
    35                 }); 
    36  
    37                 getDirMatches($('#itext').val()); 
    38                 $('#itext').focus(); 
     11                initTypeAhead("itext", "resp", bd); 
    3912        }); 
    40  
    4113    </script> 
    4214 
  • cows_wps/trunk/cows_wps/renderer/form_renderer.py

    r5960 r5994  
    6161 
    6262        return html 
     63 
     64    def renderTypeAheadDirList(self, name, base_dir): 
     65        """ 
     66        Renders type-ahead widget for directory listing. 
     67        """ 
     68        html = """      <script type="text/javascript" src="/js/ext/jquery-1.3.2/jquery-1.3.2.js"></script> 
     69        <script type="text/javascript" src="/js/ui/type_ahead_dirs.js"></script> 
     70        <script type="text/javascript"> 
     71                var current_list = false; 
     72                var abs_pos_%s = null; 
     73 
     74                $(document).ready(function(){ 
     75                        initTypeAhead("%s", "type_ahead_for_%s", "%s"); 
     76                        abs_pos_%s = type_ahead_div.offset();    
     77                        positionRespDiv(abs_pos_%s); 
     78                }); 
     79        </script> 
     80 
     81        <p>Press down button to fill with text...</p> 
     82        <div style="z-index: 1;"> 
     83                <input type="text" id="%s" name="%s" value="" style="width: 505px; height: 25px;" onBlur="hideSuggestions();" onFocus="showSuggestions();" /> 
     84        </div> 
     85        <!--<span id="resp_container"> 
     86<div id="type_ahead_for_%s" style="width: 500px; background-color: yellow; border-style: solid; border-width: 1px; position: relative;"></div> 
     87        </span>--> 
     88        <div id="type_ahead_for_%s" style="width: 500px; background-color: yellow; border-style: solid; border-width: 1px; position: statis;"></div> 
     89""" % (name, name, name, base_dir, name, name, name, name, name, name) 
     90        return html   
  • cows_wps/trunk/cows_wps/utils/parse_capabilities_config.py

    r5615 r5994  
    1616Keywords        "default:<default_value>" AND/OR "optional"     None, one or both, comma-separated. For neither just use "-" 
    1717Enumerated Values       <s1>,<s2>,<s3>  Comma-separated list of values that all entries must be one of. Use "-" for none. 
    18  
     18Base directory applies to filepath type which is a string that should be a filepath 
    1919""" 
    2020 
     
    6565def parseDataOutputInputs(outputInputDict): 
    6666    outin_dict = {} 
     67 
     68    allowed_types = ("xml", 'complex','xml_complex_value',"string", "float", "int", "bool", "filepath") 
     69 
    6770    for item in outputInputDict: 
    6871        item_with_params= item.split(".") 
    6972        param = item_with_params[0] 
     73 
    7074        if not outin_dict.has_key(param): 
    7175            item_dict = {} 
    7276            item_type = outputInputDict[param].strip().split(".") 
    73             if item_type[0] not in ("xml", 'complex','xml_complex_value',"string", "float", "int", "bool"): 
    74                 raise Exception("Type must be 'xml', 'string', 'float', 'int','bool','complex' or 'xml_complex_value', cannot recognise: " + item_type[0]) 
     77 
     78            if item_type[0] not in allowed_types: 
     79                raise Exception("Type must be %s, cannot recognise: %s" % (allowed_types, item_type[0])) 
    7580            else: 
    7681                item_dict["type"] = item_type[0] 
     82 
    7783                if item_type[0] == "xml_complex_value": 
    7884                    try: 
     
    8389                if len(item_type) > 1: 
    8490                    if item_type[1] == "list": 
    85                         item_dict["item_type"]=item_type[1] 
     91                        item_dict["item_type"] = item_type[1] 
    8692                    else: 
    8793                        raise Exception("Type must be 'list', cannot recognise: " + item_type[1]) 
    8894                else: 
    89                     item_dict["item_type"]="item" 
     95                    item_dict["item_type"] = "item" 
    9096 
    9197                if outputInputDict.has_key(param+".possible_values"): 
     
    9399                else: 
    94100                    item_dict["possible_values"]=None 
     101 
    95102                if outputInputDict.has_key(param+".default"): 
    96103                    item_dict["default"] = fixTrueFalse(outputInputDict[param+".default"].strip()) 
     104 
    97105                if outputInputDict.has_key(param+".optional"): 
    98106                    item_dict["optional"] = fixTrueFalse(outputInputDict[param+".optional"].strip()) 
     107 
    99108                if outputInputDict.has_key(param+".length"): 
    100109                    if isValidLengthDescription(outputInputDict[param+".length"].strip()): 
     
    104113                else: 
    105114                    item_dict["allowed_length"] = None 
     115 
    106116                if outputInputDict.has_key(param+".schema"): 
    107117                    item_dict["schema"] = outputInputDict[param+".schema"].strip() 
    108118                else: 
    109119                    item_dict["schema"] = None 
     120 
    110121                if outputInputDict.has_key(param+".encoding"): 
    111122                    item_dict["encoding"] = outputInputDict[param+".encoding"].strip() 
     123 
    112124                if outputInputDict.has_key(param+".mime_type"): 
    113125                    item_dict["mime_type"] = outputInputDict[param+".mime_type"].strip() 
    114126                else: 
    115127                    item_dict["mime_type"] = None 
     128 
     129                if  outputInputDict.has_key(param + ".basedir"): 
     130                    item_dict["basedir"] = outputInputDict[param+ ".basedir"].strip() 
     131 
    116132                outin_dict[param.strip()] = item_dict 
    117133 
  • cows_wps/trunk/process_configs/NCDumpIt.ini

    r5985 r5994  
    2121[DataInputs] 
    2222Username = string 
    23 FilePath = string 
     23FilePath = filepath 
     24FilePath.basedir = /disks/droplet1 
    2425 
    2526[ProcessOutputs] 
Note: See TracChangeset for help on using the changeset viewer.