Sha256: 11088483bedfbca92bb071f2dfca34a3c28e868ac7fdacc064d353671ecb3de7

Contents?: true

Size: 1.85 KB

Versions: 13

Compression:

Stored size: 1.85 KB

Contents

module Netzke
  #
  # Base class for Accordion and TabPanel widgets, it shouldn't be used as a stand-alone class.
  #
  class Container < Base
    def initialize(*args)
      super
      for item in initial_items do
        add_aggregatee item
        items << item.keys.first
      end
    end
    
    def initial_dependencies
      dep = super
      for item in items
        candidate_dependency = aggregatees[item][:widget_class_name]
        dep << candidate_dependency unless dep.include?(candidate_dependency)
      end
      dep
    end

    def self.js_before_constructor
      js_widget_items
    end
    
    def items
      @items ||= []
    end
    
    def initial_items
      config[:items] || []
    end
    
    def self.js_widget_items
      res = ""
      item_aggregatees.each_pair do |k,v|
        next if v[:late_aggregation]
        res << <<-JS
        var #{k.to_js} = new Ext.netzke.cache['#{v[:widget_class_name]}'](config.#{k.to_js}Config);
        JS
      end
      res
    end

    def self.js_items
      items.inject([]) do |a,i|
        a << {
          :title      => i.to_s.humanize,
          :layout     => 'fit',
          :id         => i.to_s,
          :items      => ([i.to_s.to_js.l] if !aggregatees[i][:late_aggregation]),
          :collapsed  => !aggregatees[i][:active],
          :listeners  => {
            :expand     => {:fn => "this.loadItemWidget".l, :scope => this}
          }
        }
      end
    end
    
    def self.js_extend_properties
      {
        # loads widget into the panel if it's not loaded yet
        :load_item_widget => <<-JS.l,
          function(panel) {
            if (!panel.getWidget()) panel.loadWidget(this.id + "__" + panel.id + "__get_widget");
          }
        JS
      }
    end

    protected
    def self.item_aggregatees
      aggregatees.delete_if{|k,v| !@items.include?(k)}
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
netzke-basepack-0.3.3 lib/netzke/container.rb
netzke-basepack-0.3.3.1 lib/netzke/container.rb
netzke-basepack-0.3.10 lib/netzke/container.rb
netzke-basepack-0.3.4 lib/netzke/container.rb
netzke-basepack-0.3.5 lib/netzke/container.rb
netzke-basepack-0.3.6 lib/netzke/container.rb
netzke-basepack-0.4.1 lib/netzke/container.rb
netzke-basepack-0.4.2 lib/netzke/container.rb
netzke-basepack-0.3.7 lib/netzke/container.rb
netzke-basepack-0.3.9.1 lib/netzke/container.rb
netzke-basepack-0.4.0 lib/netzke/container.rb
netzke-basepack-0.3.8 lib/netzke/container.rb
netzke-basepack-0.3.9 lib/netzke/container.rb