smart_listing 1.1.2 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/app/assets/javascripts/smart_listing.coffee.erb +24 -4
- data/app/helpers/smart_listing/helper.rb +7 -4
- data/app/views/smart_listing/_update_list.js.erb +1 -1
- data/lib/generators/smart_listing/templates/initializer.rb +4 -0
- data/lib/smart_listing/config.rb +7 -0
- data/lib/smart_listing/version.rb +1 -1
- metadata +34 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e99ae401d68d2b6f4af5569bf2963fd8eafdb8f
|
4
|
+
data.tar.gz: 8469a86376223350e45927863a7d7c8096c6fc98
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9cf884e1df41a3417a666929c7b66796bf87dbd6089d2c35891650ee178e5c5892c7e7b32c8a8c174f413810669fad3ebca402287b4aef6dc0a0346aa895b697
|
7
|
+
data.tar.gz: 6b412d30392763ad1c5c227ec0261abd9922ffbf5f0f9c95c996b9cba745e9284b4009ffd6b27214edfaea36fef1260eece888168894f121aaee303a911b58f6
|
data/README.md
CHANGED
@@ -180,10 +180,10 @@ New partial for user (`users/user`) may look like this:
|
|
180
180
|
```haml
|
181
181
|
%td= user.name
|
182
182
|
%td= user.email
|
183
|
-
%td.actions= smart_listing_item_actions [{name: :edit, url: edit_user_path(user)}, {name: :destroy, url: user_path(user)}]
|
183
|
+
%td.actions= smart_listing_item_actions [{name: :show, url: user_path(user)}, {name: :edit, url: edit_user_path(user)}, {name: :destroy, url: user_path(user)}]
|
184
184
|
```
|
185
185
|
|
186
|
-
`smart_listing_item_actions` renders here links that allow to edit and destroy user item. `:edit` and `:destroy` are built-in actions, you can also define your `:custom` actions. Again. `<td>`'s class `actions` is important.
|
186
|
+
`smart_listing_item_actions` renders here links that allow to edit and destroy user item. `:show`, `:edit` and `:destroy` are built-in actions, you can also define your `:custom` actions. Again. `<td>`'s class `actions` is important.
|
187
187
|
|
188
188
|
Controller actions referenced by above urls are again plain Ruby on Rails actions that render JS like:
|
189
189
|
|
@@ -21,6 +21,9 @@ class window.SmartListing
|
|
21
21
|
@selector: (name)->
|
22
22
|
@options["constants"]["selectors"][name]
|
23
23
|
|
24
|
+
@element_template: (name)->
|
25
|
+
@options["constants"]["element_templates"][name]
|
26
|
+
|
24
27
|
@config: Config
|
25
28
|
|
26
29
|
|
@@ -186,6 +189,8 @@ class window.SmartListing
|
|
186
189
|
new_item_placeholder.html(content)
|
187
190
|
new_item_placeholder.addClass(SmartListing.config.class("inline_editing"))
|
188
191
|
|
192
|
+
@container.trigger("smart_listing:new", new_item_placeholder)
|
193
|
+
|
189
194
|
@fadeLoaded()
|
190
195
|
|
191
196
|
create: (id, success, content) =>
|
@@ -196,10 +201,17 @@ class window.SmartListing
|
|
196
201
|
new_item_placeholder.addClass(SmartListing.config.class("hidden"))
|
197
202
|
new_item_action.removeClass(SmartListing.config.class("hidden"))
|
198
203
|
|
199
|
-
new_item = $("
|
204
|
+
new_item = $(SmartListing.config.element_template("row")).addClass(SmartListing.config.class("editable"))
|
200
205
|
new_item.attr("data-#{SmartListing.config.data_attribute("id")}", id)
|
201
206
|
new_item.html(content)
|
202
|
-
|
207
|
+
|
208
|
+
if new_item_placeholder.length != 0
|
209
|
+
if new_item_placeholder.data("insert-mode") == "after"
|
210
|
+
new_item_placeholder.after(new_item)
|
211
|
+
else
|
212
|
+
new_item_placeholder.before(new_item)
|
213
|
+
else
|
214
|
+
@content.append(new_item)
|
203
215
|
|
204
216
|
@container.trigger("smart_listing:create:success", new_item)
|
205
217
|
|
@@ -361,11 +373,19 @@ $.fn.smart_listing_controls = () ->
|
|
361
373
|
# serialize form and merge it with smart listing params
|
362
374
|
prms = {}
|
363
375
|
$.each controls.serializeArray(), (i, field) ->
|
364
|
-
|
376
|
+
if field.name.endsWith("[]")
|
377
|
+
field_name = field.name.slice(0, field.name.length - 2)
|
378
|
+
if Array.isArray(prms[field_name])
|
379
|
+
prms[field_name].push field.value
|
380
|
+
else
|
381
|
+
prms[field_name] = [field.value]
|
382
|
+
else
|
383
|
+
prms[field.name] = field.value
|
384
|
+
|
365
385
|
prms = $.extend(smart_listing.params(), prms)
|
366
386
|
smart_listing.params(prms)
|
367
387
|
|
368
|
-
|
388
|
+
smart_listing.fadeLoading()
|
369
389
|
smart_listing.reload()
|
370
390
|
|
371
391
|
$(this).each () ->
|
@@ -115,9 +115,9 @@ module SmartListing
|
|
115
115
|
end
|
116
116
|
|
117
117
|
# Renders the main partial (whole list)
|
118
|
-
def render_list
|
118
|
+
def render_list locals = {}
|
119
119
|
if @smart_listing.partial
|
120
|
-
@template.render :partial => @smart_listing.partial, :locals => {:smart_listing => self}
|
120
|
+
@template.render :partial => @smart_listing.partial, :locals => {:smart_listing => self}.merge(locals || {})
|
121
121
|
end
|
122
122
|
end
|
123
123
|
|
@@ -180,6 +180,7 @@ module SmartListing
|
|
180
180
|
private
|
181
181
|
|
182
182
|
def sanitize_params params
|
183
|
+
params = params.permit! if params.respond_to?(:permit!)
|
183
184
|
params.merge(UNSAFE_PARAMS)
|
184
185
|
end
|
185
186
|
|
@@ -229,8 +230,9 @@ module SmartListing
|
|
229
230
|
end
|
230
231
|
|
231
232
|
def smart_listing_render name = controller_name, *args
|
233
|
+
options = args.dup.extract_options!
|
232
234
|
smart_listing_for(name, *args) do |smart_listing|
|
233
|
-
concat(smart_listing.render_list)
|
235
|
+
concat(smart_listing.render_list(options[:locals]))
|
234
236
|
end
|
235
237
|
end
|
236
238
|
|
@@ -328,7 +330,8 @@ module SmartListing
|
|
328
330
|
smart_listing_config.data_attributes(:params) => smart_listing.all_params,
|
329
331
|
smart_listing_config.data_attributes(:max_count) => smart_listing.max_count,
|
330
332
|
smart_listing_config.data_attributes(:item_count) => smart_listing.count,
|
331
|
-
}
|
333
|
+
},
|
334
|
+
:locals => options[:locals] || {}
|
332
335
|
})
|
333
336
|
end
|
334
337
|
|
@@ -1,2 +1,2 @@
|
|
1
1
|
var smart_listing = $('#<%= name %>').smart_listing();
|
2
|
-
smart_listing.update_list("<%= escape_javascript(render(:partial => part, :locals => {:smart_listing => smart_listing})) %>", <%= smart_listing_data.to_json.html_safe %>);
|
2
|
+
smart_listing.update_list("<%= escape_javascript(render(:partial => part, :locals => {:smart_listing => smart_listing}.merge(locals))) %>", <%= smart_listing_data.to_json.html_safe %>);
|
data/lib/smart_listing/config.rb
CHANGED
@@ -94,6 +94,9 @@ module SmartListing
|
|
94
94
|
:filtering_icon => "button span",
|
95
95
|
:filtering_input => ".filter input",
|
96
96
|
:pagination_count => ".pagination-per-page .count",
|
97
|
+
},
|
98
|
+
:element_templates => {
|
99
|
+
:row => "<tr />",
|
97
100
|
}
|
98
101
|
}
|
99
102
|
}.freeze
|
@@ -129,6 +132,10 @@ module SmartListing
|
|
129
132
|
@options[:constants].try(:[], :selectors).try(:[], key) || DEFAULTS[:constants][:selectors][key]
|
130
133
|
end
|
131
134
|
|
135
|
+
def element_templates key
|
136
|
+
@options[:constants].try(:[], :element_templates).try(:[], key) || DEFAULTS[:constants][:element_templates][key]
|
137
|
+
end
|
138
|
+
|
132
139
|
def global_options value = nil
|
133
140
|
if value && !value.empty?
|
134
141
|
@options[:global_options] ||= {}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smart_listing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sology
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-08-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: '0.17'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: '0.17'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: jquery-rails
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,30 +112,30 @@ dependencies:
|
|
112
112
|
name: capybara
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - ~>
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 2.4.4
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - ~>
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
124
|
+
version: 2.4.4
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: capybara-webkit
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - ~>
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
131
|
+
version: 1.3.1
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- -
|
136
|
+
- - ~>
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
138
|
+
version: 1.3.1
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: database_cleaner
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,40 +158,41 @@ executables: []
|
|
158
158
|
extensions: []
|
159
159
|
extra_rdoc_files: []
|
160
160
|
files:
|
161
|
+
- app/assets/javascripts/smart_listing.coffee.erb
|
161
162
|
- app/views/kaminari/smart_listing/_paginator.html.erb
|
162
|
-
- app/views/kaminari/smart_listing/
|
163
|
+
- app/views/kaminari/smart_listing/_first_page.html.erb
|
163
164
|
- app/views/kaminari/smart_listing/_page.html.erb
|
164
165
|
- app/views/kaminari/smart_listing/_prev_page.html.erb
|
165
|
-
- app/views/kaminari/smart_listing/_first_page.html.erb
|
166
|
-
- app/views/kaminari/smart_listing/_next_page.html.erb
|
167
166
|
- app/views/kaminari/smart_listing/_last_page.html.erb
|
168
|
-
- app/views/smart_listing/
|
169
|
-
- app/views/smart_listing/
|
170
|
-
- app/views/smart_listing/
|
171
|
-
- app/views/smart_listing/item/_create.js.erb
|
172
|
-
- app/views/smart_listing/item/_remove.js.erb
|
173
|
-
- app/views/smart_listing/item/_update.js.erb
|
174
|
-
- app/views/smart_listing/item/_destroy.js.erb
|
175
|
-
- app/views/smart_listing/_pagination_per_page_links.html.erb
|
176
|
-
- app/views/smart_listing/create.js.erb
|
167
|
+
- app/views/kaminari/smart_listing/_gap.html.erb
|
168
|
+
- app/views/kaminari/smart_listing/_next_page.html.erb
|
169
|
+
- app/views/smart_listing/destroy.js.erb
|
177
170
|
- app/views/smart_listing/_action_custom.html.erb
|
178
|
-
- app/views/smart_listing/
|
171
|
+
- app/views/smart_listing/_item_new.html.erb
|
172
|
+
- app/views/smart_listing/_action_delete.html.erb
|
179
173
|
- app/views/smart_listing/edit.js.erb
|
174
|
+
- app/views/smart_listing/_pagination_per_page_links.html.erb
|
180
175
|
- app/views/smart_listing/_pagination_per_page_link.html.erb
|
181
|
-
- app/views/smart_listing/update.js.erb
|
182
|
-
- app/views/smart_listing/_action_delete.html.erb
|
183
|
-
- app/views/smart_listing/_item_new.html.erb
|
184
176
|
- app/views/smart_listing/index.js.erb
|
177
|
+
- app/views/smart_listing/_action_show.html.erb
|
178
|
+
- app/views/smart_listing/update.js.erb
|
179
|
+
- app/views/smart_listing/_action_edit.html.erb
|
185
180
|
- app/views/smart_listing/new.js.erb
|
181
|
+
- app/views/smart_listing/_update_list.js.erb
|
186
182
|
- app/views/smart_listing/_sortable.html.erb
|
187
|
-
- app/views/smart_listing/
|
188
|
-
- app/views/smart_listing/
|
189
|
-
- app/views/smart_listing/
|
190
|
-
- app/
|
183
|
+
- app/views/smart_listing/create.js.erb
|
184
|
+
- app/views/smart_listing/item/_create.js.erb
|
185
|
+
- app/views/smart_listing/item/_edit.js.erb
|
186
|
+
- app/views/smart_listing/item/_destroy.js.erb
|
187
|
+
- app/views/smart_listing/item/_remove.js.erb
|
188
|
+
- app/views/smart_listing/item/_new.js.erb
|
189
|
+
- app/views/smart_listing/item/_update.js.erb
|
190
|
+
- app/views/smart_listing/item/_create_continue.js.erb
|
191
191
|
- app/helpers/smart_listing/application_helper.rb
|
192
192
|
- app/helpers/smart_listing/helper.rb
|
193
193
|
- config/routes.rb
|
194
194
|
- config/locales/en.yml
|
195
|
+
- lib/smart_listing.rb
|
195
196
|
- lib/tasks/smart_list_tasks.rake
|
196
197
|
- lib/smart_listing/config.rb
|
197
198
|
- lib/smart_listing/engine.rb
|
@@ -199,7 +200,6 @@ files:
|
|
199
200
|
- lib/generators/smart_listing/views_generator.rb
|
200
201
|
- lib/generators/smart_listing/install_generator.rb
|
201
202
|
- lib/generators/smart_listing/templates/initializer.rb
|
202
|
-
- lib/smart_listing.rb
|
203
203
|
- LICENSE
|
204
204
|
- Rakefile
|
205
205
|
- README.md
|
@@ -223,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
223
223
|
version: '0'
|
224
224
|
requirements: []
|
225
225
|
rubyforge_project:
|
226
|
-
rubygems_version: 2.
|
226
|
+
rubygems_version: 2.0.3
|
227
227
|
signing_key:
|
228
228
|
specification_version: 4
|
229
229
|
summary: SmartListing helps creating sortable lists of ActiveRecord collections with
|