atome 0.5.7.4.2 → 0.5.7.4.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c766c7eb85bcd7a3de7dda8058e641e6353e4be8f0813326c4626affd3254e1
4
- data.tar.gz: '079339808511cf96b9e393897a9c58e35d7b4ad964916f8392dc9e636fa65b52'
3
+ metadata.gz: 9b3bf5cffbab20505060476da1e5f3938270c7a612d6961828860c3fd2682797
4
+ data.tar.gz: 6b143b8651c8db90424383494ed5b5ce1d3a211381b42404eb97bfd846a872b9
5
5
  SHA512:
6
- metadata.gz: 778782a81a4f6b55e11afd04e0d4c16506156eda4861a3bb615c326ce1b4d0949229b9740afbc31c291a77de97957e084b516dd3cd560c42ada9e3f6e25bcaea
7
- data.tar.gz: 34f16f5b2446434aedc38490ad0726d9170d8d191109e6e2671f05ff88e5269005657b849190aa88c926a1fd1ce1952626cc3fd5e7e4c5657cede5d0e897a670
6
+ metadata.gz: 9e9d0eebf35dfde29462e19885d4bcb1eccb285eeb0e808381171028e94967d17e9f21c130053b34d31fdc59143c80808a28cf102520cc5cfb14e7c569961d33
7
+ data.tar.gz: bf0e01e0a8f0ea7ae821b896fb78e807f4d00848b452f827ebd3d0fb1a07b08b9542b02a87b0c498569f002edc4fca1cdab297c91fd57f974bdb1a4daa4cc119
@@ -69,6 +69,17 @@ end
69
69
  class Object
70
70
  include ObjectExtension
71
71
 
72
+
73
+ def remove_key_pair_but(hash, keys_to_keep)
74
+ hash.dup.delete_if do |key, value|
75
+ key.is_a?(Integer) && key.even? && !keys_to_keep.include?(key)
76
+ end.reject { |key, value| keys_to_keep.include?(key) }
77
+ end
78
+
79
+ def filter_keys_to_keep(hash, keys_to_keep)
80
+ hash.select { |key, value| keys_to_keep.include?(key) }
81
+ end
82
+
72
83
  def deep_copy(obj)
73
84
  # utility for buttons
74
85
  case obj
@@ -768,4 +779,6 @@ class CssProxy
768
779
  parsed = JSON.parse(msg)
769
780
  bloc.call(parsed)
770
781
  end
782
+
783
+
771
784
  end
data/lib/atome/version.rb CHANGED
@@ -3,5 +3,5 @@
3
3
  # return atome version
4
4
 
5
5
  class Atome
6
- VERSION = '0.5.7.4.2'
6
+ VERSION = '0.5.7.4.3'
7
7
  end
@@ -20,6 +20,18 @@ class Atome
20
20
  end
21
21
  end
22
22
 
23
+ def reorder_blocs
24
+ @prev_bloc_height = 0
25
+ fasten.each do |bloc_f|
26
+ potential_bloc = grab(bloc_f)
27
+ spacing = potential_bloc.spacing
28
+ if potential_bloc.role && potential_bloc.role.include?(:block)
29
+ potential_bloc.top(spacing + @prev_bloc_height)
30
+ @prev_bloc_height = @prev_bloc_height + potential_bloc.height + spacing
31
+ end
32
+ end
33
+ end
34
+
23
35
  def remove_menu_item(item_to_remove)
24
36
  grab(item_to_remove).delete(recursive: true)
25
37
  reorder_menu
@@ -493,6 +505,8 @@ new(molecule: :application) do |params, &bloc|
493
505
 
