policy5 = new HashMap<>();
+ policy5.put("name", "APP_ALLOW_3");
+ policy5.put("description", "APP DENY");
+ policy5.put("effect", "deny");
+ policy5.put("operations", List.of("Create", "Delete", "EditAll"));
+ policy5.put("resources", List.of("app"));
+ policyDefs.add(policy5);
+
+ return policyDefs;
+ }
}
diff --git a/openmetadata-spec/src/main/resources/json/schema/entity/data/dashboardDataModel.json b/openmetadata-spec/src/main/resources/json/schema/entity/data/dashboardDataModel.json
index a8092ac328e0..7ce119b3990e 100644
--- a/openmetadata-spec/src/main/resources/json/schema/entity/data/dashboardDataModel.json
+++ b/openmetadata-spec/src/main/resources/json/schema/entity/data/dashboardDataModel.json
@@ -28,6 +28,12 @@
{
"name": "TableauDataModel"
},
+ {
+ "name": "TableauPublishedDatasource"
+ },
+ {
+ "name": "TableauEmbeddedDatasource"
+ },
{
"name": "SupersetDataModel"
},
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/AppRouter/withAdvanceSearch.tsx b/openmetadata-ui/src/main/resources/ui/src/components/AppRouter/withAdvanceSearch.tsx
index 3098df133874..19b05f55ec23 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/AppRouter/withAdvanceSearch.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/AppRouter/withAdvanceSearch.tsx
@@ -14,8 +14,8 @@ import React, { FC } from 'react';
import { AdvanceSearchProvider } from '../../components/Explore/AdvanceSearchProvider/AdvanceSearchProvider.component';
export const withAdvanceSearch =
- (Component: FC) =>
- (props: JSX.IntrinsicAttributes & { children?: React.ReactNode }) => {
+ >(Component: FC
) =>
+ (props: P) => {
return (
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Auth/AuthProviders/AuthProvider.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Auth/AuthProviders/AuthProvider.tsx
index b578c2fd66b5..cea014035d0b 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/Auth/AuthProviders/AuthProvider.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/Auth/AuthProviders/AuthProvider.tsx
@@ -769,7 +769,6 @@ export const AuthProvider = ({
updateAxiosInterceptors: initializeAxiosInterceptors,
});
- return cleanup;
}, [handleSuccessfulLogin]);
const isConfigLoading =
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/Form/JSONSchema/JsonSchemaWidgets/QueryBuilderWidget/QueryBuilderWidget.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/common/Form/JSONSchema/JsonSchemaWidgets/QueryBuilderWidget/QueryBuilderWidget.interface.ts
new file mode 100644
index 000000000000..68543369c9bb
--- /dev/null
+++ b/openmetadata-ui/src/main/resources/ui/src/components/common/Form/JSONSchema/JsonSchemaWidgets/QueryBuilderWidget/QueryBuilderWidget.interface.ts
@@ -0,0 +1,16 @@
+/*
+ * Copyright 2024 Collate.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+export enum QueryBuilderOutputType {
+ ELASTICSEARCH = 'elasticsearch',
+ JSON_LOGIC = 'jsonlogic',
+}
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/Form/JSONSchema/JsonSchemaWidgets/QueryBuilderWidget/QueryBuilderWidget.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/Form/JSONSchema/JsonSchemaWidgets/QueryBuilderWidget/QueryBuilderWidget.test.tsx
new file mode 100644
index 000000000000..44b0b3895c49
--- /dev/null
+++ b/openmetadata-ui/src/main/resources/ui/src/components/common/Form/JSONSchema/JsonSchemaWidgets/QueryBuilderWidget/QueryBuilderWidget.test.tsx
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2024 Collate.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { Registry } from '@rjsf/utils';
+import { render, screen } from '@testing-library/react';
+import React from 'react';
+import { BasicConfig } from 'react-awesome-query-builder';
+import AntdConfig from 'react-awesome-query-builder/lib/config/antd';
+import QueryBuilderWidget from './QueryBuilderWidget';
+
+const mockOnFocus = jest.fn();
+const mockOnBlur = jest.fn();
+const mockOnChange = jest.fn();
+const baseConfig = AntdConfig as BasicConfig;
+
+jest.mock(
+ '../../../../../Explore/AdvanceSearchProvider/AdvanceSearchProvider.component',
+ () => ({
+ AdvanceSearchProvider: ({ children }: { children: React.ReactNode }) => (
+ {children}
+ ),
+ useAdvanceSearch: jest.fn().mockImplementation(() => ({
+ toggleModal: jest.fn(),
+ sqlQuery: '',
+ onResetAllFilters: jest.fn(),
+ onChangeSearchIndex: jest.fn(),
+ config: {
+ ...baseConfig,
+ fields: {},
+ },
+ })),
+ })
+);
+
+jest.mock('react-router-dom', () => ({
+ useLocation: jest.fn(),
+}));
+
+const mockProps = {
+ onFocus: mockOnFocus,
+ onBlur: mockOnBlur,
+ onChange: mockOnChange,
+ registry: {} as Registry,
+ schema: {
+ description: 'this is query builder field',
+ title: 'rules',
+ format: 'queryBuilder',
+ entityType: 'table',
+ },
+ value: '',
+ id: 'root/queryBuilder',
+ label: 'Query Builder',
+ name: 'queryBuilder',
+ options: {
+ enumOptions: [],
+ },
+};
+
+describe('QueryBuilderWidget', () => {
+ it('should render the query builder', () => {
+ render();
+ const builder = screen.getByTestId('query-builder-form-field');
+
+ expect(builder).toBeInTheDocument();
+ });
+});
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/Form/JSONSchema/JsonSchemaWidgets/QueryBuilderWidget/QueryBuilderWidget.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/Form/JSONSchema/JsonSchemaWidgets/QueryBuilderWidget/QueryBuilderWidget.tsx
new file mode 100644
index 000000000000..0e1b04275e7e
--- /dev/null
+++ b/openmetadata-ui/src/main/resources/ui/src/components/common/Form/JSONSchema/JsonSchemaWidgets/QueryBuilderWidget/QueryBuilderWidget.tsx
@@ -0,0 +1,159 @@
+/*
+ * Copyright 2024 Collate.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { InfoCircleOutlined } from '@ant-design/icons';
+import { WidgetProps } from '@rjsf/utils';
+import { Alert, Button, Col, Typography } from 'antd';
+import { t } from 'i18next';
+import { debounce, isEmpty, isUndefined } from 'lodash';
+import Qs from 'qs';
+import React, { FC, useCallback, useEffect, useMemo, useState } from 'react';
+import {
+ Builder,
+ Config,
+ ImmutableTree,
+ Query,
+ Utils as QbUtils,
+} from 'react-awesome-query-builder';
+import { getExplorePath } from '../../../../../../constants/constants';
+import { EntityType } from '../../../../../../enums/entity.enum';
+import { SearchIndex } from '../../../../../../enums/search.enum';
+import { searchQuery } from '../../../../../../rest/searchAPI';
+import searchClassBase from '../../../../../../utils/SearchClassBase';
+import { withAdvanceSearch } from '../../../../../AppRouter/withAdvanceSearch';
+import { useAdvanceSearch } from '../../../../../Explore/AdvanceSearchProvider/AdvanceSearchProvider.component';
+import './query-builder-widget.less';
+import { QueryBuilderOutputType } from './QueryBuilderWidget.interface';
+
+const QueryBuilderWidget: FC = ({
+ onChange,
+ schema,
+ value,
+ ...props
+}: WidgetProps) => {
+ const { config, treeInternal, onTreeUpdate, onChangeSearchIndex } =
+ useAdvanceSearch();
+ const [searchResults, setSearchResults] = useState(0);
+ const entityType =
+ (props.formContext?.entityType ?? props?.entityType) || EntityType.ALL;
+ const searchIndexMapping = searchClassBase.getEntityTypeSearchIndexMapping();
+ const searchIndex = searchIndexMapping[entityType as string];
+ const outputType = props?.outputType ?? QueryBuilderOutputType.ELASTICSEARCH;
+
+ const fetchEntityCount = useCallback(
+ async (queryFilter: Record) => {
+ try {
+ const res = await searchQuery({
+ query: '',
+ pageNumber: 0,
+ pageSize: 0,
+ queryFilter,
+ searchIndex: SearchIndex.ALL,
+ includeDeleted: false,
+ trackTotalHits: true,
+ fetchSource: false,
+ });
+ setSearchResults(res.hits.total.value ?? 0);
+ } catch (_) {
+ // silent fail
+ }
+ },
+ []
+ );
+
+ const debouncedFetchEntityCount = useMemo(
+ () => debounce(fetchEntityCount, 300),
+ [fetchEntityCount]
+ );
+
+ const queryURL = useMemo(() => {
+ const queryFilterString = !isEmpty(treeInternal)
+ ? Qs.stringify({ queryFilter: JSON.stringify(treeInternal) })
+ : '';
+
+ return `${getExplorePath({})}${queryFilterString}`;
+ }, [treeInternal]);
+
+ const handleChange = (nTree: ImmutableTree, nConfig: Config) => {
+ onTreeUpdate(nTree, nConfig);
+
+ if (outputType === QueryBuilderOutputType.ELASTICSEARCH) {
+ const data = QbUtils.elasticSearchFormat(nTree, config) ?? {};
+ const qFilter = {
+ query: data,
+ };
+ if (data) {
+ debouncedFetchEntityCount(qFilter);
+ }
+
+ onChange(JSON.stringify(qFilter));
+ } else {
+ const data = QbUtils.jsonLogicFormat(nTree, config);
+ onChange(JSON.stringify(data.logic ?? '{}'));
+ }
+ };
+
+ useEffect(() => {
+ onChangeSearchIndex(searchIndex);
+ }, [searchIndex]);
+
+ return (
+
+
(
+
+
+
+ )}
+ value={treeInternal}
+ onChange={handleChange}
+ />
+ {outputType === QueryBuilderOutputType.ELASTICSEARCH &&
+ !isUndefined(value) && (
+
+
+
+ )}
+
+ );
+};
+
+export default withAdvanceSearch(QueryBuilderWidget);
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/Form/JSONSchema/JsonSchemaWidgets/QueryBuilderWidget/query-builder-widget.less b/openmetadata-ui/src/main/resources/ui/src/components/common/Form/JSONSchema/JsonSchemaWidgets/QueryBuilderWidget/query-builder-widget.less
new file mode 100644
index 000000000000..43d768729e2a
--- /dev/null
+++ b/openmetadata-ui/src/main/resources/ui/src/components/common/Form/JSONSchema/JsonSchemaWidgets/QueryBuilderWidget/query-builder-widget.less
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2024 Collate.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+.query-builder-form-field {
+ .hide--line.one--child {
+ margin-top: 0;
+ padding-top: 16px;
+ }
+
+ .group.rule_group {
+ border: none !important;
+ padding: 0;
+
+ .group--children {
+ padding-top: 0;
+ padding-bottom: 0;
+ margin: 0;
+ }
+ }
+
+ .group--field {
+ width: 180px;
+
+ .ant-select {
+ width: 100% !important;
+ }
+
+ label {
+ font-weight: normal;
+ margin-bottom: 6px;
+ }
+ }
+}
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/FormBuilder/FormBuilder.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/FormBuilder/FormBuilder.tsx
index 23f624f7fa26..8f4cb2b608f6 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/common/FormBuilder/FormBuilder.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/common/FormBuilder/FormBuilder.tsx
@@ -27,6 +27,7 @@ import { FieldErrorTemplate } from '../Form/JSONSchema/JSONSchemaTemplate/FieldE
import { ObjectFieldTemplate } from '../Form/JSONSchema/JSONSchemaTemplate/ObjectFieldTemplate';
import AsyncSelectWidget from '../Form/JSONSchema/JsonSchemaWidgets/AsyncSelectWidget';
import PasswordWidget from '../Form/JSONSchema/JsonSchemaWidgets/PasswordWidget';
+import QueryBuilderWidget from '../Form/JSONSchema/JsonSchemaWidgets/QueryBuilderWidget/QueryBuilderWidget';
import SelectWidget from '../Form/JSONSchema/JsonSchemaWidgets/SelectWidget';
import Loader from '../Loader/Loader';
@@ -70,6 +71,7 @@ const FormBuilder: FunctionComponent = forwardRef(
const widgets = {
PasswordWidget: PasswordWidget,
autoComplete: AsyncSelectWidget,
+ queryBuilder: QueryBuilderWidget,
...(useSelectWidget && { SelectWidget: SelectWidget }),
};
diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/de-de.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/de-de.json
index 80ed7d544338..7ede75ac2c73 100644
--- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/de-de.json
+++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/de-de.json
@@ -1393,6 +1393,7 @@
"can-not-add-widget": "Can not add the widget to this section due to size restrictions.",
"can-you-add-a-description": "Können Sie eine Beschreibung hinzufügen?",
"checkout-service-connectors-doc": "Es gibt viele Konnektoren hier, um Daten von Ihren Diensten zu indizieren. Bitte schauen Sie sich unsere Konnektoren an.",
+ "click-here-to-view-assets-on-explore": "(Click to view the filtered assets on Explore page.)",
"click-text-to-view-details": "Klicken Sie auf <0>{{text}}0>, um Details anzuzeigen.",
"closed-this-task": "hat diese Aufgabe geschlossen",
"collaborate-with-other-user": "um mit anderen Benutzern zusammenzuarbeiten.",
@@ -1782,6 +1783,7 @@
"schedule-for-ingestion-description": "Die Planung kann im stündlichen, täglichen oder wöchentlichen Rhythmus eingerichtet werden. Die Zeitzone ist UTC.",
"scheduled-run-every": "Geplant, alle auszuführen",
"scopes-comma-separated": "Fügen Sie den Wert der Bereiche hinzu, getrennt durch Kommata",
+ "search-entity-count": "{{count}} assets have been found with this filter.",
"search-for-edge": "Suche nach Pipeline, StoredProcedures",
"search-for-entity-types": "Suche nach Tabellen, Themen, Dashboards, Pipelines, ML-Modellen, Glossar und Tags.",
"search-for-ingestion": "Suche nach Ingestion",
diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/en-us.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/en-us.json
index 199086f4be32..7cf7279dd766 100644
--- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/en-us.json
+++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/en-us.json
@@ -1393,6 +1393,7 @@
"can-not-add-widget": "Can not add the widget to this section due to size restrictions.",
"can-you-add-a-description": "Can you add a description?",
"checkout-service-connectors-doc": "There are a lot of connectors available here to index data from your services. Please checkout our connectors.",
+ "click-here-to-view-assets-on-explore": "(Click to view the filtered assets on Explore page.)",
"click-text-to-view-details": "Click <0>{{text}}0> to view details.",
"closed-this-task": "closed this task",
"collaborate-with-other-user": "to collaborate with other users.",
@@ -1782,6 +1783,7 @@
"schedule-for-ingestion-description": "Scheduling can be set up at an hourly, daily, or weekly cadence. The timezone is in UTC.",
"scheduled-run-every": "Scheduled to run every",
"scopes-comma-separated": "Add the Scopes value, separated by commas",
+ "search-entity-count": "{{count}} assets have been found with this filter.",
"search-for-edge": "Search for Pipeline, StoredProcedures",
"search-for-entity-types": "Search for Tables, Topics, Dashboards, Pipelines, ML Models, Glossary and Tags.",
"search-for-ingestion": "Search for ingestion",
diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/es-es.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/es-es.json
index c8b01b31475e..a7b6c3eb2ea1 100644
--- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/es-es.json
+++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/es-es.json
@@ -1393,6 +1393,7 @@
"can-not-add-widget": "No se puede agregar el widget a esta sección debido a restricciones de tamaño.",
"can-you-add-a-description": "¿Puedes agregar una descripción?",
"checkout-service-connectors-doc": "Hay muchos conectores disponibles para ingesta de datos de tus servicios. Por favor, revisa nuestra documentación sobre conectores.",
+ "click-here-to-view-assets-on-explore": "(Click to view the filtered assets on Explore page.)",
"click-text-to-view-details": "Haz clic en <0>{{text}}0> para ver detalles.",
"closed-this-task": "cerró esta tarea",
"collaborate-with-other-user": "para colaborar con otros usuarios.",
@@ -1782,6 +1783,7 @@
"schedule-for-ingestion-description": "La programación se puede configurar en una cadencia horaria, diaria o semanal.",
"scheduled-run-every": "Programado para ejecutarse cada",
"scopes-comma-separated": "Agrega el valor de ámbitos, separados por comas",
+ "search-entity-count": "{{count}} assets have been found with this filter.",
"search-for-edge": "Buscar Pipeline, StoredProcedures",
"search-for-entity-types": "Buscar Tablas, Temas, Paneles, Pipelines, Modelos de ML, Glosarios y Etiquetas.",
"search-for-ingestion": "Buscar orígenes de datos",
diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/fr-fr.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/fr-fr.json
index 700cc2a946ce..f7c323534b53 100644
--- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/fr-fr.json
+++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/fr-fr.json
@@ -1393,6 +1393,7 @@
"can-not-add-widget": "Le widget ne peut être ajouté à cette section à cause des restrictions de taille.$",
"can-you-add-a-description": "Pouvez-vous ajouter une description?",
"checkout-service-connectors-doc": "Il y a de nombreux connecteurs disponibles ici pour indexer les données de vos services. Veuillez consulter nos connecteurs.",
+ "click-here-to-view-assets-on-explore": "(Click to view the filtered assets on Explore page.)",
"click-text-to-view-details": "Cliquez sur <0>{{text}}0> pour voir les détails.",
"closed-this-task": "fermer cette tâche",
"collaborate-with-other-user": "pour collaborer avec d'autres utilisateurs.",
@@ -1782,6 +1783,7 @@
"schedule-for-ingestion-description": "La programmation peut être configurée à une cadence horaire, quotidienne ou hebdomadaire. Le fuseau horaire est en UTC.",
"scheduled-run-every": "Programmer pour être exécuté tous les",
"scopes-comma-separated": "Liste de scopes séparée par une virgule.",
+ "search-entity-count": "{{count}} assets have been found with this filter.",
"search-for-edge": "Rechercher Pipeline, Procédures Stockées",
"search-for-entity-types": "Rechercher Tables, Topics, Tableaux de Bord, Pipelines et Modèles d'IA",
"search-for-ingestion": "Rechercher une ingestion",
diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/he-he.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/he-he.json
index 6e799c49c284..7e6b4580c659 100644
--- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/he-he.json
+++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/he-he.json
@@ -1393,6 +1393,7 @@
"can-not-add-widget": "לא ניתן להוסיף את הווידג'ט לסקשן זה עקב הגבלות בגודל.",
"can-you-add-a-description": "האם תוכל להוסיף תיאור?",
"checkout-service-connectors-doc": "ישנם חיבורים רבים כאן זמינים לאינדקסציה של נתונים מהשירותים שלך. בדוק את החיבורים שלנו.",
+ "click-here-to-view-assets-on-explore": "(Click to view the filtered assets on Explore page.)",
"click-text-to-view-details": "לחץ על <0>{{text}}0> לצפייה בפרטים.",
"closed-this-task": "סגר משימה זו",
"collaborate-with-other-user": "לשתף פעולה עם משתמשים אחרים.",
@@ -1782,6 +1783,7 @@
"schedule-for-ingestion-description": "ניתן להגדיר שימוש כל שעה, יומית או שבועית. אזור הזמן הוא UTC.",
"scheduled-run-every": "מתוזמן לרוץ כל",
"scopes-comma-separated": "הוסף את ערכי הניקוד, מופרדים בפסיקים",
+ "search-entity-count": "{{count}} assets have been found with this filter.",
"search-for-edge": "חיפוש לפי תהליך טעינה, פונקציות מאוחסנות",
"search-for-entity-types": "חיפוש לפי טבלאות, נושאים, דשבורדים, תהליכי טעינה, מודלי למידת מכונה, מילוני מונחים ותגיות",
"search-for-ingestion": "חיפוש תהליך טעינה (Ingestion)",
diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ja-jp.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ja-jp.json
index ae9b24c9baf9..b810ae443db0 100644
--- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ja-jp.json
+++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ja-jp.json
@@ -1393,6 +1393,7 @@
"can-not-add-widget": "Can not add the widget to this section due to size restrictions.",
"can-you-add-a-description": "説明を追加できますか?",
"checkout-service-connectors-doc": "There are a lot of connectors available here to index data from your services. Please checkout our connectors.",
+ "click-here-to-view-assets-on-explore": "(Click to view the filtered assets on Explore page.)",
"click-text-to-view-details": "Click <0>{{text}}0> to view details.",
"closed-this-task": "このタスクを閉じました",
"collaborate-with-other-user": "to collaborate with other users.",
@@ -1782,6 +1783,7 @@
"schedule-for-ingestion-description": "Scheduling can be set up at an hourly, daily, or weekly cadence. The timezone is in UTC.",
"scheduled-run-every": "Scheduled to run every",
"scopes-comma-separated": "スコープの値をカンマで区切って追加",
+ "search-entity-count": "{{count}} assets have been found with this filter.",
"search-for-edge": "Search for Pipeline, StoredProcedures",
"search-for-entity-types": "テーブル、トピック、ダッシュボード、パイプライン、MLモデルの検索。",
"search-for-ingestion": "Search for ingestion",
diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/nl-nl.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/nl-nl.json
index 1b34e364d97c..9a8df974dc79 100644
--- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/nl-nl.json
+++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/nl-nl.json
@@ -1393,6 +1393,7 @@
"can-not-add-widget": "Kan de widget niet toevoegen aan deze sectie vanwege beperkingen in grootte.",
"can-you-add-a-description": "Kunt u een beschrijving toevoegen?",
"checkout-service-connectors-doc": "Er zijn hier veel connectors beschikbaar om data van uw services te indexeren. Bekijk onze connectors.",
+ "click-here-to-view-assets-on-explore": "(Click to view the filtered assets on Explore page.)",
"click-text-to-view-details": "Klik op <0>{{text}}0> om details te bekijken.",
"closed-this-task": "heeft deze taak gesloten",
"collaborate-with-other-user": "om samen te werken met andere gebruikers.",
@@ -1782,6 +1783,7 @@
"schedule-for-ingestion-description": "Planning kan worden ingesteld op een uurlijkse, dagelijkse of wekelijkse cadans. De tijdzone is in UTC.",
"scheduled-run-every": "Gepland om elke keer uit te voeren",
"scopes-comma-separated": "Voeg de herkomstwaarde toe, gescheiden door komma's",
+ "search-entity-count": "{{count}} assets have been found with this filter.",
"search-for-edge": "Zoeken naar Pipeline, Stored Procedures",
"search-for-entity-types": "Zoeken naar Tabellen, Onderwerpen, Dashboards, Pipelines, ML-modellen, Woordenlijst en Tags.",
"search-for-ingestion": "Zoeken naar ingestie",
diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pr-pr.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pr-pr.json
index 83666f2f87d3..219d7edd97d7 100644
--- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pr-pr.json
+++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pr-pr.json
@@ -1393,6 +1393,7 @@
"can-not-add-widget": "به دلیل محدودیتهای اندازه، نمیتوان ویجت را به این بخش اضافه کرد.",
"can-you-add-a-description": "آیا میتوانید توضیحی اضافه کنید؟",
"checkout-service-connectors-doc": "اینجا تعدادی از اتصالات برای ایندکس کردن دادهها از خدمات خود موجود است. لطفاً مستندات ما را بررسی کنید.",
+ "click-here-to-view-assets-on-explore": "(Click to view the filtered assets on Explore page.)",
"click-text-to-view-details": "برای مشاهده جزئیات، روی <0>{{text}}0> کلیک کنید.",
"closed-this-task": "این وظیفه را بست.",
"collaborate-with-other-user": "برای همکاری با کاربران دیگر.",
@@ -1782,6 +1783,7 @@
"schedule-for-ingestion-description": "برنامهریزی میتواند به صورت ساعتی، روزانه یا هفتگی تنظیم شود. منطقه زمانی UTC است.",
"scheduled-run-every": "برنامهریزی شده برای اجرا هر",
"scopes-comma-separated": "مقدار Scopes را با کاما جدا کنید.",
+ "search-entity-count": "{{count}} assets have been found with this filter.",
"search-for-edge": "جستجوی خطوط لوله، StoredProcedures.",
"search-for-entity-types": "جستجوی جداول، موضوعات، داشبوردها، خطوط لوله، مدلهای ML، واژهنامه و برچسبها.",
"search-for-ingestion": "جستجوی ورود داده.",
diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-br.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-br.json
index eb1baa9f4613..d10839ef589b 100644
--- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-br.json
+++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-br.json
@@ -1393,6 +1393,7 @@
"can-not-add-widget": "Não é possível adicionar o widget a esta seção devido a restrições de tamanho.",
"can-you-add-a-description": "Você pode adicionar uma descrição?",
"checkout-service-connectors-doc": "Há muitos conectores disponíveis aqui para indexar dados de seus serviços. Por favor, confira nossos conectores.",
+ "click-here-to-view-assets-on-explore": "(Click to view the filtered assets on Explore page.)",
"click-text-to-view-details": "Clique em <0>{{text}}0> para ver detalhes.",
"closed-this-task": "fechou esta tarefa",
"collaborate-with-other-user": "para colaborar com outros usuários.",
@@ -1782,6 +1783,7 @@
"schedule-for-ingestion-description": "O agendamento pode ser configurado em uma frequência horária, diária ou semanal. O fuso horário é em UTC.",
"scheduled-run-every": "Agendado para rodar a cada",
"scopes-comma-separated": "Adicione o valor dos Escopos, separados por vírgulas",
+ "search-entity-count": "{{count}} assets have been found with this filter.",
"search-for-edge": "Pesquisar por Pipeline, StoredProcedures",
"search-for-entity-types": "Pesquisar por Tabelas, Tópicos, Painéis, Pipelines, Modelos de ML, Glossário e Tags.",
"search-for-ingestion": "Pesquisar por ingestão",
diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ru-ru.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ru-ru.json
index 28a568ab50c4..c057687dc212 100644
--- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ru-ru.json
+++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ru-ru.json
@@ -1393,6 +1393,7 @@
"can-not-add-widget": "Can not add the widget to this section due to size restrictions.",
"can-you-add-a-description": "Можете добавить описание?",
"checkout-service-connectors-doc": "Здесь доступно множество коннекторов для индексации данных из ваших сервисов. Пожалуйста, ознакомьтесь с нашими коннекторами.",
+ "click-here-to-view-assets-on-explore": "(Click to view the filtered assets on Explore page.)",
"click-text-to-view-details": "Нажмите <0>{{text}}0>, чтобы просмотреть подробности.",
"closed-this-task": "задача закрыта",
"collaborate-with-other-user": "для совместной работы с другими пользователями.",
@@ -1782,6 +1783,7 @@
"schedule-for-ingestion-description": "Планирование может быть настроено на почасовой, ежедневной или еженедельной частоте. Часовой пояс указан в формате UTC.",
"scheduled-run-every": "Запланирован запуск каждый",
"scopes-comma-separated": "Добавьте значение областей, разделенное запятыми",
+ "search-entity-count": "{{count}} assets have been found with this filter.",
"search-for-edge": "Search for Pipeline, StoredProcedures",
"search-for-entity-types": "Поиск по таблицам, топикам, дашбордам, пайплайнам, моделям машинного обучения, глоссарию и тегам.",
"search-for-ingestion": "Поиск для получения",
diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/zh-cn.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/zh-cn.json
index ef3a93128a21..b3d2e527c351 100644
--- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/zh-cn.json
+++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/zh-cn.json
@@ -1393,6 +1393,7 @@
"can-not-add-widget": "Can not add the widget to this section due to size restrictions.",
"can-you-add-a-description": "您能添加一些描述吗?",
"checkout-service-connectors-doc": "我们已经预置了很多连接器, 可用于索引您的各项服务数据",
+ "click-here-to-view-assets-on-explore": "(Click to view the filtered assets on Explore page.)",
"click-text-to-view-details": "点击<0>{{text}}0>查看详情",
"closed-this-task": "关闭了此任务",
"collaborate-with-other-user": "与其他用户协作",
@@ -1782,6 +1783,7 @@
"schedule-for-ingestion-description": "可设置每小时、每天或每周的计划, 时区为 UTC",
"scheduled-run-every": "计划每次运行",
"scopes-comma-separated": "范围值逗号分隔",
+ "search-entity-count": "{{count}} assets have been found with this filter.",
"search-for-edge": "搜索工作流、存储过程",
"search-for-entity-types": "搜索数据表、消息主题、仪表板、工作流和机械学习模型",
"search-for-ingestion": "搜索提取作业",