joosy 0.1.0.RC2 → 0.1.0.RC3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. data/.codoopts +5 -0
  2. data/.gitignore +2 -0
  3. data/Gemfile.lock +4 -2
  4. data/README.md +10 -4
  5. data/app/assets/javascripts/joosy/core/application.js.coffee +3 -1
  6. data/app/assets/javascripts/joosy/core/form.js.coffee +69 -42
  7. data/app/assets/javascripts/joosy/core/helpers/view.js.coffee +30 -0
  8. data/app/assets/javascripts/joosy/core/joosy.js.coffee +125 -66
  9. data/app/assets/javascripts/joosy/core/layout.js.coffee +106 -1
  10. data/app/assets/javascripts/joosy/core/modules/container.js.coffee +41 -0
  11. data/app/assets/javascripts/joosy/core/modules/events.js.coffee +88 -1
  12. data/app/assets/javascripts/joosy/core/modules/filters.js.coffee +24 -0
  13. data/app/assets/javascripts/joosy/core/modules/log.js.coffee +18 -0
  14. data/app/assets/javascripts/joosy/core/modules/module.js.coffee +53 -1
  15. data/app/assets/javascripts/joosy/core/modules/renderer.js.coffee +22 -6
  16. data/app/assets/javascripts/joosy/core/modules/time_manager.js.coffee +21 -0
  17. data/app/assets/javascripts/joosy/core/modules/widgets_manager.js.coffee +26 -0
  18. data/app/assets/javascripts/joosy/core/page.js.coffee +225 -16
  19. data/app/assets/javascripts/joosy/core/preloader.js.coffee +8 -0
  20. data/app/assets/javascripts/joosy/core/resource/collection.js.coffee +52 -15
  21. data/app/assets/javascripts/joosy/core/resource/generic.js.coffee +78 -50
  22. data/app/assets/javascripts/joosy/core/resource/rest.js.coffee +39 -41
  23. data/app/assets/javascripts/joosy/core/resource/rest_collection.js.coffee +36 -27
  24. data/app/assets/javascripts/joosy/core/router.js.coffee +95 -19
  25. data/app/assets/javascripts/joosy/core/widget.js.coffee +42 -1
  26. data/app/assets/javascripts/joosy/preloaders/caching.js.coffee +39 -24
  27. data/app/assets/javascripts/joosy/preloaders/inline.js.coffee +9 -7
  28. data/app/helpers/joosy/sprockets_helper.rb +4 -1
  29. data/lib/joosy/rails/version.rb +1 -1
  30. data/spec/javascripts/joosy/core/application_spec.js.coffee +3 -3
  31. data/spec/javascripts/joosy/core/resource/rest_spec.js.coffee +0 -2
  32. data/spec/javascripts/joosy/core/router_spec.js.coffee +24 -24
  33. data/vendor/assets/javascripts/jquery.form.js +978 -963
  34. data/vendor/assets/javascripts/sugar.js +1 -1
  35. metadata +20 -20
  36. data/app/assets/javascripts/joosy/core/helpers.js.coffee +0 -16
  37. data/vendor/assets/javascripts/base64.js +0 -135
@@ -1,15 +1,15 @@
1
1
  #
2
- # Basic data wrapper with triggering
2
+ # Basic data wrapper with triggering and entity name binding
3
3
  #
4
- # Example:
4
+ # @example Basic usage
5
5
  # class R extends Joosy.Resource.Generic
6
6
  # @entity 'r'
7
- #
7
+ #
8
8
  # @beforeLoad (data) ->
9
9
  # data.real = true
10
- #
10
+ #
11
11
  # r = R.create {r: {foo: {bar: 'baz'}}}
12
- #
12
+ #
13
13
  # r('foo') # {baz: 'baz'}
14
14
  # r('real') # true
15
15
  # r('foo.bar') # baz
@@ -21,68 +21,96 @@ class Joosy.Resource.Generic extends Joosy.Module
21
21
 
22
22
  #
23
23
  # Sets the data source description (which is NOT required)
24
- # This has no use in Generic but is required in any descendant
24
+ # @note This has no use in Generic but is required in any descendant
25
25
  #
26
- # @param [mixed] Source can be any type including lambda
27
- # If lambda is given resource will not expect direct .create() calls
28
- # You'll have to prepare descendant with .at() first
26
+ # @param [mixed] Source can be any type including lambda.
27
+ # If lambda is given resource will not expect direct {Joosy.Resource.Generic.create} calls
28
+ # You'll have to prepare descendant with {Joosy.Resource.Generic.at} first.
29
29
  #
