modularity-rails 0.19.0 → 0.20.0

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.
@@ -3,6 +3,11 @@
3
3
  #= require modularity/tools/object_tools
4
4
 
5
5
  # Provides persistence services for data models.
6
+ #
7
+ # This class operates against a standard RESTful data API, whole path is given in params.url.
8
+ # In addition to the standard RESTful routes, the data API is expected to support these methods for performance reasons:
9
+ # * DELETE /entries: Delete a whole batch of entries at once. The ids of the entries to delete are given as a JSON hash in the body of the request.
10
+ # *
6
11
  class modularity.PersistenceManager
7
12
 
8
13
  constructor: (params) ->
@@ -16,8 +21,12 @@ class modularity.PersistenceManager
16
21
  # The base url on the server. Expected to be a fully RESTful API.
17
22
  @base_url = params.url
18
23
 
24
+ # Name of the 'id' column for models.
19
25
  @key = params.key or 'id'
20
26
 
27
+ # Name of the model class (e.g. "user").
28
+ @model_name = params.model_name
29
+
21
30
  # For handling parallel requests to the server.
22
31
  @loader = new modularity.AjaxLoader { cache: no }
23
32
 
@@ -93,7 +102,7 @@ class modularity.PersistenceManager
93
102
  load: (key, callback) ->
94
103
 
95
104
  # Try to load from cache.
96
- return callback(snippet) if snippet = @get_cached key
105
+ return callback(entry) if entry = @get_cached key
97
106
 
98
107
  # No data on client at all --> load data from server.
99
108
  @loader.get "#{@base_url}/#{key}", (server_entry) =>
@@ -115,21 +124,21 @@ class modularity.PersistenceManager
115
124
  callback()
116
125
 
117
126
 
118
- # Loads all snippets with the given ids.
127
+ # Loads all entries with the given ids.
119
128
  load_many: (ids, callback) ->
120
129
  missing_ids = []
121
- snippets = []
130
+ entries = []
122
131
  $.each ids, (pos, id) =>
123
- snippet = @get_cached id
124
- if snippet
125
- snippets.push snippet
132
+ entry = @get_cached id
133
+ if entry
134
+ entries.push entry
126
135
  else
127
136
  missing_ids.push id
128
137
 
129
138
  if missing_ids.length == 0
130
- return callback(snippets)
139
+ return callback(entries)
131
140
 
132
- alert "uncached snippets found: #{missing_ids}"
141
+ alert "uncached entries found: #{missing_ids}"
133
142
 
134
143
 
135
144
  # Saves the given object.
@@ -151,17 +160,16 @@ class modularity.PersistenceManager
151
160
  diff_obj = modularity.object_diff @server_data.get(obj[@key]), obj
152
161
  return if modularity.object_length(diff_obj) == 0
153
162
 
154
- # Add key attribute.
155
- diff_obj[@key] = obj[@key]
156
-
157
163
  # Update server_data version.
158
164
  @server_data.add obj
159
165
 
160
166
  # Send to server
167
+ data = {}
168
+ data[@model_name] = diff_obj
161
169
  jQuery.ajax
162
170
  url: @entry_url(obj)
163
171
  type: 'PUT'
164
- data: diff_obj
172
+ data: data
165
173
  success: (server_obj) =>
166
174
  @server_data.add server_obj
167
175
  callback server_obj if callback
@@ -1,3 +1,3 @@
1
1
  module ModularityRails
2
- VERSION = '0.19.0'
2
+ VERSION = '0.20.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: modularity-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.0
4
+ version: 0.20.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: