Sha256: a0dfd13f31e6aac2c7c19af6cccb05d9ef77ede2008a41961a0bdebceb9e7830

Contents?: true

Size: 1.77 KB

Versions: 8

Compression:

Stored size: 1.77 KB

Contents

module ActionView
  module Helpers

    def jqgrid_from_xml(name, opts={})
      @@grid_name = name.to_s
      grid_data = YAML::load_file("#{RAILS_ROOT}/config/jquery/jqGrid/#{name}.yml")
    
      before = grid_data[:before]
      params = grid_data[:params]
      
      def param_body(value)
        value.scan(/^\((.+?)\)(.+)/).flatten
      end
      
      jquery_grid_code = <<-CODE
          <script type="text/javascript">
            <%= before %>_n_
            jQuery(document).ready(function(){ 
              jQuery("#<%= name %>").jqGrid({               
              <% params.each do |key,value| %>
                <% if opts.keys.include?(key) %>
                  _ss_<%= key %>: <%= opts[key].to_json %>,
                <% elsif (value.is_a? String) && (value[0..0] == "$") %>
                  _ss_<%= key %>: <%= "jQuery"+value[1,value.length] %>,
                <% elsif (key.to_s[0..8] == 'function_') %>
                  <% js_params, body = param_body(value) %>
                  _ss_<%= key.to_s[9..-1] %>: function(<%= js_params %>) {
                    _ss__ss_<%= body %> 
                  _ss_},
                <% else %>
                  _ss_<%= key %>: <%= value.to_json %>,
                <% end %>
              <% end %>                            
              <% opts.each do |key,value| %>
                <% unless params.keys.include?(key) %>
                  _ss_<%= key %>: <%= value.to_json %>,
                <% end %>
              <% end %> });
            });
          </script>
      CODE
      ::ERB.new(jquery_grid_code, nil, '>').result(binding).gsub("_n_", "\n").
      gsub(/[ \t]{2,}/,' ').
      gsub(/,\s+\}\);/, "\n  });").
      gsub(/\n\s*\n/m, "\n").
      gsub("_ss_", "  ").
      gsub("<grid_name>", @@grid_name)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
compass-jquery-plugin-0.2.6.0 lib/jquery/jqgrid/jqgrid2xml.rb
compass-jquery-plugin-0.2.5.4 lib/jquery/jqgrid/jqgrid2xml.rb
compass-jquery-plugin-0.2.5.3 lib/jquery/jqgrid/jqgrid2xml.rb
compass-jquery-plugin-0.2.5.2 lib/jquery/jqgrid/jqgrid2xml.rb
compass-jquery-plugin-0.2.5.1 lib/jquery/jqgrid/jqgrid2xml.rb
compass-jquery-plugin-0.2.5 lib/jquery/jqgrid/jqgrid2xml.rb
compass-jquery-plugin-0.2.4.100 lib/jquery/jqgrid/jqgrid2xml.rb
compass-jquery-plugin-0.2.4.99 lib/jquery/jqgrid/jqgrid2xml.rb