drawio_dsl 0.8.1 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.builders/.data/shapes.json +590 -371
- data/.builders/.templates/basic/configuration_shapes.rb +3 -3
- data/.builders/blueprint/shapes.rb +133 -47
- data/.builders/generators/02-generate-app.rb +3 -1
- data/.builders/generators/domain_diagram.rb +40 -0
- data/.builders/generators/printspeak-architecture-generator.rb +40 -0
- data/.builders/generators/project-plan.rb +12 -5
- data/.builders/generators/sample_diagrams/35-ids-and-arrows.rb +16 -6
- data/CHANGELOG.md +22 -0
- data/docs/domain.drawio +31 -0
- data/docs/domain_model.svg +3 -0
- data/docs/project-plan/project.drawio +68 -44
- data/docs/project-plan/project_done.svg +1 -1
- data/docs/project-plan/project_in_progress.svg +1 -1
- data/docs/project-plan/project_todo.svg +1 -1
- data/docs/samples/styles-glass.svg +1 -1
- data/docs/samples/styles-plain.svg +1 -1
- data/docs/samples/styles-rounded.svg +1 -1
- data/docs/samples/styles-shadow.svg +1 -1
- data/docs/samples/styles-sketch.svg +1 -1
- data/lib/drawio_dsl/configuration_shapes.rb +46 -42
- data/lib/drawio_dsl/dom_builder_shapes.rb +12 -0
- data/lib/drawio_dsl/drawio_shapes.rb +52 -40
- data/lib/drawio_dsl/schema/_.rb +2 -0
- data/lib/drawio_dsl/schema/shapes/database.rb +9 -0
- data/lib/drawio_dsl/schema/shapes/line.rb +9 -0
- data/lib/drawio_dsl/schema/shapes/shape.rb +24 -5
- data/lib/drawio_dsl/version.rb +1 -1
- data/package-lock.json +2 -2
- data/package.json +1 -1
- metadata +8 -2
@@ -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, :
|
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,
|
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}},
|
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
|
@@ -1,6 +1,14 @@
|
|
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
|
+
|
4
12
|
table :strokes do
|
5
13
|
fields [:name, :style]
|
6
14
|
|
@@ -16,69 +24,147 @@ m = KManager.model :shapes, namespace: %i[domain] do
|
|
16
24
|
row :dashed44 , 'dashed=1;fixDash=1;dashPattern=8 8'
|
17
25
|
end
|
18
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
|
+
|
19
84
|
table :shapes do
|
20
|
-
fields [:type, :
|
85
|
+
fields [:type, :category, :x, :y, :w, :h, :style_modifiers]
|
21
86
|
|
22
87
|
# shape is a custom object
|
23
88
|
# row :shape , 0, 0, 20, 20, ''
|
24
89
|
|
25
|
-
|
26
|
-
row :
|
27
|
-
row :
|
28
|
-
row :
|
29
|
-
row :
|
30
|
-
row :
|
31
|
-
row :
|
32
|
-
row :
|
33
|
-
|
34
|
-
row :
|
35
|
-
row :
|
36
|
-
row :
|
37
|
-
row :callout2 , false, 0, 0, 160, 160, 'shape=mxgraph.basic.oval_callout'
|
38
|
-
row :callout3 , false, 0, 0, 160, 160, 'shape=mxgraph.basic.cloud_callout'
|
39
|
-
row :callout4 , false, 0, 0, 160, 120, 'shape=mxgraph.basic.roundRectCallout;dx=30;dy=15;size=5;boundedLbl=1;'
|
40
|
-
row :circle , false, 0, 0, 160, 160, 'ellipse'
|
41
|
-
row :cloud , false, 0, 0, 160, 160, 'shape=cloud'
|
42
|
-
row :container , false, 0, 0, 160, 160, 'swimlane'
|
43
|
-
row :container2 , false, 0, 0, 160, 160, 'swimlane;horizontal=0'
|
44
|
-
row :container3 , false, 0, 0, 160, 160, 'swimlane;startSize=50'
|
45
|
-
row :container4 , false, 0, 0, 160, 160, 'swimlane;resizable=0'
|
46
|
-
row :cross , false, 0, 0, 50, 50, 'verticalLabelPosition=bottom;verticalAlign=top;html=1;shape=mxgraph.basic.x'
|
47
|
-
row :envelop , false, 0, 0, 160, 100, 'shape=message'
|
48
|
-
row :diamond , false, 0, 0, 100, 100, 'rhombus'
|
49
|
-
row :document , false, 0, 0, 160, 160, 'shape=mxgraph.basic.document'
|
50
|
-
row :ellipse , false, 0, 0, 200, 120, 'ellipse'
|
51
|
-
row :hexagon , false, 0, 0, 200, 120, 'shape=hexagon'
|
52
|
-
row :interface , false, 0, 0, 160, 160, 'align=left;overflow=fill;fontSize=12;fontFamily=Helvetica'
|
53
|
-
row :klass , false, 0, 0, 160, 160, 'align=left;overflow=fill;fontSize=12;fontFamily=Helvetica'
|
54
|
-
row :note , false, 0, 0, 160, 160, 'shape=note'
|
55
|
-
row :process , false, 0, 0, 200, 120, 'shape=process'
|
56
|
-
row :rectangle , false, 0, 0, 200, 120, ''
|
57
|
-
row :rectangle2 , false, 0, 0, 200, 120, 'shape=mxgraph.basic.cloud_rect'
|
58
|
-
row :square , false, 0, 0, 160, 160, ''
|
59
|
-
row :step , false, 0, 0, 120, 80, 'shape=step;perimeter=stepPerimeter;fixedSize=1'
|
60
|
-
row :tick , false, 0, 0, 50, 50, 'verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.basic.tick'
|
61
|
-
row :todo , false, 0, 0, 300, 60, ''
|
62
|
-
row :face , false, 0, 0, 100, 100, 'verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.basic.smiley'
|
63
|
-
row :triangle , false, 0, 0, 100, 100, 'triangle'
|
64
|
-
|
65
|
-
row :line , false, 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;'
|
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'
|
66
102
|
# edge="1" parent="node_root_2T8" source="b" target="c"
|
67
103
|
|
104
|
+
# configuration for general purpose shapes
|
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 :database , :element, 0, 0, 160, 80, 'shape=mxgraph.flowchart.database;strokeWidth=1'
|
128
|
+
row :diamond , :element, 0, 0, 100, 100, 'rhombus'
|
129
|
+
row :document , :element, 0, 0, 160, 160, 'shape=mxgraph.basic.document'
|
130
|
+
row :ellipse , :element, 0, 0, 200, 120, 'ellipse'
|
131
|
+
row :hexagon , :element, 0, 0, 200, 120, 'shape=hexagon'
|
132
|
+
row :interface , :element, 0, 0, 160, 160, 'align=left;overflow=fill;fontSize=12;fontFamily=Helvetica'
|
133
|
+
row :klass , :element, 0, 0, 160, 160, 'align=left;overflow=fill;fontSize=12;fontFamily=Helvetica'
|
134
|
+
row :note , :element, 0, 0, 160, 160, 'shape=note'
|
135
|
+
row :process , :element, 0, 0, 200, 120, 'shape=process'
|
136
|
+
row :rectangle , :element, 0, 0, 200, 120, ''
|
137
|
+
row :rectangle2 , :element, 0, 0, 200, 120, 'shape=mxgraph.basic.cloud_rect'
|
138
|
+
row :square , :element, 0, 0, 160, 160, ''
|
139
|
+
row :step , :element, 0, 0, 120, 80, 'shape=step;perimeter=stepPerimeter;fixedSize=1'
|
140
|
+
row :tick , :element, 0, 0, 50, 50, 'verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.basic.tick'
|
141
|
+
row :todo , :element, 0, 0, 300, 60, ''
|
142
|
+
row :face , :element, 0, 0, 100, 100, 'verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.basic.smiley'
|
143
|
+
row :triangle , :element, 0, 0, 100, 100, 'triangle'
|
144
|
+
|
68
145
|
# configuration for embedded element shape
|
69
146
|
# note that the width / height probably should be driven of parent shape
|
70
|
-
row :embed_row ,
|
71
|
-
row :embed_col50 ,
|
72
|
-
row :embed_col200 ,
|
147
|
+
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'
|
148
|
+
row :embed_col50 , :element, 0, 0, 50, 40, 'shape=partialRectangle;connectable=0;top=0;left=0;bottom=0;right=0;fontStyle=1;overflow=hidden'
|
149
|
+
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'
|
73
150
|
end
|
74
151
|
|
75
152
|
action do
|
76
153
|
data = self.raw_data
|
77
|
-
|
154
|
+
content = {
|
155
|
+
strokes: data['strokes'],
|
156
|
+
connector: {
|
157
|
+
compass: data['connector_compass'],
|
158
|
+
waypoints: data['connector_waypoints'],
|
159
|
+
arrows: data['connector_arrows'],
|
160
|
+
design: data['connector_design']
|
161
|
+
},
|
162
|
+
shapes: data['shapes'],
|
163
|
+
}
|
78
164
|
|
79
165
|
k_builder
|
80
166
|
.cd(:data)
|
81
|
-
.add_file('shapes.json', content:
|
167
|
+
.add_file('shapes.json', content: JSON.pretty_generate(content), on_exist: :write)
|
82
168
|
end
|
83
169
|
end
|
84
170
|
|
@@ -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
|
-
|
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,
|
@@ -0,0 +1,40 @@
|
|
1
|
+
KManager.action :domain_diagram do
|
2
|
+
action do
|
3
|
+
|
4
|
+
DrawioDsl::Drawio
|
5
|
+
.init(k_builder, on_exist: :write, on_action: :execute)
|
6
|
+
.diagram(theme: :style_04)
|
7
|
+
.page('Style-Plain', margin_left: 0, margin_top: 0, rounded: 0, background: '#fafafa') do
|
8
|
+
grid_layout(wrap_at: 6)
|
9
|
+
|
10
|
+
klass do
|
11
|
+
format
|
12
|
+
.header('Container', description: 'A container acts a base data object for any data that requires tagging')
|
13
|
+
end
|
14
|
+
interface(theme: :style_02) do
|
15
|
+
format
|
16
|
+
.header('Block Processor', interface_type: 'MixIn', description: 'Provide data load events, dependency and import management')
|
17
|
+
end
|
18
|
+
square(title: 'Documents', theme: :style_01)
|
19
|
+
interface(theme: :style_02) do
|
20
|
+
format
|
21
|
+
.header('Block Processor', interface_type: 'MixIn', description: 'Provide data load events, dependency and import management')
|
22
|
+
.field(:block, type: :proc)
|
23
|
+
.field(:block_state, type: :symbol)
|
24
|
+
.method(:depend_on)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
.cd(:docs)
|
28
|
+
.save('domain.drawio')
|
29
|
+
.export_svg('domain_model', page: 1)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
KManager.opts.app_name = 'domain_diagram'
|
34
|
+
KManager.opts.sleep = 2
|
35
|
+
KManager.opts.reboot_on_kill = 0
|
36
|
+
KManager.opts.reboot_sleep = 4
|
37
|
+
KManager.opts.exception_style = :short
|
38
|
+
KManager.opts.show.time_taken = true
|
39
|
+
KManager.opts.show.finished = true
|
40
|
+
KManager.opts.show.finished_message = 'FINISHED :)'
|
@@ -0,0 +1,40 @@
|
|
1
|
+
KManager.action :domain_diagram do
|
2
|
+
action do
|
3
|
+
|
4
|
+
DrawioDsl::Drawio
|
5
|
+
.init(k_builder, on_exist: :write, on_action: :execute)
|
6
|
+
.diagram(theme: :style_04)
|
7
|
+
.page('Style-Plain', margin_left: 0, margin_top: 0, rounded: 0, background: '#fafafa') do
|
8
|
+
grid_layout(wrap_at: 6)
|
9
|
+
|
10
|
+
klass do
|
11
|
+
format
|
12
|
+
.header('Container', description: 'A container acts a base data object for any data that requires tagging')
|
13
|
+
end
|
14
|
+
interface(theme: :style_02) do
|
15
|
+
format
|
16
|
+
.header('Block Processor', interface_type: 'MixIn', description: 'Provide data load events, dependency and import management')
|
17
|
+
end
|
18
|
+
square(title: 'Documents', theme: :style_01)
|
19
|
+
interface(theme: :style_02) do
|
20
|
+
format
|
21
|
+
.header('Block Processor', interface_type: 'MixIn', description: 'Provide data load events, dependency and import management')
|
22
|
+
.field(:block, type: :proc)
|
23
|
+
.field(:block_state, type: :symbol)
|
24
|
+
.method(:depend_on)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
.cd(:docs)
|
28
|
+
.save('domain.drawio')
|
29
|
+
.export_svg('domain_model', page: 1)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
KManager.opts.app_name = 'domain_diagram'
|
34
|
+
KManager.opts.sleep = 2
|
35
|
+
KManager.opts.reboot_on_kill = 0
|
36
|
+
KManager.opts.reboot_sleep = 4
|
37
|
+
KManager.opts.exception_style = :short
|
38
|
+
KManager.opts.show.time_taken = true
|
39
|
+
KManager.opts.show.finished = true
|
40
|
+
KManager.opts.show.finished_message = 'FINISHED :)'
|
@@ -10,11 +10,12 @@ KManager.action :project_plan 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: '
|
15
|
-
todo(title: 'alter the initial parameter of all shapes so that it can be an ID, without named attribute')
|
13
|
+
|
14
|
+
todo(title: 'build a domain (class) diagram')
|
16
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
17
|
todo(title: 'line connectors need to support autolinking using ids')
|
18
|
+
todo(title: 'line connectors should not effect the grid positioning systems')
|
18
19
|
end
|
19
20
|
.page('To Do', theme: :style_02, margin_left: 0, margin_top: 0) do
|
20
21
|
|
@@ -29,7 +30,7 @@ KManager.action :project_plan do
|
|
29
30
|
todo(title: 'need to setup new project plans')
|
30
31
|
todo(title: 'settings style attributes need to de-duplicate, might be best to utilize the new StyleBuilder class')
|
31
32
|
todo(title: 'write SVG directly into other projects')
|
32
|
-
todo(title: 'add :shape and :text
|
33
|
+
todo(title: 'add :shape, :line and :text to random shape generator')
|
33
34
|
todo(title: 'Nodes need to support child nodes')
|
34
35
|
todo(title: 'Grid layout does not position itself in relation to the last element')
|
35
36
|
todo(title: 'Dynamic sized shapes that expand to the size of their text')
|
@@ -45,6 +46,13 @@ KManager.action :project_plan do
|
|
45
46
|
|
46
47
|
grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
|
47
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')
|
48
56
|
todo(title: 'move project-plan files')
|
49
57
|
todo(title: 'alter configure_shape so it sets the default shape key and use that for selecting the default HTML formatter')
|
50
58
|
todo(title: 'add todo shape to simplify project plan drawing')
|
@@ -61,7 +69,6 @@ KManager.action :project_plan do
|
|
61
69
|
todo(title: 'add export as .PNG, needs to take a page number as the PNG will not support multiple pages')
|
62
70
|
todo(title: 'add export as .SVG, needs to take a page number as the SVG will not support multiple pages')
|
63
71
|
todo(title: 'add save as .drawio')
|
64
|
-
|
65
72
|
end
|
66
73
|
.cd(:docs)
|
67
74
|
.save('project-plan/project.drawio')
|
@@ -5,15 +5,25 @@ KManager.action :bootstrap do
|
|
5
5
|
.init(k_builder, on_exist: :write, on_action: :execute)
|
6
6
|
.diagram(theme: :style_06)
|
7
7
|
.page('Style-Plain', margin_left: 0, margin_top: 0) do
|
8
|
-
grid_layout(wrap_at: 2)
|
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 = ''
|
9
23
|
|
10
|
-
square(:a, title: '01')
|
11
|
-
circle(:b, title: '02')
|
12
|
-
rectangle(:c, title: '03')
|
13
|
-
ellipse(:d, title: '04')
|
14
24
|
end
|
15
25
|
.cd(:spec)
|
16
|
-
.
|
26
|
+
.save('.samples/35-ids-and-arrows.drawio')
|
17
27
|
# .cd(:docs)
|
18
28
|
# .export_svg('samples/styles-plain', page: 1)
|
19
29
|
end
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,25 @@
|
|
1
|
+
## [0.8.3](https://github.com/klueless-io/drawio_dsl/compare/v0.8.2...v0.8.3) (2022-03-17)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* add line configuration definitions ([a1e0f50](https://github.com/klueless-io/drawio_dsl/commit/a1e0f509f309096013fa0db2d03a61fe78816948))
|
7
|
+
* add line configuration definitions ([6864470](https://github.com/klueless-io/drawio_dsl/commit/6864470d00f1ffaa2d7dc572fa0d857f5d40256b))
|
8
|
+
|
9
|
+
## [0.8.2](https://github.com/klueless-io/drawio_dsl/compare/v0.8.1...v0.8.2) (2022-03-17)
|
10
|
+
|
11
|
+
|
12
|
+
### Bug Fixes
|
13
|
+
|
14
|
+
* refactor the shape->text_only (boolean) to category (symbol) ([a469b2f](https://github.com/klueless-io/drawio_dsl/commit/a469b2fb0af9e47af35e8835fde79faba66a36df))
|
15
|
+
|
16
|
+
## [0.8.1](https://github.com/klueless-io/drawio_dsl/compare/v0.8.0...v0.8.1) (2022-03-16)
|
17
|
+
|
18
|
+
|
19
|
+
### Bug Fixes
|
20
|
+
|
21
|
+
* 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))
|
22
|
+
|
1
23
|
# [0.8.0](https://github.com/klueless-io/drawio_dsl/compare/v0.7.0...v0.8.0) (2022-03-15)
|
2
24
|
|
3
25
|
|
data/docs/domain.drawio
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
<mxfile host="65bd71144e">
|
2
|
+
<diagram id="X2d" name="Style-Plain">
|
3
|
+
<mxGraphModel dx="862" dy="583" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" background="#fafafa" math="0" shadow="0">
|
4
|
+
<root>
|
5
|
+
<mxCell id="page_root_X2d"/>
|
6
|
+
<mxCell id="node_root_X2d" parent="page_root_X2d"/>
|
7
|
+
<mxCell id="X2d-2" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Container</b></p><hr size="1"/>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_X2d" vertex="1">
|
8
|
+
<mxGeometry x="30" y="30" width="160" height="160" as="geometry"/>
|
9
|
+
</mxCell>
|
10
|
+
<mxCell id="X2d-3" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><i>&lt;&lt; MixIn &gt;&gt;</i></p><p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Block Processor</b></p><hr size="1"/>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_X2d" vertex="1">
|
11
|
+
<mxGeometry x="250" y="30" width="160" height="160" as="geometry"/>
|
12
|
+
</mxCell>
|
13
|
+
<mxCell id="X2d-4" value="Documents" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333" parent="node_root_X2d" vertex="1">
|
14
|
+
<mxGeometry x="470" y="30" width="160" height="160" as="geometry"/>
|
15
|
+
</mxCell>
|
16
|
+
<mxCell id="X2d-5" value="<p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><i>&lt;&lt; MixIn &gt;&gt;</i></p><p style="margin:0px;margin-left:4px;margin-top:4px;text-align:center"><b>Block Processor</b></p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">block: proc</p><p style="margin:0px;margin-left:4px;margin-top:4px">block_state: symbol</p><hr size="1"/><p style="margin:0px;margin-left:4px;margin-top:4px">depend_on()</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" parent="node_root_X2d" vertex="1">
|
17
|
+
<mxGeometry x="690" y="30" width="160" height="160" as="geometry"/>
|
18
|
+
</mxCell>
|
19
|
+
<mxCell id="4tbYCbTjaN7O87TdMOiT-0" value="<div style="color: rgb(212 , 212 , 212) ; background-color: rgb(30 , 30 , 30) ; font-family: &#34;menlo&#34; , &#34;monaco&#34; , &#34;courier new&#34; , monospace ; line-height: 18px"><span style="color: #ce9178">db_schema.json</span></div>" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;" vertex="1" parent="node_root_X2d">
|
20
|
+
<mxGeometry x="50" y="199" width="60" height="80" as="geometry"/>
|
21
|
+
</mxCell>
|
22
|
+
<mxCell id="4tbYCbTjaN7O87TdMOiT-1" value="11111111" style="shape=datastore;whiteSpace=wrap;html=1;" vertex="1" parent="node_root_X2d">
|
23
|
+
<mxGeometry x="182" y="112" width="60" height="60" as="geometry"/>
|
24
|
+
</mxCell>
|
25
|
+
<mxCell id="4tbYCbTjaN7O87TdMOiT-2" value="db_schema.json" style="strokeWidth=1;html=1;shape=mxgraph.flowchart.database;whiteSpace=wrap;" vertex="1" parent="node_root_X2d">
|
26
|
+
<mxGeometry x="193" y="249" width="138" height="60" as="geometry"/>
|
27
|
+
</mxCell>
|
28
|
+
</root>
|
29
|
+
</mxGraphModel>
|
30
|
+
</diagram>
|
31
|
+
</mxfile>
|
@@ -0,0 +1,3 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="822px" height="162px" viewBox="-0.5 -0.5 822 162"><defs/><g><rect x="0" y="0" width="160" height="160" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 162px; height: 160px; padding-top: 0px; margin-left: 0px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 160px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-top: 4px ; text-align: center"><b>Container</b></p><hr size="1" /></div></div></div></foreignObject><text x="0" y="84" fill="#333333" font-family="Helvetica" font-size="12px">Container</text></switch></g><rect x="220" y="0" width="160" height="160" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 162px; height: 160px; padding-top: 0px; margin-left: 220px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 160px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-top: 4px ; text-align: center"><i><< MixIn >></i></p><p style="margin: 0px ; margin-left: 4px ; margin-top: 4px ; text-align: center"><b>Block Processor</b></p><hr size="1" /></div></div></div></foreignObject><text x="220" y="84" fill="#333333" font-family="Helvetica" font-size="12px"><< MixIn >>...</text></switch></g><rect x="440" y="0" width="160" height="160" fill="#f5f5f5" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 80px; margin-left: 441px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Documents</div></div></div></foreignObject><text x="520" y="84" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">Documents</text></switch></g><rect x="660" y="0" width="160" height="160" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 162px; height: 160px; padding-top: 0px; margin-left: 660px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 160px; height: 160px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: normal; overflow-wrap: normal;"><p style="margin: 0px ; margin-left: 4px ; margin-top: 4px ; text-align: center"><i><< MixIn >></i></p><p style="margin: 0px ; margin-left: 4px ; margin-top: 4px ; text-align: center"><b>Block Processor</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px ; margin-top: 4px">block: proc</p><p style="margin: 0px ; margin-left: 4px ; margin-top: 4px">block_state: symbol</p><hr size="1" /><p style="margin: 0px ; margin-left: 4px ; margin-top: 4px">depend_on()</p></div></div></div></foreignObject><text x="660" y="84" fill="#333333" font-family="Helvetica" font-size="12px"><< MixIn >>...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
|