atlas_assets 0.8.7 → 0.8.8
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.
- checksums.yaml +8 -8
- data/Gemfile.lock +1 -1
- data/docs/_posts/2013-10-28-dropdown.md +3 -0
- data/docs/_posts/2014-05-05-select.md +50 -5
- data/lib/assets/javascripts/templates/select.jst.eco +7 -1
- data/lib/assets/javascripts/views/select.coffee +37 -16
- data/lib/atlas_assets/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YTczOWNhNjBhYzQ2Y2UwMTQwMzM0MWQwZWMwOTlkY2E2Nzc5NmU3OA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZGFlMGQ4ODM5NjZhOWE5ZmEwOTIyZjk3M2VhNzBiZWYxMDM3MTNkYg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZjA4Y2RhMzQxY2U3MWUxZGU2YTc1YWQ3MDdlY2YzMGZlNDE2ZDIwZWQ0YTg0
|
10
|
+
ODhmMmU3NzgwZTdkNWYxYzNmNzk3Nzk5ZTk0NGY2NzlhYTNkOTFlMzQ0ZmEz
|
11
|
+
YzhkOGQzZGViMWExMzZlNjI4MTY4NjNkMWFiZjc3YWYxNmJhMjA=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NGRiNmQzMWYwZDhjNTVmYTJkODJhOTgyZDc5NmFlOWNmMGI3ZGNlMmZkNmQ2
|
14
|
+
YmIzODkwNTI0YzA0MjM2ODlkMDg3NDJjYWQwYzE1NTU3NzAxNGQyNzAyOTBi
|
15
|
+
MmYzNzNhYmE1M2ZlN2Q3YWZjNmZlMTRjYzFkMzRlYTc3MDg4YmY=
|
data/Gemfile.lock
CHANGED
@@ -5,6 +5,9 @@ title: "Dropdowns"
|
|
5
5
|
|
6
6
|
Dropdowns
|
7
7
|
======
|
8
|
+
<div class="flash">
|
9
|
+
<div class="flash-item error">This dropdown is deprecated! use <a href="{% post_url 2014-05-05-select %}">Select View</a> instead.</div>
|
10
|
+
</div>
|
8
11
|
|
9
12
|
|
10
13
|
The Dropdown is a site wide BackboneView helper using the [Chosen](http://harvesthq.github.io/chosen/) Javascript library.
|
@@ -51,11 +51,11 @@ To implement a SelectView with a Backbone Collection, you must pass both a colle
|
|
51
51
|
~~~js
|
52
52
|
var select2 = new classes.SelectView({
|
53
53
|
collection: new Backbone.Collection([
|
54
|
-
{
|
55
|
-
{
|
56
|
-
{
|
54
|
+
{first:"Rune", last:"Madsen"},
|
55
|
+
{first:"Steve", last:"Klise"},
|
56
|
+
{first:"Zach", last:"Schwartz"}
|
57
57
|
]),
|
58
|
-
label: "
|
58
|
+
label: "first",
|
59
59
|
})
|
60
60
|
$('#collection-example').html(select2.render().el)
|
61
61
|
|
@@ -65,6 +65,31 @@ select2.on('change', function (model) {
|
|
65
65
|
})
|
66
66
|
~~~
|
67
67
|
|
68
|
+
You can also define a value that is different from the visible label, deactivate sorting of options and define a default option.
|
69
|
+
|
70
|
+
<div id="collection-example-b"></div>
|
71
|
+
|
72
|
+
~~~js
|
73
|
+
var select2b = new classes.SelectView({
|
74
|
+
collection: new Backbone.Collection([
|
75
|
+
{name:"toc", prettyname:"Table of Contents"},
|
76
|
+
{name:"chapter", prettyname:"Chapter"},
|
77
|
+
{name:"sect1", prettyname:"Section1"},
|
78
|
+
]),
|
79
|
+
label: "prettyname",
|
80
|
+
value: "name",
|
81
|
+
sort: false,
|
82
|
+
default: 'chapter'
|
83
|
+
})
|
84
|
+
$('#collection-example-b').html(select2b.render().el)
|
85
|
+
|
86
|
+
// Listen for changes
|
87
|
+
select2b.on('change', function (model) {
|
88
|
+
$('collection-example-b').append(model.get('key'))
|
89
|
+
})
|
90
|
+
~~~
|
91
|
+
|
92
|
+
|
68
93
|
<script>
|
69
94
|
var select2 = new classes.SelectView({
|
70
95
|
collection: new Backbone.Collection([
|
@@ -78,8 +103,28 @@ $('#collection-example').html(select2.render().el)
|
|
78
103
|
|
79
104
|
// Listen for changes
|
80
105
|
select2.on('change', function (model) {
|
81
|
-
|
106
|
+
console.log(model);
|
107
|
+
$('#collection-example').append(model.get('name'))
|
82
108
|
})
|
109
|
+
|
110
|
+
var select2b = new classes.SelectView({
|
111
|
+
collection: new Backbone.Collection([
|
112
|
+
{name:"toc", prettyname:"Table of Contents"},
|
113
|
+
{name:"chapter", prettyname:"Chapter"},
|
114
|
+
{name:"sect1", prettyname:"Section1"},
|
115
|
+
]),
|
116
|
+
label: "prettyname",
|
117
|
+
value: "name",
|
118
|
+
sort: false,
|
119
|
+
default: 'chapter',
|
120
|
+
})
|
121
|
+
$('#collection-example-b').html(select2b.render().el)
|
122
|
+
|
123
|
+
// Listen for changes
|
124
|
+
select2b.on('change', function (model) {
|
125
|
+
$('#collection-example-b').append(model.get('label'))
|
126
|
+
})
|
127
|
+
|
83
128
|
</script>
|
84
129
|
|
85
130
|
## Adding a Model
|
@@ -4,7 +4,13 @@
|
|
4
4
|
<% end %>
|
5
5
|
<select class="dropdown-list" <%= if @multiple: %>multiple<% end %> <%= if @placeholder?: %>data-placeholder='<%= @placeholder %>'<% end %>>
|
6
6
|
<% for model in @models: %>
|
7
|
-
<option
|
7
|
+
<option
|
8
|
+
<% if model.get('selected'): %>selected<% end %>
|
9
|
+
<% if model.get('disabled'): %>disabled<% end %>
|
10
|
+
<% if model.get('value'): %>value="<%= model.get('value') %>"<% end %>
|
11
|
+
>
|
12
|
+
<%= model.get('label') %>
|
13
|
+
</option>
|
8
14
|
<% end %>
|
9
15
|
</select>
|
10
16
|
<% if @helper?: %>
|
@@ -15,20 +15,23 @@
|
|
15
15
|
|
16
16
|
class classes.SelectView extends Backbone.View
|
17
17
|
|
18
|
-
defaults: {label: 'label'}
|
18
|
+
defaults: {label: 'label', value: 'value', sort : true}
|
19
19
|
|
20
20
|
initialize: (options) ->
|
21
21
|
@rendered = false
|
22
22
|
|
23
|
-
@label = if options.label then options.label else
|
24
|
-
@
|
25
|
-
|
23
|
+
@label = if options.label then options.label else @defaults.label
|
24
|
+
@value = if options.value then options.value else false
|
25
|
+
@default= if options.default then options.default else false
|
26
|
+
@sort = if options.sort? then options.sort else @defaults.sort
|
27
|
+
@helper =options.helper if options.helper?
|
28
|
+
|
26
29
|
# The select view needs a collection.
|
27
30
|
if !@collection
|
28
31
|
@collection = @collection_from_values(options.values)
|
29
32
|
else if @collection.length > 0
|
30
33
|
t = @
|
31
|
-
@collection.each (model
|
34
|
+
@collection.each (model) -> t.set_model_attributes(model)
|
32
35
|
|
33
36
|
@template = JST["templates/select"]
|
34
37
|
@listenTo(@collection, 'add', @add_model)
|
@@ -39,23 +42,33 @@ class classes.SelectView extends Backbone.View
|
|
39
42
|
@collection = new Backbone.Collection(_.map(values, (v) ->
|
40
43
|
return {"label": v}
|
41
44
|
))
|
42
|
-
@collection.comparator = "label"
|
43
|
-
@collection.sort()
|
45
|
+
@collection.comparator = "label" if @sort
|
46
|
+
return @collection.sort() if @sort
|
47
|
+
return @collection
|
48
|
+
|
44
49
|
|
45
50
|
add_model: (m) ->
|
46
|
-
@
|
51
|
+
@set_model_attributes(m)
|
47
52
|
select_el = @$el.find('select').first()
|
48
|
-
|
53
|
+
value = "value='" + m.get('value') + "'" if m.get('value')
|
54
|
+
select_el.append("<option #{value}>#{m.get('label')}</option>")
|
49
55
|
|
50
56
|
sort_by_name = (a, b) ->
|
51
57
|
a.innerHTML.toLowerCase().localeCompare(b.innerHTML.toLowerCase())
|
52
58
|
|
53
|
-
options = select_el.children().get()
|
59
|
+
options = select_el.children().get()
|
60
|
+
options = options.sort(sort_by_name) if @sort
|
54
61
|
for opt in options
|
55
62
|
select_el.append(opt)
|
56
63
|
|
57
|
-
|
64
|
+
set_model_attributes: (model) =>
|
58
65
|
model.set('label',model.get(@label))
|
66
|
+
model.set('value',model.get(@value)) if @value
|
67
|
+
if @default and @value and @default is model.get(@value)
|
68
|
+
model.set('selected',true)
|
69
|
+
else if @default and !@value and @default is model.get(@label)
|
70
|
+
model.set('selected',true)
|
71
|
+
else
|
59
72
|
|
60
73
|
bind_select: ->
|
61
74
|
t = @
|
@@ -66,19 +79,27 @@ class classes.SelectView extends Backbone.View
|
|
66
79
|
})
|
67
80
|
|
68
81
|
@select.on('change', (v) ->
|
69
|
-
|
82
|
+
if t.value
|
83
|
+
selected_model = t.collection.find((model) -> model.get(t.value) is v.value)
|
84
|
+
else
|
85
|
+
selected_model = t.collection.find((model) -> model.get(t.label) is v.value)
|
86
|
+
|
70
87
|
t.trigger('change', selected_model)
|
71
88
|
)
|
72
89
|
|
73
90
|
get_value: -> @select.value
|
74
91
|
get_model: ->
|
75
92
|
value = @select.value
|
76
|
-
|
93
|
+
if model.get('value')
|
94
|
+
@collection.find (model) => model.get('value') is value
|
95
|
+
else
|
96
|
+
@collection.find (model) => model.get('label') is value
|
77
97
|
|
78
98
|
set: (value) -> @select.change(value)
|
79
99
|
|
80
100
|
render: =>
|
81
|
-
@collection.comparator = "label"
|
82
|
-
|
101
|
+
@collection.comparator = if @value then "value" else "label"
|
102
|
+
models = if @sort then @collection.sort().models else @collection.models
|
103
|
+
@$el.html(@template({models:models, helper:@helper})).addClass("select-dropdown")
|
83
104
|
@trigger('rendered') if !@rendered
|
84
|
-
|
105
|
+
|
data/lib/atlas_assets/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: atlas_assets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rune Skjoldborg Madsen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: handlebars_assets
|