From bd208371a9969f43c1284427d34417f455763dd4 Mon Sep 17 00:00:00 2001 From: Karan Hotchandani <33024356+karanh37@users.noreply.github.com> Date: Wed, 20 Mar 2024 15:05:59 +0530 Subject: [PATCH] Query extend (#15595) * initial commit * add profile pic for bot * logo configurable for collate app * add query extras * fix tests * add tests --- .../Database/TableQueries/QueryCard.tsx | 9 ++++-- .../QueryCardExtraOption.component.tsx | 22 +++++++++++++- .../QueryCardExtraOption.test.tsx | 4 +++ .../AppDetails/ApplicationSchemaClassBase.ts | 3 ++ .../AppLogo/AppLogo.component.tsx | 22 ++++++++------ .../src/hooks/user-profile/useUserProfile.ts | 7 ++++- .../resources/ui/src/styles/variables.less | 1 + .../ui/src/utils/EntityUtilClassBase.ts | 6 ++++ .../ui/src/utils/QueryClassBase.test.ts | 27 +++++++++++++++++ .../resources/ui/src/utils/QueryClassBase.ts | 30 +++++++++++++++++++ .../ui/src/utils/UserClassBase.test.ts | 25 ++++++++++++++++ .../resources/ui/src/utils/UserClassBase.ts | 23 ++++++++++++++ 12 files changed, 165 insertions(+), 14 deletions(-) create mode 100644 openmetadata-ui/src/main/resources/ui/src/utils/QueryClassBase.test.ts create mode 100644 openmetadata-ui/src/main/resources/ui/src/utils/QueryClassBase.ts create mode 100644 openmetadata-ui/src/main/resources/ui/src/utils/UserClassBase.test.ts create mode 100644 openmetadata-ui/src/main/resources/ui/src/utils/UserClassBase.ts diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Database/TableQueries/QueryCard.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Database/TableQueries/QueryCard.tsx index 7d16decfd46..4f92ed6f16f 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Database/TableQueries/QueryCard.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Database/TableQueries/QueryCard.tsx @@ -38,6 +38,7 @@ import { useClipboard } from '../../../hooks/useClipBoard'; import { useFqn } from '../../../hooks/useFqn'; import { customFormatDateTime } from '../../../utils/date-time/DateTimeUtils'; import { parseSearchParams } from '../../../utils/Query/QueryUtils'; +import queryClassBase from '../../../utils/QueryClassBase'; import { getQueryPath } from '../../../utils/RouterUtils'; import SchemaEditor from '../SchemaEditor/SchemaEditor'; import QueryCardExtraOption from './QueryCardExtraOption/QueryCardExtraOption.component'; @@ -59,6 +60,7 @@ const QueryCard: FC = ({ afterDeleteAction, }: QueryCardProp) => { const { t } = useTranslation(); + const QueryExtras = queryClassBase.getQueryExtras(); const { fqn: datasetFQN } = useFqn(); const location = useLocation(); const history = useHistory(); @@ -169,7 +171,7 @@ const QueryCard: FC = ({ return ( - + = ({ onChange={handleQueryChange} /> - - + + = ({ + {isExpanded && QueryExtras && } ); }; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Database/TableQueries/QueryCardExtraOption/QueryCardExtraOption.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Database/TableQueries/QueryCardExtraOption/QueryCardExtraOption.component.tsx index 3897626c9e8..bc0afd830fa 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Database/TableQueries/QueryCardExtraOption/QueryCardExtraOption.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Database/TableQueries/QueryCardExtraOption/QueryCardExtraOption.component.tsx @@ -12,7 +12,7 @@ */ import { Button, Dropdown, MenuProps, Space, Tag, Tooltip } from 'antd'; import { isUndefined, split } from 'lodash'; -import React, { useMemo, useState } from 'react'; +import React, { useCallback, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { ReactComponent as EditIcon } from '../../../../assets/svg/edit-new.svg'; import { ReactComponent as DeleteIcon } from '../../../../assets/svg/ic-delete.svg'; @@ -25,8 +25,13 @@ import { QueryVoteType } from '../TableQueries.interface'; import { QueryCardExtraOptionProps } from './QueryCardExtraOption.interface'; import { AxiosError } from 'axios'; +import Qs from 'qs'; +import { useHistory } from 'react-router-dom'; import { useApplicationStore } from '../../../../hooks/useApplicationStore'; +import { useFqn } from '../../../../hooks/useFqn'; import { deleteQuery } from '../../../../rest/queryAPI'; +import queryClassBase from '../../../../utils/QueryClassBase'; +import { getQueryPath } from '../../../../utils/RouterUtils'; import { showErrorToast } from '../../../../utils/ToastUtils'; import ConfirmationModal from '../../../Modals/ConfirmationModal/ConfirmationModal'; import './query-card-extra-option.style.less'; @@ -39,6 +44,9 @@ const QueryCardExtraOption = ({ afterDeleteAction, }: QueryCardExtraOptionProps) => { const { EditAll, EditQueries, Delete } = permission; + const { fqn: datasetFQN } = useFqn(); + const history = useHistory(); + const QueryHeaderButton = queryClassBase.getQueryHeaderActionsButtons(); const { currentUser } = useApplicationStore(); const { t } = useTranslation(); const [showDeleteModal, setShowDeleteModal] = useState(false); @@ -57,6 +65,13 @@ const QueryCardExtraOption = ({ } }; + const onExpandClick = useCallback(() => { + history.push({ + search: Qs.stringify({ query: query.id }), + pathname: getQueryPath(datasetFQN, query.id ?? ''), + }); + }, [query]); + const dropdownItems = useMemo(() => { const items: MenuProps['items'] = [ { @@ -130,9 +145,14 @@ const QueryCardExtraOption = ({ className="query-card-extra-option" data-testid="extra-option-container" size={8}> + {QueryHeaderButton && ( + + )} + {queryLine} +