[Lens] Add median operation (#79453)

This commit is contained in:
Joe Reuter 2020-10-16 16:49:06 +02:00 committed by GitHub
parent 949c5a55b2
commit 52b35f3504
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 31 additions and 3 deletions

View file

@ -264,7 +264,11 @@ export function DimensionEditor(props: DimensionEditorProps) {
<EuiListGroup
className={sideNavItems.length > 3 ? 'lnsIndexPatternDimensionEditor__columns' : ''}
gutterSize="none"
listItems={sideNavItems}
listItems={
// add a padding item containing a non breakable space if the number of operations is not even
// otherwise the column layout will break within an element
sideNavItems.length % 2 === 1 ? [...sideNavItems, { label: '\u00a0' }] : sideNavItems
}
maxWidth={false}
/>
</div>

View file

@ -993,9 +993,11 @@ describe('IndexPatternDimensionEditorPanel', () => {
'Average',
'Count',
'Maximum',
'Median',
'Minimum',
'Sum',
'Unique count',
'\u00a0',
]);
});

View file

@ -18,6 +18,8 @@ import {
SumIndexPatternColumn,
maxOperation,
MaxIndexPatternColumn,
medianOperation,
MedianIndexPatternColumn,
} from './metrics';
import { dateHistogramOperation, DateHistogramIndexPatternColumn } from './date_histogram';
import { countOperation, CountIndexPatternColumn } from './count';
@ -43,6 +45,7 @@ export type IndexPatternColumn =
| AvgIndexPatternColumn
| CardinalityIndexPatternColumn
| SumIndexPatternColumn
| MedianIndexPatternColumn
| CountIndexPatternColumn;
export type FieldBasedIndexPatternColumn = Extract<IndexPatternColumn, { sourceField: string }>;
@ -59,6 +62,7 @@ const internalOperationDefinitions = [
averageOperation,
cardinalityOperation,
sumOperation,
medianOperation,
countOperation,
rangeOperation,
];

View file

@ -87,6 +87,7 @@ export type SumIndexPatternColumn = MetricColumn<'sum'>;
export type AvgIndexPatternColumn = MetricColumn<'avg'>;
export type MinIndexPatternColumn = MetricColumn<'min'>;
export type MaxIndexPatternColumn = MetricColumn<'max'>;
export type MedianIndexPatternColumn = MetricColumn<'median'>;
export const minOperation = buildMetricOperation<MinIndexPatternColumn>({
type: 'min',
@ -137,3 +138,15 @@ export const sumOperation = buildMetricOperation<SumIndexPatternColumn>({
values: { name },
}),
});
export const medianOperation = buildMetricOperation<MedianIndexPatternColumn>({
type: 'median',
displayName: i18n.translate('xpack.lens.indexPattern.median', {
defaultMessage: 'Median',
}),
ofName: (name) =>
i18n.translate('xpack.lens.indexPattern.medianOf', {
defaultMessage: 'Median of {name}',
values: { name },
}),
});

View file

@ -315,12 +315,12 @@ describe('getOperationTypesForField', () => {
},
Object {
"field": "bytes",
"operationType": "min",
"operationType": "max",
"type": "field",
},
Object {
"field": "bytes",
"operationType": "max",
"operationType": "min",
"type": "field",
},
Object {
@ -338,6 +338,11 @@ describe('getOperationTypesForField', () => {
"operationType": "cardinality",
"type": "field",
},
Object {
"field": "bytes",
"operationType": "median",
"type": "field",
},
],
},
]