drawio_dsl 0.11.0 → 0.11.3
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 +564 -370
- data/docs/domain_model.drawio +89 -89
- data/docs/domain_model.json +267 -267
- data/docs/printspeak-architecture-controllers-custom.drawio +9 -9
- data/docs/printspeak-architecture-controllers.drawio +47 -47
- data/docs/printspeak-architecture-generator-custom.drawio +16 -10
- data/docs/printspeak-architecture-generator.drawio +268 -0
- data/docs/project-plan/project.drawio +89 -89
- 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/docs/samples/themes-random.svg +1 -1
- data/docs/tailwind_domain_model-custom.drawio +104 -0
- data/docs/tailwind_domain_model.json +288 -0
- data/docs/tailwind_domain_model.svg +3 -0
- data/lib/drawio_dsl/configuration.rb +96 -84
- data/lib/drawio_dsl/dom_builder.rb +2 -2
- data/lib/drawio_dsl/dom_builder_shapes.rb +60 -0
- data/lib/drawio_dsl/drawio_shapes.rb +103 -43
- data/lib/drawio_dsl/schema/_.rb +10 -0
- 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 +24 -3
- data/lib/drawio_dsl/schema/lines/dash_dot.rb +9 -0
- data/lib/drawio_dsl/schema/lines/dash_dot_dot.rb +9 -0
- data/lib/drawio_dsl/schema/lines/dash_long_dash.rb +9 -0
- data/lib/drawio_dsl/schema/lines/dashed.rb +9 -0
- data/lib/drawio_dsl/schema/lines/dashed24.rb +9 -0
- data/lib/drawio_dsl/schema/lines/dashed32.rb +9 -0
- data/lib/drawio_dsl/schema/lines/dashed44.rb +9 -0
- data/lib/drawio_dsl/schema/lines/dot_dot_dot.rb +9 -0
- data/lib/drawio_dsl/schema/lines/dotted.rb +9 -0
- data/lib/drawio_dsl/schema/lines/long_dash.rb +9 -0
- data/lib/drawio_dsl/schema/node.rb +5 -5
- data/lib/drawio_dsl/schema/shape.rb +14 -9
- data/lib/drawio_dsl/schema/text.rb +4 -0
- data/lib/drawio_dsl/version.rb +1 -1
- data/package-lock.json +2 -2
- data/package.json +1 -1
- metadata +16 -2
@@ -1,22 +1,22 @@
|
|
1
1
|
<mxfile host="65bd71144e">
|
2
2
|
<diagram id="hn6" name="Fat Controllers">
|
3
|
-
<mxGraphModel dx="
|
3
|
+
<mxGraphModel dx="1209" dy="490" 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
4
|
<root>
|
5
5
|
<mxCell id="page_root_hn6"/>
|
6
6
|
<mxCell id="node_root_hn6" parent="page_root_hn6"/>
|
7
|
-
<mxCell id="xLSgLBnB-I_RfziK7SGa-5" value="" style="whiteSpace=wrap;html=1;align=left;fillColor=#eeeeee;rounded=0;strokeColor=#36393d;"
|
7
|
+
<mxCell id="xLSgLBnB-I_RfziK7SGa-5" value="" style="whiteSpace=wrap;html=1;align=left;fillColor=#eeeeee;rounded=0;strokeColor=#36393d;" parent="node_root_hn6" vertex="1">
|
8
8
|
<mxGeometry x="396" y="354" width="450" height="205" as="geometry"/>
|
9
9
|
</mxCell>
|
10
|
-
<mxCell id="xLSgLBnB-I_RfziK7SGa-3" value="" style="whiteSpace=wrap;html=1;align=left;fillColor=#eeeeee;rounded=0;strokeColor=#36393d;"
|
10
|
+
<mxCell id="xLSgLBnB-I_RfziK7SGa-3" value="" style="whiteSpace=wrap;html=1;align=left;fillColor=#eeeeee;rounded=0;strokeColor=#36393d;" parent="node_root_hn6" vertex="1">
|
11
11
|
<mxGeometry x="396" y="137" width="450" height="205" as="geometry"/>
|
12
12
|
</mxCell>
|
13
|
-
<mxCell id="xLSgLBnB-I_RfziK7SGa-1" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=1.008;exitY=0.43;exitDx=0;exitDy=0;entryX=-0.004;entryY=0.53;entryDx=0;entryDy=0;entryPerimeter=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=11;fontColor=default;endArrow=classic;strokeColor=#b85450;fillColor=#f8cecc;exitPerimeter=0;"
|
13
|
+
<mxCell id="xLSgLBnB-I_RfziK7SGa-1" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=1.008;exitY=0.43;exitDx=0;exitDy=0;entryX=-0.004;entryY=0.53;entryDx=0;entryDy=0;entryPerimeter=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=11;fontColor=default;endArrow=classic;strokeColor=#b85450;fillColor=#f8cecc;exitPerimeter=0;" parent="node_root_hn6" source="hn6-2" target="hn6-4" edge="1">
|
14
14
|
<mxGeometry relative="1" as="geometry"/>
|
15
15
|
</mxCell>
|
16
|
-
<mxCell id="xLSgLBnB-I_RfziK7SGa-2" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=1;exitY=0.596;exitDx=0;exitDy=0;entryX=0.011;entryY=0.663;entryDx=0;entryDy=0;entryPerimeter=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=11;fontColor=default;endArrow=classic;strokeColor=#b85450;fillColor=#f8cecc;exitPerimeter=0;"
|
16
|
+
<mxCell id="xLSgLBnB-I_RfziK7SGa-2" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=1;exitY=0.596;exitDx=0;exitDy=0;entryX=0.011;entryY=0.663;entryDx=0;entryDy=0;entryPerimeter=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=11;fontColor=default;endArrow=classic;strokeColor=#b85450;fillColor=#f8cecc;exitPerimeter=0;" parent="node_root_hn6" source="hn6-2" target="hn6-5" edge="1">
|
17
17
|
<mxGeometry relative="1" as="geometry"/>
|
18
18
|
</mxCell>
|
19
|
-
<mxCell id="xLSgLBnB-I_RfziK7SGa-7" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=1;exitY=0.913;exitDx=0;exitDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=11;fontColor=default;endArrow=classic;strokeColor=#b85450;fillColor=#f8cecc;exitPerimeter=0;"
|
19
|
+
<mxCell id="xLSgLBnB-I_RfziK7SGa-7" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=1;exitY=0.913;exitDx=0;exitDy=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=11;fontColor=default;endArrow=classic;strokeColor=#b85450;fillColor=#f8cecc;exitPerimeter=0;" parent="node_root_hn6" source="hn6-2" target="hn6-7" edge="1">
|
20
20
|
<mxGeometry relative="1" as="geometry"/>
|
21
21
|
</mxCell>
|
22
22
|
<mxCell id="hn6-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" parent="node_root_hn6" vertex="1">
|
@@ -37,13 +37,13 @@
|
|
37
37
|
<mxCell id="hn6-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" parent="node_root_hn6" vertex="1">
|
38
38
|
<mxGeometry x="635" y="429" width="200" height="120" as="geometry"/>
|
39
39
|
</mxCell>
|
40
|
-
<mxCell id="xLSgLBnB-I_RfziK7SGa-0" style="edgeStyle=none;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;fillColor=#f8cecc;strokeColor=#b85450;entryX=0.021;entryY=0.455;entryDx=0;entryDy=0;entryPerimeter=0;"
|
40
|
+
<mxCell id="xLSgLBnB-I_RfziK7SGa-0" style="edgeStyle=none;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;fillColor=#f8cecc;strokeColor=#b85450;entryX=0.021;entryY=0.455;entryDx=0;entryDy=0;entryPerimeter=0;" parent="node_root_hn6" source="hn6-2" target="hn6-3" edge="1">
|
41
41
|
<mxGeometry relative="1" as="geometry">
|
42
42
|
<mxPoint x="321" y="216" as="sourcePoint"/>
|
43
43
|
<mxPoint x="448" y="161.7312775330396" as="targetPoint"/>
|
44
44
|
</mxGeometry>
|
45
45
|
</mxCell>
|
46
|
-
<mxCell id="xLSgLBnB-I_RfziK7SGa-6" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=0.997;exitY=0.796;exitDx=0;exitDy=0;entryX=-0.004;entryY=0.53;entryDx=0;entryDy=0;entryPerimeter=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=11;fontColor=default;endArrow=classic;strokeColor=#b85450;fillColor=#f8cecc;exitPerimeter=0;"
|
46
|
+
<mxCell id="xLSgLBnB-I_RfziK7SGa-6" style="edgeStyle=none;shape=connector;rounded=1;html=1;exitX=0.997;exitY=0.796;exitDx=0;exitDy=0;entryX=-0.004;entryY=0.53;entryDx=0;entryDy=0;entryPerimeter=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=11;fontColor=default;endArrow=classic;strokeColor=#b85450;fillColor=#f8cecc;exitPerimeter=0;" parent="node_root_hn6" source="hn6-2" edge="1">
|
47
47
|
<mxGeometry relative="1" as="geometry">
|
48
48
|
<mxPoint x="289.99999999999994" y="418.01" as="sourcePoint"/>
|
49
49
|
<mxPoint x="409.16" y="417" as="targetPoint"/>
|
@@ -53,7 +53,7 @@
|
|
53
53
|
</mxGraphModel>
|
54
54
|
</diagram>
|
55
55
|
<diagram id="mBj" name="Thin Controllers">
|
56
|
-
<mxGraphModel dx="
|
56
|
+
<mxGraphModel dx="1209" dy="490" 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">
|
57
57
|
<root>
|
58
58
|
<mxCell id="page_root_mBj"/>
|
59
59
|
<mxCell id="node_root_mBj" parent="page_root_mBj"/>
|
@@ -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="65bd71144e">
|
2
|
+
<diagram id="EQQ" name="Fat Controllers">
|
3
|
+
<mxGraphModel dx="1301" dy="572" 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_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" parent="node_root_EQQ" vertex="1">
|
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" parent="node_root_EQQ" vertex="1">
|
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" parent="node_root_EQQ" vertex="1">
|
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" parent="node_root_EQQ" vertex="1">
|
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="Thin Controllers">
|
23
|
+
<mxGraphModel dx="1301" dy="572" 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">
|
24
|
+
<root>
|
25
|
+
<mxCell id="page_root_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" parent="node_root_99x" vertex="1">
|
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" parent="node_root_99x" vertex="1">
|
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" parent="node_root_99x" vertex="1">
|
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" parent="node_root_99x" vertex="1">
|
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" parent="node_root_99x" vertex="1">
|
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" parent="node_root_99x" vertex="1">
|
43
|
+
<mxGeometry x="230" y="270" width="200" height="120" as="geometry"/>
|
44
|
+
</mxCell>
|
45
|
+
</root>
|
46
|
+
</mxGraphModel>
|
47
|
+
</diagram>
|
48
48
|
</mxfile>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<mxfile host="65bd71144e">
|
2
2
|
<diagram id="tsA" name="Style-Plain">
|
3
|
-
<mxGraphModel dx="
|
3
|
+
<mxGraphModel dx="1153" 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
4
|
<root>
|
5
5
|
<mxCell id="page_root_tsA"/>
|
6
6
|
<mxCell id="node_root_tsA" parent="page_root_tsA"/>
|
@@ -168,13 +168,13 @@
|
|
168
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
169
|
<mxGeometry x="338.5" y="156" width="120" height="70" as="geometry"/>
|
170
170
|
</mxCell>
|
171
|
-
<mxCell id="12" value="" style="group" vertex="1" connectable="0"
|
171
|
+
<mxCell id="12" value="" style="group" parent="node_root_tsA" vertex="1" connectable="0">
|
172
172
|
<mxGeometry x="268" y="590" width="1746" height="620" as="geometry"/>
|
173
173
|
</mxCell>
|
174
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
175
|
<mxGeometry width="1746" height="620" as="geometry"/>
|
176
176
|
</mxCell>
|
177
|
-
<mxCell id="7" value="" style="group" vertex="1" connectable="0"
|
177
|
+
<mxCell id="7" value="" style="group" parent="12" vertex="1" connectable="0">
|
178
178
|
<mxGeometry x="830" y="48" width="882.5" height="156" as="geometry"/>
|
179
179
|
</mxCell>
|
180
180
|
<mxCell id="tsA-77" value="rubocop" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" parent="7" vertex="1">
|
@@ -195,10 +195,10 @@
|
|
195
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
196
|
<mxGeometry x="615" y="33" width="90" height="90" as="geometry"/>
|
197
197
|
</mxCell>
|
198
|
-
<mxCell id="6" value="" style="whiteSpace=wrap;html=1;fillColor=#e51400;strokeColor=#B20000;rounded=1;opacity=5;fontColor=#ffffff;"
|
198
|
+
<mxCell id="6" value="" style="whiteSpace=wrap;html=1;fillColor=#e51400;strokeColor=#B20000;rounded=1;opacity=5;fontColor=#ffffff;" parent="7" vertex="1">
|
199
199
|
<mxGeometry x="137.5" width="745" height="156" as="geometry"/>
|
200
200
|
</mxCell>
|
201
|
-
<mxCell id="8" value="" style="group" vertex="1" connectable="0"
|
201
|
+
<mxCell id="8" value="" style="group" parent="12" vertex="1" connectable="0">
|
202
202
|
<mxGeometry x="827" y="428" width="882.5" height="156" as="geometry"/>
|
203
203
|
</mxCell>
|
204
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">
|
@@ -219,10 +219,10 @@
|
|
219
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
220
|
<mxGeometry x="765" y="33" width="90" height="90" as="geometry"/>
|
221
221
|
</mxCell>
|
222
|
-
<mxCell id="5" value="" style="whiteSpace=wrap;html=1;fillColor=#e51400;strokeColor=#B20000;rounded=1;opacity=5;fontColor=#ffffff;"
|
222
|
+
<mxCell id="5" value="" style="whiteSpace=wrap;html=1;fillColor=#e51400;strokeColor=#B20000;rounded=1;opacity=5;fontColor=#ffffff;" parent="8" vertex="1">
|
223
223
|
<mxGeometry x="137.5" width="745" height="156" as="geometry"/>
|
224
224
|
</mxCell>
|
225
|
-
<mxCell id="9" value="" style="group" vertex="1" connectable="0"
|
225
|
+
<mxCell id="9" value="" style="group" parent="12" vertex="1" connectable="0">
|
226
226
|
<mxGeometry x="829" y="236" width="883" height="156" as="geometry"/>
|
227
227
|
</mxCell>
|
228
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">
|
@@ -243,10 +243,10 @@
|
|
243
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
244
|
<mxGeometry x="765" y="33" width="90" height="90" as="geometry"/>
|
245
245
|
</mxCell>
|
246
|
-
<mxCell id="4" value="" style="whiteSpace=wrap;html=1;fillColor=#e51400;strokeColor=#B20000;rounded=1;opacity=5;fontColor=#ffffff;"
|
246
|
+
<mxCell id="4" value="" style="whiteSpace=wrap;html=1;fillColor=#e51400;strokeColor=#B20000;rounded=1;opacity=5;fontColor=#ffffff;" parent="9" vertex="1">
|
247
247
|
<mxGeometry x="138" width="745" height="156" as="geometry"/>
|
248
248
|
</mxCell>
|
249
|
-
<mxCell id="10" value="" style="group" vertex="1" connectable="0"
|
249
|
+
<mxCell id="10" value="" style="group" parent="12" vertex="1" connectable="0">
|
250
250
|
<mxGeometry x="38" y="44" width="734" height="156" as="geometry"/>
|
251
251
|
</mxCell>
|
252
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">
|
@@ -267,7 +267,7 @@
|
|
267
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
268
|
<mxGeometry x="140" width="594" height="156" as="geometry"/>
|
269
269
|
</mxCell>
|
270
|
-
<mxCell id="11" value="" style="group" vertex="1" connectable="0"
|
270
|
+
<mxCell id="11" value="" style="group" parent="12" vertex="1" connectable="0">
|
271
271
|
<mxGeometry x="38" y="303" width="734" height="262" as="geometry"/>
|
272
272
|
</mxCell>
|
273
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">
|
@@ -300,6 +300,12 @@
|
|
300
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
301
|
<mxGeometry x="141" width="593" height="262" as="geometry"/>
|
302
302
|
</mxCell>
|
303
|
+
<mxCell id="15" style="edgeStyle=none;shape=connector;rounded=0;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;labelBackgroundColor=default;fontFamily=Helvetica;fontSize=11;fontColor=default;endArrow=classic;strokeColor=#6F0000;fillColor=#a20025;" edge="1" parent="node_root_tsA" source="13" target="g">
|
304
|
+
<mxGeometry relative="1" as="geometry"/>
|
305
|
+
</mxCell>
|
306
|
+
<mxCell id="13" value="rake routes:json<br>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;shape=mxgraph.flowchart.database;strokeWidth=1" vertex="1" parent="node_root_tsA">
|
307
|
+
<mxGeometry x="26.5" y="283" width="160" height="40" as="geometry"/>
|
308
|
+
</mxCell>
|
303
309
|
</root>
|
304
310
|
</mxGraphModel>
|
305
311
|
</diagram>
|
@@ -0,0 +1,268 @@
|
|
1
|
+
<mxfile host="rC4">
|
2
|
+
<diagram id="A5F" name="Style-Plain">
|
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_A5F" parent="A5F"/>
|
6
|
+
<mxCell id="node_root_A5F" parent="page_root_A5F"/>
|
7
|
+
<mxCell id="A5F-2" value="Data Sources (Documents)" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=20;verticalAlign=top" vertex="1" parent="node_root_A5F">
|
8
|
+
<mxGeometry x="5" y="5" width="210" height="210" 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" vertex="1" parent="node_root_A5F">
|
11
|
+
<mxGeometry x="30" y="250" 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" vertex="1" parent="node_root_A5F">
|
14
|
+
<mxGeometry x="250" y="250" 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" vertex="1" parent="node_root_A5F">
|
17
|
+
<mxGeometry x="30" y="350" 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" vertex="1" parent="node_root_A5F">
|
20
|
+
<mxGeometry x="250" y="350" 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" vertex="1" parent="node_root_A5F">
|
23
|
+
<mxGeometry x="30" y="450" 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" vertex="1" parent="node_root_A5F">
|
26
|
+
<mxGeometry x="250" y="450" width="160" height="40" as="geometry"/>
|
27
|
+
</mxCell>
|
28
|
+
<mxCell id="g" value="rake routes:json" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;shape=mxgraph.flowchart.database;strokeWidth=1" vertex="1" parent="node_root_A5F">
|
29
|
+
<mxGeometry x="30" y="550" width="160" height="40" as="geometry"/>
|
30
|
+
</mxCell>
|
31
|
+
<mxCell id="h" value="routes.json" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;shape=mxgraph.flowchart.database;strokeWidth=1" vertex="1" parent="node_root_A5F">
|
32
|
+
<mxGeometry x="250" y="550" width="160" height="40" as="geometry"/>
|
33
|
+
</mxCell>
|
34
|
+
<mxCell id="i" value="model/**/*.rb" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;shape=mxgraph.flowchart.database;strokeWidth=1" vertex="1" parent="node_root_A5F">
|
35
|
+
<mxGeometry x="30" y="650" width="160" height="40" as="geometry"/>
|
36
|
+
</mxCell>
|
37
|
+
<mxCell id="j" value="controller/**/*.json" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;shape=mxgraph.flowchart.database;strokeWidth=1" vertex="1" parent="node_root_A5F">
|
38
|
+
<mxGeometry x="250" y="650" width="160" height="40" as="geometry"/>
|
39
|
+
</mxCell>
|
40
|
+
<mxCell id="k" value="domain_model.json" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333;shape=mxgraph.flowchart.database;strokeWidth=1" vertex="1" parent="node_root_A5F">
|
41
|
+
<mxGeometry x="30" y="750" width="160" height="40" as="geometry"/>
|
42
|
+
</mxCell>
|
43
|
+
<mxCell id="A5F-15" value="" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;edgeStyle=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0" parent="node_root_A5F" source="a" target="b" edge="1">
|
44
|
+
<mxGeometry relative="1" as="geometry"/>
|
45
|
+
</mxCell>
|
46
|
+
<mxCell id="A5F-16" value="" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;edgeStyle=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0" parent="node_root_A5F" source="c" target="d" edge="1">
|
47
|
+
<mxGeometry relative="1" as="geometry"/>
|
48
|
+
</mxCell>
|
49
|
+
<mxCell id="A5F-17" value="" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;edgeStyle=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0" parent="node_root_A5F" source="e" target="f" edge="1">
|
50
|
+
<mxGeometry relative="1" as="geometry"/>
|
51
|
+
</mxCell>
|
52
|
+
<mxCell id="A5F-18" value="" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;edgeStyle=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0" parent="node_root_A5F" source="g" target="h" edge="1">
|
53
|
+
<mxGeometry relative="1" as="geometry"/>
|
54
|
+
</mxCell>
|
55
|
+
<mxCell id="A5F-19" value="" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;edgeStyle=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0" parent="node_root_A5F" source="b" target="k" edge="1">
|
56
|
+
<mxGeometry relative="1" as="geometry"/>
|
57
|
+
</mxCell>
|
58
|
+
<mxCell id="A5F-20" value="" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;edgeStyle=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0" parent="node_root_A5F" source="d" target="k" edge="1">
|
59
|
+
<mxGeometry relative="1" as="geometry"/>
|
60
|
+
</mxCell>
|
61
|
+
<mxCell id="A5F-21" value="" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;edgeStyle=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0" parent="node_root_A5F" source="f" target="k" edge="1">
|
62
|
+
<mxGeometry relative="1" as="geometry"/>
|
63
|
+
</mxCell>
|
64
|
+
<mxCell id="A5F-22" value="" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;edgeStyle=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0" parent="node_root_A5F" source="g" target="k" edge="1">
|
65
|
+
<mxGeometry relative="1" as="geometry"/>
|
66
|
+
</mxCell>
|
67
|
+
<mxCell id="A5F-23" value="" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;edgeStyle=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0" parent="node_root_A5F" source="h" target="k" edge="1">
|
68
|
+
<mxGeometry relative="1" as="geometry"/>
|
69
|
+
</mxCell>
|
70
|
+
<mxCell id="A5F-24" value="" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;edgeStyle=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0" parent="node_root_A5F" source="i" target="k" edge="1">
|
71
|
+
<mxGeometry relative="1" as="geometry"/>
|
72
|
+
</mxCell>
|
73
|
+
<mxCell id="A5F-25" value="" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;edgeStyle=none;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0" parent="node_root_A5F" source="j" target="k" edge="1">
|
74
|
+
<mxGeometry relative="1" as="geometry"/>
|
75
|
+
</mxCell>
|
76
|
+
<mxCell id="A5F-27" value="Printers - DB Schema" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=20;verticalAlign=top" vertex="1" parent="node_root_A5F">
|
77
|
+
<mxGeometry x="5" y="1325" width="210" height="210" as="geometry"/>
|
78
|
+
</mxCell>
|
79
|
+
<mxCell id="A5F-29" value="stats" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="node_root_A5F">
|
80
|
+
<mxGeometry x="7" y="1550" width="75" height="50" as="geometry"/>
|
81
|
+
</mxCell>
|
82
|
+
<mxCell id="A5F-30" value="tables" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="node_root_A5F">
|
83
|
+
<mxGeometry x="97" y="1550" width="75" height="50" as="geometry"/>
|
84
|
+
</mxCell>
|
85
|
+
<mxCell id="A5F-31" value="foreign_keys" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="node_root_A5F">
|
86
|
+
<mxGeometry x="187" y="1550" width="75" height="50" as="geometry"/>
|
87
|
+
</mxCell>
|
88
|
+
<mxCell id="A5F-32" value="indexes" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="node_root_A5F">
|
89
|
+
<mxGeometry x="277" y="1550" width="75" height="50" as="geometry"/>
|
90
|
+
</mxCell>
|
91
|
+
<mxCell id="A5F-33" value="dictionary" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="node_root_A5F">
|
92
|
+
<mxGeometry x="367" y="1550" width="75" height="50" as="geometry"/>
|
93
|
+
</mxCell>
|
94
|
+
<mxCell id="A5F-35" value="Printers - Other" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=20;verticalAlign=top" vertex="1" parent="node_root_A5F">
|
95
|
+
<mxGeometry x="5" y="1615" width="210" height="210" as="geometry"/>
|
96
|
+
</mxCell>
|
97
|
+
<mxCell id="A5F-37" value="routes" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="node_root_A5F">
|
98
|
+
<mxGeometry x="12" y="1840" width="75" height="50" as="geometry"/>
|
99
|
+
</mxCell>
|
100
|
+
<mxCell id="A5F-38" value="models" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="node_root_A5F">
|
101
|
+
<mxGeometry x="112" y="1840" width="75" height="50" as="geometry"/>
|
102
|
+
</mxCell>
|
103
|
+
<mxCell id="A5F-39" value="controllers" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333;shape=mxgraph.basic.cloud_rect" vertex="1" parent="node_root_A5F">
|
104
|
+
<mxGeometry x="212" y="1840" width="75" height="50" as="geometry"/>
|
105
|
+
</mxCell>
|
106
|
+
<mxCell id="A5F-41" value="has_ruby" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
107
|
+
<mxGeometry x="5" y="1910" width="90" height="50" as="geometry"/>
|
108
|
+
</mxCell>
|
109
|
+
<mxCell id="A5F-42" value="missing_ruby" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
110
|
+
<mxGeometry x="105" y="1910" width="90" height="50" as="geometry"/>
|
111
|
+
</mxCell>
|
112
|
+
<mxCell id="A5F-43" value="has_pk" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
113
|
+
<mxGeometry x="205" y="1910" width="90" height="50" as="geometry"/>
|
114
|
+
</mxCell>
|
115
|
+
<mxCell id="A5F-44" value="missing_pk" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
116
|
+
<mxGeometry x="305" y="1910" width="90" height="50" as="geometry"/>
|
117
|
+
</mxCell>
|
118
|
+
<mxCell id="A5F-45" value="low_column" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
119
|
+
<mxGeometry x="405" y="1910" width="90" height="50" as="geometry"/>
|
120
|
+
</mxCell>
|
121
|
+
<mxCell id="A5F-46" value="fat_column" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
122
|
+
<mxGeometry x="5" y="1980" width="90" height="50" as="geometry"/>
|
123
|
+
</mxCell>
|
124
|
+
<mxCell id="A5F-47" value="suspected_m2m" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
125
|
+
<mxGeometry x="105" y="1980" width="90" height="50" as="geometry"/>
|
126
|
+
</mxCell>
|
127
|
+
<mxCell id="A5F-48" value="invalid_types" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
128
|
+
<mxGeometry x="205" y="1980" width="90" height="50" as="geometry"/>
|
129
|
+
</mxCell>
|
130
|
+
<mxCell id="A5F-49" value="data_columns" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
131
|
+
<mxGeometry x="305" y="1980" width="90" height="50" as="geometry"/>
|
132
|
+
</mxCell>
|
133
|
+
<mxCell id="A5F-50" value="date_columns" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#ffe6cc;strokeColor=#d79b00;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
134
|
+
<mxGeometry x="405" y="1980" width="90" height="50" as="geometry"/>
|
135
|
+
</mxCell>
|
136
|
+
<mxCell id="A5F-52" value="Generators" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=20;verticalAlign=top" vertex="1" parent="node_root_A5F">
|
137
|
+
<mxGeometry x="5" y="2045" width="210" height="210" as="geometry"/>
|
138
|
+
</mxCell>
|
139
|
+
<mxCell id="A5F-54" value="Factory data" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=process" vertex="1" parent="node_root_A5F">
|
140
|
+
<mxGeometry x="15" y="2275" width="120" height="70" as="geometry"/>
|
141
|
+
</mxCell>
|
142
|
+
<mxCell id="A5F-55" value="Model DSL specs (CRUD / Association)" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=process" vertex="1" parent="node_root_A5F">
|
143
|
+
<mxGeometry x="165" y="2275" width="120" height="70" as="geometry"/>
|
144
|
+
</mxCell>
|
145
|
+
<mxCell id="A5F-56" value="Model API specs" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=process" vertex="1" parent="node_root_A5F">
|
146
|
+
<mxGeometry x="315" y="2275" width="120" height="70" as="geometry"/>
|
147
|
+
</mxCell>
|
148
|
+
<mxCell id="A5F-57" value="Controller request specs" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=process" vertex="1" parent="node_root_A5F">
|
149
|
+
<mxGeometry x="465" y="2275" width="120" height="70" as="geometry"/>
|
150
|
+
</mxCell>
|
151
|
+
<mxCell id="A5F-58" value="Query + spec" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=process" vertex="1" parent="node_root_A5F">
|
152
|
+
<mxGeometry x="15" y="2375" width="120" height="70" as="geometry"/>
|
153
|
+
</mxCell>
|
154
|
+
<mxCell id="A5F-59" value="Decorator + spec" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=process" vertex="1" parent="node_root_A5F">
|
155
|
+
<mxGeometry x="165" y="2375" width="120" height="70" as="geometry"/>
|
156
|
+
</mxCell>
|
157
|
+
<mxCell id="A5F-60" value="Presentor + spec" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=process" vertex="1" parent="node_root_A5F">
|
158
|
+
<mxGeometry x="315" y="2375" width="120" height="70" as="geometry"/>
|
159
|
+
</mxCell>
|
160
|
+
<mxCell id="A5F-61" value="" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fafafa;strokeColor=#fafafa;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
161
|
+
<mxGeometry x="500" y="2385" width="50" height="50" as="geometry"/>
|
162
|
+
</mxCell>
|
163
|
+
<mxCell id="A5F-63" value="Reports" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;fontSize=20;verticalAlign=top" vertex="1" parent="node_root_A5F">
|
164
|
+
<mxGeometry x="5" y="2465" width="210" height="210" as="geometry"/>
|
165
|
+
</mxCell>
|
166
|
+
<mxCell id="A5F-65" value="Tests" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=note" vertex="1" parent="node_root_A5F">
|
167
|
+
<mxGeometry x="15" y="2695" width="120" height="120" as="geometry"/>
|
168
|
+
</mxCell>
|
169
|
+
<mxCell id="A5F-66" value="coverage" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
170
|
+
<mxGeometry x="180" y="2710" width="90" height="90" as="geometry"/>
|
171
|
+
</mxCell>
|
172
|
+
<mxCell id="A5F-67" value="model DSL" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
173
|
+
<mxGeometry x="330" y="2710" width="90" height="90" as="geometry"/>
|
174
|
+
</mxCell>
|
175
|
+
<mxCell id="A5F-68" value="model API" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
176
|
+
<mxGeometry x="480" y="2710" width="90" height="90" as="geometry"/>
|
177
|
+
</mxCell>
|
178
|
+
<mxCell id="A5F-69" value="controller request" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
179
|
+
<mxGeometry x="630" y="2710" width="90" height="90" as="geometry"/>
|
180
|
+
</mxCell>
|
181
|
+
<mxCell id="A5F-70" value="controller commands" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
182
|
+
<mxGeometry x="30" y="2860" width="90" height="90" as="geometry"/>
|
183
|
+
</mxCell>
|
184
|
+
<mxCell id="A5F-71" value="query" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
185
|
+
<mxGeometry x="180" y="2860" width="90" height="90" as="geometry"/>
|
186
|
+
</mxCell>
|
187
|
+
<mxCell id="A5F-72" value="decorator" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
188
|
+
<mxGeometry x="330" y="2860" width="90" height="90" as="geometry"/>
|
189
|
+
</mxCell>
|
190
|
+
<mxCell id="A5F-73" value="presentor" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
191
|
+
<mxGeometry x="480" y="2860" width="90" height="90" as="geometry"/>
|
192
|
+
</mxCell>
|
193
|
+
<mxCell id="A5F-74" value="" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fafafa;strokeColor=#fafafa;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
194
|
+
<mxGeometry x="650" y="2880" width="50" height="50" as="geometry"/>
|
195
|
+
</mxCell>
|
196
|
+
<mxCell id="A5F-76" value="ERD" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=note" vertex="1" parent="node_root_A5F">
|
197
|
+
<mxGeometry x="15" y="2995" width="120" height="120" as="geometry"/>
|
198
|
+
</mxCell>
|
199
|
+
<mxCell id="A5F-77" value="agg roots" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
200
|
+
<mxGeometry x="180" y="3010" width="90" height="90" as="geometry"/>
|
201
|
+
</mxCell>
|
202
|
+
<mxCell id="A5F-78" value="many to many" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
203
|
+
<mxGeometry x="330" y="3010" width="90" height="90" as="geometry"/>
|
204
|
+
</mxCell>
|
205
|
+
<mxCell id="A5F-79" value="leaf tables" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
206
|
+
<mxGeometry x="480" y="3010" width="90" height="90" as="geometry"/>
|
207
|
+
</mxCell>
|
208
|
+
<mxCell id="A5F-80" value="rubocop" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
209
|
+
<mxGeometry x="630" y="3010" width="90" height="90" as="geometry"/>
|
210
|
+
</mxCell>
|
211
|
+
<mxCell id="A5F-81" value="SQL counts" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
212
|
+
<mxGeometry x="780" y="3010" width="90" height="90" as="geometry"/>
|
213
|
+
</mxCell>
|
214
|
+
<mxCell id="A5F-83" value="Anti patterns" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=note" vertex="1" parent="node_root_A5F">
|
215
|
+
<mxGeometry x="15" y="3145" width="120" height="120" as="geometry"/>
|
216
|
+
</mxCell>
|
217
|
+
<mxCell id="A5F-84" value="god classes" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
218
|
+
<mxGeometry x="180" y="3160" width="90" height="90" as="geometry"/>
|
219
|
+
</mxCell>
|
220
|
+
<mxCell id="A5F-85" value="fat controllers" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
221
|
+
<mxGeometry x="330" y="3160" width="90" height="90" as="geometry"/>
|
222
|
+
</mxCell>
|
223
|
+
<mxCell id="A5F-86" value="fat models" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
224
|
+
<mxGeometry x="480" y="3160" width="90" height="90" as="geometry"/>
|
225
|
+
</mxCell>
|
226
|
+
<mxCell id="A5F-87" value="fat views vs components" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
227
|
+
<mxGeometry x="630" y="3160" width="90" height="90" as="geometry"/>
|
228
|
+
</mxCell>
|
229
|
+
<mxCell id="A5F-88" value="interpolated SQL" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
230
|
+
<mxGeometry x="780" y="3160" width="90" height="90" as="geometry"/>
|
231
|
+
</mxCell>
|
232
|
+
<mxCell id="A5F-90" value="Target patterns" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=note" vertex="1" parent="node_root_A5F">
|
233
|
+
<mxGeometry x="15" y="3295" width="120" height="120" as="geometry"/>
|
234
|
+
</mxCell>
|
235
|
+
<mxCell id="A5F-91" value="decorators" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
236
|
+
<mxGeometry x="180" y="3310" width="90" height="90" as="geometry"/>
|
237
|
+
</mxCell>
|
238
|
+
<mxCell id="A5F-92" value="presenters" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
239
|
+
<mxGeometry x="330" y="3310" width="90" height="90" as="geometry"/>
|
240
|
+
</mxCell>
|
241
|
+
<mxCell id="A5F-93" value="queries" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
242
|
+
<mxGeometry x="480" y="3310" width="90" height="90" as="geometry"/>
|
243
|
+
</mxCell>
|
244
|
+
<mxCell id="A5F-94" value="commands" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
245
|
+
<mxGeometry x="630" y="3310" width="90" height="90" as="geometry"/>
|
246
|
+
</mxCell>
|
247
|
+
<mxCell id="A5F-95" value="form objects" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
248
|
+
<mxGeometry x="780" y="3310" width="90" height="90" as="geometry"/>
|
249
|
+
</mxCell>
|
250
|
+
<mxCell id="A5F-97" value="Diff or Conflict" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#333333;shape=note" vertex="1" parent="node_root_A5F">
|
251
|
+
<mxGeometry x="15" y="3445" width="120" height="120" as="geometry"/>
|
252
|
+
</mxCell>
|
253
|
+
<mxCell id="A5F-98" value="factory data <i>missing data/models</i>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
254
|
+
<mxGeometry x="180" y="3460" width="90" height="90" as="geometry"/>
|
255
|
+
</mxCell>
|
256
|
+
<mxCell id="A5F-99" value="model DSL specs <i>missing data/associations</i>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
257
|
+
<mxGeometry x="330" y="3460" width="90" height="90" as="geometry"/>
|
258
|
+
</mxCell>
|
259
|
+
<mxCell id="A5F-100" value="model API specs <i>missing methods</i>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
260
|
+
<mxGeometry x="480" y="3460" width="90" height="90" as="geometry"/>
|
261
|
+
</mxCell>
|
262
|
+
<mxCell id="A5F-101" value="route / controller action <i>mismatch</i>" style="whiteSpace=wrap;html=1;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_A5F">
|
263
|
+
<mxGeometry x="630" y="3460" width="90" height="90" as="geometry"/>
|
264
|
+
</mxCell>
|
265
|
+
</root>
|
266
|
+
</mxGraphModel>
|
267
|
+
</diagram>
|
268
|
+
</mxfile>
|