fix(chore): UI feedback fixes (#13859)

* fix(chore): change errorplaceholder in explore and added tooltip around url style url

* supported helper text in add form for glossary and classification tags

* created separate formLabel component

* minor changes

* changes as per comments
This commit is contained in:
Ashish Gupta 2023-11-08 17:57:14 +05:30 committed by GitHub
parent e42a781aaf
commit ab0840aa6f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 184 additions and 14 deletions

View File

@ -0,0 +1,22 @@
/*
* Copyright 2023 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 { TooltipPlacement, TooltipProps } from 'antd/lib/tooltip';
import { ReactNode } from 'react';
export interface FormItemLabelProps {
label: ReactNode;
helperText?: string;
placement?: TooltipPlacement;
align?: TooltipProps['align'];
}

View File

@ -0,0 +1,53 @@
/*
* Copyright 2023 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 { render, screen } from '@testing-library/react';
import React from 'react';
import { FormItemLabelProps } from './Form.interface';
import FormItemLabel from './FormItemLabel';
const mockProps: FormItemLabelProps = {
label: 'name',
};
describe('Test FormItemLabel Component', () => {
it('Should render FormItemLabel component', async () => {
render(<FormItemLabel {...mockProps} />);
const label = screen.getByTestId('form-item-label');
expect(label).toContainHTML(mockProps.label as string);
});
it('Should not render helper icon if no helper text passed', async () => {
render(<FormItemLabel {...mockProps} />);
const label = screen.getByTestId('form-item-label');
const helpIcon = screen.queryByTestId('helper-icon');
expect(label).toContainHTML(mockProps.label as string);
expect(helpIcon).not.toBeInTheDocument();
});
it('Should render helper icon if helper text passed', async () => {
render(<FormItemLabel {...mockProps} helperText="help" />);
const label = screen.getByTestId('form-item-label');
const helpIcon = screen.getByTestId('helper-icon');
expect(label).toContainHTML(mockProps.label as string);
expect(helpIcon).toBeInTheDocument();
});
});

View File

@ -0,0 +1,42 @@
/*
* Copyright 2023 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 { Tooltip } from 'antd';
import React from 'react';
import { GRAYED_OUT_COLOR } from '../../constants/constants';
import { FormItemLabelProps } from './Form.interface';
const FormItemLabel = ({
label,
helperText,
align,
placement = 'top',
}: FormItemLabelProps) => {
return (
<>
<span data-testid="form-item-label">{label}</span>
{helperText && (
<Tooltip align={align} placement={placement} title={helperText}>
<InfoCircleOutlined
className="m-l-xs"
data-testid="helper-icon"
style={{ color: GRAYED_OUT_COLOR }}
/>
</Tooltip>
)}
</>
);
};
export default FormItemLabel;

View File

@ -288,8 +288,10 @@ const AddGlossaryTermForm = ({
required: false,
placeholder: t('label.icon-url'),
type: FieldTypes.TEXT,
helperText: t('message.govern-url-size-message'),
props: {
'data-testid': 'icon-url',
tooltipPlacement: 'right',
},
},
{

View File

@ -17,6 +17,7 @@ import React from 'react';
import { useTranslation } from 'react-i18next';
import { HEX_COLOR_CODE_REGEX } from '../../../constants/regex.constants';
import ColorPicker from '../../common/ColorPicker/ColorPicker.component';
import FormItemLabel from '../../Form/FormItemLabel';
import { StyleModalProps, StyleWithInput } from './StyleModal.interface';
const StyleModal = ({ open, onCancel, onSubmit, style }: StyleModalProps) => {
@ -55,7 +56,16 @@ const StyleModal = ({ open, onCancel, onSubmit, style }: StyleModalProps) => {
form.setFieldValue('color', value.colorInput);
}
}}>
<Form.Item label={t('label.icon-url')} name="iconURL">
<Form.Item
label={
<FormItemLabel
align={{ targetOffset: [18, 0] }}
helperText={t('message.govern-url-size-message')}
label={t('label.icon-url')}
placement="topLeft"
/>
}
name="iconURL">
<Input
data-testid="icon-url"
placeholder={t('label.enter-entity', {

View File

@ -32,6 +32,7 @@ import {
} from '../../../enums/common.enum';
import { Transi18next } from '../../../utils/CommonUtils';
import i18n from '../../../utils/i18next/LocalUtil';
import { useDomainProvider } from '../../Domain/DomainProvider/DomainProvider';
import ErrorPlaceHolder from './ErrorPlaceHolder';
type Props = {
@ -72,6 +73,7 @@ const ErrorPlaceHolderES = ({ type, errorMessage, query }: Props) => {
const { tab } = useParams<{ tab: string }>();
const { t } = useTranslation();
const history = useHistory();
const { activeDomain } = useDomainProvider();
const isQuery = useMemo(
() =>
@ -97,9 +99,16 @@ const ErrorPlaceHolderES = ({ type, errorMessage, query }: Props) => {
}
/>
) : (
<ErrorPlaceHolder>
<ErrorPlaceHolder type={ERROR_PLACEHOLDER_TYPE.CUSTOM}>
<Typography.Paragraph style={{ marginBottom: '0' }}>
{t('message.add-service-connection')}
{t('message.no-data-available-entity', {
entity: activeDomain,
})}
</Typography.Paragraph>
<Typography.Paragraph style={{ marginBottom: '0' }}>
{t('message.add-data-asset-domain', {
domain: activeDomain,
})}
</Typography.Paragraph>
<Typography.Paragraph>
<Transi18next

View File

@ -1151,12 +1151,12 @@
"action-has-been-done-but-deploy-successfully": "{{action}} wurde erfolgreich durchgeführt und bereitgestellt.",
"action-has-been-done-but-failed-to-deploy": "{{action}} wurde durchgeführt, aber die Bereitstellung ist fehlgeschlagen.",
"active-users": "Zeigen Sie die Anzahl der aktiven Benutzer an.",
"add-data-asset-domain": "Start by adding a service or data asset to the {{domain}}.",
"add-kpi-message": "Identifizieren Sie die Key Performance Indicators (KPIs), die den Zustand Ihrer Datenvermögenswerte am besten widerspiegeln. Überprüfen Sie Ihre Datenvermögenswerte anhand von Beschreibung, Eigentum und Stufe. Definieren Sie Ihre Zielmetriken absolut oder prozentual, um Ihren Fortschritt zu verfolgen. Legen Sie schließlich ein Start- und Enddatum fest, um Ihre Datenziele zu erreichen.",
"add-new-service-description": "Wählen Sie aus dem Bereich der Dienste aus, die OpenMetadata integriert. Um einen neuen Dienst hinzuzufügen, wählen Sie zunächst eine Dienstkategorie (Datenbank, Messaging, Dashboard oder Pipeline) aus. Wählen Sie aus der Liste der verfügbaren Dienste denjenigen aus, den Sie integrieren möchten.",
"add-policy-message": "Richtlinien werden Teams zugewiesen. In OpenMetadata ist eine Richtlinie eine Sammlung von Regeln, die den Zugriff basierend auf bestimmten Bedingungen definieren. Wir unterstützen reichhaltige SpEL (Spring Expression Language)-basierte Bedingungen. Alle von einer Entität unterstützten Operationen werden veröffentlicht. Verwenden Sie diese feinkörnigen Operationen, um die bedingten Regeln für jede Richtlinie zu definieren. Erstellen Sie gut definierte Richtlinien basierend auf bedingten Regeln, um umfangreiche Zugriffssteuerungsrollen zu erstellen.",
"add-query-helper-message": "Fügen Sie eine SQL-Abfrage zur Ausführung in der Datenbank hinzu. Die gleiche Abfrage kann mehreren Tabellen hinzugefügt werden, indem Sie aus den Tabellen in der Option 'Verwendete Abfrage' auswählen. Wählen Sie aus, Ihre Abfrage für zukünftige Referenz zu beschreiben.",
"add-role-message": "Rollen werden Benutzern zugewiesen. In OpenMetadata sind Rollen Sammlungen von Richtlinien. Jede Rolle muss mindestens eine Richtlinie angehängt haben. Eine Rolle unterstützt mehrere Richtlinien mit einer Eins-zu-vielen-Beziehung. Stellen Sie sicher, dass die erforderlichen Richtlinien erstellt sind, bevor Sie eine neue Rolle erstellen. Erstellen Sie umfangreiche Zugriffssteuerungsrollen mit gut definierten Richtlinien basierend auf bedingten Regeln.",
"add-service-connection": "Beginnen Sie damit, eine Dienstverbindung hinzuzufügen, um Daten in OpenMetadata einzuführen.",
"adding-new-entity-is-easy-just-give-it-a-spin": "Das Hinzufügen einer neuen {{entity}} ist einfach, probieren Sie es einfach aus!",
"adding-new-tag": "Neuen Tag zu {{categoryName}} hinzufügen",
"adding-new-user-to-entity": "Neue Benutzer zu {{entity}} hinzufügen",
@ -1336,6 +1336,7 @@
"glossary-term-description": "Jeder Begriff im Glossar hat eine eindeutige Definition. Neben der Definition des Standardbegriffs für ein Konzept können auch Synonyme sowie verwandte Begriffe (z. B. übergeordnete und untergeordnete Begriffe) angegeben werden. Es können Referenzen zu den Assets hinzugefügt werden, die sich auf die Begriffe beziehen. Neue Begriffe können dem Glossar hinzugefügt oder aktualisiert werden. Die Glossarbegriffe können von bestimmten Benutzern überprüft werden, die die Begriffe akzeptieren oder ablehnen können.",
"glossary-term-status": "Glossary Term was {{status}}.",
"go-back-to-login-page": "Zurück zur Anmeldeseite",
"govern-url-size-message": "Icon aspect ratio should be 1:1 and Recommended size should be 64 x 64 px",
"group-team-type-change-message": "Der Teamtyp 'Gruppe' kann nicht geändert werden. Erstellen Sie bitte ein neues Team mit dem gewünschten Typ.",
"group-type-team-not-allowed-to-have-sub-team": "Teams, die als Gruppen-Typ klassifiziert sind, dürfen keine Unterteams in ihrer Struktur haben.",
"has-been-created-successfully": "wurde erfolgreich erstellt.",
@ -1393,6 +1394,7 @@
"no-config-available": "Keine Verbindungskonfigurationen verfügbar.",
"no-data": "Keine Daten",
"no-data-available": "Keine Daten verfügbar.",
"no-data-available-entity": "No data is available in the {{entity}}.",
"no-data-available-for-selected-filter": "Keine Daten gefunden. Versuchen Sie, die Filter zu ändern.",
"no-domain-assigned-to-entity": "No Domains are Assigned to {{entity}}",
"no-domain-available": "No Domains are available to configure. Click on <0>{{link}}</0> to add Domains",

View File

@ -1151,12 +1151,12 @@
"action-has-been-done-but-deploy-successfully": "has been {{action}} and deployed successfully",
"action-has-been-done-but-failed-to-deploy": "has been {{action}}, but failed to deploy",
"active-users": "Display the number of active users.",
"add-data-asset-domain": "Start by adding a service or data asset to the {{domain}}.",
"add-kpi-message": "Identify the Key Performance Indicators (KPI) that best reflect the health of your data assets. Review your data assets based on Description, Ownership, and Tier. Define your target metrics in absolute or percentage to track your progress. Finally, set a start and end date to achieve your data goals.",
"add-new-service-description": "Choose from the range of services that OpenMetadata integrates with. To add a new service, start by selecting a Service Category (Database, Messaging, Dashboard, or Pipeline). From the list of available services, select the one you'd want to integrate with.",
"add-policy-message": "Policies are assigned to teams. In OpenMetadata, a policy is a collection of rules, which define access based on certain conditions. We support rich SpEL (Spring Expression Language) based conditions. All the operations supported by an entity are published. Use these fine grained operations to define the conditional rules for each policy. Create well-defined policies based on conditional rules to build rich access control roles.",
"add-query-helper-message": "Add a SQL query to execute in the database. The same query can be added to multiple tables by selecting from the tables in the option Query used in. Choose to describe your query for future reference.",
"add-role-message": "Roles are assigned to Users. In OpenMetadata, Roles are a collection of Policies. Each Role must have at least one policy attached to it. A Role supports multiple policies with a one to many relationship. Ensure that the necessary policies are created before creating a new role. Build rich access control roles with well-defined policies based on conditional rules.",
"add-service-connection": "Start by adding a service connection to ingest data into OpenMetadata.",
"adding-new-entity-is-easy-just-give-it-a-spin": "Adding a new {{entity}} is easy, just give it a spin!",
"adding-new-tag": "Adding new tag on {{categoryName}}",
"adding-new-user-to-entity": "Adding new users to {{entity}}",
@ -1336,6 +1336,7 @@
"glossary-term-description": "Every term in the glossary has a unique definition. Along with defining the standard term for a concept, the synonyms as well as related terms (for e.g., parent and child terms) can be specified. References can be added to the assets related to the terms. New terms can be added or updated to the Glossary. The glossary terms can be reviewed by certain users, who can accept or reject the terms.",
"glossary-term-status": "Glossary Term was {{status}}.",
"go-back-to-login-page": "Go back to Login page",
"govern-url-size-message": "Icon aspect ratio should be 1:1 and Recommended size should be 64 x 64 px",
"group-team-type-change-message": "The team type 'Group' cannot be changed. Please create a new team with the preferred type.",
"group-type-team-not-allowed-to-have-sub-team": "Teams classified as Group type are not permitted to have any sub-teams within their structure.",
"has-been-created-successfully": "has been created successfully",
@ -1393,6 +1394,7 @@
"no-config-available": "No Connection Configs available.",
"no-data": "No data",
"no-data-available": "No data available.",
"no-data-available-entity": "No data is available in the {{entity}}.",
"no-data-available-for-selected-filter": "No data found. Try changing the filters.",
"no-domain-assigned-to-entity": "No Domains are Assigned to {{entity}}",
"no-domain-available": "No Domains are available to configure. Click on <0>{{link}}</0> to add Domains",

View File

@ -1151,12 +1151,12 @@
"action-has-been-done-but-deploy-successfully": "se ha {{action}} y se ha deployado correctamente",
"action-has-been-done-but-failed-to-deploy": "se ha {{action}}, pero no se ha podido deployar",
"active-users": "Mostrar el número de usuarios activos.",
"add-data-asset-domain": "Start by adding a service or data asset to the {{domain}}.",
"add-kpi-message": "Identifique los Indicadores Clave de Rendimiento (KPI) que mejor reflejen la salud de sus activos de datos. Revise sus activos de datos según su Descripción, Propiedad y Nivel. Defina sus métricas objetivas en valor absoluto o porcentaje para realizar un seguimiento de su progreso. Por último, establezca una fecha de inicio y de finalización para alcanzar sus objetivos de datos.",
"add-new-service-description": "Elija entre la gama de servicios con los que se integra OpenMetadata. Para añadir un nuevo servicio, comience seleccionando una Categoría de Servicio (Base de datos, Streaming, Dashboards o Pipelines). De la lista de servicios disponibles, seleccione el que desea ingestar.",
"add-policy-message": "Las políticas se asignan a los equipos. En OpenMetadata, una política es una colección de reglas que definen el acceso en función de ciertas condiciones. Admitimos condiciones ricas basadas en SpEL (Lenguaje de Expresión de Spring). Todas las operaciones admitidas por una entidad se publican. Utilice estas operaciones finamente detalladas para definir las reglas condicionales para cada política. Cree políticas bien definidas basadas en reglas condicionales para construir roles de control de acceso ricos.",
"add-query-helper-message": "Add a SQL query to execute in the database. The same query can be added to multiple tables by selecting from the tables in the option Query used in. Choose to describe your query for future reference.",
"add-role-message": "Los roles se asignan a los usuarios. En OpenMetadata, los Roles son una colección de Políticas. Cada rol debe tener al menos una política adjunta a él. Un Rol admite varias políticas con una relación de uno a muchos. Asegúrese de que se hayan creado las políticas necesarias antes de crear un nuevo rol. Cree roles de control de acceso ricos con políticas bien definidas basadas en reglas condicionales.",
"add-service-connection": "Comienza añadiendo una conexión de servicio para ingestar datos en OpenMetadata.",
"adding-new-entity-is-easy-just-give-it-a-spin": "Añadir una nueva {{entity}} es fácil, ¡pruébalo!",
"adding-new-tag": "Añadir nueva etiqueta en {{categoryName}}",
"adding-new-user-to-entity": "Añadir nuevos usuarios a {{entity}}",
@ -1336,6 +1336,7 @@
"glossary-term-description": "Cada término en el glosario tiene una definición única. Además de definir el término estándar para un concepto, se pueden especificar sinónimos y términos relacionados (por ejemplo, términos padre e hijo). Se pueden agregar referencias a los activos relacionados con los términos. Se pueden agregar o actualizar nuevos términos al glosario. Los términos del glosario pueden ser revisados por ciertos usuarios, quienes pueden aceptar o rechazar los términos.",
"glossary-term-status": "Glossary Term was {{status}}.",
"go-back-to-login-page": "Volver a la página de inicio de sesión",
"govern-url-size-message": "Icon aspect ratio should be 1:1 and Recommended size should be 64 x 64 px",
"group-team-type-change-message": "El tipo de equipo 'Grupo' no se puede cambiar. Por favor, cree un nuevo equipo con el tipo preferido.",
"group-type-team-not-allowed-to-have-sub-team": "Teams classified as Group type are not permitted to have any sub-teams within their structure.",
"has-been-created-successfully": "se ha creado exitosamente",
@ -1393,6 +1394,7 @@
"no-config-available": "No hay configuraciones de conexión disponibles.",
"no-data": "No hay datos",
"no-data-available": "No hay datos disponibles.",
"no-data-available-entity": "No data is available in the {{entity}}.",
"no-data-available-for-selected-filter": "No se encontraron datos. Intenta cambiar los filtros.",
"no-domain-assigned-to-entity": "No Domains are Assigned to {{entity}}",
"no-domain-available": "No Domains are available to configure. Click on <0>{{link}}</0> to add Domains",

View File

@ -1151,12 +1151,12 @@
"action-has-been-done-but-deploy-successfully": "{{action}} avec succès et déployé avec succès",
"action-has-been-done-but-failed-to-deploy": "{{action}} avec succès, mais n'a pu être déployé",
"active-users": "Montre le nombre d'utilisateurs actifs.",
"add-data-asset-domain": "Start by adding a service or data asset to the {{domain}}.",
"add-kpi-message": "Identifiez les Key Performance Indicators (KPI) qui représentent le mieux la santé de votre plateforme. Évaluez vos ressources de données selon la Description, la Propriété et le Rang. Définissez les indicateurs en pourcentage ou en absolu pour suivre vos progrès. Enfin, ajoutez une date de début et de fin pour l'accomplissement de vos objectifs",
"add-new-service-description": "Choisissez le service que vous souhaitez intégrer à OpenMetadata. Pour ajouter un nouveau service, commencez par sélectionner une catégorie de service (base de données, messagerie, tableau de bord ou pipeline). Dans la liste des services disponibles, sélectionnez celui que vous souhaitez intégrer.",
"add-policy-message": "Les stratégies sont attribuées aux équipes. Dans OpenMetadata, une police est une collection de règles qui définissent les accès selon certaines conditions. Nous supportons les conditions SpEL (Spring Expression Language). Toutes les opérations supportées par une ressource sont publiées. Utilisez ces opérations pour définir les règles conditionnelles pour les polices. Créez des polices bien définies fondées sur des règles conditionnelles pour construire des contrôles d'accès riches.",
"add-query-helper-message": "Ajoutez une requête SQL à exécuter dans la base de données. La même requête peut être ajoutée à plusieurs tables en sélectionnant les tables dans l'option « Requête utilisée dans ». Choisissez de décrire votre requête pour référence future.",
"add-role-message": "Les Rôles sont attribués aux Utilisateurs. Dans OpenMetadata, les rôles représentent une collection de polices. Chaque rôle doit avoir au moins une police. Un rôle supporte plusieurs polices avec une relation de un-à-plusieurs. Soyez sûr que les polices ont bien été créées avant de créer un nouveau rôle. Créez des polices bien définies fondées sur des règles conditionnelles pour construire des contrôles d'accès riches.",
"add-service-connection": "Commencez par ajouter une connexion de service pour ingérer des données dans OpenMetadata.",
"adding-new-entity-is-easy-just-give-it-a-spin": "Ajouter un nouveau {{entity}} est facile, il suffit de lui donner un tour !",
"adding-new-tag": "Ajouter un nouveau tag pour {{categoryName}}",
"adding-new-user-to-entity": "Ajouter de nouveaux utilisateurs à {{entity}}",
@ -1336,6 +1336,7 @@
"glossary-term-description": "Chaque terme du glossaire a une définition unique. En plus de définir le terme standard pour un concept, les synonymes ainsi que les termes associés (par exemple, les termes parent et enfant) peuvent être spécifiés. Des références peuvent être ajoutées aux actifs liés aux termes. De nouveaux termes peuvent être ajoutés ou mis à jour dans le glossaire. Les termes du glossaire peuvent être examinés par certains utilisateurs, qui peuvent accepter ou rejeter les termes.",
"glossary-term-status": "Glossary Term was {{status}}.",
"go-back-to-login-page": "Retour à la page d'accueil",
"govern-url-size-message": "Icon aspect ratio should be 1:1 and Recommended size should be 64 x 64 px",
"group-team-type-change-message": "Le type 'Group' pour l'équipe ne peut pas être changé. Merci de créer une nouvelle équipe avec le type préférentiel.",
"group-type-team-not-allowed-to-have-sub-team": "Les équipes classées comme de type 'Groupe' ne sont pas autorisées à avoir des sous-équipes dans leur structure.",
"has-been-created-successfully": "a été créé avec succès",
@ -1393,6 +1394,7 @@
"no-config-available": "Aucun paramètre de connexion disponible.",
"no-data": "Aucune donnée",
"no-data-available": "Aucune donnée disponible",
"no-data-available-entity": "No data is available in the {{entity}}.",
"no-data-available-for-selected-filter": "Aucune donnée trouvée. Essayez de modifier les filtres.",
"no-domain-assigned-to-entity": "No Domains are Assigned to {{entity}}",
"no-domain-available": "No Domains are available to configure. Click on <0>{{link}}</0> to add Domains",

View File

@ -1151,12 +1151,12 @@
"action-has-been-done-but-deploy-successfully": "has been {{action}} and deployed successfully",
"action-has-been-done-but-failed-to-deploy": "has been {{action}}, but failed to deploy",
"active-users": "アクティブなユーザ数を表示",
"add-data-asset-domain": "Start by adding a service or data asset to the {{domain}}.",
"add-kpi-message": "Identify the Key Performance Indicators (KPI) that best reflect the health of your data assets. Review your data assets based on Description, Ownership, and Tier. Define your target metrics in absolute or percentage to track your progress. Finally, set a start and end date to achieve your data goals.",
"add-new-service-description": "Choose from the range of services that OpenMetadata integrates with. To add a new service, start by selecting a Service Category (Database, Messaging, Dashboard, or Pipeline). From the list of available services, select the one you'd want to integrate with.",
"add-policy-message": "Policies are assigned to teams. In OpenMetadata, a policy is a collection of rules, which define access based on certain conditions. We support rich SpEL (Spring Expression Language) based conditions. All the operations supported by an entity are published. Use these fine grained operations to define the conditional rules for each policy. Create well-defined policies based on conditional rules to build rich access control roles.",
"add-query-helper-message": "Add a SQL query to execute in the database. The same query can be added to multiple tables by selecting from the tables in the option Query used in. Choose to describe your query for future reference.",
"add-role-message": "Roles are assigned to Users. In OpenMetadata, Roles are a collection of Policies. Each Role must have at least one policy attached to it. A Role supports multiple policies with a one to many relationship. Ensure that the necessary policies are created before creating a new role. Build rich access control roles with well-defined policies based on conditional rules.",
"add-service-connection": "OpenMetadataにデータを取り込むためにサービスとの接続を追加しましょう。",
"adding-new-entity-is-easy-just-give-it-a-spin": "新しい{{entity}}の追加は簡単です。試してみてください!",
"adding-new-tag": "{{categoryName}}に新しいタグを追加します",
"adding-new-user-to-entity": "{{entity}}に新しいユーザを追加します",
@ -1336,6 +1336,7 @@
"glossary-term-description": "Every term in the glossary has a unique definition. Along with defining the standard term for a concept, the synonyms as well as related terms (for e.g., parent and child terms) can be specified. References can be added to the assets related to the terms. New terms can be added or updated to the Glossary. The glossary terms can be reviewed by certain users, who can accept or reject the terms.",
"glossary-term-status": "Glossary Term was {{status}}.",
"go-back-to-login-page": "ログインページに戻る",
"govern-url-size-message": "Icon aspect ratio should be 1:1 and Recommended size should be 64 x 64 px",
"group-team-type-change-message": "The team type 'Group' cannot be changed. Please create a new team with the preferred type.",
"group-type-team-not-allowed-to-have-sub-team": "Teams classified as Group type are not permitted to have any sub-teams within their structure.",
"has-been-created-successfully": "正常に作成されました",
@ -1393,6 +1394,7 @@
"no-config-available": "利用可能な接続の設定はありません。",
"no-data": "データがありません",
"no-data-available": "利用できるデータがありません",
"no-data-available-entity": "No data is available in the {{entity}}.",
"no-data-available-for-selected-filter": "No data found. Try changing the filters.",
"no-domain-assigned-to-entity": "No Domains are Assigned to {{entity}}",
"no-domain-available": "No Domains are available to configure. Click on <0>{{link}}</0> to add Domains",

View File

@ -1151,12 +1151,12 @@
"action-has-been-done-but-deploy-successfully": "foi {{action}} e implantado com sucesso",
"action-has-been-done-but-failed-to-deploy": "foi {{action}}, mas falhou ao implantar",
"active-users": "Exibir o número de usuários ativos.",
"add-data-asset-domain": "Start by adding a service or data asset to the {{domain}}.",
"add-kpi-message": "Identifique os Indicadores-Chave de Desempenho (KPI) que melhor refletem a saúde dos seus ativos de dados. Revise seus ativos de dados com base na Descrição, Propriedade e Nível. Defina suas métricas de destino em valores absolutos ou percentuais para acompanhar seu progresso. Finalmente, defina uma data de início e de término para alcançar seus objetivos de dados.",
"add-new-service-description": "Escolha entre a variedade de serviços que o OpenMetadata integra. Para adicionar um novo serviço, comece selecionando uma categoria de serviço (Banco de dados, Mensagens, Painel ou Canalização). Na lista de serviços disponíveis, selecione o que você deseja integrar.",
"add-policy-message": "As políticas são atribuídas às equipes. No OpenMetadata, uma política é uma coleção de regras que definem o acesso com base em determinadas condições. Suportamos condições ricas baseadas em SpEL (Spring Expression Language). Todas as operações suportadas por uma entidade são publicadas. Use essas operações detalhadas para definir as regras condicionais para cada política. Crie políticas bem definidas com base em regras condicionais para construir funções de controle de acesso.",
"add-query-helper-message": "Add a SQL query to execute in the database. The same query can be added to multiple tables by selecting from the tables in the option Query used in. Choose to describe your query for future reference.",
"add-role-message": "As funções são atribuídas aos usuários. No OpenMetadata, as funções são uma coleção de políticas. Cada função deve ter pelo menos uma política anexada a ela. Uma função suporta várias políticas com uma relação um-para-muitos. Certifique-se de que as políticas necessárias sejam criadas antes de criar uma nova função. Construa funções de controle de acesso com políticas bem definidas baseadas em regras condicionais.",
"add-service-connection": "Comece adicionando uma conexão de serviço para ingestão de dados no OpenMetadata.",
"adding-new-entity-is-easy-just-give-it-a-spin": "Adicionar uma nova {{entity}} é fácil, apenas experimente!",
"adding-new-tag": "Adicionando nova tag em {{categoryName}}",
"adding-new-user-to-entity": "Adicionando novos usuários a {{entity}}",
@ -1336,6 +1336,7 @@
"glossary-term-description": "Cada termo do glossário tem uma definição única. Além de definir o termo padrão para um conceito, podem ser especificados sinônimos, bem como termos relacionados (por exemplo, termos pai e filho). Referências podem ser adicionadas aos ativos relacionados aos termos. Novos termos podem ser adicionados ou atualizados no glossário. Os termos do glossário podem ser revisados por determinados usuários, que podem aceitar ou rejeitar os termos.",
"glossary-term-status": "Glossary Term was {{status}}.",
"go-back-to-login-page": "Voltar para a página de login",
"govern-url-size-message": "Icon aspect ratio should be 1:1 and Recommended size should be 64 x 64 px",
"group-team-type-change-message": "O tipo de equipe 'Grupo' não pode ser alterado. Por favor, crie uma nova equipe com o tipo preferido.",
"group-type-team-not-allowed-to-have-sub-team": "Teams classified as Group type are not permitted to have any sub-teams within their structure.",
"has-been-created-successfully": "foi criado com sucesso",
@ -1393,6 +1394,7 @@
"no-config-available": "Nenhuma configuração de conexão disponível.",
"no-data": "Nenhum dado",
"no-data-available": "Nenhum dado disponível.",
"no-data-available-entity": "No data is available in the {{entity}}.",
"no-data-available-for-selected-filter": "Nenhum dado encontrado. Tente alterar os filtros.",
"no-domain-assigned-to-entity": "No Domains are Assigned to {{entity}}",
"no-domain-available": "No Domains are available to configure. Click on <0>{{link}}</0> to add Domains",

View File

@ -1151,12 +1151,12 @@
"action-has-been-done-but-deploy-successfully": "было выполнено {{action}} и успешно развернуто",
"action-has-been-done-but-failed-to-deploy": "было {{action}}, но не удалось развернуть",
"active-users": "Отображение количества активных пользователей.",
"add-data-asset-domain": "Start by adding a service or data asset to the {{domain}}.",
"add-kpi-message": "Определите ключевые показатели эффективности (KPI), которые лучше всего отражают состояние ваших объектов данных. Просмотрите свои объекты данных на основе описания, принадлежности и уровня. Определите целевые показатели в абсолютном выражении или в процентах, чтобы отслеживать свой прогресс. Наконец, установите дату начала и окончания для достижения ваших целей в сфере данных.",
"add-new-service-description": "Выбирайте из множества сервисов, с которыми интегрируется OpenMetadata. Чтобы добавить новый сервис, начните с выбора категории сервиса (база данных, обмен сообщениями, информационная панель или пайплайн). Из списка доступных сервисов выберите тот, с которым вы хотите интегрироваться.",
"add-policy-message": "Политики назначаются командам. В OpenMetadata политика — это набор правил, которые определяют доступ на основе определенных условий. Мы поддерживаем обширные условия на основе SpEL (Spring Expression Language). Публикуются все операции, поддерживаемые объектом. Используйте эти детализированные операции для определения условных правил для каждой политики. Создавайте четко определенные политики на основе условных правил для создания расширенных ролей управления доступом.",
"add-query-helper-message": "Добавьте запрос SQL для выполнения в базе данных. Один и тот же запрос можно добавить в несколько таблиц, выбрав из таблиц параметр «Запрос, используемый в». Выберите, чтобы описать свой запрос для дальнейшего использования.",
"add-role-message": "Роли назначаются пользователям. В OpenMetadata роли представляют собой набор политик. К каждой роли должна быть привязана хотя бы одна политика. Роль поддерживает несколько политик с отношением один ко многим. Перед созданием новой роли убедитесь, что созданы необходимые политики. Создавайте расширенные роли управления доступом с четко определенными политиками на основе условных правил.",
"add-service-connection": "Начните с добавления подключения к сервису для приема данных в OpenMetadata.",
"adding-new-entity-is-easy-just-give-it-a-spin": "Добавить новый \"{{entity}}\" легко, просто попробуй!",
"adding-new-tag": "Добавление нового тега в {{categoryName}}",
"adding-new-user-to-entity": "Добавление новых пользователей в {{entity}}",
@ -1336,6 +1336,7 @@
"glossary-term-description": "Каждый термин в глоссарии имеет уникальное определение. Наряду с определением стандартного термина для понятия можно указать синонимы, а также связанные термины (например, родительские и дочерние термины). Ссылки могут быть добавлены к объектам данных, связанным с терминами. Новые термины могут быть добавлены или обновлены в Глоссарий. Термины глоссария могут быть просмотрены определенными пользователями, которые могут принять или отклонить термины.",
"glossary-term-status": "Glossary Term was {{status}}.",
"go-back-to-login-page": "Вернуться на страницу входа",
"govern-url-size-message": "Icon aspect ratio should be 1:1 and Recommended size should be 64 x 64 px",
"group-team-type-change-message": "Тип команды «Группа» изменить нельзя. Пожалуйста, создайте новую команду с предпочтительным типом.",
"group-type-team-not-allowed-to-have-sub-team": "Командам, относящимся к групповому типу, не разрешается иметь какие-либо подкоманды в своей структуре.",
"has-been-created-successfully": "успешно создан",
@ -1393,6 +1394,7 @@
"no-config-available": "Нет доступных конфигураций подключения.",
"no-data": "Нет данных",
"no-data-available": "Данные недоступны.",
"no-data-available-entity": "No data is available in the {{entity}}.",
"no-data-available-for-selected-filter": "Данные не найдены. Попробуйте поменять фильтры.",
"no-domain-assigned-to-entity": "No Domains are Assigned to {{entity}}",
"no-domain-available": "No Domains are available to configure. Click on <0>{{link}}</0> to add Domains",

View File

@ -1151,12 +1151,12 @@
"action-has-been-done-but-deploy-successfully": "{{action}}已完成并成功部署",
"action-has-been-done-but-failed-to-deploy": "{{action}}已完成,但未能部署",
"active-users": "显示活跃用户数量",
"add-data-asset-domain": "Start by adding a service or data asset to the {{domain}}.",
"add-kpi-message": "确定最能反映数据资产健康状况的关键绩效指标 (KPI)。基于描述信息、所有权和数据分级来审查数据资产。定义您的目标指标(绝对值或百分比),以跟踪您的进展。最后,设置开始和结束日期以实现您的数据目标。",
"add-new-service-description": "从 OpenMetadata 集成的服务范围中选择要添加新服务。请首先选择服务类别(数据库、消息队列、仪表板或工作流),再从可用服务列表中选择要集成的服务。",
"add-policy-message": "策略可以被分配给团队。在 OpenMetadata 中,策略是一组规则的集合,基于某些条件定义访问权限。我们支持基于 SpELSpring Expression Language的丰富条件规则已发布支持实体的所有操作。使用这些细粒度操作权限为每个策略定义条件规则。基于条件规则创建明确定义的策略以构建丰富的访问控制角色。",
"add-query-helper-message": "添加一个在数据库中可执行的 SQL 查询语句。通过设置‘查询语句被使用在’选项,该语句可被添加到多个数据表中。请准确描述您的查询语句,便于将来参考和引用。",
"add-role-message": "角色可以被分配给用户。在 OpenMetadata 中,角色是一组策略的集合。每个角色必须至少有一个策略。一个角色支持具有一对多关系的多个策略。在创建新角色之前,请确保已创建必要的策略。基于条件规则创建明确定义的策略,以构建丰富的访问控制角色。",
"add-service-connection": "首先添加服务连接以将数据导入 OpenMetadata",
"adding-new-entity-is-easy-just-give-it-a-spin": "添加新的{{entity}}很容易,马上尝试一下!",
"adding-new-tag": "在{{categoryName}}上添加新标签",
"adding-new-user-to-entity": "添加新用户到{{entity}}",
@ -1336,6 +1336,7 @@
"glossary-term-description": "术语库中的每个术语都有一个唯一的定义。除了为概念定义标准术语之外,还可以指定同义词以及相关术语(例如,父项和子项)。可以向与术语相关的资产添加引用。可以向术语库添加或更新新术语。某些用户可以审查术语,并接受或拒绝这些术语。",
"glossary-term-status": "Glossary Term was {{status}}.",
"go-back-to-login-page": "返回登录页面",
"govern-url-size-message": "Icon aspect ratio should be 1:1 and Recommended size should be 64 x 64 px",
"group-team-type-change-message": "团队类型“组”无法更改,请创建一个具有所需类型的新团队",
"group-type-team-not-allowed-to-have-sub-team": "被设为“组”的团队类型,无法再拥有子团队",
"has-been-created-successfully": "已成功创建",
@ -1393,6 +1394,7 @@
"no-config-available": "没有可用的连接配置",
"no-data": "没有数据",
"no-data-available": "没有可用的数据",
"no-data-available-entity": "No data is available in the {{entity}}.",
"no-data-available-for-selected-filter": "未找到数据,请尝试更改筛选条件",
"no-domain-assigned-to-entity": "No Domains are Assigned to {{entity}}",
"no-domain-available": "No Domains are available to configure. Click on <0>{{link}}</0> to add Domains",

View File

@ -136,8 +136,10 @@ const TagsForm = ({
required: false,
placeholder: t('label.icon-url'),
type: FieldTypes.TEXT,
helperText: t('message.govern-url-size-message'),
props: {
'data-testid': 'icon-url',
tooltipPlacement: 'right',
},
},
{

View File

@ -228,11 +228,14 @@ export const getCountBadge = (
return (
<span
className={classNames(
'p-x-xss m-x-xss global-border rounded-4 text-xs text-center',
'p-x-xss m-x-xss global-border rounded-4 text-center',
clsBG,
className
)}>
<span data-testid="filter-count" title={count.toString()}>
<span
className="text-xs"
data-testid="filter-count"
title={count.toString()}>
{count}
</span>
</span>

View File

@ -19,7 +19,9 @@ import {
InputNumber,
Select,
Switch,
TooltipProps,
} from 'antd';
import { TooltipPlacement } from 'antd/lib/tooltip';
import classNames from 'classnames';
import { compact, startCase } from 'lodash';
import React, { Fragment, ReactNode } from 'react';
@ -34,6 +36,7 @@ import { UserSelectableList } from '../components/common/UserSelectableList/User
import { UserSelectableListProps } from '../components/common/UserSelectableList/UserSelectableList.interface';
import { UserTeamSelectableList } from '../components/common/UserTeamSelectableList/UserTeamSelectableList.component';
import { UserSelectDropdownProps } from '../components/common/UserTeamSelectableList/UserTeamSelectableList.interface';
import FormItemLabel from '../components/Form/FormItemLabel';
import SliderWithInput from '../components/SliderWithInput/SliderWithInput';
import { SliderWithInputProps } from '../components/SliderWithInput/SliderWithInput.interface';
import { FieldProp, FieldTypes } from '../interface/FormUtils.interface';
@ -47,6 +50,7 @@ export const getField = (field: FieldProp) => {
label,
name,
type,
helperText,
required,
props = {},
rules = [],
@ -190,7 +194,14 @@ export const getField = (field: FieldProp) => {
})}
id={id}
key={id}
label={label}
label={
<FormItemLabel
align={props.tooltipAlign as TooltipProps['align']}
helperText={helperText}
label={label}
placement={props.tooltipPlacement as TooltipPlacement}
/>
}
name={name}
rules={fieldRules}
{...internalFormItemProps}