drawio_dsl 0.5.5 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (201) hide show
  1. checksums.yaml +4 -4
  2. data/.builders/.templates/basic/drawio_extensions.rb +57 -0
  3. data/.builders/.templates/basic/schema_require.rb +3 -1
  4. data/.builders/blueprint/shapes.rb +3 -1
  5. data/.builders/generators/10-transform-drawio-js.rb +195 -0
  6. data/.builders/generators/20-drawio-extensions.rb +41 -0
  7. data/.builders/generators/project_plans/drawio_dsl.rb +15 -9
  8. data/.builders/generators/project_plans/k_doc.rb +39 -0
  9. data/.builders/generators/sample_diagrams/05-samples.rb +23 -0
  10. data/.builders/generators/sample_diagrams/15-grid-direction.rb +0 -8
  11. data/.builders/generators/sample_diagrams/20-styles.rb +1 -2
  12. data/.rubocop.yml +4 -1
  13. data/CHANGELOG.md +21 -0
  14. data/README.md +2 -0
  15. data/docs/extensions/analyti_cs.svg +3 -0
  16. data/docs/extensions/android_inputs.svg +3 -0
  17. data/docs/extensions/app_services.svg +3 -0
  18. data/docs/extensions/appliances.svg +3 -0
  19. data/docs/extensions/arrows.svg +3 -0
  20. data/docs/extensions/aws_17___analyti_cs.svg +3 -0
  21. data/docs/extensions/aws_17___application_services.svg +3 -0
  22. data/docs/extensions/aws_17___artificial_intelligence.svg +3 -0
  23. data/docs/extensions/aws_17___business_productivity.svg +3 -0
  24. data/docs/extensions/aws_17___compute.svg +3 -0
  25. data/docs/extensions/aws_17___contact_center.svg +3 -0
  26. data/docs/extensions/aws_17___containers.svg +3 -0
  27. data/docs/extensions/aws_17___database.svg +3 -0
  28. data/docs/extensions/aws_17___desktop_app_straning.svg +3 -0
  29. data/docs/extensions/aws_17___developer_tools.svg +3 -0
  30. data/docs/extensions/aws_17___game_development.svg +3 -0
  31. data/docs/extensions/aws_17___general.svg +3 -0
  32. data/docs/extensions/aws_17___io_t.svg +3 -0
  33. data/docs/extensions/aws_17___management.svg +3 -0
  34. data/docs/extensions/aws_17___messaging.svg +3 -0
  35. data/docs/extensions/aws_17___migration.svg +3 -0
  36. data/docs/extensions/aws_17___mobile_services.svg +3 -0
  37. data/docs/extensions/aws_17___networking_content_delivery.svg +3 -0
  38. data/docs/extensions/aws_17___on_demand_workforce.svg +3 -0
  39. data/docs/extensions/aws_17___sdks.svg +3 -0
  40. data/docs/extensions/aws_17___serurity_identity_and_compliance.svg +3 -0
  41. data/docs/extensions/aws_17___storage.svg +3 -0
  42. data/docs/extensions/aws_19___application_integration.svg +3 -0
  43. data/docs/extensions/aws_19___ar_vr.svg +3 -0
  44. data/docs/extensions/aws_19___blockchain.svg +3 -0
  45. data/docs/extensions/aws_19___business_applications.svg +3 -0
  46. data/docs/extensions/aws_19___compute.svg +3 -0
  47. data/docs/extensions/aws_19___cost_management.svg +3 -0
  48. data/docs/extensions/aws_19___customer_engagement.svg +3 -0
  49. data/docs/extensions/aws_19___database.svg +3 -0
  50. data/docs/extensions/aws_19___desktop_app_streaming.svg +3 -0
  51. data/docs/extensions/aws_19___developer_tools.svg +3 -0
  52. data/docs/extensions/aws_19___ec2_instance_types.svg +3 -0
  53. data/docs/extensions/aws_19___game_tech.svg +3 -0
  54. data/docs/extensions/aws_19___general.svg +3 -0
  55. data/docs/extensions/aws_19___groups_note_repeated_below_without_v2.svg +3 -0
  56. data/docs/extensions/aws_19___internet_of_things.svg +3 -0
  57. data/docs/extensions/aws_19___machine_learning.svg +3 -0
  58. data/docs/extensions/aws_19___management_governance.svg +3 -0
  59. data/docs/extensions/aws_19___media_services.svg +3 -0
  60. data/docs/extensions/aws_19___migration_transfer.svg +3 -0
  61. data/docs/extensions/aws_19___mobile.svg +3 -0
  62. data/docs/extensions/aws_19___networking_content_delivery.svg +3 -0
  63. data/docs/extensions/aws_19___roboti_cs.svg +3 -0
  64. data/docs/extensions/aws_19___satellite.svg +3 -0
  65. data/docs/extensions/aws_19___security_identity_compliance.svg +3 -0
  66. data/docs/extensions/aws_19___storage.svg +3 -0
  67. data/docs/extensions/aws_19_analyti_cs.svg +3 -0
  68. data/docs/extensions/aws_general.svg +3 -0
  69. data/docs/extensions/azure2019.svg +3 -0
  70. data/docs/extensions/azure_cloud.svg +3 -0
  71. data/docs/extensions/azure_enterprise.svg +3 -0
  72. data/docs/extensions/azure_vms.svg +3 -0
  73. data/docs/extensions/basic_network_shapes.svg +3 -0
  74. data/docs/extensions/beds.svg +3 -0
  75. data/docs/extensions/bpmn_2_0.svg +3 -0
  76. data/docs/extensions/cisco_basic.svg +3 -0
  77. data/docs/extensions/cisco_extended.svg +3 -0
  78. data/docs/extensions/common_elements.svg +3 -0
  79. data/docs/extensions/computers_and_monitors.svg +3 -0
  80. data/docs/extensions/containers.svg +3 -0
  81. data/docs/extensions/content_delivery.svg +3 -0
  82. data/docs/extensions/couches.svg +3 -0
  83. data/docs/extensions/cubicle_walls.svg +3 -0
  84. data/docs/extensions/data_flow.svg +3 -0
  85. data/docs/extensions/database.svg +3 -0
  86. data/docs/extensions/deployment.svg +3 -0
  87. data/docs/extensions/desks.svg +3 -0
  88. data/docs/extensions/detailed_network_diagrams.svg +3 -0
  89. data/docs/extensions/developer_tools.svg +3 -0
  90. data/docs/extensions/doors_windows.svg +3 -0
  91. data/docs/extensions/ec2.svg +3 -0
  92. data/docs/extensions/electrical.svg +3 -0
  93. data/docs/extensions/electroni_cs.svg +3 -0
  94. data/docs/extensions/enterprise_application.svg +3 -0
  95. data/docs/extensions/equipment.svg +3 -0
  96. data/docs/extensions/ext_shapes.svg +3 -0
  97. data/docs/extensions/flowchart.svg +3 -0
  98. data/docs/extensions/geometric_shapes.svg +3 -0
  99. data/docs/extensions/google_cloud_platform.svg +3 -0
  100. data/docs/extensions/heat_exchangers.svg +3 -0
  101. data/docs/extensions/i_os_6_i_pad_controls.svg +3 -0
  102. data/docs/extensions/i_os_6_i_pad_elements.svg +3 -0
  103. data/docs/extensions/i_os_6_i_pad_icons.svg +3 -0
  104. data/docs/extensions/i_os_6_i_phone_controls.svg +3 -0
  105. data/docs/extensions/i_os_6_i_phone_elements.svg +3 -0
  106. data/docs/extensions/i_os_6_i_phone_icons.svg +3 -0
  107. data/docs/extensions/i_os_devices.svg +3 -0
  108. data/docs/extensions/i_os_icons.svg +3 -0
  109. data/docs/extensions/i_os_mockups.svg +3 -0
  110. data/docs/extensions/i_os_ui_components.svg +3 -0
  111. data/docs/extensions/i_pad_elements.svg +3 -0
  112. data/docs/extensions/i_phone_elements.svg +3 -0
  113. data/docs/extensions/information.svg +3 -0
  114. data/docs/extensions/instruments.svg +3 -0
  115. data/docs/extensions/internet_of_things.svg +3 -0
  116. data/docs/extensions/kanban.svg +3 -0
  117. data/docs/extensions/kitchen.svg +3 -0
  118. data/docs/extensions/kubernetes_icons.svg +3 -0
  119. data/docs/extensions/logic_gates.svg +3 -0
  120. data/docs/extensions/materials.svg +3 -0
  121. data/docs/extensions/message_routing.svg +3 -0
  122. data/docs/extensions/message_transformation.svg +3 -0
  123. data/docs/extensions/messaging_channels.svg +3 -0
  124. data/docs/extensions/messaging_endpoints.svg +3 -0
  125. data/docs/extensions/messaging_systems.svg +3 -0
  126. data/docs/extensions/mind_map.svg +3 -0
  127. data/docs/extensions/misc.svg +3 -0
  128. data/docs/extensions/misc_floorplan.svg +3 -0
  129. data/docs/extensions/miscellaneous.svg +3 -0
  130. data/docs/extensions/mobile_services.svg +3 -0
  131. data/docs/extensions/network.svg +3 -0
  132. data/docs/extensions/networking.svg +3 -0
  133. data/docs/extensions/on_demand.svg +3 -0
  134. data/docs/extensions/piping.svg +3 -0
  135. data/docs/extensions/power_sources.svg +3 -0
  136. data/docs/extensions/processes.svg +3 -0
  137. data/docs/extensions/pumps.svg +3 -0
  138. data/docs/extensions/repeated_from_the_above.svg +3 -0
  139. data/docs/extensions/restroom.svg +3 -0
  140. data/docs/extensions/s3.svg +3 -0
  141. data/docs/extensions/sdks.svg +3 -0
  142. data/docs/extensions/security_identity.svg +3 -0
  143. data/docs/extensions/server_racks.svg +3 -0
  144. data/docs/extensions/shipments.svg +3 -0
  145. data/docs/extensions/site_map.svg +3 -0
  146. data/docs/extensions/stairs.svg +3 -0
  147. data/docs/extensions/standard.svg +3 -0
  148. data/docs/extensions/system_management.svg +3 -0
  149. data/docs/extensions/tables_chairs.svg +3 -0
  150. data/docs/extensions/technology.svg +3 -0
  151. data/docs/extensions/transistors.svg +3 -0
  152. data/docs/extensions/ui_containers.svg +3 -0
  153. data/docs/extensions/ui_input.svg +3 -0
  154. data/docs/extensions/ui_menus.svg +3 -0
  155. data/docs/extensions/ui_misc.svg +3 -0
  156. data/docs/extensions/ui_widgets.svg +3 -0
  157. data/docs/extensions/uml_class_diagram.svg +3 -0
  158. data/docs/extensions/uml_component.svg +3 -0
  159. data/docs/extensions/uml_entity_relationship.svg +3 -0
  160. data/docs/extensions/uml_sequence.svg +3 -0
  161. data/docs/extensions/uml_state_activity.svg +3 -0
  162. data/docs/extensions/uml_use_case.svg +3 -0
  163. data/docs/extensions/value_stream_mapping.svg +3 -0
  164. data/docs/extensions/valves.svg +3 -0
  165. data/docs/extensions/venn_gradient.svg +3 -0
  166. data/docs/extensions/venn_plain.svg +3 -0
  167. data/docs/extensions/vessels.svg +3 -0
  168. data/docs/extensions.md +614 -0
  169. data/docs/project_done.svg +1 -1
  170. data/docs/project_in_progress.svg +1 -1
  171. data/docs/project_todo.svg +1 -1
  172. data/docs/samples/grid-direction-horizontal.svg +1 -1
  173. data/docs/samples/grid-direction-vertical.svg +1 -1
  174. data/docs/samples/samples.svg +3 -0
  175. data/docs/samples/styles-glass.svg +1 -1
  176. data/docs/samples/styles-plain.svg +1 -1
  177. data/docs/samples/styles-rounded.svg +1 -1
  178. data/docs/samples/styles-shadow.svg +1 -1
  179. data/docs/samples/styles-sketch.svg +1 -1
  180. data/docs/samples/themes-random.svg +1 -1
  181. data/lib/drawio_dsl/dom_builder.rb +23 -8
  182. data/lib/drawio_dsl/drawio_extensions.json +14024 -0
  183. data/lib/drawio_dsl/drawio_extensions.rb +4599 -0
  184. data/lib/drawio_dsl/drawio_extensions_active.rb +32 -0
  185. data/lib/drawio_dsl/layout_engine.rb +17 -7
  186. data/lib/drawio_dsl/schema/_.rb +2 -0
  187. data/lib/drawio_dsl/schema/diagram.rb +1 -1
  188. data/lib/drawio_dsl/schema/layouts/flex_layout.rb +1 -2
  189. data/lib/drawio_dsl/schema/layouts/grid_layout.rb +1 -2
  190. data/lib/drawio_dsl/schema/layouts/layout.rb +0 -3
  191. data/lib/drawio_dsl/schema/node.rb +21 -2
  192. data/lib/drawio_dsl/schema/node_list.rb +20 -1
  193. data/lib/drawio_dsl/schema/page.rb +14 -3
  194. data/lib/drawio_dsl/schema/shapes/shape.rb +6 -4
  195. data/lib/drawio_dsl/schema/virtual/anchor.rb +26 -0
  196. data/lib/drawio_dsl/version.rb +1 -1
  197. data/lib/drawio_dsl/xml_builder.rb +4 -8
  198. data/lib/drawio_dsl.rb +2 -0
  199. data/package-lock.json +2 -2
  200. data/package.json +1 -1
  201. metadata +166 -2
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module DrawIoExtensionsActive
5
+ def apply_active_flags
6
+ sections.each do |section|
7
+ section[:shapes].each do |shape|
8
+ shape[:active] = check_if_active(shape)
9
+ end
10
+ section[:active] = section[:shapes].any? { |s| s[:active] }
11
+ end
12
+ end
13
+
14
+ def check_if_active(shape)
15
+ style = shape[:style]
16
+
17
+ ban = %w[
18
+ mxCompositeShape
19
+ strokeColor=none;fillColor=none
20
+ shape=image
21
+ shadow=1
22
+ shape=partialRectangle;right=0
23
+ shape=partialRectangle;right=0;left=0
24
+ ]
25
+
26
+ return false if style.empty?
27
+ return false if ban.include?(style)
28
+
29
+ true
30
+ end
31
+ end
32
+ end
@@ -23,13 +23,23 @@ module DrawioDsl
23
23
  page.position_y = page.margin_top
