+
}
+ type="link"
+ onClick={handleAddNewRule}>
+ {t('label.add-new-entity', {
entity: t('label.rule'),
})}
- name={[field.name, 'rule']}>
- {/* @ts-expect-error because Form.Item will provide value and onChange */}
-
-
-
+
-
-
-
-
-
+
+
+
+
+
+ >
) : (
{/* @ts-expect-error because Form.Item will provide value and onChange */}
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DataContract/ContractSemanticFormTab/contract-semantic-form-tab.less b/openmetadata-ui/src/main/resources/ui/src/components/DataContract/ContractSemanticFormTab/contract-semantic-form-tab.less
index 189cd618dc3..0b3de7ce503 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/DataContract/ContractSemanticFormTab/contract-semantic-form-tab.less
+++ b/openmetadata-ui/src/main/resources/ui/src/components/DataContract/ContractSemanticFormTab/contract-semantic-form-tab.less
@@ -24,8 +24,17 @@
}
.contract-semantic-form-container {
+ .expanded {
+ .ant-card-head {
+ border-bottom-left-radius: 0 !important;
+ border-bottom-right-radius: 0 !important;
+ }
+ }
+
.expandable-card {
margin-top: 16px;
+ border: 1px solid @border-color-7 !important;
+ box-shadow: 0 1px 2px 0 @grey-27;
.ant-card-head {
background: @white !important;
@@ -37,6 +46,48 @@
.ant-card-head {
display: none;
}
+
+ .ant-card-body {
+ padding: 0;
+
+ .semantic-form-item-content {
+ padding: 20px;
+ }
+ }
+ }
+
+ .semantic-form-item-actions {
+ display: flex;
+ justify-content: space-between;
+ padding: 16px 24px;
+ border-top: 1px solid @grey-200;
+ }
+
+ .query-builder-form-field {
+ .ant-card {
+ border: none;
+ }
+ .ant-card-body {
+ padding: 0;
+
+ .ant-divider {
+ display: none;
+ }
+
+ .ant-btn-group {
+ .action--DELETE {
+ border: 1px solid @grey-34;
+
+ .anticon {
+ color: @grey-400;
+ }
+ }
+
+ .action--ADD-RULE {
+ display: none !important;
+ }
+ }
+ }
}
}
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/ExpandableCard/ExpandableCard.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/ExpandableCard/ExpandableCard.tsx
index 65e63084415..020cd892be9 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/common/ExpandableCard/ExpandableCard.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/common/ExpandableCard/ExpandableCard.tsx
@@ -12,12 +12,13 @@
*/
import { Card, CardProps } from 'antd';
import classNames from 'classnames';
-import React, { useCallback, useState } from 'react';
+import React, { useCallback, useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { CardExpandCollapseIconButton } from '../IconButtons/EditIconButton';
interface ExpandableCardProps {
children: React.ReactNode;
+ defaultExpanded?: boolean;
onExpandStateChange?: (isExpanded: boolean) => void;
isExpandDisabled?: boolean;
cardProps: CardProps;
@@ -30,9 +31,10 @@ const ExpandableCard = ({
onExpandStateChange,
isExpandDisabled,
dataTestId,
+ defaultExpanded = true,
}: ExpandableCardProps) => {
const { t } = useTranslation();
- const [isExpanded, setIsExpanded] = useState(true);
+ const [isExpanded, setIsExpanded] = useState(defaultExpanded);
const handleExpandClick = useCallback(() => {
setIsExpanded((prev) => {
@@ -42,6 +44,10 @@ const ExpandableCard = ({
});
}, [onExpandStateChange]);
+ useEffect(() => {
+ setIsExpanded(defaultExpanded);
+ }, [defaultExpanded]);
+
return (
= ({
const [initDone, setInitDone] = useState(false);
const { t } = useTranslation();
const [queryURL, setQueryURL] = useState('');
+ const [queryActions, setQueryActions] = useState();
const fetchEntityCount = useCallback(
async (queryFilter: Record) => {
@@ -224,6 +227,12 @@ const QueryBuilderWidget: FC = ({
}
}, [isSearchIndexUpdatedInContext, isUpdating]);
+ useEffect(() => {
+ if (props.getQueryActions) {
+ props.getQueryActions(queryActions);
+ }
+ }, [queryActions]);
+
if (!initDone) {
return <>>;
}
@@ -249,11 +258,18 @@ const QueryBuilderWidget: FC = ({
)}
(
-
-
-
- )}
+ renderBuilder={(props) => {
+ // Store the actions for external access
+ if (!queryActions) {
+ setQueryActions(props.actions);
+ }
+
+ return (
+
+
+
+ );
+ }}
settings={{
...config.settings,
...(props.readonly ? READONLY_SETTINGS : {}),
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 346fe91fe7d..0ba4fb1232c 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
@@ -562,6 +562,7 @@
"entity-coverage": "{{entity}} Abdeckung",
"entity-detail-plural": "Details von {{entity}}",
"entity-distribution": "{{entity}} Verteilung",
+ "entity-failed": "{{entity}} fehlgeschlagen",
"entity-feed-plural": "Entitäts-Feeds",
"entity-hyphen-value": "{{entity}} - {{value}}",
"entity-id": "{{entity}} Id",
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 639b846f31d..ce7f803050e 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
@@ -562,6 +562,7 @@
"entity-coverage": "{{entity}} Coverage",
"entity-detail-plural": "{{entity}} Details",
"entity-distribution": "{{entity}} Distribution",
+ "entity-failed": "{{entity}} Failed",
"entity-feed-plural": "Entity feeds",
"entity-hyphen-value": "{{entity}} - {{value}}",
"entity-id": "{{entity}} Id",
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 48f1abd1ab8..52dbf3d8953 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
@@ -562,6 +562,7 @@
"entity-coverage": "{{entity}} Abdeckung",
"entity-detail-plural": "Detalles de {{entity}}",
"entity-distribution": "Distribución de {{entity}}",
+ "entity-failed": "{{entity}} Falló",
"entity-feed-plural": "Feeds de entidad",
"entity-hyphen-value": "{{entity}} - {{value}}",
"entity-id": "{{entity}} Id",
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 715cca1d14d..c6dd7fba17d 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
@@ -562,6 +562,7 @@
"entity-coverage": "{{entity}} Couverture",
"entity-detail-plural": "Détails de {{entity}}",
"entity-distribution": "Distribution de {{entity}}",
+ "entity-failed": "{{entity}} Échoué",
"entity-feed-plural": "Flux de l'Entité",
"entity-hyphen-value": "{{entity}} - {{value}}",
"entity-id": "{{entity}} Id",
diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/gl-es.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/gl-es.json
index 6c946cf96fe..28bd66ebf26 100644
--- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/gl-es.json
+++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/gl-es.json
@@ -562,6 +562,7 @@
"entity-coverage": "{{entity}} Cobertura",
"entity-detail-plural": "Detalles de {{entity}}",
"entity-distribution": "Distribución de {{entity}}",
+ "entity-failed": "{{entity}} Fallado",
"entity-feed-plural": "Fontes de entidade",
"entity-hyphen-value": "{{entity}} - {{value}}",
"entity-id": "ID de {{entity}}",
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 503c56795e7..3dcbfa588ad 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
@@ -562,6 +562,7 @@
"entity-coverage": "{{entity}} כיסוי",
"entity-detail-plural": "פרטי {{entity}}",
"entity-distribution": "הפצת {{entity}}",
+ "entity-failed": "{{entity}} נכשל",
"entity-feed-plural": "הזנות ישויות",
"entity-hyphen-value": "{{entity}} - {{value}}",
"entity-id": "{{entity}} Id",
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 e38dcd28608..45947d77998 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
@@ -562,6 +562,7 @@
"entity-coverage": "{{entity}} カバレッジ",
"entity-detail-plural": "{{entity}}の詳細",
"entity-distribution": "{{entity}} の分布",
+ "entity-failed": "{{entity}} 失敗",
"entity-feed-plural": "エンティティフィード",
"entity-hyphen-value": "{{entity}} - {{value}}",
"entity-id": "{{entity}} ID",
diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ko-kr.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ko-kr.json
index bd8b169134b..b34c6c4bb74 100644
--- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/ko-kr.json
+++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/ko-kr.json
@@ -562,6 +562,7 @@
"entity-coverage": "{{entity}} 커버리지",
"entity-detail-plural": "{{entity}} 세부사항",
"entity-distribution": "{{entity}} 분포",
+ "entity-failed": "{{entity}} 실패",
"entity-feed-plural": "엔티티 피드",
"entity-hyphen-value": "{{entity}} - {{value}}",
"entity-id": "{{entity}} ID",
diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/mr-in.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/mr-in.json
index 63a777c207c..fe26513500f 100644
--- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/mr-in.json
+++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/mr-in.json
@@ -562,6 +562,7 @@
"entity-coverage": "{{entity}} कवर",
"entity-detail-plural": "{{entity}} तपशील",
"entity-distribution": "{{entity}} वितरण",
+ "entity-failed": "{{entity}} अयशस्वी",
"entity-feed-plural": "घटक फीड्स",
"entity-hyphen-value": "{{entity}} - {{value}}",
"entity-id": "{{entity}} आयडी",
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 beb6ae02b94..e92ef78a3ca 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
@@ -562,6 +562,7 @@
"entity-coverage": "{{entity}} Dekkingsg",
"entity-detail-plural": "{{entity}}-details",
"entity-distribution": "{{entity}} Verdeling",
+ "entity-failed": "{{entity}} Mislukt",
"entity-feed-plural": "Entiteitsfeeds",
"entity-hyphen-value": "{{entity}} - {{value}}",
"entity-id": "{{entity}} Id",
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 18ba4b66b1a..ab52bf1c825 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
@@ -562,6 +562,7 @@
"entity-coverage": "{{entity}} پوشش",
"entity-detail-plural": "جزئیات {{entity}}",
"entity-distribution": "توزیع {{entity}}",
+ "entity-failed": "{{entity}} ناموفق",
"entity-feed-plural": "فیدهای نهاد",
"entity-hyphen-value": "{{entity}} - {{value}}",
"entity-id": "شناسه {{entity}}",
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 6d3062837b9..312a908c006 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
@@ -562,6 +562,7 @@
"entity-coverage": "{{entity}} Cobertura",
"entity-detail-plural": "Detalhes de {{entity}}",
"entity-distribution": "Distribuição de {{entity}}",
+ "entity-failed": "{{entity}} Falhou",
"entity-feed-plural": "Feeds de Entidade",
"entity-hyphen-value": "{{entity}} - {{value}}",
"entity-id": "{{entity}} Id",
diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-pt.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-pt.json
index 9f9d6277935..cc145d0cd34 100644
--- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-pt.json
+++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/pt-pt.json
@@ -562,6 +562,7 @@
"entity-coverage": "{{entity}} Cobertura",
"entity-detail-plural": "Detalhes de {{entity}}",
"entity-distribution": "Distribuição de {{entity}}",
+ "entity-failed": "{{entity}} Falhou",
"entity-feed-plural": "Feeds de Entidade",
"entity-hyphen-value": "{{entity}} - {{value}}",
"entity-id": "{{entity}} Id",
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 cf025d52b4b..0055fecb32c 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
@@ -562,6 +562,7 @@
"entity-coverage": "Покрытие {{entity}}",
"entity-detail-plural": "Детали {{entity}}",
"entity-distribution": "Распределение {{entity}}",
+ "entity-failed": "{{entity}} Неудачно",
"entity-feed-plural": "Фиды сущностец",
"entity-hyphen-value": "{{entity}} - {{value}}",
"entity-id": "Идентификатор {{entity}}",
diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/th-th.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/th-th.json
index f9419f40f30..fe934f05bdd 100644
--- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/th-th.json
+++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/th-th.json
@@ -562,6 +562,7 @@
"entity-coverage": "{{entity}} ความครอบคลุม",
"entity-detail-plural": "รายละเอียด {{entity}}",
"entity-distribution": "{{entity}} การแจกแจง",
+ "entity-failed": "{{entity}} ล้มเหลว",
"entity-feed-plural": "ฟีดเอนทิตี",
"entity-hyphen-value": "{{entity}} - {{value}}",
"entity-id": "รหัส {{entity}}",
diff --git a/openmetadata-ui/src/main/resources/ui/src/locale/languages/tr-tr.json b/openmetadata-ui/src/main/resources/ui/src/locale/languages/tr-tr.json
index 8db84017395..ff80265a283 100644
--- a/openmetadata-ui/src/main/resources/ui/src/locale/languages/tr-tr.json
+++ b/openmetadata-ui/src/main/resources/ui/src/locale/languages/tr-tr.json
@@ -562,6 +562,7 @@
"entity-coverage": "{{entity}} Kapsamı",
"entity-detail-plural": "{{entity}} Detayları",
"entity-distribution": "{{entity}} Dağılımı",
+ "entity-failed": "{{entity}} Başarısız",
"entity-feed-plural": "Varlık akışları",
"entity-hyphen-value": "{{entity}} - {{value}}",
"entity-id": "{{entity}} Kimliği",
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 cc91cc598a4..fe28b6dc279 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
@@ -562,6 +562,7 @@
"entity-coverage": "{{entity}} 覆盖",
"entity-detail-plural": "{{entity}}详情",
"entity-distribution": "{{entity}} 分布",
+ "entity-failed": "{{entity}} 失败",
"entity-feed-plural": "实体信息流",
"entity-hyphen-value": "{{entity}} - {{value}}",
"entity-id": "{{entity}} ID",
diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableDetailsPageV1.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableDetailsPageV1.tsx
index c3a636cdc1a..f57eecddfca 100644
--- a/openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableDetailsPageV1.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableDetailsPageV1.tsx
@@ -51,6 +51,7 @@ import {
TabSpecificField,
} from '../../enums/entity.enum';
import { Tag } from '../../generated/entity/classification/tag';
+import { DataContract } from '../../generated/entity/data/dataContract';
import { Table, TableType } from '../../generated/entity/data/table';
import {
Suggestion,
@@ -66,6 +67,7 @@ import { useCustomPages } from '../../hooks/useCustomPages';
import { useFqn } from '../../hooks/useFqn';
import { useSub } from '../../hooks/usePubSub';
import { FeedCounts } from '../../interface/feed.interface';
+import { getContractByEntityId } from '../../rest/contractAPI';
import { getDataQualityLineage } from '../../rest/lineageAPI';
import { getQueriesList } from '../../rest/queryAPI';
import {
@@ -135,6 +137,7 @@ const TableDetailsPageV1: React.FC = () => {
const [dqFailureCount, setDqFailureCount] = useState(0);
const { customizedPage, isLoading } = useCustomPages(PageType.Table);
const [isTabExpanded, setIsTabExpanded] = useState(false);
+ const [dataContract, setDataContract] = useState();
const tableFqn = useMemo(
() =>
@@ -212,7 +215,6 @@ const TableDetailsPageV1: React.FC = () => {
}
const details = await getTableDetailsByFQN(tableFqn, { fields });
-
setTableDetails(details);
addToRecentViewed({
displayName: getEntityName(details),
@@ -297,6 +299,15 @@ const TableDetailsPageV1: React.FC = () => {
}
};
+ const fetchDataContract = async (tableId: string) => {
+ try {
+ const contract = await getContractByEntityId(tableId, EntityType.TABLE);
+ setDataContract(contract);
+ } catch {
+ // Do nothing
+ }
+ };
+
const {
tableTags,
deleted,
@@ -780,6 +791,12 @@ const TableDetailsPageV1: React.FC = () => {
}
}, [tableDetails?.fullyQualifiedName]);
+ useEffect(() => {
+ if (tableDetails) {
+ fetchDataContract(tableDetails.id);
+ }
+ }, [tableDetails?.id]);
+
useSub(
'updateDetails',
(suggestion: Suggestion) => {
@@ -847,6 +864,7 @@ const TableDetailsPageV1: React.FC = () => {
afterDomainUpdateAction={updateTableDetailsState}
badge={alertBadge}
dataAsset={tableDetails}
+ dataContract={dataContract}
entityType={EntityType.TABLE}
extraDropdownContent={extraDropdownContent}
openTaskCount={feedCount.openTaskCount}
diff --git a/openmetadata-ui/src/main/resources/ui/src/styles/variables.less b/openmetadata-ui/src/main/resources/ui/src/styles/variables.less
index 042e919843f..6dfe276cd54 100644
--- a/openmetadata-ui/src/main/resources/ui/src/styles/variables.less
+++ b/openmetadata-ui/src/main/resources/ui/src/styles/variables.less
@@ -161,6 +161,8 @@
@grey-31: #f1f3fc;
@grey-32: #6b7f99;
@grey-33: #4c526c;
+@grey-34: #d3d3d3;
+@grey-35: #0a0d120a;
@text-grey-muted: @grey-4;
@de-active-color: #6b7280;
diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/EntityUtils.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/EntityUtils.tsx
index 83f3021e599..6135fdd64b5 100644
--- a/openmetadata-ui/src/main/resources/ui/src/utils/EntityUtils.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/utils/EntityUtils.tsx
@@ -11,6 +11,7 @@
* limitations under the License.
*/
+import Icon from '@ant-design/icons';
import { Popover, Space, Typography } from 'antd';
import i18next, { t } from 'i18next';
import {
@@ -26,6 +27,7 @@ import QueryString from 'qs';
import { Fragment } from 'react';
import { Link } from 'react-router-dom';
import { Node } from 'reactflow';
+import { ReactComponent as CancelOutlineIcon } from '../assets/svg/ic-cancel-outline.svg';
import { DomainLabel } from '../components/common/DomainLabel/DomainLabel.component';
import { OwnerLabel } from '../components/common/OwnerLabel/OwnerLabel.component';
import QueryCount from '../components/common/QueryCount/QueryCount.component';
@@ -102,6 +104,7 @@ import {
EventSubscription,
} from '../generated/events/eventSubscription';
import { TestCase, TestSuite } from '../generated/tests/testCase';
+import { ContractExecutionStatus } from '../generated/type/contractExecutionStatus';
import { EntityReference } from '../generated/type/entityUsage';
import { TagLabel } from '../generated/type/tagLabel';
import { UsageDetails } from '../generated/type/usageDetails';
@@ -2637,5 +2640,10 @@ export const EntityTypeName: Record = {
[EntityType.SERVICE]: t('label.service'),
[EntityType.DATA_CONTRACT]: t('label.data-contract'),
[EntityType.SECURITY_SERVICE]: t('label.security-service'),
- [EntityType.DATA_CONTRACT]: t('label.data-contract'),
+};
+
+export const getDataContractStatusIcon = (status: ContractExecutionStatus) => {
+ return status === ContractExecutionStatus.Failed ? (
+
+ ) : null;
};