@nova-ui/dashboards
Version:
Nova Dashboards is a framework designed to provide feature developers with a common solution for presenting data coming from various sources within a single view, as well as a set of predefined widget visualizations that are 100% configuration-driven and
44 lines • 8.23 kB
JavaScript
// © 2022 SolarWinds Worldwide, LLC. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
import { TimeseriesChartTypes } from "./types";
export function metricsSeriesMeasurementsMinMax(series, axisUnits) {
if (axisUnits === "percent") {
return { min: 0, max: 100 };
}
// skips percent measurements as they are displayed on the left y-axis and would affect right y-axis domain
const nonPercentMetrics = series.filter((metric) => metric.metricUnits !== "percent" && metric.data?.length);
// case where there are no measurements for non-percent metrics, e.g when a license expires
if (nonPercentMetrics.length === 0) {
return { min: -1, max: 1 };
}
const measurements = nonPercentMetrics.flatMap((m) => m.data ?? []);
return measurements.reduce((acc, measurement) => ({
min: Math.min(acc.min, measurement.y),
max: Math.max(acc.max, measurement.y),
}), { min: measurements[0].y, max: measurements[0].y });
}
export function hasTimeseriesWidgetSummaryLegend(type) {
return (type === TimeseriesChartTypes.alert ||
type === TimeseriesChartTypes.event ||
type === TimeseriesChartTypes.multi);
}
export const SUMMARY_LEGEND_BCG_COLOR = "var(--nui-color-chart-sum)";
export const SUMMARY_LEGEND_COLOR = "var(--nui-color-text-inverse)";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXNlcmllcy1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3RpbWVzZXJpZXMtd2lkZ2V0L3RpbWVzZXJpZXMtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7QUFDekQsRUFBRTtBQUNGLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsOEVBQThFO0FBQzlFLCtFQUErRTtBQUMvRSw4RUFBOEU7QUFDOUUsNERBQTREO0FBQzVELEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsdURBQXVEO0FBQ3ZELEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsNEVBQTRFO0FBQzVFLCtFQUErRTtBQUMvRSwwRUFBMEU7QUFDMUUsaUZBQWlGO0FBQ2pGLDZFQUE2RTtBQUM3RSxpQkFBaUI7QUFJakIsT0FBTyxFQUF5QixvQkFBb0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV0RSxNQUFNLFVBQVUsK0JBQStCLENBQzNDLE1BQW9DLEVBQ3BDLFNBQXFCO0lBRXJCLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtRQUN6QixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7S0FDL0I7SUFDRCwyR0FBMkc7SUFDM0csTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUNuQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQ3RFLENBQUM7SUFFRiw0RkFBNEY7SUFDNUYsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ2hDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0tBQzlCO0lBRUQsTUFBTSxZQUFZLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXBFLE9BQU8sWUFBWSxDQUFDLE1BQU0sQ0FDdEIsQ0FBQyxHQUFpQyxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDckMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0tBQ3hDLENBQUMsRUFDRixFQUFFLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3JELENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLGdDQUFnQyxDQUM1QyxJQUEwQjtJQUUxQixPQUFPLENBQ0gsSUFBSSxLQUFLLG9CQUFvQixDQUFDLEtBQUs7UUFDbkMsSUFBSSxLQUFLLG9CQUFvQixDQUFDLEtBQUs7UUFDbkMsSUFBSSxLQUFLLG9CQUFvQixDQUFDLEtBQUssQ0FDdEMsQ0FBQztBQUNOLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyw0QkFBNEIsQ0FBQztBQUNyRSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRywrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIMKpIDIwMjIgU29sYXJXaW5kcyBXb3JsZHdpZGUsIExMQy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyAgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG9cbi8vICBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZVxuLy8gIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vclxuLy8gIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vICBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vICBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyAgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyAgVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgeyBVbml0T3B0aW9uIH0gZnJvbSBcIkBub3ZhLXVpL2JpdHNcIjtcblxuaW1wb3J0IHsgSVRpbWVzZXJpZXNXaWRnZXREYXRhLCBUaW1lc2VyaWVzQ2hhcnRUeXBlcyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRyaWNzU2VyaWVzTWVhc3VyZW1lbnRzTWluTWF4KFxuICAgIHNlcmllczogSVRpbWVzZXJpZXNXaWRnZXREYXRhPGFueT5bXSxcbiAgICBheGlzVW5pdHM6IFVuaXRPcHRpb25cbik6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0ge1xuICAgIGlmIChheGlzVW5pdHMgPT09IFwicGVyY2VudFwiKSB7XG4gICAgICAgIHJldHVybiB7IG1pbjogMCwgbWF4OiAxMDAgfTtcbiAgICB9XG4gICAgLy8gc2tpcHMgcGVyY2VudCBtZWFzdXJlbWVudHMgYXMgdGhleSBhcmUgZGlzcGxheWVkIG9uIHRoZSBsZWZ0IHktYXhpcyBhbmQgd291bGQgYWZmZWN0IHJpZ2h0IHktYXhpcyBkb21haW5cbiAgICBjb25zdCBub25QZXJjZW50TWV0cmljcyA9IHNlcmllcy5maWx0ZXIoXG4gICAgICAgIChtZXRyaWMpID0+IG1ldHJpYy5tZXRyaWNVbml0cyAhPT0gXCJwZXJjZW50XCIgJiYgbWV0cmljLmRhdGE/Lmxlbmd0aFxuICAgICk7XG5cbiAgICAvLyBjYXNlIHdoZXJlIHRoZXJlIGFyZSBubyBtZWFzdXJlbWVudHMgZm9yIG5vbi1wZXJjZW50IG1ldHJpY3MsICBlLmcgd2hlbiBhIGxpY2Vuc2UgZXhwaXJlc1xuICAgIGlmIChub25QZXJjZW50TWV0cmljcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHsgbWluOiAtMSwgbWF4OiAxIH07XG4gICAgfVxuXG4gICAgY29uc3QgbWVhc3VyZW1lbnRzID0gbm9uUGVyY2VudE1ldHJpY3MuZmxhdE1hcCgobSkgPT4gbS5kYXRhID8/IFtdKTtcblxuICAgIHJldHVybiBtZWFzdXJlbWVudHMucmVkdWNlKFxuICAgICAgICAoYWNjOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9LCBtZWFzdXJlbWVudCkgPT4gKHtcbiAgICAgICAgICAgIG1pbjogTWF0aC5taW4oYWNjLm1pbiwgbWVhc3VyZW1lbnQueSksXG4gICAgICAgICAgICBtYXg6IE1hdGgubWF4KGFjYy5tYXgsIG1lYXN1cmVtZW50LnkpLFxuICAgICAgICB9KSxcbiAgICAgICAgeyBtaW46IG1lYXN1cmVtZW50c1swXS55LCBtYXg6IG1lYXN1cmVtZW50c1swXS55IH1cbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzVGltZXNlcmllc1dpZGdldFN1bW1hcnlMZWdlbmQoXG4gICAgdHlwZTogVGltZXNlcmllc0NoYXJ0VHlwZXNcbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIHR5cGUgPT09IFRpbWVzZXJpZXNDaGFydFR5cGVzLmFsZXJ0IHx8XG4gICAgICAgIHR5cGUgPT09IFRpbWVzZXJpZXNDaGFydFR5cGVzLmV2ZW50IHx8XG4gICAgICAgIHR5cGUgPT09IFRpbWVzZXJpZXNDaGFydFR5cGVzLm11bHRpXG4gICAgKTtcbn1cblxuZXhwb3J0IGNvbnN0IFNVTU1BUllfTEVHRU5EX0JDR19DT0xPUiA9IFwidmFyKC0tbnVpLWNvbG9yLWNoYXJ0LXN1bSlcIjtcbmV4cG9ydCBjb25zdCBTVU1NQVJZX0xFR0VORF9DT0xPUiA9IFwidmFyKC0tbnVpLWNvbG9yLXRleHQtaW52ZXJzZSlcIjtcbiJdfQ==