Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
221 changes: 0 additions & 221 deletions x-pack/plugins/canvas/i18n/components.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1166,12 +1166,6 @@ export const ComponentStrings = {
description: 'This is referring to the dimensions of U.S. standard letter paper.',
}),
},
WorkpadCreate: {
getWorkpadCreateButtonLabel: () =>
i18n.translate('xpack.canvas.workpadCreate.createButtonLabel', {
defaultMessage: 'Create workpad',
}),
},
WorkpadHeader: {
getAddElementButtonLabel: () =>
i18n.translate('xpack.canvas.workpadHeader.addElementButtonLabel', {
Expand Down Expand Up @@ -1546,219 +1540,4 @@ export const ComponentStrings = {
defaultMessage: 'Reset',
}),
},
WorkpadLoader: {
getClonedWorkpadName: (workpadName: string) =>
i18n.translate('xpack.canvas.workpadLoader.clonedWorkpadName', {
defaultMessage: 'Copy of {workpadName}',
values: {
workpadName,
},
description:
'This suffix is added to the end of the name of a cloned workpad to indicate that this ' +
'new workpad is a copy of the original workpad. Example: "Copy of Sales Pitch"',
}),
getCloneToolTip: () =>
i18n.translate('xpack.canvas.workpadLoader.cloneTooltip', {
defaultMessage: 'Clone workpad',
}),
getCreateWorkpadLoadingDescription: () =>
i18n.translate('xpack.canvas.workpadLoader.createWorkpadLoadingDescription', {
defaultMessage: 'Creating workpad...',
description:
'This message appears while the user is waiting for a new workpad to be created',
}),
getDeleteButtonAriaLabel: (numberOfWorkpads: number) =>
i18n.translate('xpack.canvas.workpadLoader.deleteButtonAriaLabel', {
defaultMessage: 'Delete {numberOfWorkpads} workpads',
values: {
numberOfWorkpads,
},
}),
getDeleteButtonLabel: (numberOfWorkpads: number) =>
i18n.translate('xpack.canvas.workpadLoader.deleteButtonLabel', {
defaultMessage: 'Delete ({numberOfWorkpads})',
values: {
numberOfWorkpads,
},
}),
getDeleteModalConfirmButtonLabel: () =>
i18n.translate('xpack.canvas.workpadLoader.deleteModalConfirmButtonLabel', {
defaultMessage: 'Delete',
}),
getDeleteModalDescription: () =>
i18n.translate('xpack.canvas.workpadLoader.deleteModalDescription', {
defaultMessage: `You can't recover deleted workpads.`,
}),
getDeleteMultipleWorkpadModalTitle: (numberOfWorkpads: string) =>
i18n.translate('xpack.canvas.workpadLoader.deleteMultipleWorkpadsModalTitle', {
defaultMessage: 'Delete {numberOfWorkpads} workpads?',
values: {
numberOfWorkpads,
},
}),
getDeleteSingleWorkpadModalTitle: (workpadName: string) =>
i18n.translate('xpack.canvas.workpadLoader.deleteSingleWorkpadModalTitle', {
defaultMessage: `Delete workpad '{workpadName}'?`,
values: {
workpadName,
},
}),
getEmptyPromptGettingStartedDescription: () =>
i18n.translate('xpack.canvas.workpadLoader.emptyPromptGettingStartedDescription', {
defaultMessage:
'Create a new workpad, start from a template, or import a workpad {JSON} file by dropping it here.',
values: {
JSON,
},
}),
getEmptyPromptNewUserDescription: () =>
i18n.translate('xpack.canvas.workpadLoader.emptyPromptNewUserDescription', {
defaultMessage: 'New to {CANVAS}?',
values: {
CANVAS,
},
}),
getEmptyPromptTitle: () =>
i18n.translate('xpack.canvas.workpadLoader.emptyPromptTitle', {
defaultMessage: 'Add your first workpad',
}),
getExportButtonAriaLabel: (numberOfWorkpads: number) =>
i18n.translate('xpack.canvas.workpadLoader.exportButtonAriaLabel', {
defaultMessage: 'Export {numberOfWorkpads} workpads',
values: {
numberOfWorkpads,
},
}),
getExportButtonLabel: (numberOfWorkpads: number) =>
i18n.translate('xpack.canvas.workpadLoader.exportButtonLabel', {
defaultMessage: 'Export ({numberOfWorkpads})',
values: {
numberOfWorkpads,
},
}),
getExportToolTip: () =>
i18n.translate('xpack.canvas.workpadLoader.exportTooltip', {
defaultMessage: 'Export workpad',
}),
getFetchLoadingDescription: () =>
i18n.translate('xpack.canvas.workpadLoader.fetchLoadingDescription', {
defaultMessage: 'Fetching workpads...',
description:
'This message appears while the user is waiting for their list of workpads to load',
}),
getFilePickerPlaceholder: () =>
i18n.translate('xpack.canvas.workpadLoader.filePickerPlaceholder', {
defaultMessage: 'Import workpad {JSON} file',
values: {
JSON,
},
}),
getLoadWorkpadArialLabel: (workpadName: string) =>
i18n.translate('xpack.canvas.workpadLoader.loadWorkpadArialLabel', {
defaultMessage: `Load workpad '{workpadName}'`,
values: {
workpadName,
},
}),
getNoPermissionToCloneToolTip: () =>
i18n.translate('xpack.canvas.workpadLoader.noPermissionToCloneToolTip', {
defaultMessage: `You don't have permission to clone workpads`,
}),
getNoPermissionToCreateToolTip: () =>
i18n.translate('xpack.canvas.workpadLoader.noPermissionToCreateToolTip', {
defaultMessage: `You don't have permission to create workpads`,
}),
getNoPermissionToDeleteToolTip: () =>
i18n.translate('xpack.canvas.workpadLoader.noPermissionToDeleteToolTip', {
defaultMessage: `You don't have permission to delete workpads`,
}),
getNoPermissionToUploadToolTip: () =>
i18n.translate('xpack.canvas.workpadLoader.noPermissionToUploadToolTip', {
defaultMessage: `You don't have permission to upload workpads`,
}),
getSampleDataLinkLabel: () =>
i18n.translate('xpack.canvas.workpadLoader.sampleDataLinkLabel', {
defaultMessage: 'Add your first workpad',
}),
getTableCreatedColumnTitle: () =>
i18n.translate('xpack.canvas.workpadLoader.table.createdColumnTitle', {
defaultMessage: 'Created',
description: 'This column in the table contains the date/time the workpad was created.',
}),
getTableNameColumnTitle: () =>
i18n.translate('xpack.canvas.workpadLoader.table.nameColumnTitle', {
defaultMessage: 'Workpad name',
}),
getTableUpdatedColumnTitle: () =>
i18n.translate('xpack.canvas.workpadLoader.table.updatedColumnTitle', {
defaultMessage: 'Updated',
description:
'This column in the table contains the date/time the workpad was last updated.',
}),
getTableActionsColumnTitle: () =>
i18n.translate('xpack.canvas.workpadLoader.table.actionsColumnTitle', {
defaultMessage: 'Actions',
description:
'This column in the table contains the actions that can be taken on a workpad.',
}),
},
WorkpadManager: {
getModalTitle: () =>
i18n.translate('xpack.canvas.workpadManager.modalTitle', {
defaultMessage: '{CANVAS} workpads',
values: {
CANVAS,
},
}),
getMyWorkpadsTabLabel: () =>
i18n.translate('xpack.canvas.workpadManager.myWorkpadsTabLabel', {
defaultMessage: 'My workpads',
}),
getWorkpadTemplatesTabLabel: () =>
i18n.translate('xpack.canvas.workpadManager.workpadTemplatesTabLabel', {
defaultMessage: 'Templates',
description: 'The label for the tab that displays a list of designed workpad templates.',
}),
},
WorkpadSearch: {
getWorkpadSearchPlaceholder: () =>
i18n.translate('xpack.canvas.workpadSearch.searchPlaceholder', {
defaultMessage: 'Find workpad',
}),
},
WorkpadTemplates: {
getCloneTemplateLinkAriaLabel: (templateName: string) =>
i18n.translate('xpack.canvas.workpadTemplate.cloneTemplateLinkAriaLabel', {
defaultMessage: `Clone workpad template '{templateName}'`,
values: {
templateName,
},
}),
getTableDescriptionColumnTitle: () =>
i18n.translate('xpack.canvas.workpadTemplates.table.descriptionColumnTitle', {
defaultMessage: 'Description',
}),
getTableNameColumnTitle: () =>
i18n.translate('xpack.canvas.workpadTemplates.table.nameColumnTitle', {
defaultMessage: 'Template name',
}),
getTableTagsColumnTitle: () =>
i18n.translate('xpack.canvas.workpadTemplates.table.tagsColumnTitle', {
defaultMessage: 'Tags',
description:
'This column contains relevant tags that indicate what type of template ' +
'is displayed. For example: "report", "presentation", etc.',
}),
getTemplateSearchPlaceholder: () =>
i18n.translate('xpack.canvas.workpadTemplate.searchPlaceholder', {
defaultMessage: 'Find template',
}),
getCreatingTemplateLabel: (templateName: string) =>
i18n.translate('xpack.canvas.workpadTemplate.creatingTemplateLabel', {
defaultMessage: `Creating from template '{templateName}'`,
values: {
templateName,
},
}),
},
};
53 changes: 4 additions & 49 deletions x-pack/plugins/canvas/i18n/errors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
*/

