Skip to content
Snippets Groups Projects
Commit 07a79eb1 authored by Emmanuel Raviart's avatar Emmanuel Raviart
Browse files

feat: view notes in hierarchical views of parameters

parent 9e7b2548
No related branches found
No related tags found
No related merge requests found
......@@ -292,7 +292,7 @@
{dateFormatter.format(new Date(valueAtInstant as string))}
{:else if ["notes", "reference"].includes(column.id ?? "")}
{@const references = valueAtInstant as Reference[]}
{#each references as reference, referenceIndex (`body_row_${date}_${columnIndex}_reference_${referenceIndex}`)}
{#each references as reference, referenceIndex (`body_row_${date}_${columnIndex}_${column.id}_${referenceIndex}`)}
<div>
{#if reference.href === undefined}
{reference.title}
......
......@@ -218,6 +218,13 @@
{:else if parameter.class === ParameterClass.Scale}
<ScaleView {parameter} />
{:else if parameter.class === ParameterClass.Value}
{@const valueAtInstantFormArray = buildValueAtInstantFormArray(parameter)}
{@const hasNotesColumn = valueAtInstantFormArray.some(
({ notes }) => notes.length > 0,
)}
{@const hasReferencesColumn = valueAtInstantFormArray.some(
({ references }) => references.length > 0,
)}
<!--Tableau des valeurs-->
<div class="pb-5">
<h2 class="pb-3 pt-7 text-xl font-bold">Historique des valeurs</h2>
......@@ -228,6 +235,7 @@
<!-- <th class="border p-1 text-center">Nom</th> -->
<th class="border bg-white p-1 text-center font-bold">Valeur</th>
<th class="border bg-white p-1 text-center font-bold">Unité</th>
{#if hasReferencesColumn}
<th class="items-center border bg-white p-1 text-center font-bold"
><!--Material UI Icon Assignment-->
<svg
......@@ -241,10 +249,26 @@
/></svg
>Références législatives</th
>
{/if}
{#if hasNotesColumn}
<th class="items-center border bg-white p-1 text-center font-bold"
><!--Material UI Icon Assignment-->
<svg
class="mr-1 inline-flex h-4 w-4 fill-current"
height="24px"
viewBox="0 0 24 24"
width="24px"
fill="#000000"
><path d="M0 0h24v24H0V0z" fill="none" /><path
d="M7 15h7v2H7zm0-4h10v2H7zm0-4h10v2H7zm12-4h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-.14 0-.27.01-.4.04-.39.08-.74.28-1.01.55-.18.18-.33.4-.43.64-.1.23-.16.49-.16.77v14c0 .27.06.54.16.78s.25.45.43.64c.27.27.62.47 1.01.55.13.02.26.03.4.03h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7-.25c.41 0 .75.34.75.75s-.34.75-.75.75-.75-.34-.75-.75.34-.75.75-.75zM19 19H5V5h14v14z"
/></svg
>Notes</th
>
{/if}
</tr>
</thead>
<tbody>
{#each buildValueAtInstantFormArray(parameter) as { instant, references, valueAtInstant } (`instant_${instant}`)}
{#each valueAtInstantFormArray as { instant, notes, references, valueAtInstant } (`instant_${instant}`)}
<tr>
<td class="border p-1 text-center font-serif">{instant}</td>
{#if valueAtInstant === undefined}
......@@ -270,6 +294,7 @@
>
{/if}
{#if valueAtInstant !== "expected"}
{#if hasReferencesColumn}
<td class="border p-1 text-center font-serif text-xs"
>{#if references.length > 0}
<ul>
......@@ -289,6 +314,27 @@
</ul>{/if}</td
>
{/if}
{#if hasNotesColumn}
<td class="border p-1 text-center font-serif text-xs"
>{#if notes.length > 0}
<ul>
{#each notes as { href, note, title }, index (`note_${index}`)}
<li>
{#if href === undefined}{title}{:else}<a
class="text-[#008a9b] underline"
{href}
rel="noreferrer"
target="_blank">{title ?? "source"}</a
>{/if}
{#if note}
<p>{note}</p>
{/if}
</li>
{/each}
</ul>{/if}</td
>
{/if}
{/if}
</tr>
{/each}
</tbody>
......
......@@ -20,6 +20,16 @@
$: usesBase = scaleParameterUsesBase(parameter)
$: scaleAtInstantFormArray = buildScaleAtInstantFormArray(parameter)
$: hasNotesColumn = scaleAtInstantFormArray.some(
({ notes }) => notes.length > 0,
)
$: hasReferencesColumn = scaleAtInstantFormArray.some(
({ references }) => references.length > 0,
)
function formatMaybeNumberValueOrExpected(
value: MaybeNumberValue | "expected" | undefined | null,
unit: string | undefined | null,
......@@ -54,7 +64,8 @@
<th class="border bg-gray-100 text-center font-bold">Base</th>
{/if}
<th class="border bg-gray-100 text-center font-bold">Taux</th>
<th class="border bg-gray-100 text-center font-bold"
{#if hasReferencesColumn}
<th class="items-center border bg-white p-1 text-center font-bold"
><!--Material UI Icon Assignment-->
<svg
class="mr-1 inline-flex h-4 w-4 fill-current"
......@@ -68,10 +79,26 @@
>Références législatives</th
>
{/if}
{#if hasNotesColumn}
<th class="items-center border bg-white p-1 text-center font-bold"
><!--Material UI Icon Assignment-->
<svg
class="mr-1 inline-flex h-4 w-4 fill-current"
height="24px"
viewBox="0 0 24 24"
width="24px"
fill="#000000"
><path d="M0 0h24v24H0V0z" fill="none" /><path
d="M7 15h7v2H7zm0-4h10v2H7zm0-4h10v2H7zm12-4h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5c-.14 0-.27.01-.4.04-.39.08-.74.28-1.01.55-.18.18-.33.4-.43.64-.1.23-.16.49-.16.77v14c0 .27.06.54.16.78s.25.45.43.64c.27.27.62.47 1.01.55.13.02.26.03.4.03h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7-.25c.41 0 .75.34.75.75s-.34.75-.75.75-.75-.34-.75-.75.34-.75.75-.75zM19 19H5V5h14v14z"
/></svg
>Notes</th
>
{/if}
{/if}
</tr>
</thead>
<tbody>
{#each buildScaleAtInstantFormArray(parameter) as { instant, references, scaleAtInstant }, rowIndex (`row_${rowIndex}`)}
{#each scaleAtInstantFormArray as { instant, notes, references, scaleAtInstant }, rowIndex (`row_${rowIndex}`)}
{#if scaleAtInstant === undefined}
<tr>
<td class="border p-1 text-center font-serif">{instant}</td>
......@@ -79,6 +106,7 @@
class="border p-1 text-center font-serif"
colspan={usesBase ? 3 : 2}
></td>
{#if hasReferencesColumn}
<td class="border p-1 text-center font-serif text-xs"
>{#if references.length > 0}
<ul>
......@@ -97,6 +125,27 @@
{/each}
</ul>{/if}</td
>
{/if}
{#if hasNotesColumn}
<td class="border p-1 text-center font-serif text-xs"
>{#if notes.length > 0}
<ul>
{#each notes as { href, note, title }, noteIndex (`row_${rowIndex}_note_${noteIndex}`)}
<li>
{#if href === undefined}{title}{:else}<a
class="link"
{href}
rel="noreferrer"
target="_blank">{title ?? "source"}</a
>{/if}
{#if note}
<p>{note}</p>
{/if}
</li>
{/each}
</ul>{/if}</td
>
{/if}
</tr>
{:else}
{#each scaleAtInstant as bracket, index (`scaleAtInstant_${index}`)}
......@@ -146,12 +195,13 @@
>
{/if}
{#if index === 0}
{#if hasReferencesColumn}
<td
class="border p-1 text-center font-serif text-xs"
rowspan={Object.keys(scaleAtInstant).length}
>{#if references.length > 0}
<ul>
{#each references as { href, note, title }, referenceIndex (`scaleAtInstant_${index}_reference_${referenceIndex}`)}
{#each references as { href, note, title }, referenceIndex (`row_${rowIndex}_reference_${referenceIndex}`)}
<li>
{#if href === undefined}{title}{:else}<a
class="link"
......@@ -167,6 +217,29 @@
</ul>{/if}</td
>
{/if}
{#if hasNotesColumn}
<td
class="border p-1 text-center font-serif text-xs"
rowspan={Object.keys(scaleAtInstant).length}
>{#if notes.length > 0}
<ul>
{#each notes as { href, note, title }, noteIndex (`row_${rowIndex}_note_${noteIndex}`)}
<li>
{#if href === undefined}{title}{:else}<a
class="link"
{href}
rel="noreferrer"
target="_blank">{title ?? "source"}</a
>{/if}
{#if note}
<p>{note}</p>
{/if}
</li>
{/each}
</ul>{/if}</td
>
{/if}
{/if}
</tr>
{/each}
{/if}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment