drawio_dsl 0.8.0 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.builders/.data/shapes.json +581 -362
  3. data/.builders/.templates/basic/configuration_shapes.rb +3 -3
  4. data/.builders/.templates/basic/dom_builder_shapes.rb +2 -1
  5. data/.builders/.templates/basic/drawio_shapes.rb +2 -2
  6. data/.builders/blueprint/shapes.rb +147 -44
  7. data/.builders/generators/02-generate-app.rb +3 -1
  8. data/.builders/generators/{project_plans/drawio_dsl.rb → project-plan.rb} +24 -13
  9. data/.builders/generators/sample_diagrams/05-samples.rb +19 -6
  10. data/.builders/generators/sample_diagrams/30-html-shapes.rb +6 -6
  11. data/.builders/generators/sample_diagrams/35-ids-and-arrows.rb +30 -0
  12. data/CHANGELOG.md +21 -0
  13. data/docs/project-plan/project.drawio +152 -0
  14. data/docs/project-plan/project_done.svg +3 -0
  15. data/docs/project-plan/project_in_progress.svg +3 -0
  16. data/docs/project-plan/project_todo.svg +3 -0
  17. data/docs/project-plan.md +3 -3
  18. data/docs/samples/styles-glass.svg +1 -1
  19. data/docs/samples/styles-plain.svg +1 -1
  20. data/docs/samples/styles-rounded.svg +1 -1
  21. data/docs/samples/styles-shadow.svg +1 -1
  22. data/docs/samples/styles-sketch.svg +1 -1
  23. data/lib/drawio_dsl/configuration_shapes.rb +44 -42
  24. data/lib/drawio_dsl/dom_builder_shapes.rb +86 -40
  25. data/lib/drawio_dsl/drawio_shapes.rb +89 -83
  26. data/lib/drawio_dsl/formatters/interface_formatter.rb +5 -3
  27. data/lib/drawio_dsl/formatters/klass_formatter.rb +4 -2
  28. data/lib/drawio_dsl/schema/_.rb +1 -0
  29. data/lib/drawio_dsl/schema/shapes/line.rb +9 -0
  30. data/lib/drawio_dsl/schema/shapes/shape.rb +24 -5
  31. data/lib/drawio_dsl/version.rb +1 -1
  32. data/package-lock.json +2 -2
  33. data/package.json +1 -1
  34. metadata +9 -7
  35. data/.builders/generators/project_plans/k_doc.rb +0 -39
  36. data/docs/project_done.svg +0 -3
  37. data/docs/project_in_progress.svg +0 -3
  38. data/docs/project_todo.svg +0 -3
@@ -5,7 +5,7 @@
5
5
  module DrawioDsl
6
6
  # Used to attach configuration to KConfig module
7
7
  module ConfigurationShapes
