Skip to content

Commit

Permalink
Fix missing data view error in the visualization embeddable
Browse files Browse the repository at this point in the history
  • Loading branch information
dokmic committed Nov 4, 2022
1 parent bbaaa30 commit 4da17ef
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,28 +12,25 @@ import React from 'react';
import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app';
import type { ApplicationStart } from '@kbn/core/public';
import { DATA_VIEW_SAVED_OBJECT_TYPE } from '@kbn/data-plugin/common';
import type { ViewMode } from '@kbn/embeddable-plugin/common';
import type { RenderMode } from '@kbn/expressions-plugin/common';

interface VisualizationMissedSavedObjectErrorProps {
savedObjectMeta: {
savedObjectType: typeof DATA_VIEW_SAVED_OBJECT_TYPE | 'search';
savedObjectId?: string;
};
application: ApplicationStart;
viewMode: ViewMode;
message: string;
renderMode: RenderMode;
}

export const VisualizationMissedSavedObjectError = ({
savedObjectMeta,
application,
viewMode,
message,
renderMode,
}: VisualizationMissedSavedObjectErrorProps) => {
const { management: isManagementEnabled } = application.capabilities.navLinks;
const isIndexPatternManagementEnabled = application.capabilities.management.kibana.indexPatterns;
const isEditVisEnabled = application.capabilities.visualize?.save;

return (
<EuiEmptyPrompt
Expand All @@ -59,33 +56,7 @@ export const VisualizationMissedSavedObjectError = ({
</RedirectAppLinks>
) : null
}
body={
<>
<p>
{i18n.translate('visualizations.missedDataView.errorMessage', {
defaultMessage: `Could not find the {type}: {id}`,
values: {
id: savedObjectMeta.savedObjectId ?? '-',
type:
savedObjectMeta.savedObjectType === 'search'
? i18n.translate('visualizations.noSearch.label', {
defaultMessage: 'search',
})
: i18n.translate('visualizations.noDataView.label', {
defaultMessage: 'data view',
}),
},
})}
</p>
{viewMode === 'edit' && renderMode !== 'edit' && isEditVisEnabled ? (
<p>
{i18n.translate('visualizations.missedDataView.editInVisualizeEditor', {
defaultMessage: `Edit in Visualize editor to fix the error`,
})}
</p>
) : null}
</>
}
body={<p>{message}</p>}
/>
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ import {
IContainer,
ReferenceOrValueEmbeddable,
SavedObjectEmbeddableInput,
ViewMode,
} from '@kbn/embeddable-plugin/public';
import {
ExpressionAstExpression,
Expand Down Expand Up @@ -401,6 +400,25 @@ export class VisualizeEmbeddable
this.abortController.abort();
}
this.renderComplete.dispatchError();

if (isFallbackDataView(this.vis.data.indexPattern)) {
error = new Error(
i18n.translate('visualizations.missedDataView.errorMessage', {
defaultMessage: `Could not find the {type}: {id}`,
values: {
id: this.vis.data.indexPattern.id ?? '-',
type: this.vis.data.savedSearchId
? i18n.translate('visualizations.noSearch.label', {
defaultMessage: 'search',
})
: i18n.translate('visualizations.noDataView.label', {
defaultMessage: 'data view',
}),
},
})
);
}

this.updateOutput({
...this.getOutput(),
rendered: true,
Expand Down Expand Up @@ -515,13 +533,12 @@ export class VisualizeEmbeddable
if (isFallbackDataView(this.vis.data.indexPattern)) {
return (
<VisualizationMissedSavedObjectError
viewMode={this.input.viewMode ?? ViewMode.VIEW}
renderMode={this.input.renderMode ?? 'view'}
savedObjectMeta={{
savedObjectId: this.vis.data.indexPattern.id,
savedObjectType: this.vis.data.savedSearchId ? 'search' : DATA_VIEW_SAVED_OBJECT_TYPE,
}}
application={getApplication()}
message={typeof error === 'string' ? error : error.message}
/>
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,15 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {

// wrapping into own describe to make sure new tab is cleaned up even if test failed
// see: https://github.com/elastic/kibana/pull/67280#discussion_r430528122
describe('recreate index pattern link works', () => {
it('recreate index pattern link works', async () => {
describe('when the saved object is missing', () => {
it('shows the missing data view error message', async () => {
await PageObjects.dashboard.gotoDashboardLandingPage();
await PageObjects.dashboard.loadSavedDashboard('dashboard with missing index pattern');
await PageObjects.header.waitUntilLoadingHasFinished();
const embeddableError = await testSubjects.find('embeddableError');
const link = await embeddableError.findByPartialLinkText('click here to re-create it');
const errorMessage = await embeddableError.getVisibleText();

expect(await link.isDisplayed()).to.be(true);
expect(errorMessage).to.contain('Could not find the data view');
});
});
});
Expand Down
1 change: 0 additions & 1 deletion x-pack/plugins/translations/translations/fr-FR.json
Original file line number Diff line number Diff line change
Expand Up @@ -6175,7 +6175,6 @@
"visualizations.listing.table.typeColumnName": "Type",
"visualizations.listingPageTitle": "Bibliothèque Visualize",
"visualizations.missedDataView.dataViewReconfigure": "Recréez-la dans la page de gestion des vues de données.",
"visualizations.missedDataView.editInVisualizeEditor": "Effectuer des modifications dans l'éditeur Visualize pour corriger l'erreur",
"visualizations.newChart.conditionalMessage.advancedSettingsLink": "Paramètres avancés.",
"visualizations.newChart.libraryMode.new": "nouveau",
"visualizations.newChart.libraryMode.old": "âge",
Expand Down
1 change: 0 additions & 1 deletion x-pack/plugins/translations/translations/ja-JP.json
Original file line number Diff line number Diff line change
Expand Up @@ -6169,7 +6169,6 @@
"visualizations.listing.table.typeColumnName": "型",
"visualizations.listingPageTitle": "Visualizeライブラリ",
"visualizations.missedDataView.dataViewReconfigure": "データビュー管理ページで再作成",
"visualizations.missedDataView.editInVisualizeEditor": "Visualizeエディターで編集し、エラーを修正",
"visualizations.newChart.conditionalMessage.advancedSettingsLink": "高度な設定",
"visualizations.newChart.libraryMode.new": "新規",
"visualizations.newChart.libraryMode.old": "古",
Expand Down
1 change: 0 additions & 1 deletion x-pack/plugins/translations/translations/zh-CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -6176,7 +6176,6 @@
"visualizations.listing.table.typeColumnName": "类型",
"visualizations.listingPageTitle": "Visualize 库",
"visualizations.missedDataView.dataViewReconfigure": "在数据视图管理页面中重新创建",
"visualizations.missedDataView.editInVisualizeEditor": "在 Visualize 编辑器中编辑以修复该错误",
"visualizations.newChart.conditionalMessage.advancedSettingsLink": "免费的 API 密钥。",
"visualizations.newChart.libraryMode.new": "新",
"visualizations.newChart.libraryMode.old": "以前",
Expand Down

0 comments on commit 4da17ef

Please sign in to comment.