494
506
  menu = buttons({
495
507
  id: "#{id_f}_menu",
508
+ # left: 66,
509
+ depth: 9999,
496
510
  attach: id_f,
497
511
  inactive: { text: { color: :gray }, width: 66, height: 12, spacing: 3, disposition: :horizontal,
498
512
  color: :orange, margin: { left: 33, top: 12 } },
@@ -507,6 +521,7 @@ new(molecule: :application) do |params, &bloc|
507
521
 
508
522
  main_app.define_singleton_method(:insert) do |bloc_to_add|
509
523
  bloc_to_add.each do |page_id, params_f|
524
+
510
525
  params_f.each do |block_id, block_content|
511
526
  @pages[page_id][:blocks] ||= {}
512
527
  @pages[page_id][:blocks][block_id.to_sym] = block_content
@@ -517,8 +532,11 @@ new(molecule: :application) do |params, &bloc|
517
532
 
518
533
  end
519
534
  main_app.define_singleton_method(:extract) do |bloc_to_extract|
520
- bloc_to_extract.each do |page_id, block_id|
521
- @blocks[page_id].delete(block_id)
535
+
536
+ bloc_to_extract.each do |page_id, block_id|
537
+ grab(block_id).delete({ recursive: true })
538
+ @blocks[page_id].delete(block_id)
539
+ grab(page_id).reorder_blocs
522
540
  end
523
541
 
524
542
  end
@@ -583,10 +601,23 @@ new(molecule: :show) do |page_id, &bloc|
583
601
  # now looking for associated blocks
584
602
  blocks_found = params[:blocks]
585
603
  @prev_bloc_height = 0
586
- blocks_found&.each_with_index do |(bloc_id, bloc_content), index|
604
+ blocks_found&.each do |bloc_id, bloc_content|
605
+
606
+ new_bloc = new_page.box({ id: bloc_id, role: :block, width: '100%', height: 99, top: spacing + @prev_bloc_height, bottom: 0, left: 0, right: 0, spacing: spacing })
607
+
608
+ new_bloc.define_singleton_method(:subs) do |sub_params|
609
+ @prev_sub_width = 0
610
+ sub_params.each do |sub_id, sub_content|
611
+ sub_created = new_bloc.box({ id: sub_id, height: '100%', left: @prev_sub_width })
612
+ sub_created.set(sub_content)
613
+ @prev_sub_width = @prev_sub_width + sub_created.to_px(:width) + spacing
614
+ sub_created.width(sub_created.to_percent(:width))
615
+ sub_created.left(sub_created.to_percent(:left))
616
+ end
587
617
 
588
- new_bloc = new_page.box({ id: bloc_id, width: '100%', height: 99, top: spacing + @prev_bloc_height, bottom: 0, left: 0, right: 0 })
618
+ end
589
619
  new_bloc.set(bloc_content)
620
+
590
621
  @prev_bloc_height = @prev_bloc_height + new_bloc.height + spacing
591
622
  end
592
623
 
@@ -595,25 +626,25 @@ new(molecule: :show) do |page_id, &bloc|
595
626
 
596
627
  new_page.set(particles_to_apply)
597
628
  if footer
598
- new_footer = box({ left: 0, depth: -1, right: 0, width: :auto, top: :auto, bottom: 0, height: basic_size, category: :footer, id: "#{id_f}_footer" })
629
+ new_footer = box({ left: 0, depth: 999, right: 0, width: :auto, top: :auto, bottom: 0, height: basic_size, category: :footer, id: "#{id_f}_footer" })
599
630
  new_footer.remove(:box_color)
600
631
  new_footer.set(footer)
601
632
  end
602
633
 
603
634
  if header
604
- new_header = box({ left: 0, right: 0, depth: -1, width: :auto, top: 0, height: basic_size, category: :header, id: "#{id_f}_header" })
635
+ new_header = box({ left: 0, right: 0, depth: 999, width: :auto, top: 0, height: basic_size, category: :header, id: "#{id_f}_header" })
605
636
  new_header.remove(:box_color)
606
637
  new_header.set(header)
607
638
  end
608
639
 
609
640
  if right_side_bar
610
- new_right_side_bar = box({ left: :auto, depth: -1, right: 0, width: basic_size, top: 0, bottom: 0, height: :auto, category: :right_side_bar, id: "#{id_f}_right_side_bar" })
641
+ new_right_side_bar = box({ left: :auto, depth: 999, right: 0, width: basic_size, top: 0, bottom: 0, height: :auto, category: :right_side_bar, id: "#{id_f}_right_side_bar" })
611
642
  new_right_side_bar.remove(:box_color)
612
643
  new_right_side_bar.set(right_side_bar)
613
644
  end
614
645
 
615
646
  if left_side_bar
616
- new_left_side_bar = box({ left: 0, right: :auto, depth: -1, width: basic_size, top: 0, bottom: 0, height: :auto, category: :left_side_bar, id: "#{id_f}_left_side_bar" })
647
+ new_left_side_bar = box({ left: 0, right: :auto, depth: 999, width: basic_size, top: 0, bottom: 0, height: :auto, category: :left_side_bar, id: "#{id_f}_left_side_bar" })
617
648
  new_left_side_bar.remove(:box_color)
618
649
  new_left_side_bar.set(left_side_bar)
619
650
  end
@@ -646,13 +677,22 @@ new(molecule: :show) do |page_id, &bloc|
646
677
  main_page
647
678
  end
648
679
 
680
+
681
+
649
682
  new(molecule: :buttons) do |params, &bloc|
683
+
684
+ keys_to_keep = [:inactive, :active]
685
+ remaining_params = remove_key_pair_but(params, keys_to_keep)
686
+ params = filter_keys_to_keep(params, keys_to_keep)
687
+
650
688
  role_f = params.delete(:role)
651
689
  actor_f = params.delete(:actor)
652
690
  params_saf = deep_copy(params)
653
- context = params.delete(:attach) || :view
654
- id_f = params.delete(:id) || identity_generator
691
+ context = remaining_params.delete(:attach) || :view
692
+ id_f = remaining_params.delete(:id) || identity_generator
655
693
  main = grab(context).box({ id: id_f })
694
+ main.set(remaining_params)
695
+
656
696
  main.role(role_f) || main.role(:buttons)
657
697
  main.actor(actor_f) if actor_f
658
698
  main.color({ blue: 0.5, red: 1, green: 1, alpha: 0 })
@@ -19,4 +19,20 @@ class Atome
19
19
  JS
20
20
  JS.eval(ruby_wasm_code).to_f
21
21
  end
22
+
23
+ def to_percent(property)
24
+ parent = grab(attach)
25
+ parent_width = parent.to_px(:width)
26
+ parent_height = parent.to_px(:height)
27
+ property_needed_px = to_px(property)
28
+ case property
29
+ when :width, :left
30
+ "#{(property_needed_px / parent_width.to_f) * 100}%"
31
+ when :height, :top
32
+ "#{(property_needed_px / parent_height.to_f) * 100}%"
33
+ else
34
+ raise ArgumentError # unsupported property use left , top, width an height
35
+ end
36
+ end
37
+
22
38
  end
@@ -56,14 +56,19 @@ puts " menus_found => #{menus_found}"
56
56
 
57
57
  bloc_to_add= {height: 156, color: :green}
58
58
  bloc_to_add2= {height: 99, color: :blue}
59
- bloc_to_add3= {height: 333, color: :orange}
59
+ bloc_to_add3= {height: 333, color: :orange, subs:{contact: {width: '33%'}, project: {width: '33%'}, calendar: {width: '33%'}}}
60
60
  a.insert({page3: {block1: bloc_to_add , block2: bloc_to_add2, block3: bloc_to_add3}})
61
- puts " blocks => #{a.blocks}"
62
- wait 3 do
61
+
62
+
63
+ wait 1 do
63
64
  # how to remove blocks
64
65
  a.extract({page3: :block1})
65
66
  end
66
67
 
67
68
  a.show(:page3)
69
+ # how access blocks
70
+ # wait 3 do
71
+ # grab(:block2).color(:black)
72
+ # end
68
73
 
69
74
 
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+
4
+
5
+ view_width = parent_found.to_px(:width)
6
+ view_height = parent_found.to_px(:height)
7
+
8
+
9
+ text({data: "view width in px : #{view_width}, height: #{view_height}" })
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.7.4.2
4
+ version: 0.5.7.4.3
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-06-18 00:00:00.000000000 Z
11
+ date: 2024-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eventmachine
@@ -656,6 +656,7 @@ files:
656
656
  - vendor/assets/application/examples/text.rb
657
657
  - vendor/assets/application/examples/text_align.rb
658
658
  - vendor/assets/application/examples/tick.rb
659
+ - vendor/assets/application/examples/to_px.rb
659
660
  - vendor/assets/application/examples/tools.rb
660
661
  - vendor/assets/application/examples/touch.rb
661
662
  - vendor/assets/application/examples/type_mutation.rb