Netzke 1.0 streamlines configuration of grid columns and grid’s forms layouts. In this post I’ll be showing how to address some typical use cases.
One way to configure grid columns is to explicitly list them by either providing the columns config option:
def configure(c)
super
c.model = Book
c.columns = [
{ name: "title", width: 150 },
{ name: "author__last_name", width: 150 },
:exemplars
]
end
…or by overriding the columns method (same effect):
def columns
[
{ name: "title", width: 150 },
{ name: "author__last_name", width: 150 },
:exemplars
]
end
The grid’s forms will use the specified columns, too, so, the result will look like this:

Note, that starting from Netzke 1.0, configuring a column with read_only won’t make the corresponding form field
read-only. For that you’ll need to use the attribute DSL method (see below).
To override the fields, you may either provide the form_items config option, or by overriding the
equally named method:
def form_items
[
:title,
{
layout: :hbox,
border: false,
defaults: { flex: 1, layout: :anchor, border: false },
items: [
{ items: [:author__last_name], defaults: { anchor: "-25"} },
{ items: [:exemplars], defaults: { anchor: "100%"} },
]
}
]
end

However sometimes it’s not possible (or desirable) to be explicit about all the columns that must be present. What if
all we want is to hide a specific attribute? This is possible by using the attribute DSL method. For example, to
exclude the created_at attribute from both grid and form:
attribute :created_at do |c|
c.excluded = true
end
To make an attribute read-only:
attribute :exemplars do |c|
c.read_only = true
end
Besides using the attribute DSL method, you may also use the attribute_overrides config option. This may be
handy when you nest a pre-defined grid component in which you want to override specific attributes. For example, imagine
a composite component that nests Authors and Books, and you want to hide the author__name column from the books
grid, as well as make the exemplars column read-only. The code for that component may look something like this:
class AuthorsAndBooks < Netzke::Base
def configure(c)
super
c.layout = { type: :hbox, align: :stretch }
c.defaults = { flex: 1 }
c.items = [:authors, :books]
end
component :authors
component :books do |c|
c.attribute_overrides = {
author__name: { excluded: true },
exemplars: { read_only: true }
}
end
end
When overriding an attribute (either via the attribute DSL method or by means of attribute_overrides config option),
you may use the special column_config and field_config keys to specify configuration options that are specific to a
column (such as its width) or to a form field (such as maxValue for Number field or maxLength for Text field;
refer to the Ext JS documentation for details). Here’s an example:
class Books < Netzke::Grid::Base
def model
Book
end
attribute :exemplars do |c|
c.column_config = { width: 40, text: 'Ex.' }
c.field_config = { max_value: 99 }
end
end
The result will look like this:

For more details on attribute and column configuration, please refer to the docs.
Do not forget to subscribe via RSS, and follow @netzke on Twitter for more frequent news.