Skip to content

Commit

Permalink
Merge branch 'master' of github.com:elastic/kibana into tsify/plugin-…
Browse files Browse the repository at this point in the history
…helpers
  • Loading branch information
spalger committed May 15, 2020
2 parents d48ff9a + 07e57fb commit 7f85122
Show file tree
Hide file tree
Showing 8 changed files with 144 additions and 83 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -70,4 +70,8 @@ export const METRIC_FORMATTERS: MetricFormatters = {
formatter: InfraFormatterType.number,
template: '{{value}} seconds',
},
['rdsLatency']: {
formatter: InfraFormatterType.number,
template: '{{value}} ms',
},
};
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,13 @@ export const Expressions: React.FC<Props> = props => {

const addExpression = useCallback(() => {
const exp = alertParams.criteria?.slice() || [];
exp.push(defaultExpression);
exp.push({
...defaultExpression,
timeSize: timeSize ?? defaultExpression.timeSize,
timeUnit: timeUnit ?? defaultExpression.timeUnit,
});
setAlertParams('criteria', exp);
}, [setAlertParams, alertParams.criteria]);
}, [setAlertParams, alertParams.criteria, timeSize, timeUnit]);

const removeExpression = useCallback(
(id: number) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,14 @@ export const Expressions: React.FC<Props> = props => {
);

const addExpression = useCallback(() => {
const exp = alertParams.criteria.slice();
exp.push(defaultExpression);
const exp = alertParams.criteria?.slice() || [];
exp.push({
...defaultExpression,
timeSize: timeSize ?? defaultExpression.timeSize,
timeUnit: timeUnit ?? defaultExpression.timeUnit,
});
setAlertParams('criteria', exp);
}, [setAlertParams, alertParams.criteria]);
}, [setAlertParams, alertParams.criteria, timeSize, timeUnit]);

