Skip to content

Commit

Permalink
Merge ef082ff into bca9f4f
Browse files Browse the repository at this point in the history
  • Loading branch information
samsmithnz committed Apr 16, 2024
2 parents bca9f4f + ef082ff commit 64709ff
Show file tree
Hide file tree
Showing 4 changed files with 126 additions and 90 deletions.
50 changes: 24 additions & 26 deletions src/SatisfactoryTree.Tests/ProductionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -249,20 +249,20 @@ public void ReinforcedIronPlateProductionTest()
IronIngot--""Iron Ingot<br>(15 units/min)""-->IronRod
";
string expectedWithImagesResult = @"flowchart LR
ReinforcedIronPlate(""<div align=center><span style='min-width:100px;display:block;'><img src='https://localhost:7015/Images/Buildings/AssemblerMk1_256.png' style='max-width:100px' alt='Assembler'></span><br> x1 Assembler<br>(Reinforced Iron Plate)</div>"")
ReinforcedIronPlateOutput{{""<div align=center><img src='https://localhost:7015/Images/Items/ReinforcedIronPlate_256.png' style='max-width:100px' alt='Reinforced Iron Plate'><br>5 Reinforced Iron Plate</div>""}}
IronPlate(""<div align=center><span style='min-width:100px;display:block;'><img src='https://localhost:7015/Images/Buildings/ConstructorMk1_256.png' style='max-width:100px' alt='Constructor'></span><br> x1.5 Constructor<br>(Iron Plate)</div>"")
IronIngot(""<div align=center><span style='min-width:100px;display:block;'><img src='https://localhost:7015/Images/Buildings/SmelterMk1_256.png' style='max-width:100px' alt='Smelter'></span><br> x2 Smelter<br>(Iron Ingot)</div>"")
IronOre(""<div align=center><span style='min-width:100px;display:block;'><img src='https://localhost:7015/Images/Buildings/MinerMk1_256.png' style='max-width:100px' alt='Mining Machine Mk1'></span><br> x1 Mining Machine Mk1<br>(Iron Ore)</div>"")
Screw(""<div align=center><span style='min-width:100px;display:block;'><img src='https://localhost:7015/Images/Buildings/ConstructorMk1_256.png' style='max-width:100px' alt='Constructor'></span><br> x1.5 Constructor<br>(Screw)</div>"")
IronRod(""<div align=center><span style='min-width:100px;display:block;'><img src='https://localhost:7015/Images/Buildings/ConstructorMk1_256.png' style='max-width:100px' alt='Constructor'></span><br> x1 Constructor<br>(Iron Rod)</div>"")
IronPlate--Iron Plate<br>(30 units/min)-->ReinforcedIronPlate
Screw--Screw<br>(60 units/min)-->ReinforcedIronPlate
ReinforcedIronPlate--Reinforced Iron Plate<br>(5 units/min)-->ReinforcedIronPlateOutput
IronIngot--Iron Ingot<br>(45 units/min)-->IronPlate
IronOre--Iron Ore<br>(60 units/min)-->IronIngot
IronRod--Iron Rod<br>(15 units/min)-->Screw
IronIngot--Iron Ingot<br>(15 units/min)-->IronRod
ReinforcedIronPlate[""<div align=center><span style='min-width:100px;display:block;'><img src='https://localhost:7015/Images/Buildings/AssemblerMk1_256.png' style='max-width:100px' alt='Assembler'></span><br> x1 Assembler<br>(Reinforced Iron Plate)</div>""]
ReinforcedIronPlate_Item([""<div align=center><span style='min-width:100px;display:block;'><img src='https://localhost:7015/Images/Items/ReinforcedIronPlate_256.png' style='max-width:100px' alt='Reinforced Iron Plate'></span><br> x5 Reinforced Iron Plate</div>""])
IronPlate[""<div align=center><span style='min-width:100px;display:block;'><img src='https://localhost:7015/Images/Buildings/ConstructorMk1_256.png' style='max-width:100px' alt='Constructor'></span><br> x1.5 Constructor<br>(Iron Plate)</div>""]
IronIngot[""<div align=center><span style='min-width:100px;display:block;'><img src='https://localhost:7015/Images/Buildings/SmelterMk1_256.png' style='max-width:100px' alt='Smelter'></span><br> x2 Smelter<br>(Iron Ingot)</div>""]
IronOre[""<div align=center><span style='min-width:100px;display:block;'><img src='https://localhost:7015/Images/Buildings/MinerMk1_256.png' style='max-width:100px' alt='Mining Machine Mk1'></span><br> x1 Mining Machine Mk1<br>(Iron Ore)</div>""]
Screw[""<div align=center><span style='min-width:100px;display:block;'><img src='https://localhost:7015/Images/Buildings/ConstructorMk1_256.png' style='max-width:100px' alt='Constructor'></span><br> x1.5 Constructor<br>(Screw)</div>""]
IronRod[""<div align=center><span style='min-width:100px;display:block;'><img src='https://localhost:7015/Images/Buildings/ConstructorMk1_256.png' style='max-width:100px' alt='Constructor'></span><br> x1 Constructor<br>(Iron Rod)</div>""]
IronPlate--""Iron Plate<br>(30 units/min)""-->ReinforcedIronPlate
Screw--""Screw<br>(60 units/min)""-->ReinforcedIronPlate
ReinforcedIronPlate--""Reinforced Iron Plate<br>(5 units/min)""-->ReinforcedIronPlate_Item
IronIngot--""Iron Ingot<br>(45 units/min)""-->IronPlate
IronOre--""Iron Ore<br>(60 units/min)""-->IronIngot
IronRod--""Iron Rod<br>(15 units/min)""-->Screw
IronIngot--""Iron Ingot<br>(15 units/min)""-->IronRod
";

