andoncloud-prometheus-widget 1.3.5 → 1.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -30,7 +30,7 @@ declare const getDisplayName: (lang: string) => string;
30
30
  declare const getTitle: (_data: WidgetData | undefined, settings: WidgetSettings | undefined, _filters: FilterValues | undefined, lang: string) => string;
31
31
  //#endregion
32
32
  //#region src/version.d.ts
33
- declare const LIBRARY_VERSION = "1.3.5";
33
+ declare const LIBRARY_VERSION = "1.3.7";
34
34
  //#endregion
35
35
  //#region src/index.d.ts
36
36
  declare const thumbnail: string | undefined;
package/dist/index.js CHANGED
@@ -72,7 +72,7 @@ const resources = {
72
72
  };
73
73
  //#endregion
74
74
  //#region src/version.ts
75
- const LIBRARY_VERSION = "1.3.5";
75
+ const LIBRARY_VERSION = "1.3.7";
76
76
  //#endregion
77
77
  //#region src/types.ts
78
78
  let QueriesPeriod = /* @__PURE__ */ function(QueriesPeriod) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["en","pl","locales"],"sources":["../src/locales/en/translation.json","../src/locales/pl/translation.json","../src/locales/index.ts","../src/version.ts","../src/types.ts","../src/components/SettingsFormContent/index.tsx","../src/helpers.ts","../src/components/PrometheusChart/GradientPlugin.ts","../src/components/PrometheusChart/index.tsx","../src/components/WidgetView/index.tsx","../src/components/Widget/utils.ts","../src/components/Widget/index.tsx","../src/core/title.ts","../src/index.tsx"],"sourcesContent":["","","import en from './en/translation.json';\nimport pl from './pl/translation.json';\n\nconst resources = {\n en: {\n translation: en,\n },\n pl: {\n translation: pl,\n },\n};\n\nexport default resources;\n","export const LIBRARY_VERSION = '1.3.5';\n","import type { BaseWidgetData, BaseWidgetSettings, ListShifts_Shift } from 'andoncloud-dashboard-toolkit';\nimport { BaseWidgetViewProps } from 'andoncloud-widget-base';\n\ninterface WidgetSettingsData {\n shifts: ListShifts_Shift[];\n}\n\nexport interface WidgetData extends BaseWidgetData, WidgetSettingsData {}\n\nexport interface PrometheusQuery {\n query: string;\n displayName?: string;\n}\n\nexport interface WidgetSettings extends BaseWidgetSettings {\n customTitle: string;\n endpointUrl: string;\n queriesPeriod: QueriesPeriod;\n prometheusQueries: PrometheusQuery[];\n displayedQueryParams: string[];\n xAxisUnit: string;\n yAxisUnit: string;\n}\n\nexport interface WidgetViewProps extends BaseWidgetViewProps<WidgetData, WidgetSettings> {}\n\nexport enum QueriesPeriod {\n CURRENT_SHIFT = 'CURRENT_SHIFT',\n PREVIOUS_SHIFT = 'PREVIOUS_SHIFT',\n}\n\nexport interface QueriesTimeRange {\n startedAt: Date | number;\n finishedAt?: Date;\n}\n\nexport interface PrometheusChartProps {\n data: WidgetData;\n settings: WidgetSettings;\n}\n","import { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { Clear } from '@mui/icons-material';\nimport { TabContext, TabList, TabPanel } from '@mui/lab';\nimport {\n Box,\n Button,\n FormControl,\n FormHelperText,\n IconButton,\n InputLabel,\n MenuItem,\n Select,\n Stack,\n Tab,\n TextField,\n} from '@mui/material';\nimport { SettingsFormContentProps } from 'andoncloud-widget-base';\nimport { getIn } from 'formik';\n\nimport { PrometheusQuery, QueriesPeriod, WidgetData, WidgetSettings } from '@/types';\n\nconst SettingsFormContent: React.FC<SettingsFormContentProps<WidgetData, WidgetSettings>> = ({ formProps }) => {\n // -- Local state --\n const [selectedTab, setSelectedTab] = useState('settings');\n const emptyQueryItem = { query: '', displayName: '' };\n const formControlStyles = { mt: 2 };\n\n // -- Translation --\n const { t } = useTranslation();\n\n const setPrometheusQuery = (i: number, item: PrometheusQuery) => {\n const queries = [...(formProps.values.prometheusQueries || [emptyQueryItem])];\n\n queries[i] = { ...queries[i], ...item };\n\n formProps.setFieldValue('prometheusQueries', queries);\n };\n\n const addQueryField = () => {\n const queries = [...(formProps.values.prometheusQueries || [emptyQueryItem])];\n\n formProps.setFieldValue('prometheusQueries', [...queries, emptyQueryItem]);\n };\n\n const removeQueryField = (i: number) => {\n const queries = [...(formProps.values.prometheusQueries || [emptyQueryItem])];\n\n queries.splice(i, 1);\n\n formProps.setFieldValue('prometheusQueries', queries);\n };\n\n const setDisplayedQueryParam = (i: number, value: string) => {\n const params = [...(formProps.values.displayedQueryParams || [''])];\n\n params[i] = value;\n\n formProps.setFieldValue('displayedQueryParams', params);\n };\n\n const addDisplayedQueryParam = () => {\n const params = [...(formProps.values.displayedQueryParams || [''])];\n\n formProps.setFieldValue('displayedQueryParams', [...params, '']);\n };\n\n const removeDisplayedQueryParam = (i: number) => {\n const params = [...(formProps.values.displayedQueryParams || [''])];\n\n params.splice(i, 1);\n\n formProps.setFieldValue('displayedQueryParams', params);\n };\n\n const mapPeriodToLabel = (period: QueriesPeriod) => {\n switch (period) {\n case QueriesPeriod.PREVIOUS_SHIFT:\n return t('prometheusWidget.previousShift');\n default:\n return t('prometheusWidget.currentShift');\n }\n };\n\n return (\n <TabContext value={selectedTab}>\n <TabList onChange={(_, value) => setSelectedTab(value)} centered>\n <Tab label={t('prometheusWidget.settings')} value=\"settings\" />\n <Tab label={t('prometheusWidget.advanced')} value=\"advanced\" />\n </TabList>\n\n <TabPanel value=\"settings\">\n <Box mb={2}>\n <FormControl sx={formControlStyles} fullWidth>\n <TextField\n name=\"endpointUrl\"\n label={t('prometheusWidget.endpointUrl')}\n value={formProps.values.endpointUrl}\n onChange={formProps.handleChange}\n onBlur={formProps.handleBlur}\n error={formProps.touched.endpointUrl && Boolean(formProps.errors.endpointUrl)}\n helperText={formProps.touched.endpointUrl && formProps.errors.endpointUrl}\n data-testid=\"prometheus.settings.endpoint-url\"\n fullWidth\n />\n </FormControl>\n <FormControl sx={formControlStyles} fullWidth>\n <InputLabel id=\"queries-period-label\">{t('prometheusWidget.period')}</InputLabel>\n <Select\n variant=\"outlined\"\n name=\"queriesPeriod\"\n labelId=\"queries-period-label\"\n value={formProps.values.queriesPeriod || QueriesPeriod.CURRENT_SHIFT}\n onChange={formProps.handleChange}\n onBlur={formProps.handleBlur}\n error={formProps.touched.queriesPeriod && Boolean(formProps.errors.queriesPeriod)}\n data-testid=\"prometheus.settings.period-select\"\n fullWidth\n >\n {Object.keys(QueriesPeriod).map((key) => (\n // @ts-expect-error no typings\n <MenuItem key={key} value={QueriesPeriod[key]}>\n {/* @ts-expect-error no typings */}\n {mapPeriodToLabel(QueriesPeriod[key])}\n </MenuItem>\n ))}\n </Select>\n <FormHelperText error>{formProps.touched.queriesPeriod && formProps.errors.queriesPeriod}</FormHelperText>\n </FormControl>\n {(formProps.values.prometheusQueries || [emptyQueryItem]).map(({ query, displayName }, i) => (\n <FormControl key={i} sx={formControlStyles} fullWidth>\n <Stack direction=\"row\" width=\"100%\" gap={1}>\n <TextField\n label={t('prometheusWidget.query')}\n value={query}\n onChange={(e) => setPrometheusQuery(i, { query: e.target.value })}\n onBlur={formProps.handleBlur}\n error={\n formProps.touched.prometheusQueries?.[i]?.query &&\n Boolean(getIn(formProps.errors, `prometheusQueries.[${i}].query`))\n }\n helperText={\n formProps.touched.prometheusQueries?.[i]?.query &&\n getIn(formProps.errors, `prometheusQueries.[${i}].query`)\n }\n data-testid={`prometheus.settings.query-input-${i}`}\n fullWidth\n />\n <TextField\n label={t('prometheusWidget.name')}\n value={displayName}\n onChange={(e) => setPrometheusQuery(i, { query, displayName: e.target.value })}\n onBlur={formProps.handleBlur}\n error={\n formProps.touched.prometheusQueries?.[i]?.displayName &&\n Boolean(getIn(formProps.errors, `prometheusQueries.[${i}].displayName`))\n }\n helperText={\n formProps.touched.prometheusQueries?.[i]?.displayName &&\n getIn(formProps.errors, `prometheusQueries.[${i}].displayName`)\n }\n data-testid={`prometheus.settings.query-name-${i}`}\n fullWidth\n />\n <IconButton\n color=\"error\"\n onClick={() => removeQueryField(i)}\n data-testid={`prometheus.settings.remove-query-${i}`}\n >\n <Clear />\n </IconButton>\n </Stack>\n </FormControl>\n ))}\n <Button\n color=\"secondary\"\n onClick={addQueryField}\n sx={{ mt: (theme) => theme.spacing(2) }}\n data-testid=\"prometheus.settings.add-query\"\n fullWidth\n >\n {t('prometheusWidget.addAnotherQuery')}\n </Button>\n {(formProps.values.displayedQueryParams || ['']).map((param, i) => (\n <FormControl key={i} sx={formControlStyles} fullWidth>\n <Stack direction=\"row\" width=\"100%\">\n <TextField\n label={t('prometheusWidget.displayedQueryParameter')}\n value={param}\n onChange={(e) => setDisplayedQueryParam(i, e.target.value)}\n error={\n // @ts-expect-error no typings\n formProps.touched.displayedQueryParams?.[i] &&\n Boolean(getIn(formProps.errors, `displayedQueryParams.[${i}]`))\n }\n helperText={\n // @ts-expect-error no typings\n formProps.touched.displayedQueryParams?.[i] &&\n getIn(formProps.errors, `displayedQueryParams.[${i}]`)\n }\n data-testid={`prometheus.settings.param-input-${i}`}\n fullWidth\n />\n <IconButton\n color=\"error\"\n onClick={() => removeDisplayedQueryParam(i)}\n data-testid={`prometheus.settings.remove-param-${i}`}\n >\n <Clear />\n </IconButton>\n </Stack>\n </FormControl>\n ))}\n <Button\n color=\"secondary\"\n onClick={addDisplayedQueryParam}\n sx={{ mt: (theme) => theme.spacing(2) }}\n data-testid=\"prometheus.settings.add-param\"\n fullWidth\n >\n {t('prometheusWidget.addAnotherDisplayedQueryParameter')}\n </Button>\n <FormControl sx={formControlStyles} fullWidth>\n <TextField\n name=\"xAxisUnit\"\n label={t('prometheusWidget.xAxisUnit')}\n value={formProps.values.xAxisUnit || ''}\n onChange={formProps.handleChange}\n onBlur={formProps.handleBlur}\n error={formProps.touched.xAxisUnit && Boolean(formProps.errors.xAxisUnit)}\n helperText={formProps.touched.xAxisUnit && formProps.errors.xAxisUnit}\n data-testid=\"prometheus.settings.x-axis-unit\"\n fullWidth\n />\n </FormControl>\n <FormControl sx={formControlStyles} fullWidth>\n <TextField\n name=\"yAxisUnit\"\n label={t('prometheusWidget.yAxisUnit')}\n value={formProps.values.yAxisUnit || ''}\n onChange={formProps.handleChange}\n onBlur={formProps.handleBlur}\n error={formProps.touched.yAxisUnit && Boolean(formProps.errors.yAxisUnit)}\n helperText={formProps.touched.yAxisUnit && formProps.errors.yAxisUnit}\n data-testid=\"prometheus.settings.y-axis-unit\"\n fullWidth\n />\n </FormControl>\n </Box>\n </TabPanel>\n\n <TabPanel value=\"advanced\">\n <TextField\n name=\"customTitle\"\n label={t('prometheusWidget.customTitle')}\n value={formProps.values.customTitle}\n onChange={formProps.handleChange}\n data-testid=\"prometheus.settings.custom-title\"\n fullWidth\n />\n </TabPanel>\n </TabContext>\n );\n};\n\nexport default SettingsFormContent;\n","import { generateTimeRange, getCurrentShift, getRecentShift, normalizeShifts } from 'andoncloud-dashboard-toolkit';\nimport dayjs from 'dayjs';\n\nimport { QueriesPeriod, QueriesTimeRange, WidgetData } from './types';\n\nexport { generateTimeRange };\n\nexport const getQueriesTimeRange = (period: QueriesPeriod, data: WidgetData): QueriesTimeRange | null => {\n const currentDate = dayjs();\n const normalizedShifts = normalizeShifts(data?.shifts, currentDate);\n const currentShift = getCurrentShift(currentDate, normalizedShifts);\n const recentShift = getRecentShift(currentDate, normalizedShifts);\n\n switch (period) {\n case QueriesPeriod.CURRENT_SHIFT:\n if (currentShift) {\n return {\n startedAt: currentShift.startedAt.toDate(),\n finishedAt: currentShift.finishedAt.toDate(),\n };\n }\n if (recentShift) {\n return {\n startedAt: recentShift.startedAt.toDate(),\n finishedAt: recentShift.finishedAt.toDate(),\n };\n }\n return null;\n case QueriesPeriod.PREVIOUS_SHIFT:\n if (recentShift) {\n return {\n startedAt: recentShift.startedAt.toDate(),\n finishedAt: recentShift.finishedAt.toDate(),\n };\n }\n return null;\n default:\n return null;\n }\n};\n","import Chart, { ChartArea } from 'chart.js';\nimport Color from 'color';\n\nconst createGradient = (ctx: CanvasRenderingContext2D, area: ChartArea) => {\n return ctx.createLinearGradient(0, area.bottom, 0, area.top);\n};\n\nconst getScale = (chart: Chart, datasetId: number) => {\n const meta = chart.getDatasetMeta(datasetId);\n\n return meta.controller._yScale || meta.controller.chart.scales[meta.yAxisID as string];\n};\n\nconst GradientPlugin = {\n id: 'gradient',\n beforeDatasetsUpdate(chart: Chart) {\n const ctx = chart.ctx;\n const datasets = chart.data.datasets;\n\n if (ctx && datasets) {\n for (let i = 0; i < datasets.length; i++) {\n const dataset = datasets[i];\n const scale = getScale(chart, i);\n\n if (scale) {\n const gradient = createGradient(ctx, scale);\n const borderColor = Color(dataset.borderColor);\n\n gradient.addColorStop(0, borderColor.alpha(0.1).hexa());\n gradient.addColorStop(1, borderColor.alpha(0.5).hexa());\n\n dataset.backgroundColor = gradient;\n }\n }\n }\n },\n};\n\nexport default GradientPlugin;\n","import { useEffect, useRef, useState } from 'react';\nimport { Chart } from 'react-chartjs-2';\n\nimport ChartJS from 'chart.js';\nimport ChartDatasourcePrometheusPlugin from 'chartjs-plugin-datasource-prometheus';\nimport dayjs, { Dayjs } from 'dayjs';\nimport pick from 'lodash.pick';\n\nimport { generateTimeRange, getQueriesTimeRange } from '@/helpers';\nimport { PrometheusChartProps, QueriesPeriod, QueriesTimeRange } from '@/types';\n\nimport GradientPlugin from './GradientPlugin';\n\ninterface LegendItem {\n datasetIndex: number;\n text: string;\n}\n\nChartJS.defaults.global.defaultFontSize = 12;\nChartJS.defaults.global.defaultFontColor = 'rgba(255, 255, 255, 0.75)';\n\nconst PrometheusChart: React.FC<PrometheusChartProps> = ({ data, settings }) => {\n const chart = useRef<ChartJS>(null);\n const [chartData] = useState<ChartJS.ChartData>({ labels: [], datasets: [] });\n const [queriesTimeRange, setQueriesTimeRange] = useState<QueriesTimeRange | null>(null);\n const [timeLabels, setTimeLabels] = useState<Dayjs[]>([]);\n\n useEffect(() => {\n if (chart.current) chart.current.update();\n\n if (queriesTimeRange) {\n const startedAt = dayjs(queriesTimeRange.startedAt);\n const finishedAt = dayjs(queriesTimeRange.finishedAt);\n\n setTimeLabels(generateTimeRange(startedAt, finishedAt, 'minutes', 15));\n }\n }, [queriesTimeRange]);\n\n useEffect(() => {\n setQueriesTimeRange(getQueriesTimeRange(settings.queriesPeriod, data));\n\n if (settings?.queriesPeriod === QueriesPeriod.CURRENT_SHIFT) {\n const intervalId = setInterval(() => {\n if (chart.current && chart.current.options.plugins) {\n const nextTimeRange = getQueriesTimeRange(settings.queriesPeriod, data);\n\n setQueriesTimeRange(nextTimeRange);\n\n chart.current.options.plugins['datasource-prometheus'].timeRange = {\n ...chart.current.options.plugins['datasource-prometheus'].timeRange,\n start: nextTimeRange?.startedAt,\n end: nextTimeRange?.finishedAt,\n };\n chart.current.update();\n }\n }, 30_000);\n\n return () => {\n clearInterval(intervalId);\n };\n }\n return () => {};\n }, [data, settings]);\n\n return (\n queriesTimeRange && (\n <Chart\n ref={chart}\n type=\"line\"\n data={chartData}\n plugins={[ChartDatasourcePrometheusPlugin, GradientPlugin]}\n options={{\n scales: {\n xAxes: [\n {\n type: 'time',\n labels: timeLabels,\n time: {\n displayFormats: {\n millisecond: 'HH:mm:ss.SSS',\n second: 'HH:mm:ss',\n minute: 'HH:mm',\n hour: 'HH',\n },\n },\n ticks: {\n source: 'labels',\n },\n gridLines: {\n color: 'rgba(255, 255, 255, 0.1)',\n },\n ...(settings.xAxisUnit && {\n scaleLabel: {\n display: true,\n labelString: settings.xAxisUnit,\n },\n }),\n },\n ],\n yAxes: [\n {\n gridLines: {\n color: 'rgba(255, 255, 255, 0.1)',\n },\n ...(settings.xAxisUnit && {\n scaleLabel: {\n display: true,\n labelString: settings.yAxisUnit,\n },\n }),\n },\n ],\n },\n elements: {\n point: {\n radius: 0,\n },\n },\n maintainAspectRatio: false,\n animation: {\n duration: 0,\n },\n plugins: {\n 'datasource-prometheus': {\n prometheus: {\n endpoint: settings.endpointUrl,\n },\n query: settings.prometheusQueries.map(({ query }) => query),\n timeRange: {\n type: 'absolute',\n start: queriesTimeRange.startedAt,\n end: queriesTimeRange.finishedAt,\n step: 30,\n },\n fillGaps: true,\n fill: true,\n },\n },\n legend: {\n labels: {\n filter: (item: LegendItem) => {\n const regex = /{(?:[^{}]*)*}/;\n const paramsMatch = item.text.match(regex);\n const queryDisplayName = settings?.prometheusQueries[item.datasetIndex]?.displayName;\n\n if (queryDisplayName) {\n if (paramsMatch && paramsMatch.index !== 0) {\n // eslint-disable-next-line no-eval\n const queryParams = eval('(' + paramsMatch[0].replaceAll('=', ':') + ')');\n const queryParamsValues = Object.values(pick(queryParams, settings.displayedQueryParams)).join(\n ' - ',\n );\n if (queryParamsValues) {\n item.text = `${queryDisplayName} - ${queryParamsValues}`;\n } else {\n item.text = queryDisplayName;\n }\n }\n } else {\n const replaceAfter = (text: string, index: number, replacement: string) => {\n return text.substring(0, index) + replacement;\n };\n\n if (paramsMatch && paramsMatch.index !== 0) {\n const matchIndex = paramsMatch.index || 0;\n // eslint-disable-next-line no-eval\n const queryParams = eval('(' + paramsMatch[0].replaceAll('=', ':') + ')');\n\n item.text = replaceAfter(\n item.text,\n matchIndex,\n JSON.stringify(pick(queryParams, settings.displayedQueryParams)),\n );\n } else {\n item.text = settings?.prometheusQueries[item.datasetIndex].query;\n }\n }\n return item;\n },\n },\n },\n }}\n />\n )\n );\n};\n\nexport default PrometheusChart;\n","import { Box } from '@mui/material';\n\nimport { WidgetViewProps } from '@/types';\n\nimport PrometheusChart from '../PrometheusChart';\n\nconst WidgetView: React.FC<WidgetViewProps> = ({ data, settings }) => {\n return (\n <Box display=\"flex\" width=\"100%\" minWidth=\"500px\" height=\"100%\" minHeight=\"250px\" p={2}>\n {settings && <PrometheusChart data={data} settings={settings} />}\n </Box>\n );\n};\n\nexport default WidgetView;\n","import { satisfies } from 'compare-versions';\nimport { TFunction } from 'i18next';\nimport * as yup from 'yup';\n\nimport { QueriesPeriod, WidgetSettings } from '@/types';\n\nexport const getSettingsFormProps = (t: TFunction) => {\n yup.setLocale({\n mixed: {\n required: t('prometheusWidget.thisFieldIsRequired'),\n },\n });\n return {\n initialValues: {\n customTitle: '',\n endpointUrl: '',\n queriesPeriod: QueriesPeriod.CURRENT_SHIFT,\n prometheusQueries: [],\n displayedQueryParams: [],\n xAxisUnit: '',\n yAxisUnit: '',\n },\n validationSchema: yup.object({\n endpointUrl: yup.string().required(),\n queriesPeriod: yup.string().required(),\n prometheusQueries: yup.array().of(\n yup.object().shape({\n query: yup.string().required(),\n displayName: yup.string().required(),\n }),\n ),\n displayedQueryParams: yup.array().of(yup.string().required()),\n xAxisUnit: yup.string().required(),\n yAxisUnit: yup.string().required(),\n }),\n };\n};\n\nexport const migrateSettings = (settings: WidgetSettings) => {\n if (!satisfies(settings.version || '1.0.0', '>=1.2.5')) {\n return {\n ...settings,\n prometheusQueries: settings.prometheusQueries.map((query) => ({ query, displayName: '' })),\n };\n }\n return settings;\n};\n","import { useEffect, useState } from 'react';\n\nimport { useGqlClients, WidgetProps } from 'andoncloud-dashboard-toolkit';\nimport { BaseWidget } from 'andoncloud-widget-base';\n\nimport locales from '@/locales';\nimport { WidgetData, WidgetSettings } from '@/types';\nimport { LIBRARY_VERSION } from '@/version';\n\nimport SettingsFormContent from '../SettingsFormContent';\nimport WidgetView from '../WidgetView';\n\nimport { getSettingsFormProps, migrateSettings } from './utils';\n\nconst Widget: React.FC<WidgetProps<WidgetData, WidgetSettings>> = ({ url, wsUrl, lang, data, ...widgetProps }) => {\n const { graphqlSdk, gqlWsClient } = useGqlClients({ url, wsUrl, lang });\n const [widgetData, setWidgetData] = useState<WidgetData | undefined>(data);\n\n useEffect(() => {\n if (!data && graphqlSdk) {\n graphqlSdk\n .listShifts()\n .then(({ shifts }) =>\n setWidgetData((current: WidgetData) => ({\n ...(current || {}),\n shifts,\n })),\n )\n .catch(() => {});\n }\n }, [data, graphqlSdk]);\n\n return (\n <BaseWidget\n {...widgetProps}\n url={url}\n lang={lang}\n locales={locales}\n data={widgetData}\n gqlClients={{ graphqlSdk, gqlWsClient }}\n WidgetView={WidgetView}\n getSettingsFormProps={getSettingsFormProps}\n SettingsFormContent={SettingsFormContent}\n migrateSettings={migrateSettings}\n version={LIBRARY_VERSION}\n data-testid=\"prometheus-widget\"\n />\n );\n};\n\nexport default Widget;\n","import type { FilterValues } from 'andoncloud-dashboard-toolkit';\nimport i18n from 'i18next';\n\nimport type { WidgetData, WidgetSettings } from '../types';\n\nconst ns = 'prometheusWidget';\n\nconst t = (key: string, lng: string, options?: Record<string, unknown>) => i18n.t(`${ns}.${key}`, { lng, ...options });\n\nexport const getDisplayName = (lang: string) => t('displayName', lang);\n\nexport const getTitle = (\n _data: WidgetData | undefined,\n settings: WidgetSettings | undefined,\n _filters: FilterValues | undefined,\n lang: string,\n): string => {\n const name = getDisplayName(lang);\n\n if (!settings?.prometheusQueries?.length) return name;\n\n const queryCount = settings.prometheusQueries.length;\n const period =\n settings.queriesPeriod === 'CURRENT_SHIFT' ? t('titleCurrentShift', lang) : t('titlePreviousShift', lang);\n\n return `${name} — ${t('titleQueries', lang, { count: queryCount })}, ${period}`;\n};\n","export { default as Widget } from './components/Widget';\nexport { getDisplayName, getTitle } from './core/title';\n\nexport const thumbnail: string | undefined = undefined;\n\nexport const requiredFeatures: string[] = ['feature.prometheus-widget'];\nexport const extraPermissions: string[] = [];\n\nexport { LIBRARY_VERSION as version } from './version';\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["en","pl","locales"],"sources":["../src/locales/en/translation.json","../src/locales/pl/translation.json","../src/locales/index.ts","../src/version.ts","../src/types.ts","../src/components/SettingsFormContent/index.tsx","../src/helpers.ts","../src/components/PrometheusChart/GradientPlugin.ts","../src/components/PrometheusChart/index.tsx","../src/components/WidgetView/index.tsx","../src/components/Widget/utils.ts","../src/components/Widget/index.tsx","../src/core/title.ts","../src/index.tsx"],"sourcesContent":["","","import en from './en/translation.json';\nimport pl from './pl/translation.json';\n\nconst resources = {\n en: {\n translation: en,\n },\n pl: {\n translation: pl,\n },\n};\n\nexport default resources;\n","export const LIBRARY_VERSION = '1.3.7';\n","import type { BaseWidgetData, BaseWidgetSettings, ListShifts_Shift } from 'andoncloud-dashboard-toolkit';\nimport { BaseWidgetViewProps } from 'andoncloud-widget-base';\n\ninterface WidgetSettingsData {\n shifts: ListShifts_Shift[];\n}\n\nexport interface WidgetData extends BaseWidgetData, WidgetSettingsData {}\n\nexport interface PrometheusQuery {\n query: string;\n displayName?: string;\n}\n\nexport interface WidgetSettings extends BaseWidgetSettings {\n customTitle: string;\n endpointUrl: string;\n queriesPeriod: QueriesPeriod;\n prometheusQueries: PrometheusQuery[];\n displayedQueryParams: string[];\n xAxisUnit: string;\n yAxisUnit: string;\n}\n\nexport interface WidgetViewProps extends BaseWidgetViewProps<WidgetData, WidgetSettings> {}\n\nexport enum QueriesPeriod {\n CURRENT_SHIFT = 'CURRENT_SHIFT',\n PREVIOUS_SHIFT = 'PREVIOUS_SHIFT',\n}\n\nexport interface QueriesTimeRange {\n startedAt: Date | number;\n finishedAt?: Date;\n}\n\nexport interface PrometheusChartProps {\n data: WidgetData;\n settings: WidgetSettings;\n}\n","import { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { Clear } from '@mui/icons-material';\nimport { TabContext, TabList, TabPanel } from '@mui/lab';\nimport {\n Box,\n Button,\n FormControl,\n FormHelperText,\n IconButton,\n InputLabel,\n MenuItem,\n Select,\n Stack,\n Tab,\n TextField,\n} from '@mui/material';\nimport { SettingsFormContentProps } from 'andoncloud-widget-base';\nimport { getIn } from 'formik';\n\nimport { PrometheusQuery, QueriesPeriod, WidgetData, WidgetSettings } from '@/types';\n\nconst SettingsFormContent: React.FC<SettingsFormContentProps<WidgetData, WidgetSettings>> = ({ formProps }) => {\n // -- Local state --\n const [selectedTab, setSelectedTab] = useState('settings');\n const emptyQueryItem = { query: '', displayName: '' };\n const formControlStyles = { mt: 2 };\n\n // -- Translation --\n const { t } = useTranslation();\n\n const setPrometheusQuery = (i: number, item: PrometheusQuery) => {\n const queries = [...(formProps.values.prometheusQueries || [emptyQueryItem])];\n\n queries[i] = { ...queries[i], ...item };\n\n formProps.setFieldValue('prometheusQueries', queries);\n };\n\n const addQueryField = () => {\n const queries = [...(formProps.values.prometheusQueries || [emptyQueryItem])];\n\n formProps.setFieldValue('prometheusQueries', [...queries, emptyQueryItem]);\n };\n\n const removeQueryField = (i: number) => {\n const queries = [...(formProps.values.prometheusQueries || [emptyQueryItem])];\n\n queries.splice(i, 1);\n\n formProps.setFieldValue('prometheusQueries', queries);\n };\n\n const setDisplayedQueryParam = (i: number, value: string) => {\n const params = [...(formProps.values.displayedQueryParams || [''])];\n\n params[i] = value;\n\n formProps.setFieldValue('displayedQueryParams', params);\n };\n\n const addDisplayedQueryParam = () => {\n const params = [...(formProps.values.displayedQueryParams || [''])];\n\n formProps.setFieldValue('displayedQueryParams', [...params, '']);\n };\n\n const removeDisplayedQueryParam = (i: number) => {\n const params = [...(formProps.values.displayedQueryParams || [''])];\n\n params.splice(i, 1);\n\n formProps.setFieldValue('displayedQueryParams', params);\n };\n\n const mapPeriodToLabel = (period: QueriesPeriod) => {\n switch (period) {\n case QueriesPeriod.PREVIOUS_SHIFT:\n return t('prometheusWidget.previousShift');\n default:\n return t('prometheusWidget.currentShift');\n }\n };\n\n return (\n <TabContext value={selectedTab}>\n <TabList onChange={(_, value) => setSelectedTab(value)} centered>\n <Tab label={t('prometheusWidget.settings')} value=\"settings\" />\n <Tab label={t('prometheusWidget.advanced')} value=\"advanced\" />\n </TabList>\n\n <TabPanel value=\"settings\">\n <Box mb={2}>\n <FormControl sx={formControlStyles} fullWidth>\n <TextField\n name=\"endpointUrl\"\n label={t('prometheusWidget.endpointUrl')}\n value={formProps.values.endpointUrl}\n onChange={formProps.handleChange}\n onBlur={formProps.handleBlur}\n error={formProps.touched.endpointUrl && Boolean(formProps.errors.endpointUrl)}\n helperText={formProps.touched.endpointUrl && formProps.errors.endpointUrl}\n data-testid=\"prometheus.settings.endpoint-url\"\n fullWidth\n />\n </FormControl>\n <FormControl sx={formControlStyles} fullWidth>\n <InputLabel id=\"queries-period-label\">{t('prometheusWidget.period')}</InputLabel>\n <Select\n variant=\"outlined\"\n name=\"queriesPeriod\"\n labelId=\"queries-period-label\"\n value={formProps.values.queriesPeriod || QueriesPeriod.CURRENT_SHIFT}\n onChange={formProps.handleChange}\n onBlur={formProps.handleBlur}\n error={formProps.touched.queriesPeriod && Boolean(formProps.errors.queriesPeriod)}\n data-testid=\"prometheus.settings.period-select\"\n fullWidth\n >\n {Object.keys(QueriesPeriod).map((key) => (\n // @ts-expect-error no typings\n <MenuItem key={key} value={QueriesPeriod[key]}>\n {/* @ts-expect-error no typings */}\n {mapPeriodToLabel(QueriesPeriod[key])}\n </MenuItem>\n ))}\n </Select>\n <FormHelperText error>{formProps.touched.queriesPeriod && formProps.errors.queriesPeriod}</FormHelperText>\n </FormControl>\n {(formProps.values.prometheusQueries || [emptyQueryItem]).map(({ query, displayName }, i) => (\n <FormControl key={i} sx={formControlStyles} fullWidth>\n <Stack direction=\"row\" width=\"100%\" gap={1}>\n <TextField\n label={t('prometheusWidget.query')}\n value={query}\n onChange={(e) => setPrometheusQuery(i, { query: e.target.value })}\n onBlur={formProps.handleBlur}\n error={\n formProps.touched.prometheusQueries?.[i]?.query &&\n Boolean(getIn(formProps.errors, `prometheusQueries.[${i}].query`))\n }\n helperText={\n formProps.touched.prometheusQueries?.[i]?.query &&\n getIn(formProps.errors, `prometheusQueries.[${i}].query`)\n }\n data-testid={`prometheus.settings.query-input-${i}`}\n fullWidth\n />\n <TextField\n label={t('prometheusWidget.name')}\n value={displayName}\n onChange={(e) => setPrometheusQuery(i, { query, displayName: e.target.value })}\n onBlur={formProps.handleBlur}\n error={\n formProps.touched.prometheusQueries?.[i]?.displayName &&\n Boolean(getIn(formProps.errors, `prometheusQueries.[${i}].displayName`))\n }\n helperText={\n formProps.touched.prometheusQueries?.[i]?.displayName &&\n getIn(formProps.errors, `prometheusQueries.[${i}].displayName`)\n }\n data-testid={`prometheus.settings.query-name-${i}`}\n fullWidth\n />\n <IconButton\n color=\"error\"\n onClick={() => removeQueryField(i)}\n data-testid={`prometheus.settings.remove-query-${i}`}\n >\n <Clear />\n </IconButton>\n </Stack>\n </FormControl>\n ))}\n <Button\n color=\"secondary\"\n onClick={addQueryField}\n sx={{ mt: (theme) => theme.spacing(2) }}\n data-testid=\"prometheus.settings.add-query\"\n fullWidth\n >\n {t('prometheusWidget.addAnotherQuery')}\n </Button>\n {(formProps.values.displayedQueryParams || ['']).map((param, i) => (\n <FormControl key={i} sx={formControlStyles} fullWidth>\n <Stack direction=\"row\" width=\"100%\">\n <TextField\n label={t('prometheusWidget.displayedQueryParameter')}\n value={param}\n onChange={(e) => setDisplayedQueryParam(i, e.target.value)}\n error={\n // @ts-expect-error no typings\n formProps.touched.displayedQueryParams?.[i] &&\n Boolean(getIn(formProps.errors, `displayedQueryParams.[${i}]`))\n }\n helperText={\n // @ts-expect-error no typings\n formProps.touched.displayedQueryParams?.[i] &&\n getIn(formProps.errors, `displayedQueryParams.[${i}]`)\n }\n data-testid={`prometheus.settings.param-input-${i}`}\n fullWidth\n />\n <IconButton\n color=\"error\"\n onClick={() => removeDisplayedQueryParam(i)}\n data-testid={`prometheus.settings.remove-param-${i}`}\n >\n <Clear />\n </IconButton>\n </Stack>\n </FormControl>\n ))}\n <Button\n color=\"secondary\"\n onClick={addDisplayedQueryParam}\n sx={{ mt: (theme) => theme.spacing(2) }}\n data-testid=\"prometheus.settings.add-param\"\n fullWidth\n >\n {t('prometheusWidget.addAnotherDisplayedQueryParameter')}\n </Button>\n <FormControl sx={formControlStyles} fullWidth>\n <TextField\n name=\"xAxisUnit\"\n label={t('prometheusWidget.xAxisUnit')}\n value={formProps.values.xAxisUnit || ''}\n onChange={formProps.handleChange}\n onBlur={formProps.handleBlur}\n error={formProps.touched.xAxisUnit && Boolean(formProps.errors.xAxisUnit)}\n helperText={formProps.touched.xAxisUnit && formProps.errors.xAxisUnit}\n data-testid=\"prometheus.settings.x-axis-unit\"\n fullWidth\n />\n </FormControl>\n <FormControl sx={formControlStyles} fullWidth>\n <TextField\n name=\"yAxisUnit\"\n label={t('prometheusWidget.yAxisUnit')}\n value={formProps.values.yAxisUnit || ''}\n onChange={formProps.handleChange}\n onBlur={formProps.handleBlur}\n error={formProps.touched.yAxisUnit && Boolean(formProps.errors.yAxisUnit)}\n helperText={formProps.touched.yAxisUnit && formProps.errors.yAxisUnit}\n data-testid=\"prometheus.settings.y-axis-unit\"\n fullWidth\n />\n </FormControl>\n </Box>\n </TabPanel>\n\n <TabPanel value=\"advanced\">\n <TextField\n name=\"customTitle\"\n label={t('prometheusWidget.customTitle')}\n value={formProps.values.customTitle}\n onChange={formProps.handleChange}\n data-testid=\"prometheus.settings.custom-title\"\n fullWidth\n />\n </TabPanel>\n </TabContext>\n );\n};\n\nexport default SettingsFormContent;\n","import { generateTimeRange, getCurrentShift, getRecentShift, normalizeShifts } from 'andoncloud-dashboard-toolkit';\nimport dayjs from 'dayjs';\n\nimport { QueriesPeriod, QueriesTimeRange, WidgetData } from './types';\n\nexport { generateTimeRange };\n\nexport const getQueriesTimeRange = (period: QueriesPeriod, data: WidgetData): QueriesTimeRange | null => {\n const currentDate = dayjs();\n const normalizedShifts = normalizeShifts(data?.shifts, currentDate);\n const currentShift = getCurrentShift(currentDate, normalizedShifts);\n const recentShift = getRecentShift(currentDate, normalizedShifts);\n\n switch (period) {\n case QueriesPeriod.CURRENT_SHIFT:\n if (currentShift) {\n return {\n startedAt: currentShift.startedAt.toDate(),\n finishedAt: currentShift.finishedAt.toDate(),\n };\n }\n if (recentShift) {\n return {\n startedAt: recentShift.startedAt.toDate(),\n finishedAt: recentShift.finishedAt.toDate(),\n };\n }\n return null;\n case QueriesPeriod.PREVIOUS_SHIFT:\n if (recentShift) {\n return {\n startedAt: recentShift.startedAt.toDate(),\n finishedAt: recentShift.finishedAt.toDate(),\n };\n }\n return null;\n default:\n return null;\n }\n};\n","import Chart, { ChartArea } from 'chart.js';\nimport Color from 'color';\n\nconst createGradient = (ctx: CanvasRenderingContext2D, area: ChartArea) => {\n return ctx.createLinearGradient(0, area.bottom, 0, area.top);\n};\n\nconst getScale = (chart: Chart, datasetId: number) => {\n const meta = chart.getDatasetMeta(datasetId);\n\n return meta.controller._yScale || meta.controller.chart.scales[meta.yAxisID as string];\n};\n\nconst GradientPlugin = {\n id: 'gradient',\n beforeDatasetsUpdate(chart: Chart) {\n const ctx = chart.ctx;\n const datasets = chart.data.datasets;\n\n if (ctx && datasets) {\n for (let i = 0; i < datasets.length; i++) {\n const dataset = datasets[i];\n const scale = getScale(chart, i);\n\n if (scale) {\n const gradient = createGradient(ctx, scale);\n const borderColor = Color(dataset.borderColor);\n\n gradient.addColorStop(0, borderColor.alpha(0.1).hexa());\n gradient.addColorStop(1, borderColor.alpha(0.5).hexa());\n\n dataset.backgroundColor = gradient;\n }\n }\n }\n },\n};\n\nexport default GradientPlugin;\n","import { useEffect, useRef, useState } from 'react';\nimport { Chart } from 'react-chartjs-2';\n\nimport ChartJS from 'chart.js';\nimport ChartDatasourcePrometheusPlugin from 'chartjs-plugin-datasource-prometheus';\nimport dayjs, { Dayjs } from 'dayjs';\nimport pick from 'lodash.pick';\n\nimport { generateTimeRange, getQueriesTimeRange } from '@/helpers';\nimport { PrometheusChartProps, QueriesPeriod, QueriesTimeRange } from '@/types';\n\nimport GradientPlugin from './GradientPlugin';\n\ninterface LegendItem {\n datasetIndex: number;\n text: string;\n}\n\nChartJS.defaults.global.defaultFontSize = 12;\nChartJS.defaults.global.defaultFontColor = 'rgba(255, 255, 255, 0.75)';\n\nconst PrometheusChart: React.FC<PrometheusChartProps> = ({ data, settings }) => {\n const chart = useRef<ChartJS>(null);\n const [chartData] = useState<ChartJS.ChartData>({ labels: [], datasets: [] });\n const [queriesTimeRange, setQueriesTimeRange] = useState<QueriesTimeRange | null>(null);\n const [timeLabels, setTimeLabels] = useState<Dayjs[]>([]);\n\n useEffect(() => {\n if (chart.current) chart.current.update();\n\n if (queriesTimeRange) {\n const startedAt = dayjs(queriesTimeRange.startedAt);\n const finishedAt = dayjs(queriesTimeRange.finishedAt);\n\n setTimeLabels(generateTimeRange(startedAt, finishedAt, 'minutes', 15));\n }\n }, [queriesTimeRange]);\n\n useEffect(() => {\n setQueriesTimeRange(getQueriesTimeRange(settings.queriesPeriod, data));\n\n if (settings?.queriesPeriod === QueriesPeriod.CURRENT_SHIFT) {\n const intervalId = setInterval(() => {\n if (chart.current && chart.current.options.plugins) {\n const nextTimeRange = getQueriesTimeRange(settings.queriesPeriod, data);\n\n setQueriesTimeRange(nextTimeRange);\n\n chart.current.options.plugins['datasource-prometheus'].timeRange = {\n ...chart.current.options.plugins['datasource-prometheus'].timeRange,\n start: nextTimeRange?.startedAt,\n end: nextTimeRange?.finishedAt,\n };\n chart.current.update();\n }\n }, 30_000);\n\n return () => {\n clearInterval(intervalId);\n };\n }\n return () => {};\n }, [data, settings]);\n\n return (\n queriesTimeRange && (\n <Chart\n ref={chart}\n type=\"line\"\n data={chartData}\n plugins={[ChartDatasourcePrometheusPlugin, GradientPlugin]}\n options={{\n scales: {\n xAxes: [\n {\n type: 'time',\n labels: timeLabels,\n time: {\n displayFormats: {\n millisecond: 'HH:mm:ss.SSS',\n second: 'HH:mm:ss',\n minute: 'HH:mm',\n hour: 'HH',\n },\n },\n ticks: {\n source: 'labels',\n },\n gridLines: {\n color: 'rgba(255, 255, 255, 0.1)',\n },\n ...(settings.xAxisUnit && {\n scaleLabel: {\n display: true,\n labelString: settings.xAxisUnit,\n },\n }),\n },\n ],\n yAxes: [\n {\n gridLines: {\n color: 'rgba(255, 255, 255, 0.1)',\n },\n ...(settings.xAxisUnit && {\n scaleLabel: {\n display: true,\n labelString: settings.yAxisUnit,\n },\n }),\n },\n ],\n },\n elements: {\n point: {\n radius: 0,\n },\n },\n maintainAspectRatio: false,\n animation: {\n duration: 0,\n },\n plugins: {\n 'datasource-prometheus': {\n prometheus: {\n endpoint: settings.endpointUrl,\n },\n query: settings.prometheusQueries.map(({ query }) => query),\n timeRange: {\n type: 'absolute',\n start: queriesTimeRange.startedAt,\n end: queriesTimeRange.finishedAt,\n step: 30,\n },\n fillGaps: true,\n fill: true,\n },\n },\n legend: {\n labels: {\n filter: (item: LegendItem) => {\n const regex = /{(?:[^{}]*)*}/;\n const paramsMatch = item.text.match(regex);\n const queryDisplayName = settings?.prometheusQueries[item.datasetIndex]?.displayName;\n\n if (queryDisplayName) {\n if (paramsMatch && paramsMatch.index !== 0) {\n // eslint-disable-next-line no-eval\n const queryParams = eval('(' + paramsMatch[0].replaceAll('=', ':') + ')');\n const queryParamsValues = Object.values(pick(queryParams, settings.displayedQueryParams)).join(\n ' - ',\n );\n if (queryParamsValues) {\n item.text = `${queryDisplayName} - ${queryParamsValues}`;\n } else {\n item.text = queryDisplayName;\n }\n }\n } else {\n const replaceAfter = (text: string, index: number, replacement: string) => {\n return text.substring(0, index) + replacement;\n };\n\n if (paramsMatch && paramsMatch.index !== 0) {\n const matchIndex = paramsMatch.index || 0;\n // eslint-disable-next-line no-eval\n const queryParams = eval('(' + paramsMatch[0].replaceAll('=', ':') + ')');\n\n item.text = replaceAfter(\n item.text,\n matchIndex,\n JSON.stringify(pick(queryParams, settings.displayedQueryParams)),\n );\n } else {\n item.text = settings?.prometheusQueries[item.datasetIndex].query;\n }\n }\n return item;\n },\n },\n },\n }}\n />\n )\n );\n};\n\nexport default PrometheusChart;\n","import { Box } from '@mui/material';\n\nimport { WidgetViewProps } from '@/types';\n\nimport PrometheusChart from '../PrometheusChart';\n\nconst WidgetView: React.FC<WidgetViewProps> = ({ data, settings }) => {\n return (\n <Box display=\"flex\" width=\"100%\" minWidth=\"500px\" height=\"100%\" minHeight=\"250px\" p={2}>\n {settings && <PrometheusChart data={data} settings={settings} />}\n </Box>\n );\n};\n\nexport default WidgetView;\n","import { satisfies } from 'compare-versions';\nimport { TFunction } from 'i18next';\nimport * as yup from 'yup';\n\nimport { QueriesPeriod, WidgetSettings } from '@/types';\n\nexport const getSettingsFormProps = (t: TFunction) => {\n yup.setLocale({\n mixed: {\n required: t('prometheusWidget.thisFieldIsRequired'),\n },\n });\n return {\n initialValues: {\n customTitle: '',\n endpointUrl: '',\n queriesPeriod: QueriesPeriod.CURRENT_SHIFT,\n prometheusQueries: [],\n displayedQueryParams: [],\n xAxisUnit: '',\n yAxisUnit: '',\n },\n validationSchema: yup.object({\n endpointUrl: yup.string().required(),\n queriesPeriod: yup.string().required(),\n prometheusQueries: yup.array().of(\n yup.object().shape({\n query: yup.string().required(),\n displayName: yup.string().required(),\n }),\n ),\n displayedQueryParams: yup.array().of(yup.string().required()),\n xAxisUnit: yup.string().required(),\n yAxisUnit: yup.string().required(),\n }),\n };\n};\n\nexport const migrateSettings = (settings: WidgetSettings) => {\n if (!satisfies(settings.version || '1.0.0', '>=1.2.5')) {\n return {\n ...settings,\n prometheusQueries: settings.prometheusQueries.map((query) => ({ query, displayName: '' })),\n };\n }\n return settings;\n};\n","import { useEffect, useState } from 'react';\n\nimport { useGqlClients, WidgetProps } from 'andoncloud-dashboard-toolkit';\nimport { BaseWidget } from 'andoncloud-widget-base';\n\nimport locales from '@/locales';\nimport { WidgetData, WidgetSettings } from '@/types';\nimport { LIBRARY_VERSION } from '@/version';\n\nimport SettingsFormContent from '../SettingsFormContent';\nimport WidgetView from '../WidgetView';\n\nimport { getSettingsFormProps, migrateSettings } from './utils';\n\nconst Widget: React.FC<WidgetProps<WidgetData, WidgetSettings>> = ({ url, wsUrl, lang, data, ...widgetProps }) => {\n const { graphqlSdk, gqlWsClient } = useGqlClients({ url, wsUrl, lang });\n const [widgetData, setWidgetData] = useState<WidgetData | undefined>(data);\n\n useEffect(() => {\n if (!data && graphqlSdk) {\n graphqlSdk\n .listShifts()\n .then(({ shifts }) =>\n setWidgetData((current: WidgetData) => ({\n ...(current || {}),\n shifts,\n })),\n )\n .catch(() => {});\n }\n }, [data, graphqlSdk]);\n\n return (\n <BaseWidget\n {...widgetProps}\n url={url}\n lang={lang}\n locales={locales}\n data={widgetData}\n gqlClients={{ graphqlSdk, gqlWsClient }}\n WidgetView={WidgetView}\n getSettingsFormProps={getSettingsFormProps}\n SettingsFormContent={SettingsFormContent}\n migrateSettings={migrateSettings}\n version={LIBRARY_VERSION}\n data-testid=\"prometheus-widget\"\n />\n );\n};\n\nexport default Widget;\n","import type { FilterValues } from 'andoncloud-dashboard-toolkit';\nimport i18n from 'i18next';\n\nimport type { WidgetData, WidgetSettings } from '../types';\n\nconst ns = 'prometheusWidget';\n\nconst t = (key: string, lng: string, options?: Record<string, unknown>) => i18n.t(`${ns}.${key}`, { lng, ...options });\n\nexport const getDisplayName = (lang: string) => t('displayName', lang);\n\nexport const getTitle = (\n _data: WidgetData | undefined,\n settings: WidgetSettings | undefined,\n _filters: FilterValues | undefined,\n lang: string,\n): string => {\n const name = getDisplayName(lang);\n\n if (!settings?.prometheusQueries?.length) return name;\n\n const queryCount = settings.prometheusQueries.length;\n const period =\n settings.queriesPeriod === 'CURRENT_SHIFT' ? t('titleCurrentShift', lang) : t('titlePreviousShift', lang);\n\n return `${name} — ${t('titleQueries', lang, { count: queryCount })}, ${period}`;\n};\n","export { default as Widget } from './components/Widget';\nexport { getDisplayName, getTitle } from './core/title';\n\nexport const thumbnail: string | undefined = undefined;\n\nexport const requiredFeatures: string[] = ['feature.prometheus-widget'];\nexport const extraPermissions: string[] = [];\n\nexport { LIBRARY_VERSION as version } from './version';\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "andoncloud-prometheus-widget",
3
- "version": "1.3.5",
3
+ "version": "1.3.7",
4
4
  "description": "Made with create-andoncloud-widget",
5
5
  "author": "Adrian Olszewski",
6
6
  "license": "MIT",
@@ -31,7 +31,8 @@
31
31
  "graphql-request": "^6.0.0",
32
32
  "i18next": "^22.0.0",
33
33
  "react": "^18.0.0",
34
- "react-i18next": "^12.0.0"
34
+ "react-i18next": "^12.0.0",
35
+ "dayjs": "^1.11.0"
35
36
  },
36
37
  "devDependencies": {
37
38
  "@craco/craco": "^7.1.0",
@@ -76,10 +77,9 @@
76
77
  "chartjs-plugin-datasource-prometheus": "^1.0.12",
77
78
  "color": "^5.0.3",
78
79
  "compare-versions": "^6.1.1",
79
- "dayjs": "^1.11.20",
80
80
  "formik": "^2.4.9",
81
81
  "lodash.pick": "^4.4.0",
82
- "react-chartjs-2": "^5.3.1",
82
+ "react-chartjs-2": "^2.11.1",
83
83
  "react-text-truncate": "^0.19.0",
84
84
  "yup": "^1.7.1"
85
85
  }