atome 0.5.5.8.1 → 0.5.5.8.5
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.
- checksums.yaml +4 -4
- data/lib/atome/atome.rb +1 -1
- data/lib/atome/extensions/atome.rb +171 -34
- data/lib/atome/genesis/generators/atome.rb +10 -1
- data/lib/atome/genesis/generators/communication.rb +4 -0
- data/lib/atome/genesis/generators/event.rb +4 -3
- data/lib/atome/genesis/generators/geometry.rb +31 -4
- data/lib/atome/genesis/generators/identity.rb +3 -0
- data/lib/atome/genesis/generators/material.rb +1 -0
- data/lib/atome/genesis/generators/property.rb +75 -1
- data/lib/atome/genesis/generators/utility.rb +26 -12
- data/lib/atome/helpers/essentials.rb +3 -2
- data/lib/atome/version.rb +1 -1
- data/lib/renderers/html/atome.rb +0 -1
- data/lib/renderers/html/geometry.rb +11 -5
- data/lib/renderers/html/html.rb +299 -19
- data/lib/renderers/html/identity.rb +8 -0
- data/lib/renderers/html/material.rb +14 -0
- data/lib/renderers/html/property.rb +21 -0
- data/lib/renderers/html/utility.rb +25 -1
- data/vendor/assets/application/examples/atomizer.rb +86 -0
- data/vendor/assets/application/examples/compute.rb +16 -0
- data/vendor/assets/application/examples/dig.rb +13 -0
- data/vendor/assets/application/examples/fit.rb +26 -0
- data/vendor/assets/application/examples/infos.rb +10 -0
- data/vendor/assets/application/examples/shortcut.rb +2 -2
- data/vendor/assets/application/examples/size.rb +17 -0
- data/vendor/assets/application/examples/table.rb +76 -0
- data/vendor/assets/application/examples/text.rb +1 -1
- data/vendor/assets/src/js/atome/atome_helpers/communication.js +5 -4
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe95794110662e88b3aac3f5a49c75859e6d8f82bc8d54a1413b99f868139893
|
4
|
+
data.tar.gz: a755990f9a94ee89f4b3d3271b2c6b822c971a225ae5b4b7465c1f845d99a920
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '09a7452177a47e2720aec7f93a48f113a12087b5bd64fcdeb0ffbe30831f70e40ac7fab9f64dcdf8e7636bccbb2d5eb7f7b1b9e8db1cd4ddf1852ad135d2bdbe'
|
7
|
+
data.tar.gz: a3832fda01f201a82ef0182a2275af3a1d650195c308a4cde13594bcf3e6a83e15c6db2c58e19a3e329960d89f9fe6ef3ee3d52c0c557327afe7d272f84fad37
|
data/lib/atome/atome.rb
CHANGED
@@ -26,7 +26,7 @@ class Atome
|
|
26
26
|
# now we store the proc in a an atome's property called :bloc
|
27
27
|
new_atome[:code] = atomes_proc if atomes_proc
|
28
28
|
# we reorder the hash
|
29
|
-
ordered_keys = %i[renderers id type]
|
29
|
+
ordered_keys = %i[renderers id alien type]
|
30
30
|
ordered_part = ordered_keys.map { |k| [k, new_atome[k]] }.to_h
|
31
31
|
other_part = new_atome.reject { |k, _| ordered_keys.include?(k) }
|
32
32
|
# merge the parts to obtain an re-ordered hash
|
@@ -101,7 +101,7 @@ class Object
|
|
101
101
|
@repeat ||= []
|
102
102
|
@repeat << proc
|
103
103
|
repeat_id = @repeat.length - 1
|
104
|
-
|
104
|
+
JS.eval(<<~JS)
|
105
105
|
function repeat(action, interval, repetitions) {
|
106
106
|
let count = 0;
|
107
107
|
let intervalId = null;
|
@@ -128,7 +128,6 @@ class Object
|
|
128
128
|
|
129
129
|
return intervalId;
|
130
130
|
JS
|
131
|
-
intervalId
|
132
131
|
|
133
132
|
end
|
134
133
|
|
@@ -165,6 +164,7 @@ class Object
|
|
165
164
|
end
|
166
165
|
atome_get
|
167
166
|
end
|
167
|
+
|
168
168
|
# shortcut
|
169
169
|
|
170
170
|
# we initialise $current_hovered_element
|
@@ -175,7 +175,7 @@ class Object
|
|
175
175
|
|
176
176
|
element_ids.each do |element_id|
|
177
177
|
element = JS.global[:document].querySelector("##{element_id}")
|
178
|
-
|
178
|
+
unless element_id.to_sym == :all
|
179
179
|
element.addEventListener("mouseenter") { $current_hovered_element = element_id }
|
180
180
|
element.addEventListener("mouseleave") { $current_hovered_element = nil }
|
181
181
|
end
|
@@ -183,10 +183,10 @@ class Object
|
|
183
183
|
|
184
184
|
JS.global[:document].addEventListener("keydown") do |native_event|
|
185
185
|
event = Native(native_event)
|
186
|
-
key_pressed = event[:key].downcase
|
187
|
-
ctrl_pressed = event[:ctrlKey]
|
188
|
-
alt_pressed = event[:altKey]
|
189
|
-
meta_pressed = event[:metaKey]
|
186
|
+
key_pressed = event[:key].to_s.downcase
|
187
|
+
ctrl_pressed = event[:ctrlKey].to_s
|
188
|
+
alt_pressed = event[:altKey].to_s
|
189
|
+
meta_pressed = event[:metaKey].to_s
|
190
190
|
|
191
191
|
modifier_matched = case option
|
192
192
|
when :ctrl then ctrl_pressed
|
@@ -197,9 +197,7 @@ class Object
|
|
197
197
|
|
198
198
|
affect_condition = affect == :all || Array(affect).include?($current_hovered_element)
|
199
199
|
exclude_condition = !Array(exclude).include?($current_hovered_element)
|
200
|
-
if $current_hovered_element.nil?
|
201
|
-
$current_hovered_element=:view
|
202
|
-
end
|
200
|
+
$current_hovered_element = :view if $current_hovered_element.nil?
|
203
201
|
if key_pressed == key.to_s.downcase && modifier_matched && affect_condition && exclude_condition
|
204
202
|
block.call(key_pressed, $current_hovered_element)
|
205
203
|
end
|
@@ -208,9 +206,9 @@ class Object
|
|
208
206
|
|
209
207
|
def console(debug)
|
210
208
|
if debug
|
211
|
-
console=box({id: :console,
|
212
|
-
console_back=console.box({id: :console_back,blur: { value:
|
213
|
-
console_top=console.box({id: :console_top,overflow: :auto, width: :auto, height:25, top: 0, bottom: 0,left: 0,right: 0, depth: 30, color: {alpha: 1, red: 0.3, green: 0.3
|
209
|
+
console = box({ id: :console, width: :auto, height: 225, bottom: 0, top: :auto, left: 0, right: 0, depth: 30, color: { alpha: 0, red: 0, green: 0, blue: 0 } })
|
210
|
+
console_back = console.box({ id: :console_back, blur: { value: 5, affect: :back }, overflow: :auto, width: :auto, height: :auto, top: 25, bottom: 0, left: 0, right: 0, depth: 30, color: { alpha: 0.5, red: 0, green: 0, blue: 0 } })
|
211
|
+
console_top = console.box({ id: :console_top, overflow: :auto, width: :auto, height: 25, top: 0, bottom: 0, left: 0, right: 0, depth: 30, color: { alpha: 1, red: 0.3, green: 0.3, blue: 0.3 } })
|
214
212
|
|
215
213
|
console_top.touch(:double) do
|
216
214
|
console.height(25)
|
@@ -226,27 +224,27 @@ class Object
|
|
226
224
|
})
|
227
225
|
console.drag(:locked) do |event|
|
228
226
|
dy = event[:dy]
|
229
|
-
y =
|
227
|
+
y = console.to_px(:top) + dy.to_f
|
230
228
|
console.top(y)
|
231
229
|
console.height(:auto)
|
232
|
-
total_height=grab(:view).to_px(:height)
|
230
|
+
total_height = grab(:view).to_px(:height)
|
233
231
|
# console_back.height(total_height-console.top)
|
234
232
|
end
|
235
|
-
console_output=console_back.text({data: '', id: :console_output, component: {size: 12}})
|
233
|
+
console_output = console_back.text({ data: '', id: :console_output, component: { size: 12 } })
|
236
234
|
JS.eval <<~JS
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
console_clear=console_top.circle({id: :console_clear, color: :red, top: 3, left: 3, width: 19, height:19})
|
235
|
+
(function() {
|
236
|
+
var oldLog = console.log;
|
237
|
+
var consoleDiv = document.getElementById("console_output");
|
238
|
+
console.log = function(message) {
|
239
|
+
if (consoleDiv) {
|
240
|
+
consoleDiv.innerHTML += '<p>' + message + '</p>';
|
241
|
+
}
|
242
|
+
oldLog.apply(console, arguments);
|
243
|
+
};
|
244
|
+
}());
|
245
|
+
JS
|
246
|
+
|
247
|
+
console_clear = console_top.circle({ id: :console_clear, color: :red, top: 3, left: 3, width: 19, height: 19 })
|
250
248
|
console_clear.touch(true) do
|
251
249
|
console_output.data("")
|
252
250
|
end
|
@@ -332,18 +330,157 @@ class Object
|
|
332
330
|
event = Native(native_event)
|
333
331
|
event.preventDefault
|
334
332
|
event.stopPropagation
|
335
|
-
|
336
|
-
puts 'Fichier déposé hors de la zone spéciale'
|
333
|
+
# puts 'File drop out of the special zonne'
|
337
334
|
end
|
338
335
|
end
|
339
336
|
end
|
340
337
|
|
341
|
-
def importer(target
|
342
|
-
if target== :all
|
338
|
+
def importer(target = :all, &proc)
|
339
|
+
if target == :all
|
343
340
|
importer_all(&proc)
|
344
341
|
else
|
345
|
-
exception_import(target
|
342
|
+
exception_import(target, &proc)
|
343
|
+
end
|
344
|
+
end
|
345
|
+
|
346
|
+
def infos
|
347
|
+
particle_list = Universe.particle_list.dup
|
348
|
+
particle_list.delete(:password)
|
349
|
+
particle_list.delete(:selection)
|
350
|
+
infos = {}
|
351
|
+
particle_list.each do |particle_found|
|
352
|
+
infos[particle_found[0]] = send(particle_found[0]) unless send(particle_found[0]).nil?
|
353
|
+
end
|
354
|
+
infos
|
355
|
+
end
|
356
|
+
|
357
|
+
def dig
|
358
|
+
ids = []
|
359
|
+
dig_recursive = lambda do |atome|
|
360
|
+
ids << atome.id
|
361
|
+
atome.attached.each { |attached_atome| dig_recursive.call(grab(attached_atome)) }
|
362
|
+
end
|
363
|
+
dig_recursive.call(self)
|
364
|
+
ids
|
365
|
+
end
|
366
|
+
|
367
|
+
def fit(params)
|
368
|
+
unless params.instance_of?(Hash)
|
369
|
+
params = { value: params }
|
370
|
+
end
|
371
|
+
target_size = params[:value]
|
372
|
+
axis = params[:axis]
|
373
|
+
objet_atome = self
|
374
|
+
atomes_found = objet_atome.dig
|
375
|
+
total_width = found_area_used(atomes_found)[:max][:x] - found_area_used(atomes_found)[:min][:x]
|
376
|
+
total_height = found_area_used(atomes_found)[:max][:y] - found_area_used(atomes_found)[:min][:y]
|
377
|
+
if axis == :x
|
378
|
+
ratio = target_size / total_width
|
379
|
+
# now we resize and re-position all atomes
|
380
|
+
atomes_found.each do |atome_id|
|
381
|
+
current_atome = grab(atome_id)
|
382
|
+
current_atome.left(current_atome.left * ratio)
|
383
|
+
current_atome.top(current_atome.top * ratio)
|
384
|
+
new_width = current_atome.to_px(:width) * ratio
|
385
|
+
new_height = current_atome.to_px(:height) * ratio
|
386
|
+
current_atome.width(new_width)
|
387
|
+
current_atome.height(new_height)
|
388
|
+
end
|
389
|
+
else
|
390
|
+
ratio = target_size / total_height
|
391
|
+
# now we resize and re-position all atomes
|
392
|
+
atomes_found.each do |atome_id|
|
393
|
+
current_atome = grab(atome_id)
|
394
|
+
current_atome.left(current_atome.left * ratio)
|
395
|
+
current_atome.top(current_atome.top * ratio)
|
396
|
+
current_atome.width(current_atome.to_px(:width) * ratio)
|
397
|
+
current_atome.height(current_atome.to_px(:height) * ratio)
|
398
|
+
end
|
399
|
+
end
|
400
|
+
# total_size, max_other_axis_size = calculate_total_size(objet_atome, axis)
|
401
|
+
# scale_factor = target_size.to_f / total_size
|
402
|
+
# resize_and_reposition(objet_atome, scale_factor, axis, max_other_axis_size)
|
403
|
+
end
|
404
|
+
|
405
|
+
def found_area_used(ids)
|
406
|
+
|
407
|
+
min_x, min_y = Float::INFINITY, Float::INFINITY
|
408
|
+
max_x, max_y = 0, 0
|
409
|
+
|
410
|
+
ids.each do |id|
|
411
|
+
atome = grab(id)
|
412
|
+
|
413
|
+
x = atome.compute({ particle: :left })[:value]
|
414
|
+
y = atome.compute({ particle: :top })[:value]
|
415
|
+
width = atome.to_px(:width)
|
416
|
+
height = atome.to_px(:height)
|
417
|
+
min_x = [min_x, x].min
|
418
|
+
min_y = [min_y, y].min
|
419
|
+
max_x = [max_x, x + width].max
|
420
|
+
max_y = [max_y, y + height].max
|
421
|
+
end
|
422
|
+
|
423
|
+
{ min: { x: min_x, y: min_y }, max: { x: max_x, y: max_y } }
|
424
|
+
|
425
|
+
end
|
426
|
+
|
427
|
+
def calculate_total_size(objet_atome, axis)
|
428
|
+
total_size = (axis == :x) ? objet_atome.to_px(:width) : objet_atome.to_px(:height)
|
429
|
+
max_other_axis_size = (axis == :x) ? objet_atome.to_px(:height) : objet_atome.to_px(:width)
|
430
|
+
|
431
|
+
objet_atome.attached.each do |child_id|
|
432
|
+
child = grab(child_id)
|
433
|
+
child_size = (axis == :x) ? child.to_px(:width) : child.to_px(:height)
|
434
|
+
other_axis_size = (axis == :x) ? child.to_px(:height) : child.to_px(:width)
|
435
|
+
|
436
|
+
total_size += child_size
|
437
|
+
max_other_axis_size = [max_other_axis_size, other_axis_size].max
|
438
|
+
end
|
439
|
+
|
440
|
+
[total_size, max_other_axis_size]
|
441
|
+
end
|
442
|
+
|
443
|
+
def resize_and_reposition(objet_atome, scale_factor, axis, max_other_axis_size)
|
444
|
+
current_position = 0
|
445
|
+
resize_object(objet_atome, scale_factor, axis, max_other_axis_size)
|
446
|
+
current_position += (axis == :x) ? objet_atome.to_px(:width) : objet_atome.to_px(:height)
|
447
|
+
objet_atome.attached.each do |child_id|
|
448
|
+
child = grab(child_id)
|
449
|
+
resize_object(child, scale_factor, axis, max_other_axis_size)
|
450
|
+
child.top(child.top * scale_factor)
|
451
|
+
child.left(child.left * scale_factor)
|
452
|
+
current_position += child.to_px(:height)
|
453
|
+
end
|
454
|
+
end
|
455
|
+
|
456
|
+
def resize_object(objet, scale_factor, axis, max_other_axis_size)
|
457
|
+
if axis == :x
|
458
|
+
new_width = objet.width * scale_factor
|
459
|
+
new_height = new_width / (objet.width.to_f / objet.height)
|
460
|
+
objet.width(new_width)
|
461
|
+
objet.height([new_height, max_other_axis_size].min)
|
462
|
+
else
|
463
|
+
new_height = objet.height * scale_factor
|
464
|
+
new_width = new_height / (objet.height.to_f / objet.width)
|
465
|
+
objet.height(new_height)
|
466
|
+
objet.width([new_width, max_other_axis_size].min)
|
467
|
+
end
|
468
|
+
end
|
469
|
+
|
470
|
+
def atomizer(params)
|
471
|
+
unless params.instance_of? Hash
|
472
|
+
params = { target: params }
|
473
|
+
end
|
474
|
+
id = params[:id]
|
475
|
+
if id
|
476
|
+
id_wanted = { id: id }
|
477
|
+
else
|
478
|
+
id_wanted = {}
|
346
479
|
end
|
480
|
+
basis = { alien: params[:target],renderers: [:html], type: :atomized }.merge(id_wanted)
|
481
|
+
a = Atome.new(basis)
|
482
|
+
return a
|
483
|
+
# convert any foreign object (think HTML) to a pseudo atome objet , that embed foreign objet
|
347
484
|
end
|
348
485
|
|
349
486
|
end
|
@@ -18,12 +18,17 @@ new({ sanitizer: :image }) do |params|
|
|
18
18
|
# TODO : we have to convert all image to png or maintain a database with extension
|
19
19
|
# FIXME : temporary patch that add .png to the string if no extension is found
|
20
20
|
params = "#{params}.png" if params.to_s.split('.').length == 1
|
21
|
-
|
22
21
|
params = { path: "./medias/images/#{params}" }
|
23
22
|
end
|
24
23
|
# TODO : the line below should get the value from default params Essentials
|
25
24
|
params
|
26
25
|
end
|
26
|
+
new({ post: :image }) do
|
27
|
+
# we have find the size od the image to set it in the atome
|
28
|
+
instance_variable_set("@width", compute({ particle: :width })[:value])
|
29
|
+
instance_variable_set("@height", compute({ particle: :height })[:value])
|
30
|
+
end
|
31
|
+
|
27
32
|
new({ atome: :video })
|
28
33
|
new({ sanitizer: :video }) do |params|
|
29
34
|
unless params.instance_of? Hash
|
@@ -87,4 +92,8 @@ new({ atome: :machine })
|
|
87
92
|
new({ atome: :paint })
|
88
93
|
new({ atome: :vector })
|
89
94
|
|
95
|
+
new({ atome: :matrix })
|
96
|
+
new({ atome: :atomized, type: :hash })
|
97
|
+
|
98
|
+
|
90
99
|
|
@@ -229,9 +229,10 @@ new({ sanitizer: :over }) do |params, user_bloc|
|
|
229
229
|
params
|
230
230
|
|
231
231
|
end
|
232
|
-
new({ particle: :sort }) do |_value, sort_proc|
|
233
|
-
|
234
|
-
end
|
232
|
+
# new({ particle: :sort }) do |_value, sort_proc|
|
233
|
+
# @sort_proc = sort_proc
|
234
|
+
# end
|
235
|
+
|
235
236
|
new({ particle: :targets })
|
236
237
|
new({ particle: :start })
|
237
238
|
new({ pre: :start }) do |_value, user_proc|
|
@@ -1,7 +1,34 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
new({particle: :width })
|
4
|
-
new({particle: :height })
|
5
|
-
new({particle: :size }) do |params|
|
6
|
-
|
3
|
+
new({ particle: :width })
|
4
|
+
new({ particle: :height })
|
5
|
+
# new({ particle: :size }) do |params|
|
6
|
+
# params
|
7
|
+
# end
|
8
|
+
|
9
|
+
new({ particle: :size }) do |params|
|
10
|
+
params = { value: params } unless params.instance_of? Hash
|
11
|
+
params[:recursive] ||= false
|
12
|
+
params[:reference] ||= :x
|
13
|
+
params[:target] ||= :self # :all resize atome + attached +distance between to the value
|
14
|
+
# self: resize the current atome to current value
|
15
|
+
params[:propagate] ||= :raw # proportional atome children will be resize according
|
16
|
+
# to its parent , raw apply the raw value to the attached atomes
|
17
|
+
if params[:reference] == :x
|
18
|
+
original_width = width
|
19
|
+
width(params[:value])
|
20
|
+
height(height * params[:value] / original_width)
|
21
|
+
else
|
22
|
+
original_height = height
|
23
|
+
height(params[:value])
|
24
|
+
width(width * params[:value] / original_height)
|
25
|
+
end
|
26
|
+
|
27
|
+
if params[:recursive]
|
28
|
+
attached.each do |atome_id|
|
29
|
+
grab(atome_id).size(params)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
7
34
|
end
|
@@ -30,4 +30,78 @@ new({ particle: :diffusion }) do
|
|
30
30
|
self
|
31
31
|
end
|
32
32
|
|
33
|
-
|
33
|
+
|
34
|
+
new({ particle: :clean }) do |params|
|
35
|
+
cell = params[:cell]
|
36
|
+
row_nb = cell[0]
|
37
|
+
column_nb = cell[1]
|
38
|
+
data[row_nb][data[row_nb].keys[column_nb]] = "" # we remove the data from the cell
|
39
|
+
params
|
40
|
+
end
|
41
|
+
|
42
|
+
new({ particle: :insert }) do |params|
|
43
|
+
# cell
|
44
|
+
if params[:cell]
|
45
|
+
content = params[:content]
|
46
|
+
cell = params[:cell]
|
47
|
+
row_nb = cell[0]
|
48
|
+
column_nb = cell[1]
|
49
|
+
data[row_nb][data[row_nb].keys[column_nb]] = content # we remove the data from the cell
|
50
|
+
elsif params[:row]
|
51
|
+
position_to_insert = params[:row]
|
52
|
+
data.insert(position_to_insert, {})
|
53
|
+
elsif params[:column]
|
54
|
+
end
|
55
|
+
|
56
|
+
params
|
57
|
+
end
|
58
|
+
|
59
|
+
new({ particle: :remove }) do |params|
|
60
|
+
|
61
|
+
if params[:row]
|
62
|
+
data.delete_at(params[:row])
|
63
|
+
|
64
|
+
elsif params[:column]
|
65
|
+
column = params[:column]
|
66
|
+
data.map do |hash|
|
67
|
+
hash.delete(hash.keys[column]) if hash.keys[column]
|
68
|
+
hash
|
69
|
+
end
|
70
|
+
end
|
71
|
+
params
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
new({ particle: :sort }) do |params|
|
76
|
+
column = params[:column]
|
77
|
+
method = params[:method]
|
78
|
+
|
79
|
+
if column.nil? || method.nil?
|
80
|
+
puts "Column and method parameters are required."
|
81
|
+
return
|
82
|
+
end
|
83
|
+
|
84
|
+
@data.sort_by! do |row|
|
85
|
+
value = row.values[column - 1]
|
86
|
+
if value.instance_of? Atome
|
87
|
+
0
|
88
|
+
else
|
89
|
+
case method
|
90
|
+
when :alphabetic
|
91
|
+
value.to_s
|
92
|
+
when :numeric
|
93
|
+
if value.is_a?(Numeric)
|
94
|
+
value
|
95
|
+
elsif value.respond_to?(:to_i)
|
96
|
+
value.to_i
|
97
|
+
else
|
98
|
+
0
|
99
|
+
end
|
100
|
+
else
|
101
|
+
value
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
params
|
107
|
+
end
|
@@ -64,16 +64,18 @@ new({ particle: :delete, render: false }) do |params|
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
new({ particle: :clear })
|
67
|
+
|
68
|
+
|
67
69
|
new({ post: :clear }) do
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
70
|
+
attached_found = []
|
71
|
+
attached.each do |attached_id_found|
|
72
|
+
attached_found << attached_id_found
|
73
|
+
end
|
74
|
+
attached_found.each do |child_id_found|
|
75
|
+
child_found = grab(child_id_found)
|
76
|
+
# we exclude system objects
|
77
|
+
child_found&.delete(true) unless child_found.tag && child_found.tag[:system]
|
78
|
+
end
|
77
79
|
end
|
78
80
|
new({ particle: :path })
|
79
81
|
new({ particle: :schedule }) do |date, proc|
|
@@ -192,9 +194,7 @@ new({ after: :duplicate }) do |params|
|
|
192
194
|
end
|
193
195
|
|
194
196
|
new({ particle: :copy }) do |items_id|
|
195
|
-
unless items_id.instance_of? Array
|
196
|
-
items_id = [items_id]
|
197
|
-
end
|
197
|
+
items_id = [items_id] unless items_id.instance_of? Array
|
198
198
|
grab(:copy).collect << items_id
|
199
199
|
end
|
200
200
|
|
@@ -232,3 +232,17 @@ new({ particle: :backup })
|
|
232
232
|
|
233
233
|
new({ particle: :import })
|
234
234
|
|
235
|
+
new({ particle: :compute }) do |params|
|
236
|
+
params = { particle: params } unless params.instance_of?(Hash)
|
237
|
+
params[:unit] ||= :pixel
|
238
|
+
params[:reference] ||= :view
|
239
|
+
params
|
240
|
+
end
|
241
|
+
|
242
|
+
|
243
|
+
new({ particle: :get }) do |params|
|
244
|
+
cell = params[:cell]
|
245
|
+
row_nb = cell[0]
|
246
|
+
column_nb = cell[1]
|
247
|
+
data[row_nb][data[row_nb].keys[column_nb]] # we get the content of the cell
|
248
|
+
end
|
@@ -16,7 +16,8 @@ module Essentials
|
|
16
16
|
@default_params = {
|
17
17
|
# Warning : type must be define first
|
18
18
|
render_engines: [:html],
|
19
|
-
image: { type: :image },
|
19
|
+
image: { type: :image, left: 0, top: 0},
|
20
|
+
matrix: { type: :matrix, left: 0, top: 0, option: {}},
|
20
21
|
# FIXME : look at build_atome FIXME to resolve default parent attachment problem
|
21
22
|
video: { type: :video },
|
22
23
|
animation: { type: :animation, attach: :black_matter },
|
@@ -32,7 +33,7 @@ module Essentials
|
|
32
33
|
shape: { type: :shape, width: 99, height: 99,
|
33
34
|
apply: [:shape_color],
|
34
35
|
left: 100, top: 100 },
|
35
|
-
text: { type: :text, component: { size: 18 },
|
36
|
+
text: { type: :text, component: { size: 18 },left: 0, top: 0,
|
36
37
|
apply: [:text_color],
|
37
38
|
width: :auto, height: :auto },
|
38
39
|
drm: { type: :drm, attach: :black_matter },
|
data/lib/atome/version.rb
CHANGED
data/lib/renderers/html/atome.rb
CHANGED
@@ -4,7 +4,7 @@ new({ method: :width, type: :integer, renderer: :html }) do |value, _user_proc|
|
|
4
4
|
unit_found = unit[:width]
|
5
5
|
if unit_found
|
6
6
|
html.style(:width, "#{value}#{unit_found}")
|
7
|
-
elsif value.
|
7
|
+
elsif value.is_a?(Numeric)
|
8
8
|
html.style(:width, "#{value}px")
|
9
9
|
else
|
10
10
|
html.style(:width, value)
|
@@ -15,16 +15,22 @@ new({ method: :height, renderer: :html, type: :string }) do |value, _user_proc|
|
|
15
15
|
unit_found = unit[:height]
|
16
16
|
if unit_found
|
17
17
|
html.style(:height, "#{value}#{unit_found}")
|
18
|
-
elsif value.
|
18
|
+
elsif value.is_a?(Numeric)
|
19
19
|
html.style(:height, "#{value}px")
|
20
20
|
else
|
21
21
|
html.style(:height, value)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
new({ method: :size, type: :hash, renderer: :html }) do |value, _user_proc|
|
26
|
-
|
27
|
-
end
|
25
|
+
# new({ method: :size, type: :hash, renderer: :html }) do |value, _user_proc|
|
26
|
+
# # html.style('fontSize',"#{value}px")
|
27
|
+
# end
|
28
|
+
#
|
29
|
+
#
|
30
|
+
# new({ method: :size, type: :int, renderer: :html }) do |value, _user_proc|
|
31
|
+
# # html.style('fontSize', "#{value}px")
|
32
|
+
# end
|
33
|
+
|
28
34
|
|
29
35
|
new({ method: :size, type: :int, renderer: :html, specific: :text }) do |value, _user_proc|
|
30
36
|
html.style('fontSize', "#{value}px")
|