netzke-basepack 0.7.1 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.rdoc +22 -1
- data/Rakefile +1 -1
- data/lib/netzke/active_record/attributes.rb +1 -1
- data/lib/netzke/basepack/action_column.rb +70 -0
- data/lib/netzke/basepack/action_column/javascripts/action_column.js +61 -0
- data/lib/netzke/basepack/data_accessor.rb +12 -17
- data/lib/netzke/basepack/form_panel.rb +5 -4
- data/lib/netzke/basepack/form_panel/fields.rb +1 -1
- data/lib/netzke/basepack/form_panel/javascripts/form_panel.js +3 -3
- data/lib/netzke/basepack/grid_panel.rb +81 -30
- data/lib/netzke/basepack/grid_panel/columns.rb +20 -9
- data/lib/netzke/basepack/grid_panel/javascripts/event_handling.js +0 -1
- data/lib/netzke/basepack/grid_panel/javascripts/grid_panel.js +1 -1
- data/lib/netzke/basepack/grid_panel/record_form_window.rb +5 -5
- data/lib/netzke/basepack/grid_panel/services.rb +0 -1
- data/lib/netzke/basepack/version.rb +1 -1
- data/netzke-basepack.gemspec +11 -6
- data/test/basepack_test_app/Gemfile.lock +1 -1
- data/test/basepack_test_app/app/components/author_grid.rb +1 -5
- data/test/basepack_test_app/app/components/book_form.rb +25 -24
- data/test/basepack_test_app/app/components/book_grid.rb +6 -9
- data/test/basepack_test_app/app/components/book_grid_with_column_actions.rb +15 -0
- data/test/basepack_test_app/app/components/book_grid_with_custom_columns.rb +16 -23
- data/test/basepack_test_app/app/components/book_grid_with_default_values.rb +5 -7
- data/test/basepack_test_app/app/components/book_grid_with_extra_feedback.rb +2 -5
- data/test/basepack_test_app/app/components/book_grid_with_overridden_columns.rb +15 -0
- data/test/basepack_test_app/app/components/book_grid_with_persistence.rb +0 -1
- data/test/basepack_test_app/app/components/book_paging_form_panel.rb +2 -2
- data/test/basepack_test_app/app/components/user_form.rb +16 -19
- data/test/basepack_test_app/app/components/user_grid.rb +6 -8
- data/test/basepack_test_app/db/migrate/20110909071740_add_published_on_to_books.rb +5 -0
- data/test/basepack_test_app/db/schema.rb +2 -1
- data/test/basepack_test_app/features/form_panel.feature +11 -0
- data/test/basepack_test_app/features/grid_panel.feature +34 -33
- data/test/basepack_test_app/features/grid_panel_filters.feature +61 -0
- data/test/basepack_test_app/features/paging_form_panel.feature +7 -30
- data/test/basepack_test_app/features/step_definitions/grid_panel_steps.rb +28 -0
- metadata +15 -10
- data/lib/netzke/basepack/grid_panel/multi_edit_form.rb +0 -16
@@ -109,6 +109,19 @@ module Netzke
|
|
109
109
|
@default_columns ||= load_model_level_attrs || data_class.netzke_attributes
|
110
110
|
end
|
111
111
|
|
112
|
+
# Columns that were overridden with :override_columns config option.
|
113
|
+
def overridden_default_columns
|
114
|
+
if config[:override_columns].present?
|
115
|
+
result = []
|
116
|
+
default_columns.each do |col|
|
117
|
+
result << col.merge(config[:override_columns][col[:name].to_sym] || {})
|
118
|
+
end
|
119
|
+
result
|
120
|
+
else
|
121
|
+
default_columns
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
112
125
|
# Columns that represent a smart merge of default_columns and columns passed during the configuration.
|
113
126
|
def initial_columns(with_excluded = false)
|
114
127
|
# Normalize here, as from the config we can get symbols (names) instead of hashes
|
@@ -121,13 +134,13 @@ module Netzke
|
|
121
134
|
# reverse-merge each column hash from config with each column hash from exposed_attributes
|
122
135
|
# (columns from config have higher priority)
|
123
136
|
for c in columns_from_config
|
124
|
-
corresponding_default_column =
|
137
|
+
corresponding_default_column = overridden_default_columns.find{ |k| k[:name] == c[:name] }
|
125
138
|
c.reverse_merge!(corresponding_default_column) if corresponding_default_column
|
126
139
|
end
|
127
140
|
columns_for_create = columns_from_config
|
128
141
|
else
|
129
142
|
# we didn't have columns configured in component's config, so, use the columns from the data class
|
130
|
-
columns_for_create =
|
143
|
+
columns_for_create = overridden_default_columns
|
131
144
|
end
|
132
145
|
|
133
146
|
filter_out_excluded_columns(columns_for_create) unless with_excluded
|
@@ -155,10 +168,10 @@ module Netzke
|
|
155
168
|
set_default_xtype(c)
|
156
169
|
set_default_virtual(c)
|
157
170
|
set_default_text(c)
|
171
|
+
set_default_editable(c)
|
158
172
|
set_default_editor(c)
|
159
173
|
set_default_width(c)
|
160
174
|
set_default_hidden(c)
|
161
|
-
set_default_editable(c)
|
162
175
|
set_default_sortable(c)
|
163
176
|
set_default_filterable(c)
|
164
177
|
c[:assoc] = association_attr?(c)
|
@@ -182,6 +195,7 @@ module Netzke
|
|
182
195
|
else
|
183
196
|
c[:editor] ||= editor_for_attr_type(c[:attr_type])
|
184
197
|
end
|
198
|
+
|
185
199
|
end
|
186
200
|
|
187
201
|
def set_default_width(c)
|
@@ -195,7 +209,7 @@ module Netzke
|
|
195
209
|
|
196
210
|
def set_default_editable(c)
|
197
211
|
if c[:editable].nil?
|
198
|
-
c[:editable] = is_editable_column?(c)
|
212
|
+
c[:editable] = is_editable_column?(c)
|
199
213
|
end
|
200
214
|
end
|
201
215
|
|
@@ -314,12 +328,9 @@ module Netzke
|
|
314
328
|
# Default fields that will be displayed in the Add/Edit/Search forms
|
315
329
|
# When overriding this method, keep in mind that the fields inside the layout must be expanded (each field represented by a hash, not just a symbol)
|
316
330
|
def default_fields_for_forms
|
317
|
-
form_klass = constantize_class_name("Netzke::ModelExtensions::#{config[:model]}ForFormPanel") || original_data_class
|
318
|
-
|
319
|
-
# Select only those fields that are known to the form_klass
|
320
331
|
selected_columns = columns.select do |c|
|
321
|
-
|
322
|
-
|
332
|
+
data_class.column_names.include?(c[:name]) ||
|
333
|
+
data_class.instance_methods.include?("#{c[:name]}=") ||
|
323
334
|
association_attr?(c[:name])
|
324
335
|
end
|
325
336
|
|
@@ -15,7 +15,6 @@
|
|
15
15
|
Ext.Msg.confirm(this.i18n.confirmation, this.i18n.areYouSure, function(btn){
|
16
16
|
if (btn == 'yes') {
|
17
17
|
var records = [];
|
18
|
-
var selection = this.getView().getSelectedNodes();
|
19
18
|
this.getSelectionModel().selected.each(function(r){
|
20
19
|
if (r.isNew) {
|
21
20
|
// this record is not know to server - simply remove from store
|
@@ -28,7 +28,7 @@
|
|
28
28
|
|
29
29
|
if (c.name !== '_meta') fieldConfig.type = this.fieldTypeForAttrType(c.attrType); // field type (grid editors need this to function well)
|
30
30
|
|
31
|
-
if (c.attrType == 'datetime') {
|
31
|
+
if (c.attrType == 'datetime' || c.attrType == 'date') {
|
32
32
|
fieldConfig.dateFormat = 'Y-m-d g:i:s'; // in this format we receive dates from the server
|
33
33
|
};
|
34
34
|
|
@@ -2,12 +2,12 @@ module Netzke
|
|
2
2
|
module Basepack
|
3
3
|
class GridPanel < Netzke::Base
|
4
4
|
class RecordFormWindow < Window
|
5
|
-
js_properties :button_align => :right
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
js_properties :button_align => :right,
|
7
|
+
:width => 400,
|
8
|
+
:auto_height => true,
|
9
|
+
:modal => true,
|
10
|
+
:fbar => [:ok.action, :cancel.action]
|
11
11
|
|
12
12
|
action :ok do
|
13
13
|
{ :text => I18n.t('netzke.basepack.grid_panel.record_form_window.actions.ok')}
|
data/netzke-basepack.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{netzke-basepack}
|
8
|
-
s.version = "0.7.
|
8
|
+
s.version = "0.7.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = [%q{Sergei Kozlov}]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-10-20}
|
13
13
|
s.description = %q{A set of full-featured extendible Netzke components (such as FormPanel, GridPanel, Window, BorderLayoutPanel, etc) which can be used as building block for your RIA}
|
14
14
|
s.email = %q{sergei@playcode.nl}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -40,6 +40,8 @@ Gem::Specification.new do |s|
|
|
40
40
|
"lib/netzke/active_record/relation_extensions.rb",
|
41
41
|
"lib/netzke/basepack.rb",
|
42
42
|
"lib/netzke/basepack/accordion_panel.rb",
|
43
|
+
"lib/netzke/basepack/action_column.rb",
|
44
|
+
"lib/netzke/basepack/action_column/javascripts/action_column.js",
|
43
45
|
"lib/netzke/basepack/auth_app.rb",
|
44
46
|
"lib/netzke/basepack/basic_app.rb",
|
45
47
|
"lib/netzke/basepack/border_layout_panel.rb",
|
@@ -63,7 +65,6 @@ Gem::Specification.new do |s|
|
|
63
65
|
"lib/netzke/basepack/grid_panel/javascripts/grid_panel.js",
|
64
66
|
"lib/netzke/basepack/grid_panel/javascripts/misc.js",
|
65
67
|
"lib/netzke/basepack/grid_panel/javascripts/rows-dd.js",
|
66
|
-
"lib/netzke/basepack/grid_panel/multi_edit_form.rb",
|
67
68
|
"lib/netzke/basepack/grid_panel/record_form_window.rb",
|
68
69
|
"lib/netzke/basepack/grid_panel/services.rb",
|
69
70
|
"lib/netzke/basepack/paging_form_panel.rb",
|
@@ -105,11 +106,13 @@ Gem::Specification.new do |s|
|
|
105
106
|
"test/basepack_test_app/app/components/book_form_with_nested_attributes.rb",
|
106
107
|
"test/basepack_test_app/app/components/book_grid.rb",
|
107
108
|
"test/basepack_test_app/app/components/book_grid_loader.rb",
|
109
|
+
"test/basepack_test_app/app/components/book_grid_with_column_actions.rb",
|
108
110
|
"test/basepack_test_app/app/components/book_grid_with_custom_columns.rb",
|
109
111
|
"test/basepack_test_app/app/components/book_grid_with_default_values.rb",
|
110
112
|
"test/basepack_test_app/app/components/book_grid_with_extra_feedback.rb",
|
111
113
|
"test/basepack_test_app/app/components/book_grid_with_extra_filters.rb",
|
112
114
|
"test/basepack_test_app/app/components/book_grid_with_nested_attributes.rb",
|
115
|
+
"test/basepack_test_app/app/components/book_grid_with_overridden_columns.rb",
|
113
116
|
"test/basepack_test_app/app/components/book_grid_with_paging.rb",
|
114
117
|
"test/basepack_test_app/app/components/book_grid_with_persistence.rb",
|
115
118
|
"test/basepack_test_app/app/components/book_grid_with_scoped_authors.rb",
|
@@ -187,12 +190,14 @@ Gem::Specification.new do |s|
|
|
187
190
|
"test/basepack_test_app/db/migrate/20110213213050_create_netzke_component_states.rb",
|
188
191
|
"test/basepack_test_app/db/migrate/20110701070052_create_book_with_custom_primary_keys.rb",
|
189
192
|
"test/basepack_test_app/db/migrate/20110901114016_add_last_read_at_to_books.rb",
|
193
|
+
"test/basepack_test_app/db/migrate/20110909071740_add_published_on_to_books.rb",
|
190
194
|
"test/basepack_test_app/db/schema.rb",
|
191
195
|
"test/basepack_test_app/db/seeds.rb",
|
192
196
|
"test/basepack_test_app/features/accordion_panel.feature",
|
193
197
|
"test/basepack_test_app/features/components_in_view.feature",
|
194
198
|
"test/basepack_test_app/features/form_panel.feature",
|
195
199
|
"test/basepack_test_app/features/grid_panel.feature",
|
200
|
+
"test/basepack_test_app/features/grid_panel_filters.feature",
|
196
201
|
"test/basepack_test_app/features/grid_panel_with_custom_primary_key.feature",
|
197
202
|
"test/basepack_test_app/features/grid_sorting.feature",
|
198
203
|
"test/basepack_test_app/features/i18n.feature",
|
@@ -287,16 +292,16 @@ Gem::Specification.new do |s|
|
|
287
292
|
s.specification_version = 3
|
288
293
|
|
289
294
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
290
|
-
s.add_runtime_dependency(%q<netzke-core>, ["~> 0.7.
|
295
|
+
s.add_runtime_dependency(%q<netzke-core>, ["~> 0.7.4"])
|
291
296
|
s.add_runtime_dependency(%q<will_paginate>, ["~> 3.0.0"])
|
292
297
|
s.add_runtime_dependency(%q<acts_as_list>, ["~> 0.1.4"])
|
293
298
|
else
|
294
|
-
s.add_dependency(%q<netzke-core>, ["~> 0.7.
|
299
|
+
s.add_dependency(%q<netzke-core>, ["~> 0.7.4"])
|
295
300
|
s.add_dependency(%q<will_paginate>, ["~> 3.0.0"])
|
296
301
|
s.add_dependency(%q<acts_as_list>, ["~> 0.1.4"])
|
297
302
|
end
|
298
303
|
else
|
299
|
-
s.add_dependency(%q<netzke-core>, ["~> 0.7.
|
304
|
+
s.add_dependency(%q<netzke-core>, ["~> 0.7.4"])
|
300
305
|
s.add_dependency(%q<will_paginate>, ["~> 3.0.0"])
|
301
306
|
s.add_dependency(%q<acts_as_list>, ["~> 0.1.4"])
|
302
307
|
end
|
@@ -1,30 +1,32 @@
|
|
1
1
|
# Warning: this component participates in i18n.feature, careful with adding new fields!
|
2
2
|
class BookForm < Netzke::Basepack::FormPanel
|
3
|
-
|
3
|
+
extend Extras::BookPresentation
|
4
4
|
|
5
|
-
|
5
|
+
title Book.model_name.human
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
)
|
27
|
-
|
7
|
+
model "Book"
|
8
|
+
|
9
|
+
record_id Book.first.try(:id)
|
10
|
+
|
11
|
+
items [
|
12
|
+
:title,
|
13
|
+
{:name => :author__first_name, :setter => author_first_name_setter},
|
14
|
+
:author__name,
|
15
|
+
{:name => :author__last_name, :xtype => :displayfield},
|
16
|
+
{:name => :rating, :xtype => :combo, :store => [[1, "Good"], [2, "Average"], [3, "Poor"]]},
|
17
|
+
{:name => :author__updated_at, :editable => false},
|
18
|
+
:digitized,
|
19
|
+
:exemplars,
|
20
|
+
{:name => :in_abundance, :getter => in_abundance_getter, :xtype => :displayfield},
|
21
|
+
{:name => :updated_at},
|
22
|
+
:last_read_at,
|
23
|
+
:published_on
|
24
|
+
|
25
|
+
# WIP: commalistcbg is kind of broken, giving an Ext error
|
26
|
+
# {:name => :tags, :xtype => :commalistcbg, :options => %w(read cool recommend buy)},
|
27
|
+
# WIP: waithing on nradiogroup
|
28
|
+
# {:name => :rating, :xtype => :nradiogroup, :options => [[1, "Good"], [2, "Average"], [3, "Poor"]]}
|
29
|
+
]
|
28
30
|
|
29
31
|
js_method :init_component, <<-JS
|
30
32
|
function(){
|
@@ -33,5 +35,4 @@ class BookForm < Netzke::Basepack::FormPanel
|
|
33
35
|
}
|
34
36
|
JS
|
35
37
|
|
36
|
-
|
37
38
|
end
|
@@ -1,12 +1,9 @@
|
|
1
1
|
class BookGrid < Netzke::Basepack::GridPanel
|
2
|
-
|
2
|
+
title I18n.t('books', :default => "Books")
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
# :columns => [{:name => :title, :editable => false, :editor => {:xtype => :datefield}}, :exemplars, :digitized, :notes]
|
10
|
-
)
|
11
|
-
end
|
4
|
+
model "Book"
|
5
|
+
|
6
|
+
add_form_config :class_name => "BookForm"
|
7
|
+
edit_form_config :class_name => "BookForm"
|
8
|
+
multi_edit_form_config :class_name => "BookForm"
|
12
9
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Implements a column action :delete_row
|
2
|
+
class BookGridWithColumnActions < Netzke::Basepack::GridPanel
|
3
|
+
include Netzke::Basepack::ActionColumn
|
4
|
+
|
5
|
+
model "Book"
|
6
|
+
|
7
|
+
column_action :delete_row, :icon => "#{Netzke::Core.ext_uri}/resources/themes/images/default/tree/drop-no.gif"
|
8
|
+
|
9
|
+
js_method :on_delete_row, <<-JS
|
10
|
+
function(record){
|
11
|
+
this.getSelectionModel().select(record);
|
12
|
+
this.onDel();
|
13
|
+
}
|
14
|
+
JS
|
15
|
+
end
|
@@ -1,29 +1,22 @@
|
|
1
1
|
class BookGridWithCustomColumns < Netzke::Basepack::GridPanel
|
2
2
|
js_property :title, "Books"
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
:renderer => "function(v){return ['', 'Good', 'Average', 'Poor'][v];}"
|
21
|
-
},
|
22
|
-
:exemplars,
|
23
|
-
{:name => :updated_at}
|
24
|
-
]
|
25
|
-
)
|
26
|
-
end
|
4
|
+
model "Book"
|
5
|
+
|
6
|
+
column :author__first_name, :renderer => :my_renderer
|
7
|
+
column :author__last_name, :renderer => :uppercase
|
8
|
+
column :author__name, :flex => 1, :text => "Author"
|
9
|
+
column :title, :flex => 1
|
10
|
+
column :digitized
|
11
|
+
column :rating,
|
12
|
+
:editor => {
|
13
|
+
:trigger_action => :all,
|
14
|
+
:xtype => :combo,
|
15
|
+
:store => [[1, "Good"], [2, "Average"], [3, "Poor"]]
|
16
|
+
},
|
17
|
+
:renderer => "function(v){return ['', 'Good', 'Average', 'Poor'][v];}"
|
18
|
+
column :exemplars
|
19
|
+
column :updated_at
|
27
20
|
|
28
21
|
js_method :my_renderer, <<-JS
|
29
22
|
function(value){
|
@@ -1,11 +1,9 @@
|
|
1
1
|
class BookGridWithDefaultValues < Netzke::Basepack::GridPanel
|
2
|
+
model "Book"
|
2
3
|
js_property :title, "Books"
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
)
|
9
|
-
end
|
10
|
-
|
5
|
+
column :title, :default_value => "Lolita"
|
6
|
+
column :author__last_name, :default_value => Author.first.id
|
7
|
+
column :exemplars, :default_value => 100
|
8
|
+
column :digitized, :default_value => true
|
11
9
|
end
|
@@ -1,10 +1,7 @@
|
|
1
1
|
class BookGridWithExtraFeedback < Netzke::Basepack::GridPanel
|
2
|
-
|
3
|
-
super.merge(
|
4
|
-
:model => "Book"
|
5
|
-
)
|
6
|
-
end
|
2
|
+
model "Book"
|
7
3
|
|
4
|
+
# Override the get_data endpoint
|
8
5
|
def get_data_endpoint(params)
|
9
6
|
super.merge(:netzke_feedback => "Data loaded!")
|
10
7
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class BookGridWithOverriddenColumns < Netzke::Basepack::GridPanel
|
2
|
+
model "Book"
|
3
|
+
|
4
|
+
# First way to override a column
|
5
|
+
override_column :title, :renderer => "uppercase"
|
6
|
+
|
7
|
+
# Second way to override a column
|
8
|
+
# def default_config
|
9
|
+
# super.tap do |c|
|
10
|
+
# c[:override_columns] = {
|
11
|
+
# :title => {:renderer => "uppercase"}
|
12
|
+
# }
|
13
|
+
# end
|
14
|
+
# end
|
15
|
+
end
|
@@ -10,12 +10,12 @@ class BookPagingFormPanel < Netzke::Basepack::PagingFormPanel
|
|
10
10
|
:flex => 2,
|
11
11
|
:layout => :anchor,
|
12
12
|
:defaults => {:anchor => "-8"},
|
13
|
-
:items => [:title, :notes, :digitized, :created_at, :updated_at]
|
13
|
+
:items => [:title, :notes, :digitized, :created_at, :updated_at, :last_read_at]
|
14
14
|
},{
|
15
15
|
:flex => 1,
|
16
16
|
:layout => :anchor,
|
17
17
|
:defaults => {:anchor => "-8"},
|
18
|
-
:items => [:author__name, {:name => :author__first_name, :read_only => true}, :exemplars]
|
18
|
+
:items => [:author__name, {:name => :author__first_name, :read_only => true}, :exemplars, :published_on]
|
19
19
|
}]}]
|
20
20
|
})
|
21
21
|
end
|