fix: add compatibility for footprint metrics without config

This commit is contained in:
Christoph Kluge 2024-08-15 14:33:04 +02:00
parent e1faba0ff2
commit 49e0a2c055

View File

@ -67,8 +67,9 @@
export let height = "310px"; export let height = "310px";
const footprintData = job?.footprint?.map((jf) => { const footprintData = job?.footprint?.map((jf) => {
// Unit
const fmc = getContext("getMetricConfig")(job.cluster, job.subCluster, jf.name); const fmc = getContext("getMetricConfig")(job.cluster, job.subCluster, jf.name);
if (fmc) {
// Unit
const unit = (fmc?.unit?.prefix ? fmc.unit.prefix : "") + (fmc?.unit?.base ? fmc.unit.base : "") const unit = (fmc?.unit?.prefix ? fmc.unit.prefix : "") + (fmc?.unit?.base ? fmc.unit.base : "")
// Threshold / -Differences // Threshold / -Differences
@ -122,7 +123,18 @@
impact: -1, impact: -1,
}; };
} }
}); } else { // No matching metric config: display as single value
return {
name: jf.name + ' (' + jf.stat + ')',
avg: jf.value,
message:
`No config for metric ${jf.name} found.`,
impact: 4,
};
}
}).sort(function (a, b) { // Sort by impact value primarily, within impact sort name alphabetically
return a.impact - b.impact || ((a.name > b.name) ? 1 : ((b.name > a.name) ? -1 : 0));
});;
function evalFootprint(mean, thresholds, lowerIsBetter, level) { function evalFootprint(mean, thresholds, lowerIsBetter, level) {
// Handle Metrics in which less value is better // Handle Metrics in which less value is better
@ -159,6 +171,7 @@
{/if} {/if}
<CardBody> <CardBody>
{#each footprintData as fpd, index} {#each footprintData as fpd, index}
{#if fpd.impact !== 4}
<div class="mb-1 d-flex justify-content-between"> <div class="mb-1 d-flex justify-content-between">
<div>&nbsp;<b>{fpd.name}</b></div> <div>&nbsp;<b>{fpd.name}</b></div>
<!-- For symmetry, see below ...--> <!-- For symmetry, see below ...-->
@ -213,6 +226,29 @@
</Col> </Col>
{/if} {/if}
</Row> </Row>
{:else}
<div class="mb-1 d-flex justify-content-between">
<div>
&nbsp;<b>{fpd.name}</b>
</div>
<div
class="cursor-help d-inline-flex"
id={`footprint-${job.jobId}-${index}`}
>
<div class="mx-1">
<Icon name="info-circle"/>
</div>
<div>
{fpd.avg}&nbsp;
</div>
</div>
</div>
<Tooltip
target={`footprint-${job.jobId}-${index}`}
placement="right"
offset={[0, 20]}>{fpd.message}</Tooltip
>
{/if}
{/each} {/each}
{#if job?.metaData?.message} {#if job?.metaData?.message}
<hr class="mt-1 mb-2" /> <hr class="mt-1 mb-2" />