const removeExpression = useCallback(
(id: number) => {
Expand Down Expand Up @@ -185,6 +189,31 @@ export const Expressions: React.FC<Props> = props => {
[onFilterChange]
);

const preFillAlertCriteria = useCallback(() => {
const md = alertsContext.metadata;
if (md && md.options) {
setAlertParams('criteria', [
{
...defaultExpression,
metric: md.options.metric!.type,
} as InventoryMetricConditions,
]);
} else {
setAlertParams('criteria', [defaultExpression]);
}
}, [alertsContext.metadata, setAlertParams]);

const preFillAlertFilter = useCallback(() => {
const md = alertsContext.metadata;
if (md && md.filter) {
setAlertParams('filterQueryText', md.filter);
setAlertParams(
'filterQuery',
convertKueryToElasticSearchQuery(md.filter, derivedIndexPattern) || ''
);
}
}, [alertsContext.metadata, derivedIndexPattern, setAlertParams]);

useEffect(() => {
const md = alertsContext.metadata;
if (!alertParams.nodeType) {
Expand All @@ -195,31 +224,19 @@ export const Expressions: React.FC<Props> = props => {
}
}

if (!alertParams.criteria) {
if (md && md.options) {
setAlertParams('criteria', [
{
...defaultExpression,
metric: md.options.metric!.type,
} as InventoryMetricConditions,
]);
} else {
setAlertParams('criteria', [defaultExpression]);
}
if (alertParams.criteria && alertParams.criteria.length) {
setTimeSize(alertParams.criteria[0].timeSize);
setTimeUnit(alertParams.criteria[0].timeUnit);
} else {
preFillAlertCriteria();
}

if (!alertParams.filterQuery) {
if (md && md.filter) {
setAlertParams('filterQueryText', md.filter);
setAlertParams(
'filterQuery',
convertKueryToElasticSearchQuery(md.filter, derivedIndexPattern) || ''
);
}
preFillAlertFilter();
}

if (!alertParams.sourceId) {
setAlertParams('sourceId', source?.id);
setAlertParams('sourceId', source?.id || 'default');
}
}, [alertsContext.metadata, derivedIndexPattern, defaultExpression, source]); // eslint-disable-line react-hooks/exhaustive-deps

Expand All @@ -235,11 +252,13 @@ export const Expressions: React.FC<Props> = props => {
</h4>
</EuiText>
<StyledExpression>
<NodeTypeExpression
options={nodeTypes}
value={alertParams.nodeType || 'host'}
onChange={updateNodeType}
/>
<StyledExpressionRow>
<NodeTypeExpression
options={nodeTypes}
value={alertParams.nodeType || 'host'}
onChange={updateNodeType}
/>
</StyledExpressionRow>
</StyledExpression>
<EuiSpacer size={'xs'} />
{alertParams.criteria &&
Expand Down Expand Up @@ -425,11 +444,13 @@ export const ExpressionRow: React.FC<ExpressionRowProps> = props => {
/>
</StyledExpression>
{metric && (
<StyledExpression>
<div style={{ display: 'flex', alignItems: 'center', height: '100%' }}>
<div>{metricUnit[metric]?.label || ''}</div>
</div>
</StyledExpression>
<div
style={{
alignSelf: 'center',
}}
>
<EuiText size={'s'}>{metricUnit[metric]?.label || ''}</EuiText>
</div>
)}
</StyledExpressionRow>
</EuiFlexItem>
Expand Down Expand Up @@ -502,4 +523,5 @@ const metricUnit: Record<string, { label: string }> = {
s3UploadBytes: { label: 'bytes' },
s3DownloadBytes: { label: 'bytes' },
sqsOldestMessage: { label: 'seconds' },
rdsLatency: { label: 'ms' },
};
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ interface Props {
metric?: { value: SnapshotMetricType; text: string };
metrics: Array<{ value: string; text: string }>;
errors: IErrorObject;
onChange: (metric: SnapshotMetricType) => void;
onChange: (metric?: SnapshotMetricType) => void;
popupPosition?:
| 'upCenter'
| 'upLeft'
Expand Down Expand Up @@ -65,11 +65,11 @@ export const MetricExpression = ({ metric, metrics, errors, onChange, popupPosit
}
)}
value={metric?.text || firstFieldOption.text}
isActive={aggFieldPopoverOpen || !metric}
isActive={Boolean(aggFieldPopoverOpen || (errors.metric && errors.metric.length > 0))}
onClick={() => {
setAggFieldPopoverOpen(true);
}}
color={metric ? 'secondary' : 'danger'}
color={errors.metric?.length ? 'danger' : 'secondary'}
/>
}
isOpen={aggFieldPopoverOpen}
Expand All @@ -89,16 +89,12 @@ export const MetricExpression = ({ metric, metrics, errors, onChange, popupPosit
</ClosablePopoverTitle>
<EuiFlexGroup>
<EuiFlexItem grow={false} className="actOf__aggFieldContainer">
<EuiFormRow
fullWidth
isInvalid={errors.metric.length > 0 && metric !== undefined}
error={errors.metric}
>
<EuiFormRow fullWidth isInvalid={errors.metric.length > 0} error={errors.metric}>
<EuiComboBox
fullWidth
singleSelection={{ asPlainText: true }}
data-test-subj="availablefieldsOptionsComboBox"
isInvalid={errors.metric.length > 0 && metric !== undefined}
isInvalid={errors.metric.length > 0}
placeholder={firstFieldOption.text}
options={availablefieldsOptions}
noSuggestions={!availablefieldsOptions.length}
Expand All @@ -110,6 +106,8 @@ export const MetricExpression = ({ metric, metrics, errors, onChange, popupPosit
if (selectedOptions.length > 0) {
onChange(selectedOptions[0].value as SnapshotMetricType);
setAggFieldPopoverOpen(false);
} else {
onChange();
}
}}
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,10 @@ const METRIC_FORMATTERS: MetricFormatters = {
formatter: InfraFormatterType.number,
template: '{{value}} seconds',
},
['rdsLatency']: {
formatter: InfraFormatterType.number,
template: '{{value}} ms',
},
};

export const createInventoryMetricFormatter = (metric: SnapshotMetricInput) => (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import React, { useState, useEffect } from 'react';
import React, { useState, useEffect, useMemo, useCallback } from 'react';
import { useRouteMatch, useHistory } from 'react-router-dom';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n/react';
Expand Down Expand Up @@ -95,32 +95,46 @@ export const CreateDatasourcePage: React.FunctionComponent = () => {
// Datasource validation state
const [validationResults, setValidationResults] = useState<DatasourceValidationResults>();

// Form state
const [formState, setFormState] = useState<DatasourceFormState>('INVALID');

// Update package info method
const updatePackageInfo = (updatedPackageInfo: PackageInfo | undefined) => {
if (updatedPackageInfo) {
setPackageInfo(updatedPackageInfo);
setFormState('VALID');
} else {
setFormState('INVALID');
setPackageInfo(undefined);
}
const updatePackageInfo = useCallback(
(updatedPackageInfo: PackageInfo | undefined) => {
if (updatedPackageInfo) {
setPackageInfo(updatedPackageInfo);
if (agentConfig) {
setFormState('VALID');
}
} else {
setFormState('INVALID');
setPackageInfo(undefined);
}

// eslint-disable-next-line no-console
console.debug('Package info updated', updatedPackageInfo);
};
// eslint-disable-next-line no-console
console.debug('Package info updated', updatedPackageInfo);
},
[agentConfig, setPackageInfo, setFormState]
);

// Update agent config method
const updateAgentConfig = (updatedAgentConfig: AgentConfig | undefined) => {
if (updatedAgentConfig) {
setAgentConfig(updatedAgentConfig);
} else {
setFormState('INVALID');
setAgentConfig(undefined);
}
const updateAgentConfig = useCallback(
(updatedAgentConfig: AgentConfig | undefined) => {
if (updatedAgentConfig) {
setAgentConfig(updatedAgentConfig);
if (packageInfo) {
setFormState('VALID');
}
} else {
setFormState('INVALID');
setAgentConfig(undefined);
}

// eslint-disable-next-line no-console
console.debug('Agent config updated', updatedAgentConfig);
};
// eslint-disable-next-line no-console
console.debug('Agent config updated', updatedAgentConfig);
},
[packageInfo, setAgentConfig, setFormState]
);

const hasErrors = validationResults ? validationHasErrors(validationResults) : false;

Expand Down Expand Up @@ -163,7 +177,6 @@ export const CreateDatasourcePage: React.FunctionComponent = () => {
: getHref('integration_details', { pkgkey });

// Save datasource
const [formState, setFormState] = useState<DatasourceFormState>('INVALID');
const saveDatasource = async () => {
setFormState('LOADING');
const result = await sendCreateDatasource(datasource);
Expand Down Expand Up @@ -215,33 +228,43 @@ export const CreateDatasourcePage: React.FunctionComponent = () => {
packageInfo,
};

const stepSelectConfig = useMemo(
() => (
<StepSelectConfig
pkgkey={pkgkey}
updatePackageInfo={updatePackageInfo}
agentConfig={agentConfig}
updateAgentConfig={updateAgentConfig}
/>
),
[pkgkey, updatePackageInfo, agentConfig, updateAgentConfig]
);

const stepSelectPackage = useMemo(
() => (
<StepSelectPackage
agentConfigId={configId}
updateAgentConfig={updateAgentConfig}
packageInfo={packageInfo}
updatePackageInfo={updatePackageInfo}
/>
),
[configId, updateAgentConfig, packageInfo, updatePackageInfo]
);

const steps: EuiStepProps[] = [
from === 'package'
? {
title: i18n.translate('xpack.ingestManager.createDatasource.stepSelectAgentConfigTitle', {
defaultMessage: 'Select an agent configuration',
}),
children: (
<StepSelectConfig
pkgkey={pkgkey}
updatePackageInfo={updatePackageInfo}
agentConfig={agentConfig}
updateAgentConfig={updateAgentConfig}
/>
),
children: stepSelectConfig,
}
: {
title: i18n.translate('xpack.ingestManager.createDatasource.stepSelectPackageTitle', {
defaultMessage: 'Select an integration',
}),
children: (
<StepSelectPackage
agentConfigId={configId}
updateAgentConfig={updateAgentConfig}
packageInfo={packageInfo}
updatePackageInfo={updatePackageInfo}
/>
),
children: stepSelectPackage,
},
{
title: i18n.translate('xpack.ingestManager.createDatasource.stepDefineDatasourceTitle', {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,7 @@ export const DatasourcesTable: React.FunctionComponent<Props> = ({
search={{
toolsRight: [
<EuiButton
key="addDatasourceButton"
isDisabled={!hasWriteCapabilities}
iconType="plusInCircle"
href={getHref('add_datasource_from_configuration', { configId: config.id })}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,12 @@ export const DataStreamListPage: React.FunctionComponent<{}> = () => {
sorting={true}
search={{
toolsRight: [
<EuiButton color="primary" iconType="refresh" onClick={() => sendRequest()}>
<EuiButton
key="reloadButton"
color="primary"
iconType="refresh"
onClick={() => sendRequest()}
>
<FormattedMessage
id="xpack.ingestManager.dataStreamList.reloadDataStreamsButtonText"
defaultMessage="Reload"
Expand Down

0 comments on commit 7f85122

Please sign in to comment.