import { i18n } from '@kbn/i18n';
import { CANVAS, JSON } from './constants';

export const ErrorStrings = {
actionsElements: {
Expand Down Expand Up @@ -93,54 +92,10 @@ export const ErrorStrings = {
},
}),
},
WorkpadFileUpload: {
getAcceptJSONOnlyErrorMessage: () =>
i18n.translate('xpack.canvas.error.workpadUpload.acceptJSONOnlyErrorMessage', {
defaultMessage: 'Only {JSON} files are accepted',
values: {
JSON,
},
}),
getFileUploadFailureWithFileNameErrorMessage: (fileName: string) =>
i18n.translate('xpack.canvas.errors.workpadUpload.fileUploadFileWithFileNameErrorMessage', {
defaultMessage: `Couldn't upload '{fileName}'`,
values: {
fileName,
},
}),
getFileUploadFailureWithoutFileNameErrorMessage: () =>
i18n.translate(
'xpack.canvas.error.workpadUpload.fileUploadFailureWithoutFileNameErrorMessage',
{
defaultMessage: `Couldn't upload file`,
}
),
getMissingPropertiesErrorMessage: () =>
i18n.translate('xpack.canvas.error.workpadUpload.missingPropertiesErrorMessage', {
defaultMessage:
'Some properties required for a {CANVAS} workpad are missing. Edit your {JSON} file to provide the correct property values, and try again.',
values: {
CANVAS,
JSON,
},
}),
},
WorkpadLoader: {
getCloneFailureErrorMessage: () =>
i18n.translate('xpack.canvas.error.workpadLoader.cloneFailureErrorMessage', {
defaultMessage: `Couldn't clone workpad`,
}),
getDeleteFailureErrorMessage: () =>
i18n.translate('xpack.canvas.error.workpadLoader.deleteFailureErrorMessage', {
defaultMessage: `Couldn't delete all workpads`,
}),
getFindFailureErrorMessage: () =>
i18n.translate('xpack.canvas.error.workpadLoader.findFailureErrorMessage', {
defaultMessage: `Couldn't find workpad`,
}),
getUploadFailureErrorMessage: () =>
i18n.translate('xpack.canvas.error.workpadLoader.uploadFailureErrorMessage', {
defaultMessage: `Couldn't upload workpad`,
WorkpadDropzone: {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move to component

getTooManyFilesErrorMessage: () =>
i18n.translate('xpack.canvas.error.workpadDropzone.tooManyFilesErrorMessage', {
defaultMessage: 'One one file can be uploaded at a time',
}),
},
workpadRoutes: {
Expand Down
67 changes: 67 additions & 0 deletions x-pack/plugins/canvas/public/components/home/home.component.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/

import React, { useState } from 'react';
import { i18n } from '@kbn/i18n';
import { KibanaPageTemplate } from '../../../../../../src/plugins/kibana_react/public';
import { withSuspense } from '../../../../../../src/plugins/presentation_util/public';

import { WorkpadCreate } from './workpad_create';
import { LazyWorkpadTemplates } from './workpad_templates';
import { LazyMyWorkpads } from './my_workpads';

export type HomePageTab = 'workpads' | 'templates';

export interface Props {
activeTab?: HomePageTab;
}

const WorkpadTemplates = withSuspense(LazyWorkpadTemplates);
const MyWorkpads = withSuspense(LazyMyWorkpads);

export const Home = ({ activeTab = 'workpads' }: Props) => {
const [tab, setTab] = useState(activeTab);

return (
<KibanaPageTemplate
pageHeader={{
pageTitle: 'Canvas',
rightSideItems: [<WorkpadCreate />],
bottomBorder: true,
tabs: [
{
label: strings.getMyWorkpadsTabLabel(),
id: 'myWorkpads',
isSelected: tab === 'workpads',
onClick: () => setTab('workpads'),
},
{
label: strings.getWorkpadTemplatesTabLabel(),
id: 'workpadTemplates',
'data-test-subj': 'workpadTemplates',
isSelected: tab === 'templates',
onClick: () => setTab('templates'),
},
],
}}
>
{tab === 'workpads' ? <MyWorkpads /> : <WorkpadTemplates />}
</KibanaPageTemplate>
);
};

const strings = {
getMyWorkpadsTabLabel: () =>
i18n.translate('xpack.canvas.home.myWorkpadsTabLabel', {
defaultMessage: 'My workpads',
}),
getWorkpadTemplatesTabLabel: () =>
i18n.translate('xpack.canvas.home.workpadTemplatesTabLabel', {
defaultMessage: 'Templates',
description: 'The label for the tab that displays a list of designed workpad templates.',
}),
};
30 changes: 30 additions & 0 deletions x-pack/plugins/canvas/public/components/home/home.stories.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/

import React from 'react';

import {
reduxDecorator,
getAddonPanelParameters,
servicesContextDecorator,
getDisableStoryshotsParameter,
} from '../../../storybook';

import { Home } from './home.component';

export default {
title: 'Home/Home Page',
argTypes: {},
decorators: [reduxDecorator()],
parameters: { ...getAddonPanelParameters(), ...getDisableStoryshotsParameter() },
};

export const NoContent = () => <Home />;
export const HasContent = () => <Home />;

NoContent.decorators = [servicesContextDecorator()];
HasContent.decorators = [servicesContextDecorator({ findWorkpads: 5, findTemplates: true })];
Loading