Sha256: d5bce7500e520aebc889a68f17a5c89aef8c98ddb40f944a4c805b5e113ba9f9

Contents?: true

Size: 1.97 KB

Versions: 3

Compression:

Stored size: 1.97 KB

Contents

module ExtJS::Helpers
  module Store
    def extjs_store(params)
      params[:format] = 'json' if params[:format].nil?
      params[:proxy] = 'http' if params[:proxy].nil?

      controller = "#{params[:controller].to_s.capitalize}Controller".constantize
      model = ((params[:model]) ? params[:model] : params[:controller].singularize).capitalize.constantize

      reader = controller.extjs_reader(model)
      proxy = controller.extjs_proxy(params)

      params[:config]["storeId"] = model.to_s.downcase
      params[:config].merge!(reader)
      params[:config].merge!(proxy)

      type = (params[:proxy] === 'direct' ? params[:proxy] : params[:format]).capitalize

      script = ''
      # ugly hack for DirectProxy API.  Have to add an Ext.onReady() after the Store constructor to set API
      if params[:proxy] === 'direct'
        auto_load = params[:config].delete("autoLoad")
        cname = params[:controller].capitalize
        script = "Ext.onReady(function() { var s = Ext.StoreMgr.get('#{model.to_s.downcase}');"
        if (params[:config]["directFn"])
          script += "s.proxy.directFn = #{cname}.#{params[:config]["directFn"]};"
        else
          script += "s.proxy.setApi({create:#{cname}.#{params[:config]["api"]["create"]},read:#{cname}.#{params[:config]["api"]["read"]},update:#{cname}.#{params[:config]["api"]["update"]},destroy:#{cname}.#{params[:config]["api"]["destroy"]}});"
        end
        if auto_load
          script += "s.load();"
        end
        script += "});"
      end

      if params[:config]["writer"]  # <-- ugly hack because 3.0.1 can't deal with Writer as config-param
        writer = params[:config].delete("writer")
        json = params[:config].to_json
        json[json.length-1] = ','
        json += "writer:new Ext.data.#{params[:format].capitalize}Writer(#{writer.to_json})}"
        "new Ext.data.#{type}Store(#{json});#{script}"
      else
        "new Ext.data.#{type}Store(#{params[:config].to_json});#{script}"
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
extjs-extjs-mvc-0.1.8 lib/action_view/helpers/store.rb
extjs-extjs-mvc-0.1.9 lib/action_view/helpers/store.rb
extjs-mvc-0.1.7 lib/action_view/helpers/store.rb