24
24
 
25
25
  page.nodes.all.each do |node|
26
- case node.classification
27
- when :layout_rule
28
- @current_layout = node
29
- when :shape
30
- current_layout&.position_shape(node)
31
- end
32
- # node.debug(format: :row)
26
+ traverse_node(node)
27
+ end
28
+ end
29
+
30
+ def traverse_node(node)
31
+ process_node(node)
32
+ node.nodes.all.each do |child|
33
+ traverse_node(child)
34
+ end
35
+ end
36
+
37
+ def process_node(node)
38
+ case node.classification
39
+ when :layout_rule
40
+ @current_layout = node
41
+ when :shape
42
+ current_layout&.position_shape(node)
33
43
  end
34
44
  end
35
45
  end
@@ -49,3 +49,5 @@ require_relative 'shapes/triangle'
49
49
  require_relative 'shapes/embed_row'
50
50
  require_relative 'shapes/embed_col50'
51
51
  require_relative 'shapes/embed_col200'
52
+
53
+ require_relative 'virtual/anchor'
@@ -49,7 +49,7 @@ module DrawioDsl
49
49
  theme: theme,
50
50
  palette: palette.to_h,
51
51
  style: style.to_h,
52
- pages: pages.map(&:to_h)
52
+ pages: pages.select(&:active?).map(&:to_h)
53
53
  }