//Act
Expand All @@ -271,7 +271,7 @@ public void ReinforcedIronPlateProductionTest()
result = graph.BuildProductionPlan(itemGoal);
results = result.ProductionItems;
mermaidResult = graph.ToMermaidString();
mermaidWithImagesResult = graph.ToMermaidStringWithImages();
mermaidWithImagesResult = graph.ToMermaidString(true);
}

//Assert
Expand Down Expand Up @@ -469,7 +469,6 @@ public void PlasticProductionTest()
string expectedResult = @"flowchart LR
Plastic[""x1 Refinery<br>(Plastic)""]
Plastic_Item([20 Plastic])
Plastic[""x1 Refinery<br>(Plastic)""]
HeavyOilResidue_Item([10 Heavy Oil Residue])
CrudeOil[""x0.3 Oil Extractor<br>(Crude Oil)""]
CrudeOil--""Crude Oil<br>(30 units/min)""-->Plastic
Expand Down Expand Up @@ -512,14 +511,13 @@ public void CircuitBoardProductionTest()
CopperIngot[""x0.7 Smelter<br>(Copper Ingot)""]
CopperOre[""x0.4 Mining Machine Mk1<br>(Copper Ore)""]
Plastic[""x1 Refinery<br>(Plastic)""]
Plastic[""x1 Refinery<br>(Plastic)""]
HeavyOilResidue_Item([10 Heavy Oil Residue])
CrudeOil[""x0.3 Oil Extractor<br>(Crude Oil)""]
CopperSheet--""Copper Sheet<br>(10 units/min)""-->CircuitBoard
Plastic--""Plastic<br>(20.0 units/min)""-->CircuitBoard
Plastic--""Plastic<br>(20.1 units/min)""-->CircuitBoard
CircuitBoard--""Circuit Board<br>(5 units/min)""-->CircuitBoard_Item
CopperIngot--""Copper Ingot<br>(20 units/min)""-->CopperSheet
CopperOre--""Copper Ore<br>(20.0 units/min)""-->CopperIngot
CopperOre--""Copper Ore<br>(20.1 units/min)""-->CopperIngot
CrudeOil--""Crude Oil<br>(30 units/min)""-->Plastic
Plastic--""Heavy Oil Residue<br>(10 units/min)""-->HeavyOilResidue_Item
";
Expand Down Expand Up @@ -562,14 +560,14 @@ public void AluminumIngotProductionTest()
Bauxite[""x0.2 Mining Machine Mk1<br>(Bauxite)""]
Coal[""x0.1 Mining Machine Mk1<br>(Coal)""]
RawQuartz[""x0.2 Assembler<br>(Raw Quartz)""]
AluminumScrap--""Aluminum Scrap<br>(15.0 units/min)""-->AluminumIngot
Silica--""Silica<br>(12.5 units/min)""-->AluminumIngot
AluminumScrap--""Aluminum Scrap<br>(15.1 units/min)""-->AluminumIngot
Silica--""Silica<br>(12.6 units/min)""-->AluminumIngot
AluminumIngot--""Aluminum Ingot<br>(10 units/min)""-->AluminumIngot_Item
AluminaSolution--""Alumina Solution<br>(10.0 units/min)""-->AluminumScrap
Coal--""Coal<br>(5.0 units/min)""-->AluminumScrap
Bauxite--""Bauxite<br>(10.0 units/min)""-->AluminaSolution
Water--""Water<br>(15.0 units/min)""-->AluminaSolution
RawQuartz--""Raw Quartz<br>(30.0 units/min)""-->Silica
AluminaSolution--""Alumina Solution<br>(10.1 units/min)""-->AluminumScrap
Coal--""Coal<br>(5.1 units/min)""-->AluminumScrap
Bauxite--""Bauxite<br>(10.1 units/min)""-->AluminaSolution
Water--""Water<br>(15.1 units/min)""-->AluminaSolution
RawQuartz--""Raw Quartz<br>(30.1 units/min)""-->Silica
";

