fix: fix getMetricConfigDeep util function

- threw error for mismatching metric availability between clusters
This commit is contained in:
Christoph Kluge 2024-08-22 14:01:27 +02:00
parent 5603c41900
commit 1758275f11

View File

@ -301,7 +301,7 @@ export function stickyHeader(datatableHeaderSelector, updatePading) {
onDestroy(() => document.removeEventListener("scroll", onscroll)); onDestroy(() => document.removeEventListener("scroll", onscroll));
} }
export function checkMetricDisabled(m, c, s) { //[m]etric, [c]luster, [s]ubcluster export function checkMetricDisabled(m, c, s) { // [m]etric, [c]luster, [s]ubcluster
const metrics = getContext("globalMetrics"); const metrics = getContext("globalMetrics");
const result = metrics?.find((gm) => gm.name === m)?.availability?.find((av) => av.cluster === c)?.subClusters?.includes(s) const result = metrics?.find((gm) => gm.name === m)?.availability?.find((av) => av.cluster === c)?.subClusters?.includes(s)
return !result return !result
@ -309,15 +309,13 @@ export function checkMetricDisabled(m, c, s) { //[m]etric, [c]luster, [s]ubclust
export function getStatsItems() { export function getStatsItems() {
// console.time('stats') // console.time('stats')
// console.log('getStatsItems ...')
const globalMetrics = getContext("globalMetrics") const globalMetrics = getContext("globalMetrics")
const result = globalMetrics.map((gm) => { const result = globalMetrics.map((gm) => {
if (gm?.footprint) { if (gm?.footprint) {
// Footprint contains suffix naming the used stat-type
// console.time('deep') // console.time('deep')
// console.log('Deep Config for', gm.name)
const mc = getMetricConfigDeep(gm.name, null, null) const mc = getMetricConfigDeep(gm.name, null, null)
// console.timeEnd('deep') // console.timeEnd('deep')
if (mc) {
return { return {
field: gm.name + '_' + gm.footprint, field: gm.name + '_' + gm.footprint,
text: gm.name + ' (' + gm.footprint + ')', text: gm.name + ' (' + gm.footprint + ')',
@ -328,6 +326,7 @@ export function getStatsItems() {
enabled: false enabled: false
} }
} }
}
return null return null
}).filter((r) => r != null) }).filter((r) => r != null)
// console.timeEnd('stats') // console.timeEnd('stats')
@ -336,11 +335,9 @@ export function getStatsItems() {
export function getSortItems() { export function getSortItems() {
//console.time('sort') //console.time('sort')
//console.log('getSortItems ...')
const globalMetrics = getContext("globalMetrics") const globalMetrics = getContext("globalMetrics")
const result = globalMetrics.map((gm) => { const result = globalMetrics.map((gm) => {
if (gm?.footprint) { if (gm?.footprint) {
// Footprint contains suffix naming the used stat-type
return { return {
field: gm.name + '_' + gm.footprint, field: gm.name + '_' + gm.footprint,
type: 'foot', type: 'foot',
@ -357,21 +354,22 @@ export function getSortItems() {
function getMetricConfigDeep(metric, cluster, subCluster) { function getMetricConfigDeep(metric, cluster, subCluster) {
const clusters = getContext("clusters"); const clusters = getContext("clusters");
if (cluster != null) { if (cluster != null) {
let c = clusters.find((c) => c.name == cluster); const c = clusters.find((c) => c.name == cluster);
if (subCluster != null) { if (subCluster != null) {
let sc = c.subClusters.find((sc) => sc.name == subCluster); const sc = c.subClusters.find((sc) => sc.name == subCluster);
return sc.metricConfig.find((mc) => mc.name == metric) return sc.metricConfig.find((mc) => mc.name == metric)
} else { } else {
let result; let result;
for (let sc of c.subClusters) { for (let sc of c.subClusters) {
const mc = sc.metricConfig.find((mc) => mc.name == metric) const mc = sc.metricConfig.find((mc) => mc.name == metric)
if (result) { // If lowerIsBetter: Peak is still maximum value, no special case required if (result && mc) { // update result; If lowerIsBetter: Peak is still maximum value, no special case required
result.alert = (mc.alert > result.alert) ? mc.alert : result.alert result.alert = (mc.alert > result.alert) ? mc.alert : result.alert
result.caution = (mc.caution > result.caution) ? mc.caution : result.caution result.caution = (mc.caution > result.caution) ? mc.caution : result.caution
result.normal = (mc.normal > result.normal) ? mc.normal : result.normal result.normal = (mc.normal > result.normal) ? mc.normal : result.normal
result.peak = (mc.peak > result.peak) ? mc.peak : result.peak result.peak = (mc.peak > result.peak) ? mc.peak : result.peak
} else { } else if (mc) {
if (mc) result = {...mc}; // start new result
result = {...mc};
} }
} }
return result return result
@ -381,13 +379,14 @@ function getMetricConfigDeep(metric, cluster, subCluster) {
for (let c of clusters) { for (let c of clusters) {
for (let sc of c.subClusters) { for (let sc of c.subClusters) {
const mc = sc.metricConfig.find((mc) => mc.name == metric) const mc = sc.metricConfig.find((mc) => mc.name == metric)
if (result) { // If lowerIsBetter: Peak is still maximum value, no special case required if (result && mc) { // update result; If lowerIsBetter: Peak is still maximum value, no special case required
result.alert = (mc.alert > result.alert) ? mc.alert : result.alert result.alert = (mc.alert > result.alert) ? mc.alert : result.alert
result.caution = (mc.caution > result.caution) ? mc.caution : result.caution result.caution = (mc.caution > result.caution) ? mc.caution : result.caution
result.normal = (mc.normal > result.normal) ? mc.normal : result.normal result.normal = (mc.normal > result.normal) ? mc.normal : result.normal
result.peak = (mc.peak > result.peak) ? mc.peak : result.peak result.peak = (mc.peak > result.peak) ? mc.peak : result.peak
} else { } else if (mc) {
if (mc) result = {...mc}; // Start new result
result = {...mc};
} }
} }
} }