54
54
  end
55
55
  end
@@ -10,13 +10,12 @@ module DrawioDsl
10
10
  attr_reader :perpendicular_max
11
11
 
12
12
  def initialize(page, **args)
13
- @type = :flex_layout
14
13
  @direction = args[:direction] || :horizontal
15
14
  @wrap_at = args[:wrap_at] || (direction == :horizontal ? 1000 : 800)
16
15
  @gap = args[:gap] || 20
17
16
  @perpendicular_max = 0
18
17
 
19
- super(page, **args)
18
+ super(page, **args.merge(type: :flex_layout))
20
19
  end
21
20
 
22
21
  def position_shape(shape)
@@ -15,7 +15,6 @@ module DrawioDsl
15
15
 
16
16
  # rubocop:disable Metrics/CyclomaticComplexity
17
17
  def initialize(page, **args)
18
- @type = :grid_layout
19
18
  @direction = args[:direction] || :horizontal
20
19
  @wrap_at = args[:wrap_at] || 5
21
20
  @grid_size = args[:grid_size] || 220
@@ -25,7 +24,7 @@ module DrawioDsl
25
24
  @v_align = args[:v_align] || :center
26
25
  @cell_no = 1
27
26
 
28
- super(page, **args)
27
+ super(page, **args.merge(type: :grid_layout))
29
28
  end
