diff --git a/openmetadata-ui/src/main/resources/ui/src/assets/svg/arrow-right.svg b/openmetadata-ui/src/main/resources/ui/src/assets/svg/arrow-right.svg index d8d39e407fd..e4f46ed38ed 100644 --- a/openmetadata-ui/src/main/resources/ui/src/assets/svg/arrow-right.svg +++ b/openmetadata-ui/src/main/resources/ui/src/assets/svg/arrow-right.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/src/assets/svg/comment.svg b/openmetadata-ui/src/main/resources/ui/src/assets/svg/comment.svg index 7fae0d68886..30431b1b69b 100644 --- a/openmetadata-ui/src/main/resources/ui/src/assets/svg/comment.svg +++ b/openmetadata-ui/src/main/resources/ui/src/assets/svg/comment.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/openmetadata-ui/src/main/resources/ui/src/assets/svg/drag.svg b/openmetadata-ui/src/main/resources/ui/src/assets/svg/drag.svg index 4923224cbff..f2f71974e89 100644 --- a/openmetadata-ui/src/main/resources/ui/src/assets/svg/drag.svg +++ b/openmetadata-ui/src/main/resources/ui/src/assets/svg/drag.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/openmetadata-ui/src/main/resources/ui/src/assets/svg/request-icon.svg b/openmetadata-ui/src/main/resources/ui/src/assets/svg/request-icon.svg index 277ee621f4d..580b264ca2e 100644 --- a/openmetadata-ui/src/main/resources/ui/src/assets/svg/request-icon.svg +++ b/openmetadata-ui/src/main/resources/ui/src/assets/svg/request-icon.svg @@ -1 +1,12 @@ - \ No newline at end of file + + + + + + + + + + + + diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Database/Profiler/DataQualityTab/DataQualityTab.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Database/Profiler/DataQualityTab/DataQualityTab.tsx index 44e69a8f3d9..d58be1d9f96 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Database/Profiler/DataQualityTab/DataQualityTab.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Database/Profiler/DataQualityTab/DataQualityTab.tsx @@ -496,8 +496,8 @@ const DataQualityTab: React.FC = ({ return ( <> +
{hasEditPermission && ( - - - + })} + onClick={onClick} + /> )} - +
) : null} ); diff --git a/openmetadata-ui/src/main/resources/ui/src/components/IncidentManager/IncidentManager.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/IncidentManager/IncidentManager.component.tsx index b1b831af75a..8c60a895603 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/IncidentManager/IncidentManager.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/IncidentManager/IncidentManager.component.tsx @@ -575,8 +575,8 @@ const IncidentManager = ({
{ const { t } = useTranslation(); @@ -31,9 +30,8 @@ const PaginationComponent = (props: PaginationProps) => { data-testid="previous" icon={ } type="text"> @@ -48,7 +46,10 @@ const PaginationComponent = (props: PaginationProps) => { data-testid="next" type="text"> {t('label.next')} - + ); } diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Pipeline/Execution/Execution.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Pipeline/Execution/Execution.component.tsx index e90104d6195..578c8e1e7ea 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Pipeline/Execution/Execution.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Pipeline/Execution/Execution.component.tsx @@ -42,7 +42,6 @@ import { getEpochMillisForPastDays, } from '../../../utils/date-time/DateTimeUtils'; import { showErrorToast } from '../../../utils/ToastUtils'; -import Searchbar from '../../common/SearchBarComponent/SearchBar.component'; import './execution.less'; import ListView from './ListView/ListViewTab.component'; import TreeViewTab from './TreeView/TreeViewTab.component'; @@ -204,25 +203,13 @@ const ExecutionsTab = ({ pipelineFQN, tasks }: ExecutionProps) => { {view === PIPELINE_EXECUTION_TABS.LIST_VIEW ? ( -
- -
- - - - - + ) : ( jest.fn().mockImplementation(() =>
FilterTablePlaceHolder
) ); +jest.mock('../../../common/SearchBarComponent/SearchBar.component', () => + jest.fn().mockImplementation(() =>
SearchBar
) +); + jest.mock('../../../../utils/executionUtils', () => ({ getTableViewData: jest.fn().mockImplementation((data) => data), StatusIndicator: jest @@ -33,6 +37,7 @@ const mockProps = { status: StatusType.Successful, loading: false, searchString: undefined, + handleSearch: jest.fn(), }; describe('Test ListViewTab Component', () => { diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Pipeline/Execution/ListView/ListViewTab.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Pipeline/Execution/ListView/ListViewTab.component.tsx index 8a4d1e8485d..75d5509e654 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Pipeline/Execution/ListView/ListViewTab.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Pipeline/Execution/ListView/ListViewTab.component.tsx @@ -29,6 +29,7 @@ interface ListViewProps { status: string; loading: boolean; searchString: string | undefined; + handleSearch: (value: string) => void; } const ListView = ({ @@ -36,6 +37,7 @@ const ListView = ({ status, loading, searchString, + handleSearch, }: ListViewProps) => { const { t } = useTranslation(); @@ -44,6 +46,17 @@ const ListView = ({ [executions, status, searchString] ); + const searchProps = useMemo( + () => ({ + removeMargin: true, + placeholder: t('message.filter-task-name-description'), + searchValue: searchString, + typingInterval: 500, + onSearch: handleSearch, + }), + [searchString, handleSearch] + ); + const columns = useMemo( () => [ { @@ -78,6 +91,7 @@ const ListView = ({ }} pagination={false} rowKey={(record) => `${record.name}-${record.status}-${record.key}`} + searchProps={searchProps} /> ); }; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Settings/CustomProperty/CustomPropertyTable.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Settings/CustomProperty/CustomPropertyTable.tsx index 23e42300951..64120ba5999 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Settings/CustomProperty/CustomPropertyTable.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Settings/CustomProperty/CustomPropertyTable.tsx @@ -269,8 +269,8 @@ export const CustomPropertyTable: FC = ({ return (
currentTeam.deleted ?? false, [currentTeam] @@ -663,57 +660,21 @@ const TeamDetailsV1 = ({ ) : ( - - - - - - - - - - {t('label.deleted')} - - - - {createTeamPermission && !isTeamDeleted && ( - - )} - - - - - - + ); }, [ - addTeam, searchTerm, isTeamDeleted, currentTeam, @@ -1182,7 +1143,7 @@ const TeamDetailsV1 = ({ diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/TeamHierarchy.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/TeamHierarchy.test.tsx index 64bbeebf358..af25f176ef2 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/TeamHierarchy.test.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/TeamHierarchy.test.tsx @@ -26,6 +26,12 @@ const teamHierarchyPropsData: TeamHierarchyProps = { currentTeam: MOCK_CURRENT_TEAM, onTeamExpand: jest.fn(), isFetchingAllTeamAdvancedDetails: false, + showDeletedTeam: false, + onShowDeletedTeamChange: jest.fn(), + handleAddTeamButtonClick: jest.fn(), + createTeamPermission: true, + isTeamDeleted: false, + handleTeamSearch: jest.fn(), }; const mockShowErrorToast = jest.fn(); @@ -71,6 +77,10 @@ jest.mock('../../../../utils/ToastUtils', () => ({ showErrorToast: jest.fn().mockImplementation(() => mockShowErrorToast), })); +jest.mock('../../../common/SearchBarComponent/SearchBar.component', () => + jest.fn().mockImplementation(() =>
SearchBar
) +); + describe('Team Hierarchy page', () => { it('Initially, Table should load', async () => { await act(async () => { diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/TeamHierarchy.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/TeamHierarchy.tsx index e38eb36c4ad..398f9bf9141 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/TeamHierarchy.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/TeamHierarchy.tsx @@ -11,7 +11,7 @@ * limitations under the License. */ -import { Modal, Skeleton, Typography } from 'antd'; +import { Button, Modal, Skeleton, Space, Switch, Typography } from 'antd'; import { ColumnsType, TableProps } from 'antd/lib/table'; import { ExpandableConfig } from 'antd/lib/table/interface'; import { AxiosError } from 'axios'; @@ -55,6 +55,12 @@ const TeamHierarchy: FC = ({ onTeamExpand, isFetchingAllTeamAdvancedDetails, searchTerm, + showDeletedTeam, + onShowDeletedTeamChange, + handleAddTeamButtonClick, + createTeamPermission, + isTeamDeleted, + handleTeamSearch, }) => { const { t } = useTranslation(); const [isModalOpen, setIsModalOpen] = useState(false); @@ -62,6 +68,18 @@ const TeamHierarchy: FC = ({ const [movedTeam, setMovedTeam] = useState(); const [isTableHovered, setIsTableHovered] = useState(false); + const searchProps = useMemo( + () => ({ + placeholder: t('label.search-entity', { + entity: t('label.team'), + }), + searchValue: searchTerm, + typingInterval: 500, + onSearch: handleTeamSearch, + }), + [searchTerm, handleTeamSearch] + ); + const columns: ColumnsType = useMemo(() => { return [ { @@ -252,7 +270,7 @@ const TeamHierarchy: FC = ({ ); return ( - <> +
= ({ data-testid="team-hierarchy-table" dataSource={data} expandable={expandableConfig} + extraTableFilters={ + + + + + {t('label.deleted')} + + + + {createTeamPermission && !isTeamDeleted && ( + + )} + + } loading={isTableLoading} locale={{ emptyText: , }} pagination={false} rowKey="name" + searchProps={searchProps} size="small" onHeaderRow={onTableHeader} onRow={onTableRow} @@ -297,7 +339,7 @@ const TeamHierarchy: FC = ({ }} /> - + ); }; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/team.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/team.interface.ts index 92bd74af0c1..f1fcdd8f80f 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/team.interface.ts +++ b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/team.interface.ts @@ -27,6 +27,12 @@ export interface TeamHierarchyProps { ) => void; isFetchingAllTeamAdvancedDetails: boolean; searchTerm?: string; + showDeletedTeam: boolean; + onShowDeletedTeamChange: () => void; + handleAddTeamButtonClick: () => void; + createTeamPermission: boolean; + isTeamDeleted: boolean; + handleTeamSearch: (text: string) => void; } export interface MovedTeamProps { diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/teams.less b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/teams.less index 23e45410e87..7b279ea8884 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/teams.less +++ b/openmetadata-ui/src/main/resources/ui/src/components/Settings/Team/TeamDetails/teams.less @@ -14,7 +14,7 @@ @import url('../../../../styles/variables.less'); .team-list-container { - padding: 20px 0; + padding: 20px 0 10px 0; .ant-btn { border-radius: 4px; } diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/IconButtons/EditIconButton.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/IconButtons/EditIconButton.tsx index c97dba61a8e..c14091da32b 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/IconButtons/EditIconButton.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/IconButtons/EditIconButton.tsx @@ -18,7 +18,6 @@ import { ReactComponent as CommentIcon } from '../../../assets/svg/comment.svg'; import { ReactComponent as EditIcon } from '../../../assets/svg/edit-new.svg'; import { ReactComponent as ExpandIcon } from '../../../assets/svg/ic-expand-right.svg'; import { ReactComponent as RequestIcon } from '../../../assets/svg/request-icon.svg'; -import { DE_ACTIVE_COLOR } from '../../../constants/constants'; type IconButtonPropsInternal = ButtonProps & { newLook?: boolean; @@ -43,7 +42,7 @@ export const EditIconButton = ({ ) : ( {onShowSizeChange && ( void; searchValue?: string; typingInterval?: number; @@ -42,6 +43,7 @@ export type SearchBarProps = { const Searchbar = ({ inputClassName = '', + containerClassName = '', onSearch, searchValue, typingInterval = 0, @@ -96,7 +98,7 @@ const Searchbar = ({ return (
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/SearchBarComponent/search-bar.less b/openmetadata-ui/src/main/resources/ui/src/components/common/SearchBarComponent/search-bar.less index d3d8c53f4bd..53b66bc979d 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/SearchBarComponent/search-bar.less +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/SearchBarComponent/search-bar.less @@ -13,10 +13,21 @@ @import (reference) url('../../../styles/variables.less'); .page-search-bar { + width: 100%; .ant-input-affix-wrapper { border-radius: 10px; - border: 1px solid @blue-15; + border: 1px solid @border-color-6; + background: @grey-17; height: 40px; + + .ant-input { + background: @grey-17; + + &::placeholder { + color: @grey-21; + font-weight: 300; + } + } } .ant-input-affix-wrapper:focus, diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/Table/Table.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/Table/Table.tsx index c131a341c1f..f59b42e72fd 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/Table/Table.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/Table/Table.tsx @@ -47,6 +47,7 @@ import { handleUpdateTableColumnSelections, } from '../../../utils/TableUtils'; import { useGenericContext } from '../../Customization/GenericProvider/GenericProvider'; +import AppBadge from '../Badge/Badge.component'; import Loader from '../Loader/Loader'; import NextPrevious from '../NextPrevious/NextPrevious'; import Searchbar from '../SearchBarComponent/SearchBar.component'; @@ -241,31 +242,41 @@ const Table = >( return ( -
- - {searchProps ? ( - - - - ) : null} + + + +
+
+ {t('label.table-plural')} + +
+ + {searchProps ? ( + + ) : null} +
+ {(rest.extraTableFilters || !isFullViewTable) && ( + span={12}> {rest.extraTableFilters} {!isFullViewTable && ( diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/Table/table.less b/openmetadata-ui/src/main/resources/ui/src/components/common/Table/table.less index f35e5e05960..66db29417f8 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/Table/table.less +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/Table/table.less @@ -16,9 +16,32 @@ height: initial !important; border-radius: 12px; background-color: @white; - border: 1px solid @border-color; + border: 1px solid @border-color-1; overflow: hidden; + .table-data-count-container { + display: flex; + align-items: center; + gap: 8px; + + .ant-typography { + font-size: 16px; + font-weight: 600; + color: @text-color; + } + + .total-count-badge { + background-color: @blue-1; + padding: 6px 12px; + + .ant-typography { + color: @primary-color; + font-size: 12px; + font-weight: 500; + } + } + } + .ant-table-body { scrollbar-width: none; 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 983ee85ca3c..d177c286ed8 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 @@ -1759,6 +1759,7 @@ "filter-pattern-include-exclude-info": "Schließen Sie explizit {{filterPattern}} durch Hinzufügen einer Liste von durch Kommas getrennten regulären Ausdrücken {{activity}} ein oder aus.", "filter-pattern-info": "Wählen Sie aus, ob {{filterPattern}} als Teil der Metadaten-Erfassung ein- oder ausgeschlossen werden soll.", "filter-pattern-placeholder": "Um einen Filtermuster hinzuzufügen, geben Sie es einfach ein und drücken Sie Enter.", + "filter-task-name-description": "Nach Aufgabenname filtern", "find-apps-to-improve-data": "Finden Sie Anwendungsfälle, um Ihre Daten zu verbessern.", "find-in-table": "In Tabelle suchen", "fosters-collaboration-among-producers-and-consumers": "Setzen Sie Unternehmensziele und KPIs, um die Datenkultur Ihres Unternehmens proaktiv voranzutreiben. Fördern Sie eine Kultur kontinuierlicher Verbesserung mit rechtzeitigen Berichten zur Überwachung der Datenqualität.", 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 d7751e51171..a93d91fc7e1 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 @@ -1759,6 +1759,7 @@ "filter-pattern-include-exclude-info": "Explicitly {{activity}} {{filterPattern}} by adding a list of comma-separated regex.", "filter-pattern-info": "Choose to include or exclude {{filterPattern}} as part of the metadata ingestion.", "filter-pattern-placeholder": "To add a filter pattern, simply type it in and press Enter", + "filter-task-name-description": "Filter by task name", "find-apps-to-improve-data": "Find applications to improve your data", "find-in-table": "Find in table", "fosters-collaboration-among-producers-and-consumers": "Set organizational goals and KPIs to proactively drive the data culture of your company. Foster a culture of continuous improvement with timely reports to monitor data health.", 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 f7196d5bef0..cfc54852cff 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 @@ -1759,6 +1759,7 @@ "filter-pattern-include-exclude-info": "Excluya o incluya explícitamente {{filterPattern}} mediante la adición de una lista de expresiones regulares separadas por comas.", "filter-pattern-info": "Elija incluir o excluir {{filterPattern}} como parte de la ingestión de metadatos.", "filter-pattern-placeholder": "Para agregar un patrón de filtro, simplemente escríbalo y presione Enter", + "filter-task-name-description": "Filtrar por nombre de tarea", "find-apps-to-improve-data": "Encuentra aplicaciones para mejorar tus datos", "find-in-table": "Buscar en la tabla", "fosters-collaboration-among-producers-and-consumers": "Fomenta la colaboración entre los productores y consumidores 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 211f7924027..05d474451ec 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 @@ -1759,6 +1759,7 @@ "filter-pattern-include-exclude-info": "Explicitement {{filterPattern}} {{activity}} en ajoutant une liste d'expressions régulières séparées par des virgules.", "filter-pattern-info": "Choisir d'inclure ou d'exclure {{filterPattern}} en tant que partie de l'ingestion de métadonnées.", "filter-pattern-placeholder": "Pour ajouter un pattern de filtre, entrez-le et appuyez sur Entrée", + "filter-task-name-description": "Filtrer par nom de tâche", "find-apps-to-improve-data": "Trouvez des applications pour améliorer vos données", "find-in-table": "Trouver dans la table", "fosters-collaboration-among-producers-and-consumers": "Encouragez la collaborations entre les consommateurs et producteurs de données", 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 a43bbc7a8b3..27f0fb7a9c4 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 @@ -1759,6 +1759,7 @@ "filter-pattern-include-exclude-info": "{{activity}} explícitamente {{filterPattern}} engadindo unha lista de regex separados por comas.", "filter-pattern-info": "Escolle incluir ou excluír {{filterPattern}} como parte da inxestión de metadatos.", "filter-pattern-placeholder": "Para engadir un patrón de filtro, simplemente escríbeo e preme Enter", + "filter-task-name-description": "Filtrar por nome da tarefa", "find-apps-to-improve-data": "Atopa aplicacións para mellorar os teus datos", "find-in-table": "Buscar na táboa", "fosters-collaboration-among-producers-and-consumers": "Establece obxectivos organizativos e KPI para impulsar proactivamente a cultura de datos da túa empresa. Fomenta unha cultura de mellora continua con informes oportunos para supervisar a saúde dos datos.", 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 5319d04fa7b..79adbcdad91 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 @@ -1759,6 +1759,7 @@ "filter-pattern-include-exclude-info": "הגדר {{activity}} באופן מפורש {{filterPattern}} על ידי הוספת רשימה של רגקס מופרדות בפסיקים.", "filter-pattern-info": "בחר לכלול או לא לכלול {{filterPattern}} כחלק מתהליך הקליטה של המטא-דאטה.", "filter-pattern-placeholder": "כדי להוסיף דפוס מסנן, פשוט הקלד אותו ולחץ על Enter", + "filter-task-name-description": "סנן לפי שם משימה", "find-apps-to-improve-data": "מצא אפליקציות לשיפור הנתונים שלך", "find-in-table": "מצא בטבלה", "fosters-collaboration-among-producers-and-consumers": "קבע מטרות וקודקודים מפתיעים לקידום תרבות הנתונים של החברה שלך. קידום תרבות של שיפור רגעי עם דוחות זמינים לצפייה כדי למזער בריאות הנתונים.", 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 1016d2dc863..7d31029ff3f 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 @@ -1759,6 +1759,7 @@ "filter-pattern-include-exclude-info": "Explicitly {{activity}} {{filterPattern}} by adding a list of comma-separated regex.", "filter-pattern-info": "メタデータ取り込み時に{{filterPattern}}を含めるか除外するか選択する。", "filter-pattern-placeholder": "To add a filter pattern, simply type it in and press Enter", + "filter-task-name-description": "タスク名でフィルター", "find-apps-to-improve-data": "Find applications to improve your data", "find-in-table": "テーブルで探す", "fosters-collaboration-among-producers-and-consumers": "Fosters collaboration among the producers and consumers of data.", 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 5f83cb5dad6..0fba5689a99 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 @@ -1759,6 +1759,7 @@ "filter-pattern-include-exclude-info": "쉼표로 구분된 정규식 목록을 추가하여 명시적으로 {{filterPattern}}을(를) {{activity}}합니다.", "filter-pattern-info": "메타데이터 수집의 일부로서 {{filterPattern}}을 포함하거나 제외할지를 선택하세요.", "filter-pattern-placeholder": "필터 패턴을 추가하려면 입력 후 Enter 키를 누르세요.", + "filter-task-name-description": "작업 이름으로 필터링", "find-apps-to-improve-data": "데이터 개선을 위한 애플리케이션을 찾으세요.", "find-in-table": "테이블에서 찾기", "fosters-collaboration-among-producers-and-consumers": "조직의 목표와 KPI를 설정하여 데이터 문화를 촉진하고, 시기적절한 보고서로 데이터 상태를 모니터링하며 지속적인 개선 문화를 구축하세요.", 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 b0451d6e33e..d44037af986 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 @@ -1759,6 +1759,7 @@ "filter-pattern-include-exclude-info": "स्वल्पविराम-विभक्त regex यादी जोडून स्पष्टपणे {{activity}} {{filterPattern}}.", "filter-pattern-info": "मेटाडेटा अंतर्ग्रहणाचा भाग म्हणून {{filterPattern}} समाविष्ट किंवा वगळण्याचा पर्याय निवडा.", "filter-pattern-placeholder": "फिल्टर पॅटर्न जोडण्यासाठी, फक्त टाइप करा आणि Enter दाबा", + "filter-task-name-description": "कामाचे नावानुसार फिल्टर करा", "find-apps-to-improve-data": "तुमचा डेटा सुधारण्यासाठी अनुप्रयोग शोधा", "find-in-table": "तक्त्यात शोधा", "fosters-collaboration-among-producers-and-consumers": "तुमच्या कंपनीच्या डेटा संस्कृतीला सक्रियपणे चालवण्यासाठी संघटनेचे उद्दिष्टे आणि KPI सेट करा. डेटा आरोग्याचे निरीक्षण करण्यासाठी वेळेवर अहवालांसह सतत सुधारणा संस्कृतीला प्रोत्साहन द्या.", 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 f29d5f21ef2..80ef912a81f 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 @@ -1759,6 +1759,7 @@ "filter-pattern-include-exclude-info": "Expliciet {{activity}} {{filterPattern}} door een lijst met door komma's gescheiden regex toe te voegen.", "filter-pattern-info": "Kies ervoor om {{filterPattern}} wel of niet op te nemen als onderdeel van de metadataingestie.", "filter-pattern-placeholder": "Voeg een filterpatroon toe door het eenvoudig in te typen en op Enter te drukken", + "filter-task-name-description": "Filter op taaknaam", "find-apps-to-improve-data": "Zoek naar applicaties om je data te verbeteren", "find-in-table": "Zoeken in tabel", "fosters-collaboration-among-producers-and-consumers": "Stel organisatiedoelen en KPI's om proactief de datacultuur van je bedrijf te stimuleren. Bevorder een cultuur van continue verbetering met tijdige rapporten om de status van de data te volgen.", 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 a014a6dc8a5..c581eccf53c 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 @@ -1759,6 +1759,7 @@ "filter-pattern-include-exclude-info": "{{activity}} {{filterPattern}} به‌طور صریح با افزودن لیستی از regex جدا شده با کاما.", "filter-pattern-info": "انتخاب کنید که آیا می‌خواهید {{filterPattern}} را به عنوان بخشی از استخراج متادیتا شامل کنید یا حذف کنید.", "filter-pattern-placeholder": "برای افزودن یک الگوی فیلتر، کافی است آن را تایپ کنید و Enter را فشار دهید.", + "filter-task-name-description": "نام وظیفه را فیلتر کنید", "find-apps-to-improve-data": "برنامه‌هایی برای بهبود داده‌های خود پیدا کنید.", "find-in-table": "پیدا کردن در جدول", "fosters-collaboration-among-producers-and-consumers": "اهداف سازمانی و KPIها را تعیین کنید تا فرهنگ داده شرکت خود را به صورت فعالانه هدایت کنید. با گزارش‌های به‌موقع برای نظارت بر سلامت داده‌ها، فرهنگ بهبود مستمر را تقویت کنید.", 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 d615e8772c7..79ede1d6660 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 @@ -1759,6 +1759,7 @@ "filter-pattern-include-exclude-info": "Explicitamente {{activity}} {{filterPattern}} adicionando uma lista de regex separados por vírgula.", "filter-pattern-info": "Escolha incluir ou excluir {{filterPattern}} como parte da ingestão de metadados.", "filter-pattern-placeholder": "Para adicionar um padrão de filtro, basta digitá-lo e pressionar Enter", + "filter-task-name-description": "Filtrar por nome da tarefa", "find-apps-to-improve-data": "Encontre aplicativos para melhorar seus dados", "find-in-table": "Encontrar na tabela", "fosters-collaboration-among-producers-and-consumers": "Estabeleça metas organizacionais e KPIs para impulsionar proativamente a cultura de dados da sua empresa. Fomente uma cultura de melhoria contínua com relatórios oportunos para monitorar a saúde dos dados.", 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 4f65da96efc..01ae6d47b70 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 @@ -1759,6 +1759,7 @@ "filter-pattern-include-exclude-info": "Explicitamente {{activity}} {{filterPattern}} adicionando uma lista de regex separados por vírgula.", "filter-pattern-info": "Escolha incluir ou excluir {{filterPattern}} como parte da ingestão de metadados.", "filter-pattern-placeholder": "Para adicionar um padrão de filtro, basta digitá-lo e pressionar Enter", + "filter-task-name-description": "Filtrar por nome da tarefa", "find-apps-to-improve-data": "Encontre aplicativos para melhorar seus dados", "find-in-table": "Encontrar na tabela", "fosters-collaboration-among-producers-and-consumers": "Estabeleça metas organizacionais e KPIs para impulsionar proativamente a cultura de dados da sua empresa. Fomente uma cultura de melhoria contínua com relatórios oportunos para monitorar a saúde dos dados.", 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 27744755646..40efb88ccb3 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 @@ -1759,6 +1759,7 @@ "filter-pattern-include-exclude-info": "{{activity}} {{filterPattern}} путем добавления списка регулярных выражений, разделенных запятыми.", "filter-pattern-info": "Выберите, следует ли включить или исключить {{filterPattern}} при приеме метаданных.", "filter-pattern-placeholder": "Чтобы добавить шаблон фильтра, просто введите его и нажмите Enter.", + "filter-task-name-description": "Фильтровать по имени задачи", "find-apps-to-improve-data": "Find applications to improve your data", "find-in-table": "Найти в таблице", "fosters-collaboration-among-producers-and-consumers": "Способствует сотрудничеству между производителями и потребителями данных.", 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 700032864e7..e0e4f45ea7d 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 @@ -1759,6 +1759,7 @@ "filter-pattern-include-exclude-info": "เพิ่มหรือเรียงลำดับ {{activity}} {{filterPattern}} โดยการเพิ่มรายการของ regex ที่แยกด้วยเครื่องหมายจุลภาค", "filter-pattern-info": "เลือกที่จะรวมเข้าหรือยกเว้น {{filterPattern}} เป็นส่วนหนึ่งของการนำเข้าข้อมูลเมตา", "filter-pattern-placeholder": "ในการเพิ่มรูปแบบการกรอง เพียงแค่พิมพ์และกด Enter", + "filter-task-name-description": "กรองตามชื่องาน", "find-apps-to-improve-data": "ค้นหาแอปพลิเคชันเพื่อปรับปรุงข้อมูลของคุณ", "find-in-table": "ค้นหาในตาราง", "fosters-collaboration-among-producers-and-consumers": "ตั้งเป้าหมายองค์กรและ KPI เพื่อขับเคลื่อนวัฒนธรรมข้อมูลของบริษัทคุณแบบเชิงรุก ส่งเสริมวัฒนธรรมของการปรับปรุงอย่างต่อเนื่องด้วยรายงานที่ตรงเวลาเพื่อติดตามสุขภาพข้อมูล", 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 6d47efa0945..586a840fda9 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 @@ -1759,6 +1759,7 @@ "filter-pattern-include-exclude-info": "通过添加逗号分隔的正则表达式列表明确{{activity}} {{filterPattern}}", "filter-pattern-info": "选择包含或排除{{filterPattern}}作为元数据提取的一部分", "filter-pattern-placeholder": "输入并按回车键, 即可新建一个过滤器", + "filter-task-name-description": "按任务名称过滤", "find-apps-to-improve-data": "查找应用以改进您的数据", "find-in-table": "在数据表中查找", "fosters-collaboration-among-producers-and-consumers": "促进数据生产者和使用者之间的合作", diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/DataInsightPage/KPIList.test.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/DataInsightPage/KPIList.test.tsx index 29b45913dca..7e2b0225e9f 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/DataInsightPage/KPIList.test.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/DataInsightPage/KPIList.test.tsx @@ -40,19 +40,22 @@ jest.mock('../../components/common/DeleteWidget/DeleteWidgetModal', () => jest.fn().mockReturnValue(
Delete Modal
) ); -jest.mock('../../components/common/NextPrevious/NextPrevious', () => +jest.mock( + '../../components/common/RichTextEditor/RichTextEditorPreviewNew', + () => + jest + .fn() + .mockReturnValue( +
+ RichTextEditorPreviewerNew +
+ ) +); + +jest.mock('../../components/common/ErrorWithPlaceholder/ErrorPlaceHolder', () => jest .fn() - .mockReturnValue(
Next Previous
) -); - -jest.mock( - '../../components/common/RichTextEditor/RichTextEditorPreviewerV1', - () => jest.fn().mockReturnValue(
Editor
) -); - -jest.mock('../../components/common/Loader/Loader', () => - jest.fn().mockReturnValue(
Loader
) + .mockReturnValue(
ErrorPlaceHolder
) ); jest.mock('../../hooks/authHooks', () => ({ @@ -60,9 +63,32 @@ jest.mock('../../hooks/authHooks', () => ({ })); jest.mock('../../rest/KpiAPI', () => ({ - getListKPIs: jest + getListKPIs: jest.fn().mockImplementation(() => + Promise.resolve({ + data: KPI_DATA, + paging: { after: '', before: '', total: 2 }, + }) + ), +})); + +jest.mock('../../components/DataInsight/EmptyGraphPlaceholder', () => ({ + EmptyGraphPlaceholder: jest .fn() - .mockImplementation(() => Promise.resolve({ data: KPI_DATA })), + .mockImplementation(() =>
EmptyGraphPlaceholder
), +})); + +jest.mock('../../utils/PermissionsUtils', () => ({ + checkPermission: jest.fn(), +})); + +jest.mock('../../utils/RouterUtils', () => ({ + getKpiPath: jest.fn(), +})); + +jest.mock('../../context/PermissionProvider/PermissionProvider', () => ({ + usePermissionProvider: jest.fn().mockReturnValue({ + viewKPIPermission: true, + }), })); describe('KPI list component', () => { diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/DataInsightPage/KPIList.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/DataInsightPage/KPIList.tsx index dee48c2e92e..e57c59cfc45 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/DataInsightPage/KPIList.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/DataInsightPage/KPIList.tsx @@ -231,8 +231,8 @@ const KPIList = () => { return ( <>
{
{
handleTask(hasData)} /> diff --git a/openmetadata-ui/src/main/resources/ui/src/styles/app.less b/openmetadata-ui/src/main/resources/ui/src/styles/app.less index 10b268ae563..9366aa1556a 100644 --- a/openmetadata-ui/src/main/resources/ui/src/styles/app.less +++ b/openmetadata-ui/src/main/resources/ui/src/styles/app.less @@ -968,13 +968,14 @@ a[href].link-text-grey, width: 350px; } -// Table icons +// Pagination styles -.filter-icon { - width: 16px; - height: 16px; +.pagination-next-icon { + font-size: 12px; } -.filter-icon-active { - fill: @primary-color; +.pagination-prev-icon { + font-size: 12px; + margin-top: -3px; + transform: rotate(180deg); } diff --git a/openmetadata-ui/src/main/resources/ui/src/styles/components/table.less b/openmetadata-ui/src/main/resources/ui/src/styles/components/table.less index dc74a5451aa..8a93ad9c1a7 100644 --- a/openmetadata-ui/src/main/resources/ui/src/styles/components/table.less +++ b/openmetadata-ui/src/main/resources/ui/src/styles/components/table.less @@ -17,10 +17,9 @@ .ant-table-thead { tr > th { font-weight: 500; - color: @grey-4; - text-transform: uppercase; + color: @grey-600; border-right: none; - border-color: @border-color; + border-color: @border-color-1; } tr > td { color: @text-color; @@ -29,7 +28,7 @@ } .ant-table-body { tr > td { - border-color: @border-color; + border-color: @border-color-1; } } .ant-table-cell { @@ -37,7 +36,7 @@ } .ant-table-bordered { table { - border-color: @border-color; + border-color: @border-color-1; tbody { tr { td { @@ -84,7 +83,7 @@ border-bottom: none; td { - border-bottom: 1px solid @border-color; + border-bottom: 1px solid @border-color-1; } } } @@ -176,3 +175,32 @@ width: 1px; } } + +// Table icons + +.table-action-icon { + width: 14px; + height: 14px; + color: @grey-600; + cursor: pointer; +} + +.table-expand-icon { + margin-right: 8px; + color: @text-color; + font-size: 12px; +} + +.filter-icon { + color: @grey-600; +} + +.filter-icon-active { + color: @primary-color; +} + +.drag-icon { + width: 6px; + margin-right: 8px; + color: @grey-4; +} 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 c44053e5ac5..80b8cb56be0 100644 --- a/openmetadata-ui/src/main/resources/ui/src/styles/variables.less +++ b/openmetadata-ui/src/main/resources/ui/src/styles/variables.less @@ -128,6 +128,7 @@ @grey-18: #afb5d9; @grey-19: #363f72; @grey-20: #dce3ec; +@grey-21: #ababab; @text-grey-muted: @grey-4; @de-active-color: #6b7280; diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/FeedElementUtils.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/FeedElementUtils.tsx index 426eec96f9e..4c264a66092 100644 --- a/openmetadata-ui/src/main/resources/ui/src/utils/FeedElementUtils.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/utils/FeedElementUtils.tsx @@ -15,19 +15,11 @@ import { Tooltip } from 'antd'; import { t } from 'i18next'; import React from 'react'; import { ReactComponent as IconComments } from '../assets/svg/comment.svg'; -import { DE_ACTIVE_COLOR } from '../constants/constants'; import { EntityField } from '../constants/Feeds.constants'; import { EntityType } from '../enums/entity.enum'; import { ThreadType } from '../generated/entity/feed/thread'; import { ENTITY_LINK_SEPARATOR, getEntityFeedLink } from './EntityUtils'; -const iconsProps = { - height: 14, - name: 'comments', - width: 14, - style: { color: DE_ACTIVE_COLOR }, -}; - export const getFieldThreadElement = ( onThreadLinkSelect: (value: string, threadType?: ThreadType) => void, entityType: EntityType, @@ -50,9 +42,9 @@ export const getFieldThreadElement = ( entity: t('label.conversation'), })}> { e.preventDefault(); e.stopPropagation(); diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/TableColumn.util.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/TableColumn.util.tsx index 1401229a088..afc587e50cd 100644 --- a/openmetadata-ui/src/main/resources/ui/src/utils/TableColumn.util.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/utils/TableColumn.util.tsx @@ -16,7 +16,6 @@ import classNames from 'classnames'; import React from 'react'; import { ReactComponent as FilterIcon } from '../assets/svg/ic-filter.svg'; import { OwnerLabel } from '../components/common/OwnerLabel/OwnerLabel.component'; -import { ICON_DIMENSION } from '../constants/constants'; import { TABLE_COLUMNS_KEYS } from '../constants/TableKeys.constants'; import { EntityReference } from '../generated/type/entityReference'; import i18n from './i18next/LocalUtil'; @@ -28,7 +27,6 @@ export const columnFilterIcon = (filtered: boolean) => ( })} component={FilterIcon} data-testid="filter-icon" - style={ICON_DIMENSION} /> ); diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/TableUtils.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/TableUtils.tsx index 28b2c25286b..2d73b781dfd 100644 --- a/openmetadata-ui/src/main/resources/ui/src/utils/TableUtils.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/utils/TableUtils.tsx @@ -137,7 +137,7 @@ import Lineage from '../components/Lineage/Lineage.component'; import { SourceType } from '../components/SearchedData/SearchedData.interface'; import { NON_SERVICE_TYPE_ASSETS } from '../constants/Assets.constants'; import { FQN_SEPARATOR_CHAR } from '../constants/char.constants'; -import { DE_ACTIVE_COLOR, TEXT_BODY_COLOR } from '../constants/constants'; +import { DE_ACTIVE_COLOR } from '../constants/constants'; import { ExportTypes } from '../constants/Export.constants'; import LineageProvider from '../context/LineageProvider/LineageProvider'; import { OperationPermission } from '../context/PermissionProvider/PermissionProvider.interface'; @@ -557,21 +557,18 @@ export function getTableExpandableConfig( expandIcon: ({ expanded, onExpand, expandable, record }) => expandable ? ( <> - {isDraggable && ( - - )} + {isDraggable && } onExpand(record, e)} /> ) : ( isDraggable && ( <> - + )