drawio_dsl 0.10.1 → 0.11.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -0
- data/config/configuration.json +843 -647
- data/docs/printspeak-architecture-controllers.drawio +47 -47
- data/docs/printspeak-architecture-generator-custom.drawio +306 -0
- data/docs/printspeak-architecture-generator-custom.png +0 -0
- data/docs/project-plan/project.drawio +98 -74
- 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/grid-direction-horizontal.svg +1 -1
- data/docs/samples/grid-direction-vertical.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/docs/samples/themes-random.svg +1 -1
- data/docs/samples/willoughby-council.svg +1 -1
- data/lib/drawio_dsl/configuration.rb +181 -108
- data/lib/drawio_dsl/dom_builder.rb +2 -2
- data/lib/drawio_dsl/schema/diagram.rb +1 -1
- data/lib/drawio_dsl/schema/element.rb +4 -0
- data/lib/drawio_dsl/schema/layouts/flex_layout.rb +1 -1
- data/lib/drawio_dsl/schema/layouts/grid_layout.rb +1 -1
- data/lib/drawio_dsl/schema/line.rb +9 -2
- data/lib/drawio_dsl/schema/node.rb +5 -5
- data/lib/drawio_dsl/schema/shape.rb +9 -9
- data/lib/drawio_dsl/schema/text.rb +4 -0
- data/lib/drawio_dsl/version.rb +1 -1
- data/lib/drawio_dsl.rb +1 -2
- data/package-lock.json +2 -2
- data/package.json +1 -1
- metadata +4 -4
- data/docs/printspeak-architecture-generator.drawio +0 -107
- data/lib/drawio_dsl/configuration_shapes.rb +0 -109
@@ -1,48 +1,48 @@
|
|
1
|
-
<mxfile host="
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
1
|
+
<mxfile host="0Xh">
|
2
|
+
<diagram id="EQQ" name="Fat Controllers">
|
3
|
+
<mxGraphModel dx="0" dy="0" background="#fafafa" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
|
4
|
+
<root>
|
5
|
+
<mxCell id="page_root_EQQ" parent="EQQ"/>
|
6
|
+
<mxCell id="node_root_EQQ" parent="page_root_EQQ"/>
|
7
|
+
<mxCell id="EQQ-2" value="<p style="margin:0px;margin-left:4px;margin-bottom:4px;text-align:center"><b>Reports#sales_by_profit</b></p><hr size="1"/><h3 style="margin:0px;margin-left:4px;margin-bottom:6.912px">Thin Controller</h3><h5 style="margin:0px;margin-left:4px;margin-bottom:4.8px">Param marshalling</h5><p style="margin:0px;margin-left:4px;margin-bottom:4px">my_action_params()</p><h5 style="margin:0px;margin-left:4px;margin-bottom:4.8px">Call query</h5><p style="margin:0px;margin-left:4px;margin-bottom:4px">MyActionQuery.query(scope, **inputs)</p><hr size="1"/><h5 style="margin:0px;margin-left:4px;margin-bottom:4.8px">Present</h5><p style="margin:0px;margin-left:4px;margin-bottom:4px">@vm = MyActionPresenter.new(**outputs)</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="node_root_EQQ">
|
8
|
+
<mxGeometry x="30" y="30" width="160" height="160" as="geometry"/>
|
9
|
+
</mxCell>
|
10
|
+
<mxCell id="EQQ-3" value="<b>Param marshaling</b><br><br>@sales_by_profit_params ||= <br>params.permit(...)<br>&nbsp;&nbsp;.symbolize_keys" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="node_root_EQQ">
|
11
|
+
<mxGeometry x="230" y="50" width="200" height="120" as="geometry"/>
|
12
|
+
</mxCell>
|
13
|
+
<mxCell id="EQQ-4" value="<b>Call Query</b><br><br>SalesByProfitQuery<br>&nbsp;&nbsp;.query(scope, **custom, **params)" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="node_root_EQQ">
|
14
|
+
<mxGeometry x="450" y="50" width="200" height="120" as="geometry"/>
|
15
|
+
</mxCell>
|
16
|
+
<mxCell id="EQQ-5" value="<b>Present</b><br><br>SalesByProfitPresenter<br>&nbsp;&nbsp;.new(**query.outputs)" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="node_root_EQQ">
|
17
|
+
<mxGeometry x="670" y="50" width="200" height="120" as="geometry"/>
|
18
|
+
</mxCell>
|
19
|
+
</root>
|
20
|
+
</mxGraphModel>
|
21
|
+
</diagram>
|
22
|
+
<diagram id="99x" name="Fat Controllers">
|
23
|
+
<mxGraphModel dx="0" dy="0" background="#fafafa" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
|
24
|
+
<root>
|
25
|
+
<mxCell id="page_root_99x" parent="99x"/>
|
26
|
+
<mxCell id="node_root_99x" parent="page_root_99x"/>
|
27
|
+
<mxCell id="99x-2" value="<p style="margin:0px;margin-left:4px;margin-bottom:4px;text-align:center"><b>Reports#sales_by_profit</b></p><hr size="1"/><h3 style="margin:0px;margin-left:4px;margin-bottom:6.912px">Fat Controller</h3><h5 style="margin:0px;margin-left:4px;margin-bottom:4.8px">Param marshalling</h5><p style="margin:0px;margin-left:4px;margin-bottom:4px">params[:date_from]</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">params[:date_to]</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">params[:sort] || "gross_sales"</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">params[:direction] || "desc"</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">params[:filter_str]</p><h5 style="margin:0px;margin-left:4px;margin-bottom:4.8px">Dynamic query construction</h5><p style="margin:0px;margin-left:4px;margin-bottom:4px">switch params[:filter_str]</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">invoice_date_query</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">ugly query</p><hr size="1"/><h5 style="margin:0px;margin-left:4px;margin-bottom:4.8px">Query in controller</h5><p style="margin:0px;margin-left:4px;margin-bottom:4px">ActiveRecord::Base.connection.execute(query)</p><hr size="1"/><h5 style="margin:0px;margin-left:4px;margin-bottom:4.8px">Build outputs</h5><p style="margin:0px;margin-left:4px;margin-bottom:4px">@net_sales_total</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">@vat_total</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">@gross_sales_total</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">@document_data</p><h5 style="margin:0px;margin-left:4px;margin-bottom:4.8px">Composite outputs</h5><p style="margin:0px;margin-left:4px;margin-bottom:4px">params[:sort]</p><p style="margin:0px;margin-left:4px;margin-bottom:4px">params[:direction]</p>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;align=left;overflow=fill;fontSize=12;fontFamily=Helvetica" vertex="1" parent="node_root_99x">
|
28
|
+
<mxGeometry x="30" y="30" width="160" height="160" as="geometry"/>
|
29
|
+
</mxCell>
|
30
|
+
<mxCell id="99x-3" value="<b>Paramater marshalling</b><br><br>reading the params[] object<br>setting sane defaults<br><i>do not alter and reuse params[]</i>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="node_root_99x">
|
31
|
+
<mxGeometry x="230" y="50" width="200" height="120" as="geometry"/>
|
32
|
+
</mxCell>
|
33
|
+
<mxCell id="99x-4" value="<b>Dynamic query construction</b><br><br>query = "select ..."<br><i>ActiveRelation vs interpolation</i>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="node_root_99x">
|
34
|
+
<mxGeometry x="450" y="50" width="200" height="120" as="geometry"/>
|
35
|
+
</mxCell>
|
36
|
+
<mxCell id="99x-5" value="<b>Query in controller</b><br><i>Move out to Query object</i>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="node_root_99x">
|
37
|
+
<mxGeometry x="670" y="50" width="200" height="120" as="geometry"/>
|
38
|
+
</mxCell>
|
39
|
+
<mxCell id="99x-6" value="<b>Build outputs</b><br>Multiple @instance vars<br><i>single view model @vm</i>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="node_root_99x">
|
40
|
+
<mxGeometry x="10" y="270" width="200" height="120" as="geometry"/>
|
41
|
+
</mxCell>
|
42
|
+
<mxCell id="99x-7" value="<b>Composite outputs</b><br>sort, direction, page_no, page_size<br><i>single order, page or list object</i>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="node_root_99x">
|
43
|
+
<mxGeometry x="230" y="270" width="200" height="120" as="geometry"/>
|
44
|
+
</mxCell>
|
45
|
+
</root>
|
46
|
+
</mxGraphModel>
|
47
|
+
</diagram>
|
48
48
|
</mxfile>
|
@@ -0,0 +1,306 @@
|
|
1
|
+
<mxfile host="65bd71144e">
|
2
|
+
<diagram id="tsA" name="Style-Plain">
|
3
|
+
<mxGraphModel dx="4669" dy="1296" 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_tsA"/>
|
6
|
+
<mxCell id="node_root_tsA" parent="page_root_tsA"/>
|
7
|
+
<mxCell id="tsA-2" value="Data Sources (Documents)" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=20;verticalAlign=top" parent="node_root_tsA" vertex="1">
|
8
|
+
<mxGeometry x="5" y="5" width="692" height="478" as="geometry"/>
|
9
|
+
</mxCell>
|
10
|
+
<mxCell id="a" value="schema.rb" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;shape=mxgraph.flowchart.database;strokeWidth=1" parent="node_root_tsA" vertex="1">
|
11
|
+
<mxGeometry x="29.5" y="73" width="160" height="40" as="geometry"/>
|
12
|
+
</mxCell>
|
13
|
+
<mxCell id="b" value="db_schema.json" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;shape=mxgraph.flowchart.database;strokeWidth=1" parent="node_root_tsA" vertex="1">
|
14
|
+
<mxGeometry x="249.5" y="73" width="160" height="40" as="geometry"/>
|
15
|
+
</mxCell>
|
16
|
+
<mxCell id="c" value="sql_count (rake/api)" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;shape=mxgraph.flowchart.database;strokeWidth=1" parent="node_root_tsA" vertex="1">
|
17
|
+
<mxGeometry x="26.5" y="139" width="160" height="40" as="geometry"/>
|
18
|
+
</mxCell>
|
19
|
+
<mxCell id="d" value="sql_count.json" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;shape=mxgraph.flowchart.database;strokeWidth=1" parent="node_root_tsA" vertex="1">
|
20
|
+
<mxGeometry x="246.5" y="139" width="160" height="40" as="geometry"/>
|
21
|
+
</mxCell>
|
22
|
+
<mxCell id="e" value="rubocop (rake/.txt)" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;shape=mxgraph.flowchart.database;strokeWidth=1" parent="node_root_tsA" vertex="1">
|
23
|
+
<mxGeometry x="26.5" y="213" width="160" height="40" as="geometry"/>
|
24
|
+
</mxCell>
|
25
|
+
<mxCell id="f" value="rubocop.json" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;shape=mxgraph.flowchart.database;strokeWidth=1" parent="node_root_tsA" vertex="1">
|
26
|
+
<mxGeometry x="246.5" y="213" width="160" height="40" as="geometry"/>
|
27
|
+
</mxCell>
|
28
|
+
<mxCell id="g" value="routes.json" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;shape=mxgraph.flowchart.database;strokeWidth=1" parent="node_root_tsA" vertex="1">
|
29
|
+
<mxGeometry x="246.5" y="283" width="160" height="40" as="geometry"/>
|
30
|
+
</mxCell>
|
31
|
+
<mxCell id="h" value="model/**/*.rb" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;shape=mxgraph.flowchart.database;strokeWidth=1" parent="node_root_tsA" vertex="1">
|
32
|
+
<mxGeometry x="244.5" y="354" width="160" height="40" as="geometry"/>
|
33
|
+
</mxCell>
|
34
|
+
<mxCell id="i" value="controller/**/*.json" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;shape=mxgraph.flowchart.database;strokeWidth=1" parent="node_root_tsA" vertex="1">
|
35
|
+
<mxGeometry x="246.5" y="425" width="160" height="40" as="geometry"/>
|
36
|
+
</mxCell>
|
37
|
+
<mxCell id="j" value="domain_model.json" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;shape=mxgraph.flowchart.database;strokeWidth=1" parent="node_root_tsA" vertex="1">
|
38
|
+
<mxGeometry x="522.5" y="213" width="160" height="40" as="geometry"/>
|
39
|
+
</mxCell>
|
40
|
+
<mxCell id="tsA-14" value="" style="whiteSpace=wrap;html=1;rounded=0;edgeStyle=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#a20025;strokeColor=#6F0000;" parent="node_root_tsA" source="a" target="b" edge="1">
|
41
|
+
<mxGeometry relative="1" as="geometry"/>
|
42
|
+
</mxCell>
|
43
|
+
<mxCell id="tsA-15" value="" style="whiteSpace=wrap;html=1;rounded=0;edgeStyle=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#a20025;strokeColor=#6F0000;" parent="node_root_tsA" source="c" target="d" edge="1">
|
44
|
+
<mxGeometry relative="1" as="geometry"/>
|
45
|
+
</mxCell>
|
46
|
+
<mxCell id="tsA-16" value="" style="whiteSpace=wrap;html=1;rounded=0;edgeStyle=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#a20025;strokeColor=#6F0000;" parent="node_root_tsA" source="e" target="f" edge="1">
|
47
|
+
<mxGeometry relative="1" as="geometry"/>
|
48
|
+
</mxCell>
|
49
|
+
<mxCell id="tsA-17" value="" style="whiteSpace=wrap;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#a20025;strokeColor=#6F0000;edgeStyle=entityRelationEdgeStyle;" parent="node_root_tsA" source="b" target="j" edge="1">
|
50
|
+
<mxGeometry relative="1" as="geometry"/>
|
51
|
+
</mxCell>
|
52
|
+
<mxCell id="tsA-18" value="" style="whiteSpace=wrap;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#a20025;strokeColor=#6F0000;edgeStyle=entityRelationEdgeStyle;" parent="node_root_tsA" source="d" target="j" edge="1">
|
53
|
+
<mxGeometry relative="1" as="geometry"/>
|
54
|
+
</mxCell>
|
55
|
+
<mxCell id="tsA-19" value="" style="whiteSpace=wrap;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#a20025;strokeColor=#6F0000;edgeStyle=entityRelationEdgeStyle;" parent="node_root_tsA" source="f" target="j" edge="1">
|
56
|
+
<mxGeometry relative="1" as="geometry"/>
|
57
|
+
</mxCell>
|
58
|
+
<mxCell id="tsA-20" value="" style="whiteSpace=wrap;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#a20025;strokeColor=#6F0000;edgeStyle=entityRelationEdgeStyle;" parent="node_root_tsA" source="g" target="j" edge="1">
|
59
|
+
<mxGeometry relative="1" as="geometry"/>
|
60
|
+
</mxCell>
|
61
|
+
<mxCell id="tsA-21" value="" style="whiteSpace=wrap;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#a20025;strokeColor=#6F0000;edgeStyle=entityRelationEdgeStyle;" parent="node_root_tsA" source="h" target="j" edge="1">
|
62
|
+
<mxGeometry relative="1" as="geometry"/>
|
63
|
+
</mxCell>
|
64
|
+
<mxCell id="tsA-22" value="" style="whiteSpace=wrap;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fillColor=#a20025;strokeColor=#6F0000;edgeStyle=entityRelationEdgeStyle;" parent="node_root_tsA" source="i" target="j" edge="1">
|
65
|
+
<mxGeometry relative="1" as="geometry"/>
|
66
|
+
</mxCell>
|
67
|
+
<mxCell id="ncJzMHtPDMttCXbYRI98-4" value="" style="group" parent="node_root_tsA" vertex="1" connectable="0">
|
68
|
+
<mxGeometry x="874" y="225" width="547" height="257" as="geometry"/>
|
69
|
+
</mxCell>
|
70
|
+
<mxCell id="ncJzMHtPDMttCXbYRI98-2" value="" style="group" parent="ncJzMHtPDMttCXbYRI98-4" vertex="1" connectable="0">
|
71
|
+
<mxGeometry x="2" y="93" width="547" height="170" as="geometry"/>
|
72
|
+
</mxCell>
|
73
|
+
<mxCell id="tsA-32" value="Other printers" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=20;verticalAlign=top" parent="ncJzMHtPDMttCXbYRI98-2" vertex="1">
|
74
|
+
<mxGeometry x="-23" y="-132" width="570" height="302" as="geometry"/>
|
75
|
+
</mxCell>
|
76
|
+
<mxCell id="ncJzMHtPDMttCXbYRI98-0" value="" style="whiteSpace=wrap;html=1;fillColor=#fad7ac;strokeColor=#b46504;rounded=1;opacity=20;" parent="ncJzMHtPDMttCXbYRI98-2" vertex="1">
|
77
|
+
<mxGeometry width="521.5" height="149" as="geometry"/>
|
78
|
+
</mxCell>
|
79
|
+
<mxCell id="tsA-38" value="has_ruby" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" parent="ncJzMHtPDMttCXbYRI98-2" vertex="1">
|
80
|
+
<mxGeometry x="13" y="15" width="90" height="50" as="geometry"/>
|
81
|
+
</mxCell>
|
82
|
+
<mxCell id="tsA-39" value="missing_ruby" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" parent="ncJzMHtPDMttCXbYRI98-2" vertex="1">
|
83
|
+
<mxGeometry x="113" y="15" width="90" height="50" as="geometry"/>
|
84
|
+
</mxCell>
|
85
|
+
<mxCell id="tsA-40" value="has_pk" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" parent="ncJzMHtPDMttCXbYRI98-2" vertex="1">
|
86
|
+
<mxGeometry x="213" y="15" width="90" height="50" as="geometry"/>
|
87
|
+
</mxCell>
|
88
|
+
<mxCell id="tsA-41" value="missing_pk" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" parent="ncJzMHtPDMttCXbYRI98-2" vertex="1">
|
89
|
+
<mxGeometry x="313" y="15" width="90" height="50" as="geometry"/>
|
90
|
+
</mxCell>
|
91
|
+
<mxCell id="tsA-42" value="low_column" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" parent="ncJzMHtPDMttCXbYRI98-2" vertex="1">
|
92
|
+
<mxGeometry x="413" y="15" width="90" height="50" as="geometry"/>
|
93
|
+
</mxCell>
|
94
|
+
<mxCell id="tsA-43" value="fat_column" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" parent="ncJzMHtPDMttCXbYRI98-2" vertex="1">
|
95
|
+
<mxGeometry x="13" y="85" width="90" height="50" as="geometry"/>
|
96
|
+
</mxCell>
|
97
|
+
<mxCell id="tsA-44" value="suspected_m2m" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" parent="ncJzMHtPDMttCXbYRI98-2" vertex="1">
|
98
|
+
<mxGeometry x="113" y="85" width="90" height="50" as="geometry"/>
|
99
|
+
</mxCell>
|
100
|
+
<mxCell id="tsA-45" value="invalid_types" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" parent="ncJzMHtPDMttCXbYRI98-2" vertex="1">
|
101
|
+
<mxGeometry x="213" y="85" width="90" height="50" as="geometry"/>
|
102
|
+
</mxCell>
|
103
|
+
<mxCell id="tsA-46" value="data_columns" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" parent="ncJzMHtPDMttCXbYRI98-2" vertex="1">
|
104
|
+
<mxGeometry x="313" y="85" width="90" height="50" as="geometry"/>
|
105
|
+
</mxCell>
|
106
|
+
<mxCell id="tsA-47" value="date_columns" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" parent="ncJzMHtPDMttCXbYRI98-2" vertex="1">
|
107
|
+
<mxGeometry x="413" y="85" width="90" height="50" as="geometry"/>
|
108
|
+
</mxCell>
|
109
|
+
<mxCell id="ncJzMHtPDMttCXbYRI98-3" style="edgeStyle=none;shape=connector;rounded=0;html=1;exitX=0.584;exitY=0.957;exitDx=0;exitDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=11;fontColor=default;endArrow=classic;strokeColor=#6F0000;fillColor=#a20025;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="ncJzMHtPDMttCXbYRI98-4" source="tsA-35" target="ncJzMHtPDMttCXbYRI98-0" edge="1">
|
110
|
+
<mxGeometry relative="1" as="geometry">
|
111
|
+
<mxPoint x="340.2993698120117" y="75.8362808227539" as="targetPoint"/>
|
112
|
+
</mxGeometry>
|
113
|
+
</mxCell>
|
114
|
+
<mxCell id="tsA-34" value="routes" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" parent="ncJzMHtPDMttCXbYRI98-4" vertex="1">
|
115
|
+
<mxGeometry x="46" y="2" width="75" height="50" as="geometry"/>
|
116
|
+
</mxCell>
|
117
|
+
<mxCell id="tsA-35" value="models" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" parent="ncJzMHtPDMttCXbYRI98-4" vertex="1">
|
118
|
+
<mxGeometry x="217.5" width="75" height="50" as="geometry"/>
|
119
|
+
</mxCell>
|
120
|
+
<mxCell id="tsA-36" value="controllers" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" parent="ncJzMHtPDMttCXbYRI98-4" vertex="1">
|
121
|
+
<mxGeometry x="399.5" width="75" height="50" as="geometry"/>
|
122
|
+
</mxCell>
|
123
|
+
<mxCell id="ncJzMHtPDMttCXbYRI98-5" value="" style="group" parent="node_root_tsA" vertex="1" connectable="0">
|
124
|
+
<mxGeometry x="899" y="7" width="467" height="120" as="geometry"/>
|
125
|
+
</mxCell>
|
126
|
+
<mxCell id="tsA-24" value="DB Schema printers" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=20;verticalAlign=top" parent="ncJzMHtPDMttCXbYRI98-5" vertex="1">
|
127
|
+
<mxGeometry width="467" height="120" as="geometry"/>
|
128
|
+
</mxCell>
|
129
|
+
<mxCell id="tsA-26" value="stats" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" parent="ncJzMHtPDMttCXbYRI98-5" vertex="1">
|
130
|
+
<mxGeometry x="15" y="51" width="75" height="50" as="geometry"/>
|
131
|
+
</mxCell>
|
132
|
+
<mxCell id="tsA-27" value="tables" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" parent="ncJzMHtPDMttCXbYRI98-5" vertex="1">
|
133
|
+
<mxGeometry x="105" y="51" width="75" height="50" as="geometry"/>
|
134
|
+
</mxCell>
|
135
|
+
<mxCell id="tsA-28" value="foreign_keys" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" parent="ncJzMHtPDMttCXbYRI98-5" vertex="1">
|
136
|
+
<mxGeometry x="195" y="51" width="75" height="50" as="geometry"/>
|
137
|
+
</mxCell>
|
138
|
+
<mxCell id="tsA-29" value="indexes" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" parent="ncJzMHtPDMttCXbYRI98-5" vertex="1">
|
139
|
+
<mxGeometry x="285" y="51" width="75" height="50" as="geometry"/>
|
140
|
+
</mxCell>
|
141
|
+
<mxCell id="tsA-30" value="dictionary" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" parent="ncJzMHtPDMttCXbYRI98-5" vertex="1">
|
142
|
+
<mxGeometry x="375" y="51" width="75" height="50" as="geometry"/>
|
143
|
+
</mxCell>
|
144
|
+
<mxCell id="ncJzMHtPDMttCXbYRI98-7" value="" style="group" parent="node_root_tsA" vertex="1" connectable="0">
|
145
|
+
<mxGeometry x="1568" y="139" width="644.5" height="256" as="geometry"/>
|
146
|
+
</mxCell>
|
147
|
+
<mxCell id="tsA-49" value="Generators" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=20;verticalAlign=top" parent="ncJzMHtPDMttCXbYRI98-7" vertex="1">
|
148
|
+
<mxGeometry width="644.5" height="256" as="geometry"/>
|
149
|
+
</mxCell>
|
150
|
+
<mxCell id="tsA-51" value="Factory data" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=process" parent="ncJzMHtPDMttCXbYRI98-7" vertex="1">
|
151
|
+
<mxGeometry x="38.5" y="56" width="120" height="70" as="geometry"/>
|
152
|
+
</mxCell>
|
153
|
+
<mxCell id="tsA-52" value="Model DSL specs (CRUD / Association)" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=process" parent="ncJzMHtPDMttCXbYRI98-7" vertex="1">
|
154
|
+
<mxGeometry x="188.5" y="56" width="120" height="70" as="geometry"/>
|
155
|
+
</mxCell>
|
156
|
+
<mxCell id="tsA-53" value="Model API specs" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=process" parent="ncJzMHtPDMttCXbYRI98-7" vertex="1">
|
157
|
+
<mxGeometry x="338.5" y="56" width="120" height="70" as="geometry"/>
|
158
|
+
</mxCell>
|
159
|
+
<mxCell id="tsA-54" value="Controller request specs" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=process" parent="ncJzMHtPDMttCXbYRI98-7" vertex="1">
|
160
|
+
<mxGeometry x="488.5" y="56" width="120" height="70" as="geometry"/>
|
161
|
+
</mxCell>
|
162
|
+
<mxCell id="tsA-55" value="Query + spec" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=process" parent="ncJzMHtPDMttCXbYRI98-7" vertex="1">
|
163
|
+
<mxGeometry x="38.5" y="156" width="120" height="70" as="geometry"/>
|
164
|
+
</mxCell>
|
165
|
+
<mxCell id="tsA-56" value="Decorator + spec" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=process" parent="ncJzMHtPDMttCXbYRI98-7" vertex="1">
|
166
|
+
<mxGeometry x="188.5" y="156" width="120" height="70" as="geometry"/>
|
167
|
+
</mxCell>
|
168
|
+
<mxCell id="tsA-57" value="Presentor + spec" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=process" parent="ncJzMHtPDMttCXbYRI98-7" vertex="1">
|
169
|
+
<mxGeometry x="338.5" y="156" width="120" height="70" as="geometry"/>
|
170
|
+
</mxCell>
|
171
|
+
<mxCell id="12" value="" style="group" vertex="1" connectable="0" parent="node_root_tsA">
|
172
|
+
<mxGeometry x="268" y="590" width="1746" height="620" as="geometry"/>
|
173
|
+
</mxCell>
|
174
|
+
<mxCell id="tsA-60" value="Reports" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=20;verticalAlign=top" parent="12" vertex="1">
|
175
|
+
<mxGeometry width="1746" height="620" as="geometry"/>
|
176
|
+
</mxCell>
|
177
|
+
<mxCell id="7" value="" style="group" vertex="1" connectable="0" parent="12">
|
178
|
+
<mxGeometry x="830" y="48" width="882.5" height="156" as="geometry"/>
|
179
|
+
</mxCell>
|
180
|
+
<mxCell id="tsA-77" value="rubocop" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="7" vertex="1">
|
181
|
+
<mxGeometry x="765" y="33" width="90" height="90" as="geometry"/>
|
182
|
+
</mxCell>
|
183
|
+
<mxCell id="tsA-94" value="Diff or Conflict" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=note" parent="7" vertex="1">
|
184
|
+
<mxGeometry y="18" width="120" height="120" as="geometry"/>
|
185
|
+
</mxCell>
|
186
|
+
<mxCell id="tsA-95" value="factory data <i>missing data/models</i>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="7" vertex="1">
|
187
|
+
<mxGeometry x="165" y="33" width="90" height="90" as="geometry"/>
|
188
|
+
</mxCell>
|
189
|
+
<mxCell id="tsA-96" value="model DSL specs <i>missing data/associations</i>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="7" vertex="1">
|
190
|
+
<mxGeometry x="315" y="33" width="90" height="90" as="geometry"/>
|
191
|
+
</mxCell>
|
192
|
+
<mxCell id="tsA-97" value="model API specs <i>missing methods</i>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="7" vertex="1">
|
193
|
+
<mxGeometry x="465" y="33" width="90" height="90" as="geometry"/>
|
194
|
+
</mxCell>
|
195
|
+
<mxCell id="tsA-98" value="route / controller action <i>mismatch</i>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="7" vertex="1">
|
196
|
+
<mxGeometry x="615" y="33" width="90" height="90" as="geometry"/>
|
197
|
+
</mxCell>
|
198
|
+
<mxCell id="6" value="" style="whiteSpace=wrap;html=1;fillColor=#e51400;strokeColor=#B20000;rounded=1;opacity=5;fontColor=#ffffff;" vertex="1" parent="7">
|
199
|
+
<mxGeometry x="137.5" width="745" height="156" as="geometry"/>
|
200
|
+
</mxCell>
|
201
|
+
<mxCell id="8" value="" style="group" vertex="1" connectable="0" parent="12">
|
202
|
+
<mxGeometry x="827" y="428" width="882.5" height="156" as="geometry"/>
|
203
|
+
</mxCell>
|
204
|
+
<mxCell id="tsA-87" value="Target patterns" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=note" parent="8" vertex="1">
|
205
|
+
<mxGeometry y="18" width="120" height="120" as="geometry"/>
|
206
|
+
</mxCell>
|
207
|
+
<mxCell id="tsA-88" value="decorators" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="8" vertex="1">
|
208
|
+
<mxGeometry x="165" y="33" width="90" height="90" as="geometry"/>
|
209
|
+
</mxCell>
|
210
|
+
<mxCell id="tsA-89" value="presenters" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="8" vertex="1">
|
211
|
+
<mxGeometry x="315" y="33" width="90" height="90" as="geometry"/>
|
212
|
+
</mxCell>
|
213
|
+
<mxCell id="tsA-90" value="queries" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="8" vertex="1">
|
214
|
+
<mxGeometry x="465" y="33" width="90" height="90" as="geometry"/>
|
215
|
+
</mxCell>
|
216
|
+
<mxCell id="tsA-91" value="commands" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="8" vertex="1">
|
217
|
+
<mxGeometry x="615" y="33" width="90" height="90" as="geometry"/>
|
218
|
+
</mxCell>
|
219
|
+
<mxCell id="tsA-92" value="form objects" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="8" vertex="1">
|
220
|
+
<mxGeometry x="765" y="33" width="90" height="90" as="geometry"/>
|
221
|
+
</mxCell>
|
222
|
+
<mxCell id="5" value="" style="whiteSpace=wrap;html=1;fillColor=#e51400;strokeColor=#B20000;rounded=1;opacity=5;fontColor=#ffffff;" vertex="1" parent="8">
|
223
|
+
<mxGeometry x="137.5" width="745" height="156" as="geometry"/>
|
224
|
+
</mxCell>
|
225
|
+
<mxCell id="9" value="" style="group" vertex="1" connectable="0" parent="12">
|
226
|
+
<mxGeometry x="829" y="236" width="883" height="156" as="geometry"/>
|
227
|
+
</mxCell>
|
228
|
+
<mxCell id="tsA-80" value="Anti patterns" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=note" parent="9" vertex="1">
|
229
|
+
<mxGeometry y="18" width="120" height="120" as="geometry"/>
|
230
|
+
</mxCell>
|
231
|
+
<mxCell id="tsA-81" value="god classes" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="9" vertex="1">
|
232
|
+
<mxGeometry x="165" y="33" width="90" height="90" as="geometry"/>
|
233
|
+
</mxCell>
|
234
|
+
<mxCell id="tsA-82" value="fat controllers" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="9" vertex="1">
|
235
|
+
<mxGeometry x="315" y="33" width="90" height="90" as="geometry"/>
|
236
|
+
</mxCell>
|
237
|
+
<mxCell id="tsA-83" value="fat models" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="9" vertex="1">
|
238
|
+
<mxGeometry x="465" y="33" width="90" height="90" as="geometry"/>
|
239
|
+
</mxCell>
|
240
|
+
<mxCell id="tsA-84" value="fat views vs components" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="9" vertex="1">
|
241
|
+
<mxGeometry x="615" y="33" width="90" height="90" as="geometry"/>
|
242
|
+
</mxCell>
|
243
|
+
<mxCell id="tsA-85" value="interpolated SQL" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="9" vertex="1">
|
244
|
+
<mxGeometry x="765" y="33" width="90" height="90" as="geometry"/>
|
245
|
+
</mxCell>
|
246
|
+
<mxCell id="4" value="" style="whiteSpace=wrap;html=1;fillColor=#e51400;strokeColor=#B20000;rounded=1;opacity=5;fontColor=#ffffff;" vertex="1" parent="9">
|
247
|
+
<mxGeometry x="138" width="745" height="156" as="geometry"/>
|
248
|
+
</mxCell>
|
249
|
+
<mxCell id="10" value="" style="group" vertex="1" connectable="0" parent="12">
|
250
|
+
<mxGeometry x="38" y="44" width="734" height="156" as="geometry"/>
|
251
|
+
</mxCell>
|
252
|
+
<mxCell id="tsA-73" value="ERD" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=note" parent="10" vertex="1">
|
253
|
+
<mxGeometry y="16" width="120" height="120" as="geometry"/>
|
254
|
+
</mxCell>
|
255
|
+
<mxCell id="tsA-74" value="agg roots" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="10" vertex="1">
|
256
|
+
<mxGeometry x="165" y="31" width="90" height="90" as="geometry"/>
|
257
|
+
</mxCell>
|
258
|
+
<mxCell id="tsA-75" value="many to many" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="10" vertex="1">
|
259
|
+
<mxGeometry x="315" y="31" width="90" height="90" as="geometry"/>
|
260
|
+
</mxCell>
|
261
|
+
<mxCell id="tsA-76" value="leaf tables" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="10" vertex="1">
|
262
|
+
<mxGeometry x="465" y="31" width="90" height="90" as="geometry"/>
|
263
|
+
</mxCell>
|
264
|
+
<mxCell id="tsA-78" value="SQL counts" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="10" vertex="1">
|
265
|
+
<mxGeometry x="624" y="28" width="90" height="90" as="geometry"/>
|
266
|
+
</mxCell>
|
267
|
+
<mxCell id="ncJzMHtPDMttCXbYRI98-26" value="" style="whiteSpace=wrap;html=1;fillColor=#e51400;strokeColor=#B20000;rounded=1;opacity=5;fontColor=#ffffff;" parent="10" vertex="1">
|
268
|
+
<mxGeometry x="140" width="594" height="156" as="geometry"/>
|
269
|
+
</mxCell>
|
270
|
+
<mxCell id="11" value="" style="group" vertex="1" connectable="0" parent="12">
|
271
|
+
<mxGeometry x="38" y="303" width="734" height="262" as="geometry"/>
|
272
|
+
</mxCell>
|
273
|
+
<mxCell id="tsA-62" value="Tests" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=note" parent="11" vertex="1">
|
274
|
+
<mxGeometry y="67" width="120" height="120" as="geometry"/>
|
275
|
+
</mxCell>
|
276
|
+
<mxCell id="tsA-63" value="coverage" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="11" vertex="1">
|
277
|
+
<mxGeometry x="166.5" y="19" width="90" height="90" as="geometry"/>
|
278
|
+
</mxCell>
|
279
|
+
<mxCell id="tsA-64" value="model DSL" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="11" vertex="1">
|
280
|
+
<mxGeometry x="316.5" y="19" width="90" height="90" as="geometry"/>
|
281
|
+
</mxCell>
|
282
|
+
<mxCell id="tsA-65" value="model API" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="11" vertex="1">
|
283
|
+
<mxGeometry x="466.5" y="19" width="90" height="90" as="geometry"/>
|
284
|
+
</mxCell>
|
285
|
+
<mxCell id="tsA-66" value="controller request" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="11" vertex="1">
|
286
|
+
<mxGeometry x="616.5" y="19" width="90" height="90" as="geometry"/>
|
287
|
+
</mxCell>
|
288
|
+
<mxCell id="tsA-67" value="controller commands" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="11" vertex="1">
|
289
|
+
<mxGeometry x="166.5" y="153" width="90" height="90" as="geometry"/>
|
290
|
+
</mxCell>
|
291
|
+
<mxCell id="tsA-68" value="query" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="11" vertex="1">
|
292
|
+
<mxGeometry x="316.5" y="153" width="90" height="90" as="geometry"/>
|
293
|
+
</mxCell>
|
294
|
+
<mxCell id="tsA-69" value="decorator" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="11" vertex="1">
|
295
|
+
<mxGeometry x="466.5" y="153" width="90" height="90" as="geometry"/>
|
296
|
+
</mxCell>
|
297
|
+
<mxCell id="tsA-70" value="presentor" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="11" vertex="1">
|
298
|
+
<mxGeometry x="616.5" y="153" width="90" height="90" as="geometry"/>
|
299
|
+
</mxCell>
|
300
|
+
<mxCell id="ncJzMHtPDMttCXbYRI98-11" value="" style="whiteSpace=wrap;html=1;fillColor=#e51400;strokeColor=#B20000;rounded=1;opacity=5;fontColor=#ffffff;" parent="11" vertex="1">
|
301
|
+
<mxGeometry x="141" width="593" height="262" as="geometry"/>
|
302
|
+
</mxCell>
|
303
|
+
</root>
|
304
|
+
</mxGraphModel>
|
305
|
+
</diagram>
|
306
|
+
</mxfile>
|
Binary file
|