30
29
  # rubocop:enable Metrics/CyclomaticComplexity
31
30
 
@@ -4,8 +4,6 @@ module DrawioDsl
4
4
  module Schema
5
5
  # Provides base configuration for automatic layouts
6
6
  class Layout < Node
7
- attr_accessor :type
8
-
9
7
  # represents the x coordinate of the top left corner layout area
10
8
  # this coordinate is based on the current location of the page
11
9
  attr_accessor :anchor_x
@@ -31,7 +29,6 @@ module DrawioDsl
31
29
 
32
30
  def to_h
33
31
  super.merge(
34
- type: type,
35
32
  anchor_x: anchor_x,
36
33
  anchor_y: anchor_y
37
34
  )
@@ -7,19 +7,38 @@ module DrawioDsl
7
7
  class Node
8
8
  attr_accessor :id
9
9
  attr_accessor :page
10
+ attr_accessor :parent
10
11
  attr_accessor :classification
12
+ attr_accessor :type
13
+ attr_accessor :nodes
11
14
 
12
15
  def initialize(page, **args)
13
16
  @page = page
14
17
  @id = args[:id]
18
+ @parent = args[:parent]
15
19
  @classification = args[:classification] || :unknown
20
+ @type = args[:type] || :unknown
21
+ @nodes = NodeList.new
16
22
  end
17
23
 
18
24
  def to_h
