Skip to content

Commit

Permalink
review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
flash1293 committed May 31, 2021
1 parent f0b137d commit 3849b04
Show file tree
Hide file tree
Showing 9 changed files with 67 additions and 37 deletions.
5 changes: 3 additions & 2 deletions src/plugins/data/common/search/aggs/utils/parse_time_shift.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,11 @@ type AllowedUnit = typeof allowedUnits[number];
* Allowed values are the string 'previous' and an integer followed by the units s,m,h,d,w,M,y
* */
export const parseTimeShift = (val: string): moment.Duration | 'previous' | 'invalid' => {
if (val === 'previous') {
const trimmedVal = val.trim();
if (trimmedVal === 'previous') {
return 'previous';
}
const [, amount, unit] = val.match(/^(\d+)(\w)$/) || [];
const [, amount, unit] = trimmedVal.match(/^(\d+)(\w)$/) || [];
const parsedAmount = Number(amount);
if (Number.isNaN(parsedAmount) || !allowedUnits.includes(unit as AllowedUnit)) {
return 'invalid';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
EuiLink,
EuiPageContentBody,
EuiButton,
EuiSpacer,
} from '@elastic/eui';
import { CoreStart, ApplicationStart } from 'kibana/public';
import {
Expand Down Expand Up @@ -452,6 +453,41 @@ export const VisualizationWrapper = ({
[dispatchLens]
);

function renderFixAction(
validationError:
| {
shortMessage: string;
longMessage: string;
fixAction?:
| { label: string; newState: (framePublicAPI: FramePublicAPI) => Promise<unknown> }
| undefined;
}
| undefined
) {
return (
validationError &&
validationError.fixAction &&
activeDatasourceId && (
<>
<EuiButton
data-test-subj="errorFixAction"
onClick={async () => {
const newState = await validationError.fixAction?.newState(framePublicAPI);
dispatch({
type: 'UPDATE_DATASOURCE_STATE',
datasourceId: activeDatasourceId,
updater: newState,
});
}}
>
{validationError.fixAction.label}
</EuiButton>
<EuiSpacer />
</>
)
);
}

if (localState.configurationValidationError?.length) {
let showExtraErrors = null;
let showExtraErrorsAction = null;
Expand All @@ -460,14 +496,17 @@ export const VisualizationWrapper = ({
if (localState.expandError) {
showExtraErrors = localState.configurationValidationError
.slice(1)
.map(({ longMessage }) => (
<p
key={longMessage}
className="eui-textBreakWord"
data-test-subj="configuration-failure-error"
>
{longMessage}
</p>
.map((validationError) => (
<>
<p
key={validationError.longMessage}
className="eui-textBreakWord"
data-test-subj="configuration-failure-error"
>
{validationError.longMessage}
</p>
{renderFixAction(validationError)}
</>
));
} else {
showExtraErrorsAction = (
Expand Down Expand Up @@ -499,23 +538,7 @@ export const VisualizationWrapper = ({
<p className="eui-textBreakWord" data-test-subj="configuration-failure-error">
{localState.configurationValidationError[0].longMessage}
</p>
{localState.configurationValidationError[0].fixAction && activeDatasourceId && (
<EuiButton
data-test-subj="errorFixAction"
onClick={async () => {
const newState = await localState.configurationValidationError?.[0].fixAction?.newState(
framePublicAPI
);
dispatch({
type: 'UPDATE_DATASOURCE_STATE',
datasourceId: activeDatasourceId,
updater: newState,
});
}}
>
{localState.configurationValidationError[0].fixAction.label}
</EuiButton>
)}
{renderFixAction(localState.configurationValidationError?.[0])}

{showExtraErrors}
</>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ export function AdvancedOptions(props: {
}) {
const [popoverOpen, setPopoverOpen] = useState(false);
const popoverOptions = props.options.filter((option) => option.showInPopover);
const inlineOptions = props.options
.filter((option) => option.inlineElement)
.map((option) => React.cloneElement(option.inlineElement!, { key: option.dataTestSubj }));
const inlineOptions = props.options.filter((option) => option.inlineElement);

return (
<>
Expand Down Expand Up @@ -74,7 +72,12 @@ export function AdvancedOptions(props: {
{inlineOptions.length > 0 && (
<>
<EuiSpacer size="s" />
{inlineOptions}
{inlineOptions.map((option, index) => (
<>
{React.cloneElement(option.inlineElement!, { key: option.dataTestSubj })}
{index !== inlineOptions.length - 1 && <EuiSpacer size="s" />}
</>
))}
</>
)}
</>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ export function setTimeShift(
layer: IndexPatternLayer,
timeShift: string | undefined
) {
const trimmedTimeShift = timeShift?.trim();
const currentColumn = layer.columns[columnId];
const label = currentColumn.customLabel
? currentColumn.label
Expand All @@ -43,7 +44,7 @@ export function setTimeShift(
currentColumn.timeScale,
currentColumn.timeScale,
currentColumn.timeShift,
timeShift
trimmedTimeShift
);
return {
...layer,
Expand All @@ -52,7 +53,7 @@ export function setTimeShift(
[columnId]: {
...layer.columns[columnId],
label,
timeShift,
timeShift: trimmedTimeShift,
},
},
};
Expand Down Expand Up @@ -272,6 +273,7 @@ export function TimeShift({
onChange={(choices) => {
if (choices.length === 0) {
updateLayer(setTimeShift(columnId, layer, ''));
setLocalValue('');
return;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,6 @@ export const cardinalityOperation: OperationDefinition<CardinalityIndexPatternCo
},
filterable: true,
shiftable: true,
operationParams: [
{ name: 'kql', type: 'string', required: false },
{ name: 'lucene', type: 'string', required: false },
],
getDefaultLabel: (column, indexPattern) =>
ofName(getSafeName(column.sourceField, indexPattern), column.timeShift),
buildColumn({ field, previousColumn }, columnParams) {
Expand All @@ -109,6 +105,7 @@ export const cardinalityOperation: OperationDefinition<CardinalityIndexPatternCo
enabled: true,
schema: 'metric',
field: column.sourceField,
// time shift is added to wrapping aggFilteredMetric if filter is set
timeShift: column.filter ? undefined : column.timeShift,
}).toAst();
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ export const countOperation: OperationDefinition<CountIndexPatternColumn, 'field
id: columnId,
enabled: true,
schema: 'metric',
// time shift is added to wrapping aggFilteredMetric if filter is set
timeShift: column.filter ? undefined : column.timeShift,
}).toAst();
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,7 @@ export const lastValueOperation: OperationDefinition<LastValueIndexPatternColumn
size: 1,
sortOrder: 'desc',
sortField: column.params.sortField,
// time shift is added to wrapping aggFilteredMetric if filter is set
timeShift: column.filter ? undefined : column.timeShift,
}).toAst();
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ function buildMetricOperation<T extends MetricColumn<string>>({
enabled: true,
schema: 'metric',
field: column.sourceField,
// time shift is added to wrapping aggFilteredMetric if filter is set
timeShift: column.filter ? undefined : column.timeShift,
}).toAst();
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ export const percentileOperation: OperationDefinition<PercentileIndexPatternColu
schema: 'metric',
field: column.sourceField,
percentile: column.params.percentile,
// time shift is added to wrapping aggFilteredMetric if filter is set
timeShift: column.filter ? undefined : column.timeShift,
}
).toAst();
Expand Down

0 comments on commit 3849b04

Please sign in to comment.