diff --git a/web/src/components/core/text/MqText.tsx b/web/src/components/core/text/MqText.tsx index 041a4073f7..b62e403a8a 100644 --- a/web/src/components/core/text/MqText.tsx +++ b/web/src/components/core/text/MqText.tsx @@ -3,7 +3,7 @@ import React, { ReactElement } from 'react' -import { Box } from '@mui/system' +import { Box, SxProps } from '@mui/system' import { Link as LinkRouter } from 'react-router-dom' import { THEME_EXTRA } from '../../../helpers/theme' import { Typography } from '@mui/material' @@ -30,6 +30,8 @@ interface OwnProps { font?: 'primary' | 'mono' small?: boolean bottomMargin?: boolean + block?: boolean + sx?: SxProps children: ReactElement | (string | ReactElement)[] | string | string[] | number | undefined | null onClick?: () => void } @@ -56,7 +58,9 @@ const MqText: React.FC = ({ highlight, color, small, + block, onClick, + sx, }) => { const theme = createTheme(useTheme()) @@ -87,6 +91,9 @@ const MqText: React.FC = ({ bold: { fontWeight: 700, }, + block: { + display: 'block', + }, subdued: { color: THEME_EXTRA.typography.subdued, }, @@ -140,6 +147,7 @@ const MqText: React.FC = ({ inline ? classesObject.inline : {}, small ? classesObject.small : {}, link ? classesObject.link : {}, + block ? classesObject.block : {}, paragraph ? classesObject.paragraph : {}, subheading ? classesObject.subheading : {}, overflowHidden ? classesObject.overflowHidden : {} @@ -154,7 +162,10 @@ const MqText: React.FC = ({ {children} @@ -170,7 +181,10 @@ const MqText: React.FC = ({ > {children} @@ -183,7 +197,10 @@ const MqText: React.FC = ({ href={href} target={'_blank'} rel='noopener noreferrer' - sx={Object.assign(classesObject.root, classesObject.link, conditionalClasses)} + sx={{ + ...Object.assign(classesObject.root, classesObject.link, conditionalClasses), + ...sx, + }} > {children} @@ -192,7 +209,7 @@ const MqText: React.FC = ({ return ( {children} diff --git a/web/src/components/core/tooltip/MQTooltip.tsx b/web/src/components/core/tooltip/MQTooltip.tsx index d6e8c91509..903ce7a235 100644 --- a/web/src/components/core/tooltip/MQTooltip.tsx +++ b/web/src/components/core/tooltip/MQTooltip.tsx @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import { createTheme } from '@mui/material/styles' -import { grey } from '@mui/material/colors' +import { darken } from '@mui/material' import { useTheme } from '@emotion/react' import React, { ReactElement } from 'react' import Tooltip from '@mui/material/Tooltip' @@ -10,7 +10,19 @@ import Tooltip from '@mui/material/Tooltip' interface MqToolTipProps { title: string | ReactElement children: ReactElement - placement?: 'left' | 'right' | 'top' + placement?: + | 'left' + | 'right' + | 'top' + | 'right-end' + | 'left-end' + | 'top-end' + | 'bottom' + | 'bottom-end' + | 'top-start' + | 'bottom-start' + | 'left-start' + | 'right-start' } const MQTooltip: React.FC = ({ title, children, placement }) => { @@ -22,9 +34,8 @@ const MQTooltip: React.FC = ({ title, children, placement }) => componentsProps={{ tooltip: { sx: { - backgroundColor: `${theme.palette.common.white}`, - color: grey['900'], - border: `1px solid ${theme.palette.common.white}`, + backgroundColor: `${darken(theme.palette.background.paper, 0.1)}`, + color: theme.palette.common.white, maxWidth: '600px', fontSize: 14, }, diff --git a/web/src/components/datasets/DatasetDetailPage.tsx b/web/src/components/datasets/DatasetDetailPage.tsx index 83019868e0..796f2d57fb 100644 --- a/web/src/components/datasets/DatasetDetailPage.tsx +++ b/web/src/components/datasets/DatasetDetailPage.tsx @@ -16,6 +16,7 @@ import { import { CalendarIcon } from '@mui/x-date-pickers' import { CircularProgress } from '@mui/material' import { Dataset, DatasetVersion } from '../../types/api' +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { IState } from '../../store/reducers' import { LineageDataset } from '../../types/lineage' import { MqInfo } from '../core/info/MqInfo' @@ -32,7 +33,9 @@ import { resetDatasetVersions, setTabIndex, } from '../../store/actionCreators' +import { faDatabase } from '@fortawesome/free-solid-svg-icons' import { formatUpdatedAt } from '../../helpers' +import { truncateText } from '../../helpers/text' import { useNavigate, useSearchParams } from 'react-router-dom' import { useTheme } from '@emotion/react' import CloseIcon from '@mui/icons-material/Close' @@ -159,9 +162,29 @@ const DatasetDetailPage: FunctionComponent = (props) => { )} - - {name} - + + + + + + {truncateText(name, 40)} + + {description} diff --git a/web/src/components/jobs/JobDetailPage.tsx b/web/src/components/jobs/JobDetailPage.tsx index a2a2c663bd..89d81cc929 100644 --- a/web/src/components/jobs/JobDetailPage.tsx +++ b/web/src/components/jobs/JobDetailPage.tsx @@ -8,6 +8,7 @@ import * as Redux from 'redux' import { Box, Button, CircularProgress, Divider, Grid, Tab, Tabs } from '@mui/material' import { CalendarIcon } from '@mui/x-date-pickers' import { DirectionsRun, SportsScore, Start } from '@mui/icons-material' +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { IState } from '../../store/reducers' import { LineageJob } from '../../types/lineage' import { MqInfo } from '../core/info/MqInfo' @@ -23,9 +24,11 @@ import { resetRuns, setTabIndex, } from '../../store/actionCreators' +import { faCog } from '@fortawesome/free-solid-svg-icons/faCog' import { formatUpdatedAt } from '../../helpers' import { jobRunsStatus } from '../../helpers/nodes' import { stopWatchDuration } from '../../helpers/time' +import { truncateText } from '../../helpers/text' import { useNavigate, useSearchParams } from 'react-router-dom' import { useTheme } from '@emotion/react' import CloseIcon from '@mui/icons-material/Close' @@ -118,9 +121,29 @@ const JobDetailPage: FunctionComponent = (props) => { > - - {job.name} - + + + + + + {truncateText(job.name, 40)} + + {job.description && ( {job.description} diff --git a/web/src/routes/column-level/ColumnLevelDrawer.tsx b/web/src/routes/column-level/ColumnLevelDrawer.tsx index 70dc69f84c..54f7c4f877 100644 --- a/web/src/routes/column-level/ColumnLevelDrawer.tsx +++ b/web/src/routes/column-level/ColumnLevelDrawer.tsx @@ -1,6 +1,7 @@ import * as Redux from 'redux' import { Box } from '@mui/system' import { + Chip, CircularProgress, Divider, Table, @@ -102,10 +103,18 @@ const ColumnLevelDrawer = ({ return ( - {field.name} - {field.type} - {field.description || 'no description'} + {field.name} + + + {field.type}} + variant={'outlined'} + /> + + + {field.description || 'no description'} diff --git a/web/src/routes/column-level/ZoomControls.tsx b/web/src/routes/column-level/ZoomControls.tsx index 47dd7452be..86e5eab145 100644 --- a/web/src/routes/column-level/ZoomControls.tsx +++ b/web/src/routes/column-level/ZoomControls.tsx @@ -1,8 +1,8 @@ import { CenterFocusStrong, CropFree, ZoomIn, ZoomOut } from '@mui/icons-material' -import { Tooltip } from '@mui/material' import { theme } from '../../helpers/theme' import Box from '@mui/material/Box' import IconButton from '@mui/material/IconButton' +import MQTooltip from '../../components/core/tooltip/MQTooltip' import React from 'react' interface ZoomControlsProps { @@ -28,27 +28,27 @@ export const ZoomControls = ({ zIndex={1} borderColor={theme.palette.grey[500]} > - + handleScaleZoom('in')}> - - + + handleScaleZoom('out')}> - - + + - + {handleCenterOnNode && ( - + - + )} ) diff --git a/web/src/routes/table-level/TableLineageDatasetNode.tsx b/web/src/routes/table-level/TableLineageDatasetNode.tsx index e508753c26..9b0eeb6d88 100644 --- a/web/src/routes/table-level/TableLineageDatasetNode.tsx +++ b/web/src/routes/table-level/TableLineageDatasetNode.tsx @@ -14,6 +14,7 @@ import { useNavigate, useParams, useSearchParams } from 'react-router-dom' import Box from '@mui/system/Box' import IconButton from '@mui/material/IconButton' import MQTooltip from '../../components/core/tooltip/MQTooltip' +import MqText from '../../components/core/text/MqText' import React from 'react' interface StateProps { @@ -46,17 +47,36 @@ const TableLineageDatasetNode = ({ node }: TableLineageDatasetNodeProps & StateP const addToToolTip = (dataset: LineageDataset) => { return ( - <> - {'Namespace: '} - {dataset.namespace} -

- {'Name: '} - {dataset.name} -

- {'Description: '} - {dataset.description === null ? 'No Description' : dataset.description} -

- + + + + + Namespace: + + + {truncateText(dataset.namespace, 25)} + + + + + Name: + + + {truncateText(dataset.name, 25)} + + + {dataset.description && ( + + + Description: + + + {dataset.description} + + + )} + + ) } @@ -130,7 +150,7 @@ const TableLineageDatasetNode = ({ node }: TableLineageDatasetNodeProps & StateP - + const addToToolTip = (job: LineageJob) => { return ( - <> - {'Namespace: '} - {job.namespace} -

- {'Name: '} - {job.name} -

- {'Description: '} - {job.description === null ? 'No Description' : job.description} -

- + + + + + Namespace: + + + {truncateText(job.namespace, 25)} + + + + + Name: + + + {truncateText(job.name, 25)} + + + {job.description && ( + + + Description: + + + {job.description} + + + )} + + ) } @@ -87,7 +107,7 @@ const TableLineageJobNode = ({ node }: TableLineageJobNodeProps & StateProps) => color={theme.palette.common.white} onClick={handleClick} /> - +