30
- # Example:
30
+ # @example Simple case
31
31
  # Class Y extends Joosy.Resource.Generic
32
32
  # @source 'fluffies'
33
+ #
34
+ # r = Y.create {}
35
+ #
36
+ # @example Case with lambda
33
37
  # class R extends Joosy.Resource.Generic
34
38
  # @source -> (path) "/"+path
35
- #
36
- # r = Y.create{} # will work as expected
39
+ #
37
40
  # r = R.create {} # will raise exception
38
41
  # r = R.at('foo/bar').create {} # will work as expected
39
42
  #
40
43
  @source: (source) -> @__source = source
44
+
45
+ #
46
+ # Creates the proxy of current resource with proper {Joosy.Resource.Generic.source} value
47
+ #
48
+ # @note Should be used together with lambda source (see {Joosy.Resource.Generic.source} for example)
49
+ #
50
+ @at: ->
51
+ if !Object.isFunction @__source
52
+ throw new Error "#{Joosy.Module.__className @}> should be created directly (without `at')"
53
+
54
+ #
55
+ # Class inheritance used to create proxy
56
+ #
57
+ # @private
58
+ #
59
+ class clone extends this
60
+ clone.__source = @__source arguments...
61
+ clone
41
62
 
42
63
  #
43
- # Required to do some magic like skipping the root node
64
+ # Sets the entity text name:
65
+ # required to do some magic like skipping the root node.
44
66
  #
45
67
  # @param [String] name Singular name of resource
46
68
  #
47
69
  @entity: (name) -> @::__entityName = name
48
70
 
49
71
  #
50
- # Sets the collection of current Resource
72
+ # Sets the collection to use
51
73
  #
52
- # @param [Object] klass Class to assign as collection
74
+ # @note By default will try to seek for `EntityNamesCollection`.
75
+ # Will fallback to {Joosy.Resource.Collection}
76
+ #
77
+ # @param [Class] klass Class to assign as collection
53
78
  #
54
79
  @collection: (klass) -> @::__collection = -> klass
55
80
 
56
81
  #
57
- # Default value of resource collection
58
- # Will try to seek for EntityNamesCollection
59
- # Will fallback to Joosy.Resource.Collection
82
+ # Implements {Joosy.Resource.Generic.collection} default behavior.
60
83
  #
61
84
  __collection: ->
62
85
  named = @__entityName.camelize().pluralize() + 'Collection'
63
86
  if window[named] then window[named] else Joosy.Resource.Collection
64
87
 
65
88
  #
66
- # Allows to modify data before it gets stored
89
+ # Allows to modify data before it gets stored.
90
+ # You can define several beforeLoad filters that will be chained.
67
91
  #
68
92
  # @param [Function] action `(Object) -> Object` to call
69
93
  #
70
- @beforeLoad: (action) -> @::__beforeLoad = action
94
+ @beforeLoad: (action) ->
95
+ unless @::hasOwnProperty '__beforeLoads'
96
+ @::__beforeLoads = [].concat @.__super__.__beforeLoads || []
97
+ @::__beforeLoads.push action
71
98
 
72
99
  #
73
- # Dynamically creates collection of inline resources
74
- # Inline resource share the instance with direct data and therefore can be used
75
- # to better handle inline changes
100
+ # Dynamically creates collection of inline resources.
101
+ #
102
+ # Inline resources share the instance with direct data and therefore can be used
103
+ # to handle inline changes with triggers and all that resources stuff
76
104
  #
77
- # Example:
105
+ # @example Basic usage
78
106
  # class Zombie extends Joosy.Resource.Generic
79
- # @entity 'a'
107
+ # @entity 'zombie'
80
108
  # class Puppy extends Joosy.Resource.Generic
81
- # @entity 'b'
82
- # @maps 'zombies'
83
- #
109
+ # @entity 'puppy'
110
+ # @map 'zombies'
111
+ #
84
112
  # p = Puppy.create {zombies: [{foo: 'bar'}]}
85
- #
113
+ #
86
114
  # p('zombies') # Direct access: [{foo: 'bar'}]
87
115
  # p.zombies # Wrapped Collection of Zombie instances
88
116
  # p.zombies.at(0)('foo') # bar
