hyper-model 0.99.6 → 1.0.alpha1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -1
- data/Gemfile.lock +49 -28
- data/hyper-model.gemspec +7 -6
- data/lib/active_record_base.rb +8 -8
- data/lib/hyper-model.rb +6 -4
- data/lib/hyper_model/version.rb +1 -1
- data/lib/hyper_react/input_tags.rb +32 -29
- data/lib/{hyperloop → hyperstack}/model/load.rb +1 -1
- data/lib/reactive_record/active_record/errors.rb +2 -2
- data/lib/reactive_record/active_record/instance_methods.rb +1 -1
- data/lib/reactive_record/active_record/public_columns_hash.rb +3 -3
- data/lib/reactive_record/active_record/reactive_record/base.rb +7 -7
- data/lib/reactive_record/active_record/reactive_record/collection.rb +6 -6
- data/lib/reactive_record/active_record/reactive_record/getters.rb +1 -1
- data/lib/reactive_record/active_record/reactive_record/isomorphic_base.rb +4 -5
- data/lib/reactive_record/active_record/reactive_record/operations.rb +2 -2
- data/lib/reactive_record/active_record/reactive_record/setters.rb +4 -4
- data/lib/reactive_record/active_record/reactive_record/while_loading.rb +119 -115
- data/lib/reactive_record/broadcast.rb +11 -11
- data/lib/reactive_record/permissions.rb +3 -3
- data/lib/reactive_record/pry.rb +1 -1
- data/lib/reactive_record/server_data_cache.rb +2 -2
- metadata +34 -24
- data/CHANGELOG.md +0 -34
- data/DOCS.md +0 -735
- data/LICENSE.txt +0 -21
- data/README.md +0 -51
- data/path_release_steps.md +0 -9
@@ -180,10 +180,10 @@ module ReactiveRecord
|
|
180
180
|
|
181
181
|
def changed?(*args)
|
182
182
|
if args.count == 0
|
183
|
-
|
183
|
+
Hyperstack::Internal::Store::State.get_state(self, "!CHANGED!")
|
184
184
|
!changed_attributes.empty?
|
185
185
|
else
|
186
|
-
|
186
|
+
Hyperstack::Internal::Store::State.get_state(self, args[0])
|
187
187
|
changed_attributes.include? args[0]
|
188
188
|
end
|
189
189
|
end
|
@@ -288,7 +288,7 @@ module ReactiveRecord
|
|
288
288
|
end
|
289
289
|
|
290
290
|
def saving!
|
291
|
-
|
291
|
+
Hyperstack::Internal::Store::State.set_state(self, self, :saving) unless data_loading?
|
292
292
|
@saving = true
|
293
293
|
end
|
294
294
|
|
@@ -306,9 +306,9 @@ module ReactiveRecord
|
|
306
306
|
notify_waiting_for_save
|
307
307
|
return self if save_only
|
308
308
|
if errors.empty?
|
309
|
-
|
309
|
+
Hyperstack::Internal::Store::State.set_state(self, self, :saved)
|
310
310
|
elsif !data_loading?
|
311
|
-
|
311
|
+
Hyperstack::Internal::Store::State.set_state(self, self, :error)
|
312
312
|
end
|
313
313
|
self
|
314
314
|
end
|
@@ -334,7 +334,7 @@ module ReactiveRecord
|
|
334
334
|
end
|
335
335
|
|
336
336
|
def saving?
|
337
|
-
|
337
|
+
Hyperstack::Internal::Store::State.get_state(self, self)
|
338
338
|
@saving
|
339
339
|
end
|
340
340
|
|
@@ -387,7 +387,7 @@ module ReactiveRecord
|
|
387
387
|
@catch_db_requests = true
|
388
388
|
yield
|
389
389
|
rescue DbRequestMade => e
|
390
|
-
|
390
|
+
Hyperstack::Component::IsomorphicHelpers.log "Warning: request for server side data during scope evaluation: #{e.message}", :warning
|
391
391
|
return_val
|
392
392
|
ensure
|
393
393
|
@catch_db_requests = false
|
@@ -132,7 +132,7 @@ To determine this sync_scopes first asks if the record being changed is in the s
|
|
132
132
|
# the broadcast record and the value on the client is out of sync
|
133
133
|
# not running set_pre_sync_related_records will cause sync scopes
|
134
134
|
# to refresh all related scopes
|
135
|
-
|
135
|
+
Hyperstack::Internal::State::Mapper.bulk_update do
|
136
136
|
record = broadcast.record_with_current_values
|
137
137
|
apply_to_all_collections(
|
138
138
|
:set_pre_sync_related_records,
|
@@ -292,7 +292,7 @@ To determine this sync_scopes first asks if the record being changed is in the s
|
|
292
292
|
# end of stuff to move
|
293
293
|
|
294
294
|
def reload_from_db(force = nil)
|
295
|
-
if force ||
|
295
|
+
if force || Hyperstack::Internal::Store::State.observed?(self, :collection)
|
296
296
|
@out_of_date = false
|
297
297
|
ReactiveRecord::Base.load_from_db(nil, *@vector, '*all') if @collection
|
298
298
|
ReactiveRecord::Base.load_from_db(nil, *@vector, '*count')
|
@@ -308,15 +308,15 @@ To determine this sync_scopes first asks if the record being changed is in the s
|
|
308
308
|
@observing = true
|
309
309
|
link_to_parent
|
310
310
|
reload_from_db(true) if @out_of_date
|
311
|
-
|
311
|
+
Hyperstack::Internal::Store::State.get_state(self, :collection)
|
312
312
|
ensure
|
313
313
|
@observing = false
|
314
314
|
end
|
315
315
|
end
|
316
316
|
|
317
317
|
def set_count_state(val)
|
318
|
-
unless ReactiveRecord::WhileLoading.
|
319
|
-
|
318
|
+
unless ReactiveRecord::WhileLoading.observed?
|
319
|
+
Hyperstack::Internal::Store::State.set_state(self, :collection, collection, true)
|
320
320
|
end
|
321
321
|
@count = val
|
322
322
|
end
|
@@ -549,7 +549,7 @@ To determine this sync_scopes first asks if the record being changed is in the s
|
|
549
549
|
end
|
550
550
|
|
551
551
|
def notify_of_change(value = nil)
|
552
|
-
|
552
|
+
Hyperstack::Internal::Store::State.set_state(self, "collection", collection) unless ReactiveRecord::Base.data_loading?
|
553
553
|
value
|
554
554
|
end
|
555
555
|
|
@@ -99,7 +99,7 @@ module ReactiveRecord
|
|
99
99
|
else
|
100
100
|
virtual_fetch_on_server_warning(attribute) if on_opal_server? && changed?
|
101
101
|
yield false, attribute
|
102
|
-
end.tap { |value|
|
102
|
+
end.tap { |value| Hyperstack::Internal::Store::State.get_state(self, attribute) unless data_loading? }
|
103
103
|
end
|
104
104
|
|
105
105
|
def find_association(association, id)
|
@@ -4,7 +4,7 @@ module ReactiveRecord
|
|
4
4
|
|
5
5
|
class Base
|
6
6
|
|
7
|
-
include
|
7
|
+
include Hyperstack::Component::IsomorphicHelpers
|
8
8
|
|
9
9
|
before_first_mount do |context|
|
10
10
|
if RUBY_ENGINE != 'opal'
|
@@ -132,7 +132,7 @@ module ReactiveRecord
|
|
132
132
|
end
|
133
133
|
|
134
134
|
def self.schedule_fetch
|
135
|
-
|
135
|
+
Hyperstack::Internal::Store::State.set_state(WhileLoading, :quiet, false) # moved from while loading module see loading! method
|
136
136
|
return if @fetch_scheduled
|
137
137
|
@current_fetch_id = Time.now
|
138
138
|
@fetch_scheduled = after(0) do
|
@@ -242,7 +242,7 @@ module ReactiveRecord
|
|
242
242
|
end if record.new? || record.changed? || (record == record_being_saved && force)
|
243
243
|
record_index += 1
|
244
244
|
end
|
245
|
-
[models
|
245
|
+
[models, associations, backing_records]
|
246
246
|
end
|
247
247
|
|
248
248
|
def save_or_validate(save, validate, force, &block)
|
@@ -308,7 +308,6 @@ module ReactiveRecord
|
|
308
308
|
backing_records.each { |_id, record| record.saved!(true) rescue nil } if save
|
309
309
|
end
|
310
310
|
rescue Exception => e
|
311
|
-
debugger
|
312
311
|
log("Exception raised while saving - #{e}", :error)
|
313
312
|
yield false, e.message, [] if block
|
314
313
|
promise.resolve({success: false, message: e.message, models: []})
|
@@ -481,7 +480,7 @@ module ReactiveRecord
|
|
481
480
|
saved_models = reactive_records.collect do |reactive_record_id, model|
|
482
481
|
messages = model.errors.messages if validate && !model.valid?
|
483
482
|
all_messages << [model, messages] if save && messages
|
484
|
-
attributes = model.
|
483
|
+
attributes = model.__hyperstack_secure_attributes(acting_user)
|
485
484
|
[reactive_record_id, model.class.name, attributes, messages]
|
486
485
|
end
|
487
486
|
|
@@ -7,7 +7,7 @@ module ReactiveRecord
|
|
7
7
|
|
8
8
|
module Operations
|
9
9
|
# to make debug easier we convert all the object_id strings to be hex representation
|
10
|
-
class Base <
|
10
|
+
class Base < Hyperstack::ControllerOp
|
11
11
|
param :acting_user, nils: true
|
12
12
|
|
13
13
|
FORMAT = '0x%x'
|
@@ -66,7 +66,7 @@ module ReactiveRecord
|
|
66
66
|
end
|
67
67
|
failed do |e|
|
68
68
|
# AccessViolations are already sent to on_error
|
69
|
-
|
69
|
+
Hyperstack.on_error(e, :fetch_error, params.to_h) unless e.is_a? Hyperstack::AccessViolation
|
70
70
|
raise e
|
71
71
|
end
|
72
72
|
end
|
@@ -92,7 +92,7 @@ module ReactiveRecord
|
|
92
92
|
@attributes[attr] = new_value
|
93
93
|
if !data_loading? ||
|
94
94
|
(on_opal_client? && had_key && current_value.loaded? && current_value != new_value)
|
95
|
-
|
95
|
+
Hyperstack::Internal::Store::State.set_state(self, attr, new_value, data_loading?)
|
96
96
|
end
|
97
97
|
end
|
98
98
|
end
|
@@ -101,7 +101,7 @@ module ReactiveRecord
|
|
101
101
|
def set_change_status_and_notify_only(attr, changed)
|
102
102
|
return if @virgin
|
103
103
|
change_status_and_notify_helper(attr, changed) do
|
104
|
-
|
104
|
+
Hyperstack::Internal::Store::State.set_state(self, attr, nil) unless data_loading?
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
@@ -117,7 +117,7 @@ module ReactiveRecord
|
|
117
117
|
yield @attributes.key?(attr), @attributes[attr]
|
118
118
|
return unless empty_before != changed_attributes.empty?
|
119
119
|
if on_opal_client? && !data_loading?
|
120
|
-
|
120
|
+
Hyperstack::Internal::Store::State.set_state(self, '!CHANGED!', !changed_attributes.empty?, true)
|
121
121
|
end
|
122
122
|
return unless aggregate_owner
|
123
123
|
aggregate_owner.set_change_status_and_notify_only(
|
@@ -135,7 +135,7 @@ module ReactiveRecord
|
|
135
135
|
return if value.nil?
|
136
136
|
value.attributes[inverse_attr] = @ar_instance
|
137
137
|
return if data_loading?
|
138
|
-
|
138
|
+
Hyperstack::Internal::Store::State.set_state(value.backing_record, inverse_attr, @ar_instance)
|
139
139
|
end
|
140
140
|
|
141
141
|
def update_inverse_collections(association, value)
|
@@ -24,7 +24,7 @@ module ReactiveRecord
|
|
24
24
|
@loads_pending = @load_stack.pop
|
25
25
|
promise
|
26
26
|
rescue Exception => e
|
27
|
-
|
27
|
+
Hyperstack::Component::IsomorphicHelpers.log "ReactiveRecord.load exception raised during initial load: #{e}", :error
|
28
28
|
end
|
29
29
|
|
30
30
|
def self.loads_pending!
|
@@ -62,7 +62,7 @@ module ReactiveRecord
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
rescue Exception => e
|
65
|
-
|
65
|
+
Hyperstack::Component::IsomorphicHelpers.log "ReactiveRecord.load exception raised during retry: #{e}", :error
|
66
66
|
end
|
67
67
|
|
68
68
|
|
@@ -76,7 +76,7 @@ module ReactiveRecord
|
|
76
76
|
|
77
77
|
class WhileLoading
|
78
78
|
|
79
|
-
include
|
79
|
+
include Hyperstack::Component::IsomorphicHelpers
|
80
80
|
|
81
81
|
before_first_mount do
|
82
82
|
@css_to_preload = ""
|
@@ -92,7 +92,11 @@ module ReactiveRecord
|
|
92
92
|
end
|
93
93
|
|
94
94
|
def self.has_observers?
|
95
|
-
|
95
|
+
Hyperstack::Internal::Store::State.observed?(self, :loaded_at)
|
96
|
+
end
|
97
|
+
|
98
|
+
class << self
|
99
|
+
alias :observed? :has_observers?
|
96
100
|
end
|
97
101
|
|
98
102
|
prerender_footer do
|
@@ -105,7 +109,7 @@ module ReactiveRecord
|
|
105
109
|
# -: You think wrong. add_style_sheet uses the jQuery $, after_mount too, others too
|
106
110
|
# -: I removed those references. Now you think right.
|
107
111
|
|
108
|
-
include
|
112
|
+
include Hyperstack::Component
|
109
113
|
|
110
114
|
param :loading
|
111
115
|
param :loaded_children
|
@@ -121,29 +125,29 @@ module ReactiveRecord
|
|
121
125
|
end
|
122
126
|
|
123
127
|
def loading!
|
124
|
-
|
125
|
-
|
128
|
+
Hyperstack::Internal::Component::RenderingContext.waiting_on_resources = true
|
129
|
+
Hyperstack::Internal::Store::State.get_state(self, :loaded_at)
|
126
130
|
# this was moved to where the fetch is actually pushed on to the fetch array in isomorphic base
|
127
|
-
#
|
131
|
+
# Hyperstack::Internal::Store::State.set_state(self, :quiet, false)
|
128
132
|
@is_loading = true
|
129
133
|
end
|
130
134
|
|
131
135
|
def loaded_at(loaded_at)
|
132
|
-
|
136
|
+
Hyperstack::Internal::Store::State.set_state(self, :loaded_at, loaded_at)
|
133
137
|
@is_loading = false
|
134
138
|
end
|
135
139
|
|
136
140
|
def quiet?
|
137
|
-
|
141
|
+
Hyperstack::Internal::Store::State.get_state(self, :quiet)
|
138
142
|
end
|
139
143
|
|
140
144
|
def page_loaded?
|
141
|
-
|
145
|
+
Hyperstack::Internal::Store::State.get_state(self, :page_loaded)
|
142
146
|
end
|
143
147
|
|
144
148
|
def quiet!
|
145
|
-
|
146
|
-
after(1) {
|
149
|
+
Hyperstack::Internal::Store::State.set_state(self, :quiet, true)
|
150
|
+
after(1) { Hyperstack::Internal::Store::State.set_state(self, :page_loaded, true) } unless on_opal_server? or @page_loaded
|
147
151
|
@page_loaded = true
|
148
152
|
end
|
149
153
|
|
@@ -166,18 +170,18 @@ module ReactiveRecord
|
|
166
170
|
before_mount do
|
167
171
|
@uniq_id = WhileLoading.get_next_while_loading_counter
|
168
172
|
WhileLoading.preload_css(
|
169
|
-
".reactive_record_while_loading_container_#{@uniq_id} > :nth-child(1n+#{
|
173
|
+
".reactive_record_while_loading_container_#{@uniq_id} > :nth-child(1n+#{@LoadedChildren.count+1}) {\n"+
|
170
174
|
" display: none;\n"+
|
171
175
|
"}\n"
|
172
176
|
)
|
173
177
|
end
|
174
178
|
|
175
179
|
after_mount do
|
176
|
-
@waiting_on_resources =
|
180
|
+
@waiting_on_resources = @Loading
|
177
181
|
WhileLoading.add_style_sheet
|
178
182
|
node = dom_node
|
179
183
|
%x{
|
180
|
-
var nodes = node.querySelectorAll(':nth-child(-1n+'+#{
|
184
|
+
var nodes = node.querySelectorAll(':nth-child(-1n+'+#{@LoadedChildren.count}+')');
|
181
185
|
nodes.forEach(
|
182
186
|
function(current_node, current_index, list_obj) {
|
183
187
|
if (current_node.className.indexOf('reactive_record_show_when_loaded') === -1) {
|
@@ -185,7 +189,7 @@ module ReactiveRecord
|
|
185
189
|
}
|
186
190
|
}
|
187
191
|
);
|
188
|
-
nodes = node.querySelectorAll(':nth-child(1n+'+#{
|
192
|
+
nodes = node.querySelectorAll(':nth-child(1n+'+#{@LoadedChildren.count+1}+')');
|
189
193
|
nodes.forEach(
|
190
194
|
function(current_node, current_index, list_obj) {
|
191
195
|
if (current_node.className.indexOf('reactive_record_show_while_loading') === -1) {
|
@@ -197,20 +201,20 @@ module ReactiveRecord
|
|
197
201
|
end
|
198
202
|
|
199
203
|
after_update do
|
200
|
-
@waiting_on_resources =
|
204
|
+
@waiting_on_resources = @Loading
|
201
205
|
end
|
202
206
|
|
203
207
|
def render
|
204
|
-
props =
|
208
|
+
props = @ElementProps.dup
|
205
209
|
classes = [props[:class], props[:className], "reactive_record_while_loading_container_#{@uniq_id}"].compact.join(" ")
|
206
210
|
props.merge!({
|
207
211
|
"data-reactive_record_while_loading_container_id" => @uniq_id,
|
208
212
|
"data-reactive_record_enclosing_while_loading_container_id" => @uniq_id,
|
209
213
|
class: classes
|
210
214
|
})
|
211
|
-
|
212
|
-
|
213
|
-
end.tap { |e| e.waiting_on_resources =
|
215
|
+
ReactAPI.create_element(@ElementType[0], props) do
|
216
|
+
@LoadedChildren + @LoadingChildren
|
217
|
+
end.tap { |e| e.waiting_on_resources = @Loading }
|
214
218
|
end
|
215
219
|
|
216
220
|
end
|
@@ -219,124 +223,124 @@ module ReactiveRecord
|
|
219
223
|
|
220
224
|
end
|
221
225
|
|
222
|
-
module
|
226
|
+
module Hyperstack
|
227
|
+
module Component
|
223
228
|
|
224
|
-
|
229
|
+
class Element
|
225
230
|
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
231
|
+
def while_loading(display = "", &loading_display_block)
|
232
|
+
loaded_children = []
|
233
|
+
loaded_children = block.call.dup if block
|
234
|
+
if display.respond_to? :as_node
|
235
|
+
display = display.as_node
|
236
|
+
loading_display_block = lambda { display.render }
|
237
|
+
elsif !loading_display_block
|
238
|
+
loading_display_block = lambda { display }
|
239
|
+
end
|
240
|
+
loading_children = Internal::Component::RenderingContext.build do |buffer|
|
241
|
+
result = loading_display_block.call
|
242
|
+
result = result.to_s if result.try :acts_as_string?
|
243
|
+
result.span.tap { |e| e.waiting_on_resources = Internal::Component::RenderingContext.waiting_on_resources } if result.is_a? String
|
244
|
+
buffer.dup
|
245
|
+
end
|
241
246
|
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
247
|
+
new_element = ReactAPI.create_element(
|
248
|
+
ReactiveRecord::WhileLoading,
|
249
|
+
loading: waiting_on_resources,
|
250
|
+
loading_children: loading_children,
|
251
|
+
loaded_children: loaded_children,
|
252
|
+
element_type: [type],
|
253
|
+
element_props: properties)
|
249
254
|
|
250
|
-
|
251
|
-
|
255
|
+
Internal::Component::RenderingContext.replace(self, new_element)
|
256
|
+
end
|
252
257
|
|
253
|
-
|
254
|
-
|
255
|
-
|
258
|
+
def hide_while_loading
|
259
|
+
while_loading
|
260
|
+
end
|
256
261
|
|
262
|
+
end
|
257
263
|
end
|
258
264
|
end
|
259
265
|
|
260
266
|
if RUBY_ENGINE == 'opal'
|
261
|
-
module
|
262
|
-
|
263
|
-
module Mixin
|
267
|
+
module Hyperstack
|
268
|
+
module Component
|
264
269
|
|
265
|
-
|
270
|
+
alias_method :original_component_did_mount, :component_did_mount
|
266
271
|
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
+
def component_did_mount(*args)
|
273
|
+
original_component_did_mount(*args)
|
274
|
+
reactive_record_link_to_enclosing_while_loading_container
|
275
|
+
reactive_record_link_set_while_loading_container_class
|
276
|
+
end
|
272
277
|
|
273
|
-
|
278
|
+
alias_method :original_component_did_update, :component_did_update
|
274
279
|
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
280
|
+
def component_did_update(*args)
|
281
|
+
original_component_did_update(*args)
|
282
|
+
reactive_record_link_set_while_loading_container_class
|
283
|
+
end
|
279
284
|
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
}
|
285
|
+
def reactive_record_link_to_enclosing_while_loading_container
|
286
|
+
# Call after any component mounts - attaches the containers loading id to this component
|
287
|
+
# Fyi, the while_loading container is responsible for setting its own link to itself
|
288
|
+
node = dom_node
|
289
|
+
%x{
|
290
|
+
if (typeof node === "undefined" || node === null) return;
|
291
|
+
var node_wl_attr = node.getAttribute('data-reactive_record_enclosing_while_loading_container_id');
|
292
|
+
if (node_wl_attr === null || node_wl_attr === "") {
|
293
|
+
var while_loading_container = node.closest('[data-reactive_record_while_loading_container_id]');
|
294
|
+
if (while_loading_container !== null) {
|
295
|
+
var container_id = while_loading_container.getAttribute('data-reactive_record_while_loading_container_id');
|
296
|
+
node.setAttribute('data-reactive_record_enclosing_while_loading_container_id', container_id);
|
293
297
|
}
|
294
298
|
}
|
295
|
-
|
299
|
+
}
|
300
|
+
end
|
296
301
|
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
}
|
302
|
+
def reactive_record_link_set_while_loading_container_class
|
303
|
+
node = dom_node
|
304
|
+
loading = (waiting_on_resources ? `true` : `false`)
|
305
|
+
%x{
|
306
|
+
if (typeof node === "undefined" || node === null) return;
|
307
|
+
var while_loading_container_id = node.getAttribute('data-reactive_record_while_loading_container_id');
|
308
|
+
if (#{!self.is_a?(ReactiveRecord::WhileLoading)} && while_loading_container_id !== null && while_loading_container_id !== "") {
|
309
|
+
return;
|
310
|
+
}
|
311
|
+
var enc_while_loading_container_id = node.getAttribute('data-reactive_record_enclosing_while_loading_container_id');
|
312
|
+
if (enc_while_loading_container_id !== null && enc_while_loading_container_id !== "") {
|
313
|
+
var while_loading_container = document.body.querySelector('[data-reactive_record_while_loading_container_id="'+enc_while_loading_container_id+'"]');
|
314
|
+
if (loading) {
|
315
|
+
node.className = node.className.replace(/reactive_record_is_loaded/g, '').replace(/ /g, ' ');
|
316
|
+
if (node.className.indexOf('reactive_record_is_loading') === -1) {
|
317
|
+
node.className = node.className + ' reactive_record_is_loading';
|
318
|
+
}
|
319
|
+
if (while_loading_container !== null) {
|
320
|
+
while_loading_container.className = while_loading_container.className.replace(/reactive_record_is_loaded/g, '').replace(/ /g, ' ');
|
321
|
+
if (while_loading_container.className.indexOf('reactive_record_is_loading') === -1) {
|
322
|
+
while_loading_container.className = while_loading_container.className + ' reactive_record_is_loading';
|
319
323
|
}
|
320
|
-
}
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
324
|
+
}
|
325
|
+
} else if (node.className.indexOf('reactive_record_is_loaded') === -1) {
|
326
|
+
if (while_loading_container_id === null || while_loading_container_id === "") {
|
327
|
+
node.className = node.className.replace(/reactive_record_is_loading/g, '').replace(/ /g, ' ');
|
328
|
+
if (node.className.indexOf('reactive_record_is_loaded') === -1) {
|
329
|
+
node.className = node.className + ' reactive_record_is_loaded';
|
326
330
|
}
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
331
|
+
}
|
332
|
+
if (while_loading_container.className.indexOf('reactive_record_is_loaded') === -1) {
|
333
|
+
var loading_children = while_loading_container.querySelectorAll('[data-reactive_record_enclosing_while_loading_container_id="'+enc_while_loading_container_id+'"].reactive_record_is_loading');
|
334
|
+
if (loading_children.length === 0) {
|
335
|
+
while_loading_container.className = while_loading_container.className.replace(/reactive_record_is_loading/g, '').replace(/ /g, ' ');
|
336
|
+
if (while_loading_container.className.indexOf('reactive_record_is_loaded') === -1) {
|
337
|
+
while_loading_container.className = while_loading_container.className + ' reactive_record_is_loaded';
|
334
338
|
}
|
335
339
|
}
|
336
340
|
}
|
337
341
|
}
|
338
342
|
}
|
339
|
-
|
343
|
+
}
|
340
344
|
end
|
341
345
|
end
|
342
346
|
end
|