smart_listing 0.9.3 → 0.9.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/smart_listing/smart_listing.coffee +32 -19
- data/app/helpers/smart_listing/helper.rb +8 -8
- data/app/views/smart_listing/_item_new.html.erb +5 -5
- data/app/views/smart_listing/_pagination_per_page_link.html.erb +1 -1
- data/lib/smart_listing/version.rb +1 -1
- data/lib/smart_listing.rb +11 -0
- metadata +36 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34f2ebadeaeafd444b806b6392bd706ebd298d24
|
4
|
+
data.tar.gz: dd9ebe392e5a3976e2c69183d32cb90c6cf67e2d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6cc5d0d352c80b62fcd0526ce62385a2c58e0eda3563131d56748d2a8cc235e0144c078f8b9e5aa01cc5ea2b14b4c930489b2986de40e7f51e04a7d008542646
|
7
|
+
data.tar.gz: 239bdd2c28d6f113c864ef5054135a5a7b65fcf83e2dc482da3a162eb610e34a4e2a73c6c1a2064a403eb0868bec9c1411d648bf8ebf61b6e7da0d9c482573c2
|
@@ -54,6 +54,7 @@ class SmartListing
|
|
54
54
|
$(confirmation_elem).click()
|
55
55
|
$(confirmation_elem).popover('destroy')
|
56
56
|
)
|
57
|
+
.append(" ")
|
57
58
|
.append($('<button/>').html('No').addClass('btn btn-small').click (event) =>
|
58
59
|
editable = $(event.currentTarget).closest('.editable')
|
59
60
|
$(confirmation_elem).popover('destroy')
|
@@ -86,8 +87,8 @@ class SmartListing
|
|
86
87
|
@cancelEdit(editable)
|
87
88
|
else
|
88
89
|
# Cancel new record
|
89
|
-
@container.find('.new_item_placeholder').addClass('
|
90
|
-
@container.find('.new_item_action').removeClass('
|
90
|
+
@container.find('.new_item_placeholder').addClass('hidden')
|
91
|
+
@container.find('.new_item_action').removeClass('hidden')
|
91
92
|
false
|
92
93
|
|
93
94
|
@container.on 'click', '.actions a[data-confirmation]', (event) =>
|
@@ -95,7 +96,7 @@ class SmartListing
|
|
95
96
|
if(@confirmed != event.currentTarget)
|
96
97
|
# We need confirmation
|
97
98
|
@container.find('.actions a').popover('destroy')
|
98
|
-
$(event.currentTarget).popover(content: createPopover(event.currentTarget, $(event.currentTarget).data('confirmation')), html: true, trigger: 'manual')
|
99
|
+
$(event.currentTarget).popover(content: createPopover(event.currentTarget, $(event.currentTarget).data('confirmation')), html: true, trigger: 'manual', title: null)
|
99
100
|
$(event.currentTarget).popover('show')
|
100
101
|
false
|
101
102
|
else
|
@@ -106,6 +107,17 @@ class SmartListing
|
|
106
107
|
@container.on 'click', 'input[type=text].autoselect', (event) ->
|
107
108
|
$(this).select()
|
108
109
|
|
110
|
+
@container.on 'change', '.callback', (event) =>
|
111
|
+
checkbox = $(event.currentTarget)
|
112
|
+
id = checkbox.closest("tr").data("id")
|
113
|
+
data = {}
|
114
|
+
data[checkbox.val()] = checkbox.is(":checked")
|
115
|
+
$.ajax({
|
116
|
+
url: @container.data("callback-href"),
|
117
|
+
type: "POST",
|
118
|
+
data: data,
|
119
|
+
})
|
120
|
+
|
109
121
|
fadeLoading: =>
|
110
122
|
@content.stop(true).fadeTo(500, 0.2)
|
111
123
|
@loading.show()
|
@@ -152,11 +164,11 @@ class SmartListing
|
|
152
164
|
if @maxCount()
|
153
165
|
if @itemCount() >= @maxCount()
|
154
166
|
if @itemCount()
|
155
|
-
@container.find('.new_item_action').addClass('
|
156
|
-
@container.find('.new_item_action .btn').addClass('
|
167
|
+
@container.find('.new_item_action').addClass('hidden')
|
168
|
+
@container.find('.new_item_action .btn').addClass('hidden')
|
157
169
|
else
|
158
|
-
@container.find('.new_item_action').removeClass('
|
159
|
-
@container.find('.new_item_action .btn').removeClass('
|
170
|
+
@container.find('.new_item_action').removeClass('hidden')
|
171
|
+
@container.find('.new_item_action .btn').removeClass('hidden')
|
160
172
|
|
161
173
|
@status.each (index, status) =>
|
162
174
|
$(status).find('.smart_listing_limit').html(@maxCount() - @itemCount())
|
@@ -177,13 +189,13 @@ class SmartListing
|
|
177
189
|
|
178
190
|
new_item: (content) =>
|
179
191
|
new_item_action = @container.find('.new_item_action')
|
180
|
-
new_item_placeholder = @container.find('.new_item_placeholder').addClass('
|
192
|
+
new_item_placeholder = @container.find('.new_item_placeholder').addClass('hidden')
|
181
193
|
|
182
194
|
@container.find('.editable').each (i, v) =>
|
183
195
|
@cancelEdit($(v))
|
184
196
|
|
185
|
-
new_item_action.addClass('
|
186
|
-
new_item_placeholder.removeClass('
|
197
|
+
new_item_action.addClass('hidden')
|
198
|
+
new_item_placeholder.removeClass('hidden')
|
187
199
|
new_item_placeholder.html(content)
|
188
200
|
new_item_placeholder.addClass('info')
|
189
201
|
|
@@ -194,8 +206,8 @@ class SmartListing
|
|
194
206
|
new_item_placeholder = @container.find('.new_item_placeholder')
|
195
207
|
|
196
208
|
if success
|
197
|
-
new_item_placeholder.addClass('
|
198
|
-
new_item_action.removeClass('
|
209
|
+
new_item_placeholder.addClass('hidden')
|
210
|
+
new_item_action.removeClass('hidden')
|
199
211
|
|
200
212
|
new_item = $('<tr />').addClass('editable')
|
201
213
|
new_item.attr('data-id', id)
|
@@ -212,8 +224,8 @@ class SmartListing
|
|
212
224
|
edit: (id, content) =>
|
213
225
|
@container.find('.editable').each (i, v) =>
|
214
226
|
@cancelEdit($(v))
|
215
|
-
@container.find('.new_item_placeholder').addClass('
|
216
|
-
@container.find('.new_item_action').removeClass('
|
227
|
+
@container.find('.new_item_placeholder').addClass('hidden')
|
228
|
+
@container.find('.new_item_action').removeClass('hidden')
|
217
229
|
|
218
230
|
editable = @container.find(".editable[data-id=#{id}]")
|
219
231
|
editable.data('smart_listing_edit_backup', editable.html())
|
@@ -265,6 +277,7 @@ $.fn.handleSmartListingControls = () ->
|
|
265
277
|
$(this).each () ->
|
266
278
|
controls = $(this)
|
267
279
|
smart_listing = $("##{controls.data('smart-listing')}")
|
280
|
+
reset = controls.find(".reset")
|
268
281
|
|
269
282
|
controls.submit ->
|
270
283
|
# Merges smart list params with the form action url before submitting.
|
@@ -296,18 +309,18 @@ $.fn.handleSmartListingFilter = () ->
|
|
296
309
|
|
297
310
|
field.observeField(
|
298
311
|
onFilled: ->
|
299
|
-
icon.removeClass('
|
300
|
-
icon.addClass('
|
312
|
+
icon.removeClass('glyphicon-search')
|
313
|
+
icon.addClass('glyphicon-remove')
|
301
314
|
button.removeClass('disabled')
|
302
315
|
onEmpty: ->
|
303
|
-
icon.addClass('
|
304
|
-
icon.removeClass('
|
316
|
+
icon.addClass('glyphicon-search')
|
317
|
+
icon.removeClass('glyphicon-remove')
|
305
318
|
button.addClass('disabled')
|
306
319
|
onChange: ->
|
307
320
|
form.submit()
|
308
321
|
)
|
309
322
|
|
310
|
-
|
323
|
+
icon.click ->
|
311
324
|
if field.val().length > 0
|
312
325
|
field.val('')
|
313
326
|
field.trigger('keydown')
|
@@ -40,7 +40,7 @@ module SmartListing
|
|
40
40
|
|
41
41
|
def pagination_per_page_links options = {}
|
42
42
|
container_classes = ["pagination_per_page"]
|
43
|
-
container_classes << "
|
43
|
+
container_classes << "hidden" if empty?
|
44
44
|
|
45
45
|
per_page_sizes = @smart_listing.page_sizes.clone
|
46
46
|
per_page_sizes.push(0) if @smart_listing.unlimited_per_page?
|
@@ -113,15 +113,15 @@ module SmartListing
|
|
113
113
|
|
114
114
|
# Add new item button & placeholder to list
|
115
115
|
def item_new options = {}
|
116
|
-
new_item_action_classes = %{new_item_action}
|
117
|
-
new_item_action_classes << "
|
118
|
-
no_records_classes = %{no_records}
|
119
|
-
no_records_classes << "
|
116
|
+
new_item_action_classes = %w{new_item_action}
|
117
|
+
new_item_action_classes << "hidden" if !empty? && max_count?
|
118
|
+
no_records_classes = %w{no_records}
|
119
|
+
no_records_classes << "hidden" unless empty?
|
120
120
|
new_item_button_classes = []
|
121
|
-
new_item_button_classes << "
|
121
|
+
new_item_button_classes << "hidden" if max_count?
|
122
122
|
|
123
123
|
locals = {
|
124
|
-
:placeholder_classes => %w{new_item_placeholder
|
124
|
+
:placeholder_classes => %w{new_item_placeholder hidden},
|
125
125
|
:new_item_action_classes => new_item_action_classes,
|
126
126
|
:colspan => options.delete(:colspan),
|
127
127
|
:no_items_classes => no_records_classes,
|
@@ -132,7 +132,6 @@ module SmartListing
|
|
132
132
|
}
|
133
133
|
|
134
134
|
@template.render(:partial => 'smart_listing/item_new', :locals => default_locals.merge(locals))
|
135
|
-
nil
|
136
135
|
end
|
137
136
|
|
138
137
|
# Check if smart list is empty
|
@@ -171,6 +170,7 @@ module SmartListing
|
|
171
170
|
data = {}
|
172
171
|
data['max-count'] = @smart_listings[name].max_count if @smart_listings[name].max_count && @smart_listings[name].max_count > 0
|
173
172
|
data['href'] = @smart_listings[name].href if @smart_listings[name].href
|
173
|
+
data['callback_href'] = @smart_listings[name].callback_href if @smart_listings[name].callback_href
|
174
174
|
data.merge!(options[:data]) if options[:data]
|
175
175
|
|
176
176
|
if bare
|
@@ -12,15 +12,15 @@
|
|
12
12
|
new_item_button_text
|
13
13
|
-%>
|
14
14
|
|
15
|
-
<%= content_tag(:tr, '', :class => placeholder_classes
|
16
|
-
<%= content_tag(:tr, :class => new_item_action_classes
|
15
|
+
<%= content_tag(:tr, '', :class => placeholder_classes + %w{info}) %>
|
16
|
+
<%= content_tag(:tr, :class => new_item_action_classes + %w{info}) do %>
|
17
17
|
<%= content_tag(:td, :colspan => colspan) do %>
|
18
|
-
<%= content_tag(:
|
18
|
+
<%= content_tag(:h5, :class => no_items_classes + %w{pull-left}) do %>
|
19
19
|
<%= no_items_text %>
|
20
20
|
<% end %>
|
21
|
-
<%= link_to(new_item_button_url, :remote => true, :class => new_item_button_classes
|
21
|
+
<%= link_to(new_item_button_url, :remote => true, :class => new_item_button_classes + %w{btn pull-right}) do %>
|
22
22
|
<%= content_tag(:i, '', :class => "glyphicon glyphicon-plus") %>
|
23
|
-
<%=
|
23
|
+
<%= new_item_button_text %>
|
24
24
|
<% end %>
|
25
25
|
<% end %>
|
26
26
|
<% end %>
|
data/lib/smart_listing.rb
CHANGED
@@ -28,6 +28,7 @@ module SmartListing
|
|
28
28
|
:sort => true, # allow sorting
|
29
29
|
:paginate => true, # allow pagination
|
30
30
|
:href => nil, # set smart list target url (in case when different than current url)
|
31
|
+
:callback_href => nil, # set smart list callback url (in case when different than current url)
|
31
32
|
:default_sort_attr => nil, # default sort by
|
32
33
|
:memorize_per_page => false,
|
33
34
|
:page_sizes => DEFAULT_PAGE_SIZES, # set available page sizes array
|
@@ -52,6 +53,12 @@ module SmartListing
|
|
52
53
|
|
53
54
|
@count = @collection.size
|
54
55
|
|
56
|
+
# Reset @page if greater than total number of pages
|
57
|
+
no_pages = (@count.to_f / @per_page.to_f).ceil.to_i
|
58
|
+
if @page.to_i > no_pages
|
59
|
+
@page = no_pages
|
60
|
+
end
|
61
|
+
|
55
62
|
if @options[:array]
|
56
63
|
@collection = @collection.sort do |x, y|
|
57
64
|
xval = x
|
@@ -107,6 +114,10 @@ module SmartListing
|
|
107
114
|
@options[:href]
|
108
115
|
end
|
109
116
|
|
117
|
+
def callback_href
|
118
|
+
@options[:callback_href]
|
119
|
+
end
|
120
|
+
|
110
121
|
def page_sizes
|
111
122
|
@options[:page_sizes]
|
112
123
|
end
|
metadata
CHANGED
@@ -1,69 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smart_listing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sology
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.2'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: coffee-rails
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: kaminari
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
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
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: sqlite3
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
description:
|
@@ -73,36 +73,36 @@ executables: []
|
|
73
73
|
extensions: []
|
74
74
|
extra_rdoc_files: []
|
75
75
|
files:
|
76
|
-
-
|
77
|
-
-
|
78
|
-
-
|
79
|
-
- app/
|
80
|
-
- app/
|
81
|
-
- app/
|
82
|
-
- app/
|
76
|
+
- LICENSE
|
77
|
+
- README.md
|
78
|
+
- Rakefile
|
79
|
+
- app/assets/javascripts/smart_listing/application.js
|
80
|
+
- app/assets/javascripts/smart_listing/smart_listing.coffee
|
81
|
+
- app/assets/stylesheets/smart_listing/application.css
|
82
|
+
- app/helpers/smart_listing/application_helper.rb
|
83
|
+
- app/helpers/smart_listing/helper.rb
|
83
84
|
- app/views/smart_listing/_action_custom.html.erb
|
84
|
-
- app/views/smart_listing/_action_inactive.html.erb
|
85
|
-
- app/views/smart_listing/_update_list.js.erb
|
86
|
-
- app/views/smart_listing/_pagination_per_page_link.html.erb
|
87
85
|
- app/views/smart_listing/_action_delete.html.erb
|
86
|
+
- app/views/smart_listing/_action_edit.html.erb
|
87
|
+
- app/views/smart_listing/_action_inactive.html.erb
|
88
88
|
- app/views/smart_listing/_item_new.html.erb
|
89
|
+
- app/views/smart_listing/_pagination_per_page_link.html.erb
|
90
|
+
- app/views/smart_listing/_pagination_per_page_links.html.erb
|
89
91
|
- app/views/smart_listing/_sortable.html.erb
|
90
|
-
- app/views/smart_listing/
|
91
|
-
- app/
|
92
|
-
- app/
|
93
|
-
- app/
|
94
|
-
- app/
|
95
|
-
- app/
|
96
|
-
-
|
92
|
+
- app/views/smart_listing/_update_list.js.erb
|
93
|
+
- app/views/smart_listing/item/_create.js.erb
|
94
|
+
- app/views/smart_listing/item/_destroy.js.erb
|
95
|
+
- app/views/smart_listing/item/_edit.js.erb
|
96
|
+
- app/views/smart_listing/item/_new.js.erb
|
97
|
+
- app/views/smart_listing/item/_remove.js.erb
|
98
|
+
- app/views/smart_listing/item/_update.js.erb
|
97
99
|
- config/locales/en.yml
|
98
|
-
-
|
99
|
-
- lib/smart_listing/engine.rb
|
100
|
-
- lib/smart_listing/version.rb
|
100
|
+
- config/routes.rb
|
101
101
|
- lib/generators/smart_listing/views_generator.rb
|
102
102
|
- lib/smart_listing.rb
|
103
|
-
-
|
104
|
-
-
|
105
|
-
-
|
103
|
+
- lib/smart_listing/engine.rb
|
104
|
+
- lib/smart_listing/version.rb
|
105
|
+
- lib/tasks/smart_list_tasks.rake
|
106
106
|
homepage: https://github.com/Sology/smart_listing
|
107
107
|
licenses:
|
108
108
|
- MIT
|
@@ -113,17 +113,17 @@ require_paths:
|
|
113
113
|
- lib
|
114
114
|
required_ruby_version: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
|
-
- -
|
116
|
+
- - ">="
|
117
117
|
- !ruby/object:Gem::Version
|
118
118
|
version: '0'
|
119
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
120
|
requirements:
|
121
|
-
- -
|
121
|
+
- - ">="
|
122
122
|
- !ruby/object:Gem::Version
|
123
123
|
version: '0'
|
124
124
|
requirements: []
|
125
125
|
rubyforge_project:
|
126
|
-
rubygems_version: 2.0
|
126
|
+
rubygems_version: 2.2.0
|
127
127
|
signing_key:
|
128
128
|
specification_version: 4
|
129
129
|
summary: SmartListing helps creating sortable lists of ActiveRecord collections with
|