diff --git a/x-pack/plugins/reporting/common/constants.ts b/x-pack/plugins/reporting/common/constants.ts index 1fe37f86b037f..2d2f0d41fc8c2 100644 --- a/x-pack/plugins/reporting/common/constants.ts +++ b/x-pack/plugins/reporting/common/constants.ts @@ -76,7 +76,12 @@ export const CSV_SEARCHSOURCE_IMMEDIATE_TYPE = 'csv_searchsource_immediate'; export const CSV_REPORT_TYPE_DEPRECATED = 'CSV'; export const CSV_JOB_TYPE_DEPRECATED = 'csv'; -export const USES_HEADLESS_JOB_TYPES = [PDF_JOB_TYPE, PNG_JOB_TYPE]; +export const USES_HEADLESS_JOB_TYPES = [ + PDF_JOB_TYPE, + PNG_JOB_TYPE, + PDF_JOB_TYPE_V2, + PNG_JOB_TYPE_V2, +]; export const DEPRECATED_JOB_TYPES = [CSV_JOB_TYPE_DEPRECATED]; diff --git a/x-pack/plugins/reporting/public/lib/job.tsx b/x-pack/plugins/reporting/public/lib/job.tsx index d24695b1041c7..99c609bfe607f 100644 --- a/x-pack/plugins/reporting/public/lib/job.tsx +++ b/x-pack/plugins/reporting/public/lib/job.tsx @@ -7,7 +7,6 @@ import { EuiText, EuiTextColor } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n-react'; import moment from 'moment'; import React from 'react'; import { JOB_STATUSES } from '../../common/constants'; @@ -38,6 +37,7 @@ export class Job { public spaceId: ReportPayload['spaceId']; public browserTimezone?: ReportPayload['browserTimezone']; public layout: ReportPayload['layout']; + public version: ReportPayload['version']; public jobtype: ReportSource['jobtype']; public created_by: ReportSource['created_by']; @@ -68,6 +68,7 @@ export class Job { this.objectType = report.payload.objectType; this.title = report.payload.title; this.layout = report.payload.layout; + this.version = report.payload.version; this.created_by = report.created_by; this.created_at = report.created_at; this.started_at = report.started_at; @@ -141,34 +142,32 @@ export class Job { return null; } - getStatus() { - const statusLabel = jobStatusLabelsMap.get(this.status) as string; - const statusTimestamp = this.getStatusTimestamp(); + public get prettyStatus(): string { + return ( + jobStatusLabelsMap.get(this.status) ?? + i18n.translate('xpack.reporting.jobStatusDetail.unknownText', { defaultMessage: 'Unknown' }) + ); + } - if (statusTimestamp) { - return ( - {this.formatDate(statusTimestamp)} - ), - }} - /> - ); - } + public get canLinkToKibanaApp(): boolean { + return Boolean(this.locatorParams); + } - return statusLabel; + public get isDownloadReady(): boolean { + return this.status === JOB_STATUSES.COMPLETED || this.status === JOB_STATUSES.WARNINGS; } - getStatusLabel() { - return ( - <> - {this.getStatus()} {this.getStatusMessage()} - - ); + public get prettyTimeout(): string { + if (this.timeout == null) { + return i18n.translate('xpack.reporting.jobStatusDetail.timeoutSecondsUnknown', { + defaultMessage: 'Unknown', + }); + } + const seconds = this.timeout / 1000; + return i18n.translate('xpack.reporting.jobStatusDetail.timeoutSeconds', { + defaultMessage: '{timeout} seconds', + values: { timeout: seconds }, + }); } /** diff --git a/x-pack/plugins/reporting/public/management/__test__/report_listing.test.helpers.tsx b/x-pack/plugins/reporting/public/management/__test__/report_listing.test.helpers.tsx index c7c1b48a04bc8..5c35569ee0cba 100644 --- a/x-pack/plugins/reporting/public/management/__test__/report_listing.test.helpers.tsx +++ b/x-pack/plugins/reporting/public/management/__test__/report_listing.test.helpers.tsx @@ -40,6 +40,7 @@ export interface TestDependencies { urlService: SharePluginSetup['url']; toasts: NotificationsSetup['toasts']; ilmLocator: LocatorPublic; + uiSettings: ReturnType['uiSettings']; } const mockPollConfig = { @@ -74,9 +75,10 @@ const createTestBed = registerTestBed( license$: l$, urlService, toasts, + uiSettings, ...rest }: Partial & TestDependencies) => ( - + ) => { license$, reportingAPIClient, ilmLocator, + uiSettings: uiSettingsClient, urlService: { locators: { get: () => ilmLocator, @@ -130,13 +133,29 @@ export const setup = async (props?: Partial) => { const { find, exists, component } = testBed; - return { + const api = { ...testBed, testDependencies, actions: { findListTable: () => find('reportJobListing'), hasIlmMigrationBanner: () => exists('migrateReportingIndicesPolicyCallOut'), hasIlmPolicyLink: () => exists('ilmPolicyLink'), + flyout: { + open: async (jobId: string) => { + await act(async () => { + find(`viewReportingLink${jobId}`).simulate('click'); + }); + component.update(); + }, + openActionsMenu: () => { + act(() => { + find('reportInfoFlyoutActionsButton').simulate('click'); + }); + component.update(); + }, + findDownloadButton: () => find('reportInfoFlyoutDownloadButton'), + findOpenInAppButton: () => find('reportInfoFlyoutOpenInKibanaButton'), + }, migrateIndices: async () => { await act(async () => { find('migrateReportingIndicesButton').simulate('click'); @@ -145,4 +164,6 @@ export const setup = async (props?: Partial) => { }, }, }; + + return api; }; diff --git a/x-pack/plugins/reporting/public/management/components/report_info_flyout.tsx b/x-pack/plugins/reporting/public/management/components/report_info_flyout.tsx index 2a7d52cf9403b..b2ac6a246a416 100644 --- a/x-pack/plugins/reporting/public/management/components/report_info_flyout.tsx +++ b/x-pack/plugins/reporting/public/management/components/report_info_flyout.tsx @@ -11,10 +11,17 @@ import { EuiFlyout, EuiFlyoutBody, EuiFlyoutHeader, + EuiFlyoutFooter, EuiPortal, - EuiText, + EuiFlexGroup, + EuiFlexItem, + EuiButtonEmpty, + EuiButton, EuiTitle, EuiLoadingSpinner, + EuiPopover, + EuiContextMenuItem, + EuiContextMenuPanel, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; @@ -31,10 +38,13 @@ interface Props { export const ReportInfoFlyout: FunctionComponent = ({ onClose, job }) => { const [isLoading, setIsLoading] = useState(true); const [loadingError, setLoadingError] = useState(); + const [isActionsPopoverOpen, setIsActionsPopoverOpen] = useState(false); const [info, setInfo] = useState(); const isMounted = useMountedState(); const { apiClient } = useInternalApiClient(); + const closePopover = () => setIsActionsPopoverOpen(false); + useEffect(() => { (async function loadInfo() { if (isLoading) { @@ -56,6 +66,48 @@ export const ReportInfoFlyout: FunctionComponent = ({ onClose, job }) => })(); }, [isLoading, apiClient, job.id, isMounted]); + const actionsButton = ( + setIsActionsPopoverOpen((isOpen) => !isOpen)} + > + {i18n.translate('xpack.reporting.reportInfoFlyout.actionsButtonLabel', { + defaultMessage: 'Actions', + })} + + ); + + const actionItems = [ + { + apiClient.downloadReport(job.id); + }} + > + {i18n.translate('xpack.reporting.reportInfoFlyout.downloadButtonLabel', { + defaultMessage: 'Download', + })} + , + { + window.open(apiClient.getKibanaAppHref(job), '_blank'); + window.focus(); + }} + > + {i18n.translate('xpack.reporting.reportInfoFlyout.openInKibanaAppButtonLabel', { + defaultMessage: 'Open in Kibana', + })} + , + ]; + return ( = ({ onClose, job }) => ? i18n.translate('xpack.reporting.listing.table.reportInfoUnableToFetch', { defaultMessage: 'Unable to fetch report info.', }) - : i18n.translate('xpack.reporting.listing.table.reportCalloutTitle', { - defaultMessage: 'Report info', + : info?.title ?? + i18n.translate('xpack.reporting.listing.table.untitledReport', { + defaultMessage: 'Untitled report', })} @@ -82,11 +135,33 @@ export const ReportInfoFlyout: FunctionComponent = ({ onClose, job }) => {isLoading ? ( ) : loadingError ? undefined : !!info ? ( - - - + ) : undefined} + {!isLoading && ( + + + + + {i18n.translate('xpack.reporting.listing.flyout.closeButtonLabel', { + defaultMessage: 'Close', + })} + + + + + + + + + + )} ); diff --git a/x-pack/plugins/reporting/public/management/components/report_info_flyout_content.tsx b/x-pack/plugins/reporting/public/management/components/report_info_flyout_content.tsx index 00ce9069d81ce..03ad5ff033e18 100644 --- a/x-pack/plugins/reporting/public/management/components/report_info_flyout_content.tsx +++ b/x-pack/plugins/reporting/public/management/components/report_info_flyout_content.tsx @@ -7,11 +7,20 @@ import React, { FunctionComponent } from 'react'; import { i18n } from '@kbn/i18n'; -import { EuiDescriptionList, EuiSpacer, EuiText } from '@elastic/eui'; +import { + EuiDescriptionList, + EuiDescriptionListProps, + EuiTitle, + EuiCallOut, + EuiSpacer, +} from '@elastic/eui'; +import moment from 'moment'; -import type { Job } from '../../lib/job'; import { USES_HEADLESS_JOB_TYPES } from '../../../common/constants'; +import type { Job } from '../../lib/job'; +import { useKibana } from '../../shared_imports'; + const NA = i18n.translate('xpack.reporting.listing.infoPanel.notApplicableLabel', { defaultMessage: 'N/A', }); @@ -20,68 +29,58 @@ const UNKNOWN = i18n.translate('xpack.reporting.listing.infoPanel.unknownLabel', defaultMessage: 'unknown', }); -const getDimensions = (info: Job): string => { - const defaultDimensions = { width: null, height: null }; - const { width, height } = info.layout?.dimensions || defaultDimensions; - if (width && height) { - return `Width: ${width} x Height: ${height}`; - } - return UNKNOWN; -}; - interface Props { info: Job; } +const createDateFormatter = (format: string, tz: string) => (date: string) => { + const m = moment.tz(date, tz); + return m.isValid() ? m.format(format) : NA; +}; + export const ReportInfoFlyoutContent: FunctionComponent = ({ info }) => { - const timeout = info.timeout ? info.timeout.toString() : NA; + const { + services: { uiSettings }, + } = useKibana(); - const jobInfo = [ - { - title: i18n.translate('xpack.reporting.listing.infoPanel.titleInfo', { - defaultMessage: 'Title', - }), - description: info.title || NA, - }, - { - title: i18n.translate('xpack.reporting.listing.infoPanel.createdAtInfo', { - defaultMessage: 'Created at', - }), - description: info.getCreatedAtLabel(), - }, + const timezone = + uiSettings.get('dateFormat:tz') === 'Browser' + ? moment.tz.guess() + : uiSettings.get('dateFormat:tz'); + + const formatDate = createDateFormatter(uiSettings.get('dateFormat'), timezone); + + const hasScreenshot = USES_HEADLESS_JOB_TYPES.includes(info.jobtype); + + const outputInfo = [ { title: i18n.translate('xpack.reporting.listing.infoPanel.statusInfo', { defaultMessage: 'Status', }), - description: info.getStatus(), + description: info.prettyStatus, }, - { - title: i18n.translate('xpack.reporting.listing.infoPanel.tzInfo', { - defaultMessage: 'Time zone', + Boolean(info.version) && { + title: i18n.translate('xpack.reporting.listing.infoPanel.kibanaVersion', { + defaultMessage: 'Kibana version', }), - description: info.browserTimezone || NA, - }, - ]; - - const processingInfo = [ - { - title: i18n.translate('xpack.reporting.listing.infoPanel.startedAtInfo', { - defaultMessage: 'Started at', - }), - description: info.started_at || NA, + description: info.version, }, - { - title: i18n.translate('xpack.reporting.listing.infoPanel.completedAtInfo', { - defaultMessage: 'Completed at', + Boolean(info.spaceId) && { + title: i18n.translate('xpack.reporting.listing.infoPanel.space', { + defaultMessage: 'Kibana space', }), - description: info.completed_at || NA, + description: info.spaceId, }, { - title: i18n.translate('xpack.reporting.listing.infoPanel.processedByInfo', { - defaultMessage: 'Processed by', + title: i18n.translate('xpack.reporting.listing.infoPanel.attemptsInfo', { + defaultMessage: 'Attempts', }), - description: - info.kibana_name && info.kibana_id ? `${info.kibana_name} (${info.kibana_id})` : NA, + description: info.max_attempts + ? i18n.translate('xpack.reporting.listing.infoPanel.attempts', { + defaultMessage: '{attempts} of {maxAttempts}', + values: { attempts: info.attempts, maxAttempts: info.max_attempts }, + }) + : info.attempts, }, { title: i18n.translate('xpack.reporting.listing.infoPanel.contentTypeInfo', { @@ -95,93 +94,114 @@ export const ReportInfoFlyoutContent: FunctionComponent = ({ info }) => { }), description: info.size?.toString() || NA, }, - { - title: i18n.translate('xpack.reporting.listing.infoPanel.attemptsInfo', { - defaultMessage: 'Attempts', + + hasScreenshot && { + title: i18n.translate('xpack.reporting.listing.infoPanel.dimensionsInfoHeight', { + defaultMessage: 'Height in pixels', + }), + description: + info.layout?.dimensions?.height != null + ? Math.ceil(info.layout.dimensions.height) + : UNKNOWN, + }, + hasScreenshot && { + title: i18n.translate('xpack.reporting.listing.infoPanel.dimensionsInfoWidth', { + defaultMessage: 'Width in pixels', }), - description: info.attempts.toString(), + description: + info.layout?.dimensions?.width != null ? Math.ceil(info.layout.dimensions.width) : UNKNOWN, }, + { - title: i18n.translate('xpack.reporting.listing.infoPanel.maxAttemptsInfo', { - defaultMessage: 'Max attempts', + title: i18n.translate('xpack.reporting.listing.infoPanel.processedByInfo', { + defaultMessage: 'Processed by', }), - description: info.max_attempts?.toString() || NA, + description: + info.kibana_name && info.kibana_id ? `${info.kibana_name} (${info.kibana_id})` : NA, }, { title: i18n.translate('xpack.reporting.listing.infoPanel.timeoutInfo', { defaultMessage: 'Timeout', }), - description: timeout, + description: info.prettyTimeout, }, + ].filter(Boolean) as EuiDescriptionListProps['listItems']; + + const timestampsInfo = [ { - title: i18n.translate('xpack.reporting.listing.infoPanel.exportTypeInfo', { - defaultMessage: 'Export type', + title: i18n.translate('xpack.reporting.listing.infoPanel.tzInfo', { + defaultMessage: 'Time zone', }), - description: info.isDeprecated - ? i18n.translate('xpack.reporting.listing.table.reportCalloutExportTypeDeprecated', { - defaultMessage: '{jobtype} (DEPRECATED)', - values: { jobtype: info.jobtype }, - }) - : info.jobtype, + description: info.browserTimezone || NA, }, - - // TODO: when https://github.com/elastic/kibana/pull/106137 is merged, add kibana version field - ]; - - const jobScreenshot = [ { - title: i18n.translate('xpack.reporting.listing.infoPanel.dimensionsInfo', { - defaultMessage: 'Dimensions', + title: i18n.translate('xpack.reporting.listing.infoPanel.createdAtInfo', { + defaultMessage: 'Created at', }), - description: getDimensions(info), + description: info.created_at ? formatDate(info.created_at) : NA, }, { - title: i18n.translate('xpack.reporting.listing.infoPanel.layoutInfo', { - defaultMessage: 'Layout', + title: i18n.translate('xpack.reporting.listing.infoPanel.startedAtInfo', { + defaultMessage: 'Started at', }), - description: info.layout?.id || UNKNOWN, + description: info.started_at ? formatDate(info.started_at) : NA, }, - ]; - - const warnings = info.getWarnings(); - const warningsInfo = warnings && [ { - title: Warnings, - description: {warnings}, + title: i18n.translate('xpack.reporting.listing.infoPanel.completedAtInfo', { + defaultMessage: 'Completed at', + }), + description: info.completed_at ? formatDate(info.completed_at) : NA, }, ]; + const warnings = info.getWarnings(); const errored = info.getError(); - const errorInfo = errored && [ - { - title: Error, - description: {errored}, - }, - ]; return ( <> - - - - {USES_HEADLESS_JOB_TYPES.includes(info.jobtype) ? ( - <> - - - - ) : null} - {warningsInfo ? ( + {Boolean(errored) && ( + + {errored} + + )} + {Boolean(warnings) && ( <> - - + {Boolean(errored) && } + + {warnings} + - ) : null} - {errorInfo ? ( - <> - - - - ) : null} + )} + +

