lib/view/helpers/ext/grid.rb in lipsiadmin-5.1.6 vs lib/view/helpers/ext/grid.rb in lipsiadmin-5.1.7
- old
+ new
@@ -35,22 +35,22 @@
# grid.columns do |columns|
# columns.fields @column_store.column_fields
# end
# grid.bbar :store => grid.get_store, :pageSize => params[:limit]
# end
- #
+ #
# # Returns:
# # var grid = new Ext.grid.EditorGridPanel({
# # clicksToEdit: 1,
# # ...
#
# page.grid :editable => true do |grid|
# grid.id "grid-posts"
# ...
- #
+ #
class Grid < Component
-
+
def initialize(options={}, &block)#:nodoc:
# Call Super Class for initialize configuration
@editable = options.delete(:editable)
super("Ext.grid.#{@editable ? 'EditorGridPanel' : 'GridPanel' }", { :plugins => [] }.merge(options))
@@ -64,43 +64,43 @@
region "center"
sm :checkbox
view :default
render true
config[:plugins] << "new Ext.grid.Search()".to_l
-
+
# We need to add a setTimeout because, we destroy
# the grid before loading a new page/js.
on(:dblclick) do |p|
p.delay(0.2) { p.call :edit }
end
yield self if block_given?
end
-
+
# Define the selection model of this grid.
- # You can pass:
- #
+ # You can pass:
+ #
# * :checkbox || :default
# * :row
# * custom (eg. Component.new("some"))
- #
+ #
# It generate some like:
- #
+ #
# new Ext.grid.CheckboxSelectionModel()
- #
+ #
def sm(object)
selmodel = case object
when :default then Component.new("Ext.grid.CheckboxSelectionModel", :prefix => get_var)
when :checkbox then Component.new("Ext.grid.CheckboxSelectionModel", :prefix => get_var)
when :row then Component.new("Ext.grid.RowSelectionModel", :prefix => get_var)
else object
end
add_object(:sm, selmodel)
end
-
+
# Generate or set a new Ext.Toolbar
- # You can pass tbar :default options that will create
+ # You can pass tbar :default options that will create
# defaults buttons for add, edit and remove records, it's generate also
# the javascript for manage them.
# for use this you need to set for the grid the: +base_path+, +forgery_protection_token+,
# +authenticity_token+ and +store+.
#
@@ -124,11 +124,11 @@
# cls: "x-btn-text-icon remove",
# id: "remove"
# }]);
#
# tbar :default
- #
+ #
def tbar(object=nil, &block)
tbar = object.is_a?(ToolBar) ? object : ToolBar.new(:prefix => get_var)
if object == :default || object == :all
tbar.add_button :text => "Backend.locale.buttons.add".to_l, :id => "add", :disabled => false, :cls => "x-btn-text-icon add", :handler => "add".to_l
tbar.add_button :text => "Backend.locale.buttons.edit".to_l, :id => "edit", :disabled => true, :cls => "x-btn-text-icon edit", :handler => "edit".to_l
@@ -151,140 +151,140 @@
end
end
yield tbar if block_given?
add_object(:tbar, tbar)
end
-
+
# Generate or set a new Ext.Toolbar
- #
+ #
# Examples:
# bbar: new Ext.PagingToolbar({
# pageSize: <%= params[:limit] %>,
# store: js,
# displayInfo: true
# })
# bbar :pageSize => params[:limit], :store => store.get_var, displayInfo: true
- #
+ #
def bbar(object=nil, &block)
bbar = object.is_a?(Hash) ? Component.new("Ext.PagingToolbar", object.merge(:prefix => get_var)) : object
add_object(:bbar, bbar)
end
# Generate or set a new Ext.grid.GroupingView
# You can pass view :default options that will autocreate a correct GroupingView
- #
+ #
# Examples:
# view: new Ext.grid.GroupingView({
# forceFit:true,
# groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Foo" : "Bar"]})'
# })
# view :forceFit => true, :groupTextTpl => '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Foo" : "Bar"]})'
- #
+ #
def view(object=nil, &block)
view = case object
when :default then Component.new("Ext.grid.GroupingView", { :forceFit => true, :prefix => get_var })
when Hash then Component.new("Ext.grid.GroupingView", { :forceFit => true, :prefix => get_var }.merge(object))
else object
end
add_object(:view, view)
end
-
+
# Generate or set a new Ext.data.GroupingStore
def store(object=nil, &block)
store = object.is_a?(Store) ? object : Store.new(:prefix => get_var, &block)
add_object(:store, store)
end
-
+
# Generate or set new Ext.grid.ColumnModel
def columns(object=nil, &block)
options = { :columns => [] }
if config[:sm] && before.find { |js| js.start_with?("var #{config[:sm]} = new Ext.grid.CheckboxSelectionModel") }
options[:columns] << config[:sm]
end
cm = object.is_a?(ColumnModel) ? value : ColumnModel.new(options.merge(:prefix => get_var), &block)
add_object(:cm, cm)
end
-
+
# Define the template to use for build grid functions (add/delete/edit)
- #
+ #
# Default we use:
- #
+ #
# /path/to/lipsiadmin/lib/view/helpers/ext/templates/grid_functions.js.erb
- #
+ #
# But you can easy add your own paths like:
- #
+ #
# Lipsiadmin::Ext::Component.template_paths.unshift("/path/to/my/js/templates")
- #
+ #
# Or direct by grid:
- #
+ #
# # products/show.rjs
# page.grid :editable => true do |grid|
# grid.id "grid-products"
# grid.template "products/grid_functions"
# ...
- #
+ #
def template(value)
@template = value == :default ? :grid_functions : value
end
-
+
# Define if the grid need to be added to contentDynamic
- #
+ #
# Backend.app.addItem(#{get_var});
- #
+ #
def render(value)
@render = value
end
-
+
# The base_path used for ToolBar, it's used for generate [:new, :edit, :destory] urls
def base_path(value)
@base_path = value
end
-
+
# The path for ToolBar New Button, if none given we use the base_path
def new_path(value)
@new_path = value
end
-
+
# The path for ToolBar Edit Button, if none given we use the base_path
def edit_path(value)
@edit_path = value
end
-
+
# The path for ToolBar Delete Button, if none given we use the base_path
def destroy_path(value)
@destroy_path = value
end
-
+
# The forgery_protection_token used for ToolBar
def forgery_protection_token(value)
@forgery_protection_token = value
end
-
+
# The authenticity_token used for ToolBar
def authenticity_token(value)
@authenticity_token = value
end
-
+
# Returns getSelectionModel().getSelected()
- #
+ #
# Examples:
- #
+ #
# # Generates: grid.getSelectionModel().getSelected().id
# grid.get_selected
- #
+ #
# # Generates: getSelectionModel().getSelected().data['name']
# grid.get_selected(:name)
- #
+ #
def get_selected(data=:id)
raise_error "No Column Selection Model Defined" if config[:sm].blank?
if data.to_sym == :id
"#{config[:sm]}.getSelected().id".to_l
else
"#{config[:sm]}.getSelected().data[#{data.to_json}]"
end
end
-
+
# Return the javascript for create a new Ext.grid.GridPanel
def to_s
if @ttbar_add || @ttbar_edit || @ttbar_delete
raise_error "You must provide the base_path for autobuild toolbar." if @base_path.blank? && @new_path.blank? && @edit_path.blank? && @destroy_path.blank?
raise_error "You must provide the new_path for autobuild button new of toolbar." if @base_path.blank? && @new_path.blank?
@@ -294,13 +294,13 @@
raise_error "You must provide the authenticity_token for autobuild toolbar." if @authenticity_token.blank?
raise_error "You must provide the grid for autobuild toolbar." if get_var.blank?
raise_error "You must provide the selection model for autobuild toolbar." if config[:sm].blank?
raise_error "You must provide the store." if config[:store].blank?
end
-
+
after << render_javascript(@template, :var => get_var, :store => config[:store], :sm => config[:sm], :tbar => config[:tbar], :editable => @editable, :un => @un)
-
+
if @render
after << "Backend.app.addItem(#{get_var});" if @render
if config[:store]
after << "#{config[:store]}.on('beforeload', function(){ Backend.app.mask(); });"
after << "#{config[:store]}.on('load', function(){ Backend.app.unmask(); });"
@@ -309,6 +309,6 @@
end
super
end
end
end
-end
\ No newline at end of file
+end