Changeset 18530

Show
Ignore:
Timestamp:
08/31/08 05:46:31 (4 months ago)
Author:
stomita
Message:

lang/javascript/jsonptester : added combobox options

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/jsonptester/trunk/js/jsonptester.js

    r18488 r18530  
    8989        }), 
    9090        columns : [ 
    91           { header : 'Name', dataIndex : 'name' }, 
     91          { header : 'Name', dataIndex : 'name' } 
    9292        ], 
    9393        viewConfig : { forceFit : true }, 
     
    9999        }), 
    100100        listeners : { 
    101           render : function(grid) { grid.getStore().load(); grid.doLayout() }, 
     101          render : function(grid) { grid.getStore().load(); grid.doLayout() } 
    102102        } 
    103103      } 
    104104    }, { 
    105       id : 'directoryFormWrapper', 
     105      id : 'directoryFormWrapper' 
    106106    }] 
    107107  }; 
     
    133133      collapsible : true, 
    134134      split : true, 
    135       html : '<textarea id="dumparea" style="width:100%;height:100%;"></textarea>' 
     135      layout : 'anchor', 
     136      items : { 
     137        xtype : 'textarea', 
     138        id : 'dumparea', 
     139        anchor : '100% 100%' 
     140      } 
    136141    }] 
    137142  }; 
     
    253258      Array.prototype.push.apply(params, queryParams); 
    254259      return $.map(params, function(paramName) { 
     260        var options = data[paramName+':options']; 
     261        if (options) return createCombobox(options, paramName); 
    255262        var type = data[paramName+':datatype'] || 'string'; 
    256263        return { 
     
    263270    } 
    264271 
     272    function createCombobox(options, paramName) { 
     273      var options = $.map(options.split(/\s*,\s*/), function(option) { 
     274        var pair = option.split(':'); 
     275        return [[ pair[0], pair[pair.length-1] ]]; 
     276      }); 
     277      return { 
     278        xtype : 'combo', 
     279        fieldLabel : data[paramName+':label'] || paramName, 
     280        name : paramName, 
     281        value : data[paramName+':default'] || '', 
     282        mode : 'local', 
     283        triggerAction : 'all', 
     284        valueField : 'value', 
     285        displayField : 'text', 
     286        store : new Ext.data.SimpleStore({ 
     287          data : options, 
     288          fields : ['text','value'] 
     289        }) 
     290      } 
     291    } 
     292 
    265293    function getJSONPValues() { 
    266       var values = Ext.getCmp('directoryForm').getForm().getValues(); 
     294      var values = {}; 
     295      Ext.getCmp('directoryForm').items.each(function(field) { 
     296        values[field.name] = field.getValue(); 
     297      }); 
    267298      var params = []  
    268299      var jsonpUrl = url.replace(/\{([^\}]+)\}/g, function($1, $2) { 
     
    375406        url : node.attributes.url, 
    376407        dataType : 'jsonp', 
     408        scriptCharset : 'utf8', 
    377409        jsonp : node.attributes.callbackParam, 
    378410        params : node.attributes.params, 
     
    405437                  value.constructor == Number || value.constructor == Date); 
    406438      return { 
    407         text : leaf ? name + ' : ' + value : name, 
     439        text : leaf ? name + ' : ' + escapeHTML(value) : name, 
    408440        value : value, 
    409441        leaf : leaf  
     
    411443    } 
    412444 
     445    function escapeHTML(str) { 
     446      return (''+str).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"); 
     447    } 
     448 
    413449  } 
    414450