8
- ShapeDefaults = Struct.new(:type, :text_only, :x, :y, :w, :h, :style_modifiers, keyword_init: true)
8
+ ShapeDefaults = Struct.new(:type, :category, :x, :y, :w, :h, :style_modifiers, keyword_init: true)
9
9
  Shapes = Struct.new(
10
10
  :shape,
11
11
  {{#each shapes}}
@@ -16,9 +16,9 @@ module DrawioDsl
16
16
 
17
17
  def add_shapes
18
18
  @shapes = Shapes.new(
19
- shape: ShapeDefaults.new(type: :shape, text_only: false, x: 0, y: 0, w: 20, h: 20, style_modifiers: ''),
19
+ shape: ShapeDefaults.new(type: :shape, category: :element, x: 0, y: 0, w: 20, h: 20, style_modifiers: ''),
20
20
  {{#each shapes}}
21
- {{snake ./type}}: ShapeDefaults.new(type: :{{snake ./type}}, x: {{./x}}, text_only: {{./text_only}}, y: {{./y}}, w: {{./w}}, h: {{./h}}, style_modifiers: '{{{./style_modifiers}}}'){{#if @last}}{{^}},{{/if}}
21
+ {{snake ./type}}: ShapeDefaults.new(type: :{{snake ./type}}, x: {{./x}}, category: :{{./category}}, y: {{./y}}, w: {{./w}}, h: {{./h}}, style_modifiers: '{{{./style_modifiers}}}'){{#if @last}}{{^}},{{/if}}
22
22
  {{/each}}
23
23
  )
24
24
  end
@@ -6,7 +6,8 @@ module DrawioDsl
6
6
  module DomBuilderShapes
7
7
  {{#each shapes}}
8
8
 
9
- def add_{{snake ./type}}(**opts, &block)
9
+ def add_{{snake ./type}}(id = nil, **opts, &block)
10
+ opts = { id: id }.merge(opts) if id
10
11
  {{snake ./type}} = DrawioDsl::Schema::{{camel ./type}}.new(current_page, **opts, &block)
11
12
  add_shape({{snake ./type}})
12
13
  end
@@ -14,8 +14,8 @@ module DrawioDsl
14
14
  end
15
15
  {{#each shapes}}
16
16
 
17
- def {{snake ./type}}(**opts, &block)
18
- builder.add_{{snake ./type}}(**opts, &block)
17
+ def {{snake ./type}}(id = nil, **opts, &block)
18
+ builder.add_{{snake ./type}}(id, **opts, &block)
19
19
  end
20
20
  {{/each}}
21
21
  end
@@ -1,66 +1,169 @@
1
1
  m = KManager.model :shapes, namespace: %i[domain] do
2
2
  # microapp = import(:handlebars_helpers, :microapp)
3
3
 
4
+ # other settings
5
+ # strokeWidth: 1-n
6
+ # when there is an arrow at beginning
7
+ # startFill=1,0
8
+ # when there is an arrow at end
9
+ # endFill=1,0
10
+
11
+
12
+ table :strokes do
13
+ fields [:name, :style]
14
+
15
+ row :dashed , 'dashed=1;fixDash=1'
16
+ row :dotted , 'dashed=1;fixDash=1;dashPattern=1 4'
17
+ row :dashdot , 'dashed=1;fixDash=1;dashPattern=10 5 1 5'
18
+ row :dashdotdot , 'dashed=1;fixDash=1;dashPattern=10 5 1 5 1 5'
19
+ row :dotdotdot , 'dashed=1;fixDash=1;dashPattern=1 2'
20
+ row :longdash , 'dashed=1;fixDash=1;dashPattern=16 6'
21
+ row :dashlongdash , 'dashed=1;fixDash=1;dashPattern=10 6 16 6'
22
+ row :dashed24 , 'dashed=1;fixDash=1;dashPattern=3 8'
23
+ row :dashed32 , 'dashed=1;fixDash=1;dashPattern=6 5'
24
+ row :dashed44 , 'dashed=1;fixDash=1;dashPattern=8 8'
25
+ end
26
+
27
+ table :connector_compass do
28
+ fields %i[name x y]
29
+
30
+ row :n , x: 0.5 , y: 0 # 'exitX=0.5;exitY=0;exitDx=0;exitDy=0' 'entryX=0.5;entryY=0;entryDx=0;entryDy=0'
31
+ row :ne , x: 1 , y: 0 # 'exitX=1;exitY=0;exitDx=0;exitDy=0' 'entryX=1;entryY=0;entryDx=0;entryDy=0'
32
+ row :e , x: 1 , y: 0.5 # 'exitX=1;exitY=0.5;exitDx=0;exitDy=0' 'entryX=1;entryY=0.5;entryDx=0;entryDy=0'
33
+ row :se , x: 1 , y: 1 # 'exitX=1;exitY=1;exitDx=0;exitDy=0' 'entryX=1;entryY=1;entryDx=0;entryDy=0'
34
+ row :s , x: 0.5 , y: 1 # 'exitX=0.5;exitY=1;exitDx=0;exitDy=0' 'entryX=0.5;entryY=1;entryDx=0;entryDy=0'
35
+ row :sw , x: 0 , y: 1 # 'exitX=0;exitY=1;exitDx=0;exitDy=0' 'entryX=0;entryY=1;entryDx=0;entryDy=0'
36
+ row :w , x: 0 , y: 0.5 # 'exitX=0;exitY=0.5;exitDx=0;exitDy=0' 'entryX=0;entryY=0.5;entryDx=0;entryDy=0'
37
+ row :nw , x: 0 , y: 0 # 'exitX=0;exitY=0;exitDx=0;exitDy=0' 'entryX=0;entryY=0;entryDx=0;entryDy=0'
38
+ end
39
+
40
+ table :connector_design do
41
+ fields [:name, :style]
42
+
43
+ row :style1, ''
44
+ row :style2, 'shape=link'
45
+ row :style3, 'shape=flexArrow'
46
+ row :style4, 'shape=arrow'
47
+ end
48
+
49
+ table :connector_arrows do
50
+ fields [:name, :style]
51
+
52
+ row :simple , 'open'
53
+ row :triangle , 'block'
54
+ row :diamond , 'diamond'
55
+ row :circle , 'oval'
56
+ row :cross , 'cross'
57
+ row :short , 'classicThin'
58
+ row :default , 'classic'
59
+ row :none , 'none'
60
+ row :plain , 'open'
61
+ row :skewed_dash , 'dash'
62
+ row :concave , 'openThin'
63
+ row :er_many , 'ERmany'
64
+ row :er_one , 'ERone'
65
+ row :er_one_optional , 'ERzeroToOne'
66
+ row :er_one_mandatory , 'ERmandOne'
67
+ row :er_many_optional , 'ERzeroToMany'
68
+ row :er_many_mandatory , 'ERoneToMany'
69
+ end
70
+
71
+ table :connector_waypoints do # aka edgeStyle
72
+ fields [:name, :style]
73
+
74
+ row :straight , 'edgeStyle=none'
75
+ row :orthogonal , 'edgeStyle=orthogonalEdgeStyle'
76
+ row :elbow , 'edgeStyle=elbowEdgeStyle'
77
+ row :elbow_vertical , 'edgeStyle=elbowEdgeStyle;elbow=vertical'
78
+ row :isometric , 'edgeStyle=isometricEdgeStyle'
79
+ row :isometric_vertical , 'edgeStyle=isometricEdgeStyle;elbow=vertical'
80
+ row :orthogonal_curved , 'edgeStyle=orthogonalEdgeStyle;curved=1'
81
+ row :entity_relation , 'edgeStyle=entityRelationEdgeStyle'
82
+ end
83
+
4
84
  table :shapes do
5
- fields [:type, :text_only, :x, :y, :w, :h, :style_modifiers]
85
+ fields [:type, :category, :x, :y, :w, :h, :style_modifiers]
6
86
 
7
87
  # shape is a custom object
8
88
  # row :shape , 0, 0, 20, 20, ''
9
89
 
90
+ row :line , :line , 0, 0, 50, 50, 'edgeStyle=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0'
91
+ # row :line , :line , 0, 0, 50, 50, 'edgeStyle=entityRelationEdgeStyle;strokeWidth=1;elbow=vertical;startArrow=none;startFill=0;endArrow=block;endFill=0;targetPerimeterSpacing=0;shape=flexArrow;endSize=6;fillStyle=zigzag;'
92
+ # row :dashed , 'dashed=1;fixDash=1'
93
+ # row :dotted , 'dashed=1;fixDash=1;dashPattern=1 4'
94
+ # row :dashdot , 'dashed=1;fixDash=1;dashPattern=10 5 1 5'
95
+ # row :dashdotdot , 'dashed=1;fixDash=1;dashPattern=10 5 1 5 1 5'
96
+ # row :dotdotdot , 'dashed=1;fixDash=1;dashPattern=1 2'
97
+ # row :longdash , 'dashed=1;fixDash=1;dashPattern=16 6'
98
+ # row :dashlongdash , 'dashed=1;fixDash=1;dashPattern=10 6 16 6'
99
+ # row :dashed24 , 'dashed=1;fixDash=1;dashPattern=3 8'
100
+ # row :dashed32 , 'dashed=1;fixDash=1;dashPattern=6 5'
101
+ # row :dashed44 , 'dashed=1;fixDash=1;dashPattern=8 8'
102
+ # edge="1" parent="node_root_2T8" source="b" target="c"
103
+
10
104
  # configuration for general purpose shapes
11
- row :h1 , true, 0, 0, 100, 50, 'text;fontSize=89;fontColor=#ffffff;fontStyle=1;fillColor=none'
12
- row :h2 , true, 0, 0, 100, 50, 'text;fontSize=67;fontColor=#ffffff;fontStyle=1;fillColor=none'
13
- row :h3 , true, 0, 0, 100, 50, 'text;fontSize=50;fontColor=#ffffff;fontStyle=1;fillColor=none'
14
- row :h4 , true, 0, 0, 100, 50, 'text;fontSize=37;fontColor=#ffffff;fontStyle=1;fillColor=none'
15
- row :h5 , true, 0, 0, 100, 50, 'text;fontSize=28;fontColor=#ffffff;fontStyle=1;fillColor=none'
16
- row :h6 , true, 0, 0, 100, 50, 'text;fontSize=21;fontColor=#ffffff;fontStyle=1;fillColor=none'
17
- row :p , true, 0, 0, 100, 50, 'text;fontSize=16;fontColor=#ffffff;fontStyle=1;fillColor=none'
18
-
19
- row :actor , false, 0, 0, 40, 50, 'shape=actor'
20
- row :actor2 , false, 0, 0, 30, 50, 'shape=umlActor;verticalLabelPosition=bottom;outlineConnect=1'
21
- row :callout , false, 0, 0, 160, 120, 'shape=callout'
22
- row :callout2 , false, 0, 0, 160, 160, 'shape=mxgraph.basic.oval_callout'
23
- row :callout3 , false, 0, 0, 160, 160, 'shape=mxgraph.basic.cloud_callout'
24
- row :callout4 , false, 0, 0, 160, 120, 'shape=mxgraph.basic.roundRectCallout;dx=30;dy=15;size=5;boundedLbl=1;'
25
- row :circle , false, 0, 0, 160, 160, 'ellipse'
26
- row :cloud , false, 0, 0, 160, 160, 'shape=cloud'
27
- row :container , false, 0, 0, 160, 160, 'swimlane'
28
- row :container2 , false, 0, 0, 160, 160, 'swimlane;horizontal=0'
29
- row :container3 , false, 0, 0, 160, 160, 'swimlane;startSize=50'
30
- row :container4 , false, 0, 0, 160, 160, 'swimlane;resizable=0'
31
- row :cross , false, 0, 0, 50, 50, 'verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.basic.x'
32
- row :envelop , false, 0, 0, 160, 100, 'shape=message'
33
- row :diamond , false, 0, 0, 100, 100, 'rhombus'
34
- row :document , false, 0, 0, 160, 160, 'shape=mxgraph.basic.document'
35
- row :ellipse , false, 0, 0, 200, 120, 'ellipse'
36
- row :hexagon , false, 0, 0, 200, 120, 'shape=hexagon'
37
- row :interface , false, 0, 0, 160, 160, 'align=left;overflow=fill;fontSize=12;fontFamily=Helvetica'
38
- row :klass , false, 0, 0, 160, 160, 'align=left;overflow=fill;fontSize=12;fontFamily=Helvetica'
39
- row :note , false, 0, 0, 160, 160, 'shape=note'
40
- row :process , false, 0, 0, 200, 120, 'shape=process'
41
- row :rectangle , false, 0, 0, 200, 120, ''
42
- row :rectangle2 , false, 0, 0, 200, 120, 'shape=mxgraph.basic.cloud_rect'
43
- row :square , false, 0, 0, 160, 160, ''
44
- row :step , false, 0, 0, 120, 80, 'shape=step;perimeter=stepPerimeter;fixedSize=1'
45
- row :tick , false, 0, 0, 50, 50, 'verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.basic.tick'
46
- row :todo , false, 0, 0, 300, 60, ''
47
- row :face , false, 0, 0, 100, 100, 'verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.basic.smiley'
48
- row :triangle , false, 0, 0, 100, 100, 'triangle'
105
+ row :h1 , :text , 0, 0, 100, 50, 'text;fontSize=89;fontColor=#ffffff;fontStyle=1;fillColor=none'
106
+ row :h2 , :text , 0, 0, 100, 50, 'text;fontSize=67;fontColor=#ffffff;fontStyle=1;fillColor=none'
107
+ row :h3 , :text , 0, 0, 100, 50, 'text;fontSize=50;fontColor=#ffffff;fontStyle=1;fillColor=none'
108
+ row :h4 , :text , 0, 0, 100, 50, 'text;fontSize=37;fontColor=#ffffff;fontStyle=1;fillColor=none'
109
+ row :h5 , :text , 0, 0, 100, 50, 'text;fontSize=28;fontColor=#ffffff;fontStyle=1;fillColor=none'
110
+ row :h6 , :text , 0, 0, 100, 50, 'text;fontSize=21;fontColor=#ffffff;fontStyle=1;fillColor=none'
111
+ row :p , :text , 0, 0, 100, 50, 'text;fontSize=16;fontColor=#ffffff;fontStyle=1;fillColor=none'
112
+
113
+ row :actor , :element, 0, 0, 40, 50, 'shape=actor'
114
+ row :actor2 , :element, 0, 0, 30, 50, 'shape=umlActor;verticalLabelPosition=bottom;outlineConnect=1'
115
+ row :callout , :element, 0, 0, 160, 120, 'shape=callout'
116
+ row :callout2 , :element, 0, 0, 160, 160, 'shape=mxgraph.basic.oval_callout'
117
+ row :callout3 , :element, 0, 0, 160, 160, 'shape=mxgraph.basic.cloud_callout'
118
+ row :callout4 , :element, 0, 0, 160, 120, 'shape=mxgraph.basic.roundRectCallout;dx=30;dy=15;size=5;boundedLbl=1;'
119
+ row :circle , :element, 0, 0, 160, 160, 'ellipse'
120
+ row :cloud , :element, 0, 0, 160, 160, 'shape=cloud'
121
+ row :container , :element, 0, 0, 160, 160, 'swimlane'
122
+ row :container2 , :element, 0, 0, 160, 160, 'swimlane;horizontal=0'
123
+ row :container3 , :element, 0, 0, 160, 160, 'swimlane;startSize=50'
124
+ row :container4 , :element, 0, 0, 160, 160, 'swimlane;resizable=0'
125
+ row :cross , :element, 0, 0, 50, 50, 'verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.basic.x'
126
+ row :envelop , :element, 0, 0, 160, 100, 'shape=message'
127
+ row :diamond , :element, 0, 0, 100, 100, 'rhombus'
128
+ row :document , :element, 0, 0, 160, 160, 'shape=mxgraph.basic.document'
129
+ row :ellipse , :element, 0, 0, 200, 120, 'ellipse'
130
+ row :hexagon , :element, 0, 0, 200, 120, 'shape=hexagon'
131
+ row :interface , :element, 0, 0, 160, 160, 'align=left;overflow=fill;fontSize=12;fontFamily=Helvetica'
132
+ row :klass , :element, 0, 0, 160, 160, 'align=left;overflow=fill;fontSize=12;fontFamily=Helvetica'
133
+ row :note , :element, 0, 0, 160, 160, 'shape=note'
134
+ row :process , :element, 0, 0, 200, 120, 'shape=process'
135
+ row :rectangle , :element, 0, 0, 200, 120, ''
136
+ row :rectangle2 , :element, 0, 0, 200, 120, 'shape=mxgraph.basic.cloud_rect'
137
+ row :square , :element, 0, 0, 160, 160, ''
138
+ row :step , :element, 0, 0, 120, 80, 'shape=step;perimeter=stepPerimeter;fixedSize=1'
139
+ row :tick , :element, 0, 0, 50, 50, 'verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.basic.tick'
140
+ row :todo , :element, 0, 0, 300, 60, ''
141
+ row :face , :element, 0, 0, 100, 100, 'verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.basic.smiley'
142
+ row :triangle , :element, 0, 0, 100, 100, 'triangle'
49
143
 
50
144
  # configuration for embedded element shape
51
145
  # note that the width / height probably should be driven of parent shape
52
- row :embed_row , false, 0, 0, 200, 40, 'shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;top=0;left=0;bottom=1;right=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest'
53
- row :embed_col50 , false, 0, 0, 50, 40, 'shape=partialRectangle;connectable=0;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden'
54
- row :embed_col200 , false, 0, 0, 150, 40, 'shape=partialRectangle;connectable=0;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden'
146
+ row :embed_row , :element, 0, 0, 200, 40, 'shape=partialRectangle;collapsible=0;dropTarget=0;pointerEvents=0;top=0;left=0;bottom=1;right=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest'
147
+ row :embed_col50 , :element, 0, 0, 50, 40, 'shape=partialRectangle;connectable=0;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden'
148
+ row :embed_col200 , :element, 0, 0, 150, 40, 'shape=partialRectangle;connectable=0;top=0;left=0;bottom=0;right=0;align=left;spacingLeft=6;overflow=hidden'
55
149
  end
56
150
 
57
151
  action do
58
152
  data = self.raw_data
59
- shapes = JSON.pretty_generate(data['shapes'])
153
+ content = {
154
+ strokes: data['strokes'],
155
+ connector: {
156
+ compass: data['connector_compass'],
157
+ waypoints: data['connector_waypoints'],
158
+ arrows: data['connector_arrows'],
159
+ design: data['connector_design']
160
+ },
161
+ shapes: data['shapes'],
162
+ }
60
163
 
61
164
  k_builder
62
165
  .cd(:data)
63
- .add_file('shapes.json', content: shapes, on_exist: :write)
166
+ .add_file('shapes.json', content: JSON.pretty_generate(content), on_exist: :write)
64
167
  end
65
168
  end
66
169
 
@@ -2,7 +2,9 @@ KManager.action :requires do
2
2
 
3
3
  action do
4
4
  shapes_file = k_builder.target_folders.get_filename(:data, 'shapes.json')
5
- shapes = JSON.parse(File.read(shapes_file))
5
+ shapes_configuration = JSON.parse(File.read(shapes_file))
6
+ shapes = shapes_configuration['shapes']
7
+ # strokes = shapes_configuration['strokes']
6
8
 
7
9
  KDirector::Dsls::BasicDsl
8
10
  .init(k_builder,
@@ -1,4 +1,4 @@
1
- KManager.action :todo_drawio_dsl do
1
+ KManager.action :project_plan do
2
2
  action do
3
3
 
4
4
  DrawioDsl::Drawio
@@ -10,10 +10,12 @@ KManager.action :todo_drawio_dsl do
10
10
  # p(x: 350, y: 40, w: 400, h: 80, title: 'Project plan - In progress')
11
11
 
12
12
  grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
13
-
14
- todo(title: 'move DrawioDsl::Formatters::Factory::FORMATTERS to resource file')
15
- todo(title: 'move DrawioDsl::Formatters::StyleBuilder::MAPPINGS to resource file')
16
-
13
+
14
+ todo(title: 'build a class diagram')
15
+ todo(title: 'add new shapes related to line connectors')
16
+ todo(title: 'line connector aliases gives a simple way to use predefined line configurations')
17
+ todo(title: 'line connectors need to support autolinking using ids')
18
+ todo(title: 'line connectors should not effect the grid positioning systems')
17
19
  end
18
20
  .page('To Do', theme: :style_02, margin_left: 0, margin_top: 0) do
19
21
 
@@ -22,11 +24,13 @@ KManager.action :todo_drawio_dsl do
22
24
 
23
25
  grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
24
26
 
25
- todo(title: 'Add page background to theme, use it whenever the theme is set at a diagram/page level')
27
+ todo(title: 'add page background to theme, use it whenever the theme is set at a diagram/page level')
28
+ todo(title: 'move DrawioDsl::Formatters::Factory::FORMATTERS to resource file')
29
+ todo(title: 'move DrawioDsl::Formatters::StyleBuilder::MAPPINGS to resource file')
26
30
  todo(title: 'need to setup new project plans')
27
31
  todo(title: 'settings style attributes need to de-duplicate, might be best to utilize the new StyleBuilder class')
28
32
  todo(title: 'write SVG directly into other projects')
29
- todo(title: 'add :shape and :text-only to random shape generator')
33
+ todo(title: 'add :shape, :line and :text to random shape generator')
30
34
  todo(title: 'Nodes need to support child nodes')
31
35
  todo(title: 'Grid layout does not position itself in relation to the last element')
32
36
  todo(title: 'Dynamic sized shapes that expand to the size of their text')
@@ -42,8 +46,16 @@ KManager.action :todo_drawio_dsl do
42
46
 
43
47
  grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
44
48
 
49
+ todo(title: 'build configuration for line strokes %i[dashed dotted dashdot dashdotdot dotdotdot longdash)')
50
+ todo(title: 'build configuration for line compass %i[n ne e se s sw w nw]')
51
+ todo(title: 'build configuration for line shape %i[style1 style2 style3 style4]')
52
+ todo(title: 'build configuration for arrows %i[straight triangle diamond circle cross short default none plain skewed_dash concave er_many er_one er_one_optional er_one_mandatory er_many_optional er_many_mandatory]')
53
+ todo(title: 'refactor the shape->text_only (boolean) to category (symbol)')
54
+ todo(title: 'ensure that ids are working as expected')
55
+ todo(title: 'alter the initial parameter of all shapes so that it can be an ID, without named attribute')
56
+ todo(title: 'move project-plan files')
45
57
  todo(title: 'alter configure_shape so it sets the default shape key and use that for selecting the default HTML formatter')
46
- todo(title: 'Add todo shape to simplify project plan drawing')
58
+ todo(title: 'add todo shape to simplify project plan drawing')
47
59
  todo(title: 'introduce .value property to shape and let it use either formatted HTML or plain text title')
48
60
  todo(title: 'formatter DSL that can render HTML directly into the value property')
49
61
  todo(title: 'formatter DSL for class and interface generation')
@@ -59,11 +71,10 @@ KManager.action :todo_drawio_dsl do
59
71
  todo(title: 'add save as .drawio')
60
72
 
61
73
  end
62
- .cd(:spec)
63
- .save('project-plans/drawio_dsl.drawio')
64
74
  .cd(:docs)
65
- .export_svg('project_in_progress', page: 1)
66
- .export_svg('project_todo' , page: 2)
67
- .export_svg('project_done' , page: 3)
75
+ .save('project-plan/project.drawio')
76
+ .export_svg('project-plan/project_in_progress', page: 1)
77
+ .export_svg('project-plan/project_todo' , page: 2)
78
+ .export_svg('project-plan/project_done' , page: 3)
68
79
  end
69
80
  end
@@ -9,15 +9,28 @@ KManager.action :bootstrap do
9
9
  .page('Samples') do
10
10
  grid_layout(wrap_at: 5)
11
11
 
12
- KConfig.configuration.drawio.shapes.select { |shape| shape.type != :shape && !shape.text_only }.each do |shape|
13
- # print random number between 0 and 1
14
- send(shape.type, theme: KConfig.configuration.drawio.random_theme, title: shape.type.to_s, shape: shape, rounded: rnd(2), gloss: rnd(2), sketch: rnd(8))
12
+ # KConfig.configuration.drawio.shapes.select { |shape| shape.type != :shape && !shape.text_only }.each do |shape|
13
+ # # print random number between 0 and 1
14
+ # send(shape.type, theme: KConfig.configuration.drawio.random_theme, title: shape.type.to_s, shape: shape, rounded: rnd(2), gloss: rnd(2), sketch: rnd(8))
15
+ # end
16
+
17
+ for jersy_number in 67..112
18
+ team_color = :style_02
19
+ team_color = :style_03 if jersy_number % 3 == 0
20
+ team_color = :style_04 if jersy_number % 12 == 0
21
+
22
+ if jersy_number % 20 == 0
23
+ cloud(title: jersy_number, theme: team_color)
24
+ else
25
+ actor(title: jersy_number, theme: team_color)
26
+ end
15
27
  end
28
+
16
29
 
17
30
  end
18
31
  .cd(:spec)
19
- .save('.samples/05-samples.drawio')
20
- .cd(:docs)
21
- .export_svg('samples/samples', page: 1)
32
+ .osave('.samples/05-samples.drawio')
33
+ # .cd(:docs)
34
+ # .export_svg('samples/samples', page: 1)
22
35
  end
23
36
  end
@@ -8,17 +8,17 @@ KManager.action :html_shapes do
8
8
  .page('Style-Plain', margin_left: 0, margin_top: 0, rounded: 0, background: '#FFEADB') do
9
9
  grid_layout(wrap_at: 8)
10
10
 
11
- # html = DrawioDsl::Formatters::InterfaceFormatter.new
11
+ # html = DrawioDsl::Formatters::KlassFormatter.new
12
12
  # .header('IPerson')
13
13
  # .field(:first_name, type: :string)
14
14
  # .field(:last_name, type: :string)
15
15
  # .field(:age, type: :integer)
16
16
  # .field(:birthday, type: :date)
17
17
  # .method(:full_name)
18
+ # .method(:sean)
18
19
  # .as_html
19
20
 
20
- # square(
21
- # title: html,
21
+ # square(title: html,
22
22
  # style_modifiers: 'align=left;overflow=fill;fontSize=12;fontFamily=Helvetica'
23
23
  # )
24
24
 
@@ -41,8 +41,8 @@ KManager.action :html_shapes do
41
41
  end
42
42
  end
43
43
  .cd(:spec)
44
- .save('.samples/30-html-shapes.drawio')
45
- .cd(:docs)
46
- .export_svg('samples/html-shapes', page: 1)
44
+ .osave('.samples/30-html-shapes.drawio')
45
+ # .cd(:docs)
46
+ # .export_svg('samples/html-shapes', page: 1)
47
47
  end
48
48
  end
@@ -0,0 +1,30 @@
1
+ KManager.action :bootstrap do
2
+ action do
3
+
4
+ DrawioDsl::Drawio
5
+ .init(k_builder, on_exist: :write, on_action: :execute)
6
+ .diagram(theme: :style_06)
7
+ .page('Style-Plain', margin_left: 0, margin_top: 0) do
8
+ grid_layout(wrap_at: 2, grid_w: 400)
9
+
10
+ shape_count = 2
11
+ # for 1 to 20 step 2
12
+ (1..shape_count).step(2).each do |i|
13
+ circle(i, title: i)
14
+ ellipse(i+1, title: i + 1)
15
+ end
16
+
17
+ (1..shape_count).step(2).each do |i|
18
+ line(source: i, target: i+1)
19
+ end
20
+
21
+ # # label = '<div style="background-color: #B85450; height: 100%; margin: 0; border: 1px solid red;"><p style="padding: 10px; font-size: 12px;color: #ffffff;width: 150px;"><img style="margin-right: 20px" src="https://picsum.photos/40" /> the quick brown fox jumped over the lazy dog</p></div>'
22
+ # label = ''
23
+
24
+ end
25
+ .cd(:spec)
26
+ .save('.samples/35-ids-and-arrows.drawio')
27
+ # .cd(:docs)
28
+ # .export_svg('samples/styles-plain', page: 1)
29
+ end
30
+ end
data/CHANGELOG.md CHANGED
@@ -1,3 +1,24 @@
1
+ ## [0.8.2](https://github.com/klueless-io/drawio_dsl/compare/v0.8.1...v0.8.2) (2022-03-17)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * refactor the shape->text_only (boolean) to category (symbol) ([a469b2f](https://github.com/klueless-io/drawio_dsl/commit/a469b2fb0af9e47af35e8835fde79faba66a36df))
7
+
8
+ ## [0.8.1](https://github.com/klueless-io/drawio_dsl/compare/v0.8.0...v0.8.1) (2022-03-16)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * alter the initial parameter of all shapes so that it can be an ID, without named attribute ([9c00a63](https://github.com/klueless-io/drawio_dsl/commit/9c00a634f818d25b92042a9cdb81749dbe994cf5))
14
+
15
+ # [0.8.0](https://github.com/klueless-io/drawio_dsl/compare/v0.7.0...v0.8.0) (2022-03-15)
16
+
17
+
18
+ ### Features
19
+
20
+ * alter configure_shape so it sets the default shape key and use that for selecting the default HTML formatter ([f0cde77](https://github.com/klueless-io/drawio_dsl/commit/f0cde7719c7b230147f10e269cbb9f02584b542b))
21
+
1
22
  # [0.7.0](https://github.com/klueless-io/drawio_dsl/compare/v0.6.0...v0.7.0) (2022-03-14)
2
23
 
3
24