diff --git a/x-pack/plugins/ml/public/application/components/annotations/annotations_table/annotations_table.js b/x-pack/plugins/ml/public/application/components/annotations/annotations_table/annotations_table.js
index 7d461c4ec8572..32de947fe9976 100644
--- a/x-pack/plugins/ml/public/application/components/annotations/annotations_table/annotations_table.js
+++ b/x-pack/plugins/ml/public/application/components/annotations/annotations_table/annotations_table.js
@@ -18,13 +18,13 @@ import React, { Component, Fragment, useContext } from 'react';
import memoizeOne from 'memoize-one';
import {
EuiBadge,
- EuiButtonEmpty,
EuiCallOut,
EuiFlexGroup,
EuiFlexItem,
EuiInMemoryTable,
EuiLink,
EuiLoadingSpinner,
+ EuiToolTip,
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n/react';
@@ -52,6 +52,19 @@ import { timeFormatter } from '../../../../../common/util/date_utils';
import { MlAnnotationUpdatesContext } from '../../../contexts/ml/ml_annotation_updates_context';
import { DatafeedChartFlyout } from '../../../jobs/jobs_list/components/datafeed_chart_flyout';
+const editAnnotationsText = (
+
+);
+const viewDataFeedText = (
+
+);
+
const CURRENT_SERIES = 'current_series';
/**
* Table component for rendering the lists of annotations for an ML job.
@@ -457,82 +470,67 @@ class AnnotationsTableUI extends Component {
const actions = [];
actions.push({
- render: (annotation) => {
- // find the original annotation because the table might not show everything
+ name: editAnnotationsText,
+ description: editAnnotationsText,
+ icon: 'pencil',
+ type: 'icon',
+ onClick: (annotation) => {
const annotationId = annotation._id;
const originalAnnotation = annotations.find((d) => d._id === annotationId);
- const editAnnotationsText = (
-
- );
- const editAnnotationsAriaLabelText = i18n.translate(
- 'xpack.ml.annotationsTable.editAnnotationsTooltipAriaLabel',
- { defaultMessage: 'Edit annotation' }
- );
- return (
- annotationUpdatesService.setValue(originalAnnotation ?? annotation)}
- >
- {editAnnotationsText}
-
- );
+
+ annotationUpdatesService.setValue(originalAnnotation ?? annotation);
},
});
if (this.state.jobId && this.props.jobs[0].analysis_config.bucket_span) {
// add datafeed modal action
actions.push({
- render: (annotation) => {
- const viewDataFeedText = (
-
- );
- const viewDataFeedTooltipAriaLabelText = i18n.translate(
- 'xpack.ml.annotationsTable.datafeedChartTooltipAriaLabel',
- { defaultMessage: 'Datafeed chart' }
- );
- return (
-
- this.setState({
- datafeedFlyoutVisible: true,
- datafeedEnd: annotation.end_timestamp,
- })
- }
- >
- {viewDataFeedText}
-
- );
+ name: viewDataFeedText,
+ description: viewDataFeedText,
+ icon: 'visAreaStacked',
+ type: 'icon',
+ onClick: (annotation) => {
+ this.setState({
+ datafeedFlyoutVisible: true,
+ datafeedEnd: annotation.end_timestamp,
+ });
},
});
}
if (isSingleMetricViewerLinkVisible) {
actions.push({
- render: (annotation) => {
+ name: (annotation) => {
const isDrillDownAvailable = isTimeSeriesViewJob(this.getJob(annotation.job_id));
- const openInSingleMetricViewerTooltipText = isDrillDownAvailable ? (
-
- ) : (
-
+
+ if (isDrillDownAvailable) {
+ return (
+
+ );
+ }
+ return (
+
+ }
+ >
+
+
);
- const openInSingleMetricViewerAriaLabelText = isDrillDownAvailable
+ },
+ description: (annotation) => {
+ const isDrillDownAvailable = isTimeSeriesViewJob(this.getJob(annotation.job_id));
+
+ return isDrillDownAvailable
? i18n.translate('xpack.ml.annotationsTable.openInSingleMetricViewerAriaLabel', {
defaultMessage: 'Open in Single Metric Viewer',
})
@@ -540,19 +538,11 @@ class AnnotationsTableUI extends Component {
'xpack.ml.annotationsTable.jobConfigurationNotSupportedInSingleMetricViewerAriaLabel',
{ defaultMessage: 'Job configuration not supported in Single Metric Viewer' }
);
-
- return (
- this.openSingleMetricView(annotation)}
- >
- {openInSingleMetricViewerTooltipText}
-
- );
},
+ enabled: (annotation) => isTimeSeriesViewJob(this.getJob(annotation.job_id)),
+ icon: 'visLine',
+ type: 'icon',
+ onClick: (annotation) => this.openSingleMetricView(annotation),
});
}
diff --git a/x-pack/plugins/ml/public/application/explorer/explorer.js b/x-pack/plugins/ml/public/application/explorer/explorer.js
index a11a42b9b65b2..31058b62af7fe 100644
--- a/x-pack/plugins/ml/public/application/explorer/explorer.js
+++ b/x-pack/plugins/ml/public/application/explorer/explorer.js
@@ -261,6 +261,30 @@ export class ExplorerUI extends React.Component {
} = this.props.explorerState;
const { annotationsData, aggregations, error: annotationsError } = annotations;
+ const annotationsCnt = Array.isArray(annotationsData) ? annotationsData.length : 0;
+ const allAnnotationsCnt = Array.isArray(aggregations?.event?.buckets)
+ ? aggregations.event.buckets.reduce((acc, v) => acc + v.doc_count, 0)
+ : annotationsCnt;
+
+ const badge =
+ allAnnotationsCnt > annotationsCnt ? (
+
+
+
+ ) : (
+
+
+
+ );
+
const jobSelectorProps = {
dateFormatTz: getDateFormatTz(),
};
@@ -404,7 +428,7 @@ export class ExplorerUI extends React.Component {
{loading === false && tableData.anomalies?.length ? (
) : null}
- {annotationsData.length > 0 && (
+ {annotationsCnt > 0 && (
<>
-
-
- ),
+ badge,
}}
/>
diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json
index fd0060f83a3e4..7482049582873 100644
--- a/x-pack/plugins/translations/translations/ja-JP.json
+++ b/x-pack/plugins/translations/translations/ja-JP.json
@@ -13642,7 +13642,6 @@
"xpack.ml.annotationsTable.byColumnSMVName": "グループ基準",
"xpack.ml.annotationsTable.detectorColumnName": "検知器",
"xpack.ml.annotationsTable.editAnnotationsTooltip": "注釈を編集します",
- "xpack.ml.annotationsTable.editAnnotationsTooltipAriaLabel": "注釈を編集します",
"xpack.ml.annotationsTable.eventColumnName": "イベント",
"xpack.ml.annotationsTable.fromColumnName": "開始:",
"xpack.ml.annotationsTable.howToCreateAnnotationDescription": "注釈を作成するには、{linkToSingleMetricView} を開きます",
diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json
index d2a2f0be215d3..daf3265ebc6b0 100644
--- a/x-pack/plugins/translations/translations/zh-CN.json
+++ b/x-pack/plugins/translations/translations/zh-CN.json
@@ -13821,7 +13821,6 @@
"xpack.ml.annotationsTable.byColumnSMVName": "依据",
"xpack.ml.annotationsTable.detectorColumnName": "检测工具",
"xpack.ml.annotationsTable.editAnnotationsTooltip": "编辑注释",
- "xpack.ml.annotationsTable.editAnnotationsTooltipAriaLabel": "编辑注释",
"xpack.ml.annotationsTable.eventColumnName": "事件",
"xpack.ml.annotationsTable.fromColumnName": "自",
"xpack.ml.annotationsTable.howToCreateAnnotationDescription": "要创建注释,请打开 {linkToSingleMetricView}",