+ {i18n.translate('xpack.reporting.listing.infoPanel.outputSectionTitle', { + defaultMessage: 'Output', + })} +

+
+ + + + + +

+ {i18n.translate('xpack.reporting.listing.infoPanel.timestampSectionTitle', { + defaultMessage: 'Timestamps', + })} +

+
+ + ); }; diff --git a/x-pack/plugins/reporting/public/management/mount_management_section.tsx b/x-pack/plugins/reporting/public/management/mount_management_section.tsx index eea04d00242fc..6d888c6071a78 100644 --- a/x-pack/plugins/reporting/public/management/mount_management_section.tsx +++ b/x-pack/plugins/reporting/public/management/mount_management_section.tsx @@ -30,7 +30,11 @@ export async function mountManagementSection( render( diff --git a/x-pack/plugins/reporting/public/management/report_listing.test.ts b/x-pack/plugins/reporting/public/management/report_listing.test.ts index b6096bfa97a97..ee15e881db62a 100644 --- a/x-pack/plugins/reporting/public/management/report_listing.test.ts +++ b/x-pack/plugins/reporting/public/management/report_listing.test.ts @@ -14,10 +14,10 @@ import type { IlmPolicyMigrationStatus } from '../../common/types'; import { ListingProps as Props } from '.'; import { setup, TestBed, TestDependencies, mockJobs } from './__test__'; +import { Job } from '../lib/job'; describe('ReportListing', () => { let testBed: TestBed; - let applicationService: TestDependencies['application']; const runSetup = async (props?: Partial) => { @@ -73,6 +73,61 @@ describe('ReportListing', () => { ); }); + describe('flyout', () => { + let reportingAPIClient: TestDependencies['reportingAPIClient']; + let jobUnderTest: Job; + + beforeEach(async () => { + await runSetup(); + reportingAPIClient = testBed.testDependencies.reportingAPIClient; + jest.spyOn(reportingAPIClient, 'getInfo').mockResolvedValue(jobUnderTest); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it('shows the enabled "open in Kibana" button in the actions menu for v2 jobs', async () => { + const [jobJson] = mockJobs; + jobUnderTest = new Job(jobJson); + const { actions } = testBed; + + await actions.flyout.open(jobUnderTest.id); + actions.flyout.openActionsMenu(); + expect(actions.flyout.findOpenInAppButton().props().disabled).toBe(false); + }); + + it('shows the disabled "open in Kibana" button in the actions menu for pre-v2 jobs', async () => { + const [, jobJson] = mockJobs; + jobUnderTest = new Job(jobJson); + const { actions } = testBed; + + await actions.flyout.open(jobUnderTest.id); + actions.flyout.openActionsMenu(); + expect(actions.flyout.findOpenInAppButton().props().disabled).toBe(true); + }); + + it('shows the disabled "Download" button in the actions menu for a job that is not done', async () => { + const [jobJson] = mockJobs; + jobUnderTest = new Job(jobJson); + const { actions } = testBed; + + await actions.flyout.open(jobUnderTest.id); + actions.flyout.openActionsMenu(); + expect(actions.flyout.findDownloadButton().props().disabled).toBe(true); + }); + + it('shows the enabled "Download" button in the actions menu for a job is done', async () => { + const [, , jobJson] = mockJobs; + jobUnderTest = new Job(jobJson); + const { actions } = testBed; + + await actions.flyout.open(jobUnderTest.id); + actions.flyout.openActionsMenu(); + expect(actions.flyout.findDownloadButton().props().disabled).toBe(false); + }); + }); + describe('ILM policy', () => { let httpService: TestDependencies['http']; let urlService: TestDependencies['urlService']; diff --git a/x-pack/plugins/reporting/public/management/report_listing.tsx b/x-pack/plugins/reporting/public/management/report_listing.tsx index 2fb4f1cbc2028..f1f4a82fa5648 100644 --- a/x-pack/plugins/reporting/public/management/report_listing.tsx +++ b/x-pack/plugins/reporting/public/management/report_listing.tsx @@ -21,7 +21,7 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { Component, default as React, Fragment } from 'react'; import { Subscription } from 'rxjs'; import { ILicense } from '../../../licensing/public'; -import { REPORT_TABLE_ID, REPORT_TABLE_ROW_ID, JOB_STATUSES } from '../../common/constants'; +import { REPORT_TABLE_ID, REPORT_TABLE_ROW_ID } from '../../common/constants'; import { prettyPrintJobType } from '../../common/job_utils'; import { Poller } from '../../common/poller'; import { durationToNumber } from '../../common/schema_utils'; @@ -31,7 +31,6 @@ import { checkLicense } from '../lib/license_check'; import { useInternalApiClient } from '../lib/reporting_api_client'; import { useKibana } from '../shared_imports'; import { ListingProps as Props } from './'; -import { PDF_JOB_TYPE_V2, PNG_JOB_TYPE_V2 } from '../../common/constants'; import { IlmPolicyLink, MigrateIlmPolicyCallOut, @@ -322,7 +321,10 @@ class ReportListingUi extends Component { render: (objectTitle: string, job) => { return (
- this.setState({ selectedJob: job })}> + this.setState({ selectedJob: job })} + > {objectTitle || i18n.translate('xpack.reporting.listing.table.noTitleLabel', { defaultMessage: 'Untitled', @@ -400,8 +402,7 @@ class ReportListingUi extends Component { defaultMessage: 'Download this report in a new tab.', }), onClick: (job) => this.props.apiClient.downloadReport(job.id), - enabled: (job) => - job.status === JOB_STATUSES.COMPLETED || job.status === JOB_STATUSES.WARNINGS, + enabled: (job) => job.isDownloadReady, }, { name: i18n.translate( @@ -422,19 +423,16 @@ class ReportListingUi extends Component { }, { name: i18n.translate('xpack.reporting.listing.table.openInKibanaAppLabel', { - defaultMessage: 'Open in Kibana App', + defaultMessage: 'Open in Kibana', }), 'data-test-subj': 'reportOpenInKibanaApp', description: i18n.translate( 'xpack.reporting.listing.table.openInKibanaAppDescription', { - defaultMessage: 'Open the Kibana App where this report was generated.', + defaultMessage: 'Open the Kibana app where this report was generated.', } ), - available: (job) => - [PDF_JOB_TYPE_V2, PNG_JOB_TYPE_V2].some( - (linkableJobType) => linkableJobType === job.jobtype - ), + available: (job) => job.canLinkToKibanaApp, type: 'icon', icon: 'popout', onClick: (job) => { diff --git a/x-pack/plugins/reporting/public/types.ts b/x-pack/plugins/reporting/public/types.ts index cb1344bb982ec..25b7738ff1981 100644 --- a/x-pack/plugins/reporting/public/types.ts +++ b/x-pack/plugins/reporting/public/types.ts @@ -5,9 +5,10 @@ * 2.0. */ -import type { HttpSetup, ApplicationStart } from 'src/core/public'; +import type { HttpSetup, ApplicationStart, CoreSetup } from 'src/core/public'; export interface KibanaContext { http: HttpSetup; application: ApplicationStart; + uiSettings: CoreSetup['uiSettings']; } diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index b821888f0e397..923a6b98cc5ab 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -19991,7 +19991,6 @@ "xpack.reporting.jobStatusDetail.deprecatedText": "これは廃止予定のエクスポートタイプです。将来のバージョンのKibanaとの互換性のためには、このレポートの自動化を再作成する必要があります。", "xpack.reporting.jobStatusDetail.errorText": "エラー詳細についてはレポート情報を参照してください。", "xpack.reporting.jobStatusDetail.pendingStatusReachedText": "ジョブの処理を待機しています。", - "xpack.reporting.jobStatusDetail.statusTimestampText": "{statusTimestamp} 時点で {statusLabel}", "xpack.reporting.jobStatusDetail.warningsText": "警告についてはレポート情報を参照してください。", "xpack.reporting.jobStatuses.completedText": "完了", "xpack.reporting.jobStatuses.failedText": "失敗", @@ -20024,16 +20023,11 @@ "xpack.reporting.listing.infoPanel.completedAtInfo": "完了日時", "xpack.reporting.listing.infoPanel.contentTypeInfo": "コンテンツタイプ", "xpack.reporting.listing.infoPanel.createdAtInfo": "作成日時:", - "xpack.reporting.listing.infoPanel.dimensionsInfo": "次元", - "xpack.reporting.listing.infoPanel.exportTypeInfo": "エクスポートタイプ", - "xpack.reporting.listing.infoPanel.layoutInfo": "レイアウト", - "xpack.reporting.listing.infoPanel.maxAttemptsInfo": "最大試行回数", "xpack.reporting.listing.infoPanel.processedByInfo": "処理方法", "xpack.reporting.listing.infoPanel.sizeInfo": "サイズ(バイト)", "xpack.reporting.listing.infoPanel.startedAtInfo": "開始日時", "xpack.reporting.listing.infoPanel.statusInfo": "ステータス", "xpack.reporting.listing.infoPanel.timeoutInfo": "タイムアウト(ms)", - "xpack.reporting.listing.infoPanel.titleInfo": "タイトル", "xpack.reporting.listing.infoPanel.tzInfo": "タイムゾーン", "xpack.reporting.listing.reports.ilmPolicyLinkText": "レポートILMポリシーを編集", "xpack.reporting.listing.reports.subtitle": "Kibanaアプリケーションで生成されたレポートを取得します。", @@ -20048,8 +20042,6 @@ "xpack.reporting.listing.table.deleteNumConfirmTitle": "{num} 件のレポートを削除しますか?", "xpack.reporting.listing.table.loadingReportsDescription": "レポートを読み込み中です", "xpack.reporting.listing.table.noCreatedReportsDescription": "レポートが作成されていません", - "xpack.reporting.listing.table.reportCalloutExportTypeDeprecated": "{jobtype}(廃止予定)", - "xpack.reporting.listing.table.reportCalloutTitle": "レポート情報", "xpack.reporting.listing.table.reportInfoAndErrorButtonTooltip": "レポート情報とエラーメッセージを参照してください。", "xpack.reporting.listing.table.reportInfoAndWarningsButtonTooltip": "レポート情報と警告を参照してください。", "xpack.reporting.listing.table.reportInfoButtonTooltip": "レポート情報を参照してください。", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index d3b1cc495da47..47440784584dd 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -20283,7 +20283,6 @@ "xpack.reporting.jobStatusDetail.deprecatedText": "这是已弃用的导出类型。此报告的自动化将需要重新创建,才能与未来版本的 Kibana 兼容。", "xpack.reporting.jobStatusDetail.errorText": "查看报告信息以了解错误详情。", "xpack.reporting.jobStatusDetail.pendingStatusReachedText": "正在等待处理作业。", - "xpack.reporting.jobStatusDetail.statusTimestampText": "{statusTimestamp} 时为 {statusLabel}", "xpack.reporting.jobStatusDetail.warningsText": "查看报告信息以了解警告。", "xpack.reporting.jobStatuses.completedText": "已完成", "xpack.reporting.jobStatuses.failedText": "失败", @@ -20316,16 +20315,11 @@ "xpack.reporting.listing.infoPanel.completedAtInfo": "完成时间", "xpack.reporting.listing.infoPanel.contentTypeInfo": "内容类型", "xpack.reporting.listing.infoPanel.createdAtInfo": "创建于", - "xpack.reporting.listing.infoPanel.dimensionsInfo": "维度数", - "xpack.reporting.listing.infoPanel.exportTypeInfo": "导出类型", - "xpack.reporting.listing.infoPanel.layoutInfo": "布局", - "xpack.reporting.listing.infoPanel.maxAttemptsInfo": "最大尝试次数", "xpack.reporting.listing.infoPanel.processedByInfo": "处理者", "xpack.reporting.listing.infoPanel.sizeInfo": "大小(字节)", "xpack.reporting.listing.infoPanel.startedAtInfo": "启动时间", "xpack.reporting.listing.infoPanel.statusInfo": "状态", "xpack.reporting.listing.infoPanel.timeoutInfo": "超时", - "xpack.reporting.listing.infoPanel.titleInfo": "标题", "xpack.reporting.listing.infoPanel.tzInfo": "时区", "xpack.reporting.listing.reports.ilmPolicyLinkText": "编辑报告 ILM 策略", "xpack.reporting.listing.reports.subtitle": "获取在 Kibana 应用程序中生成的报告。", @@ -20341,8 +20335,6 @@ "xpack.reporting.listing.table.deleteReportButton": "删除{num, plural, other {报告} }", "xpack.reporting.listing.table.loadingReportsDescription": "正在载入报告", "xpack.reporting.listing.table.noCreatedReportsDescription": "未创建任何报告", - "xpack.reporting.listing.table.reportCalloutExportTypeDeprecated": "{jobtype}(已弃用)", - "xpack.reporting.listing.table.reportCalloutTitle": "报告信息", "xpack.reporting.listing.table.reportInfoAndErrorButtonTooltip": "查看报告信息和错误消息。", "xpack.reporting.listing.table.reportInfoAndWarningsButtonTooltip": "查看报告信息和警告。", "xpack.reporting.listing.table.reportInfoButtonTooltip": "查看报告信息。",