atome 0.5.6.4.2 → 0.5.6.4.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +17 -10
- data/exe/atome +5 -3
- data/lib/atome/atome.rb +2 -1
- data/lib/atome/extensions/atome.rb +3 -4
- data/lib/atome/genesis/atomes.rb +13 -0
- data/lib/atome/genesis/genesis.rb +8 -5
- data/lib/atome/genesis/particles/hierarchy.rb +3 -7
- data/lib/atome/genesis/particles/security.rb +47 -3
- data/lib/atome/genesis/sparkle.rb +10 -4
- data/lib/atome/helpers/utilities.rb +51 -0
- data/lib/atome/kernel/universe.rb +11 -4
- data/lib/atome/version.rb +1 -1
- data/lib/renderers/html/effect.rb +1 -1
- data/lib/renderers/html/hierarchy.rb +1 -1
- data/lib/renderers/html/html.rb +5 -2
- data/vendor/assets/application/examples/blur.rb +22 -2
- data/vendor/assets/application/examples/file.rb +1 -0
- data/vendor/assets/application/examples/gradient.rb +1 -0
- data/vendor/assets/application/examples/matrix.rb +145 -0
- data/vendor/assets/application/examples/shadow.rb +8 -5
- data/vendor/assets/server/eDen.rb +7 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc73dbaea0b164408d4656f53afb29c6f207d7a3a9238d7e0f017fee5d99c76a
|
4
|
+
data.tar.gz: 97860122c2abfec80d74880bd80e24d3c4fb2bab39661aaf3d97e7d6bc1528b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd5524c4909dd4c276c9af722af86b5eaa1505f82ff6503737a5cd6e50e62009bb8be7e7cd82db7e482e7f18e7beb7e1339c2728fbb211f96060b60143f3e136
|
7
|
+
data.tar.gz: b485ea4522218c293c36f92e79caeb22fb9233e6146cbeb7271d9b328e2be809a86268871338bc49b4ba105352878f3d4ea99361cb7d41b122b46e37e2bb4fac
|
data/Rakefile
CHANGED
@@ -183,17 +183,17 @@ task :test_server_wasm do
|
|
183
183
|
threads << Thread.new do
|
184
184
|
|
185
185
|
sleep 1
|
186
|
+
timestamp=Time.now.strftime("%Y%m%d%H%M%S")
|
186
187
|
if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
|
187
188
|
# code to exec for Windows
|
188
|
-
`start http://localhost:9292`
|
189
|
+
`start http://localhost:9292?date=#{timestamp}`
|
189
190
|
# `start #{destination}\\#{project_name}\\src\\index_server.html`
|
190
|
-
|
191
191
|
elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
|
192
192
|
# code to exec for MacOS
|
193
|
-
`open http://localhost:9292`
|
193
|
+
`open http://localhost:9292?date=#{timestamp}`
|
194
194
|
else
|
195
195
|
# code to exec for Unix/Linux
|
196
|
-
`open http://localhost:9292`
|
196
|
+
`open http://localhost:9292?date=#{timestamp}`
|
197
197
|
end
|
198
198
|
|
199
199
|
end
|
@@ -225,17 +225,19 @@ task :test_server do
|
|
225
225
|
threads << Thread.new do
|
226
226
|
|
227
227
|
sleep 1
|
228
|
+
timestamp=Time.now.strftime("%Y%m%d%H%M%S")
|
229
|
+
|
228
230
|
if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
|
229
231
|
# code to exec for Windows
|
230
|
-
`start http://localhost:9292`
|
232
|
+
`start http://localhost:9292?date=#{timestamp}`
|
231
233
|
# `start #{destination}\\#{project_name}\\src\\index_server.html`
|
232
234
|
|
233
235
|
elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
|
234
236
|
# code to exec for MacOS
|
235
|
-
`open http://localhost:9292`
|
237
|
+
`open http://localhost:9292?date=#{timestamp}`
|
236
238
|
else
|
237
239
|
# code to exec for Unix/Linux
|
238
|
-
`open http://localhost:9292`
|
240
|
+
`open http://localhost:9292?date=#{timestamp}`
|
239
241
|
end
|
240
242
|
|
241
243
|
end
|
@@ -268,17 +270,18 @@ task :opal_server_rebuild do
|
|
268
270
|
threads << Thread.new do
|
269
271
|
|
270
272
|
sleep 1
|
273
|
+
timestamp=Time.now.strftime("%Y%m%d%H%M%S")
|
271
274
|
if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
|
272
275
|
# code to exec for Windows
|
273
|
-
`start http://localhost:9292`
|
276
|
+
`start http://localhost:9292?date=#{timestamp}`
|
274
277
|
# `start #{destination}\\#{project_name}\\src\\index_server.html`
|
275
278
|
|
276
279
|
elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
|
277
280
|
# code to exec for MacOS
|
278
|
-
`open http://localhost:9292`
|
281
|
+
`open http://localhost:9292?date=#{timestamp}`
|
279
282
|
else
|
280
283
|
# code to exec for Unix/Linux
|
281
|
-
`open http://localhost:9292`
|
284
|
+
`open http://localhost:9292?date=#{timestamp}`
|
282
285
|
end
|
283
286
|
|
284
287
|
end
|
@@ -372,6 +375,10 @@ end
|
|
372
375
|
|
373
376
|
def gem_builder
|
374
377
|
# building the gem
|
378
|
+
dossier = './pkg'
|
379
|
+
|
380
|
+
# we cleanup pkg folder content
|
381
|
+
FileUtils.rm_rf(Dir.glob("#{dossier}/*"))
|
375
382
|
`rake build` # run build_app thru ARGV in exe atome
|
376
383
|
# installing the gem
|
377
384
|
if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
|
data/exe/atome
CHANGED
@@ -826,16 +826,18 @@ else
|
|
826
826
|
if ARGV.include?('server_refresh')
|
827
827
|
puts 're building Server'
|
828
828
|
build_opal_application(nil, destination, project_name)
|
829
|
+
timestamp=Time.now.strftime("%Y%m%d%H%M%S")
|
830
|
+
|
829
831
|
if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
|
830
832
|
# code to exec with Windows
|
831
833
|
# `start #{destination}\\#{project_name}\\src\\index_server.html`
|
832
|
-
`start http://localhost:9292`
|
834
|
+
`start http://localhost:9292?date=#{timestamp}`
|
833
835
|
elsif RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
|
834
836
|
# code to exec with MacOS
|
835
|
-
`open http://localhost:9292`
|
837
|
+
`open http://localhost:9292?date=#{timestamp}`
|
836
838
|
else
|
837
839
|
# code to exec with Unix/Linux
|
838
|
-
`open http://localhost:9292`
|
840
|
+
`open http://localhost:9292?date=#{timestamp}`
|
839
841
|
end
|
840
842
|
end
|
841
843
|
|
data/lib/atome/atome.rb
CHANGED
@@ -111,8 +111,8 @@ class Object
|
|
111
111
|
ordered_part = ordered_keys.map { |k| [k, hash_to_reorder[k]] }.to_h
|
112
112
|
other_part = hash_to_reorder.reject { |k, _| ordered_keys.include?(k) }
|
113
113
|
# merge the parts to obtain an re-ordered hash
|
114
|
-
|
115
|
-
reordered_hash
|
114
|
+
ordered_part.merge(other_part)
|
115
|
+
# reordered_hash
|
116
116
|
end
|
117
117
|
|
118
118
|
def delete (atomes)
|
@@ -120,8 +120,7 @@ class Object
|
|
120
120
|
end
|
121
121
|
|
122
122
|
def identity_generator
|
123
|
-
|
124
|
-
"#{Universe.app_identity}_#{Universe.counter}".to_sym
|
123
|
+
"a_#{Universe.app_identity}_#{Universe.counter}".to_sym
|
125
124
|
end
|
126
125
|
|
127
126
|
def hook(a_id)
|
data/lib/atome/genesis/atomes.rb
CHANGED
@@ -69,10 +69,23 @@ new({ sanitizer: :video }) do |params|
|
|
69
69
|
end
|
70
70
|
new({ atome: :www })
|
71
71
|
new({ atome: :shadow }) do |params|
|
72
|
+
# if params
|
73
|
+
# if params.delete(:affect)
|
74
|
+
# attach_value = params.delete(:affect)
|
75
|
+
# else
|
76
|
+
# attach_value=id
|
77
|
+
# end
|
78
|
+
#
|
79
|
+
# params[:affect] = attach_value
|
80
|
+
# alert "=> params : #{params}"
|
81
|
+
#
|
82
|
+
# end
|
83
|
+
|
72
84
|
if params
|
73
85
|
attach_value = params.delete(:affect)
|
74
86
|
params[:affect] = attach_value
|
75
87
|
end
|
88
|
+
# alert "=> params : #{params}"
|
76
89
|
params
|
77
90
|
end
|
78
91
|
new({ atome: :raw })
|
@@ -100,7 +100,7 @@ class Genesis
|
|
100
100
|
|
101
101
|
# we historicize all write action below
|
102
102
|
# we add the changes to the stack that must be synchronised
|
103
|
-
Universe.historicize(@
|
103
|
+
Universe.historicize(@aid, :write, element, params)
|
104
104
|
computed_params
|
105
105
|
elsif params || params == false
|
106
106
|
"send a valid password to write #{element} value"
|
@@ -152,14 +152,17 @@ class Genesis
|
|
152
152
|
# then add condition same things fo code in presets/atome atome_common
|
153
153
|
if %i[color shadow paint].include?(element)
|
154
154
|
# we do the same for apply to be able to retrieve 'color' and other atome that apply instead of being attached
|
155
|
-
apply.each do |attached_atome|
|
155
|
+
@apply.each do |attached_atome|
|
156
156
|
collected_atomes << attached_atome if grab(attached_atome).type.to_sym == element.to_sym
|
157
157
|
end
|
158
158
|
else
|
159
159
|
# collected_atomes = attached
|
160
|
-
|
161
|
-
|
162
|
-
|
160
|
+
# if @attached
|
161
|
+
attached.each do |attached_atome|
|
162
|
+
collected_atomes << attached_atome if grab(attached_atome).type.to_sym == element.to_sym
|
163
|
+
end
|
164
|
+
# end
|
165
|
+
|
163
166
|
end
|
164
167
|
# TODO/ FIXME : potential problem with group here"
|
165
168
|
# group({ collect: collected_atomes })
|
@@ -82,18 +82,14 @@ end
|
|
82
82
|
new({ particle: :affect, category: :hierarchy, type: :string, render: false }) do |children_ids, &user_proc|
|
83
83
|
children_ids = [children_ids] unless children_ids.instance_of? Array
|
84
84
|
children_ids.each do |child_id|
|
85
|
-
# params[:affect].each do |affected|
|
86
|
-
# end
|
87
|
-
|
88
85
|
child_found = grab(child_id)
|
89
|
-
#
|
90
|
-
# puts "correct condition below #{id}"
|
91
|
-
#FIXME : found why it crash when removing the conditon below
|
86
|
+
#FIXME : found why it crash when removing the condition below
|
92
87
|
unless child_found.id == :black_matter
|
93
88
|
child_found.remove({all: :paint})
|
94
89
|
end
|
95
|
-
|
90
|
+
child_found.apply([id], &user_proc)
|
96
91
|
end
|
92
|
+
|
97
93
|
children_ids
|
98
94
|
end
|
99
95
|
|
@@ -26,8 +26,52 @@ new ({ sanitizer: :password }) do |params|
|
|
26
26
|
end
|
27
27
|
|
28
28
|
new({ read: :password }) do |params|
|
29
|
-
|
30
|
-
params
|
31
|
-
params[:
|
29
|
+
# TODO : check if we have to reactive the lines below
|
30
|
+
# params = Black_matter.password if params.nil?
|
31
|
+
# params[:read][:atome] = Black_matter.password[:read][:atome] unless @authorisations[:write][:atome]
|
32
|
+
# params[:write][:atome] = Black_matter.password[:write][:atome] unless @authorisations[:write][:atome]
|
33
|
+
|
32
34
|
params
|
33
35
|
end
|
36
|
+
|
37
|
+
# def get_all_local_storage_items
|
38
|
+
# Création d'un hash pour stocker les paires clé/valeur de localStorage
|
39
|
+
storage_items = {}
|
40
|
+
|
41
|
+
# Obtention du nombre d'éléments dans le localStorage
|
42
|
+
# storage= JS.global[:localStorage]
|
43
|
+
# # storage=storage.to_s
|
44
|
+
# storage_array= storage.to_a
|
45
|
+
# # alert storage_array.length
|
46
|
+
# storage_items={}
|
47
|
+
# storage_array.each_with_index do |_i, index|
|
48
|
+
# key = JS.global[:localStorage].key(index)
|
49
|
+
# #
|
50
|
+
# # # Récupération de la valeur associée à cette clé
|
51
|
+
# value = JS.global[:localStorage].getItem(key)
|
52
|
+
# #
|
53
|
+
# # # Stockage de la paire clé/valeur dans le hash
|
54
|
+
# storage_items[key] = value
|
55
|
+
# end
|
56
|
+
# puts storage_items
|
57
|
+
|
58
|
+
# alert Native(storage_length).class
|
59
|
+
# Itération sur tous les éléments de localStorage
|
60
|
+
# (0...storage_length).each do |i|
|
61
|
+
# # Récupération de la clé pour l'élément actuel
|
62
|
+
# key = JS.global[:localStorage].key(i)
|
63
|
+
#
|
64
|
+
# # Récupération de la valeur associée à cette clé
|
65
|
+
# value = JS.global[:localStorage].getItem(key)
|
66
|
+
#
|
67
|
+
# # Stockage de la paire clé/valeur dans le hash
|
68
|
+
# storage_items[key] = value
|
69
|
+
# end
|
70
|
+
#
|
71
|
+
# # Retour du hash contenant toutes les paires clé/valeur de localStorage
|
72
|
+
# storage_items
|
73
|
+
# end
|
74
|
+
#
|
75
|
+
# # Appel de la fonction pour récupérer et afficher le contenu de localStorage
|
76
|
+
# all_items = get_all_local_storage_items
|
77
|
+
# puts all_items
|
@@ -3,7 +3,6 @@
|
|
3
3
|
# now let's get the default render engine
|
4
4
|
|
5
5
|
# Lets create the U.I.
|
6
|
-
|
7
6
|
default_render = Essentials.default_params[:render_engines]
|
8
7
|
Atome.new(
|
9
8
|
{ renderers: [], id: :eDen, type: :element, tag: { system: true } }
|
@@ -90,7 +89,8 @@ Atome.new({ renderers: default_render, id: machine_id, type: :machine, password:
|
|
90
89
|
# user
|
91
90
|
user_password = { global: :star_win, read: { atome: :star_wars }, write: { atome: :star_wars } }
|
92
91
|
|
93
|
-
human({ id: :anonymous, login: true, password: user_password, data: { birthday: '10/05/1996' }, selection: [], attach: :user_view })
|
92
|
+
# human({ id: :anonymous, login: true, password: user_password, data: { birthday: '10/05/1996' }, selection: [], attach: :user_view })
|
93
|
+
human({ id: identity_generator, login: true, password: user_password, data: { birthday: '10/05/1996' }, selection: [], attach: :user_view })
|
94
94
|
|
95
95
|
Universe.current_machine = machine_id
|
96
96
|
# the constant A is used to access alla atomes methods
|
@@ -146,7 +146,7 @@ def atome_genesis
|
|
146
146
|
end
|
147
147
|
end
|
148
148
|
|
149
|
-
def init_database # this method is call from JS (atome/communication)
|
149
|
+
def init_database # this method is call from JS (atome/communication) at WS connection
|
150
150
|
# we init the db file eDen
|
151
151
|
A.message({ action: :init_db, data: { database: :eDen } }) do |_db_state|
|
152
152
|
end
|
@@ -184,6 +184,11 @@ def init_database # this method is call from JS (atome/communication)
|
|
184
184
|
end
|
185
185
|
end
|
186
186
|
|
187
|
+
# now we send localstorage content to the server
|
188
|
+
puts "now we send localstorage send_localstorage_content to the server"
|
189
|
+
send_localstorage_content
|
190
|
+
# A.message({ action: :localstorage, data: get_localstorage_content }) do |_db_state|
|
191
|
+
# end
|
187
192
|
end
|
188
193
|
|
189
194
|
def user_login
|
@@ -193,6 +198,7 @@ def user_login
|
|
193
198
|
puts "email received : #{email}"
|
194
199
|
end
|
195
200
|
message({ action: :authorization, data: { password: password } }) do |pass|
|
196
|
-
puts "password
|
201
|
+
puts "password received : #{pass}"
|
197
202
|
end
|
198
203
|
end
|
204
|
+
# Universe.allow_history=true
|
@@ -6,6 +6,7 @@ require 'json'
|
|
6
6
|
class Atome
|
7
7
|
class << self
|
8
8
|
|
9
|
+
|
9
10
|
def file_handler(parent, content, bloc)
|
10
11
|
grab(parent).instance_exec(content, &bloc)
|
11
12
|
end
|
@@ -398,6 +399,56 @@ class Atome
|
|
398
399
|
# Digest::SHA256.hexdigest(string)
|
399
400
|
# end
|
400
401
|
end
|
402
|
+
def get_localstorage_content
|
403
|
+
storage= JS.global[:localStorage]
|
404
|
+
storage_array= storage.to_a
|
405
|
+
storage_items={}
|
406
|
+
storage_array.each_with_index do |_i, index|
|
407
|
+
key = JS.global[:localStorage].key(index)
|
408
|
+
value = JS.global[:localStorage].getItem(key)
|
409
|
+
storage_items[key] = value
|
410
|
+
end
|
411
|
+
storage_items
|
412
|
+
end
|
413
|
+
|
414
|
+
def sanitize_data_for_json(data)
|
415
|
+
data=data.gsub('"', '\\"')
|
416
|
+
# case data
|
417
|
+
# when String
|
418
|
+
# data.gsub('"', '\\"')
|
419
|
+
# when Hash
|
420
|
+
# data.transform_values { |value| sanitize_data(value) }
|
421
|
+
# when Array
|
422
|
+
# data.map { |value| sanitize_data(value) }
|
423
|
+
# else
|
424
|
+
# data
|
425
|
+
# end
|
426
|
+
data
|
427
|
+
end
|
428
|
+
|
429
|
+
def send_localstorage_content
|
430
|
+
storage= JS.global[:localStorage]
|
431
|
+
storage_array= storage.to_a
|
432
|
+
# storage_items={}
|
433
|
+
storage_array.each_with_index do |_i, index|
|
434
|
+
key = JS.global[:localStorage].key(index)
|
435
|
+
value = sanitize_data_for_json(JS.global[:localStorage].getItem(key))
|
436
|
+
# storage_items[key] = value
|
437
|
+
# puts key
|
438
|
+
# puts value
|
439
|
+
# A.message({ action: :localstorage, data: {key => value} }) do |_db_state|
|
440
|
+
# # puts _db_state
|
441
|
+
# end
|
442
|
+
end
|
443
|
+
# A.message({ action: :end_localstorage, data: '' }) do |_db_state|
|
444
|
+
# puts _db_state
|
445
|
+
# end
|
446
|
+
end
|
447
|
+
|
448
|
+
def to_sym
|
449
|
+
puts "sanitizer temp patch when an atome is passed instead of an id"
|
450
|
+
@id
|
451
|
+
end
|
401
452
|
end
|
402
453
|
|
403
454
|
|
@@ -11,17 +11,18 @@ class Universe
|
|
11
11
|
@sanitizers = {}
|
12
12
|
@specificities = {}
|
13
13
|
@messages = {}
|
14
|
-
|
14
|
+
@increment=0
|
15
15
|
@categories = %w[atome communication effect event geometry hierarchy identity material
|
16
16
|
property security spatial time utility ]
|
17
17
|
@history = {}
|
18
18
|
@users = {}
|
19
19
|
@help = {}
|
20
20
|
@example = {}
|
21
|
-
|
21
|
+
@allow_history= false
|
22
|
+
# @historicize=false
|
22
23
|
class << self
|
23
24
|
attr_reader :atomes,:atomes_ids, :renderer_list, :atome_list, :particle_list, :classes, :counter, :atomes_specificities
|
24
|
-
|
25
|
+
attr_accessor :allow_history
|
25
26
|
def messages
|
26
27
|
@messages
|
27
28
|
end
|
@@ -236,7 +237,13 @@ class Universe
|
|
236
237
|
end
|
237
238
|
|
238
239
|
def historicize(id, operation, element, params)
|
239
|
-
@
|
240
|
+
if @allow_history
|
241
|
+
operation_timing= Time.now.strftime("%Y%m%d%H%M%S%3N")+@increment.to_s
|
242
|
+
@increment+=1
|
243
|
+
@increment=@increment%100
|
244
|
+
JS.global[:localStorage].setItem(operation_timing,"{ #{id} => { #{operation} => { #{element} => #{params} } }, sync: false }")
|
245
|
+
@history[@history.length] = { operation_timing => { id => { operation => { element => params } }, sync: false, time: Time.now } }
|
246
|
+
end
|
240
247
|
end
|
241
248
|
|
242
249
|
def story(filter)
|
data/lib/atome/version.rb
CHANGED
@@ -21,7 +21,7 @@ new({ renderer: :html, method: :smooth, type: :string }) do |value, _user_proc|
|
|
21
21
|
end
|
22
22
|
|
23
23
|
new({ renderer: :html, method: :blur, type: :integer }) do |params, _user_proc|
|
24
|
-
if params[:affect] == :back
|
24
|
+
if params[:affect] == :back || params[:affect] == :back
|
25
25
|
html.backdropFilter(:blur, "#{params[:value]}px")
|
26
26
|
else
|
27
27
|
html.filter(:blur, "#{params[:value]}px")
|
@@ -93,7 +93,7 @@ new({ renderer: :html, method: :apply, type: :string, specific: :text }) do |par
|
|
93
93
|
alpha = shadow_found.alpha
|
94
94
|
left = shadow_found.left
|
95
95
|
top = shadow_found.top
|
96
|
-
blur = shadow_found.blur
|
96
|
+
blur = shadow_found.blur[:value] # new correct behavior all atome's value should now be get using :value,here to resolve conflict with blur and back blur
|
97
97
|
inset = :inset if shadow_found.invert
|
98
98
|
if shadow_found.option == :natural
|
99
99
|
shadows_to_apply[:filter] << "drop-shadow(#{left}px #{top}px #{blur}px rgba(#{red}, #{green}, #{blue}, #{alpha}))"
|
data/lib/renderers/html/html.rb
CHANGED
@@ -1450,21 +1450,24 @@ class HTML
|
|
1450
1450
|
when :all
|
1451
1451
|
case v
|
1452
1452
|
when :paint
|
1453
|
-
style(:background, '
|
1453
|
+
style(:background, 'none')
|
1454
1454
|
# style('box-shadow', 'none')
|
1455
1455
|
# style('text-shadow', 'none')
|
1456
1456
|
when :color
|
1457
1457
|
when :shadow
|
1458
1458
|
style('box-shadow', 'none')
|
1459
1459
|
style('text-shadow', 'none')
|
1460
|
+
style("filter", 'none')
|
1460
1461
|
end
|
1461
1462
|
end
|
1462
1463
|
end
|
1463
1464
|
else
|
1464
1465
|
@original_atome.apply.delete(params)
|
1465
|
-
style(:background, '
|
1466
|
+
style(:background, 'none')
|
1466
1467
|
style('box-shadow', 'none')
|
1467
1468
|
style('text-shadow', 'none')
|
1469
|
+
style("boxShadow", 'none')
|
1470
|
+
style("filter", 'none')
|
1468
1471
|
@original_atome.apply(@original_atome.apply)
|
1469
1472
|
end
|
1470
1473
|
# alert "remove : #{params} , type: #{@original_atome.type}"
|
@@ -1,6 +1,26 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
b=circle({left: 333})
|
4
|
+
b.blur(6)
|
3
5
|
|
6
|
+
image(:red_planet)
|
7
|
+
b2=box({color: {alpha: 0.1, red: 1, green: 0, blue: 0.2}, left: 99, top: 99, width: 99, height: 99})
|
8
|
+
b2.drag(true)
|
9
|
+
b2.border({ thickness: 0.3, color: :gray, pattern: :solid })
|
10
|
+
b2.smooth(12)
|
11
|
+
b2.shadow({
|
12
|
+
invert: true,
|
13
|
+
id: :s4,
|
14
|
+
left: 2, top: 2, blur: 9,
|
15
|
+
# option: :natural,
|
16
|
+
red: 0, green: 0, blue: 0, alpha: 0.3
|
17
|
+
})
|
4
18
|
|
5
|
-
|
6
|
-
|
19
|
+
b2.shadow({
|
20
|
+
# invert: true,
|
21
|
+
id: :s5,
|
22
|
+
left: 2, top: 2, blur: 9,
|
23
|
+
# option: :natural,
|
24
|
+
red: 0, green: 0, blue: 0, alpha: 0.6
|
25
|
+
})
|
26
|
+
b2.blur({affect: :back, value: 15})
|
@@ -0,0 +1,145 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
@current_matrix = ""
|
4
|
+
|
5
|
+
def matrix(id, horizontal_nb, vertical_nb, spacing, size)
|
6
|
+
view = grab(:view)
|
7
|
+
@current_matrix = group({ id: id })
|
8
|
+
@current_matrix.data({ spacing: spacing, size: size })
|
9
|
+
matrix_cells = []
|
10
|
+
total_spacing_x = spacing * (horizontal_nb + 1)
|
11
|
+
total_spacing_y = spacing * (vertical_nb + 1)
|
12
|
+
size_coefficient = size.end_with?('%') ? (size.to_f / 100) : size.to_f / view.to_px(:width)
|
13
|
+
|
14
|
+
view_width = view.to_px(:width)
|
15
|
+
view_height = view.to_px(:height)
|
16
|
+
if view_width > view_height
|
17
|
+
available_width = (view_height * size_coefficient) - total_spacing_x
|
18
|
+
available_height = (view_height * size_coefficient) - total_spacing_y
|
19
|
+
else
|
20
|
+
available_width = (view_width * size_coefficient) - total_spacing_x
|
21
|
+
available_height = (view_width * size_coefficient) - total_spacing_y
|
22
|
+
end
|
23
|
+
box_width = available_width / horizontal_nb
|
24
|
+
box_height = available_height / vertical_nb
|
25
|
+
|
26
|
+
vertical_nb.times do |y|
|
27
|
+
horizontal_nb.times do |x|
|
28
|
+
id_generated = "#{id}_#{x}_#{y}"
|
29
|
+
matrix_cells << id_generated
|
30
|
+
new_box = box({ id: id_generated })
|
31
|
+
new_box.width(box_width)
|
32
|
+
new_box.height(box_height)
|
33
|
+
new_box.left((box_width + spacing) * x + spacing)
|
34
|
+
new_box.top((box_height + spacing) * y + spacing)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
@current_matrix.collect(matrix_cells)
|
38
|
+
end
|
39
|
+
|
40
|
+
matrix(:vie_0, 8, 8, 9, '69%')
|
41
|
+
|
42
|
+
def resize_matrix(current_matrix, new_width, new_height, spacing, size)
|
43
|
+
# matrix_group = grab(matrix_id)
|
44
|
+
total_spacing_x = spacing * (current_matrix.collect.length ** (0.5) + 1)
|
45
|
+
total_spacing_y = spacing * (current_matrix.collect.length ** (0.5) + 1)
|
46
|
+
size_coefficient = size.end_with?('%') ? (size.to_f / 100) : size.to_f / new_width
|
47
|
+
|
48
|
+
if new_width > new_height
|
49
|
+
available_width = (new_height * size_coefficient) - total_spacing_x
|
50
|
+
available_height = (new_height * size_coefficient) - total_spacing_y
|
51
|
+
else
|
52
|
+
available_width = (new_width * size_coefficient) - total_spacing_x
|
53
|
+
available_height = (new_width * size_coefficient) - total_spacing_y
|
54
|
+
end
|
55
|
+
|
56
|
+
box_width = available_width / current_matrix.collect.length ** (0.5)
|
57
|
+
box_height = available_height / current_matrix.collect.length ** (0.5)
|
58
|
+
current_matrix.collect.each_with_index do |box_id, index|
|
59
|
+
box = grab(box_id)
|
60
|
+
box.width(box_width)
|
61
|
+
box.height(box_height)
|
62
|
+
box.left((box_width + spacing) * (index % current_matrix.collect.length ** (0.5)) + spacing)
|
63
|
+
box.top((box_height + spacing) * (index / current_matrix.collect.length ** (0.5)).floor + spacing)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
grab(:view).on(:resize) do |event|
|
68
|
+
new_event = Native(event)
|
69
|
+
new_width = new_event[:width].to_f
|
70
|
+
new_height = new_event[:height].to_f
|
71
|
+
matrix_spacing = @current_matrix.data[:spacing]
|
72
|
+
matrix_size = @current_matrix.data[:size]
|
73
|
+
resize_matrix(@current_matrix, new_width, new_height, matrix_spacing, matrix_size)
|
74
|
+
end
|
75
|
+
# alert grab(:vie_0).data
|
76
|
+
# wait 2 do
|
77
|
+
|
78
|
+
@current_matrix.color(:blue)
|
79
|
+
@current_matrix.smooth(6)
|
80
|
+
@current_matrix.shadow({
|
81
|
+
id: :s1,
|
82
|
+
# affect: [:the_circle],
|
83
|
+
left: 3, top: 3, blur: 6,
|
84
|
+
invert: false,
|
85
|
+
red: 0, green: 0, blue: 0, alpha: 0.6
|
86
|
+
})
|
87
|
+
###################
|
88
|
+
col_1 = color(:yellow)
|
89
|
+
col_2 = color({ red: 1, id: :red_col })
|
90
|
+
|
91
|
+
|
92
|
+
# @current_matrix.paint({ gradient: [col_1.id, col_2.id], direction: :left })
|
93
|
+
@current_matrix.paint({ gradient: [col_1.id, col_2.id], direction: :top })
|
94
|
+
|
95
|
+
|
96
|
+
###################
|
97
|
+
|
98
|
+
|
99
|
+
test_cell = grab(:vie_0_2_3)
|
100
|
+
wait 1 do
|
101
|
+
test_cell.color(:red)
|
102
|
+
end
|
103
|
+
|
104
|
+
|
105
|
+
module Molecule
|
106
|
+
|
107
|
+
def states(val = nil)
|
108
|
+
if val
|
109
|
+
else
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
def alternate(states = nil)
|
116
|
+
if states
|
117
|
+
|
118
|
+
else
|
119
|
+
@alternate
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
123
|
+
end
|
124
|
+
c= circle({left: 399})
|
125
|
+
test_cell.touch(true) do
|
126
|
+
test_cell.alternate([{ width: 33, color: :red }, { width: 66, color: :orange }])
|
127
|
+
# puts "=> #{Universe.atomes.length}"
|
128
|
+
# puts test_cell.color
|
129
|
+
# if test_cell.data==true
|
130
|
+
# test_cell.data(false)
|
131
|
+
# col_1 = color(:black)
|
132
|
+
|
133
|
+
@current_matrix.paint({ gradient: [col_1.id, col_1.id], direction: :top })
|
134
|
+
other_col=test_cell.color(:white)
|
135
|
+
c.paint({ gradient: [col_1, col_2], direction: :left })
|
136
|
+
test_cell.paint({ gradient: [col_1, other_col], direction: :left })
|
137
|
+
# test_cell
|
138
|
+
# grab(:red_col).delete(true)
|
139
|
+
# test_cell.color(:green)
|
140
|
+
# else
|
141
|
+
# test_cell.data(true)
|
142
|
+
# test_cell.color(:blue)
|
143
|
+
# end
|
144
|
+
|
145
|
+
end
|
@@ -34,14 +34,17 @@ wait 2 do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
|
37
|
-
the_text = text({ data: '
|
38
|
-
|
37
|
+
the_text = text({ data: 'text with shadow!', center: true, top: 222, width: 777, component: { size: 66 } })
|
39
38
|
|
40
39
|
|
41
40
|
the_text.shadow({
|
42
|
-
id: :
|
43
|
-
left:
|
41
|
+
id: :my_shadow,
|
42
|
+
left: 6, top: 6, blur: 6,
|
44
43
|
option: :natural,
|
45
|
-
red: 0, green:
|
44
|
+
red: 0, green: 0, blue: 0, alpha: 1
|
46
45
|
})
|
47
46
|
|
47
|
+
the_text.left(255)
|
48
|
+
the_text.top(66)
|
49
|
+
the_text.color(:red)
|
50
|
+
|
@@ -78,6 +78,13 @@ class EDen
|
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
81
|
+
def localstorage(data, message_id)
|
82
|
+
# return test
|
83
|
+
# ws.send(return_message.to_json)
|
84
|
+
return { return: 'localstorage content received', authorized: true, message_id: message_id }
|
85
|
+
|
86
|
+
end
|
87
|
+
|
81
88
|
def init_db(_data, message_id)
|
82
89
|
unless File.exist?("eden.sqlite3")
|
83
90
|
Sequel.connect("sqlite://eden.sqlite3")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: atome
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.6.4.
|
4
|
+
version: 0.5.6.4.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jean-Eric Godard
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-03-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: artoo
|
@@ -575,6 +575,7 @@ files:
|
|
575
575
|
- vendor/assets/application/examples/login.rb
|
576
576
|
- vendor/assets/application/examples/markup.rb
|
577
577
|
- vendor/assets/application/examples/match.rb
|
578
|
+
- vendor/assets/application/examples/matrix.rb
|
578
579
|
- vendor/assets/application/examples/monitor.rb
|
579
580
|
- vendor/assets/application/examples/on_resize.rb
|
580
581
|
- vendor/assets/application/examples/on_the_fly_ruby_code_loading.rb
|