mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
[Enterprise Search] Rename filtering to sync rules (#146013)
This renames 'Filter(ing) Rules' to Sync rules across the Enterprise Search Content application. Also adds docs links for these rules.
This commit is contained in:
parent
c45f556605
commit
9c6272c1f2
16 changed files with 166 additions and 168 deletions
|
@ -140,6 +140,7 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => {
|
|||
licenseManagement: `${ENTERPRISE_SEARCH_DOCS}license-management.html`,
|
||||
mailService: `${ENTERPRISE_SEARCH_DOCS}mailer-configuration.html`,
|
||||
start: `${ENTERPRISE_SEARCH_DOCS}start.html`,
|
||||
syncRules: `${ENTERPRISE_SEARCH_DOCS}sync-rules.html`,
|
||||
troubleshootSetup: `${ENTERPRISE_SEARCH_DOCS}troubleshoot-setup.html`,
|
||||
usersAccess: `${ENTERPRISE_SEARCH_DOCS}users-access.html`,
|
||||
},
|
||||
|
|
|
@ -125,6 +125,7 @@ export interface DocLinks {
|
|||
readonly licenseManagement: string;
|
||||
readonly mailService: string;
|
||||
readonly start: string;
|
||||
readonly syncRules: string;
|
||||
readonly troubleshootSetup: string;
|
||||
readonly usersAccess: string;
|
||||
};
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
/*
|
||||
* 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 { EuiFlexGroup, EuiFlexItem, EuiButton } from '@elastic/eui';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
|
||||
import { ConnectorFilteringForm } from './connector_filtering_form';
|
||||
|
||||
export const EditFilteringTab: React.FC<{ revertAction: () => void }> = ({
|
||||
children,
|
||||
revertAction,
|
||||
}) => {
|
||||
return (
|
||||
<EuiFlexGroup direction="column">
|
||||
<EuiFlexItem>
|
||||
<EuiFlexGroup justifyContent="flexEnd">
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButton
|
||||
data-telemetry-id="entSearchContent-connector-filtering-editRules-revert"
|
||||
onClick={revertAction}
|
||||
>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.content.index.connector.filtering.flyout.revertButtonTitle',
|
||||
{
|
||||
defaultMessage: 'Revert to active rules',
|
||||
}
|
||||
)}
|
||||
</EuiButton>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
</EuiFlexItem>
|
||||
<EuiFlexItem>
|
||||
<ConnectorFilteringForm>{children}</ConnectorFilteringForm>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
);
|
||||
};
|
|
@ -15,23 +15,23 @@ import { CodeEditor } from '@kbn/kibana-react-plugin/public';
|
|||
|
||||
import { ConnectorFilteringLogic } from './connector_filtering_logic';
|
||||
|
||||
export const AdvancedFilteringRules: React.FC = () => {
|
||||
export const AdvancedSyncRules: React.FC = () => {
|
||||
const { hasJsonValidationError: hasError, localAdvancedSnippet } =
|
||||
useValues(ConnectorFilteringLogic);
|
||||
const { setLocalAdvancedSnippet } = useActions(ConnectorFilteringLogic);
|
||||
return (
|
||||
<EuiFormRow
|
||||
label={i18n.translate(
|
||||
'xpack.enterpriseSearch.content.indices.connector.filtering.advancedRules.title',
|
||||
'xpack.enterpriseSearch.content.indices.connector.syncRules.advancedRules.title',
|
||||
{
|
||||
defaultMessage: 'Advanced filtering rules',
|
||||
defaultMessage: 'Advanced rules',
|
||||
}
|
||||
)}
|
||||
isInvalid={hasError}
|
||||
error={
|
||||
hasError
|
||||
? i18n.translate(
|
||||
'xpack.enterpriseSearch.content.indices.connector.filtering.advancedRules.error',
|
||||
'xpack.enterpriseSearch.content.indices.connector.syncRules.advancedRules.error',
|
||||
{
|
||||
defaultMessage: 'JSON format is invalid',
|
||||
}
|
|
@ -144,7 +144,7 @@ export const ConnectorFilteringLogic = kea<
|
|||
flashSuccessToast(
|
||||
i18n.translate(
|
||||
'xpack.enterpriseSearch.content.index.connector.filtering.successToastRules.title',
|
||||
{ defaultMessage: 'Filtering rules updated' }
|
||||
{ defaultMessage: 'Sync rules updated' }
|
||||
)
|
||||
);
|
||||
},
|
||||
|
@ -161,8 +161,8 @@ export const ConnectorFilteringLogic = kea<
|
|||
draftApiSuccess: () => {
|
||||
flashSuccessToast(
|
||||
i18n.translate(
|
||||
'xpack.enterpriseSearch.content.index.connector.filtering.successToastDraft.title',
|
||||
{ defaultMessage: 'Draft saved' }
|
||||
'xpack.enterpriseSearch.content.index.connector.syncRules.successToastDraft.title',
|
||||
{ defaultMessage: 'Draft rules saved' }
|
||||
)
|
||||
);
|
||||
},
|
|
@ -23,14 +23,16 @@ import {
|
|||
|
||||
import { i18n } from '@kbn/i18n';
|
||||
|
||||
import { docLinks } from '../../../../../shared/doc_links';
|
||||
|
||||
import { FilteringRulesTable } from '../../../shared/filtering_rules_table/filtering_rules_table';
|
||||
import { IndexViewLogic } from '../../index_view_logic';
|
||||
|
||||
import { ConnectorFilteringLogic } from './connector_filtering_logic';
|
||||
import { EditFilteringFlyout } from './edit_filtering_flyout';
|
||||
import { FilteringStateCallouts } from './filtering_callouts';
|
||||
import { EditSyncRulesFlyout } from './edit_sync_rules_flyout';
|
||||
import { SyncRulesStateCallouts } from './sync_rules_callouts';
|
||||
|
||||
export const ConnectorFiltering: React.FC = () => {
|
||||
export const ConnectorSyncRules: React.FC = () => {
|
||||
const { indexName, hasAdvancedFilteringFeature, hasBasicFilteringFeature } =
|
||||
useValues(IndexViewLogic);
|
||||
const { applyDraft, setLocalFilteringRules, setLocalAdvancedSnippet, setIsEditing } =
|
||||
|
@ -41,7 +43,7 @@ export const ConnectorFiltering: React.FC = () => {
|
|||
return (
|
||||
<>
|
||||
{isEditing && (
|
||||
<EditFilteringFlyout
|
||||
<EditSyncRulesFlyout
|
||||
hasAdvancedFilteringFeature={hasAdvancedFilteringFeature}
|
||||
hasBasicFilteringFeature={hasBasicFilteringFeature}
|
||||
revertLocalFilteringRules={() => setLocalFilteringRules(filteringRules)}
|
||||
|
@ -53,7 +55,7 @@ export const ConnectorFiltering: React.FC = () => {
|
|||
<EuiFlexGroup direction="column">
|
||||
{hasDraft && (
|
||||
<EuiFlexItem>
|
||||
<FilteringStateCallouts
|
||||
<SyncRulesStateCallouts
|
||||
applyDraft={applyDraft}
|
||||
editDraft={() => setIsEditing(true)}
|
||||
state={draftState}
|
||||
|
@ -66,15 +68,15 @@ export const ConnectorFiltering: React.FC = () => {
|
|||
<EuiFlexItem>
|
||||
<EuiTitle size="s">
|
||||
<h3>
|
||||
{i18n.translate('xpack.enterpriseSearch.index.connector.filtering.title', {
|
||||
defaultMessage: 'Sync filters ',
|
||||
{i18n.translate('xpack.enterpriseSearch.index.connector.syncRules.title', {
|
||||
defaultMessage: 'Sync rules ',
|
||||
})}
|
||||
</h3>
|
||||
</EuiTitle>
|
||||
<EuiSpacer />
|
||||
<EuiText size="s">
|
||||
<p>
|
||||
{i18n.translate('xpack.enterpriseSearch.index.connector.filtering.description', {
|
||||
{i18n.translate('xpack.enterpriseSearch.index.connector.syncRules.description', {
|
||||
defaultMessage: `Include or exclude high level items, file types and (file or folder) paths to
|
||||
synchronize from {indexName}. Everything is included by default. Each document is
|
||||
tested against the reules below and the first rule that matches will be applied.`,
|
||||
|
@ -84,9 +86,9 @@ export const ConnectorFiltering: React.FC = () => {
|
|||
})}
|
||||
</p>
|
||||
<p>
|
||||
<EuiLink href="TODOTODOTODOTODO" external>
|
||||
<EuiLink href={docLinks.syncRules} external>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.syncFiltersLabel',
|
||||
'xpack.enterpriseSearch.index.connector.syncRules.syncRulesLabel',
|
||||
{
|
||||
defaultMessage: 'Learn more about sync rules',
|
||||
}
|
||||
|
@ -97,21 +99,21 @@ export const ConnectorFiltering: React.FC = () => {
|
|||
</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButton
|
||||
data-telemetry-id="entSearchContent-connector-filtering-editRules-editDraftRules"
|
||||
data-telemetry-id="entSearchContent-connector-syncRules-editRules-editDraftRules"
|
||||
color="primary"
|
||||
onClick={() => setIsEditing(!isEditing)}
|
||||
>
|
||||
{hasDraft
|
||||
? i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.editFilterRulesTitle',
|
||||
'xpack.enterpriseSearch.index.connector.syncRules.editFilterRulesTitle',
|
||||
{
|
||||
defaultMessage: 'Edit filter rules',
|
||||
defaultMessage: 'Edit sync rules',
|
||||
}
|
||||
)
|
||||
: i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.draftNewFilterRulesTitle',
|
||||
'xpack.enterpriseSearch.index.connector.syncRules.draftNewFilterRulesTitle',
|
||||
{
|
||||
defaultMessage: 'Draft new filter rules',
|
||||
defaultMessage: 'Draft new sync rules',
|
||||
}
|
||||
)}
|
||||
</EuiButton>
|
||||
|
@ -126,9 +128,9 @@ export const ConnectorFiltering: React.FC = () => {
|
|||
<EuiTitle size="s">
|
||||
<h3>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.content.index.connector.filtering.basicFiltersTitle',
|
||||
'xpack.enterpriseSearch.content.index.connector.syncRules.basicRulesTitle',
|
||||
{
|
||||
defaultMessage: 'Basic filters',
|
||||
defaultMessage: 'Basic rules',
|
||||
}
|
||||
)}
|
||||
</h3>
|
||||
|
@ -137,7 +139,7 @@ export const ConnectorFiltering: React.FC = () => {
|
|||
<EuiText size="s">
|
||||
<p>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.content.index.connector.filtering.basicFiltersDescription',
|
||||
'xpack.enterpriseSearch.content.index.connector.syncRules.basicRulesDescription',
|
||||
{
|
||||
defaultMessage: 'These filters apply to documents in post-processing.',
|
||||
}
|
||||
|
@ -158,9 +160,9 @@ export const ConnectorFiltering: React.FC = () => {
|
|||
<EuiTitle size="s">
|
||||
<h3>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.content.index.connector.filtering.advancedFiltersTitle',
|
||||
'xpack.enterpriseSearch.content.index.connector.syncRules.advancedRulesTitle',
|
||||
{
|
||||
defaultMessage: 'Advanced filters',
|
||||
defaultMessage: 'Advanced rules',
|
||||
}
|
||||
)}
|
||||
</h3>
|
||||
|
@ -169,16 +171,16 @@ export const ConnectorFiltering: React.FC = () => {
|
|||
<EuiText size="s">
|
||||
<p>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.content.index.connector.filtering.advancedFiltersDescription',
|
||||
'xpack.enterpriseSearch.content.index.connector.syncRules.advancedFiltersDescription',
|
||||
{
|
||||
defaultMessage: 'These filters apply to documents at the data source.',
|
||||
}
|
||||
)}
|
||||
</p>
|
||||
<p>
|
||||
<EuiLink external href="TODOTODOTODODOTO">
|
||||
<EuiLink external href={docLinks.syncRules}>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.content.index.connector.filtering.advancedFiltersLinkTitle',
|
||||
'xpack.enterpriseSearch.content.index.connector.syncRules.advancedFiltersLinkTitle',
|
||||
{
|
||||
defaultMessage: 'Learn more about advanced sync rules.',
|
||||
}
|
|
@ -17,7 +17,7 @@ import { UnsavedChangesPrompt } from '../../../../../shared/unsaved_changes_prom
|
|||
|
||||
import { ConnectorFilteringLogic } from './connector_filtering_logic';
|
||||
|
||||
export const ConnectorFilteringForm: React.FC = ({ children }) => {
|
||||
export const ConnectorSyncRulesForm: React.FC = ({ children }) => {
|
||||
const { saveDraftFilteringRules, setIsEditing } = useActions(ConnectorFilteringLogic);
|
||||
const { hasJsonValidationError, isEditing, isLoading } = useValues(ConnectorFilteringLogic);
|
||||
|
||||
|
@ -26,7 +26,7 @@ export const ConnectorFilteringForm: React.FC = ({ children }) => {
|
|||
<UnsavedChangesPrompt
|
||||
hasUnsavedChanges={isEditing}
|
||||
messageText={i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.unsavedChanges',
|
||||
'xpack.enterpriseSearch.index.connector.syncRules.unsavedChanges',
|
||||
{
|
||||
defaultMessage: 'Your changes have not been saved. Are you sure you want to leave?',
|
||||
}
|
||||
|
@ -40,13 +40,13 @@ export const ConnectorFilteringForm: React.FC = ({ children }) => {
|
|||
{isEditing && (
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonEmpty
|
||||
data-telemetry-id="entSearchContent-connector-filtering-editRules-cancelEditing"
|
||||
data-telemetry-id="entSearchContent-connector-syncRules-editRules-cancelEditing"
|
||||
onClick={() => {
|
||||
setIsEditing(!isEditing);
|
||||
}}
|
||||
>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.cancelEditingFilteringDraft',
|
||||
'xpack.enterpriseSearch.index.connector.syncRules.cancelEditingFilteringDraft',
|
||||
{
|
||||
defaultMessage: 'Cancel',
|
||||
}
|
||||
|
@ -56,13 +56,13 @@ export const ConnectorFilteringForm: React.FC = ({ children }) => {
|
|||
)}
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButton
|
||||
data-telemetry-id="entSearchContent-connector-filtering-editRules-saveAndValidate"
|
||||
data-telemetry-id="entSearchContent-connector-syncRules-editRules-saveAndValidate"
|
||||
disabled={hasJsonValidationError}
|
||||
isLoading={isLoading}
|
||||
onClick={saveDraftFilteringRules}
|
||||
>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.validateDraftTitle',
|
||||
'xpack.enterpriseSearch.index.connector.syncRules.validateDraftTitle',
|
||||
{
|
||||
defaultMessage: 'Save and validate draft',
|
||||
}
|
|
@ -15,12 +15,13 @@ import {
|
|||
EuiText,
|
||||
EuiTabbedContent,
|
||||
EuiTabbedContentTab,
|
||||
EuiSpacer,
|
||||
} from '@elastic/eui';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
|
||||
import { AdvancedFilteringRules } from './advanced_filtering_rules';
|
||||
import { EditFilteringTab } from './edit_filtering_tab';
|
||||
import { FilteringRulesTable } from './editable_filtering_rules_table';
|
||||
import { AdvancedSyncRules } from './advanced_sync_rules';
|
||||
import { EditSyncRulesTab } from './edit_sync_rules_tab';
|
||||
import { SyncRulesTable } from './editable_basic_rules_table';
|
||||
|
||||
interface EditFilteringFlyoutProps {
|
||||
hasAdvancedFilteringFeature: boolean;
|
||||
|
@ -35,7 +36,7 @@ enum FilteringTabs {
|
|||
ADVANCED = 'advanced',
|
||||
}
|
||||
|
||||
export const EditFilteringFlyout: React.FC<EditFilteringFlyoutProps> = ({
|
||||
export const EditSyncRulesFlyout: React.FC<EditFilteringFlyoutProps> = ({
|
||||
hasAdvancedFilteringFeature,
|
||||
hasBasicFilteringFeature,
|
||||
revertLocalFilteringRules,
|
||||
|
@ -47,15 +48,15 @@ export const EditFilteringFlyout: React.FC<EditFilteringFlyoutProps> = ({
|
|||
? [
|
||||
{
|
||||
content: (
|
||||
<EditFilteringTab revertAction={revertLocalFilteringRules}>
|
||||
<FilteringRulesTable />
|
||||
</EditFilteringTab>
|
||||
<EditSyncRulesTab revertAction={revertLocalFilteringRules}>
|
||||
<SyncRulesTable />
|
||||
</EditSyncRulesTab>
|
||||
),
|
||||
id: FilteringTabs.BASIC,
|
||||
name: i18n.translate(
|
||||
'xpack.enterpriseSearch.content.index.connector.filtering.basicTabTitle',
|
||||
'xpack.enterpriseSearch.content.index.connector.syncRules.basicTabTitle',
|
||||
{
|
||||
defaultMessage: 'Basic filters',
|
||||
defaultMessage: 'Basic rules',
|
||||
}
|
||||
),
|
||||
},
|
||||
|
@ -65,15 +66,15 @@ export const EditFilteringFlyout: React.FC<EditFilteringFlyoutProps> = ({
|
|||
? [
|
||||
{
|
||||
content: (
|
||||
<EditFilteringTab revertAction={revertLocalAdvancedFiltering}>
|
||||
<AdvancedFilteringRules />
|
||||
</EditFilteringTab>
|
||||
<EditSyncRulesTab revertAction={revertLocalAdvancedFiltering}>
|
||||
<AdvancedSyncRules />
|
||||
</EditSyncRulesTab>
|
||||
),
|
||||
id: FilteringTabs.ADVANCED,
|
||||
name: i18n.translate(
|
||||
'xpack.enterpriseSearch.content.index.connector.filtering.advancedTabTitle',
|
||||
'xpack.enterpriseSearch.content.index.connector.syncRules.advancedTabTitle',
|
||||
{
|
||||
defaultMessage: 'Advanced filters',
|
||||
defaultMessage: 'Advanced rules',
|
||||
}
|
||||
),
|
||||
},
|
||||
|
@ -82,28 +83,24 @@ export const EditFilteringFlyout: React.FC<EditFilteringFlyoutProps> = ({
|
|||
];
|
||||
|
||||
return (
|
||||
<EuiFlyout
|
||||
ownFocus
|
||||
onClose={() => setIsEditing(false)}
|
||||
aria-labelledby="filteringFlyout"
|
||||
size="l"
|
||||
>
|
||||
<EuiFlyout ownFocus onClose={() => setIsEditing(false)} aria-labelledby="rulesFlyout" size="l">
|
||||
<EuiFlyoutHeader>
|
||||
<EuiTitle size="m">
|
||||
<h2 id="filteringFlyout">
|
||||
<h2 id="rulesFlyout">
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.content.index.connector.filtering.flyout.title',
|
||||
'xpack.enterpriseSearch.content.index.connector.syncRules.flyout.title',
|
||||
{
|
||||
defaultMessage: 'Draft rules',
|
||||
}
|
||||
)}
|
||||
</h2>
|
||||
</EuiTitle>
|
||||
<EuiSpacer />
|
||||
<EuiText size="s">
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.content.index.connector.filtering.flyout.description',
|
||||
'xpack.enterpriseSearch.content.index.connector.syncRules.flyout.description',
|
||||
{
|
||||
defaultMessage: 'Plan and edit filters here before applying them to the next sync.',
|
||||
defaultMessage: 'Plan and edit rules here before applying them to the next sync.',
|
||||
}
|
||||
)}
|
||||
</EuiText>
|
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* 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 { EuiFlexGroup, EuiFlexItem, EuiButton, EuiSpacer } from '@elastic/eui';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
|
||||
import { ConnectorSyncRulesForm } from './connector_sync_form';
|
||||
|
||||
export const EditSyncRulesTab: React.FC<{ revertAction: () => void }> = ({
|
||||
children,
|
||||
revertAction,
|
||||
}) => {
|
||||
return (
|
||||
<>
|
||||
<EuiSpacer />
|
||||
<EuiFlexGroup direction="column">
|
||||
<EuiFlexItem>
|
||||
<EuiFlexGroup justifyContent="flexEnd">
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButton
|
||||
data-telemetry-id="entSearchContent-connector-syncRules-editRules-revert"
|
||||
onClick={revertAction}
|
||||
>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.content.index.connector.syncRules.flyout.revertButtonTitle',
|
||||
{
|
||||
defaultMessage: 'Revert to active rules',
|
||||
}
|
||||
)}
|
||||
</EuiButton>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
</EuiFlexItem>
|
||||
<EuiFlexItem>
|
||||
<ConnectorSyncRulesForm>{children}</ConnectorSyncRulesForm>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
</>
|
||||
);
|
||||
};
|
|
@ -28,6 +28,7 @@ import {
|
|||
FilteringRule,
|
||||
FilteringRuleRule,
|
||||
} from '../../../../../../../common/types/connectors';
|
||||
import { docLinks } from '../../../../../shared/doc_links';
|
||||
|
||||
import { InlineEditableTable } from '../../../../../shared/tables/inline_editable_table/inline_editable_table';
|
||||
import {
|
||||
|
@ -68,7 +69,7 @@ function validateItem(filteringRule: FilteringRule): FormErrors {
|
|||
return {};
|
||||
}
|
||||
|
||||
export const FilteringRulesTable: React.FC = () => {
|
||||
export const SyncRulesTable: React.FC = () => {
|
||||
const { editableFilteringRules } = useValues(ConnectorFilteringLogic);
|
||||
const { indexName } = useValues(IndexViewLogic);
|
||||
const { addFilteringRule, deleteFilteringRule, reorderFilteringRules, updateFilteringRule } =
|
||||
|
@ -76,15 +77,15 @@ export const FilteringRulesTable: React.FC = () => {
|
|||
|
||||
const description = (
|
||||
<EuiText size="s" color="default">
|
||||
{i18n.translate('xpack.enterpriseSearch.content.index.connector.filteringRules.description', {
|
||||
{i18n.translate('xpack.enterpriseSearch.content.index.connector.syncRules.description', {
|
||||
defaultMessage:
|
||||
'Add an indexing rule to customize what data is synchronized from {indexName}. Everything is included by default, and documents are validated against the configured set of indexing rules starting from the top listed down.',
|
||||
'Add a sync rule to customize what data is synchronized from {indexName}. Everything is included by default, and documents are validated against the configured set of indexing rules starting from the top listed down.',
|
||||
values: { indexName },
|
||||
})}
|
||||
<EuiSpacer />
|
||||
<EuiLink href={'TODOTODOTODO'} external>
|
||||
{i18n.translate('xpack.enterpriseSearch.content.index.connector.filteringRules.link', {
|
||||
defaultMessage: 'Learn more about customizing your index rules.',
|
||||
<EuiLink href={docLinks.syncRules} external>
|
||||
{i18n.translate('xpack.enterpriseSearch.content.index.connector.syncRules.link', {
|
||||
defaultMessage: 'Learn more about customizing your sync rules.',
|
||||
})}
|
||||
</EuiLink>
|
||||
</EuiText>
|
||||
|
@ -110,34 +111,29 @@ export const FilteringRulesTable: React.FC = () => {
|
|||
/>
|
||||
),
|
||||
field: 'policy',
|
||||
name: i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.basicTable.policyTitle',
|
||||
{ defaultMessage: 'Policy' }
|
||||
),
|
||||
name: i18n.translate('xpack.enterpriseSearch.index.connector.rule.basicTable.policyTitle', {
|
||||
defaultMessage: 'Policy',
|
||||
}),
|
||||
render: (indexingRule) => (
|
||||
<EuiText size="s">{filteringPolicyToText(indexingRule.policy)}</EuiText>
|
||||
),
|
||||
},
|
||||
{
|
||||
editingRender: (filteringRule, onChange) => (
|
||||
editingRender: (rule, onChange) => (
|
||||
<EuiFlexGroup alignItems="center" gutterSize="s" responsive={false}>
|
||||
<EuiFlexItem>
|
||||
<EuiFieldText
|
||||
fullWidth
|
||||
value={filteringRule.field}
|
||||
onChange={(e) => onChange(e.target.value)}
|
||||
/>
|
||||
<EuiFieldText fullWidth value={rule.field} onChange={(e) => onChange(e.target.value)} />
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
),
|
||||
field: 'field',
|
||||
name: i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.basicTable.fieldTitle',
|
||||
'xpack.enterpriseSearch.index.connector.syncRules.basicTable.fieldTitle',
|
||||
{ defaultMessage: 'Field' }
|
||||
),
|
||||
render: (indexingRule) => (
|
||||
render: (rule) => (
|
||||
<EuiText size="s">
|
||||
<EuiCode>{indexingRule.field}</EuiCode>
|
||||
<EuiCode>{rule.field}</EuiCode>
|
||||
</EuiText>
|
||||
),
|
||||
},
|
||||
|
@ -155,35 +151,29 @@ export const FilteringRulesTable: React.FC = () => {
|
|||
),
|
||||
field: 'rule',
|
||||
name: i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.basicTable.ruleTitle',
|
||||
'xpack.enterpriseSearch.index.connector.syncRules.basicTable.ruleTitle',
|
||||
{ defaultMessage: 'Rule' }
|
||||
),
|
||||
render: (filteringRule) => (
|
||||
<EuiText size="s">{filteringRuleToText(filteringRule.rule)}</EuiText>
|
||||
),
|
||||
render: (rule) => <EuiText size="s">{filteringRuleToText(rule.rule)}</EuiText>,
|
||||
},
|
||||
{
|
||||
editingRender: (filteringRule, onChange) => (
|
||||
editingRender: (rule, onChange) => (
|
||||
<EuiFlexGroup alignItems="center" gutterSize="s" responsive={false}>
|
||||
<EuiFlexItem>
|
||||
<EuiFieldText
|
||||
fullWidth
|
||||
value={filteringRule.value}
|
||||
onChange={(e) => onChange(e.target.value)}
|
||||
/>
|
||||
<EuiFieldText fullWidth value={rule.value} onChange={(e) => onChange(e.target.value)} />
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
),
|
||||
field: 'value',
|
||||
name: i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.basicTable.valueTitle',
|
||||
'xpack.enterpriseSearch.index.connector.syncRules.basicTable.valueTitle',
|
||||
{
|
||||
defaultMessage: 'Value',
|
||||
}
|
||||
),
|
||||
render: (indexingRule) => (
|
||||
render: (rule) => (
|
||||
<EuiText size="s">
|
||||
<EuiCode>{indexingRule.value}</EuiCode>
|
||||
<EuiCode>{rule.value}</EuiCode>
|
||||
</EuiText>
|
||||
),
|
||||
},
|
||||
|
@ -192,8 +182,8 @@ export const FilteringRulesTable: React.FC = () => {
|
|||
return (
|
||||
<InlineEditableTable
|
||||
addButtonText={i18n.translate(
|
||||
'xpack.enterpriseSearch.content.index.connector.filtering.table.addRuleLabel',
|
||||
{ defaultMessage: 'Add filter rule' }
|
||||
'xpack.enterpriseSearch.content.index.connector.syncRules.table.addRuleLabel',
|
||||
{ defaultMessage: 'Add sync rule' }
|
||||
)}
|
||||
columns={columns}
|
||||
defaultItem={{
|
||||
|
@ -227,7 +217,7 @@ export const FilteringRulesTable: React.FC = () => {
|
|||
bottomRows={[
|
||||
<EuiText size="s">
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.content.sources.filteringRulesTable.includeEverythingMessage',
|
||||
'xpack.enterpriseSearch.content.sources.basicRulesTable.includeEverythingMessage',
|
||||
{
|
||||
defaultMessage: 'Include everything else from this source',
|
||||
}
|
|
@ -19,7 +19,7 @@ interface FilteringStatusCalloutsProps {
|
|||
state: FilteringValidationState;
|
||||
}
|
||||
|
||||
export const FilteringStateCallouts: React.FC<FilteringStatusCalloutsProps> = ({
|
||||
export const SyncRulesStateCallouts: React.FC<FilteringStatusCalloutsProps> = ({
|
||||
applyDraft,
|
||||
editDraft,
|
||||
state,
|
||||
|
@ -36,7 +36,7 @@ export const FilteringStateCallouts: React.FC<FilteringStatusCalloutsProps> = ({
|
|||
</EuiFlexItem>
|
||||
<EuiFlexItem>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.validatingTitle',
|
||||
'xpack.enterpriseSearch.index.connector.syncRules.validatingTitle',
|
||||
{
|
||||
defaultMessage: 'Draft sync rules are validating',
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ export const FilteringStateCallouts: React.FC<FilteringStatusCalloutsProps> = ({
|
|||
<EuiFlexGroup direction="column">
|
||||
<EuiFlexItem>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.validatingDescription',
|
||||
'xpack.enterpriseSearch.index.connector.syncRules.validatingDescription',
|
||||
{
|
||||
defaultMessage:
|
||||
'Draft rules need to be validated before they can take effect. This may take a few minutes.',
|
||||
|
@ -58,13 +58,13 @@ export const FilteringStateCallouts: React.FC<FilteringStatusCalloutsProps> = ({
|
|||
<EuiFlexItem>
|
||||
<span>
|
||||
<EuiButton
|
||||
data-telemetry-id="entSearchContent-connector-filtering-validatingCallout-editRules"
|
||||
data-telemetry-id="entSearchContent-connector-syncRules-validatingCallout-editRules"
|
||||
onClick={editDraft}
|
||||
color="warning"
|
||||
fill
|
||||
>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.validatingCallout.editDraftRulesTitle',
|
||||
'xpack.enterpriseSearch.index.connector.syncRules.validatingCallout.editDraftRulesTitle',
|
||||
{
|
||||
defaultMessage: 'Edit draft rules',
|
||||
}
|
||||
|
@ -80,14 +80,14 @@ export const FilteringStateCallouts: React.FC<FilteringStatusCalloutsProps> = ({
|
|||
<EuiCallOut
|
||||
color="danger"
|
||||
iconType="cross"
|
||||
title={i18n.translate('xpack.enterpriseSearch.index.connector.filtering.invalidTitle', {
|
||||
title={i18n.translate('xpack.enterpriseSearch.index.connector.syncRules.invalidTitle', {
|
||||
defaultMessage: 'Draft sync rules are invalid',
|
||||
})}
|
||||
>
|
||||
<EuiFlexGroup direction="column">
|
||||
<EuiFlexItem>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.invalidDescription',
|
||||
'xpack.enterpriseSearch.index.connector.syncRules.invalidDescription',
|
||||
{
|
||||
defaultMessage:
|
||||
'Draft rules did not validate. Edit the draft rules before they can take effect.',
|
||||
|
@ -97,13 +97,13 @@ export const FilteringStateCallouts: React.FC<FilteringStatusCalloutsProps> = ({
|
|||
<EuiFlexItem>
|
||||
<span>
|
||||
<EuiButton
|
||||
data-telemetry-id="entSearchContent-connector-filtering-errorCallout-editRules"
|
||||
data-telemetry-id="entSearchContent-connector-syncRules-errorCallout-editRules"
|
||||
onClick={editDraft}
|
||||
color="danger"
|
||||
fill
|
||||
>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.errorCallout.editDraftRulesTitle',
|
||||
'xpack.enterpriseSearch.index.connector.syncRules.errorCallout.editDraftRulesTitle',
|
||||
{
|
||||
defaultMessage: 'Edit draft rules',
|
||||
}
|
||||
|
@ -119,14 +119,14 @@ export const FilteringStateCallouts: React.FC<FilteringStatusCalloutsProps> = ({
|
|||
<EuiCallOut
|
||||
color="success"
|
||||
iconType="check"
|
||||
title={i18n.translate('xpack.enterpriseSearch.index.connector.filtering.validatedTitle', {
|
||||
title={i18n.translate('xpack.enterpriseSearch.index.connector.syncRules.validatedTitle', {
|
||||
defaultMessage: 'Draft sync rules validated',
|
||||
})}
|
||||
>
|
||||
<EuiFlexGroup direction="column">
|
||||
<EuiFlexItem>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.validatedDescription',
|
||||
'xpack.enterpriseSearch.index.connector.syncRules.validatedDescription',
|
||||
{
|
||||
defaultMessage: 'Apply draft rules to take effect on the next sync.',
|
||||
}
|
||||
|
@ -137,13 +137,13 @@ export const FilteringStateCallouts: React.FC<FilteringStatusCalloutsProps> = ({
|
|||
<EuiFlexItem grow={false}>
|
||||
<span>
|
||||
<EuiButton
|
||||
data-telemetry-id="entSearchContent-connector-filtering-successCallout-applyRules"
|
||||
data-telemetry-id="entSearchContent-connector-syncRules-successCallout-applyRules"
|
||||
onClick={applyDraft}
|
||||
color="success"
|
||||
fill
|
||||
>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.successCallout.applyDraftRulesTitle',
|
||||
'xpack.enterpriseSearch.index.connector.syncRules.successCallout.applyDraftRulesTitle',
|
||||
{
|
||||
defaultMessage: 'Apply draft rules',
|
||||
}
|
||||
|
@ -154,12 +154,12 @@ export const FilteringStateCallouts: React.FC<FilteringStatusCalloutsProps> = ({
|
|||
<EuiFlexItem grow={false}>
|
||||
<span>
|
||||
<EuiButton
|
||||
data-telemetry-id="entSearchContent-connector-filtering-successCallout-editRules"
|
||||
data-telemetry-id="entSearchContent-connector-syncRules-successCallout-editRules"
|
||||
onClick={editDraft}
|
||||
color="success"
|
||||
>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.index.connector.filtering.errorCallout.successEditDraftRulesTitle',
|
||||
'xpack.enterpriseSearch.index.connector.syncRules.errorCallout.successEditDraftRulesTitle',
|
||||
{
|
||||
defaultMessage: 'Edit draft rules',
|
||||
}
|
|
@ -28,6 +28,7 @@ import { i18n } from '@kbn/i18n';
|
|||
import { FormattedMessage } from '@kbn/i18n-react';
|
||||
|
||||
import { IngestPipelineParams } from '../../../../../../../common/types/connectors';
|
||||
import { docLinks } from '../../../../../shared/doc_links';
|
||||
|
||||
import { CurlRequest } from '../../components/curl_request/curl_request';
|
||||
|
||||
|
@ -124,7 +125,7 @@ export const IngestPipelineModal: React.FC<IngestPipelineModalProps> = ({
|
|||
</EuiFlexItem>
|
||||
<EuiSpacer />
|
||||
<EuiFlexItem>
|
||||
<EuiLink href="TODO TODO TODO: Insert actual docslink" external>
|
||||
<EuiLink href={docLinks.ingestPipelines} external>
|
||||
{i18n.translate(
|
||||
'xpack.enterpriseSearch.content.index.pipelines.ingestModal.modalIngestLinkLabel',
|
||||
{
|
||||
|
|
|
@ -33,7 +33,7 @@ import { baseBreadcrumbs } from '../search_indices';
|
|||
import { getHeaderActions } from './components/header_actions/header_actions';
|
||||
import { ConnectorConfiguration } from './connector/connector_configuration';
|
||||
import { ConnectorSchedulingComponent } from './connector/connector_scheduling';
|
||||
import { ConnectorFiltering } from './connector/filtering/connector_filtering';
|
||||
import { ConnectorSyncRules } from './connector/sync_rules/connector_rules';
|
||||
import { AutomaticCrawlScheduler } from './crawler/automatic_crawl_scheduler/automatic_crawl_scheduler';
|
||||
import { CrawlCustomSettingsFlyout } from './crawler/crawl_custom_settings_flyout/crawl_custom_settings_flyout';
|
||||
import { SearchIndexDomainManagement } from './crawler/domain_management/domain_management';
|
||||
|
@ -52,7 +52,7 @@ export enum SearchIndexTabId {
|
|||
PIPELINES = 'pipelines',
|
||||
// connector indices
|
||||
CONFIGURATION = 'configuration',
|
||||
FILTERS = 'filters',
|
||||
SYNC_RULES = 'sync_rules',
|
||||
SCHEDULING = 'scheduling',
|
||||
// crawler indices
|
||||
DOMAIN_MANAGEMENT = 'domain_management',
|
||||
|
@ -128,10 +128,10 @@ export const SearchIndex: React.FC = () => {
|
|||
...(hasFilteringFeature
|
||||
? [
|
||||
{
|
||||
content: <ConnectorFiltering />,
|
||||
id: SearchIndexTabId.FILTERS,
|
||||
name: i18n.translate('xpack.enterpriseSearch.content.searchIndex.filtersTabLabel', {
|
||||
defaultMessage: 'Filters',
|
||||
content: <ConnectorSyncRules />,
|
||||
id: SearchIndexTabId.SYNC_RULES,
|
||||
name: i18n.translate('xpack.enterpriseSearch.content.searchIndex.syncRulesTabLabel', {
|
||||
defaultMessage: 'Sync rules',
|
||||
}),
|
||||
},
|
||||
]
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
exports[`FilteringPanel renders 1`] = `
|
||||
<Fragment>
|
||||
<FlyoutPanel
|
||||
title="Filtering"
|
||||
title="Sync rules"
|
||||
>
|
||||
<FilteringRulesTable
|
||||
filteringRules={Array []}
|
||||
|
@ -16,7 +16,7 @@ exports[`FilteringPanel renders 1`] = `
|
|||
exports[`FilteringPanel renders advanced snippet 1`] = `
|
||||
<Fragment>
|
||||
<FlyoutPanel
|
||||
title="Filtering"
|
||||
title="Sync rules"
|
||||
>
|
||||
<FilteringRulesTable
|
||||
filteringRules={
|
||||
|
@ -58,7 +58,7 @@ exports[`FilteringPanel renders advanced snippet 1`] = `
|
|||
</FlyoutPanel>
|
||||
<EuiSpacer />
|
||||
<FlyoutPanel
|
||||
title="Advanced filtering rules"
|
||||
title="Advanced sync rules"
|
||||
>
|
||||
<EuiPanel
|
||||
hasShadow={false}
|
||||
|
@ -80,7 +80,7 @@ exports[`FilteringPanel renders advanced snippet 1`] = `
|
|||
exports[`FilteringPanel renders filtering rules list 1`] = `
|
||||
<Fragment>
|
||||
<FlyoutPanel
|
||||
title="Filtering"
|
||||
title="Sync rules"
|
||||
>
|
||||
<FilteringRulesTable
|
||||
filteringRules={
|
||||
|
|
|
@ -29,8 +29,8 @@ export const FilteringPanel: React.FC<FilteringPanelProps> = ({
|
|||
return (
|
||||
<>
|
||||
<FlyoutPanel
|
||||
title={i18n.translate('xpack.enterpriseSearch.content.index.syncJobs.filteringTitle', {
|
||||
defaultMessage: 'Filtering',
|
||||
title={i18n.translate('xpack.enterpriseSearch.content.index.syncJobs.syncRulesTitle', {
|
||||
defaultMessage: 'Sync rules',
|
||||
})}
|
||||
>
|
||||
<FilteringRulesTable filteringRules={filteringRules} showOrder={false} />
|
||||
|
@ -40,9 +40,9 @@ export const FilteringPanel: React.FC<FilteringPanelProps> = ({
|
|||
<EuiSpacer />
|
||||
<FlyoutPanel
|
||||
title={i18n.translate(
|
||||
'xpack.enterpriseSearch.content.index.syncJobs.filteringAdvancedTitle',
|
||||
'xpack.enterpriseSearch.content.index.syncJobs.syncRulesAdvancedTitle',
|
||||
{
|
||||
defaultMessage: 'Advanced filtering rules',
|
||||
defaultMessage: 'Advanced sync rules',
|
||||
}
|
||||
)}
|
||||
>
|
||||
|
|
|
@ -83,6 +83,7 @@ class DocLinks {
|
|||
public searchUIAppSearch: string;
|
||||
public searchUIElasticsearch: string;
|
||||
public start: string;
|
||||
public syncRules: string;
|
||||
public workplaceSearchApiKeys: string;
|
||||
public workplaceSearchBox: string;
|
||||
public workplaceSearchConfluenceCloud: string;
|
||||
|
@ -195,6 +196,7 @@ class DocLinks {
|
|||
this.searchUIAppSearch = '';
|
||||
this.searchUIElasticsearch = '';
|
||||
this.start = '';
|
||||
this.syncRules = '';
|
||||
this.workplaceSearchApiKeys = '';
|
||||
this.workplaceSearchBox = '';
|
||||
this.workplaceSearchConfluenceCloud = '';
|
||||
|
@ -309,6 +311,7 @@ class DocLinks {
|
|||
this.searchUIAppSearch = docLinks.links.searchUI.appSearch;
|
||||
this.searchUIElasticsearch = docLinks.links.searchUI.elasticsearch;
|
||||
this.start = docLinks.links.enterpriseSearch.start;
|
||||
this.syncRules = docLinks.links.enterpriseSearch.syncRules;
|
||||
this.workplaceSearchApiKeys = docLinks.links.workplaceSearch.apiKeys;
|
||||
this.workplaceSearchBox = docLinks.links.workplaceSearch.box;
|
||||
this.workplaceSearchConfluenceCloud = docLinks.links.workplaceSearch.confluenceCloud;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue