[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:
Sander Philipse 2022-11-22 18:38:49 +01:00 committed by GitHub
parent c45f556605
commit 9c6272c1f2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 166 additions and 168 deletions

View file

@ -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`,
},

View file

@ -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;
};

View file

@ -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>
);
};

View file

@ -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',
}

View file

@ -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' }
)
);
},

View file

@ -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.',
}

View file

@ -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',
}

View file

@ -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>

View file

@ -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>
</>
);
};

View file

@ -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',
}

View file

@ -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',
}

View file

@ -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',
{

View file

@ -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',
}),
},
]

View file

@ -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={

View file

@ -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',
}
)}
>

View file

@ -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;