Generate a new Ext.grid.ColumnModel
Examples:
var columnModel = new Ext.grid.ColumnModel({
columns: [{
header: "Name",
dataIndex: "name"
},{
header: "Category",
dataIndex: "category_name",
query: "categories.name LIKE {query}"
},{
header: "Date",
dataIndex: "date"
},{
header: "Created At",
dataIndex: "created_at"
}]});
ColumnModel.new do |columns|
columns.add :name, "Name"
columns.add :category_name, "Category", :dataIndex => "categories.name"
columns.add :date, "Date"
columns.add :created_at, "Created At"
end
Methods
Public Instance methods
Add columns to a Ext.grid.ColumnModel
# Generates: { header: "Created At", dataIndex: "accounts.datetime", sortable => true }
add "Created At", "accounts.datetime", :sortable => true
You can pass :renderer
# Generates: Ext.util.Format.dateRenderer() :render => :time_to_date # This render a datetime to a date # Generates: Ext.util.Format.dateRenderer() :renderer => :date # Generates: Ext.util.Format.dateTimeRenderer() :renderer => :datetime # Generates: Ext.util.Format.percentage :renderer => :percentage # Generates: Ext.util.Format.eurMoney :renderer => :eur_money # Generates: Ext.util.Format.usMoney :renderer => :us_money # Generates: Ext.util.Format.boolRenderer :renderer => :boolean ... :render => :capitalize :render => :file_size :render => :downcase :render => :trim :render => :undef :render => :upcase
For more see extjs.com/deploy/dev/docs/?class=Ext.util.Format
You can pass :editor
# Generates: { checkbox: true }
:editor => { :xtype => :checkbox, :someConfig => true }
# Generates: new Ext.form.ComboBox({ someConfig => true });
:editor => { :xtype => :combo, :someConfig => true }
# Generates: new Ext.form.DateField({ someConfig => true });
:editor => { :xtype => :datefield, :someConfig => true }
# Generates: new Ext.form.NumberField({ someConfig => true });
:editor => { :xtype => :numberfield, :someConfig => true }
# Generates: new Ext.form.Radio({ someConfig => true });
:editor => { :xtype => :radio, :someConfig => true }
# Generates: new Ext.form.TextArea({ someConfig => true });
:editor => { :xtype => :textarea, :someConfig => true }
# Generates: new Ext.form.TextField({ someConfig => true });
:editor => { :xtype => :textfield, :someConfig => true }
# Generates: new Ext.form.TimeField({ someConfig => true });
:editor => { :xtype => :timefield, :someConfig => true }
Form components so are:
---------------------------------------
:checkbox => Ext.form.Checkbox
:combo => Ext.form.ComboBox
:datefield => Ext.form.DateField
:numberfield => Ext.form.NumberField
:radio => Ext.form.Radio
:textarea => Ext.form.TextArea
:textfield => Ext.form.TextField
:timefield => Ext.form.TimeField
[ show source ]
# File lib/view/helpers/ext/column_model.rb, line 102
102: def add_column(name=nil, data=nil, options={})
103: options[:header] = name if name
104: options[:dataIndex] = data if data
105:
106: if options[:editor]
107: xtype = options[:editor][:xtype]
108: case xtype
109: when :checkbox then options.delete(:editor); options.merge!(:checkbox => true)
110: when :combo then options.merge!(:editor => "new Ext.form.ComboBox(#{Configuration.new(options[:editor]).to_s(3)})".to_l)
111: when :datefield then options.merge!(:editor => "new Ext.form.DateField(#{Configuration.new(options[:editor]).to_s(3)})".to_l)
112: when :numberfield then options.merge!(:editor => "new Ext.form.NumberField(#{Configuration.new(options[:editor]).to_s(3)})".to_l)
113: when :radio then options.merge!(:editor => "new Ext.form.Radio(#{Configuration.new(options[:editor]).to_s(3)})".to_l)
114: when :textarea then options.merge!(:editor => "new Ext.form.TextArea(#{Configuration.new(options[:editor]).to_s(3)})".to_l)
115: when :textfield then options.merge!(:editor => "new Ext.form.TextField(#{Configuration.new(options[:editor]).to_s(3)})".to_l)
116: when :timefield then options.merge!(:editor => "new Ext.form.TimeField(#{Configuration.new(options[:editor]).to_s(3)})".to_l)
117: when :datetimefield then options.merge!(:editor => "new Ext.form.DateTimeField(#{Configuration.new(options[:editor]).to_s(3)})".to_l)
118: end
119: end
120:
121: case options[:renderer]
122: when :time_to_date then options.merge!(:renderer => "Ext.util.Format.dateRenderer()".to_l)
123: when :date then options.merge!(:renderer => "Ext.util.Format.dateRenderer()".to_l)
124: when :datetime then options.merge!(:renderer => "Ext.util.Format.dateTimeRenderer()".to_l)
125: when :percentage then options.merge!(:renderer => "Ext.util.Format.percentage".to_l)
126: when :eur_money then options.merge!(:renderer => "Ext.util.Format.eurMoney".to_l)
127: when :us_money then options.merge!(:renderer => "Ext.util.Format.usMoney".to_l)
128: when :boolean then options.merge!(:renderer => "Ext.util.Format.boolRenderer".to_l)
129: when :capitalize then options.merge!(:renderer => "Ext.util.Format.capitalize".to_l)
130: when :file_size then options.merge!(:renderer => "Ext.util.Format.fileSize".to_l)
131: when :downcase then options.merge!(:renderer => "Ext.util.Format.lowercase".to_l)
132: when :trim then options.merge!(:renderer => "Ext.util.Format.trim".to_l)
133: when :undef then options.merge!(:renderer => "Ext.util.Format.undef".to_l)
134: when :upcase then options.merge!(:renderer => "Ext.util.Format.uppercase".to_l)
135: end
136:
137: raise ComponentError, "You must provide header and dataIndex for generate a column model" if options[:header].blank? ||
138: options[:dataIndex].blank?
139:
140: config[:columns] << Configuration.new(options)
141: end
This add automatically fields from an array
[ show source ]
# File lib/view/helpers/ext/column_model.rb, line 37
37: def fields(fields)
38: fields.each { |options| add_column(nil, nil, options); }
39: end