Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
790208d
:sparkles: Add new Trend feature to Metric chart
dej611 Mar 17, 2025
86a3e4e
:lipstick: Adopt vis green
dej611 Mar 18, 2025
b46e050
:bug: Fix css name issue
dej611 Mar 18, 2025
a18e765
:sparkles: Make badge more accessible
dej611 Mar 18, 2025
e7480b5
:white_check_mark: Add tests
dej611 Mar 18, 2025
ae343d3
Merge remote-tracking branch 'upstream/main' into feat/metric-trend-a…
dej611 Mar 19, 2025
ee0cef3
:recycle: Align with new helper
dej611 Mar 19, 2025
d7b9071
:bug: Fallback in case of wrong state
dej611 Mar 19, 2025
5b71d20
:bug: Use datasource data type isntead of active data
dej611 Mar 19, 2025
d91ad9a
:white_check_mark: Add tests
dej611 Mar 19, 2025
fff8c02
:globe_with_meridians: Fix translation ids
dej611 Mar 19, 2025
ed9d97a
:label: Fix type issue
dej611 Mar 19, 2025
0ba2add
:mute: Remove log
dej611 Mar 21, 2025
9d6a27a
:camera_flash: Update snapshots
dej611 Mar 21, 2025
646e6e9
Merge remote-tracking branch 'upstream/main' into feat/metric-trend-a…
dej611 Mar 24, 2025
73ea814
:zap: tiny perf improvement
dej611 Mar 25, 2025
b04d414
:white_check_mark: Initial porting of tests to RTL
dej611 Mar 25, 2025
752319f
:white_check_mark: converting more tests to RTL
dej611 Mar 25, 2025
f03878c
:white_check_mark: Port more tests
dej611 Mar 25, 2025
ff1cdca
:white_check_mark: Complete RTL porting
dej611 Mar 25, 2025
9ac8d40
Merge branch 'main' into feat/metric-trend-arrow
dej611 Mar 25, 2025
abb1da9
:white_check_mark: Adopt better strategy
dej611 Mar 25, 2025
a13b5ba
Merge branch 'feat/metric-trend-arrow' of https://github.com/dej611/k…
dej611 Mar 25, 2025
add06f7
:recycle: Add test id
dej611 Mar 27, 2025
7d1263b
:white_check_mark: Add FTR test
dej611 Mar 27, 2025
29f143a
Merge remote-tracking branch 'upstream/main' into feat/metric-trend-a…
dej611 Apr 1, 2025
5d2fc32
:recycle: Integrate new library API
dej611 Apr 1, 2025
55877e0
:white_check_mark: Adjust tests for new API
dej611 Apr 1, 2025
3ea0d38
Merge remote-tracking branch 'upstream/main' into feat/metric-trend-a…
dej611 Apr 1, 2025
42c1dc0
:white_check_mark: Fix test type
dej611 Apr 1, 2025
b07a8ef
Merge remote-tracking branch 'upstream/main' into feat/metric-trend-a…
dej611 Apr 2, 2025
2e1efc2
:white_check_mark: Fix tests after merge
dej611 Apr 3, 2025
91160c1
:bug: Handle N/A scenario
dej611 Apr 4, 2025
e4a3cd0
Merge remote-tracking branch 'upstream/main' into feat/metric-trend-a…
dej611 Apr 10, 2025
99c43d8
:pencil2: Fix i18n id
dej611 Apr 10, 2025
38ee616
:fire: Remove baseline row label
dej611 Apr 10, 2025
f215f2b
:wrench: Restore previous behaviour
dej611 Apr 10, 2025
b2f4438
:wrench: Fix test with empty value and no badge
dej611 Apr 10, 2025
2faab31
:ok_hand: Integrate feedback
dej611 Apr 11, 2025
4e3b041
:white_check_mark: Update tests
dej611 Apr 11, 2025
11f1fcc
:white_check_mark: Fix more tests
dej611 Apr 11, 2025
7397dbd
:recycle: use compare to instead of trend
dej611 Apr 11, 2025
d09bd3c
:ok_hand: Integrate feedback
dej611 Apr 11, 2025
e53aa9a
:pencil2: Change copy
dej611 Apr 11, 2025
5753c90
Use delta value for primary scenario
dej611 Apr 11, 2025
c352b8d
:ok_hand: Reworked logic to match suggestions
dej611 Apr 15, 2025
c264ff0
:label: Match new trendConfig type
dej611 Apr 15, 2025
c2b0583
:mute: Remove log
dej611 Apr 15, 2025
cec5f14
:lipstick: Add help text placeholder for primary metric option
dej611 Apr 15, 2025
e96b740
:bug: Fix i18n validation issue
dej611 Apr 15, 2025
13720c5
Merge branch 'main' into feat/metric-trend-arrow
dej611 Apr 15, 2025
06bb866
Merge branch 'main' into feat/metric-trend-arrow
dej611 Apr 15, 2025
8cde7a1
Merge branch 'main' into feat/metric-trend-arrow
dej611 Apr 16, 2025
5a62f3f
Merge remote-tracking branch 'upstream/main' into feat/metric-trend-a…
dej611 Apr 17, 2025
afa0191
:ok_hand: Integrate feedback
dej611 Apr 17, 2025
71cdc3b
Merge remote-tracking branch 'upstream/main' into feat/metric-trend-a…
dej611 Apr 23, 2025
12b2c54
:recycle: Revert code tweak
dej611 Apr 23, 2025
480b363
:wrench: Remove warnings from faker
dej611 Apr 23, 2025
e2be298
:ok_hand: Integrated feedback
dej611 Apr 23, 2025
d9f684e
:ok_hand: Handle NA values properly with tests
dej611 Apr 24, 2025
ed7a730
:sparkles: Add trend palette
dej611 Apr 29, 2025
8d4a0ec
:truck: Use the useTheme hook
dej611 Apr 29, 2025
3aad5af
:wrench: Simplify logic
dej611 Apr 29, 2025
e92c2ca
:pencil2: Add small doc
dej611 Apr 30, 2025
708bc77
:recycle: Use new paletteId and secondaryTrend type
dej611 Apr 30, 2025
31d78d5
:label: Migrate to new secondaryTrend type
dej611 Apr 30, 2025
7c21bd5
:recycle: Use new secondaryTrend type
dej611 Apr 30, 2025
0665dff
:white_check_mark: Use new type
dej611 Apr 30, 2025
2887444
:recycle: Use new type and make sure to persist the right thing when …
dej611 Apr 30, 2025
e386ee0
:white_check_mark: Add more in depth test for new compare to feature
dej611 Apr 30, 2025
823b7fb
Merge remote-tracking branch 'upstream/main' into feat/metric-trend-a…
dej611 Apr 30, 2025
46d0783
:fire: Delete unused types
dej611 Apr 30, 2025
3d2f032
[CI] Auto-commit changed files from 'node scripts/eslint --no-cache -…
kibanamachine Apr 30, 2025
2cf9c98
:bug: Reintegrate the fix in #218233
dej611 Apr 30, 2025
5c80782
Merge branch 'main' into feat/metric-trend-arrow
dej611 Apr 30, 2025
d1427ee
:ok_hand: fixed issues reported by feedback
dej611 May 5, 2025
0cb9367
Merge branch 'main' into feat/metric-trend-arrow
dej611 May 5, 2025
108291e
:bug: Fix reversed palette picker issue
dej611 May 6, 2025
1875a48
:white_check_mark: Add test for reversed palette
dej611 May 6, 2025
8671461
:fire: Remove unused funciton
dej611 May 6, 2025
1e15f75
Update x-pack/test/functional/apps/lens/group6/metric.ts
dej611 May 7, 2025
65d9c97
Merge branch 'main' into feat/metric-trend-arrow
dej611 May 7, 2025
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/platform/packages/shared/kbn-palettes/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ const gradient = {
Temperature: 'temperature' as const,
Complementary: 'complementary' as const,
Status: 'status' as const,
CompareTo: 'compare_to' as const,
};

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,16 @@
* License v3.0 only", or the "Server Side Public License, v 1".
*/