@@ -103,18 +131,6 @@ class Joosy.Resource.Generic extends Joosy.Module
103
131
  @[name].reset data[name]
104
132
  data
105
133
 
106
- #
107
- # Creates the descnendant of current resource with proper source
108
- # Should be used together with lambda source (see @source for example)
109
- #
110
- @at: ->
111
- if !Object.isFunction @__source
112
- throw new Error "#{Joosy.Module.__className @}> should be created directly (without `at')"
113
-
114
- class clone extends this
115
- clone.__source = @__source arguments...
116
- clone
117
-
118
134
  #
119
135
  # Wraps instance of resource inside shim-function allowing to track
120
136
  # data changes. See class example
@@ -138,12 +154,24 @@ class Joosy.Resource.Generic extends Joosy.Module
138
154
  shim
139
155
 
140
156
  #
141
- # Should NOT be called directly, use .create() instead
157
+ # Should NOT be called directly, use {::create} instead
142
158
  #
159
+ # @private
143
160
  # @param [Object] data Data to store
144
161
  #
145
162
  constructor: (data) ->
163
+ @__fillData data, false
164
+
165
+ #
166
+ # Set the resource data manually
167
+ #
168
+ # @param [Object] data Data to store
169
+ #
170
+ # @return [Joosy.Resource.Generic] Returns self
171
+ #
172
+ reset: (data) ->
146
173
  @__fillData data
174
+ return this
147
175
 
148
176
  #
149
177
  # Getter for wrapped data
@@ -156,7 +184,7 @@ class Joosy.Resource.Generic extends Joosy.Module
156
184
  target[0][target[1]]
157
185
 
158
186
  #
159
- # Setter for wrapped data, triggers 'changed'
187
+ # Setter for wrapped data, triggers `changed` event.
160
188
  #
161
189
  # @param [String] path Attribute name to set. Can contain dots to get inline Objects values
162
190
  # @param [mixed] value Value to set
@@ -168,9 +196,9 @@ class Joosy.Resource.Generic extends Joosy.Module
168
196
  null
169
197
 
170
198
  #
171
- # Locates the actual instance of dotted path from get/set
199
+ # Locates the actual instance of attribute path `foo.bar` from get/set
172
200
  #
173
- # @param [String] path Path to the attribute ('foo.bar')
201
+ # @param [String] path Path to the attribute (`foo.bar`)
174
202
  # @return [Array] Instance of object containing last step of path and keyword for required field
175
203
  #
176
204
  __callTarget: (path) ->
@@ -188,7 +216,7 @@ class Joosy.Resource.Generic extends Joosy.Module
188
216
  [@e, path]
189
217
 
190
218
  #
191
- # Wrapper for .create() magic
219
+ # Wrapper for {Joosy.Resource.Generic.create} magic
192
220
  #
193
221
  __call: (path, value) ->
194
222
  if arguments.length > 1
@@ -212,15 +240,15 @@ class Joosy.Resource.Generic extends Joosy.Module
212
240
  #
213
241
  # Prepares raw data: cuts the root node if it exists, runs before filters
214
242
  #
215
- # @param [Object] data Raw data to prepare
216
- # @return [Object]
243
+ # @param [Hash] data Raw data to prepare
244
+ # @return [Hash]
217
245
  #
218
246
  __prepareData: (data) ->
219
247
  if Object.isObject(data) && Object.keys(data).length == 1 && @__entityName
220
248
  name = @__entityName.camelize(false)
221
249
  data = data[name] if data[name]
222
250
 
223
- if @__beforeLoad?
224
- data = @__beforeLoad data
251
+ if @__beforeLoads?
252
+ data = bl.call(this, data) for bl in @__beforeLoads
225
253
 
226
254
  data
@@ -1,20 +1,20 @@
1
1
  #= require ./rest_collection
2
2
 
3
3
  #
4
- # Resource with the HTTP REST as the backend
4
+ # Resource with the HTTP REST as the backend.
5
5
  #
6
- # Example:
6
+ # @example Basic usage
7
7
  # class Rocket extends Joosy.Resource.REST
8
8
  # @entity 'rocket'
9
- #
9
+ #
10
10
  # r = Rocket.find {speed: 'fast'} # queries /rockets/?speed=fast to get RESTCollection
11
11
  # r = Rocket.find 1 # queries /rockets/1 to get Rocket instance
