rails_backbone_generators 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/generators/backbone/selector/USAGE +11 -0
- data/lib/generators/backbone/selector/selector_generator.rb +90 -0
- data/lib/generators/backbone/selector/templates/collection.js.coffee +3 -0
- data/lib/generators/backbone/selector/templates/collection_spec.js.coffee +4 -0
- data/lib/generators/backbone/selector/templates/list.jst.eco +2 -0
- data/lib/generators/backbone/selector/templates/list_view.js.coffee +32 -0
- data/lib/generators/backbone/selector/templates/list_view_spec.js.coffee +5 -0
- data/lib/generators/backbone/selector/templates/model.js.coffee +1 -0
- data/lib/generators/backbone/selector/templates/model_spec.js.coffee +4 -0
- data/lib/generators/backbone/selector/templates/receiver_model.js.coffee +16 -0
- data/lib/generators/backbone/selector/templates/router.js.coffee +11 -0
- data/lib/generators/backbone/selector/templates/row.jst.eco +3 -0
- data/lib/generators/backbone/selector/templates/row_view.js.coffee +23 -0
- data/lib/generators/backbone/selector/templates/row_view_spec.js.coffee +4 -0
- data/lib/generators/backbone/selector/templates/template.jst.eco +7 -0
- data/lib/generators/backbone/selector/templates/view.js.coffee +19 -0
- data/lib/generators/backbone/view/templates/view.js.coffee +1 -0
- data/lib/rails_backbone_generators.rb +1 -1
- metadata +28 -7
- checksums.yaml +0 -7
@@ -0,0 +1,11 @@
|
|
1
|
+
Description:
|
2
|
+
Create a CoffeeScript Backbone Selector with templates
|
3
|
+
|
4
|
+
Example:
|
5
|
+
|
6
|
+
In this example, you can select projects to add and remove from users and the relationship will be called project users
|
7
|
+
|
8
|
+
rails generate backbone:selector <relationship> <receiver> <emitter>
|
9
|
+
rails generate backbone:selector project_users user projects
|
10
|
+
|
11
|
+
|
@@ -0,0 +1,90 @@
|
|
1
|
+
module Backbone
|
2
|
+
class SelectorGenerator < Rails::Generators::NamedBase
|
3
|
+
argument :receiver, :type => :string
|
4
|
+
argument :emittor, :type => :string
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
|
7
|
+
def copy_collection_files
|
8
|
+
template 'collection.js.coffee', "app/assets/javascripts/collections/#{plural_file_name}.js.coffee"
|
9
|
+
end
|
10
|
+
|
11
|
+
def copy_list_view_files
|
12
|
+
template 'list_view.js.coffee', "app/assets/javascripts/views/#{plural_file_name}_selector_list_view.js.coffee"
|
13
|
+
template 'list.jst.eco', "app/assets/javascripts/templates/#{plural_file_name}_selector_list.jst.eco"
|
14
|
+
end
|
15
|
+
|
16
|
+
def copy_model_files
|
17
|
+
template 'receiver_model.js.coffee', "app/assets/javascripts/models/#{singular_receiver_file_name}.js.coffee"
|
18
|
+
template 'model.js.coffee', "app/assets/javascripts/models/#{singular_file_name}.js.coffee"
|
19
|
+
end
|
20
|
+
|
21
|
+
def router
|
22
|
+
template 'router.js.coffee', "app/assets/javascripts/routers/#{plural_file_name}_selector_router.js.coffee"
|
23
|
+
end
|
24
|
+
|
25
|
+
def copy_row_view_files
|
26
|
+
template 'row_view.js.coffee', "app/assets/javascripts/views/#{singular_file_name}_selector_row_view.js.coffee"
|
27
|
+
template 'row.jst.eco', "app/assets/javascripts/templates/#{singular_file_name}_selector_row.jst.eco"
|
28
|
+
end
|
29
|
+
|
30
|
+
def copy_view
|
31
|
+
template 'view.js.coffee', "app/assets/javascripts/views/#{plural_file_name}_selector_view.js.coffee"
|
32
|
+
template 'template.jst.eco', "app/assets/javascripts/templates/#{plural_file_name}_selector.jst.eco"
|
33
|
+
end
|
34
|
+
|
35
|
+
protected
|
36
|
+
|
37
|
+
def emittor_file_name
|
38
|
+
@emittor_file_name ||= parse_file_name emittor
|
39
|
+
end
|
40
|
+
|
41
|
+
def human_name
|
42
|
+
plural_file_name.humanize.titleize
|
43
|
+
end
|
44
|
+
|
45
|
+
def plural_class_name
|
46
|
+
@plural_class_name ||= class_name.pluralize
|
47
|
+
end
|
48
|
+
|
49
|
+
def plural_receiver_file_name
|
50
|
+
@plural_receiver_file_name ||= singular_receiver_file_name.pluralize
|
51
|
+
end
|
52
|
+
|
53
|
+
def plural_emittor_file_name
|
54
|
+
@plural_emittor_file_name ||= singular_emittor_file_name.pluralize
|
55
|
+
end
|
56
|
+
|
57
|
+
def singular_class_name
|
58
|
+
@singular_class_name ||= class_name.singularize
|
59
|
+
end
|
60
|
+
|
61
|
+
def singular_emittor_class_name
|
62
|
+
@singular_emittor_class_name ||= emittor_file_name.classify.singularize
|
63
|
+
end
|
64
|
+
|
65
|
+
def singular_file_name
|
66
|
+
@singular_file_name ||= file_name.singularize
|
67
|
+
end
|
68
|
+
|
69
|
+
def singular_receiver_class_name
|
70
|
+
@singular_receiver_class_name ||= receiver_file_name.classify.singularize
|
71
|
+
end
|
72
|
+
|
73
|
+
def singular_emittor_file_name
|
74
|
+
@singular_emittor_file_name ||= emittor_file_name.singularize
|
75
|
+
end
|
76
|
+
|
77
|
+
def singular_receiver_file_name
|
78
|
+
@singular_receiver_file_name ||= receiver_file_name.singularize
|
79
|
+
end
|
80
|
+
|
81
|
+
def receiver_file_name
|
82
|
+
@receiver_file_name ||= parse_file_name receiver
|
83
|
+
end
|
84
|
+
|
85
|
+
def parse_file_name(name)
|
86
|
+
class_path = name.include?('/') ? name.split('/') : name.split('::')
|
87
|
+
class_path.last.underscore
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
class window.<%= plural_class_name %>SelectorListView extends Backbone.View
|
2
|
+
template: JST['templates/<%= plural_file_name %>_selector_list']
|
3
|
+
|
4
|
+
initialize: =>
|
5
|
+
@views = []
|
6
|
+
@listenTo @collection, 'add', @add_one
|
7
|
+
@listenTo @collection, 'sync error request reset', @render
|
8
|
+
|
9
|
+
context: =>
|
10
|
+
loading: @collection.loading
|
11
|
+
|
12
|
+
render: =>
|
13
|
+
@$el.html @template @context()
|
14
|
+
@remove_views()
|
15
|
+
@collection.each @add_one
|
16
|
+
this
|
17
|
+
|
18
|
+
remove: =>
|
19
|
+
@remove_views()
|
20
|
+
super
|
21
|
+
|
22
|
+
# Instance Methods
|
23
|
+
add_one: (model) =>
|
24
|
+
view = new <%= singular_class_name %>SelectorRowView model: model
|
25
|
+
@$('ul').append view.render().$el
|
26
|
+
@views.push view
|
27
|
+
|
28
|
+
remove_views: =>
|
29
|
+
_.each @views, (view) =>
|
30
|
+
view.remove()
|
31
|
+
|
32
|
+
@views = []
|
@@ -0,0 +1 @@
|
|
1
|
+
class window.<%= singular_class_name %> extends Backbone.Model
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class window.<%= singular_receiver_class_name %> extends Backbone.Model
|
2
|
+
urlRoot: '/api/v2/<%= plural_receiver_file_name %>'
|
3
|
+
initialize: =>
|
4
|
+
@available_<%= plural_file_name %> = new <%= plural_class_name %> @get 'available_<%= plural_file_name %>'
|
5
|
+
@on 'change:available_<%= plural_file_name %>', => @available_<%= plural_file_name %>.set @get 'available_<%= plural_file_name %>'
|
6
|
+
|
7
|
+
@<%= plural_file_name %> = new <%= plural_class_name %> @get '<%= plural_file_name %>'
|
8
|
+
@on 'change:<%= plural_file_name %>', => @<%= plural_file_name %>.set @get '<%= plural_file_name %>'
|
9
|
+
|
10
|
+
@listenTo @available_<%= plural_file_name %>, 'destroy', (model) =>
|
11
|
+
@<%= plural_file_name %>.create model.clone()
|
12
|
+
|
13
|
+
@listenTo @<%= plural_file_name %>, 'destroy', (model) =>
|
14
|
+
model.unset 'id'
|
15
|
+
@available_<%= plural_file_name %>.add model.clone()
|
16
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class <%= class_name %>SelectorRouter extends Backbone.Router
|
2
|
+
routes:
|
3
|
+
'<%= plural_receiver_file_name %>/:<%= singular_receiver_file_name %>_id/<%= plural_emittor_file_name %>': '<%= singular_receiver_file_name %>_<%= plural_emittor_file_name %>'
|
4
|
+
|
5
|
+
<%= singular_receiver_file_name %>_<%= plural_emittor_file_name %>: (<%= singular_receiver_file_name %>_id) =>
|
6
|
+
model = new <%= singular_receiver_class_name %> id: <%= singular_receiver_file_name %>_id
|
7
|
+
model.fetch()
|
8
|
+
view = new <%= plural_class_name %>SelectorView model: model
|
9
|
+
$('.main-content').html view.render().$el
|
10
|
+
|
11
|
+
new <%= class_name %>SelectorRouter
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class window.<%= singular_class_name %>SelectorRowView extends Backbone.View
|
2
|
+
template: JST['templates/<%= singular_file_name %>_selector_row']
|
3
|
+
tagName: 'li'
|
4
|
+
|
5
|
+
initialize: =>
|
6
|
+
@listenTo @model, 'remove', @remove
|
7
|
+
@listenTo @model, 'change', @render
|
8
|
+
|
9
|
+
context: =>
|
10
|
+
model: @model.toJSON()
|
11
|
+
|
12
|
+
render: =>
|
13
|
+
@$el.html @template @context()
|
14
|
+
this
|
15
|
+
|
16
|
+
events: =>
|
17
|
+
'click': 'click'
|
18
|
+
|
19
|
+
click: ($event) =>
|
20
|
+
$event.preventDefault()
|
21
|
+
$event.stopPropagation()
|
22
|
+
|
23
|
+
@model.destroy()
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class window.<%= plural_class_name %>SelectorView extends Backbone.View
|
2
|
+
template: JST['templates/<%= plural_file_name %>_selector']
|
3
|
+
|
4
|
+
context: =>
|
5
|
+
{}
|
6
|
+
|
7
|
+
render: =>
|
8
|
+
@available_view?.remove()
|
9
|
+
@existing_view?.remove()
|
10
|
+
|
11
|
+
@$el.html @template @context()
|
12
|
+
|
13
|
+
@available_view = new <%= plural_class_name %>SelectorListView collection: @model.available_<%= plural_file_name %>
|
14
|
+
@$('.available').html @available_view.render().$el
|
15
|
+
|
16
|
+
@existing_view = new <%= plural_class_name %>SelectorListView collection: @model.<%= plural_file_name %>
|
17
|
+
@$('.existing').html @existing_view.render().$el
|
18
|
+
|
19
|
+
this
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_backbone_generators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Jade Meskill
|
@@ -9,11 +10,12 @@ authors:
|
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date: 2013-12-
|
13
|
+
date: 2013-12-18 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: bundler
|
16
17
|
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
17
19
|
requirements:
|
18
20
|
- - ~>
|
19
21
|
- !ruby/object:Gem::Version
|
@@ -21,6 +23,7 @@ dependencies:
|
|
21
23
|
type: :development
|
22
24
|
prerelease: false
|
23
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
24
27
|
requirements:
|
25
28
|
- - ~>
|
26
29
|
- !ruby/object:Gem::Version
|
@@ -61,6 +64,22 @@ files:
|
|
61
64
|
- lib/generators/backbone/router/router_generator.rb
|
62
65
|
- lib/generators/backbone/router/templates/router.js.coffee
|
63
66
|
- lib/generators/backbone/router/templates/router_spec.js.coffee
|
67
|
+
- lib/generators/backbone/selector/USAGE
|
68
|
+
- lib/generators/backbone/selector/selector_generator.rb
|
69
|
+
- lib/generators/backbone/selector/templates/collection.js.coffee
|
70
|
+
- lib/generators/backbone/selector/templates/collection_spec.js.coffee
|
71
|
+
- lib/generators/backbone/selector/templates/list.jst.eco
|
72
|
+
- lib/generators/backbone/selector/templates/list_view.js.coffee
|
73
|
+
- lib/generators/backbone/selector/templates/list_view_spec.js.coffee
|
74
|
+
- lib/generators/backbone/selector/templates/model.js.coffee
|
75
|
+
- lib/generators/backbone/selector/templates/model_spec.js.coffee
|
76
|
+
- lib/generators/backbone/selector/templates/receiver_model.js.coffee
|
77
|
+
- lib/generators/backbone/selector/templates/router.js.coffee
|
78
|
+
- lib/generators/backbone/selector/templates/row.jst.eco
|
79
|
+
- lib/generators/backbone/selector/templates/row_view.js.coffee
|
80
|
+
- lib/generators/backbone/selector/templates/row_view_spec.js.coffee
|
81
|
+
- lib/generators/backbone/selector/templates/template.jst.eco
|
82
|
+
- lib/generators/backbone/selector/templates/view.js.coffee
|
64
83
|
- lib/generators/backbone/table_view/USAGE
|
65
84
|
- lib/generators/backbone/table_view/table_view_generator.rb
|
66
85
|
- lib/generators/backbone/table_view/templates/collection.js.coffee
|
@@ -83,26 +102,28 @@ files:
|
|
83
102
|
homepage: https://github.com/integrum/rails_backbone_generators
|
84
103
|
licenses:
|
85
104
|
- MIT
|
86
|
-
metadata: {}
|
87
105
|
post_install_message:
|
88
106
|
rdoc_options: []
|
89
107
|
require_paths:
|
90
108
|
- lib
|
91
109
|
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
none: false
|
92
111
|
requirements:
|
93
|
-
- - '>='
|
112
|
+
- - ! '>='
|
94
113
|
- !ruby/object:Gem::Version
|
95
114
|
version: '0'
|
96
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
97
117
|
requirements:
|
98
|
-
- - '>='
|
118
|
+
- - ! '>='
|
99
119
|
- !ruby/object:Gem::Version
|
100
120
|
version: '0'
|
101
121
|
requirements: []
|
102
122
|
rubyforge_project:
|
103
|
-
rubygems_version:
|
123
|
+
rubygems_version: 1.8.23
|
104
124
|
signing_key:
|
105
|
-
specification_version:
|
125
|
+
specification_version: 3
|
106
126
|
summary: Generators for creating CoffeeScript Backbone Views, Models, Collections
|
107
127
|
and Routers
|
108
128
|
test_files: []
|
129
|
+
has_rdoc:
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 86266e6b41bcefae6e79d9e5164ae3d0400ae28f
|
4
|
-
data.tar.gz: d8055efbdb75c5b706e1d19f8777df8367608fd9
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 53ff6ed2f98a621cc1a029e878582d400a2c4f12946fce2762e637eefedeb1d896fe2c81b58b14865ccbfc04cc46f9d6d7f2397938ce2fb1a581e0f0ed206bcc
|
7
|
-
data.tar.gz: 11d5b2a6cd2460d7d30b6dc535dbb695bcc660e96f3ecd46cc6c67dacfc514fd7bb76b31333ef1ccd6ec8e2c41edd8c2c2f0a4190cad802d9d0204c9b531a630
|