Sha256: 413bbb159e69c3d915661813cc445af4a2cd4b363c5ed612e9c02bdc27b44354

Contents?: true

Size: 1.57 KB

Versions: 4

Compression:

Stored size: 1.57 KB

Contents

module Netzke
  # Abstract GridPanel-based editor for a JSON array of homogenious objects.
  # Inherit from it in order to override:
  #   <tt>store_data</p> - passes the data to be saved (e.g. to the persistant storage)
  #   <tt>initial_data</p> - should return initial data (e.g. from the persistant storage)
  # For an example of an implementation, see Netzke::FieldsConfigurator.
  class JsonArrayEditor < GridPanel
    def initialize(*args)
      super
      data_class.configure(:owner => global_id, :columns => dynamic_fields, :initial_data => initial_data)
    end
    
    def data_class
      NetzkePersistentArrayAutoModel
    end

    # Fields for NetzkePersistentArrayAutoModel (override it)
    def dynamic_fields
      default_columns.collect { |c| {:name => c[:name], :type => c[:attr_type], :default => c[:default_value]} }
    end

    # Default predifined columns (override if needed)
    def default_columns
      [{
        :name => :id,
        :attr_type => :integer
      },{
        :name => :name,
        :attr_type => :string
      },{
        :name => :position,
        :attr_type => :integer
      }]
    end
    
    # Don't show the config tool
    # def config_tool_needed?
    #   false
    # end
    
    def before_load
      data_class.rebuild_table
      super
    end
    
    private
      # Override this
      def store_data(data); end
    
      # Override this
      def initial_data
        []
      end
    
      # This is an override of GridPanel#on_data_changed
      def on_data_changed
        store_data(data_class.all_columns)
      end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
netzke-basepack-0.5.12 lib/netzke/json_array_editor.rb
netzke-basepack-0.5.11 lib/netzke/json_array_editor.rb
netzke-basepack-0.5.10 lib/netzke/json_array_editor.rb
netzke-basepack-0.5.9 lib/netzke/json_array_editor.rb