mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-09-03 06:03:12 +00:00
ui: updated glossary layout to sync with new layout (#12200)
* ui: updated glossary layout to sync with new layout * fixed failing unit test * updated row-id for test suite * fixed 404 page * addressing comment
This commit is contained in:
parent
acf25f4555
commit
7d4ad6ba72
@ -82,7 +82,8 @@ export const TestSuites = () => {
|
|||||||
activeTab: TableProfilerTab.DATA_QUALITY,
|
activeTab: TableProfilerTab.DATA_QUALITY,
|
||||||
}),
|
}),
|
||||||
}}>
|
}}>
|
||||||
{getEntityName(record.executableEntityReference)}
|
{record.executableEntityReference?.fullyQualifiedName ??
|
||||||
|
record.executableEntityReference?.name}
|
||||||
</Link>
|
</Link>
|
||||||
) : (
|
) : (
|
||||||
<Link
|
<Link
|
||||||
|
@ -65,6 +65,7 @@ const GlossaryTermTab = ({
|
|||||||
termsLoading,
|
termsLoading,
|
||||||
onAddGlossaryTerm,
|
onAddGlossaryTerm,
|
||||||
onEditGlossaryTerm,
|
onEditGlossaryTerm,
|
||||||
|
className,
|
||||||
}: GlossaryTermTabProps) => {
|
}: GlossaryTermTabProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const [isLoading, setIsLoading] = useState(true);
|
const [isLoading, setIsLoading] = useState(true);
|
||||||
@ -264,7 +265,7 @@ const GlossaryTermTab = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Row gutter={[0, 16]}>
|
<Row className={className} gutter={[0, 16]}>
|
||||||
<Col span={24}>
|
<Col span={24}>
|
||||||
<div className="d-flex justify-end">
|
<div className="d-flex justify-end">
|
||||||
<Button
|
<Button
|
||||||
|
@ -24,6 +24,7 @@ export interface GlossaryTermTabProps {
|
|||||||
permissions: OperationPermission;
|
permissions: OperationPermission;
|
||||||
onAddGlossaryTerm: (glossaryTerm: GlossaryTerm | undefined) => void;
|
onAddGlossaryTerm: (glossaryTerm: GlossaryTerm | undefined) => void;
|
||||||
onEditGlossaryTerm: (glossaryTerm: GlossaryTerm) => void;
|
onEditGlossaryTerm: (glossaryTerm: GlossaryTerm) => void;
|
||||||
|
className?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ModifiedGlossaryTerm = Omit<GlossaryTerm, 'children'> & {
|
export type ModifiedGlossaryTerm = Omit<GlossaryTerm, 'children'> & {
|
||||||
|
@ -67,7 +67,7 @@ const ImportGlossary: FC<Props> = ({ glossaryName }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Row className="import-glossary" gutter={[16, 8]}>
|
<Row className="import-glossary p-x-md" gutter={[16, 8]}>
|
||||||
<Col span={24}>
|
<Col span={24}>
|
||||||
<TitleBreadcrumb titleLinks={breadcrumbList} />
|
<TitleBreadcrumb titleLinks={breadcrumbList} />
|
||||||
</Col>
|
</Col>
|
||||||
|
@ -111,7 +111,7 @@ const GlossaryDetails = ({
|
|||||||
className="glossary-details"
|
className="glossary-details"
|
||||||
data-testid="glossary-details"
|
data-testid="glossary-details"
|
||||||
gutter={[0, 16]}>
|
gutter={[0, 16]}>
|
||||||
<Col span={24}>
|
<Col className="p-x-md" span={24}>
|
||||||
<GlossaryHeader
|
<GlossaryHeader
|
||||||
isGlossary
|
isGlossary
|
||||||
isVersionView={isVersionView}
|
isVersionView={isVersionView}
|
||||||
@ -123,12 +123,13 @@ const GlossaryDetails = ({
|
|||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
|
|
||||||
<Col span={24}>
|
<Col className="border-top p-x-md" span={24}>
|
||||||
<Row gutter={[16, 16]}>
|
<Row className="h-full" gutter={[32, 16]}>
|
||||||
<Col span={18}>
|
<Col
|
||||||
|
className="border-right p-y-md glossary-content-container"
|
||||||
|
span={18}>
|
||||||
<Space className="w-full" direction="vertical" size={24}>
|
<Space className="w-full" direction="vertical" size={24}>
|
||||||
<DescriptionV1
|
<DescriptionV1
|
||||||
wrapInCard
|
|
||||||
description={description}
|
description={description}
|
||||||
entityName={glossary.displayName ?? glossary.name}
|
entityName={glossary.displayName ?? glossary.name}
|
||||||
entityType={EntityType.GLOSSARY}
|
entityType={EntityType.GLOSSARY}
|
||||||
@ -153,7 +154,7 @@ const GlossaryDetails = ({
|
|||||||
/>
|
/>
|
||||||
</Space>
|
</Space>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={6}>
|
<Col className="p-y-md" span={6}>
|
||||||
<GlossaryDetailsRightPanel
|
<GlossaryDetailsRightPanel
|
||||||
isGlossary
|
isGlossary
|
||||||
isVersionView={isVersionView}
|
isVersionView={isVersionView}
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import { Button, Card, Col, Row, Space, Typography } from 'antd';
|
import { Button, Col, Row, Space, Typography } from 'antd';
|
||||||
import { ReactComponent as EditIcon } from 'assets/svg/edit-new.svg';
|
import { ReactComponent as EditIcon } from 'assets/svg/edit-new.svg';
|
||||||
import { ReactComponent as PlusIcon } from 'assets/svg/plus-primary.svg';
|
import { ReactComponent as PlusIcon } from 'assets/svg/plus-primary.svg';
|
||||||
import ProfilePicture from 'components/common/ProfilePicture/ProfilePicture';
|
import ProfilePicture from 'components/common/ProfilePicture/ProfilePicture';
|
||||||
@ -195,116 +195,113 @@ const GlossaryDetailsRightPanel = ({
|
|||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card>
|
<Row gutter={[0, 40]}>
|
||||||
<Row gutter={[0, 40]}>
|
<Col data-testid="glossary-owner-name" span="24">
|
||||||
<Col data-testid="glossary-owner-name" span="24">
|
<div className="d-flex items-center m-b-xss">
|
||||||
<div className="d-flex items-center m-b-xss">
|
<Typography.Text className="right-panel-label">
|
||||||
<Typography.Text className="right-panel-label">
|
{t('label.owner')}
|
||||||
{t('label.owner')}
|
</Typography.Text>
|
||||||
</Typography.Text>
|
{(permissions.EditOwner || permissions.EditAll) &&
|
||||||
{(permissions.EditOwner || permissions.EditAll) &&
|
selectedData.owner && (
|
||||||
selectedData.owner && (
|
|
||||||
<UserTeamSelectableList
|
|
||||||
hasPermission={permissions.EditOwner || permissions.EditAll}
|
|
||||||
owner={selectedData.owner}
|
|
||||||
onUpdate={handleUpdatedOwner}>
|
|
||||||
<Button
|
|
||||||
className="cursor-pointer flex-center m-l-xss"
|
|
||||||
data-testid="edit-owner"
|
|
||||||
icon={<EditIcon color={DE_ACTIVE_COLOR} width="14px" />}
|
|
||||||
size="small"
|
|
||||||
type="text"
|
|
||||||
/>
|
|
||||||
</UserTeamSelectableList>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<Space className="m-r-xss" size={4}>
|
|
||||||
{getUserNames(selectedData)}
|
|
||||||
</Space>
|
|
||||||
|
|
||||||
{!selectedData.owner &&
|
|
||||||
(permissions.EditOwner || permissions.EditAll) && (
|
|
||||||
<UserTeamSelectableList
|
<UserTeamSelectableList
|
||||||
hasPermission={permissions.EditOwner || permissions.EditAll}
|
hasPermission={permissions.EditOwner || permissions.EditAll}
|
||||||
owner={selectedData.owner}
|
owner={selectedData.owner}
|
||||||
onUpdate={handleUpdatedOwner}>
|
onUpdate={handleUpdatedOwner}>
|
||||||
<TagButton
|
<Button
|
||||||
className="tw-text-primary cursor-pointer"
|
className="cursor-pointer flex-center m-l-xss"
|
||||||
icon={<PlusIcon height={16} name="plus" width={16} />}
|
data-testid="edit-owner"
|
||||||
label={t('label.add')}
|
icon={<EditIcon color={DE_ACTIVE_COLOR} width="14px" />}
|
||||||
tooltip=""
|
size="small"
|
||||||
|
type="text"
|
||||||
/>
|
/>
|
||||||
</UserTeamSelectableList>
|
</UserTeamSelectableList>
|
||||||
)}
|
)}
|
||||||
</Col>
|
</div>
|
||||||
<Col span="24">
|
|
||||||
<div
|
|
||||||
className={`d-flex items-center ${
|
|
||||||
selectedData.reviewers && selectedData.reviewers.length > 0
|
|
||||||
? 'm-b-xss'
|
|
||||||
: ''
|
|
||||||
}`}>
|
|
||||||
<Typography.Text
|
|
||||||
className="right-panel-label"
|
|
||||||
data-testid="glossary-reviewer-heading-name">
|
|
||||||
{t('label.reviewer-plural')}
|
|
||||||
</Typography.Text>
|
|
||||||
{hasEditReviewerAccess &&
|
|
||||||
selectedData.reviewers &&
|
|
||||||
selectedData.reviewers.length > 0 && (
|
|
||||||
<UserSelectableList
|
|
||||||
hasPermission={hasEditReviewerAccess}
|
|
||||||
popoverProps={{ placement: 'topLeft' }}
|
|
||||||
selectedUsers={selectedData.reviewers ?? []}
|
|
||||||
onUpdate={handleReviewerSave}>
|
|
||||||
<Button
|
|
||||||
className="cursor-pointer flex-center m-l-xss"
|
|
||||||
data-testid="edit-reviewer-button"
|
|
||||||
icon={<EditIcon color={DE_ACTIVE_COLOR} width="14px" />}
|
|
||||||
size="small"
|
|
||||||
type="text"
|
|
||||||
/>
|
|
||||||
</UserSelectableList>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<GlossaryReviewers
|
|
||||||
editPermission={hasEditReviewerAccess}
|
|
||||||
glossaryData={selectedData}
|
|
||||||
isVersionView={isVersionView}
|
|
||||||
/>
|
|
||||||
|
|
||||||
{hasEditReviewerAccess && noReviewersSelected && (
|
<Space className="m-r-xss" size={4}>
|
||||||
|
{getUserNames(selectedData)}
|
||||||
|
</Space>
|
||||||
|
|
||||||
|
{!selectedData.owner && (permissions.EditOwner || permissions.EditAll) && (
|
||||||
|
<UserTeamSelectableList
|
||||||
|
hasPermission={permissions.EditOwner || permissions.EditAll}
|
||||||
|
owner={selectedData.owner}
|
||||||
|
onUpdate={handleUpdatedOwner}>
|
||||||
|
<TagButton
|
||||||
|
className="tw-text-primary cursor-pointer"
|
||||||
|
icon={<PlusIcon height={16} name="plus" width={16} />}
|
||||||
|
label={t('label.add')}
|
||||||
|
tooltip=""
|
||||||
|
/>
|
||||||
|
</UserTeamSelectableList>
|
||||||
|
)}
|
||||||
|
</Col>
|
||||||
|
<Col span="24">
|
||||||
|
<div
|
||||||
|
className={`d-flex items-center ${
|
||||||
|
selectedData.reviewers && selectedData.reviewers.length > 0
|
||||||
|
? 'm-b-xss'
|
||||||
|
: ''
|
||||||
|
}`}>
|
||||||
|
<Typography.Text
|
||||||
|
className="right-panel-label"
|
||||||
|
data-testid="glossary-reviewer-heading-name">
|
||||||
|
{t('label.reviewer-plural')}
|
||||||
|
</Typography.Text>
|
||||||
|
{hasEditReviewerAccess &&
|
||||||
|
selectedData.reviewers &&
|
||||||
|
selectedData.reviewers.length > 0 && (
|
||||||
<UserSelectableList
|
<UserSelectableList
|
||||||
hasPermission={hasEditReviewerAccess}
|
hasPermission={hasEditReviewerAccess}
|
||||||
popoverProps={{ placement: 'topLeft' }}
|
popoverProps={{ placement: 'topLeft' }}
|
||||||
selectedUsers={selectedData.reviewers ?? []}
|
selectedUsers={selectedData.reviewers ?? []}
|
||||||
onUpdate={handleReviewerSave}>
|
onUpdate={handleReviewerSave}>
|
||||||
<TagButton
|
<Button
|
||||||
className="tw-text-primary cursor-pointer"
|
className="cursor-pointer flex-center m-l-xss"
|
||||||
icon={<PlusIcon height={16} name="plus" width={16} />}
|
data-testid="edit-reviewer-button"
|
||||||
label={t('label.add')}
|
icon={<EditIcon color={DE_ACTIVE_COLOR} width="14px" />}
|
||||||
tooltip=""
|
size="small"
|
||||||
|
type="text"
|
||||||
/>
|
/>
|
||||||
</UserSelectableList>
|
</UserSelectableList>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</Col>
|
<div>
|
||||||
<Col span="24">
|
<GlossaryReviewers
|
||||||
<div data-testid="glossary-tags-name">
|
editPermission={hasEditReviewerAccess}
|
||||||
{isGlossary && (
|
glossaryData={selectedData}
|
||||||
<TagsInput
|
isVersionView={isVersionView}
|
||||||
editable={permissions.EditAll || permissions.EditTags}
|
/>
|
||||||
isVersionView={isVersionView}
|
|
||||||
tags={tags}
|
{hasEditReviewerAccess && noReviewersSelected && (
|
||||||
onTagsUpdate={handleTagsUpdate}
|
<UserSelectableList
|
||||||
|
hasPermission={hasEditReviewerAccess}
|
||||||
|
popoverProps={{ placement: 'topLeft' }}
|
||||||
|
selectedUsers={selectedData.reviewers ?? []}
|
||||||
|
onUpdate={handleReviewerSave}>
|
||||||
|
<TagButton
|
||||||
|
className="tw-text-primary cursor-pointer"
|
||||||
|
icon={<PlusIcon height={16} name="plus" width={16} />}
|
||||||
|
label={t('label.add')}
|
||||||
|
tooltip=""
|
||||||
/>
|
/>
|
||||||
)}
|
</UserSelectableList>
|
||||||
</div>
|
)}
|
||||||
</Col>
|
</div>
|
||||||
</Row>
|
</Col>
|
||||||
</Card>
|
<Col span="24">
|
||||||
|
<div data-testid="glossary-tags-name">
|
||||||
|
{isGlossary && (
|
||||||
|
<TagsInput
|
||||||
|
editable={permissions.EditAll || permissions.EditTags}
|
||||||
|
isVersionView={isVersionView}
|
||||||
|
tags={tags}
|
||||||
|
onTagsUpdate={handleTagsUpdate}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -117,6 +117,7 @@ const GlossaryTermsV1 = ({
|
|||||||
children: (
|
children: (
|
||||||
<GlossaryTermTab
|
<GlossaryTermTab
|
||||||
childGlossaryTerms={childGlossaryTerms}
|
childGlossaryTerms={childGlossaryTerms}
|
||||||
|
className="p-md glossary-term-table-container"
|
||||||
isGlossary={false}
|
isGlossary={false}
|
||||||
permissions={permissions}
|
permissions={permissions}
|
||||||
refreshGlossaryTerms={refreshGlossaryTerms}
|
refreshGlossaryTerms={refreshGlossaryTerms}
|
||||||
@ -221,7 +222,7 @@ const GlossaryTermsV1 = ({
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Row data-testid="glossary-term" gutter={[0, 8]}>
|
<Row data-testid="glossary-term" gutter={[0, 8]}>
|
||||||
<Col span={24}>
|
<Col className="p-x-md" span={24}>
|
||||||
<GlossaryHeader
|
<GlossaryHeader
|
||||||
isGlossary={false}
|
isGlossary={false}
|
||||||
isVersionView={isVersionView}
|
isVersionView={isVersionView}
|
||||||
@ -238,7 +239,7 @@ const GlossaryTermsV1 = ({
|
|||||||
<Tabs
|
<Tabs
|
||||||
destroyInactiveTabPane
|
destroyInactiveTabPane
|
||||||
activeKey={activeTab}
|
activeKey={activeTab}
|
||||||
className="glossary-tabs"
|
className="glossary-tabs custom-tab-spacing"
|
||||||
items={tabItems}
|
items={tabItems}
|
||||||
onChange={activeTabHandler}
|
onChange={activeTabHandler}
|
||||||
/>
|
/>
|
||||||
|
@ -219,7 +219,7 @@ const AssetsTabs = forwardRef(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div data-testid="table-container">
|
<div className="p-md assets-tab-container" data-testid="table-container">
|
||||||
{AssetsFilterOptions.map((option) => {
|
{AssetsFilterOptions.map((option) => {
|
||||||
const buttonStyle =
|
const buttonStyle =
|
||||||
activeFilter === option.value
|
activeFilter === option.value
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import { Card, Col, Row, Space } from 'antd';
|
import { Col, Row, Space } from 'antd';
|
||||||
import DescriptionV1 from 'components/common/description/DescriptionV1';
|
import DescriptionV1 from 'components/common/description/DescriptionV1';
|
||||||
import GlossaryDetailsRightPanel from 'components/GlossaryDetailsRightPanel/GlossaryDetailsRightPanel.component';
|
import GlossaryDetailsRightPanel from 'components/GlossaryDetailsRightPanel/GlossaryDetailsRightPanel.component';
|
||||||
import { OperationPermission } from 'components/PermissionProvider/PermissionProvider.interface';
|
import { OperationPermission } from 'components/PermissionProvider/PermissionProvider.interface';
|
||||||
@ -99,72 +99,71 @@ const GlossaryOverviewTab = ({
|
|||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Row className="glossary-overview-tab" gutter={[16, 16]}>
|
<Row className="glossary-overview-tab h-full" gutter={[32, 16]}>
|
||||||
<Col data-testid="updated-by-container" span={18}>
|
<Col
|
||||||
<Card>
|
className="border-right"
|
||||||
<Row gutter={[0, 32]}>
|
data-testid="updated-by-container"
|
||||||
<Col span={24}>
|
span={18}>
|
||||||
<DescriptionV1
|
<Row className="p-md p-r-0" gutter={[0, 32]}>
|
||||||
description={glossaryDescription}
|
<Col span={24}>
|
||||||
entityName={selectedData?.displayName ?? selectedData?.name}
|
<DescriptionV1
|
||||||
entityType={EntityType.GLOSSARY}
|
description={glossaryDescription}
|
||||||
hasEditAccess={
|
entityName={selectedData?.displayName ?? selectedData?.name}
|
||||||
permissions.EditDescription || permissions.EditAll
|
entityType={EntityType.GLOSSARY}
|
||||||
}
|
hasEditAccess={permissions.EditDescription || permissions.EditAll}
|
||||||
isEdit={isDescriptionEditable}
|
isEdit={isDescriptionEditable}
|
||||||
showCommentsIcon={false}
|
showCommentsIcon={false}
|
||||||
onCancel={() => setIsDescriptionEditable(false)}
|
onCancel={() => setIsDescriptionEditable(false)}
|
||||||
onDescriptionEdit={() => setIsDescriptionEditable(true)}
|
onDescriptionEdit={() => setIsDescriptionEditable(true)}
|
||||||
onDescriptionUpdate={onDescriptionUpdate}
|
onDescriptionUpdate={onDescriptionUpdate}
|
||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={24}>
|
<Col span={24}>
|
||||||
<Row gutter={[0, 40]}>
|
<Row gutter={[0, 40]}>
|
||||||
{!isGlossary && (
|
{!isGlossary && (
|
||||||
<>
|
<>
|
||||||
<Col span={12}>
|
<Col span={12}>
|
||||||
<GlossaryTermSynonyms
|
<GlossaryTermSynonyms
|
||||||
glossaryTerm={selectedData as GlossaryTerm}
|
glossaryTerm={selectedData as GlossaryTerm}
|
||||||
isVersionView={isVersionView}
|
|
||||||
permissions={permissions}
|
|
||||||
onGlossaryTermUpdate={onUpdate}
|
|
||||||
/>
|
|
||||||
</Col>
|
|
||||||
<Col span={12}>
|
|
||||||
<RelatedTerms
|
|
||||||
glossaryTerm={selectedData as GlossaryTerm}
|
|
||||||
isVersionView={isVersionView}
|
|
||||||
permissions={permissions}
|
|
||||||
onGlossaryTermUpdate={onUpdate}
|
|
||||||
/>
|
|
||||||
</Col>
|
|
||||||
<Col span={12}>
|
|
||||||
<GlossaryTermReferences
|
|
||||||
glossaryTerm={selectedData as GlossaryTerm}
|
|
||||||
isVersionView={isVersionView}
|
|
||||||
permissions={permissions}
|
|
||||||
onGlossaryTermUpdate={onUpdate}
|
|
||||||
/>
|
|
||||||
</Col>
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<Col span={12}>
|
|
||||||
<Space className="w-full" direction="vertical">
|
|
||||||
<TagsInput
|
|
||||||
editable={hasEditTagsPermissions}
|
|
||||||
isVersionView={isVersionView}
|
isVersionView={isVersionView}
|
||||||
tags={tags}
|
permissions={permissions}
|
||||||
onTagsUpdate={handleTagsUpdate}
|
onGlossaryTermUpdate={onUpdate}
|
||||||
/>
|
/>
|
||||||
</Space>
|
</Col>
|
||||||
</Col>
|
<Col span={12}>
|
||||||
</Row>
|
<RelatedTerms
|
||||||
</Col>
|
glossaryTerm={selectedData as GlossaryTerm}
|
||||||
</Row>
|
isVersionView={isVersionView}
|
||||||
</Card>
|
permissions={permissions}
|
||||||
|
onGlossaryTermUpdate={onUpdate}
|
||||||
|
/>
|
||||||
|
</Col>
|
||||||
|
<Col span={12}>
|
||||||
|
<GlossaryTermReferences
|
||||||
|
glossaryTerm={selectedData as GlossaryTerm}
|
||||||
|
isVersionView={isVersionView}
|
||||||
|
permissions={permissions}
|
||||||
|
onGlossaryTermUpdate={onUpdate}
|
||||||
|
/>
|
||||||
|
</Col>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<Col span={12}>
|
||||||
|
<Space className="w-full" direction="vertical">
|
||||||
|
<TagsInput
|
||||||
|
editable={hasEditTagsPermissions}
|
||||||
|
isVersionView={isVersionView}
|
||||||
|
tags={tags}
|
||||||
|
onTagsUpdate={handleTagsUpdate}
|
||||||
|
/>
|
||||||
|
</Space>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={6}>
|
<Col className="p-t-md" span={6}>
|
||||||
<GlossaryDetailsRightPanel
|
<GlossaryDetailsRightPanel
|
||||||
isGlossary={false}
|
isGlossary={false}
|
||||||
isVersionView={isVersionView}
|
isVersionView={isVersionView}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
import { Button, Card, Col, Row, Typography } from 'antd';
|
import { Button, Card, Col, Row, Typography } from 'antd';
|
||||||
import AppState from 'AppState';
|
import AppState from 'AppState';
|
||||||
import EntityListSkeleton from 'components/Skeleton/MyData/EntityListSkeleton/EntityListSkeleton.component';
|
import EntityListSkeleton from 'components/Skeleton/MyData/EntityListSkeleton/EntityListSkeleton.component';
|
||||||
import { getUserPath } from 'constants/constants';
|
import { getUserPath, ROUTES } from 'constants/constants';
|
||||||
import { AssetsType } from 'enums/entity.enum';
|
import { AssetsType } from 'enums/entity.enum';
|
||||||
import { EntityReference } from 'generated/entity/data/table';
|
import { EntityReference } from 'generated/entity/data/table';
|
||||||
import { observer } from 'mobx-react';
|
import { observer } from 'mobx-react';
|
||||||
@ -21,6 +21,7 @@ import React, { useEffect, useState } from 'react';
|
|||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import { getUserById } from 'rest/userAPI';
|
import { getUserById } from 'rest/userAPI';
|
||||||
|
import { Transi18next } from 'utils/CommonUtils';
|
||||||
import { getEntityName } from 'utils/EntityUtils';
|
import { getEntityName } from 'utils/EntityUtils';
|
||||||
import { getEntityIcon, getEntityLink } from 'utils/TableUtils';
|
import { getEntityIcon, getEntityLink } from 'utils/TableUtils';
|
||||||
|
|
||||||
@ -87,40 +88,45 @@ const MyDataWidgetInternal = () => {
|
|||||||
loading={Boolean(isLoading)}>
|
loading={Boolean(isLoading)}>
|
||||||
<>
|
<>
|
||||||
<div className="entity-list-body">
|
<div className="entity-list-body">
|
||||||
{data.length
|
{data.length ? (
|
||||||
? data.map((item, index) => {
|
data.map((item, index) => {
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className="right-panel-list-item flex items-center justify-between"
|
className="right-panel-list-item flex items-center justify-between"
|
||||||
data-testid={`Recently Viewed-${getEntityName(item)}`}
|
data-testid={`Recently Viewed-${getEntityName(item)}`}
|
||||||
key={index}>
|
key={index}>
|
||||||
<div className="d-flex items-center">
|
<div className="d-flex items-center">
|
||||||
<Link
|
<Link
|
||||||
className=""
|
className=""
|
||||||
to={getEntityLink(
|
to={getEntityLink(
|
||||||
item.type || '',
|
item.type || '',
|
||||||
item.fullyQualifiedName as string
|
item.fullyQualifiedName as string
|
||||||
)}>
|
)}>
|
||||||
<Button
|
<Button
|
||||||
className="entity-button flex-center p-xss"
|
className="entity-button flex-center p-xss"
|
||||||
icon={
|
icon={
|
||||||
<div className="entity-button-icon m-r-xs">
|
<div className="entity-button-icon m-r-xs">
|
||||||
{getEntityIcon(item.type || '')}
|
{getEntityIcon(item.type || '')}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
type="text">
|
type="text">
|
||||||
<Typography.Text
|
<Typography.Text
|
||||||
className="text-left text-xs"
|
className="text-left text-xs"
|
||||||
ellipsis={{ tooltip: true }}>
|
ellipsis={{ tooltip: true }}>
|
||||||
{getEntityName(item)}
|
{getEntityName(item)}
|
||||||
</Typography.Text>
|
</Typography.Text>
|
||||||
</Button>
|
</Button>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
</div>
|
||||||
})
|
);
|
||||||
: t('message.no-owned-data')}
|
})
|
||||||
|
) : (
|
||||||
|
<Transi18next
|
||||||
|
i18nKey="message.no-owned-data"
|
||||||
|
renderElement={<Link to={ROUTES.EXPLORE} />}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
</EntityListSkeleton>
|
</EntityListSkeleton>
|
||||||
|
@ -53,7 +53,7 @@ jest.mock(
|
|||||||
describe('MyDataWidget component', () => {
|
describe('MyDataWidget component', () => {
|
||||||
it('should fetch data', () => {
|
it('should fetch data', () => {
|
||||||
act(() => {
|
act(() => {
|
||||||
render(<MyDataWidget />);
|
render(<MyDataWidget />, { wrapper: MemoryRouter });
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(getUserById).toHaveBeenCalledWith('123', 'owns');
|
expect(getUserById).toHaveBeenCalledWith('123', 'owns');
|
||||||
|
@ -420,7 +420,7 @@ const DataQualityTab: React.FC<DataQualityTabProps> = ({
|
|||||||
emptyText: <FilterTablePlaceHolder />,
|
emptyText: <FilterTablePlaceHolder />,
|
||||||
}}
|
}}
|
||||||
pagination={false}
|
pagination={false}
|
||||||
rowKey="name"
|
rowKey="id"
|
||||||
size="small"
|
size="small"
|
||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
|
@ -215,7 +215,7 @@ const QueryCard: FC<QueryCardProp> = ({
|
|||||||
onChange={handleQueryChange}
|
onChange={handleQueryChange}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<Row align="middle" className="p-y-xs border-t-1">
|
<Row align="middle" className="p-y-xs border-top">
|
||||||
<Col className="p-y-0.5 p-l-md" span={16}>
|
<Col className="p-y-0.5 p-l-md" span={16}>
|
||||||
<QueryUsedByOtherTable query={query} tableId={tableId} />
|
<QueryUsedByOtherTable query={query} tableId={tableId} />
|
||||||
</Col>
|
</Col>
|
||||||
|
@ -1258,7 +1258,7 @@
|
|||||||
"no-mentions": "There are no instances where you or your team have been referenced in any activities",
|
"no-mentions": "There are no instances where you or your team have been referenced in any activities",
|
||||||
"no-notification-found": "No notifications found",
|
"no-notification-found": "No notifications found",
|
||||||
"no-open-task": "No Open Tasks",
|
"no-open-task": "No Open Tasks",
|
||||||
"no-owned-data": "It appears that you or your team do not have any Data Assets under your ownership. To rectify this, kindly click on the \"Explore\" on your menu to discover.",
|
"no-owned-data": "It appears that you or your team are not currently data asset owners. To start owning data assets, click on the <0>Explore</0> option to discover and claim assets.",
|
||||||
"no-permission-for-action": "You do not have the necessary permissions to perform this action.",
|
"no-permission-for-action": "You do not have the necessary permissions to perform this action.",
|
||||||
"no-permission-to-view": "You do not have the necessary permissions to view this data.",
|
"no-permission-to-view": "You do not have the necessary permissions to view this data.",
|
||||||
"no-profiler-enabled-summary-message": "Profiler is not enabled for this table.",
|
"no-profiler-enabled-summary-message": "Profiler is not enabled for this table.",
|
||||||
|
@ -1258,7 +1258,7 @@
|
|||||||
"no-mentions": "There are no instances where you or your team have been referenced in any activities",
|
"no-mentions": "There are no instances where you or your team have been referenced in any activities",
|
||||||
"no-notification-found": "No se encontraron notificaciones",
|
"no-notification-found": "No se encontraron notificaciones",
|
||||||
"no-open-task": "No hay tareas abiertas",
|
"no-open-task": "No hay tareas abiertas",
|
||||||
"no-owned-data": "It appears that you or your team do not have any Data Assets under your ownership. To rectify this, kindly click on the \"Explore\" on your menu to discover.",
|
"no-owned-data": "It appears that you or your team are not currently data asset owners. To start owning data assets, click on the <0>Explore</0> option to discover and claim assets.",
|
||||||
"no-permission-for-action": "No tiene los permisos necesarios para realizar esta acción.",
|
"no-permission-for-action": "No tiene los permisos necesarios para realizar esta acción.",
|
||||||
"no-permission-to-view": "No tiene los permisos necesarios para ver estos datos.",
|
"no-permission-to-view": "No tiene los permisos necesarios para ver estos datos.",
|
||||||
"no-profiler-enabled-summary-message": "El profiler no está habilitado para esta tabla.",
|
"no-profiler-enabled-summary-message": "El profiler no está habilitado para esta tabla.",
|
||||||
|
@ -1258,7 +1258,7 @@
|
|||||||
"no-mentions": "There are no instances where you or your team have been referenced in any activities",
|
"no-mentions": "There are no instances where you or your team have been referenced in any activities",
|
||||||
"no-notification-found": "Aucune notifiaction trouvé",
|
"no-notification-found": "Aucune notifiaction trouvé",
|
||||||
"no-open-task": "Aucune tâche ouverte",
|
"no-open-task": "Aucune tâche ouverte",
|
||||||
"no-owned-data": "It appears that you or your team do not have any Data Assets under your ownership. To rectify this, kindly click on the \"Explore\" on your menu to discover.",
|
"no-owned-data": "It appears that you or your team are not currently data asset owners. To start owning data assets, click on the <0>Explore</0> option to discover and claim assets.",
|
||||||
"no-permission-for-action": "Vous n'avez pas les permissions requises pour effectuer cette action.",
|
"no-permission-for-action": "Vous n'avez pas les permissions requises pour effectuer cette action.",
|
||||||
"no-permission-to-view": "Vous n'avez pas les permissions requises pour voir ces données.",
|
"no-permission-to-view": "Vous n'avez pas les permissions requises pour voir ces données.",
|
||||||
"no-profiler-enabled-summary-message": "Profilage n'est pas activé pour cette table.",
|
"no-profiler-enabled-summary-message": "Profilage n'est pas activé pour cette table.",
|
||||||
|
@ -1258,7 +1258,7 @@
|
|||||||
"no-mentions": "There are no instances where you or your team have been referenced in any activities",
|
"no-mentions": "There are no instances where you or your team have been referenced in any activities",
|
||||||
"no-notification-found": "No notifications found",
|
"no-notification-found": "No notifications found",
|
||||||
"no-open-task": "開いているタスクはありません",
|
"no-open-task": "開いているタスクはありません",
|
||||||
"no-owned-data": "It appears that you or your team do not have any Data Assets under your ownership. To rectify this, kindly click on the \"Explore\" on your menu to discover.",
|
"no-owned-data": "It appears that you or your team are not currently data asset owners. To start owning data assets, click on the <0>Explore</0> option to discover and claim assets.",
|
||||||
"no-permission-for-action": "あなたはこのアクションを実行する権限を持っていません。",
|
"no-permission-for-action": "あなたはこのアクションを実行する権限を持っていません。",
|
||||||
"no-permission-to-view": "あなたはこのデータを閲覧する権限を持っていません。",
|
"no-permission-to-view": "あなたはこのデータを閲覧する権限を持っていません。",
|
||||||
"no-profiler-enabled-summary-message": "Profiler is not enabled for this table.",
|
"no-profiler-enabled-summary-message": "Profiler is not enabled for this table.",
|
||||||
|
@ -1258,7 +1258,7 @@
|
|||||||
"no-mentions": "There are no instances where you or your team have been referenced in any activities",
|
"no-mentions": "There are no instances where you or your team have been referenced in any activities",
|
||||||
"no-notification-found": "Nenhuma notificação encontrada",
|
"no-notification-found": "Nenhuma notificação encontrada",
|
||||||
"no-open-task": "Nenhuma tarefa aberta",
|
"no-open-task": "Nenhuma tarefa aberta",
|
||||||
"no-owned-data": "It appears that you or your team do not have any Data Assets under your ownership. To rectify this, kindly click on the \"Explore\" on your menu to discover.",
|
"no-owned-data": "It appears that you or your team are not currently data asset owners. To start owning data assets, click on the <0>Explore</0> option to discover and claim assets.",
|
||||||
"no-permission-for-action": "Você não tem as permissões necessárias para executar esta ação.",
|
"no-permission-for-action": "Você não tem as permissões necessárias para executar esta ação.",
|
||||||
"no-permission-to-view": "Você não tem as permissões necessárias para visualizar estes dados.",
|
"no-permission-to-view": "Você não tem as permissões necessárias para visualizar estes dados.",
|
||||||
"no-profiler-enabled-summary-message": "Profiler não está habilitado para esta tabela.",
|
"no-profiler-enabled-summary-message": "Profiler não está habilitado para esta tabela.",
|
||||||
|
@ -1258,7 +1258,7 @@
|
|||||||
"no-mentions": "There are no instances where you or your team have been referenced in any activities",
|
"no-mentions": "There are no instances where you or your team have been referenced in any activities",
|
||||||
"no-notification-found": "未找到通知",
|
"no-notification-found": "未找到通知",
|
||||||
"no-open-task": "无未完成任务",
|
"no-open-task": "无未完成任务",
|
||||||
"no-owned-data": "It appears that you or your team do not have any Data Assets under your ownership. To rectify this, kindly click on the \"Explore\" on your menu to discover.",
|
"no-owned-data": "It appears that you or your team are not currently data asset owners. To start owning data assets, click on the <0>Explore</0> option to discover and claim assets.",
|
||||||
"no-permission-for-action": "您没有执行此操作所需的必要权限",
|
"no-permission-for-action": "您没有执行此操作所需的必要权限",
|
||||||
"no-permission-to-view": "您没有查看此数据所需的必要权限",
|
"no-permission-to-view": "您没有查看此数据所需的必要权限",
|
||||||
"no-profiler-enabled-summary-message": "该数据表未启用数据分析工具",
|
"no-profiler-enabled-summary-message": "该数据表未启用数据分析工具",
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Col, Row } from 'antd';
|
|
||||||
import { AxiosError } from 'axios';
|
import { AxiosError } from 'axios';
|
||||||
import ErrorPlaceHolder from 'components/common/error-with-placeholder/ErrorPlaceHolder';
|
import ErrorPlaceHolder from 'components/common/error-with-placeholder/ErrorPlaceHolder';
|
||||||
import PageLayoutV1 from 'components/containers/PageLayoutV1';
|
import PageLayoutV1 from 'components/containers/PageLayoutV1';
|
||||||
@ -281,22 +280,18 @@ const GlossaryPage = () => {
|
|||||||
{isRightPanelLoading ? (
|
{isRightPanelLoading ? (
|
||||||
<Loader />
|
<Loader />
|
||||||
) : (
|
) : (
|
||||||
<Row className="page-container" gutter={[16, 0]} wrap={false}>
|
<GlossaryV1
|
||||||
<Col flex="auto">
|
deleteStatus={deleteStatus}
|
||||||
<GlossaryV1
|
isGlossaryActive={isGlossaryActive}
|
||||||
deleteStatus={deleteStatus}
|
isSummaryPanelOpen={Boolean(previewAsset)}
|
||||||
isGlossaryActive={isGlossaryActive}
|
isVersionsView={false}
|
||||||
isSummaryPanelOpen={Boolean(previewAsset)}
|
selectedData={selectedData as Glossary}
|
||||||
isVersionsView={false}
|
updateGlossary={updateGlossary}
|
||||||
selectedData={selectedData as Glossary}
|
onAssetClick={handleAssetClick}
|
||||||
updateGlossary={updateGlossary}
|
onGlossaryDelete={handleGlossaryDelete}
|
||||||
onAssetClick={handleAssetClick}
|
onGlossaryTermDelete={handleGlossaryTermDelete}
|
||||||
onGlossaryDelete={handleGlossaryDelete}
|
onGlossaryTermUpdate={handleGlossaryTermUpdate}
|
||||||
onGlossaryTermDelete={handleGlossaryTermDelete}
|
/>
|
||||||
onGlossaryTermUpdate={handleGlossaryTermUpdate}
|
|
||||||
/>
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
||||||
)}
|
)}
|
||||||
</PageLayoutV1>
|
</PageLayoutV1>
|
||||||
);
|
);
|
||||||
|
@ -119,11 +119,6 @@ a[href].link-text-grey,
|
|||||||
.border-t-0 {
|
.border-t-0 {
|
||||||
border-top-width: 0px;
|
border-top-width: 0px;
|
||||||
}
|
}
|
||||||
.border-t-1 {
|
|
||||||
border-top-width: 1px;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: @border-color;
|
|
||||||
}
|
|
||||||
.border-main {
|
.border-main {
|
||||||
border-color: @border-color;
|
border-color: @border-color;
|
||||||
}
|
}
|
||||||
|
@ -86,6 +86,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.glossary-tabs {
|
.glossary-tabs {
|
||||||
|
.glossary-overview-tab,
|
||||||
|
.glossary-term-table-container,
|
||||||
|
.assets-tab-container {
|
||||||
|
height: @glossary-term-page-height;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
.description-heading {
|
.description-heading {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
@ -150,5 +156,14 @@
|
|||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
border-top: 0;
|
border-top: 0;
|
||||||
|
|
||||||
|
.summary-panel-container {
|
||||||
|
height: @page-height;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.glossary-content-container {
|
||||||
|
height: @glossary-page-height;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
|
@ -78,8 +78,11 @@
|
|||||||
@btn-shadow: none;
|
@btn-shadow: none;
|
||||||
|
|
||||||
// Sizing
|
// Sizing
|
||||||
|
@page-height: calc(100vh - 64px);
|
||||||
@left-side-panel-width: 230px;
|
@left-side-panel-width: 230px;
|
||||||
@entity-details-tab-height: calc(100vh - 236px);
|
@entity-details-tab-height: calc(100vh - 236px);
|
||||||
@users-page-tabs-height: calc(
|
@users-page-tabs-height: calc(
|
||||||
100vh - 122px
|
100vh - 122px
|
||||||
); /* navbar+tab_height+padding = 64+46+12 */
|
); /* navbar+tab_height+padding = 64+46+12 */
|
||||||
|
@glossary-page-height: calc(100vh - 165px);
|
||||||
|
@glossary-term-page-height: calc(100vh - 200px);
|
||||||
|
@ -872,7 +872,7 @@ code {
|
|||||||
|
|
||||||
.page-not-found-container {
|
.page-not-found-container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: calc(100% - 68px);
|
height: 100vh;
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user