12
- #
12
+ #
13
13
  # class Engine extends Joosy.Resource.REST
14
14
  # @entity 'engine'
15
15
  # @source ->
16
16
  # (rocket) "/rockets/#{rocket 'id'}/engines"
17
- #
17
+ #
18
18
  # e = Engine.at(r).find {oil: true} # queries /rockets/1/engies?oil=true
19
19
  #
20
20
  class Joosy.Resource.REST extends Joosy.Resource.Generic
@@ -24,31 +24,28 @@ class Joosy.Resource.REST extends Joosy.Resource.Generic
24
24
  #
25
25
  __primaryKey: 'id'
26
26
 
27
-
28
27
  #
29
- # Default value of resource collection
30
- # Will try to seek for EntityNamesCollection
31
- # Will fallback to Joosy.Resource.RESTCollection
28
+ # Implements `@collection` default behavior.
29
+ # Changes the default fallback to Joosy.Resource.RESTCollection.
32
30
  #
33
31
  __collection: ->
34
32
  named = @__entityName.camelize().pluralize() + 'Collection'
35
33
  if window[named] then window[named] else Joosy.Resource.RESTCollection
36
34
 
37
35
  #
38
- # Sets the field containing primary key
36
+ # Sets the field containing primary key.
39
37
  #
40
- # It has no direct use inside the REST resource itself and can be omited
41
- # That's said: REST resource can work without primary at all. It's here
42
- # just to improve end-users experience for cases when primary exists.
38
+ # @note It has no direct use inside the REST resource itself and can be omited.
39
+ # But it usually should not since we have plans on adding some kind of Identity Map to Joosy.
43
40
  #
44
41
  # @param [String] primary Name of the field
45
42
  #
46
43
  @primary: (primary) -> @::__primaryKey = primary
47
44
 
48
45
  #
49
- # Should NOT be called directly, use .create() instead
46
+ # Should NOT be called directly, use {Joosy.Resource.Generic.create} instead
50
47
  #
51
- # @param [Integer|String|Object] description ID of entity or full data to store
48
+ # @param [Integer, String, Object] description ID of entity or full data to store
52
49
  #
53
50
  constructor: (description={}) ->
54
51
  if @constructor.__isId description
@@ -58,18 +55,18 @@ class Joosy.Resource.REST extends Joosy.Resource.Generic
58
55
  @id = @e[@__primaryKey]
59
56
 
60
57
  #
61
- # Queries for REST data and creates resources instances
58
+ # Queries for REST data and creates resources instances.
62
59
  #
63
- # Returns single entity if integer or string given
64
- # Returns collection if no value or Object (with parameters) given
60
+ # Returns single entity if integer or string given.
61
+ # Returns collection if no value or Object (with parameters) given.
65
62
  #
66
- # If first parameter is a Function it's considered as a result callback
67
- # In this case parameters will be considered equal to {}
63
+ # If first parameter is a Function it's considered as a result callback,
64
+ # in this case parameters will be considered equal to `{ }`
68
65
  #
69
- # Example:
66
+ # @example Different find
70
67
  # class Rocket extends Joosy.Resource.REST
71
68
  # @entity 'rocket'
72
- #
69
+ #
73
70
  # Rocket.find 1
74
71
  # Rocket.find {type: 'nuclear'}, (data) -> data
75
72
  # Rocket.find (data) -> data
@@ -77,11 +74,11 @@ class Joosy.Resource.REST extends Joosy.Resource.Generic
77
74
  # success: (data) -> data)
78
75
  # cache: true
79
76
  #
80
- # @param [Integer|String|Object] description ID of entity or full data to store
81
- # @param [Function|Object] options AJAX options.
82
- # Will be considered as a success callback if function given
77
+ # @param [Integer, String, Object] description ID of entity or full data to store
78
+ # @param [Hash, Function] options AJAX options.
79
+ # Will be considered as a success callback if function is given.
83
80
  #
84
- # @return [Joosy.Resource.REST|Joosy.Resource.RESTCollection]
81
+ # @return [Joosy.Resource.REST, Joosy.Resource.RESTCollection]
85
82
  #
86
83
  @find: (description, options) ->
87
84
  if Object.isFunction options
@@ -102,8 +99,8 @@ class Joosy.Resource.REST extends Joosy.Resource.Generic
102
99
  #
103
100
  # Queries the resource url and reloads the data from server
104
101
  #
