63 lines
1.7 KiB
JavaScript
63 lines
1.7 KiB
JavaScript
|
const metricsIdsInPanel = panel =>
|
||
|
panel.metrics.filter(metric => metric.metricId && metric.result).map(metric => metric.metricId);
|
||
|
|
||
|
/**
|
||
|
* Get all state for metric in the dashboard or a group. The
|
||
|
* states are not repeated so the dashboard or group can show
|
||
|
* a global state.
|
||
|
*
|
||
|
* @param {Object} state
|
||
|
* @returns {Function} A function that returns an array of
|
||
|
* states in all the metric in the dashboard or group.
|
||
|
*/
|
||
|
export const getMetricStates = state => groupKey => {
|
||
|
let groups = state.dashboard.panel_groups;
|
||
|
if (groupKey) {
|
||
|
groups = groups.filter(group => group.key === groupKey);
|
||
|
}
|
||
|
|
||
|
const metricStates = groups.reduce((acc, group) => {
|
||
|
group.panels.forEach(panel => {
|
||
|
panel.metrics.forEach(metric => {
|
||
|
if (metric.state) {
|
||
|
acc.push(metric.state);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
return acc;
|
||
|
}, []);
|
||
|
|
||
|
// Deduplicate and sort array
|
||
|
return Array.from(new Set(metricStates)).sort();
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Getter to obtain the list of metric ids that have data
|
||
|
*
|
||
|
* Useful to understand which parts of the dashboard should
|
||
|
* be displayed. It is a Vuex Method-Style Access getter.
|
||
|
*
|
||
|
* @param {Object} state
|
||
|
* @returns {Function} A function that returns an array of
|
||
|
* metrics in the dashboard that contain results, optionally
|
||
|
* filtered by group key.
|
||
|
*/
|
||
|
export const metricsWithData = state => groupKey => {
|
||
|
let groups = state.dashboard.panel_groups;
|
||
|
if (groupKey) {
|
||
|
groups = groups.filter(group => group.key === groupKey);
|
||
|
}
|
||
|
|
||
|
const res = [];
|
||
|
groups.forEach(group => {
|
||
|
group.panels.forEach(panel => {
|
||
|
res.push(...metricsIdsInPanel(panel));
|
||
|
});
|
||
|
});
|
||
|
|
||
|
return res;
|
||
|
};
|
||
|
|
||
|
// prevent babel-plugin-rewire from generating an invalid default during karma tests
|
||
|
export default () => {};
|