joosy 1.0.0.RC2 → 1.0.0.RC3

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -19,7 +19,7 @@ GIT
19
19
  PATH
20
20
  remote: .
21
21
  specs:
22
- joosy (1.0.0.RC1)
22
+ joosy (1.0.0.RC3)
23
23
  coffee-rails
24
24
  haml_coffee_assets
25
25
  i18n-js
@@ -82,7 +82,7 @@ GEM
82
82
  guard-coffeescript (0.5.7)
83
83
  coffee-script (>= 2.2.0)
84
84
  guard (>= 0.8.3)
85
- haml_coffee_assets (0.9.1)
85
+ haml_coffee_assets (0.9.3)
86
86
  execjs (>= 1.2.9)
87
87
  sprockets (>= 2.0.3)
88
88
  tilt (>= 1.3.3)
@@ -164,8 +164,10 @@ class Joosy.Form extends Joosy.Module
164
164
  data = resource.data
165
165
 
166
166
  filler = (data, scope) =>
167
- Object.each data, (key, val) =>
168
- key = @concatFieldName scope, key
167
+ return if data.__joosy_form_filler_lock
168
+ data.__joosy_form_filler_lock = true
169
+ Object.each data, (property, val) =>
170
+ key = @concatFieldName scope, property
169
171
  input = @fields.filter("[name='#{key}']:not(:file),[name='#{key.underscore()}']:not(:file),[name='#{key.camelize(false)}']:not(:file)")
170
172
  if input.length > 0
171
173
  unless input.is ':checkbox'
@@ -177,10 +179,12 @@ class Joosy.Form extends Joosy.Module
177
179
  input.removeAttr 'checked'
178
180
  if Object.isObject val
179
181
  filler val, key
180
- # TODO: decide how to make these cases compatible with Rails
181
- # else if val instanceof Joosy.Resource.REST
182
- # #filler val.data, key
183
- # else if val instanceof Joosy.Resource.RESTCollection
182
+ else if val instanceof Joosy.Resource.REST
183
+ filler val.data, @concatFieldName(scope, "[#{property}_attributes][0]")
184
+ else if val instanceof Joosy.Resource.RESTCollection
185
+ for entity, i in val.data
186
+ filler entity.data, @concatFieldName(scope, "[#{property}_attributes][#{i}]")
187
+ delete data.__joosy_form_filler_lock
184
188
 
185
189
  filler data, resource.__entityName
186
190
 
@@ -10,7 +10,7 @@
10
10
 
11
11
  #
12
12
  # Base class for all of your Joosy Pages.
13
- # @see http://guides.joosy.ws/guides/layouts-pages-and-routing.html
13
+ # @see http://guides.joosy.ws/guides/blog/layouts-pages-and-routing.html
14
14
  #
15
15
  # @example Sample application page
16
16
  # class @RumbaPage extends Joosy.Layout
@@ -69,8 +69,8 @@ class Joosy.Resource.REST extends Joosy.Resource.Generic
69
69
  #
70
70
  # @see Joosy.Resource.REST.collectionPath
71
71
  #
72
- collectionPath: ->
73
- @constructor.collectionPath()
72
+ collectionPath: (options={}) ->
73
+ @constructor.collectionPath options
74
74
 
75
75
  #
76
76
  # Sends the GET query using collectionPath.
@@ -85,10 +85,12 @@ Joosy.Router =
85
85
  # during system startup
86
86
  #
87
87
  __setupRoutes: ->
88
+ $(window).hashchange =>
89
+ unless @__ignoreRequest && location.hash.match(@__ignoreRequest)
90
+ @__respondRoute location.hash
91
+
88
92
  @__prepareRoutes @rawRoutes
89
93
  @__respondRoute location.hash
90
- $(window).hashchange =>
91
- @__respondRoute location.hash unless @__ignoreRequest && location.hash.match(@__ignoreRequest)
92
94
 
93
95
  #
94
96
  # Compiles routes to map object
@@ -1,5 +1,5 @@
1
1
  module Joosy
2
2
  module Rails
3
- VERSION = "1.0.0.RC2"
3
+ VERSION = "1.0.0.RC3"
4
4
  end
