Skip to content

Commit

Permalink
Merge branch 'main' into remove-workspace-name-populate-after-use-cas…
Browse files Browse the repository at this point in the history
…e-select
  • Loading branch information
wanglam authored Oct 4, 2024
2 parents d472f43 + 9da5f9b commit 0957170
Show file tree
Hide file tree
Showing 45 changed files with 438 additions and 358 deletions.
2 changes: 2 additions & 0 deletions changelogs/fragments/8394.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
fix:
- Fix dynamic and correct unprefixed and duplicate i18n identifiers in dataSourceManagement plugin ([#8394](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/8394))
2 changes: 2 additions & 0 deletions changelogs/fragments/8402.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
fix:
- Fix incorrect use of TopNavControlDescriptionData in dataSourceManagement plugin ([#8402](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/8402))
62 changes: 38 additions & 24 deletions src/plugins/data_source_management/public/components/breadcrumbs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,24 @@ export function getCreateBreadcrumbs() {
},
];
}

export function getCreateOpenSearchDataSourceBreadcrumbs(useNewUX: boolean) {
return [
...getCreateBreadcrumbs(),
{
text: i18n.translate(
'dataSourcesManagement.dataSources.createOpenSearchDataSourceBreadcrumbs',
{
defaultMessage: useNewUX ? 'Connect OpenSearch Cluster' : 'Open Search',
}
),
text: useNewUX
? i18n.translate(
'dataSourcesManagement.dataSources.createOpenSearchDataSourceBreadcrumbs',
{
defaultMessage: 'Connect OpenSearch Cluster',
}
)
: i18n.translate(
'dataSourcesManagement.legacyUX.dataSources.createOpenSearchDataSourceBreadcrumbs',
{
defaultMessage: 'Open Search',
}
),
href: `/configure/OpenSearch`,
},
];
Expand All @@ -47,12 +55,16 @@ export function getCreateAmazonS3DataSourceBreadcrumbs(useNewUX: boolean) {
return [
...getCreateBreadcrumbs(),
{
text: i18n.translate(
'dataSourcesManagement.dataSources.createAmazonS3DataSourceBreadcrumbs',
{
defaultMessage: useNewUX ? 'Connect Amazon S3' : 'Amazon S3',
}
),
text: useNewUX
? i18n.translate('dataSourcesManagement.dataSources.createAmazonS3DataSourceBreadcrumbs', {
defaultMessage: 'Connect Amazon S3',
})
: i18n.translate(
'dataSourcesManagement.legacyUX.dataSources.createAmazonS3DataSourceBreadcrumbs',
{
defaultMessage: 'Amazon S3',
}
),
href: `/configure/AmazonS3AWSGlue`,
},
];
Expand All @@ -62,12 +74,19 @@ export function getCreatePrometheusDataSourceBreadcrumbs(useNewUX: boolean) {
return [
...getCreateBreadcrumbs(),
{
text: i18n.translate(
'dataSourcesManagement.dataSources.createPrometheusDataSourceBreadcrumbs',
{
defaultMessage: useNewUX ? 'Connect Prometheus' : 'Prometheus',
}
),
text: useNewUX
? i18n.translate(
'dataSourcesManagement.dataSources.createPrometheusDataSourceBreadcrumbs',
{
defaultMessage: 'Connect Prometheus',
}
)
: i18n.translate(
'dataSourcesManagement.legacyUX.dataSources.createPrometheusDataSourceBreadcrumbs',
{
defaultMessage: 'Prometheus',
}
),
href: `/configure/Prometheus`,
},
];
Expand All @@ -77,12 +96,7 @@ export function getManageDirectQueryDataSourceBreadcrumbs(directQueryDatasourceN
return [
...getListBreadcrumbs(),
{
text: i18n.translate(
'dataSourcesManagement.dataSources.manageDirectQueryDataSourceBreadcrumbs',
{
defaultMessage: directQueryDatasourceName,
}
),
text: directQueryDatasourceName,
href: `/manage/${directQueryDatasourceName}`,
},
];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,15 @@

import { i18n } from '@osd/i18n';
import { DataSourceOption } from './data_source_menu/types';
import { DatasourceType } from '../types';
import { DatasourceType } from '../../framework/types';

export const LocalCluster: DataSourceOption = {
label: i18n.translate('dataSource.localCluster', {
label: i18n.translate('dataSourcesManagement.localCluster', {
defaultMessage: 'Local cluster',
}),
id: '',
};

export const NO_DATASOURCES_CONNECTED_MESSAGE = 'No data sources connected yet.';
export const CONNECT_DATASOURCES_MESSAGE = 'Connect your data sources to get started.';
export const NO_COMPATIBLE_DATASOURCES_MESSAGE = 'No compatible data sources are available.';
export const ADD_COMPATIBLE_DATASOURCES_MESSAGE = 'Add a compatible data source.';

export const OPENSEARCH_DOCUMENTATION_URL =
'https://opensearch.org/docs/latest/dashboards/management/data-sources/';

Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,17 @@ export const CreateButton = ({ history, isEmptyState, dataTestSubj, featureFlagS
fill={isEmptyState ? false : true}
onClick={() => history.push('/create')}
>
<FormattedMessage
id="dataSourcesManagement.dataSourceListing.createButton"
defaultMessage={
featureFlagStatus ? 'Create data source connection' : 'Create direct query connection'
}
/>
{featureFlagStatus ? (
<FormattedMessage
id="dataSourcesManagement.dataSourceListing.createDataSourceButton"
defaultMessage="Create data source connection"
/>
) : (
<FormattedMessage
id="dataSourcesManagement.dataSourceListing.createDirectQueryButton"
defaultMessage="Create direct query connection"
/>
)}
</EuiSmallButton>
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ import {
getDefaultAuthMethod,
isValidUrl,
} from '../../../utils';
import { DataSourceOptionalLabelSuffix } from '../../../data_source_optional_label_suffix';

export interface CreateDataSourceProps {
useNewUX: boolean;
Expand Down Expand Up @@ -399,36 +400,6 @@ export class CreateDataSourceForm extends React.Component<
);
};

/* Render Section header*/
renderSectionHeader = (i18nId: string, defaultMessage: string) => {
return (
<>
<EuiText grow={false} size="s">
<h2>
<FormattedMessage id={i18nId} defaultMessage={defaultMessage} />
</h2>
</EuiText>
</>
);
};
/* Render field label with Optional text*/
renderFieldLabelAsOptional = (i18nId: string, defaultMessage: string) => {
return (
<>
{<FormattedMessage id={i18nId} defaultMessage={defaultMessage} />}{' '}
<i style={{ fontWeight: 'normal' }}>
-{' '}
{
<FormattedMessage
id="dataSourcesManagement.createDataSource.optionalText"
defaultMessage="optional"
/>
}
</i>
</>
);
};

/* Render create new credentials*/
renderCreateNewCredentialsForm = (type: AuthType) => {
switch (type) {
Expand Down Expand Up @@ -581,10 +552,14 @@ export class CreateDataSourceForm extends React.Component<
{this.renderHeader()}
<EuiForm data-test-subj="data-source-creation">
{/* Endpoint section */}
{this.renderSectionHeader(
'dataSourceManagement.connectToDataSource.connectionDetails',
'Connection Details'
)}
<EuiText grow={false} size="s">
<h2>
<FormattedMessage
id="dataSourcesManagement.connectToDataSource.connectionDetails"
defaultMessage="Connection Details"
/>
</h2>
</EuiText>
<EuiSpacer size="s" />

{/* Title */}
Expand Down Expand Up @@ -613,10 +588,13 @@ export class CreateDataSourceForm extends React.Component<

{/* Description */}
<EuiCompressedFormRow
label={this.renderFieldLabelAsOptional(
'dataSourceManagement.createDataSource.description',
'Description'
)}
label={
<FormattedMessage
id="dataSourcesManagement.createDataSource.descriptionOptional"
defaultMessage="Description {optionalLabel}"
values={{ optionalLabel: <DataSourceOptionalLabelSuffix /> }}
/>
}
>
<EuiCompressedFieldText
name="dataSourceDescription"
Expand Down Expand Up @@ -660,32 +638,31 @@ export class CreateDataSourceForm extends React.Component<

<EuiSpacer size="xl" />

{this.renderSectionHeader(
'dataSourceManagement.connectToDataSource.authenticationHeader',
'Authentication Method'
)}
<EuiText grow={false} size="s">
<h2>
<FormattedMessage
id="dataSourcesManagement.connectToDataSource.authenticationHeader"
defaultMessage="Authentication Method"
/>
</h2>
</EuiText>

<EuiSpacer size="m" />

<EuiCompressedFormRow>
<EuiText size="s">
<FormattedMessage
id="dataSourcesManagement.createDataSource.authenticationMethodDescription"
defaultMessage="Enter the authentication details to access the endpoint."
/>
{this.isNoAuthOptionEnabled && (
{this.isNoAuthOptionEnabled ? (
<FormattedMessage
id="dataSourcesManagement.createDataSource.authenticationMethodDescriptionWithNoAuth"
defaultMessage="Enter the authentication details to access the endpoint. If no authentication is required, select {buttonLabel}."
values={{ buttonLabel: <b>No authentication</b> }}
/>
) : (
<FormattedMessage
id="dataSourcesManagement.createDataSource.authenticationMethodDescription"
defaultMessage=" If no authentication is required, select "
defaultMessage="Enter the authentication details to access the endpoint."
/>
)}
{this.isNoAuthOptionEnabled && (
<b>
<FormattedMessage
id="dataSourcesManagement.createDataSource.noAuthentication"
defaultMessage="No authentication"
/>
</b>
)}
</EuiText>
</EuiCompressedFormRow>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import { useOpenSearchDashboards } from '../../../../opensearch_dashboards_react
import {
DataSourceAttributes,
DataSourceManagementContext,
DataSourceManagementToastMessageItem,
DataSourceTableItem,
ToastMessageItem,
} from '../../types';
import { getCreateOpenSearchDataSourceBreadcrumbs } from '../breadcrumbs';
import { CreateDataSourceForm } from './components/create_form';
Expand Down Expand Up @@ -65,8 +65,9 @@ export const CreateDataSourceWizard: React.FunctionComponent<CreateDataSourceWiz
}
} catch (e) {
handleDisplayToastMessage({
id: 'dataSourcesManagement.createDataSource.existingDatasourceNames',
defaultMessage: 'Unable to fetch some resources.',
message: i18n.translate('dataSourcesManagement.createDataSource.existingDatasourceNames', {
defaultMessage: 'Unable to fetch some resources.',
}),
});
props.history.push('');
} finally {
Expand All @@ -90,8 +91,9 @@ export const CreateDataSourceWizard: React.FunctionComponent<CreateDataSourceWiz
} catch (e) {
setIsLoading(false);
handleDisplayToastMessage({
id: 'dataSourcesManagement.createDataSource.createDataSourceFailMsg',
defaultMessage: 'Creation of the Data Source failed with some errors.',
message: i18n.translate('dataSourcesManagement.createDataSource.createDataSourceFailMsg', {
defaultMessage: 'Creation of the Data Source failed with some errors.',
}),
});
}
};
Expand All @@ -102,27 +104,32 @@ export const CreateDataSourceWizard: React.FunctionComponent<CreateDataSourceWiz
try {
await testConnection(http, attributes);
handleDisplayToastMessage({
id: 'dataSourcesManagement.createDataSource.testConnectionSuccessMsg',
defaultMessage:
'Connecting to the endpoint using the provided authentication method was successful.',
message: i18n.translate('dataSourcesManagement.createDataSource.testConnectionSuccessMsg', {
defaultMessage:
'Connecting to the endpoint using the provided authentication method was successful.',
}),
success: true,
});
} catch (e) {
handleDisplayToastMessage({
id: 'dataSourcesManagement.createDataSource.testConnectionFailMsg',
defaultMessage:
'Failed Connecting to the endpoint using the provided authentication method.',
message: i18n.translate('dataSourcesManagement.createDataSource.testConnectionFailMsg', {
defaultMessage:
'Failed Connecting to the endpoint using the provided authentication method.',
}),
});
} finally {
setIsLoading(false);
}
};

const handleDisplayToastMessage = ({ id, defaultMessage, success }: ToastMessageItem) => {
const handleDisplayToastMessage = ({
message,
success,
}: DataSourceManagementToastMessageItem) => {
if (success) {
toasts.addSuccess(i18n.translate(id, { defaultMessage }));
toasts.addSuccess(message);
} else {
toasts.addDanger(i18n.translate(id, { defaultMessage }));
toasts.addDanger(message);
}
};

Expand Down
Loading

0 comments on commit 0957170

Please sign in to comment.