Module: SecretSauce::Helpers::UiGridHelper
- Defined in:
- lib/jquery/secret_sauce/helpers/ui_grid_helper.rb
Overview
This module wraps the great jqGrid plugin for jQuery and jQuery UI (www.trirand.com/blog).
Instance Method Summary collapse
-
#ui_grid_for(*args) ⇒ Object
Renders a table using jqGrid.
Instance Method Details
#ui_grid_for(*args) ⇒ Object
Renders a table using jqGrid. This method can be used for quickly ‘scaffolding’ a model resource. It accepts arguments similiar to form_for. The first argument must be either Symbol, or an Array. If a Symbol, it should be the name of the resource to build the grid for.
Parameters
Most of the documentation for the parameters are pulled from the jqGrid documentation found here: www.secondpersonplural.ca/jqgriddocs/index.htm
-
:alternate_rows -
Set a zebra-striped grid. Default is set to false. -
:caption -
Defines the caption for the grid. This caption appear above the table header. If caption is nil, no caption will be referenced. By default the caption will be guessed from thename_or_array
arguement. -
:cell_edit -
Enables (disables) cell editing. See CellEditing for more details. -
:cell_submit -
Determines where the contents of the cell are saved: ‘remote’ or ‘clientArray’. See CellEditing for more details. -
:cell_url -
The url where the cell is to be saved. See CellEditing for more details. -
:column_model -
Array which describes the parameters of the columns. For a full description of all valid values see colModel. By default column_model is set for ActiveRecord::Base#find_for_grid. -
:column_names -
Array which describes the column labels in the grid. -
:datastring -
The string of data when datatype parameter is set to xmlstring or jsonstring. -
:datatype -
Defines what type of information to expect to represent data in the grid. Valid options are xml - we expect xml data; xmlstring - we expect xml data as string; json - we expect JSON data; jsonstring - we expect JSON data as string; clientSide - we expect data defined at client side (array data) -
:deselect_after_sort -
Applicable only when we usedatatype => "clientSide"
. Deselects currently-selected row(s) when a sort is applied. -
:edit_url -
Defines the url for inline and form editing. -
:expand_column -
Indicates which column (name from:column_model
) should be used to expand the tree grid. If not set the first one is used. Valid only when treeGrid option is set to true. -
:force_fit -
If set to true, and resizing the width of a column, the adjacent column (to the right) will resize so that the overall grid width is maintained (e.g., reducing the width of column 2 by 30px will increase the size of column 3 by 30px). In this case there is no horizontal scrolbar. Note: this option is not compatible withshrink_to_fit
option - i.e if:shrink_to_fit
is set to false,:force_fit
is ignored. -
:grid_state -
Determines the current state of the grid (i.e. when used with hiddengrid,:hide_grid
and caption options). Can have either of two states: ‘visible’ or ‘hidden’ -
:hidden_grid -
If set to true the grid initially is hidden. The data is not loaded (no request is sent) and only the caption layer is shown. When the show/hide button is clicked the first time to show grid, the request is sent to the server, the data is loaded, and grid is shown. From this point we have a regular grid. This option has effect only if the caption property is not empty and the:hide_grid
property (see below) is set to true. -
:hide_grid -
Enables or disables the show/hide grid button, which appears on the right side of the Caption layer. Takes effect only if the caption property is not an empty string. -
:height -
The height of the grid. Can be set as percentage or any valid measured value. -
:image_path -
Defines the path to the images that are used in the grid. Set this option without / at end. -
:json_reader -
Array which describes the structure of the expected json data. For a full description and default setting, see JSONData. -
:load_once -
If this flag is set to true, the grid loads the data from the server only once (using the appropriate datatype). After the first request the:data_type
parameter is automatically changed to clientSide and all further manipulations are done on the client side. The functions of the pager (if present) are disabled. -
:load_text -
The text which appear when requesting and sorting data. -
:load_ui -
This option controls what to do when an ajax operation is in progress.-
disable - disables the jqGrid progress indicator. This way you can use your own indicator.
-
enable (default) - enables the red “Loading” message in the upper left of the grid.
-
block - enables the progress indicator using the characteristics you have specified in the css for div.loadingui and blocks all actions in the grid until the ajax request is finished. Note that this disables paging, sorting and all actions on toolbar, if any.
-
-
:request_type -
Defines the type of request to make (“POST” or “GET”). -
:multikey -
This parameter have sense only multiselect option is set to true. Defines the key which will be pressed when we make multiselection. The possible values are: shiftKey - the user should press Shift Key altKey - the user should press Alt Key ctrlKey - the user should press Ctrl Key. -
:multibox -
This option works only when:multiselect => true
. When multiselect is set to true, clicking anywhere on a row selects that row; when multiboxonly is also set to true, the row is selected only when the checkbox is clicked (Yahoo style). -
:multiselect -
If this flag is set to true a multi selection of rows is enabled. A new column at left side is added. Can be used with any datatype option. -
:param_keys -
Customizes names of the fields sent to the server on a Post: default values for these fields are “page”, “rows”, “sidx”, and “sord”. For example, with this setting, you can change the sort order element from “sidx” to “mysort”: The string that will be posted to the server will then be /foo/bars?page=1&rows=10&mysort=myindex&sord=asc rather than /foo/bars?page=1&rows=10&sidx=myindex&sord=asc. -
:post_data -
This array is passed directly to the url. This is associative array and can be used this way: name1:value1…. -
:resize_class -
Assigns a class to columns that are resizable so that we can show a resize handle only for ones that are resizable. -
:scroll -
Creates dynamic scrolling grids. When enabled, the pager elements are disabled and we can use the vertical scrollbar to load data. This option currently should be used carefully on big data sets, since the swapper isn’t that intelligent, which means that all the data is loaded and a lot of memory will be used if the dataset is large. You must be sure to have a initial vertical scroll in grid, i.e. the height should not be set to auto. -
:scroll_rows -
When enabled, selecting a row with setSelection scrolls the grid so that the selected row is visible. This is especially useful when we have a verticall scrolling grid and we use form editing with navigation buttons (next or previous row). On navigating to a hidden row, the grid scrolls so the selected row becomes visible. -
:sort_class -
The class to be applied to the currently sorted column, i.e. applied to the th element. -
:shrink_to_fit -
This option describes the type of calculation of the initial width of each column against with the width of the grid. If the value is true and the value in width option is set then: Every column width is scaled according to the defined option width. Example: if we define two columns with a width of 80 and 120 pixels, but want the grid to have a 300 pixels - then the columns are recalculated as follows: 1- column = 300(new width)/200(sum of all width)*80(column width) = 120 and 2 column = 300/200*120 = 180. The grid width is 300px. If the value is false and the value in width option is set then: The width of the grid is the width set in option. The column width are not recalculated and have the values defined in colModel. -
:sort_asc_image -
Links to image url which are used when the user sort a column. -
:sort_desc_image -
Links to image url which are used when the user sort a column. -
:sort_name -
The initial sorting name when we use datatypes xml or json (data returned from server). -
:sort_order -
The initial sorting order when we use datatypes xml or json (data returned from server). -
:toolbar -
This option defines the toolbar of the grid. This is array with two values in which the first value enables the toolbar and the second defines the position relative to body Layer. Possible values “top” or “bottom”. -
:tree_grid -
Enables (disables) the tree grid format. For more details see TreeGrid -
:user_data -
This array contain custom information from the request. Can be used at any time. -
:width -
If this option is not set, the width of the grid is a sum of the widths of the columns defined in the colModel (in pixels). If this option is set, the initial width of each column is set according to the value of:shrink_to_fit
option. -
:xml_reader -
Array which describes the structure of the expected xml data. For a full description refer to Data Types.
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 |
# File 'lib/jquery/secret_sauce/helpers/ui_grid_helper.rb', line 129 def ui_grid_for(*args) name_or_array = args.first = args. option_map = { :alternate_rows => "altRows", # bool :caption => "caption", # string :cell_edit => "cellEdit", # bool :cell_submit => "cellSubmit", # string :cell_url => "cellUrl", # string :column_model => "colModel", # array :column_names => "colNames", # array :datastring => "dataStr", # string :datatype => "datatype", # string :deslect_after_sort => "deselectAfterSort", # bool :edit_url => "editUrl", # string :expand_column => "ExpandColumn", # string :footer_row => "footerrow", # bool TODO: ADD DOCUMENTATION :force_fit => "forceFit", # bool :grid_state => "gridstate", # string :hidden_grid => "hiddengrid", # bool :hide_grid => "hidegrid", # bool :height => "height", # string :image_path => "imgpath", # string :json_reader => "jsonReader", # array :load_complete => "loadComplete", # string TODO: ADD DOCUMENTATION :load_once => "loadonce", # bool :load_text => "load_text", # string :load_ui => "loadui", # string :request_method => "mtype", # string :multikey => "multikey", # string :multibox => "multiboxonly", # bool :multiselect => "multiselect", # bool :pager => "pager", # string TODO: ADD DOCUMENATION :param_keys => "prmnames", # array :post_data => "postData", # array :resize_class => "resizeclass", # string :restful => "restful", # bool :row_num => "rowNum", # integer TODO: ADD DOCUMENATION :row_list => "rowList", # array TODO: ADD DOCUMENATION :scroll => "scroll", # bool :scroll_rows => "scrollrows", # bool :sort_class => "sortclass", # string :shrink_to_fit => "shrinkToFit", # bool :sort_asc_image => "sortascimg", # string :sort_desc_image => "sortdescimg", # string :sort_name => "sortname", # string :sort_order => "sortorder", # string :toolbar => "toolbar", # array :tree_grid => "treeGrid", # bool :user_data => "userData", # array :url => "url", # string TODO: ADD DOCUMENATION :view_records => "viewrecords", # bool TODO: ADD DOCUMENTATION :width => "width", # string :xml_reader => "xmlReader", # array } if name_or_array.class == Symbol [:grid] = {} unless [:grid] [:nav] = {} unless [:nav] [:actions] = {} unless [:actions] [:url] = "/#{name_or_array}" unless [:url] column_model = name_or_array.to_s.singularize.classify.constantize.new.attributes.keys.collect do |m| {:name => m, :index => m, :label => m.titleize, :width => (1024 / name_or_array.to_s.singularize.classify.constantize.new.attributes.length)} end = { ########################################## #:url => "/#{name_or_array}.json", :url => "#{[:url]}.json", ########################################## :alternate_rows => true, :caption => "#{name_or_array}".titleize, :column_model => column_model, :datatype => "json", :restful => true, :json_reader => {:repeatitems => false}, #:height => 22 * 30, :height => :auto, :row_num => 20, :row_list => [10, 20, 30], :pager => "#{name_or_array}_pager", :hide_grid => false, :view_records => true, } .merge!([:grid]) = {} .each do |k, v| [option_map[k]] = v end [:nav].replace({ :edit => false, :add => false, :del => false }.merge([:nav])) render(:file => 'shared/_ui_grid_for_without_block.js.haml', :locals => {:options => , :name => name_or_array, :url => [:url], :nav => [:nav], :actions => [:actions]}) end end |