Skip to content

Commit

Permalink
[Synthetics] Standardize the uses of MONITOR_QUERY_ID and CONFIG_ID t…
Browse files Browse the repository at this point in the history
…hroughout the app (#144176)

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: shahzad31 <shahzad.muhammad@elastic.co>
Co-authored-by: Shahzad <shahzad31comp@gmail.com>
Resolves #143309
  • Loading branch information
dominiqueclarke authored Nov 15, 2022
1 parent ff09e80 commit 95a0f2e
Show file tree
Hide file tree
Showing 54 changed files with 188 additions and 121 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,11 @@
* 2.0.
*/

import { useParams } from 'react-router-dom';
import { ConfigKey } from '../../../../../../common/runtime_types';
import { useSelectedMonitor } from './use_selected_monitor';

export const useMonitorQueryId = () => {
const { monitorId } = useParams<{ monitorId: string }>();

const { monitor } = useSelectedMonitor();

if (monitor && monitor.origin === 'project') {
return monitor[ConfigKey.CUSTOM_HEARTBEAT_ID]!;
}

return monitorId;
return monitor?.[ConfigKey.MONITOR_QUERY_ID];
};
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import { useEffect, useCallback, useRef } from 'react';
import { useSelector, useDispatch } from 'react-redux';

import { PingStatus } from '../../../../../../common/runtime_types';
import { ConfigKey, PingStatus } from '../../../../../../common/runtime_types';
import {
getMonitorPingStatusesAction,
selectIsMonitorStatusesLoading,
Expand All @@ -35,8 +35,11 @@ export const usePingStatuses = ({
const location = useSelectedLocation();

const pingStatusesSelector = useCallback(() => {
return selectPingStatusesForMonitorAndLocationAsc(monitor?.id ?? '', location?.label ?? '');
}, [monitor?.id, location?.label]);
return selectPingStatusesForMonitorAndLocationAsc(
monitor?.[ConfigKey.CONFIG_ID] ?? '',
location?.label ?? ''
);
}, [monitor, location?.label]);
const isLoading = useSelector(selectIsMonitorStatusesLoading);
const pingStatuses = useSelector(pingStatusesSelector()) as PingStatus[];
const dispatch = useDispatch();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import { useEffect, useMemo } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { useParams } from 'react-router-dom';
import { ConfigKey } from '../../../../../../common/runtime_types';
import {
getMonitorAction,
selectEncryptedSyntheticsSavedMonitors,
Expand All @@ -20,16 +21,16 @@ export const useSelectedMonitor = () => {
const monitorsList = useSelector(selectEncryptedSyntheticsSavedMonitors);
const { loading: monitorListLoading } = useSelector(selectMonitorListState);
const monitorFromList = useMemo(
() => monitorsList.find((monitor) => monitor.id === monitorId) ?? null,
() => monitorsList.find((monitor) => monitor[ConfigKey.CONFIG_ID] === monitorId) ?? null,
[monitorId, monitorsList]
);

const { syntheticsMonitor, syntheticsMonitorLoading } = useSelector(selectorMonitorDetailsState);
const dispatch = useDispatch();

const isMonitorFromListValid = monitorId && monitorFromList && monitorFromList?.id === monitorId;
const isMonitorFromListValid =
monitorId && monitorFromList && monitorFromList[ConfigKey.CONFIG_ID] === monitorId;
const isLoadedSyntheticsMonitorValid =
monitorId && syntheticsMonitor && syntheticsMonitor?.id === monitorId;
monitorId && syntheticsMonitor && syntheticsMonitor[ConfigKey.CONFIG_ID] === monitorId;
const availableMonitor = isLoadedSyntheticsMonitorValid
? syntheticsMonitor
: isMonitorFromListValid
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,19 @@

import React from 'react';
import { useKibana } from '@kbn/kibana-react-plugin/public';
import { useParams } from 'react-router-dom';
import { useMonitorQueryId } from '../hooks/use_monitor_query_id';
import { ClientPluginsStart } from '../../../../../plugin';

export const MonitorFailedTests = ({ time }: { time: { to: string; from: string } }) => {
const { observability } = useKibana<ClientPluginsStart>().services;

const { ExploratoryViewEmbeddable } = observability;

const { monitorId } = useParams<{ monitorId: string }>();
const monitorId = useMonitorQueryId();

if (!monitorId) {
return null;
}

return (
<ExploratoryViewEmbeddable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ export const FailedTestsCount = (time: { to: string; from: string }) => {

const monitorId = useMonitorQueryId();

if (!monitorId) {
return null;
}

return (
<ExploratoryViewEmbeddable
reportType="single-metric"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export const MonitorErrors = () => {
<EuiSpacer />
<EuiFlexGroup>
<EuiFlexItem grow={1}>
<EuiPanel>
<EuiPanel hasBorder>
<EuiTitle size="xs">
<h3 css={{ margin: euiTheme.size.s, marginBottom: 0 }}>{OVERVIEW_LABEL}</h3>
</EuiTitle>
Expand All @@ -52,7 +52,7 @@ export const MonitorErrors = () => {
</EuiPanel>
</EuiFlexItem>
<EuiFlexItem grow={3}>
<EuiPanel>
<EuiPanel hasBorder>
<EuiTitle size="xs">
<h3 css={{ margin: euiTheme.size.s, marginBottom: 0 }}>{FAILED_TESTS_LABEL}</h3>
</EuiTitle>
Expand All @@ -62,15 +62,15 @@ export const MonitorErrors = () => {
</EuiFlexGroup>
<EuiFlexGroup>
<EuiFlexItem grow={2}>
<EuiPanel>
<EuiPanel hasBorder>
<EuiTitle size="xs">
<h3 css={{ margin: euiTheme.size.s, marginBottom: 0 }}>{ERRORS_LABEL}</h3>
</EuiTitle>
<ErrorsList />
</EuiPanel>
</EuiFlexItem>
<EuiFlexItem grow={1}>
<EuiPanel>
<EuiPanel hasBorder>
<EuiTitle size="xs">
<h3 css={{ margin: euiTheme.size.s, marginBottom: 0 }}>
{FAILED_TESTS_BY_STEPS_LABEL}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import {
import { css } from '@emotion/css';
import { useHistory } from 'react-router-dom';

import { ConfigKey } from '../../../../../../common/runtime_types';
import { MONITOR_HISTORY_ROUTE } from '../../../../../../common/constants';
import { stringifyUrlParams } from '../../../utils/url_params';
import { useGetUrlParams } from '../../../hooks';
Expand Down Expand Up @@ -69,9 +70,12 @@ export const MonitorStatusHeader = ({
<EuiFlexItem grow={false}>
<EuiLink
href={
monitor?.id
monitor?.[ConfigKey.CONFIG_ID]
? history.createHref({
pathname: MONITOR_HISTORY_ROUTE.replace(':monitorId', monitor?.id),
pathname: MONITOR_HISTORY_ROUTE.replace(
':monitorId',
monitor[ConfigKey.CONFIG_ID]
),
search: stringifyUrlParams(
{ ...params, dateRangeStart: 'now-24h', dateRangeEnd: 'now' },
true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export const AvailabilityPanel = (props: AvailabilityPanelprops) => {

const monitorId = useMonitorQueryId();

if (!selectedLocation) {
if (!selectedLocation || !monitorId) {
return null;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export const AvailabilitySparklines = (props: AvailabilitySparklinesProps) => {

const selectedLocation = useSelectedLocation();

if (!selectedLocation) {
if (!selectedLocation || !monitorId) {
return null;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export const DurationPanel = (props: DurationPanelProps) => {

const monitorId = useMonitorQueryId();

if (!selectedLocation) {
if (!selectedLocation || !monitorId) {
return null;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import React from 'react';
import { useKibana } from '@kbn/kibana-react-plugin/public';
import { ReportTypes, useTheme } from '@kbn/observability-plugin/public';
import { useParams } from 'react-router-dom';
import { useMonitorQueryId } from '../hooks/use_monitor_query_id';
import { ClientPluginsStart } from '../../../../../plugin';
import { useSelectedLocation } from '../hooks/use_selected_location';

Expand All @@ -23,13 +23,12 @@ export const DurationSparklines = (props: DurationSparklinesProps) => {
observability: { ExploratoryViewEmbeddable },
},
} = useKibana<ClientPluginsStart>();
const { monitorId } = useParams<{ monitorId: string }>();

const monitorId = useMonitorQueryId();
const theme = useTheme();

const selectedLocation = useSelectedLocation();

if (!selectedLocation) {
if (!selectedLocation || !monitorId) {
return null;
}

Expand All @@ -48,7 +47,7 @@ export const DurationSparklines = (props: DurationSparklinesProps) => {
dataType: 'synthetics',
selectedMetricField: 'monitor.duration.us',
reportDefinitions: {
config_id: [monitorId],
'monitor.id': [monitorId],
'observer.geo.name': [selectedLocation?.label],
},
color: theme.eui.euiColorVis1,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export const MonitorDurationTrend = (props: MonitorDurationTrendProps) => {
const monitorId = useMonitorQueryId();
const selectedLocation = useSelectedLocation();

if (!selectedLocation) {
if (!selectedLocation || !monitorId) {
return null;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ export const MonitorCompleteCount = (props: MonitorCompleteCountProps) => {

const monitorId = useMonitorQueryId();

if (!monitorId) {
return null;
}

return (
<ExploratoryViewEmbeddable
align="left"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ export const MonitorCompleteSparklines = (props: Props) => {

const { euiTheme } = useEuiTheme();

if (!monitorId) {
return null;
}

return (
<ExploratoryViewEmbeddable
reportType="kpi-over-time"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ export const MonitorDetailsPanel = () => {

if (
(latestPing && latestPing?.config_id !== monitorId) ||
(monitor && monitor.id !== monitorId)
(monitor && monitor[ConfigKey.CONFIG_ID] !== monitorId)
) {
return <EuiLoadingContent lines={6} />;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export const MonitorErrorsCount = (props: MonitorErrorsCountProps) => {

const selectedLocation = useSelectedLocation();

if (!selectedLocation) {
if (!selectedLocation || !monitorId) {
return null;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ export const MonitorTotalRunsCount = (props: MonitorTotalRunsCountProps) => {

const monitorId = useMonitorQueryId();

if (!monitorId) {
return null;
}

return (
<ExploratoryViewEmbeddable
align="left"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ export const StepDurationPanel = ({ legendPosition }: { legendPosition?: Positio
return null;
}

if (!monitorId) {
return null;
}

return (
<EuiPanel hasShadow={false} hasBorder>
<EuiFlexGroup alignItems="center" gutterSize="s">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ export function useInlineErrors({
filter: getInlineErrorFilters(),
},
},
collapse: { field: 'config_id' },
collapse: { field: 'monitor.id' },
sort: sortFieldMap[sortField] ? [{ [sortFieldMap[sortField]]: sortOrder }] : undefined,
},
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export function useInlineErrorsCount() {
},
aggs: {
total: {
cardinality: { field: 'config_id' },
cardinality: { field: 'monitor.id' },
},
},
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ export const MonitorDetailsLink = ({
const locationId =
lastSelectedLocationId && monitorHasLocation ? lastSelectedLocationId : firstMonitorLocationId;

const monitorDetailLinkUrl = useMonitorDetailLocator({ monitorId: monitor.id, locationId });
const monitorDetailLinkUrl = useMonitorDetailLocator({
monitorId: monitor[ConfigKey.CONFIG_ID],
locationId,
});

return (
<>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ export function useLastXChecks<Fields>({
EXCLUDE_RUN_ONCE_FILTER,
{
term: {
config_id: monitorId,
'monitor.id': monitorId,
},
},
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@ export const fetchSyntheticsMonitor = async ({

return {
...savedObject.attributes,
id: savedObject.id,
updated_at: savedObject.updated_at,
} as EncryptedSyntheticsSavedMonitor;
};
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import { createSelector } from 'reselect';

import { EncryptedSyntheticsSavedMonitor } from '../../../../../common/runtime_types';
import { ConfigKey, EncryptedSyntheticsSavedMonitor } from '../../../../../common/runtime_types';
import { SyntheticsAppState } from '../root_reducer';

export const selectMonitorListState = (state: SyntheticsAppState) => state.monitorList;
Expand All @@ -16,7 +16,7 @@ export const selectEncryptedSyntheticsSavedMonitors = createSelector(
(state) =>
state.data.monitors.map((monitor) => ({
...monitor.attributes,
id: monitor.id,
id: monitor.attributes[ConfigKey.MONITOR_QUERY_ID],
updated_at: monitor.updated_at,
})) as EncryptedSyntheticsSavedMonitor[]
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ describe('useInlineErrors', function () {
3,
{
body: {
collapse: { field: 'config_id' },
collapse: { field: 'monitor.id' },
query: {
bool: {
filter: [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ export function useInlineErrors({
filter: getInlineErrorFilters(),
},
},
collapse: { field: 'config_id' },
collapse: { field: 'monitor.id' },
sort: [{ [sortFieldMap[sortField]]: sortOrder }],
},
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ describe('useInlineErrorsCount', function () {
2,
{
body: {
aggs: { total: { cardinality: { field: 'config_id' } } },
aggs: { total: { cardinality: { field: 'monitor.id' } } },
query: {
bool: {
filter: [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export function useInlineErrorsCount() {
},
aggs: {
total: {
cardinality: { field: 'config_id' },
cardinality: { field: 'monitor.id' },
},
},
},
Expand Down
Loading

0 comments on commit 95a0f2e

Please sign in to comment.