105
- # @param [Function|Object] options AJAX options.
106
- # Will be considered as a success callback if function given
102
+ # @param [Hash, Function] options AJAX options.
103
+ # Will be considered as a success callback if function is given.
107
104
  # @return [Joosy.Resource.REST]
108
105
  #
109
106
  fetch: (options) ->
@@ -124,8 +121,8 @@ class Joosy.Resource.REST extends Joosy.Resource.Generic
124
121
  #
125
122
  # Destroys the resource by DELETE query
126
123
  #
127
- # @param [Function|Object] options AJAX options.
128
- # Will be considered as a success callback if function given
124
+ # @param [Hash, Function] options AJAX options.
125
+ # Will be considered as a success callback if function is given.
129
126
  # @return [Joosy.Resource.REST]
130
127
  #
131
128
  destroy: (options) ->
@@ -140,11 +137,11 @@ class Joosy.Resource.REST extends Joosy.Resource.Generic
140
137
  this
141
138
 
142
139
  #
143
- # Requests the REST member URL with POST or any method given in options.type
140
+ # Requests the REST member URL with POST or any method given in options.type.
144
141
  #
145
- # @param [String] ending Member url (like 'foo' or 'foo/bar')
146
- # @param [Function|Object] options AJAX options.
147
- # Will be considered as a success callback if function given
142
+ # @param [String] ending Member url (like 'foo' or 'foo/bar')
143
+ # @param [Hash, Function] options AJAX options.
144
+ # Will be considered as a success callback if function is given.
148
145
  #
149
146
  request: (ending, options) ->
150
147
  if Object.isFunction options
@@ -163,18 +160,18 @@ class Joosy.Resource.REST extends Joosy.Resource.Generic
163
160
  #
164
161
  # Checks if given description can be considered as ID
165
162
  #
166
- # @param [Integer|String|Object] something Value to test
163
+ # @param [Integer, String, Object] something Value to test
167
164
  # @return [Boolean]
168
165
  #
169
166
  @__isId: (something) ->
170
167
  Object.isNumber(something) || Object.isString(something)
171
168
 
172
169
  #
173
- # jQuery AJAX wrapper
170
+ # jQuery AJAX wrapper.
174
171
  #
175
172
  # @param [String] method HTTP Method (GET/POST/PUT/DELETE)
176
173
  # @param [String] url URL to query
177
- # @param [Object] options AJAX options to pass with request
174
+ # @param [Hash] options AJAX options to pass with request
178
175
  # @param [Function] callback XHR callback
179
176
  #
180
177
  @__ajax: (method, url, options={}, callback) ->
@@ -185,11 +182,12 @@ class Joosy.Resource.REST extends Joosy.Resource.Generic
185
182
  dataType: 'json'
186
183
 
187
184
  #
188
- # Builds URL for current resource location
185
+ # Builds URL for current resource location.
186
+ #
187
+ # @param [Hash] options Handling options
189
188
  #
190
- # @param [Object] options Handling options
191
- # extension: string to add to resource base url
192
- # params: GET-params to add to resulting url
189
+ # @option options [String] extension String to add to resource base url
190
+ # @option options [Hash] params GET-params to add to resulting url
193
191
  #
194
192
  @__buildSource: (options={}) ->
195
193
  unless @hasOwnProperty '__source'
@@ -1,18 +1,18 @@
1
1
  #
2
- # Collection of Resources with REST-fetching capabilities
2
+ # Collection of Resources with REST-fetching capabilities.
3
3
  #
4
- # Generally you should not use RESTCollection directly. It will be
5
- # automatically created by Joosy.Resource.REST#find.
4
+ # @note Generally you should not use RESTCollection directly. It will be
5
+ # automatically created by Joosy.Resource.REST#find.
6
6
  #
7
- # Example:
7
+ # @example Basic samples
8
8
  # class R extends Joosy.Resource.REST
9
9
  # @entity 'r'
10
- #
10
+ #
11
11
  # collection = new Joosy.Resource.RESTCollection(R, {color: 'green'})
12
- #
12
+ #
13
13
  # collection.fetch()
14
14
  # collection.page 2
15
- #
15
+ #
16
16
  # collection.params = {color: 'red', sort: 'date'}
17
17
  # collection.fetch()
18
18
  #
@@ -21,22 +21,27 @@ class Joosy.Resource.RESTCollection extends Joosy.Resource.Collection
21
21
  @include Joosy.Modules.Events