19
- {
25
+ result = {
20
26
  id: id,
21
- classification: classification
27
+ parent_id: parent&.id,
28
+ classification: classification,
29
+ type: type
22
30
  }
31
+ result[:nodes] = nodes.to_h if nodes.any?
32
+ result
33
+ end
34
+
35
+ def root?
36
+ parent.nil? || parent.is_a?(DrawioDsl::Schema::Page)
37
+ end
38
+
39
+ def add_node(node)
40
+ @nodes.add(self, node)
41
+ node
23
42
  end
24
43
 
25
44
  # :nocov:
@@ -9,7 +9,8 @@ module DrawioDsl
9
9
  @nodes = []
10
10
  end
11
11
 
12
- def add(node)
12
+ def add(parent, node)
13
+ node.parent = parent
13
14
  @nodes << node
14
15
  end
15
16
 
@@ -29,6 +30,24 @@ module DrawioDsl
29
30
  @nodes.length
30
31
  end
31
32
 
33
+ def empty?
34
+ @nodes.empty?
35
+ end
36
+
37
+ def any?
38
+ @nodes.any?
39
+ end
40
+
41
+ def first
42
+ @nodes.first
43
+ end
44
+
45
+ def as_xml(xml)
46
+ nodes.each do |node|
47
+ node.as_xml(xml) if node.respond_to?(:as_xml)
48
+ end
49
+ end
50
+
32
51
  def to_h
33
52
  @nodes.map(&:to_h)
34
53
  end
@@ -11,6 +11,7 @@ module DrawioDsl
11
11
  attr_accessor :position_y
12
12
 
13
13
  attr_accessor :id
14
+ attr_accessor :active
14
15
  attr_reader :name
15
16
  attr_reader :theme
16
17
  attr_reader :style
@@ -39,6 +40,7 @@ module DrawioDsl
39
40
  @diagram = diagram
40
41
 
41
42
  @id = args[:id]
43
+ @active = args[:active].nil? ? true : !args[:active].nil?
42
44
  @name = args[:name]
43
45
  @theme = args[:theme] || diagram.theme
44
46
 
@@ -90,9 +92,18 @@ module DrawioDsl
90
92
  end
91
93
  # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/MethodLength
92
94
 
93
- # def shapes
94
- # nodes.shapes
95
- # end
95
+ def active?
96
+ !!@active
97
+ end
98
+
99
+ def add_node(node)
100
+ @nodes.add(self, node)
101
+ node
102
+ end
103
+
104
+ def as_xml(xml)
105
+ nodes.as_xml(xml)
106
+ end
96
107
 
97
108
  def to_h
98
109
  {
@@ -37,7 +37,6 @@ module DrawioDsl
37
37
  attr_accessor :font_color
38
38
  attr_accessor :gradient
39
39
 
40
- attr_accessor :type
41
40
  attr_accessor :text_only
42
41
  attr_accessor :x
43
42
  attr_accessor :y
@@ -85,7 +84,6 @@ module DrawioDsl
85
84
 
86
85
  def style
87
86
  key_values = []
88
- key_values << style_modifiers unless style_modifiers.empty?
89
87
  key_values << "whiteSpace=#{white_space}" if white_space
90
88
  key_values << "html=#{html}" if html
91
89
  key_values << "rounded=#{rounded}" if rounded
@@ -96,20 +94,22 @@ module DrawioDsl
96
94
  key_values << "strokeColor=#{stroke_color}" if stroke_color
97
95
  key_values << "fontColor=#{font_color}" if font_color
98
96
  key_values << "gradient=#{gradient}" if gradient
97
+ key_values << style_modifiers unless style_modifiers.empty?
99
98
 
100
99
  key_values.join(';')
101
100
  end
102
101
  # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
103
102
 
104
103
  def as_xml(xml)
105
- xml.mxCell(id: id, value: title, style: style, vertex: 1, parent: "#{page.id}-B") do
104
+ xml.mxCell(id: id, value: title, style: style, vertex: 1, parent: parent&.id) do
106
105
  xml.mxGeometry(x: x, y: y, width: w, height: h, as: 'geometry')
107
106
  end
108
107
  end
109
108
 
110
109
  def to_h
111
- {
110
+ result = {
112
111
  id: id,
112
+ parent_id: parent&.id,
113
113
  classification: classification,
114
114
  type: type,
115
115
  x: x,
@@ -118,6 +118,8 @@ module DrawioDsl
118
118
  h: h,
119
119
  style: style
120
120
  }
121
+ result[:nodes] = nodes.to_h if nodes.any?
122
+ result
121
123
  end
122
124
 
123
125
  # :nocov:
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DrawioDsl
4
+ module Schema
5
+ # Provides an anchor point on the page for elements to hang from
6
+ class Anchor < Node
7
+ def initialize(page, **args)
8
+ args[:classification] = :anchor
9
+ super(page, **args)
10
+ end
11
+
12
+ # xml.mxCell(id: "#{page.id}-A")
13
+ # xml.mxCell(id: "#{page.id}-B", parent: "#{page.id}-A")
14
+
15
+ def as_xml(xml)
16
+ if parent
17
+ xml.mxCell(id: id, parent: parent.id)
18
+ else
19
+ xml.mxCell(id: id)
20
+ end
21
+
22
+ nodes.as_xml(xml)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DrawioDsl
4
- VERSION = '0.5.5'
4
+ VERSION = '0.6.0'
5
5
  end
@@ -22,13 +22,13 @@ module DrawioDsl
22
22
 
23
23
  def build_diagram(xml)
24
24
  xml.mxfile(host: diagram.host) do
25
- diagram.pages.each do |page|
25
+ diagram.pages.select(&:active?).each do |page|
26
26
  build_page(xml, page)
27
27
  end
28
28
  end
29
29
  end
30
30
 
31
- # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/BlockLength
31
+ # rubocop:disable Metrics/AbcSize
32
32
  def build_page(xml, page)
33
33
  xml.diagram(id: page.id, name: page.name) do
34
34
  xml.mxGraphModel(
@@ -50,15 +50,11 @@ module DrawioDsl
50
50
  shadow: page.page_shadow
51
51
  ) do
52
52
  xml.root do
53
- xml.mxCell(id: "#{page.id}-A")
54
- xml.mxCell(id: "#{page.id}-B", parent: "#{page.id}-A")
55
- page.nodes.all.each do |node|
56
- node.as_xml(xml) if node.classification == :shape
57
- end
53
+ page.as_xml(xml)
58
54
  end
59
55
  end
60
56
  end
61
57
  end
62
- # rubocop:enable Metrics/MethodLength, Metrics/AbcSize, Metrics/BlockLength
58
+ # rubocop:enable Metrics/AbcSize
63
59
  end
64
60
  end
data/lib/drawio_dsl.rb CHANGED
@@ -18,6 +18,8 @@ require_relative 'drawio_dsl/dom_builder'
18
18
  require_relative 'drawio_dsl/xml_builder'
19
19
  require_relative 'drawio_dsl/layout_engine'
20
20
  require_relative 'drawio_dsl/drawio_shapes'
21
+ require_relative 'drawio_dsl/drawio_extensions_active'
22
+ require_relative 'drawio_dsl/drawio_extensions'
21
23
  require_relative 'drawio_dsl/drawio'
22
24
 
23
25
  module DrawioDsl
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "drawio_dsl",
3
- "version": "0.5.5",
3
+ "version": "0.6.0",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "drawio_dsl",
9
- "version": "0.5.5",
9
+ "version": "0.6.0",
10
10
  "devDependencies": {
11
11
  "@klueless-js/semantic-release-rubygem": "github:klueless-js/semantic-release-rubygem",
12
12
  "@semantic-release/changelog": "^6.0.1",
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drawio_dsl",
3
- "version": "0.5.5",
3
+ "version": "0.6.0",
4
4
  "description": "DrawIO DSL can build DrawIO diagrams using a Domain Specific Language",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: drawio_dsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-08 00:00:00.000000000 Z
11
+ date: 2022-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: k_config
@@ -76,6 +76,7 @@ files:
76
76
  - ".builders/.data/shapes.json"
77
77
  - ".builders/.templates/basic/configuration_shapes.rb"
78
78
  - ".builders/.templates/basic/dom_builder_shapes.rb"
79
+ - ".builders/.templates/basic/drawio_extensions.rb"
79
80
  - ".builders/.templates/basic/drawio_shapes.rb"
80
81
  - ".builders/.templates/basic/schema_require.rb"
81
82
  - ".builders/.templates/basic/schema_shape.rb"
@@ -85,7 +86,11 @@ files:
85
86
  - ".builders/boot.rb"
86
87
  - ".builders/generators/01-bootstrap.rb"
87
88
  - ".builders/generators/02-generate-app.rb"
89
+ - ".builders/generators/10-transform-drawio-js.rb"
90
+ - ".builders/generators/20-drawio-extensions.rb"
88
91
  - ".builders/generators/project_plans/drawio_dsl.rb"
92
+ - ".builders/generators/project_plans/k_doc.rb"
93
+ - ".builders/generators/sample_diagrams/05-samples.rb"
89
94
  - ".builders/generators/sample_diagrams/10-page-margin.rb"
90
95
  - ".builders/generators/sample_diagrams/15-grid-direction.rb"
91
96
  - ".builders/generators/sample_diagrams/16-grid-alignment.rb"
@@ -105,6 +110,160 @@ files:
105
110
  - Rakefile
106
111
  - bin/console
107
112
  - bin/setup
113
+ - docs/extensions.md
114
+ - docs/extensions/analyti_cs.svg
115
+ - docs/extensions/android_inputs.svg
116
+ - docs/extensions/app_services.svg
117
+ - docs/extensions/appliances.svg
118
+ - docs/extensions/arrows.svg
119
+ - docs/extensions/aws_17___analyti_cs.svg
120
+ - docs/extensions/aws_17___application_services.svg
121
+ - docs/extensions/aws_17___artificial_intelligence.svg
122
+ - docs/extensions/aws_17___business_productivity.svg
123
+ - docs/extensions/aws_17___compute.svg
124
+ - docs/extensions/aws_17___contact_center.svg
125
+ - docs/extensions/aws_17___containers.svg
126
+ - docs/extensions/aws_17___database.svg
127
+ - docs/extensions/aws_17___desktop_app_straning.svg
128
+ - docs/extensions/aws_17___developer_tools.svg
129
+ - docs/extensions/aws_17___game_development.svg
130
+ - docs/extensions/aws_17___general.svg
131
+ - docs/extensions/aws_17___io_t.svg
132
+ - docs/extensions/aws_17___management.svg
133
+ - docs/extensions/aws_17___messaging.svg
134
+ - docs/extensions/aws_17___migration.svg
135
+ - docs/extensions/aws_17___mobile_services.svg
136
+ - docs/extensions/aws_17___networking_content_delivery.svg
137
+ - docs/extensions/aws_17___on_demand_workforce.svg
138
+ - docs/extensions/aws_17___sdks.svg
139
+ - docs/extensions/aws_17___serurity_identity_and_compliance.svg
140
+ - docs/extensions/aws_17___storage.svg
141
+ - docs/extensions/aws_19___application_integration.svg
142
+ - docs/extensions/aws_19___ar_vr.svg
143
+ - docs/extensions/aws_19___blockchain.svg
144
+ - docs/extensions/aws_19___business_applications.svg
145
+ - docs/extensions/aws_19___compute.svg
146
+ - docs/extensions/aws_19___cost_management.svg
147
+ - docs/extensions/aws_19___customer_engagement.svg
148
+ - docs/extensions/aws_19___database.svg
149
+ - docs/extensions/aws_19___desktop_app_streaming.svg
150
+ - docs/extensions/aws_19___developer_tools.svg
151
+ - docs/extensions/aws_19___ec2_instance_types.svg
152
+ - docs/extensions/aws_19___game_tech.svg
153
+ - docs/extensions/aws_19___general.svg
154
+ - docs/extensions/aws_19___groups_note_repeated_below_without_v2.svg
155
+ - docs/extensions/aws_19___internet_of_things.svg
156
+ - docs/extensions/aws_19___machine_learning.svg
157
+ - docs/extensions/aws_19___management_governance.svg
158
+ - docs/extensions/aws_19___media_services.svg
159
+ - docs/extensions/aws_19___migration_transfer.svg
160
+ - docs/extensions/aws_19___mobile.svg
161
+ - docs/extensions/aws_19___networking_content_delivery.svg
162
+ - docs/extensions/aws_19___roboti_cs.svg
163
+ - docs/extensions/aws_19___satellite.svg
164
+ - docs/extensions/aws_19___security_identity_compliance.svg
165
+ - docs/extensions/aws_19___storage.svg
166
+ - docs/extensions/aws_19_analyti_cs.svg
167
+ - docs/extensions/aws_general.svg
168
+ - docs/extensions/azure2019.svg
169
+ - docs/extensions/azure_cloud.svg
170
+ - docs/extensions/azure_enterprise.svg
171
+ - docs/extensions/azure_vms.svg
172
+ - docs/extensions/basic_network_shapes.svg
173
+ - docs/extensions/beds.svg
174
+ - docs/extensions/bpmn_2_0.svg
175
+ - docs/extensions/cisco_basic.svg
176
+ - docs/extensions/cisco_extended.svg
177
+ - docs/extensions/common_elements.svg
178
+ - docs/extensions/computers_and_monitors.svg
179
+ - docs/extensions/containers.svg
180
+ - docs/extensions/content_delivery.svg
181
+ - docs/extensions/couches.svg
182
+ - docs/extensions/cubicle_walls.svg
183
+ - docs/extensions/data_flow.svg
184
+ - docs/extensions/database.svg
185
+ - docs/extensions/deployment.svg
186
+ - docs/extensions/desks.svg
187
+ - docs/extensions/detailed_network_diagrams.svg
188
+ - docs/extensions/developer_tools.svg
189
+ - docs/extensions/doors_windows.svg
190
+ - docs/extensions/ec2.svg
191
+ - docs/extensions/electrical.svg
192
+ - docs/extensions/electroni_cs.svg
193
+ - docs/extensions/enterprise_application.svg
194
+ - docs/extensions/equipment.svg
195
+ - docs/extensions/ext_shapes.svg
196
+ - docs/extensions/flowchart.svg
197
+ - docs/extensions/geometric_shapes.svg
198
+ - docs/extensions/google_cloud_platform.svg
199
+ - docs/extensions/heat_exchangers.svg
200
+ - docs/extensions/i_os_6_i_pad_controls.svg
201
+ - docs/extensions/i_os_6_i_pad_elements.svg
202
+ - docs/extensions/i_os_6_i_pad_icons.svg
203
+ - docs/extensions/i_os_6_i_phone_controls.svg
204
+ - docs/extensions/i_os_6_i_phone_elements.svg
205
+ - docs/extensions/i_os_6_i_phone_icons.svg
206
+ - docs/extensions/i_os_devices.svg
207
+ - docs/extensions/i_os_icons.svg
208
+ - docs/extensions/i_os_mockups.svg
209
+ - docs/extensions/i_os_ui_components.svg
210
+ - docs/extensions/i_pad_elements.svg
211
+ - docs/extensions/i_phone_elements.svg
212
+ - docs/extensions/information.svg
213
+ - docs/extensions/instruments.svg
214
+ - docs/extensions/internet_of_things.svg
215
+ - docs/extensions/kanban.svg
216
+ - docs/extensions/kitchen.svg
217
+ - docs/extensions/kubernetes_icons.svg
218
+ - docs/extensions/logic_gates.svg
219
+ - docs/extensions/materials.svg
220
+ - docs/extensions/message_routing.svg
221
+ - docs/extensions/message_transformation.svg
222
+ - docs/extensions/messaging_channels.svg
223
+ - docs/extensions/messaging_endpoints.svg
224
+ - docs/extensions/messaging_systems.svg
225
+ - docs/extensions/mind_map.svg
226
+ - docs/extensions/misc.svg
227
+ - docs/extensions/misc_floorplan.svg
228
+ - docs/extensions/miscellaneous.svg
229
+ - docs/extensions/mobile_services.svg
230
+ - docs/extensions/network.svg
231
+ - docs/extensions/networking.svg
232
+ - docs/extensions/on_demand.svg
233
+ - docs/extensions/piping.svg
234
+ - docs/extensions/power_sources.svg
235
+ - docs/extensions/processes.svg
236
+ - docs/extensions/pumps.svg
237
+ - docs/extensions/repeated_from_the_above.svg
238
+ - docs/extensions/restroom.svg
239
+ - docs/extensions/s3.svg
240
+ - docs/extensions/sdks.svg
241
+ - docs/extensions/security_identity.svg
242
+ - docs/extensions/server_racks.svg
243
+ - docs/extensions/shipments.svg
244
+ - docs/extensions/site_map.svg
245
+ - docs/extensions/stairs.svg
246
+ - docs/extensions/standard.svg
247
+ - docs/extensions/system_management.svg
248
+ - docs/extensions/tables_chairs.svg
249
+ - docs/extensions/technology.svg
250
+ - docs/extensions/transistors.svg
251
+ - docs/extensions/ui_containers.svg
252
+ - docs/extensions/ui_input.svg
253
+ - docs/extensions/ui_menus.svg
254
+ - docs/extensions/ui_misc.svg
255
+ - docs/extensions/ui_widgets.svg
256
+ - docs/extensions/uml_class_diagram.svg
257
+ - docs/extensions/uml_component.svg
258
+ - docs/extensions/uml_entity_relationship.svg
259
+ - docs/extensions/uml_sequence.svg
260
+ - docs/extensions/uml_state_activity.svg
261
+ - docs/extensions/uml_use_case.svg
262
+ - docs/extensions/value_stream_mapping.svg
263
+ - docs/extensions/valves.svg
264
+ - docs/extensions/venn_gradient.svg
265
+ - docs/extensions/venn_plain.svg
266
+ - docs/extensions/vessels.svg
108
267
  - docs/project-plan.md
109
268
  - docs/project_done.svg
110
269
  - docs/project_in_progress.svg
@@ -114,6 +273,7 @@ files:
114
273
  - docs/samples/grid-direction-horizontal.svg
115
274
  - docs/samples/grid-direction-vertical.svg
116
275
  - docs/samples/samples.md
276
+ - docs/samples/samples.svg
117
277
  - docs/samples/styles-glass.svg
118
278
  - docs/samples/styles-plain.svg
119
279
  - docs/samples/styles-rounded.svg
@@ -131,6 +291,9 @@ files:
131
291
  - lib/drawio_dsl/dom_builder.rb
132
292
  - lib/drawio_dsl/dom_builder_shapes.rb
133
293
  - lib/drawio_dsl/drawio.rb
294
+ - lib/drawio_dsl/drawio_extensions.json
295
+ - lib/drawio_dsl/drawio_extensions.rb
296
+ - lib/drawio_dsl/drawio_extensions_active.rb
134
297
  - lib/drawio_dsl/drawio_shapes.rb
135
298
  - lib/drawio_dsl/layout_engine.rb
136
299
  - lib/drawio_dsl/schema/_.rb
@@ -181,6 +344,7 @@ files:
181
344
  - lib/drawio_dsl/schema/shapes/step.rb
182
345
  - lib/drawio_dsl/schema/shapes/tick.rb
183
346
  - lib/drawio_dsl/schema/shapes/triangle.rb
347
+ - lib/drawio_dsl/schema/virtual/anchor.rb
184
348
  - lib/drawio_dsl/version.rb
185
349
  - lib/drawio_dsl/xml_builder.rb
186
350
  - package-lock.json