diff --git a/src/App.svelte b/src/App.svelte index 900e76627df1d3d9e55259cde8b6b2ff8e27e8d6..c0b4ef1b3f2e22115a0c25fb5dfc0fcf1cc13f40 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -1,6 +1,8 @@ <script lang="ts"> import { element } from "svelte/internal"; import type { WorkPackage } from "./estimator"; +import FormulaE from "./FormulaE.svelte"; +import FormulaS from "./FormulaS.svelte"; import RowWorkItem from "./RowWorkItem.svelte"; import SumRow from "./SumRow.svelte"; @@ -14,6 +16,8 @@ import type { WorkPackage } from "./estimator"; } $: dataJson = JSON.stringify(workPackages, null, 2) let jsonPasteArea = ""; + + </script> <main> @@ -46,6 +50,11 @@ import type { WorkPackage } from "./estimator"; <SumRow {workPackages} u={u} r={r}></SumRow> </tbody> </table> + + <FormulaE workPackages={workPackages} r={r}/> + <br> + <FormulaS workPackages={workPackages} u={u}/> + <details> <summary> Debug: Show Input as JSON @@ -82,4 +91,5 @@ import type { WorkPackage } from "./estimator"; <a href="https://gitlab.fachschaften.org/jfowl/swk-project-effort-estimation" >SourceCode</a -> \ No newline at end of file +> + diff --git a/src/FormulaE.svelte b/src/FormulaE.svelte new file mode 100644 index 0000000000000000000000000000000000000000..83b706979c71bcfd65b055e234b5480dee80291d --- /dev/null +++ b/src/FormulaE.svelte @@ -0,0 +1,45 @@ +<script lang="ts"> + import type { WorkPackage } from "./estimator"; + + export let workPackages: WorkPackage[] + export let r: number; + $: nonEmptyWorkPackages = workPackages.filter(wp => wp.a !== null && wp.b !== null) + $: lastElementIndex = nonEmptyWorkPackages.length - 1; +</script> +<style> + div.formula-e { + padding-top: 10px; + } +</style> + +<div class="formula-e"> + <math xmlns="http://www.w3.org/1998/Math/MathML"> + <mrow> + <mo>E(x)</mo> + <mo>=</mo> + {#each nonEmptyWorkPackages as workPackage, i} + <mfrac> + <mrow> + <mo> {workPackage.b} </mo> + <mo> + </mo> + {#if typeof workPackage.c === 'number'} + <mo> {r} </mo> + <mo> ⋅ </mo> + <mo> {workPackage.c} </mo> + <mo> + </mo> + {/if} + <mo> {workPackage.a} </mo> + </mrow> + <mrow> + <mo> + {typeof workPackage.c === 'number' ? '6' : '2'} + </mo> + </mrow> + </mfrac> + {#if i < lastElementIndex} + <mo> + </mo> + {/if} + {/each} + </mrow> + </math> +</div> \ No newline at end of file diff --git a/src/FormulaS.svelte b/src/FormulaS.svelte new file mode 100644 index 0000000000000000000000000000000000000000..4eca7b191a5d075c0eccbf8981c4fa155e6a3ccc --- /dev/null +++ b/src/FormulaS.svelte @@ -0,0 +1,45 @@ +<script lang="ts"> + import type { WorkPackage } from "./estimator"; + + export let workPackages: WorkPackage[] + export let u: number; + $: nonEmptyWorkPackages = workPackages.filter(wp => wp.a !== null && wp.b !== null) + $: lastElementIndex = nonEmptyWorkPackages.length - 1; +</script> + +<style> + div.formula-s { + padding-bottom: 10px; + } +</style> + +<div class="formula-s"> + <math xmlns="http://www.w3.org/1998/Math/MathML"> + <mrow> + <mo>S(x)</mo> + <mo>=</mo> + <msqrt> + {#each nonEmptyWorkPackages as workPackage, i} + <msup> + <mrow> + <mo>(</mo> + <mfrac> + <mrow> + <mo> {workPackage.b} </mo> + <mo> - </mo> + <mo> {workPackage.a} </mo> + </mrow> + <mo> {u} </mo> + </mfrac> + <mo>)</mo> + </mrow> + <mn>2</mn> + </msup> + {#if i < lastElementIndex} + <mo> + </mo> + {/if} + {/each} + </msqrt> + </mrow> + </math> +</div> \ No newline at end of file