5
5
  end
@@ -3,8 +3,8 @@
3
3
  %head
4
4
  %title> <%= file_path %>
5
5
 
6
- javascript:
7
- window.preload = {
6
+ :javascript
7
+ window.joosy = {
8
8
  libraries: #{extract_sources_and_sizes_from_include_tag('<%= file_path %>')}
9
9
  };
10
10
 
@@ -6,14 +6,16 @@ describe "Joosy.Form", ->
6
6
  @nudeForm = "<form id='nude'><input name='test[foo]'/><input name='test[bar]'/><input name='test[bool]' type='checkbox' value='1'/></form>"
7
7
  @putForm = "<form id='put' method='put'><input name='test[camel_baz]'/></form>"
8
8
  @moreForm = "<form id='more' method='put'><input name='test[ololo]'/></form>"
9
- @nestedForm = "<form id='nested'><input name='test[zee][capped][test]'/></form>"
10
- @exactForm = "<form id='nested'><input name='test[EXact][MATCH]'/></form>"
9
+ @nestedForm = "<form id='nested'><input name='test[zee][capped][test]'/><input name='test[items_attributes][0][attr]'/><input name='test[items_attributes][1][attr]'/><input name='test[single_attributes][0][attr]'/></form>"
10
+ @exactForm = "<form id='exact'><input name='test[EXact][MATCH]'/></form>"
11
11
 
12
- @ground.find('#sidebar').after(@nudeForm).after(@putForm).after(@moreForm)
12
+ @ground.find('#sidebar').after(@nudeForm).after(@putForm).after(@moreForm).after(@nestedForm).after(@exactForm)
13
13
 
14
14
  @nudeForm = $('#nude')
15
15
  @putForm = $('#put')
16
16
  @moreForm = $('#more')
17
+ @nestedForm = $('#nested')
18
+ @exactForm = $('#exact')
17
19
 
18
20
  class Test extends Joosy.Resource.REST
19
21
  @entity 'test'
@@ -30,6 +32,8 @@ describe "Joosy.Form", ->
30
32
  test: 'test'
31
33
  EXact:
32
34
  MATCH: 'works'
35
+ items: (new Joosy.Resource.RESTCollection(Test)).load([{attr: 'one'}, {attr: 'two'}])
36
+ single: Test.build(attr: 'sin')
33
37
 
34
38
  afterEach ->
35
39
  @server.restore()
@@ -130,9 +134,17 @@ describe "Joosy.Form", ->
130
134
  expect(@nudeForm.concatFieldName '[resource][key]', '[key1][key2]').toEqual 'resource[key][key1][key2]'
131
135
  expect(@nudeForm.concatFieldName '[][]', '[][]').toEqual '[][][]' # oops
132
136
 
133
- it "should fill nested attributes", ->
137
+ it "should fill nested attributes and resources", ->
134
138
  @nestedForm.fill @resource
135
139
  expect(@nestedForm.fields[0].value).toEqual 'test'
140
+ expect(@nestedForm.fields[1].value).toEqual 'one'
141
+ expect(@nestedForm.fields[2].value).toEqual 'two'
142
+ expect(@nestedForm.fields[3].value).toEqual 'sin'
143
+
144
+ it "should break cross-references", ->
145
+ @resource('single')('trololo', @resource)
146
+ @nestedForm.fill @resource
147
+ # expect(you).toBeAlive(), lol
136
148
 
137
149
  describe "Callbacks", ->
138
150
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: joosy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.RC2
4
+ version: 1.0.0.RC3
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -12,11 +12,11 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-05-30 00:00:00.000000000 Z
15
+ date: 2012-06-09 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rails
19
- requirement: &70270595054760 !ruby/object:Gem::Requirement
19
+ requirement: &70260746932080 !ruby/object:Gem::Requirement
20
20
  none: false
21
21
  requirements:
22
22
  - - ! '>='
@@ -24,10 +24,10 @@ dependencies:
24
24
  version: 3.1.0
25
25
  type: :runtime
26
26
  prerelease: false
27
- version_requirements: *70270595054760
27
+ version_requirements: *70260746932080
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: coffee-rails
30
- requirement: &70270595054340 !ruby/object:Gem::Requirement
30
+ requirement: &70260746931660 !ruby/object:Gem::Requirement
31
31
  none: false
32
32
  requirements:
33
33
  - - ! '>='
@@ -35,10 +35,10 @@ dependencies:
35
35
  version: '0'
36
36
  type: :runtime
37
37
  prerelease: false
38
- version_requirements: *70270595054340
38
+ version_requirements: *70260746931660
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: jquery-rails
41
- requirement: &70270595053880 !ruby/object:Gem::Requirement
41
+ requirement: &70260746931200 !ruby/object:Gem::Requirement
42
42
  none: false
43
43
  requirements:
44
44
  - - ! '>='
@@ -46,10 +46,10 @@ dependencies:
46
46
  version: '0'
47
47
  type: :runtime
48
48
  prerelease: false
49
- version_requirements: *70270595053880
49
+ version_requirements: *70260746931200
50
50
  - !ruby/object:Gem::Dependency
51
51
  name: haml_coffee_assets
52
- requirement: &70270595053460 !ruby/object:Gem::Requirement
52
+ requirement: &70260746930780 !ruby/object:Gem::Requirement
53
53
  none: false
54
54
  requirements:
55
55
  - - ! '>='
@@ -57,10 +57,10 @@ dependencies:
57
57
  version: '0'
58
58
  type: :runtime
59
59
  prerelease: false
60
- version_requirements: *70270595053460
60
+ version_requirements: *70260746930780
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: i18n-js
63
- requirement: &70270595053040 !ruby/object:Gem::Requirement
63
+ requirement: &70260746930360 !ruby/object:Gem::Requirement
64
64
  none: false
65
65
  requirements:
66
66
  - - ! '>='
@@ -68,10 +68,10 @@ dependencies:
68
68
  version: '0'
69
69
  type: :runtime
70
70
  prerelease: false
71
- version_requirements: *70270595053040
71
+ version_requirements: *70260746930360
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: guard
74
- requirement: &70270595052620 !ruby/object:Gem::Requirement
74
+ requirement: &70260746929940 !ruby/object:Gem::Requirement
75
75
  none: false
76
76
  requirements:
77
77
  - - ! '>='
@@ -79,10 +79,10 @@ dependencies:
79
79
  version: '0'
80
80
  type: :development
81
81
  prerelease: false
82
- version_requirements: *70270595052620
82
+ version_requirements: *70260746929940
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: guard-coffeescript
85
- requirement: &70270595052200 !ruby/object:Gem::Requirement
85
+ requirement: &70260746929520 !ruby/object:Gem::Requirement
86
86
  none: false
87
87
  requirements:
88
88
  - - ! '>='
@@ -90,10 +90,10 @@ dependencies:
90
90
  version: '0'
91
91
  type: :development
92
92
  prerelease: false
93
- version_requirements: *70270595052200
93
+ version_requirements: *70260746929520
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: guard-sprockets
96
- requirement: &70270595051780 !ruby/object:Gem::Requirement
96
+ requirement: &70260746929100 !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
99
  - - ! '>='
@@ -101,10 +101,10 @@ dependencies:
101
101
  version: '0'
102
102
  type: :development
103
103
  prerelease: false
104
- version_requirements: *70270595051780
104
+ version_requirements: *70260746929100
105
105
  - !ruby/object:Gem::Dependency
106
106
  name: jasmine
107
- requirement: &70270595051360 !ruby/object:Gem::Requirement
107
+ requirement: &70260746928680 !ruby/object:Gem::Requirement
108
108
  none: false
109
109
  requirements:
110
110
  - - ! '>='
@@ -112,7 +112,7 @@ dependencies:
112
112
  version: '0'
113
113
  type: :development
114
114
  prerelease: false
115
- version_requirements: *70270595051360
115
+ version_requirements: *70260746928680
116
116
  description: A gem wrapper to include Joosy via the asset pipeline.
117
117
  email: boris@roundlake.ru
118
118
  executables: []