22
22
 
23
23
  #
24
- # Hash containing the cache for pages of raw data
25
- # Keys are pages numbers, values are stored AJAX response
24
+ # Hash containing the cache for pages of raw data.
25
+ # Keys are pages numbers, values are stored AJAX response.
26
26
  #
27
27
  pages: Object.extended()
28
28
 
29
29
  #
30
30
  # @param [Class] model Resource class this collection will handle
31
- # @param [Object] params Additional GET-parameters to supply when fetching
31
+ # @param [Hash] params Additional parameters that will be added to all REST requests.
32
32
  #
33
- constructor: (@model, params={}) ->
33
+ constructor: (model, params={}) ->
34
+ super model
34
35
  @params = Object.extended params
35
36
 
36
37
  #
37
- # Clears the storage and attempts to import given JSON
38
+ # Clears the storage and attempts to import given array
38
39
  #
39
- # @param [Object] entities Entities to import
40
+ # @param [Array, Hash] entities Array of entities to import.
41
+ # If hash was given will seek for moodel name camelized and pluralized.
42
+ # @param [Boolean] notify Indicates whether to trigger 'changed' event
43
+ #
44
+ # @return [Joosy.Resource.RESTCollection] Returns self.
40
45
  #
41
46
  reset: (entities, notify=true) ->
42
47
  super entities, false
@@ -45,10 +50,12 @@ class Joosy.Resource.RESTCollection extends Joosy.Resource.Collection
45
50
  this
46
51
 
47
52
  #
48
- # Clears the storage and gets new data from server
53
+ # Clears the storage and gets new data from server.
54
+ #
55
+ # @param [Hash, Function] options AJAX options.
56
+ # Will be considered as a success callback if function is given.
49
57
  #
50
- # @param [Function|Object] options AJAX options.
51
- # Will be considered as a success callback if function given
58
+ # @return [Joosy.Resource.RESTCollection] Returns self.
52
59
  #
53
60
  fetch: (options) ->
54
61
  if Object.isFunction options
@@ -64,11 +71,13 @@ class Joosy.Resource.RESTCollection extends Joosy.Resource.Collection
64
71
  this
65
72
 
66
73
  #
67
- # Returns the subset for requested page. Requests with &page=x if not found localy.
74
+ # Returns the subset for requested page: requests with &page=x.
75
+ #
76
+ # @param [Integer] number Index of page
77
+ # @param [Hash, Function] options AJAX options.
78
+ # Will be considered as a success callback if function is given.
68
79
  #
69
- # @param [Integer] number Index of page
70
- # @param [Function|Object] options AJAX options.
71
- # Will be considered as a success callback if function given
80
+ # @return [Joosy.Resource.RESTCollection] Returns self.
72
81
  #
73
82
  page: (number, options) ->
74
83
  if Object.isFunction options
@@ -84,11 +93,11 @@ class Joosy.Resource.RESTCollection extends Joosy.Resource.Collection
84
93
  this
85
94
 
86
95
  #
87
- # Requests the REST collection URL with POST or any method given in options.type
96
+ # Requests the REST collection URL with POST or any method given in options.type.
88
97
  #
89
- # @param [String] ending Collection url (like 'foo' or 'foo/bar')
90
- # @param [Function|Object] options AJAX options.
91
- # Will be considered as a success callback if function given
98
+ # @param [String] ending Collection url (like 'foo' or 'foo/bar')
99
+ # @param [Hash, Function] options AJAX options.
100
+ # Will be considered as a success callback if function is given.
92
101
  #
93
102
  request: (ending, options) ->
94
103
  if Object.isFunction options
@@ -105,10 +114,10 @@ class Joosy.Resource.RESTCollection extends Joosy.Resource.Collection
105
114
  @model.__ajax type, @model.__buildSource(extension: ending), options, callback
106
115
 
107
116
  #
108
- # Does AJAX request
117
+ # Internal AJAX request implementation.
109
118
  #
110
- # @param [Object] urlOptions GET-params for request
111
- # @param [Object] ajaxOptions AJAX options to pass with request
119
+ # @param [Hash] urlOptions GET-params for request
120
+ # @param [Hash] ajaxOptions AJAX options to pass with request
112
121
  # @param [Function] callback
113
122
  #
114
123
  __fetch: (urlOptions, ajaxOptions, callback) ->