diff --git a/dashboards-observability/public/components/application_analytics/components/flyout_components/availability_info_flyout.tsx b/dashboards-observability/public/components/application_analytics/components/flyout_components/availability_info_flyout.tsx new file mode 100644 index 000000000..ec9d1ea71 --- /dev/null +++ b/dashboards-observability/public/components/application_analytics/components/flyout_components/availability_info_flyout.tsx @@ -0,0 +1,62 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { + EuiFlyout, + EuiFlyoutHeader, + EuiTitle, + EuiFlyoutBody, + EuiText, + EuiCodeBlock, + EuiFlyoutFooter, + EuiButton, +} from '@elastic/eui'; +import React from 'react'; + +interface AvailabilityInfoFlyoutProps { + closeFlyout: () => void; +} + +export function AvailabilityInfoFlyout(props: AvailabilityInfoFlyoutProps) { + const { closeFlyout } = props; + + return ( + + + +

Availability

+
+
+ + +

Configure availability

+ Availability is the status of your application determined by availability levels set on a + time series metric. To create an availability level, you must configure the following: +
    +
  • color: The color of the availability badge on the home page
  • +
  • name: The text in the availability badge on the home page
  • +
  • expression: Comparison operator to determine the availability
  • +
  • value: Value to use when calculating availability
  • +
+

Configuring availability

+ By default, Application analytics shows results from the last 24 hours of your data. To + see data from a different timeframe, use the date and time selector. +

Time series metric

A time series metric is any visualization that has a query that + spans over a timestamp and is a bar/line chart. Users can use the power of the PPL + language to define arbitrary conditions on their logs to create a visualization over time. +

Example

+ + {'source = | ... | ... | stats ... by span(, 1h)'} + + Users can then choose Bar or Line in visualization + configurations to create a time series metric. +
+
+ + Close + +
+ ); +} diff --git a/dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_availability.tsx b/dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_availability.tsx index 1a0f9ade5..49ad1e221 100644 --- a/dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_availability.tsx +++ b/dashboards-observability/public/components/event_analytics/explorer/visualizations/config_panel/config_panes/config_controls/config_availability.tsx @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import React, { useCallback } from 'react'; +import React, { useCallback, useState } from 'react'; import { EuiButton, EuiAccordion, @@ -17,8 +17,10 @@ import { EuiFieldText, EuiSelect, htmlIdGenerator, + EuiText, } from '@elastic/eui'; import { isEmpty } from 'lodash'; +import { AvailabilityInfoFlyout } from '../../../../../../application_analytics/components/flyout_components/availability_info_flyout'; import { PPL_SPAN_REGEX } from '../../../../../../../../common/constants/shared'; export interface AvailabilityUnitType { @@ -30,6 +32,8 @@ export interface AvailabilityUnitType { } export const ConfigAvailability = ({ visualizations, onConfigChange, vizState = {} }: any) => { + const [flyoutOpen, setFlyoutOpen] = useState(false); + const closeFlyout = () => setFlyoutOpen(false); const addButtonText = '+ Add availability level'; const getAvailabilityUnit = () => { return { @@ -50,6 +54,13 @@ export const ConfigAvailability = ({ visualizations, onConfigChange, vizState = { value: '≠', text: '≠' }, ]; + const availabilityAccordionButton = ( + +   Availability  + setFlyoutOpen(true)} size="m" /> + + ); + const hasSpanInApp = visualizations.data.query.finalQuery.search(PPL_SPAN_REGEX) > 0 && visualizations.data.appData.fromApp && @@ -105,7 +116,7 @@ export const ConfigAvailability = ({ visualizations, onConfigChange, vizState = + {flyoutOpen && } ); };