//Act
Expand Down
9 changes: 6 additions & 3 deletions src/SatisfactoryTree.Web/Controllers/HomeController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,15 @@ public IActionResult Index()
public IActionResult Production()
{
SatisfactoryProduction satisfactoryProduction = new();
Item productionItem = ItemPoolTier1.Plastic();
decimal productionQuantity = 20M;
//Item productionItem = ItemPoolTier1.Plastic();
//decimal productionQuantity = 20M;
Item productionItem = ItemPoolTier3.ReinforcedIronPlate();
decimal productionQuantity = 5M;

ProductionCalculation productionCalculation = satisfactoryProduction.BuildProductionPlan(new ProductionItem(productionItem, productionQuantity));
if (productionCalculation != null)
{
string graph3 = satisfactoryProduction.ToMermaidStringWithImages();
string graph3 = satisfactoryProduction.ToMermaidString(true);
//Debug.WriteLine(graph3);
return View(model: graph3);
}
Expand Down
27 changes: 24 additions & 3 deletions src/SatisfactoryTree.Web/Views/Home/Production.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,32 @@
<h2>Production Graph</h2>
<body>
Here is a mermaid diagram:
<pre class="mermaid">
@* <pre class="mermaid">
@Html.Raw(Model)
</pre>
</pre> *@
<div id="graphDiv" style="border:solid 1px darkgray">

</div>
<script src="https://bumbu.me/svg-pan-zoom/dist/svg-pan-zoom.js"></script>
<script type="module">
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
mermaid.initialize({ startOnLoad: true });
mermaid.initialize({ startOnLoad: false });
// Example of using the render function
const drawDiagram = async function () {
const element = document.querySelector('#graphDiv');
const graphDefinition = `@Html.Raw(Model)`;
const { svg } = await mermaid.render('mySvgId', graphDefinition);
element.innerHTML = svg.replace(/[ ]*max-width:[ 0-9\.]*px;/i, '');
var panZoomTiger = svgPanZoom('#mySvgId', {
zoomEnabled: true,
controlIconsEnabled: true,
fit: true,
center: true,
minZoom: 0.1
})
document.getElementById('mySvgId').setAttribute("height", "1000px");
document.getElementById('mySvgId').setAttribute("width", "2000px");
};
await drawDiagram();
</script>
</body>
Loading

0 comments on commit 64709ff

Please sign in to comment.