export const getThemeService = () => {
return {
useChartsBaseTheme: () => ({ metric: { minHeight: 64 } }),
};
};
import { i18n } from '@kbn/i18n';
import { KbnColorFnPalette } from '../../classes/color_fn_palette';
import { KbnPalette } from '../../constants';

export const compareToPalette = new KbnColorFnPalette({
id: KbnPalette.CompareTo,
name: i18n.translate('palettes.compareTo.name', {
defaultMessage: 'Trend',
}),
colorFn: () => ['#F6726A', '#ECF1F9', '#24C292'],
standalone: true,
type: 'gradient',
});
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ export * from './warm';
export * from './temperature';
export * from './complementary';
export * from './status';
export * from './compare_to';
3 changes: 3 additions & 0 deletions src/platform/packages/shared/kbn-palettes/palettes/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { KbnPalettes } from '../classes/palettes';
import { elasticPalette, getNeutralPalette } from './categorical';
import { elasticClassicPalette, kibana4Palette, kibana7Palette } from './legacy/categorical';
import {
compareToPalette,
complementaryPalette,
coolPalette,
grayPalette,
Expand All @@ -37,6 +38,7 @@ const darkKbnPalettes = new KbnPalettes(
temperaturePalette,
warmPalette,
elasticClassicPalette,
compareToPalette,
],
elasticPalette
);
Expand All @@ -56,6 +58,7 @@ const lightKbnPalettes = new KbnPalettes(
temperaturePalette,
warmPalette,
elasticClassicPalette,
compareToPalette,
],
elasticPalette
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,35 @@ export const metricVisFunction = (): MetricVisExpressionFunctionDefinition => ({
multi: false,
default: 'default',
},
secondaryColor: {
types: ['string'],
help: i18n.translate('expressionMetricVis.function.secondaryColor.help', {
defaultMessage: 'A static color to use for the secondary metric',
}),
required: false,
},
secondaryTrendVisuals: {
types: ['string'],
help: i18n.translate('expressionMetricVis.function.secondaryTrend.visuals.help', {
defaultMessage: 'Specifies the mode for the secondary metric trend value',
}),
required: false,
},
secondaryTrendBaseline: {
types: ['string', 'number'],
help: i18n.translate('expressionMetricVis.function.secondaryTrend.baseline.help', {
defaultMessage: 'Specifies the baseline used for the secondary metric trend',
}),
required: false,
},
secondaryTrendPalette: {
types: ['string'],
help: i18n.translate('expressionMetricVis.function.secondaryTrend.palette.help', {
defaultMessage: 'Specifies the palette used for the secondary metric trend',
}),
multi: true,
required: false,
},
},
fn(input, args, handlers) {
validateAccessor(args.metric, input.columns);
Expand Down Expand Up @@ -221,6 +250,12 @@ export const metricVisFunction = (): MetricVisExpressionFunctionDefinition => ({
maxCols: args.maxCols,
minTiles: args.minTiles,
trends: args.trendline?.trends,
secondaryColor: args.secondaryColor,
secondaryTrend: {
visuals: args.secondaryTrendVisuals,
baseline: args.secondaryTrendBaseline,
palette: args.secondaryTrendPalette,
},
},
dimensions: {
metric: args.metric,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ export interface MetricArguments {
trendline?: TrendlineResult;
subtitle?: string;
secondaryPrefix?: string;
secondaryColor?: string;
secondaryTrendVisuals?: string;
secondaryTrendBaseline?: number | string;
secondaryTrendPalette?: [string, string, string];
progressDirection?: LayoutDirection;
titlesTextAlign: MetricStyle['titlesTextAlign'];
valuesTextAlign: MetricStyle['valuesTextAlign'];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,12 @@ export interface DimensionsVisParam {
export interface MetricVisParam {
subtitle?: string;
secondaryPrefix?: string;
secondaryColor?: string;
secondaryTrend: {
visuals?: string;
baseline?: number | string;
palette?: [string, string, string];
};
color?: string;
icon?: string;
palette?: PaletteOutput<CustomPaletteState>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,5 @@ module.exports = {
collectCoverageFrom: [
'<rootDir>/src/platform/plugins/shared/chart_expressions/expression_metric/{common,public,server}/**/*.{ts,tsx}',
],
setupFiles: ['jest-canvas-mock'],
};

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the "Elastic License
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
* Public License v 1"; you may not use this file except in compliance with, at
* your election, the "Elastic License 2.0", the "GNU Affero General Public
* License v3.0 only", or the "Server Side Public License, v 1".
*/

/**
* A set of chart mocks useful to test Elastic Charts with RTL
* in particular the chart lifecycle requires the ResizeObserver to trigger a first event
* in order to bootstrap the chart rendering, so here's a minimal ResizeObserverMock to help
*/
class ResizeObserverMock {
private cb: Function | undefined;
constructor(cb: Function) {
this.cb = cb;
}
observe() {
setTimeout(() => {
this.cb?.([{ contentRect: { width: 500, height: 500 } }]);
}, 0);
}
unobserve() {
// do nothing
}
disconnect() {
// do nothing
}
}

let roPrevious: typeof global.ResizeObserver | undefined;

export function setupChartMocks() {
roPrevious = global.ResizeObserver;
global.ResizeObserver = ResizeObserverMock;
}

export function cleanChartMocks() {
if (roPrevious) {
global.ResizeObserver = roPrevious;
}
}
Loading