Compare commits

...

6 Commits

18 changed files with 778 additions and 8 deletions

3
.gitignore vendored
View File

@ -6,4 +6,5 @@
*dist/
output/
src/*/__pycache__/
src/__pycache__/
src/__pycache__/
*.db

Binary file not shown.

138
flowcharts/main_win.drawio Normal file
View File

@ -0,0 +1,138 @@
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.2.2 Chrome/134.0.6998.178 Electron/35.1.2 Safari/537.36" version="26.2.2">
<diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
<mxGraphModel dx="2068" dy="1219" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="GkLdqIe8JMVAQNq9l6uQ-0" target="GkLdqIe8JMVAQNq9l6uQ-4" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="144" y="120" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-0" value="Import user details from database" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.start_1;whiteSpace=wrap;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="94" y="10" width="100" height="60" as="geometry" />
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-7" value="Yes&lt;div&gt;&lt;br&gt;&lt;/div&gt;" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="GkLdqIe8JMVAQNq9l6uQ-4" target="GkLdqIe8JMVAQNq9l6uQ-14" edge="1">
<mxGeometry x="0.0098" y="15" relative="1" as="geometry">
<mxPoint x="139" y="230" as="sourcePoint" />
<mxPoint x="144" y="270" as="targetPoint" />
<mxPoint x="1" y="-1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-4" value="User input?" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="94" y="120" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="GkLdqIe8JMVAQNq9l6uQ-8" target="GkLdqIe8JMVAQNq9l6uQ-4" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="330" y="320" as="targetPoint" />
<Array as="points">
<mxPoint x="250" y="480" />
<mxPoint x="250" y="170" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-10" value="No" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="GkLdqIe8JMVAQNq9l6uQ-9" vertex="1" connectable="0">
<mxGeometry x="0.0214" y="1" relative="1" as="geometry">
<mxPoint x="1" y="120" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-12" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="GkLdqIe8JMVAQNq9l6uQ-8" target="GkLdqIe8JMVAQNq9l6uQ-11" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-8" value="User input&amp;nbsp;&lt;div&gt;valid?&lt;/div&gt;" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="94" y="430" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-11" value="Enable calculate button" style="whiteSpace=wrap;html=1;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="84" y="584" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-15" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="GkLdqIe8JMVAQNq9l6uQ-14" target="GkLdqIe8JMVAQNq9l6uQ-20" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="340" y="320" as="targetPoint" />
<Array as="points">
<mxPoint x="300" y="320" />
<mxPoint x="300" y="40" />
</Array>
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-14" value="Calculate&amp;nbsp;&lt;div&gt;button&amp;nbsp;&lt;/div&gt;&lt;div&gt;clicked?&lt;/div&gt;" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="94" y="270" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-17" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="GkLdqIe8JMVAQNq9l6uQ-14" target="GkLdqIe8JMVAQNq9l6uQ-8" edge="1">
<mxGeometry x="0.2" y="16" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="GkLdqIe8JMVAQNq9l6uQ-11" target="GkLdqIe8JMVAQNq9l6uQ-4" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="30" y="614" />
<mxPoint x="30" y="170" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="GkLdqIe8JMVAQNq9l6uQ-20" target="GkLdqIe8JMVAQNq9l6uQ-21" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-20" value="Calculate fund platform fees" style="whiteSpace=wrap;html=1;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="340" y="10" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="GkLdqIe8JMVAQNq9l6uQ-21" target="GkLdqIe8JMVAQNq9l6uQ-24" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-21" value="Calculate fund dealing fees" style="whiteSpace=wrap;html=1;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="340" y="120" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-26" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="GkLdqIe8JMVAQNq9l6uQ-24" target="GkLdqIe8JMVAQNq9l6uQ-27" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="400" y="330" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-24" value="Calculate share platform fees" style="whiteSpace=wrap;html=1;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="340" y="230" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="GkLdqIe8JMVAQNq9l6uQ-27" target="CeQ2sipdlTVvld8hq7BN-4" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-27" value="Calculate share dealing fees" style="whiteSpace=wrap;html=1;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="340" y="340" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="CeQ2sipdlTVvld8hq7BN-1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="GkLdqIe8JMVAQNq9l6uQ-28" target="CeQ2sipdlTVvld8hq7BN-0">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="GkLdqIe8JMVAQNq9l6uQ-28" value="Send results list to output window (display results)" style="whiteSpace=wrap;html=1;strokeWidth=2;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
<mxGeometry x="520" y="450" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="CeQ2sipdlTVvld8hq7BN-0" value="Save user details to database" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="520" y="584" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="CeQ2sipdlTVvld8hq7BN-7" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="CeQ2sipdlTVvld8hq7BN-4" target="CeQ2sipdlTVvld8hq7BN-8">
<mxGeometry relative="1" as="geometry">
<mxPoint x="400" y="556" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="CeQ2sipdlTVvld8hq7BN-4" value="Add results for this platform to list" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="340" y="450" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="CeQ2sipdlTVvld8hq7BN-9" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="CeQ2sipdlTVvld8hq7BN-8" target="GkLdqIe8JMVAQNq9l6uQ-28">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CeQ2sipdlTVvld8hq7BN-8" value="Last platform processed?" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="350" y="564" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="CeQ2sipdlTVvld8hq7BN-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.89;entryY=0.616;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="CeQ2sipdlTVvld8hq7BN-0" target="GkLdqIe8JMVAQNq9l6uQ-4">
<mxGeometry relative="1" as="geometry">
<mxPoint x="154" y="130" as="targetPoint" />
<mxPoint x="154" y="80" as="sourcePoint" />
<Array as="points">
<mxPoint x="580" y="680" />
<mxPoint x="220" y="680" />
<mxPoint x="220" y="220" />
<mxPoint x="183" y="220" />
</Array>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

View File

@ -0,0 +1,79 @@
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.2.2 Chrome/134.0.6998.178 Electron/35.1.2 Safari/537.36" version="26.2.2">
<diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
<mxGraphModel dx="1426" dy="841" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-5" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="D6qvsPv5HUMZqZDP2d3Z-0" target="D6qvsPv5HUMZqZDP2d3Z-22">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-0" value="Print results to screen" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.start_1;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="210" y="10" width="100" height="60" as="geometry" />
</mxCell>
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-7" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="D6qvsPv5HUMZqZDP2d3Z-4" target="D6qvsPv5HUMZqZDP2d3Z-9">
<mxGeometry relative="1" as="geometry">
<mxPoint x="310" y="170.0000000000001" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-16" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="D6qvsPv5HUMZqZDP2d3Z-4" target="D6qvsPv5HUMZqZDP2d3Z-17">
<mxGeometry relative="1" as="geometry">
<mxPoint x="360" y="175.0000000000001" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-4" value="Save&lt;div&gt;button&amp;nbsp;&lt;/div&gt;&lt;div&gt;clicked?&lt;/div&gt;" style="rhombus;whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="210" y="230" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="D6qvsPv5HUMZqZDP2d3Z-13" target="D6qvsPv5HUMZqZDP2d3Z-22">
<mxGeometry relative="1" as="geometry">
<mxPoint x="190" y="90" as="sourcePoint" />
<mxPoint x="150" y="150" as="targetPoint" />
<Array as="points">
<mxPoint x="90" y="150" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-12" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="D6qvsPv5HUMZqZDP2d3Z-9" target="D6qvsPv5HUMZqZDP2d3Z-11">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-21" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="D6qvsPv5HUMZqZDP2d3Z-9" target="D6qvsPv5HUMZqZDP2d3Z-13">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-9" value="Output&amp;nbsp;&lt;div&gt;directory&amp;nbsp;&lt;/div&gt;&lt;div&gt;exists?&lt;/div&gt;" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="210" y="380" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-14" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="D6qvsPv5HUMZqZDP2d3Z-11" target="D6qvsPv5HUMZqZDP2d3Z-13">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-11" value="Create output directory" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="200" y="530" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-13" value="Save results to text file" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="30" y="250" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-19" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="D6qvsPv5HUMZqZDP2d3Z-17" target="D6qvsPv5HUMZqZDP2d3Z-18">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-17" value="OK button clicked?" style="rhombus;whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="363" y="230" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-18" value="Close results window" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="353" y="390" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-20" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="D6qvsPv5HUMZqZDP2d3Z-17" target="D6qvsPv5HUMZqZDP2d3Z-22">
<mxGeometry x="-0.6728" relative="1" as="geometry">
<Array as="points">
<mxPoint x="414" y="150" />
</Array>
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-22" value="Input loop start" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="200" y="120" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="D6qvsPv5HUMZqZDP2d3Z-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.502;entryY=0.045;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="D6qvsPv5HUMZqZDP2d3Z-22" target="D6qvsPv5HUMZqZDP2d3Z-4">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -0,0 +1,242 @@
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.2.15 Chrome/134.0.6998.205 Electron/35.2.1 Safari/537.36" version="26.2.15">
<diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
<mxGraphModel dx="2066" dy="1219" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="1654" math="0" shadow="0">
<root>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="RMgAkj6IqEivbKdGbQ9N-0" value="Retrieve details of platform from DB if applicable" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.start_1;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="532" y="10" width="116" height="80" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-2" value="Any field edited?" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="540" y="120" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-0" target="RMgAkj6IqEivbKdGbQ9N-2">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-58" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-4">
<mxGeometry x="-0.3442" y="-10" relative="1" as="geometry">
<mxPoint x="510" y="320" as="targetPoint" />
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-4" value="Any checkbox toggled?" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="540" y="270" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-5" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-2" target="RMgAkj6IqEivbKdGbQ9N-4">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-6" value="Save updated platform details to list" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="528" y="900" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-52" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-7" target="RMgAkj6IqEivbKdGbQ9N-51">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-7" value="Add row clicked?" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="540" y="430" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-61" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.747;exitY=0.74;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-8">
<mxGeometry x="-0.847" relative="1" as="geometry">
<mxPoint x="820" y="930" as="targetPoint" />
<Array as="points">
<mxPoint x="670" y="674" />
<mxPoint x="670" y="930" />
</Array>
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-8" value="Remove row clicked?" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="540" y="600" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-13" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-9" target="RMgAkj6IqEivbKdGbQ9N-6">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-9" value="Save button clicked?" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="540" y="750" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-10" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-4" target="RMgAkj6IqEivbKdGbQ9N-7">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-11" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-7" target="RMgAkj6IqEivbKdGbQ9N-8">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-12" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-8" target="RMgAkj6IqEivbKdGbQ9N-9">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-19" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-15" target="RMgAkj6IqEivbKdGbQ9N-18">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-15" value="All&amp;nbsp;&lt;div&gt;required fields non zero?&lt;/div&gt;" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="386" y="120" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-17" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-2" target="RMgAkj6IqEivbKdGbQ9N-15">
<mxGeometry x="0.1111" y="-10" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-18" target="RMgAkj6IqEivbKdGbQ9N-20">
<mxGeometry relative="1" as="geometry">
<mxPoint x="276" y="320" as="targetPoint" />
<Array as="points">
<mxPoint x="276" y="320" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-18" value="Mark main input not valid" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="216" y="140" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-23" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.37;exitY=0.89;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-20" target="RMgAkj6IqEivbKdGbQ9N-18">
<mxGeometry x="-0.4497" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-24" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-20" target="RMgAkj6IqEivbKdGbQ9N-25">
<mxGeometry relative="1" as="geometry">
<mxPoint x="436" y="400" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-20" value="Are&amp;nbsp;&lt;div&gt;all ACTIVE optional fields non-zero?&lt;/div&gt;" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="386" y="270" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-21" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-15" target="RMgAkj6IqEivbKdGbQ9N-20">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-27" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-25" target="RMgAkj6IqEivbKdGbQ9N-26">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-25" value="Each row of&lt;div&gt;fund_plat_fee&lt;/div&gt;&lt;div&gt;bigger than&amp;nbsp;&lt;/div&gt;&lt;div&gt;the previous?&lt;/div&gt;" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;fontSize=11;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="378.5" y="420" width="115" height="120" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-26" value="Mark fund platform fee input not valid" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="216" y="450" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-30" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-29" target="RMgAkj6IqEivbKdGbQ9N-26">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-29" value="Each&amp;nbsp;&lt;div&gt;fee field in fund_plat fee&lt;div&gt;non zero?&lt;/div&gt;&lt;/div&gt;" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;fontSize=11;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="386" y="590" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-31" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-25" target="RMgAkj6IqEivbKdGbQ9N-29">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-35" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-32" target="RMgAkj6IqEivbKdGbQ9N-34">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-32" value="Maximum&amp;nbsp;&lt;div&gt;number of rows&lt;/div&gt;&lt;div&gt;(6) reached?&lt;/div&gt;" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;fontSize=11;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="386" y="750" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-33" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-29" target="RMgAkj6IqEivbKdGbQ9N-32">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-34" value="Disale add row button" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="376" y="900" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-39" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-37" target="RMgAkj6IqEivbKdGbQ9N-38">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-66" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-37" target="RMgAkj6IqEivbKdGbQ9N-50">
<mxGeometry x="-0.7078" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-37" value="Fund&lt;div&gt;platform fee input marked valid?&lt;/div&gt;" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;fontSize=11;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="226" y="750" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-43" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-38" target="RMgAkj6IqEivbKdGbQ9N-42">
<mxGeometry relative="1" as="geometry">
<mxPoint x="276.0000000000002" y="1000" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-38" value="Enable add row button" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="216" y="900" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-40" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-32" target="RMgAkj6IqEivbKdGbQ9N-37">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-46" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-42" target="RMgAkj6IqEivbKdGbQ9N-44">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-47" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.198;entryY=0.298;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-42" target="RMgAkj6IqEivbKdGbQ9N-2">
<mxGeometry x="-0.9531" relative="1" as="geometry">
<mxPoint x="536" y="120" as="targetPoint" />
<Array as="points">
<mxPoint x="120" y="1060" />
<mxPoint x="120" y="110" />
<mxPoint x="560" y="110" />
</Array>
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-42" value="Is main input marked valid?" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;fontSize=11;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="226" y="1010" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-44" value="Enable save button" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="216" y="1160" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-34" target="RMgAkj6IqEivbKdGbQ9N-42">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="436" y="1060" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-50" value="Disable save button" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="58" y="900" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-54" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-51" target="RMgAkj6IqEivbKdGbQ9N-53">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-51" value="Add new row of widgets to grid layout and list of widgets" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="690" y="450" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-56" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-53" target="RMgAkj6IqEivbKdGbQ9N-55">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-53" value="Expand grid layout to accommodate new row" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="690" y="560" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-57" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-55">
<mxGeometry relative="1" as="geometry">
<mxPoint x="510" y="170" as="targetPoint" />
<Array as="points">
<mxPoint x="750" y="991" />
<mxPoint x="751" y="991" />
<mxPoint x="751" y="1220" />
<mxPoint x="510" y="1220" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-55" value="Set new rows label to reflect the value of the previous box. Also update max fee label" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="690" y="670" width="120" height="80" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-60" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-9" target="RMgAkj6IqEivbKdGbQ9N-2">
<mxGeometry x="-0.9279" relative="1" as="geometry">
<Array as="points">
<mxPoint x="880" y="800" />
<mxPoint x="880" y="170" />
</Array>
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-64" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-62" target="RMgAkj6IqEivbKdGbQ9N-63">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-62" value="Remove each widget in the last row from the grid layout" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="820" y="900" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-65" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="RMgAkj6IqEivbKdGbQ9N-63">
<mxGeometry relative="1" as="geometry">
<mxPoint x="750" y="1120" as="targetPoint" />
<Array as="points">
<mxPoint x="880" y="1095" />
<mxPoint x="881" y="1095" />
<mxPoint x="881" y="1120" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="RMgAkj6IqEivbKdGbQ9N-63" value="Contract the grid layout to fit smaller number of rows" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="820" y="1010" width="120" height="60" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

View File

@ -0,0 +1,176 @@
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.2.2 Chrome/134.0.6998.178 Electron/35.1.2 Safari/537.36" version="26.2.2">
<diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
<mxGraphModel dx="753" dy="830" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-0" value="Get list of platforms from&amp;nbsp;&lt;div&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;DB&lt;/span&gt;&lt;/div&gt;" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.start_1;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="363" y="50" width="100" height="60" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-10" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-1" target="uiKHp9CyL3H5hJtIc4hJ-9">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-1" value="Add platform clicked?" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="363" y="160" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-0" target="uiKHp9CyL3H5hJtIc4hJ-1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-3">
<mxGeometry relative="1" as="geometry">
<mxPoint x="510" y="360" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-3" value="Remove&lt;div&gt;platform&lt;/div&gt;&lt;div&gt;clicked?&lt;/div&gt;" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="363" y="310" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-4" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-1" target="uiKHp9CyL3H5hJtIc4hJ-3">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-16" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-5" target="uiKHp9CyL3H5hJtIc4hJ-15">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-5" value="Edit platform clicked?" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="363" y="460" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-6" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-3" target="uiKHp9CyL3H5hJtIc4hJ-5">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-27" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-7" target="uiKHp9CyL3H5hJtIc4hJ-26">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-7" value="Save button clicked?" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="363" y="610" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-8" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-5" target="uiKHp9CyL3H5hJtIc4hJ-7">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-9" value="Show name dialog" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="190" y="130" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-13" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-11" target="uiKHp9CyL3H5hJtIc4hJ-14">
<mxGeometry relative="1" as="geometry">
<mxPoint x="249.75862068965523" y="370" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-18" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.247;entryY=0.262;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-11" target="uiKHp9CyL3H5hJtIc4hJ-1">
<mxGeometry x="-0.572" relative="1" as="geometry">
<mxPoint x="350" y="140" as="targetPoint" />
<Array as="points">
<mxPoint x="160" y="290" />
<mxPoint x="160" y="120" />
<mxPoint x="388" y="120" />
</Array>
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-11" value="Dialog&lt;div&gt;accepted?&lt;/div&gt;" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="200" y="240" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-9" target="uiKHp9CyL3H5hJtIc4hJ-11">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-14" target="uiKHp9CyL3H5hJtIc4hJ-15">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-14" value="Add new platform to list" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="190" y="390" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-15" value="Show platform editor" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="190" y="500" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-25" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-20" target="uiKHp9CyL3H5hJtIc4hJ-24">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-20" value="Platform&lt;div&gt;editor saved?&lt;/div&gt;" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="200" y="610" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-15" target="uiKHp9CyL3H5hJtIc4hJ-20">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-23" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-20" target="uiKHp9CyL3H5hJtIc4hJ-1">
<mxGeometry x="-0.9007" relative="1" as="geometry">
<Array as="points">
<mxPoint x="250" y="1010" />
<mxPoint x="660" y="1010" />
<mxPoint x="660" y="210" />
</Array>
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-24" value="Delete new platform from list" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="30" y="630" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-26" value="Write updated platform list to DB" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="353" y="760" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-32" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-30" target="uiKHp9CyL3H5hJtIc4hJ-31">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-39" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-30">
<mxGeometry relative="1" as="geometry">
<mxPoint x="660" y="360" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-30" value="Is platform&lt;div&gt;present in&amp;nbsp;&lt;div&gt;on-disk DB&lt;/div&gt;&lt;/div&gt;" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="510" y="310" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-31" value="Show warning dialog" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="500" y="460" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-36" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-33" target="uiKHp9CyL3H5hJtIc4hJ-35">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-37" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-33">
<mxGeometry relative="1" as="geometry">
<mxPoint x="660" y="620" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-33" value="User accepted dialog?" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="510" y="570" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-31" target="uiKHp9CyL3H5hJtIc4hJ-33">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-35">
<mxGeometry relative="1" as="geometry">
<mxPoint x="660" y="820" as="targetPoint" />
<Array as="points">
<mxPoint x="560" y="820" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-35" value="Delete platform from DB" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="500" y="720" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-42" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-40" target="uiKHp9CyL3H5hJtIc4hJ-41">
<mxGeometry x="-0.0811" y="-10" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-44" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-40">
<mxGeometry relative="1" as="geometry">
<mxPoint x="660" y="990" as="targetPoint" />
<Array as="points">
<mxPoint x="413" y="990" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-40" value="Enable&amp;nbsp;&lt;div&gt;checkbox&amp;nbsp;&lt;/div&gt;&lt;div&gt;toggled&lt;/div&gt;" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="363" y="870" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-43" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-41">
<mxGeometry relative="1" as="geometry">
<mxPoint x="660" y="920.344827586207" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-41" value="Update platforms enable state in list" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="500" y="890" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="uiKHp9CyL3H5hJtIc4hJ-45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="uiKHp9CyL3H5hJtIc4hJ-26" target="uiKHp9CyL3H5hJtIc4hJ-40">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

View File

@ -0,0 +1,83 @@
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.2.2 Chrome/134.0.6998.178 Electron/35.1.2 Safari/537.36" version="26.2.2">
<diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
<mxGraphModel dx="910" dy="1003" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
<mxCell id="4t4bEUU0-kKJdhU_jB_B-0" value="Display/update graph of results" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.start_1;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="220" y="60" width="100" height="60" as="geometry" />
</mxCell>
<mxCell id="4t4bEUU0-kKJdhU_jB_B-4" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="4t4bEUU0-kKJdhU_jB_B-1" target="4t4bEUU0-kKJdhU_jB_B-0">
<mxGeometry relative="1" as="geometry">
<mxPoint x="180" y="90" as="targetPoint" />
<Array as="points">
<mxPoint x="180" y="220" />
<mxPoint x="180" y="90" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="4t4bEUU0-kKJdhU_jB_B-6" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="4t4bEUU0-kKJdhU_jB_B-1" target="4t4bEUU0-kKJdhU_jB_B-7">
<mxGeometry relative="1" as="geometry">
<mxPoint x="270" y="320" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="4t4bEUU0-kKJdhU_jB_B-1" value="Slider moved?" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="220" y="170" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="4t4bEUU0-kKJdhU_jB_B-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="4t4bEUU0-kKJdhU_jB_B-0" target="4t4bEUU0-kKJdhU_jB_B-1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="4t4bEUU0-kKJdhU_jB_B-11" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="4t4bEUU0-kKJdhU_jB_B-7" target="4t4bEUU0-kKJdhU_jB_B-10">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="330" y="370" />
<mxPoint x="330" y="230" />
<mxPoint x="430" y="230" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="4t4bEUU0-kKJdhU_jB_B-7" value="Output&lt;div&gt;graph button&lt;div&gt;clicked?&lt;/div&gt;&lt;/div&gt;" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="220" y="320" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="4t4bEUU0-kKJdhU_jB_B-12" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="4t4bEUU0-kKJdhU_jB_B-8" target="4t4bEUU0-kKJdhU_jB_B-10">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="350" y="520" />
<mxPoint x="350" y="280" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="4t4bEUU0-kKJdhU_jB_B-8" value="Output&amp;nbsp;&lt;div&gt;CSV button&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));&quot;&gt;clicked?&lt;/span&gt;&lt;/div&gt;" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="220" y="470" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="4t4bEUU0-kKJdhU_jB_B-9" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="4t4bEUU0-kKJdhU_jB_B-7" target="4t4bEUU0-kKJdhU_jB_B-8">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="4t4bEUU0-kKJdhU_jB_B-10" value="Show file dialog" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="370" y="250" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="4t4bEUU0-kKJdhU_jB_B-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="4t4bEUU0-kKJdhU_jB_B-13" target="4t4bEUU0-kKJdhU_jB_B-15">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="4t4bEUU0-kKJdhU_jB_B-13" value="File writable?" style="strokeWidth=2;html=1;shape=mxgraph.flowchart.decision;whiteSpace=wrap;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="380" y="360" width="100" height="100" as="geometry" />
</mxCell>
<mxCell id="4t4bEUU0-kKJdhU_jB_B-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="4t4bEUU0-kKJdhU_jB_B-10" target="4t4bEUU0-kKJdhU_jB_B-13">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="4t4bEUU0-kKJdhU_jB_B-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="4t4bEUU0-kKJdhU_jB_B-15" target="4t4bEUU0-kKJdhU_jB_B-1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="530" y="90" as="targetPoint" />
<Array as="points">
<mxPoint x="530" y="540" />
<mxPoint x="530" y="220" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="4t4bEUU0-kKJdhU_jB_B-15" value="Save results to CSV or PNG file" style="whiteSpace=wrap;html=1;strokeWidth=2;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
<mxGeometry x="370" y="510" width="120" height="60" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -59,6 +59,9 @@
</property>
</widget>
<widget class="QPushButton" name="del_plat_but">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>135</x>
@ -95,6 +98,9 @@
</property>
</widget>
<widget class="QPushButton" name="edit_plat_but">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>11</x>
@ -113,6 +119,9 @@
</property>
</widget>
<widget class="QCheckBox" name="plat_enabled_check">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>12</x>

View File

@ -8,7 +8,7 @@
# nuitka-project: --windows-icon-from-ico=icon2.ico
# nuitka-project: --product-name=SIPPCompare
# nuitka-project: --file-description=SIPPCompare
# nuitka-project: --product-version=1
# nuitka-project: --product-version=1.1
# nuitka-project: --output-dir=build
# nuitka-project: --output-filename=SIPPCompare
import sys

View File

@ -132,8 +132,10 @@ class SIPPCompare(QMainWindow):
# Show the output window - this func is called from calculate_fee()
def show_output_win(self):
# Refresh the results when new fees are calculated
self.output_win = OutputWindow()
self.output_win.display_output(self.results, 1)
if self.output_win is None:
self.output_win = OutputWindow()
years = self.output_win.get_slider_position()
self.output_win.display_output(self.results, years)
self.calc_but.setText("Calculate")
self.output_win.activateWindow()
self.output_win.raise_()

View File

@ -47,6 +47,9 @@ class OutputWindow(QWidget):
self.save_csv_but.clicked.connect(self.save_csv)
self.time_slider.valueChanged.connect(self.change_time)
def get_slider_position(self) -> int:
return self.time_slider.value()
def display_output(self, results: list, years: int):
self.results = results
self.ax.clear()

View File

@ -255,9 +255,18 @@ class PlatformEdit(QDialog):
if self.fund_fee_rows > 1:
max_band = self.widgets_list_list[self.fund_fee_rows - 2][1].value()
if self.fund_fee_rows > 2:
prev_band = self.widgets_list_list[self.fund_fee_rows - 3][1].value()
else:
prev_band = self.first_tier_box.value()
else:
max_band = self.first_tier_box.value()
self.val_above_lab.setText(f"on the value above £{int(max_band)} there is no charge")
prev_band = self.first_tier_box.value()
if max_band > prev_band:
self.val_above_lab.setText(f"on the value above £{max_band:.2f} there is no charge")
else:
self.val_above_lab.setText(f"on the value above £{prev_band:.2f} there is no charge")
def add_row(self, loading: bool = False):
if loading:

View File

@ -93,6 +93,7 @@ class PlatformList(QWidget):
item.setText(f"Unnamed [ID: {i}]")
self.platListWidget.addItem(item)
self.platListWidget.setCurrentRow(0)
def add_platform(self):
self.plat_list_dialog = PlatformRename()
@ -115,6 +116,15 @@ class PlatformList(QWidget):
if plat_edit_res == QDialog.DialogCode.Rejected:
self.plat_list.pop()
self.platListWidget.takeItem(self.platListWidget.count() - 1)
self.platListWidget.setCurrentRow(index - 1)
else:
index = len(self.plat_list) - 1
if self.plat_list[index].plat_name is not None:
item = self.platListWidget.takeItem(index)
item.setText(self.plat_list[index].plat_name)
self.platListWidget.insertItem(index, item)
self.platListWidget.setCurrentRow(index)
def get_enabled_state(self):
index = self.platListWidget.currentRow()
@ -132,11 +142,26 @@ class PlatformList(QWidget):
else:
self.del_plat_but.setEnabled(False)
valid_selection = False
for plat in self.plat_list:
if plat.plat_id == index:
valid_selection = True
if valid_selection:
self.edit_plat_but.setEnabled(True)
self.plat_enabled_check.setEnabled(True)
else:
self.edit_plat_but.setEnabled(False)
self.plat_enabled_check.setEnabled(False)
def edit_platform(self):
index = self.platListWidget.currentRow()
if len(self.plat_list) > 0:
self.plat_edit_win = PlatformEdit(self.plat_list[index])
self.plat_edit_win.exec()
self.plat_edit_win = PlatformEdit(self.plat_list[index])
plat_edit_res = self.plat_edit_win.exec()
if plat_edit_res == QDialog.DialogCode.Accepted:
item = self.platListWidget.takeItem(index)
item.setText(self.plat_list[index].plat_name)
self.platListWidget.insertItem(index, item)
self.platListWidget.setCurrentRow(index)
def save_platforms(self):
self.db.write_platforms(self.plat_list)
@ -155,3 +180,6 @@ class PlatformList(QWidget):
if del_dialog_res == QMessageBox.StandardButton.Yes:
self.db.remove_platform(index)
self.update_plat_list()
def showEvent(self, event):
self.get_enabled_state()