@reltio/remotes 1.4.1236 → 1.4.1237
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/5884.js +1 -1
- package/5884.js.map +1 -1
- package/6710.js +1 -1
- package/6710.js.map +1 -1
- package/7770.js +1 -1
- package/7770.js.map +1 -1
- package/8208.js +1 -1
- package/8208.js.map +1 -1
- package/package.json +1 -1
package/7770.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"7770.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AvatarWithFallback/AvatarWithFallback.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTable/HOCs/withTableContext.js","webpack://@reltio/remotes/../components/src/components/BasicView/styles.js","webpack://@reltio/remotes/../components/src/components/BasicView/BasicView.tsx","webpack://@reltio/remotes/../components/src/components/BasicViewContent/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicViewContent/BasicViewContent.tsx","webpack://@reltio/remotes/../components/src/components/BasicViewHeader/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicViewHeader/BasicViewHeader.tsx","webpack://@reltio/remotes/../components/src/components/ColorBar/styles.ts","webpack://@reltio/remotes/../components/src/components/ColorBar/ColorBar.tsx","webpack://@reltio/remotes/../components/src/components/EmptyState/styles.ts","webpack://@reltio/remotes/../components/src/components/EmptyState/EmptyState.tsx","webpack://@reltio/remotes/../components/src/icons/EmptySearchResults.tsx","webpack://@reltio/remotes/../components/src/icons/SelectAttributes.tsx","webpack://@reltio/remotes/../components/src/icons/NoData.tsx","webpack://@reltio/remotes/../components/src/icons/Error.tsx","webpack://@reltio/remotes/../components/src/components/ErrorBoundary/ErrorBoundary.tsx","webpack://@reltio/remotes/../components/src/components/HideOnShrink/HideOnShrink.js","webpack://@reltio/remotes/../components/src/components/ReltioGridLayout/helpers.js","webpack://@reltio/remotes/../components/src/components/ReltioGridLayout/icons/ResizeIcon.svg.ts","webpack://@reltio/remotes/../components/src/components/ReltioGridLayout/styles.js","webpack://@reltio/remotes/../components/src/components/ReltioGridLayout/ReltioGridLayout.js","webpack://@reltio/remotes/../components/src/components/SourceIcon/SourceIcon.tsx","webpack://@reltio/remotes/../components/src/components/VerticalDivider/VerticalDivider.js","webpack://@reltio/remotes/../components/src/components/charts/HOCs/withPercents.tsx","webpack://@reltio/remotes/../components/src/components/charts/hooks/useClickableStyle.ts","webpack://@reltio/remotes/../components/src/hooks/useSavedState.ts","webpack://@reltio/remotes/../components/src/types/index.ts","webpack://@reltio/remotes/../dashboard/src/components/DashboardLinearLoader/styles.ts","webpack://@reltio/remotes/../dashboard/src/components/DashboardLinearLoader/DashboardLinearLoader.tsx","webpack://@reltio/remotes/../dashboard/src/components/LayoutItemView/styles.ts","webpack://@reltio/remotes/../dashboard/src/components/LayoutItemView/LayoutItemView.tsx","webpack://@reltio/remotes/../dashboard/src/contexts/DashboardViewIdContext/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/ReloadFacetContext/index.tsx","webpack://@reltio/remotes/../dq-dashboard/src/theme/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/constants/ChartDataType.ts","webpack://@reltio/remotes/../dq-dashboard/src/constants/ViewType.ts","webpack://@reltio/remotes/../dq-dashboard/src/constants/RdmLookupState.ts","webpack://@reltio/remotes/../dq-dashboard/src/constants/defaultConfig.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/ChartsDataContext/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/DetailedAttributeTypeContext/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/DVFContext/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/EntityTypeContext/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useChartsDataRequest.ts","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useEntityCount.ts","webpack://@reltio/remotes/../dq-dashboard/src/types/TimeRange.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/advancedFilters.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/charts.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/rdmTranscode.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/attributes.ts","webpack://@reltio/remotes/../dq-dashboard/src/types/DetailedAttributeType.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/attributeFilters.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/attributeDetails.ts","webpack://@reltio/remotes/../dq-dashboard/src/types/EmptyStateVariants.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/DataLevelContext/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/TimeRangeContext/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/mlDq.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartDataTooltip/data-renderers/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartDataTooltip/data-renderers/InfoDataRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartDataTooltip/data-renderers/ChartDataRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartDataTooltip/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartDataTooltip/ChartDataTooltip.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartDataTooltip/TooltipWithSquares/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartDataTooltip/TooltipWithSquares/TooltipWithSquares.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQLayoutItemHeader/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQLayoutItemHeader/DQLayoutItemHeader.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQLayoutItemView/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQLayoutItemView/DQLayoutItemView.tsx","webpack://@reltio/remotes/../dq-dashboard/src/services/fillRate.ts","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useChartData.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/rawFilters.ts","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useSearchRedirect.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardError/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardError/DQDashboardError.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardNoData/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardNoData/DQDashboardNoData.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQLayoutItemContent/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQLayoutItemContent/DQLayoutItemContent.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartLegends/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartLegends/CustomLegend.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartLegends/ChartLegends.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/StackedHorizontalBarChart/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/StackedHorizontalBarChart/Bar.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/StackedHorizontalBarChart/StackedHorizontalBarChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/FillRateChart/FillRateChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useMlDqDataRequest.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/barCharts.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/LineChart/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/LineChart/LineChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/LineChart/getLineChartSettings.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/TimeSeriesInfoPanel/positiveDynamic.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/TimeSeriesInfoPanel/negativeDynamic.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/TimeSeriesInfoPanel/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/TimeSeriesInfoPanel/TimeSeriesInfoPanel.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/FillRateChart/FillRateTimeSeriesChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/TimeRangeChip/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/TimeRangeChip/TimeRangeChip.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/FillRateChart/index.tsx","webpack://@reltio/remotes/../dq-dashboard/src/services/uniquenessAnalysis.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/UniquenessAnalysisChart/UniquenessAnalysisChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/UniquenessAnalysisChart/UniquenessAnalysisTimeSeriesChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/UniquenessAnalysisChart/index.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailIcon/icons/dvf.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailIcon/icons/includedInMatching.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailIcon/icons/rdm.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailIcon/icons/reference.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailIcon/icons/required.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailIcon/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailIcon/AttributeTypeDetailIcon.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailChip/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailChip/AttributeTypeDetailChip.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetails/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetails/AttributeTypeDetails.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/Summary/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/Summary/HeaderInfo.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeIcon/icons/boolean.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeIcon/icons/date.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeIcon/icons/float.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeIcon/icons/integer.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeIcon/icons/ssn.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeIcon/icons/string.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeIcon/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeIcon/AttributeTypeIcon.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/Summary/AttributeTypeSummary.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useExistsTotalsRequest.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/Summary/EntityTypeSummary.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/Summary/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/Summary/Summary.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/DQDashboardErrorView/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/DQDashboardErrorView/DQDashboardErrorView.tsx","webpack://@reltio/remotes/../dq-dashboard/src/services/tableCharts.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ViolatedValidationFuncChart/helpers.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/helpers.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/cell-renderers/OverflowingHandler.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/cell-renderers/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/cell-renderers/TableCellTooltip.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/cell-renderers/LabelCellRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/cell-renderers/NumberCellValueRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/TableWithBars.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomTableWithBarsChart/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomTableWithBarsChart/CustomTableWithBarsChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/icons/niceOne.svg","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/icons/settingsIcon.svg","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/icons/notSupportedIcon.svg","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ViolatedValidationFuncChart/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ViolatedValidationFuncChart/VVFChartNodata.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ViolatedValidationFuncChart/TitleChildrenValue.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ViolatedValidationFuncChart/ViolatedValidationFuncChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useInvalidProfiles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ViolatedValidationFuncChart/ViolatedValidationFuncTimeSeriesChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ViolatedValidationFuncChart/index.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/FrequencyAnalysisChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/BarTooltip/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/BarTooltip/BarTooltip.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/InfoPanel.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/XAxisLabel/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/XAxisLabel/XAxisLabel.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/getBarChartSettings.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/CustomBackgroundOnHover.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/CustomBar.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/CustomBarChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/LengthStatisticsChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CrosswalkAnalysisChart/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CrosswalkAnalysisChart/SourceLabelRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CrosswalkAnalysisChart/CrosswalkAnalysisChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ValueDistributionChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/MonthDistributionChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/DayOfWeekDistributionChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/DayOfMonthDistributionChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/PatternAnalysisChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/StackedBarChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ConsolidationRateChart/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ConsolidationRateChart/ConsolidationPercentage.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ConsolidationRateChart/SourceLabelRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ConsolidationRateChart/YAxisTickRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ConsolidationRateChart/ConsolidationRateChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/RDMTranscodeChart/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/RDMTranscodeChart/RDMTranscodeChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useRDMChartDataRequest.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/ViewsFactory.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardLayoutItem/DQDashboardLayoutItem.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardLayout/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardLayout/DQDashboardLayout.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/AttributeLevelLayout.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DataLevelBreadcrumbs/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DataLevelBreadcrumbs/DataLevelBreadcrumbs.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailsIcons/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailsIcons/AttributeTypeDetailsIcons.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/FillRateLine/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/FillRateLine/FillRateLine.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeListItem/TreeLines/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeListItem/TreeLines/TreeLines.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeListItem/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeListItem/AttributeListItem.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardAttributesList/helpers.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributesFilters/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributesFilters/Option.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributesFilters/helpers.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributesFilters/AttributesFilters.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardAttributesList/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardAttributesList/DQDashboardAttributesList.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useAttrTypeDetails.ts","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useFillRateRequest.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardHeader/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardHeader/DQDashboardHeader.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/EntityLevelLayout/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/EntityLevelLayout/EntityLevelLayout.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/constants.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/Selector/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/Selector/Selector.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/EntityTypeSelector/EntityTypeSelector.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/TimeRangeSelector/TimeRangeSelector.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/UpdateTimeHeader/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/UpdateTimeHeader/UpdateTimeHeader.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/DQDashboardPerspectiveView.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useEntityTypes.ts","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useDvfConfigLink.ts","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useDVF.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/index.tsx","webpack://@reltio/remotes/./src/dq-dashboard.ts"],"sourcesContent":["import {Avatar as Avatar} from '@material-ui/core';\nimport classnames from 'classnames';\nimport React, {useEffect, useState} from 'react';\n\nenum AvatarStates {\n ICON_MODE,\n TEXT_MODE,\n ERROR_MODE\n}\ntype Props = {\n className?: string;\n icon?: string;\n avatarText?: string;\n variant?: 'circle' | 'circular' | 'rounded' | 'square';\n rootClasses?: {\n iconRoot?: string;\n textRoot?: string;\n };\n};\nconst AvatarWithFallback = ({className, icon, avatarText, rootClasses, ...otherProps}: Props) => {\n const [state, setState] = useState<AvatarStates>(null);\n useEffect(() => {\n if (icon) {\n setState(AvatarStates.ICON_MODE);\n } else {\n setState(AvatarStates.TEXT_MODE);\n }\n }, [icon, avatarText]);\n const onImageLoadFail = () => {\n setState(AvatarStates.ERROR_MODE);\n };\n\n switch (state) {\n case AvatarStates.ICON_MODE:\n return (\n <Avatar\n className={classnames(className, rootClasses?.iconRoot)}\n src={icon}\n onError={onImageLoadFail}\n {...otherProps}\n />\n );\n case AvatarStates.TEXT_MODE:\n case AvatarStates.ERROR_MODE:\n return (\n <Avatar className={classnames(className, rootClasses?.textRoot)} {...otherProps}>\n {avatarText}\n </Avatar>\n );\n default:\n return null;\n }\n};\n\nexport default AvatarWithFallback;\n","import {TableContext} from '../contexts/TableContext';\nimport {withContext} from '../../../../HOCs/withContext/withContext';\n\nconst withTableContext = (contextSelector) => (CellRenderer) =>\n withContext(TableContext, contextSelector, CellRenderer);\n\nexport default withTableContext;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n 'basic-view__paper': {\n display: 'flex',\n flexDirection: 'column',\n ...theme.basicView\n }\n}));\n","import Paper, {PaperProps} from '@material-ui/core/Paper';\nimport PropTypes from 'prop-types';\nimport React, {forwardRef, Ref} from 'react';\nimport {useStyles} from './styles';\n\nconst BasicView = forwardRef<Ref<typeof Paper>, PaperProps>(({children, className, ...otherProps}, ref) => {\n const styles = useStyles();\n return (\n <Paper ref={ref} className={className} classes={{root: styles['basic-view__paper']}} {...otherProps}>\n {children}\n </Paper>\n );\n});\n\nBasicView.displayName = 'BasicView';\n\nBasicView.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string\n};\n\nexport default BasicView;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n 'basic-view-content': {\n flex: '1 1 auto',\n padding: '0 24px 24px',\n '&:first-child': {\n paddingTop: '24px'\n }\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = React.ComponentPropsWithoutRef<'div'>;\n\nconst BasicViewContent = ({children, className, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles['basic-view-content'], className)} {...otherProps}>\n {children}\n </div>\n );\n};\n\nexport default BasicViewContent;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n toolbar: {\n minHeight: '48px',\n padding: '8px 24px',\n lineHeight: '28px'\n },\n title: {\n fontSize: '18px',\n fontWeight: 'normal',\n lineHeight: 'inherit',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n});\n","import React from 'react';\nimport Toolbar, {ToolbarProps} from '@material-ui/core/Toolbar';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = ToolbarProps & {\n title?: string;\n classes?: Partial<Record<'root' | 'title', string>>;\n};\n\nconst BasicViewHeader = ({title, children = null, classes = {}, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <Toolbar className={classes.root} classes={{root: styles.toolbar}} {...otherProps}>\n <Typography className={classes.title} classes={{root: styles.title}} variant=\"h6\">\n {title}\n </Typography>\n {children}\n </Toolbar>\n );\n};\n\nexport default BasicViewHeader;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n bar: {\n backgroundColor: theme.palette.secondary.main,\n opacity: 0.12,\n position: 'absolute',\n minHeight: '20px',\n minWidth: '5px',\n borderRadius: '2px',\n top: 0,\n left: 0,\n height: '100%'\n }\n}));\n","import React, {useCallback} from 'react';\nimport classnames from 'classnames';\nimport {is} from 'ramda';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n width?: number | string;\n maxWidth?: number;\n};\n\nconst widthIsNumber = (width: string | number): width is number => is(Number, width);\n\nconst ColorBar = ({className, width = 0, maxWidth}: Props) => {\n const styles = useStyles();\n\n const getBarColorWidth = useCallback(\n (width: number) => {\n return (maxWidth ? (100 * width) / maxWidth : 0) + '%';\n },\n [maxWidth]\n );\n\n return width ? (\n <div\n className={classnames(styles.bar, className)}\n style={{width: widthIsNumber(width) ? getBarColorWidth(width) : width}}\n />\n ) : null;\n};\n\nexport default ColorBar;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst maxWidth = 500;\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flex: '1 1 auto',\n flexWrap: 'nowrap',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '10px',\n overflow: 'auto',\n height: '100%',\n minHeight: '350px',\n boxSizing: 'border-box',\n '& $text': {\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n lineHeight: '24px',\n letterSpacing: '0.25px',\n textAlign: 'center'\n },\n '& $secondaryText': {\n color: theme.palette.text.secondary,\n fontSize: '15px',\n fontWeight: 300,\n lineHeight: '18px',\n letterSpacing: '0.11px',\n textAlign: 'center',\n paddingTop: '3px'\n }\n },\n embedded: {\n flexShrink: 0,\n width: '190px',\n height: '190px',\n padding: '8px'\n },\n full: {\n width: '256px',\n height: '256px'\n },\n textBox: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n maxWidth: maxWidth,\n marginTop: '16px'\n },\n text: {},\n secondaryText: {},\n button: {\n minHeight: 36,\n minWidth: 64,\n maxWidth: maxWidth,\n padding: '10px 16px',\n borderRadius: '2px',\n boxShadow:\n '0 0 2px 0 rgba(0,0,0,0.12), 0 2px 2px 0 rgba(0,0,0,0.24), 0 0 8px 0 rgba(0,0,0,0.12), 0 8px 8px 0 rgba(0,0,0,0.24)',\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px',\n marginTop: '24px'\n }\n}));\n","import React from 'react';\nimport {identity} from 'ramda';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport EmptySearchResultsIcon from '../../icons/EmptySearchResults';\nimport SelectAttributesIcon from '../../icons/SelectAttributes';\nimport NoData from '../../icons/NoData';\nimport Error from '../../icons/Error';\nimport {useStyles} from './styles';\n\nexport enum EMPTY_STATE_VARIANTS {\n full = 'full',\n embedded = 'embedded'\n}\n\nexport const EMPTY_STATE_ICONS = {\n SEARCH_RESULTS: EmptySearchResultsIcon,\n SELECT_ATTRIBUTES: SelectAttributesIcon,\n NO_DATA: NoData,\n ERROR: Error\n};\n\ntype Props = {\n variant?: EMPTY_STATE_VARIANTS;\n LogoRenderer?: React.ElementType;\n text: string;\n secondaryText?: string;\n buttonTitle?: string;\n access?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n};\n\nconst EmptyState = ({\n variant = EMPTY_STATE_VARIANTS.full,\n LogoRenderer = EMPTY_STATE_ICONS.SEARCH_RESULTS,\n text,\n secondaryText,\n buttonTitle,\n onClick = identity,\n access\n}: Props) => {\n const styles = useStyles();\n const showButton = access && buttonTitle;\n\n return (\n <div className={styles.root}>\n <LogoRenderer className={styles[`${variant}`]} />\n <div className={styles.textBox}>\n <Typography variant=\"h5\" classes={{h5: styles.text}}>\n {text}\n </Typography>\n {secondaryText && (\n <Typography variant=\"subtitle1\" classes={{subtitle1: styles.secondaryText}}>\n {secondaryText}\n </Typography>\n )}\n </div>\n {showButton && (\n <Button className={styles.button} variant=\"contained\" color=\"primary\" onClick={onClick}>\n {buttonTitle}\n </Button>\n )}\n </div>\n );\n};\n\nexport default EmptyState;\n","import React from 'react';\n\nconst SvgEmptySearchResults: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={256}\n height={256}\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <radialGradient\n cx=\"50%\"\n cy=\"100%\"\n fx=\"50%\"\n fy=\"100%\"\n r=\"81.681%\"\n gradientTransform=\"matrix(.98998 0 0 .612 .005 .388)\"\n id=\"EmptySearchResults_svg__c\"\n >\n <stop stopColor=\"#00BFFF\" stopOpacity={0.5} offset=\"0%\" />\n <stop stopColor=\"#9EE8FF\" stopOpacity={0} offset=\"100%\" />\n </radialGradient>\n <radialGradient\n cx=\"50%\"\n cy=\"111.651%\"\n fx=\"50%\"\n fy=\"111.651%\"\n r=\"87.693%\"\n gradientTransform=\"matrix(0 -.97693 .7263 0 -.31 1.605)\"\n id=\"EmptySearchResults_svg__f\"\n >\n <stop stopColor=\"#91F8E5\" stopOpacity={0.6} offset=\"0%\" />\n <stop stopColor=\"#14F7FF\" stopOpacity={0} offset=\"100%\" />\n </radialGradient>\n <radialGradient\n cx=\"50%\"\n cy=\"103.659%\"\n fx=\"50%\"\n fy=\"103.659%\"\n r=\"90.207%\"\n gradientTransform=\"matrix(0 -1 2.23905 0 -1.821 1.537)\"\n id=\"EmptySearchResults_svg__g\"\n >\n <stop stopColor=\"#FFF\" offset=\"0%\" />\n <stop stopColor=\"#73FAFF\" stopOpacity={0.21} offset=\"59.38%\" />\n <stop stopColor=\"#14F7FF\" stopOpacity={0} offset=\"100%\" />\n </radialGradient>\n <linearGradient x1=\"50%\" y1=\"170.771%\" x2=\"50%\" y2=\"10.303%\" id=\"EmptySearchResults_svg__e\">\n <stop stopColor=\"#91F8E5\" offset=\"0%\" />\n <stop stopColor=\"#99FCFF\" stopOpacity={0} offset=\"100%\" />\n </linearGradient>\n <filter\n x=\"-25.9%\"\n y=\"-26.2%\"\n width=\"151.8%\"\n height=\"152.3%\"\n filterUnits=\"objectBoundingBox\"\n id=\"EmptySearchResults_svg__d\"\n >\n <feGaussianBlur stdDeviation={15} in=\"SourceGraphic\" />\n </filter>\n <circle id=\"EmptySearchResults_svg__a\" cx={128} cy={128} r={128} />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"EmptySearchResults_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#EmptySearchResults_svg__a\" />\n </mask>\n <use fillOpacity={0.2} fill=\"#A792CD\" xlinkHref=\"#EmptySearchResults_svg__a\" />\n <g mask=\"url(#EmptySearchResults_svg__b)\">\n <g transform=\"translate(56 34)\">\n <g opacity={0.9} strokeWidth={1} fill=\"#FFF\">\n <path d=\"M0 6.99C0 3.13 3.137 0 7 0h247.067c3.866 0 7 3.144 7 6.99v169.353c0 3.86-3.137 6.99-7 6.99H7c-3.866 0-7-3.143-7-6.99V6.99z\" />\n <path\n d=\"M13 25.99c0-3.86 3.137-6.99 7-6.99h247.067c3.866 0 7 3.144 7 6.99v169.353c0 3.86-3.137 6.99-7 6.99H20c-3.866 0-7-3.143-7-6.99V25.99z\"\n opacity={0.4}\n />\n </g>\n <g strokeWidth={1} fill=\"none\" transform=\"translate(21.756 45.833)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={213.204} cy={5.456} rx={4.351} ry={4.365} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={197.976} cy={5.456} rx={4.351} ry={4.365} />\n <path\n d=\"M10.334 1.091c5.707 0 10.334 4.627 10.334 10.334v.067c0 5.707-4.627 10.333-10.334 10.333S0 17.2 0 11.492v-.067C0 5.718 4.627 1.091 10.334 1.091z\"\n fill=\"#E3EBF4\"\n />\n <path\n d=\"M35.365.861h69.768a3.82 3.82 0 010 7.639H35.365a3.82 3.82 0 010-7.639z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M34.274 15.048h126.164a2.728 2.728 0 010 5.456H34.274a2.728 2.728 0 110-5.456z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M33.182 24.869H73.89a1.637 1.637 0 110 3.274H33.182a1.637 1.637 0 010-3.274z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n <rect\n fill=\"#645F6D\"\n opacity={0.5}\n x={21.756}\n y={17.46}\n width={87.022}\n height={12.004}\n rx={6.002}\n />\n <g strokeWidth={1} fill=\"none\" transform=\"translate(21.756 87.302)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={213.204} cy={5.456} rx={4.351} ry={4.365} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={197.976} cy={5.456} rx={4.351} ry={4.365} />\n <rect fill=\"#E3EBF4\" x={0} y={1.091} width={20.668} height={20.734} rx={10.334} />\n <path\n d=\"M35.365.861h82.647a3.82 3.82 0 010 7.639H35.365a3.82 3.82 0 010-7.639z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M34.274 15.048H174.58a2.728 2.728 0 010 5.456H34.274a2.728 2.728 0 110-5.456z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M33.182 24.869h113.119a1.637 1.637 0 110 3.274H33.182a1.637 1.637 0 010-3.274z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n <g strokeWidth={1} fill=\"none\" transform=\"translate(21.756 128.77)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={213.204} cy={5.456} rx={4.351} ry={4.365} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={197.976} cy={5.456} rx={4.351} ry={4.365} />\n <path\n d=\"M10.334 1.091c5.707 0 10.334 4.627 10.334 10.334v.067c0 5.707-4.627 10.333-10.334 10.333S0 17.2 0 11.492v-.067C0 5.718 4.627 1.091 10.334 1.091z\"\n fill=\"#E3EBF4\"\n />\n <path\n d=\"M35.365.861h110.929a3.82 3.82 0 010 7.639H35.365a3.82 3.82 0 010-7.639z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M34.274 15.048h92.443a2.728 2.728 0 010 5.456H34.274a2.728 2.728 0 110-5.456z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M33.182 24.869H73.89a1.637 1.637 0 110 3.274H33.182a1.637 1.637 0 010-3.274z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n </g>\n </g>\n <g mask=\"url(#EmptySearchResults_svg__b)\">\n <path\n fill=\"#446275\"\n d=\"M72.246 84.033l8.66 5-35.5 61.488-8.66-5-12.556-24.729-51.307-29.622 20.431-35.388 50.648 29.242z\"\n />\n <path\n d=\"M62.906 120.21l-80.091-46.24 10.5-18.188 50.647 29.242 28.284-.99 8.66 5-18 31.176z\"\n fillOpacity={0.2}\n fill=\"#FFF\"\n />\n <path\n d=\"M27.566 75.558L3.877 109.065l-5.013-2.895 26.045-32.146 2.657 1.534zm9.467 5.466L13.345 114.53l-5.014-2.895L34.377 79.49l2.656 1.534zm8.158 4.71l-22.32 34.297-5.013-2.895L43.903 84.99l1.288.744z\"\n fill=\"#527585\"\n />\n <path\n d=\"M11.524 90.544l13.385-16.52 2.657 1.534-12.174 17.22-3.868-2.234zm9.467 5.467L34.377 79.49l2.656 1.534-12.174 17.22-3.868-2.233zm9.527 5.5L43.903 84.99l1.288.744-11.47 17.626-3.203-1.85z\"\n fill=\"#76A2B5\"\n opacity={0.6}\n />\n <path\n d=\"M.355 59.848l-23.689 33.507-5.013-2.895 26.045-32.146 2.657 1.534zm9.468 5.466L-13.866 98.82l-5.013-2.895L7.166 63.78l2.657 1.534zm8.158 4.71L-4.34 104.32l-5.014-2.895L16.692 69.28l1.289.744z\"\n fillOpacity={0.1}\n fill=\"#000\"\n />\n <g>\n <path\n fill=\"url(#EmptySearchResults_svg__c)\"\n opacity={0.993}\n filter=\"url(#EmptySearchResults_svg__d)\"\n d=\"M.63 0h173.74L123 172H52z\"\n transform=\"rotate(120 90.404 138.861)\"\n />\n <path\n fill=\"url(#EmptySearchResults_svg__e)\"\n opacity={0.3}\n d=\"M4 9h166.37L120.73 172.299H53.64z\"\n transform=\"rotate(120 90.404 138.861)\"\n />\n <path\n fill=\"url(#EmptySearchResults_svg__f)\"\n opacity={0.3}\n d=\"M4 2h166.37L120.73 172.299H53.64z\"\n transform=\"rotate(120 90.404 138.861)\"\n />\n <path\n fill=\"url(#EmptySearchResults_svg__g)\"\n d=\"M4 9h166.37L120.73 172.299H53.64z\"\n transform=\"rotate(120 90.404 138.861)\"\n />\n <path fill=\"#FFF\" opacity={0.196} d=\"M212.363 205.344l-1 1.732L60.418 124.52l4.977-8.62z\" />\n </g>\n <path fill=\"#76A2B5\" d=\"M73.112 84.533l-35.5 61.488-.866-.5 35.5-61.488z\" />\n <path fill=\"#F3F3F3\" d=\"M80.906 89.033l-35.5 61.488-.866-.5 35.5-61.488z\" />\n <path fill=\"#538196\" d=\"M55.112 115.71l-17.5 30.311-.866-.5 17.5-30.31z\" />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default SvgEmptySearchResults;\n","import React from 'react';\n\nconst SvgSelectAttributes: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={256} height={256} viewBox=\"0 0 256 256\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <circle cx={128} cy={128} r={128} fill=\"#0072CE\" fillOpacity={0.1} />\n <mask\n id=\"SelectAttributes_svg__a\"\n style={{\n maskType: 'alpha'\n }}\n maskUnits=\"userSpaceOnUse\"\n x={0}\n y={0}\n width={256}\n height={256}\n >\n <circle cx={128} cy={128} r={128} fill=\"#fff\" />\n </mask>\n <g mask=\"url(#SelectAttributes_svg__a)\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M-16 9h256v247H-16V9z\"\n fill=\"url(#SelectAttributes_svg__paint0_linear_0_19219)\"\n />\n <path\n opacity={0.05}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M187.761 56.865l58.639 58.639v148.871H93.383L52 225.083V56.865h135.761z\"\n fill=\"url(#SelectAttributes_svg__paint1_linear_0_19219)\"\n />\n <path\n opacity={0.06}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M47 58h202a7 7 0 017 7v157a7 7 0 01-7 7H47a7 7 0 01-7-7V65a7 7 0 017-7z\"\n fill=\"#000\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M50 56h201a5 5 0 015 5v157a5 5 0 01-5 5H50a5 5 0 01-5-5V61a5 5 0 015-5z\"\n fill=\"#fff\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 72.635a3 3 0 013-3H150a3 3 0 110 6h-41.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 84.635a3 3 0 013-3h64.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 163a3 3 0 013-3H150a3 3 0 110 6h-41.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 175a3 3 0 013-3h64.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 193a3 3 0 013-3H190a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 205a3 3 0 013-3h74.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138.376 103a3 3 0 013-3H223a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138 115a3 3 0 013-3h64.205a3 3 0 110 6H141a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <circle cx={67} cy={79} r={9} fill=\"#B6C7DB\" />\n <circle cx={67} cy={79} r={9} fill=\"#B6C7DB\" />\n <circle cx={120} cy={106} r={6} fill=\"#B6C7DB\" />\n <circle cx={120} cy={136} r={6} fill=\"#B6C7DB\" />\n <circle cx={67} cy={169} r={9} fill=\"#B6C7DB\" />\n <circle cx={67} cy={199} r={9} fill=\"#B6C7DB\" />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138.376 133a3 3 0 013-3H223a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138 145a3 3 0 013-3h74.205a3 3 0 110 6H141a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M92.514 108v-8h-2V140.365h11.178v-2h-9.178V110h9.178v-2h-9.178z\"\n fill=\"#2B98F0\"\n />\n <path\n opacity={0.54}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M95.071 77l-3.535 3.535L88 77h7.071z\"\n fill=\"#000\"\n />\n <path\n opacity={0.6}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M50 22h186a6 6 0 016 6v18a6 6 0 01-6 6H50a6 6 0 01-6-6V28a6 6 0 016-6z\"\n fill=\"#fff\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M58 37a6 6 0 016-6h70a6 6 0 110 12H64a6 6 0 01-6-6zM148 37a6 6 0 016-6h10a6 6 0 110 12h-10a6 6 0 01-6-6z\"\n fill=\"#979797\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"SelectAttributes_svg__paint0_linear_0_19219\"\n x1={-16}\n y1={9}\n x2={-16}\n y2={256}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FAFAFA\" stopOpacity={0.01} />\n <stop offset={1} stopColor=\"#F4F4F4\" />\n </linearGradient>\n <linearGradient\n id=\"SelectAttributes_svg__paint1_linear_0_19219\"\n x1={266.117}\n y1={181.111}\n x2={154.882}\n y2={77.681}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopOpacity={0.01} />\n <stop offset={1} />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport default SvgSelectAttributes;\n","import React from 'react';\n\nconst SvgNoData: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={256}\n height={256}\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"NoData_svg__b\">\n <stop stopColor=\"#FAFAFA\" stopOpacity={0} offset=\"0%\" />\n <stop stopColor=\"#F4F4F4\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"69.573%\" y1=\"86.747%\" x2=\"38.144%\" y2=\"33.403%\" id=\"NoData_svg__d\">\n <stop stopColor=\"#000\" stopOpacity={0} offset=\"0%\" />\n <stop stopColor=\"#000\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"NoData_svg__e\">\n <stop stopColor=\"#EEFBFF\" offset=\"0%\" />\n <stop stopColor=\"#0072CE\" offset=\"100%\" />\n </linearGradient>\n <filter\n x=\"-7.7%\"\n y=\"-7.5%\"\n width=\"115.3%\"\n height=\"115%\"\n filterUnits=\"objectBoundingBox\"\n id=\"NoData_svg__f\"\n >\n <feOffset dx={0} dy={2} in=\"SourceAlpha\" result=\"shadowOffsetOuter1\" />\n <feGaussianBlur stdDeviation={2} in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\" />\n <feColorMatrix\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\"\n type=\"matrix\"\n in=\"shadowBlurOuter1\"\n result=\"shadowMatrixOuter1\"\n />\n <feMerge>\n <feMergeNode in=\"shadowMatrixOuter1\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>\n <circle id=\"NoData_svg__a\" cx={128} cy={128} r={128} />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"NoData_svg__c\" fill=\"#fff\">\n <use xlinkHref=\"#NoData_svg__a\" />\n </mask>\n <use fillOpacity={0.1} fill=\"#0072CE\" xlinkHref=\"#NoData_svg__a\" />\n <path fill=\"url(#NoData_svg__b)\" mask=\"url(#NoData_svg__c)\" d=\"M0 9h256v247H0z\" />\n <g mask=\"url(#NoData_svg__c)\">\n <g transform=\"translate(29 37)\">\n <g opacity={0.9} strokeWidth={1} fill=\"#FFF\">\n <path fillOpacity={0.8} opacity={0.5} d=\"M14.565 8h228.144v176.476H14.565z\" />\n <path d=\"M0 8.01C0 3.586 3.576 0 7.997 0h223.838a7.997 7.997 0 017.997 8.01v152.401c0 4.424-3.577 8.01-7.997 8.01H7.997A7.997 7.997 0 010 160.411V8.01z\" />\n </g>\n <g strokeWidth={1} fill=\"none\" transform=\"translate(19.986 42.105)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={195.862} cy={5.013} rx={3.997} ry={4.01} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={181.872} cy={5.013} rx={3.997} ry={4.01} />\n <path\n d=\"M9.493 1.003a9.493 9.493 0 019.494 9.493v.06a9.493 9.493 0 01-18.987 0v-.06a9.493 9.493 0 019.493-9.493z\"\n fill=\"#E3EBF4\"\n />\n <path\n d=\"M32.488.791h64.093a3.509 3.509 0 110 7.018H32.488a3.509 3.509 0 110-7.018z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M31.486 13.824h115.902a2.506 2.506 0 010 5.012H31.486a2.506 2.506 0 010-5.012z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M30.483 22.846H67.88a1.504 1.504 0 110 3.008H30.483a1.504 1.504 0 110-3.008z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n <rect\n fill=\"#645F6D\"\n opacity={0.5}\n x={19.986}\n y={16.04}\n width={79.944}\n height={11.028}\n rx={5.514}\n />\n <g strokeWidth={1} fill=\"none\" transform=\"translate(19.986 80.2)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={195.862} cy={5.013} rx={3.997} ry={4.01} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={181.872} cy={5.013} rx={3.997} ry={4.01} />\n <rect fill=\"#E3EBF4\" x={0} y={1.003} width={18.987} height={19.048} rx={9.493} />\n <path\n d=\"M32.488.791h75.925a3.509 3.509 0 010 7.018H32.488a3.509 3.509 0 110-7.018z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M31.486 13.824h128.893a2.506 2.506 0 110 5.012H31.486a2.506 2.506 0 010-5.012z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M30.483 22.846h103.918a1.504 1.504 0 010 3.008H30.483a1.504 1.504 0 110-3.008z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n <g strokeWidth={1} fill=\"none\" transform=\"translate(19.986 118.296)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={195.862} cy={5.013} rx={3.997} ry={4.01} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={181.872} cy={5.013} rx={3.997} ry={4.01} />\n <path\n d=\"M9.493 1.003a9.493 9.493 0 019.494 9.493v.06a9.493 9.493 0 01-18.987 0v-.06a9.493 9.493 0 019.493-9.493z\"\n fill=\"#E3EBF4\"\n />\n <path\n d=\"M32.488.791h101.906a3.509 3.509 0 010 7.018H32.488a3.509 3.509 0 110-7.018z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M31.486 13.824h84.924a2.506 2.506 0 010 5.012H31.486a2.506 2.506 0 010-5.012z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M30.483 22.846H67.88a1.504 1.504 0 110 3.008H30.483a1.504 1.504 0 110-3.008z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n </g>\n </g>\n <g mask=\"url(#NoData_svg__c)\">\n <path\n d=\"M154.445 45.134v154.072H36.625V45.134h.811C35.508 62.52 41.07 80.609 54.12 93.944c22.74 23.235 59.61 23.235 82.352 0 13.05-13.335 18.612-31.424 16.683-48.81h1.29z\"\n fill=\"url(#NoData_svg__d)\"\n opacity={0.1}\n transform=\"rotate(-30 291.014 34.548)\"\n />\n <path\n d=\"M27.473 93.234c17.964 18.355 47.09 18.355 65.054 0s17.964-48.113 0-66.468c-17.964-18.355-47.09-18.355-65.054 0s-17.964 48.113 0 66.468z\"\n fill=\"url(#NoData_svg__e)\"\n opacity={0.2}\n transform=\"translate(70 86)\"\n />\n <g filter=\"url(#NoData_svg__f)\" strokeWidth={1} fill=\"none\" transform=\"translate(70 86)\">\n <path\n d=\"M59.697 0c32.97 0 59.697 26.746 59.697 59.738 0 15.185-5.662 29.047-14.988 39.587l51.204 51.24a89.336 89.336 0 01-10.097 9.392l-51.38-51.416c-9.73 6.888-21.61 10.936-34.436 10.936C26.727 119.477 0 92.73 0 59.738 0 26.746 26.727 0 59.697 0zm0 17.756c-23.17 0-41.953 18.796-41.953 41.982s18.783 41.982 41.953 41.982 41.953-18.796 41.953-41.982-18.783-41.982-41.953-41.982z\"\n fill=\"#B5C8C9\"\n />\n <path\n d=\"M21.508 105.656C8.365 94.698 0 78.196 0 59.738 0 26.746 26.727 0 59.697 0c18.444 0 34.935 8.37 45.885 21.523l-9.794 9.8c-8.408-10.68-21.45-17.537-36.091-17.537-25.361 0-45.92 20.573-45.92 45.952 0 14.652 6.852 27.702 17.525 36.117l-9.794 9.8z\"\n fillOpacity={0.4}\n fill=\"#FFF\"\n />\n </g>\n <path\n d=\"M97.473 179.234c17.964 18.355 47.09 18.355 65.054 0s17.964-48.113 0-66.468c-17.964-18.355-47.09-18.355-65.054 0s-17.964 48.113 0 66.468z\"\n fill=\"#D9F5FF\"\n opacity={0.4}\n style={{\n mixBlendMode: 'soft-light'\n }}\n />\n <path\n d=\"M123.885 158.736c0-3.929.444-7.03 1.332-9.304.888-2.274 2.328-4.245 4.32-5.914 1.99-1.668 3.504-3.195 4.54-4.581 1.037-1.386 1.555-2.913 1.555-4.581 0-4.064-1.75-6.095-5.248-6.095-1.614 0-2.92.592-3.915 1.776-.996 1.184-1.52 2.785-1.574 4.803H111.25c.054-5.382 1.75-9.573 5.086-12.574 3.337-3 8.02-4.5 14.047-4.5 6.001 0 10.65 1.386 13.946 4.157 3.297 2.772 4.945 6.714 4.945 11.827 0 2.234-.444 4.265-1.332 6.095-.888 1.83-2.315 3.7-4.279 5.61l-4.642 4.32c-1.318 1.265-2.233 2.563-2.745 3.895-.51 1.332-.793 3.02-.847 5.066h-11.545zm-1.655 12.27c0-1.99.72-3.625 2.16-4.904 1.44-1.278 3.236-1.917 5.389-1.917 2.152 0 3.949.64 5.388 1.917 1.44 1.279 2.16 2.913 2.16 4.905 0 1.991-.72 3.626-2.16 4.904-1.44 1.278-3.236 1.917-5.388 1.917-2.153 0-3.95-.639-5.389-1.917-1.44-1.278-2.16-2.913-2.16-4.904z\"\n fillOpacity={0.87}\n fill=\"#000\"\n style={{\n mixBlendMode: 'overlay'\n }}\n />\n <path\n d=\"M123.885 158.736c0-3.929.444-7.03 1.332-9.304.888-2.274 2.328-4.245 4.32-5.914 1.99-1.668 3.504-3.195 4.54-4.581 1.037-1.386 1.555-2.913 1.555-4.581 0-4.064-1.75-6.095-5.248-6.095-1.614 0-2.92.592-3.915 1.776-.996 1.184-1.52 2.785-1.574 4.803H111.25c.054-5.382 1.75-9.573 5.086-12.574 3.337-3 8.02-4.5 14.047-4.5 6.001 0 10.65 1.386 13.946 4.157 3.297 2.772 4.945 6.714 4.945 11.827 0 2.234-.444 4.265-1.332 6.095-.888 1.83-2.315 3.7-4.279 5.61l-4.642 4.32c-1.318 1.265-2.233 2.563-2.745 3.895-.51 1.332-.793 3.02-.847 5.066h-11.545zm-1.655 12.27c0-1.99.72-3.625 2.16-4.904 1.44-1.278 3.236-1.917 5.389-1.917 2.152 0 3.949.64 5.388 1.917 1.44 1.279 2.16 2.913 2.16 4.905 0 1.991-.72 3.626-2.16 4.904-1.44 1.278-3.236 1.917-5.388 1.917-2.153 0-3.95-.639-5.389-1.917-1.44-1.278-2.16-2.913-2.16-4.904z\"\n fillOpacity={0.38}\n fill=\"#3C74B4\"\n />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default SvgNoData;\n","import React from 'react';\n\nconst SvgError: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={88} height={88} viewBox=\"0 0 88 88\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <mask\n id=\"Error_svg__a\"\n style={{\n maskType: 'alpha'\n }}\n maskUnits=\"userSpaceOnUse\"\n x={0}\n y={0}\n width={88}\n height={88}\n >\n <path d=\"M44 88c24.3 0 44-19.7 44-44S68.3 0 44 0 0 19.7 0 44s19.7 44 44 44z\" fill=\"#fff\" />\n </mask>\n <g mask=\"url(#Error_svg__a)\">\n <path\n d=\"M44 88c24.3 0 44-19.7 44-44S68.3 0 44 0 0 19.7 0 44s19.7 44 44 44z\"\n fill=\"#CAC4D5\"\n fillOpacity={0.3}\n />\n <path\n opacity={0.3}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.987 6.73l49.449 6.072a.687.687 0 01.596.767l-7.845 63.888a.688.688 0 01-.766.6L7.214 71.4a.688.688 0 01-.599-.763l.408-3.326L19.987 6.73z\"\n fill=\"#fff\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.267 25.921l45.86-19.466a.687.687 0 01.9.366l25.15 59.251a.61.61 0 01-.386.84L22.34 82.765a.719.719 0 01-.887-.445l-20.185-56.4z\"\n fill=\"#fff\"\n />\n <path\n d=\"M65.631 9.23H11.017a.688.688 0 00-.687.687v64.37c0 .38.307.687.687.687h54.614c.38 0 .688-.308.688-.687V9.917a.688.688 0 00-.688-.688z\"\n fill=\"#F9F9F9\"\n />\n <path\n opacity={0.1}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.885 34.95l3.105-1.666 7.31-4.025 8.852 3.472 7.89-5.223 8.036-2.628 8.113 5.193 3.352-10.255v16.967H14.935l-.05-1.835z\"\n fill=\"#9C6CF0\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.885 32.331l3.105-3.761 7.31 4.31 8.852 1.656 7.89-2.205 8.036 1.827 8.113-12.643 3.352.742V36.36H14.935l-.05-4.029z\"\n fill=\"#FA82AA\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.885 34.946l3.105.432 7.31 1.01 8.852-5.117 7.89 3.675 8.036 1.839 8.113-1.839 3.352.811v1.028H14.935l-.05-1.839z\"\n fill=\"#4DBEE9\"\n />\n <path\n opacity={0.1}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M61.543 35.288l-.05 1.497H14.885v-5.239l3.352-.276 8.114 4.697 8.036-.679 7.889.82 8.852-.616 7.31-1.601 3.105 1.397z\"\n fill=\"#4DBEE9\"\n />\n <path d=\"M21.036 40.178h-5.09a.636.636 0 000 1.272h5.09a.636.636 0 100-1.272z\" fill=\"#ACACAC\" />\n <path\n opacity={0.3}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.582 55.872c.703 0 1.273.57 1.273 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.272-1.272zM25.914 55.872c.702 0 1.272.57 1.272 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.273-1.272zM39.91 55.872c.703 0 1.273.57 1.273 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.273-1.272zM21.248 55.872c.702 0 1.272.57 1.272 1.273V69.02a1.273 1.273 0 01-2.545 0V57.144c0-.702.57-1.272 1.273-1.272zM35.245 55.872c.703 0 1.273.57 1.273 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.272-1.272zM30.58 55.872c.702 0 1.272.57 1.272 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.272-1.272zM44.577 55.872c.702 0 1.272.57 1.272 1.273V69.02a1.273 1.273 0 01-2.545 0V57.144c0-.702.57-1.272 1.273-1.272z\"\n fill=\"#BDBDBD\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.582 65.628c.703 0 1.273.57 1.273 1.272v2.121a1.272 1.272 0 11-2.545 0v-2.12c0-.703.57-1.273 1.272-1.273zM25.914 62.658c.702 0 1.272.57 1.272 1.273v5.09a1.272 1.272 0 11-2.545 0v-5.09c0-.703.57-1.273 1.273-1.273zM39.91 65.628c.703 0 1.273.57 1.273 1.272v2.121a1.272 1.272 0 11-2.545 0v-2.12c0-.703.57-1.273 1.273-1.273zM21.248 66.477c.702 0 1.272.57 1.272 1.272v1.273a1.273 1.273 0 01-2.545 0v-1.273c0-.703.57-1.272 1.273-1.272z\"\n fill=\"#4DBEE9\"\n />\n <path\n d=\"M36.518 65.628a1.272 1.272 0 00-2.545 0v3.393a1.272 1.272 0 102.545 0v-3.393zM31.852 62.234a1.272 1.272 0 10-2.545 0v6.787a1.272 1.272 0 102.545 0v-6.787z\"\n fill=\"#4DBEE9\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M44.577 60.962c.702 0 1.272.57 1.272 1.272v6.787a1.273 1.273 0 01-2.545 0v-6.787c0-.702.57-1.272 1.273-1.272z\"\n fill=\"#4DBEE9\"\n />\n <path d=\"M18.915 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\" fill=\"#9C6CF0\" />\n <path\n opacity={0.5}\n d=\"M34.185 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\"\n fill=\"#4DBEE9\"\n />\n <path\n opacity={0.3}\n d=\"M49.454 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\"\n fill=\"#4DBEE9\"\n />\n <path opacity={0.8} d=\"M26.55 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\" fill=\"#FB6597\" />\n <path d=\"M41.82 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\" fill=\"#4DBEE9\" />\n <path opacity={0.2} d=\"M57.09 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\" fill=\"#4DBEE9\" />\n <path\n opacity={0.5}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.582 19.818h4.666a.424.424 0 110 .849h-4.666a.424.424 0 110-.849zM31.851 19.818h4.666a.424.424 0 010 .849h-4.666a.424.424 0 110-.849zM47.121 19.818h4.666a.424.424 0 010 .849h-4.666a.424.424 0 010-.849zM24.217 19.818h4.665a.424.424 0 010 .849h-4.665a.424.424 0 010-.849zM39.486 19.818h4.666a.424.424 0 110 .849h-4.666a.424.424 0 110-.849zM54.756 19.818h4.666a.424.424 0 110 .849h-4.666a.424.424 0 110-.849z\"\n fill=\"#ACACAC\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15.946 43.571h5.09a.636.636 0 110 1.273h-5.09a.636.636 0 010-1.273zM15.946 46.116h5.09a.636.636 0 010 1.273h-5.09a.636.636 0 010-1.273zM15.946 48.661h5.09a.636.636 0 010 1.273h-5.09a.636.636 0 110-1.273zM23.58 43.571h5.09a.636.636 0 110 1.273h-5.09a.636.636 0 010-1.273zM23.58 46.116h5.09a.636.636 0 010 1.273h-5.09a.636.636 0 010-1.273zM23.58 48.661h5.09a.636.636 0 010 1.273h-5.09a.636.636 0 110-1.273zM49.454 43.571h11.028a.636.636 0 010 1.273H49.454a.636.636 0 010-1.273zM49.454 46.116h11.028a.636.636 0 010 1.273H49.454a.636.636 0 010-1.273zM49.454 48.661h11.028a.636.636 0 010 1.273H49.454a.636.636 0 110-1.273zM31.215 43.571h15.27a.636.636 0 110 1.273h-15.27a.636.636 0 010-1.273zM31.215 46.116h15.27a.636.636 0 010 1.273h-15.27a.636.636 0 010-1.273zM31.215 48.661h15.27a.636.636 0 010 1.273h-15.27a.636.636 0 010-1.273zM15.946 51.206h5.09a.636.636 0 110 1.272h-5.09a.636.636 0 110-1.272zM23.58 51.206h5.09a.636.636 0 110 1.272h-5.09a.636.636 0 110-1.272zM49.454 51.206h11.028a.636.636 0 010 1.272H49.454a.636.636 0 110-1.272zM31.215 51.206h15.27a.636.636 0 110 1.272h-15.27a.636.636 0 010-1.272z\"\n fill=\"#E9E9E9\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M49.878 55.872h5.09a.636.636 0 110 1.273h-5.09a.636.636 0 110-1.273z\"\n fill=\"#ACACAC\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M49.878 59.69h11.029a.636.636 0 010 1.272H49.878a.636.636 0 110-1.273zM49.878 62.234h11.029a.636.636 0 010 1.273H49.878a.636.636 0 010-1.273zM49.878 64.78h11.029a.636.636 0 010 1.272H49.878a.636.636 0 010-1.273z\"\n fill=\"#E9E9E9\"\n />\n <path d=\"M54.968 67.324h-5.09a.636.636 0 000 1.273h5.09a.636.636 0 000-1.273z\" fill=\"#E9E9E9\" />\n <g filter=\"url(#Error_svg__filter0_d)\">\n <path\n d=\"M57.406 74.25c9.493 0 17.188-7.695 17.188-17.188 0-9.492-7.695-17.187-17.188-17.187-9.492 0-17.187 7.695-17.187 17.188 0 9.492 7.695 17.187 17.187 17.187z\"\n fill=\"#000\"\n />\n </g>\n <path\n d=\"M57.406 74.25c9.493 0 17.188-7.695 17.188-17.188 0-9.492-7.695-17.187-17.188-17.187-9.492 0-17.187 7.695-17.187 17.188 0 9.492 7.695 17.187 17.187 17.187z\"\n fill=\"#F25252\"\n />\n <path\n opacity={0.15}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M57.406 34.719c12.34 0 22.344 10.003 22.344 22.343S69.746 79.406 57.406 79.406c-12.34 0-22.343-10.003-22.343-22.344 0-12.34 10.003-22.343 22.343-22.343zm-.172 2.406c-10.916 0-19.765 8.85-19.765 19.766 0 10.916 8.85 19.765 19.765 19.765C68.151 76.656 77 67.806 77 56.891c0-10.917-8.85-19.766-19.766-19.766z\"\n fill=\"#F25252\"\n />\n <path\n opacity={0.3}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M57.406 38.844c10.062 0 18.219 8.157 18.219 18.218 0 10.062-8.157 18.22-18.219 18.22-10.062 0-18.218-8.158-18.218-18.22 0-10.061 8.156-18.218 18.218-18.218zm0 2.043c-8.933 0-16.175 7.242-16.175 16.175 0 8.934 7.242 16.176 16.175 16.176 8.934 0 16.176-7.242 16.176-16.175 0-8.934-7.242-16.176-16.176-16.176z\"\n fill=\"#F25252\"\n />\n <path\n opacity={0.05}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M57.406 26.469C74.303 26.469 88 40.166 88 57.062c0 16.897-13.697 30.594-30.594 30.594-16.896 0-30.593-13.697-30.593-30.594 0-16.896 13.697-30.593 30.593-30.593zm-.172 3.437c-14.903 0-26.984 12.082-26.984 26.985 0 14.903 12.081 26.984 26.984 26.984 14.903 0 26.985-12.081 26.985-26.984 0-14.903-12.082-26.985-26.985-26.985z\"\n fill=\"#F25252\"\n />\n <path\n d=\"M57.406 71.844c8.164 0 14.782-6.618 14.782-14.781 0-8.164-6.618-14.782-14.782-14.782-8.163 0-14.781 6.618-14.781 14.782 0 8.163 6.618 14.78 14.781 14.78z\"\n fill=\"#FF6A6A\"\n />\n <path\n opacity={0.05}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M58.298 46.448L75.18 63.331l-9.114 12.078h-2.029l-7.582-7.582 1.006-3.178.837-18.2z\"\n fill=\"url(#Error_svg__paint0_linear)\"\n />\n <g filter=\"url(#Error_svg__filter1_d)\">\n <path d=\"M57.406 68.063a1.719 1.719 0 100-3.438 1.719 1.719 0 000 3.438z\" fill=\"#000\" />\n </g>\n <path d=\"M57.406 68.063a1.719 1.719 0 100-3.438 1.719 1.719 0 000 3.438z\" fill=\"#fff\" />\n <g filter=\"url(#Error_svg__filter2_d)\">\n <path\n d=\"M57.406 46.063c.95 0 1.719.769 1.719 1.718v12.375a1.719 1.719 0 11-3.438 0V47.781c0-.949.77-1.718 1.72-1.718z\"\n fill=\"#000\"\n />\n </g>\n <path\n d=\"M57.406 46.063c.95 0 1.719.769 1.719 1.718v12.375a1.719 1.719 0 11-3.438 0V47.781c0-.949.77-1.718 1.72-1.718z\"\n fill=\"#fff\"\n />\n </g>\n <defs>\n <filter\n id=\"Error_svg__filter0_d\"\n x={36.219}\n y={37.875}\n width={42.375}\n height={42.375}\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity={0} result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" />\n <feOffset dy={2} />\n <feGaussianBlur stdDeviation={2} />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow\" result=\"shape\" />\n </filter>\n <filter\n id=\"Error_svg__filter1_d\"\n x={51.688}\n y={62.625}\n width={11.438}\n height={11.438}\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity={0} result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" />\n <feOffset dy={2} />\n <feGaussianBlur stdDeviation={2} />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow\" result=\"shape\" />\n </filter>\n <filter\n id=\"Error_svg__filter2_d\"\n x={51.688}\n y={44.063}\n width={11.438}\n height={23.813}\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity={0} result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" />\n <feOffset dy={2} />\n <feGaussianBlur stdDeviation={2} />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow\" result=\"shape\" />\n </filter>\n <linearGradient\n id=\"Error_svg__paint0_linear\"\n x1={68.438}\n y1={71.571}\n x2={60.119}\n y2={58.801}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopOpacity={0} />\n <stop offset={1} />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport default SvgError;\n","import React from 'react';\n\ntype State = {\n error: Error | null;\n};\n\ntype Props = {\n error: React.ReactNode;\n};\n\nexport default class ErrorBoundary extends React.Component<Props, State> {\n constructor(props) {\n super(props);\n this.state = {\n error: null\n };\n }\n\n componentDidCatch(error) {\n this.setState({\n error: error\n });\n console.error(error);\n }\n\n render() {\n const {children, error} = this.props;\n if (this.state.error) {\n return error;\n }\n return children;\n }\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\n\nconst EmptyStub = () => <div style={{display: 'none'}} />;\n\nconst HideOnShrink = ({widthToHide, children}) => (\n <ReactResizeDetector\n handleWidth={true}\n render={({width}) => (width > widthToHide ? <>{children}</> : <EmptyStub />)}\n />\n);\n\nHideOnShrink.propTypes = {\n children: PropTypes.node,\n widthToHide: PropTypes.number.isRequired\n};\n\nexport default HideOnShrink;\n","import {curry, defaultTo, mergeAll, pick, pipe, prop, propEq, __} from 'ramda';\n\nexport const getReltioViewId = (id) => id.split(/\\d+_/)[1];\n\nexport const reltioLayoutItemToReactGridLayoutItem = ({\n x,\n y,\n width,\n height,\n id,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n isStatic\n}) => ({\n x,\n y,\n w: width,\n h: height,\n minW: minWidth,\n minH: minHeight,\n maxW: maxWidth,\n maxH: maxHeight,\n i: id,\n static: isStatic\n});\n\nexport const reactGridLayoutItemToReltioLayoutItem = ({x, y, w, h, maxW, minW, minH, maxH, i, ...obj}) => ({\n x,\n y,\n width: w,\n height: h,\n minWidth: minW,\n minHeight: minH,\n maxWidth: maxW,\n maxHeight: maxH,\n id: i,\n isStatic: obj.static\n});\n\nexport const reltioLayoutToReactGridLayout = (layout) => (layout || []).map(reltioLayoutItemToReactGridLayoutItem);\n\nexport const reactGridLayoutToReltioLayout = (layout) => (layout || []).map(reactGridLayoutItemToReltioLayoutItem);\n\nexport const getReltioLayoutItemById = curry((layout, id) => (layout || []).find(propEq('id', id)));\n\nconst updateExtraPropsInLayoutItem = curry((props, from, to) => mergeAll([to, pick(props, from)]));\n\nexport const copyPropsFromPreviousLayout = curry((props, oldReltioLayout, reltioLayout) =>\n (reltioLayout || []).map((layoutItem) =>\n pipe(\n prop('id'),\n getReltioLayoutItemById(oldReltioLayout),\n defaultTo({}),\n updateExtraPropsInLayoutItem(props, __, layoutItem)\n )(layoutItem)\n )\n);\n\nexport const calcHeight = (height, options) => {\n const {margin, rowHeight} = options;\n\n return Math.ceil((height + margin[1]) / (rowHeight + margin[1]));\n};\n","export const RESIZE_ICON = `<svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path stroke=\"#505050\" stroke-opacity=\".54\" d=\"M9.5 0v10M0 9.5h9M7.5 4v4M4 7.5h3\"/>\n</svg>`;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {svg2Url} from '@reltio/mdm-sdk';\nimport {RESIZE_ICON} from './icons/ResizeIcon.svg';\n\nexport const useStyles = makeStyles((_) => ({\n gridLayout: {\n position: 'relative',\n width: '100%',\n '& .react-grid-item': {\n '&.react-grid-placeholder': {\n background: 'rgba(0, 0, 0, 0.03)',\n border: '2px dashed rgba(0, 0, 0, 0.3)',\n borderRadius: '3px',\n transitionDuration: '100ms',\n zIndex: 7,\n userSelect: 'none',\n '& .react-resizable-handle': {\n display: 'none'\n }\n },\n '&.static .react-resizable-handle': {\n display: 'none'\n },\n '&.cssTransforms': {\n transitionProperty: 'transform'\n },\n '&.resizing': {\n zIndex: 9,\n willChange: 'width, height',\n pointerEvents: 'none'\n },\n '&.react-draggable-dragging': {\n transition: 'none',\n zIndex: 8,\n willChange: 'transform',\n '& .react-resizable-handle': {\n backgroundImage: 'none'\n }\n },\n '& .react-resizable-handle': {\n position: 'absolute',\n width: '17px',\n height: '17px',\n bottom: 0,\n right: 0,\n zIndex: 20,\n backgroundImage: `url('${svg2Url(RESIZE_ICON)}')`,\n backgroundRepeat: 'no-repeat',\n backgroundOrigin: 'content-box',\n boxSizing: 'border-box',\n cursor: 'se-resize'\n },\n '&.fullscreen': {\n visibility: 'visible',\n position: 'unset',\n width: '100% !important',\n height: '100% !important',\n transform: 'translate(0) !important'\n }\n }\n },\n\n gridFullscreen: {\n height: '100% !important',\n overflowY: 'hidden',\n '& .react-resizable-handle, & .react-grid-item': {\n visibility: 'hidden'\n }\n }\n}));\n","import PropTypes from 'prop-types';\nimport React, {useCallback, useMemo, useRef, useState, memo} from 'react';\nimport GridLayout from 'react-grid-layout';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {identity, pipe} from 'ramda';\nimport classnames from 'classnames';\nimport {\n reltioLayoutToReactGridLayout,\n reactGridLayoutToReltioLayout,\n reactGridLayoutItemToReltioLayoutItem,\n copyPropsFromPreviousLayout,\n calcHeight,\n getReltioLayoutItemById\n} from './helpers';\n\nimport {useStyles} from './styles';\n\nconst ReltioGridLayout = ({\n views,\n layout,\n layoutOptions,\n onLayoutChanged,\n draggableHandle,\n LayoutItem,\n onRemove,\n onDrop,\n droppingItem,\n isDroppable,\n classes\n}) => {\n const ref = useRef();\n const styles = useStyles();\n const [fullscreenItemId, setFullscreenItemId] = useState(null);\n const [width, setWidth] = useState(0);\n const {cols, rowHeight, margin} = layoutOptions;\n const processedLayout = useMemo(() => reltioLayoutToReactGridLayout(layout), [layout]);\n const onReltioLayoutChanged = pipe(\n reactGridLayoutToReltioLayout,\n copyPropsFromPreviousLayout(['autosizing'], layout),\n onLayoutChanged\n );\n const handleDrop = (layout, layoutItem, e) => {\n if (onDrop) {\n onDrop(reactGridLayoutToReltioLayout(layout), reactGridLayoutItemToReltioLayoutItem(layoutItem), e);\n }\n };\n const onToggleFullscreen = useCallback((id) => setFullscreenItemId((prevId) => (prevId ? null : id)), []);\n const isFullscreenEnabled = fullscreenItemId !== null;\n\n const onItemHeightResize = useCallback(\n (height, layoutId) => {\n let isLayoutChanged = false;\n\n const newLayout = layout.map((layoutItem) => {\n if (layoutItem.id === layoutId && height) {\n const newHeight = calcHeight(height, layoutOptions);\n\n if (layoutItem.height !== newHeight) {\n isLayoutChanged = true;\n return {\n ...layoutItem,\n minHeight: newHeight,\n maxHeight: newHeight,\n height: newHeight\n };\n }\n }\n return layoutItem;\n });\n\n if (isLayoutChanged) {\n onLayoutChanged(newLayout);\n }\n },\n [layout, layoutOptions, onLayoutChanged]\n );\n\n const getAutosizeComponent = (layoutItemId) => {\n return (\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => {\n onItemHeightResize(height, layoutItemId);\n }}\n />\n );\n };\n\n return (\n <>\n <ReactResizeDetector\n refreshMode=\"debounce\"\n refreshRate={50}\n handleWidth={true}\n onResize={(width) => setWidth(width)}\n />\n <GridLayout\n innerRef={ref}\n layout={processedLayout}\n cols={cols}\n draggableHandle={draggableHandle}\n autoSize={true}\n rowHeight={rowHeight}\n width={width}\n margin={margin}\n onLayoutChange={onReltioLayoutChanged}\n isResizable={!isFullscreenEnabled}\n isDraggable={!isFullscreenEnabled}\n className={classnames(styles.gridLayout, {[styles.gridFullscreen]: isFullscreenEnabled})}\n onDrop={handleDrop}\n droppingItem={droppingItem}\n isDroppable={isDroppable}\n >\n {processedLayout.map((layoutItem) => {\n const isItemFullscreen = fullscreenItemId === layoutItem.i;\n const isAutosize = (getReltioLayoutItemById(layout, layoutItem.i) || {}).autosizing;\n const autosizeComponent = isAutosize ? {AutosizeComponent: getAutosizeComponent(layoutItem.i)} : {};\n return (\n <LayoutItem\n key={layoutItem.i}\n layoutItemConfig={layoutItem}\n views={views}\n onToggleFullscreen={onToggleFullscreen}\n onRemove={onRemove}\n className={classnames({fullscreen: isItemFullscreen}, classes.item)}\n isFullscreen={isItemFullscreen}\n {...autosizeComponent}\n />\n );\n })}\n </GridLayout>\n </>\n );\n};\n\nReltioGridLayout.defaultProps = {\n layoutOptions: {\n cols: 4,\n rowHeight: 30,\n margin: [15, 15]\n },\n onConfigChanged: identity,\n onLayoutChanged: identity,\n classes: {}\n};\nReltioGridLayout.propTypes = {\n views: PropTypes.array,\n layout: PropTypes.array,\n layoutOptions: PropTypes.object,\n onConfigChanged: PropTypes.func,\n onLayoutChanged: PropTypes.func,\n onDrop: PropTypes.func,\n onRemove: PropTypes.func,\n LayoutItem: PropTypes.elementType,\n draggableHandle: PropTypes.string,\n isDroppable: PropTypes.bool,\n droppingItem: PropTypes.object,\n classes: PropTypes.shape({\n item: PropTypes.string\n })\n};\n\nexport default memo(ReltioGridLayout);\n","import mdmModule from '@reltio/mdm-module';\nimport {findSourceSystemByUri, getAbsoluteImageUrl, getSourceSystemLabel, Source} from '@reltio/mdm-sdk';\nimport React from 'react';\nimport {useSelector} from 'react-redux';\nimport AvatarWithFallback from '../AvatarWithFallback/AvatarWithFallback';\n\ntype Props = {\n sourceType: string;\n className?: string;\n classes?: {\n iconRoot?: string;\n textRoot?: string;\n };\n};\nconst SOURCE_URL = 'https://s3.amazonaws.com/reltio.images/api';\nconst SourceIcon = ({sourceType, className, classes}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const {uri, icon} = findSourceSystemByUri(metadata, sourceType) as Source;\n const avatarText = getSourceSystemLabel(metadata, uri)[0];\n\n return (\n <AvatarWithFallback\n className={className}\n avatarText={avatarText}\n icon={icon ? getAbsoluteImageUrl(SOURCE_URL, icon) : null}\n variant=\"square\"\n rootClasses={classes}\n />\n );\n};\n\nexport default SourceIcon;\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nconst VerticalDivider = ({height, margin}) => (\n <div\n style={{\n width: '1px',\n height: `${height}px`,\n borderLeft: '1px solid rgba(0,0,0,0.38)',\n margin: `0 ${margin}px`,\n flexShrink: '0'\n }}\n />\n);\n\nVerticalDivider.propTypes = {\n height: PropTypes.number,\n margin: PropTypes.number\n};\n\nexport default VerticalDivider;\n","import React, {useMemo} from 'react';\nimport {countPercents} from '@reltio/mdm-sdk';\nimport {pluck} from 'ramda';\nimport {ChartData} from '../types';\n\ntype PropsWithChartData = {\n data: ChartData[];\n};\n\nconst enrichDataWithPercents = (data: ChartData[]): ChartData[] => {\n const percents = countPercents(pluck('value', data), 1);\n return data.map((item, i) => ({...item, percent: percents[i]}));\n};\n\nconst withPercents = <T extends PropsWithChartData>(Component: React.ComponentType<T>) => {\n const WithPercents = ({data, ...otherProps}: T) => {\n const dataWithPercents = useMemo(() => data && enrichDataWithPercents(data), [data]);\n return <Component data={dataWithPercents} {...(otherProps as T)} />;\n };\n\n WithPercents.displayName = 'WithPercents';\n\n return WithPercents;\n};\n\nexport default withPercents;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n clickable: {\n cursor: 'pointer'\n }\n});\n\nexport const useClickableStyle = (clickable) => {\n const styles = useStyles();\n return clickable ? styles.clickable : undefined;\n};\n","import {useEffect, useState} from 'react';\n\nexport const useSavedState = <T>(getSavedState: () => Promise<T>) => {\n const [isLoaded, setIsLoaded] = useState(false);\n const [savedState, setSavedState] = useState<T | Record<string, never>>({});\n\n useEffect(() => {\n getSavedState()\n .then((savedState) => {\n setSavedState(savedState || {});\n })\n .then((_) => setIsLoaded(true))\n .catch((_) => setIsLoaded(true));\n }, []); // eslint-disable-line\n\n return {isLoaded, savedState};\n};\n","import {AttributeType} from '@reltio/mdm-sdk';\n\nexport type ReactGridLayoutItem = {\n i: string;\n x: number;\n y: number;\n w: number;\n h: number;\n minW?: number;\n minH?: number;\n maxW?: number;\n maxH?: number;\n static?: boolean;\n};\n\nexport type ReltioGridLayoutItem = {\n id: string;\n x: number;\n y: number;\n width: number;\n height: number;\n minWidth?: number;\n minHeight?: number;\n maxWidth?: number;\n maxHeight?: number;\n isStatic?: boolean;\n autosizing?: boolean;\n};\n\nexport type AttributeOption = {\n label: string;\n value: string;\n attrType: AttributeType;\n chipLabel: string;\n level: number;\n};\n\nexport enum DateRangeTypes {\n WITHIN = 'within',\n AGO = 'ago',\n BETWEEN = 'between'\n}\n\nexport type DateRangeFilter = {\n type: DateRangeTypes;\n period: [number, string] | [Date, Date];\n};\n\nexport type QueryBuilderAttributeData = {\n title: string;\n pathToTitle: Array<string>;\n fieldName: string;\n entityTypeUri: string;\n attrType: AttributeType;\n uri: string;\n groupName: string;\n filterOptions: Array<string>;\n};\n\nexport type QueryBuilderAttribute = {\n id: string;\n values: Array<unknown>;\n data: QueryBuilderAttributeData;\n filter: string;\n operator: string;\n};\n\nexport type AttributeSelectorItem = {\n attrType: AttributeType;\n entityTypeUri: string;\n fieldName: string;\n groupName: string;\n title: string;\n uri: string;\n children?: AttributeSelectorItem[];\n pathToTitle?: string[];\n};\n\nexport type AttributeSelectorItemsGroup = {\n id?: string;\n title: string;\n attributes: AttributeSelectorItem[];\n};\n\nexport type AttributeSelectionInfo = {\n index: number;\n checked: boolean;\n attribute: AttributeSelectorItem;\n selectedAttributes: AttributeSelectorItem[];\n};\n\nexport type BasicAttributeSelectorProps = {\n className?: string;\n itemsGroups: AttributeSelectorItemsGroup[];\n value: AttributeSelectorItem;\n onSelect: (selectInfo: AttributeSelectionInfo) => void;\n onRestoreFocus?: () => void;\n onOpenPopup?: () => void;\n getLabel?: (value: {fieldName?: string; pathToTitle?: string[]; title: string}) => string;\n disableRestoreFocus?: boolean;\n disableEnforceFocus?: boolean;\n single?: boolean;\n ungroup?: boolean;\n disabled?: boolean;\n hideCheckBox?: boolean;\n};\nexport enum RequestStates {\n INIT = 'init',\n LOADING = 'loading',\n LOADED = 'loaded',\n ERROR = 'error'\n}\n\nexport type SelectableItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selected?: boolean;\n};\n\nexport type DropDownMenuItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selectable?: boolean;\n selected?: boolean;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n loader: {\n width: '100%',\n top: 0,\n left: 0,\n position: 'absolute',\n borderRadius: '2px'\n }\n});\n","import React from 'react';\nimport {LinearProgress as LinearProgress} from '@material-ui/core';\nimport {useStyles} from './styles';\n\nconst DashboardLinearLoader = () => {\n const styles = useStyles();\n return <LinearProgress color=\"secondary\" className={styles.loader} />;\n};\n\nexport default DashboardLinearLoader;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n view: {\n flex: 1,\n width: '100%',\n height: '100%',\n overflow: 'hidden'\n }\n}));\n","import React from 'react';\nimport {BasicView} from '@reltio/components';\nimport {DashboardViewIdContext} from '../../contexts/DashboardViewIdContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n id: string;\n children: React.ReactNode;\n};\n\nconst LayoutItemView = ({id, children}: Props) => {\n const styles = useStyles();\n\n return (\n <DashboardViewIdContext.Provider value={id}>\n <BasicView className={styles.view}>{children}</BasicView>\n </DashboardViewIdContext.Provider>\n );\n};\n\nexport default LayoutItemView;\n","import React from 'react';\n\nexport const DashboardViewIdContext = React.createContext(null);\n\nDashboardViewIdContext.displayName = 'DashboardViewIdContext';\n","import React, {createContext, useCallback, useContext, useEffect, useMemo, useState} from 'react';\nimport {assoc, assocPath, propOr} from 'ramda';\nimport nanoid from 'nanoid';\n\nimport {RequestStates} from '@reltio/components';\nimport {DQDataLevel} from '@reltio/mdm-sdk';\n\ntype RefreshSignals = Partial<Record<DQDataLevel, number>>;\ntype UpdateTime = {[actionId: string]: number};\ntype UpdateTimes = Partial<Record<DQDataLevel, UpdateTime>>;\ntype RequestsUpdateTimeContextType = {\n updateTime: ({dataLevel, actionId}: {dataLevel: DQDataLevel; actionId: string}) => void;\n updateTimes: UpdateTimes;\n resetUpdateTimes: (dataLevel: DQDataLevel) => void;\n};\nconst ReloadFacetSignalContext = createContext<RefreshSignals>(null);\nconst ReloadFacetActionContext = createContext<(dataLevel: DQDataLevel) => void>(null);\nconst RequestsUpdateTimeContext = createContext<RequestsUpdateTimeContextType>(null);\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const ReloadFacetProvider = ({children}: Props) => {\n const [refreshSignals, setRefreshSignals] = useState<RefreshSignals>({});\n const [updateTimes, setUpdateTimes] = useState<UpdateTimes>({});\n\n const resetUpdateTimes = useCallback(\n (dataLevel?: DQDataLevel) => (dataLevel ? setUpdateTimes(assoc(dataLevel, {})) : setUpdateTimes({})),\n []\n );\n const refreshAll = useCallback(\n (dataLevel: DQDataLevel) => {\n setRefreshSignals((signals) => {\n const nextSignal = propOr(0, dataLevel, signals) + 1;\n return assoc(dataLevel, nextSignal, signals);\n });\n },\n [setRefreshSignals]\n );\n\n const updateTime = ({dataLevel, actionId}) => {\n const time = Date.now();\n setUpdateTimes(assocPath([dataLevel, actionId], time));\n };\n return (\n <ReloadFacetActionContext.Provider value={refreshAll}>\n <ReloadFacetSignalContext.Provider value={refreshSignals}>\n <RequestsUpdateTimeContext.Provider value={{updateTime, updateTimes, resetUpdateTimes}}>\n {children}\n </RequestsUpdateTimeContext.Provider>\n </ReloadFacetSignalContext.Provider>\n </ReloadFacetActionContext.Provider>\n );\n};\n\nexport const useReloadAllFacets = () => {\n const refreshAll = useContext(ReloadFacetActionContext);\n\n if (refreshAll === undefined) {\n throw new Error('useReloadAllFacets must be used within a ReloadFacetProvider');\n }\n\n return refreshAll;\n};\n\ntype useReloadFacetProps = {\n state: RequestStates;\n reload: () => void;\n dataLevel?: DQDataLevel;\n};\n\nexport const useReloadFacet = ({state, reload, dataLevel}: useReloadFacetProps) => {\n const refreshSignals = useContext(ReloadFacetSignalContext);\n\n if (refreshSignals === undefined) {\n throw new Error('useReloadFacet must be used within a ReloadFacetProvider');\n }\n\n const refreshSignal = refreshSignals[dataLevel];\n useEffect(() => {\n if (state === RequestStates.LOADED || state === RequestStates.ERROR) {\n reload();\n }\n }, [refreshSignal]);\n};\n\nexport const useRefreshAction = ({action, dataLevel}: {action: () => void; dataLevel: DQDataLevel}) => {\n const {updateTime} = useContext(RequestsUpdateTimeContext);\n\n const actionId = useMemo(() => nanoid(), []);\n return useCallback(() => {\n updateTime({actionId, dataLevel});\n action();\n }, [action, dataLevel]);\n};\n\nexport const useUpdateTime = (dataLevel: DQDataLevel) => {\n const {updateTimes, resetUpdateTimes} = useContext(RequestsUpdateTimeContext);\n\n return {\n updateTime: Math.min(...(Object.values(updateTimes[dataLevel] || {}) as number[])),\n resetUpdateTimes\n };\n};\n","import {theme as defaultTheme} from '@reltio/mdm-sdk';\n\nexport const theme = {\n ...defaultTheme,\n tooltip: {\n borderRadius: '4px',\n backgroundColor: 'rgba(96, 96, 96, 0.9)',\n maxWidth: '300px'\n }\n};\n","export enum ChartDataType {\n STRING = 'string',\n FLOAT = 'float',\n INTEGER = 'integer',\n BOOLEAN = 'boolean',\n DATE = 'date',\n SSN = 'SSN',\n UNKNOWN = 'unknown'\n}\n","import {DQMetric} from '@reltio/mdm-sdk';\n\nenum CustomViewType {\n UNSUPPORTED = 'unsupported',\n SUMMARY = 'summary',\n MONTH_DISTRIBUTION = 'monthDistribution',\n DAY_OF_WEEK_DISTRIBUTION = 'dayOfWeekDistribution',\n DAY_OF_MONTH_DISTRIBUTION = 'dayOfMonthDistribution',\n RDM_TRANSCODE = 'rdmTranscode'\n}\n\nexport type ViewType = DQMetric | CustomViewType;\nexport const ViewType = {...DQMetric, ...CustomViewType};\n","export enum RDMLookupState {\n RDM_LOOKUP_EXIST = 'rdmLookupExist',\n RDM_LOOKUP_NOT_EXIST = 'rdmLookupNotExist'\n}\n","import i18n from 'ui-i18n';\n\nimport {DQDataLevel} from '@reltio/mdm-sdk';\n\nimport {LayoutsByAttributeType, ViewsByDataLevel} from '../types/DQDashboardPerspectiveConfig';\nimport {ChartDataType} from './ChartDataType';\nimport {ViewType} from './ViewType';\nimport {RDMLookupState} from '../constants/RdmLookupState';\n\nexport const defaultViewsByDataLevel: ViewsByDataLevel = {\n [DQDataLevel.ATTRIBUTE_TYPE]: [\n {\n id: 'FillRateView',\n type: ViewType.FILL_RATE,\n title: i18n.text('Fill rate')\n },\n {\n id: 'UniquenessAnalysisView',\n type: ViewType.UNIQUENESS,\n title: i18n.text('Uniqueness analysis')\n },\n {\n id: 'SummaryView',\n type: ViewType.SUMMARY,\n title: i18n.text('Summary')\n },\n {\n id: 'ValidationView',\n type: ViewType.DATA_VALIDATION,\n title: i18n.text('Profiles with invalid data')\n },\n {\n id: 'ValidationViewTimeSeries',\n type: ViewType.DATA_VALIDATION,\n title: i18n.text('Profiles with invalid data')\n },\n {\n id: 'FrequencyAnalysis',\n type: ViewType.FREQUENCY,\n title: i18n.text('Frequency analysis')\n },\n {\n id: 'LengthStatistics',\n type: ViewType.LENGTH_STATISTIC,\n title: i18n.text('Length statistics')\n },\n {\n id: 'PatternAnalysis',\n type: ViewType.PATTERN,\n title: i18n.text('Pattern analysis')\n },\n {\n id: 'CrosswalkAnalysis',\n type: ViewType.CROSSWALK_ANALYSIS,\n title: i18n.text('Source system analysis')\n },\n {\n id: 'MonthDistribution',\n type: ViewType.MONTH_DISTRIBUTION,\n title: i18n.text('Month distribution')\n },\n {\n id: 'DayOfWeekDistribution',\n type: ViewType.DAY_OF_WEEK_DISTRIBUTION,\n title: i18n.text('Day of week distribution')\n },\n {\n id: 'DayOfMonthDistribution',\n type: ViewType.DAY_OF_MONTH_DISTRIBUTION,\n title: i18n.text('Day of month distribution')\n },\n {\n id: 'ValueDistribution',\n type: ViewType.VALUE_DISTRIBUTION,\n title: i18n.text('Value distribution')\n },\n {\n id: 'UnsupportedDataType',\n type: ViewType.UNSUPPORTED,\n title: i18n.text('Unsupported Data Type')\n }\n ],\n [DQDataLevel.ENTITY_TYPE]: [\n {\n id: 'SummaryView',\n type: ViewType.SUMMARY,\n title: i18n.text('Summary')\n },\n {\n id: 'ValidationView',\n type: ViewType.DATA_VALIDATION,\n title: i18n.text('Profiles with invalid data')\n },\n {\n id: 'ConsolidationRate',\n type: ViewType.CONSOLIDATION_RATE,\n title: i18n.text('Consolidation rate')\n },\n {\n id: 'RDMTranscode',\n type: ViewType.RDM_TRANSCODE,\n title: i18n.text('RDM value mapping status')\n }\n ]\n};\n\nexport const defaultLayoutsByDataLevel = {\n [DQDataLevel.ATTRIBUTE_TYPE]: {\n today: {\n default: [\n {x: 0, y: 0, width: 3, height: 11, id: 'SummaryView'},\n {x: 3, y: 0, width: 3, height: 11, id: 'ValidationView'},\n {x: 0, y: 11, width: 3, height: 8, id: 'FillRateView'},\n {x: 3, y: 11, width: 3, height: 8, id: 'UniquenessAnalysisView'},\n {x: 0, y: 19, width: 3, height: 19, id: 'FrequencyAnalysis'},\n {x: 3, y: 19, width: 3, height: 19, id: 'CrosswalkAnalysis'},\n {x: 0, y: 38, width: 6, height: 19, id: 'LengthStatistics'}\n ],\n [ChartDataType.SSN]: [\n {x: 0, y: 0, width: 3, height: 11, id: 'SummaryView'},\n {x: 3, y: 0, width: 3, height: 11, id: 'ValidationView'},\n {x: 0, y: 11, width: 3, height: 8, id: 'FillRateView'},\n {x: 3, y: 11, width: 3, height: 8, id: 'UniquenessAnalysisView'},\n {x: 0, y: 19, width: 3, height: 19, id: 'FrequencyAnalysis'},\n {x: 3, y: 19, width: 3, height: 19, id: 'CrosswalkAnalysis'},\n {x: 0, y: 38, width: 3, height: 19, id: 'PatternAnalysis'}\n ],\n [ChartDataType.BOOLEAN]: [\n {x: 0, y: 0, width: 3, height: 11, id: 'SummaryView'},\n {x: 3, y: 0, width: 3, height: 11, id: 'ValidationView'},\n {x: 0, y: 11, width: 3, height: 8, id: 'FillRateView'},\n {x: 3, y: 11, width: 3, height: 8, id: 'FrequencyAnalysis'},\n {x: 0, y: 19, width: 3, height: 19, id: 'CrosswalkAnalysis'}\n ],\n [ChartDataType.DATE]: [\n {x: 0, y: 0, width: 3, height: 11, id: 'SummaryView'},\n {x: 3, y: 0, width: 3, height: 11, id: 'ValidationView'},\n {x: 0, y: 11, width: 3, height: 8, id: 'FillRateView'},\n {x: 3, y: 11, width: 3, height: 8, id: 'UniquenessAnalysisView'},\n {x: 0, y: 19, width: 3, height: 19, id: 'FrequencyAnalysis'},\n {x: 3, y: 19, width: 3, height: 19, id: 'CrosswalkAnalysis'},\n {x: 0, y: 38, width: 6, height: 19, id: 'ValueDistribution'}\n ],\n [ChartDataType.INTEGER]: [\n {x: 0, y: 0, width: 3, height: 11, id: 'SummaryView'},\n {x: 3, y: 0, width: 3, height: 11, id: 'ValidationView'},\n {x: 0, y: 11, width: 3, height: 8, id: 'FillRateView'},\n {x: 3, y: 11, width: 3, height: 8, id: 'UniquenessAnalysisView'},\n {x: 0, y: 19, width: 3, height: 19, id: 'FrequencyAnalysis'},\n {x: 3, y: 19, width: 3, height: 19, id: 'CrosswalkAnalysis'},\n {x: 0, y: 38, width: 6, height: 19, id: 'ValueDistribution'}\n ],\n [ChartDataType.FLOAT]: [\n {x: 0, y: 0, width: 3, height: 11, id: 'SummaryView'},\n {x: 3, y: 0, width: 3, height: 11, id: 'ValidationView'},\n {x: 0, y: 11, width: 3, height: 8, id: 'FillRateView'},\n {x: 3, y: 11, width: 3, height: 8, id: 'UniquenessAnalysisView'},\n {x: 0, y: 19, width: 3, height: 19, id: 'FrequencyAnalysis'},\n {x: 3, y: 19, width: 3, height: 19, id: 'CrosswalkAnalysis'},\n {x: 0, y: 38, width: 6, height: 19, id: 'ValueDistribution'}\n ]\n }\n } as LayoutsByAttributeType,\n [DQDataLevel.ENTITY_TYPE]: {\n [RDMLookupState.RDM_LOOKUP_EXIST]: [\n {x: 0, y: 0, width: 4, height: 7, id: 'SummaryView'},\n {x: 4, y: 0, width: 2, height: 7, id: 'RDMTranscode'},\n {x: 0, y: 7, width: 6, height: 18, id: 'ConsolidationRate'},\n {x: 0, y: 25, width: 6, height: 12, id: 'ValidationView'}\n ],\n [RDMLookupState.RDM_LOOKUP_NOT_EXIST]: [\n {x: 0, y: 0, width: 6, height: 7, id: 'SummaryView'},\n {x: 0, y: 7, width: 6, height: 18, id: 'ConsolidationRate'},\n {x: 0, y: 25, width: 6, height: 12, id: 'ValidationView'}\n ]\n }\n};\n","import React from 'react';\n\nexport const ChartsDataContext = React.createContext(null);\n\nChartsDataContext.displayName = 'ChartsDataContext';\n","import React from 'react';\nimport {DetailedAttributeType} from '../../types/DetailedAttributeType';\n\nexport const DetailedAttributeTypeContext = React.createContext<DetailedAttributeType>(null);\n\nDetailedAttributeTypeContext.displayName = 'DetailedAttributeTypeContext';\n","import React from 'react';\n\nimport {DataValidationFunction} from '@reltio/mdm-sdk';\nimport {RequestStates} from '@reltio/components';\n\ntype ContextType = {\n dvfs?: {\n data: DataValidationFunction[];\n state: RequestStates;\n reload: () => Promise<void>;\n errorCode?: number;\n };\n dvfConfigLink?: string;\n};\n\nexport const DVFContext = React.createContext<ContextType>(null);\n\nDVFContext.displayName = 'DVFContext';\n","import React from 'react';\n\nimport {TEntityType} from '@reltio/mdm-sdk';\n\nexport const EntityTypeContext = React.createContext<TEntityType>(null);\n\nEntityTypeContext.displayName = 'EntityTypeContext';\n","import {useCallback, useEffect, useMemo, useState} from 'react';\nimport {omit, pathOr, pipe, keys, path, length} from 'ramda';\nimport {RequestStates} from '@reltio/components';\nimport {\n getDQChartsData,\n DQChartsData,\n TEntityType,\n getLastUriPart,\n FilterOptions,\n buildFilterQueryString,\n generateValuableQueryString,\n getFacets,\n ActivityFilters,\n DQDataLevel,\n DQMetric\n} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\nimport {DetailedAttributeType} from '../types/DetailedAttributeType';\nimport {useRefreshAction} from '../contexts/ReloadFacetContext';\n\nconst REFRESH_REQUEST_TIMEOUT_MS = 180 * 1000;\n\nexport type UseChartsDataRequestProps = {\n entityType: TEntityType;\n detailedAttributeType?: DetailedAttributeType;\n dataLevel: DQDataLevel;\n metrics?: DQMetric[];\n};\n\nexport const useChartsDataRequest = ({\n entityType,\n detailedAttributeType,\n dataLevel,\n metrics\n}: UseChartsDataRequestProps) => {\n const [requestState, setRequestState] = useState<RequestStates>(RequestStates.INIT);\n const [chartsData, setChartsData] = useState<DQChartsData>({});\n const [lastRequestTime, setLastRequestTime] = useState<number>(null);\n const attributeFieldName = detailedAttributeType?.fieldName;\n const entityTypeUri = entityType?.uri;\n const safePromise = useSafePromise();\n\n const onError = (error) => {\n console.error(error); // eslint-disable-line\n setRequestState(RequestStates.ERROR);\n setChartsData({});\n };\n\n const onRequestFinished = (data: DQChartsData) => {\n setChartsData(data);\n setRequestState(RequestStates.LOADED);\n };\n\n const loadChartsData = useCallback(async () => {\n if (!entityTypeUri) return;\n setLastRequestTime(Date.now());\n setRequestState(RequestStates.LOADING);\n setChartsData({});\n\n if (dataLevel === DQDataLevel.ENTITY_TYPE) {\n const filter = buildFilterQueryString()([\n {\n fieldName: 'type',\n filter: FilterOptions.EQUALS,\n values: [entityTypeUri]\n }\n ]);\n\n const getActiveProfiles = getFacets({\n query: generateValuableQueryString({activeness: ActivityFilters.ACTIVE_ONLY, filter}),\n body: [{fieldName: 'type', pageSize: 101, pageNo: 1}]\n });\n\n const getInactiveProfiles = getFacets({\n query: generateValuableQueryString({activeness: ActivityFilters.INACTIVE_ONLY, filter}),\n body: [{fieldName: 'type', pageSize: 101, pageNo: 1}]\n });\n const getDqChartsData = getDQChartsData({\n entityTypeUri,\n dataLevel,\n metrics\n });\n\n safePromise(Promise.all([getActiveProfiles, getInactiveProfiles, getDqChartsData]))\n .then(([activeProfiles, inactiveProfiles, dqChartsData]) => {\n const sourceSystems = pipe(\n path(['consolidationRate', 'totalCrosswalksBySource']),\n omit(['ReltioCleanser']),\n keys,\n length\n )(dqChartsData);\n\n onRequestFinished({\n ...dqChartsData,\n summary: {\n inactiveProfiles: inactiveProfiles.type?.[getLastUriPart(entityTypeUri)],\n activeProfiles: activeProfiles.type?.[getLastUriPart(entityTypeUri)],\n sourceSystems\n }\n });\n })\n .catch(onError);\n } else {\n if (!attributeFieldName) return;\n safePromise(\n getDQChartsData({\n entityTypeUri,\n attributes: [attributeFieldName],\n dataLevel,\n metrics\n })\n )\n .then(pipe(pathOr({}, ['statistic', attributeFieldName]), onRequestFinished))\n .catch(onError);\n }\n }, [setRequestState, setChartsData, safePromise, attributeFieldName, entityTypeUri, dataLevel, metrics]);\n\n useEffect(() => {\n const needRefresh = lastRequestTime ? Date.now() - lastRequestTime > REFRESH_REQUEST_TIMEOUT_MS : false;\n\n if (dataLevel === DQDataLevel.ENTITY_TYPE && needRefresh) refreshAction();\n });\n\n const refreshAction = useRefreshAction({\n action: loadChartsData,\n dataLevel\n });\n\n useEffect(() => {\n refreshAction();\n }, [refreshAction]);\n\n const chartsDataResult = useMemo(() => ({data: chartsData, state: requestState, reload: refreshAction}), [\n chartsData,\n requestState,\n refreshAction\n ]);\n\n return chartsDataResult;\n};\n","import {pluck} from 'ramda';\nimport {useEffect, useState} from 'react';\nimport {useSafePromise} from '@reltio/components';\nimport {\n buildFilterQueryString,\n FilterOptions,\n generateValuableQueryString,\n getFacets,\n getLastUriPart,\n TEntityType\n} from '@reltio/mdm-sdk';\n\nexport const useEntityCount = (entityTypes: TEntityType[]) => {\n const [entitiesCountMap, setEntitiesCountMap] = useState(null);\n const safePromise = useSafePromise();\n useEffect(() => {\n const filter = buildFilterQueryString()([\n {\n fieldName: 'type',\n filter: FilterOptions.EQUALS,\n values: pluck('uri', entityTypes)\n }\n ]);\n\n safePromise(\n getFacets({\n query: generateValuableQueryString({activeness: 'active', filter: filter}),\n body: [{fieldName: 'type', pageSize: 101, pageNo: 1}]\n })\n )\n .then(({type}) => setEntitiesCountMap(type))\n .catch(() => setEntitiesCountMap(null));\n }, [entityTypes]);\n\n return (entityTypeUri: string) => Number(entitiesCountMap?.[getLastUriPart(entityTypeUri)] || 0);\n};\n","export enum TimeRange {\n TODAY = 'today',\n LAST_7_DAYS = '7days',\n LAST_30_DAYS = '30days'\n}\n","import {DetailedAttributeType} from '../types/DetailedAttributeType';\nimport {FacetFilter} from '../types/FacetFilter';\nimport {SearchStateAttributesGroup, SearchOperator} from '@reltio/mdm-sdk';\n\nexport const getAdvancedSearchFilter = (\n entityTypeUri: string,\n filters?: FacetFilter[],\n detailedAttributeType?: DetailedAttributeType\n): SearchStateAttributesGroup => ({\n attributes: (filters || []).map(({filter, fieldName, values, uri}, index: number) => ({\n data: {\n uri: uri || detailedAttributeType?.uri,\n entityTypeUri,\n fieldName\n },\n filter,\n id: `attribute_${index}`,\n operator: SearchOperator.and,\n values\n })),\n entityTypes: [entityTypeUri],\n id: 'group',\n operator: SearchOperator.or\n});\n","import {\n assoc,\n curry,\n defaultTo,\n evolve,\n filter,\n isEmpty,\n map,\n pipe,\n pluck,\n when,\n mergeLeft,\n propEq,\n prop,\n uniqBy,\n concat,\n isNil\n} from 'ramda';\n\nimport i18n from 'ui-i18n';\nimport {ChartData, ReltioGridLayoutItem} from '@reltio/components';\nimport {\n DataTypes,\n DQDataLevel,\n DQMetric,\n formatDataTypeValue,\n getSourceSystemLabel,\n isDateType,\n mapFilterValue,\n Metadata,\n parseTimestamp,\n SearchState,\n TimeSeriesDataValues\n} from '@reltio/mdm-sdk';\n\nimport {ChartDataType} from '../constants/ChartDataType';\nimport {defaultLayoutsByDataLevel, defaultViewsByDataLevel} from '../constants/defaultConfig';\nimport {ViewType} from '../constants/ViewType';\nimport {DetailedAttributeType} from '../types/DetailedAttributeType';\nimport {LayoutsByAttributeType, ViewsByDataLevel} from '../types/DQDashboardPerspectiveConfig';\nimport {DQDashboardView} from '../types/DQDashboardView';\nimport {FacetFilter} from '../types/FacetFilter';\nimport {GetSearchStateProps} from '../types/GetSearchStateProps';\nimport {TimeRange} from '../types/TimeRange';\n\nimport {getAdvancedSearchFilter} from './advancedFilters';\n\nexport const MIN_CHART_BAR_SIZE = 3;\n\nexport const localizeChartValues = map((chartData: ChartData) => ({\n ...chartData,\n localizedValue: i18n.number(chartData.value)\n}));\n\nexport const getPercentLabel = (percent: number) => (isNil(percent) ? '' : `(${percent}%)`);\n\nexport const isEmptyData = (data: ChartData[]) => isEmpty(data) || !data.find(({value}) => value > 0);\n\nexport const facetFiltersToSearchState = curry(\n (detailedAttributeType: DetailedAttributeType, entityTypeUri: string, filters: FacetFilter[]): SearchState => ({\n advanced: [\n getAdvancedSearchFilter(\n entityTypeUri,\n filters.map(\n when(\n () => isDateType(detailedAttributeType?.type),\n evolve({values: map(mapFilterValue(parseTimestamp))})\n )\n ),\n detailedAttributeType\n )\n ],\n searchOptions: {\n searchByOv: false,\n ovOnly: false\n },\n version: '2.0'\n })\n);\n\nexport const getSearchState = (getFilter) => ({\n detailedAttributeType,\n entityTypeUri\n}: {\n detailedAttributeType: DetailedAttributeType;\n entityTypeUri: string;\n}): ((value: string) => SearchState) =>\n pipe(\n getFilter({\n fieldName: detailedAttributeType?.fieldName,\n entityTypeUri\n }),\n facetFiltersToSearchState(detailedAttributeType, entityTypeUri)\n );\n\nexport const convertDateLabelsInChartData = (data: ChartData[], attributeType: string) =>\n data.map((dataItem) => ({\n ...dataItem,\n label: formatDataTypeValue({dataTypeDefinition: {type: attributeType}}, Number(dataItem.label))\n }));\n\nexport const getChartDataTypeByAttributeType = (type: string) => {\n switch (type) {\n case DataTypes.TYPE_BLOB:\n case DataTypes.TYPE_BLOG_URL:\n case DataTypes.TYPE_CIK_ID:\n case DataTypes.TYPE_ENTITY_ID:\n case DataTypes.TYPE_IMAGE_URL:\n case DataTypes.TYPE_STRING:\n case DataTypes.TYPE_TEXT:\n case DataTypes.TYPE_URL:\n return ChartDataType.STRING;\n case DataTypes.TYPE_COUNT:\n case DataTypes.TYPE_DOLLAR:\n case DataTypes.TYPE_INT:\n case DataTypes.TYPE_LONG:\n return ChartDataType.INTEGER;\n case DataTypes.TYPE_FLOAT:\n case DataTypes.TYPE_DOUBLE:\n case DataTypes.TYPE_NUMBER:\n return ChartDataType.FLOAT;\n case DataTypes.TYPE_BOOLEAN:\n case DataTypes.TYPE_RDM_LOOKUPS_NOT_RESOLVED:\n return ChartDataType.BOOLEAN;\n case DataTypes.TYPE_ACTIVENESS_DATE:\n case DataTypes.TYPE_DATE:\n case DataTypes.TYPE_LOCAL_DATE:\n case DataTypes.TYPE_TIMESTAMP:\n return ChartDataType.DATE;\n case DataTypes.TYPE_SSN:\n return ChartDataType.SSN;\n default:\n return ChartDataType.UNKNOWN;\n }\n};\n\nconst getViewsByDataType = (chartDataType: ChartDataType) => {\n switch (chartDataType) {\n case ChartDataType.INTEGER:\n return [\n ViewType.SUMMARY,\n ViewType.CROSSWALK_ANALYSIS,\n ViewType.DATA_VALIDATION,\n ViewType.FILL_RATE,\n ViewType.FREQUENCY,\n ViewType.UNIQUENESS,\n ViewType.VALUE_DISTRIBUTION\n ];\n case ChartDataType.FLOAT:\n return [\n ViewType.SUMMARY,\n ViewType.CROSSWALK_ANALYSIS,\n ViewType.DATA_VALIDATION,\n ViewType.FILL_RATE,\n ViewType.FREQUENCY,\n ViewType.UNIQUENESS,\n ViewType.VALUE_DISTRIBUTION\n ];\n case ChartDataType.BOOLEAN:\n return [\n ViewType.SUMMARY,\n ViewType.CROSSWALK_ANALYSIS,\n ViewType.DATA_VALIDATION,\n ViewType.FILL_RATE,\n ViewType.FREQUENCY\n ];\n case ChartDataType.STRING:\n return [\n ViewType.LENGTH_STATISTIC,\n ViewType.SUMMARY,\n ViewType.CROSSWALK_ANALYSIS,\n ViewType.DATA_VALIDATION,\n ViewType.FILL_RATE,\n ViewType.FREQUENCY,\n ViewType.UNIQUENESS\n ];\n case ChartDataType.DATE:\n return [\n ViewType.SUMMARY,\n ViewType.CROSSWALK_ANALYSIS,\n ViewType.DATA_VALIDATION,\n ViewType.FILL_RATE,\n ViewType.FREQUENCY,\n ViewType.UNIQUENESS,\n ViewType.VALUE_DISTRIBUTION,\n ViewType.MONTH_DISTRIBUTION,\n ViewType.DAY_OF_MONTH_DISTRIBUTION,\n ViewType.DAY_OF_WEEK_DISTRIBUTION\n ];\n case ChartDataType.SSN:\n return [\n ViewType.SUMMARY,\n ViewType.CROSSWALK_ANALYSIS,\n ViewType.DATA_VALIDATION,\n ViewType.FILL_RATE,\n ViewType.FREQUENCY,\n ViewType.UNIQUENESS,\n ViewType.PATTERN\n ];\n case ChartDataType.UNKNOWN:\n return [\n ViewType.SUMMARY,\n ViewType.CROSSWALK_ANALYSIS,\n ViewType.DATA_VALIDATION,\n ViewType.FILL_RATE,\n ViewType.FREQUENCY,\n ViewType.UNIQUENESS,\n ViewType.LENGTH_STATISTIC\n ];\n default:\n return [];\n }\n};\n\nconst getValidViews = ({\n views: allViews,\n supportedViews,\n layout\n}: {\n views: DQDashboardView[];\n supportedViews: ViewType[];\n layout: ReltioGridLayoutItem[];\n}): DQDashboardView[] => {\n return layout.reduce((views, layoutItem) => {\n const viewType = prop('type', allViews.find(propEq('id', layoutItem.id)));\n const viewIndex = allViews.findIndex(propEq('id', layoutItem.id));\n if (viewIndex !== -1)\n return !supportedViews.includes(viewType)\n ? views.concat(assoc('type', ViewType.UNSUPPORTED, allViews[viewIndex]))\n : views.concat(allViews[viewIndex]);\n else\n return views.concat({\n id: layoutItem.id,\n type: ViewType.UNSUPPORTED,\n title: i18n.text('Unsupported')\n });\n }, []);\n};\n\nexport const getEntityLevelViews = (\n views: Partial<ViewsByDataLevel>,\n layout: ReltioGridLayoutItem[]\n): DQDashboardView[] => {\n const allViews = uniqBy(\n prop('id'),\n concat(views?.[DQDataLevel.ENTITY_TYPE] || [], defaultViewsByDataLevel[DQDataLevel.ENTITY_TYPE] || [])\n );\n const supportedViews = [\n ViewType.SUMMARY,\n ViewType.CONSOLIDATION_RATE,\n ViewType.DATA_VALIDATION,\n ViewType.RDM_TRANSCODE\n ];\n return getValidViews({views: allViews, supportedViews, layout});\n};\n\nexport const getAttributeLevelViews = (\n views: Partial<ViewsByDataLevel>,\n attributeType: string,\n layout: ReltioGridLayoutItem[]\n): DQDashboardView[] => {\n const allViews = uniqBy(\n prop('id'),\n concat(views?.[DQDataLevel.ATTRIBUTE_TYPE] || [], defaultViewsByDataLevel[DQDataLevel.ATTRIBUTE_TYPE] || [])\n );\n const chartDataType = getChartDataTypeByAttributeType(attributeType);\n const supportedViews = getViewsByDataType(chartDataType);\n return getValidViews({views: allViews, supportedViews, layout});\n};\n\nexport const getMetricsFromViews: (views: DQDashboardView[]) => DQMetric[] = pipe(\n defaultTo([]),\n pluck('type'),\n filter((metric: DQMetric) => Object.values(DQMetric).includes(metric))\n);\n\nexport const hasTimeRangeLayout = (layouts: LayoutsByAttributeType) => {\n return !!(layouts?.timeRange || defaultLayoutsByDataLevel[DQDataLevel.ATTRIBUTE_TYPE]?.timeRange);\n};\n\nexport const getLayoutByAttributeType = (layouts: LayoutsByAttributeType, type: string, timeRange: TimeRange) => {\n const chartDataType = getChartDataTypeByAttributeType(type);\n const customLayouts = timeRange === TimeRange.TODAY ? layouts?.today : layouts?.timeRange;\n const defaultLayouts =\n defaultLayoutsByDataLevel[DQDataLevel.ATTRIBUTE_TYPE][timeRange === TimeRange.TODAY ? 'today' : 'timeRange'];\n\n const mergedLayoutsByType = mergeLeft(customLayouts, defaultLayouts);\n return mergedLayoutsByType[chartDataType] || mergedLayoutsByType['default'] || [];\n};\n\nexport const getBarWidthStyle = ({percent, value}: ChartData) => ({\n width: `${percent}%`,\n ...(value > 0 && {minWidth: `${MIN_CHART_BAR_SIZE}px`})\n});\n\nexport const getMaxPercentFromChartData = pipe(pluck('percent'), (percents: number[]) => Math.max(...percents));\nexport const getMaxValueFromChartData = pipe(pluck('value'), (values: number[]) => Math.max(...values));\nexport const enrichChartDataWithSourceLabel = curry((metadata: Metadata, chartData: ChartData[]) =>\n chartData.map((data) => assoc('label', getSourceSystemLabel(metadata, data.group) || data.label, data))\n);\nexport const getEntityTypeSummarySearchState = ({entityTypeUri}: GetSearchStateProps) => () =>\n facetFiltersToSearchState(undefined, entityTypeUri, []);\n\nexport const formatPercent = (percent: number | string): number => +(Number(percent) * 100).toFixed(2);\n\nexport const transformTimeSeriesChartData = curry((metric: DQMetric, chartData: TimeSeriesDataValues[]) =>\n chartData.map((data) => {\n return {\n ...data,\n [metric]: formatPercent(data[metric])\n };\n })\n);\n","import {any, map, pipe} from 'ramda';\n\nimport i18n from 'ui-i18n';\nimport {ChartData} from '@reltio/components';\nimport {\n FilterOptions,\n getChartItemColor,\n isRDMLookupAttrType,\n Metadata,\n TEntityType,\n getAttributeTypesTree\n} from '@reltio/mdm-sdk';\n\nimport {getSearchState, localizeChartValues} from './charts';\nimport {DetailedAttributeType} from '../types/DetailedAttributeType';\n\nexport enum RDMTranscodeStatus {\n RESOLVED = 'resolved',\n UNRESOLVED = 'unresolved'\n}\n\nconst RDMChartColors = {\n [RDMTranscodeStatus.RESOLVED]: '#7F22FD',\n [RDMTranscodeStatus.UNRESOLVED]: '#F085F2'\n};\n\nexport const getRDMChartColors: (chartsData: ChartData[]) => string[] = map(\n ({group}) => RDMChartColors[group] || getChartItemColor(group)\n);\n\nexport const formatRDMTranscodeData = ([resolveCount, unresolveCount]: Record<'total', number>[]): ChartData[] => {\n return localizeChartValues([\n {\n value: resolveCount.total,\n label: i18n.text('Mapped values'),\n group: RDMTranscodeStatus.RESOLVED,\n dataReltioId: 'reltio-dq-dashboard-transcode-mapped'\n },\n {\n value: unresolveCount.total,\n label: i18n.text('Unmapped values'),\n group: RDMTranscodeStatus.UNRESOLVED,\n dataReltioId: 'reltio-dq-dashboard-transcode-unmapped'\n }\n ]);\n};\n\nexport const getRDMTranscodeFilter = (rdmTranscodeStatus: RDMTranscodeStatus) => [\n {\n filter: FilterOptions.EQUALS,\n fieldName: 'rdmLookups.resolved',\n values: [rdmTranscodeStatus !== RDMTranscodeStatus.RESOLVED]\n }\n];\n\nexport const getRDMTranscodeSearchState = getSearchState(() => getRDMTranscodeFilter);\n\nexport const checkEntityTypeHasRDMLookup = (metadata: Metadata, entityType: TEntityType) => {\n const isAttrTreeHasRDMLookup = (item: DetailedAttributeType) => {\n return isRDMLookupAttrType(item) || item.children?.some(isAttrTreeHasRDMLookup);\n };\n return pipe(getAttributeTypesTree, any(isAttrTreeHasRDMLookup))(metadata, entityType);\n};\n","import {propEq, either, prop, allPass} from 'ramda';\nimport {\n getLabel,\n AttributeType,\n DataTypes,\n DataValidationFunction,\n getAttributeTypeSubAttributes,\n isReadableAttribute,\n Metadata,\n TEntityType,\n StatusVF\n} from '@reltio/mdm-sdk';\nimport {DetailedAttributeType} from '../types/DetailedAttributeType';\n\ntype IsContainActiveVF = (dvf: DataValidationFunction[], attributeTypeUri: string) => boolean;\nexport const isContainActiveVF: IsContainActiveVF = (dvf, attributeTypeUri) =>\n (dvf || []).some(allPass([propEq('attribute', attributeTypeUri), propEq('status', StatusVF.ACTIVE)]));\n\nexport const isFloatingType = (type: string): boolean =>\n [DataTypes.TYPE_FLOAT, DataTypes.TYPE_DOUBLE, DataTypes.TYPE_NUMBER].includes(type as DataTypes);\nexport const getDVFsForAttribute = (dvfs: DataValidationFunction[], attributeTypeUri: string) =>\n (dvfs || []).filter(propEq('attribute', attributeTypeUri));\n\nexport const countEntityTypeAttributes = (metadata: Metadata, entityType: TEntityType) => {\n const attributes = entityType.attributes || [];\n const collectAttributes = (attributes: AttributeType[]) => {\n return attributes\n .filter(isReadableAttribute)\n .filter(either(prop('label'), prop('name')))\n .reduce((attributes: AttributeType[], attribute: AttributeType) => {\n const children = getAttributeTypeSubAttributes(metadata, attribute);\n return children?.length\n ? [...attributes, attribute, ...collectAttributes(children)]\n : [...attributes, attribute];\n }, []);\n };\n return collectAttributes(attributes).length;\n};\n\nexport const getAttributeLabel = (detailedAttributeType: DetailedAttributeType) =>\n getLabel(detailedAttributeType.label || detailedAttributeType.name);\n","import {AttributeType} from '@reltio/mdm-sdk';\n\nexport enum AttrTypeDetailsType {\n INCLUDED_IN_MATCHING = 'includedInMatching',\n CONTAIN_VF = 'containVF',\n REQUIRED = 'required',\n REFERENCE = 'reference',\n RDM_LOOKUP = 'RDMLookup'\n}\n\nexport type AttrTypeDetails = Record<AttrTypeDetailsType, boolean>;\n\nexport type DetailedAttributeType = AttributeType & {\n children?: DetailedAttributeType[];\n fieldName?: string;\n isAttributeReference?: boolean;\n details?: AttrTypeDetails;\n};\n\nexport type AttributeItemType = {\n attributeItem: DetailedAttributeType;\n level: number;\n};\n","import {ChartData} from '@reltio/components';\nimport {FillRateState, attributeUriToSearchUri} from '@reltio/mdm-sdk';\nimport {curry, propEq} from 'ramda';\nimport {DetailedAttributeType} from '../types/DetailedAttributeType';\nimport {FilterOption} from '../types/FilterOption';\n\nconst filterAttributeByName = (item: DetailedAttributeType, filterText: string) =>\n (item.label || item.name)?.toLowerCase().includes(filterText.toLowerCase());\n\nexport const filterAttributeByDetails = curry((filterOptions: FilterOption[], item: DetailedAttributeType) =>\n filterOptions.some((detail) => item.details[detail.value])\n);\n\nexport const filterAttributeTreeByDetails = curry((filterOptions: FilterOption[], item: DetailedAttributeType) => {\n if (filterOptions.length === 0) return true;\n return (\n filterAttributeByDetails(filterOptions, item) ||\n item.children?.some((child) => filterAttributeTreeByDetails(filterOptions, child))\n );\n});\n\nexport const filterAttributeByNotEmpty = curry(\n (fillRates: Record<string, ChartData[]>, item: DetailedAttributeType) => {\n const fillRate = fillRates[item.fieldName];\n return fillRate?.find(propEq('group', FillRateState.EXISTS))?.value;\n }\n);\n\nexport const filterAttributeByEmpty = curry((fillRates: Record<string, ChartData[]>, item: DetailedAttributeType) => {\n const fillRate = fillRates[item.fieldName];\n return !fillRate?.find(propEq('group', FillRateState.EXISTS))?.value;\n});\n\nexport const filterAttributeTreeByEmpty = curry(\n (fillRates: Record<string, ChartData[]>, item: DetailedAttributeType, parents = []) => {\n const fieldName = item.fieldName || attributeUriToSearchUri(item.uri, parents);\n return (\n filterAttributeByEmpty(fillRates, {...item, fieldName}) ||\n item.children?.some((child) =>\n filterAttributeTreeByEmpty(fillRates, child, parents.concat({name: item.name, label: item.label}))\n )\n );\n }\n);\n\nexport const filterAttributesTypesByName = curry((filterText: string, array: DetailedAttributeType[]) => {\n return array.reduce((resultArray, currentItem) => {\n const isCurrentItemMatch = filterAttributeByName(currentItem, filterText);\n const children = isCurrentItemMatch\n ? currentItem.children || []\n : filterAttributesTypesByName(filterText, currentItem.children || []);\n if (isCurrentItemMatch || children.length)\n resultArray.push(Object.assign({}, currentItem, children.length && {children}));\n return resultArray;\n }, []);\n});\n","import {chain, curry, pipe, prop, propEq} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {\n Metadata,\n TEntityType,\n getAttributeTypesTree,\n attributeUriToSearchUri,\n isReference,\n DataValidationFunction,\n isRDMLookupAttrType,\n FillRateState,\n DQChartsData\n} from '@reltio/mdm-sdk';\nimport {isContainActiveVF} from './attributes';\nimport {\n AttributeItemType,\n DetailedAttributeType,\n AttrTypeDetails,\n AttrTypeDetailsType\n} from '../types/DetailedAttributeType';\n\nimport {filterAttributesTypesByName} from './attributeFilters';\nimport {ChartData} from '@reltio/components';\n\ntype GetAttrTypeDetailsParams = {\n attrTypeItem: DetailedAttributeType;\n dvf: DataValidationFunction[];\n matchAttributes: string[];\n};\n\nexport const getAttrTypeDetails = ({\n attrTypeItem,\n dvf = [],\n matchAttributes = []\n}: GetAttrTypeDetailsParams): AttrTypeDetails => {\n const {uri, required, isAttributeReference} = attrTypeItem;\n\n return {\n [AttrTypeDetailsType.INCLUDED_IN_MATCHING]: matchAttributes.includes(uri),\n [AttrTypeDetailsType.CONTAIN_VF]: isContainActiveVF(dvf, uri),\n [AttrTypeDetailsType.REQUIRED]: !!required,\n [AttrTypeDetailsType.REFERENCE]: isAttributeReference,\n [AttrTypeDetailsType.RDM_LOOKUP]: isRDMLookupAttrType(attrTypeItem)\n };\n};\n\nexport const getDetailLabel = (attributeDetailType: string): string => {\n const detailLabels = {\n [AttrTypeDetailsType.INCLUDED_IN_MATCHING]: i18n.text('Included in match rule'),\n [AttrTypeDetailsType.CONTAIN_VF]: i18n.text('Has validation functions'),\n [AttrTypeDetailsType.REQUIRED]: i18n.text('Required'),\n [AttrTypeDetailsType.REFERENCE]: i18n.text('Reference attribute'),\n [AttrTypeDetailsType.RDM_LOOKUP]: i18n.text('RDM')\n };\n\n return detailLabels[attributeDetailType] || attributeDetailType;\n};\n\nconst buildItems = curry(\n (items: DetailedAttributeType[], parents = [], isAttributeReference = false, level = 0): AttributeItemType[] =>\n pipe(\n chain((item: DetailedAttributeType) => {\n const childrenItems = item.children\n ? buildItems(\n item.children,\n parents.concat({name: item.name, label: item.label}),\n isAttributeReference || isReference(item),\n level + 1\n )\n : [];\n\n return [\n {\n attributeItem: {\n ...item,\n fieldName: attributeUriToSearchUri(item.uri, parents),\n isAttributeReference: isReference(item) || isAttributeReference\n },\n level\n },\n ...childrenItems\n ];\n })\n )(items)\n);\n\ntype CollectAttributeItemsFn = (\n filterText: string\n) => (metadata: Metadata, entityType: TEntityType) => AttributeItemType[];\n\nexport const collectFilteredAttributeItems: CollectAttributeItemsFn = (filterText: string) =>\n pipe(getAttributeTypesTree, filterAttributesTypesByName(filterText), buildItems);\n\nexport const checkIsDataQualitativeForSummary = (data: DQChartsData) => data?.fillRate?.[FillRateState.MISSING] === 0;\n\nexport const checkIsDataQualitativeForAttributeList = (data: ChartData[]) =>\n data?.find(propEq('group', FillRateState.MISSING))?.value === 0;\n\nexport const isReferenceChild = prop('isAttributeReference');\n","export enum EmptyStateVariants {\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large'\n}\n","import React from 'react';\nimport {DQDataLevel} from '@reltio/mdm-sdk';\n\nexport const DataLevelContext = React.createContext<DQDataLevel>(null);\n\nDataLevelContext.displayName = 'DataLevelContext';\n","import React from 'react';\n\nimport {TimeRange} from '../../types/TimeRange';\n\nexport const TimeRangeContext = React.createContext<TimeRange>(null);\n\nTimeRangeContext.displayName = 'TimeRangeContext';\n","import moment from 'moment';\nimport {__, defaultTo, find, map, pipe, prop, propEq, propOr, sortBy} from 'ramda';\n\nimport {TimeSeriesData, TimeSeriesDataValues} from '@reltio/mdm-sdk';\n\nimport {LineChartData} from '../types/LineChartData';\n\nimport i18n from 'ui-i18n';\n\nimport {TimeRange} from '../types/TimeRange';\nimport {DQDashboardView} from '../types/DQDashboardView';\n\nexport const getTimeRangeOptions = () => [\n {\n label: i18n.text('Today'),\n value: TimeRange.TODAY\n },\n {\n label: i18n.text('Last 7 days'),\n value: TimeRange.LAST_7_DAYS\n },\n {\n label: i18n.text('Last 30 days'),\n value: TimeRange.LAST_30_DAYS\n }\n];\n\nexport const getLabelByTimeRange = (timeRange: TimeRange): string =>\n pipe(getTimeRangeOptions, find(propEq('value', timeRange)), propOr('', 'label'))();\n\nexport const getTimeSeriesData = <T>(\n getData: (chartsData: TimeSeriesDataValues) => T\n): ((chartsData: TimeSeriesData[]) => LineChartData[]) =>\n pipe(\n defaultTo([]),\n map(({time, values}) => ({\n group: time?._max_date,\n label: i18n.date(time?._max_date, 'DD/MM/YY'),\n ...getData(values)\n })),\n sortBy(prop('group'))\n );\n\nexport const getDaysByTimeRange = propOr(1, __, {\n [TimeRange.TODAY]: 1,\n [TimeRange.LAST_7_DAYS]: 7,\n [TimeRange.LAST_30_DAYS]: 30\n});\n\nexport const getTimeRangeDates = (timeRange: TimeRange): {startDate: string; endDate: string} => {\n const days = getDaysByTimeRange(timeRange);\n const today = new Date();\n const endDate = moment.utc(today).format('YYYY-MM-DD');\n\n const startDay = today.setDate(today.getDate() - days);\n const startDate = moment.utc(startDay).format('YYYY-MM-DD');\n return {startDate, endDate};\n};\n\nexport const checkIsTimeSeries = (config: DQDashboardView) => config?.options?.timeSeries;\n\nexport const isTimeSeriesHasData = (key: string, data: LineChartData[]): boolean => data.some(prop(key));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n label: {\n whiteSpace: 'nowrap',\n paddingRight: '9px'\n },\n infoDataLabel: {\n fontWeight: 700\n },\n chartDataLabel: {\n color: 'rgba(255, 255, 255, 0.75)'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n label?: React.ReactNode;\n value?: React.ReactNode;\n};\n\nconst InfoDataRenderer = ({label, value}: Props) => {\n const styles = useStyles();\n\n return (\n <>\n {label && <span className={classnames(styles.label, styles.infoDataLabel)}>{label}</span>}\n {value}\n </>\n );\n};\n\nexport default InfoDataRenderer;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n label?: React.ReactNode;\n value?: React.ReactNode;\n};\n\nconst ChartDataRenderer = ({label, value}: Props) => {\n const styles = useStyles();\n\n return (\n <>\n {label && <span className={classnames(styles.label, styles.chartDataLabel)}>{label}</span>}\n {value}\n </>\n );\n};\n\nexport default ChartDataRenderer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n tooltipWrapper: {\n fontSize: '10px',\n fontWeight: 400,\n lineHeight: '12px',\n color: '#FFFFFF'\n },\n title: {\n padding: '2px 0'\n },\n row: {\n padding: '2px 0'\n }\n});\n","import React from 'react';\nimport ChartDataRenderer from './data-renderers/ChartDataRenderer';\nimport {useStyles} from './styles';\n\ntype Data = {\n label?: React.ReactNode;\n value?: React.ReactNode;\n};\n\ntype Props = {\n data: Data[];\n title?: string;\n DataRenderer?: React.ComponentType<Data>;\n};\n\nconst ChartDataTooltip = ({data, title, DataRenderer = ChartDataRenderer}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.tooltipWrapper}>\n {title && <div className={styles.title}>{title}</div>}\n {data.map((data, index) => (\n <div key={index} className={styles.row}>\n <DataRenderer {...data} />\n </div>\n ))}\n </div>\n );\n};\n\nexport default ChartDataTooltip;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n fillRateSquare: {\n height: '8px',\n width: '8px',\n display: 'inline-block',\n marginRight: '5px',\n verticalAlign: 'middle'\n }\n});\n","import React from 'react';\n\nimport i18n from 'ui-i18n';\nimport {ChartData} from '@reltio/components';\n\nimport {getPercentLabel} from '../../../services/charts';\n\nimport ChartDataTooltip from '../ChartDataTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n data: ChartData[];\n getColor: (group: string) => string;\n title?: string;\n};\n\nconst TooltipWithSquares = ({data, title, getColor}: Props) => {\n const styles = useStyles();\n\n const tooltipData = data.map(({label, percent, value, group}) => ({\n label: (\n <span>\n <div className={styles.fillRateSquare} style={{background: getColor(group)}}></div>\n {label}\n </span>\n ),\n value: `${i18n.number(value)} ${getPercentLabel(percent)}`\n }));\n\n return <ChartDataTooltip title={title} data={tooltipData} />;\n};\n\nexport default TooltipWithSquares;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n padding: '0px 16px'\n },\n title: {\n fontSize: '16px',\n marginRight: '5px',\n lineHeight: '24px'\n },\n infoIcon: {\n position: 'relative'\n }\n}));\n","import React from 'react';\nimport {BasicViewHeader, SmallIconButtonWithTooltip, HideOnShrink, VerticalDivider} from '@reltio/components';\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n title: string;\n infoTooltipTitle?: React.ReactNode;\n children?: React.ReactNode;\n};\n\nconst DQLayoutItemHeader = ({title, infoTooltipTitle, children}: Props) => {\n const hasInfoIcon = !!infoTooltipTitle;\n const hasChildren = !!children;\n const styles = useStyles(hasChildren);\n return (\n <BasicViewHeader\n title={title}\n className={styles.root}\n classes={{\n title: styles.title\n }}\n >\n {hasInfoIcon && (\n <SmallIconButtonWithTooltip\n icon={InfoIcon}\n size=\"XXS\"\n tooltipTitle={infoTooltipTitle}\n className={styles.infoIcon}\n />\n )}\n {hasChildren && (\n <HideOnShrink widthToHide={500}>\n {React.Children.map(\n children,\n (child) =>\n React.isValidElement(child) && (\n <>\n <VerticalDivider height={24} margin={16} />\n {child}\n </>\n )\n )}\n </HideOnShrink>\n )}\n </BasicViewHeader>\n );\n};\n\nexport default DQLayoutItemHeader;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n view: {\n flex: 1,\n width: '100%',\n height: '100%',\n overflow: 'hidden'\n }\n}));\n","import React, {useContext} from 'react';\nimport {BasicView} from '@reltio/components';\nimport {DQDashboardView} from '../../types/DQDashboardView';\nimport {TimeRange} from '../../types/TimeRange';\nimport {DataLevelContext} from '../../contexts/DataLevelContext';\nimport {TimeRangeContext} from '../../contexts/TimeRangeContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: DQDashboardView;\n children: React.ReactNode;\n};\n\nconst DQLayoutItemView = ({config, children}: Props) => {\n const styles = useStyles();\n const {type} = config;\n const dataLevel = useContext(DataLevelContext);\n const timeRange = useContext(TimeRangeContext);\n const dataReltioId =\n timeRange === TimeRange.TODAY\n ? `reltio-dq-dashboard-chart-${type}-${dataLevel}`\n : `reltio-dq-dashboard-chart-time-series-${type}-${dataLevel}`;\n\n return (\n <BasicView className={styles.view} data-reltio-id={dataReltioId}>\n {children}\n </BasicView>\n );\n};\n\nexport default DQLayoutItemView;\n","import {always, converge, curry, identity, pipe, propOr, map, reduce, sortBy, toPairs, when} from 'ramda';\nimport {\n getChartItemColor,\n FillRateState,\n DQChartsData,\n FillRateData,\n FilterOptions,\n TimeSeriesData\n} from '@reltio/mdm-sdk';\nimport {ChartData} from '@reltio/components';\nimport {getSearchState, localizeChartValues, isEmptyData} from './charts';\nimport i18n from 'ui-i18n';\n\nconst FillRateChartColors = {\n [FillRateState.MISSING]: '#CE5C00',\n [FillRateState.EXISTS]: '#C4CE00'\n};\n\nexport const getFillRateColorByState = (state: FillRateState) => FillRateChartColors[state] || getChartItemColor(state);\n\nexport const getFillRateColors: (chartsData: ChartData[]) => string[] = map(({group}) =>\n getFillRateColorByState(group)\n);\n\nexport const getLabelFromState = (state: FillRateState) => {\n const FillRateStateLabels = {\n [FillRateState.MISSING]: i18n.text('Missing'),\n [FillRateState.EXISTS]: i18n.text('Exists')\n };\n\n return FillRateStateLabels[state] || state;\n};\n\nconst getFillRateStateIndexFromData = (data: ChartData) =>\n Object.values(FillRateState).indexOf(data.group as FillRateState);\n\ntype FormatFillRateDataFn = (fillRateData: FillRateData) => ChartData[];\nexport const formatFillRateData = pipe(\n Object.entries,\n map(([state, value]) => ({label: getLabelFromState(state), group: state, value})),\n sortBy(getFillRateStateIndexFromData),\n localizeChartValues\n) as FormatFillRateDataFn;\n\ntype FillRateStatistic = {\n statistic: Record<string, DQChartsData>;\n};\nexport const formatFillRatesData: (fillRates: FillRateStatistic) => Record<string, ChartData[]> = pipe(\n propOr({}, 'statistic'),\n toPairs,\n reduce((result, [key, value]) => {\n if (value?.fillRate) result[key] = formatFillRateData(value.fillRate);\n return result;\n }, {})\n);\n\ntype GetFillRateDataFn = (chartsData: DQChartsData | TimeSeriesData) => FillRateData;\nexport const getFillRateData: GetFillRateDataFn = propOr({}, 'fillRate');\n\ntype GetFillRateChartDataFn = (\n chartsData: DQChartsData\n) => {\n chartData: ChartData[];\n colors: string[];\n};\nexport const getFillRateChartData: GetFillRateChartDataFn = pipe(\n getFillRateData,\n formatFillRateData,\n when(isEmptyData, always([])),\n converge(\n (chartData: ChartData, colors: string[]) => ({\n chartData,\n colors\n }),\n [identity, getFillRateColors]\n )\n);\n\nconst getFillRateFilter = curry(({fieldName}: {fieldName: string}, state: FillRateState) => [\n {\n filter: state === FillRateState.EXISTS ? FilterOptions.EXISTS : FilterOptions.MISSING_VALUE,\n fieldName\n }\n]);\nexport const getFillRateSearchState = getSearchState(getFillRateFilter);\n","import {useContext, useMemo} from 'react';\nimport {DQChartsData} from '@reltio/mdm-sdk';\nimport {RequestStates} from '@reltio/components';\nimport {ChartsDataContext} from '../contexts/ChartsDataContext';\n\nexport type ChartsDataWithState = {\n data: DQChartsData;\n state: RequestStates;\n reload: () => void;\n};\nexport const useChartData = <T>(getChartData: (chartsData: DQChartsData) => T) => {\n const {data: chartsData, state, reload} = useContext<ChartsDataWithState>(ChartsDataContext);\n const data = useMemo(() => getChartData(chartsData), [chartsData, getChartData]);\n\n const result = useMemo(() => ({data, state, reload}), [data, state, reload]);\n return result;\n};\n","import {AdditionalFilterOptionsValues, FilterOptions, SearchState} from '@reltio/mdm-sdk';\nimport {getAdvancedSearchFilter} from './advancedFilters';\n\nexport const RawFilterFields = {\n DAY_OF_WEEK: 'day_of_week',\n DAY_OF_MONTH: 'day_of_month',\n MONTH: 'month',\n LENGTH: 'length',\n CROSSWALK_SOURCES: 'crosswalk_sources',\n PATTERN: 'pattern'\n};\n\ntype GetRawFilterSearchState = {\n keyword: string;\n entityTypeUri: string;\n};\nconst getRawFilterSearchState = ({keyword, entityTypeUri}: GetRawFilterSearchState): SearchState => ({\n keyword: {\n value: keyword,\n isRawFilter: true\n },\n advanced: [getAdvancedSearchFilter(entityTypeUri)],\n searchOptions: {\n searchByOv: false,\n ovOnly: false\n },\n version: '2.0'\n});\ntype GetRangeRawFilterSearchState = {\n fieldName: string;\n startRange: string;\n endRange: string;\n entityTypeUri: string;\n};\n\nexport const getExcludedEntityTypesRawFilter = (entityTypesUris: string[] = []) =>\n entityTypesUris.length > 0\n ? `(${AdditionalFilterOptionsValues.NOT_LIST_EQUALS}(type, ${entityTypesUris.join(',')}))`\n : '';\n\nexport const getRangeRawFilterSearchState = ({\n fieldName,\n startRange,\n endRange,\n entityTypeUri\n}: GetRangeRawFilterSearchState): SearchState =>\n getRawFilterSearchState({\n keyword: `${FilterOptions.IN_RANGE}(${fieldName}, ${startRange}, ${endRange})`,\n entityTypeUri\n });\n\ntype GetEqualsRawFilterSearchState = {\n fieldName: string;\n value: string;\n entityTypeUri: string;\n};\nexport const getEqualsRawFilterSearchState = ({\n fieldName,\n value,\n entityTypeUri\n}: GetEqualsRawFilterSearchState): SearchState =>\n getRawFilterSearchState({\n keyword: `${FilterOptions.EQUALS}(${fieldName}, ${value})`,\n entityTypeUri\n });\n\ntype GetGtRawFilterSearchState = {\n fieldName: string;\n value: string;\n entityTypeUri: string;\n};\n\nexport const getGtRawFilterSearchState = ({fieldName, value, entityTypeUri}: GetGtRawFilterSearchState): SearchState =>\n getRawFilterSearchState({\n keyword: `${FilterOptions.GT}(${fieldName},${value})`,\n entityTypeUri\n });\n","import {useContext} from 'react';\nimport {assoc, curry, pipe} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {getDescendantEntityTypes, Metadata, SearchState} from '@reltio/mdm-sdk';\nimport {DetailedAttributeTypeContext} from '../contexts/DetailedAttributeTypeContext';\nimport {EntityTypeContext} from '../contexts/EntityTypeContext';\nimport {getExcludedEntityTypesRawFilter} from '../services/rawFilters';\nimport type {DetailedAttributeType} from '../types/DetailedAttributeType';\nimport type {GetSearchStateProps} from '../types/GetSearchStateProps';\n\nconst excludeDescendantEntityTypes = curry((metadata: Metadata, entityTypeUri: string, searchState: SearchState) => {\n const descendantEntityTypes: string[] = getDescendantEntityTypes(metadata, entityTypeUri);\n const entityTypesFilter = getExcludedEntityTypesRawFilter(descendantEntityTypes);\n const currentRawFilter = searchState?.keyword?.value;\n if (entityTypesFilter) {\n const newRawFilter = currentRawFilter ? `(${currentRawFilter}) and ${entityTypesFilter}` : entityTypesFilter;\n return assoc(\n 'keyword',\n {\n value: newRawFilter,\n isRawFilter: true\n },\n searchState\n );\n } else return searchState;\n});\n\ntype GetSearchStateFn = (props: GetSearchStateProps) => (group?: string) => SearchState;\nexport const useSearchRedirect = (getSearchState: GetSearchStateFn): ((group?: string) => void) => {\n const dispatch = useDispatch();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const detailedAttributeType: DetailedAttributeType = useContext(DetailedAttributeTypeContext);\n const entityType = useContext(EntityTypeContext);\n\n return pipe(\n getSearchState({detailedAttributeType, entityTypeUri: entityType.uri}),\n excludeDescendantEntityTypes(metadata, entityType.uri),\n ui.actions.openSearch,\n dispatch\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: ({height}: {height: number}) => ({\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n color: 'rgba(0, 0, 0, 0.54)',\n margin: '0 auto',\n paddingBottom: height > 239 ? '30px' : 0,\n boxSizing: 'border-box'\n }),\n small: {\n '& $icon': {\n maxHeight: '88px'\n },\n '& $message': {\n fontSize: '12px'\n },\n '& $title': {\n fontSize: '13px',\n fontWeight: 400,\n marginBottom: 0\n },\n '& $refreshButton': {\n marginTop: '2px',\n padding: 0\n }\n },\n medium: {\n '& $icon': {\n maxHeight: '190px',\n marginBottom: '24px'\n }\n },\n large: {\n '& $icon': {\n height: '256px',\n width: '256px',\n marginBottom: '24px'\n }\n },\n icon: ({height}: {height: number}) => ({\n paddingTop: 0,\n marginBottom: height > 170 ? '16px' : '4px'\n }),\n message: {\n padding: '0 24px',\n fontSize: '14px',\n textAlign: 'center',\n whiteSpace: 'pre-wrap'\n },\n title: {\n padding: '0 24px',\n fontSize: '20px',\n textAlign: 'center',\n color: 'rgba(0,0,0,0.87)',\n fontWeight: 500,\n marginBottom: '8px'\n },\n refreshButton: {\n color: theme.palette.primary.main,\n marginTop: '12px',\n padding: '6px 8px'\n },\n refreshIcon: {\n width: '24px',\n height: '24px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport ReplayIcon from '@material-ui/icons/Replay';\nimport {ErrorData} from '../../types/ErrorData';\nimport {EMPTY_STATE_ICONS} from '@reltio/components';\nimport {EmptyStateVariants} from '../../types/EmptyStateVariants';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n errorData?: ErrorData;\n onRefresh?: () => void;\n height?: number;\n variant?: EmptyStateVariants;\n};\n\nconst defaultIcon = EMPTY_STATE_ICONS.ERROR;\n\nconst DQDashboardError = ({onRefresh, height, errorData = {}, variant = EmptyStateVariants.SMALL}: Props) => {\n const {Icon = defaultIcon, message, title} = errorData;\n const styles = useStyles({height});\n return (\n <div className={classnames(styles.container, styles[`${variant}`])}>\n <Icon className={styles.icon} />\n {title && <Typography className={styles.title}>{title}</Typography>}\n {message && <Typography className={styles.message}>{message}</Typography>}\n {!!onRefresh && (\n <Button\n className={styles.refreshButton}\n startIcon={<ReplayIcon color=\"primary\" className={styles.refreshIcon} />}\n onClick={onRefresh}\n data-reltio-id=\"reltio-dq-dashboard-chart-refresh-button\"\n >\n <Typography variant=\"button\">{i18n.text('Refresh')}</Typography>\n </Button>\n )}\n </div>\n );\n};\n\nexport default DQDashboardError;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: ({height}: {height: number}) => ({\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n color: 'rgba(0, 0, 0, 0.54)',\n margin: '0 auto',\n paddingBottom: height > 239 ? '30px' : 0,\n boxSizing: 'border-box'\n }),\n small: {\n '& $icon': {\n maxHeight: '88px'\n },\n '& $message': {\n fontSize: '12px'\n },\n '& $title': {\n fontSize: '13px',\n fontWeight: 400,\n marginBottom: 0\n }\n },\n medium: {\n '& $icon': {\n maxHeight: '190px',\n marginBottom: '24px'\n }\n },\n large: {\n '& $icon': {\n maxHeight: '256px',\n marginBottom: '24px'\n }\n },\n icon: ({height}: {height: number}) => ({\n paddingTop: 0,\n marginBottom: height > 170 ? '16px' : '4px'\n }),\n message: {\n padding: '0 24px',\n fontSize: '14px',\n textAlign: 'center',\n whiteSpace: 'pre-wrap'\n },\n title: {\n padding: '0 24px',\n fontSize: '20px',\n textAlign: 'center',\n color: 'rgba(0,0,0,0.87)',\n fontWeight: 500,\n marginBottom: '8px',\n whiteSpace: 'pre-wrap'\n }\n});\n","import React from 'react';\nimport {Typography as Typography} from '@material-ui/core';\nimport {ErrorData} from '../../types/ErrorData';\nimport {EMPTY_STATE_ICONS} from '@reltio/components';\nimport {EmptyStateVariants} from '../../types/EmptyStateVariants';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n data?: ErrorData;\n height?: number;\n variant?: EmptyStateVariants;\n};\n\nconst defaultIcon = EMPTY_STATE_ICONS.NO_DATA;\n\nconst DQDashboardNoData = ({height, data = {}, variant = EmptyStateVariants.SMALL}: Props) => {\n const {Icon = defaultIcon, message, title} = data;\n const styles = useStyles({height});\n return (\n <div className={classnames(styles.container, styles[`${variant}`])}>\n <Icon className={styles.icon} />\n {title && <Typography className={styles.title}>{title}</Typography>}\n {message && <Typography className={styles.message}>{message}</Typography>}\n </div>\n );\n};\n\nexport default DQDashboardNoData;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n viewContent: {\n height: '100%',\n overflow: 'hidden',\n position: 'relative',\n padding: '0 16px 10px'\n }\n}));\n","import classnames from 'classnames';\nimport React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport i18n from 'ui-i18n';\nimport {BasicViewContent, ErrorBoundary, EMPTY_STATE_ICONS, RequestStates} from '@reltio/components';\nimport {DashboardLinearLoader} from '@reltio/dashboard';\nimport DQDashboardError from '../DQDashboardError/DQDashboardError';\nimport DQDashboardNoData from '../DQDashboardNoData/DQDashboardNoData';\nimport {EmptyStateVariants} from '../../types/EmptyStateVariants';\nimport {useStyles} from './styles';\n\ntype ChildrenProps<T> = {data: T[]; width: number; height: number};\n\ntype Props<T> = {\n loadingState: RequestStates;\n children: (props: ChildrenProps<T>) => React.ReactNode;\n onRefresh: () => void;\n data: T[];\n className?: string;\n errorData?: {\n icon?: JSX.Element;\n message?: React.ReactNode;\n title?: React.ReactNode;\n };\n};\n\nconst DQLayoutItemContent = <T extends unknown>({loadingState, onRefresh, children, data, className}: Props<T>) => {\n const styles = useStyles();\n const renderContent = ({width, height}: {width: number; height: number}) => {\n switch (loadingState) {\n case RequestStates.LOADED:\n if (!data || data.length === 0) {\n return (\n <DQDashboardNoData\n height={height}\n data={{\n Icon: EMPTY_STATE_ICONS.NO_DATA,\n message: i18n.text(\n 'Go ahead and load some data. We’ll put it on the scales and let you know here if it measures up.'\n ),\n title: i18n.text('Give us something to go on!')\n }}\n variant={EmptyStateVariants.SMALL}\n />\n );\n }\n return (\n <ErrorBoundary\n error={\n <DQDashboardError\n errorData={{message: i18n.text('Something went wrong')}}\n height={height}\n variant={EmptyStateVariants.SMALL}\n />\n }\n >\n {children({data, width, height})}\n </ErrorBoundary>\n );\n case RequestStates.LOADING:\n return <DashboardLinearLoader />;\n case RequestStates.ERROR:\n return (\n <DQDashboardError\n errorData={{\n Icon: EMPTY_STATE_ICONS.ERROR,\n message: i18n.text('No need to fret - just refresh and it will work itself out.'),\n title: i18n.text('Oops! We ran into a problem.')\n }}\n height={height}\n onRefresh={onRefresh}\n variant={EmptyStateVariants.SMALL}\n />\n );\n default:\n return <div>Loading...</div>;\n }\n };\n\n return (\n <BasicViewContent className={classnames(styles.viewContent, className)}>\n <ReactResizeDetector refreshMode=\"debounce\" refreshRate={100} handleWidth handleHeight>\n {renderContent}\n </ReactResizeDetector>\n </BasicViewContent>\n );\n};\n\nexport default DQLayoutItemContent;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n legendLabel: {\n fontSize: '13px',\n lineHeight: '18px',\n color: 'rgba(0, 0, 0, 0.54)',\n paddingRight: '8px'\n },\n legendValue: {\n fontSize: '13px',\n lineHeight: '18px',\n color: 'rgba(0, 0, 0, 0.87)'\n },\n legend: {\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n margin: 'auto',\n flexWrap: 'wrap',\n flexDirection: 'column',\n marginBottom: 2\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n height: 19\n },\n itemColor: {\n width: 12,\n height: 12,\n marginRight: 9,\n flexShrink: 0\n }\n});\n","import React from 'react';\nimport {LegendProps} from 'recharts';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst CustomLegend = ({payload}: LegendProps) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.legend)}>\n {payload.map((item) => (\n <div key={item.id} className={styles.item}>\n <div style={{background: item.color}} className={styles.itemColor} />\n {item.value}\n </div>\n ))}\n </div>\n );\n};\n\nexport default CustomLegend;\n","import React from 'react';\nimport {Legend, LegendProps} from 'recharts';\n\nimport {ChartData, withPercents} from '@reltio/components';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\n\nimport {getPercentLabel} from '../../services/charts';\n\nimport CustomLegend from './CustomLegend';\n\nimport {useStyles} from './styles';\n\ntype StackedHorizontalBarData = ChartData & {dataReltioId?: string};\n\ntype Props = LegendProps & {\n data: StackedHorizontalBarData[];\n colors: string[];\n};\n\nconst ChartLegends = ({data, colors, ...legendProps}: Props) => {\n const styles = useStyles();\n return (\n <Legend\n layout=\"vertical\"\n align=\"left\"\n verticalAlign=\"bottom\"\n wrapperStyle={{\n display: 'flex',\n overflowY: 'auto',\n maxHeight: '100%',\n maxWidth: '100%'\n }}\n content={<CustomLegend />}\n payload={(data || []).map(({group, label, value, percent}, index) => ({\n id: group,\n type: 'square',\n color: colors[index],\n value: (\n <>\n <span className={styles.legendLabel}>{label}</span>\n <span className={styles.legendValue}>\n {`${formatNumberAsMetric(value, 999)} ${getPercentLabel(percent)}`}\n </span>\n </>\n )\n }))}\n {...legendProps}\n />\n );\n};\n\nexport default withPercents(ChartLegends);\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst BarAxis = {\n content: '\"\"',\n position: 'absolute',\n background: 'rgba(0, 0, 0, 0.38)',\n width: '1px',\n height: '4px',\n bottom: '-4px',\n left: 0\n};\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%'\n },\n stackedBar: {\n width: '100%',\n display: 'flex',\n flexWrap: 'nowrap',\n marginTop: '13px',\n position: 'relative',\n '&:before': BarAxis,\n '&:after': {\n ...BarAxis,\n right: 0,\n left: 'initial'\n }\n },\n bar: {\n height: '24px',\n flexGrow: 1,\n position: 'relative',\n width: '50%',\n transition: 'width 0.7s',\n '&:hover': {\n '&:after': {\n content: '\"\"',\n background: 'rgba(0, 0, 0, 0.1)'\n }\n },\n '&:after': {\n position: 'absolute',\n top: '-3px',\n bottom: '-4px',\n left: '-3px',\n right: '-3px',\n transition: 'background 0.3s',\n zIndex: 1,\n pointerEvents: 'none'\n }\n },\n inactivePart: {\n background: '#EFEFEF'\n },\n tooltipTitle: {\n fontSize: '11px'\n },\n tooltipFillRate: {\n marginTop: '4px'\n },\n tooltip: {\n background: '#fff',\n filter:\n 'drop-shadow(0px 4px 5px rgba(0, 0, 0, 0.14)) drop-shadow(0px 1px 10px rgba(0, 0, 0, 0.12)) drop-shadow(0px 2px 4px rgba(0, 0, 0, 0.2))',\n padding: '5px 8px'\n },\n legendWrapper: {\n position: 'relative',\n flexGrow: 1\n },\n legendLabel: {\n fontSize: '13px',\n lineHeight: '18px',\n color: 'rgba(0, 0, 0, 0.54)',\n paddingRight: '8px'\n },\n legendValue: {\n fontSize: '13px',\n lineHeight: '18px',\n color: 'rgba(0, 0, 0, 0.87)'\n },\n clickable: {\n cursor: 'pointer'\n },\n rangeWrapper: {\n display: 'flex',\n justifyContent: 'space-between',\n marginTop: '4px'\n },\n rangeValue: {\n color: 'rgba(0, 0, 0, 0.54)',\n fontSize: '12px'\n }\n});\n","import React, {forwardRef} from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst Bar = forwardRef(\n ({className, ...props}: React.HTMLAttributes<HTMLDivElement>, ref: React.RefObject<HTMLDivElement>) => {\n const styles = useStyles();\n return <div className={classnames(styles.bar, className)} {...props} ref={ref} />;\n }\n);\nBar.displayName = 'Bar';\n\nexport default Bar;\n","import {pluck, sum, pipe} from 'ramda';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport i18n from 'ui-i18n';\nimport {ChartData, withPercents, withTooltip} from '@reltio/components';\n\nimport {getBarWidthStyle, getPercentLabel} from '../../services/charts';\n\nimport ChartDataTooltip from '../ChartDataTooltip/ChartDataTooltip';\nimport ChartLegends from '../ChartLegends/ChartLegends';\nimport Bar from './Bar';\n\nimport {useStyles} from './styles';\n\nconst BarWithTooltip = withTooltip(Bar);\n\nconst getTooltipData = ({label, value, percent}: ChartData) => [\n {\n label,\n value: `${i18n.number(value)} ${getPercentLabel(percent)}`\n }\n];\n\ntype StackedHorizontalBarData = ChartData & {dataReltioId?: string};\n\ntype Props = {\n data: StackedHorizontalBarData[];\n colors: string[];\n onItemClick?: (group: string) => void;\n classes?: Partial<Record<'bar' | 'stackedBar', string>>;\n};\n\nconst StackedHorizontalBarChart = ({data, colors, classes = {}, onItemClick}: Props) => {\n const styles = useStyles();\n const onBarClick = onItemClick && ((group: string) => onItemClick(group));\n const clickable = !!onItemClick;\n const maxValue = pipe(pluck('value'), sum)(data);\n return (\n <div className={styles.root}>\n <div className={classnames(styles.stackedBar, classes.stackedBar)}>\n {data.map((chartData: StackedHorizontalBarData, index: number) => (\n <BarWithTooltip\n className={classnames(classes.bar, clickable && styles.clickable)}\n key={chartData.label}\n tooltipTitle={<ChartDataTooltip data={getTooltipData(chartData)} />}\n style={{...getBarWidthStyle(chartData), background: colors[index]}}\n onClick={() => onBarClick && onBarClick(chartData.group)}\n data-reltio-id={chartData.dataReltioId}\n />\n ))}\n </div>\n <div className={styles.rangeWrapper}>\n <span className={styles.rangeValue}>0</span>\n <span className={styles.rangeValue}>{i18n.number(maxValue)}</span>\n </div>\n <div className={styles.legendWrapper}>\n <ChartLegends data={data} colors={colors} />\n </div>\n </div>\n );\n};\n\nexport default withPercents(StackedHorizontalBarChart);\n","import React from 'react';\n\nimport {getFillRateChartData, getFillRateSearchState} from '../../../services/fillRate';\nimport {useChartData} from '../../../hooks/useChartData';\nimport {useSearchRedirect} from '../../../hooks/useSearchRedirect';\n\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport StackedHorizontalBarChart from '../../../components/StackedHorizontalBarChart/StackedHorizontalBarChart';\n\nconst FillRateChart = () => {\n const {data, state, reload} = useChartData(getFillRateChartData);\n const {chartData, colors} = data;\n const searchProfiles = useSearchRedirect(getFillRateSearchState);\n\n return (\n <DQLayoutItemContent data={chartData} loadingState={state} onRefresh={reload}>\n {({data}) => <StackedHorizontalBarChart data={data} colors={colors} onItemClick={searchProfiles} />}\n </DQLayoutItemContent>\n );\n};\n\nexport default FillRateChart;\n","import {useCallback, useEffect, useMemo, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {pathOr, pipe} from 'ramda';\n\nimport {RequestStates, useSafePromise} from '@reltio/components';\nimport {DQDataLevel, TimeSeriesMetric, getMlDqData, TimeSeriesData} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport {TimeRange} from '../types/TimeRange';\nimport {getTimeRangeDates} from '../services/mlDq';\nimport {useRefreshAction} from '../contexts/ReloadFacetContext';\n\ntype useMlDqDataRequestProps = {\n entityTypeUri: string;\n attributeFieldName: string;\n timeRange?: TimeRange;\n dataLevel?: DQDataLevel;\n metrics?: TimeSeriesMetric[];\n};\n\nexport const useMlDqDataRequest = ({\n entityTypeUri,\n attributeFieldName,\n timeRange = TimeRange.TODAY,\n dataLevel = DQDataLevel.ATTRIBUTE_TYPE,\n metrics\n}: useMlDqDataRequestProps) => {\n const [requestState, setRequestState] = useState<RequestStates>(RequestStates.INIT);\n const [timeSeriesData, setTimeSeriesData] = useState<TimeSeriesData[]>(null);\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n const mlDqPath: string = useSelector(mdmModule.selectors.getMlDqPath);\n const safePromise = useSafePromise();\n\n const onError = (error) => {\n console.error(error); // eslint-disable-line\n setRequestState(RequestStates.ERROR);\n setTimeSeriesData(null);\n };\n\n const onRequestFinished = (data: TimeSeriesData[]) => {\n setTimeSeriesData(data);\n setRequestState(RequestStates.LOADED);\n };\n\n const loadChartsData = useCallback(() => {\n if (!entityTypeUri) return;\n setRequestState(RequestStates.LOADING);\n setTimeSeriesData(null);\n\n const {startDate, endDate} = getTimeRangeDates(timeRange);\n safePromise(\n getMlDqData({\n mlDqPath,\n tenant,\n entityTypeUri,\n attribute: attributeFieldName,\n dataLevel,\n metrics,\n startDate,\n endDate\n })\n )\n .then(pipe(pathOr({}, ['data', attributeFieldName, 'timeSeries']), onRequestFinished))\n .catch(onError);\n }, [attributeFieldName, entityTypeUri, timeRange, dataLevel, metrics, tenant]);\n\n const refreshAction = useRefreshAction({\n action: loadChartsData,\n dataLevel\n });\n\n useEffect(() => {\n refreshAction();\n }, [refreshAction]);\n\n const chartsDataResult = useMemo(() => ({data: timeSeriesData, state: requestState, reload: refreshAction}), [\n timeSeriesData,\n requestState,\n refreshAction\n ]);\n\n return chartsDataResult;\n};\n","import {\n always,\n applySpec,\n ascend,\n assoc,\n cond,\n curry,\n filter,\n head,\n identity,\n map,\n pathOr,\n pipe,\n prop,\n propOr,\n split,\n converge,\n concat,\n propEq,\n omit,\n sort,\n descend\n} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {ChartData} from '@reltio/components';\nimport {\n DQChartsData,\n ConsolidationRateData,\n FilterOptions,\n isDateType,\n formatNumberAsMetric,\n Metadata,\n formatDataTypeValue\n} from '@reltio/mdm-sdk';\nimport {InfoPanelData} from '../types/InfoPanelData';\nimport {getSearchState, localizeChartValues} from './charts';\nimport {isFloatingType} from './attributes';\nimport {getEqualsRawFilterSearchState, getRangeRawFilterSearchState, RawFilterFields} from './rawFilters';\nimport {GetSearchStateProps} from '../types/GetSearchStateProps';\nimport {enrichChartDataWithSourceLabel} from '../services/charts';\n\nenum DAYS_OF_WEEK {\n sun,\n mon,\n tue,\n wed,\n thu,\n fri,\n sat\n}\n\nenum MONTHS {\n jan,\n feb,\n mar,\n apr,\n may,\n jun,\n jul,\n aug,\n sep,\n oct,\n nov,\n dec\n}\n\ntype GetFormattedDataForBarChartFn = (chartType: string) => (chartsData: DQChartsData) => ChartData[];\nconst getFormattedDataForBarChart: GetFormattedDataForBarChartFn = (chartType: string) =>\n pipe(\n pathOr({}, [chartType, 'data']),\n Object.entries,\n map(([item, value]) => ({label: item, group: item, value})),\n localizeChartValues\n );\n\nconst RELTIO_PROFILES = 'Reltio profiles';\nconst SOURCE_PROFILES = 'Source profiles';\n\nexport const getConsolidationRateChartData = pipe(\n pathOr({}, ['consolidationRate']),\n converge(concat, [\n pipe(prop('totalCrosswalksBySource'), omit(['ReltioCleanser']), (data) => [\n {...data, label: SOURCE_PROFILES, group: SOURCE_PROFILES}\n ]),\n pipe(prop('totalEntities'), (value) => [\n assoc(RELTIO_PROFILES, value, {label: RELTIO_PROFILES, group: RELTIO_PROFILES})\n ])\n ])\n);\n\nexport const getConsolidationRateTableData = (metadata: Metadata) =>\n pipe(\n pathOr({}, ['consolidationRate']),\n (consolidationRate: ConsolidationRateData) => {\n return Object.keys(consolidationRate?.totalCrosswalksBySource || []).reduce((data, crosswalk) => {\n return crosswalk !== 'ReltioCleanser'\n ? data.concat({\n label: crosswalk,\n group: crosswalk,\n value: consolidationRate.totalCrosswalksBySource[crosswalk]\n })\n : data;\n }, []);\n },\n enrichChartDataWithSourceLabel(metadata),\n sort(descend(prop('value')))\n );\n\nenum InfoPanelProperties {\n AVERAGE = 'avg',\n MININMUN = 'min',\n MAXIMUM = 'max',\n MEDIAN = 'median',\n NUMBER_OF_SOURCES = 'numberOfSources',\n MIN_NUMBER_OF_PROFILES = 'minNumberOfProfiles',\n MAX_NUMBER_OF_PROFILES = 'maxNumberOfProfiles',\n AVG_NUMBER_OF_PROFILES = 'avgNumberOfProfiles'\n}\n\nconst getLabelForInfoPanel = (propName: string, chartType: string) => {\n const Properties = {\n lengthStatistics: {\n [InfoPanelProperties.MEDIAN]: i18n.text('Median'),\n [InfoPanelProperties.AVERAGE]: i18n.text('Average'),\n [InfoPanelProperties.MININMUN]: i18n.text('Minimum'),\n [InfoPanelProperties.MAXIMUM]: i18n.text('Maximum')\n },\n valueDistribution: {\n [InfoPanelProperties.MEDIAN]: i18n.text('Median'),\n [InfoPanelProperties.AVERAGE]: i18n.text('Average'),\n [InfoPanelProperties.MININMUN]: i18n.text('Minimum'),\n [InfoPanelProperties.MAXIMUM]: i18n.text('Maximum')\n },\n crosswalkAnalysis: {\n [InfoPanelProperties.NUMBER_OF_SOURCES]: i18n.text('No. of source systems'),\n [InfoPanelProperties.AVG_NUMBER_OF_PROFILES]: i18n.text('Avg no. of profiles'),\n [InfoPanelProperties.MIN_NUMBER_OF_PROFILES]: i18n.text('Min no. of profiles'),\n [InfoPanelProperties.MAX_NUMBER_OF_PROFILES]: i18n.text('Max no. of profiles')\n }\n };\n\n return pathOr(null, [chartType, propName], Properties);\n};\n\ntype GetInfoPanelDataForBarChartFn = (chartType: string) => (chartsData: DQChartsData) => InfoPanelData[];\nconst getInfoPanelDataForBarChart: GetInfoPanelDataForBarChartFn = (chartType: string) =>\n pipe(\n propOr({}, chartType),\n Object.entries,\n map(([name, value]) => ({label: getLabelForInfoPanel(name, chartType), value})),\n filter(({label}) => label),\n localizeChartValues\n );\n\nconst getDataForBarChart = (chartType: string) => (chartsData: DQChartsData) => ({\n chartData: getFormattedDataForBarChart(chartType)(chartsData),\n infoPanelData: getInfoPanelDataForBarChart(chartType)(chartsData)\n});\n\nconst addIntervalBrackets = (label: string, attributeType: string, isLastItem: boolean) =>\n isFloatingType(attributeType) ? `[${label}${isLastItem ? ']' : ')'}` : label;\n\nconst getChartValueLabel = (value: number, attributeType: string) =>\n isDateType(attributeType)\n ? formatDataTypeValue({dataTypeDefinition: {type: attributeType}}, Number(value))\n : i18n.number(value);\n\nexport const convertDataWithInterval = curry(\n (\n attributeType: string,\n data: {chartData: ChartData[]; infoPanelData: InfoPanelData[]}\n ): {chartData: ChartData[]; infoPanelData: InfoPanelData[]} => {\n const getStartRangeFromChartData = pipe(prop('group'), split(' '), head, Number);\n const chartDataWithRange = data.chartData.sort(ascend(getStartRangeFromChartData)).map((dataItem, index) => {\n const [startRange, endRange = startRange] = dataItem.group.split(' ').map(Number);\n const isLastItem = index === data.chartData.length - 1;\n const label =\n startRange !== endRange\n ? addIntervalBrackets(\n `${getChartValueLabel(startRange, attributeType)} - ${getChartValueLabel(\n endRange,\n attributeType\n )}`,\n attributeType,\n isLastItem\n )\n : getChartValueLabel(startRange, attributeType);\n return {\n ...dataItem,\n label,\n group: [startRange, endRange, isLastItem ? 'last' : ''].toString()\n };\n });\n\n const infoPanelDataWithConvertedValue = data.infoPanelData.map((dataItem) => {\n const value = isDateType(attributeType)\n ? formatDataTypeValue({dataTypeDefinition: {type: attributeType}}, Number(dataItem.value))\n : formatNumberAsMetric(dataItem.value, 999);\n const localizedValue = isDateType(attributeType) ? value : dataItem.localizedValue;\n return {...dataItem, value, localizedValue};\n });\n return {infoPanelData: infoPanelDataWithConvertedValue, chartData: chartDataWithRange};\n }\n);\n\ntype GetChartDataWithInfoPanelData = (\n chartsData: DQChartsData\n) => {\n chartData: ChartData[];\n infoPanelData: InfoPanelData[];\n};\nexport const getLengthChartData: GetChartDataWithInfoPanelData = pipe(\n getDataForBarChart('lengthStatistics'),\n convertDataWithInterval('')\n);\n\nexport const getCrosswalkAnalysisData = (metadata: Metadata): GetChartDataWithInfoPanelData =>\n pipe(\n getDataForBarChart('crosswalkAnalysis'),\n applySpec({\n chartData: pipe(prop('chartData'), enrichChartDataWithSourceLabel(metadata)),\n infoPanelData: pipe(\n prop('infoPanelData'),\n map((dataItem: InfoPanelData) => assoc('value', formatNumberAsMetric(dataItem.value, 999), dataItem))\n )\n })\n );\n\nexport const getValueDistributionData = (attributeType: string): GetChartDataWithInfoPanelData =>\n pipe(getDataForBarChart('valueDistribution'), convertDataWithInterval(attributeType));\nexport const getMonthDistributionData = getDataForBarChart('monthDistribution');\nexport const getDayOfWeekDistributionData = getDataForBarChart('dayOfWeekDistribution');\nexport const getDayOfMonthDistributionData = getDataForBarChart('dayOfMonthDistribution');\n\nexport const getDayOfweekDistributionSearchState = curry(\n ({detailedAttributeType, entityTypeUri}: GetSearchStateProps, dayOfWeek: string) =>\n getEqualsRawFilterSearchState({\n fieldName: `${detailedAttributeType.fieldName}.${RawFilterFields.DAY_OF_WEEK}`,\n value: DAYS_OF_WEEK[dayOfWeek.toLowerCase()],\n entityTypeUri\n })\n);\n\nexport const getMonthDistributionSearchState = curry(\n ({detailedAttributeType, entityTypeUri}: GetSearchStateProps, month: string) =>\n getEqualsRawFilterSearchState({\n fieldName: `${detailedAttributeType.fieldName}.${RawFilterFields.MONTH}`,\n value: MONTHS[month.toLowerCase()],\n entityTypeUri\n })\n);\n\nexport const getDayOfMonthDistributionSearchState = curry(\n ({detailedAttributeType, entityTypeUri}: GetSearchStateProps, dayOfMonth: string) =>\n getEqualsRawFilterSearchState({\n fieldName: `${detailedAttributeType.fieldName}.${RawFilterFields.DAY_OF_MONTH}`,\n value: dayOfMonth,\n entityTypeUri\n })\n);\n\nexport const getLengthStatisticsSearchState = curry(\n ({detailedAttributeType, entityTypeUri}: GetSearchStateProps, group: string) => {\n const [startRange, endRange] = group.split(',');\n return startRange === endRange\n ? getEqualsRawFilterSearchState({\n fieldName: `${detailedAttributeType.fieldName}.${RawFilterFields.LENGTH}`,\n value: startRange,\n entityTypeUri\n })\n : getRangeRawFilterSearchState({\n fieldName: `${detailedAttributeType.fieldName}.${RawFilterFields.LENGTH}`,\n startRange,\n endRange,\n entityTypeUri\n });\n }\n);\n\nexport const getCrosswalkAnalysisSearchState = curry(\n ({detailedAttributeType, entityTypeUri}: GetSearchStateProps, source: string) =>\n getEqualsRawFilterSearchState({\n fieldName: `${detailedAttributeType.fieldName}.${RawFilterFields.CROSSWALK_SOURCES}`,\n value: source,\n entityTypeUri\n })\n);\n\nconst getValueDistributionFilterForDate = curry(({fieldName}: {fieldName: string}, group: string) => {\n const [timestampStart, timestampEnd] = group.split(',');\n return [\n {\n filter: FilterOptions.AFTER,\n values: [timestampStart],\n fieldName\n },\n {\n filter: FilterOptions.BEFORE,\n values: [timestampEnd],\n fieldName\n }\n ];\n});\n\nconst getValueDistributionFilterForNumber = curry(({fieldName}: {fieldName: string}, group: string) => {\n const [startRange, endRange] = group.split(',');\n return [\n startRange === endRange\n ? {\n filter: FilterOptions.EQUALS,\n values: [[startRange]],\n fieldName\n }\n : {\n filter: FilterOptions.IN_RANGE,\n values: [[startRange, endRange]],\n fieldName\n }\n ];\n});\n\nconst getValueDistributionFilterForFloat = curry(({fieldName}: {fieldName: string}, group: string) => {\n const [startRange, endRange, lastItem] = group.split(',');\n\n const isSingleValue = startRange === endRange;\n\n const filter: {\n filter: string;\n values: string[][] | string[];\n fieldName: string;\n }[] = isSingleValue\n ? [\n {\n filter: FilterOptions.EQUALS,\n values: [[startRange]],\n fieldName\n }\n ]\n : [\n {\n filter: FilterOptions.IN_RANGE,\n values: [[startRange, endRange]],\n fieldName\n }\n ];\n !lastItem &&\n !isSingleValue &&\n filter.push({\n filter: FilterOptions.NOT_EQUALS,\n values: [[endRange]],\n fieldName\n });\n return filter;\n});\n\nexport const getValueDistributionSearchState = cond([\n [isDateType, always(getSearchState(getValueDistributionFilterForDate))],\n [isFloatingType, always(getSearchState(getValueDistributionFilterForFloat))],\n [identity, always(getSearchState(getValueDistributionFilterForNumber))]\n]);\n\nconst getConsolidationRateFilter = curry((_, source: string) =>\n source === RELTIO_PROFILES\n ? []\n : [\n {\n filter: FilterOptions.EQUALS,\n fieldName: 'sourceSystems',\n values: [[source]]\n }\n ]\n);\n\nexport const getConsolidationRateSearchState = getSearchState(getConsolidationRateFilter);\n\nexport const getBarOpacity = curry((selectedBar: {group: string; key: string}, key: string) => {\n return !selectedBar || propEq('key', key, selectedBar) || key === RELTIO_PROFILES ? 1 : 0.12;\n});\n\nexport const tickFormatter = (value: number) => {\n return value > 999 ? i18n.number(value, '0,0.0a').toUpperCase() : value;\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {tooltip: Record<string, string | number>}) => ({\n tooltipWrapper: {\n ...theme.tooltip,\n padding: '4px 8px'\n }\n}));\n","import React, {useCallback, useState} from 'react';\nimport {\n CartesianGrid,\n Line,\n LineChart as LineChartWidget,\n Tooltip as ChartTooltip,\n XAxis,\n YAxis,\n TooltipProps,\n ReferenceLine,\n ReferenceArea\n} from 'recharts';\nimport {pluck, propEq} from 'ramda';\n\nimport {LineChartData} from '../../types/LineChartData';\n\nimport getLineChartSettings from './getLineChartSettings';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n data: LineChartData[];\n width: number;\n height: number;\n keys: string[];\n getTooltip?: (payload: TooltipProps) => React.ReactNode;\n getColor?: (key: string) => string;\n yAxisLabel?: string;\n};\n\nconst DEFAULT_LINE_COLOR = '#00439D';\ntype MouseEventProps = {\n activeLabel: string;\n activePayload: {value: number}[];\n isTooltipActive: boolean;\n};\n\nconst LineChart = ({data, width, height, getTooltip: getTooltipProp, getColor, keys, yAxisLabel}: Props) => {\n const styles = useStyles();\n const {cartesianGrid, tooltip, xAxis, yAxis, line, referenceLine, labelForY} = getLineChartSettings();\n\n const getTooltip = useCallback(\n (tooltipProps: TooltipProps) => <div className={styles.tooltipWrapper}>{getTooltipProp(tooltipProps)}</div>,\n [getTooltipProp]\n );\n const [selectedDots, setSelectedDots] = useState<{\n group: string;\n values: number[];\n }>();\n const getReferenceLineCoord = (selectedDots, data) => {\n const selectedDotsIndex = data.findIndex(propEq('label', selectedDots.group));\n const x1 = selectedDotsIndex === 0 ? data[0].label : data[selectedDotsIndex - 1].label;\n const x2 =\n selectedDotsIndex === data.length - 1 ? data[selectedDotsIndex].label : data[selectedDotsIndex + 1].label;\n return {x1, x2};\n };\n const handleMouseMove = (mouseEvent: MouseEventProps) => {\n if (mouseEvent.isTooltipActive) {\n setSelectedDots({\n group: mouseEvent.activeLabel,\n values: pluck('value', mouseEvent.activePayload)\n });\n } else setSelectedDots(undefined);\n };\n\n const handleMouseLeave = () => {\n setSelectedDots(undefined);\n };\n\n return (\n <LineChartWidget\n width={width}\n height={height}\n data={data}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n >\n {selectedDots && (\n <ReferenceLine\n {...referenceLine}\n segment={[\n {x: selectedDots.group, y: 0},\n {x: selectedDots.group, y: Math.max(...selectedDots.values)}\n ]}\n />\n )}\n {selectedDots &&\n selectedDots.values.map((value) => (\n <ReferenceLine\n key={value}\n {...referenceLine}\n segment={[\n {x: data[0].label, y: value},\n {x: selectedDots.group, y: value}\n ]}\n />\n ))}\n {selectedDots && selectedDots.values.every((value) => isNaN(value)) && (\n <ReferenceArea {...getReferenceLineCoord(selectedDots, data)} />\n )}\n <CartesianGrid {...cartesianGrid} />\n <XAxis {...xAxis} dataKey=\"label\" />\n <YAxis {...yAxis} label={{...labelForY, value: yAxisLabel}} />\n {keys.map((key: string) => (\n <Line {...line} key={key} dataKey={key} stroke={getColor ? getColor(key) : DEFAULT_LINE_COLOR} />\n ))}\n <ChartTooltip {...tooltip} content={getTooltip} cursor={null} />\n </LineChartWidget>\n );\n};\n\nexport default LineChart;\n","import {\n CartesianGridProps,\n LineProps,\n TooltipProps,\n XAxisProps,\n YAxisProps,\n ReferenceLineProps,\n LabelProps\n} from 'recharts';\nimport {tickFormatter} from '../../services/barCharts';\n\ntype LineChartSettings = {\n xAxis: XAxisProps;\n yAxis: YAxisProps;\n cartesianGrid: CartesianGridProps;\n tooltip: TooltipProps;\n line: LineProps;\n referenceLine: ReferenceLineProps;\n labelForY: LabelProps;\n};\n\nconst getLineChartSettings = (): LineChartSettings => {\n return {\n xAxis: {\n type: 'category',\n dataKey: 'term',\n tick: {\n fill: '#000',\n opacity: '0.54',\n fontSize: '10px'\n },\n angle: 0,\n textAnchor: 'middle',\n stroke: '#666',\n allowDuplicatedCategory: false\n },\n yAxis: {\n dataKey: '',\n type: 'number',\n tick: {\n fill: '#000',\n opacity: '0.54',\n width: undefined\n },\n stroke: '#666',\n tickFormatter: tickFormatter,\n tickCount: 5,\n width: 50\n },\n cartesianGrid: {\n strokeDasharray: '3 3',\n stroke: '#666',\n strokeOpacity: '0.4'\n },\n tooltip: {\n cursor: {\n fill: '#000',\n opacity: '0.1'\n }\n },\n line: {\n type: 'linear',\n dataKey: 'value',\n strokeWidth: 3,\n dot: null,\n activeDot: {r: 3}\n },\n referenceLine: {\n strokeDasharray: '3 3',\n stroke: '#000',\n isFront: true\n },\n labelForY: {\n angle: 270,\n position: 'left',\n offset: -3,\n style: {\n textAnchor: 'middle',\n fontSize: '8px',\n fill: 'rgba(0, 0, 0, 0.54)'\n }\n }\n };\n};\n\nexport default getLineChartSettings;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M10 16.667A6.676 6.676 0 013.333 10 6.676 6.676 0 0110 3.333 6.675 6.675 0 0116.667 10 6.675 6.675 0 0110 16.667zm0 1.666c4.6 0 8.333-3.733 8.333-8.333S14.6 1.667 10 1.667A8.336 8.336 0 001.667 10c0 4.6 3.733 8.333 8.333 8.333zM9.167 10v3.333h1.666V10h2.5L10 6.667 6.667 10h2.5z\",\n fill: \"#7BAB52\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M10 3.333A6.676 6.676 0 0116.667 10 6.675 6.675 0 0110 16.667 6.675 6.675 0 013.333 10 6.676 6.676 0 0110 3.333zm0-1.666A8.336 8.336 0 001.667 10c0 4.6 3.733 8.333 8.333 8.333S18.333 14.6 18.333 10 14.6 1.667 10 1.667zM10.833 10V6.667H9.167V10h-2.5L10 13.333 13.333 10h-2.5z\",\n fill: \"#FF1744\"\n})));","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n infoPanel: {\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n backgroundColor: 'rgba(0, 0, 0, 0.05)',\n margin: '0 0 2px',\n padding: '6px 12px 6px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n lineHeight: '20px'\n },\n info: {\n color: theme.palette.text.primary,\n fontSize: '14px'\n },\n dynamicInfo: {\n display: 'flex',\n alignItems: 'center'\n },\n dynamicInfoPositive: {\n color: '#5C922E'\n },\n dynamicInfoNegative: {\n color: '#FF1744'\n },\n percent: {\n fontWeight: 700,\n paddingRight: '4px'\n },\n dynamicIcon: {\n paddingRight: '4px'\n },\n period: {\n fontWeight: 'bold'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {last, pipe, pluck, slice} from 'ramda';\n\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\n\nimport PositiveDynamicIcon from './positiveDynamic.svg';\nimport NegativeDynamicIcon from './negativeDynamic.svg';\nimport {TimeSeriesChartData} from '../../types/TimeSeriesChartData';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n dateLabel: string;\n infoLabel: string;\n percentKey: string;\n dataKey: string;\n chartData: TimeSeriesChartData[];\n};\n\nconst getDynamicPercent = (chartData: TimeSeriesChartData[], percentKey: string): number => {\n if (chartData.length < 2) return 0;\n\n return pipe(\n slice(-2, Infinity),\n pluck(percentKey),\n ([prevPercent, lastPercent]) => lastPercent - prevPercent\n )(chartData);\n};\n\nexport const TimeSeriesInfoPanel = ({dateLabel, infoLabel, percentKey, dataKey, chartData}: Props) => {\n const styles = useStyles();\n const lastChartData = last(chartData);\n\n const data = lastChartData[dataKey];\n const percent = lastChartData[percentKey];\n const dynamicPercent = getDynamicPercent(chartData, percentKey);\n const isPositiveDynamic = dynamicPercent > 0;\n return (\n <div className={styles.infoPanel}>\n <span className={styles.period}>{dateLabel}:</span>\n <span>{infoLabel}</span>\n <span className={styles.info}>\n <span className={styles.percent}>{percent}%</span>({formatNumberAsMetric(data, 999)})\n </span>\n <span\n className={classnames(styles.dynamicInfo, {\n [styles.dynamicInfoPositive]: isPositiveDynamic,\n [styles.dynamicInfoNegative]: !isPositiveDynamic\n })}\n >\n {dynamicPercent !== 0 && (\n <>\n {isPositiveDynamic ? (\n <PositiveDynamicIcon className={styles.dynamicIcon} />\n ) : (\n <NegativeDynamicIcon className={styles.dynamicIcon} />\n )}\n {Math.abs(dynamicPercent).toFixed(2)}%\n </>\n )}\n </span>\n </div>\n );\n};\n\nexport default TimeSeriesInfoPanel;\n","import React, {useContext, useMemo} from 'react';\nimport {assoc, map, pipe, pick} from 'ramda';\nimport {TooltipProps} from 'recharts';\n\nimport i18n from 'ui-i18n';\nimport {ChartData} from '@reltio/components';\nimport {DQMetric, DQDataLevel, FillRateState, TimeSeriesMetric} from '@reltio/mdm-sdk';\n\nimport {getTimeSeriesData} from '../../../services/mlDq';\nimport {formatFillRateData, getFillRateData} from '../../../services/fillRate';\nimport {getPercentLabel, transformTimeSeriesChartData} from '../../../services/charts';\nimport {useMlDqDataRequest} from '../../../hooks/useMlDqDataRequest';\nimport {DetailedAttributeTypeContext} from '../../../contexts/DetailedAttributeTypeContext';\nimport {EntityTypeContext} from '../../../contexts/EntityTypeContext';\nimport {useReloadFacet} from '../../../contexts/ReloadFacetContext';\nimport {LineChartData} from '../../../types/LineChartData';\nimport {TimeRangeContext} from '../../../contexts/TimeRangeContext';\n\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport LineChart from '../../../components/LineChart/LineChart';\nimport {TimeSeriesInfoPanel} from '../../../components/TimeSeriesInfoPanel/TimeSeriesInfoPanel';\nimport {ChartDataTooltip} from '../../../components/ChartDataTooltip';\n\nconst INFO_PANEL_HEIGHT = 36;\n\nconst tooltipKeys = [FillRateState.EXISTS, FillRateState.MISSING];\nconst metrics = [DQMetric.FILL_RATE as TimeSeriesMetric];\n\nconst getTooltip = ({active, payload}: TooltipProps) => {\n if (active && payload && payload.length) {\n const {payload: currentPayload} = payload[0];\n const percent = currentPayload.fillRate;\n const percents = {\n [FillRateState.EXISTS]: percent,\n [FillRateState.MISSING]: +(100 - percent).toFixed(2)\n };\n\n const data: ChartData[] = pipe(\n pick(tooltipKeys),\n formatFillRateData,\n map((data: ChartData) => assoc('percent', percents[data.group], data)),\n map(({label, percent, value}) => ({\n label,\n value: `${i18n.number(value)} ${getPercentLabel(percent)}`\n }))\n )(currentPayload);\n const title = data.length ? i18n.date(currentPayload.group, 'MMM D, YYYY') : i18n.text('No data available');\n return <ChartDataTooltip data={data} title={title} />;\n }\n};\n\nconst FillRateTimeSeriesChart = () => {\n const entityType = useContext(EntityTypeContext);\n const detailedAttributeType = useContext(DetailedAttributeTypeContext);\n const timeRange = useContext(TimeRangeContext);\n\n const entityTypeUri = entityType.uri;\n const attributeFieldName = detailedAttributeType.fieldName;\n const {data, state, reload} = useMlDqDataRequest({\n entityTypeUri,\n attributeFieldName,\n timeRange,\n metrics\n });\n\n useReloadFacet({\n state,\n reload,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n\n const chartData: LineChartData[] = useMemo(\n () => pipe(getTimeSeriesData(getFillRateData), transformTimeSeriesChartData(DQMetric.FILL_RATE))(data),\n [data]\n );\n const infoLabel = `${i18n.text('No. profiles with complete values')}:`;\n const dateLabel = `${i18n.text('Today')}`;\n return (\n <DQLayoutItemContent data={chartData} loadingState={state} onRefresh={reload}>\n {({data, width, height}) => (\n <>\n <TimeSeriesInfoPanel\n infoLabel={infoLabel}\n dateLabel={dateLabel}\n chartData={data}\n percentKey={DQMetric.FILL_RATE}\n dataKey={FillRateState.EXISTS}\n />\n <LineChart\n width={width}\n height={height - INFO_PANEL_HEIGHT}\n data={data}\n keys={metrics}\n getTooltip={getTooltip}\n yAxisLabel={i18n.text('Percentage of profiles filled')}\n />\n </>\n )}\n </DQLayoutItemContent>\n );\n};\n\nexport default FillRateTimeSeriesChart;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n height: '18px',\n padding: '3px 8px',\n background: 'rgba(43, 152, 240, 0.12)',\n border: '0.6px solid #2B98F0',\n borderRadius: '2px'\n },\n label: {\n fontSize: '12px',\n padding: 0\n },\n disabled: {\n background: 'rgba(153, 153, 153, 0.12)',\n border: '0.6px solid #999999'\n }\n});\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport Chip, {ChipProps} from '@material-ui/core/Chip';\n\nimport {TimeRangeContext} from '../../contexts/TimeRangeContext';\nimport {getLabelByTimeRange} from '../../services/mlDq';\nimport {TimeRange} from '../../types/TimeRange';\n\nimport {useStyles} from './styles';\n\ntype Props = ChipProps & {\n disabled?: boolean;\n};\n\nconst TimeRangeChip = ({disabled = false, ...chipProps}: Props) => {\n const styles = useStyles();\n\n const timeRange = useContext(TimeRangeContext);\n const label = disabled ? getLabelByTimeRange(TimeRange.TODAY) : getLabelByTimeRange(timeRange);\n\n return (\n <Chip\n classes={{\n root: classnames(styles.root, {\n [styles.disabled]: !!disabled\n }),\n label: styles.label\n }}\n label={label}\n {...chipProps}\n />\n );\n};\n\nexport default TimeRangeChip;\n","import React from 'react';\nimport i18n from 'ui-i18n';\n\nimport {ViewProps} from '../../../types/ViewProps';\nimport {checkIsTimeSeries} from '../../../services/mlDq';\n\nimport {ChartDataTooltip, InfoDataRenderer} from '../../../components/ChartDataTooltip';\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport FillRateChartToday from './FillRateChart';\nimport FillRateTimeSeriesChart from './FillRateTimeSeriesChart';\nimport TimeRangeChip from '../../../components/TimeRangeChip/TimeRangeChip';\n\nconst FillRateChart = ({config}: ViewProps) => {\n const {title} = config;\n\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Fill rate')}\n data={[\n {\n label: `${i18n.text('Exists')}:`,\n value: i18n.text('Profiles with data')\n },\n {\n label: `${i18n.text('Missing')}:`,\n value: i18n.text('Profiles without data')\n }\n ]}\n DataRenderer={InfoDataRenderer}\n />\n );\n const isTimeSeries = checkIsTimeSeries(config);\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {isTimeSeries && <TimeRangeChip disabled={!isTimeSeries} />}\n </DQLayoutItemHeader>\n {isTimeSeries ? <FillRateTimeSeriesChart /> : <FillRateChartToday />}\n </DQLayoutItemView>\n );\n};\n\nexport default FillRateChart;\n","import {always, converge, identity, pipe, propOr, map, sortBy, when} from 'ramda';\nimport {\n getChartItemColor,\n DQChartsData,\n TimeSeriesData,\n UniquenessAnalysisState,\n UniquenessData\n} from '@reltio/mdm-sdk';\nimport {ChartData} from '@reltio/components';\nimport {localizeChartValues, isEmptyData} from '../services/charts';\nimport i18n from 'ui-i18n';\n\nconst UniquenessChartColors = {\n [UniquenessAnalysisState.UNIQUE]: '#4BAFFF',\n [UniquenessAnalysisState.NOT_UNIQUE]: '#C34980'\n};\n\nexport const getUniquenessColorByState = (state: UniquenessAnalysisState) =>\n UniquenessChartColors[state] || getChartItemColor(state);\n\nexport const getUniquenessColors: (chartsData: ChartData[]) => string[] = map(({group}) =>\n getUniquenessColorByState(group)\n);\n\nconst getLabelFromState = (state: UniquenessAnalysisState) => {\n const UniquenessAnalysisStateLabels = {\n [UniquenessAnalysisState.UNIQUE]: i18n.text('Unique'),\n [UniquenessAnalysisState.NOT_UNIQUE]: i18n.text('Not unique')\n };\n\n return UniquenessAnalysisStateLabels[state] || state;\n};\n\nconst getUniquenessStateIndexFromData = (data: ChartData) =>\n Object.values(UniquenessAnalysisState).indexOf(data.group as UniquenessAnalysisState);\n\ntype FormatUniquenessAnalysisDataFn = (uniquenessAnalysisData: UniquenessData) => ChartData[];\nexport const formatUniquenessAnalysisData: FormatUniquenessAnalysisDataFn = pipe(\n Object.entries,\n map(([state, value]) => ({label: getLabelFromState(state), group: state, value})),\n sortBy(getUniquenessStateIndexFromData),\n localizeChartValues\n);\n\ntype GetUniquenessDataFn = (chartsData: DQChartsData | TimeSeriesData) => UniquenessData;\nexport const getUniquenessData: GetUniquenessDataFn = propOr({}, 'uniqueness');\n\ntype GetUniquenessChartDataFn = (\n chartsData: DQChartsData\n) => {\n chartData: ChartData[];\n colors: string[];\n};\nexport const getUniquenessChartData: GetUniquenessChartDataFn = pipe(\n getUniquenessData,\n formatUniquenessAnalysisData,\n when(isEmptyData, always([])),\n converge(\n (chartData: ChartData, colors: string[]) => ({\n chartData,\n colors\n }),\n [identity, getUniquenessColors]\n )\n);\n","import React from 'react';\n\nimport {getUniquenessChartData} from '../../../services/uniquenessAnalysis';\nimport {useChartData} from '../../../hooks/useChartData';\n\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport StackedHorizontalBarChart from '../../../components/StackedHorizontalBarChart/StackedHorizontalBarChart';\n\nconst UniquenessAnalysisChart = () => {\n const {data, state, reload} = useChartData(getUniquenessChartData);\n const {chartData, colors} = data;\n\n return (\n <DQLayoutItemContent data={chartData} loadingState={state} onRefresh={reload}>\n {({data}) => <StackedHorizontalBarChart data={data} colors={colors} />}\n </DQLayoutItemContent>\n );\n};\n\nexport default UniquenessAnalysisChart;\n","import React, {useContext, useMemo} from 'react';\nimport {assoc, map, pipe, pick} from 'ramda';\nimport {TooltipProps} from 'recharts';\n\nimport i18n from 'ui-i18n';\nimport {ChartData} from '@reltio/components';\nimport {DQMetric, DQDataLevel, TimeSeriesMetric, UniquenessAnalysisState} from '@reltio/mdm-sdk';\n\nimport {formatUniquenessAnalysisData, getUniquenessData} from '../../../services/uniquenessAnalysis';\nimport {getTimeSeriesData} from '../../../services/mlDq';\nimport {useMlDqDataRequest} from '../../../hooks/useMlDqDataRequest';\nimport {useReloadFacet} from '../../../contexts/ReloadFacetContext';\nimport {LineChartData} from '../../../types/LineChartData';\nimport {EntityTypeContext} from '../../../contexts/EntityTypeContext';\nimport {DetailedAttributeTypeContext} from '../../../contexts/DetailedAttributeTypeContext';\nimport {TimeRangeContext} from '../../../contexts/TimeRangeContext';\nimport {getPercentLabel, transformTimeSeriesChartData} from '../../../services/charts';\n\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport LineChart from '../../../components/LineChart/LineChart';\nimport {TimeSeriesInfoPanel} from '../../../components/TimeSeriesInfoPanel/TimeSeriesInfoPanel';\nimport {ChartDataTooltip} from '../../../components/ChartDataTooltip';\n\nconst INFO_PANEL_HEIGHT = 36;\n\nconst tooltipKeys = [UniquenessAnalysisState.UNIQUE, UniquenessAnalysisState.NOT_UNIQUE];\nconst metrics = [DQMetric.UNIQUENESS as TimeSeriesMetric];\n\nconst getTooltip = ({active, payload}: TooltipProps) => {\n if (active && payload && payload.length) {\n const {payload: currentPayload} = payload[0];\n const percent = currentPayload.uniqueness;\n const percents = {\n [UniquenessAnalysisState.UNIQUE]: percent,\n [UniquenessAnalysisState.NOT_UNIQUE]: +(100 - percent).toFixed(2)\n };\n\n const data: ChartData[] = pipe(\n pick(tooltipKeys),\n formatUniquenessAnalysisData,\n map((data) => assoc('percent', percents[data.group], data)),\n map(({label, percent, value}) => ({\n label,\n value: `${i18n.number(value)} ${getPercentLabel(percent)}`\n }))\n )(currentPayload);\n const title = data.length ? i18n.date(currentPayload.group, 'MMM D, YYYY') : i18n.text('No data available');\n return <ChartDataTooltip data={data} title={title} />;\n }\n};\n\nconst UniquenessAnalysisTimeSeriesChart = () => {\n const entityType = useContext(EntityTypeContext);\n const detailedAttributeType = useContext(DetailedAttributeTypeContext);\n const timeRange = useContext(TimeRangeContext);\n\n const entityTypeUri = entityType.uri;\n const attributeFieldName = detailedAttributeType.fieldName;\n const {data, state, reload} = useMlDqDataRequest({\n entityTypeUri,\n attributeFieldName,\n timeRange,\n metrics\n });\n\n useReloadFacet({\n state,\n reload,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n\n const chartData: LineChartData[] = useMemo(\n () => pipe(getTimeSeriesData(getUniquenessData), transformTimeSeriesChartData(DQMetric.UNIQUENESS))(data),\n [data]\n );\n\n const infoLabel = `${i18n.text('No. of unique values')}`;\n const dateLabel = `${i18n.text('Today')}`;\n return (\n <DQLayoutItemContent data={chartData} loadingState={state} onRefresh={reload}>\n {({data, width, height}) => (\n <>\n <TimeSeriesInfoPanel\n infoLabel={infoLabel}\n dateLabel={dateLabel}\n chartData={data}\n percentKey={DQMetric.UNIQUENESS}\n dataKey={UniquenessAnalysisState.UNIQUE}\n />\n <LineChart\n width={width}\n height={height - INFO_PANEL_HEIGHT}\n data={data}\n keys={metrics}\n getTooltip={getTooltip}\n yAxisLabel={i18n.text('Percentage of unique values')}\n />\n </>\n )}\n </DQLayoutItemContent>\n );\n};\n\nexport default UniquenessAnalysisTimeSeriesChart;\n","import React from 'react';\nimport i18n from 'ui-i18n';\n\nimport {ViewProps} from '../../../types/ViewProps';\nimport {checkIsTimeSeries} from '../../../services/mlDq';\n\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport TimeRangeChip from '../../../components/TimeRangeChip/TimeRangeChip';\nimport UniquenessAnalysisChartToday from './UniquenessAnalysisChart';\nimport UniquenessAnalysisTimeSeriesChart from './UniquenessAnalysisTimeSeriesChart';\nimport {ChartDataTooltip, InfoDataRenderer} from '../../../components/ChartDataTooltip';\n\nconst UniquenessAnalysisChart = ({config}: ViewProps) => {\n const {title} = config;\n\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Uniqueness analysis')}\n data={[\n {\n label: `${i18n.text('Unique')}:`,\n value: i18n.text('Number of values that only appear once and have no duplicates')\n },\n {\n label: `${i18n.text('Not unique')}:`,\n value: i18n.text('Number of values that have at least one duplicate in the list')\n }\n ]}\n DataRenderer={InfoDataRenderer}\n />\n );\n\n const isTimeSeries = checkIsTimeSeries(config);\n\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {isTimeSeries && <TimeRangeChip disabled={!isTimeSeries} />}\n </DQLayoutItemHeader>\n {isTimeSeries ? <UniquenessAnalysisTimeSeriesChart /> : <UniquenessAnalysisChartToday />}\n </DQLayoutItemView>\n );\n};\n\nexport default UniquenessAnalysisChart;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"12\",\n fill: \"#6663F6\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.4 14.4h2.411c.016-.205.047-.405.093-.6H8.4v-1.2h3.012c.137-.215.296-.416.472-.6H8.4v-1.2h6v.011a3.896 3.896 0 011.8.287V8.4c0-.66-.54-1.2-1.2-1.2H7.8c-.66 0-1.2.54-1.2 1.2v7.8c0 .66.54 1.2 1.2 1.2h4.083a3.892 3.892 0 01-.979-1.8H8.4v-1.2zm6-4.2h-6V9h6v1.2zm2.58 5.934L18.852 18l-.852.852-1.872-1.872a2.66 2.66 0 01-1.434.42A2.695 2.695 0 0112 14.7c0-1.494 1.206-2.7 2.7-2.7 1.494 0 2.7 1.206 2.7 2.7 0 .528-.156 1.014-.42 1.434zm-2.28.066a1.5 1.5 0 10-.001-3.001A1.5 1.5 0 0014.7 16.2z\",\n fill: \"#fff\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"12\",\n fill: \"#1DACF5\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M11.4 9.6H9.3L12 6.9l2.7 2.7h-2.1v3.846l-3.6 3.6-.846-.846 3.246-3.246V9.6zm4.446 6.6l-.846.846L12.954 15l.846-.846 2.046 2.046z\",\n fill: \"#fff\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"12\",\n fill: \"#7F22FD\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.4 9v1.2h1.2V9H8.4zm0 2.4v1.2h1.2v-1.2H8.4zm0 2.4V15h1.2v-1.2H8.4zM10.8 9v1.2h4.8V9h-4.8zm0 2.4v1.2h4.8v-1.2h-4.8zm0 2.4V15h4.8v-1.2h-4.8zm6-6v8.4H7.2V7.8h9.6zm1.2 9V6.6H6V17.4h12v-.6z\",\n fill: \"#fff\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"12\",\n fill: \"#4B31E9\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10.8 15.6h1.8V15a.6.6 0 01.6-.6h2.4a.6.6 0 01.6.6v2.4a.6.6 0 01-.6.6h-2.4a.6.6 0 01-.6-.6v-.6h-3V9.6H8.4a.6.6 0 01-.6-.6V6.6a.6.6 0 01.6-.6H12a.6.6 0 01.6.6V9a.6.6 0 01-.6.6h-1.2v1.8h1.8v-.6a.6.6 0 01.6-.6h2.4a.6.6 0 01.6.6v2.4a.6.6 0 01-.6.6h-2.4a.6.6 0 01-.6-.6v-.6h-1.8v3z\",\n fill: \"#fff\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"12\",\n fill: \"#80D2FC\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 6c-3.312 0-6 2.688-6 6s2.688 6 6 6 6-2.688 6-6-2.688-6-6-6zm-.6 4.96V9h1.2v1.96l1.698-.98.6 1.04L13.2 12l1.698.98-.6 1.04-1.698-.98V15h-1.2v-1.96l-1.698.98-.6-1.04L10.8 12l-1.698-.98.6-1.04 1.698.98zM7.2 12c0 2.646 2.154 4.8 4.8 4.8s4.8-2.154 4.8-4.8-2.154-4.8-4.8-4.8A4.806 4.806 0 007.2 12z\",\n fill: \"#fff\"\n})));","import {makeStyles} from '@material-ui/core/styles';\n\nexport type IconSize = {\n width: number;\n height: number;\n};\nexport const useStyles = makeStyles({\n icon: ({width, height}: IconSize) => ({\n width,\n height\n }),\n loading: {\n '& circle': {\n fill: '#AAAAAA'\n }\n },\n badQuality: {\n '& circle': {\n fill: '#FF1744'\n }\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {IconProps} from '@material-ui/core/Icon';\nimport {AttrTypeDetailsType} from '../../types/DetailedAttributeType';\nimport DVFIcon from './icons/dvf.svg';\nimport IncludedInMatchingIcon from './icons/includedInMatching.svg';\nimport RDMIcon from './icons/rdm.svg';\nimport ReferenceIcon from './icons/reference.svg';\nimport RequiredIcon from './icons/required.svg';\n\nimport {useStyles, IconSize} from './styles';\n\nexport const AttributeTypeDetailIconSizes = {\n SMALL: {\n width: 22,\n height: 22\n },\n NORMAL: {\n width: 24,\n height: 24\n }\n};\n\nexport enum AttributeTypeDetailIconVariant {\n LOADING = 'loading',\n BAD_QUALITY = 'badQuality',\n NORMAL = 'normal'\n}\n\ntype Props = IconProps & {\n detailType: AttrTypeDetailsType;\n size?: IconSize;\n variant?: AttributeTypeDetailIconVariant;\n};\n\nexport const AttributeTypeDetailIcon = ({\n detailType,\n size = AttributeTypeDetailIconSizes.NORMAL,\n variant = AttributeTypeDetailIconVariant.NORMAL\n}: Props) => {\n const styles = useStyles(size);\n const className = classnames(styles.icon, styles[variant]);\n switch (detailType) {\n case AttrTypeDetailsType.RDM_LOOKUP:\n return <RDMIcon className={className} />;\n case AttrTypeDetailsType.CONTAIN_VF:\n return <DVFIcon className={className} />;\n case AttrTypeDetailsType.INCLUDED_IN_MATCHING:\n return <IncludedInMatchingIcon className={className} />;\n case AttrTypeDetailsType.REFERENCE:\n return <ReferenceIcon className={className} />;\n case AttrTypeDetailsType.REQUIRED:\n return <RequiredIcon className={className} />;\n default:\n return null;\n }\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst margin = 4;\nexport const useStyles = makeStyles({\n root: {\n height: '24px',\n maxWidth: `calc(100% - ${margin * 2}px)`,\n margin: `0 ${margin}px ${margin}px 0`,\n borderRadius: '12px'\n },\n label: {\n fontSize: '12px',\n paddingLeft: '8px',\n paddingRight: '9px'\n },\n badQuality: {\n backgroundColor: 'rgba(255, 23, 68, 0.12)'\n }\n});\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport Chip, {ChipProps} from '@material-ui/core/Chip';\nimport {RequestStates} from '@reltio/components';\nimport {getDetailLabel, checkIsDataQualitativeForSummary} from '../../services/attributeDetails';\nimport {ChartsDataContext} from '../../contexts/ChartsDataContext';\nimport {AttrTypeDetailsType} from '../../types/DetailedAttributeType';\nimport {\n AttributeTypeDetailIcon,\n AttributeTypeDetailIconVariant\n} from '../AttributeTypeDetailIcon/AttributeTypeDetailIcon';\nimport {ChartsDataWithState} from '../../hooks/useChartData';\nimport {useStyles} from './styles';\n\ntype Props = ChipProps & {\n detailType: AttrTypeDetailsType;\n};\n\nconst AttributeTypeDetailChip = ({detailType, classes, ...chipProps}: Props) => {\n const styles = useStyles();\n const {data, state} = useContext<ChartsDataWithState>(ChartsDataContext);\n let iconVariant = AttributeTypeDetailIconVariant.NORMAL;\n const isDataLoading = state === RequestStates.LOADING;\n const isDataQualitative = checkIsDataQualitativeForSummary(data);\n if (detailType === AttrTypeDetailsType.REQUIRED) {\n if (isDataLoading) {\n iconVariant = AttributeTypeDetailIconVariant.LOADING;\n }\n if (!isDataLoading && !isDataQualitative) {\n iconVariant = AttributeTypeDetailIconVariant.BAD_QUALITY;\n }\n }\n\n return (\n <Chip\n classes={{\n root: classnames(styles.root, {\n [styles.badQuality]:\n detailType === AttrTypeDetailsType.REQUIRED &&\n !isDataLoading &&\n state !== RequestStates.INIT &&\n !isDataQualitative\n }),\n label: styles.label,\n ...classes\n }}\n label={getDetailLabel(detailType)}\n icon={<AttributeTypeDetailIcon detailType={detailType} variant={iconVariant} />}\n {...chipProps}\n />\n );\n};\n\nexport default AttributeTypeDetailChip;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flexWrap: 'wrap',\n flexGrow: 1\n }\n});\n","import React from 'react';\nimport {ChipProps} from '@material-ui/core/Chip';\nimport AttributeTypeDetailChip from '../AttributeTypeDetailChip/AttributeTypeDetailChip';\nimport {AttrTypeDetails, AttrTypeDetailsType} from '../../types/DetailedAttributeType';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n details: AttrTypeDetails;\n chipClasses?: ChipProps['classes'];\n};\n\nconst AttributeTypeDetails = ({details, chipClasses = {}}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.root}>\n {Object.entries(details || {})\n .filter(([, value]) => value)\n .map(([detailType]) => (\n <AttributeTypeDetailChip\n key={detailType}\n detailType={detailType as AttrTypeDetailsType}\n classes={chipClasses}\n />\n ))}\n </div>\n );\n};\n\nexport default AttributeTypeDetails;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n header: {\n display: 'flex',\n paddingBottom: '16px'\n },\n info: {\n display: 'flex',\n flexDirection: 'column',\n '&:not(:last-child)': {\n borderRight: '1px solid rgba(0,0,0,0.12)'\n }\n },\n entitySummary: {\n '&:not(:last-child)': {\n paddingRight: '48px',\n marginRight: '16px'\n }\n },\n attributeTypeSummary: {\n '&:not(:last-child)': {\n paddingRight: '24px',\n marginRight: '24px'\n }\n },\n infoTitle: {\n color: 'rgba(0,0,0,0.54)',\n fontSize: '12px',\n lineHeight: '16px'\n },\n infoContent: {\n fontSize: '30px',\n lineHeight: '35px',\n padding: '4px 0 0',\n display: 'flex',\n alignItems: 'center'\n },\n attributeTypeIconWrapper: {\n width: '32px',\n height: '33px',\n background: 'rgba(0, 0, 0, 0.05)',\n borderRadius: '4px',\n position: 'relative',\n marginRight: '12px',\n flexShrink: 0,\n '& svg': {\n position: 'absolute',\n transform: 'translate(-50%, -50%)',\n top: '50%',\n left: '50%'\n }\n },\n totalLoading: {\n padding: '4px 8px'\n },\n clickable: {\n color: '#000066',\n cursor: 'pointer'\n }\n});\n","import classnames from 'classnames';\nimport React from 'react';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n title: string;\n children: React.ReactNode;\n className?: string;\n onClick?: () => void;\n dataReltioId?: string;\n};\n\nexport const HeaderInfo = ({title, children, className, onClick, dataReltioId}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.info, className)} onClick={onClick} data-reltio-id={dataReltioId}>\n <div className={styles.infoTitle}>{title}</div>\n <div className={styles.infoContent}>{children}</div>\n </div>\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"mask\", {\n id: \"svg1279746712a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"1\",\n y: \"4\",\n width: \"15\",\n height: \"8\"\n}, React.createElement(\"path\", {\n d: \"M11.667 4H5C2.793 4 1 5.793 1 8s1.793 4 4 4h6.667c2.206 0 4-1.793 4-4s-1.794-4-4-4zm0 6.667H5a2.666 2.666 0 110-5.334h6.667a2.666 2.666 0 110 5.334zm0-4.667c-1.107 0-2 .893-2 2s.893 2 2 2c1.106 0 2-.893 2-2s-.894-2-2-2z\",\n fill: \"#000\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg1279746712a)\"\n}, React.createElement(\"path\", {\n fill: \"#000\",\n fillOpacity: \".541\",\n d: \"M0 0h16v16H0z\"\n}))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"mask\", {\n id: \"svg208732808a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"1\",\n y: \"1\",\n width: \"14\",\n height: \"14\"\n}, React.createElement(\"path\", {\n d: \"M7.992 1.333A6.663 6.663 0 001.332 8c0 3.68 2.98 6.667 6.66 6.667A6.67 6.67 0 0014.665 8a6.67 6.67 0 00-6.673-6.667zm.007 12A5.332 5.332 0 012.665 8 5.332 5.332 0 018 2.667 5.332 5.332 0 0113.332 8a5.332 5.332 0 01-5.333 5.333zm.333-8.666h-1v4l3.5 2.1.5-.82-3-1.78v-3.5z\",\n fill: \"#000\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg208732808a)\"\n}, React.createElement(\"path\", {\n fill: \"#000\",\n fillOpacity: \".541\",\n d: \"M0 0h16v16H0z\"\n}))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"mask\", {\n id: \"svg1638934380a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"2\",\n y: \"4\",\n width: \"13\",\n height: \"8\"\n}, React.createElement(\"path\", {\n d: \"M5.948 10.02V12h-.88v-1.98h-.88V12h-.88v-1.98h-.77v-.825h.77v-2.2h-.77V6.17h.77V4.3h.88v1.87h.88V4.3h.88v1.87h.77v.825h-.77v2.2h.77v.825h-.77zm-.88-3.025h-.88v2.2h.88v-2.2zM7.947 12v-1.1h1.1V12h-1.1zM13.65 10.02V12h-.88v-1.98h-.88V12h-.88v-1.98h-.77v-.825h.77v-2.2h-.77V6.17h.77V4.3h.88v1.87h.88V4.3h.88v1.87h.77v.825h-.77v2.2h.77v.825h-.77zm-.88-3.025h-.88v2.2h.88v-2.2z\",\n fill: \"#000\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg1638934380a)\"\n}, React.createElement(\"path\", {\n fill: \"#000\",\n fillOpacity: \".541\",\n d: \"M0 0h16v16H0z\"\n}))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M2.11 12v-.825h1.331V5.169L2 5.741v-.89L3.331 4.3h1.045v6.875h1.089V12H2.11zM5.968 11.032l1.65-2.508c.242-.367.403-.62.484-.759.08-.147.136-.29.165-.429.03-.14.044-.341.044-.605v-.77a.778.778 0 00-.253-.583c-.169-.161-.389-.242-.66-.242h-1.21V4.3h1.1c.638 0 1.126.158 1.463.473.345.308.517.774.517 1.397v.462c0 .367-.018.645-.055.836-.037.19-.103.37-.198.539-.088.169-.264.455-.528.858l-1.518 2.299h2.519V12h-3.52v-.968zM13.544 10.262c0 .609-.147 1.052-.44 1.331-.293.271-.77.407-1.43.407h-1.298v-.825h1.397c.279 0 .484-.062.616-.187.132-.132.198-.337.198-.616V9.239c0-.242-.073-.433-.22-.572-.147-.147-.341-.22-.583-.22h-1.067v-.825h.957a.797.797 0 00.572-.22.768.768 0 00.231-.583v-.902c0-.279-.066-.48-.198-.605-.125-.125-.326-.187-.605-.187h-1.298V4.3h1.166c.623 0 1.093.14 1.408.418.323.271.484.704.484 1.298v.693c0 .565-.202.99-.605 1.276.477.264.715.715.715 1.353v.924z\",\n fill: \"#000\",\n fillOpacity: \".541\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"mask\", {\n id: \"svg924767730a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"1\",\n y: \"4\",\n width: \"13\",\n height: \"8\"\n}, React.createElement(\"path\", {\n d: \"M5.463 10.13c0 .623-.173 1.093-.517 1.408-.338.308-.825.462-1.463.462H2.03v-.836h1.562c.271 0 .491-.08.66-.242a.778.778 0 00.253-.583V9.195c0-.22-.059-.396-.176-.528-.11-.14-.279-.209-.506-.209h-.22c-.543 0-.972-.158-1.287-.473-.316-.323-.473-.788-.473-1.397V6.17c0-.623.168-1.089.506-1.397.344-.315.836-.473 1.474-.473h1.463v.836H3.714c-.272 0-.492.08-.66.242a.778.778 0 00-.253.583v.836c0 .227.073.418.22.572.146.147.337.22.572.22h.22c.52 0 .924.15 1.21.451.293.3.44.755.44 1.364v.726zM9.136 10.13c0 .623-.173 1.093-.517 1.408-.338.308-.825.462-1.463.462H5.704v-.836h1.562c.27 0 .49-.08.66-.242a.778.778 0 00.253-.583V9.195c0-.22-.06-.396-.176-.528-.11-.14-.28-.209-.506-.209h-.22c-.543 0-.972-.158-1.287-.473-.316-.323-.473-.788-.473-1.397V6.17c0-.623.168-1.089.506-1.397.344-.315.836-.473 1.474-.473H8.96v.836H7.387c-.272 0-.492.08-.66.242a.778.778 0 00-.253.583v.836c0 .227.073.418.22.572.146.147.337.22.572.22h.22c.52 0 .924.15 1.21.451.293.3.44.755.44 1.364v.726zM12.255 12l-1.683-6.886V12H9.68V4.3h1.562l1.694 6.886V4.3h.89V12h-1.572z\",\n fill: \"#000\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg924767730a)\"\n}, React.createElement(\"path\", {\n fill: \"#000\",\n fillOpacity: \".541\",\n d: \"M0 0h16v16H0z\"\n}))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"mask\", {\n id: \"svg3578961193a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"1\",\n y: \"4\",\n width: \"14\",\n height: \"8\"\n}, React.createElement(\"path\", {\n d: \"M5.345 12l-.418-1.947H2.782L2.353 12h-.979l1.86-7.7h1.264L6.324 12h-.979zM3.85 5.026l-.89 4.202H4.75L3.85 5.026zM10.494 10.262c0 .63-.146 1.078-.44 1.342-.286.264-.763.396-1.43.396h-2.09V4.3h1.958c.653 0 1.13.132 1.43.396.308.264.462.704.462 1.32v.627c0 .565-.202.99-.605 1.276.477.264.715.715.715 1.353v.99zM9.427 5.917c0-.279-.066-.48-.198-.605-.125-.125-.326-.187-.605-.187H7.491v2.431h1.133a.797.797 0 00.572-.22.768.768 0 00.231-.583v-.836zm.11 3.256c0-.242-.073-.433-.22-.572-.147-.147-.34-.22-.583-.22H7.491v2.794h1.232c.279 0 .484-.062.616-.187.132-.132.198-.337.198-.616V9.173zM13.119 12c-.638 0-1.13-.154-1.474-.462-.337-.315-.506-.785-.506-1.408V6.17c0-.623.169-1.089.506-1.397.345-.315.836-.473 1.474-.473h1.342v.836h-1.452c-.271 0-.491.08-.66.242a.778.778 0 00-.253.583v4.378c0 .227.084.422.253.583.169.161.389.242.66.242h1.452V12h-1.342z\",\n fill: \"#000\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg3578961193a)\"\n}, React.createElement(\"path\", {\n fill: \"#000\",\n fillOpacity: \".541\",\n d: \"M0 0h16v16H0z\"\n}))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport type IconSize = {\n width: number;\n height: number;\n};\nexport const useStyles = makeStyles({\n icon: ({width, height}: IconSize) => ({\n width,\n height\n })\n});","import React from 'react';\nimport BooleanIcon from './icons/boolean.svg';\nimport DateIcon from './icons/date.svg';\nimport FloatIcon from './icons/float.svg';\nimport IntegerIcon from './icons/integer.svg';\nimport SSNIcon from './icons/ssn.svg';\nimport StringIcon from './icons/string.svg';\nimport {getChartDataTypeByAttributeType} from '../../services/charts';\nimport {ChartDataType} from '../../constants/ChartDataType';\n\nimport {useStyles, IconSize} from './styles';\n\ntype Props = {\n type: string;\n size?: IconSize;\n};\n\nexport const AttributeTypeIconSizes = {\n SMALL: {\n width: 16,\n height: 16\n },\n NORMAL: {\n width: 24,\n height: 24\n }\n};\n\nconst AttributeTypeIcon = ({type, size = AttributeTypeIconSizes.SMALL}: Props) => {\n const styles = useStyles(size);\n const chartDataType = getChartDataTypeByAttributeType(type);\n switch (chartDataType) {\n case ChartDataType.STRING:\n return <StringIcon className={styles.icon} />;\n case ChartDataType.FLOAT:\n return <FloatIcon className={styles.icon} />;\n case ChartDataType.INTEGER:\n return <IntegerIcon className={styles.icon} />;\n case ChartDataType.BOOLEAN:\n return <BooleanIcon className={styles.icon} />;\n case ChartDataType.DATE:\n return <DateIcon className={styles.icon} />;\n case ChartDataType.SSN:\n return <SSNIcon className={styles.icon} />;\n default:\n return <StringIcon className={styles.icon} />;\n }\n};\n\nexport default AttributeTypeIcon;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\nimport {CircularProgress as CircularProgress} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport AttributeTypeDetails from '../AttributeTypeDetails/AttributeTypeDetails';\nimport {useExistsTotalsRequest} from '../../hooks/useExistsTotalsRequest';\nimport {HeaderInfo} from './HeaderInfo';\nimport {DetailedAttributeType} from '../../types/DetailedAttributeType';\nimport AttributeTypeIcon, {AttributeTypeIconSizes} from '../AttributeTypeIcon/AttributeTypeIcon';\nimport ChartDataTooltip from '../ChartDataTooltip/ChartDataTooltip';\nimport {useStyles} from './styles';\n\nexport type AttributeTypeSummaryProps = {\n detailedAttributeType: DetailedAttributeType;\n};\n\nconst AttributeTypeSummary = ({detailedAttributeType}: AttributeTypeSummaryProps) => {\n const styles = useStyles();\n const total = useExistsTotalsRequest(detailedAttributeType.fieldName);\n const renderDataTypeInfo = (type: string) => {\n return (\n <>\n <div className={styles.attributeTypeIconWrapper}>\n <AttributeTypeIcon type={type} size={AttributeTypeIconSizes.NORMAL} />\n </div>\n {i18n.text(type)}\n </>\n );\n };\n\n const recordsInfo =\n total === null ? <CircularProgress size=\"24\" className={styles.totalLoading} /> : formatNumberAsMetric(total);\n\n return (\n <div>\n <div className={styles.header}>\n <HeaderInfo title={i18n.text('Profiles')} className={styles.attributeTypeSummary}>\n <Tooltip\n title={\n <ChartDataTooltip\n data={[\n {\n label: i18n.text('Entities with exists attribute'),\n value: i18n.number(total)\n }\n ]}\n />\n }\n >\n <div>{recordsInfo}</div>\n </Tooltip>\n </HeaderInfo>\n <HeaderInfo title={i18n.text('Data type')} className={styles.attributeTypeSummary}>\n {renderDataTypeInfo(detailedAttributeType.type)}\n </HeaderInfo>\n </div>\n <AttributeTypeDetails details={detailedAttributeType.details} />\n </div>\n );\n};\n\nexport default AttributeTypeSummary;\n","import {useContext, useEffect, useState} from 'react';\nimport {getTotals, FilterOptions} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\nimport {EntityTypeContext} from '../contexts/EntityTypeContext';\n\nexport const useExistsTotalsRequest = (attributeFieldName: string) => {\n const [total, setTotal] = useState<number>(null);\n const entityType = useContext(EntityTypeContext);\n const safePromise = useSafePromise();\n\n useEffect(() => {\n if (entityType.uri && attributeFieldName) {\n const existsFilter = {\n filter: FilterOptions.EXISTS,\n fieldName: attributeFieldName\n };\n\n const entityTypeFilter = {\n filter: FilterOptions.EQUALS,\n fieldName: 'type',\n values: [entityType.uri]\n };\n\n const options = {\n searchOptions: 'strictTypeSearch'\n };\n\n setTotal(null);\n safePromise(getTotals([existsFilter, entityTypeFilter], options))\n .then(({total}) => setTotal(total))\n .catch(console.error);\n }\n }, [entityType.uri, attributeFieldName]);\n\n return total;\n};\n","import classnames from 'classnames';\nimport React, {useContext} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {CircularProgress as CircularProgress} from '@material-ui/core';\n\nimport i18n from 'ui-i18n';\nimport {RequestStates} from '@reltio/components';\nimport mdmModule, {search} from '@reltio/mdm-module';\nimport {ActivityFilter, Metadata, TEntityType} from '@reltio/mdm-sdk';\n\nimport {ChartsDataContext} from '../../contexts/ChartsDataContext';\nimport {ChartsDataWithState} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {countEntityTypeAttributes} from '../../services/attributes';\nimport {getEntityTypeSummarySearchState} from '../../services/charts';\n\nimport {HeaderInfo} from './HeaderInfo';\n\nimport {useStyles} from './styles';\n\nexport type EntityTypeSummaryProps = {\n entityType: TEntityType;\n};\n\nconst EntityTypeSummary = ({entityType}: EntityTypeSummaryProps) => {\n const {data: chartsData, state} = useContext<ChartsDataWithState>(ChartsDataContext);\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const attributeTypesCount = countEntityTypeAttributes(metadata, entityType);\n const {activeProfiles = 0, inactiveProfiles = 0, sourceSystems = 0} = chartsData?.summary || {};\n const getValue = (value: number) =>\n state === RequestStates.LOADING ? (\n <CircularProgress size=\"24\" className={styles.totalLoading} />\n ) : (\n i18n.number(value)\n );\n const styles = useStyles();\n const dispatch = useDispatch();\n const searchRedirect = useSearchRedirect(getEntityTypeSummarySearchState);\n const searchProfiles = (activeness: ActivityFilter) => {\n dispatch(search.actions.activityFilterUpdated(activeness));\n searchRedirect();\n };\n return (\n <div className={styles.header}>\n <HeaderInfo\n title={i18n.text('Active profiles')}\n className={classnames(styles.entitySummary, styles.clickable)}\n onClick={() => searchProfiles(ActivityFilter.ACTIVE_ONLY)}\n dataReltioId=\"reltio-dq-dashboard-entitylevel-summary-activeProfiles\"\n >\n {getValue(activeProfiles)}\n </HeaderInfo>\n <HeaderInfo\n title={i18n.text('Inactive profiles')}\n className={classnames(styles.entitySummary, styles.clickable)}\n onClick={() => searchProfiles(ActivityFilter.INACTIVE_ONLY)}\n dataReltioId=\"reltio-dq-dashboard-entitylevel-summary-inactiveProfiles\"\n >\n {getValue(inactiveProfiles)}\n </HeaderInfo>\n <HeaderInfo title={i18n.text('Attributes')} className={styles.entitySummary}>\n {i18n.number(attributeTypesCount)}\n </HeaderInfo>\n <HeaderInfo title={i18n.text('Source systems')} className={styles.entitySummary}>\n {getValue(sourceSystems)}\n </HeaderInfo>\n </div>\n );\n};\n\nexport default EntityTypeSummary;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n content: {\n padding: '0 16px',\n marginTop: '4px'\n }\n});\n","import React, {useContext} from 'react';\n\nimport {getLabel, DQDataLevel} from '@reltio/mdm-sdk';\nimport {BasicViewContent} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\nimport {ViewProps} from '../../types/ViewProps';\nimport {DetailedAttributeTypeContext} from '../../contexts/DetailedAttributeTypeContext';\nimport {DataLevelContext} from '../../contexts/DataLevelContext';\nimport {EntityTypeContext} from '../../contexts/EntityTypeContext';\n\nimport AttributeTypeSummary from '../../components/Summary/AttributeTypeSummary';\nimport DQLayoutItemHeader from '../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemView from '../../components/DQLayoutItemView/DQLayoutItemView';\nimport EntityTypeSummary from '../../components/Summary/EntityTypeSummary';\n\nimport {useStyles} from './styles';\n\nconst Summary = ({config}: ViewProps) => {\n const styles = useStyles();\n const detailedAttributeType = useContext(DetailedAttributeTypeContext);\n const dataLevel = useContext(DataLevelContext);\n const entityType = useContext(EntityTypeContext);\n const isAttributeTypeLevel = dataLevel === DQDataLevel.ATTRIBUTE_TYPE;\n const title = isAttributeTypeLevel\n ? getLabel(detailedAttributeType.label)\n : `${i18n.text('Entity')}: ${getLabel(entityType.label)}`;\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} />\n <BasicViewContent className={styles.content}>\n {isAttributeTypeLevel ? (\n <AttributeTypeSummary detailedAttributeType={detailedAttributeType} />\n ) : (\n <EntityTypeSummary entityType={entityType} />\n )}\n </BasicViewContent>\n </DQLayoutItemView>\n );\n};\n\nexport default Summary;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n viewContent: {\n height: '100%',\n overflow: 'hidden',\n position: 'relative',\n padding: '0 16px 10px'\n }\n});\n","import React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {BasicViewContent} from '@reltio/components';\nimport {DashboardLayoutItemView} from '@reltio/dashboard';\nimport DQLayoutItemHeader from '../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport {ViewProps} from '../../types/ViewProps';\nimport DQDashboardError from '../../components/DQDashboardError/DQDashboardError';\nimport {EMPTY_STATE_ICONS} from '@reltio/components';\nimport {ErrorData} from '../../types/ErrorData';\nimport {EmptyStateVariants} from '../../types/EmptyStateVariants';\nimport {useStyles} from './styles';\n\ntype Props = ViewProps & {\n errorData: ErrorData;\n titleChildren?: React.ReactNode;\n infoTooltipTitle?: React.ReactNode;\n onRefresh?: () => void;\n};\n\nconst DefaultIcon = EMPTY_STATE_ICONS.ERROR;\n\nconst DQDashboardErrorView = ({config, errorData, titleChildren, infoTooltipTitle, onRefresh}: Props) => {\n const {id, title: viewTitle} = config;\n const styles = useStyles();\n return (\n <DashboardLayoutItemView id={id}>\n <DQLayoutItemHeader title={viewTitle} infoTooltipTitle={infoTooltipTitle}>\n {titleChildren}\n </DQLayoutItemHeader>\n <BasicViewContent className={styles.viewContent}>\n <ReactResizeDetector refreshMode=\"debounce\" refreshRate={100} handleWidth handleHeight>\n <DQDashboardError\n errorData={{Icon: DefaultIcon, ...errorData}}\n onRefresh={onRefresh}\n variant={EmptyStateVariants.SMALL}\n />\n </ReactResizeDetector>\n </BasicViewContent>\n </DashboardLayoutItemView>\n );\n};\n\nexport default DQDashboardErrorView;\n","import {always, cond, curry, identity, join, map, pipe, propOr, propEq, slice} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {ChartData} from '@reltio/components';\nimport {\n getAttributeTypesHierarchyByUri,\n isDateType,\n isTimestampBasedType,\n DataValidationFunction,\n DQChartsData,\n FilterOptions,\n Metadata,\n SearchState,\n AttributeType\n} from '@reltio/mdm-sdk';\nimport {getSearchState, localizeChartValues, facetFiltersToSearchState} from './charts';\nimport {getEqualsRawFilterSearchState, RawFilterFields} from './rawFilters';\nimport {getAttributeLabel} from './attributes';\nimport {GetSearchStateProps} from '../types/GetSearchStateProps';\n\ntype GetFormattedDataForTableChartFn = (chartType: string) => (chartsData: DQChartsData) => ChartData[];\nconst getFormattedDataForTableChart: GetFormattedDataForTableChartFn = (chartType: string) =>\n pipe(\n propOr({}, chartType),\n Object.entries,\n map(([item, value]) => ({label: item, group: item, value})),\n localizeChartValues\n );\n\nexport const valueComparator = ({sortDirection, sortField}: {sortDirection: 'asc' | 'desc'; sortField: string}) => (\n a: ChartData,\n b: ChartData\n) => {\n if (sortDirection === 'asc') {\n return a[sortField] > b[sortField] ? 1 : -1;\n } else return a[sortField] < b[sortField] ? 1 : -1;\n};\n\nconst filterExistedDVF = (dvfs: DataValidationFunction[], chartData: ChartData[]) =>\n chartData.filter((chartDataItem: ChartData) => dvfs.find(propEq('uri', chartDataItem.group)));\n\nconst findDVFByUri = (dvfs: DataValidationFunction[], uri: string) => dvfs.find(propEq('uri', uri));\n\nconst enrichDVFDataWithFunctionLabel = curry((dvfs: DataValidationFunction[], chartData: ChartData[]) =>\n pipe(\n filterExistedDVF,\n map((chartDataItem: ChartData) => {\n const functionName = findDVFByUri(dvfs, chartDataItem.group)?.name;\n return {...chartDataItem, label: functionName};\n })\n )(dvfs, chartData)\n);\n\nconst getAttributeTypeLabelFromHierarhy: (attributeHierarhy: AttributeType[]) => string = pipe(\n map(getAttributeLabel),\n slice(1, Infinity),\n join(' / ')\n);\n\nconst enrichEntityLevelDVFData = curry((dvfs: DataValidationFunction[], metadata: Metadata, chartData: ChartData[]) =>\n pipe(\n filterExistedDVF,\n map((chartDataItem: ChartData) => {\n const {name, attribute: attributeUri} = findDVFByUri(dvfs, chartDataItem.group);\n const attributeTypesHierarhy = getAttributeTypesHierarchyByUri(metadata, attributeUri);\n return {\n ...chartDataItem,\n label: name,\n attributeLabel: getAttributeTypeLabelFromHierarhy(attributeTypesHierarhy)\n };\n })\n )(dvfs, chartData)\n);\n\ntype GetValidationChartDataFn = (chartsData: DQChartsData) => ChartData[];\nexport const getValidationChartData = (dvfs: DataValidationFunction[]): GetValidationChartDataFn =>\n pipe(getFormattedDataForTableChart('dataValidationFunctions'), enrichDVFDataWithFunctionLabel(dvfs));\n\nexport const getEntityLevelValidationChartData = (\n dvfs: DataValidationFunction[],\n metadata: Metadata\n): GetValidationChartDataFn =>\n pipe(getFormattedDataForTableChart('dataValidationFunctions'), enrichEntityLevelDVFData(dvfs, metadata));\nexport const getFrequencyChartData = getFormattedDataForTableChart('frequency');\nexport const getPatternAnalisysData = getFormattedDataForTableChart('pattern');\n\nconst getDVFAnalyticAttribtuteUri = (entityTypeUri: string, attributeName: string) =>\n `${entityTypeUri}/analyticsAttributes/AttributeValidations/analyticsAttributes/${attributeName}`;\nconst getValidationFilter = ({name, uri}: DataValidationFunction, entityTypeUri: string) => [\n {\n filter: FilterOptions.EQUALS,\n values: [[name]],\n fieldName: 'analyticsAttributes.AttributeValidations.FunctionName',\n uri: getDVFAnalyticAttribtuteUri(entityTypeUri, 'FunctionName')\n },\n {\n filter: FilterOptions.EQUALS,\n values: [[uri]],\n fieldName: 'analyticsAttributes.AttributeValidations.FunctionURI',\n uri: getDVFAnalyticAttribtuteUri(entityTypeUri, 'FunctionURI')\n }\n];\n\nconst getFrequencyAnalysisStateForTimestamp = curry(\n ({detailedAttributeType, entityTypeUri}: GetSearchStateProps, attributeValue: string) =>\n getEqualsRawFilterSearchState({\n fieldName: `${detailedAttributeType.fieldName}`,\n value: attributeValue,\n entityTypeUri\n })\n);\nconst getFrequencyAnalysisFilterForDate = curry(({fieldName}: {fieldName: string}, attributeValue: string) => [\n {\n filter: FilterOptions.ON,\n values: [attributeValue],\n fieldName\n }\n]);\nconst getFrequencyAnalysisFilter = curry(({fieldName}: {fieldName: string}, attributeValue: string) => [\n {\n filter: FilterOptions.EQUALS,\n values: [[attributeValue]],\n fieldName\n }\n]);\n\nexport const getFrequencyAnalysisSearchState = ({detailedAttributeType, entityTypeUri}: GetSearchStateProps) =>\n cond([\n [isTimestampBasedType, always(getFrequencyAnalysisStateForTimestamp)],\n [isDateType, always(getSearchState(getFrequencyAnalysisFilterForDate))],\n [identity, always(getSearchState(getFrequencyAnalysisFilter))]\n ])(detailedAttributeType.type)({detailedAttributeType, entityTypeUri});\n\nexport const getValidationSearchState = (dvfs: DataValidationFunction[]) => ({\n entityTypeUri\n}: GetSearchStateProps): ((dvfUri: string) => SearchState) => (dvfUri) => {\n const dvf = findDVFByUri(dvfs, dvfUri);\n return pipe(getValidationFilter, facetFiltersToSearchState(null, entityTypeUri))(dvf, entityTypeUri);\n};\n\nexport const getPatternAnalysisSearchState = curry(\n ({detailedAttributeType, entityTypeUri}: GetSearchStateProps, pattern: string) =>\n getEqualsRawFilterSearchState({\n fieldName: `${detailedAttributeType.fieldName}.${RawFilterFields.PATTERN}`,\n value: `\"${pattern}\"`,\n entityTypeUri\n })\n);\nexport const getRowsCounterLabel = (chartData: ChartData[]) =>\n `(${chartData.length >= 100 ? i18n.text('top') + ' 100' : chartData.length})`;\n","import i18n from 'ui-i18n';\n\nimport {DQDataLevel, TimeSeriesDataValues} from '@reltio/mdm-sdk';\n\nimport {TableChartData} from '../../../types/TableChartData';\n\nconst getEntityLevelColumnsOptions = (functionsCount: number) => [\n {\n id: 'attributeLabel',\n label: i18n.text('Attribute'),\n width: 0.23,\n sortable: true\n },\n {\n id: 'label',\n label: i18n.text('Validation function'),\n secondLabel: `(${functionsCount})`,\n width: 0.37,\n sortable: true\n },\n {\n id: 'value',\n label: i18n.text('Profiles'),\n width: 0.4,\n sortable: true\n }\n];\n\nconst getAttributeLevelColumnsOptions = (functionsCount: number) => [\n {\n id: 'label',\n label: i18n.text('Validation function'),\n secondLabel: `(${functionsCount})`,\n width: 0.4,\n sortable: true\n },\n {\n id: 'value',\n label: i18n.text('Profiles'),\n width: 0.6,\n sortable: true\n }\n];\n\nexport const getColumnsOptions = (dataLevel: DQDataLevel, chartData: TableChartData[]) => {\n return dataLevel === DQDataLevel.ATTRIBUTE_TYPE\n ? getAttributeLevelColumnsOptions(chartData.length)\n : getEntityLevelColumnsOptions(chartData.length);\n};\nexport enum ViolatedValidationTimeSeriesData {\n VIOLATED_PERCENTAGE = 'violatedPercentage',\n VIOLATED_PROFILES_COUNT = 'violatedProfilesCount'\n}\n\nexport const getViolatedValidationData = (data: TimeSeriesDataValues) => {\n const {totalProfilesCount, violatedProfilesCount} = data.violatedProfiles;\n return {\n [ViolatedValidationTimeSeriesData.VIOLATED_PERCENTAGE]: Math.round(\n (violatedProfilesCount / totalProfilesCount) * 100\n ),\n [ViolatedValidationTimeSeriesData.VIOLATED_PROFILES_COUNT]: violatedProfilesCount\n };\n};\n","import {pipe, split, is} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {TableChartData} from '../../types/TableChartData';\n\nexport const getLabelAndMaxValue = pipe(split('|'), ([label, maxValue]) => ({label, maxValue}));\nexport const getValueByColumnId = (id: string, rowValue: TableChartData) =>\n is(Number, rowValue[id]) ? i18n.number(rowValue[id]) : rowValue[id];\n","import React, {useRef} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {RootRef as RootRef} from '@material-ui/core';\n\ntype Props = {\n children: React.ReactElement;\n handler: (isOverflow: boolean) => void;\n handleWidth?: boolean;\n};\n\nconst OverflowingHandler = ({children, handler, handleWidth = true}: Props) => {\n const checkOverflow = (el: HTMLElement) => el && el.clientWidth < el.scrollWidth;\n const resizeHandler = () => handler(checkOverflow(childrenRef.current));\n const childrenRef = useRef();\n return (\n <ReactResizeDetector handleWidth={handleWidth} onResize={resizeHandler}>\n <RootRef rootRef={childrenRef}>{children}</RootRef>\n </ReactResizeDetector>\n );\n};\nexport default OverflowingHandler;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst NUMBER_CELL_WIDTH = 90;\nconst SORT_ICON_WIDTH = 22;\nconst BAR_PADDING_WIDHT = 32;\nconst textOverflow = {\n background: 'linear-gradient(to right, rgba(255, 255, 255, 0.2), #fff 100%)',\n content: '\"\"',\n height: '100%',\n pointerEvents: 'none',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '40px'\n};\nconst BarAxis = {\n background: 'rgba(0, 0, 0, 0.38)',\n bottom: 0,\n content: '\"\"',\n height: '3px',\n left: 0,\n position: 'absolute',\n width: '1px'\n};\n\nexport const useStyles = makeStyles((theme) => ({\n attribute: {\n '&:after': textOverflow,\n alignItems: 'center',\n color: theme.palette.text.primary,\n display: 'flex',\n fontSize: '13px',\n fontWeight: 'normal',\n height: '100%',\n lineHeight: '15px',\n overflow: 'hidden',\n padding: '0 16px',\n whiteSpace: 'pre'\n },\n bar: {\n borderRadius: '0 !important',\n minHeight: '16px !important',\n position: 'initial !important' as 'initial'\n },\n colorBarContainer: {\n '&>div': {\n opacity: 1\n },\n boxSizing: 'border-box',\n height: '100%',\n padding: '5px 0 6px',\n position: 'relative',\n width: '100%'\n },\n headCell: {\n '&>div': {\n display: 'flex',\n flexDirection: (isFirstColumn) => (isFirstColumn ? 'row' : 'row-revers'),\n flexGrow: 1,\n justifyContent: 'flex-start',\n marginLeft: (isFirstColumn) => !isFirstColumn && '-26px',\n paddingLeft: '16px',\n paddingRight: (isFirstColumn) => isFirstColumn && '0'\n },\n '&>div>span': {\n flexGrow: 1,\n justifyContent: (isFirstColumn) => (isFirstColumn ? 'flex-start' : 'flex-end'),\n marginLeft: '0!important',\n width: '100%'\n },\n height: '100%',\n lineHeight: '47px'\n },\n headCellWithRange: {\n '&>div': {\n display: 'flex',\n flexDirection: 'row-revers',\n flexGrow: 1,\n justifyContent: 'flex-start',\n padding: '0 10px 0 16px'\n },\n '&>div>span': {\n flexGrow: 1,\n justifyContent: 'flex-start!important',\n width: '100%'\n },\n height: '100%',\n lineHeight: '47px'\n },\n headLabel: {\n color: theme.palette.text.primary,\n fontSize: '12px',\n fontWeight: 500,\n lineHeight: '47px',\n overflow: 'hidden',\n position: 'relative',\n whiteSpace: 'nowrap',\n '&.overflowed:after': textOverflow\n },\n labelWrapper: {\n maxWidth: `${NUMBER_CELL_WIDTH}px`,\n '&.sortable': {\n maxWidth: `${NUMBER_CELL_WIDTH - SORT_ICON_WIDTH}px`\n }\n },\n number: {\n color: theme.palette.text.primary,\n flexShrink: 0,\n fontSize: '13px',\n fontWeight: 'normal',\n lineHeight: '15px',\n marginRight: '32px',\n overflow: 'hidden',\n textAlign: 'right',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n width: `${NUMBER_CELL_WIDTH}px`\n },\n numberContainer: {\n alignItems: 'center',\n display: 'flex',\n height: '100%',\n padding: '0 10px 0 16px'\n },\n rangeLabel: {\n '&:first-child': {\n flexGrow: 1\n },\n color: theme.palette.text.secondary,\n fontSize: '12px'\n },\n rangeWrapper: {\n '&:after': {\n ...BarAxis,\n left: 'initial',\n right: 0\n },\n '&:before': BarAxis,\n alignItems: 'flex-end',\n display: 'flex',\n flexGrow: 1,\n lineHeight: '24px',\n marginLeft: '32px',\n maxWidth: `calc(100% - ${NUMBER_CELL_WIDTH + BAR_PADDING_WIDHT}px)`,\n position: 'relative',\n '&.sortable': {\n height: '100%',\n maxWidth: `calc(100% - ${BAR_PADDING_WIDHT + NUMBER_CELL_WIDTH + SORT_ICON_WIDTH}px)`\n }\n },\n tooltipTitle: {\n color: 'rgba(255, 255, 255, 0.6)'\n },\n tooltipValue: {\n whiteSpace: 'pre-wrap'\n }\n}));\n","import classnames from 'classnames';\nimport React, {useState} from 'react';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {getLabelAndMaxValue} from '../helpers';\nimport OverflowingHandler from './OverflowingHandler';\nimport {Tooltip as Tooltip} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\ntype HeadCellRendererProps = {\n headCellData: {\n label: string;\n sortable?: boolean;\n };\n headIndex?: number;\n};\n\nconst HeadCellRenderer = ({headCellData, headIndex, ...otherProps}: HeadCellRendererProps) => {\n const isFirstColumn = headIndex === 0;\n const styles = useStyles(isFirstColumn);\n const {label, maxValue} = getLabelAndMaxValue(headCellData.label);\n const formattedMaxValue = formatNumberAsMetric(Number(maxValue), 999);\n const hasRange = !!maxValue;\n const [isOverflowing, setIsOverflowing] = useState<boolean>(false);\n const labelElement = (\n <OverflowingHandler handler={setIsOverflowing}>\n <Tooltip title={isOverflowing ? label : ''}>\n <div className={classnames(styles.headLabel, {overflowed: isOverflowing})}>{label}</div>\n </Tooltip>\n </OverflowingHandler>\n );\n\n return (\n <div className={classnames({[styles.headCell]: !hasRange, [styles.headCellWithRange]: hasRange})}>\n <DefaultHeadCellRenderer\n {...otherProps}\n headCellData={{\n ...headCellData,\n label: hasRange ? (\n <>\n <div\n className={classnames(styles.rangeWrapper, {\n sortable: headCellData.sortable\n })}\n >\n <span className={styles.rangeLabel}>0</span>\n <span className={styles.rangeLabel}>{formattedMaxValue}</span>\n </div>\n <div\n className={classnames({\n [styles.labelWrapper]: !headCellData.sortable,\n sortable: headCellData.sortable\n })}\n >\n {labelElement}\n </div>\n </>\n ) : (\n labelElement\n )\n }}\n />\n </div>\n );\n};\n\nexport default HeadCellRenderer;\n","import React from 'react';\n\nimport {TableColumnHeader} from '../../../types/TableColumnHeader';\nimport {TableChartData} from '../../../types/TableChartData';\nimport {getValueByColumnId} from '../helpers';\n\nimport ChartDataTooltip from '../../ChartDataTooltip/ChartDataTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n columnsHeaders: TableColumnHeader[];\n chartData: TableChartData;\n};\n\nconst TableCellTooltip = ({columnsHeaders, chartData}: Props) => {\n const styles = useStyles();\n return (\n <ChartDataTooltip\n data={columnsHeaders.map(({label, id}) => ({\n label: <span className={styles.tooltipValue}>{label}</span>,\n value: getValueByColumnId(id, chartData)\n }))}\n />\n );\n};\nexport default TableCellTooltip;\n","import classnames from 'classnames';\nimport React from 'react';\nimport {Tooltip as Tooltip} from '@material-ui/core';\n\nimport {useClickableStyle, withTableContext} from '@reltio/components';\nimport {utils} from '@reltio/mdm-sdk';\n\nimport {TableChartData} from '../../../types/TableChartData';\nimport {TableColumnHeader} from '../../../types/TableColumnHeader';\n\nimport TableCellTooltip from './TableCellTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value?: string;\n rowValue?: TableChartData;\n onClick?: () => void;\n columnData: {\n cellClassName?: string;\n labelRenderer?: React.ComponentType<{chartData: TableChartData}>;\n };\n columnsHeaders: TableColumnHeader[];\n};\n\nexport const LabelCellRenderer = ({value = '', columnData, rowValue: chartData, columnsHeaders, onClick}: Props) => {\n const {cellClassName, labelRenderer: LabelRenderer} = columnData;\n const styles = useStyles();\n const clickable = useClickableStyle(onClick);\n const hasCustomRenderer = !!LabelRenderer;\n\n return (\n <Tooltip title={<TableCellTooltip columnsHeaders={columnsHeaders} chartData={chartData} />}>\n <div className={classnames(styles.attribute, clickable, cellClassName)} onClick={onClick}>\n {hasCustomRenderer ? <LabelRenderer chartData={chartData} /> : utils.strings.removeLineBreaks(value)}\n </div>\n </Tooltip>\n );\n};\n\nexport default withTableContext(({onItemClick, columnsHeaders}, {rowValue: {group}}) => {\n return {\n onClick:\n onItemClick &&\n (() => {\n onItemClick(group);\n }),\n columnsHeaders\n };\n})(LabelCellRenderer);\n","import classnames from 'classnames';\nimport {isNil} from 'ramda';\nimport React from 'react';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {ChartData, ColorBar, useClickableStyle, withTableContext} from '@reltio/components';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\n\nimport {TableColumnHeader} from '../../../types/TableColumnHeader';\n\nimport TableCellTooltip from './TableCellTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: number;\n columnData: {\n maxValue?: number;\n };\n rowValue?: ChartData;\n onClick?: () => void;\n columnsHeaders: TableColumnHeader[];\n};\n\nexport const NumberCellValueRenderer = ({\n value,\n columnData: {maxValue},\n rowValue: chartData,\n columnsHeaders,\n onClick\n}: Props) => {\n const styles = useStyles();\n const clickable = useClickableStyle(onClick);\n const formattedValue = value === 0 ? '0' : formatNumberAsMetric(value, 999);\n return (\n <Tooltip title={<TableCellTooltip columnsHeaders={columnsHeaders} chartData={chartData} />}>\n <div className={classnames(styles.numberContainer, clickable)} onClick={onClick}>\n <Typography className={styles.number}>{formattedValue}</Typography>\n {!isNil(maxValue) && (\n <div className={styles.colorBarContainer}>\n <ColorBar width={value} maxWidth={maxValue} className={styles.bar} />\n </div>\n )}\n </div>\n </Tooltip>\n );\n};\n\nexport default withTableContext(({onItemClick, columnsHeaders}, {rowValue: {group}}) => {\n return {\n onClick:\n onItemClick &&\n (() => {\n onItemClick(group);\n }),\n columnsHeaders\n };\n})(NumberCellValueRenderer);\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype Dimensions = {\n width: number | string;\n height: number | string;\n};\n\nexport const useStyles = makeStyles({\n tableContainer: ({width, height}: Dimensions) => ({\n height: height,\n width: width,\n display: 'flex',\n flexDirection: 'column',\n '& .hoveredRow': {\n background: 'transparent'\n },\n '& .hoveredRow:after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: 'rgba(0,0,0,0.07)',\n pointerEvents: 'none'\n }\n }),\n cellBorder: {\n borderLeft: 'none',\n borderRight: 'none!important'\n }\n});\n","import React, {useMemo} from 'react';\nimport {omit, pick, pluck} from 'ramda';\nimport {BasicTable} from '@reltio/components';\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport LabelCellRenderer from './cell-renderers/LabelCellRenderer';\nimport NumberCellValueRenderer from './cell-renderers/NumberCellValueRenderer';\nimport {TableChartData} from '../../types/TableChartData';\n\nimport {useStyles} from './styles';\n\nexport type ColumnsOptions = {\n id: string;\n label: string;\n width?: number;\n secondLabel?: string;\n sortable?: boolean;\n resizable?: boolean;\n cellClassName?: string;\n labelRenderer?: React.ComponentType<{chartData: TableChartData}>;\n};\n\ntype Props = {\n data: TableChartData[];\n width: number;\n height: number;\n onItemClick?: (group: string) => void;\n columnsOptions: ColumnsOptions[];\n basicTableRef?: React.MutableRefObject<any> | null;\n dataReltioId?: string;\n};\n\nconst ROW_HEIGHT = 28;\n\nconst getExtendedLabel = (label: string, secondLabel: string) => (secondLabel ? `${label} ${secondLabel}` : label);\n\nconst TableWithBars = ({\n width,\n height,\n data,\n columnsOptions,\n basicTableRef,\n onItemClick,\n dataReltioId,\n ...otherProps\n}: Props) => {\n const styles = useStyles({width, height});\n\n const tableClasses = useMemo(() => ({cellBorder: styles.cellBorder}), [styles]);\n const maxValue = useMemo(() => Math.max(...pluck('value', data)), [data]);\n\n const headData = useMemo(\n () =>\n columnsOptions.map((columnOptions) => ({\n resizable: false,\n sortable: false,\n headCellRenderer: HeadCellRenderer,\n rowCellValueRenderer: LabelCellRenderer,\n label: getExtendedLabel(columnOptions.label, columnOptions.secondLabel),\n initialWidth: width * columnOptions.width,\n ...(columnOptions.id === 'value'\n ? {\n label: getExtendedLabel(columnOptions.label, columnOptions.secondLabel).concat(\n `|${maxValue}`\n ),\n maxValue,\n rowCellValueRenderer: NumberCellValueRenderer\n }\n : {}),\n ...omit(['label', 'width'], columnOptions)\n })),\n [columnsOptions, maxValue, width]\n );\n\n const columnsHeaders = useMemo(() => columnsOptions.map(pick(['id', 'label'])), [columnsOptions]);\n\n const context = useMemo(\n () => ({\n onItemClick,\n columnsHeaders\n }),\n [onItemClick, columnsHeaders]\n );\n\n return (\n <div className={styles.tableContainer} data-reltio-id={dataReltioId}>\n <BasicTable\n columnsData={headData}\n rowsData={data}\n headRowHeight={48}\n getRowCellHeight={() => ROW_HEIGHT}\n classes={tableClasses}\n defaultColumnWidth={100}\n defaultColumnMinWidth={100}\n ref={basicTableRef}\n context={context}\n hoverStateEnabled\n {...otherProps}\n />\n </div>\n );\n};\n\nexport default TableWithBars;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n layoutItemContent: {\n padding: '0 0 10px'\n }\n}));\n","import React, {ReactElement, useCallback, useMemo, useState, useContext} from 'react';\nimport {withPercents, toggleSortOrder, RequestStates} from '@reltio/components';\nimport TableWithBars, {ColumnsOptions} from '../../../components/CustomTableWithBars/TableWithBars';\nimport {valueComparator as defaultComparator} from '../../../services/tableCharts';\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport {DQDashboardView} from '../../../types/DQDashboardView';\nimport {ErrorData} from '../../../types/ErrorData';\nimport {TableChartData} from '../../../types/TableChartData';\nimport TimeRangeChip from '../../../components/TimeRangeChip/TimeRangeChip';\nimport {TimeRangeContext} from '../../../contexts/TimeRangeContext';\n\nimport {useStyles} from './styles';\nimport {TimeRange} from '../../../types/TimeRange';\n\ntype Props = {\n config: DQDashboardView;\n data: TableChartData[];\n columnsOptions: ColumnsOptions[];\n title: string;\n state: RequestStates;\n onRefresh: () => void;\n infoTooltipTitle?: string | ReactElement;\n customComparator?: ({\n sortDirection,\n sortField\n }: {\n sortDirection: 'asc' | 'desc';\n sortField: string;\n }) => (a: TableChartData, b: TableChartData) => number;\n onItemClick?: (group: string) => void;\n titleChildren?: React.ReactNode;\n noDataComponentData?: ErrorData;\n};\n\nconst CustomTableWithBarsChart = ({\n config,\n data,\n title,\n columnsOptions,\n infoTooltipTitle,\n customComparator,\n onItemClick,\n titleChildren,\n state,\n onRefresh\n}: Props) => {\n const styles = useStyles();\n const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('desc');\n const [sortField, setSortField] = useState<string>('value');\n const comparator = useCallback(\n (a: TableChartData, b: TableChartData) =>\n customComparator\n ? customComparator({sortDirection, sortField})(a, b)\n : defaultComparator({sortDirection, sortField})(a, b),\n [sortDirection, sortField, customComparator]\n );\n const handleSort = (field: string) => {\n setSortDirection(() => (sortField === field ? toggleSortOrder(sortDirection) : sortDirection));\n setSortField(field);\n };\n const sortedData = useMemo(() => [...data.sort(comparator)], [comparator, data]);\n const timeRange = useContext(TimeRangeContext);\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {titleChildren}\n {timeRange !== TimeRange.TODAY && <TimeRangeChip disabled={true} />}\n </DQLayoutItemHeader>\n <DQLayoutItemContent\n className={styles.layoutItemContent}\n data={sortedData}\n loadingState={state}\n onRefresh={onRefresh}\n >\n {({data, width = 0, height = 0}) => {\n return (\n <TableWithBars\n {...{\n data,\n width,\n height,\n columnsOptions: columnsOptions,\n sorting: {\n field: sortField,\n order: sortDirection\n },\n onSort: handleSort,\n onItemClick\n }}\n />\n );\n }}\n </DQLayoutItemContent>\n </DQLayoutItemView>\n );\n};\n\nexport default withPercents(CustomTableWithBarsChart);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"88\",\n height: \"88\",\n viewBox: \"0 0 88 88\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"44\",\n cy: \"44\",\n r: \"44\",\n fill: \"#0072CE\",\n fillOpacity: \".1\"\n}), React.createElement(\"mask\", {\n id: \"svg1830866123a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"0\",\n y: \"0\",\n width: \"88\",\n height: \"88\"\n}, React.createElement(\"circle\", {\n cx: \"44\",\n cy: \"44\",\n r: \"44\",\n fill: \"#fff\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg1830866123a)\"\n}, React.createElement(\"g\", {\n opacity: \".9\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n fill: \"#fff\"\n}, React.createElement(\"path\", {\n d: \"M12.375 18.688a7 7 0 017-7h75.742a7 7 0 017 7v49.02a7 7 0 01-7 7H19.375a7 7 0 01-7-7v-49.02z\"\n}), React.createElement(\"path\", {\n opacity: \".4\",\n d: \"M16.844 22.813a7 7 0 017-7h75.741a7 7 0 017 7v49.02a7 7 0 01-7 7H23.844a7 7 0 01-7-7v-49.02z\"\n})), React.createElement(\"ellipse\", {\n opacity: \".5\",\n cx: \"87.908\",\n cy: \"29.318\",\n rx: \"1.496\",\n ry: \"1.5\",\n fill: \"#6DBCFF\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.854 31.381a3.562 3.562 0 013.552-3.563 3.562 3.562 0 013.552 3.563 3.562 3.562 0 01-3.552 3.564 3.562 3.562 0 01-3.552-3.564z\",\n fill: \"#E3EBF4\"\n}), React.createElement(\"path\", {\n opacity: \".5\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 29.052c0-.726.588-1.313 1.313-1.313h23.983a1.313 1.313 0 110 2.626H32.01a1.313 1.313 0 01-1.313-1.313z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"path\", {\n opacity: \".43\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 33.553c0-.518.42-.938.938-.938h43.37a.938.938 0 010 1.876h-43.37a.938.938 0 01-.938-.938z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 36.554c0-.31.252-.563.563-.563h13.993a.563.563 0 110 1.126H31.26a.563.563 0 01-.563-.563z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"rect\", {\n opacity: \".5\",\n x: \"19.854\",\n y: \"17.689\",\n width: \"29.914\",\n height: \"4.126\",\n rx: \"2.063\",\n fill: \"#645F6D\"\n}), React.createElement(\"ellipse\", {\n opacity: \".5\",\n cx: \"87.908\",\n cy: \"43.573\",\n rx: \"1.496\",\n ry: \"1.5\",\n fill: \"#6DBCFF\"\n}), React.createElement(\"rect\", {\n x: \"19.854\",\n y: \"42.072\",\n width: \"7.105\",\n height: \"7.127\",\n rx: \"3.552\",\n fill: \"#E3EBF4\"\n}), React.createElement(\"path\", {\n opacity: \".5\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 43.306c0-.725.588-1.313 1.313-1.313h28.41a1.313 1.313 0 110 2.626H32.01a1.313 1.313 0 01-1.313-1.313z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"path\", {\n opacity: \".43\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 47.808c0-.518.42-.938.938-.938h48.23a.938.938 0 110 1.876h-48.23a.938.938 0 01-.938-.938z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 50.809c0-.31.252-.563.563-.563h38.884a.563.563 0 110 1.125H31.26a.563.563 0 01-.563-.562z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"ellipse\", {\n opacity: \".5\",\n cx: \"87.908\",\n cy: \"57.828\",\n rx: \"1.496\",\n ry: \"1.5\",\n fill: \"#6DBCFF\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.854 59.891a3.562 3.562 0 013.552-3.564 3.562 3.562 0 013.552 3.564 3.562 3.562 0 01-3.552 3.564 3.562 3.562 0 01-3.552-3.564z\",\n fill: \"#E3EBF4\"\n}), React.createElement(\"path\", {\n opacity: \".5\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 57.561c0-.725.588-1.313 1.313-1.313h38.132a1.313 1.313 0 110 2.626H32.01a1.313 1.313 0 01-1.313-1.313z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"path\", {\n opacity: \".43\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 62.063c0-.518.42-.938.938-.938h31.778a.938.938 0 110 1.875H31.635a.938.938 0 01-.938-.937z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 65.064c0-.311.252-.563.563-.563h13.993a.563.563 0 110 1.125H31.26a.563.563 0 01-.563-.562z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 3.094h88V88H0V3.094z\",\n fill: \"url(#paint0_linear_3200_4362)\"\n}), React.createElement(\"path\", {\n d: \"M79.893 76.85H21.308v14.184h58.585V76.85z\",\n fill: \"#F5C056\"\n}), React.createElement(\"path\", {\n d: \"M79.893 76.85H74.6v14.184h5.293V76.85z\",\n fill: \"#E99B00\"\n}), React.createElement(\"path\", {\n d: \"M48.73 76.893H26.283v14.184H48.73V76.893z\",\n fill: \"#FFEA5A\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M44.894 57.829c-1.687-4.26 13.113-4.043 11.413 0-1.353 3.218-1.353 7.53 0 12.934H44.894C46 64.93 46 60.618 44.894 57.83z\",\n fill: \"#FFD264\"\n}), React.createElement(\"path\", {\n d: \"M61.253 70.383H39.949v2.663h21.304v-2.663z\",\n fill: \"#FFD264\"\n}), React.createElement(\"path\", {\n d: \"M47.938 70.383h-4.185v2.663h4.185v-2.663z\",\n fill: \"#FFEA5A\"\n}), React.createElement(\"path\", {\n d: \"M64.676 73.046h-28.15v3.804h28.15v-3.804z\",\n fill: \"#795D1A\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M35.764 16.363v5.325H15.602v.143c0 13.634 8.992 24.714 20.162 24.961v2.994c-14-.986-25.108-15.488-25.108-33.233v-.19h25.108z\",\n fill: \"#FFCB64\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M64.677 16.363v5.325h20.161v.143c0 13.634-8.991 24.714-20.161 24.961v2.994c13.999-.986 25.107-15.488 25.107-33.233v-.19H64.677z\",\n fill: \"#ED985C\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M56.307 57.829c-1.353 3.218-1.353 7.53 0 12.934h-5.706V54.715c3.278.026 6.556 1.091 5.706 3.114z\",\n fill: \"#F4B046\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M64.676 73.046v3.804H50.601v-3.804h14.075z\",\n fill: \"#4F350B\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M61.253 70.383v2.663H50.6v-2.663h10.652z\",\n fill: \"#F4B046\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M74.933 10.656a102.429 102.429 0 01.01 2.663h-1.897l-.38 3.044h2.193c-1.138 25.55-13.019 45.65-24.448 45.65-11.43 0-23.311-20.1-24.449-45.65h2.194l-.38-3.044h-1.898a91.212 91.212 0 01.01-2.663h49.045z\",\n fill: \"#FFCE66\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M45.937 10.656c.006.569.01 1.14.01 1.712v.952h-.044l-.241 3.043h.294c.126 24.948 1.435 39.335 3.123 45.65-8.89-3.2-15.661-20.403-16.308-45.65h1.465l-.241-3.044h-1.271a158.252 158.252 0 01.006-2.663h13.207z\",\n fill: \"#FFEA5A\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M70.284 16.363h-3.91l.422-3.044h3.581a81.301 81.301 0 00-.01-2.663h4.566a102.429 102.429 0 01.01 2.663h-1.897l-.38 3.044h2.193c-1.138 25.55-13.019 45.65-24.448 45.65-.414 0-.828-.026-1.241-.078 11.92-1.382 19.899-20.946 21.114-45.572zm.083-5.707h-44.48 44.48z\",\n fill: \"#F4B046\"\n}), React.createElement(\"path\", {\n opacity: \".519\",\n d: \"M72.665 13.32h-44.51v3.043h44.51v-3.044z\",\n fill: \"#F4B046\"\n}), React.createElement(\"path\", {\n d: \"M48.318 73.046h-5.706v3.804h5.706v-3.804z\",\n fill: \"#96691F\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M65.526 10.656h4.235L58.973 35.935h-4.235l10.788-25.279z\",\n fill: \"url(#paint1_linear_3200_4362)\"\n}), React.createElement(\"g\", {\n filter: \"url(#filter0_d_3200_4362)\"\n}, React.createElement(\"path\", {\n d: \"M56.909 56.472c5.993 0 10.85-4.858 10.85-10.85 0-5.994-4.857-10.852-10.85-10.852-5.993 0-10.852 4.858-10.852 10.851 0 5.993 4.859 10.851 10.852 10.851z\",\n fill: \"#000\"\n})), React.createElement(\"path\", {\n d: \"M56.909 56.472c5.993 0 10.85-4.858 10.85-10.85 0-5.994-4.857-10.852-10.85-10.852-5.993 0-10.852 4.858-10.852 10.851 0 5.993 4.859 10.851 10.852 10.851z\",\n fill: \"#DD612C\"\n}), React.createElement(\"path\", {\n d: \"M56.909 54.302a8.681 8.681 0 100-17.362 8.681 8.681 0 000 17.362z\",\n fill: \"#FFCE66\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M56.909 36.94a8.685 8.685 0 018.347 6.291c-5.74.351-10.312 5.02-10.51 10.8a8.699 8.699 0 01-6.008-5.47A11.212 11.212 0 0054.9 37.174a8.684 8.684 0 012.008-.234z\",\n fill: \"#FFF18C\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M48.202 10.656l10.862 25.341H54.83L43.646 10.705l4.556-.049z\",\n fill: \"#F83D3D\"\n})), React.createElement(\"defs\", null, React.createElement(\"linearGradient\", {\n id: \"paint0_linear_3200_4362\",\n x1: \"0\",\n y1: \"3.094\",\n x2: \"0\",\n y2: \"88\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopColor: \"#FAFAFA\",\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#F4F4F4\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint1_linear_3200_4362\",\n x1: \"62.25\",\n y1: \"10.656\",\n x2: \"62.25\",\n y2: \"35.935\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopColor: \"#B93131\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#831616\"\n})), React.createElement(\"filter\", {\n id: \"filter0_d_3200_4362\",\n x: \"40.057\",\n y: \"30.77\",\n width: \"33.702\",\n height: \"33.703\",\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n}, React.createElement(\"feFlood\", {\n floodOpacity: \"0\",\n result: \"BackgroundImageFix\"\n}), React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",\n result: \"hardAlpha\"\n}), React.createElement(\"feOffset\", {\n dy: \"2\"\n}), React.createElement(\"feGaussianBlur\", {\n stdDeviation: \"3\"\n}), React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0.0335613 0 0 0 0 0.334579 0 0 0 0 0.412601 0 0 0 0.5 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_3200_4362\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_3200_4362\",\n result: \"shape\"\n})))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"88\",\n height: \"88\",\n viewBox: \"0 0 88 88\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"44\",\n cy: \"44\",\n r: \"44\",\n fill: \"#0072CE\",\n fillOpacity: \".1\"\n}), React.createElement(\"mask\", {\n id: \"svg355575424a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"0\",\n y: \"0\",\n width: \"88\",\n height: \"88\"\n}, React.createElement(\"circle\", {\n cx: \"44\",\n cy: \"44\",\n r: \"44\",\n fill: \"#fff\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg355575424a)\"\n}, React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M-5.5 3.094h88V88h-88V3.094z\",\n fill: \"url(#paint0_linear_3488_11934)\"\n}), React.createElement(\"path\", {\n opacity: \".05\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M64.543 19.547L84.7 39.704V90.88H32.1L17.875 77.372V19.547h46.668z\",\n fill: \"url(#paint1_linear_3488_11934)\"\n}), React.createElement(\"path\", {\n opacity: \".06\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.156 19.938h69.438A2.406 2.406 0 0188 22.343v53.968a2.406 2.406 0 01-2.406 2.407H16.156a2.406 2.406 0 01-2.406-2.406v-53.97a2.406 2.406 0 012.406-2.405z\",\n fill: \"#000\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.188 19.25H86.28c.95 0 1.719.77 1.719 1.719v53.968c0 .95-.77 1.72-1.719 1.72H17.187c-.949 0-1.718-.77-1.718-1.72V20.97c0-.95.77-1.719 1.719-1.719z\",\n fill: \"#fff\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.223 24.968c0-.57.462-1.031 1.031-1.031h14.309a1.031 1.031 0 010 2.063H37.254c-.57 0-1.031-.462-1.031-1.032z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.094 29.093c0-.57.462-1.031 1.031-1.031h22.07a1.031 1.031 0 010 2.063h-22.07c-.57 0-1.031-.462-1.031-1.032z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.223 56.031c0-.57.462-1.031 1.031-1.031h14.309a1.031 1.031 0 010 2.063H37.254c-.57 0-1.031-.462-1.031-1.032z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.094 60.156c0-.57.462-1.031 1.031-1.031h22.07a1.031 1.031 0 010 2.063h-22.07c-.57 0-1.031-.462-1.031-1.032z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.223 66.344c0-.57.462-1.031 1.031-1.031h28.059a1.031 1.031 0 010 2.062H37.254c-.57 0-1.031-.462-1.031-1.031z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.094 70.469c0-.57.462-1.031 1.031-1.031h25.508a1.031 1.031 0 010 2.062H37.125c-.57 0-1.031-.462-1.031-1.031z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.567 35.406c0-.57.461-1.031 1.03-1.031h28.06a1.031 1.031 0 110 2.063h-28.06c-.569 0-1.03-.462-1.03-1.032z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.438 39.531c0-.57.461-1.031 1.03-1.031H70.54a1.031 1.031 0 010 2.063H48.47c-.57 0-1.032-.462-1.032-1.032z\",\n fill: \"#979797\"\n}), React.createElement(\"circle\", {\n cx: \"23.031\",\n cy: \"27.156\",\n r: \"3.094\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.031\",\n cy: \"27.156\",\n r: \"3.094\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"41.25\",\n cy: \"36.438\",\n r: \"2.063\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"41.25\",\n cy: \"46.75\",\n r: \"2.063\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.031\",\n cy: \"58.094\",\n r: \"3.094\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.031\",\n cy: \"68.406\",\n r: \"3.094\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.567 45.719c0-.57.461-1.032 1.03-1.032h28.06a1.031 1.031 0 110 2.063h-28.06c-.569 0-1.03-.462-1.03-1.031z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.438 49.844c0-.57.461-1.032 1.03-1.032h25.509a1.031 1.031 0 010 2.063H48.469c-.57 0-1.032-.462-1.032-1.031z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M31.802 37.125v-2.75h-.688V48.251h3.843v-.688h-3.155v-9.75h3.155v-.688h-3.155z\",\n fill: \"#2B98F0\"\n}), React.createElement(\"path\", {\n opacity: \".54\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.68 26.469l-1.215 1.215-1.215-1.215h2.43z\",\n fill: \"#000\"\n}), React.createElement(\"path\", {\n opacity: \".6\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.188 7.563h63.937c1.14 0 2.063.923 2.063 2.062v6.188c0 1.139-.924 2.062-2.063 2.062H17.187a2.062 2.062 0 01-2.062-2.063V9.625c0-1.14.923-2.063 2.063-2.063z\",\n fill: \"#fff\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.938 12.719c0-1.14.923-2.063 2.062-2.063h24.063a2.063 2.063 0 010 4.125H22a2.062 2.062 0 01-2.063-2.062zM50.875 12.719c0-1.14.923-2.063 2.063-2.063h3.437a2.063 2.063 0 010 4.125h-3.438a2.062 2.062 0 01-2.062-2.062z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n d: \"M37.687 66.48l8.942 8.309v.958l19.925 19.702 31.064-.552 7.006-25.47-34.487-34.144-11.2.567c-3.238-1.86-5.34-3.02-6.306-3.48-.54-.258-.383 5.565-2.755 7.725-1.243 1.133-3.462 4.104-6.657 8.914l-5.532 17.47z\",\n fill: \"url(#paint2_linear_3488_11934)\"\n}), React.createElement(\"g\", {\n filter: \"url(#filter0_d_3488_11934)\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n}, React.createElement(\"path\", {\n d: \"M67.338 33.427a22.7 22.7 0 013.043 1.642l-.913 4.312a18.719 18.719 0 014.236 4.554l4.28-.699a23.425 23.425 0 012.392 6.47l-3.639 2.443c.262 2.058.2 4.18-.216 6.285l3.466 2.572a24.254 24.254 0 01-2.838 6.375l-4.231-.855a19.61 19.61 0 01-4.526 4.366l.62 4.34a23.426 23.426 0 01-6.409 2.551l-2.345-3.649a18.72 18.72 0 01-6.219-.1l-2.593 3.564a22.7 22.7 0 01-6.224-2.757l.912-4.304a18.715 18.715 0 01-4.281-4.567l-4.285.7a23.424 23.424 0 01-2.4-6.438l3.633-2.44a19.607 19.607 0 01.21-6.384l-3.465-2.57a24.263 24.263 0 012.823-6.34l4.229.855a19.605 19.605 0 014.604-4.429l-.618-4.332c2-1.154 4.155-2.005 6.39-2.524l2.347 3.652a18.713 18.713 0 016.259.125l2.588-3.557c1.069.296 2.128.675 3.17 1.14zM60.075 49.74c-2.804-1.248-6.112.064-7.388 2.93-1.276 2.867-.038 6.203 2.766 7.452 2.804 1.248 6.112-.064 7.388-2.93 1.276-2.867.038-6.203-2.766-7.452z\",\n fill: \"#6B93AC\"\n}), React.createElement(\"path\", {\n d: \"M67.338 33.427a22.7 22.7 0 013.043 1.642l-.913 4.312c.779.597 1.503 1.25 2.168 1.95l-10.07 9.392a5.444 5.444 0 00-1.491-.983c-2.804-1.248-6.112.064-7.388 2.93a5.7 5.7 0 00.626 5.749l-10.071 9.39c-.502-.585-.965-1.2-1.39-1.84l-4.284.7a23.424 23.424 0 01-2.4-6.437l3.633-2.44a19.607 19.607 0 01.21-6.384l-3.465-2.57a24.263 24.263 0 012.823-6.34l4.229.855a19.605 19.605 0 014.604-4.429l-.618-4.332c2-1.154 4.155-2.005 6.39-2.524l2.347 3.652a18.713 18.713 0 016.259.125l2.588-3.557c1.069.296 2.128.675 3.17 1.14z\",\n fill: \"#7CA6BF\"\n}), React.createElement(\"path\", {\n d: \"M62.886 42.644c6.409 2.854 9.24 10.479 6.322 17.03-2.917 6.553-10.478 9.552-16.887 6.698-6.409-2.853-9.24-10.478-6.322-17.03 2.917-6.553 10.478-9.551 16.887-6.698zm-1.32 2.966c-4.808-2.14-10.478.109-12.666 5.023-2.188 4.914-.065 10.633 4.742 12.773 4.806 2.14 10.477-.108 12.665-5.023 2.188-4.914.065-10.633-4.742-12.773z\",\n fill: \"#AAC4D5\"\n}), React.createElement(\"path\", {\n d: \"M62.886 42.644a12.424 12.424 0 014.22 3.075l-2.366 2.207a9.317 9.317 0 00-3.175-2.316c-4.807-2.14-10.477.109-12.665 5.023-1.635 3.673-.863 7.795 1.638 10.536l-2.367 2.208c-3.325-3.656-4.35-9.145-2.172-14.035 2.917-6.553 10.478-9.551 16.887-6.698z\",\n fill: \"#CBDDE9\"\n}))), React.createElement(\"defs\", null, React.createElement(\"linearGradient\", {\n id: \"paint0_linear_3488_11934\",\n x1: \"-5.5\",\n y1: \"3.094\",\n x2: \"-5.5\",\n y2: \"88\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopColor: \"#FAFAFA\",\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#F4F4F4\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint1_linear_3488_11934\",\n x1: \"91.478\",\n y1: \"62.257\",\n x2: \"53.241\",\n y2: \"26.703\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint2_linear_3488_11934\",\n x1: \"86.975\",\n y1: \"77.519\",\n x2: \"49.809\",\n y2: \"46.968\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopColor: \"#90A4AE\",\n stopOpacity: \"0\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopOpacity: \".75\"\n})), React.createElement(\"filter\", {\n id: \"filter0_d_3488_11934\",\n x: \"32.168\",\n y: \"30.067\",\n width: \"53.209\",\n height: \"53.716\",\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n}, React.createElement(\"feFlood\", {\n floodOpacity: \"0\",\n result: \"BackgroundImageFix\"\n}), React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",\n result: \"hardAlpha\"\n}), React.createElement(\"feOffset\", {\n dx: \"1\",\n dy: \"2\"\n}), React.createElement(\"feGaussianBlur\", {\n stdDeviation: \"2\"\n}), React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_3488_11934\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_3488_11934\",\n result: \"shape\"\n})))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"88\",\n height: \"88\",\n viewBox: \"0 0 88 88\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"44\",\n cy: \"44\",\n r: \"44\",\n fill: \"#0072CE\",\n fillOpacity: \".1\"\n}), React.createElement(\"mask\", {\n id: \"svg1954152798a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"0\",\n y: \"0\",\n width: \"88\",\n height: \"88\"\n}, React.createElement(\"circle\", {\n cx: \"44\",\n cy: \"44\",\n r: \"44\",\n fill: \"#fff\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg1954152798a)\"\n}, React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M-5.5 3.094h88V88h-88V3.094z\",\n fill: \"url(#paint0_linear_4523_4542)\"\n}), React.createElement(\"path\", {\n opacity: \".05\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M64.543 19.547L84.7 39.704V90.88H32.1L17.875 77.372V19.547h46.668z\",\n fill: \"url(#paint1_linear_4523_4542)\"\n}), React.createElement(\"path\", {\n opacity: \".06\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.156 19.938h69.438A2.406 2.406 0 0188 22.343v53.968a2.406 2.406 0 01-2.406 2.407H16.156a2.406 2.406 0 01-2.406-2.406v-53.97a2.406 2.406 0 012.406-2.405z\",\n fill: \"#000\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.188 19.25H86.28c.95 0 1.719.77 1.719 1.719v53.968c0 .95-.77 1.72-1.719 1.72H17.187c-.949 0-1.718-.77-1.718-1.72V20.97c0-.95.77-1.719 1.719-1.719z\",\n fill: \"#fff\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.223 24.968c0-.57.462-1.031 1.031-1.031h14.309a1.031 1.031 0 010 2.063H37.254c-.57 0-1.031-.462-1.031-1.032z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.094 29.093c0-.57.462-1.031 1.031-1.031h22.07a1.031 1.031 0 110 2.063h-22.07c-.57 0-1.031-.462-1.031-1.032z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.223 56.031c0-.57.462-1.031 1.031-1.031h14.309a1.031 1.031 0 010 2.063H37.254c-.57 0-1.031-.462-1.031-1.032z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.094 60.156c0-.57.462-1.031 1.031-1.031h22.07a1.031 1.031 0 110 2.063h-22.07c-.57 0-1.031-.462-1.031-1.032z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.223 66.344c0-.57.462-1.031 1.031-1.031h28.059a1.031 1.031 0 010 2.063H37.254c-.57-.001-1.031-.463-1.031-1.032z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.094 70.469c0-.57.462-1.031 1.031-1.031h25.508a1.031 1.031 0 010 2.063H37.125c-.57-.001-1.031-.463-1.031-1.032z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.567 35.406c0-.57.461-1.031 1.03-1.031h28.06a1.031 1.031 0 010 2.063h-28.06c-.569 0-1.03-.462-1.03-1.032z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.438 39.531c0-.57.461-1.031 1.03-1.031H70.54a1.031 1.031 0 010 2.063H48.47c-.57 0-1.032-.462-1.032-1.032z\",\n fill: \"#979797\"\n}), React.createElement(\"circle\", {\n cx: \"23.031\",\n cy: \"27.156\",\n r: \"3.094\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.031\",\n cy: \"27.156\",\n r: \"3.094\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"41.25\",\n cy: \"36.438\",\n r: \"2.063\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"41.25\",\n cy: \"46.75\",\n r: \"2.063\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.031\",\n cy: \"58.094\",\n r: \"3.094\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.031\",\n cy: \"68.406\",\n r: \"3.094\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.567 45.719c0-.57.461-1.032 1.03-1.032h28.06a1.031 1.031 0 010 2.063h-28.06c-.569 0-1.03-.462-1.03-1.031z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.438 49.844c0-.57.461-1.032 1.03-1.032h25.509a1.031 1.031 0 010 2.063H48.469c-.57 0-1.032-.462-1.032-1.031z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M31.802 37.125v-2.75h-.688V48.251h3.843v-.688h-3.155v-9.75h3.155v-.688h-3.155z\",\n fill: \"#2B98F0\"\n}), React.createElement(\"path\", {\n opacity: \".54\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.68 26.469l-1.215 1.215-1.215-1.215h2.43z\",\n fill: \"#000\"\n}), React.createElement(\"path\", {\n opacity: \".6\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.188 7.563h63.937c1.14 0 2.063.923 2.063 2.062v6.188c0 1.139-.924 2.062-2.063 2.062H17.187a2.062 2.062 0 01-2.062-2.063V9.625c0-1.14.923-2.063 2.063-2.063z\",\n fill: \"#fff\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.938 12.719c0-1.14.923-2.063 2.062-2.063h24.063a2.062 2.062 0 010 4.125H22a2.062 2.062 0 01-2.063-2.062zM50.875 12.719c0-1.14.923-2.063 2.063-2.063h3.437a2.062 2.062 0 110 4.125h-3.438a2.062 2.062 0 01-2.062-2.062z\",\n fill: \"#979797\"\n}), React.createElement(\"g\", {\n filter: \"url(#filter0_d_4523_4542)\"\n}, React.createElement(\"path\", {\n d: \"M57.406 74.25c9.493 0 17.188-7.695 17.188-17.188 0-9.492-7.695-17.187-17.188-17.187-9.492 0-17.187 7.695-17.187 17.188 0 9.492 7.695 17.187 17.187 17.187z\",\n fill: \"#000\"\n})), React.createElement(\"path\", {\n d: \"M57.406 74.25c9.493 0 17.188-7.695 17.188-17.188 0-9.492-7.695-17.187-17.188-17.187-9.492 0-17.187 7.695-17.187 17.188 0 9.492 7.695 17.187 17.187 17.187z\",\n fill: \"#4A90E2\"\n}), React.createElement(\"path\", {\n opacity: \".15\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M57.406 34.719c12.34 0 22.344 10.003 22.344 22.343S69.746 79.406 57.406 79.406c-12.34 0-22.343-10.003-22.343-22.344 0-12.34 10.003-22.343 22.343-22.343zm-.172 2.406c-10.916 0-19.765 8.85-19.765 19.766 0 10.916 8.85 19.765 19.765 19.765C68.151 76.656 77 67.806 77 56.891c0-10.917-8.85-19.766-19.766-19.766z\",\n fill: \"#4A90E2\"\n}), React.createElement(\"path\", {\n opacity: \".3\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M57.406 38.844c10.062 0 18.219 8.157 18.219 18.218 0 10.062-8.157 18.22-18.219 18.22-10.062 0-18.218-8.158-18.218-18.22 0-10.061 8.156-18.218 18.218-18.218zm0 2.043c-8.933 0-16.175 7.242-16.175 16.175 0 8.934 7.242 16.176 16.175 16.176 8.934 0 16.176-7.242 16.176-16.175 0-8.934-7.242-16.176-16.176-16.176z\",\n fill: \"#4A90E2\"\n}), React.createElement(\"path\", {\n opacity: \".05\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M57.406 26.469C74.303 26.469 88 40.166 88 57.062c0 16.897-13.697 30.594-30.594 30.594-16.896 0-30.593-13.697-30.593-30.594 0-16.896 13.697-30.593 30.593-30.593zm-.172 3.437c-14.903 0-26.984 12.082-26.984 26.985 0 14.903 12.081 26.984 26.984 26.984 14.903 0 26.985-12.081 26.985-26.984 0-14.903-12.082-26.985-26.985-26.985z\",\n fill: \"#4A90E2\"\n}), React.createElement(\"path\", {\n d: \"M57.406 71.844c8.164 0 14.782-6.618 14.782-14.781 0-8.164-6.618-14.782-14.782-14.782-8.163 0-14.781 6.618-14.781 14.782 0 8.163 6.618 14.78 14.781 14.78z\",\n fill: \"#61A3F1\"\n}), React.createElement(\"path\", {\n opacity: \".05\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M58.298 46.448L75.18 63.33 66.066 75.41h-2.029l-7.582-7.582 1.006-3.178.837-18.201z\",\n fill: \"url(#paint2_linear_4523_4542)\"\n}), React.createElement(\"g\", {\n filter: \"url(#filter1_d_4523_4542)\"\n}, React.createElement(\"circle\", {\n cx: \"57.406\",\n cy: \"47.781\",\n r: \"1.719\",\n fill: \"#fff\"\n})), React.createElement(\"g\", {\n filter: \"url(#filter2_d_4523_4542)\"\n}, React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M55.688 53.969a1.719 1.719 0 113.438 0v12.375a1.719 1.719 0 11-3.438 0V53.969z\",\n fill: \"#fff\"\n}))), React.createElement(\"defs\", null, React.createElement(\"linearGradient\", {\n id: \"paint0_linear_4523_4542\",\n x1: \"-5.5\",\n y1: \"3.094\",\n x2: \"-5.5\",\n y2: \"88\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopColor: \"#FAFAFA\",\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#F4F4F4\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint1_linear_4523_4542\",\n x1: \"91.478\",\n y1: \"62.257\",\n x2: \"53.241\",\n y2: \"26.703\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint2_linear_4523_4542\",\n x1: \"77.079\",\n y1: \"63.788\",\n x2: \"62.929\",\n y2: \"54.707\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\"\n})), React.createElement(\"filter\", {\n id: \"filter0_d_4523_4542\",\n x: \"36.219\",\n y: \"37.875\",\n width: \"42.375\",\n height: \"42.375\",\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n}, React.createElement(\"feFlood\", {\n floodOpacity: \"0\",\n result: \"BackgroundImageFix\"\n}), React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",\n result: \"hardAlpha\"\n}), React.createElement(\"feOffset\", {\n dy: \"2\"\n}), React.createElement(\"feGaussianBlur\", {\n stdDeviation: \"2\"\n}), React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_4523_4542\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_4523_4542\",\n result: \"shape\"\n})), React.createElement(\"filter\", {\n id: \"filter1_d_4523_4542\",\n x: \"51.688\",\n y: \"44.063\",\n width: \"11.438\",\n height: \"11.438\",\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n}, React.createElement(\"feFlood\", {\n floodOpacity: \"0\",\n result: \"BackgroundImageFix\"\n}), React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",\n result: \"hardAlpha\"\n}), React.createElement(\"feOffset\", {\n dy: \"2\"\n}), React.createElement(\"feGaussianBlur\", {\n stdDeviation: \"2\"\n}), React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_4523_4542\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_4523_4542\",\n result: \"shape\"\n})), React.createElement(\"filter\", {\n id: \"filter2_d_4523_4542\",\n x: \"51.688\",\n y: \"50.25\",\n width: \"11.438\",\n height: \"23.813\",\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n}, React.createElement(\"feFlood\", {\n floodOpacity: \"0\",\n result: \"BackgroundImageFix\"\n}), React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",\n result: \"hardAlpha\"\n}), React.createElement(\"feOffset\", {\n dy: \"2\"\n}), React.createElement(\"feGaussianBlur\", {\n stdDeviation: \"2\"\n}), React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_4523_4542\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_4523_4542\",\n result: \"shape\"\n})))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n title: {\n whiteSpace: 'nowrap',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n titleCount: {\n overflow: 'hidden',\n lineHeight: '24px',\n textOverflow: 'ellipsis'\n },\n viewContent: {\n height: '100%',\n overflow: 'hidden',\n position: 'relative',\n padding: '0 16px 10px'\n },\n countProfiles: {\n color: theme.palette.text.primary,\n fontWeight: 700\n }\n}));\n","import React, {ReactElement} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {Link as Link} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {BasicViewContent, EMPTY_STATE_ICONS} from '@reltio/components';\nimport {DQDataLevel} from '@reltio/mdm-sdk';\nimport NiceOneIcon from '../icons/niceOne.svg';\nimport SettingsIcon from '../icons/settingsIcon.svg';\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport NotSupportedIcon from '../icons/notSupportedIcon.svg';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport DQDashboardNoData from '../../../components/DQDashboardNoData/DQDashboardNoData';\nimport {DQDashboardView} from '../../../types/DQDashboardView';\nimport {useStyles} from './styles';\n\nexport enum VVFNoDataChartType {\n DVF_NOT_SUPPORTED = 'dvfNotSupported',\n DVF_NOT_CONFIGURE = 'dvfNotConfigured',\n DATA_VALID = 'dataValid',\n PERMISSION_DENIED = 'permissionDenied'\n}\ntype Props = {\n chartType?: VVFNoDataChartType;\n dataLevel: DQDataLevel;\n title: string;\n infoTooltipTitle?: string | ReactElement;\n titleChildren?: React.ReactNode;\n dvfConfigLink: string;\n config: DQDashboardView;\n};\n\nconst VVFChartNoData = ({\n chartType,\n dataLevel,\n title: chartTitle,\n infoTooltipTitle,\n titleChildren,\n dvfConfigLink,\n config\n}: Props) => {\n const styles = useStyles();\n let icon, message, title;\n const dataSourceLabel =\n dataLevel === DQDataLevel.ATTRIBUTE_TYPE ? i18n.text('attribute type') : i18n.text('entity type');\n switch (chartType) {\n case VVFNoDataChartType.DVF_NOT_SUPPORTED: {\n icon = NotSupportedIcon;\n title = i18n.text('Data validation functions are not supported for\\nReference attributes at this time.');\n break;\n }\n case VVFNoDataChartType.DVF_NOT_CONFIGURE: {\n icon = SettingsIcon;\n message = i18n.text('If we spot any validation issues, we’ll display them here.');\n title = (\n <>\n <Link\n href={dvfConfigLink}\n target=\"_blank\"\n component={dvfConfigLink ? 'a' : 'span'}\n color={dvfConfigLink ? 'primary' : 'inherit'}\n underline={dvfConfigLink ? 'hover' : 'none'}\n data-reltio-id=\"reltio-dq-dashboard-define-dvf-link\"\n >\n {`${i18n.text('Define some data validation functions')} `}\n </Link>\n {i18n.text('for this ${dataSourceLabel} (or ask your Tenant Admin).', {dataSourceLabel})}\n </>\n );\n break;\n }\n case VVFNoDataChartType.DATA_VALID: {\n icon = NiceOneIcon;\n message = i18n.text(\n 'We didn’t spot any validation issues for this ${dataSourceLabel}.\\nYou can kick back and enjoy a cold one.',\n {dataSourceLabel}\n );\n title = i18n.text('Nice one!');\n break;\n }\n case VVFNoDataChartType.PERMISSION_DENIED: {\n icon = EMPTY_STATE_ICONS.ERROR;\n message = i18n.text('Please contact your Tenant Admin to change permissions');\n title = i18n.text('You don’t currently have permission to view this chart');\n }\n }\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={chartTitle} infoTooltipTitle={infoTooltipTitle}>\n {titleChildren}\n </DQLayoutItemHeader>\n <BasicViewContent className={styles.viewContent}>\n <ReactResizeDetector refreshMode=\"debounce\" refreshRate={100} handleHeight>\n {({height = 0}) => (\n <DQDashboardNoData\n height={height}\n data={{\n Icon: icon,\n title,\n message\n }}\n />\n )}\n </ReactResizeDetector>\n </BasicViewContent>\n </DQLayoutItemView>\n );\n};\n\nexport default VVFChartNoData;\n","import {isNil} from 'ramda';\nimport React from 'react';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport i18n from 'ui-i18n';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n isDataValid: boolean;\n totalProfiles: number;\n invalidProfiles: number;\n};\nexport const TitleChildrenValue = ({isDataValid, totalProfiles, invalidProfiles}: Props) => {\n const styles = useStyles();\n\n const getTitleChildrenValue = () => {\n if (isDataValid) {\n return i18n.text('0 profiles');\n }\n\n return !isNil(invalidProfiles) ? (\n <>\n <span className={styles.countProfiles}>{formatNumberAsMetric(invalidProfiles)}</span>\n {` (${Math.round((invalidProfiles / totalProfiles) * 100)}% ${i18n.text(\n 'out of'\n )} ${formatNumberAsMetric(totalProfiles)}) ${\n invalidProfiles !== 1 ? i18n.text('profiles') : i18n.text('profile')\n }`}\n </>\n ) : null;\n };\n return <Typography className={styles.titleCount}>{getTitleChildrenValue()}</Typography>;\n};\n","import React, {useContext, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {propEq, pluck} from 'ramda';\n\nimport i18n from 'ui-i18n';\nimport mdmModule from '@reltio/mdm-module';\nimport {ApiErrorCode, DataValidationFunction, DQDataLevel, Metadata, StatusVF} from '@reltio/mdm-sdk';\nimport {RequestStates} from '@reltio/components';\n\nimport {DataLevelContext} from '../../../contexts/DataLevelContext';\nimport {DetailedAttributeTypeContext} from '../../../contexts/DetailedAttributeTypeContext';\nimport {DVFContext} from '../../../contexts/DVFContext';\nimport {EntityTypeContext} from '../../../contexts/EntityTypeContext';\nimport {useChartData} from '../../../hooks/useChartData';\nimport {useEntityCount} from '../../../hooks/useEntityCount';\nimport {useInvalidProfiles} from '../../../hooks/useInvalidProfiles';\nimport {useSearchRedirect} from '../../../hooks/useSearchRedirect';\nimport {ViewProps} from '../../../types/ViewProps';\nimport {getDVFsForAttribute} from '../../../services/attributes';\nimport {isReferenceChild} from '../../../services/attributeDetails';\nimport {\n getValidationChartData,\n getEntityLevelValidationChartData,\n getValidationSearchState,\n valueComparator\n} from '../../../services/tableCharts';\nimport {getColumnsOptions} from './helpers';\n\nimport CustomTableWithBarsChart from '../CustomTableWithBarsChart/CustomTableWithBarsChart';\nimport VVFChartNoData, {VVFNoDataChartType} from './VVFChartNodata';\nimport {ChartDataTooltip, InfoDataRenderer} from '../../../components/ChartDataTooltip';\nimport {TitleChildrenValue} from './TitleChildrenValue';\n\nconst ViolatedValidationFuncChart = (props: ViewProps) => {\n const {config} = props;\n\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const dataLevel = useContext(DataLevelContext);\n const isAttributeDataLevel = dataLevel === DQDataLevel.ATTRIBUTE_TYPE;\n const {dvfs, dvfConfigLink} = useContext(DVFContext);\n const {data: dvfsData, state: dvfsState, reload: dvfsReload, errorCode} = dvfs;\n const attributeType = useContext(DetailedAttributeTypeContext);\n const entityType = useContext(EntityTypeContext);\n const entityTypeUri = entityType.uri;\n\n const currentDvfs: DataValidationFunction[] = useMemo(\n () => (isAttributeDataLevel ? getDVFsForAttribute(dvfsData, attributeType?.uri) : dvfsData) || [],\n [isAttributeDataLevel, dvfsData, attributeType?.uri]\n );\n const activeDvfs = useMemo(() => currentDvfs.filter(propEq('status', StatusVF.ACTIVE)), [currentDvfs]);\n const {data: chartData, state: chartDataState, reload: chartDataReload} = useChartData(\n isAttributeDataLevel\n ? getValidationChartData(activeDvfs)\n : getEntityLevelValidationChartData(activeDvfs, metadata)\n );\n const entityTypesArray = useMemo(() => [entityType], [entityType]);\n const dvfUris = useMemo(() => pluck('uri', activeDvfs), [activeDvfs]);\n const invalidProfiles = useInvalidProfiles({\n entityTypeUri,\n dvfUris\n });\n const getEntityCounts = useEntityCount(entityTypesArray);\n const totalProfiles = getEntityCounts(entityTypeUri);\n const searchProfiles = useSearchRedirect(getValidationSearchState(activeDvfs));\n const chartState = useMemo(() => {\n if (dvfsState === RequestStates.LOADED && chartDataState === RequestStates.LOADED) return RequestStates.LOADED;\n return dvfsState === RequestStates.ERROR || chartDataState === RequestStates.ERROR\n ? RequestStates.ERROR\n : RequestStates.LOADING;\n }, [chartDataState, dvfsState]);\n const reloadFunction = useMemo(() => {\n return () => {\n dvfsState === RequestStates.ERROR && dvfsReload();\n chartDataState === RequestStates.ERROR && chartDataReload();\n };\n }, [chartDataState, dvfsState, dvfsReload, chartDataReload]);\n const isPermissionDenied = errorCode === ApiErrorCode.ACCESS_DENIED;\n\n const isDVFNotSupported = isAttributeDataLevel && isReferenceChild(attributeType);\n const isDVFNotConfigured =\n errorCode === ApiErrorCode.DVF_NOT_CONFIGURED ||\n (activeDvfs?.length === 0 && chartState !== RequestStates.ERROR && dvfsState === RequestStates.LOADED);\n const isDataValid = chartState === RequestStates.LOADED && activeDvfs?.length > 0 && chartData.length === 0;\n const isLoadingError = chartState === RequestStates.ERROR && errorCode !== ApiErrorCode.DVF_NOT_CONFIGURED;\n const titleChildren = !isLoadingError && !isDVFNotConfigured && chartState !== RequestStates.LOADING && (\n <TitleChildrenValue isDataValid={isDataValid} totalProfiles={totalProfiles} invalidProfiles={invalidProfiles} />\n );\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Profiles with invalid data')}\n data={[{value: i18n.text('Shows the number of profiles that violate active validation functions')}]}\n DataRenderer={InfoDataRenderer}\n />\n );\n const getChartDataType = () => {\n if (isDVFNotSupported) return VVFNoDataChartType.DVF_NOT_SUPPORTED;\n if (isDVFNotConfigured) return VVFNoDataChartType.DVF_NOT_CONFIGURE;\n if (isDataValid) return VVFNoDataChartType.DATA_VALID;\n if (isPermissionDenied) return VVFNoDataChartType.PERMISSION_DENIED;\n };\n\n const columnsOptions = getColumnsOptions(dataLevel, chartData);\n\n return isDVFNotConfigured || isDataValid || isPermissionDenied ? (\n <VVFChartNoData\n config={config}\n chartType={getChartDataType()}\n title={i18n.text(config.title)}\n infoTooltipTitle={infoTooltipTitle}\n titleChildren={titleChildren}\n dvfConfigLink={dvfConfigLink}\n dataLevel={dataLevel}\n />\n ) : (\n <CustomTableWithBarsChart\n config={config}\n title={i18n.text(config.title)}\n data={chartData}\n onItemClick={searchProfiles}\n titleChildren={titleChildren}\n state={chartState}\n onRefresh={reloadFunction}\n customComparator={valueComparator}\n infoTooltipTitle={infoTooltipTitle}\n columnsOptions={columnsOptions}\n />\n );\n};\n\nexport default ViolatedValidationFuncChart;\n","import {useEffect, useState} from 'react';\nimport {FilterOptions, getTotals} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nexport const useInvalidProfiles = ({entityTypeUri, dvfUris}: {entityTypeUri: string; dvfUris: string[]}) => {\n const [invalidProfilesCount, setInvalidProfilesCount] = useState<number>(null);\n const safePromise = useSafePromise();\n\n useEffect(() => {\n const filter = [\n {\n fieldName: 'type',\n filter: FilterOptions.EQUALS,\n values: [entityTypeUri]\n },\n {\n fieldName: 'analyticsAttributes.AttributeValidations.FunctionURI',\n filter: FilterOptions.EQUALS,\n values: dvfUris\n }\n ];\n safePromise(getTotals(filter))\n .then(({total}) => setInvalidProfilesCount(total))\n .catch(() => setInvalidProfilesCount(null));\n }, [entityTypeUri, dvfUris]);\n\n return invalidProfilesCount;\n};\n","import React, {useContext, useMemo} from 'react';\nimport {TooltipProps} from 'recharts';\n\nimport i18n from 'ui-i18n';\nimport {DQDataLevel, formatNumberAsMetric, TimeSeriesMetric} from '@reltio/mdm-sdk';\n\nimport {getTimeSeriesData, isTimeSeriesHasData} from '../../../services/mlDq';\nimport {useMlDqDataRequest} from '../../../hooks/useMlDqDataRequest';\nimport {DetailedAttributeTypeContext} from '../../../contexts/DetailedAttributeTypeContext';\nimport {EntityTypeContext} from '../../../contexts/EntityTypeContext';\nimport {useReloadFacet} from '../../../contexts/ReloadFacetContext';\nimport {LineChartData} from '../../../types/LineChartData';\nimport {TimeRangeContext} from '../../../contexts/TimeRangeContext';\nimport {ViewProps} from '../../../types/ViewProps';\nimport {getViolatedValidationData, ViolatedValidationTimeSeriesData} from './helpers';\n\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport LineChart from '../../../components/LineChart/LineChart';\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport TimeRangeChip from '../../../components/TimeRangeChip/TimeRangeChip';\nimport {ChartDataTooltip, InfoDataRenderer} from '../../../components/ChartDataTooltip';\nimport {TimeSeriesInfoPanel} from '../../../components/TimeSeriesInfoPanel/TimeSeriesInfoPanel';\n\nconst INFO_PANEL_HEIGHT = 36;\n\n// TODO get rid of temporary hardcoded metric\nconst VIOLATED_PROFILES_METRIC = 'violatedProfiles';\nconst metrics = [VIOLATED_PROFILES_METRIC as TimeSeriesMetric];\n\nconst getTooltip = ({active, payload}: TooltipProps) => {\n if (active && payload && payload.length) {\n const {payload: currentPayload} = payload[0];\n const data = [\n {\n value: `${currentPayload.violatedPercentage}% (${formatNumberAsMetric(\n +currentPayload.violatedProfilesCount\n )} ${i18n.text('profiles')})`\n }\n ];\n return <ChartDataTooltip title={i18n.date(currentPayload.group, 'MMM D, YYYY')} data={data} />;\n }\n};\n\nconst ViolatedValidationFuncTimeSeriesChart = (props: ViewProps) => {\n const {config} = props;\n const {title} = config;\n const timeRange = useContext(TimeRangeContext);\n const entityType = useContext(EntityTypeContext);\n const detailedAttributeType = useContext(DetailedAttributeTypeContext);\n const entityTypeUri = entityType.uri;\n const attributeFieldName = detailedAttributeType.fieldName;\n const {data, state, reload} = useMlDqDataRequest({\n entityTypeUri,\n attributeFieldName,\n timeRange,\n metrics\n });\n\n const chartData: LineChartData[] = useMemo(() => getTimeSeriesData(getViolatedValidationData)(data), [data]);\n\n useReloadFacet({\n state,\n reload,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Profiles with invalid data')}\n data={[{value: i18n.text('Shows the number of profiles that violate active validation functions')}]}\n DataRenderer={InfoDataRenderer}\n />\n );\n const infoLabel = `${i18n.text('No. of profiles')}:`;\n const dateLabel = `${i18n.text('Today')}`;\n\n const hasData = isTimeSeriesHasData(ViolatedValidationTimeSeriesData.VIOLATED_PERCENTAGE, chartData);\n\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n <TimeRangeChip />\n </DQLayoutItemHeader>\n <DQLayoutItemContent data={hasData && chartData} loadingState={state} onRefresh={reload}>\n {({data, width, height}) => (\n <>\n <TimeSeriesInfoPanel\n infoLabel={infoLabel}\n dateLabel={dateLabel}\n chartData={data}\n percentKey={ViolatedValidationTimeSeriesData.VIOLATED_PERCENTAGE}\n dataKey={ViolatedValidationTimeSeriesData.VIOLATED_PROFILES_COUNT}\n />\n <LineChart\n width={width}\n height={height - INFO_PANEL_HEIGHT}\n data={data}\n keys={metrics}\n getTooltip={getTooltip}\n yAxisLabel={i18n.text('Percentage of profiles with invalid data')}\n />\n </>\n )}\n </DQLayoutItemContent>\n </DQLayoutItemView>\n );\n};\n\nexport default ViolatedValidationFuncTimeSeriesChart;\n","import React from 'react';\n\nimport {ViewProps} from '../../../types/ViewProps';\nimport {checkIsTimeSeries} from '../../../services/mlDq';\n\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport ViolatedValidationFuncChartToday from './ViolatedValidationFuncChart';\nimport ViolatedValidationFuncTimeSeriesChart from './ViolatedValidationFuncTimeSeriesChart';\n\nconst ViolatedValidationFuncChart = (props: ViewProps) => {\n const {config} = props;\n const isTimeSeries = checkIsTimeSeries(config);\n return (\n <DQLayoutItemView config={config}>\n {isTimeSeries ? (\n <ViolatedValidationFuncTimeSeriesChart {...props} />\n ) : (\n <ViolatedValidationFuncChartToday {...props} />\n )}\n </DQLayoutItemView>\n );\n};\n\nexport default ViolatedValidationFuncChart;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n monoFontCell: {\n fontFamily: '\"Roboto Mono\", monospace'\n }\n});\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {isDateType, isSSNType} from '@reltio/mdm-sdk';\nimport {getFrequencyChartData, getFrequencyAnalysisSearchState} from '../../services/tableCharts';\nimport CustomTableWithBarsChart from './CustomTableWithBarsChart/CustomTableWithBarsChart';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {ViewProps} from '../../types/ViewProps';\nimport {convertDateLabelsInChartData} from '../../services/charts';\nimport {getRowsCounterLabel} from '../../services/tableCharts';\nimport {DetailedAttributeTypeContext} from '../../contexts/DetailedAttributeTypeContext';\nimport {ChartDataTooltip, InfoDataRenderer} from '../../components/ChartDataTooltip';\n\nimport {useStyles} from './styles';\n\nconst FrequencyAnalysisChart = ({config}: ViewProps) => {\n const styles = useStyles();\n\n const {data: chartData, state, reload} = useChartData(getFrequencyChartData);\n const attributeType: string = useContext(DetailedAttributeTypeContext).type;\n const preparedData = isDateType(attributeType) ? convertDateLabelsInChartData(chartData, attributeType) : chartData;\n const searchProfiles = useSearchRedirect(getFrequencyAnalysisSearchState);\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Frequency analysis')}\n data={[{value: i18n.text('Shows the number of times each value occurs')}]}\n DataRenderer={InfoDataRenderer}\n />\n );\n\n const columnsOptions = [\n {\n id: 'label',\n label: i18n.text('Value'),\n secondLabel: getRowsCounterLabel(chartData),\n width: 0.4,\n cellClassName: classnames({[styles.monoFontCell]: isSSNType(attributeType)})\n },\n {\n id: 'value',\n label: i18n.text('Count'),\n width: 0.6\n }\n ];\n\n return (\n <CustomTableWithBarsChart\n config={config}\n data={preparedData}\n title={config.title}\n infoTooltipTitle={infoTooltipTitle}\n onItemClick={searchProfiles}\n state={state}\n onRefresh={reload}\n columnsOptions={columnsOptions}\n />\n );\n};\n\nexport default FrequencyAnalysisChart;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {tooltip: Record<string, string | number>}) => ({\n tooltipWrapper: {\n ...theme.tooltip,\n padding: '4px 8px'\n }\n}));\n","import React from 'react';\nimport {TooltipProps} from 'recharts';\nimport i18n from 'ui-i18n';\nimport ChartDataTooltip from '../../../../components/ChartDataTooltip/ChartDataTooltip';\nimport {useStyles} from './styles';\n\ntype Props = TooltipProps & {\n name?: string;\n};\n\nexport const BarTooltip = ({payload, active, name}: Props) => {\n const tooltipPayload = payload?.[0]?.payload;\n const value = tooltipPayload?.value;\n const tooltipLabel = tooltipPayload?.label;\n const propertiesName = name ? `${name}` : '';\n const styles = useStyles();\n return (\n active && (\n <div className={styles.tooltipWrapper}>\n <ChartDataTooltip\n data={[\n {label: propertiesName, value: tooltipLabel},\n {label: i18n.text('No of profiles'), value: i18n.number(value)}\n ]}\n />\n </div>\n )\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n chartInfoLabel: {\n fontSize: '13px',\n lineHeight: '15px',\n color: 'rgba(0, 0, 0, 0.54)',\n paddingRight: '8px'\n },\n chartInfoValue: {\n fontSize: '13px',\n lineHeight: '15px',\n color: 'rgba(0, 0, 0, 0.87)'\n },\n chartInfoWrapper: {\n display: 'flex',\n backgroundColor: 'rgba(0, 0, 0, 0.05)',\n margin: '0 12px 12px',\n padding: '9px 12px 8px'\n },\n chartInfoItem: {\n marginRight: '16px'\n },\n clickable: {\n cursor: 'pointer'\n },\n title: {\n marginRight: '50px',\n fontSize: '16px'\n },\n root: {\n padding: '0 0 0 16px',\n minHeight: 'auto',\n marginTop: '12px',\n marginBottom: '12px'\n }\n}));\n","import React from 'react';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {InfoPanelData} from '../../../types/InfoPanelData';\nimport {useStyles} from './styles';\n\ntype Props = {\n data: InfoPanelData[];\n};\n\nexport const InfoPanel = ({data}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.chartInfoWrapper}>\n {data.map(({label, value, localizedValue}) => (\n <div key={label} className={styles.chartInfoItem}>\n <span className={styles.chartInfoLabel}>{label}: </span>\n {value !== localizedValue ? (\n <Tooltip title={localizedValue}>\n <span className={styles.chartInfoValue}>{value}</span>\n </Tooltip>\n ) : (\n <span className={styles.chartInfoValue}>{value}</span>\n )}\n </div>\n ))}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n labelWrapper: ({width}: {width: number}) => ({\n overflow: 'hidden',\n width: `${width}px`,\n marginTop: '-3px'\n }),\n xAxisLabel: {\n textAlign: 'center',\n whiteSpace: 'nowrap',\n fontSize: '12px',\n '&::first-letter': {textTransform: 'capitalize'},\n '&:after': {\n top: '0',\n right: '0',\n width: '10px',\n height: '100%',\n content: '\"\"',\n position: 'absolute',\n background: 'linear-gradient(to right, rgba(255, 255, 255, 0.2), #fff 100%)',\n pointerEvents: 'none'\n }\n }\n}));\n","import React from 'react';\nimport {ExpandedValueTooltip} from '@reltio/components';\nimport {ContentRenderer} from 'recharts';\nimport {TickProps} from '../../../../types/TickProps';\nimport {useStyles} from './styles';\n\nconst SPACE_BETWEEN_LABELS = 4;\n\ntype Props = {\n width: number;\n height: number;\n label: string;\n x: number;\n y: number;\n};\nexport const XAxisLabel = ({width, height, label, x, y}: Props) => {\n const styles = useStyles({width});\n\n const xCoord = x - width / 2;\n\n return (\n <foreignObject x={xCoord} y={y} width={width} height={height}>\n <div className={styles.labelWrapper}>\n <ExpandedValueTooltip value={label}>\n <div className={styles.xAxisLabel}>{label}</div>\n </ExpandedValueTooltip>\n </div>\n </foreignObject>\n );\n};\n\nexport const renderXAxis: ContentRenderer<TickProps> = (tickProps) => {\n const {x, y, width, height, payload, visibleTicksCount} = tickProps;\n const {value} = payload;\n const maxTickWidth = width / visibleTicksCount - SPACE_BETWEEN_LABELS;\n\n return <XAxisLabel width={maxTickWidth} height={height} label={value} x={x} y={y} />;\n};\n","import {BarProps, CartesianGridProps, XAxisProps, YAxisProps, LabelProps, BarChartProps} from 'recharts';\nimport BarChartOptions from '../../../types/BarChartOptions';\nimport {tickFormatter} from '../../../services/barCharts';\nimport {MIN_CHART_BAR_SIZE} from '../../../services/charts';\nimport {renderXAxis} from './XAxisLabel/XAxisLabel';\n\ntype BarChartSettings = {\n barChart: BarChartProps;\n bar: BarProps;\n xAxis: XAxisProps;\n yAxis: YAxisProps;\n cartesianGrid: CartesianGridProps;\n labelForX: LabelProps;\n labelForY: LabelProps;\n};\n\nconst getBarChartSettings = ({\n showCategories = false,\n interval,\n barCategoryGap,\n maxBarSize,\n yTickRenderer,\n tickCount\n}: BarChartOptions): BarChartSettings => {\n return {\n barChart: {\n barCategoryGap: barCategoryGap || '10%'\n },\n bar: {\n dataKey: 'value',\n fill: '#0072CE',\n minPointSize: MIN_CHART_BAR_SIZE,\n maxBarSize: maxBarSize || 50\n },\n xAxis: {\n tick: showCategories && renderXAxis,\n tickLine: false,\n interval: interval ? interval : 0,\n dataKey: 'label'\n },\n yAxis: {\n axisLine: false,\n tickLine: false,\n tick: yTickRenderer || {fill: '#000', fontSize: 12},\n width: 60,\n tickFormatter: tickFormatter,\n tickCount: tickCount || 5\n },\n cartesianGrid: {\n stroke: '#000',\n strokeOpacity: '0.05',\n vertical: false\n },\n labelForX: {\n position: 'insideBottom',\n style: {\n textAnchor: 'middle',\n fontSize: '10px',\n fill: 'rgba(0, 0, 0, 0.54)'\n },\n offset: showCategories ? -3 : 3\n },\n labelForY: {\n angle: 270,\n position: 'left',\n offset: -3,\n style: {\n textAnchor: 'middle',\n fontSize: '10px',\n fill: 'rgba(0, 0, 0, 0.54)'\n }\n }\n };\n};\n\nexport default getBarChartSettings;\n","import React from 'react';\nimport {Rectangle, RectangleProps} from 'recharts';\nimport {useStyles} from './styles';\n\ntype Props = RectangleProps & {\n isClickable: boolean;\n};\n\nconst CustomBackgroundOnHover = ({isClickable, ...rectangleProps}: Props) => {\n const styles = useStyles();\n const className = isClickable ? styles.clickable : undefined;\n return (\n <Rectangle {...rectangleProps} className={className} fill=\"#000\" opacity=\"0.1\" pointerEvents=\"visibleFill\" />\n );\n};\nexport default CustomBackgroundOnHover;\n","import React from 'react';\nimport {Rectangle, RectangleProps} from 'recharts';\n\ntype Props = RectangleProps & {\n value?: number;\n};\n\nconst CustomBar = (props: Props) => {\n const {value} = props;\n return value > 0 ? <Rectangle {...props} /> : null;\n};\nexport default CustomBar;\n","import React, {useContext} from 'react';\nimport {Bar, BarChart, CartesianGrid, Label, Tooltip as ChartTooltip, XAxis, YAxis} from 'recharts';\nimport {ChartData, RequestStates} from '@reltio/components';\nimport {TimeRangeContext} from '../../../contexts/TimeRangeContext';\nimport {BarTooltip} from './BarTooltip/BarTooltip';\nimport {InfoPanel} from './InfoPanel';\nimport getBarChartSettings from './getBarChartSettings';\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport CustomBackgroundOnHover from './CustomBackgroundOnHover';\nimport CustomBar from './CustomBar';\nimport TimeRangeChip from '../../../components/TimeRangeChip/TimeRangeChip';\n\nimport {DQDashboardView} from '../../../types/DQDashboardView';\nimport {InfoPanelData} from '../../../types/InfoPanelData';\nimport BarChartOptions from '../../../types/BarChartOptions';\n\nimport {useStyles} from './styles';\nimport {TimeRange} from '../../../types/TimeRange';\n\ntype Props = {\n config: DQDashboardView;\n data: ChartData[];\n xAxisLabel: string;\n yAxisLabel: string;\n state: RequestStates;\n onRefresh: () => void;\n onItemClick?: (group: string) => void;\n infoPanelData?: InfoPanelData[];\n infoTooltipTitle?: React.ReactNode;\n barTooltipTitle?: string;\n options?: BarChartOptions;\n titleChildren?: React.ReactNode;\n};\n\nconst CustomBarChart = ({\n data,\n config,\n xAxisLabel,\n yAxisLabel,\n barTooltipTitle,\n infoPanelData,\n infoTooltipTitle,\n onItemClick,\n options = {},\n state,\n onRefresh\n}: Props) => {\n const styles = useStyles();\n const {title} = config;\n const {cartesianGrid, bar, xAxis, yAxis, labelForX, labelForY, barChart} = getBarChartSettings(options);\n const onBarClick = onItemClick && (({activePayload}) => onItemClick(activePayload[0].payload.group));\n const clickable = onBarClick ? styles.clickable : undefined;\n const showInfoPanel = state === RequestStates.LOADED && infoPanelData.length > 0;\n const timeRange = useContext(TimeRangeContext);\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {timeRange !== TimeRange.TODAY && <TimeRangeChip disabled={true} />}\n </DQLayoutItemHeader>\n {showInfoPanel && <InfoPanel data={infoPanelData} />}\n <DQLayoutItemContent data={data} loadingState={state} onRefresh={onRefresh}>\n {({data, width = 0, height = 0}) => {\n return (\n <div>\n <BarChart width={width} height={height} data={data} onClick={onBarClick} {...barChart}>\n <CartesianGrid {...cartesianGrid} />\n <ChartTooltip\n content={<BarTooltip name={barTooltipTitle} />}\n cursor={<CustomBackgroundOnHover isClickable={!!onBarClick} />}\n />\n <Bar {...bar} shape={<CustomBar className={clickable} />} />\n <YAxis {...yAxis}>\n <Label {...labelForY} value={yAxisLabel} />\n </YAxis>\n <XAxis {...xAxis}>\n <Label {...labelForX} value={xAxisLabel} />\n </XAxis>\n </BarChart>\n </div>\n );\n }}\n </DQLayoutItemContent>\n </DQLayoutItemView>\n );\n};\n\nexport default CustomBarChart;\n","import React from 'react';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {getLengthChartData, getLengthStatisticsSearchState} from '../../services/barCharts';\nimport {ViewProps} from '../../types/ViewProps';\nimport CustomBarChart from './CustomBarChart/CustomBarChart';\nimport {ChartDataTooltip, InfoDataRenderer} from '../../components/ChartDataTooltip';\nimport i18n from 'ui-i18n';\n\nconst LengthStatisticsChart = ({config}: ViewProps) => {\n const {data, state, reload} = useChartData(getLengthChartData);\n const {chartData, infoPanelData} = data;\n const searchProfiles = useSearchRedirect(getLengthStatisticsSearchState);\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Length statistics')}\n data={[{value: i18n.text('Measures the string length of values')}]}\n DataRenderer={InfoDataRenderer}\n />\n );\n return (\n <CustomBarChart\n config={config}\n data={chartData}\n xAxisLabel={i18n.text('Length of values')}\n yAxisLabel={i18n.text('No. of profiles')}\n infoPanelData={infoPanelData}\n barTooltipTitle={i18n.text('Length')}\n infoTooltipTitle={infoTooltipTitle}\n onItemClick={searchProfiles}\n state={state}\n onRefresh={reload}\n />\n );\n};\nexport default LengthStatisticsChart;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useLabelStyles = makeStyles({\n icon: {\n width: '20px',\n height: '20px',\n borderRadius: '4px',\n fontSize: '14px',\n marginRight: '8px'\n },\n text: ({color}: {color: string}) => ({\n backgroundColor: color\n })\n});\n","import React from 'react';\nimport {getSourceColor} from '@reltio/mdm-sdk';\nimport {SourceIcon} from '@reltio/components';\nimport {TableChartData} from '../../../types/TableChartData';\n\nimport {useLabelStyles} from './styles';\n\nconst SourceLabelRenderer = ({chartData}: {chartData: TableChartData}) => {\n const {group, label} = chartData;\n const styles = useLabelStyles({color: getSourceColor(group)});\n return (\n <>\n <SourceIcon sourceType={group} className={styles.icon} classes={{textRoot: styles.text}} />\n {label}\n </>\n );\n};\n\nexport default SourceLabelRenderer;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useChartData} from '../../../hooks/useChartData';\nimport {useSearchRedirect} from '../../../hooks/useSearchRedirect';\nimport {getCrosswalkAnalysisData, getCrosswalkAnalysisSearchState} from '../../../services/barCharts';\nimport CustomTableWithBarsChart from '../CustomTableWithBarsChart/CustomTableWithBarsChart';\nimport {valueComparator} from '../../../services/tableCharts';\nimport SourceLabelRenderer from './SourceLabelRenderer';\nimport {ChartDataTooltip, InfoDataRenderer} from '../../../components/ChartDataTooltip';\nimport {ViewProps} from '../../../types/ViewProps';\nimport {Metadata} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useSelector} from 'react-redux';\n\nconst CrosswalkAnalysisChart = ({config}: ViewProps) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const {data, state, reload} = useChartData(getCrosswalkAnalysisData(metadata));\n const {chartData} = data;\n const searchProfiles = useSearchRedirect(getCrosswalkAnalysisSearchState);\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Source system analysis')}\n data={[{value: i18n.text('Distribution of source systems contributing to profiles')}]}\n DataRenderer={InfoDataRenderer}\n />\n );\n const columnsOptions = [\n {\n id: 'label',\n label: i18n.text('Source system'),\n secondLabel: `(${chartData.length})`,\n width: 0.4,\n sortable: true,\n labelRenderer: SourceLabelRenderer\n },\n {\n id: 'value',\n label: i18n.text('Profiles'),\n width: 0.6,\n sortable: true\n }\n ];\n return (\n <CustomTableWithBarsChart\n config={{...config}}\n data={chartData}\n title={config.title}\n infoTooltipTitle={infoTooltipTitle}\n onItemClick={searchProfiles}\n state={state}\n onRefresh={reload}\n customComparator={valueComparator}\n columnsOptions={columnsOptions}\n />\n );\n};\nexport default CrosswalkAnalysisChart;\n","import React, {useContext} from 'react';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {getValueDistributionData} from '../../services/barCharts';\nimport {getValueDistributionSearchState} from '../../services/barCharts';\nimport {ViewProps} from '../../types/ViewProps';\nimport CustomBarChart from './CustomBarChart/CustomBarChart';\nimport {DetailedAttributeTypeContext} from '../../contexts/DetailedAttributeTypeContext';\nimport i18n from 'ui-i18n';\n\nconst ValueDistributionChart = ({config}: ViewProps) => {\n const attributeType: string = useContext(DetailedAttributeTypeContext).type;\n const {data, state, reload} = useChartData(getValueDistributionData(attributeType));\n const {chartData, infoPanelData} = data;\n const searchProfiles = useSearchRedirect(getValueDistributionSearchState(attributeType));\n return (\n <CustomBarChart\n config={config}\n data={chartData}\n xAxisLabel={i18n.text('Value')}\n yAxisLabel={i18n.text('No. of profiles')}\n infoPanelData={infoPanelData}\n barTooltipTitle={i18n.text('Value')}\n onItemClick={searchProfiles}\n state={state}\n onRefresh={reload}\n />\n );\n};\nexport default ValueDistributionChart;\n","import React from 'react';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {getMonthDistributionData, getMonthDistributionSearchState} from '../../services/barCharts';\nimport {ViewProps} from '../../types/ViewProps';\nimport CustomBarChart from './CustomBarChart/CustomBarChart';\nimport i18n from 'ui-i18n';\n\nconst MonthDistributionChart = ({config}: ViewProps) => {\n const {data, state, reload} = useChartData(getMonthDistributionData);\n const {chartData, infoPanelData} = data;\n const searchProfiles = useSearchRedirect(getMonthDistributionSearchState);\n\n return (\n <CustomBarChart\n config={config}\n data={chartData}\n xAxisLabel={i18n.text('Months of the year')}\n yAxisLabel={i18n.text('No. of profiles')}\n infoPanelData={infoPanelData}\n barTooltipTitle={i18n.text('Months of the year')}\n options={{showCategories: true, barCategoryGap: '20%', interval: 'preserveStartEnd'}}\n onItemClick={searchProfiles}\n state={state}\n onRefresh={reload}\n />\n );\n};\nexport default MonthDistributionChart;\n","import React from 'react';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {getDayOfWeekDistributionData, getDayOfweekDistributionSearchState} from '../../services/barCharts';\nimport {ViewProps} from '../../types/ViewProps';\nimport CustomBarChart from './CustomBarChart/CustomBarChart';\nimport i18n from 'ui-i18n';\n\nconst DayOfWeekDistributionChart = ({config}: ViewProps) => {\n const {data, state, reload} = useChartData(getDayOfWeekDistributionData);\n const {chartData, infoPanelData} = data;\n const searchProfiles = useSearchRedirect(getDayOfweekDistributionSearchState);\n\n return (\n <CustomBarChart\n config={config}\n data={chartData}\n xAxisLabel={i18n.text('Days of the week')}\n yAxisLabel={i18n.text('No. of profiles')}\n infoPanelData={infoPanelData}\n barTooltipTitle={i18n.text('Days of the week')}\n options={{showCategories: true, barCategoryGap: '25%', interval: 'preserveStartEnd'}}\n onItemClick={searchProfiles}\n state={state}\n onRefresh={reload}\n />\n );\n};\nexport default DayOfWeekDistributionChart;\n","import React from 'react';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {getDayOfMonthDistributionData, getDayOfMonthDistributionSearchState} from '../../services/barCharts';\nimport {ViewProps} from '../../types/ViewProps';\nimport CustomBarChart from './CustomBarChart/CustomBarChart';\nimport i18n from 'ui-i18n';\n\nconst DayOfMonthDistributionChart = ({config}: ViewProps) => {\n const {data, state, reload} = useChartData(getDayOfMonthDistributionData);\n const {chartData, infoPanelData} = data;\n const searchProfiles = useSearchRedirect(getDayOfMonthDistributionSearchState);\n\n return (\n <CustomBarChart\n config={config}\n data={chartData}\n xAxisLabel={i18n.text('Days of the month')}\n yAxisLabel={i18n.text('No. of profiles')}\n infoPanelData={infoPanelData}\n barTooltipTitle={i18n.text('Days of the month')}\n options={{showCategories: true, interval: 1}}\n onItemClick={searchProfiles}\n state={state}\n onRefresh={reload}\n />\n );\n};\nexport default DayOfMonthDistributionChart;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {getPatternAnalisysData, getPatternAnalysisSearchState} from '../../services/tableCharts';\nimport CustomTableWithBarsChart from './CustomTableWithBarsChart/CustomTableWithBarsChart';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {ViewProps} from '../../types/ViewProps';\nimport ChartDataTooltip from '../../components/ChartDataTooltip/ChartDataTooltip';\nimport {getRowsCounterLabel} from '../../services/tableCharts';\nimport {useStyles} from './styles';\n\nconst PatternAnalysisChart = ({config}: ViewProps) => {\n const styles = useStyles();\n const {data: chartData, state, reload} = useChartData(getPatternAnalisysData);\n const searchProfiles = useSearchRedirect(getPatternAnalysisSearchState);\n const infoTooltipTitle = <ChartDataTooltip title={i18n.text('Pattern analysis')} data={[]} />;\n const columnsOptions = [\n {\n id: 'label',\n label: i18n.text('Value'),\n secondLabel: getRowsCounterLabel(chartData),\n width: 0.4,\n cellClassName: styles.monoFontCell\n },\n {\n id: 'value',\n label: i18n.text('Count'),\n width: 0.6\n }\n ];\n return (\n <CustomTableWithBarsChart\n config={config}\n data={chartData}\n title={config.title}\n infoTooltipTitle={infoTooltipTitle}\n onItemClick={searchProfiles}\n state={state}\n onRefresh={reload}\n columnsOptions={columnsOptions}\n />\n );\n};\n\nexport default PatternAnalysisChart;\n","import {curry, keys, mergeAll, omit, pipe} from 'ramda';\nimport React from 'react';\nimport {Bar, BarChart, CartesianGrid, Label, Tooltip as ChartTooltip, XAxis, YAxis} from 'recharts';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\nimport BarChartOptions from '../../../types/BarChartOptions';\nimport getBarChartSettings from './getBarChartSettings';\nimport {useStyles} from './styles';\n\ntype StackedBarChartData = {\n label: string;\n group: string;\n} & {[index: string]: number | string};\n\ntype Props = {\n data: StackedBarChartData[];\n xAxisLabel?: string;\n yAxisLabel?: string;\n onItemClick?: (key: string, group: string) => void;\n getTooltip?: (payload: {active: boolean}) => React.ReactNode;\n getBarOpacity?: (key: string) => number;\n getBarColor: (key: string) => string;\n onBarSelect?: (key: string) => (data: unknown) => void;\n showTopLabel?: boolean;\n width: number;\n height: number;\n options?: BarChartOptions;\n dataReltioId?: string;\n};\n\nconst StackedBarChart = ({\n xAxisLabel,\n yAxisLabel,\n data,\n getTooltip,\n getBarOpacity,\n onBarSelect,\n width,\n height,\n showTopLabel = false,\n options = {},\n onItemClick,\n getBarColor,\n dataReltioId\n}: Props) => {\n const styles = useStyles();\n const {cartesianGrid, xAxis, yAxis, labelForX, labelForY, barChart, bar} = getBarChartSettings(options);\n const onBarClick = curry((key, payload) => onItemClick && onItemClick(key, payload.group));\n const clickable = onItemClick ? styles.clickable : undefined;\n const getBars = (chartData: StackedBarChartData[]) => {\n const uniqueDataKeys = pipe(mergeAll, omit(['label', 'group']), keys)(chartData);\n const getBarLabel = curry((index: number, {x, y, width, value}) =>\n showTopLabel && index === uniqueDataKeys.length - 1 ? (\n <text x={x + width / 2} textAnchor=\"middle\" y={y - 5} fontSize=\"12px\">\n {formatNumberAsMetric(value, 999)}\n </text>\n ) : null\n );\n return uniqueDataKeys.map((key: string, index: number) => (\n <Bar\n stackId={'all'}\n dataKey={key}\n opacity={getBarOpacity ? getBarOpacity(key) : 1}\n fill={getBarColor(key)}\n onMouseOver={onBarSelect(key)}\n onMouseLeave={onBarSelect(null)}\n key={key}\n label={getBarLabel(index)}\n maxBarSize={bar.maxBarSize}\n onClick={onBarClick(key)}\n className={clickable}\n />\n ));\n };\n\n return (\n <div data-reltio-id={dataReltioId}>\n <BarChart width={width} height={height} data={data} {...barChart} margin={{top: 15}}>\n <CartesianGrid {...cartesianGrid} />\n <ChartTooltip content={getTooltip} cursor={null} />\n {getBars(data)}\n <YAxis {...yAxis}>\n <Label {...labelForY} value={yAxisLabel} />\n </YAxis>\n <XAxis {...xAxis}>\n <Label {...labelForX} value={xAxisLabel} />\n </XAxis>\n </BarChart>\n </div>\n );\n};\nexport default StackedBarChart;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useIconStyles = makeStyles({\n icon: ({color}: {color: string}) => ({\n backgroundColor: color,\n flexShrink: 0,\n fontSize: '14px',\n height: '12px',\n margin: ' 0 8px 0 0',\n width: '12px'\n })\n});\n\nexport const useStyles = makeStyles((theme: Theme & {tooltip: Record<string, string | number>}) => ({\n consolidationRateWrapper: {\n display: 'flex'\n },\n ratePercent: {\n fontWeight: 700,\n lineHeight: '24px',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n tableWithSelectedRow: {\n '& .Table__grid__cell_wrapper_EWDDh': {\n opacity: 0.12\n },\n '& .Table__grid__cell_wrapper_EWDDh.hoveredRow': {\n opacity: 1\n }\n },\n tooltipWrapper: {\n ...theme.tooltip,\n padding: '4px 8px'\n }\n}));\n","import React from 'react';\n\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {DQChartsData, formatNumberAsMetric} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nexport const ConsolidationPercentage = ({data}: {data: DQChartsData}) => {\n const styles = useStyles();\n const {totalCrosswalks, totalEntities} = data.consolidationRate;\n const reltioCleanser = data.consolidationRate.totalCrosswalksBySource['ReltioCleanser'] || 0;\n const percent = ((1 - totalEntities / (totalCrosswalks - reltioCleanser)) * 100).toFixed(1);\n const formattedPercent = percent.split('.')[1] == '0' ? percent.split('.')[0] : i18n.number(Number(percent));\n\n return (\n <Typography>\n <span className={styles.ratePercent}>{formattedPercent}% </span>\n <span>\n {`(${formatNumberAsMetric(totalCrosswalks - reltioCleanser, 999)} ${i18n.text(\n 'to'\n )} ${formatNumberAsMetric(totalEntities, 999)} ${i18n.text('profiles')})`}\n </span>\n </Typography>\n );\n};\n","import React from 'react';\nimport {getSourceColor} from '@reltio/mdm-sdk';\nimport {TableChartData} from '../../../types/TableChartData';\n\nimport {useIconStyles} from './styles';\n\nconst SourceLabelRenderer = ({chartData}: {chartData: TableChartData}) => {\n const {group, label} = chartData;\n const styles = useIconStyles({color: getSourceColor(group)});\n return (\n <>\n <div className={styles.icon} />\n {label}\n </>\n );\n};\n\nexport default SourceLabelRenderer;\n","import React from 'react';\nimport {ContentRenderer} from 'recharts';\nimport {tickFormatter} from '../../../services/barCharts';\nimport {TickProps} from '../../../types/TickProps';\n\nexport const YAxisTickRenderer: ContentRenderer<TickProps> = (tickProps) => {\n const {\n x,\n y,\n payload: {value},\n index\n } = tickProps;\n if (index % 2 === 0)\n return (\n <text fill=\"#000\" x={x} y={y} textAnchor=\"middle\" fontSize=\"12px\">\n {tickFormatter(Number(value))}\n </text>\n );\n return null;\n};\n","import classnames from 'classnames';\nimport {isNil, pick, propEq} from 'ramda';\nimport React, {useCallback, useContext, useMemo, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {ChartData} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {getSourceColor, getSourceSystemLabel, Metadata} from '@reltio/mdm-sdk';\nimport ChartDataTooltip from '../../../components/ChartDataTooltip/ChartDataTooltip';\nimport TableWithBars, {ColumnsOptions} from '../../../components/CustomTableWithBars/TableWithBars';\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport {ChartsDataContext} from '../../../contexts/ChartsDataContext';\nimport {ChartsDataWithState, useChartData} from '../../../hooks/useChartData';\nimport {useSearchRedirect} from '../../../hooks/useSearchRedirect';\nimport {\n getBarOpacity,\n getConsolidationRateChartData,\n getConsolidationRateSearchState,\n getConsolidationRateTableData\n} from '../../../services/barCharts';\nimport {ViewProps} from '../../../types/ViewProps';\nimport StackedBarChart from '../CustomBarChart/StackedBarChart';\nimport {ConsolidationPercentage} from './ConsolidationPercentage';\nimport SourceLabelRenderer from './SourceLabelRenderer';\nimport {YAxisTickRenderer} from './YAxisTickRenderer';\n\nimport {useStyles} from './styles';\n\nconst STACKED_BAR_CHART_WIDTH = 256;\n\nconst getBarColor = (key: string) => (key === 'Reltio profiles' ? '#0072CE' : getSourceColor(key));\nconst infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Consolidation rate')}\n data={[\n {\n value: i18n.text(\n 'Consolidation rate is the measurement of the total number source profiles versus the number of Reltio profiles after removing duplicates.'\n )\n },\n {value: i18n.text('Consolidation rate helps to understand the data reduction achieved by matching.')}\n ]}\n />\n);\n\nconst ConsolidationRateChart = ({config}: ViewProps) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const styles = useStyles();\n const {title} = config;\n const [selectedSource, setSelectedSource] = useState<{rowIndex: number; key: string}>();\n const {data: barChartData, state, reload} = useChartData<ChartData[]>(getConsolidationRateChartData);\n const {data: tableChartData} = useChartData<ChartData[]>(getConsolidationRateTableData(metadata));\n const {data: chartsData} = useContext<ChartsDataWithState>(ChartsDataContext);\n const searchProfiles = useSearchRedirect(getConsolidationRateSearchState);\n const sortedBarChartData = useMemo(() => {\n const sortedSourceData = pick(['group', 'label'], barChartData[0]);\n for (let key = tableChartData.length - 1; key >= 0; key--) {\n sortedSourceData[tableChartData[key].group] = barChartData[0][tableChartData[key].group];\n }\n return [sortedSourceData, barChartData[1]];\n }, [tableChartData, barChartData]);\n const getTooltip = useCallback(\n ({active}) => {\n if (!(selectedSource && active)) return '';\n let data = [];\n if (selectedSource?.key === 'Reltio profiles') {\n data = [\n {\n label: i18n.text('Reltio profiles'),\n value: i18n.number(chartsData.consolidationRate.totalEntities)\n }\n ];\n } else {\n data = [\n {\n label: i18n.text('Source system'),\n value: getSourceSystemLabel(metadata, selectedSource.key)\n },\n {\n label: i18n.text('Source profiles'),\n value: i18n.number(chartsData.consolidationRate.totalCrosswalksBySource[selectedSource.key])\n }\n ];\n }\n return (\n <div className={styles.tooltipWrapper}>\n <ChartDataTooltip data={data} />\n </div>\n );\n },\n [selectedSource, chartsData, metadata]\n );\n\n const barSelectHandler = useCallback(\n (key: string) => () => {\n if (key) {\n const rowIndex = tableChartData.findIndex(propEq('group', key));\n setSelectedSource({rowIndex, key});\n } else setSelectedSource(null);\n },\n [setSelectedSource, tableChartData]\n );\n\n const rowSelectHandler = useCallback(\n (rowIndex: number) => {\n if (!isNil(rowIndex)) {\n const key = tableChartData[rowIndex]?.group;\n setSelectedSource({rowIndex, key});\n } else setSelectedSource(null);\n },\n [setSelectedSource, tableChartData]\n );\n\n const rowClickHandler = (rowIndex: number) => {\n if (!isNil(rowIndex)) {\n const key = tableChartData[rowIndex]?.group;\n searchProfiles(key);\n }\n };\n\n const columnsOptions: ColumnsOptions[] = [\n {\n id: 'label',\n label: i18n.text('Source system'),\n secondLabel: `(${i18n.number(tableChartData.length)})`,\n resizable: false,\n labelRenderer: SourceLabelRenderer,\n width: 0.3\n },\n {\n id: 'value',\n resizable: false,\n label: i18n.text('Source profiles'),\n width: 0.7\n }\n ];\n\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {chartsData.consolidationRate && <ConsolidationPercentage data={chartsData} />}\n </DQLayoutItemHeader>\n <DQLayoutItemContent data={tableChartData} loadingState={state} onRefresh={reload}>\n {({height = 0, width = 0}) => {\n return (\n <div\n className={classnames(styles.consolidationRateWrapper, {\n [styles.tableWithSelectedRow]:\n !isNil(selectedSource?.rowIndex) && selectedSource?.rowIndex !== -1\n })}\n >\n <StackedBarChart\n yAxisLabel={i18n.text('No. of profiles')}\n data={sortedBarChartData}\n getTooltip={getTooltip}\n getBarOpacity={getBarOpacity(selectedSource)}\n getBarColor={getBarColor}\n onBarSelect={barSelectHandler}\n width={STACKED_BAR_CHART_WIDTH}\n height={height}\n options={{\n showCategories: true,\n maxBarSize: 40,\n yTickRenderer: YAxisTickRenderer,\n tickCount: 8\n }}\n onItemClick={searchProfiles}\n dataReltioId=\"reltio-dq-dashboard-consolidation-rate-barchart\"\n showTopLabel\n />\n <TableWithBars\n {...{\n data: tableChartData,\n width: width - STACKED_BAR_CHART_WIDTH,\n height,\n columnsOptions: columnsOptions,\n sorting: {\n field: 'value',\n order: 'desc'\n },\n onRowClick: rowClickHandler,\n onRowHover: rowSelectHandler,\n hoverRowIndex: selectedSource?.rowIndex,\n hoverStateEnabled: true,\n dataReltioId: 'reltio-dq-dashboard-consolidation-rate-tablechart'\n }}\n />\n </div>\n );\n }}\n </DQLayoutItemContent>\n </DQLayoutItemView>\n );\n};\nexport default ConsolidationRateChart;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n content: {\n marginTop: '-13px'\n },\n bar: {\n height: '16px'\n }\n});\n","import React from 'react';\n\nimport i18n from 'ui-i18n';\n\nimport {useRDMChartDataRequest} from '../../../hooks/useRDMChartDataRequest';\nimport {useSearchRedirect} from '../../../hooks/useSearchRedirect';\nimport {getRDMTranscodeSearchState} from '../../../services/rdmTranscode';\nimport {getRDMChartColors} from '../../../services/rdmTranscode';\nimport {ViewProps} from '../../../types/ViewProps';\n\nimport {ChartDataTooltip, InfoDataRenderer} from '../../../components/ChartDataTooltip';\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport StackedHorizontalBarChart from '../../../components/StackedHorizontalBarChart/StackedHorizontalBarChart';\n\nimport {useStyles} from './styles';\n\nconst RDMTranscodeChart = ({config}: ViewProps) => {\n const {title} = config;\n\n const searchProfiles = useSearchRedirect(getRDMTranscodeSearchState);\n const {data, state, reload} = useRDMChartDataRequest();\n const colors = getRDMChartColors(data);\n const styles = useStyles();\n\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('RDM value mapping status')}\n data={[\n {\n value: i18n.text(\n 'The relative number and percentage of reference data values that have been mapped to canonical values and transcoded for use by Reltio Reference Data Management.'\n )\n },\n {\n label: `${i18n.text('Mapped values')}:`,\n value: i18n.text('Values that have been mapped and transcoded')\n },\n {\n label: `${i18n.text('Unmapped values')}:`,\n value: i18n.text('Values that have not been mapped and transcoded')\n }\n ]}\n DataRenderer={InfoDataRenderer}\n />\n );\n\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle} />\n <DQLayoutItemContent data={data} loadingState={state} onRefresh={reload} className={styles.content}>\n {({data}) => (\n <StackedHorizontalBarChart\n data={data}\n colors={colors}\n onItemClick={searchProfiles}\n classes={{bar: styles.bar}}\n />\n )}\n </DQLayoutItemContent>\n </DQLayoutItemView>\n );\n};\n\nexport default RDMTranscodeChart;\n","import {useCallback, useContext, useEffect, useState} from 'react';\n\nimport {ChartData, RequestStates, useSafePromise} from '@reltio/components';\nimport {FilterOptions, getTotals} from '@reltio/mdm-sdk';\n\nimport {EntityTypeContext} from '../contexts/EntityTypeContext';\nimport {formatRDMTranscodeData} from '../services/rdmTranscode';\n\nexport const useRDMChartDataRequest = () => {\n const entityType = useContext(EntityTypeContext);\n const [requestState, setRequestState] = useState<RequestStates>(RequestStates.INIT);\n const [data, setData] = useState<ChartData[]>([]);\n const safePromise = useSafePromise();\n\n const getRDMData = useCallback(\n (isRDMLoolupResolve: boolean) => {\n return getTotals([\n {\n filter: FilterOptions.EQUALS,\n fieldName: 'type',\n values: [entityType.uri]\n },\n {\n filter: FilterOptions.EQUALS,\n fieldName: 'rdmLookups.resolved',\n values: [isRDMLoolupResolve]\n }\n ]);\n },\n [entityType]\n );\n\n const onError = (error) => {\n console.error(error); // eslint-disable-line\n setRequestState(RequestStates.ERROR);\n setData([]);\n };\n\n const onRequestFinished = (data: ChartData[]) => {\n setData(data);\n setRequestState(RequestStates.LOADED);\n };\n\n const loadRDMChartData = useCallback(() => {\n setRequestState(RequestStates.LOADING);\n setData([]);\n return safePromise(Promise.all([getRDMData(true), getRDMData(false)]))\n .then(formatRDMTranscodeData)\n .then(onRequestFinished)\n .catch(onError);\n }, [getRDMData]);\n\n useEffect(() => {\n loadRDMChartData();\n }, [loadRDMChartData]);\n\n return {data: data, state: requestState, reload: loadRDMChartData};\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\n\nimport {ViewType} from '../constants/ViewType';\n\nimport FillRateChart from './charts/FillRateChart';\nimport UniquenessAnalysisChart from './charts/UniquenessAnalysisChart';\nimport Summary from './Summary/Summary';\nimport DQDashboardErrorView from './DQDashboardErrorView/DQDashboardErrorView';\nimport ViolatedValidationFuncChart from './charts/ViolatedValidationFuncChart';\nimport FrequencyAnalysisChart from './charts/FrequencyAnalysisChart';\nimport LengthStatisticsChart from './charts/LengthStatisticsChart';\nimport CrosswalkAnalysisChart from './charts/CrosswalkAnalysisChart/CrosswalkAnalysisChart';\nimport ValueDistributionChart from './charts/ValueDistributionChart';\nimport MonthDistributionChart from './charts/MonthDistributionChart';\nimport DayOfWeekDistributionChart from './charts/DayOfWeekDistributionChart';\nimport DayOfMonthDistributionChart from './charts/DayOfMonthDistributionChart';\nimport PatternAnalysisChart from './charts/PatternAnalysisChart';\nimport ConsolidationRateChart from './charts/ConsolidationRateChart/ConsolidationRateChart';\nimport RDMTranscodeChart from './charts/RDMTranscodeChart/RDMTranscodeChart';\n\nclass ViewsFactory {\n static getComponent = ({type, config, isFullscreen, onToggleFullscreen}) => {\n const props = {\n config,\n isFullscreen,\n onToggleFullscreen\n };\n switch (type) {\n case ViewType.FILL_RATE:\n return <FillRateChart {...props} />;\n case ViewType.UNIQUENESS:\n return <UniquenessAnalysisChart {...props} />;\n case ViewType.SUMMARY:\n return <Summary {...props} />;\n case ViewType.DATA_VALIDATION:\n return <ViolatedValidationFuncChart {...props} />;\n case ViewType.FREQUENCY:\n return <FrequencyAnalysisChart {...props} />;\n case ViewType.LENGTH_STATISTIC:\n return <LengthStatisticsChart {...props} />;\n case ViewType.CROSSWALK_ANALYSIS:\n return <CrosswalkAnalysisChart {...props} />;\n case ViewType.VALUE_DISTRIBUTION:\n return <ValueDistributionChart {...props} />;\n case ViewType.MONTH_DISTRIBUTION:\n return <MonthDistributionChart {...props} />;\n case ViewType.DAY_OF_WEEK_DISTRIBUTION:\n return <DayOfWeekDistributionChart {...props} />;\n case ViewType.DAY_OF_MONTH_DISTRIBUTION:\n return <DayOfMonthDistributionChart {...props} />;\n case ViewType.PATTERN:\n return <PatternAnalysisChart {...props} />;\n case ViewType.CONSOLIDATION_RATE:\n return <ConsolidationRateChart {...props} />;\n case ViewType.RDM_TRANSCODE:\n return <RDMTranscodeChart {...props} />;\n default:\n return (\n <DQDashboardErrorView\n {...props}\n errorData={{message: i18n.text(\"Chart isn't supported for this data type\")}}\n />\n );\n }\n };\n}\n\nexport default ViewsFactory;\n","import React from 'react';\nimport ViewsFactory from '../../views/ViewsFactory';\nimport {DQDashboardView} from '../../types/DQDashboardView';\nimport {ReactGridLayoutItem} from '@reltio/components';\n\ntype Props = {\n className?: string;\n isFullscreen: boolean;\n style: React.CSSProperties;\n views: DQDashboardView[];\n onToggleFullscreen: (id: string) => void;\n layoutItemConfig: ReactGridLayoutItem;\n children: React.ReactNode;\n};\n\nexport const DQDashboardLayoutItem = ({\n layoutItemConfig,\n views,\n onToggleFullscreen,\n isFullscreen,\n className,\n children: ResizeComponent,\n style\n}: Props) => {\n const config = views.find(({id}) => layoutItemConfig.i === id);\n\n if (!config) {\n return null;\n }\n const {type} = config;\n\n return (\n <div style={style} className={className}>\n {ViewsFactory.getComponent({\n type,\n config,\n onToggleFullscreen,\n isFullscreen\n })}\n {ResizeComponent}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n overflow: 'auto',\n backgroundColor: '#EEEEEE',\n height: '100%',\n flexGrow: 1,\n padding: '0 4px',\n boxSizing: 'border-box'\n }\n});\n","import {assoc, map} from 'ramda';\nimport React, {memo, useMemo} from 'react';\n\nimport {ReltioGridLayout, ReltioGridLayoutItem} from '@reltio/components';\n\nimport {DQDashboardView} from '../../types/DQDashboardView';\nimport {DQDashboardLayoutItem} from '../DQDashboardLayoutItem/DQDashboardLayoutItem';\n\nimport {useStyles} from './styles';\n\nexport type DQDashboardLayoutProps = {\n views: DQDashboardView[];\n layout?: ReltioGridLayoutItem[];\n layoutOptions?: {\n cols: number;\n rowHeight: number;\n margin: [number, number];\n };\n};\n\nconst reltioGridLayoutToStaticLayout = map(assoc('isStatic', true));\nconst DEFAULT_LAYOUT_OPTIONS = {\n cols: 6,\n rowHeight: 10,\n margin: [12, 12] as [number, number]\n};\n\nconst DQDashboardLayout = ({views, layout, layoutOptions = DEFAULT_LAYOUT_OPTIONS}: DQDashboardLayoutProps) => {\n const styles = useStyles();\n\n const staticLayout = useMemo(() => reltioGridLayoutToStaticLayout(layout), [layout]);\n return (\n <div className={styles.root}>\n <ReltioGridLayout\n LayoutItem={DQDashboardLayoutItem}\n views={views}\n layout={staticLayout}\n layoutOptions={layoutOptions}\n />\n </div>\n );\n};\n\nexport default memo(DQDashboardLayout);\n","import React from 'react';\n\nimport {DQDataLevel} from '@reltio/mdm-sdk';\nimport {ReltioGridLayoutItem} from '@reltio/components';\n\nimport {DataLevelContext} from '../../contexts/DataLevelContext';\nimport {TimeRangeContext} from '../../contexts/TimeRangeContext';\nimport {DQDashboardView} from '../../types/DQDashboardView';\nimport {TimeRange} from '../../types/TimeRange';\n\nimport DQDashboardLayout from '../DQDashboardLayout/DQDashboardLayout';\n\ntype Props = {\n dataLevel: DQDataLevel;\n views: DQDashboardView[];\n timeRange: TimeRange;\n layout?: ReltioGridLayoutItem[];\n isSliding?: boolean;\n};\n\nconst AttributeLevelLayout = ({dataLevel, views, layout, timeRange, isSliding = false}: Props) => {\n return (\n (dataLevel === DQDataLevel.ATTRIBUTE_TYPE || isSliding) && (\n <TimeRangeContext.Provider value={timeRange}>\n <DataLevelContext.Provider value={DQDataLevel.ATTRIBUTE_TYPE}>\n <DQDashboardLayout views={views} layout={layout} />\n </DataLevelContext.Provider>\n </TimeRangeContext.Provider>\n )\n );\n};\n\nexport default AttributeLevelLayout;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n breadcrumb: {\n fontSize: '16px',\n color: theme.palette.text.primary\n },\n active: {\n color: 'rgba(0, 0, 102, 1)'\n },\n clickable: {\n cursor: 'pointer'\n }\n}));\n","import React from 'react';\nimport {Breadcrumbs as Breadcrumbs} from '@material-ui/core';\nimport classnames from 'classnames';\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport i18n from 'ui-i18n';\nimport {DQDataLevel} from '@reltio/mdm-sdk';\n\nimport {DetailedAttributeType} from '../../types/DetailedAttributeType';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n dataLevel: DQDataLevel;\n detailedAttributeType: DetailedAttributeType;\n onChange: (dataLevel: DQDataLevel) => void;\n};\nconst DataLevelBreadcrumbs = ({dataLevel, detailedAttributeType, onChange}: Props) => {\n const styles = useStyles();\n\n const handleChangeDataLevel = (dataLevel: DQDataLevel) => () => {\n onChange(dataLevel);\n };\n\n return (\n <Breadcrumbs separator={<NavigateNextIcon fontSize=\"small\" />} aria-label=\"breadcrumb\">\n {[\n <Typography\n key={DQDataLevel.ENTITY_TYPE}\n className={classnames(styles.breadcrumb, {\n [styles.active]: dataLevel === DQDataLevel.ENTITY_TYPE,\n [styles.clickable]: dataLevel === DQDataLevel.ATTRIBUTE_TYPE\n })}\n onClick={handleChangeDataLevel(DQDataLevel.ENTITY_TYPE)}\n data-reltio-id=\"reltio-dq-dashboard-breadcrumb-entity-level\"\n >\n {i18n.text('Entity overview')}\n </Typography>\n ].concat(\n dataLevel === DQDataLevel.ATTRIBUTE_TYPE ? (\n <Typography\n key={DQDataLevel.ATTRIBUTE_TYPE}\n className={classnames(styles.breadcrumb, styles.active)}\n data-reltio-id=\"reltio-dq-dashboard-breadcrumb-attribute-level\"\n >\n {detailedAttributeType?.label}\n </Typography>\n ) : (\n []\n )\n )}\n </Breadcrumbs>\n );\n};\n\nexport default DataLevelBreadcrumbs;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n paddingRight: '12px',\n paddingLeft: '20px',\n display: 'flex',\n flexDirection: 'row-reverse'\n },\n detailIcon: {\n marginLeft: '-5px',\n borderRadius: '50%',\n padding: '2px',\n width: '26px',\n height: '26px',\n boxSizing: 'border-box'\n },\n activeIcon: {\n background: 'white'\n }\n});\n","import React from 'react';\nimport {prop} from 'ramda';\nimport classnames from 'classnames';\nimport {\n AttributeTypeDetailIcon,\n AttributeTypeDetailIconSizes,\n AttributeTypeDetailIconVariant\n} from '../AttributeTypeDetailIcon/AttributeTypeDetailIcon';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {ChartData, RequestStates} from '@reltio/components';\nimport {getDetailLabel, checkIsDataQualitativeForAttributeList} from '../../services/attributeDetails';\nimport {AttrTypeDetails, AttrTypeDetailsType} from '../../types/DetailedAttributeType';\nimport {useStyles} from './styles';\n\ntype Props = {\n fillRateData?: ChartData[];\n fillRateState?: RequestStates;\n details: AttrTypeDetails;\n classes?: {\n iconRoot: string;\n iconsWrapper: string;\n };\n};\n\nconst AttributeTypeDetailsIcons = ({details, classes, fillRateData, fillRateState}: Props) => {\n const styles = useStyles();\n const iconRoot = prop('iconRoot', classes);\n const iconsWrapper = prop('iconsWrapper', classes);\n\n return (\n <div className={classnames(styles.root, iconsWrapper)}>\n {Object.entries(details || {})\n .reverse()\n .map(([detailType, value]) => {\n let iconVariant = AttributeTypeDetailIconVariant.NORMAL;\n if (detailType === AttrTypeDetailsType.REQUIRED) {\n const isDataLoading = fillRateState === RequestStates.LOADING;\n const isDataQualitative = checkIsDataQualitativeForAttributeList(fillRateData);\n if (isDataLoading) {\n iconVariant = AttributeTypeDetailIconVariant.LOADING;\n }\n if (!isDataLoading && !isDataQualitative) {\n iconVariant = AttributeTypeDetailIconVariant.BAD_QUALITY;\n }\n }\n return (\n <div\n key={detailType}\n className={classnames(value && (iconRoot || styles.activeIcon), styles.detailIcon)}\n >\n {value && (\n <Tooltip title={getDetailLabel(detailType)}>\n <span>\n <AttributeTypeDetailIcon\n detailType={detailType as AttrTypeDetailsType}\n variant={iconVariant}\n size={AttributeTypeDetailIconSizes.SMALL}\n />\n </span>\n </Tooltip>\n )}\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default AttributeTypeDetailsIcons;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n bar: {\n width: '100%',\n display: 'flex',\n flexWrap: 'nowrap'\n },\n barPart: {\n height: '8px',\n flexGrow: 1\n },\n fillRateSquare: {\n height: '8px',\n width: '8px',\n display: 'inline-block',\n marginRight: '5px',\n verticalAlign: 'middle'\n },\n inactiveBarPart: {\n background: '#EFEFEF'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Tooltip as Tooltip} from '@material-ui/core';\n\nimport i18n from 'ui-i18n';\nimport {ChartData, withPercents} from '@reltio/components';\n\nimport {isEmptyData, getBarWidthStyle} from '../../services/charts';\nimport {getFillRateColorByState, getFillRateColors} from '../../services/fillRate';\n\nimport {TooltipWithSquares} from '../ChartDataTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n data: ChartData[];\n};\n\nconst FillRateLine = ({data}: Props) => {\n const styles = useStyles();\n const colors = getFillRateColors(data);\n\n return !isEmptyData(data) ? (\n <Tooltip\n title={<TooltipWithSquares title={i18n.text('Fill rate')} data={data} getColor={getFillRateColorByState} />}\n >\n <div className={styles.bar}>\n {data.map((chartData, index) => (\n <div\n key={chartData.group}\n className={styles.barPart}\n style={{...getBarWidthStyle(chartData), background: colors[index]}}\n />\n ))}\n </div>\n </Tooltip>\n ) : (\n <div className={styles.bar}>\n <div className={classnames(styles.barPart, styles.inactiveBarPart)} />\n </div>\n );\n};\n\nexport default withPercents(FillRateLine);\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst levelLineColor = 'rgba(0, 114, 206, 0.12)';\nexport const useStyles = makeStyles({\n linesWrapper: {\n position: 'absolute',\n left: '9px',\n top: 0,\n bottom: 0\n },\n line: {\n position: 'absolute',\n width: '2px',\n background: levelLineColor,\n bottom: 0,\n zIndex: 2,\n left: 0,\n top: 0\n },\n horizontalLine: {\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n left: '2px',\n top: '15px',\n width: '3px',\n height: '2px',\n background: levelLineColor\n }\n },\n parentLine: {\n left: '20px',\n top: '34px'\n },\n lastLevel: {\n bottom: '31px'\n },\n lastLevelSelected: {\n '&:after': {top: '13px'}\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {range} from 'ramda';\nimport {Marginator} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n level: number;\n margin: number;\n hasChildren: boolean;\n isLastLevelItem: boolean;\n isCollapsed: boolean;\n isSelected: boolean;\n};\n\nconst getLevelsRange = (hasChildren: boolean, level: number): number[] => {\n if (level > 0 && hasChildren) return range(1, level + 1);\n\n if (level > 1) return range(1, level);\n return [];\n};\n\nconst TreeLines = ({level, margin, hasChildren, isLastLevelItem, isCollapsed, isSelected = false}: Props) => {\n const styles = useStyles();\n const drawLine = !isCollapsed && (level > 0 || hasChildren);\n\n return (\n <div className={styles.linesWrapper}>\n {getLevelsRange(hasChildren, level).map((level: number) => (\n <Marginator key={level} margin={margin} level={level} className={styles.line} />\n ))}\n {drawLine && (\n <Marginator\n margin={margin}\n level={level}\n className={classnames(\n styles.line,\n !hasChildren && level > 0 && styles.horizontalLine,\n hasChildren && styles.parentLine,\n isLastLevelItem && styles.lastLevel,\n isSelected && isLastLevelItem && styles.lastLevelSelected\n )}\n />\n )}\n </div>\n );\n};\n\nexport default TreeLines;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n listItem: {\n padding: '0 0 0 15px',\n '&:after': {\n content: '\"\"',\n left: 0,\n right: 0,\n position: 'absolute',\n bottom: 0,\n height: '1px',\n background: 'rgba(0, 0, 0, 0.05)'\n }\n },\n selectedItem: {\n background: 'white!important',\n border: '1px solid #000066',\n boxShadow:\n '0px 12px 17px -2px rgba(0, 0, 102, 0.06), 0px 5px 32px -4px rgba(0, 0, 102, 0.06), 0px 7px 8px -4px rgba(0, 0, 204, 0.1)',\n borderRadius: '6px',\n zIndex: 1,\n paddingLeft: '14px',\n '&:after': {\n display: 'none'\n }\n },\n clickableItem: {\n cursor: 'pointer',\n '&:hover::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n height: '100%',\n backgroundColor: 'rgba(0,0,0,0.07)',\n pointerEvents: 'none',\n zIndex: 1\n }\n },\n content: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n position: 'relative'\n },\n attribute: {\n paddingLeft: '9px',\n boxSizing: 'border-box',\n width: '100%',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n height: '100%',\n position: 'relative',\n fontSize: '13px'\n },\n marginWrapper: {\n display: 'inline-block',\n height: '100%',\n position: 'relative',\n width: '100%'\n },\n attributeType: {\n position: 'absolute',\n left: 0,\n top: '8px'\n },\n fillRate: {\n position: 'absolute',\n bottom: '8px',\n left: 0,\n right: 0,\n zIndex: 1\n },\n attributeLabel: {\n padding: '8px 0 0 15px',\n position: 'relative',\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '40px',\n height: '100%',\n background: 'linear-gradient(to right, rgba(255, 255, 255, 0.2), #fff 100%)',\n pointerEvents: 'none'\n }\n },\n parentAttributeLabel: {\n padding: '14px 0 0 13px'\n },\n detailsIcon: {\n background: 'white'\n },\n collapseIcon: {\n marginRight: '6px'\n },\n iconLoader: {\n width: '22px',\n height: '22px',\n border: '2px solid white',\n background: 'rgba(196, 196, 196, 0.4)',\n borderRadius: '50%'\n },\n iconsLoaderWrapper: {\n paddingRight: '23px',\n paddingLeft: '28px',\n display: 'flex'\n },\n iconLoaderWrapper: {\n width: '24px',\n height: '24px',\n backgroundColor: 'white',\n borderRadius: '50%',\n marginRight: '-3px'\n },\n fillRateLineLoader: {\n height: '8px',\n width: '100%',\n background: 'rgba(196, 196, 196, 0.4)',\n left: 0,\n right: 0,\n bottom: '8px',\n zIndex: 1,\n position: 'absolute'\n },\n iconsWrapper: {\n paddingRight: '11px'\n }\n});\n","import classnames from 'classnames';\nimport {times} from 'ramda';\nimport React from 'react';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport ArrowRightIcon from '@material-ui/icons/ArrowRight';\n\nimport {ChartData, ExpandedValueTooltip, Marginator, noop, RequestStates, SmallIconButton} from '@reltio/components';\n\nimport {getAttributeLabel} from '../../services/attributes';\nimport {DetailedAttributeType} from '../../types/DetailedAttributeType';\n\nimport AttributeTypeDetailsIcons from '../AttributeTypeDetailsIcons/AttributeTypeDetailsIcons';\nimport AttributeTypeIcon from '../AttributeTypeIcon/AttributeTypeIcon';\nimport FillRateLine from '../FillRateLine/FillRateLine';\nimport TreeLines from './TreeLines/TreeLines';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n detailedAttributeType: DetailedAttributeType;\n level: number;\n onClick: (detailedAttributeType: DetailedAttributeType) => void;\n fillRateData?: ChartData[];\n fillRateState?: RequestStates;\n style?: React.CSSProperties;\n selected?: boolean;\n onCollapse?: () => void;\n isCollapsed?: boolean;\n isLastLevelItem?: boolean;\n isLoading?: boolean;\n};\n\nconst MARGIN_LEFT = 20;\nconst AttributeListItem = ({\n detailedAttributeType,\n fillRateData,\n fillRateState,\n style,\n level,\n selected = false,\n onClick,\n onCollapse = noop,\n isCollapsed = false,\n isLastLevelItem = false,\n isLoading\n}: Props) => {\n const styles = useStyles();\n const handleItemClick = () => {\n onClick(detailedAttributeType);\n };\n const hasChildren = !!detailedAttributeType.children;\n const hasFillRate = !!fillRateData;\n const attributeLabel = getAttributeLabel(detailedAttributeType);\n const CollapseIcon = isCollapsed ? ArrowRightIcon : ArrowDropDownIcon;\n\n return (\n <ListItem\n style={style}\n selected={selected}\n classes={{\n selected: styles.selectedItem\n }}\n onClick={hasChildren ? undefined : handleItemClick}\n component=\"div\"\n className={classnames(styles.listItem, !hasChildren && styles.clickableItem)}\n >\n <div className={styles.content}>\n {!hasChildren && (\n <div className={styles.attributeType}>\n <AttributeTypeIcon type={detailedAttributeType.type} />\n </div>\n )}\n <div className={styles.attribute}>\n <TreeLines\n level={level}\n margin={MARGIN_LEFT}\n hasChildren={hasChildren}\n isLastLevelItem={isLastLevelItem}\n isCollapsed={isCollapsed}\n isSelected={selected}\n />\n <Marginator margin={MARGIN_LEFT} level={level} className={styles.marginWrapper}>\n <ExpandedValueTooltip value={attributeLabel}>\n <div\n className={classnames(\n styles.attributeLabel,\n hasChildren && styles.parentAttributeLabel\n )}\n >\n {hasChildren && (\n <SmallIconButton\n size=\"XXS\"\n icon={CollapseIcon}\n onClick={onCollapse}\n className={styles.collapseIcon}\n />\n )}\n {attributeLabel}\n </div>\n </ExpandedValueTooltip>\n </Marginator>\n {!isLoading && hasFillRate && !hasChildren && (\n <div className={styles.fillRate}>\n <FillRateLine data={fillRateData} />\n </div>\n )}\n {isLoading && !hasChildren && <div className={styles.fillRateLineLoader}></div>}\n </div>\n\n {isLoading ? (\n <div className={styles.iconsLoaderWrapper}>\n {times(\n (key: number) => (\n <div className={styles.iconLoaderWrapper} key={`unloadedIcon-${key}`}>\n <div className={styles.iconLoader}></div>\n </div>\n ),\n 5\n )}\n </div>\n ) : (\n <AttributeTypeDetailsIcons\n details={detailedAttributeType.details}\n classes={{iconRoot: styles.detailsIcon, iconsWrapper: selected && styles.iconsWrapper}}\n fillRateData={fillRateData}\n fillRateState={fillRateState}\n />\n )}\n </div>\n </ListItem>\n );\n};\n\nexport default AttributeListItem;\n","import {isComplexAttribute, isImage} from '@reltio/mdm-sdk';\nimport {\n __,\n assoc,\n both,\n curry,\n either,\n filter,\n find,\n findIndex,\n head,\n identity,\n includes,\n map,\n not,\n pipe,\n pluck,\n prop,\n propEq,\n propOr\n} from 'ramda';\nimport {ChartData} from '@reltio/components';\nimport {DetailedAttributeType, AttributeItemType, AttrTypeDetailsType} from '../../types/DetailedAttributeType';\nimport {\n filterAttributeByNotEmpty,\n filterAttributeByDetails,\n filterAttributeTreeByDetails\n} from '../../services/attributeFilters';\nimport {FilterOption} from '../../types/FilterOption';\nimport {FilterOptionsGroup} from '../../types/FilterOptionsGroup';\nimport {getDetailLabel} from '../../services/attributeDetails';\nimport i18n from 'ui-i18n';\n\nconst getAttrTypeFromItem = propOr({}, 'attributeItem');\ntype GetFirstSimpleDetailedAttrTypeFn = (items: AttributeItemType[]) => DetailedAttributeType;\nexport const getFirstSimpleDetailedAttrType: GetFirstSimpleDetailedAttrTypeFn = pipe(\n find(pipe(getAttrTypeFromItem, either(isComplexAttribute, isImage), not)),\n getAttrTypeFromItem\n);\n\nconst filterDetailedAttrTypeByFieldName = (fieldName: string) =>\n pipe(getAttrTypeFromItem, propEq('fieldName', fieldName));\n\ntype GetDetailedAttrTypeByFieldNameFn = (items: AttributeItemType[], uri: string) => DetailedAttributeType;\nexport const getDetailedAttrTypeByFieldName: GetDetailedAttrTypeByFieldNameFn = (items, fieldName) =>\n pipe(find(filterDetailedAttrTypeByFieldName(fieldName)), propOr(null, 'attributeItem'))(items);\n\nexport const getIndexByFieldName = (items: AttributeItemType[], fieldName: string): number =>\n findIndex(filterDetailedAttrTypeByFieldName(fieldName))(items);\n\nexport const getFillRateByAttributeType = (\n fillRates: Record<string, ChartData[]>,\n attributeType: DetailedAttributeType\n) => fillRates[attributeType.fieldName];\n\nexport const rejectCollapsedItemsChildren = (\n items: AttributeItemType[],\n collapsedFieldNames: string[]\n): AttributeItemType[] =>\n items.filter(\n ({attributeItem}) =>\n !collapsedFieldNames.some(\n (collapsedFieldName) =>\n attributeItem.fieldName.startsWith(collapsedFieldName) &&\n attributeItem.fieldName !== collapsedFieldName\n )\n );\n\nconst getFilterOptionsByGroup = (group: string) => filter(propEq('group', group));\n\nconst getDetailsOptionCount = (items: AttributeItemType[], option: FilterOption) =>\n items.filter((item) => filterAttributeByDetails([option], item.attributeItem)).length;\n\nexport enum EmptinessFilterValue {\n SHOW_EMPTY = 'showEmpty'\n}\n\nexport const emptinessFilterOptions = [\n {\n label: i18n.text('Show attributes with no data'),\n value: EmptinessFilterValue.SHOW_EMPTY,\n group: 'emptiness'\n }\n];\n\nexport const getEmptinessOptions = (): FilterOptionsGroup => {\n return {\n label: '',\n options: emptinessFilterOptions\n };\n};\n\nexport const getDetailsOptions = (items: AttributeItemType[]): FilterOptionsGroup => {\n const options = Object.values(AttrTypeDetailsType)\n .map((value) => ({\n value,\n label: getDetailLabel(value),\n group: 'details'\n }))\n .map((option) => assoc('count', getDetailsOptionCount(items, option), option));\n\n return {\n label: i18n.text('Attribute properties'),\n options\n };\n};\n\nexport const filterItemsByEmptiness = curry(\n (options: FilterOption[], fillRates: Record<string, ChartData[]>, items: AttributeItemType[]) => {\n const firstEmptinessOption = head(getFilterOptionsByGroup('emptiness')(options));\n switch (firstEmptinessOption?.value) {\n case EmptinessFilterValue.SHOW_EMPTY:\n return items;\n default:\n return items.filter(pipe(getAttrTypeFromItem, filterAttributeByNotEmpty(fillRates)));\n }\n }\n);\n\nconst filterValidDetailsOptions = (options: FilterOption[]) => {\n const validOptionValues = Object.values(AttrTypeDetailsType);\n return options.filter(pipe(prop('value'), includes(__, validOptionValues)));\n};\nconst getFieldNameFromItem: (item: AttributeItemType) => string = pipe(getAttrTypeFromItem, prop('fieldName'));\nconst getFilteredNestedFieldNames = (options: FilterOption[]): ((items: AttributeItemType[]) => string[]) =>\n pipe(\n filter(pipe(getAttrTypeFromItem, both(prop('children'), filterAttributeByDetails(options)))),\n map(getFieldNameFromItem)\n );\n\nexport const filterItemsByDetails = curry((options: FilterOption[], items: AttributeItemType[]) => {\n const detailsOptions = pipe(getFilterOptionsByGroup('details'), filterValidDetailsOptions)(options);\n const filteredNestedFieldNames = getFilteredNestedFieldNames(detailsOptions)(items);\n return items.filter(\n ({attributeItem}) =>\n filteredNestedFieldNames.some((fieldName) => attributeItem.fieldName.startsWith(fieldName)) ||\n filterAttributeTreeByDetails(detailsOptions, attributeItem)\n );\n});\n\nexport const getAtrributeFieldNames: (items: AttributeItemType[]) => string[] = pipe(\n map(getAttrTypeFromItem),\n pluck('fieldName'),\n identity\n);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n searchWrapper: {\n padding: '8px 0px 8px 16px',\n alignItems: 'center',\n display: 'flex',\n flexGrow: 1,\n justifyContent: 'flex-end',\n marginLeft: '-105px'\n },\n filterByDetails: {\n width: '32px',\n height: '32px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n marginLeft: '9px'\n },\n searchInput: {\n borderRadius: '4px',\n width: '202px',\n minHeight: '32px!important',\n justifyContent: 'flex-end',\n alignItems: 'center',\n padding: '0 2px',\n boxSizing: 'border-box',\n '& input': {fontSize: '13px'},\n '& button': {padding: '2px'}\n },\n filledInput: {\n '& button:last-child': {\n backgroundColor: 'rgba(0, 0, 0, 0.0509804)'\n }\n },\n menu: {\n width: '300px',\n paddingTop: '8px'\n },\n filterIcon: {\n color: theme.palette.text.secondary\n },\n filterIconFilterApplied: {\n color: '#0072CE'\n },\n filterIconWrapper: {\n width: '32px',\n height: '32px',\n borderRadius: '4px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n cursor: 'pointer',\n position: 'relative',\n '&:after': {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: '4px',\n background: 'rgba(0, 0, 0, 0.04)'\n },\n '&:hover': {\n '&:after': {\n content: '\"\"'\n }\n }\n },\n filterIconWrapperActive: {\n background: 'rgba(0, 0, 0, 0.04)',\n '&:after': {\n content: '\"\"',\n background: 'rgba(0, 0, 0, 0.04)'\n }\n },\n filterIconWrapperSelected: {\n background: 'rgba(0, 114, 206, 0.12)'\n },\n dropdownMenuTitle: {\n lineHeight: '48px',\n height: '48px',\n paddingLeft: '16px'\n },\n option: {\n paddingLeft: '5px',\n fontSize: '13px',\n height: '28px',\n lineHeight: '16px',\n letterSpacing: 'normal',\n paddingRight: '19px',\n filter: (isActive) => (isActive ? 'grayscale(0)' : 'grayscale(1)'),\n opacity: (isActive) => (isActive ? 1 : 0.5)\n },\n typeIconWrapper: {\n width: '28px',\n marginLeft: '1px',\n '& svg': {\n width: '20px',\n height: '20px'\n }\n },\n valueContainer: {\n marginLeft: 0\n },\n counter: {\n marginLeft: '5px'\n },\n\n optionLabel: {\n flexGrow: 1\n },\n groupLabel: {\n textTransform: 'uppercase',\n margin: '15px 16px 5px',\n letterSpacing: '0.1px',\n display: 'block'\n },\n actionsContainer: {\n display: 'flex',\n padding: '12px 5px 8px 12px'\n },\n clearAllButton: {\n marginRight: 'auto'\n }\n}));\n","import React from 'react';\nimport {isNil} from 'ramda';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {ExpandedValueTooltip} from '@reltio/components';\nimport {FilterOption} from '../../types/FilterOption';\nimport {AttrTypeDetailsType} from '../../types/DetailedAttributeType';\nimport {AttributeTypeDetailIcon} from '../AttributeTypeDetailIcon/AttributeTypeDetailIcon';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n data: FilterOption;\n isSelected: boolean;\n onChange: (data: FilterOption) => void;\n};\n\nconst Option = ({isSelected, data, onChange}: Props) => {\n const {count, label, value} = data;\n const showCounter = !isNil(count);\n const isOptionActive = !showCounter || count > 0;\n const styles = useStyles(isOptionActive);\n const handleClick = () => onChange(data);\n return (\n <MenuItem\n className={styles.option}\n component=\"div\"\n onClick={handleClick}\n data-reltio-id={`reltio-dq-dashboard-option-${data.value}`}\n >\n <Checkbox color=\"primary\" checked={isSelected} />\n <span className={styles.typeIconWrapper}>\n <AttributeTypeDetailIcon detailType={value as AttrTypeDetailsType} />\n </span>\n <ExpandedValueTooltip value={label}>\n <div className={styles.optionLabel}>{label}</div>\n </ExpandedValueTooltip>\n {showCounter && <span className={styles.counter}>{formatNumberAsMetric(count, 999)}</span>}\n </MenuItem>\n );\n};\n\nexport default Option;\n","import {curry, flatten, pipe, pluck, propEq, remove} from 'ramda';\nimport {FilterOption} from '../../types/FilterOption';\nimport {FilterOptionsGroup} from '../../types/FilterOptionsGroup';\n\nexport const containsOption = curry(\n (option: FilterOption, options: FilterOption[]) => !!options.find(propEq('value', option.value))\n);\n\nexport const withoutOption = curry((option: FilterOption, options: FilterOption[]) => {\n const optionIndex = options.findIndex(propEq('value', option.value));\n return optionIndex !== -1 ? remove(optionIndex, 1, options) : options;\n});\n\nexport const getValidFilterOptions = (\n options: FilterOption[],\n filterOptionsGroups: FilterOptionsGroup[]\n): FilterOption[] => {\n const allValidFilterOptions: FilterOption[] = pipe(pluck('options'), flatten)(filterOptionsGroups);\n return options.filter(({value}) => allValidFilterOptions.find(propEq('value', value)));\n};\n","import React, {useEffect, useState} from 'react';\nimport {always, concat, ifElse} from 'ramda';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport {Popover as Popover} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport SearchInput from 'react-components/dist/Form/SearchInput';\nimport {FilterOption} from '../../types/FilterOption';\nimport {FilterOptionsGroup} from '../../types/FilterOptionsGroup';\nimport Option from './Option';\nimport {containsOption, getValidFilterOptions, withoutOption} from './helpers';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n filterOptions: FilterOptionsGroup[];\n onChangeFilterOptions: (filterOptions: FilterOption[]) => void;\n onChangeFilterText: (filterText: string) => void;\n defaultFilterOptions?: FilterOption[];\n defaultFilterText?: string;\n};\n\nconst SEARCH_INPUT_HEIGHT = 40;\n\nconst AttributesFilters = ({\n defaultFilterOptions = [],\n filterOptions,\n defaultFilterText,\n onChangeFilterText,\n onChangeFilterOptions\n}: Props) => {\n const styles = useStyles();\n\n const [anchorEl, setAnchorEl] = useState(null);\n const [selectedFilterOptions, setSelectedFilterOptions] = useState<FilterOption[]>([]);\n const [valueInFilterTextInput, setValueInFilterTextInput] = useState<string>(defaultFilterText || null);\n useEffect(() => {\n setSelectedFilterOptions(getValidFilterOptions(defaultFilterOptions, filterOptions));\n }, [defaultFilterOptions, filterOptions]);\n\n const openFilter = (event) => setAnchorEl(event.currentTarget);\n const closeFilter = () => setAnchorEl(null);\n\n const handleClearAll = () => {\n setSelectedFilterOptions([]);\n };\n\n const handleCancel = () => {\n setSelectedFilterOptions(defaultFilterOptions);\n closeFilter();\n };\n\n const handleApply = () => {\n onChangeFilterOptions(selectedFilterOptions);\n closeFilter();\n };\n\n const handleClose = () => {\n setSelectedFilterOptions(always(defaultFilterOptions));\n closeFilter();\n };\n\n const handleChangeFilterText = (filterText: string) => {\n setValueInFilterTextInput(filterText);\n onChangeFilterText(filterText || '');\n };\n\n const handleOptionChange = (option: FilterOption) => {\n setSelectedFilterOptions(ifElse(containsOption(option), withoutOption(option), concat([option])));\n };\n\n const hasSelectedOptions = !!selectedFilterOptions.length;\n const isPopupOpen = !!anchorEl;\n const indicatorClassname = classnames(styles.filterIconWrapper, {\n [styles.filterIconWrapperActive]: isPopupOpen,\n [styles.filterIconWrapperSelected]: hasSelectedOptions\n });\n const indicatorIconClassname = hasSelectedOptions ? styles.filterIconFilterApplied : styles.filterIcon;\n\n return (\n <div className={styles.searchWrapper}>\n <div data-reltio-id=\"reltio-dq-dashboard-attributes-search-input\">\n <SearchInput\n autofocus\n onChange={handleChangeFilterText}\n initialValue={defaultFilterText || null}\n height={SEARCH_INPUT_HEIGHT}\n placeholder={i18n.text('Search attribute name')}\n classes={{root: classnames(styles.searchInput, {[styles.filledInput]: !!valueInFilterTextInput})}}\n />\n </div>\n <div className={styles.filterByDetails} data-reltio-id=\"reltio-dq-dashboard-attributes-filter\">\n <div className={indicatorClassname} onClick={openFilter}>\n <FilterListIcon className={indicatorIconClassname} />\n </div>\n <Popover\n open={!!anchorEl}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n PaperProps={{\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ['data-reltio-id']: 'reltio-dq-dashboard-attributes-filter-popup'\n }}\n >\n <div className={styles.menu}>\n <Typography variant=\"h6\" className={styles.dropdownMenuTitle}>\n {i18n.text('Filter')}\n </Typography>\n <div className={styles.valueContainer}>\n {filterOptions.map(({label, options}) => {\n return (\n <div key={label}>\n {label && (\n <Typography variant=\"caption\" className={styles.groupLabel}>\n {label}\n </Typography>\n )}\n {options.map((option) => {\n const isSelected = containsOption(option, selectedFilterOptions);\n\n return (\n <Option\n key={option.label}\n data={option}\n isSelected={isSelected}\n onChange={handleOptionChange}\n />\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n <div className={styles.actionsContainer}>\n <Button\n onClick={handleClearAll}\n className={styles.clearAllButton}\n disabled={!hasSelectedOptions}\n data-reltio-id=\"reltio-dq-dashboard-filter-clear-all-button\"\n >\n {i18n.text('Clear all')}\n </Button>\n <Button onClick={handleCancel} data-reltio-id=\"reltio-dq-dashboard-filter-cancel-button\">\n {i18n.text('Cancel')}\n </Button>\n <Button\n color=\"primary\"\n onClick={handleApply}\n data-reltio-id=\"reltio-dq-dashboard-filter-apply-button\"\n >\n {i18n.text('Apply')}\n </Button>\n </div>\n </Popover>\n </div>\n </div>\n );\n};\n\nexport default AttributesFilters;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '360px',\n minWidth: '360px',\n maxWidth: '360px',\n display: 'flex',\n flexDirection: 'column',\n background: '#fff',\n zIndex: 1,\n marginBottom: '8px',\n borderRadius: '4px',\n boxShadow: '0px 1px 1px rgba(0, 0, 0, 0.14), 0px 2px 1px rgba(0, 0, 0, 0.12), 0px 1px 3px rgba(0, 0, 0, 0.2)'\n },\n title: {\n height: '24px',\n margin: '16px',\n display: 'flex',\n alignItems: 'center',\n fontSize: '16px',\n lineHeight: '24px',\n color: theme.palette.text.primary\n },\n itemCount: {\n color: theme.palette.text.primary,\n borderLeft: '1px solid rgba(0, 0, 0, 0.12)',\n marginLeft: '16px',\n paddingLeft: '16px'\n },\n listWrapper: {\n flexGrow: 1,\n overflow: 'hidden',\n position: 'relative'\n },\n loadingAnimation: {\n '&:before': {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: '50%',\n zIndex: 1,\n width: '500%',\n marginLeft: '-250%',\n background:\n 'linear-gradient(to right, rgba(255, 255, 255, 0) 46%, rgba(255, 255, 255, 0.35) 50%, rgba(255, 255, 255, 0) 54%) 50% 50%;',\n animation: '$loaderAnimation 0.8s linear infinite',\n content: '\"\"',\n pointerEvents: 'none'\n }\n },\n columnsTitle: {\n height: '48px',\n display: 'grid',\n gridGap: '32px',\n gridTemplateColumns: '308px 108px',\n alignItems: 'center',\n padding: '0 16px',\n background: 'rgba(0, 0, 0, 0.06)',\n borderBottom: '1px solid rgba(0, 0, 0, 0.1)',\n fontWeight: 500,\n fontSize: '12px',\n lineHeight: '16px',\n color: theme.palette.text.secondary\n },\n loaderWrapper: {\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100%',\n height: '4px',\n zIndex: 1\n },\n '@keyframes loaderAnimation': {\n '0%': {\n transform: 'translate(-30%, 0)'\n },\n '100%': {\n transform: 'translate(30%, 0)'\n }\n }\n}));\n","import React, {useEffect, useRef, useState, useMemo, useContext} from 'react';\nimport classnames from 'classnames';\nimport {pathOr, isEmpty, assoc, equals} from 'ramda';\nimport {FixedSizeList as List} from 'react-window';\nimport ReactResizeDetector from 'react-resize-detector';\nimport i18n from 'ui-i18n';\nimport {TEntityType} from '@reltio/mdm-sdk';\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport {\n getAtrributeFieldNames,\n getDetailedAttrTypeByFieldName,\n getIndexByFieldName,\n getFirstSimpleDetailedAttrType,\n getFillRateByAttributeType,\n rejectCollapsedItemsChildren,\n getEmptinessOptions,\n getDetailsOptions,\n filterItemsByEmptiness,\n filterItemsByDetails,\n emptinessFilterOptions\n} from './helpers';\nimport {useAttrTypeDetails} from '../../hooks/useAttrTypeDetails';\nimport {useFillRateRequest} from '../../hooks/useFillRateRequest';\nimport {ChartsDataWithState} from '../../hooks/useChartData';\nimport {FilterOption} from '../../types/FilterOption';\nimport {AttributeItemType, DetailedAttributeType} from '../../types/DetailedAttributeType';\nimport AttributesFilters from '../AttributesFilters/AttributesFilters';\nimport {DVFContext} from '../../contexts/DVFContext';\nimport DQDashboardNoData from '../DQDashboardNoData/DQDashboardNoData';\nimport {EMPTY_STATE_ICONS, RequestStates} from '@reltio/components';\nimport {EmptyStateVariants} from '../../types/EmptyStateVariants';\nimport {ChartsDataContext} from '../../contexts/ChartsDataContext';\nimport {formatFillRateData} from '../../services/fillRate';\nimport {useStyles} from './styles';\n\nexport type DQDashboardAttributesListProps = {\n entityType: TEntityType;\n onAttributesListChange: ({\n selectedDetailedAttributeType,\n filterText,\n filterOptions\n }: {\n selectedDetailedAttributeType: DetailedAttributeType;\n filterText: string;\n filterOptions: FilterOption[];\n }) => void;\n defaultFieldName?: string;\n defaultFilterText?: string;\n defaultFilterOptions?: FilterOption[];\n disableAttributeSelection: boolean;\n};\n\ntype RenderAttributeProps = {\n data: AttributeItemType[];\n style: React.CSSProperties;\n index: number;\n};\n\nconst LIST_ITEM_HEIGHT = 48;\nconst NO_DATA_HEIGHT = 349;\n\nconst getItemsLabel = (count: number) => (count === 1 ? i18n.text('item') : i18n.text('items'));\n\nconst DQDashboardAttributesList = ({\n entityType,\n onAttributesListChange,\n defaultFieldName,\n defaultFilterOptions,\n defaultFilterText,\n disableAttributeSelection\n}: DQDashboardAttributesListProps) => {\n const styles = useStyles();\n const listRef = useRef<List>();\n const listWrapper = useRef<HTMLDivElement>();\n const [filterText, setFilterText] = useState(defaultFilterText || '');\n const [collapsedFieldNames, setCollapsedFieldNames] = useState<string[]>([]);\n const [selectedFilterOptions, setSelectedFilterOptions] = useState<FilterOption[]>(\n defaultFilterOptions || emptinessFilterOptions\n );\n const [selectedFieldName, setSelectedFieldName] = useState({fieldName: defaultFieldName});\n const [fillRates, setFillRates] = useState({});\n const {data: chartsData} = useContext<ChartsDataWithState>(ChartsDataContext);\n const dvfState = useContext(DVFContext)?.dvfs?.state;\n const items = useAttrTypeDetails(entityType, filterText);\n\n const attributeFieldNames = getAtrributeFieldNames(items);\n const memoizedAttributeFieldNames = useMemo(\n () => attributeFieldNames,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [attributeFieldNames.toString()]\n );\n const {data: initialFillRates, state: fillRatesState} = useFillRateRequest(\n entityType.uri,\n memoizedAttributeFieldNames\n );\n useEffect(() => setFillRates(initialFillRates), [initialFillRates]);\n useEffect(() => {\n const fillRateFromChartsData = chartsData?.fillRate && formatFillRateData(chartsData?.fillRate);\n const fillRateForSelectedAttribute = fillRates[selectedFieldName.fieldName];\n setFillRates((fillRates) =>\n !fillRateFromChartsData || equals(fillRateForSelectedAttribute, fillRateFromChartsData)\n ? fillRates\n : assoc(selectedFieldName.fieldName, fillRateFromChartsData, fillRates)\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [chartsData?.fillRate]);\n\n const isLoading =\n fillRatesState === RequestStates.LOADING ||\n dvfState === RequestStates.LOADING ||\n fillRatesState === RequestStates.INIT ||\n dvfState === RequestStates.INIT;\n\n const {filteredItems, filterOptions} = useMemo(() => {\n const isFillRateNotLoaded = fillRatesState === RequestStates.INIT || fillRatesState === RequestStates.LOADING;\n const filteredByEmptinessItems = isFillRateNotLoaded\n ? items\n : filterItemsByEmptiness(selectedFilterOptions, fillRates, items);\n const detailsFilterOptions = getDetailsOptions(filteredByEmptinessItems);\n\n const filteredItems = filterItemsByDetails(selectedFilterOptions, filteredByEmptinessItems);\n const emptinessFilterOptions = getEmptinessOptions();\n const filterOptions = [emptinessFilterOptions, detailsFilterOptions];\n\n return {filteredItems, filterOptions};\n }, [items, selectedFilterOptions, fillRates, fillRatesState]);\n\n const visibleItems = useMemo(() => rejectCollapsedItemsChildren(filteredItems, collapsedFieldNames), [\n filteredItems,\n collapsedFieldNames\n ]);\n const countAttrTypes = filteredItems.length;\n\n const handleAttrTypeDetailsChange = (selectedDetailedAttributeType: DetailedAttributeType) => {\n onAttributesListChange({selectedDetailedAttributeType, filterText, filterOptions: selectedFilterOptions});\n setSelectedFieldName({fieldName: selectedDetailedAttributeType.fieldName});\n };\n\n const getSelectedDetailedAttributeType = () => {\n const selectedDetailedAttributeType =\n getDetailedAttrTypeByFieldName(filteredItems, selectedFieldName.fieldName) ||\n getFirstSimpleDetailedAttrType(filteredItems);\n return isEmpty(selectedDetailedAttributeType) || disableAttributeSelection\n ? null\n : selectedDetailedAttributeType;\n };\n\n useEffect(() => {\n if (disableAttributeSelection) {\n listRef.current?.scrollTo(0);\n return;\n }\n if (filteredItems.length) {\n const selectedDetailedAttributeType = getSelectedDetailedAttributeType();\n setSelectedFieldName({fieldName: selectedDetailedAttributeType?.fieldName || selectedFieldName.fieldName});\n }\n const indexOfSelectedFieldName = getIndexByFieldName(filteredItems, selectedFieldName.fieldName);\n indexOfSelectedFieldName > -1\n ? listRef.current?.scrollToItem(indexOfSelectedFieldName, 'center')\n : listRef.current?.scrollTo(0);\n }, [filteredItems]); // eslint-disable-line\n\n useEffect(() => {\n const selectedDetailedAttributeType = getSelectedDetailedAttributeType();\n onAttributesListChange({selectedDetailedAttributeType, filterText, filterOptions: selectedFilterOptions});\n }, [filterText, selectedFilterOptions, selectedFieldName]); // eslint-disable-line\n\n useEffect(() => {\n setSelectedFieldName(({fieldName}) => (disableAttributeSelection ? {fieldName: null} : {fieldName}));\n }, [disableAttributeSelection]);\n\n const handleScroll = ({scrollOffset}) => {\n if (listWrapper.current) {\n const currentBorderTop = listWrapper.current?.style?.borderTop;\n if (scrollOffset === 0) {\n listWrapper.current.style.borderTop = '';\n }\n if (scrollOffset > 0 && currentBorderTop === '') {\n listWrapper.current.style.borderTop = '1px solid rgba(0, 0, 0, 0.05)';\n }\n }\n };\n\n const handleCollapse = (fieldName: string) => () => {\n setCollapsedFieldNames((collapsedFieldNames) =>\n collapsedFieldNames.includes(fieldName)\n ? collapsedFieldNames.filter((collapsedFieldName) => collapsedFieldName !== fieldName)\n : collapsedFieldNames.concat(fieldName)\n );\n };\n\n const renderAttribute = ({data, index, style}: RenderAttributeProps) => {\n const {attributeItem, level = 0} = data[index];\n const selected = selectedFieldName.fieldName === attributeItem.fieldName;\n const fillRateData = getFillRateByAttributeType(fillRates, attributeItem);\n\n const isLastLevelItem = index > 0 && level > pathOr(-1, [index + 1, 'level'], visibleItems);\n\n return (\n <AttributeListItem\n fillRateData={fillRateData}\n fillRateState={fillRatesState}\n isLoading={isLoading}\n style={style}\n detailedAttributeType={attributeItem}\n level={level}\n onClick={handleAttrTypeDetailsChange}\n selected={selected}\n onCollapse={handleCollapse(attributeItem.fieldName)}\n isCollapsed={collapsedFieldNames.includes(attributeItem.fieldName)}\n isLastLevelItem={isLastLevelItem}\n />\n );\n };\n\n const itemCount = visibleItems.length;\n const hasData = !!itemCount;\n return (\n <div className={styles.root}>\n <div className={styles.title}>\n {i18n.text('Attributes')}\n <span className={styles.itemCount}>{`${countAttrTypes} ${getItemsLabel(countAttrTypes)}`}</span>\n <AttributesFilters\n defaultFilterText={defaultFilterText}\n defaultFilterOptions={selectedFilterOptions}\n onChangeFilterOptions={setSelectedFilterOptions}\n onChangeFilterText={setFilterText}\n filterOptions={filterOptions}\n />\n </div>\n <div\n ref={listWrapper}\n className={classnames(styles.listWrapper, {[styles.loadingAnimation]: isLoading})}\n data-reltio-id=\"reltio-dq-dashboard-attributes-list\"\n >\n {hasData ? (\n <ReactResizeDetector refreshMode=\"debounce\" refreshRate={100} handleHeight>\n {({height = 250}: {height: number}) => (\n <List\n ref={listRef}\n itemCount={itemCount}\n width=\"100%\"\n height={height}\n itemData={visibleItems}\n itemSize={LIST_ITEM_HEIGHT}\n onScroll={handleScroll}\n >\n {renderAttribute}\n </List>\n )}\n </ReactResizeDetector>\n ) : (\n !isLoading && (\n <DQDashboardNoData\n height={NO_DATA_HEIGHT}\n data={{\n Icon: EMPTY_STATE_ICONS.SEARCH_RESULTS,\n title: i18n.text('No results found'),\n message: i18n.text(\n 'Try adjusting your search or filter to find\\nwhat you’re looking for'\n )\n }}\n variant={EmptyStateVariants.MEDIUM}\n />\n )\n )}\n </div>\n </div>\n );\n};\n\nexport default DQDashboardAttributesList;\n","import {useState, useEffect, useMemo, useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport {evolve} from 'ramda';\nimport {TEntityType, Metadata, getEntityTypeMatchAttributes} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {getAttrTypeDetails} from '../services/attributeDetails';\nimport {AttributeItemType, DetailedAttributeType} from '../types/DetailedAttributeType';\nimport {collectFilteredAttributeItems} from '../services/attributeDetails';\nimport {DVFContext} from '../contexts/DVFContext';\n\nexport const useAttrTypeDetails = (entityType: TEntityType, filterText: string) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const attrTypeItems = useMemo(() => collectFilteredAttributeItems(filterText)(metadata, entityType), [\n metadata,\n entityType,\n filterText\n ]);\n const [itemsWithDetails, setItemsWithDetails] = useState<AttributeItemType[]>([]);\n\n const entityTypeUri = entityType.uri;\n const matchAttributes = useMemo(() => getEntityTypeMatchAttributes(metadata, entityTypeUri), [\n metadata,\n entityTypeUri\n ]);\n const dvf = useContext(DVFContext)?.dvfs?.data;\n useEffect(() => {\n setItemsWithDetails([]);\n dvf &&\n setItemsWithDetails(\n attrTypeItems.map(\n evolve({\n attributeItem: (attrTypeItem: DetailedAttributeType) => ({\n ...attrTypeItem,\n details: getAttrTypeDetails({attrTypeItem, dvf, matchAttributes}),\n ...(attrTypeItem.children && {\n children: attrTypeItem.children.map((child) => {\n child.details = getAttrTypeDetails({attrTypeItem: child, dvf, matchAttributes});\n child.details.reference = attrTypeItem.isAttributeReference;\n return child;\n })\n })\n })\n })\n )\n );\n }, [attrTypeItems, matchAttributes, dvf]);\n\n return itemsWithDetails;\n};\n","import {useCallback, useEffect, useState} from 'react';\nimport {ChartData, useSafePromise, RequestStates} from '@reltio/components';\nimport {DQDataLevel, DQMetric, getDQChartsData} from '@reltio/mdm-sdk';\nimport {formatFillRatesData} from '../services/fillRate';\n\nexport const useFillRateRequest = (entityTypeUri: string, attributeFieldNames: string[]) => {\n const [requestState, setRequestState] = useState<RequestStates>(RequestStates.INIT);\n const [fillRateData, setFillRateData] = useState<Record<string, ChartData[]>>({});\n const safePromise = useSafePromise();\n\n const onError = (error) => {\n console.error(error); // eslint-disable-line\n setRequestState(RequestStates.ERROR);\n setFillRateData({});\n };\n\n const loadFillRateData = useCallback(() => {\n if (!attributeFieldNames.length) return;\n setRequestState(RequestStates.LOADING);\n setFillRateData({});\n\n const onRequestFinished = (data: Record<string, ChartData[]>) => {\n setFillRateData(data);\n setRequestState(RequestStates.LOADED);\n };\n\n return safePromise(\n getDQChartsData({\n entityTypeUri,\n attributes: attributeFieldNames,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE,\n metrics: [DQMetric.FILL_RATE]\n })\n )\n .then(formatFillRatesData)\n .then(onRequestFinished)\n .catch(onError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [safePromise, setRequestState, setFillRateData, attributeFieldNames]);\n\n const refreshAction = useCallback(() => {\n try {\n loadFillRateData();\n } catch (e) {\n onError(e);\n }\n }, [loadFillRateData]);\n\n useEffect(() => {\n refreshAction();\n }, [refreshAction]);\n\n return {data: fillRateData, state: requestState, reload: refreshAction};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n title: {\n flexShrink: 0,\n paddingLeft: '20px'\n },\n content: {\n overflow: 'hidden',\n flexGrow: 1\n }\n});\n","import React from 'react';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n title: string;\n children: React.ReactNode;\n};\nconst DQDashboardHeader = ({title, children}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.root}>\n <Typography variant=\"h6\" className={styles.title}>\n {title}\n </Typography>\n <div className={styles.content}>{children}</div>\n </div>\n );\n};\n\nexport default DQDashboardHeader;\n","import {CSSProperties} from 'react';\nimport {makeStyles} from '@material-ui/core/styles';\n\ntype StyleProps = {\n attributeListWidth: number;\n entityLevelBarWidth: number;\n transitionTimeout: number;\n};\n\nconst scrollTopShadow: CSSProperties = {\n position: 'absolute',\n content: '\"\"',\n top: 0,\n left: 0,\n right: 0,\n zIndex: 1\n};\nconst gridPadding = 12;\n\nexport const useStyles = makeStyles((theme) => ({\n entityLevelBarWrapper: ({attributeListWidth}: StyleProps) => ({\n width: `calc(100% - ${attributeListWidth - gridPadding}px)`,\n height: '100%',\n verticalAlign: 'top',\n position: 'relative',\n boxSizing: 'border-box'\n }),\n entityLevelBar: ({transitionTimeout}: StyleProps) => ({\n position: 'absolute',\n top: 0,\n bottom: 0,\n right: '16px',\n width: '28px',\n background: 'linear-gradient(0deg, rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05)), #FFFFFF',\n boxShadow: '0px 1px 1px rgba(0, 0, 0, 0.14), 0px 2px 1px rgba(0, 0, 0, 0.12), 0px 1px 3px rgba(0, 0, 0, 0.2)',\n color: theme.palette.text.secondary,\n fontWeight: 500,\n fontSize: '14px',\n writingMode: 'vertical-rl',\n textTransform: 'uppercase',\n cursor: 'pointer',\n transition: `opacity ${transitionTimeout}s`,\n padding: '52px 0',\n marginBottom: '8px',\n lineHeight: '28px'\n }),\n entityLevelBarHidden: () => ({\n opacity: 0\n }),\n entityLevelLayout: ({transitionTimeout}: StyleProps) => ({\n width: '100%',\n height: '100%',\n position: 'relative',\n left: 0,\n transition: `left ${transitionTimeout}s`,\n marginTop: '-12px',\n '&:before': {\n ...scrollTopShadow,\n top: '8px',\n height: '4px',\n background: 'linear-gradient(180deg, #EEEEEE 0%, rgba(238, 238, 238, 0) 100%)',\n zIndex: 1\n },\n '&:after': {\n ...scrollTopShadow,\n height: '8px',\n background: '#EEEEEE'\n }\n }),\n entityLevelLayoutSliding: ({entityLevelBarWidth}: StyleProps) => ({\n left: `-${entityLevelBarWidth}px`\n }),\n expandButton: {\n position: 'absolute',\n top: '15px',\n left: '6px',\n writingMode: 'initial',\n textTransform: 'none',\n maxWidth: '24px',\n height: '24px',\n borderRadius: '12px',\n background: '#fff',\n boxShadow: '0px 2px 2px rgba(0, 0, 0, 0.14), 0px 3px 1px rgba(0, 0, 0, 0.12), 0px 1px 5px rgba(0, 0, 0, 0.2)',\n transition: 'max-width 0.3s linear',\n zIndex: 2,\n overflow: 'hidden',\n display: 'flex',\n lineHeight: '28px',\n '&:hover': {\n maxWidth: '500px'\n }\n },\n expandButtonText: {\n paddingRight: '8px',\n fontSize: '12px',\n lineHeight: '24px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport RightArrowIcon from '@material-ui/icons/ChevronRight';\n\nimport i18n from 'ui-i18n';\nimport {ReltioGridLayoutItem} from '@reltio/components';\nimport {getLabel, DQDataLevel, TEntityType} from '@reltio/mdm-sdk';\n\nimport {ATTRIBUTE_LIST_WIDTH, ENTITY_LEVEL_BAR_WIDTH, TRANSITION_TIMEOUT_MS} from '../constants';\nimport {DQDashboardView} from '../../../types/DQDashboardView';\nimport {DataLevelContext} from '../../../contexts/DataLevelContext';\n\nimport DQDashboardLayout from '../../DQDashboardLayout/DQDashboardLayout';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n showEntityLevel: () => void;\n dataLevel: DQDataLevel;\n views: DQDashboardView[];\n entityType: TEntityType;\n layout?: ReltioGridLayoutItem[];\n isSliding?: boolean;\n};\n\nconst EntityLevelLayout = ({showEntityLevel, dataLevel, views, layout, entityType, isSliding = false}: Props) => {\n const styles = useStyles({\n transitionTimeout: TRANSITION_TIMEOUT_MS / 1000,\n attributeListWidth: ATTRIBUTE_LIST_WIDTH,\n entityLevelBarWidth: ENTITY_LEVEL_BAR_WIDTH\n });\n\n const expandButtonTitle = `${i18n.text('Entity')}: ${getLabel(entityType.label)} ${i18n.text('overview')}`;\n return (\n <div className={styles.entityLevelBarWrapper} onClick={showEntityLevel}>\n <div\n className={classnames(styles.entityLevelBar, {\n [styles.entityLevelBarHidden]: dataLevel === DQDataLevel.ENTITY_TYPE\n })}\n data-reltio-id=\"reltio-dq-dashboard-entity-level-bar-button\"\n >\n <div className={styles.expandButton}>\n <RightArrowIcon />\n <span className={styles.expandButtonText}>{expandButtonTitle}</span>\n </div>\n {i18n.text('Entity')}\n </div>\n <div\n className={classnames(styles.entityLevelLayout, {\n [styles.entityLevelLayoutSliding]: dataLevel !== DQDataLevel.ENTITY_TYPE\n })}\n >\n {(dataLevel === DQDataLevel.ENTITY_TYPE || isSliding) && (\n <DataLevelContext.Provider value={DQDataLevel.ENTITY_TYPE}>\n <DQDashboardLayout views={views} layout={layout} />\n </DataLevelContext.Provider>\n )}\n </div>\n </div>\n );\n};\n\nexport default EntityLevelLayout;\n","export const TRANSITION_TIMEOUT_MS = 300;\nexport const ATTRIBUTE_LIST_WIDTH = 360;\nexport const ENTITY_LEVEL_BAR_WIDTH = 76;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n counter: {\n fontSize: '10px',\n lineHeight: '12px',\n height: '12px',\n background: 'rgba(0, 0, 0, 0.05)',\n padding: '1px 4px',\n borderRadius: '2px'\n },\n selectRoot: {\n '&>fieldset': {\n border: 'none !important',\n outline: 'none !important'\n }\n },\n select: {\n borderRadius: '6px !important',\n border: '1px solid rgba(0, 0, 0, 0.05)',\n padding: '3px 29px 3px 15px !important',\n fontSize: '18px',\n lineHeight: '24px',\n paddingRight: '30px',\n color: theme.palette.text.primary,\n minWidth: '128px',\n boxSizing: 'border-box',\n '&:hover,&:focus': {\n background: 'rgba(0, 0, 0, 0.05)',\n border: 'none',\n padding: '4px 30px 4px 16px !important'\n }\n },\n selectValue: {\n display: 'flex',\n alignItems: 'center',\n gap: '9px'\n },\n arrowIcon: {\n height: '16px',\n top: 'calc(50% - 8px)',\n right: '1px'\n },\n menu: {\n padding: '4px 0',\n display: 'flex',\n flexDirection: 'column',\n gap: '4px'\n },\n optionRoot: {\n maxWidth: '184px',\n minWidth: '140px',\n display: 'flex',\n paddingRight: '8px'\n },\n optionLabel: {\n flexGrow: 1,\n fontSize: '13px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n paddingRight: '10px',\n minWidth: 0\n }\n}));\n","import React from 'react';\nimport {isNil, find, pipe, propEq} from 'ramda';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport Select, {SelectProps} from '@material-ui/core/Select';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {ExpandedValueTooltip, getValue} from '@reltio/components';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nexport type Option = {\n value: string;\n label: string;\n count?: number;\n};\ntype Props = {\n options: Option[];\n value: string;\n onChange: (value: string) => void;\n dataReltioId?: string;\n dataReltioOptionId?: string;\n} & Omit<SelectProps, 'onChange' | 'value'>;\nconst Selector = ({options, value, onChange, dataReltioId, dataReltioOptionId, ...selectProps}: Props) => {\n const styles = useStyles();\n\n const renderCount = (count: number) => <span className={styles.counter}>{formatNumberAsMetric(count, 999)}</span>;\n\n const renderValue = (value: string) => {\n const {label, count}: Option = find(propEq('value', value))(options);\n return (\n <div className={styles.selectValue}>\n {label}\n {!isNil(count) && renderCount(count)}\n </div>\n );\n };\n\n const renderOption = ({value, label, count}: Option, index: number) => (\n <MenuItem\n key={value}\n value={value}\n classes={{\n root: styles.optionRoot\n }}\n data-reltio-id={`${dataReltioOptionId}-${index}`}\n >\n <ExpandedValueTooltip value={label}>\n <Typography className={styles.optionLabel}>{label}</Typography>\n </ExpandedValueTooltip>\n {!isNil(count) && renderCount(count)}\n </MenuItem>\n );\n\n return (\n <Select\n variant=\"outlined\"\n MenuProps={{\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left'\n },\n transformOrigin: {\n vertical: 'top',\n horizontal: 'left'\n },\n getContentAnchorEl: null,\n classes: {\n list: styles.menu\n }\n }}\n value={value}\n onChange={pipe(getValue, onChange)}\n renderValue={renderValue}\n className={styles.selectRoot}\n classes={{\n outlined: styles.select,\n icon: styles.arrowIcon\n }}\n autoWidth\n data-reltio-id={dataReltioId}\n {...selectProps}\n >\n {options.map(renderOption)}\n </Select>\n );\n};\n\nexport default Selector;\n","import React from 'react';\nimport {map, pipe} from 'ramda';\n\nimport {TEntityType} from '@reltio/mdm-sdk';\n\nimport Selector, {Option} from '../Selector/Selector';\n\nexport type TEntityTypeWithCount = TEntityType & {\n entityCount: number;\n};\ntype Props = {\n entityTypes: TEntityTypeWithCount[];\n entityTypeUri: string;\n onChange: (entityTypeUri: string) => void;\n};\nconst EntityTypeSelector = ({entityTypes, entityTypeUri, onChange}: Props) => {\n const options: Option[] = pipe(\n map(({label, uri, entityCount}: {label: string; uri: string; entityCount: number}) => ({\n label,\n count: entityCount,\n value: uri\n }))\n )(entityTypes);\n\n return (\n <Selector\n options={options}\n value={entityTypeUri}\n onChange={onChange}\n dataReltioOptionId=\"reltio-dq-dashboard-entity-type-selector-option\"\n dataReltioId=\"reltio-dq-dashboard-entity-type-selector\"\n />\n );\n};\n\nexport default EntityTypeSelector;\n","import React, {useMemo} from 'react';\n\nimport {TimeRange} from '../../types/TimeRange';\n\nimport {getTimeRangeOptions} from '../../services/mlDq';\n\nimport Selector, {Option} from '../Selector/Selector';\n\ntype Props = {\n value: TimeRange;\n onChange: (value: TimeRange) => void;\n};\n\nconst TimeRangeSelector = ({value, onChange}: Props) => {\n const options: Option[] = useMemo(() => getTimeRangeOptions(), []);\n\n return (\n <Selector\n options={options}\n value={value}\n onChange={onChange}\n dataReltioOptionId=\"reltio-dq-dashboard-time-range-selector-option\"\n dataReltioId=\"reltio-dq-dashboard-time-range-selector\"\n />\n );\n};\n\nexport default TimeRangeSelector;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n marginRight: '16px'\n },\n updateTime: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n paddingRight: '16px'\n }\n}));\n","import React, {useEffect, useState} from 'react';\nimport moment from 'moment';\nimport RefreshIcon from '@material-ui/icons/Refresh';\n\nimport i18n from 'ui-i18n';\nimport {DQDataLevel} from '@reltio/mdm-sdk';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\nimport {useReloadAllFacets, useUpdateTime} from '../../contexts/ReloadFacetContext';\n\nimport {useStyles} from './styles';\n\nconst DATE_UPDATE_TIME_MS = 10000;\n\ntype Props = {\n dataLevel: DQDataLevel;\n};\n\nconst UpdateTimeHeader = ({dataLevel}: Props) => {\n const styles = useStyles();\n const [, setTick] = useState(0);\n const refreshAll = useReloadAllFacets();\n const {updateTime} = useUpdateTime(dataLevel);\n\n const handleRefreshAll = () => {\n refreshAll(dataLevel);\n };\n\n useEffect(() => {\n const intervalId = setInterval(() => setTick((timer) => timer + 1), DATE_UPDATE_TIME_MS);\n return () => clearInterval(intervalId);\n }, []);\n\n const date = moment(updateTime).fromNow();\n return (\n <div className={styles.root}>\n <span className={styles.updateTime}>{`${i18n.text('Last updated')} ${date}`}</span>\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Refresh')}\n icon={RefreshIcon}\n onClick={handleRefreshAll}\n size=\"S\"\n />\n </div>\n );\n};\n\nexport default UpdateTimeHeader;\n","import {CSSProperties} from 'react';\nimport {makeStyles} from '@material-ui/core/styles';\n\ntype StyleProps = {\n attributeListWidth: number;\n entityLevelBarWidth: number;\n transitionTimeout: number;\n};\n\nconst scrollTopShadow: CSSProperties = {\n position: 'absolute',\n content: '\"\"',\n top: 0,\n left: 0,\n right: 0,\n zIndex: 1\n};\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflowX: 'hidden',\n overflowY: 'auto',\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n display: 'flex',\n flexDirection: 'column',\n background: '#EEEEEE'\n },\n content: () => ({\n display: 'flex',\n height: '100%',\n whiteSpace: 'nowrap',\n marginLeft: '12px'\n }),\n contentWithEntityLevel: ({attributeListWidth, entityLevelBarWidth}: StyleProps) => ({\n width: `calc(200% - ${attributeListWidth + entityLevelBarWidth}px)`,\n marginLeft: '0'\n }),\n additionalLabel: {\n color: theme.palette.text.secondary,\n marginLeft: '10px'\n },\n contentWrapper: ({attributeListWidth, entityLevelBarWidth, transitionTimeout}: StyleProps) => ({\n flexGrow: 1,\n position: 'absolute',\n top: '56px',\n bottom: 0,\n left: `calc(-100% + ${attributeListWidth + entityLevelBarWidth}px)`,\n width: '100%',\n height: 'calc(100% - 56px)',\n transition: `left ${transitionTimeout}s`\n }),\n contentWrapperOneSlide: () => ({\n left: 0,\n transition: 'none'\n }),\n contentWrapperEntityLevel: () => ({\n left: 0\n }),\n attributeLevelWrapper: () => ({\n verticalAlign: 'top',\n width: 'auto',\n height: '100%',\n flexGrow: 1,\n position: 'relative',\n marginTop: '-12px',\n '&:before': {\n ...scrollTopShadow,\n top: '8px',\n height: '4px',\n background: 'linear-gradient(180deg, #EEEEEE 0%, rgba(238, 238, 238, 0) 100%)',\n zIndex: 1\n },\n '&:after': {\n ...scrollTopShadow,\n height: '8px',\n background: '#EEEEEE'\n }\n }),\n attributeLevelWithEntityLevel: ({attributeListWidth, entityLevelBarWidth}: StyleProps) => ({\n width: `calc(100% - ${attributeListWidth + entityLevelBarWidth}px)`\n }),\n navigationWrapper: {\n display: 'flex',\n gap: '16px',\n padding: '12px',\n alignItems: 'center'\n },\n headerRightSide: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'row-reverse',\n marginRight: '4px'\n }\n}));\n","import classnames from 'classnames';\nimport {ascend, assoc, equals, map, path, pipe, prop, reject, sortWith} from 'ramda';\nimport React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS, ReltioGridLayoutItem, useSavedState} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {getEntityType, DQDataLevel, DQMetric, TEntityType, Metadata} from '@reltio/mdm-sdk';\n\nimport {ATTRIBUTE_LIST_WIDTH, ENTITY_LEVEL_BAR_WIDTH, TRANSITION_TIMEOUT_MS} from './constants';\nimport {defaultLayoutsByDataLevel} from '../../constants/defaultConfig';\nimport {ChartsDataContext} from '../../contexts/ChartsDataContext';\nimport {DetailedAttributeTypeContext} from '../../contexts/DetailedAttributeTypeContext';\nimport {DVFContext} from '../../contexts/DVFContext';\nimport {EntityTypeContext} from '../../contexts/EntityTypeContext';\nimport {useReloadFacet, useUpdateTime} from '../../contexts/ReloadFacetContext';\nimport {useChartsDataRequest} from '../../hooks/useChartsDataRequest';\nimport {useDVF} from '../../hooks/useDVF';\nimport {useDvfConfigLink} from '../../hooks/useDvfConfigLink';\nimport {useEntityCount} from '../../hooks/useEntityCount';\nimport {useEntityTypes} from '../../hooks/useEntityTypes';\nimport {\n getLayoutByAttributeType,\n getMetricsFromViews,\n getEntityLevelViews,\n getAttributeLevelViews,\n hasTimeRangeLayout\n} from '../../services/charts';\nimport {checkEntityTypeHasRDMLookup} from '../../services/rdmTranscode';\nimport {isReferenceChild} from '../../services/attributeDetails';\nimport {DetailedAttributeType} from '../../types/DetailedAttributeType';\nimport {DQDashboardPerspectiveConfig} from '../../types/DQDashboardPerspectiveConfig';\nimport {DQDashboardSavedState} from '../../types/DQDashboardSavedState';\nimport {EmptyStateVariants} from '../../types/EmptyStateVariants';\nimport {FilterOption} from '../../types/FilterOption';\nimport {TimeRange} from '../../types/TimeRange';\nimport {RDMLookupState} from '../../constants/RdmLookupState';\n\nimport AttributeLevelLayout from './AttributeLevelLayout';\nimport DataLevelBreadcrumbs from '../DataLevelBreadcrumbs/DataLevelBreadcrumbs';\nimport DQDashboardAttributesList from '../DQDashboardAttributesList/DQDashboardAttributesList';\nimport DQDashboardError from '../DQDashboardError/DQDashboardError';\nimport DQDashboardHeader from '../DQDashboardHeader/DQDashboardHeader';\nimport DQDashboardNoData from '../DQDashboardNoData/DQDashboardNoData';\nimport EntityLevelLayout from './EntityLevelLayout/EntityLevelLayout';\nimport EntityTypeSelector, {TEntityTypeWithCount} from '../EntityTypeSelector/EntityTypeSelector';\nimport TimeRangeSelector from '../TimeRangeSelector/TimeRangeSelector';\nimport UpdateTimeHeader from '../UpdateTimeHeader/UpdateTimeHeader';\n\nimport {useStyles} from './styles';\n\nconst NO_DATA_HEIGHT = 359;\nconst getFirstEntityTypeUri = path([0, 'uri']);\n\ntype Props = {\n config: DQDashboardPerspectiveConfig;\n saveState: (state: DQDashboardSavedState) => void;\n getSavedState: () => Promise<DQDashboardSavedState>;\n};\n\nconst DQDashboardPerspectiveView = ({config, saveState, getSavedState}: Props) => {\n const styles = useStyles({\n transitionTimeout: TRANSITION_TIMEOUT_MS / 1000,\n attributeListWidth: ATTRIBUTE_LIST_WIDTH,\n entityLevelBarWidth: ENTITY_LEVEL_BAR_WIDTH\n });\n const customAttributeLayouts = config.layoutsByDataLevel?.[DQDataLevel.ATTRIBUTE_TYPE];\n const entityTypes = useEntityTypes();\n const [entityTypeUri, setEntityTypeUri] = useState<string>();\n const [isSliding, setIsSliding] = useState<boolean>(false);\n const [timeRange, setTimeRange] = useState<TimeRange>(\n hasTimeRangeLayout(customAttributeLayouts) ? TimeRange.LAST_7_DAYS : TimeRange.TODAY\n );\n const entityType = entityTypes && entityTypeUri ? getEntityType({entityTypes}, entityTypeUri) : null;\n const getEntityCount = useEntityCount(entityTypes);\n const [detailedAttributeType, setDetailedAttributeType] = useState<DetailedAttributeType>(null);\n const {isLoaded, savedState} = useSavedState<DQDashboardSavedState>(getSavedState);\n const canGetDQStatistic = useSelector(mdmModule.selectors.getCanUserGetDQStatistic);\n const [dataLevel, setDataLevel] = useState<DQDataLevel>();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const hasRDMLookup = metadata && entityType && checkEntityTypeHasRDMLookup(metadata, entityType);\n const {resetUpdateTimes} = useUpdateTime(dataLevel);\n\n const dvfConfigLink = useDvfConfigLink(entityType);\n const dvfs = useDVF(entityType?.uri);\n const dvfContext = useMemo(() => ({dvfs, dvfConfigLink}), [dvfs, dvfConfigLink]);\n const dqDashboardSavedState = useRef<DQDashboardSavedState>();\n useEffect(() => {\n dqDashboardSavedState.current = savedState;\n }, [savedState]);\n\n const handleSetEntityTypeByUri = useCallback(\n (entityTypeUri: string) => {\n if (entityType?.uri !== entityTypeUri) {\n resetUpdateTimes(DQDataLevel.ENTITY_TYPE);\n setDetailedAttributeType(null);\n setEntityTypeUri(entityTypeUri);\n const newDQDashboardSavedState = {\n dataLevel: DQDataLevel.ENTITY_TYPE,\n entityTypeUri,\n ...(dqDashboardSavedState.current && {\n filterOptions: dqDashboardSavedState.current.filterOptions,\n filterText: dqDashboardSavedState.current.filterText,\n fieldName: dqDashboardSavedState.current.fieldName\n })\n };\n setDataLevel(DQDataLevel.ENTITY_TYPE);\n saveState(newDQDashboardSavedState);\n dqDashboardSavedState.current = newDQDashboardSavedState;\n }\n },\n [entityType?.uri] // eslint-disable-line\n );\n const currentRDMLookupState = hasRDMLookup ? RDMLookupState.RDM_LOOKUP_EXIST : RDMLookupState.RDM_LOOKUP_NOT_EXIST;\n const entityLevelLayout =\n config.layoutsByDataLevel?.[DQDataLevel.ENTITY_TYPE]?.[currentRDMLookupState] ||\n defaultLayoutsByDataLevel[DQDataLevel.ENTITY_TYPE][currentRDMLookupState];\n const attributeLevelLayout = useMemo(\n (): ReltioGridLayoutItem[] =>\n getLayoutByAttributeType(customAttributeLayouts, detailedAttributeType?.type, timeRange),\n [detailedAttributeType?.type, customAttributeLayouts, timeRange]\n );\n\n const entityLevelViews = useMemo(\n () => (entityLevelLayout ? getEntityLevelViews(config.viewsByDataLevel, entityLevelLayout) : []),\n [config.viewsByDataLevel, entityLevelLayout]\n );\n const entityLevelMetrics = useMemo(() => getMetricsFromViews(entityLevelViews), [entityLevelViews]);\n const entityLevelChartsData = useChartsDataRequest({\n entityType,\n dataLevel: DQDataLevel.ENTITY_TYPE,\n metrics: entityLevelMetrics\n });\n\n useReloadFacet({\n state: entityLevelChartsData.state,\n reload: entityLevelChartsData.reload,\n dataLevel: DQDataLevel.ENTITY_TYPE\n });\n\n const attributeLevelViews = useMemo(\n () => getAttributeLevelViews(config.viewsByDataLevel, detailedAttributeType?.type, attributeLevelLayout),\n [config.viewsByDataLevel, detailedAttributeType?.type, attributeLevelLayout]\n );\n\n const attributeLevelMetrics = useMemo(\n () =>\n pipe(getMetricsFromViews, (metrics: DQMetric[]) =>\n isReferenceChild(detailedAttributeType) ? reject(equals(DQMetric.DATA_VALIDATION))(metrics) : metrics\n )(attributeLevelViews),\n [attributeLevelViews, detailedAttributeType]\n );\n const attributeLevelChartsData = useChartsDataRequest({\n entityType,\n detailedAttributeType,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE,\n metrics: attributeLevelMetrics\n });\n\n useReloadFacet({\n state: attributeLevelChartsData.state,\n reload: attributeLevelChartsData.reload,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n\n const sortedEntityTypesWithCount: TEntityTypeWithCount[] = pipe(\n map((entityType: TEntityType) => assoc('entityCount', getEntityCount(entityType.uri))(entityType)),\n sortWith([\n ({entityCount: a}: {entityCount: number}, {entityCount: b}: {entityCount: number}) =>\n a === b || (a > 0 && b > 0) ? 0 : a === 0 ? 1 : -1,\n ascend(prop('label'))\n ])\n )(entityTypes);\n\n useEffect(() => {\n if (isLoaded) {\n const isEntityTypeExists = !!getEntityType({entityTypes}, savedState.entityTypeUri);\n setEntityTypeUri(\n isEntityTypeExists ? savedState.entityTypeUri : getFirstEntityTypeUri(sortedEntityTypesWithCount)\n );\n setDataLevel(\n entityLevelLayout ? savedState.dataLevel || DQDataLevel.ENTITY_TYPE : DQDataLevel.ATTRIBUTE_TYPE\n );\n }\n }, [isLoaded]); // eslint-disable-line\n\n const handleAttributesListChange = ({\n selectedDetailedAttributeType,\n filterText,\n filterOptions\n }: {\n selectedDetailedAttributeType: DetailedAttributeType;\n filterText: string;\n filterOptions: FilterOption[];\n }) => {\n const fieldName = selectedDetailedAttributeType?.fieldName;\n const newDQDashboardSavedState: DQDashboardSavedState = {\n entityTypeUri: entityType.uri,\n fieldName,\n filterOptions,\n filterText,\n dataLevel: fieldName ? DQDataLevel.ATTRIBUTE_TYPE : dataLevel\n };\n if (!equals(dqDashboardSavedState.current, newDQDashboardSavedState)) {\n saveState(newDQDashboardSavedState);\n dqDashboardSavedState.current = newDQDashboardSavedState;\n }\n if (fieldName) {\n setDataLevel(DQDataLevel.ATTRIBUTE_TYPE);\n hasTimeRangeLayout(customAttributeLayouts) && setTimeRange(TimeRange.LAST_7_DAYS);\n }\n\n if (!equals(detailedAttributeType, selectedDetailedAttributeType)) {\n resetUpdateTimes(DQDataLevel.ATTRIBUTE_TYPE);\n setDetailedAttributeType(selectedDetailedAttributeType);\n }\n };\n\n const showEntityLevel = () => {\n setDataLevel(DQDataLevel.ENTITY_TYPE);\n };\n\n useEffect(() => {\n setIsSliding(true);\n if (dataLevel === DQDataLevel.ENTITY_TYPE) {\n setTimeout(() => {\n setDetailedAttributeType(null);\n }, TRANSITION_TIMEOUT_MS);\n }\n setTimeout(() => {\n setIsSliding(false);\n }, TRANSITION_TIMEOUT_MS);\n }, [dataLevel]);\n\n const handleTimeRangeChange = (timeRange: TimeRange) => {\n resetUpdateTimes(dataLevel);\n setTimeRange(timeRange);\n };\n\n const showContent = entityType && canGetDQStatistic && isLoaded && !!getEntityCount(entityTypeUri);\n const hasEntityLevel = !!entityLevelLayout;\n const showTimeRange = dataLevel === DQDataLevel.ATTRIBUTE_TYPE && hasTimeRangeLayout(customAttributeLayouts);\n return (\n <div className={styles.perspectiveView}>\n <DQDashboardHeader title={i18n.text('Data Quality')}>\n {entityType && (\n <div className={styles.navigationWrapper}>\n <EntityTypeSelector\n entityTypes={sortedEntityTypesWithCount}\n entityTypeUri={entityType.uri}\n onChange={handleSetEntityTypeByUri}\n />\n <DataLevelBreadcrumbs\n dataLevel={dataLevel}\n detailedAttributeType={detailedAttributeType}\n onChange={setDataLevel}\n />\n <div className={styles.headerRightSide}>\n {showTimeRange && <TimeRangeSelector value={timeRange} onChange={handleTimeRangeChange} />}\n <UpdateTimeHeader dataLevel={dataLevel} />\n </div>\n </div>\n )}\n </DQDashboardHeader>\n <div\n className={classnames(styles.contentWrapper, {\n [styles.contentWrapperEntityLevel]: dataLevel === DQDataLevel.ENTITY_TYPE,\n [styles.contentWrapperOneSlide]: !showContent || !hasEntityLevel\n })}\n >\n {showContent && (\n <div\n className={classnames(styles.content, {\n [styles.contentWithEntityLevel]: hasEntityLevel\n })}\n >\n <DVFContext.Provider value={dvfContext}>\n <EntityTypeContext.Provider value={entityType}>\n {hasEntityLevel && (\n <ChartsDataContext.Provider value={entityLevelChartsData}>\n <EntityLevelLayout\n showEntityLevel={showEntityLevel}\n dataLevel={dataLevel}\n views={entityLevelViews}\n layout={entityLevelLayout}\n entityType={entityType}\n isSliding={isSliding}\n />\n </ChartsDataContext.Provider>\n )}\n <ChartsDataContext.Provider value={attributeLevelChartsData}>\n <DQDashboardAttributesList\n entityType={entityType}\n onAttributesListChange={handleAttributesListChange}\n defaultFieldName={dqDashboardSavedState.current?.fieldName}\n defaultFilterText={dqDashboardSavedState.current?.filterText}\n defaultFilterOptions={dqDashboardSavedState.current?.filterOptions}\n disableAttributeSelection={dataLevel === DQDataLevel.ENTITY_TYPE}\n />\n <div\n className={classnames(styles.attributeLevelWrapper, {\n [styles.attributeLevelWithEntityLevel]: hasEntityLevel\n })}\n >\n {detailedAttributeType && (\n <DetailedAttributeTypeContext.Provider value={detailedAttributeType}>\n <AttributeLevelLayout\n dataLevel={dataLevel}\n views={attributeLevelViews}\n layout={attributeLevelLayout}\n timeRange={timeRange}\n isSliding={isSliding}\n />\n </DetailedAttributeTypeContext.Provider>\n )}\n </div>\n </ChartsDataContext.Provider>\n </EntityTypeContext.Provider>\n </DVFContext.Provider>\n </div>\n )}\n {!canGetDQStatistic && (\n <DQDashboardError\n height={NO_DATA_HEIGHT}\n errorData={{\n title: i18n.text('You don’t currently have permission to view this page'),\n message: i18n.text(' Please contact your Tenant Admin to change permissions')\n }}\n variant={EmptyStateVariants.LARGE}\n />\n )}\n {isLoaded && entityType && !getEntityCount(entityTypeUri) && canGetDQStatistic && (\n <DQDashboardNoData\n height={NO_DATA_HEIGHT}\n data={{\n Icon: EMPTY_STATE_ICONS.NO_DATA,\n title: i18n.text('Give us something to go on!'),\n message: i18n.text(\n 'Go ahead and load some data. We’ll put it on the scales and\\nlet you know here if it measures up.'\n )\n }}\n variant={EmptyStateVariants.LARGE}\n />\n )}\n </div>\n </div>\n );\n};\n\nexport default DQDashboardPerspectiveView;\n","import {useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {isAvailableEntityType, Metadata} from '@reltio/mdm-sdk';\n\nexport const useEntityTypes = () => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityTypes = useMemo(() => metadata.entityTypes.filter(isAvailableEntityType), [metadata.entityTypes]);\n return entityTypes;\n};\n","import {insert, join, pipe, propEq, split} from 'ramda';\nimport {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {getLastUriPart, TEntityType, getConsoleApps} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nexport const useDvfConfigLink = (selectedEntityType: TEntityType) => {\n const [consoleLink, setConsoleLink] = useState<string>(null);\n const [dvfConfigLink, setDVFConfigLink] = useState<string>(null);\n const safePromise = useSafePromise();\n const servicesPath = useSelector(mdmModule.selectors.getServicesPath);\n const environment = useSelector(mdmModule.selectors.getEnvironment) as string;\n const tenant = useSelector(mdmModule.selectors.getTenant) as string;\n useEffect(() => {\n safePromise(getConsoleApps({servicesPath, tenant, environment}))\n .then((response) => {\n const consoleLink = response?.data?.apps.find(propEq('name', 'Console')).uri;\n setConsoleLink(consoleLink);\n })\n .catch(() => setConsoleLink(null));\n }, [environment, tenant, servicesPath]);\n useEffect(() => {\n const dvfConfigLink =\n consoleLink && selectedEntityType?.uri\n ? pipe(\n split('?'),\n insert(1, `datamodeler/entityDetails/${getLastUriPart(selectedEntityType.uri)}/validation?`),\n join('')\n )(consoleLink)\n : null;\n setDVFConfigLink(dvfConfigLink);\n }, [selectedEntityType, consoleLink]);\n\n return dvfConfigLink;\n};\n","import {useState, useEffect, useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {getDVF, DataValidationFunction, ApiErrorCode} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useSafePromise, RequestStates} from '@reltio/components';\n\nexport const useDVF = (entityTypeUri: string) => {\n const [dvfs, setDvfs] = useState<DataValidationFunction[]>(null);\n const [requestState, setRequestState] = useState<RequestStates>(RequestStates.INIT);\n const [errorCode, setErrorCode] = useState<number>();\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n const dvfPath: string = useSelector(mdmModule.selectors.getDVFPath);\n const safePromise = useSafePromise();\n const env: string = useSelector(mdmModule.selectors.getEnvironment);\n const canUserReadDVF = useSelector(mdmModule.selectors.getCanUserReadDVF);\n const onError = (error: {errorCode: number}) => {\n console.error(error); // eslint-disable-line\n setRequestState(RequestStates.ERROR);\n setDvfs([]);\n setErrorCode(error?.errorCode);\n };\n const onRequestFinished = (dvf: {functions: DataValidationFunction[]}) => {\n setDvfs(dvf.functions);\n setErrorCode(undefined);\n setRequestState(RequestStates.LOADED);\n };\n const loadDVFs = useCallback(() => {\n if (!canUserReadDVF) {\n onError({errorCode: ApiErrorCode.ACCESS_DENIED});\n return;\n }\n if (entityTypeUri && env) {\n setErrorCode(undefined);\n setRequestState(RequestStates.LOADING);\n return safePromise(getDVF({dvfPath, tenant, entityTypeUri, env})).then(onRequestFinished).catch(onError);\n }\n }, [dvfPath, tenant, entityTypeUri, env]);\n\n useEffect(() => {\n loadDVFs();\n }, [loadDVFs]);\n\n const result = useMemo(() => ({data: dvfs, state: requestState, reload: loadDVFs, errorCode}), [\n dvfs,\n requestState,\n loadDVFs,\n errorCode\n ]);\n\n return result;\n};\n","import React, {useCallback} from 'react';\nimport {Provider} from 'react-redux';\nimport {Store} from 'redux';\nimport {MuiThemeProvider, createMuiTheme, createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\n\nimport {promisifyCallback} from '@reltio/mdm-sdk';\n\nimport {DQDashboardPerspectiveConfig} from '../../types/DQDashboardPerspectiveConfig';\nimport {DQDashboardSavedState} from '../../types/DQDashboardSavedState';\nimport {ReloadFacetProvider} from '../../contexts/ReloadFacetContext';\nimport {theme} from '../../theme';\n\nimport DQDashboardPerspectiveView from './DQDashboardPerspectiveView';\n\nconst dqDashboardTheme = createMuiTheme(theme);\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'DQDashboardPerspective',\n disableGlobal: true\n});\n\ntype Props = {\n store: Store<unknown>;\n config: DQDashboardPerspectiveConfig;\n saveState: (state: DQDashboardSavedState) => void;\n getSavedState: (clb: (state: DQDashboardSavedState) => void) => void;\n};\n\nconst DQDashboardPerspective = ({store, config, saveState, getSavedState}: Props) => {\n const getSavedStatePromisified: () => Promise<DQDashboardSavedState> = useCallback(\n promisifyCallback(getSavedState),\n [getSavedState]\n );\n\n return (\n <Provider store={store}>\n <MuiThemeProvider theme={dqDashboardTheme}>\n <StylesProvider generateClassName={generateClassName}>\n <ReloadFacetProvider>\n <DQDashboardPerspectiveView\n config={config}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n </ReloadFacetProvider>\n </StylesProvider>\n </MuiThemeProvider>\n </Provider>\n );\n};\n\nexport default DQDashboardPerspective;\n","import {DQDashboardView} from '@reltio/dq-dashboard';\n\nexport default DQDashboardView;\n"],"names":["AvatarStates","className","icon","avatarText","rootClasses","otherProps","state","setState","useState","useEffect","ICON_MODE","TEXT_MODE","onImageLoadFail","ERROR_MODE","Avatar","classnames","iconRoot","src","onError","textRoot","contextSelector","CellRenderer","withContext","TableContext","useStyles","makeStyles","theme","display","flexDirection","basicView","BasicView","forwardRef","ref","children","styles","Paper","classes","root","displayName","propTypes","PropTypes","flex","padding","paddingTop","toolbar","minHeight","lineHeight","title","fontSize","fontWeight","whiteSpace","overflow","textOverflow","Toolbar","Typography","variant","bar","backgroundColor","palette","secondary","main","opacity","position","minWidth","borderRadius","top","left","height","widthIsNumber","width","is","Number","maxWidth","getBarColorWidth","useCallback","style","flexWrap","alignItems","justifyContent","boxSizing","color","text","primary","letterSpacing","textAlign","embedded","flexShrink","full","textBox","marginTop","secondaryText","button","boxShadow","EMPTY_STATE_VARIANTS","EMPTY_STATE_ICONS","SEARCH_RESULTS","props","viewBox","xmlns","xmlnsXlink","cx","cy","fx","fy","r","gradientTransform","id","stopColor","stopOpacity","offset","x1","y1","x2","y2","x","y","filterUnits","stdDeviation","in","stroke","strokeWidth","fill","fillRule","xlinkHref","fillOpacity","mask","transform","d","rx","ry","filter","SELECT_ATTRIBUTES","maskType","maskUnits","clipRule","gradientUnits","NO_DATA","dx","dy","result","values","type","mixBlendMode","ERROR","colorInterpolationFilters","floodOpacity","mode","in2","LogoRenderer","buttonTitle","onClick","identity","access","showButton","h5","subtitle1","Button","ErrorBoundary","React","constructor","super","this","error","componentDidCatch","console","render","EmptyStub","HideOnShrink","widthToHide","handleWidth","reltioLayoutItemToReactGridLayoutItem","maxHeight","isStatic","w","h","minW","minH","maxW","maxH","i","static","reactGridLayoutItemToReltioLayoutItem","reactGridLayoutToReltioLayout","layout","map","getReltioLayoutItemById","curry","find","propEq","updateExtraPropsInLayoutItem","from","to","mergeAll","pick","copyPropsFromPreviousLayout","oldReltioLayout","reltioLayout","layoutItem","pipe","prop","defaultTo","__","_","gridLayout","background","border","transitionDuration","zIndex","userSelect","transitionProperty","willChange","pointerEvents","transition","backgroundImage","bottom","right","svg2Url","backgroundRepeat","backgroundOrigin","cursor","visibility","gridFullscreen","overflowY","ReltioGridLayout","views","layoutOptions","onLayoutChanged","draggableHandle","LayoutItem","onRemove","onDrop","droppingItem","isDroppable","useRef","fullscreenItemId","setFullscreenItemId","setWidth","cols","rowHeight","margin","processedLayout","useMemo","reltioLayoutToReactGridLayout","onReltioLayoutChanged","onToggleFullscreen","prevId","isFullscreenEnabled","onItemHeightResize","layoutId","isLayoutChanged","newLayout","newHeight","options","Math","ceil","calcHeight","refreshMode","refreshRate","onResize","innerRef","autoSize","onLayoutChange","isResizable","isDraggable","e","isItemFullscreen","autosizeComponent","autosizing","AutosizeComponent","layoutItemId","handleHeight","key","layoutItemConfig","fullscreen","item","isFullscreen","defaultProps","onConfigChanged","memo","sourceType","metadata","useSelector","mdmModule","uri","findSourceSystemByUri","getSourceSystemLabel","getAbsoluteImageUrl","VerticalDivider","borderLeft","Component","WithPercents","data","dataWithPercents","percents","countPercents","pluck","percent","enrichDataWithPercents","clickable","useClickableStyle","undefined","useSavedState","getSavedState","isLoaded","setIsLoaded","savedState","setSavedState","then","catch","DateRangeTypes","RequestStates","loader","LinearProgress","view","DashboardViewIdContext","value","ReloadFacetSignalContext","createContext","ReloadFacetActionContext","RequestsUpdateTimeContext","ReloadFacetProvider","refreshSignals","setRefreshSignals","updateTimes","setUpdateTimes","resetUpdateTimes","dataLevel","assoc","refreshAll","signals","nextSignal","propOr","Provider","updateTime","actionId","time","Date","now","assocPath","useReloadFacet","reload","useContext","Error","refreshSignal","useRefreshAction","action","nanoid","useUpdateTime","min","Object","defaultTheme","tooltip","ChartDataType","CustomViewType","ViewType","DQMetric","RDMLookupState","defaultViewsByDataLevel","DQDataLevel","FILL_RATE","i18n","UNIQUENESS","SUMMARY","DATA_VALIDATION","FREQUENCY","LENGTH_STATISTIC","PATTERN","CROSSWALK_ANALYSIS","MONTH_DISTRIBUTION","DAY_OF_WEEK_DISTRIBUTION","DAY_OF_MONTH_DISTRIBUTION","VALUE_DISTRIBUTION","UNSUPPORTED","CONSOLIDATION_RATE","RDM_TRANSCODE","defaultLayoutsByDataLevel","today","default","SSN","BOOLEAN","DATE","INTEGER","FLOAT","RDM_LOOKUP_EXIST","RDM_LOOKUP_NOT_EXIST","ChartsDataContext","DetailedAttributeTypeContext","DVFContext","EntityTypeContext","useChartsDataRequest","entityType","detailedAttributeType","metrics","requestState","setRequestState","chartsData","setChartsData","lastRequestTime","setLastRequestTime","attributeFieldName","fieldName","entityTypeUri","safePromise","useSafePromise","onRequestFinished","loadChartsData","async","buildFilterQueryString","FilterOptions","getActiveProfiles","getFacets","query","generateValuableQueryString","activeness","ActivityFilters","body","pageSize","pageNo","getInactiveProfiles","getDqChartsData","getDQChartsData","Promise","all","activeProfiles","inactiveProfiles","dqChartsData","sourceSystems","path","omit","keys","length","summary","getLastUriPart","attributes","pathOr","needRefresh","refreshAction","useEntityCount","entityTypes","entitiesCountMap","setEntitiesCountMap","TimeRange","getAdvancedSearchFilter","filters","index","operator","SearchOperator","localizeChartValues","chartData","localizedValue","getPercentLabel","isNil","isEmptyData","isEmpty","facetFiltersToSearchState","advanced","when","isDateType","evolve","mapFilterValue","parseTimestamp","searchOptions","searchByOv","ovOnly","version","getSearchState","getFilter","getChartDataTypeByAttributeType","DataTypes","STRING","UNKNOWN","getValidViews","allViews","supportedViews","reduce","viewType","viewIndex","findIndex","includes","concat","getMetricsFromViews","metric","hasTimeRangeLayout","layouts","timeRange","getBarWidthStyle","enrichChartDataWithSourceLabel","max","group","label","getEntityTypeSummarySearchState","transformTimeSeriesChartData","toFixed","RDMTranscodeStatus","RDMChartColors","RESOLVED","UNRESOLVED","getRDMChartColors","getChartItemColor","formatRDMTranscodeData","resolveCount","unresolveCount","total","dataReltioId","getRDMTranscodeFilter","rdmTranscodeStatus","getRDMTranscodeSearchState","isContainActiveVF","dvf","attributeTypeUri","some","allPass","StatusVF","isFloatingType","getAttributeLabel","getLabel","name","AttrTypeDetailsType","filterAttributeByDetails","filterOptions","detail","details","filterAttributeTreeByDetails","child","filterAttributeByNotEmpty","fillRates","fillRate","FillRateState","filterAttributeByEmpty","filterAttributeTreeByEmpty","parents","attributeUriToSearchUri","filterAttributesTypesByName","filterText","array","resultArray","currentItem","isCurrentItemMatch","toLowerCase","filterAttributeByName","push","assign","getAttrTypeDetails","attrTypeItem","matchAttributes","required","isAttributeReference","INCLUDED_IN_MATCHING","CONTAIN_VF","REQUIRED","REFERENCE","RDM_LOOKUP","isRDMLookupAttrType","getDetailLabel","attributeDetailType","buildItems","items","level","chain","childrenItems","isReference","attributeItem","isReferenceChild","EmptyStateVariants","DataLevelContext","TimeRangeContext","getTimeRangeOptions","TODAY","LAST_7_DAYS","LAST_30_DAYS","getTimeSeriesData","getData","_max_date","sortBy","getDaysByTimeRange","checkIsTimeSeries","config","timeSeries","paddingRight","infoDataLabel","chartDataLabel","tooltipWrapper","row","DataRenderer","ChartDataRenderer","fillRateSquare","marginRight","verticalAlign","getColor","tooltipData","infoIcon","infoTooltipTitle","hasInfoIcon","hasChildren","BasicViewHeader","SmallIconButton","InfoIcon","size","tooltipTitle","FillRateChartColors","getFillRateColorByState","getFillRateColors","getLabelFromState","formatFillRateData","entries","indexOf","formatFillRatesData","toPairs","getFillRateData","getFillRateChartData","always","converge","colors","getFillRateFilter","getFillRateSearchState","useChartData","getChartData","getRawFilterSearchState","keyword","isRawFilter","getEqualsRawFilterSearchState","excludeDescendantEntityTypes","searchState","entityTypesFilter","entityTypesUris","AdditionalFilterOptionsValues","join","getExcludedEntityTypesRawFilter","getDescendantEntityTypes","currentRawFilter","newRawFilter","useSearchRedirect","dispatch","useDispatch","ui","container","paddingBottom","small","marginBottom","medium","large","message","refreshButton","refreshIcon","defaultIcon","onRefresh","errorData","SMALL","Icon","startIcon","Replay","viewContent","loadingState","BasicViewContent","DashboardLinearLoader","legendLabel","legendValue","legend","itemColor","payload","withPercents","legendProps","align","wrapperStyle","content","formatNumberAsMetric","BarAxis","stackedBar","flexGrow","inactivePart","tooltipFillRate","legendWrapper","rangeWrapper","rangeValue","Bar","BarWithTooltip","withTooltip","getTooltipData","onItemClick","onBarClick","maxValue","sum","searchProfiles","useMlDqDataRequest","timeSeriesData","setTimeSeriesData","tenant","mlDqPath","startDate","endDate","days","moment","format","startDay","setDate","getDate","getTimeRangeDates","getMlDqData","attribute","DAYS_OF_WEEK","MONTHS","getFormattedDataForBarChart","chartType","RELTIO_PROFILES","SOURCE_PROFILES","getConsolidationRateChartData","InfoPanelProperties","getLabelForInfoPanel","propName","Properties","lengthStatistics","MEDIAN","AVERAGE","MININMUN","MAXIMUM","valueDistribution","crosswalkAnalysis","NUMBER_OF_SOURCES","AVG_NUMBER_OF_PROFILES","MIN_NUMBER_OF_PROFILES","MAX_NUMBER_OF_PROFILES","getInfoPanelDataForBarChart","getDataForBarChart","infoPanelData","getChartValueLabel","attributeType","formatDataTypeValue","dataTypeDefinition","convertDataWithInterval","getStartRangeFromChartData","split","head","chartDataWithRange","sort","ascend","dataItem","startRange","endRange","isLastItem","addIntervalBrackets","toString","getLengthChartData","getMonthDistributionData","getDayOfWeekDistributionData","getDayOfMonthDistributionData","getDayOfweekDistributionSearchState","dayOfWeek","getMonthDistributionSearchState","month","getDayOfMonthDistributionSearchState","dayOfMonth","getLengthStatisticsSearchState","getRangeRawFilterSearchState","getCrosswalkAnalysisSearchState","source","getValueDistributionFilterForDate","timestampStart","timestampEnd","getValueDistributionFilterForNumber","getValueDistributionFilterForFloat","lastItem","isSingleValue","getValueDistributionSearchState","cond","getConsolidationRateFilter","getConsolidationRateSearchState","getBarOpacity","selectedBar","tickFormatter","toUpperCase","getTooltip","getTooltipProp","yAxisLabel","cartesianGrid","xAxis","yAxis","line","referenceLine","labelForY","dataKey","tick","angle","textAnchor","allowDuplicatedCategory","tickCount","strokeDasharray","strokeOpacity","dot","activeDot","isFront","tooltipProps","selectedDots","setSelectedDots","onMouseMove","mouseEvent","isTooltipActive","activeLabel","activePayload","onMouseLeave","segment","every","isNaN","selectedDotsIndex","getReferenceLineCoord","_extends","target","arguments","prototype","hasOwnProperty","call","apply","infoPanel","gap","info","dynamicInfo","dynamicInfoPositive","dynamicInfoNegative","dynamicIcon","period","TimeSeriesInfoPanel","dateLabel","infoLabel","percentKey","lastChartData","last","dynamicPercent","slice","Infinity","prevPercent","lastPercent","getDynamicPercent","isPositiveDynamic","abs","tooltipKeys","active","currentPayload","disabled","chipProps","getLabelByTimeRange","Chip","InfoDataRenderer","isTimeSeries","UniquenessChartColors","UniquenessAnalysisState","getUniquenessColors","formatUniquenessAnalysisData","getUniquenessData","getUniquenessChartData","uniqueness","loading","badQuality","AttributeTypeDetailIconSizes","NORMAL","AttributeTypeDetailIconVariant","AttributeTypeDetailIcon","detailType","paddingLeft","iconVariant","isDataLoading","isDataQualitative","checkIsDataQualitativeForSummary","LOADING","BAD_QUALITY","chipClasses","header","borderRight","entitySummary","attributeTypeSummary","infoTitle","infoContent","attributeTypeIconWrapper","totalLoading","HeaderInfo","AttributeTypeIconSizes","setTotal","existsFilter","entityTypeFilter","getTotals","useExistsTotalsRequest","recordsInfo","CircularProgress","Tooltip","attributeTypesCount","collectAttributes","isReadableAttribute","either","getAttributeTypeSubAttributes","countEntityTypeAttributes","getValue","searchRedirect","search","ActivityFilter","isAttributeTypeLevel","DefaultIcon","titleChildren","viewTitle","getFormattedDataForTableChart","valueComparator","sortDirection","sortField","a","b","filterExistedDVF","dvfs","chartDataItem","findDVFByUri","enrichDVFDataWithFunctionLabel","getAttributeTypeLabelFromHierarhy","enrichEntityLevelDVFData","attributeUri","attributeTypesHierarhy","getAttributeTypesHierarchyByUri","attributeLabel","getFrequencyChartData","getPatternAnalisysData","getDVFAnalyticAttribtuteUri","attributeName","getValidationFilter","getFrequencyAnalysisStateForTimestamp","attributeValue","getFrequencyAnalysisFilterForDate","getFrequencyAnalysisFilter","getFrequencyAnalysisSearchState","isTimestampBasedType","getPatternAnalysisSearchState","pattern","getRowsCounterLabel","ViolatedValidationTimeSeriesData","getViolatedValidationData","totalProfilesCount","violatedProfilesCount","violatedProfiles","VIOLATED_PERCENTAGE","round","VIOLATED_PROFILES_COUNT","getLabelAndMaxValue","getValueByColumnId","rowValue","handler","childrenRef","el","current","clientWidth","scrollWidth","RootRef","rootRef","colorBarContainer","headCell","isFirstColumn","marginLeft","headCellWithRange","headLabel","labelWrapper","number","numberContainer","rangeLabel","tooltipValue","headCellData","headIndex","formattedMaxValue","hasRange","isOverflowing","setIsOverflowing","labelElement","overflowed","DefaultHeadCellRenderer","sortable","columnsHeaders","withTableContext","columnData","cellClassName","labelRenderer","LabelRenderer","hasCustomRenderer","utils","formattedValue","ColorBar","tableContainer","cellBorder","getExtendedLabel","secondLabel","columnsOptions","basicTableRef","tableClasses","headData","columnOptions","resizable","headCellRenderer","HeadCellRenderer","rowCellValueRenderer","LabelCellRenderer","initialWidth","NumberCellValueRenderer","context","BasicTable","columnsData","rowsData","headRowHeight","getRowCellHeight","defaultColumnWidth","defaultColumnMinWidth","hoverStateEnabled","layoutItemContent","customComparator","setSortDirection","setSortField","comparator","defaultComparator","handleSort","field","toggleSortOrder","sortedData","sorting","order","onSort","titleCount","countProfiles","VVFNoDataChartType","chartTitle","dvfConfigLink","dataSourceLabel","DVF_NOT_SUPPORTED","NotSupportedIcon","DVF_NOT_CONFIGURE","SettingsIcon","Link","href","component","underline","DATA_VALID","NiceOneIcon","PERMISSION_DENIED","TitleChildrenValue","isDataValid","totalProfiles","invalidProfiles","isAttributeDataLevel","dvfsData","dvfsState","dvfsReload","errorCode","currentDvfs","getDVFsForAttribute","activeDvfs","chartDataState","chartDataReload","getValidationChartData","getEntityLevelValidationChartData","entityTypesArray","dvfUris","invalidProfilesCount","setInvalidProfilesCount","useInvalidProfiles","getEntityCounts","dvfUri","getValidationSearchState","chartState","reloadFunction","isPermissionDenied","ApiErrorCode","isDVFNotSupported","isDVFNotConfigured","functionsCount","getEntityLevelColumnsOptions","getColumnsOptions","violatedPercentage","hasData","isTimeSeriesHasData","monoFontCell","fontFamily","preparedData","convertDateLabelsInChartData","isSSNType","BarTooltip","tooltipPayload","tooltipLabel","propertiesName","chartInfoLabel","chartInfoValue","chartInfoWrapper","chartInfoItem","InfoPanel","xAxisLabel","textTransform","XAxisLabel","xCoord","ExpandedValueTooltip","renderXAxis","tickProps","visibleTicksCount","maxTickWidth","showCategories","interval","barCategoryGap","maxBarSize","yTickRenderer","barChart","minPointSize","tickLine","axisLine","vertical","labelForX","isClickable","rectangleProps","barTooltipTitle","getBarChartSettings","showInfoPanel","shape","useLabelStyles","getSourceColor","SourceIcon","applySpec","getCrosswalkAnalysisData","SourceLabelRenderer","getValueDistributionData","onBarSelect","showTopLabel","getBarColor","uniqueDataKeys","getBarLabel","stackId","onMouseOver","getBars","useIconStyles","consolidationRateWrapper","ratePercent","tableWithSelectedRow","ConsolidationPercentage","totalCrosswalks","totalEntities","consolidationRate","reltioCleanser","totalCrosswalksBySource","formattedPercent","YAxisTickRenderer","selectedSource","setSelectedSource","barChartData","tableChartData","crosswalk","descend","getConsolidationRateTableData","sortedBarChartData","sortedSourceData","barSelectHandler","rowIndex","rowSelectHandler","rowClickHandler","onRowClick","onRowHover","hoverRowIndex","setData","getRDMData","isRDMLoolupResolve","loadRDMChartData","useRDMChartDataRequest","ViewsFactory","getComponent","DQDashboardLayoutItem","ResizeComponent","reltioGridLayoutToStaticLayout","DEFAULT_LAYOUT_OPTIONS","staticLayout","isSliding","breadcrumb","onChange","Breadcrumbs","separator","NavigateNext","handleChangeDataLevel","detailIcon","activeIcon","fillRateData","fillRateState","iconsWrapper","reverse","barPart","inactiveBarPart","levelLineColor","linesWrapper","horizontalLine","parentLine","lastLevel","lastLevelSelected","isLastLevelItem","isCollapsed","isSelected","drawLine","range","getLevelsRange","Marginator","listItem","selectedItem","clickableItem","marginWrapper","parentAttributeLabel","detailsIcon","collapseIcon","iconLoader","iconsLoaderWrapper","iconLoaderWrapper","fillRateLineLoader","selected","onCollapse","noop","isLoading","hasFillRate","CollapseIcon","ArrowRightIcon","ArrowDropDownIcon","ListItem","times","getAttrTypeFromItem","getFirstSimpleDetailedAttrType","isComplexAttribute","isImage","not","filterDetailedAttrTypeByFieldName","getFilterOptionsByGroup","EmptinessFilterValue","emptinessFilterOptions","SHOW_EMPTY","filterItemsByEmptiness","firstEmptinessOption","filterValidDetailsOptions","validOptionValues","getFieldNameFromItem","filterItemsByDetails","detailsOptions","filteredNestedFieldNames","both","getFilteredNestedFieldNames","startsWith","getAtrributeFieldNames","searchWrapper","filterByDetails","searchInput","filledInput","menu","filterIcon","filterIconFilterApplied","filterIconWrapper","filterIconWrapperActive","filterIconWrapperSelected","dropdownMenuTitle","option","isActive","typeIconWrapper","valueContainer","counter","optionLabel","groupLabel","actionsContainer","clearAllButton","count","showCounter","MenuItem","Checkbox","checked","containsOption","withoutOption","optionIndex","remove","defaultFilterOptions","defaultFilterText","onChangeFilterText","onChangeFilterOptions","anchorEl","setAnchorEl","selectedFilterOptions","setSelectedFilterOptions","valueInFilterTextInput","setValueInFilterTextInput","filterOptionsGroups","allValidFilterOptions","flatten","getValidFilterOptions","closeFilter","handleOptionChange","ifElse","hasSelectedOptions","isPopupOpen","indicatorClassname","indicatorIconClassname","SearchInput","autofocus","initialValue","placeholder","event","currentTarget","FilterList","Popover","open","onClose","anchorOrigin","horizontal","transformOrigin","PaperProps","itemCount","listWrapper","loadingAnimation","animation","columnsTitle","gridGap","gridTemplateColumns","borderBottom","loaderWrapper","onAttributesListChange","defaultFieldName","disableAttributeSelection","listRef","setFilterText","collapsedFieldNames","setCollapsedFieldNames","selectedFieldName","setSelectedFieldName","setFillRates","dvfState","attrTypeItems","getAttributeTypesTree","collectFilteredAttributeItems","itemsWithDetails","setItemsWithDetails","getEntityTypeMatchAttributes","reference","useAttrTypeDetails","attributeFieldNames","memoizedAttributeFieldNames","initialFillRates","fillRatesState","setFillRateData","loadFillRateData","useFillRateRequest","fillRateFromChartsData","fillRateForSelectedAttribute","equals","filteredItems","filteredByEmptinessItems","detailsFilterOptions","getDetailsOptionCount","getDetailsOptions","visibleItems","collapsedFieldName","rejectCollapsedItemsChildren","countAttrTypes","handleAttrTypeDetailsChange","selectedDetailedAttributeType","getSelectedDetailedAttributeType","getDetailedAttrTypeByFieldName","scrollTo","indexOfSelectedFieldName","getIndexByFieldName","scrollToItem","handleScroll","scrollOffset","currentBorderTop","borderTop","renderAttribute","getFillRateByAttributeType","itemData","itemSize","onScroll","MEDIUM","scrollTopShadow","entityLevelBarWrapper","attributeListWidth","entityLevelBar","transitionTimeout","writingMode","entityLevelBarHidden","entityLevelLayout","entityLevelLayoutSliding","entityLevelBarWidth","expandButton","expandButtonText","showEntityLevel","TRANSITION_TIMEOUT_MS","expandButtonTitle","selectRoot","outline","select","selectValue","arrowIcon","optionRoot","dataReltioOptionId","selectProps","renderCount","Select","MenuProps","getContentAnchorEl","list","renderValue","outlined","autoWidth","entityCount","setTick","useReloadAllFacets","intervalId","setInterval","timer","clearInterval","date","fromNow","RefreshIcon","perspectiveView","overflowX","contentWithEntityLevel","additionalLabel","contentWrapper","contentWrapperOneSlide","contentWrapperEntityLevel","attributeLevelWrapper","attributeLevelWithEntityLevel","navigationWrapper","headerRightSide","getFirstEntityTypeUri","saveState","customAttributeLayouts","layoutsByDataLevel","isAvailableEntityType","useEntityTypes","setEntityTypeUri","setIsSliding","setTimeRange","getEntityType","getEntityCount","setDetailedAttributeType","canGetDQStatistic","setDataLevel","hasRDMLookup","isAttrTreeHasRDMLookup","any","checkEntityTypeHasRDMLookup","selectedEntityType","consoleLink","setConsoleLink","setDVFConfigLink","servicesPath","environment","getConsoleApps","response","apps","insert","useDvfConfigLink","setDvfs","setErrorCode","dvfPath","env","canUserReadDVF","functions","loadDVFs","getDVF","useDVF","dvfContext","dqDashboardSavedState","handleSetEntityTypeByUri","newDQDashboardSavedState","currentRDMLookupState","attributeLevelLayout","chartDataType","customLayouts","defaultLayouts","mergedLayoutsByType","mergeLeft","getLayoutByAttributeType","entityLevelViews","uniqBy","getEntityLevelViews","viewsByDataLevel","entityLevelMetrics","entityLevelChartsData","attributeLevelViews","getViewsByDataType","getAttributeLevelViews","attributeLevelMetrics","reject","attributeLevelChartsData","sortedEntityTypesWithCount","sortWith","isEntityTypeExists","setTimeout","showContent","hasEntityLevel","showTimeRange","LARGE","dqDashboardTheme","createMuiTheme","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","store","getSavedStatePromisified","promisifyCallback","StylesProvider"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"7770.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AvatarWithFallback/AvatarWithFallback.tsx","webpack://@reltio/remotes/../components/src/components/BasicTableView/BasicTable/HOCs/withTableContext.js","webpack://@reltio/remotes/../components/src/components/BasicView/styles.js","webpack://@reltio/remotes/../components/src/components/BasicView/BasicView.tsx","webpack://@reltio/remotes/../components/src/components/BasicViewContent/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicViewContent/BasicViewContent.tsx","webpack://@reltio/remotes/../components/src/components/BasicViewHeader/styles.ts","webpack://@reltio/remotes/../components/src/components/BasicViewHeader/BasicViewHeader.tsx","webpack://@reltio/remotes/../components/src/components/ColorBar/styles.ts","webpack://@reltio/remotes/../components/src/components/ColorBar/ColorBar.tsx","webpack://@reltio/remotes/../components/src/components/EmptyState/styles.ts","webpack://@reltio/remotes/../components/src/components/EmptyState/EmptyState.tsx","webpack://@reltio/remotes/../components/src/icons/EmptySearchResults.tsx","webpack://@reltio/remotes/../components/src/icons/SelectAttributes.tsx","webpack://@reltio/remotes/../components/src/icons/NoData.tsx","webpack://@reltio/remotes/../components/src/icons/Error.tsx","webpack://@reltio/remotes/../components/src/components/ErrorBoundary/ErrorBoundary.tsx","webpack://@reltio/remotes/../components/src/components/HideOnShrink/HideOnShrink.js","webpack://@reltio/remotes/../components/src/components/ReltioGridLayout/helpers.js","webpack://@reltio/remotes/../components/src/components/ReltioGridLayout/icons/ResizeIcon.svg.ts","webpack://@reltio/remotes/../components/src/components/ReltioGridLayout/styles.js","webpack://@reltio/remotes/../components/src/components/ReltioGridLayout/ReltioGridLayout.js","webpack://@reltio/remotes/../components/src/components/SourceIcon/SourceIcon.tsx","webpack://@reltio/remotes/../components/src/components/VerticalDivider/VerticalDivider.js","webpack://@reltio/remotes/../components/src/components/charts/HOCs/withPercents.tsx","webpack://@reltio/remotes/../components/src/components/charts/hooks/useClickableStyle.ts","webpack://@reltio/remotes/../components/src/hooks/useSavedState.ts","webpack://@reltio/remotes/../components/src/types/index.ts","webpack://@reltio/remotes/../dashboard/src/components/DashboardLinearLoader/styles.ts","webpack://@reltio/remotes/../dashboard/src/components/DashboardLinearLoader/DashboardLinearLoader.tsx","webpack://@reltio/remotes/../dashboard/src/components/LayoutItemView/styles.ts","webpack://@reltio/remotes/../dashboard/src/components/LayoutItemView/LayoutItemView.tsx","webpack://@reltio/remotes/../dashboard/src/contexts/DashboardViewIdContext/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/ReloadFacetContext/index.tsx","webpack://@reltio/remotes/../dq-dashboard/src/theme/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/constants/ChartDataType.ts","webpack://@reltio/remotes/../dq-dashboard/src/constants/ViewType.ts","webpack://@reltio/remotes/../dq-dashboard/src/constants/RdmLookupState.ts","webpack://@reltio/remotes/../dq-dashboard/src/constants/defaultConfig.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/ChartsDataContext/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/DetailedAttributeTypeContext/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/DVFContext/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/EntityTypeContext/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useChartsDataRequest.ts","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useEntityCount.ts","webpack://@reltio/remotes/../dq-dashboard/src/types/TimeRange.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/advancedFilters.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/charts.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/rdmTranscode.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/attributes.ts","webpack://@reltio/remotes/../dq-dashboard/src/types/DetailedAttributeType.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/attributeFilters.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/attributeDetails.ts","webpack://@reltio/remotes/../dq-dashboard/src/types/EmptyStateVariants.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/DataLevelContext/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/TimeRangeContext/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/mlDq.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartDataTooltip/data-renderers/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartDataTooltip/data-renderers/InfoDataRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartDataTooltip/data-renderers/ChartDataRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartDataTooltip/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartDataTooltip/ChartDataTooltip.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartDataTooltip/TooltipWithSquares/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartDataTooltip/TooltipWithSquares/TooltipWithSquares.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQLayoutItemHeader/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQLayoutItemHeader/DQLayoutItemHeader.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQLayoutItemView/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQLayoutItemView/DQLayoutItemView.tsx","webpack://@reltio/remotes/../dq-dashboard/src/services/fillRate.ts","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useChartData.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/rawFilters.ts","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useSearchRedirect.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardError/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardError/DQDashboardError.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardNoData/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardNoData/DQDashboardNoData.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQLayoutItemContent/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQLayoutItemContent/DQLayoutItemContent.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartLegends/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartLegends/CustomLegend.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartLegends/ChartLegends.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/StackedHorizontalBarChart/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/StackedHorizontalBarChart/Bar.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/StackedHorizontalBarChart/StackedHorizontalBarChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/FillRateChart/FillRateChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useMlDqDataRequest.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/barCharts.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/LineChart/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/LineChart/LineChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/LineChart/getLineChartSettings.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/TimeSeriesInfoPanel/positiveDynamic.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/TimeSeriesInfoPanel/negativeDynamic.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/TimeSeriesInfoPanel/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/TimeSeriesInfoPanel/TimeSeriesInfoPanel.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/FillRateChart/FillRateTimeSeriesChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/TimeRangeChip/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/TimeRangeChip/TimeRangeChip.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/FillRateChart/index.tsx","webpack://@reltio/remotes/../dq-dashboard/src/services/uniquenessAnalysis.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/UniquenessAnalysisChart/UniquenessAnalysisChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/UniquenessAnalysisChart/UniquenessAnalysisTimeSeriesChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/UniquenessAnalysisChart/index.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailIcon/icons/dvf.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailIcon/icons/includedInMatching.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailIcon/icons/rdm.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailIcon/icons/reference.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailIcon/icons/required.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailIcon/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailIcon/AttributeTypeDetailIcon.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailChip/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailChip/AttributeTypeDetailChip.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetails/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetails/AttributeTypeDetails.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/Summary/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/Summary/HeaderInfo.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeIcon/icons/boolean.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeIcon/icons/date.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeIcon/icons/float.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeIcon/icons/integer.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeIcon/icons/ssn.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeIcon/icons/string.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeIcon/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeIcon/AttributeTypeIcon.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/Summary/AttributeTypeSummary.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useExistsTotalsRequest.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/Summary/EntityTypeSummary.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/Summary/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/Summary/Summary.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/DQDashboardErrorView/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/DQDashboardErrorView/DQDashboardErrorView.tsx","webpack://@reltio/remotes/../dq-dashboard/src/services/tableCharts.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ViolatedValidationFuncChart/helpers.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/helpers.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/cell-renderers/OverflowingHandler.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/cell-renderers/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/cell-renderers/HeadCellRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/cell-renderers/TableCellTooltip.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/cell-renderers/LabelCellRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/cell-renderers/NumberCellValueRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/CustomTableWithBars/TableWithBars.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomTableWithBarsChart/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomTableWithBarsChart/CustomTableWithBarsChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/icons/niceOne.svg","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/icons/settingsIcon.svg","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/icons/notSupportedIcon.svg","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ViolatedValidationFuncChart/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ViolatedValidationFuncChart/VVFChartNodata.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ViolatedValidationFuncChart/TitleChildrenValue.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ViolatedValidationFuncChart/ViolatedValidationFuncChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useInvalidProfiles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ViolatedValidationFuncChart/ViolatedValidationFuncTimeSeriesChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ViolatedValidationFuncChart/index.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/FrequencyAnalysisChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/BarTooltip/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/BarTooltip/BarTooltip.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/InfoPanel.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/XAxisLabel/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/XAxisLabel/XAxisLabel.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/getBarChartSettings.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/CustomBackgroundOnHover.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/CustomBar.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/CustomBarChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/LengthStatisticsChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CrosswalkAnalysisChart/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CrosswalkAnalysisChart/SourceLabelRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CrosswalkAnalysisChart/CrosswalkAnalysisChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ValueDistributionChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/MonthDistributionChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/DayOfWeekDistributionChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/DayOfMonthDistributionChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/PatternAnalysisChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/CustomBarChart/StackedBarChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ConsolidationRateChart/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ConsolidationRateChart/ConsolidationPercentage.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ConsolidationRateChart/SourceLabelRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ConsolidationRateChart/YAxisTickRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ConsolidationRateChart/ConsolidationRateChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/RDMTranscodeChart/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/RDMTranscodeChart/RDMTranscodeChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useRDMChartDataRequest.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/ViewsFactory.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardLayoutItem/DQDashboardLayoutItem.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardLayout/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardLayout/DQDashboardLayout.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/AttributeLevelLayout.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DataLevelBreadcrumbs/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DataLevelBreadcrumbs/DataLevelBreadcrumbs.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailsIcons/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeTypeDetailsIcons/AttributeTypeDetailsIcons.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/FillRateLine/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/FillRateLine/FillRateLine.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeListItem/TreeLines/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeListItem/TreeLines/TreeLines.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeListItem/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributeListItem/AttributeListItem.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardAttributesList/helpers.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributesFilters/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributesFilters/Option.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributesFilters/helpers.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/AttributesFilters/AttributesFilters.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardAttributesList/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardAttributesList/DQDashboardAttributesList.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useAttrTypeDetails.ts","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useFillRateRequest.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardHeader/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardHeader/DQDashboardHeader.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/EntityLevelLayout/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/EntityLevelLayout/EntityLevelLayout.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/constants.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/Selector/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/Selector/Selector.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/EntityTypeSelector/EntityTypeSelector.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/TimeRangeSelector/TimeRangeSelector.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/UpdateTimeHeader/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/UpdateTimeHeader/UpdateTimeHeader.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/DQDashboardPerspectiveView.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useEntityTypes.ts","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useDvfConfigLink.ts","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useDVF.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/index.tsx","webpack://@reltio/remotes/./src/dq-dashboard.ts"],"sourcesContent":["import {Avatar as Avatar} from '@material-ui/core';\nimport classnames from 'classnames';\nimport React, {useEffect, useState} from 'react';\n\nenum AvatarStates {\n ICON_MODE,\n TEXT_MODE,\n ERROR_MODE\n}\ntype Props = {\n className?: string;\n icon?: string;\n avatarText?: string;\n variant?: 'circle' | 'circular' | 'rounded' | 'square';\n rootClasses?: {\n iconRoot?: string;\n textRoot?: string;\n };\n};\nconst AvatarWithFallback = ({className, icon, avatarText, rootClasses, ...otherProps}: Props) => {\n const [state, setState] = useState<AvatarStates>(null);\n useEffect(() => {\n if (icon) {\n setState(AvatarStates.ICON_MODE);\n } else {\n setState(AvatarStates.TEXT_MODE);\n }\n }, [icon, avatarText]);\n const onImageLoadFail = () => {\n setState(AvatarStates.ERROR_MODE);\n };\n\n switch (state) {\n case AvatarStates.ICON_MODE:\n return (\n <Avatar\n className={classnames(className, rootClasses?.iconRoot)}\n src={icon}\n onError={onImageLoadFail}\n {...otherProps}\n />\n );\n case AvatarStates.TEXT_MODE:\n case AvatarStates.ERROR_MODE:\n return (\n <Avatar className={classnames(className, rootClasses?.textRoot)} {...otherProps}>\n {avatarText}\n </Avatar>\n );\n default:\n return null;\n }\n};\n\nexport default AvatarWithFallback;\n","import {TableContext} from '../contexts/TableContext';\nimport {withContext} from '../../../../HOCs/withContext/withContext';\n\nconst withTableContext = (contextSelector) => (CellRenderer) =>\n withContext(TableContext, contextSelector, CellRenderer);\n\nexport default withTableContext;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n 'basic-view__paper': {\n display: 'flex',\n flexDirection: 'column',\n ...theme.basicView\n }\n}));\n","import Paper, {PaperProps} from '@material-ui/core/Paper';\nimport PropTypes from 'prop-types';\nimport React, {forwardRef, Ref} from 'react';\nimport {useStyles} from './styles';\n\nconst BasicView = forwardRef<Ref<typeof Paper>, PaperProps>(({children, className, ...otherProps}, ref) => {\n const styles = useStyles();\n return (\n <Paper ref={ref} className={className} classes={{root: styles['basic-view__paper']}} {...otherProps}>\n {children}\n </Paper>\n );\n});\n\nBasicView.displayName = 'BasicView';\n\nBasicView.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string\n};\n\nexport default BasicView;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n 'basic-view-content': {\n flex: '1 1 auto',\n padding: '0 24px 24px',\n '&:first-child': {\n paddingTop: '24px'\n }\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = React.ComponentPropsWithoutRef<'div'>;\n\nconst BasicViewContent = ({children, className, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles['basic-view-content'], className)} {...otherProps}>\n {children}\n </div>\n );\n};\n\nexport default BasicViewContent;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n toolbar: {\n minHeight: '48px',\n padding: '8px 24px',\n lineHeight: '28px'\n },\n title: {\n fontSize: '18px',\n fontWeight: 'normal',\n lineHeight: 'inherit',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }\n});\n","import React from 'react';\nimport Toolbar, {ToolbarProps} from '@material-ui/core/Toolbar';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = ToolbarProps & {\n title?: string;\n classes?: Partial<Record<'root' | 'title', string>>;\n};\n\nconst BasicViewHeader = ({title, children = null, classes = {}, ...otherProps}: Props) => {\n const styles = useStyles();\n return (\n <Toolbar className={classes.root} classes={{root: styles.toolbar}} {...otherProps}>\n <Typography className={classes.title} classes={{root: styles.title}} variant=\"h6\">\n {title}\n </Typography>\n {children}\n </Toolbar>\n );\n};\n\nexport default BasicViewHeader;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n bar: {\n backgroundColor: theme.palette.secondary.main,\n opacity: 0.12,\n position: 'absolute',\n minHeight: '20px',\n minWidth: '5px',\n borderRadius: '2px',\n top: 0,\n left: 0,\n height: '100%'\n }\n}));\n","import React, {useCallback} from 'react';\nimport classnames from 'classnames';\nimport {is} from 'ramda';\nimport {useStyles} from './styles';\n\ntype Props = {\n className?: string;\n width?: number | string;\n maxWidth?: number;\n};\n\nconst widthIsNumber = (width: string | number): width is number => is(Number, width);\n\nconst ColorBar = ({className, width = 0, maxWidth}: Props) => {\n const styles = useStyles();\n\n const getBarColorWidth = useCallback(\n (width: number) => {\n return (maxWidth ? (100 * width) / maxWidth : 0) + '%';\n },\n [maxWidth]\n );\n\n return width ? (\n <div\n className={classnames(styles.bar, className)}\n style={{width: widthIsNumber(width) ? getBarColorWidth(width) : width}}\n />\n ) : null;\n};\n\nexport default ColorBar;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst maxWidth = 500;\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flex: '1 1 auto',\n flexWrap: 'nowrap',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '10px',\n overflow: 'auto',\n height: '100%',\n minHeight: '350px',\n boxSizing: 'border-box',\n '& $text': {\n color: theme.palette.text.primary,\n fontSize: '20px',\n fontWeight: 500,\n lineHeight: '24px',\n letterSpacing: '0.25px',\n textAlign: 'center'\n },\n '& $secondaryText': {\n color: theme.palette.text.secondary,\n fontSize: '15px',\n fontWeight: 300,\n lineHeight: '18px',\n letterSpacing: '0.11px',\n textAlign: 'center',\n paddingTop: '3px'\n }\n },\n embedded: {\n flexShrink: 0,\n width: '190px',\n height: '190px',\n padding: '8px'\n },\n full: {\n width: '256px',\n height: '256px'\n },\n textBox: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n maxWidth: maxWidth,\n marginTop: '16px'\n },\n text: {},\n secondaryText: {},\n button: {\n minHeight: 36,\n minWidth: 64,\n maxWidth: maxWidth,\n padding: '10px 16px',\n borderRadius: '2px',\n boxShadow:\n '0 0 2px 0 rgba(0,0,0,0.12), 0 2px 2px 0 rgba(0,0,0,0.24), 0 0 8px 0 rgba(0,0,0,0.12), 0 8px 8px 0 rgba(0,0,0,0.24)',\n fontSize: '14px',\n fontWeight: 500,\n lineHeight: '16px',\n marginTop: '24px'\n }\n}));\n","import React from 'react';\nimport {identity} from 'ramda';\nimport {Typography as Typography} from '@material-ui/core';\nimport {Button as Button} from '@material-ui/core';\nimport EmptySearchResultsIcon from '../../icons/EmptySearchResults';\nimport SelectAttributesIcon from '../../icons/SelectAttributes';\nimport NoData from '../../icons/NoData';\nimport Error from '../../icons/Error';\nimport {useStyles} from './styles';\n\nexport enum EMPTY_STATE_VARIANTS {\n full = 'full',\n embedded = 'embedded'\n}\n\nexport const EMPTY_STATE_ICONS = {\n SEARCH_RESULTS: EmptySearchResultsIcon,\n SELECT_ATTRIBUTES: SelectAttributesIcon,\n NO_DATA: NoData,\n ERROR: Error\n};\n\ntype Props = {\n variant?: EMPTY_STATE_VARIANTS;\n LogoRenderer?: React.ElementType;\n text: string;\n secondaryText?: string;\n buttonTitle?: string;\n access?: boolean;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n};\n\nconst EmptyState = ({\n variant = EMPTY_STATE_VARIANTS.full,\n LogoRenderer = EMPTY_STATE_ICONS.SEARCH_RESULTS,\n text,\n secondaryText,\n buttonTitle,\n onClick = identity,\n access\n}: Props) => {\n const styles = useStyles();\n const showButton = access && buttonTitle;\n\n return (\n <div className={styles.root}>\n <LogoRenderer className={styles[`${variant}`]} />\n <div className={styles.textBox}>\n <Typography variant=\"h5\" classes={{h5: styles.text}}>\n {text}\n </Typography>\n {secondaryText && (\n <Typography variant=\"subtitle1\" classes={{subtitle1: styles.secondaryText}}>\n {secondaryText}\n </Typography>\n )}\n </div>\n {showButton && (\n <Button className={styles.button} variant=\"contained\" color=\"primary\" onClick={onClick}>\n {buttonTitle}\n </Button>\n )}\n </div>\n );\n};\n\nexport default EmptyState;\n","import React from 'react';\n\nconst SvgEmptySearchResults: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={256}\n height={256}\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <radialGradient\n cx=\"50%\"\n cy=\"100%\"\n fx=\"50%\"\n fy=\"100%\"\n r=\"81.681%\"\n gradientTransform=\"matrix(.98998 0 0 .612 .005 .388)\"\n id=\"EmptySearchResults_svg__c\"\n >\n <stop stopColor=\"#00BFFF\" stopOpacity={0.5} offset=\"0%\" />\n <stop stopColor=\"#9EE8FF\" stopOpacity={0} offset=\"100%\" />\n </radialGradient>\n <radialGradient\n cx=\"50%\"\n cy=\"111.651%\"\n fx=\"50%\"\n fy=\"111.651%\"\n r=\"87.693%\"\n gradientTransform=\"matrix(0 -.97693 .7263 0 -.31 1.605)\"\n id=\"EmptySearchResults_svg__f\"\n >\n <stop stopColor=\"#91F8E5\" stopOpacity={0.6} offset=\"0%\" />\n <stop stopColor=\"#14F7FF\" stopOpacity={0} offset=\"100%\" />\n </radialGradient>\n <radialGradient\n cx=\"50%\"\n cy=\"103.659%\"\n fx=\"50%\"\n fy=\"103.659%\"\n r=\"90.207%\"\n gradientTransform=\"matrix(0 -1 2.23905 0 -1.821 1.537)\"\n id=\"EmptySearchResults_svg__g\"\n >\n <stop stopColor=\"#FFF\" offset=\"0%\" />\n <stop stopColor=\"#73FAFF\" stopOpacity={0.21} offset=\"59.38%\" />\n <stop stopColor=\"#14F7FF\" stopOpacity={0} offset=\"100%\" />\n </radialGradient>\n <linearGradient x1=\"50%\" y1=\"170.771%\" x2=\"50%\" y2=\"10.303%\" id=\"EmptySearchResults_svg__e\">\n <stop stopColor=\"#91F8E5\" offset=\"0%\" />\n <stop stopColor=\"#99FCFF\" stopOpacity={0} offset=\"100%\" />\n </linearGradient>\n <filter\n x=\"-25.9%\"\n y=\"-26.2%\"\n width=\"151.8%\"\n height=\"152.3%\"\n filterUnits=\"objectBoundingBox\"\n id=\"EmptySearchResults_svg__d\"\n >\n <feGaussianBlur stdDeviation={15} in=\"SourceGraphic\" />\n </filter>\n <circle id=\"EmptySearchResults_svg__a\" cx={128} cy={128} r={128} />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"EmptySearchResults_svg__b\" fill=\"#fff\">\n <use xlinkHref=\"#EmptySearchResults_svg__a\" />\n </mask>\n <use fillOpacity={0.2} fill=\"#A792CD\" xlinkHref=\"#EmptySearchResults_svg__a\" />\n <g mask=\"url(#EmptySearchResults_svg__b)\">\n <g transform=\"translate(56 34)\">\n <g opacity={0.9} strokeWidth={1} fill=\"#FFF\">\n <path d=\"M0 6.99C0 3.13 3.137 0 7 0h247.067c3.866 0 7 3.144 7 6.99v169.353c0 3.86-3.137 6.99-7 6.99H7c-3.866 0-7-3.143-7-6.99V6.99z\" />\n <path\n d=\"M13 25.99c0-3.86 3.137-6.99 7-6.99h247.067c3.866 0 7 3.144 7 6.99v169.353c0 3.86-3.137 6.99-7 6.99H20c-3.866 0-7-3.143-7-6.99V25.99z\"\n opacity={0.4}\n />\n </g>\n <g strokeWidth={1} fill=\"none\" transform=\"translate(21.756 45.833)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={213.204} cy={5.456} rx={4.351} ry={4.365} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={197.976} cy={5.456} rx={4.351} ry={4.365} />\n <path\n d=\"M10.334 1.091c5.707 0 10.334 4.627 10.334 10.334v.067c0 5.707-4.627 10.333-10.334 10.333S0 17.2 0 11.492v-.067C0 5.718 4.627 1.091 10.334 1.091z\"\n fill=\"#E3EBF4\"\n />\n <path\n d=\"M35.365.861h69.768a3.82 3.82 0 010 7.639H35.365a3.82 3.82 0 010-7.639z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M34.274 15.048h126.164a2.728 2.728 0 010 5.456H34.274a2.728 2.728 0 110-5.456z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M33.182 24.869H73.89a1.637 1.637 0 110 3.274H33.182a1.637 1.637 0 010-3.274z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n <rect\n fill=\"#645F6D\"\n opacity={0.5}\n x={21.756}\n y={17.46}\n width={87.022}\n height={12.004}\n rx={6.002}\n />\n <g strokeWidth={1} fill=\"none\" transform=\"translate(21.756 87.302)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={213.204} cy={5.456} rx={4.351} ry={4.365} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={197.976} cy={5.456} rx={4.351} ry={4.365} />\n <rect fill=\"#E3EBF4\" x={0} y={1.091} width={20.668} height={20.734} rx={10.334} />\n <path\n d=\"M35.365.861h82.647a3.82 3.82 0 010 7.639H35.365a3.82 3.82 0 010-7.639z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M34.274 15.048H174.58a2.728 2.728 0 010 5.456H34.274a2.728 2.728 0 110-5.456z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M33.182 24.869h113.119a1.637 1.637 0 110 3.274H33.182a1.637 1.637 0 010-3.274z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n <g strokeWidth={1} fill=\"none\" transform=\"translate(21.756 128.77)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={213.204} cy={5.456} rx={4.351} ry={4.365} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={197.976} cy={5.456} rx={4.351} ry={4.365} />\n <path\n d=\"M10.334 1.091c5.707 0 10.334 4.627 10.334 10.334v.067c0 5.707-4.627 10.333-10.334 10.333S0 17.2 0 11.492v-.067C0 5.718 4.627 1.091 10.334 1.091z\"\n fill=\"#E3EBF4\"\n />\n <path\n d=\"M35.365.861h110.929a3.82 3.82 0 010 7.639H35.365a3.82 3.82 0 010-7.639z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M34.274 15.048h92.443a2.728 2.728 0 010 5.456H34.274a2.728 2.728 0 110-5.456z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M33.182 24.869H73.89a1.637 1.637 0 110 3.274H33.182a1.637 1.637 0 010-3.274z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n </g>\n </g>\n <g mask=\"url(#EmptySearchResults_svg__b)\">\n <path\n fill=\"#446275\"\n d=\"M72.246 84.033l8.66 5-35.5 61.488-8.66-5-12.556-24.729-51.307-29.622 20.431-35.388 50.648 29.242z\"\n />\n <path\n d=\"M62.906 120.21l-80.091-46.24 10.5-18.188 50.647 29.242 28.284-.99 8.66 5-18 31.176z\"\n fillOpacity={0.2}\n fill=\"#FFF\"\n />\n <path\n d=\"M27.566 75.558L3.877 109.065l-5.013-2.895 26.045-32.146 2.657 1.534zm9.467 5.466L13.345 114.53l-5.014-2.895L34.377 79.49l2.656 1.534zm8.158 4.71l-22.32 34.297-5.013-2.895L43.903 84.99l1.288.744z\"\n fill=\"#527585\"\n />\n <path\n d=\"M11.524 90.544l13.385-16.52 2.657 1.534-12.174 17.22-3.868-2.234zm9.467 5.467L34.377 79.49l2.656 1.534-12.174 17.22-3.868-2.233zm9.527 5.5L43.903 84.99l1.288.744-11.47 17.626-3.203-1.85z\"\n fill=\"#76A2B5\"\n opacity={0.6}\n />\n <path\n d=\"M.355 59.848l-23.689 33.507-5.013-2.895 26.045-32.146 2.657 1.534zm9.468 5.466L-13.866 98.82l-5.013-2.895L7.166 63.78l2.657 1.534zm8.158 4.71L-4.34 104.32l-5.014-2.895L16.692 69.28l1.289.744z\"\n fillOpacity={0.1}\n fill=\"#000\"\n />\n <g>\n <path\n fill=\"url(#EmptySearchResults_svg__c)\"\n opacity={0.993}\n filter=\"url(#EmptySearchResults_svg__d)\"\n d=\"M.63 0h173.74L123 172H52z\"\n transform=\"rotate(120 90.404 138.861)\"\n />\n <path\n fill=\"url(#EmptySearchResults_svg__e)\"\n opacity={0.3}\n d=\"M4 9h166.37L120.73 172.299H53.64z\"\n transform=\"rotate(120 90.404 138.861)\"\n />\n <path\n fill=\"url(#EmptySearchResults_svg__f)\"\n opacity={0.3}\n d=\"M4 2h166.37L120.73 172.299H53.64z\"\n transform=\"rotate(120 90.404 138.861)\"\n />\n <path\n fill=\"url(#EmptySearchResults_svg__g)\"\n d=\"M4 9h166.37L120.73 172.299H53.64z\"\n transform=\"rotate(120 90.404 138.861)\"\n />\n <path fill=\"#FFF\" opacity={0.196} d=\"M212.363 205.344l-1 1.732L60.418 124.52l4.977-8.62z\" />\n </g>\n <path fill=\"#76A2B5\" d=\"M73.112 84.533l-35.5 61.488-.866-.5 35.5-61.488z\" />\n <path fill=\"#F3F3F3\" d=\"M80.906 89.033l-35.5 61.488-.866-.5 35.5-61.488z\" />\n <path fill=\"#538196\" d=\"M55.112 115.71l-17.5 30.311-.866-.5 17.5-30.31z\" />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default SvgEmptySearchResults;\n","import React from 'react';\n\nconst SvgSelectAttributes: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={256} height={256} viewBox=\"0 0 256 256\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <circle cx={128} cy={128} r={128} fill=\"#0072CE\" fillOpacity={0.1} />\n <mask\n id=\"SelectAttributes_svg__a\"\n style={{\n maskType: 'alpha'\n }}\n maskUnits=\"userSpaceOnUse\"\n x={0}\n y={0}\n width={256}\n height={256}\n >\n <circle cx={128} cy={128} r={128} fill=\"#fff\" />\n </mask>\n <g mask=\"url(#SelectAttributes_svg__a)\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M-16 9h256v247H-16V9z\"\n fill=\"url(#SelectAttributes_svg__paint0_linear_0_19219)\"\n />\n <path\n opacity={0.05}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M187.761 56.865l58.639 58.639v148.871H93.383L52 225.083V56.865h135.761z\"\n fill=\"url(#SelectAttributes_svg__paint1_linear_0_19219)\"\n />\n <path\n opacity={0.06}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M47 58h202a7 7 0 017 7v157a7 7 0 01-7 7H47a7 7 0 01-7-7V65a7 7 0 017-7z\"\n fill=\"#000\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M50 56h201a5 5 0 015 5v157a5 5 0 01-5 5H50a5 5 0 01-5-5V61a5 5 0 015-5z\"\n fill=\"#fff\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 72.635a3 3 0 013-3H150a3 3 0 110 6h-41.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 84.635a3 3 0 013-3h64.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 163a3 3 0 013-3H150a3 3 0 110 6h-41.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 175a3 3 0 013-3h64.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105.376 193a3 3 0 013-3H190a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M105 205a3 3 0 013-3h74.205a3 3 0 110 6H108a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138.376 103a3 3 0 013-3H223a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138 115a3 3 0 013-3h64.205a3 3 0 110 6H141a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <circle cx={67} cy={79} r={9} fill=\"#B6C7DB\" />\n <circle cx={67} cy={79} r={9} fill=\"#B6C7DB\" />\n <circle cx={120} cy={106} r={6} fill=\"#B6C7DB\" />\n <circle cx={120} cy={136} r={6} fill=\"#B6C7DB\" />\n <circle cx={67} cy={169} r={9} fill=\"#B6C7DB\" />\n <circle cx={67} cy={199} r={9} fill=\"#B6C7DB\" />\n <path\n opacity={0.8}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138.376 133a3 3 0 013-3H223a3 3 0 110 6h-81.624a3 3 0 01-3-3z\"\n fill=\"#B6C7DB\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M138 145a3 3 0 013-3h74.205a3 3 0 110 6H141a3 3 0 01-3-3z\"\n fill=\"#979797\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M92.514 108v-8h-2V140.365h11.178v-2h-9.178V110h9.178v-2h-9.178z\"\n fill=\"#2B98F0\"\n />\n <path\n opacity={0.54}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M95.071 77l-3.535 3.535L88 77h7.071z\"\n fill=\"#000\"\n />\n <path\n opacity={0.6}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M50 22h186a6 6 0 016 6v18a6 6 0 01-6 6H50a6 6 0 01-6-6V28a6 6 0 016-6z\"\n fill=\"#fff\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M58 37a6 6 0 016-6h70a6 6 0 110 12H64a6 6 0 01-6-6zM148 37a6 6 0 016-6h10a6 6 0 110 12h-10a6 6 0 01-6-6z\"\n fill=\"#979797\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"SelectAttributes_svg__paint0_linear_0_19219\"\n x1={-16}\n y1={9}\n x2={-16}\n y2={256}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#FAFAFA\" stopOpacity={0.01} />\n <stop offset={1} stopColor=\"#F4F4F4\" />\n </linearGradient>\n <linearGradient\n id=\"SelectAttributes_svg__paint1_linear_0_19219\"\n x1={266.117}\n y1={181.111}\n x2={154.882}\n y2={77.681}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopOpacity={0.01} />\n <stop offset={1} />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport default SvgSelectAttributes;\n","import React from 'react';\n\nconst SvgNoData: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width={256}\n height={256}\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n {...props}\n >\n <defs>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"NoData_svg__b\">\n <stop stopColor=\"#FAFAFA\" stopOpacity={0} offset=\"0%\" />\n <stop stopColor=\"#F4F4F4\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"69.573%\" y1=\"86.747%\" x2=\"38.144%\" y2=\"33.403%\" id=\"NoData_svg__d\">\n <stop stopColor=\"#000\" stopOpacity={0} offset=\"0%\" />\n <stop stopColor=\"#000\" offset=\"100%\" />\n </linearGradient>\n <linearGradient x1=\"50%\" y1=\"0%\" x2=\"50%\" y2=\"100%\" id=\"NoData_svg__e\">\n <stop stopColor=\"#EEFBFF\" offset=\"0%\" />\n <stop stopColor=\"#0072CE\" offset=\"100%\" />\n </linearGradient>\n <filter\n x=\"-7.7%\"\n y=\"-7.5%\"\n width=\"115.3%\"\n height=\"115%\"\n filterUnits=\"objectBoundingBox\"\n id=\"NoData_svg__f\"\n >\n <feOffset dx={0} dy={2} in=\"SourceAlpha\" result=\"shadowOffsetOuter1\" />\n <feGaussianBlur stdDeviation={2} in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\" />\n <feColorMatrix\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\"\n type=\"matrix\"\n in=\"shadowBlurOuter1\"\n result=\"shadowMatrixOuter1\"\n />\n <feMerge>\n <feMergeNode in=\"shadowMatrixOuter1\" />\n <feMergeNode in=\"SourceGraphic\" />\n </feMerge>\n </filter>\n <circle id=\"NoData_svg__a\" cx={128} cy={128} r={128} />\n </defs>\n <g stroke=\"none\" strokeWidth={1} fill=\"none\" fillRule=\"evenodd\">\n <mask id=\"NoData_svg__c\" fill=\"#fff\">\n <use xlinkHref=\"#NoData_svg__a\" />\n </mask>\n <use fillOpacity={0.1} fill=\"#0072CE\" xlinkHref=\"#NoData_svg__a\" />\n <path fill=\"url(#NoData_svg__b)\" mask=\"url(#NoData_svg__c)\" d=\"M0 9h256v247H0z\" />\n <g mask=\"url(#NoData_svg__c)\">\n <g transform=\"translate(29 37)\">\n <g opacity={0.9} strokeWidth={1} fill=\"#FFF\">\n <path fillOpacity={0.8} opacity={0.5} d=\"M14.565 8h228.144v176.476H14.565z\" />\n <path d=\"M0 8.01C0 3.586 3.576 0 7.997 0h223.838a7.997 7.997 0 017.997 8.01v152.401c0 4.424-3.577 8.01-7.997 8.01H7.997A7.997 7.997 0 010 160.411V8.01z\" />\n </g>\n <g strokeWidth={1} fill=\"none\" transform=\"translate(19.986 42.105)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={195.862} cy={5.013} rx={3.997} ry={4.01} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={181.872} cy={5.013} rx={3.997} ry={4.01} />\n <path\n d=\"M9.493 1.003a9.493 9.493 0 019.494 9.493v.06a9.493 9.493 0 01-18.987 0v-.06a9.493 9.493 0 019.493-9.493z\"\n fill=\"#E3EBF4\"\n />\n <path\n d=\"M32.488.791h64.093a3.509 3.509 0 110 7.018H32.488a3.509 3.509 0 110-7.018z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M31.486 13.824h115.902a2.506 2.506 0 010 5.012H31.486a2.506 2.506 0 010-5.012z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M30.483 22.846H67.88a1.504 1.504 0 110 3.008H30.483a1.504 1.504 0 110-3.008z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n <rect\n fill=\"#645F6D\"\n opacity={0.5}\n x={19.986}\n y={16.04}\n width={79.944}\n height={11.028}\n rx={5.514}\n />\n <g strokeWidth={1} fill=\"none\" transform=\"translate(19.986 80.2)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={195.862} cy={5.013} rx={3.997} ry={4.01} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={181.872} cy={5.013} rx={3.997} ry={4.01} />\n <rect fill=\"#E3EBF4\" x={0} y={1.003} width={18.987} height={19.048} rx={9.493} />\n <path\n d=\"M32.488.791h75.925a3.509 3.509 0 010 7.018H32.488a3.509 3.509 0 110-7.018z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M31.486 13.824h128.893a2.506 2.506 0 110 5.012H31.486a2.506 2.506 0 010-5.012z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M30.483 22.846h103.918a1.504 1.504 0 010 3.008H30.483a1.504 1.504 0 110-3.008z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n <g strokeWidth={1} fill=\"none\" transform=\"translate(19.986 118.296)\">\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={195.862} cy={5.013} rx={3.997} ry={4.01} />\n <ellipse fill=\"#6DBCFF\" opacity={0.5} cx={181.872} cy={5.013} rx={3.997} ry={4.01} />\n <path\n d=\"M9.493 1.003a9.493 9.493 0 019.494 9.493v.06a9.493 9.493 0 01-18.987 0v-.06a9.493 9.493 0 019.493-9.493z\"\n fill=\"#E3EBF4\"\n />\n <path\n d=\"M32.488.791h101.906a3.509 3.509 0 010 7.018H32.488a3.509 3.509 0 110-7.018z\"\n fill=\"#B1AABD\"\n opacity={0.5}\n />\n <path\n d=\"M31.486 13.824h84.924a2.506 2.506 0 010 5.012H31.486a2.506 2.506 0 010-5.012z\"\n fill=\"#B1AABD\"\n opacity={0.43}\n />\n <path\n d=\"M30.483 22.846H67.88a1.504 1.504 0 110 3.008H30.483a1.504 1.504 0 110-3.008z\"\n fill=\"#B1AABD\"\n opacity={0.2}\n />\n </g>\n </g>\n </g>\n <g mask=\"url(#NoData_svg__c)\">\n <path\n d=\"M154.445 45.134v154.072H36.625V45.134h.811C35.508 62.52 41.07 80.609 54.12 93.944c22.74 23.235 59.61 23.235 82.352 0 13.05-13.335 18.612-31.424 16.683-48.81h1.29z\"\n fill=\"url(#NoData_svg__d)\"\n opacity={0.1}\n transform=\"rotate(-30 291.014 34.548)\"\n />\n <path\n d=\"M27.473 93.234c17.964 18.355 47.09 18.355 65.054 0s17.964-48.113 0-66.468c-17.964-18.355-47.09-18.355-65.054 0s-17.964 48.113 0 66.468z\"\n fill=\"url(#NoData_svg__e)\"\n opacity={0.2}\n transform=\"translate(70 86)\"\n />\n <g filter=\"url(#NoData_svg__f)\" strokeWidth={1} fill=\"none\" transform=\"translate(70 86)\">\n <path\n d=\"M59.697 0c32.97 0 59.697 26.746 59.697 59.738 0 15.185-5.662 29.047-14.988 39.587l51.204 51.24a89.336 89.336 0 01-10.097 9.392l-51.38-51.416c-9.73 6.888-21.61 10.936-34.436 10.936C26.727 119.477 0 92.73 0 59.738 0 26.746 26.727 0 59.697 0zm0 17.756c-23.17 0-41.953 18.796-41.953 41.982s18.783 41.982 41.953 41.982 41.953-18.796 41.953-41.982-18.783-41.982-41.953-41.982z\"\n fill=\"#B5C8C9\"\n />\n <path\n d=\"M21.508 105.656C8.365 94.698 0 78.196 0 59.738 0 26.746 26.727 0 59.697 0c18.444 0 34.935 8.37 45.885 21.523l-9.794 9.8c-8.408-10.68-21.45-17.537-36.091-17.537-25.361 0-45.92 20.573-45.92 45.952 0 14.652 6.852 27.702 17.525 36.117l-9.794 9.8z\"\n fillOpacity={0.4}\n fill=\"#FFF\"\n />\n </g>\n <path\n d=\"M97.473 179.234c17.964 18.355 47.09 18.355 65.054 0s17.964-48.113 0-66.468c-17.964-18.355-47.09-18.355-65.054 0s-17.964 48.113 0 66.468z\"\n fill=\"#D9F5FF\"\n opacity={0.4}\n style={{\n mixBlendMode: 'soft-light'\n }}\n />\n <path\n d=\"M123.885 158.736c0-3.929.444-7.03 1.332-9.304.888-2.274 2.328-4.245 4.32-5.914 1.99-1.668 3.504-3.195 4.54-4.581 1.037-1.386 1.555-2.913 1.555-4.581 0-4.064-1.75-6.095-5.248-6.095-1.614 0-2.92.592-3.915 1.776-.996 1.184-1.52 2.785-1.574 4.803H111.25c.054-5.382 1.75-9.573 5.086-12.574 3.337-3 8.02-4.5 14.047-4.5 6.001 0 10.65 1.386 13.946 4.157 3.297 2.772 4.945 6.714 4.945 11.827 0 2.234-.444 4.265-1.332 6.095-.888 1.83-2.315 3.7-4.279 5.61l-4.642 4.32c-1.318 1.265-2.233 2.563-2.745 3.895-.51 1.332-.793 3.02-.847 5.066h-11.545zm-1.655 12.27c0-1.99.72-3.625 2.16-4.904 1.44-1.278 3.236-1.917 5.389-1.917 2.152 0 3.949.64 5.388 1.917 1.44 1.279 2.16 2.913 2.16 4.905 0 1.991-.72 3.626-2.16 4.904-1.44 1.278-3.236 1.917-5.388 1.917-2.153 0-3.95-.639-5.389-1.917-1.44-1.278-2.16-2.913-2.16-4.904z\"\n fillOpacity={0.87}\n fill=\"#000\"\n style={{\n mixBlendMode: 'overlay'\n }}\n />\n <path\n d=\"M123.885 158.736c0-3.929.444-7.03 1.332-9.304.888-2.274 2.328-4.245 4.32-5.914 1.99-1.668 3.504-3.195 4.54-4.581 1.037-1.386 1.555-2.913 1.555-4.581 0-4.064-1.75-6.095-5.248-6.095-1.614 0-2.92.592-3.915 1.776-.996 1.184-1.52 2.785-1.574 4.803H111.25c.054-5.382 1.75-9.573 5.086-12.574 3.337-3 8.02-4.5 14.047-4.5 6.001 0 10.65 1.386 13.946 4.157 3.297 2.772 4.945 6.714 4.945 11.827 0 2.234-.444 4.265-1.332 6.095-.888 1.83-2.315 3.7-4.279 5.61l-4.642 4.32c-1.318 1.265-2.233 2.563-2.745 3.895-.51 1.332-.793 3.02-.847 5.066h-11.545zm-1.655 12.27c0-1.99.72-3.625 2.16-4.904 1.44-1.278 3.236-1.917 5.389-1.917 2.152 0 3.949.64 5.388 1.917 1.44 1.279 2.16 2.913 2.16 4.905 0 1.991-.72 3.626-2.16 4.904-1.44 1.278-3.236 1.917-5.388 1.917-2.153 0-3.95-.639-5.389-1.917-1.44-1.278-2.16-2.913-2.16-4.904z\"\n fillOpacity={0.38}\n fill=\"#3C74B4\"\n />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default SvgNoData;\n","import React from 'react';\n\nconst SvgError: React.FC<React.SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg width={88} height={88} viewBox=\"0 0 88 88\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <mask\n id=\"Error_svg__a\"\n style={{\n maskType: 'alpha'\n }}\n maskUnits=\"userSpaceOnUse\"\n x={0}\n y={0}\n width={88}\n height={88}\n >\n <path d=\"M44 88c24.3 0 44-19.7 44-44S68.3 0 44 0 0 19.7 0 44s19.7 44 44 44z\" fill=\"#fff\" />\n </mask>\n <g mask=\"url(#Error_svg__a)\">\n <path\n d=\"M44 88c24.3 0 44-19.7 44-44S68.3 0 44 0 0 19.7 0 44s19.7 44 44 44z\"\n fill=\"#CAC4D5\"\n fillOpacity={0.3}\n />\n <path\n opacity={0.3}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M19.987 6.73l49.449 6.072a.687.687 0 01.596.767l-7.845 63.888a.688.688 0 01-.766.6L7.214 71.4a.688.688 0 01-.599-.763l.408-3.326L19.987 6.73z\"\n fill=\"#fff\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.267 25.921l45.86-19.466a.687.687 0 01.9.366l25.15 59.251a.61.61 0 01-.386.84L22.34 82.765a.719.719 0 01-.887-.445l-20.185-56.4z\"\n fill=\"#fff\"\n />\n <path\n d=\"M65.631 9.23H11.017a.688.688 0 00-.687.687v64.37c0 .38.307.687.687.687h54.614c.38 0 .688-.308.688-.687V9.917a.688.688 0 00-.688-.688z\"\n fill=\"#F9F9F9\"\n />\n <path\n opacity={0.1}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.885 34.95l3.105-1.666 7.31-4.025 8.852 3.472 7.89-5.223 8.036-2.628 8.113 5.193 3.352-10.255v16.967H14.935l-.05-1.835z\"\n fill=\"#9C6CF0\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.885 32.331l3.105-3.761 7.31 4.31 8.852 1.656 7.89-2.205 8.036 1.827 8.113-12.643 3.352.742V36.36H14.935l-.05-4.029z\"\n fill=\"#FA82AA\"\n />\n <path\n opacity={0.2}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.885 34.946l3.105.432 7.31 1.01 8.852-5.117 7.89 3.675 8.036 1.839 8.113-1.839 3.352.811v1.028H14.935l-.05-1.839z\"\n fill=\"#4DBEE9\"\n />\n <path\n opacity={0.1}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M61.543 35.288l-.05 1.497H14.885v-5.239l3.352-.276 8.114 4.697 8.036-.679 7.889.82 8.852-.616 7.31-1.601 3.105 1.397z\"\n fill=\"#4DBEE9\"\n />\n <path d=\"M21.036 40.178h-5.09a.636.636 0 000 1.272h5.09a.636.636 0 100-1.272z\" fill=\"#ACACAC\" />\n <path\n opacity={0.3}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.582 55.872c.703 0 1.273.57 1.273 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.272-1.272zM25.914 55.872c.702 0 1.272.57 1.272 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.273-1.272zM39.91 55.872c.703 0 1.273.57 1.273 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.273-1.272zM21.248 55.872c.702 0 1.272.57 1.272 1.273V69.02a1.273 1.273 0 01-2.545 0V57.144c0-.702.57-1.272 1.273-1.272zM35.245 55.872c.703 0 1.273.57 1.273 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.272-1.272zM30.58 55.872c.702 0 1.272.57 1.272 1.273V69.02a1.272 1.272 0 11-2.545 0V57.144c0-.702.57-1.272 1.272-1.272zM44.577 55.872c.702 0 1.272.57 1.272 1.273V69.02a1.273 1.273 0 01-2.545 0V57.144c0-.702.57-1.272 1.273-1.272z\"\n fill=\"#BDBDBD\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.582 65.628c.703 0 1.273.57 1.273 1.272v2.121a1.272 1.272 0 11-2.545 0v-2.12c0-.703.57-1.273 1.272-1.273zM25.914 62.658c.702 0 1.272.57 1.272 1.273v5.09a1.272 1.272 0 11-2.545 0v-5.09c0-.703.57-1.273 1.273-1.273zM39.91 65.628c.703 0 1.273.57 1.273 1.272v2.121a1.272 1.272 0 11-2.545 0v-2.12c0-.703.57-1.273 1.273-1.273zM21.248 66.477c.702 0 1.272.57 1.272 1.272v1.273a1.273 1.273 0 01-2.545 0v-1.273c0-.703.57-1.272 1.273-1.272z\"\n fill=\"#4DBEE9\"\n />\n <path\n d=\"M36.518 65.628a1.272 1.272 0 00-2.545 0v3.393a1.272 1.272 0 102.545 0v-3.393zM31.852 62.234a1.272 1.272 0 10-2.545 0v6.787a1.272 1.272 0 102.545 0v-6.787z\"\n fill=\"#4DBEE9\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M44.577 60.962c.702 0 1.272.57 1.272 1.272v6.787a1.273 1.273 0 01-2.545 0v-6.787c0-.702.57-1.272 1.273-1.272z\"\n fill=\"#4DBEE9\"\n />\n <path d=\"M18.915 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\" fill=\"#9C6CF0\" />\n <path\n opacity={0.5}\n d=\"M34.185 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\"\n fill=\"#4DBEE9\"\n />\n <path\n opacity={0.3}\n d=\"M49.454 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\"\n fill=\"#4DBEE9\"\n />\n <path opacity={0.8} d=\"M26.55 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\" fill=\"#FB6597\" />\n <path d=\"M41.82 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\" fill=\"#4DBEE9\" />\n <path opacity={0.2} d=\"M57.09 18.546a1.909 1.909 0 100-3.817 1.909 1.909 0 000 3.817z\" fill=\"#4DBEE9\" />\n <path\n opacity={0.5}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.582 19.818h4.666a.424.424 0 110 .849h-4.666a.424.424 0 110-.849zM31.851 19.818h4.666a.424.424 0 010 .849h-4.666a.424.424 0 110-.849zM47.121 19.818h4.666a.424.424 0 010 .849h-4.666a.424.424 0 010-.849zM24.217 19.818h4.665a.424.424 0 010 .849h-4.665a.424.424 0 010-.849zM39.486 19.818h4.666a.424.424 0 110 .849h-4.666a.424.424 0 110-.849zM54.756 19.818h4.666a.424.424 0 110 .849h-4.666a.424.424 0 110-.849z\"\n fill=\"#ACACAC\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15.946 43.571h5.09a.636.636 0 110 1.273h-5.09a.636.636 0 010-1.273zM15.946 46.116h5.09a.636.636 0 010 1.273h-5.09a.636.636 0 010-1.273zM15.946 48.661h5.09a.636.636 0 010 1.273h-5.09a.636.636 0 110-1.273zM23.58 43.571h5.09a.636.636 0 110 1.273h-5.09a.636.636 0 010-1.273zM23.58 46.116h5.09a.636.636 0 010 1.273h-5.09a.636.636 0 010-1.273zM23.58 48.661h5.09a.636.636 0 010 1.273h-5.09a.636.636 0 110-1.273zM49.454 43.571h11.028a.636.636 0 010 1.273H49.454a.636.636 0 010-1.273zM49.454 46.116h11.028a.636.636 0 010 1.273H49.454a.636.636 0 010-1.273zM49.454 48.661h11.028a.636.636 0 010 1.273H49.454a.636.636 0 110-1.273zM31.215 43.571h15.27a.636.636 0 110 1.273h-15.27a.636.636 0 010-1.273zM31.215 46.116h15.27a.636.636 0 010 1.273h-15.27a.636.636 0 010-1.273zM31.215 48.661h15.27a.636.636 0 010 1.273h-15.27a.636.636 0 010-1.273zM15.946 51.206h5.09a.636.636 0 110 1.272h-5.09a.636.636 0 110-1.272zM23.58 51.206h5.09a.636.636 0 110 1.272h-5.09a.636.636 0 110-1.272zM49.454 51.206h11.028a.636.636 0 010 1.272H49.454a.636.636 0 110-1.272zM31.215 51.206h15.27a.636.636 0 110 1.272h-15.27a.636.636 0 010-1.272z\"\n fill=\"#E9E9E9\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M49.878 55.872h5.09a.636.636 0 110 1.273h-5.09a.636.636 0 110-1.273z\"\n fill=\"#ACACAC\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M49.878 59.69h11.029a.636.636 0 010 1.272H49.878a.636.636 0 110-1.273zM49.878 62.234h11.029a.636.636 0 010 1.273H49.878a.636.636 0 010-1.273zM49.878 64.78h11.029a.636.636 0 010 1.272H49.878a.636.636 0 010-1.273z\"\n fill=\"#E9E9E9\"\n />\n <path d=\"M54.968 67.324h-5.09a.636.636 0 000 1.273h5.09a.636.636 0 000-1.273z\" fill=\"#E9E9E9\" />\n <g filter=\"url(#Error_svg__filter0_d)\">\n <path\n d=\"M57.406 74.25c9.493 0 17.188-7.695 17.188-17.188 0-9.492-7.695-17.187-17.188-17.187-9.492 0-17.187 7.695-17.187 17.188 0 9.492 7.695 17.187 17.187 17.187z\"\n fill=\"#000\"\n />\n </g>\n <path\n d=\"M57.406 74.25c9.493 0 17.188-7.695 17.188-17.188 0-9.492-7.695-17.187-17.188-17.187-9.492 0-17.187 7.695-17.187 17.188 0 9.492 7.695 17.187 17.187 17.187z\"\n fill=\"#F25252\"\n />\n <path\n opacity={0.15}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M57.406 34.719c12.34 0 22.344 10.003 22.344 22.343S69.746 79.406 57.406 79.406c-12.34 0-22.343-10.003-22.343-22.344 0-12.34 10.003-22.343 22.343-22.343zm-.172 2.406c-10.916 0-19.765 8.85-19.765 19.766 0 10.916 8.85 19.765 19.765 19.765C68.151 76.656 77 67.806 77 56.891c0-10.917-8.85-19.766-19.766-19.766z\"\n fill=\"#F25252\"\n />\n <path\n opacity={0.3}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M57.406 38.844c10.062 0 18.219 8.157 18.219 18.218 0 10.062-8.157 18.22-18.219 18.22-10.062 0-18.218-8.158-18.218-18.22 0-10.061 8.156-18.218 18.218-18.218zm0 2.043c-8.933 0-16.175 7.242-16.175 16.175 0 8.934 7.242 16.176 16.175 16.176 8.934 0 16.176-7.242 16.176-16.175 0-8.934-7.242-16.176-16.176-16.176z\"\n fill=\"#F25252\"\n />\n <path\n opacity={0.05}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M57.406 26.469C74.303 26.469 88 40.166 88 57.062c0 16.897-13.697 30.594-30.594 30.594-16.896 0-30.593-13.697-30.593-30.594 0-16.896 13.697-30.593 30.593-30.593zm-.172 3.437c-14.903 0-26.984 12.082-26.984 26.985 0 14.903 12.081 26.984 26.984 26.984 14.903 0 26.985-12.081 26.985-26.984 0-14.903-12.082-26.985-26.985-26.985z\"\n fill=\"#F25252\"\n />\n <path\n d=\"M57.406 71.844c8.164 0 14.782-6.618 14.782-14.781 0-8.164-6.618-14.782-14.782-14.782-8.163 0-14.781 6.618-14.781 14.782 0 8.163 6.618 14.78 14.781 14.78z\"\n fill=\"#FF6A6A\"\n />\n <path\n opacity={0.05}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M58.298 46.448L75.18 63.331l-9.114 12.078h-2.029l-7.582-7.582 1.006-3.178.837-18.2z\"\n fill=\"url(#Error_svg__paint0_linear)\"\n />\n <g filter=\"url(#Error_svg__filter1_d)\">\n <path d=\"M57.406 68.063a1.719 1.719 0 100-3.438 1.719 1.719 0 000 3.438z\" fill=\"#000\" />\n </g>\n <path d=\"M57.406 68.063a1.719 1.719 0 100-3.438 1.719 1.719 0 000 3.438z\" fill=\"#fff\" />\n <g filter=\"url(#Error_svg__filter2_d)\">\n <path\n d=\"M57.406 46.063c.95 0 1.719.769 1.719 1.718v12.375a1.719 1.719 0 11-3.438 0V47.781c0-.949.77-1.718 1.72-1.718z\"\n fill=\"#000\"\n />\n </g>\n <path\n d=\"M57.406 46.063c.95 0 1.719.769 1.719 1.718v12.375a1.719 1.719 0 11-3.438 0V47.781c0-.949.77-1.718 1.72-1.718z\"\n fill=\"#fff\"\n />\n </g>\n <defs>\n <filter\n id=\"Error_svg__filter0_d\"\n x={36.219}\n y={37.875}\n width={42.375}\n height={42.375}\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity={0} result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" />\n <feOffset dy={2} />\n <feGaussianBlur stdDeviation={2} />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow\" result=\"shape\" />\n </filter>\n <filter\n id=\"Error_svg__filter1_d\"\n x={51.688}\n y={62.625}\n width={11.438}\n height={11.438}\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity={0} result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" />\n <feOffset dy={2} />\n <feGaussianBlur stdDeviation={2} />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow\" result=\"shape\" />\n </filter>\n <filter\n id=\"Error_svg__filter2_d\"\n x={51.688}\n y={44.063}\n width={11.438}\n height={23.813}\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity={0} result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" />\n <feOffset dy={2} />\n <feGaussianBlur stdDeviation={2} />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow\" result=\"shape\" />\n </filter>\n <linearGradient\n id=\"Error_svg__paint0_linear\"\n x1={68.438}\n y1={71.571}\n x2={60.119}\n y2={58.801}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopOpacity={0} />\n <stop offset={1} />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport default SvgError;\n","import React from 'react';\n\ntype State = {\n error: Error | null;\n};\n\ntype Props = {\n error: React.ReactNode;\n};\n\nexport default class ErrorBoundary extends React.Component<Props, State> {\n constructor(props) {\n super(props);\n this.state = {\n error: null\n };\n }\n\n componentDidCatch(error) {\n this.setState({\n error: error\n });\n console.error(error);\n }\n\n render() {\n const {children, error} = this.props;\n if (this.state.error) {\n return error;\n }\n return children;\n }\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\n\nconst EmptyStub = () => <div style={{display: 'none'}} />;\n\nconst HideOnShrink = ({widthToHide, children}) => (\n <ReactResizeDetector\n handleWidth={true}\n render={({width}) => (width > widthToHide ? <>{children}</> : <EmptyStub />)}\n />\n);\n\nHideOnShrink.propTypes = {\n children: PropTypes.node,\n widthToHide: PropTypes.number.isRequired\n};\n\nexport default HideOnShrink;\n","import {curry, defaultTo, mergeAll, pick, pipe, prop, propEq, __} from 'ramda';\n\nexport const getReltioViewId = (id) => id.split(/\\d+_/)[1];\n\nexport const reltioLayoutItemToReactGridLayoutItem = ({\n x,\n y,\n width,\n height,\n id,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n isStatic\n}) => ({\n x,\n y,\n w: width,\n h: height,\n minW: minWidth,\n minH: minHeight,\n maxW: maxWidth,\n maxH: maxHeight,\n i: id,\n static: isStatic\n});\n\nexport const reactGridLayoutItemToReltioLayoutItem = ({x, y, w, h, maxW, minW, minH, maxH, i, ...obj}) => ({\n x,\n y,\n width: w,\n height: h,\n minWidth: minW,\n minHeight: minH,\n maxWidth: maxW,\n maxHeight: maxH,\n id: i,\n isStatic: obj.static\n});\n\nexport const reltioLayoutToReactGridLayout = (layout) => (layout || []).map(reltioLayoutItemToReactGridLayoutItem);\n\nexport const reactGridLayoutToReltioLayout = (layout) => (layout || []).map(reactGridLayoutItemToReltioLayoutItem);\n\nexport const getReltioLayoutItemById = curry((layout, id) => (layout || []).find(propEq('id', id)));\n\nconst updateExtraPropsInLayoutItem = curry((props, from, to) => mergeAll([to, pick(props, from)]));\n\nexport const copyPropsFromPreviousLayout = curry((props, oldReltioLayout, reltioLayout) =>\n (reltioLayout || []).map((layoutItem) =>\n pipe(\n prop('id'),\n getReltioLayoutItemById(oldReltioLayout),\n defaultTo({}),\n updateExtraPropsInLayoutItem(props, __, layoutItem)\n )(layoutItem)\n )\n);\n\nexport const calcHeight = (height, options) => {\n const {margin, rowHeight} = options;\n\n return Math.ceil((height + margin[1]) / (rowHeight + margin[1]));\n};\n","export const RESIZE_ICON = `<svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path stroke=\"#505050\" stroke-opacity=\".54\" d=\"M9.5 0v10M0 9.5h9M7.5 4v4M4 7.5h3\"/>\n</svg>`;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {svg2Url} from '@reltio/mdm-sdk';\nimport {RESIZE_ICON} from './icons/ResizeIcon.svg';\n\nexport const useStyles = makeStyles((_) => ({\n gridLayout: {\n position: 'relative',\n width: '100%',\n '& .react-grid-item': {\n '&.react-grid-placeholder': {\n background: 'rgba(0, 0, 0, 0.03)',\n border: '2px dashed rgba(0, 0, 0, 0.3)',\n borderRadius: '3px',\n transitionDuration: '100ms',\n zIndex: 7,\n userSelect: 'none',\n '& .react-resizable-handle': {\n display: 'none'\n }\n },\n '&.static .react-resizable-handle': {\n display: 'none'\n },\n '&.cssTransforms': {\n transitionProperty: 'transform'\n },\n '&.resizing': {\n zIndex: 9,\n willChange: 'width, height',\n pointerEvents: 'none'\n },\n '&.react-draggable-dragging': {\n transition: 'none',\n zIndex: 8,\n willChange: 'transform',\n '& .react-resizable-handle': {\n backgroundImage: 'none'\n }\n },\n '& .react-resizable-handle': {\n position: 'absolute',\n width: '17px',\n height: '17px',\n bottom: 0,\n right: 0,\n zIndex: 20,\n backgroundImage: `url('${svg2Url(RESIZE_ICON)}')`,\n backgroundRepeat: 'no-repeat',\n backgroundOrigin: 'content-box',\n boxSizing: 'border-box',\n cursor: 'se-resize'\n },\n '&.fullscreen': {\n visibility: 'visible',\n position: 'unset',\n width: '100% !important',\n height: '100% !important',\n transform: 'translate(0) !important'\n }\n }\n },\n\n gridFullscreen: {\n height: '100% !important',\n overflowY: 'hidden',\n '& .react-resizable-handle, & .react-grid-item': {\n visibility: 'hidden'\n }\n }\n}));\n","import PropTypes from 'prop-types';\nimport React, {useCallback, useMemo, useRef, useState, memo} from 'react';\nimport GridLayout from 'react-grid-layout';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {identity, pipe} from 'ramda';\nimport classnames from 'classnames';\nimport {\n reltioLayoutToReactGridLayout,\n reactGridLayoutToReltioLayout,\n reactGridLayoutItemToReltioLayoutItem,\n copyPropsFromPreviousLayout,\n calcHeight,\n getReltioLayoutItemById\n} from './helpers';\n\nimport {useStyles} from './styles';\n\nconst ReltioGridLayout = ({\n views,\n layout,\n layoutOptions,\n onLayoutChanged,\n draggableHandle,\n LayoutItem,\n onRemove,\n onDrop,\n droppingItem,\n isDroppable,\n classes\n}) => {\n const ref = useRef();\n const styles = useStyles();\n const [fullscreenItemId, setFullscreenItemId] = useState(null);\n const [width, setWidth] = useState(0);\n const {cols, rowHeight, margin} = layoutOptions;\n const processedLayout = useMemo(() => reltioLayoutToReactGridLayout(layout), [layout]);\n const onReltioLayoutChanged = pipe(\n reactGridLayoutToReltioLayout,\n copyPropsFromPreviousLayout(['autosizing'], layout),\n onLayoutChanged\n );\n const handleDrop = (layout, layoutItem, e) => {\n if (onDrop) {\n onDrop(reactGridLayoutToReltioLayout(layout), reactGridLayoutItemToReltioLayoutItem(layoutItem), e);\n }\n };\n const onToggleFullscreen = useCallback((id) => setFullscreenItemId((prevId) => (prevId ? null : id)), []);\n const isFullscreenEnabled = fullscreenItemId !== null;\n\n const onItemHeightResize = useCallback(\n (height, layoutId) => {\n let isLayoutChanged = false;\n\n const newLayout = layout.map((layoutItem) => {\n if (layoutItem.id === layoutId && height) {\n const newHeight = calcHeight(height, layoutOptions);\n\n if (layoutItem.height !== newHeight) {\n isLayoutChanged = true;\n return {\n ...layoutItem,\n minHeight: newHeight,\n maxHeight: newHeight,\n height: newHeight\n };\n }\n }\n return layoutItem;\n });\n\n if (isLayoutChanged) {\n onLayoutChanged(newLayout);\n }\n },\n [layout, layoutOptions, onLayoutChanged]\n );\n\n const getAutosizeComponent = (layoutItemId) => {\n return (\n <ReactResizeDetector\n handleHeight\n onResize={(width, height) => {\n onItemHeightResize(height, layoutItemId);\n }}\n />\n );\n };\n\n return (\n <>\n <ReactResizeDetector\n refreshMode=\"debounce\"\n refreshRate={50}\n handleWidth={true}\n onResize={(width) => setWidth(width)}\n />\n <GridLayout\n innerRef={ref}\n layout={processedLayout}\n cols={cols}\n draggableHandle={draggableHandle}\n autoSize={true}\n rowHeight={rowHeight}\n width={width}\n margin={margin}\n onLayoutChange={onReltioLayoutChanged}\n isResizable={!isFullscreenEnabled}\n isDraggable={!isFullscreenEnabled}\n className={classnames(styles.gridLayout, {[styles.gridFullscreen]: isFullscreenEnabled})}\n onDrop={handleDrop}\n droppingItem={droppingItem}\n isDroppable={isDroppable}\n >\n {processedLayout.map((layoutItem) => {\n const isItemFullscreen = fullscreenItemId === layoutItem.i;\n const isAutosize = (getReltioLayoutItemById(layout, layoutItem.i) || {}).autosizing;\n const autosizeComponent = isAutosize ? {AutosizeComponent: getAutosizeComponent(layoutItem.i)} : {};\n return (\n <LayoutItem\n key={layoutItem.i}\n layoutItemConfig={layoutItem}\n views={views}\n onToggleFullscreen={onToggleFullscreen}\n onRemove={onRemove}\n className={classnames({fullscreen: isItemFullscreen}, classes.item)}\n isFullscreen={isItemFullscreen}\n {...autosizeComponent}\n />\n );\n })}\n </GridLayout>\n </>\n );\n};\n\nReltioGridLayout.defaultProps = {\n layoutOptions: {\n cols: 4,\n rowHeight: 30,\n margin: [15, 15]\n },\n onConfigChanged: identity,\n onLayoutChanged: identity,\n classes: {}\n};\nReltioGridLayout.propTypes = {\n views: PropTypes.array,\n layout: PropTypes.array,\n layoutOptions: PropTypes.object,\n onConfigChanged: PropTypes.func,\n onLayoutChanged: PropTypes.func,\n onDrop: PropTypes.func,\n onRemove: PropTypes.func,\n LayoutItem: PropTypes.elementType,\n draggableHandle: PropTypes.string,\n isDroppable: PropTypes.bool,\n droppingItem: PropTypes.object,\n classes: PropTypes.shape({\n item: PropTypes.string\n })\n};\n\nexport default memo(ReltioGridLayout);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {findSourceSystemByUri, getAbsoluteImageUrl, getSourceSystemLabel, Source} from '@reltio/mdm-sdk';\nimport AvatarWithFallback from '../AvatarWithFallback/AvatarWithFallback';\n\ntype Props = {\n sourceType: string;\n className?: string;\n classes?: {\n iconRoot?: string;\n textRoot?: string;\n };\n};\nconst SOURCE_URL = 'https://s3.amazonaws.com/reltio.images/api';\nconst SourceIcon = ({sourceType, className, classes}: Props) => {\n const metadata = useSelector(mdmModule.selectors.getMetadata);\n const {uri, icon}: Source = findSourceSystemByUri(metadata, sourceType) || {};\n const avatarText = uri ? getSourceSystemLabel(metadata, uri)[0] : '';\n const sourceIcon = icon ? getAbsoluteImageUrl(SOURCE_URL, icon) : null;\n\n return (\n <AvatarWithFallback\n className={className}\n avatarText={avatarText}\n icon={sourceIcon}\n variant=\"square\"\n rootClasses={classes}\n />\n );\n};\n\nexport default SourceIcon;\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nconst VerticalDivider = ({height, margin}) => (\n <div\n style={{\n width: '1px',\n height: `${height}px`,\n borderLeft: '1px solid rgba(0,0,0,0.38)',\n margin: `0 ${margin}px`,\n flexShrink: '0'\n }}\n />\n);\n\nVerticalDivider.propTypes = {\n height: PropTypes.number,\n margin: PropTypes.number\n};\n\nexport default VerticalDivider;\n","import React, {useMemo} from 'react';\nimport {countPercents} from '@reltio/mdm-sdk';\nimport {pluck} from 'ramda';\nimport {ChartData} from '../types';\n\ntype PropsWithChartData = {\n data: ChartData[];\n};\n\nconst enrichDataWithPercents = (data: ChartData[]): ChartData[] => {\n const percents = countPercents(pluck('value', data), 1);\n return data.map((item, i) => ({...item, percent: percents[i]}));\n};\n\nconst withPercents = <T extends PropsWithChartData>(Component: React.ComponentType<T>) => {\n const WithPercents = ({data, ...otherProps}: T) => {\n const dataWithPercents = useMemo(() => data && enrichDataWithPercents(data), [data]);\n return <Component data={dataWithPercents} {...(otherProps as T)} />;\n };\n\n WithPercents.displayName = 'WithPercents';\n\n return WithPercents;\n};\n\nexport default withPercents;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst useStyles = makeStyles({\n clickable: {\n cursor: 'pointer'\n }\n});\n\nexport const useClickableStyle = (clickable) => {\n const styles = useStyles();\n return clickable ? styles.clickable : undefined;\n};\n","import {useEffect, useState} from 'react';\n\nexport const useSavedState = <T>(getSavedState: () => Promise<T>) => {\n const [isLoaded, setIsLoaded] = useState(false);\n const [savedState, setSavedState] = useState<T | Record<string, never>>({});\n\n useEffect(() => {\n getSavedState()\n .then((savedState) => {\n setSavedState(savedState || {});\n })\n .then((_) => setIsLoaded(true))\n .catch((_) => setIsLoaded(true));\n }, []); // eslint-disable-line\n\n return {isLoaded, savedState};\n};\n","import {AttributeType} from '@reltio/mdm-sdk';\n\nexport type ReactGridLayoutItem = {\n i: string;\n x: number;\n y: number;\n w: number;\n h: number;\n minW?: number;\n minH?: number;\n maxW?: number;\n maxH?: number;\n static?: boolean;\n};\n\nexport type ReltioGridLayoutItem = {\n id: string;\n x: number;\n y: number;\n width: number;\n height: number;\n minWidth?: number;\n minHeight?: number;\n maxWidth?: number;\n maxHeight?: number;\n isStatic?: boolean;\n autosizing?: boolean;\n};\n\nexport type AttributeOption = {\n label: string;\n value: string;\n attrType: AttributeType;\n chipLabel: string;\n level: number;\n};\n\nexport enum DateRangeTypes {\n WITHIN = 'within',\n AGO = 'ago',\n BETWEEN = 'between'\n}\n\nexport type DateRangeFilter = {\n type: DateRangeTypes;\n period: [number, string] | [Date, Date];\n};\n\nexport type QueryBuilderAttributeData = {\n title: string;\n pathToTitle: Array<string>;\n fieldName: string;\n entityTypeUri: string;\n attrType: AttributeType;\n uri: string;\n groupName: string;\n filterOptions: Array<string>;\n};\n\nexport type QueryBuilderAttribute = {\n id: string;\n values: Array<unknown>;\n data: QueryBuilderAttributeData;\n filter: string;\n operator: string;\n};\n\nexport type AttributeSelectorItem = {\n attrType: AttributeType;\n entityTypeUri: string;\n fieldName: string;\n groupName: string;\n title: string;\n uri: string;\n children?: AttributeSelectorItem[];\n pathToTitle?: string[];\n};\n\nexport type AttributeSelectorItemsGroup = {\n id?: string;\n title: string;\n attributes: AttributeSelectorItem[];\n};\n\nexport type AttributeSelectionInfo = {\n index: number;\n checked: boolean;\n attribute: AttributeSelectorItem;\n selectedAttributes: AttributeSelectorItem[];\n};\n\nexport type BasicAttributeSelectorProps = {\n className?: string;\n itemsGroups: AttributeSelectorItemsGroup[];\n value: AttributeSelectorItem;\n onSelect: (selectInfo: AttributeSelectionInfo) => void;\n onRestoreFocus?: () => void;\n onOpenPopup?: () => void;\n getLabel?: (value: {fieldName?: string; pathToTitle?: string[]; title: string}) => string;\n disableRestoreFocus?: boolean;\n disableEnforceFocus?: boolean;\n single?: boolean;\n ungroup?: boolean;\n disabled?: boolean;\n hideCheckBox?: boolean;\n};\nexport enum RequestStates {\n INIT = 'init',\n LOADING = 'loading',\n LOADED = 'loaded',\n ERROR = 'error'\n}\n\nexport type SelectableItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selected?: boolean;\n};\n\nexport type DropDownMenuItem = {\n text?: string;\n disabled?: boolean;\n tooltip?: string;\n id?: string;\n onClick?: (e) => void;\n selectable?: boolean;\n selected?: boolean;\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n loader: {\n width: '100%',\n top: 0,\n left: 0,\n position: 'absolute',\n borderRadius: '2px'\n }\n});\n","import React from 'react';\nimport {LinearProgress as LinearProgress} from '@material-ui/core';\nimport {useStyles} from './styles';\n\nconst DashboardLinearLoader = () => {\n const styles = useStyles();\n return <LinearProgress color=\"secondary\" className={styles.loader} />;\n};\n\nexport default DashboardLinearLoader;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n view: {\n flex: 1,\n width: '100%',\n height: '100%',\n overflow: 'hidden'\n }\n}));\n","import React from 'react';\nimport {BasicView} from '@reltio/components';\nimport {DashboardViewIdContext} from '../../contexts/DashboardViewIdContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n id: string;\n children: React.ReactNode;\n};\n\nconst LayoutItemView = ({id, children}: Props) => {\n const styles = useStyles();\n\n return (\n <DashboardViewIdContext.Provider value={id}>\n <BasicView className={styles.view}>{children}</BasicView>\n </DashboardViewIdContext.Provider>\n );\n};\n\nexport default LayoutItemView;\n","import React from 'react';\n\nexport const DashboardViewIdContext = React.createContext(null);\n\nDashboardViewIdContext.displayName = 'DashboardViewIdContext';\n","import React, {createContext, useCallback, useContext, useEffect, useMemo, useState} from 'react';\nimport {assoc, assocPath, propOr} from 'ramda';\nimport nanoid from 'nanoid';\n\nimport {RequestStates} from '@reltio/components';\nimport {DQDataLevel} from '@reltio/mdm-sdk';\n\ntype RefreshSignals = Partial<Record<DQDataLevel, number>>;\ntype UpdateTime = {[actionId: string]: number};\ntype UpdateTimes = Partial<Record<DQDataLevel, UpdateTime>>;\ntype RequestsUpdateTimeContextType = {\n updateTime: ({dataLevel, actionId}: {dataLevel: DQDataLevel; actionId: string}) => void;\n updateTimes: UpdateTimes;\n resetUpdateTimes: (dataLevel: DQDataLevel) => void;\n};\nconst ReloadFacetSignalContext = createContext<RefreshSignals>(null);\nconst ReloadFacetActionContext = createContext<(dataLevel: DQDataLevel) => void>(null);\nconst RequestsUpdateTimeContext = createContext<RequestsUpdateTimeContextType>(null);\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const ReloadFacetProvider = ({children}: Props) => {\n const [refreshSignals, setRefreshSignals] = useState<RefreshSignals>({});\n const [updateTimes, setUpdateTimes] = useState<UpdateTimes>({});\n\n const resetUpdateTimes = useCallback(\n (dataLevel?: DQDataLevel) => (dataLevel ? setUpdateTimes(assoc(dataLevel, {})) : setUpdateTimes({})),\n []\n );\n const refreshAll = useCallback(\n (dataLevel: DQDataLevel) => {\n setRefreshSignals((signals) => {\n const nextSignal = propOr(0, dataLevel, signals) + 1;\n return assoc(dataLevel, nextSignal, signals);\n });\n },\n [setRefreshSignals]\n );\n\n const updateTime = ({dataLevel, actionId}) => {\n const time = Date.now();\n setUpdateTimes(assocPath([dataLevel, actionId], time));\n };\n return (\n <ReloadFacetActionContext.Provider value={refreshAll}>\n <ReloadFacetSignalContext.Provider value={refreshSignals}>\n <RequestsUpdateTimeContext.Provider value={{updateTime, updateTimes, resetUpdateTimes}}>\n {children}\n </RequestsUpdateTimeContext.Provider>\n </ReloadFacetSignalContext.Provider>\n </ReloadFacetActionContext.Provider>\n );\n};\n\nexport const useReloadAllFacets = () => {\n const refreshAll = useContext(ReloadFacetActionContext);\n\n if (refreshAll === undefined) {\n throw new Error('useReloadAllFacets must be used within a ReloadFacetProvider');\n }\n\n return refreshAll;\n};\n\ntype useReloadFacetProps = {\n state: RequestStates;\n reload: () => void;\n dataLevel?: DQDataLevel;\n};\n\nexport const useReloadFacet = ({state, reload, dataLevel}: useReloadFacetProps) => {\n const refreshSignals = useContext(ReloadFacetSignalContext);\n\n if (refreshSignals === undefined) {\n throw new Error('useReloadFacet must be used within a ReloadFacetProvider');\n }\n\n const refreshSignal = refreshSignals[dataLevel];\n useEffect(() => {\n if (state === RequestStates.LOADED || state === RequestStates.ERROR) {\n reload();\n }\n }, [refreshSignal]);\n};\n\nexport const useRefreshAction = ({action, dataLevel}: {action: () => void; dataLevel: DQDataLevel}) => {\n const {updateTime} = useContext(RequestsUpdateTimeContext);\n\n const actionId = useMemo(() => nanoid(), []);\n return useCallback(() => {\n updateTime({actionId, dataLevel});\n action();\n }, [action, dataLevel]);\n};\n\nexport const useUpdateTime = (dataLevel: DQDataLevel) => {\n const {updateTimes, resetUpdateTimes} = useContext(RequestsUpdateTimeContext);\n\n return {\n updateTime: Math.min(...(Object.values(updateTimes[dataLevel] || {}) as number[])),\n resetUpdateTimes\n };\n};\n","import {theme as defaultTheme} from '@reltio/mdm-sdk';\n\nexport const theme = {\n ...defaultTheme,\n tooltip: {\n borderRadius: '4px',\n backgroundColor: 'rgba(96, 96, 96, 0.9)',\n maxWidth: '300px'\n }\n};\n","export enum ChartDataType {\n STRING = 'string',\n FLOAT = 'float',\n INTEGER = 'integer',\n BOOLEAN = 'boolean',\n DATE = 'date',\n SSN = 'SSN',\n UNKNOWN = 'unknown'\n}\n","import {DQMetric} from '@reltio/mdm-sdk';\n\nenum CustomViewType {\n UNSUPPORTED = 'unsupported',\n SUMMARY = 'summary',\n MONTH_DISTRIBUTION = 'monthDistribution',\n DAY_OF_WEEK_DISTRIBUTION = 'dayOfWeekDistribution',\n DAY_OF_MONTH_DISTRIBUTION = 'dayOfMonthDistribution',\n RDM_TRANSCODE = 'rdmTranscode'\n}\n\nexport type ViewType = DQMetric | CustomViewType;\nexport const ViewType = {...DQMetric, ...CustomViewType};\n","export enum RDMLookupState {\n RDM_LOOKUP_EXIST = 'rdmLookupExist',\n RDM_LOOKUP_NOT_EXIST = 'rdmLookupNotExist'\n}\n","import i18n from 'ui-i18n';\n\nimport {DQDataLevel} from '@reltio/mdm-sdk';\n\nimport {LayoutsByAttributeType, ViewsByDataLevel} from '../types/DQDashboardPerspectiveConfig';\nimport {ChartDataType} from './ChartDataType';\nimport {ViewType} from './ViewType';\nimport {RDMLookupState} from '../constants/RdmLookupState';\n\nexport const defaultViewsByDataLevel: ViewsByDataLevel = {\n [DQDataLevel.ATTRIBUTE_TYPE]: [\n {\n id: 'FillRateView',\n type: ViewType.FILL_RATE,\n title: i18n.text('Fill rate')\n },\n {\n id: 'UniquenessAnalysisView',\n type: ViewType.UNIQUENESS,\n title: i18n.text('Uniqueness analysis')\n },\n {\n id: 'SummaryView',\n type: ViewType.SUMMARY,\n title: i18n.text('Summary')\n },\n {\n id: 'ValidationView',\n type: ViewType.DATA_VALIDATION,\n title: i18n.text('Profiles with invalid data')\n },\n {\n id: 'ValidationViewTimeSeries',\n type: ViewType.DATA_VALIDATION,\n title: i18n.text('Profiles with invalid data')\n },\n {\n id: 'FrequencyAnalysis',\n type: ViewType.FREQUENCY,\n title: i18n.text('Frequency analysis')\n },\n {\n id: 'LengthStatistics',\n type: ViewType.LENGTH_STATISTIC,\n title: i18n.text('Length statistics')\n },\n {\n id: 'PatternAnalysis',\n type: ViewType.PATTERN,\n title: i18n.text('Pattern analysis')\n },\n {\n id: 'CrosswalkAnalysis',\n type: ViewType.CROSSWALK_ANALYSIS,\n title: i18n.text('Source system analysis')\n },\n {\n id: 'MonthDistribution',\n type: ViewType.MONTH_DISTRIBUTION,\n title: i18n.text('Month distribution')\n },\n {\n id: 'DayOfWeekDistribution',\n type: ViewType.DAY_OF_WEEK_DISTRIBUTION,\n title: i18n.text('Day of week distribution')\n },\n {\n id: 'DayOfMonthDistribution',\n type: ViewType.DAY_OF_MONTH_DISTRIBUTION,\n title: i18n.text('Day of month distribution')\n },\n {\n id: 'ValueDistribution',\n type: ViewType.VALUE_DISTRIBUTION,\n title: i18n.text('Value distribution')\n },\n {\n id: 'UnsupportedDataType',\n type: ViewType.UNSUPPORTED,\n title: i18n.text('Unsupported Data Type')\n }\n ],\n [DQDataLevel.ENTITY_TYPE]: [\n {\n id: 'SummaryView',\n type: ViewType.SUMMARY,\n title: i18n.text('Summary')\n },\n {\n id: 'ValidationView',\n type: ViewType.DATA_VALIDATION,\n title: i18n.text('Profiles with invalid data')\n },\n {\n id: 'ConsolidationRate',\n type: ViewType.CONSOLIDATION_RATE,\n title: i18n.text('Consolidation rate')\n },\n {\n id: 'RDMTranscode',\n type: ViewType.RDM_TRANSCODE,\n title: i18n.text('RDM value mapping status')\n }\n ]\n};\n\nexport const defaultLayoutsByDataLevel = {\n [DQDataLevel.ATTRIBUTE_TYPE]: {\n today: {\n default: [\n {x: 0, y: 0, width: 3, height: 11, id: 'SummaryView'},\n {x: 3, y: 0, width: 3, height: 11, id: 'ValidationView'},\n {x: 0, y: 11, width: 3, height: 8, id: 'FillRateView'},\n {x: 3, y: 11, width: 3, height: 8, id: 'UniquenessAnalysisView'},\n {x: 0, y: 19, width: 3, height: 19, id: 'FrequencyAnalysis'},\n {x: 3, y: 19, width: 3, height: 19, id: 'CrosswalkAnalysis'},\n {x: 0, y: 38, width: 6, height: 19, id: 'LengthStatistics'}\n ],\n [ChartDataType.SSN]: [\n {x: 0, y: 0, width: 3, height: 11, id: 'SummaryView'},\n {x: 3, y: 0, width: 3, height: 11, id: 'ValidationView'},\n {x: 0, y: 11, width: 3, height: 8, id: 'FillRateView'},\n {x: 3, y: 11, width: 3, height: 8, id: 'UniquenessAnalysisView'},\n {x: 0, y: 19, width: 3, height: 19, id: 'FrequencyAnalysis'},\n {x: 3, y: 19, width: 3, height: 19, id: 'CrosswalkAnalysis'},\n {x: 0, y: 38, width: 3, height: 19, id: 'PatternAnalysis'}\n ],\n [ChartDataType.BOOLEAN]: [\n {x: 0, y: 0, width: 3, height: 11, id: 'SummaryView'},\n {x: 3, y: 0, width: 3, height: 11, id: 'ValidationView'},\n {x: 0, y: 11, width: 3, height: 8, id: 'FillRateView'},\n {x: 3, y: 11, width: 3, height: 8, id: 'FrequencyAnalysis'},\n {x: 0, y: 19, width: 3, height: 19, id: 'CrosswalkAnalysis'}\n ],\n [ChartDataType.DATE]: [\n {x: 0, y: 0, width: 3, height: 11, id: 'SummaryView'},\n {x: 3, y: 0, width: 3, height: 11, id: 'ValidationView'},\n {x: 0, y: 11, width: 3, height: 8, id: 'FillRateView'},\n {x: 3, y: 11, width: 3, height: 8, id: 'UniquenessAnalysisView'},\n {x: 0, y: 19, width: 3, height: 19, id: 'FrequencyAnalysis'},\n {x: 3, y: 19, width: 3, height: 19, id: 'CrosswalkAnalysis'},\n {x: 0, y: 38, width: 6, height: 19, id: 'ValueDistribution'}\n ],\n [ChartDataType.INTEGER]: [\n {x: 0, y: 0, width: 3, height: 11, id: 'SummaryView'},\n {x: 3, y: 0, width: 3, height: 11, id: 'ValidationView'},\n {x: 0, y: 11, width: 3, height: 8, id: 'FillRateView'},\n {x: 3, y: 11, width: 3, height: 8, id: 'UniquenessAnalysisView'},\n {x: 0, y: 19, width: 3, height: 19, id: 'FrequencyAnalysis'},\n {x: 3, y: 19, width: 3, height: 19, id: 'CrosswalkAnalysis'},\n {x: 0, y: 38, width: 6, height: 19, id: 'ValueDistribution'}\n ],\n [ChartDataType.FLOAT]: [\n {x: 0, y: 0, width: 3, height: 11, id: 'SummaryView'},\n {x: 3, y: 0, width: 3, height: 11, id: 'ValidationView'},\n {x: 0, y: 11, width: 3, height: 8, id: 'FillRateView'},\n {x: 3, y: 11, width: 3, height: 8, id: 'UniquenessAnalysisView'},\n {x: 0, y: 19, width: 3, height: 19, id: 'FrequencyAnalysis'},\n {x: 3, y: 19, width: 3, height: 19, id: 'CrosswalkAnalysis'},\n {x: 0, y: 38, width: 6, height: 19, id: 'ValueDistribution'}\n ]\n }\n } as LayoutsByAttributeType,\n [DQDataLevel.ENTITY_TYPE]: {\n [RDMLookupState.RDM_LOOKUP_EXIST]: [\n {x: 0, y: 0, width: 4, height: 7, id: 'SummaryView'},\n {x: 4, y: 0, width: 2, height: 7, id: 'RDMTranscode'},\n {x: 0, y: 7, width: 6, height: 18, id: 'ConsolidationRate'},\n {x: 0, y: 25, width: 6, height: 12, id: 'ValidationView'}\n ],\n [RDMLookupState.RDM_LOOKUP_NOT_EXIST]: [\n {x: 0, y: 0, width: 6, height: 7, id: 'SummaryView'},\n {x: 0, y: 7, width: 6, height: 18, id: 'ConsolidationRate'},\n {x: 0, y: 25, width: 6, height: 12, id: 'ValidationView'}\n ]\n }\n};\n","import React from 'react';\n\nexport const ChartsDataContext = React.createContext(null);\n\nChartsDataContext.displayName = 'ChartsDataContext';\n","import React from 'react';\nimport {DetailedAttributeType} from '../../types/DetailedAttributeType';\n\nexport const DetailedAttributeTypeContext = React.createContext<DetailedAttributeType>(null);\n\nDetailedAttributeTypeContext.displayName = 'DetailedAttributeTypeContext';\n","import React from 'react';\n\nimport {DataValidationFunction} from '@reltio/mdm-sdk';\nimport {RequestStates} from '@reltio/components';\n\ntype ContextType = {\n dvfs?: {\n data: DataValidationFunction[];\n state: RequestStates;\n reload: () => Promise<void>;\n errorCode?: number;\n };\n dvfConfigLink?: string;\n};\n\nexport const DVFContext = React.createContext<ContextType>(null);\n\nDVFContext.displayName = 'DVFContext';\n","import React from 'react';\n\nimport {TEntityType} from '@reltio/mdm-sdk';\n\nexport const EntityTypeContext = React.createContext<TEntityType>(null);\n\nEntityTypeContext.displayName = 'EntityTypeContext';\n","import {useCallback, useEffect, useMemo, useState} from 'react';\nimport {omit, pathOr, pipe, keys, path, length} from 'ramda';\nimport {RequestStates} from '@reltio/components';\nimport {\n getDQChartsData,\n DQChartsData,\n TEntityType,\n getLastUriPart,\n FilterOptions,\n buildFilterQueryString,\n generateValuableQueryString,\n getFacets,\n ActivityFilters,\n DQDataLevel,\n DQMetric\n} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\nimport {DetailedAttributeType} from '../types/DetailedAttributeType';\nimport {useRefreshAction} from '../contexts/ReloadFacetContext';\n\nconst REFRESH_REQUEST_TIMEOUT_MS = 180 * 1000;\n\nexport type UseChartsDataRequestProps = {\n entityType: TEntityType;\n detailedAttributeType?: DetailedAttributeType;\n dataLevel: DQDataLevel;\n metrics?: DQMetric[];\n};\n\nexport const useChartsDataRequest = ({\n entityType,\n detailedAttributeType,\n dataLevel,\n metrics\n}: UseChartsDataRequestProps) => {\n const [requestState, setRequestState] = useState<RequestStates>(RequestStates.INIT);\n const [chartsData, setChartsData] = useState<DQChartsData>({});\n const [lastRequestTime, setLastRequestTime] = useState<number>(null);\n const attributeFieldName = detailedAttributeType?.fieldName;\n const entityTypeUri = entityType?.uri;\n const safePromise = useSafePromise();\n\n const onError = (error) => {\n console.error(error); // eslint-disable-line\n setRequestState(RequestStates.ERROR);\n setChartsData({});\n };\n\n const onRequestFinished = (data: DQChartsData) => {\n setChartsData(data);\n setRequestState(RequestStates.LOADED);\n };\n\n const loadChartsData = useCallback(async () => {\n if (!entityTypeUri) return;\n setLastRequestTime(Date.now());\n setRequestState(RequestStates.LOADING);\n setChartsData({});\n\n if (dataLevel === DQDataLevel.ENTITY_TYPE) {\n const filter = buildFilterQueryString()([\n {\n fieldName: 'type',\n filter: FilterOptions.EQUALS,\n values: [entityTypeUri]\n }\n ]);\n\n const getActiveProfiles = getFacets({\n query: generateValuableQueryString({activeness: ActivityFilters.ACTIVE_ONLY, filter}),\n body: [{fieldName: 'type', pageSize: 101, pageNo: 1}]\n });\n\n const getInactiveProfiles = getFacets({\n query: generateValuableQueryString({activeness: ActivityFilters.INACTIVE_ONLY, filter}),\n body: [{fieldName: 'type', pageSize: 101, pageNo: 1}]\n });\n const getDqChartsData = getDQChartsData({\n entityTypeUri,\n dataLevel,\n metrics\n });\n\n safePromise(Promise.all([getActiveProfiles, getInactiveProfiles, getDqChartsData]))\n .then(([activeProfiles, inactiveProfiles, dqChartsData]) => {\n const sourceSystems = pipe(\n path(['consolidationRate', 'totalCrosswalksBySource']),\n omit(['ReltioCleanser']),\n keys,\n length\n )(dqChartsData);\n\n onRequestFinished({\n ...dqChartsData,\n summary: {\n inactiveProfiles: inactiveProfiles.type?.[getLastUriPart(entityTypeUri)],\n activeProfiles: activeProfiles.type?.[getLastUriPart(entityTypeUri)],\n sourceSystems\n }\n });\n })\n .catch(onError);\n } else {\n if (!attributeFieldName) return;\n safePromise(\n getDQChartsData({\n entityTypeUri,\n attributes: [attributeFieldName],\n dataLevel,\n metrics\n })\n )\n .then(pipe(pathOr({}, ['statistic', attributeFieldName]), onRequestFinished))\n .catch(onError);\n }\n }, [setRequestState, setChartsData, safePromise, attributeFieldName, entityTypeUri, dataLevel, metrics]);\n\n useEffect(() => {\n const needRefresh = lastRequestTime ? Date.now() - lastRequestTime > REFRESH_REQUEST_TIMEOUT_MS : false;\n\n if (dataLevel === DQDataLevel.ENTITY_TYPE && needRefresh) refreshAction();\n });\n\n const refreshAction = useRefreshAction({\n action: loadChartsData,\n dataLevel\n });\n\n useEffect(() => {\n refreshAction();\n }, [refreshAction]);\n\n const chartsDataResult = useMemo(() => ({data: chartsData, state: requestState, reload: refreshAction}), [\n chartsData,\n requestState,\n refreshAction\n ]);\n\n return chartsDataResult;\n};\n","import {pluck} from 'ramda';\nimport {useEffect, useState} from 'react';\nimport {useSafePromise} from '@reltio/components';\nimport {\n buildFilterQueryString,\n FilterOptions,\n generateValuableQueryString,\n getFacets,\n getLastUriPart,\n TEntityType\n} from '@reltio/mdm-sdk';\n\nexport const useEntityCount = (entityTypes: TEntityType[]) => {\n const [entitiesCountMap, setEntitiesCountMap] = useState(null);\n const safePromise = useSafePromise();\n useEffect(() => {\n const filter = buildFilterQueryString()([\n {\n fieldName: 'type',\n filter: FilterOptions.EQUALS,\n values: pluck('uri', entityTypes)\n }\n ]);\n\n safePromise(\n getFacets({\n query: generateValuableQueryString({activeness: 'active', filter: filter}),\n body: [{fieldName: 'type', pageSize: 101, pageNo: 1}]\n })\n )\n .then(({type}) => setEntitiesCountMap(type))\n .catch(() => setEntitiesCountMap(null));\n }, [entityTypes]);\n\n return (entityTypeUri: string) => Number(entitiesCountMap?.[getLastUriPart(entityTypeUri)] || 0);\n};\n","export enum TimeRange {\n TODAY = 'today',\n LAST_7_DAYS = '7days',\n LAST_30_DAYS = '30days'\n}\n","import {DetailedAttributeType} from '../types/DetailedAttributeType';\nimport {FacetFilter} from '../types/FacetFilter';\nimport {SearchStateAttributesGroup, SearchOperator} from '@reltio/mdm-sdk';\n\nexport const getAdvancedSearchFilter = (\n entityTypeUri: string,\n filters?: FacetFilter[],\n detailedAttributeType?: DetailedAttributeType\n): SearchStateAttributesGroup => ({\n attributes: (filters || []).map(({filter, fieldName, values, uri}, index: number) => ({\n data: {\n uri: uri || detailedAttributeType?.uri,\n entityTypeUri,\n fieldName\n },\n filter,\n id: `attribute_${index}`,\n operator: SearchOperator.and,\n values\n })),\n entityTypes: [entityTypeUri],\n id: 'group',\n operator: SearchOperator.or\n});\n","import {\n assoc,\n curry,\n defaultTo,\n evolve,\n filter,\n isEmpty,\n map,\n pipe,\n pluck,\n when,\n mergeLeft,\n propEq,\n prop,\n uniqBy,\n concat,\n isNil\n} from 'ramda';\n\nimport i18n from 'ui-i18n';\nimport {ChartData, ReltioGridLayoutItem} from '@reltio/components';\nimport {\n DataTypes,\n DQDataLevel,\n DQMetric,\n formatDataTypeValue,\n getSourceSystemLabel,\n isDateType,\n mapFilterValue,\n Metadata,\n parseTimestamp,\n SearchState,\n TimeSeriesDataValues\n} from '@reltio/mdm-sdk';\n\nimport {ChartDataType} from '../constants/ChartDataType';\nimport {defaultLayoutsByDataLevel, defaultViewsByDataLevel} from '../constants/defaultConfig';\nimport {ViewType} from '../constants/ViewType';\nimport {DetailedAttributeType} from '../types/DetailedAttributeType';\nimport {LayoutsByAttributeType, ViewsByDataLevel} from '../types/DQDashboardPerspectiveConfig';\nimport {DQDashboardView} from '../types/DQDashboardView';\nimport {FacetFilter} from '../types/FacetFilter';\nimport {GetSearchStateProps} from '../types/GetSearchStateProps';\nimport {TimeRange} from '../types/TimeRange';\n\nimport {getAdvancedSearchFilter} from './advancedFilters';\n\nexport const MIN_CHART_BAR_SIZE = 3;\n\nexport const localizeChartValues = map((chartData: ChartData) => ({\n ...chartData,\n localizedValue: i18n.number(chartData.value)\n}));\n\nexport const getPercentLabel = (percent: number) => (isNil(percent) ? '' : `(${percent}%)`);\n\nexport const isEmptyData = (data: ChartData[]) => isEmpty(data) || !data.find(({value}) => value > 0);\n\nexport const facetFiltersToSearchState = curry(\n (detailedAttributeType: DetailedAttributeType, entityTypeUri: string, filters: FacetFilter[]): SearchState => ({\n advanced: [\n getAdvancedSearchFilter(\n entityTypeUri,\n filters.map(\n when(\n () => isDateType(detailedAttributeType?.type),\n evolve({values: map(mapFilterValue(parseTimestamp))})\n )\n ),\n detailedAttributeType\n )\n ],\n searchOptions: {\n searchByOv: false,\n ovOnly: false\n },\n version: '2.0'\n })\n);\n\nexport const getSearchState = (getFilter) => ({\n detailedAttributeType,\n entityTypeUri\n}: {\n detailedAttributeType: DetailedAttributeType;\n entityTypeUri: string;\n}): ((value: string) => SearchState) =>\n pipe(\n getFilter({\n fieldName: detailedAttributeType?.fieldName,\n entityTypeUri\n }),\n facetFiltersToSearchState(detailedAttributeType, entityTypeUri)\n );\n\nexport const convertDateLabelsInChartData = (data: ChartData[], attributeType: string) =>\n data.map((dataItem) => ({\n ...dataItem,\n label: formatDataTypeValue({dataTypeDefinition: {type: attributeType}}, Number(dataItem.label))\n }));\n\nexport const getChartDataTypeByAttributeType = (type: string) => {\n switch (type) {\n case DataTypes.TYPE_BLOB:\n case DataTypes.TYPE_BLOG_URL:\n case DataTypes.TYPE_CIK_ID:\n case DataTypes.TYPE_ENTITY_ID:\n case DataTypes.TYPE_IMAGE_URL:\n case DataTypes.TYPE_STRING:\n case DataTypes.TYPE_TEXT:\n case DataTypes.TYPE_URL:\n return ChartDataType.STRING;\n case DataTypes.TYPE_COUNT:\n case DataTypes.TYPE_DOLLAR:\n case DataTypes.TYPE_INT:\n case DataTypes.TYPE_LONG:\n return ChartDataType.INTEGER;\n case DataTypes.TYPE_FLOAT:\n case DataTypes.TYPE_DOUBLE:\n case DataTypes.TYPE_NUMBER:\n return ChartDataType.FLOAT;\n case DataTypes.TYPE_BOOLEAN:\n case DataTypes.TYPE_RDM_LOOKUPS_NOT_RESOLVED:\n return ChartDataType.BOOLEAN;\n case DataTypes.TYPE_ACTIVENESS_DATE:\n case DataTypes.TYPE_DATE:\n case DataTypes.TYPE_LOCAL_DATE:\n case DataTypes.TYPE_TIMESTAMP:\n return ChartDataType.DATE;\n case DataTypes.TYPE_SSN:\n return ChartDataType.SSN;\n default:\n return ChartDataType.UNKNOWN;\n }\n};\n\nconst getViewsByDataType = (chartDataType: ChartDataType) => {\n switch (chartDataType) {\n case ChartDataType.INTEGER:\n return [\n ViewType.SUMMARY,\n ViewType.CROSSWALK_ANALYSIS,\n ViewType.DATA_VALIDATION,\n ViewType.FILL_RATE,\n ViewType.FREQUENCY,\n ViewType.UNIQUENESS,\n ViewType.VALUE_DISTRIBUTION\n ];\n case ChartDataType.FLOAT:\n return [\n ViewType.SUMMARY,\n ViewType.CROSSWALK_ANALYSIS,\n ViewType.DATA_VALIDATION,\n ViewType.FILL_RATE,\n ViewType.FREQUENCY,\n ViewType.UNIQUENESS,\n ViewType.VALUE_DISTRIBUTION\n ];\n case ChartDataType.BOOLEAN:\n return [\n ViewType.SUMMARY,\n ViewType.CROSSWALK_ANALYSIS,\n ViewType.DATA_VALIDATION,\n ViewType.FILL_RATE,\n ViewType.FREQUENCY\n ];\n case ChartDataType.STRING:\n return [\n ViewType.LENGTH_STATISTIC,\n ViewType.SUMMARY,\n ViewType.CROSSWALK_ANALYSIS,\n ViewType.DATA_VALIDATION,\n ViewType.FILL_RATE,\n ViewType.FREQUENCY,\n ViewType.UNIQUENESS\n ];\n case ChartDataType.DATE:\n return [\n ViewType.SUMMARY,\n ViewType.CROSSWALK_ANALYSIS,\n ViewType.DATA_VALIDATION,\n ViewType.FILL_RATE,\n ViewType.FREQUENCY,\n ViewType.UNIQUENESS,\n ViewType.VALUE_DISTRIBUTION,\n ViewType.MONTH_DISTRIBUTION,\n ViewType.DAY_OF_MONTH_DISTRIBUTION,\n ViewType.DAY_OF_WEEK_DISTRIBUTION\n ];\n case ChartDataType.SSN:\n return [\n ViewType.SUMMARY,\n ViewType.CROSSWALK_ANALYSIS,\n ViewType.DATA_VALIDATION,\n ViewType.FILL_RATE,\n ViewType.FREQUENCY,\n ViewType.UNIQUENESS,\n ViewType.PATTERN\n ];\n case ChartDataType.UNKNOWN:\n return [\n ViewType.SUMMARY,\n ViewType.CROSSWALK_ANALYSIS,\n ViewType.DATA_VALIDATION,\n ViewType.FILL_RATE,\n ViewType.FREQUENCY,\n ViewType.UNIQUENESS,\n ViewType.LENGTH_STATISTIC\n ];\n default:\n return [];\n }\n};\n\nconst getValidViews = ({\n views: allViews,\n supportedViews,\n layout\n}: {\n views: DQDashboardView[];\n supportedViews: ViewType[];\n layout: ReltioGridLayoutItem[];\n}): DQDashboardView[] => {\n return layout.reduce((views, layoutItem) => {\n const viewType = prop('type', allViews.find(propEq('id', layoutItem.id)));\n const viewIndex = allViews.findIndex(propEq('id', layoutItem.id));\n if (viewIndex !== -1)\n return !supportedViews.includes(viewType)\n ? views.concat(assoc('type', ViewType.UNSUPPORTED, allViews[viewIndex]))\n : views.concat(allViews[viewIndex]);\n else\n return views.concat({\n id: layoutItem.id,\n type: ViewType.UNSUPPORTED,\n title: i18n.text('Unsupported')\n });\n }, []);\n};\n\nexport const getEntityLevelViews = (\n views: Partial<ViewsByDataLevel>,\n layout: ReltioGridLayoutItem[]\n): DQDashboardView[] => {\n const allViews = uniqBy(\n prop('id'),\n concat(views?.[DQDataLevel.ENTITY_TYPE] || [], defaultViewsByDataLevel[DQDataLevel.ENTITY_TYPE] || [])\n );\n const supportedViews = [\n ViewType.SUMMARY,\n ViewType.CONSOLIDATION_RATE,\n ViewType.DATA_VALIDATION,\n ViewType.RDM_TRANSCODE\n ];\n return getValidViews({views: allViews, supportedViews, layout});\n};\n\nexport const getAttributeLevelViews = (\n views: Partial<ViewsByDataLevel>,\n attributeType: string,\n layout: ReltioGridLayoutItem[]\n): DQDashboardView[] => {\n const allViews = uniqBy(\n prop('id'),\n concat(views?.[DQDataLevel.ATTRIBUTE_TYPE] || [], defaultViewsByDataLevel[DQDataLevel.ATTRIBUTE_TYPE] || [])\n );\n const chartDataType = getChartDataTypeByAttributeType(attributeType);\n const supportedViews = getViewsByDataType(chartDataType);\n return getValidViews({views: allViews, supportedViews, layout});\n};\n\nexport const getMetricsFromViews: (views: DQDashboardView[]) => DQMetric[] = pipe(\n defaultTo([]),\n pluck('type'),\n filter((metric: DQMetric) => Object.values(DQMetric).includes(metric))\n);\n\nexport const hasTimeRangeLayout = (layouts: LayoutsByAttributeType) => {\n return !!(layouts?.timeRange || defaultLayoutsByDataLevel[DQDataLevel.ATTRIBUTE_TYPE]?.timeRange);\n};\n\nexport const getLayoutByAttributeType = (layouts: LayoutsByAttributeType, type: string, timeRange: TimeRange) => {\n const chartDataType = getChartDataTypeByAttributeType(type);\n const customLayouts = timeRange === TimeRange.TODAY ? layouts?.today : layouts?.timeRange;\n const defaultLayouts =\n defaultLayoutsByDataLevel[DQDataLevel.ATTRIBUTE_TYPE][timeRange === TimeRange.TODAY ? 'today' : 'timeRange'];\n\n const mergedLayoutsByType = mergeLeft(customLayouts, defaultLayouts);\n return mergedLayoutsByType[chartDataType] || mergedLayoutsByType['default'] || [];\n};\n\nexport const getBarWidthStyle = ({percent, value}: ChartData) => ({\n width: `${percent}%`,\n ...(value > 0 && {minWidth: `${MIN_CHART_BAR_SIZE}px`})\n});\n\nexport const getMaxPercentFromChartData = pipe(pluck('percent'), (percents: number[]) => Math.max(...percents));\nexport const getMaxValueFromChartData = pipe(pluck('value'), (values: number[]) => Math.max(...values));\nexport const enrichChartDataWithSourceLabel = curry((metadata: Metadata, chartData: ChartData[]) =>\n chartData.map((data) => assoc('label', getSourceSystemLabel(metadata, data.group) || data.label, data))\n);\nexport const getEntityTypeSummarySearchState = ({entityTypeUri}: GetSearchStateProps) => () =>\n facetFiltersToSearchState(undefined, entityTypeUri, []);\n\nexport const formatPercent = (percent: number | string): number => +(Number(percent) * 100).toFixed(2);\n\nexport const transformTimeSeriesChartData = curry((metric: DQMetric, chartData: TimeSeriesDataValues[]) =>\n chartData.map((data) => {\n return {\n ...data,\n [metric]: formatPercent(data[metric])\n };\n })\n);\n","import {any, map, pipe} from 'ramda';\n\nimport i18n from 'ui-i18n';\nimport {ChartData} from '@reltio/components';\nimport {\n FilterOptions,\n getChartItemColor,\n isRDMLookupAttrType,\n Metadata,\n TEntityType,\n getAttributeTypesTree\n} from '@reltio/mdm-sdk';\n\nimport {getSearchState, localizeChartValues} from './charts';\nimport {DetailedAttributeType} from '../types/DetailedAttributeType';\n\nexport enum RDMTranscodeStatus {\n RESOLVED = 'resolved',\n UNRESOLVED = 'unresolved'\n}\n\nconst RDMChartColors = {\n [RDMTranscodeStatus.RESOLVED]: '#7F22FD',\n [RDMTranscodeStatus.UNRESOLVED]: '#F085F2'\n};\n\nexport const getRDMChartColors: (chartsData: ChartData[]) => string[] = map(\n ({group}) => RDMChartColors[group] || getChartItemColor(group)\n);\n\nexport const formatRDMTranscodeData = ([resolveCount, unresolveCount]: Record<'total', number>[]): ChartData[] => {\n return localizeChartValues([\n {\n value: resolveCount.total,\n label: i18n.text('Mapped values'),\n group: RDMTranscodeStatus.RESOLVED,\n dataReltioId: 'reltio-dq-dashboard-transcode-mapped'\n },\n {\n value: unresolveCount.total,\n label: i18n.text('Unmapped values'),\n group: RDMTranscodeStatus.UNRESOLVED,\n dataReltioId: 'reltio-dq-dashboard-transcode-unmapped'\n }\n ]);\n};\n\nexport const getRDMTranscodeFilter = (rdmTranscodeStatus: RDMTranscodeStatus) => [\n {\n filter: FilterOptions.EQUALS,\n fieldName: 'rdmLookups.resolved',\n values: [rdmTranscodeStatus !== RDMTranscodeStatus.RESOLVED]\n }\n];\n\nexport const getRDMTranscodeSearchState = getSearchState(() => getRDMTranscodeFilter);\n\nexport const checkEntityTypeHasRDMLookup = (metadata: Metadata, entityType: TEntityType) => {\n const isAttrTreeHasRDMLookup = (item: DetailedAttributeType) => {\n return isRDMLookupAttrType(item) || item.children?.some(isAttrTreeHasRDMLookup);\n };\n return pipe(getAttributeTypesTree, any(isAttrTreeHasRDMLookup))(metadata, entityType);\n};\n","import {propEq, either, prop, allPass} from 'ramda';\nimport {\n getLabel,\n AttributeType,\n DataTypes,\n DataValidationFunction,\n getAttributeTypeSubAttributes,\n isReadableAttribute,\n Metadata,\n TEntityType,\n StatusVF\n} from '@reltio/mdm-sdk';\nimport {DetailedAttributeType} from '../types/DetailedAttributeType';\n\ntype IsContainActiveVF = (dvf: DataValidationFunction[], attributeTypeUri: string) => boolean;\nexport const isContainActiveVF: IsContainActiveVF = (dvf, attributeTypeUri) =>\n (dvf || []).some(allPass([propEq('attribute', attributeTypeUri), propEq('status', StatusVF.ACTIVE)]));\n\nexport const isFloatingType = (type: string): boolean =>\n [DataTypes.TYPE_FLOAT, DataTypes.TYPE_DOUBLE, DataTypes.TYPE_NUMBER].includes(type as DataTypes);\nexport const getDVFsForAttribute = (dvfs: DataValidationFunction[], attributeTypeUri: string) =>\n (dvfs || []).filter(propEq('attribute', attributeTypeUri));\n\nexport const countEntityTypeAttributes = (metadata: Metadata, entityType: TEntityType) => {\n const attributes = entityType.attributes || [];\n const collectAttributes = (attributes: AttributeType[]) => {\n return attributes\n .filter(isReadableAttribute)\n .filter(either(prop('label'), prop('name')))\n .reduce((attributes: AttributeType[], attribute: AttributeType) => {\n const children = getAttributeTypeSubAttributes(metadata, attribute);\n return children?.length\n ? [...attributes, attribute, ...collectAttributes(children)]\n : [...attributes, attribute];\n }, []);\n };\n return collectAttributes(attributes).length;\n};\n\nexport const getAttributeLabel = (detailedAttributeType: DetailedAttributeType) =>\n getLabel(detailedAttributeType.label || detailedAttributeType.name);\n","import {AttributeType} from '@reltio/mdm-sdk';\n\nexport enum AttrTypeDetailsType {\n INCLUDED_IN_MATCHING = 'includedInMatching',\n CONTAIN_VF = 'containVF',\n REQUIRED = 'required',\n REFERENCE = 'reference',\n RDM_LOOKUP = 'RDMLookup'\n}\n\nexport type AttrTypeDetails = Record<AttrTypeDetailsType, boolean>;\n\nexport type DetailedAttributeType = AttributeType & {\n children?: DetailedAttributeType[];\n fieldName?: string;\n isAttributeReference?: boolean;\n details?: AttrTypeDetails;\n};\n\nexport type AttributeItemType = {\n attributeItem: DetailedAttributeType;\n level: number;\n};\n","import {ChartData} from '@reltio/components';\nimport {FillRateState, attributeUriToSearchUri} from '@reltio/mdm-sdk';\nimport {curry, propEq} from 'ramda';\nimport {DetailedAttributeType} from '../types/DetailedAttributeType';\nimport {FilterOption} from '../types/FilterOption';\n\nconst filterAttributeByName = (item: DetailedAttributeType, filterText: string) =>\n (item.label || item.name)?.toLowerCase().includes(filterText.toLowerCase());\n\nexport const filterAttributeByDetails = curry((filterOptions: FilterOption[], item: DetailedAttributeType) =>\n filterOptions.some((detail) => item.details[detail.value])\n);\n\nexport const filterAttributeTreeByDetails = curry((filterOptions: FilterOption[], item: DetailedAttributeType) => {\n if (filterOptions.length === 0) return true;\n return (\n filterAttributeByDetails(filterOptions, item) ||\n item.children?.some((child) => filterAttributeTreeByDetails(filterOptions, child))\n );\n});\n\nexport const filterAttributeByNotEmpty = curry(\n (fillRates: Record<string, ChartData[]>, item: DetailedAttributeType) => {\n const fillRate = fillRates[item.fieldName];\n return fillRate?.find(propEq('group', FillRateState.EXISTS))?.value;\n }\n);\n\nexport const filterAttributeByEmpty = curry((fillRates: Record<string, ChartData[]>, item: DetailedAttributeType) => {\n const fillRate = fillRates[item.fieldName];\n return !fillRate?.find(propEq('group', FillRateState.EXISTS))?.value;\n});\n\nexport const filterAttributeTreeByEmpty = curry(\n (fillRates: Record<string, ChartData[]>, item: DetailedAttributeType, parents = []) => {\n const fieldName = item.fieldName || attributeUriToSearchUri(item.uri, parents);\n return (\n filterAttributeByEmpty(fillRates, {...item, fieldName}) ||\n item.children?.some((child) =>\n filterAttributeTreeByEmpty(fillRates, child, parents.concat({name: item.name, label: item.label}))\n )\n );\n }\n);\n\nexport const filterAttributesTypesByName = curry((filterText: string, array: DetailedAttributeType[]) => {\n return array.reduce((resultArray, currentItem) => {\n const isCurrentItemMatch = filterAttributeByName(currentItem, filterText);\n const children = isCurrentItemMatch\n ? currentItem.children || []\n : filterAttributesTypesByName(filterText, currentItem.children || []);\n if (isCurrentItemMatch || children.length)\n resultArray.push(Object.assign({}, currentItem, children.length && {children}));\n return resultArray;\n }, []);\n});\n","import {chain, curry, pipe, prop, propEq} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {\n Metadata,\n TEntityType,\n getAttributeTypesTree,\n attributeUriToSearchUri,\n isReference,\n DataValidationFunction,\n isRDMLookupAttrType,\n FillRateState,\n DQChartsData\n} from '@reltio/mdm-sdk';\nimport {isContainActiveVF} from './attributes';\nimport {\n AttributeItemType,\n DetailedAttributeType,\n AttrTypeDetails,\n AttrTypeDetailsType\n} from '../types/DetailedAttributeType';\n\nimport {filterAttributesTypesByName} from './attributeFilters';\nimport {ChartData} from '@reltio/components';\n\ntype GetAttrTypeDetailsParams = {\n attrTypeItem: DetailedAttributeType;\n dvf: DataValidationFunction[];\n matchAttributes: string[];\n};\n\nexport const getAttrTypeDetails = ({\n attrTypeItem,\n dvf = [],\n matchAttributes = []\n}: GetAttrTypeDetailsParams): AttrTypeDetails => {\n const {uri, required, isAttributeReference} = attrTypeItem;\n\n return {\n [AttrTypeDetailsType.INCLUDED_IN_MATCHING]: matchAttributes.includes(uri),\n [AttrTypeDetailsType.CONTAIN_VF]: isContainActiveVF(dvf, uri),\n [AttrTypeDetailsType.REQUIRED]: !!required,\n [AttrTypeDetailsType.REFERENCE]: isAttributeReference,\n [AttrTypeDetailsType.RDM_LOOKUP]: isRDMLookupAttrType(attrTypeItem)\n };\n};\n\nexport const getDetailLabel = (attributeDetailType: string): string => {\n const detailLabels = {\n [AttrTypeDetailsType.INCLUDED_IN_MATCHING]: i18n.text('Included in match rule'),\n [AttrTypeDetailsType.CONTAIN_VF]: i18n.text('Has validation functions'),\n [AttrTypeDetailsType.REQUIRED]: i18n.text('Required'),\n [AttrTypeDetailsType.REFERENCE]: i18n.text('Reference attribute'),\n [AttrTypeDetailsType.RDM_LOOKUP]: i18n.text('RDM')\n };\n\n return detailLabels[attributeDetailType] || attributeDetailType;\n};\n\nconst buildItems = curry(\n (items: DetailedAttributeType[], parents = [], isAttributeReference = false, level = 0): AttributeItemType[] =>\n pipe(\n chain((item: DetailedAttributeType) => {\n const childrenItems = item.children\n ? buildItems(\n item.children,\n parents.concat({name: item.name, label: item.label}),\n isAttributeReference || isReference(item),\n level + 1\n )\n : [];\n\n return [\n {\n attributeItem: {\n ...item,\n fieldName: attributeUriToSearchUri(item.uri, parents),\n isAttributeReference: isReference(item) || isAttributeReference\n },\n level\n },\n ...childrenItems\n ];\n })\n )(items)\n);\n\ntype CollectAttributeItemsFn = (\n filterText: string\n) => (metadata: Metadata, entityType: TEntityType) => AttributeItemType[];\n\nexport const collectFilteredAttributeItems: CollectAttributeItemsFn = (filterText: string) =>\n pipe(getAttributeTypesTree, filterAttributesTypesByName(filterText), buildItems);\n\nexport const checkIsDataQualitativeForSummary = (data: DQChartsData) => data?.fillRate?.[FillRateState.MISSING] === 0;\n\nexport const checkIsDataQualitativeForAttributeList = (data: ChartData[]) =>\n data?.find(propEq('group', FillRateState.MISSING))?.value === 0;\n\nexport const isReferenceChild = prop('isAttributeReference');\n","export enum EmptyStateVariants {\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large'\n}\n","import React from 'react';\nimport {DQDataLevel} from '@reltio/mdm-sdk';\n\nexport const DataLevelContext = React.createContext<DQDataLevel>(null);\n\nDataLevelContext.displayName = 'DataLevelContext';\n","import React from 'react';\n\nimport {TimeRange} from '../../types/TimeRange';\n\nexport const TimeRangeContext = React.createContext<TimeRange>(null);\n\nTimeRangeContext.displayName = 'TimeRangeContext';\n","import moment from 'moment';\nimport {__, defaultTo, find, map, pipe, prop, propEq, propOr, sortBy} from 'ramda';\n\nimport {TimeSeriesData, TimeSeriesDataValues} from '@reltio/mdm-sdk';\n\nimport {LineChartData} from '../types/LineChartData';\n\nimport i18n from 'ui-i18n';\n\nimport {TimeRange} from '../types/TimeRange';\nimport {DQDashboardView} from '../types/DQDashboardView';\n\nexport const getTimeRangeOptions = () => [\n {\n label: i18n.text('Today'),\n value: TimeRange.TODAY\n },\n {\n label: i18n.text('Last 7 days'),\n value: TimeRange.LAST_7_DAYS\n },\n {\n label: i18n.text('Last 30 days'),\n value: TimeRange.LAST_30_DAYS\n }\n];\n\nexport const getLabelByTimeRange = (timeRange: TimeRange): string =>\n pipe(getTimeRangeOptions, find(propEq('value', timeRange)), propOr('', 'label'))();\n\nexport const getTimeSeriesData = <T>(\n getData: (chartsData: TimeSeriesDataValues) => T\n): ((chartsData: TimeSeriesData[]) => LineChartData[]) =>\n pipe(\n defaultTo([]),\n map(({time, values}) => ({\n group: time?._max_date,\n label: i18n.date(time?._max_date, 'DD/MM/YY'),\n ...getData(values)\n })),\n sortBy(prop('group'))\n );\n\nexport const getDaysByTimeRange = propOr(1, __, {\n [TimeRange.TODAY]: 1,\n [TimeRange.LAST_7_DAYS]: 7,\n [TimeRange.LAST_30_DAYS]: 30\n});\n\nexport const getTimeRangeDates = (timeRange: TimeRange): {startDate: string; endDate: string} => {\n const days = getDaysByTimeRange(timeRange);\n const today = new Date();\n const endDate = moment.utc(today).format('YYYY-MM-DD');\n\n const startDay = today.setDate(today.getDate() - days);\n const startDate = moment.utc(startDay).format('YYYY-MM-DD');\n return {startDate, endDate};\n};\n\nexport const checkIsTimeSeries = (config: DQDashboardView) => config?.options?.timeSeries;\n\nexport const isTimeSeriesHasData = (key: string, data: LineChartData[]): boolean => data.some(prop(key));\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n label: {\n whiteSpace: 'nowrap',\n paddingRight: '9px'\n },\n infoDataLabel: {\n fontWeight: 700\n },\n chartDataLabel: {\n color: 'rgba(255, 255, 255, 0.75)'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n label?: React.ReactNode;\n value?: React.ReactNode;\n};\n\nconst InfoDataRenderer = ({label, value}: Props) => {\n const styles = useStyles();\n\n return (\n <>\n {label && <span className={classnames(styles.label, styles.infoDataLabel)}>{label}</span>}\n {value}\n </>\n );\n};\n\nexport default InfoDataRenderer;\n","import React from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n label?: React.ReactNode;\n value?: React.ReactNode;\n};\n\nconst ChartDataRenderer = ({label, value}: Props) => {\n const styles = useStyles();\n\n return (\n <>\n {label && <span className={classnames(styles.label, styles.chartDataLabel)}>{label}</span>}\n {value}\n </>\n );\n};\n\nexport default ChartDataRenderer;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n tooltipWrapper: {\n fontSize: '10px',\n fontWeight: 400,\n lineHeight: '12px',\n color: '#FFFFFF'\n },\n title: {\n padding: '2px 0'\n },\n row: {\n padding: '2px 0'\n }\n});\n","import React from 'react';\nimport ChartDataRenderer from './data-renderers/ChartDataRenderer';\nimport {useStyles} from './styles';\n\ntype Data = {\n label?: React.ReactNode;\n value?: React.ReactNode;\n};\n\ntype Props = {\n data: Data[];\n title?: string;\n DataRenderer?: React.ComponentType<Data>;\n};\n\nconst ChartDataTooltip = ({data, title, DataRenderer = ChartDataRenderer}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.tooltipWrapper}>\n {title && <div className={styles.title}>{title}</div>}\n {data.map((data, index) => (\n <div key={index} className={styles.row}>\n <DataRenderer {...data} />\n </div>\n ))}\n </div>\n );\n};\n\nexport default ChartDataTooltip;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n fillRateSquare: {\n height: '8px',\n width: '8px',\n display: 'inline-block',\n marginRight: '5px',\n verticalAlign: 'middle'\n }\n});\n","import React from 'react';\n\nimport i18n from 'ui-i18n';\nimport {ChartData} from '@reltio/components';\n\nimport {getPercentLabel} from '../../../services/charts';\n\nimport ChartDataTooltip from '../ChartDataTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n data: ChartData[];\n getColor: (group: string) => string;\n title?: string;\n};\n\nconst TooltipWithSquares = ({data, title, getColor}: Props) => {\n const styles = useStyles();\n\n const tooltipData = data.map(({label, percent, value, group}) => ({\n label: (\n <span>\n <div className={styles.fillRateSquare} style={{background: getColor(group)}}></div>\n {label}\n </span>\n ),\n value: `${i18n.number(value)} ${getPercentLabel(percent)}`\n }));\n\n return <ChartDataTooltip title={title} data={tooltipData} />;\n};\n\nexport default TooltipWithSquares;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n root: {\n padding: '0px 16px'\n },\n title: {\n fontSize: '16px',\n marginRight: '5px',\n lineHeight: '24px'\n },\n infoIcon: {\n position: 'relative'\n }\n}));\n","import React from 'react';\nimport {BasicViewHeader, SmallIconButtonWithTooltip, HideOnShrink, VerticalDivider} from '@reltio/components';\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n title: string;\n infoTooltipTitle?: React.ReactNode;\n children?: React.ReactNode;\n};\n\nconst DQLayoutItemHeader = ({title, infoTooltipTitle, children}: Props) => {\n const hasInfoIcon = !!infoTooltipTitle;\n const hasChildren = !!children;\n const styles = useStyles(hasChildren);\n return (\n <BasicViewHeader\n title={title}\n className={styles.root}\n classes={{\n title: styles.title\n }}\n >\n {hasInfoIcon && (\n <SmallIconButtonWithTooltip\n icon={InfoIcon}\n size=\"XXS\"\n tooltipTitle={infoTooltipTitle}\n className={styles.infoIcon}\n />\n )}\n {hasChildren && (\n <HideOnShrink widthToHide={500}>\n {React.Children.map(\n children,\n (child) =>\n React.isValidElement(child) && (\n <>\n <VerticalDivider height={24} margin={16} />\n {child}\n </>\n )\n )}\n </HideOnShrink>\n )}\n </BasicViewHeader>\n );\n};\n\nexport default DQLayoutItemHeader;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n view: {\n flex: 1,\n width: '100%',\n height: '100%',\n overflow: 'hidden'\n }\n}));\n","import React, {useContext} from 'react';\nimport {BasicView} from '@reltio/components';\nimport {DQDashboardView} from '../../types/DQDashboardView';\nimport {TimeRange} from '../../types/TimeRange';\nimport {DataLevelContext} from '../../contexts/DataLevelContext';\nimport {TimeRangeContext} from '../../contexts/TimeRangeContext';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: DQDashboardView;\n children: React.ReactNode;\n};\n\nconst DQLayoutItemView = ({config, children}: Props) => {\n const styles = useStyles();\n const {type} = config;\n const dataLevel = useContext(DataLevelContext);\n const timeRange = useContext(TimeRangeContext);\n const dataReltioId =\n timeRange === TimeRange.TODAY\n ? `reltio-dq-dashboard-chart-${type}-${dataLevel}`\n : `reltio-dq-dashboard-chart-time-series-${type}-${dataLevel}`;\n\n return (\n <BasicView className={styles.view} data-reltio-id={dataReltioId}>\n {children}\n </BasicView>\n );\n};\n\nexport default DQLayoutItemView;\n","import {always, converge, curry, identity, pipe, propOr, map, reduce, sortBy, toPairs, when} from 'ramda';\nimport {\n getChartItemColor,\n FillRateState,\n DQChartsData,\n FillRateData,\n FilterOptions,\n TimeSeriesData\n} from '@reltio/mdm-sdk';\nimport {ChartData} from '@reltio/components';\nimport {getSearchState, localizeChartValues, isEmptyData} from './charts';\nimport i18n from 'ui-i18n';\n\nconst FillRateChartColors = {\n [FillRateState.MISSING]: '#CE5C00',\n [FillRateState.EXISTS]: '#C4CE00'\n};\n\nexport const getFillRateColorByState = (state: FillRateState) => FillRateChartColors[state] || getChartItemColor(state);\n\nexport const getFillRateColors: (chartsData: ChartData[]) => string[] = map(({group}) =>\n getFillRateColorByState(group)\n);\n\nexport const getLabelFromState = (state: FillRateState) => {\n const FillRateStateLabels = {\n [FillRateState.MISSING]: i18n.text('Missing'),\n [FillRateState.EXISTS]: i18n.text('Exists')\n };\n\n return FillRateStateLabels[state] || state;\n};\n\nconst getFillRateStateIndexFromData = (data: ChartData) =>\n Object.values(FillRateState).indexOf(data.group as FillRateState);\n\ntype FormatFillRateDataFn = (fillRateData: FillRateData) => ChartData[];\nexport const formatFillRateData = pipe(\n Object.entries,\n map(([state, value]) => ({label: getLabelFromState(state), group: state, value})),\n sortBy(getFillRateStateIndexFromData),\n localizeChartValues\n) as FormatFillRateDataFn;\n\ntype FillRateStatistic = {\n statistic: Record<string, DQChartsData>;\n};\nexport const formatFillRatesData: (fillRates: FillRateStatistic) => Record<string, ChartData[]> = pipe(\n propOr({}, 'statistic'),\n toPairs,\n reduce((result, [key, value]) => {\n if (value?.fillRate) result[key] = formatFillRateData(value.fillRate);\n return result;\n }, {})\n);\n\ntype GetFillRateDataFn = (chartsData: DQChartsData | TimeSeriesData) => FillRateData;\nexport const getFillRateData: GetFillRateDataFn = propOr({}, 'fillRate');\n\ntype GetFillRateChartDataFn = (\n chartsData: DQChartsData\n) => {\n chartData: ChartData[];\n colors: string[];\n};\nexport const getFillRateChartData: GetFillRateChartDataFn = pipe(\n getFillRateData,\n formatFillRateData,\n when(isEmptyData, always([])),\n converge(\n (chartData: ChartData, colors: string[]) => ({\n chartData,\n colors\n }),\n [identity, getFillRateColors]\n )\n);\n\nconst getFillRateFilter = curry(({fieldName}: {fieldName: string}, state: FillRateState) => [\n {\n filter: state === FillRateState.EXISTS ? FilterOptions.EXISTS : FilterOptions.MISSING_VALUE,\n fieldName\n }\n]);\nexport const getFillRateSearchState = getSearchState(getFillRateFilter);\n","import {useContext, useMemo} from 'react';\nimport {DQChartsData} from '@reltio/mdm-sdk';\nimport {RequestStates} from '@reltio/components';\nimport {ChartsDataContext} from '../contexts/ChartsDataContext';\n\nexport type ChartsDataWithState = {\n data: DQChartsData;\n state: RequestStates;\n reload: () => void;\n};\nexport const useChartData = <T>(getChartData: (chartsData: DQChartsData) => T) => {\n const {data: chartsData, state, reload} = useContext<ChartsDataWithState>(ChartsDataContext);\n const data = useMemo(() => getChartData(chartsData), [chartsData, getChartData]);\n\n const result = useMemo(() => ({data, state, reload}), [data, state, reload]);\n return result;\n};\n","import {AdditionalFilterOptionsValues, FilterOptions, SearchState} from '@reltio/mdm-sdk';\nimport {getAdvancedSearchFilter} from './advancedFilters';\n\nexport const RawFilterFields = {\n DAY_OF_WEEK: 'day_of_week',\n DAY_OF_MONTH: 'day_of_month',\n MONTH: 'month',\n LENGTH: 'length',\n CROSSWALK_SOURCES: 'crosswalk_sources',\n PATTERN: 'pattern'\n};\n\ntype GetRawFilterSearchState = {\n keyword: string;\n entityTypeUri: string;\n};\nconst getRawFilterSearchState = ({keyword, entityTypeUri}: GetRawFilterSearchState): SearchState => ({\n keyword: {\n value: keyword,\n isRawFilter: true\n },\n advanced: [getAdvancedSearchFilter(entityTypeUri)],\n searchOptions: {\n searchByOv: false,\n ovOnly: false\n },\n version: '2.0'\n});\ntype GetRangeRawFilterSearchState = {\n fieldName: string;\n startRange: string;\n endRange: string;\n entityTypeUri: string;\n};\n\nexport const getExcludedEntityTypesRawFilter = (entityTypesUris: string[] = []) =>\n entityTypesUris.length > 0\n ? `(${AdditionalFilterOptionsValues.NOT_LIST_EQUALS}(type, ${entityTypesUris.join(',')}))`\n : '';\n\nexport const getRangeRawFilterSearchState = ({\n fieldName,\n startRange,\n endRange,\n entityTypeUri\n}: GetRangeRawFilterSearchState): SearchState =>\n getRawFilterSearchState({\n keyword: `${FilterOptions.IN_RANGE}(${fieldName}, ${startRange}, ${endRange})`,\n entityTypeUri\n });\n\ntype GetEqualsRawFilterSearchState = {\n fieldName: string;\n value: string;\n entityTypeUri: string;\n};\nexport const getEqualsRawFilterSearchState = ({\n fieldName,\n value,\n entityTypeUri\n}: GetEqualsRawFilterSearchState): SearchState =>\n getRawFilterSearchState({\n keyword: `${FilterOptions.EQUALS}(${fieldName}, ${value})`,\n entityTypeUri\n });\n\ntype GetGtRawFilterSearchState = {\n fieldName: string;\n value: string;\n entityTypeUri: string;\n};\n\nexport const getGtRawFilterSearchState = ({fieldName, value, entityTypeUri}: GetGtRawFilterSearchState): SearchState =>\n getRawFilterSearchState({\n keyword: `${FilterOptions.GT}(${fieldName},${value})`,\n entityTypeUri\n });\n","import {useContext} from 'react';\nimport {assoc, curry, pipe} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {getDescendantEntityTypes, Metadata, SearchState} from '@reltio/mdm-sdk';\nimport {DetailedAttributeTypeContext} from '../contexts/DetailedAttributeTypeContext';\nimport {EntityTypeContext} from '../contexts/EntityTypeContext';\nimport {getExcludedEntityTypesRawFilter} from '../services/rawFilters';\nimport type {DetailedAttributeType} from '../types/DetailedAttributeType';\nimport type {GetSearchStateProps} from '../types/GetSearchStateProps';\n\nconst excludeDescendantEntityTypes = curry((metadata: Metadata, entityTypeUri: string, searchState: SearchState) => {\n const descendantEntityTypes: string[] = getDescendantEntityTypes(metadata, entityTypeUri);\n const entityTypesFilter = getExcludedEntityTypesRawFilter(descendantEntityTypes);\n const currentRawFilter = searchState?.keyword?.value;\n if (entityTypesFilter) {\n const newRawFilter = currentRawFilter ? `(${currentRawFilter}) and ${entityTypesFilter}` : entityTypesFilter;\n return assoc(\n 'keyword',\n {\n value: newRawFilter,\n isRawFilter: true\n },\n searchState\n );\n } else return searchState;\n});\n\ntype GetSearchStateFn = (props: GetSearchStateProps) => (group?: string) => SearchState;\nexport const useSearchRedirect = (getSearchState: GetSearchStateFn): ((group?: string) => void) => {\n const dispatch = useDispatch();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const detailedAttributeType: DetailedAttributeType = useContext(DetailedAttributeTypeContext);\n const entityType = useContext(EntityTypeContext);\n\n return pipe(\n getSearchState({detailedAttributeType, entityTypeUri: entityType.uri}),\n excludeDescendantEntityTypes(metadata, entityType.uri),\n ui.actions.openSearch,\n dispatch\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n container: ({height}: {height: number}) => ({\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n color: 'rgba(0, 0, 0, 0.54)',\n margin: '0 auto',\n paddingBottom: height > 239 ? '30px' : 0,\n boxSizing: 'border-box'\n }),\n small: {\n '& $icon': {\n maxHeight: '88px'\n },\n '& $message': {\n fontSize: '12px'\n },\n '& $title': {\n fontSize: '13px',\n fontWeight: 400,\n marginBottom: 0\n },\n '& $refreshButton': {\n marginTop: '2px',\n padding: 0\n }\n },\n medium: {\n '& $icon': {\n maxHeight: '190px',\n marginBottom: '24px'\n }\n },\n large: {\n '& $icon': {\n height: '256px',\n width: '256px',\n marginBottom: '24px'\n }\n },\n icon: ({height}: {height: number}) => ({\n paddingTop: 0,\n marginBottom: height > 170 ? '16px' : '4px'\n }),\n message: {\n padding: '0 24px',\n fontSize: '14px',\n textAlign: 'center',\n whiteSpace: 'pre-wrap'\n },\n title: {\n padding: '0 24px',\n fontSize: '20px',\n textAlign: 'center',\n color: 'rgba(0,0,0,0.87)',\n fontWeight: 500,\n marginBottom: '8px'\n },\n refreshButton: {\n color: theme.palette.primary.main,\n marginTop: '12px',\n padding: '6px 8px'\n },\n refreshIcon: {\n width: '24px',\n height: '24px'\n }\n}));\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport ReplayIcon from '@material-ui/icons/Replay';\nimport {ErrorData} from '../../types/ErrorData';\nimport {EMPTY_STATE_ICONS} from '@reltio/components';\nimport {EmptyStateVariants} from '../../types/EmptyStateVariants';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n errorData?: ErrorData;\n onRefresh?: () => void;\n height?: number;\n variant?: EmptyStateVariants;\n};\n\nconst defaultIcon = EMPTY_STATE_ICONS.ERROR;\n\nconst DQDashboardError = ({onRefresh, height, errorData = {}, variant = EmptyStateVariants.SMALL}: Props) => {\n const {Icon = defaultIcon, message, title} = errorData;\n const styles = useStyles({height});\n return (\n <div className={classnames(styles.container, styles[`${variant}`])}>\n <Icon className={styles.icon} />\n {title && <Typography className={styles.title}>{title}</Typography>}\n {message && <Typography className={styles.message}>{message}</Typography>}\n {!!onRefresh && (\n <Button\n className={styles.refreshButton}\n startIcon={<ReplayIcon color=\"primary\" className={styles.refreshIcon} />}\n onClick={onRefresh}\n data-reltio-id=\"reltio-dq-dashboard-chart-refresh-button\"\n >\n <Typography variant=\"button\">{i18n.text('Refresh')}</Typography>\n </Button>\n )}\n </div>\n );\n};\n\nexport default DQDashboardError;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n container: ({height}: {height: number}) => ({\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n color: 'rgba(0, 0, 0, 0.54)',\n margin: '0 auto',\n paddingBottom: height > 239 ? '30px' : 0,\n boxSizing: 'border-box'\n }),\n small: {\n '& $icon': {\n maxHeight: '88px'\n },\n '& $message': {\n fontSize: '12px'\n },\n '& $title': {\n fontSize: '13px',\n fontWeight: 400,\n marginBottom: 0\n }\n },\n medium: {\n '& $icon': {\n maxHeight: '190px',\n marginBottom: '24px'\n }\n },\n large: {\n '& $icon': {\n maxHeight: '256px',\n marginBottom: '24px'\n }\n },\n icon: ({height}: {height: number}) => ({\n paddingTop: 0,\n marginBottom: height > 170 ? '16px' : '4px'\n }),\n message: {\n padding: '0 24px',\n fontSize: '14px',\n textAlign: 'center',\n whiteSpace: 'pre-wrap'\n },\n title: {\n padding: '0 24px',\n fontSize: '20px',\n textAlign: 'center',\n color: 'rgba(0,0,0,0.87)',\n fontWeight: 500,\n marginBottom: '8px',\n whiteSpace: 'pre-wrap'\n }\n});\n","import React from 'react';\nimport {Typography as Typography} from '@material-ui/core';\nimport {ErrorData} from '../../types/ErrorData';\nimport {EMPTY_STATE_ICONS} from '@reltio/components';\nimport {EmptyStateVariants} from '../../types/EmptyStateVariants';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\ntype Props = {\n data?: ErrorData;\n height?: number;\n variant?: EmptyStateVariants;\n};\n\nconst defaultIcon = EMPTY_STATE_ICONS.NO_DATA;\n\nconst DQDashboardNoData = ({height, data = {}, variant = EmptyStateVariants.SMALL}: Props) => {\n const {Icon = defaultIcon, message, title} = data;\n const styles = useStyles({height});\n return (\n <div className={classnames(styles.container, styles[`${variant}`])}>\n <Icon className={styles.icon} />\n {title && <Typography className={styles.title}>{title}</Typography>}\n {message && <Typography className={styles.message}>{message}</Typography>}\n </div>\n );\n};\n\nexport default DQDashboardNoData;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n viewContent: {\n height: '100%',\n overflow: 'hidden',\n position: 'relative',\n padding: '0 16px 10px'\n }\n}));\n","import classnames from 'classnames';\nimport React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport i18n from 'ui-i18n';\nimport {BasicViewContent, ErrorBoundary, EMPTY_STATE_ICONS, RequestStates} from '@reltio/components';\nimport {DashboardLinearLoader} from '@reltio/dashboard';\nimport DQDashboardError from '../DQDashboardError/DQDashboardError';\nimport DQDashboardNoData from '../DQDashboardNoData/DQDashboardNoData';\nimport {EmptyStateVariants} from '../../types/EmptyStateVariants';\nimport {useStyles} from './styles';\n\ntype ChildrenProps<T> = {data: T[]; width: number; height: number};\n\ntype Props<T> = {\n loadingState: RequestStates;\n children: (props: ChildrenProps<T>) => React.ReactNode;\n onRefresh: () => void;\n data: T[];\n className?: string;\n errorData?: {\n icon?: JSX.Element;\n message?: React.ReactNode;\n title?: React.ReactNode;\n };\n};\n\nconst DQLayoutItemContent = <T extends unknown>({loadingState, onRefresh, children, data, className}: Props<T>) => {\n const styles = useStyles();\n const renderContent = ({width, height}: {width: number; height: number}) => {\n switch (loadingState) {\n case RequestStates.LOADED:\n if (!data || data.length === 0) {\n return (\n <DQDashboardNoData\n height={height}\n data={{\n Icon: EMPTY_STATE_ICONS.NO_DATA,\n message: i18n.text(\n 'Go ahead and load some data. We’ll put it on the scales and let you know here if it measures up.'\n ),\n title: i18n.text('Give us something to go on!')\n }}\n variant={EmptyStateVariants.SMALL}\n />\n );\n }\n return (\n <ErrorBoundary\n error={\n <DQDashboardError\n errorData={{message: i18n.text('Something went wrong')}}\n height={height}\n variant={EmptyStateVariants.SMALL}\n />\n }\n >\n {children({data, width, height})}\n </ErrorBoundary>\n );\n case RequestStates.LOADING:\n return <DashboardLinearLoader />;\n case RequestStates.ERROR:\n return (\n <DQDashboardError\n errorData={{\n Icon: EMPTY_STATE_ICONS.ERROR,\n message: i18n.text('No need to fret - just refresh and it will work itself out.'),\n title: i18n.text('Oops! We ran into a problem.')\n }}\n height={height}\n onRefresh={onRefresh}\n variant={EmptyStateVariants.SMALL}\n />\n );\n default:\n return <div>Loading...</div>;\n }\n };\n\n return (\n <BasicViewContent className={classnames(styles.viewContent, className)}>\n <ReactResizeDetector refreshMode=\"debounce\" refreshRate={100} handleWidth handleHeight>\n {renderContent}\n </ReactResizeDetector>\n </BasicViewContent>\n );\n};\n\nexport default DQLayoutItemContent;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n legendLabel: {\n fontSize: '13px',\n lineHeight: '18px',\n color: 'rgba(0, 0, 0, 0.54)',\n paddingRight: '8px'\n },\n legendValue: {\n fontSize: '13px',\n lineHeight: '18px',\n color: 'rgba(0, 0, 0, 0.87)'\n },\n legend: {\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n margin: 'auto',\n flexWrap: 'wrap',\n flexDirection: 'column',\n marginBottom: 2\n },\n item: {\n display: 'flex',\n alignItems: 'center',\n height: 19\n },\n itemColor: {\n width: 12,\n height: 12,\n marginRight: 9,\n flexShrink: 0\n }\n});\n","import React from 'react';\nimport {LegendProps} from 'recharts';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst CustomLegend = ({payload}: LegendProps) => {\n const styles = useStyles();\n return (\n <div className={classnames(styles.legend)}>\n {payload.map((item) => (\n <div key={item.id} className={styles.item}>\n <div style={{background: item.color}} className={styles.itemColor} />\n {item.value}\n </div>\n ))}\n </div>\n );\n};\n\nexport default CustomLegend;\n","import React from 'react';\nimport {Legend, LegendProps} from 'recharts';\n\nimport {ChartData, withPercents} from '@reltio/components';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\n\nimport {getPercentLabel} from '../../services/charts';\n\nimport CustomLegend from './CustomLegend';\n\nimport {useStyles} from './styles';\n\ntype StackedHorizontalBarData = ChartData & {dataReltioId?: string};\n\ntype Props = LegendProps & {\n data: StackedHorizontalBarData[];\n colors: string[];\n};\n\nconst ChartLegends = ({data, colors, ...legendProps}: Props) => {\n const styles = useStyles();\n return (\n <Legend\n layout=\"vertical\"\n align=\"left\"\n verticalAlign=\"bottom\"\n wrapperStyle={{\n display: 'flex',\n overflowY: 'auto',\n maxHeight: '100%',\n maxWidth: '100%'\n }}\n content={<CustomLegend />}\n payload={(data || []).map(({group, label, value, percent}, index) => ({\n id: group,\n type: 'square',\n color: colors[index],\n value: (\n <>\n <span className={styles.legendLabel}>{label}</span>\n <span className={styles.legendValue}>\n {`${formatNumberAsMetric(value, 999)} ${getPercentLabel(percent)}`}\n </span>\n </>\n )\n }))}\n {...legendProps}\n />\n );\n};\n\nexport default withPercents(ChartLegends);\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst BarAxis = {\n content: '\"\"',\n position: 'absolute',\n background: 'rgba(0, 0, 0, 0.38)',\n width: '1px',\n height: '4px',\n bottom: '-4px',\n left: 0\n};\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%'\n },\n stackedBar: {\n width: '100%',\n display: 'flex',\n flexWrap: 'nowrap',\n marginTop: '13px',\n position: 'relative',\n '&:before': BarAxis,\n '&:after': {\n ...BarAxis,\n right: 0,\n left: 'initial'\n }\n },\n bar: {\n height: '24px',\n flexGrow: 1,\n position: 'relative',\n width: '50%',\n transition: 'width 0.7s',\n '&:hover': {\n '&:after': {\n content: '\"\"',\n background: 'rgba(0, 0, 0, 0.1)'\n }\n },\n '&:after': {\n position: 'absolute',\n top: '-3px',\n bottom: '-4px',\n left: '-3px',\n right: '-3px',\n transition: 'background 0.3s',\n zIndex: 1,\n pointerEvents: 'none'\n }\n },\n inactivePart: {\n background: '#EFEFEF'\n },\n tooltipTitle: {\n fontSize: '11px'\n },\n tooltipFillRate: {\n marginTop: '4px'\n },\n tooltip: {\n background: '#fff',\n filter:\n 'drop-shadow(0px 4px 5px rgba(0, 0, 0, 0.14)) drop-shadow(0px 1px 10px rgba(0, 0, 0, 0.12)) drop-shadow(0px 2px 4px rgba(0, 0, 0, 0.2))',\n padding: '5px 8px'\n },\n legendWrapper: {\n position: 'relative',\n flexGrow: 1\n },\n legendLabel: {\n fontSize: '13px',\n lineHeight: '18px',\n color: 'rgba(0, 0, 0, 0.54)',\n paddingRight: '8px'\n },\n legendValue: {\n fontSize: '13px',\n lineHeight: '18px',\n color: 'rgba(0, 0, 0, 0.87)'\n },\n clickable: {\n cursor: 'pointer'\n },\n rangeWrapper: {\n display: 'flex',\n justifyContent: 'space-between',\n marginTop: '4px'\n },\n rangeValue: {\n color: 'rgba(0, 0, 0, 0.54)',\n fontSize: '12px'\n }\n});\n","import React, {forwardRef} from 'react';\nimport classnames from 'classnames';\nimport {useStyles} from './styles';\n\nconst Bar = forwardRef(\n ({className, ...props}: React.HTMLAttributes<HTMLDivElement>, ref: React.RefObject<HTMLDivElement>) => {\n const styles = useStyles();\n return <div className={classnames(styles.bar, className)} {...props} ref={ref} />;\n }\n);\nBar.displayName = 'Bar';\n\nexport default Bar;\n","import {pluck, sum, pipe} from 'ramda';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport i18n from 'ui-i18n';\nimport {ChartData, withPercents, withTooltip} from '@reltio/components';\n\nimport {getBarWidthStyle, getPercentLabel} from '../../services/charts';\n\nimport ChartDataTooltip from '../ChartDataTooltip/ChartDataTooltip';\nimport ChartLegends from '../ChartLegends/ChartLegends';\nimport Bar from './Bar';\n\nimport {useStyles} from './styles';\n\nconst BarWithTooltip = withTooltip(Bar);\n\nconst getTooltipData = ({label, value, percent}: ChartData) => [\n {\n label,\n value: `${i18n.number(value)} ${getPercentLabel(percent)}`\n }\n];\n\ntype StackedHorizontalBarData = ChartData & {dataReltioId?: string};\n\ntype Props = {\n data: StackedHorizontalBarData[];\n colors: string[];\n onItemClick?: (group: string) => void;\n classes?: Partial<Record<'bar' | 'stackedBar', string>>;\n};\n\nconst StackedHorizontalBarChart = ({data, colors, classes = {}, onItemClick}: Props) => {\n const styles = useStyles();\n const onBarClick = onItemClick && ((group: string) => onItemClick(group));\n const clickable = !!onItemClick;\n const maxValue = pipe(pluck('value'), sum)(data);\n return (\n <div className={styles.root}>\n <div className={classnames(styles.stackedBar, classes.stackedBar)}>\n {data.map((chartData: StackedHorizontalBarData, index: number) => (\n <BarWithTooltip\n className={classnames(classes.bar, clickable && styles.clickable)}\n key={chartData.label}\n tooltipTitle={<ChartDataTooltip data={getTooltipData(chartData)} />}\n style={{...getBarWidthStyle(chartData), background: colors[index]}}\n onClick={() => onBarClick && onBarClick(chartData.group)}\n data-reltio-id={chartData.dataReltioId}\n />\n ))}\n </div>\n <div className={styles.rangeWrapper}>\n <span className={styles.rangeValue}>0</span>\n <span className={styles.rangeValue}>{i18n.number(maxValue)}</span>\n </div>\n <div className={styles.legendWrapper}>\n <ChartLegends data={data} colors={colors} />\n </div>\n </div>\n );\n};\n\nexport default withPercents(StackedHorizontalBarChart);\n","import React from 'react';\n\nimport {getFillRateChartData, getFillRateSearchState} from '../../../services/fillRate';\nimport {useChartData} from '../../../hooks/useChartData';\nimport {useSearchRedirect} from '../../../hooks/useSearchRedirect';\n\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport StackedHorizontalBarChart from '../../../components/StackedHorizontalBarChart/StackedHorizontalBarChart';\n\nconst FillRateChart = () => {\n const {data, state, reload} = useChartData(getFillRateChartData);\n const {chartData, colors} = data;\n const searchProfiles = useSearchRedirect(getFillRateSearchState);\n\n return (\n <DQLayoutItemContent data={chartData} loadingState={state} onRefresh={reload}>\n {({data}) => <StackedHorizontalBarChart data={data} colors={colors} onItemClick={searchProfiles} />}\n </DQLayoutItemContent>\n );\n};\n\nexport default FillRateChart;\n","import {useCallback, useEffect, useMemo, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {pathOr, pipe} from 'ramda';\n\nimport {RequestStates, useSafePromise} from '@reltio/components';\nimport {DQDataLevel, TimeSeriesMetric, getMlDqData, TimeSeriesData} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport {TimeRange} from '../types/TimeRange';\nimport {getTimeRangeDates} from '../services/mlDq';\nimport {useRefreshAction} from '../contexts/ReloadFacetContext';\n\ntype useMlDqDataRequestProps = {\n entityTypeUri: string;\n attributeFieldName: string;\n timeRange?: TimeRange;\n dataLevel?: DQDataLevel;\n metrics?: TimeSeriesMetric[];\n};\n\nexport const useMlDqDataRequest = ({\n entityTypeUri,\n attributeFieldName,\n timeRange = TimeRange.TODAY,\n dataLevel = DQDataLevel.ATTRIBUTE_TYPE,\n metrics\n}: useMlDqDataRequestProps) => {\n const [requestState, setRequestState] = useState<RequestStates>(RequestStates.INIT);\n const [timeSeriesData, setTimeSeriesData] = useState<TimeSeriesData[]>(null);\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n const mlDqPath: string = useSelector(mdmModule.selectors.getMlDqPath);\n const safePromise = useSafePromise();\n\n const onError = (error) => {\n console.error(error); // eslint-disable-line\n setRequestState(RequestStates.ERROR);\n setTimeSeriesData(null);\n };\n\n const onRequestFinished = (data: TimeSeriesData[]) => {\n setTimeSeriesData(data);\n setRequestState(RequestStates.LOADED);\n };\n\n const loadChartsData = useCallback(() => {\n if (!entityTypeUri) return;\n setRequestState(RequestStates.LOADING);\n setTimeSeriesData(null);\n\n const {startDate, endDate} = getTimeRangeDates(timeRange);\n safePromise(\n getMlDqData({\n mlDqPath,\n tenant,\n entityTypeUri,\n attribute: attributeFieldName,\n dataLevel,\n metrics,\n startDate,\n endDate\n })\n )\n .then(pipe(pathOr({}, ['data', attributeFieldName, 'timeSeries']), onRequestFinished))\n .catch(onError);\n }, [attributeFieldName, entityTypeUri, timeRange, dataLevel, metrics, tenant]);\n\n const refreshAction = useRefreshAction({\n action: loadChartsData,\n dataLevel\n });\n\n useEffect(() => {\n refreshAction();\n }, [refreshAction]);\n\n const chartsDataResult = useMemo(() => ({data: timeSeriesData, state: requestState, reload: refreshAction}), [\n timeSeriesData,\n requestState,\n refreshAction\n ]);\n\n return chartsDataResult;\n};\n","import {\n always,\n applySpec,\n ascend,\n assoc,\n cond,\n curry,\n filter,\n head,\n identity,\n map,\n pathOr,\n pipe,\n prop,\n propOr,\n split,\n converge,\n concat,\n propEq,\n omit,\n sort,\n descend\n} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {ChartData} from '@reltio/components';\nimport {\n DQChartsData,\n ConsolidationRateData,\n FilterOptions,\n isDateType,\n formatNumberAsMetric,\n Metadata,\n formatDataTypeValue\n} from '@reltio/mdm-sdk';\nimport {InfoPanelData} from '../types/InfoPanelData';\nimport {getSearchState, localizeChartValues} from './charts';\nimport {isFloatingType} from './attributes';\nimport {getEqualsRawFilterSearchState, getRangeRawFilterSearchState, RawFilterFields} from './rawFilters';\nimport {GetSearchStateProps} from '../types/GetSearchStateProps';\nimport {enrichChartDataWithSourceLabel} from '../services/charts';\n\nenum DAYS_OF_WEEK {\n sun,\n mon,\n tue,\n wed,\n thu,\n fri,\n sat\n}\n\nenum MONTHS {\n jan,\n feb,\n mar,\n apr,\n may,\n jun,\n jul,\n aug,\n sep,\n oct,\n nov,\n dec\n}\n\ntype GetFormattedDataForBarChartFn = (chartType: string) => (chartsData: DQChartsData) => ChartData[];\nconst getFormattedDataForBarChart: GetFormattedDataForBarChartFn = (chartType: string) =>\n pipe(\n pathOr({}, [chartType, 'data']),\n Object.entries,\n map(([item, value]) => ({label: item, group: item, value})),\n localizeChartValues\n );\n\nconst RELTIO_PROFILES = 'Reltio profiles';\nconst SOURCE_PROFILES = 'Source profiles';\n\nexport const getConsolidationRateChartData = pipe(\n pathOr({}, ['consolidationRate']),\n converge(concat, [\n pipe(prop('totalCrosswalksBySource'), omit(['ReltioCleanser']), (data) => [\n {...data, label: SOURCE_PROFILES, group: SOURCE_PROFILES}\n ]),\n pipe(prop('totalEntities'), (value) => [\n assoc(RELTIO_PROFILES, value, {label: RELTIO_PROFILES, group: RELTIO_PROFILES})\n ])\n ])\n);\n\nexport const getConsolidationRateTableData = (metadata: Metadata) =>\n pipe(\n pathOr({}, ['consolidationRate']),\n (consolidationRate: ConsolidationRateData) => {\n return Object.keys(consolidationRate?.totalCrosswalksBySource || []).reduce((data, crosswalk) => {\n return crosswalk !== 'ReltioCleanser'\n ? data.concat({\n label: crosswalk,\n group: crosswalk,\n value: consolidationRate.totalCrosswalksBySource[crosswalk]\n })\n : data;\n }, []);\n },\n enrichChartDataWithSourceLabel(metadata),\n sort(descend(prop('value')))\n );\n\nenum InfoPanelProperties {\n AVERAGE = 'avg',\n MININMUN = 'min',\n MAXIMUM = 'max',\n MEDIAN = 'median',\n NUMBER_OF_SOURCES = 'numberOfSources',\n MIN_NUMBER_OF_PROFILES = 'minNumberOfProfiles',\n MAX_NUMBER_OF_PROFILES = 'maxNumberOfProfiles',\n AVG_NUMBER_OF_PROFILES = 'avgNumberOfProfiles'\n}\n\nconst getLabelForInfoPanel = (propName: string, chartType: string) => {\n const Properties = {\n lengthStatistics: {\n [InfoPanelProperties.MEDIAN]: i18n.text('Median'),\n [InfoPanelProperties.AVERAGE]: i18n.text('Average'),\n [InfoPanelProperties.MININMUN]: i18n.text('Minimum'),\n [InfoPanelProperties.MAXIMUM]: i18n.text('Maximum')\n },\n valueDistribution: {\n [InfoPanelProperties.MEDIAN]: i18n.text('Median'),\n [InfoPanelProperties.AVERAGE]: i18n.text('Average'),\n [InfoPanelProperties.MININMUN]: i18n.text('Minimum'),\n [InfoPanelProperties.MAXIMUM]: i18n.text('Maximum')\n },\n crosswalkAnalysis: {\n [InfoPanelProperties.NUMBER_OF_SOURCES]: i18n.text('No. of source systems'),\n [InfoPanelProperties.AVG_NUMBER_OF_PROFILES]: i18n.text('Avg no. of profiles'),\n [InfoPanelProperties.MIN_NUMBER_OF_PROFILES]: i18n.text('Min no. of profiles'),\n [InfoPanelProperties.MAX_NUMBER_OF_PROFILES]: i18n.text('Max no. of profiles')\n }\n };\n\n return pathOr(null, [chartType, propName], Properties);\n};\n\ntype GetInfoPanelDataForBarChartFn = (chartType: string) => (chartsData: DQChartsData) => InfoPanelData[];\nconst getInfoPanelDataForBarChart: GetInfoPanelDataForBarChartFn = (chartType: string) =>\n pipe(\n propOr({}, chartType),\n Object.entries,\n map(([name, value]) => ({label: getLabelForInfoPanel(name, chartType), value})),\n filter(({label}) => label),\n localizeChartValues\n );\n\nconst getDataForBarChart = (chartType: string) => (chartsData: DQChartsData) => ({\n chartData: getFormattedDataForBarChart(chartType)(chartsData),\n infoPanelData: getInfoPanelDataForBarChart(chartType)(chartsData)\n});\n\nconst addIntervalBrackets = (label: string, attributeType: string, isLastItem: boolean) =>\n isFloatingType(attributeType) ? `[${label}${isLastItem ? ']' : ')'}` : label;\n\nconst getChartValueLabel = (value: number, attributeType: string) =>\n isDateType(attributeType)\n ? formatDataTypeValue({dataTypeDefinition: {type: attributeType}}, Number(value))\n : i18n.number(value);\n\nexport const convertDataWithInterval = curry(\n (\n attributeType: string,\n data: {chartData: ChartData[]; infoPanelData: InfoPanelData[]}\n ): {chartData: ChartData[]; infoPanelData: InfoPanelData[]} => {\n const getStartRangeFromChartData = pipe(prop('group'), split(' '), head, Number);\n const chartDataWithRange = data.chartData.sort(ascend(getStartRangeFromChartData)).map((dataItem, index) => {\n const [startRange, endRange = startRange] = dataItem.group.split(' ').map(Number);\n const isLastItem = index === data.chartData.length - 1;\n const label =\n startRange !== endRange\n ? addIntervalBrackets(\n `${getChartValueLabel(startRange, attributeType)} - ${getChartValueLabel(\n endRange,\n attributeType\n )}`,\n attributeType,\n isLastItem\n )\n : getChartValueLabel(startRange, attributeType);\n return {\n ...dataItem,\n label,\n group: [startRange, endRange, isLastItem ? 'last' : ''].toString()\n };\n });\n\n const infoPanelDataWithConvertedValue = data.infoPanelData.map((dataItem) => {\n const value = isDateType(attributeType)\n ? formatDataTypeValue({dataTypeDefinition: {type: attributeType}}, Number(dataItem.value))\n : formatNumberAsMetric(dataItem.value, 999);\n const localizedValue = isDateType(attributeType) ? value : dataItem.localizedValue;\n return {...dataItem, value, localizedValue};\n });\n return {infoPanelData: infoPanelDataWithConvertedValue, chartData: chartDataWithRange};\n }\n);\n\ntype GetChartDataWithInfoPanelData = (\n chartsData: DQChartsData\n) => {\n chartData: ChartData[];\n infoPanelData: InfoPanelData[];\n};\nexport const getLengthChartData: GetChartDataWithInfoPanelData = pipe(\n getDataForBarChart('lengthStatistics'),\n convertDataWithInterval('')\n);\n\nexport const getCrosswalkAnalysisData = (metadata: Metadata): GetChartDataWithInfoPanelData =>\n pipe(\n getDataForBarChart('crosswalkAnalysis'),\n applySpec({\n chartData: pipe(prop('chartData'), enrichChartDataWithSourceLabel(metadata)),\n infoPanelData: pipe(\n prop('infoPanelData'),\n map((dataItem: InfoPanelData) => assoc('value', formatNumberAsMetric(dataItem.value, 999), dataItem))\n )\n })\n );\n\nexport const getValueDistributionData = (attributeType: string): GetChartDataWithInfoPanelData =>\n pipe(getDataForBarChart('valueDistribution'), convertDataWithInterval(attributeType));\nexport const getMonthDistributionData = getDataForBarChart('monthDistribution');\nexport const getDayOfWeekDistributionData = getDataForBarChart('dayOfWeekDistribution');\nexport const getDayOfMonthDistributionData = getDataForBarChart('dayOfMonthDistribution');\n\nexport const getDayOfweekDistributionSearchState = curry(\n ({detailedAttributeType, entityTypeUri}: GetSearchStateProps, dayOfWeek: string) =>\n getEqualsRawFilterSearchState({\n fieldName: `${detailedAttributeType.fieldName}.${RawFilterFields.DAY_OF_WEEK}`,\n value: DAYS_OF_WEEK[dayOfWeek.toLowerCase()],\n entityTypeUri\n })\n);\n\nexport const getMonthDistributionSearchState = curry(\n ({detailedAttributeType, entityTypeUri}: GetSearchStateProps, month: string) =>\n getEqualsRawFilterSearchState({\n fieldName: `${detailedAttributeType.fieldName}.${RawFilterFields.MONTH}`,\n value: MONTHS[month.toLowerCase()],\n entityTypeUri\n })\n);\n\nexport const getDayOfMonthDistributionSearchState = curry(\n ({detailedAttributeType, entityTypeUri}: GetSearchStateProps, dayOfMonth: string) =>\n getEqualsRawFilterSearchState({\n fieldName: `${detailedAttributeType.fieldName}.${RawFilterFields.DAY_OF_MONTH}`,\n value: dayOfMonth,\n entityTypeUri\n })\n);\n\nexport const getLengthStatisticsSearchState = curry(\n ({detailedAttributeType, entityTypeUri}: GetSearchStateProps, group: string) => {\n const [startRange, endRange] = group.split(',');\n return startRange === endRange\n ? getEqualsRawFilterSearchState({\n fieldName: `${detailedAttributeType.fieldName}.${RawFilterFields.LENGTH}`,\n value: startRange,\n entityTypeUri\n })\n : getRangeRawFilterSearchState({\n fieldName: `${detailedAttributeType.fieldName}.${RawFilterFields.LENGTH}`,\n startRange,\n endRange,\n entityTypeUri\n });\n }\n);\n\nexport const getCrosswalkAnalysisSearchState = curry(\n ({detailedAttributeType, entityTypeUri}: GetSearchStateProps, source: string) =>\n getEqualsRawFilterSearchState({\n fieldName: `${detailedAttributeType.fieldName}.${RawFilterFields.CROSSWALK_SOURCES}`,\n value: source,\n entityTypeUri\n })\n);\n\nconst getValueDistributionFilterForDate = curry(({fieldName}: {fieldName: string}, group: string) => {\n const [timestampStart, timestampEnd] = group.split(',');\n return [\n {\n filter: FilterOptions.AFTER,\n values: [timestampStart],\n fieldName\n },\n {\n filter: FilterOptions.BEFORE,\n values: [timestampEnd],\n fieldName\n }\n ];\n});\n\nconst getValueDistributionFilterForNumber = curry(({fieldName}: {fieldName: string}, group: string) => {\n const [startRange, endRange] = group.split(',');\n return [\n startRange === endRange\n ? {\n filter: FilterOptions.EQUALS,\n values: [[startRange]],\n fieldName\n }\n : {\n filter: FilterOptions.IN_RANGE,\n values: [[startRange, endRange]],\n fieldName\n }\n ];\n});\n\nconst getValueDistributionFilterForFloat = curry(({fieldName}: {fieldName: string}, group: string) => {\n const [startRange, endRange, lastItem] = group.split(',');\n\n const isSingleValue = startRange === endRange;\n\n const filter: {\n filter: string;\n values: string[][] | string[];\n fieldName: string;\n }[] = isSingleValue\n ? [\n {\n filter: FilterOptions.EQUALS,\n values: [[startRange]],\n fieldName\n }\n ]\n : [\n {\n filter: FilterOptions.IN_RANGE,\n values: [[startRange, endRange]],\n fieldName\n }\n ];\n !lastItem &&\n !isSingleValue &&\n filter.push({\n filter: FilterOptions.NOT_EQUALS,\n values: [[endRange]],\n fieldName\n });\n return filter;\n});\n\nexport const getValueDistributionSearchState = cond([\n [isDateType, always(getSearchState(getValueDistributionFilterForDate))],\n [isFloatingType, always(getSearchState(getValueDistributionFilterForFloat))],\n [identity, always(getSearchState(getValueDistributionFilterForNumber))]\n]);\n\nconst getConsolidationRateFilter = curry((_, source: string) =>\n source === RELTIO_PROFILES\n ? []\n : [\n {\n filter: FilterOptions.EQUALS,\n fieldName: 'sourceSystems',\n values: [[source]]\n }\n ]\n);\n\nexport const getConsolidationRateSearchState = getSearchState(getConsolidationRateFilter);\n\nexport const getBarOpacity = curry((selectedBar: {group: string; key: string}, key: string) => {\n return !selectedBar || propEq('key', key, selectedBar) || key === RELTIO_PROFILES ? 1 : 0.12;\n});\n\nexport const tickFormatter = (value: number) => {\n return value > 999 ? i18n.number(value, '0,0.0a').toUpperCase() : value;\n};\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {tooltip: Record<string, string | number>}) => ({\n tooltipWrapper: {\n ...theme.tooltip,\n padding: '4px 8px'\n }\n}));\n","import React, {useCallback, useState} from 'react';\nimport {\n CartesianGrid,\n Line,\n LineChart as LineChartWidget,\n Tooltip as ChartTooltip,\n XAxis,\n YAxis,\n TooltipProps,\n ReferenceLine,\n ReferenceArea\n} from 'recharts';\nimport {pluck, propEq} from 'ramda';\n\nimport {LineChartData} from '../../types/LineChartData';\n\nimport getLineChartSettings from './getLineChartSettings';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n data: LineChartData[];\n width: number;\n height: number;\n keys: string[];\n getTooltip?: (payload: TooltipProps) => React.ReactNode;\n getColor?: (key: string) => string;\n yAxisLabel?: string;\n};\n\nconst DEFAULT_LINE_COLOR = '#00439D';\ntype MouseEventProps = {\n activeLabel: string;\n activePayload: {value: number}[];\n isTooltipActive: boolean;\n};\n\nconst LineChart = ({data, width, height, getTooltip: getTooltipProp, getColor, keys, yAxisLabel}: Props) => {\n const styles = useStyles();\n const {cartesianGrid, tooltip, xAxis, yAxis, line, referenceLine, labelForY} = getLineChartSettings();\n\n const getTooltip = useCallback(\n (tooltipProps: TooltipProps) => <div className={styles.tooltipWrapper}>{getTooltipProp(tooltipProps)}</div>,\n [getTooltipProp]\n );\n const [selectedDots, setSelectedDots] = useState<{\n group: string;\n values: number[];\n }>();\n const getReferenceLineCoord = (selectedDots, data) => {\n const selectedDotsIndex = data.findIndex(propEq('label', selectedDots.group));\n const x1 = selectedDotsIndex === 0 ? data[0].label : data[selectedDotsIndex - 1].label;\n const x2 =\n selectedDotsIndex === data.length - 1 ? data[selectedDotsIndex].label : data[selectedDotsIndex + 1].label;\n return {x1, x2};\n };\n const handleMouseMove = (mouseEvent: MouseEventProps) => {\n if (mouseEvent.isTooltipActive) {\n setSelectedDots({\n group: mouseEvent.activeLabel,\n values: pluck('value', mouseEvent.activePayload)\n });\n } else setSelectedDots(undefined);\n };\n\n const handleMouseLeave = () => {\n setSelectedDots(undefined);\n };\n\n return (\n <LineChartWidget\n width={width}\n height={height}\n data={data}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n >\n {selectedDots && (\n <ReferenceLine\n {...referenceLine}\n segment={[\n {x: selectedDots.group, y: 0},\n {x: selectedDots.group, y: Math.max(...selectedDots.values)}\n ]}\n />\n )}\n {selectedDots &&\n selectedDots.values.map((value) => (\n <ReferenceLine\n key={value}\n {...referenceLine}\n segment={[\n {x: data[0].label, y: value},\n {x: selectedDots.group, y: value}\n ]}\n />\n ))}\n {selectedDots && selectedDots.values.every((value) => isNaN(value)) && (\n <ReferenceArea {...getReferenceLineCoord(selectedDots, data)} />\n )}\n <CartesianGrid {...cartesianGrid} />\n <XAxis {...xAxis} dataKey=\"label\" />\n <YAxis {...yAxis} label={{...labelForY, value: yAxisLabel}} />\n {keys.map((key: string) => (\n <Line {...line} key={key} dataKey={key} stroke={getColor ? getColor(key) : DEFAULT_LINE_COLOR} />\n ))}\n <ChartTooltip {...tooltip} content={getTooltip} cursor={null} />\n </LineChartWidget>\n );\n};\n\nexport default LineChart;\n","import {\n CartesianGridProps,\n LineProps,\n TooltipProps,\n XAxisProps,\n YAxisProps,\n ReferenceLineProps,\n LabelProps\n} from 'recharts';\nimport {tickFormatter} from '../../services/barCharts';\n\ntype LineChartSettings = {\n xAxis: XAxisProps;\n yAxis: YAxisProps;\n cartesianGrid: CartesianGridProps;\n tooltip: TooltipProps;\n line: LineProps;\n referenceLine: ReferenceLineProps;\n labelForY: LabelProps;\n};\n\nconst getLineChartSettings = (): LineChartSettings => {\n return {\n xAxis: {\n type: 'category',\n dataKey: 'term',\n tick: {\n fill: '#000',\n opacity: '0.54',\n fontSize: '10px'\n },\n angle: 0,\n textAnchor: 'middle',\n stroke: '#666',\n allowDuplicatedCategory: false\n },\n yAxis: {\n dataKey: '',\n type: 'number',\n tick: {\n fill: '#000',\n opacity: '0.54',\n width: undefined\n },\n stroke: '#666',\n tickFormatter: tickFormatter,\n tickCount: 5,\n width: 50\n },\n cartesianGrid: {\n strokeDasharray: '3 3',\n stroke: '#666',\n strokeOpacity: '0.4'\n },\n tooltip: {\n cursor: {\n fill: '#000',\n opacity: '0.1'\n }\n },\n line: {\n type: 'linear',\n dataKey: 'value',\n strokeWidth: 3,\n dot: null,\n activeDot: {r: 3}\n },\n referenceLine: {\n strokeDasharray: '3 3',\n stroke: '#000',\n isFront: true\n },\n labelForY: {\n angle: 270,\n position: 'left',\n offset: -3,\n style: {\n textAnchor: 'middle',\n fontSize: '8px',\n fill: 'rgba(0, 0, 0, 0.54)'\n }\n }\n };\n};\n\nexport default getLineChartSettings;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M10 16.667A6.676 6.676 0 013.333 10 6.676 6.676 0 0110 3.333 6.675 6.675 0 0116.667 10 6.675 6.675 0 0110 16.667zm0 1.666c4.6 0 8.333-3.733 8.333-8.333S14.6 1.667 10 1.667A8.336 8.336 0 001.667 10c0 4.6 3.733 8.333 8.333 8.333zM9.167 10v3.333h1.666V10h2.5L10 6.667 6.667 10h2.5z\",\n fill: \"#7BAB52\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M10 3.333A6.676 6.676 0 0116.667 10 6.675 6.675 0 0110 16.667 6.675 6.675 0 013.333 10 6.676 6.676 0 0110 3.333zm0-1.666A8.336 8.336 0 001.667 10c0 4.6 3.733 8.333 8.333 8.333S18.333 14.6 18.333 10 14.6 1.667 10 1.667zM10.833 10V6.667H9.167V10h-2.5L10 13.333 13.333 10h-2.5z\",\n fill: \"#FF1744\"\n})));","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n infoPanel: {\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n backgroundColor: 'rgba(0, 0, 0, 0.05)',\n margin: '0 0 2px',\n padding: '6px 12px 6px',\n color: theme.palette.text.secondary,\n fontSize: '13px',\n lineHeight: '20px'\n },\n info: {\n color: theme.palette.text.primary,\n fontSize: '14px'\n },\n dynamicInfo: {\n display: 'flex',\n alignItems: 'center'\n },\n dynamicInfoPositive: {\n color: '#5C922E'\n },\n dynamicInfoNegative: {\n color: '#FF1744'\n },\n percent: {\n fontWeight: 700,\n paddingRight: '4px'\n },\n dynamicIcon: {\n paddingRight: '4px'\n },\n period: {\n fontWeight: 'bold'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport {last, pipe, pluck, slice} from 'ramda';\n\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\n\nimport PositiveDynamicIcon from './positiveDynamic.svg';\nimport NegativeDynamicIcon from './negativeDynamic.svg';\nimport {TimeSeriesChartData} from '../../types/TimeSeriesChartData';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n dateLabel: string;\n infoLabel: string;\n percentKey: string;\n dataKey: string;\n chartData: TimeSeriesChartData[];\n};\n\nconst getDynamicPercent = (chartData: TimeSeriesChartData[], percentKey: string): number => {\n if (chartData.length < 2) return 0;\n\n return pipe(\n slice(-2, Infinity),\n pluck(percentKey),\n ([prevPercent, lastPercent]) => lastPercent - prevPercent\n )(chartData);\n};\n\nexport const TimeSeriesInfoPanel = ({dateLabel, infoLabel, percentKey, dataKey, chartData}: Props) => {\n const styles = useStyles();\n const lastChartData = last(chartData);\n\n const data = lastChartData[dataKey];\n const percent = lastChartData[percentKey];\n const dynamicPercent = getDynamicPercent(chartData, percentKey);\n const isPositiveDynamic = dynamicPercent > 0;\n return (\n <div className={styles.infoPanel}>\n <span className={styles.period}>{dateLabel}:</span>\n <span>{infoLabel}</span>\n <span className={styles.info}>\n <span className={styles.percent}>{percent}%</span>({formatNumberAsMetric(data, 999)})\n </span>\n <span\n className={classnames(styles.dynamicInfo, {\n [styles.dynamicInfoPositive]: isPositiveDynamic,\n [styles.dynamicInfoNegative]: !isPositiveDynamic\n })}\n >\n {dynamicPercent !== 0 && (\n <>\n {isPositiveDynamic ? (\n <PositiveDynamicIcon className={styles.dynamicIcon} />\n ) : (\n <NegativeDynamicIcon className={styles.dynamicIcon} />\n )}\n {Math.abs(dynamicPercent).toFixed(2)}%\n </>\n )}\n </span>\n </div>\n );\n};\n\nexport default TimeSeriesInfoPanel;\n","import React, {useContext, useMemo} from 'react';\nimport {assoc, map, pipe, pick} from 'ramda';\nimport {TooltipProps} from 'recharts';\n\nimport i18n from 'ui-i18n';\nimport {ChartData} from '@reltio/components';\nimport {DQMetric, DQDataLevel, FillRateState, TimeSeriesMetric} from '@reltio/mdm-sdk';\n\nimport {getTimeSeriesData} from '../../../services/mlDq';\nimport {formatFillRateData, getFillRateData} from '../../../services/fillRate';\nimport {getPercentLabel, transformTimeSeriesChartData} from '../../../services/charts';\nimport {useMlDqDataRequest} from '../../../hooks/useMlDqDataRequest';\nimport {DetailedAttributeTypeContext} from '../../../contexts/DetailedAttributeTypeContext';\nimport {EntityTypeContext} from '../../../contexts/EntityTypeContext';\nimport {useReloadFacet} from '../../../contexts/ReloadFacetContext';\nimport {LineChartData} from '../../../types/LineChartData';\nimport {TimeRangeContext} from '../../../contexts/TimeRangeContext';\n\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport LineChart from '../../../components/LineChart/LineChart';\nimport {TimeSeriesInfoPanel} from '../../../components/TimeSeriesInfoPanel/TimeSeriesInfoPanel';\nimport {ChartDataTooltip} from '../../../components/ChartDataTooltip';\n\nconst INFO_PANEL_HEIGHT = 36;\n\nconst tooltipKeys = [FillRateState.EXISTS, FillRateState.MISSING];\nconst metrics = [DQMetric.FILL_RATE as TimeSeriesMetric];\n\nconst getTooltip = ({active, payload}: TooltipProps) => {\n if (active && payload && payload.length) {\n const {payload: currentPayload} = payload[0];\n const percent = currentPayload.fillRate;\n const percents = {\n [FillRateState.EXISTS]: percent,\n [FillRateState.MISSING]: +(100 - percent).toFixed(2)\n };\n\n const data: ChartData[] = pipe(\n pick(tooltipKeys),\n formatFillRateData,\n map((data: ChartData) => assoc('percent', percents[data.group], data)),\n map(({label, percent, value}) => ({\n label,\n value: `${i18n.number(value)} ${getPercentLabel(percent)}`\n }))\n )(currentPayload);\n const title = data.length ? i18n.date(currentPayload.group, 'MMM D, YYYY') : i18n.text('No data available');\n return <ChartDataTooltip data={data} title={title} />;\n }\n};\n\nconst FillRateTimeSeriesChart = () => {\n const entityType = useContext(EntityTypeContext);\n const detailedAttributeType = useContext(DetailedAttributeTypeContext);\n const timeRange = useContext(TimeRangeContext);\n\n const entityTypeUri = entityType.uri;\n const attributeFieldName = detailedAttributeType.fieldName;\n const {data, state, reload} = useMlDqDataRequest({\n entityTypeUri,\n attributeFieldName,\n timeRange,\n metrics\n });\n\n useReloadFacet({\n state,\n reload,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n\n const chartData: LineChartData[] = useMemo(\n () => pipe(getTimeSeriesData(getFillRateData), transformTimeSeriesChartData(DQMetric.FILL_RATE))(data),\n [data]\n );\n const infoLabel = `${i18n.text('No. profiles with complete values')}:`;\n const dateLabel = `${i18n.text('Today')}`;\n return (\n <DQLayoutItemContent data={chartData} loadingState={state} onRefresh={reload}>\n {({data, width, height}) => (\n <>\n <TimeSeriesInfoPanel\n infoLabel={infoLabel}\n dateLabel={dateLabel}\n chartData={data}\n percentKey={DQMetric.FILL_RATE}\n dataKey={FillRateState.EXISTS}\n />\n <LineChart\n width={width}\n height={height - INFO_PANEL_HEIGHT}\n data={data}\n keys={metrics}\n getTooltip={getTooltip}\n yAxisLabel={i18n.text('Percentage of profiles filled')}\n />\n </>\n )}\n </DQLayoutItemContent>\n );\n};\n\nexport default FillRateTimeSeriesChart;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n height: '18px',\n padding: '3px 8px',\n background: 'rgba(43, 152, 240, 0.12)',\n border: '0.6px solid #2B98F0',\n borderRadius: '2px'\n },\n label: {\n fontSize: '12px',\n padding: 0\n },\n disabled: {\n background: 'rgba(153, 153, 153, 0.12)',\n border: '0.6px solid #999999'\n }\n});\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport Chip, {ChipProps} from '@material-ui/core/Chip';\n\nimport {TimeRangeContext} from '../../contexts/TimeRangeContext';\nimport {getLabelByTimeRange} from '../../services/mlDq';\nimport {TimeRange} from '../../types/TimeRange';\n\nimport {useStyles} from './styles';\n\ntype Props = ChipProps & {\n disabled?: boolean;\n};\n\nconst TimeRangeChip = ({disabled = false, ...chipProps}: Props) => {\n const styles = useStyles();\n\n const timeRange = useContext(TimeRangeContext);\n const label = disabled ? getLabelByTimeRange(TimeRange.TODAY) : getLabelByTimeRange(timeRange);\n\n return (\n <Chip\n classes={{\n root: classnames(styles.root, {\n [styles.disabled]: !!disabled\n }),\n label: styles.label\n }}\n label={label}\n {...chipProps}\n />\n );\n};\n\nexport default TimeRangeChip;\n","import React from 'react';\nimport i18n from 'ui-i18n';\n\nimport {ViewProps} from '../../../types/ViewProps';\nimport {checkIsTimeSeries} from '../../../services/mlDq';\n\nimport {ChartDataTooltip, InfoDataRenderer} from '../../../components/ChartDataTooltip';\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport FillRateChartToday from './FillRateChart';\nimport FillRateTimeSeriesChart from './FillRateTimeSeriesChart';\nimport TimeRangeChip from '../../../components/TimeRangeChip/TimeRangeChip';\n\nconst FillRateChart = ({config}: ViewProps) => {\n const {title} = config;\n\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Fill rate')}\n data={[\n {\n label: `${i18n.text('Exists')}:`,\n value: i18n.text('Profiles with data')\n },\n {\n label: `${i18n.text('Missing')}:`,\n value: i18n.text('Profiles without data')\n }\n ]}\n DataRenderer={InfoDataRenderer}\n />\n );\n const isTimeSeries = checkIsTimeSeries(config);\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {isTimeSeries && <TimeRangeChip disabled={!isTimeSeries} />}\n </DQLayoutItemHeader>\n {isTimeSeries ? <FillRateTimeSeriesChart /> : <FillRateChartToday />}\n </DQLayoutItemView>\n );\n};\n\nexport default FillRateChart;\n","import {always, converge, identity, pipe, propOr, map, sortBy, when} from 'ramda';\nimport {\n getChartItemColor,\n DQChartsData,\n TimeSeriesData,\n UniquenessAnalysisState,\n UniquenessData\n} from '@reltio/mdm-sdk';\nimport {ChartData} from '@reltio/components';\nimport {localizeChartValues, isEmptyData} from '../services/charts';\nimport i18n from 'ui-i18n';\n\nconst UniquenessChartColors = {\n [UniquenessAnalysisState.UNIQUE]: '#4BAFFF',\n [UniquenessAnalysisState.NOT_UNIQUE]: '#C34980'\n};\n\nexport const getUniquenessColorByState = (state: UniquenessAnalysisState) =>\n UniquenessChartColors[state] || getChartItemColor(state);\n\nexport const getUniquenessColors: (chartsData: ChartData[]) => string[] = map(({group}) =>\n getUniquenessColorByState(group)\n);\n\nconst getLabelFromState = (state: UniquenessAnalysisState) => {\n const UniquenessAnalysisStateLabels = {\n [UniquenessAnalysisState.UNIQUE]: i18n.text('Unique'),\n [UniquenessAnalysisState.NOT_UNIQUE]: i18n.text('Not unique')\n };\n\n return UniquenessAnalysisStateLabels[state] || state;\n};\n\nconst getUniquenessStateIndexFromData = (data: ChartData) =>\n Object.values(UniquenessAnalysisState).indexOf(data.group as UniquenessAnalysisState);\n\ntype FormatUniquenessAnalysisDataFn = (uniquenessAnalysisData: UniquenessData) => ChartData[];\nexport const formatUniquenessAnalysisData: FormatUniquenessAnalysisDataFn = pipe(\n Object.entries,\n map(([state, value]) => ({label: getLabelFromState(state), group: state, value})),\n sortBy(getUniquenessStateIndexFromData),\n localizeChartValues\n);\n\ntype GetUniquenessDataFn = (chartsData: DQChartsData | TimeSeriesData) => UniquenessData;\nexport const getUniquenessData: GetUniquenessDataFn = propOr({}, 'uniqueness');\n\ntype GetUniquenessChartDataFn = (\n chartsData: DQChartsData\n) => {\n chartData: ChartData[];\n colors: string[];\n};\nexport const getUniquenessChartData: GetUniquenessChartDataFn = pipe(\n getUniquenessData,\n formatUniquenessAnalysisData,\n when(isEmptyData, always([])),\n converge(\n (chartData: ChartData, colors: string[]) => ({\n chartData,\n colors\n }),\n [identity, getUniquenessColors]\n )\n);\n","import React from 'react';\n\nimport {getUniquenessChartData} from '../../../services/uniquenessAnalysis';\nimport {useChartData} from '../../../hooks/useChartData';\n\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport StackedHorizontalBarChart from '../../../components/StackedHorizontalBarChart/StackedHorizontalBarChart';\n\nconst UniquenessAnalysisChart = () => {\n const {data, state, reload} = useChartData(getUniquenessChartData);\n const {chartData, colors} = data;\n\n return (\n <DQLayoutItemContent data={chartData} loadingState={state} onRefresh={reload}>\n {({data}) => <StackedHorizontalBarChart data={data} colors={colors} />}\n </DQLayoutItemContent>\n );\n};\n\nexport default UniquenessAnalysisChart;\n","import React, {useContext, useMemo} from 'react';\nimport {assoc, map, pipe, pick} from 'ramda';\nimport {TooltipProps} from 'recharts';\n\nimport i18n from 'ui-i18n';\nimport {ChartData} from '@reltio/components';\nimport {DQMetric, DQDataLevel, TimeSeriesMetric, UniquenessAnalysisState} from '@reltio/mdm-sdk';\n\nimport {formatUniquenessAnalysisData, getUniquenessData} from '../../../services/uniquenessAnalysis';\nimport {getTimeSeriesData} from '../../../services/mlDq';\nimport {useMlDqDataRequest} from '../../../hooks/useMlDqDataRequest';\nimport {useReloadFacet} from '../../../contexts/ReloadFacetContext';\nimport {LineChartData} from '../../../types/LineChartData';\nimport {EntityTypeContext} from '../../../contexts/EntityTypeContext';\nimport {DetailedAttributeTypeContext} from '../../../contexts/DetailedAttributeTypeContext';\nimport {TimeRangeContext} from '../../../contexts/TimeRangeContext';\nimport {getPercentLabel, transformTimeSeriesChartData} from '../../../services/charts';\n\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport LineChart from '../../../components/LineChart/LineChart';\nimport {TimeSeriesInfoPanel} from '../../../components/TimeSeriesInfoPanel/TimeSeriesInfoPanel';\nimport {ChartDataTooltip} from '../../../components/ChartDataTooltip';\n\nconst INFO_PANEL_HEIGHT = 36;\n\nconst tooltipKeys = [UniquenessAnalysisState.UNIQUE, UniquenessAnalysisState.NOT_UNIQUE];\nconst metrics = [DQMetric.UNIQUENESS as TimeSeriesMetric];\n\nconst getTooltip = ({active, payload}: TooltipProps) => {\n if (active && payload && payload.length) {\n const {payload: currentPayload} = payload[0];\n const percent = currentPayload.uniqueness;\n const percents = {\n [UniquenessAnalysisState.UNIQUE]: percent,\n [UniquenessAnalysisState.NOT_UNIQUE]: +(100 - percent).toFixed(2)\n };\n\n const data: ChartData[] = pipe(\n pick(tooltipKeys),\n formatUniquenessAnalysisData,\n map((data) => assoc('percent', percents[data.group], data)),\n map(({label, percent, value}) => ({\n label,\n value: `${i18n.number(value)} ${getPercentLabel(percent)}`\n }))\n )(currentPayload);\n const title = data.length ? i18n.date(currentPayload.group, 'MMM D, YYYY') : i18n.text('No data available');\n return <ChartDataTooltip data={data} title={title} />;\n }\n};\n\nconst UniquenessAnalysisTimeSeriesChart = () => {\n const entityType = useContext(EntityTypeContext);\n const detailedAttributeType = useContext(DetailedAttributeTypeContext);\n const timeRange = useContext(TimeRangeContext);\n\n const entityTypeUri = entityType.uri;\n const attributeFieldName = detailedAttributeType.fieldName;\n const {data, state, reload} = useMlDqDataRequest({\n entityTypeUri,\n attributeFieldName,\n timeRange,\n metrics\n });\n\n useReloadFacet({\n state,\n reload,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n\n const chartData: LineChartData[] = useMemo(\n () => pipe(getTimeSeriesData(getUniquenessData), transformTimeSeriesChartData(DQMetric.UNIQUENESS))(data),\n [data]\n );\n\n const infoLabel = `${i18n.text('No. of unique values')}`;\n const dateLabel = `${i18n.text('Today')}`;\n return (\n <DQLayoutItemContent data={chartData} loadingState={state} onRefresh={reload}>\n {({data, width, height}) => (\n <>\n <TimeSeriesInfoPanel\n infoLabel={infoLabel}\n dateLabel={dateLabel}\n chartData={data}\n percentKey={DQMetric.UNIQUENESS}\n dataKey={UniquenessAnalysisState.UNIQUE}\n />\n <LineChart\n width={width}\n height={height - INFO_PANEL_HEIGHT}\n data={data}\n keys={metrics}\n getTooltip={getTooltip}\n yAxisLabel={i18n.text('Percentage of unique values')}\n />\n </>\n )}\n </DQLayoutItemContent>\n );\n};\n\nexport default UniquenessAnalysisTimeSeriesChart;\n","import React from 'react';\nimport i18n from 'ui-i18n';\n\nimport {ViewProps} from '../../../types/ViewProps';\nimport {checkIsTimeSeries} from '../../../services/mlDq';\n\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport TimeRangeChip from '../../../components/TimeRangeChip/TimeRangeChip';\nimport UniquenessAnalysisChartToday from './UniquenessAnalysisChart';\nimport UniquenessAnalysisTimeSeriesChart from './UniquenessAnalysisTimeSeriesChart';\nimport {ChartDataTooltip, InfoDataRenderer} from '../../../components/ChartDataTooltip';\n\nconst UniquenessAnalysisChart = ({config}: ViewProps) => {\n const {title} = config;\n\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Uniqueness analysis')}\n data={[\n {\n label: `${i18n.text('Unique')}:`,\n value: i18n.text('Number of values that only appear once and have no duplicates')\n },\n {\n label: `${i18n.text('Not unique')}:`,\n value: i18n.text('Number of values that have at least one duplicate in the list')\n }\n ]}\n DataRenderer={InfoDataRenderer}\n />\n );\n\n const isTimeSeries = checkIsTimeSeries(config);\n\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {isTimeSeries && <TimeRangeChip disabled={!isTimeSeries} />}\n </DQLayoutItemHeader>\n {isTimeSeries ? <UniquenessAnalysisTimeSeriesChart /> : <UniquenessAnalysisChartToday />}\n </DQLayoutItemView>\n );\n};\n\nexport default UniquenessAnalysisChart;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"12\",\n fill: \"#6663F6\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.4 14.4h2.411c.016-.205.047-.405.093-.6H8.4v-1.2h3.012c.137-.215.296-.416.472-.6H8.4v-1.2h6v.011a3.896 3.896 0 011.8.287V8.4c0-.66-.54-1.2-1.2-1.2H7.8c-.66 0-1.2.54-1.2 1.2v7.8c0 .66.54 1.2 1.2 1.2h4.083a3.892 3.892 0 01-.979-1.8H8.4v-1.2zm6-4.2h-6V9h6v1.2zm2.58 5.934L18.852 18l-.852.852-1.872-1.872a2.66 2.66 0 01-1.434.42A2.695 2.695 0 0112 14.7c0-1.494 1.206-2.7 2.7-2.7 1.494 0 2.7 1.206 2.7 2.7 0 .528-.156 1.014-.42 1.434zm-2.28.066a1.5 1.5 0 10-.001-3.001A1.5 1.5 0 0014.7 16.2z\",\n fill: \"#fff\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"12\",\n fill: \"#1DACF5\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M11.4 9.6H9.3L12 6.9l2.7 2.7h-2.1v3.846l-3.6 3.6-.846-.846 3.246-3.246V9.6zm4.446 6.6l-.846.846L12.954 15l.846-.846 2.046 2.046z\",\n fill: \"#fff\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"12\",\n fill: \"#7F22FD\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.4 9v1.2h1.2V9H8.4zm0 2.4v1.2h1.2v-1.2H8.4zm0 2.4V15h1.2v-1.2H8.4zM10.8 9v1.2h4.8V9h-4.8zm0 2.4v1.2h4.8v-1.2h-4.8zm0 2.4V15h4.8v-1.2h-4.8zm6-6v8.4H7.2V7.8h9.6zm1.2 9V6.6H6V17.4h12v-.6z\",\n fill: \"#fff\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"12\",\n fill: \"#4B31E9\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M10.8 15.6h1.8V15a.6.6 0 01.6-.6h2.4a.6.6 0 01.6.6v2.4a.6.6 0 01-.6.6h-2.4a.6.6 0 01-.6-.6v-.6h-3V9.6H8.4a.6.6 0 01-.6-.6V6.6a.6.6 0 01.6-.6H12a.6.6 0 01.6.6V9a.6.6 0 01-.6.6h-1.2v1.8h1.8v-.6a.6.6 0 01.6-.6h2.4a.6.6 0 01.6.6v2.4a.6.6 0 01-.6.6h-2.4a.6.6 0 01-.6-.6v-.6h-1.8v3z\",\n fill: \"#fff\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"24\",\n height: \"24\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"12\",\n fill: \"#80D2FC\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 6c-3.312 0-6 2.688-6 6s2.688 6 6 6 6-2.688 6-6-2.688-6-6-6zm-.6 4.96V9h1.2v1.96l1.698-.98.6 1.04L13.2 12l1.698.98-.6 1.04-1.698-.98V15h-1.2v-1.96l-1.698.98-.6-1.04L10.8 12l-1.698-.98.6-1.04 1.698.98zM7.2 12c0 2.646 2.154 4.8 4.8 4.8s4.8-2.154 4.8-4.8-2.154-4.8-4.8-4.8A4.806 4.806 0 007.2 12z\",\n fill: \"#fff\"\n})));","import {makeStyles} from '@material-ui/core/styles';\n\nexport type IconSize = {\n width: number;\n height: number;\n};\nexport const useStyles = makeStyles({\n icon: ({width, height}: IconSize) => ({\n width,\n height\n }),\n loading: {\n '& circle': {\n fill: '#AAAAAA'\n }\n },\n badQuality: {\n '& circle': {\n fill: '#FF1744'\n }\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {IconProps} from '@material-ui/core/Icon';\nimport {AttrTypeDetailsType} from '../../types/DetailedAttributeType';\nimport DVFIcon from './icons/dvf.svg';\nimport IncludedInMatchingIcon from './icons/includedInMatching.svg';\nimport RDMIcon from './icons/rdm.svg';\nimport ReferenceIcon from './icons/reference.svg';\nimport RequiredIcon from './icons/required.svg';\n\nimport {useStyles, IconSize} from './styles';\n\nexport const AttributeTypeDetailIconSizes = {\n SMALL: {\n width: 22,\n height: 22\n },\n NORMAL: {\n width: 24,\n height: 24\n }\n};\n\nexport enum AttributeTypeDetailIconVariant {\n LOADING = 'loading',\n BAD_QUALITY = 'badQuality',\n NORMAL = 'normal'\n}\n\ntype Props = IconProps & {\n detailType: AttrTypeDetailsType;\n size?: IconSize;\n variant?: AttributeTypeDetailIconVariant;\n};\n\nexport const AttributeTypeDetailIcon = ({\n detailType,\n size = AttributeTypeDetailIconSizes.NORMAL,\n variant = AttributeTypeDetailIconVariant.NORMAL\n}: Props) => {\n const styles = useStyles(size);\n const className = classnames(styles.icon, styles[variant]);\n switch (detailType) {\n case AttrTypeDetailsType.RDM_LOOKUP:\n return <RDMIcon className={className} />;\n case AttrTypeDetailsType.CONTAIN_VF:\n return <DVFIcon className={className} />;\n case AttrTypeDetailsType.INCLUDED_IN_MATCHING:\n return <IncludedInMatchingIcon className={className} />;\n case AttrTypeDetailsType.REFERENCE:\n return <ReferenceIcon className={className} />;\n case AttrTypeDetailsType.REQUIRED:\n return <RequiredIcon className={className} />;\n default:\n return null;\n }\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst margin = 4;\nexport const useStyles = makeStyles({\n root: {\n height: '24px',\n maxWidth: `calc(100% - ${margin * 2}px)`,\n margin: `0 ${margin}px ${margin}px 0`,\n borderRadius: '12px'\n },\n label: {\n fontSize: '12px',\n paddingLeft: '8px',\n paddingRight: '9px'\n },\n badQuality: {\n backgroundColor: 'rgba(255, 23, 68, 0.12)'\n }\n});\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport Chip, {ChipProps} from '@material-ui/core/Chip';\nimport {RequestStates} from '@reltio/components';\nimport {getDetailLabel, checkIsDataQualitativeForSummary} from '../../services/attributeDetails';\nimport {ChartsDataContext} from '../../contexts/ChartsDataContext';\nimport {AttrTypeDetailsType} from '../../types/DetailedAttributeType';\nimport {\n AttributeTypeDetailIcon,\n AttributeTypeDetailIconVariant\n} from '../AttributeTypeDetailIcon/AttributeTypeDetailIcon';\nimport {ChartsDataWithState} from '../../hooks/useChartData';\nimport {useStyles} from './styles';\n\ntype Props = ChipProps & {\n detailType: AttrTypeDetailsType;\n};\n\nconst AttributeTypeDetailChip = ({detailType, classes, ...chipProps}: Props) => {\n const styles = useStyles();\n const {data, state} = useContext<ChartsDataWithState>(ChartsDataContext);\n let iconVariant = AttributeTypeDetailIconVariant.NORMAL;\n const isDataLoading = state === RequestStates.LOADING;\n const isDataQualitative = checkIsDataQualitativeForSummary(data);\n if (detailType === AttrTypeDetailsType.REQUIRED) {\n if (isDataLoading) {\n iconVariant = AttributeTypeDetailIconVariant.LOADING;\n }\n if (!isDataLoading && !isDataQualitative) {\n iconVariant = AttributeTypeDetailIconVariant.BAD_QUALITY;\n }\n }\n\n return (\n <Chip\n classes={{\n root: classnames(styles.root, {\n [styles.badQuality]:\n detailType === AttrTypeDetailsType.REQUIRED &&\n !isDataLoading &&\n state !== RequestStates.INIT &&\n !isDataQualitative\n }),\n label: styles.label,\n ...classes\n }}\n label={getDetailLabel(detailType)}\n icon={<AttributeTypeDetailIcon detailType={detailType} variant={iconVariant} />}\n {...chipProps}\n />\n );\n};\n\nexport default AttributeTypeDetailChip;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n flexWrap: 'wrap',\n flexGrow: 1\n }\n});\n","import React from 'react';\nimport {ChipProps} from '@material-ui/core/Chip';\nimport AttributeTypeDetailChip from '../AttributeTypeDetailChip/AttributeTypeDetailChip';\nimport {AttrTypeDetails, AttrTypeDetailsType} from '../../types/DetailedAttributeType';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n details: AttrTypeDetails;\n chipClasses?: ChipProps['classes'];\n};\n\nconst AttributeTypeDetails = ({details, chipClasses = {}}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={styles.root}>\n {Object.entries(details || {})\n .filter(([, value]) => value)\n .map(([detailType]) => (\n <AttributeTypeDetailChip\n key={detailType}\n detailType={detailType as AttrTypeDetailsType}\n classes={chipClasses}\n />\n ))}\n </div>\n );\n};\n\nexport default AttributeTypeDetails;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n header: {\n display: 'flex',\n paddingBottom: '16px'\n },\n info: {\n display: 'flex',\n flexDirection: 'column',\n '&:not(:last-child)': {\n borderRight: '1px solid rgba(0,0,0,0.12)'\n }\n },\n entitySummary: {\n '&:not(:last-child)': {\n paddingRight: '48px',\n marginRight: '16px'\n }\n },\n attributeTypeSummary: {\n '&:not(:last-child)': {\n paddingRight: '24px',\n marginRight: '24px'\n }\n },\n infoTitle: {\n color: 'rgba(0,0,0,0.54)',\n fontSize: '12px',\n lineHeight: '16px'\n },\n infoContent: {\n fontSize: '30px',\n lineHeight: '35px',\n padding: '4px 0 0',\n display: 'flex',\n alignItems: 'center'\n },\n attributeTypeIconWrapper: {\n width: '32px',\n height: '33px',\n background: 'rgba(0, 0, 0, 0.05)',\n borderRadius: '4px',\n position: 'relative',\n marginRight: '12px',\n flexShrink: 0,\n '& svg': {\n position: 'absolute',\n transform: 'translate(-50%, -50%)',\n top: '50%',\n left: '50%'\n }\n },\n totalLoading: {\n padding: '4px 8px'\n },\n clickable: {\n color: '#000066',\n cursor: 'pointer'\n }\n});\n","import classnames from 'classnames';\nimport React from 'react';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n title: string;\n children: React.ReactNode;\n className?: string;\n onClick?: () => void;\n dataReltioId?: string;\n};\n\nexport const HeaderInfo = ({title, children, className, onClick, dataReltioId}: Props) => {\n const styles = useStyles();\n\n return (\n <div className={classnames(styles.info, className)} onClick={onClick} data-reltio-id={dataReltioId}>\n <div className={styles.infoTitle}>{title}</div>\n <div className={styles.infoContent}>{children}</div>\n </div>\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"mask\", {\n id: \"svg1279746712a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"1\",\n y: \"4\",\n width: \"15\",\n height: \"8\"\n}, React.createElement(\"path\", {\n d: \"M11.667 4H5C2.793 4 1 5.793 1 8s1.793 4 4 4h6.667c2.206 0 4-1.793 4-4s-1.794-4-4-4zm0 6.667H5a2.666 2.666 0 110-5.334h6.667a2.666 2.666 0 110 5.334zm0-4.667c-1.107 0-2 .893-2 2s.893 2 2 2c1.106 0 2-.893 2-2s-.894-2-2-2z\",\n fill: \"#000\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg1279746712a)\"\n}, React.createElement(\"path\", {\n fill: \"#000\",\n fillOpacity: \".541\",\n d: \"M0 0h16v16H0z\"\n}))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"mask\", {\n id: \"svg208732808a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"1\",\n y: \"1\",\n width: \"14\",\n height: \"14\"\n}, React.createElement(\"path\", {\n d: \"M7.992 1.333A6.663 6.663 0 001.332 8c0 3.68 2.98 6.667 6.66 6.667A6.67 6.67 0 0014.665 8a6.67 6.67 0 00-6.673-6.667zm.007 12A5.332 5.332 0 012.665 8 5.332 5.332 0 018 2.667 5.332 5.332 0 0113.332 8a5.332 5.332 0 01-5.333 5.333zm.333-8.666h-1v4l3.5 2.1.5-.82-3-1.78v-3.5z\",\n fill: \"#000\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg208732808a)\"\n}, React.createElement(\"path\", {\n fill: \"#000\",\n fillOpacity: \".541\",\n d: \"M0 0h16v16H0z\"\n}))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"mask\", {\n id: \"svg1638934380a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"2\",\n y: \"4\",\n width: \"13\",\n height: \"8\"\n}, React.createElement(\"path\", {\n d: \"M5.948 10.02V12h-.88v-1.98h-.88V12h-.88v-1.98h-.77v-.825h.77v-2.2h-.77V6.17h.77V4.3h.88v1.87h.88V4.3h.88v1.87h.77v.825h-.77v2.2h.77v.825h-.77zm-.88-3.025h-.88v2.2h.88v-2.2zM7.947 12v-1.1h1.1V12h-1.1zM13.65 10.02V12h-.88v-1.98h-.88V12h-.88v-1.98h-.77v-.825h.77v-2.2h-.77V6.17h.77V4.3h.88v1.87h.88V4.3h.88v1.87h.77v.825h-.77v2.2h.77v.825h-.77zm-.88-3.025h-.88v2.2h.88v-2.2z\",\n fill: \"#000\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg1638934380a)\"\n}, React.createElement(\"path\", {\n fill: \"#000\",\n fillOpacity: \".541\",\n d: \"M0 0h16v16H0z\"\n}))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"path\", {\n d: \"M2.11 12v-.825h1.331V5.169L2 5.741v-.89L3.331 4.3h1.045v6.875h1.089V12H2.11zM5.968 11.032l1.65-2.508c.242-.367.403-.62.484-.759.08-.147.136-.29.165-.429.03-.14.044-.341.044-.605v-.77a.778.778 0 00-.253-.583c-.169-.161-.389-.242-.66-.242h-1.21V4.3h1.1c.638 0 1.126.158 1.463.473.345.308.517.774.517 1.397v.462c0 .367-.018.645-.055.836-.037.19-.103.37-.198.539-.088.169-.264.455-.528.858l-1.518 2.299h2.519V12h-3.52v-.968zM13.544 10.262c0 .609-.147 1.052-.44 1.331-.293.271-.77.407-1.43.407h-1.298v-.825h1.397c.279 0 .484-.062.616-.187.132-.132.198-.337.198-.616V9.239c0-.242-.073-.433-.22-.572-.147-.147-.341-.22-.583-.22h-1.067v-.825h.957a.797.797 0 00.572-.22.768.768 0 00.231-.583v-.902c0-.279-.066-.48-.198-.605-.125-.125-.326-.187-.605-.187h-1.298V4.3h1.166c.623 0 1.093.14 1.408.418.323.271.484.704.484 1.298v.693c0 .565-.202.99-.605 1.276.477.264.715.715.715 1.353v.924z\",\n fill: \"#000\",\n fillOpacity: \".541\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"mask\", {\n id: \"svg924767730a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"1\",\n y: \"4\",\n width: \"13\",\n height: \"8\"\n}, React.createElement(\"path\", {\n d: \"M5.463 10.13c0 .623-.173 1.093-.517 1.408-.338.308-.825.462-1.463.462H2.03v-.836h1.562c.271 0 .491-.08.66-.242a.778.778 0 00.253-.583V9.195c0-.22-.059-.396-.176-.528-.11-.14-.279-.209-.506-.209h-.22c-.543 0-.972-.158-1.287-.473-.316-.323-.473-.788-.473-1.397V6.17c0-.623.168-1.089.506-1.397.344-.315.836-.473 1.474-.473h1.463v.836H3.714c-.272 0-.492.08-.66.242a.778.778 0 00-.253.583v.836c0 .227.073.418.22.572.146.147.337.22.572.22h.22c.52 0 .924.15 1.21.451.293.3.44.755.44 1.364v.726zM9.136 10.13c0 .623-.173 1.093-.517 1.408-.338.308-.825.462-1.463.462H5.704v-.836h1.562c.27 0 .49-.08.66-.242a.778.778 0 00.253-.583V9.195c0-.22-.06-.396-.176-.528-.11-.14-.28-.209-.506-.209h-.22c-.543 0-.972-.158-1.287-.473-.316-.323-.473-.788-.473-1.397V6.17c0-.623.168-1.089.506-1.397.344-.315.836-.473 1.474-.473H8.96v.836H7.387c-.272 0-.492.08-.66.242a.778.778 0 00-.253.583v.836c0 .227.073.418.22.572.146.147.337.22.572.22h.22c.52 0 .924.15 1.21.451.293.3.44.755.44 1.364v.726zM12.255 12l-1.683-6.886V12H9.68V4.3h1.562l1.694 6.886V4.3h.89V12h-1.572z\",\n fill: \"#000\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg924767730a)\"\n}, React.createElement(\"path\", {\n fill: \"#000\",\n fillOpacity: \".541\",\n d: \"M0 0h16v16H0z\"\n}))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"mask\", {\n id: \"svg3578961193a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"1\",\n y: \"4\",\n width: \"14\",\n height: \"8\"\n}, React.createElement(\"path\", {\n d: \"M5.345 12l-.418-1.947H2.782L2.353 12h-.979l1.86-7.7h1.264L6.324 12h-.979zM3.85 5.026l-.89 4.202H4.75L3.85 5.026zM10.494 10.262c0 .63-.146 1.078-.44 1.342-.286.264-.763.396-1.43.396h-2.09V4.3h1.958c.653 0 1.13.132 1.43.396.308.264.462.704.462 1.32v.627c0 .565-.202.99-.605 1.276.477.264.715.715.715 1.353v.99zM9.427 5.917c0-.279-.066-.48-.198-.605-.125-.125-.326-.187-.605-.187H7.491v2.431h1.133a.797.797 0 00.572-.22.768.768 0 00.231-.583v-.836zm.11 3.256c0-.242-.073-.433-.22-.572-.147-.147-.34-.22-.583-.22H7.491v2.794h1.232c.279 0 .484-.062.616-.187.132-.132.198-.337.198-.616V9.173zM13.119 12c-.638 0-1.13-.154-1.474-.462-.337-.315-.506-.785-.506-1.408V6.17c0-.623.169-1.089.506-1.397.345-.315.836-.473 1.474-.473h1.342v.836h-1.452c-.271 0-.491.08-.66.242a.778.778 0 00-.253.583v4.378c0 .227.084.422.253.583.169.161.389.242.66.242h1.452V12h-1.342z\",\n fill: \"#000\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg3578961193a)\"\n}, React.createElement(\"path\", {\n fill: \"#000\",\n fillOpacity: \".541\",\n d: \"M0 0h16v16H0z\"\n}))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport type IconSize = {\n width: number;\n height: number;\n};\nexport const useStyles = makeStyles({\n icon: ({width, height}: IconSize) => ({\n width,\n height\n })\n});","import React from 'react';\nimport BooleanIcon from './icons/boolean.svg';\nimport DateIcon from './icons/date.svg';\nimport FloatIcon from './icons/float.svg';\nimport IntegerIcon from './icons/integer.svg';\nimport SSNIcon from './icons/ssn.svg';\nimport StringIcon from './icons/string.svg';\nimport {getChartDataTypeByAttributeType} from '../../services/charts';\nimport {ChartDataType} from '../../constants/ChartDataType';\n\nimport {useStyles, IconSize} from './styles';\n\ntype Props = {\n type: string;\n size?: IconSize;\n};\n\nexport const AttributeTypeIconSizes = {\n SMALL: {\n width: 16,\n height: 16\n },\n NORMAL: {\n width: 24,\n height: 24\n }\n};\n\nconst AttributeTypeIcon = ({type, size = AttributeTypeIconSizes.SMALL}: Props) => {\n const styles = useStyles(size);\n const chartDataType = getChartDataTypeByAttributeType(type);\n switch (chartDataType) {\n case ChartDataType.STRING:\n return <StringIcon className={styles.icon} />;\n case ChartDataType.FLOAT:\n return <FloatIcon className={styles.icon} />;\n case ChartDataType.INTEGER:\n return <IntegerIcon className={styles.icon} />;\n case ChartDataType.BOOLEAN:\n return <BooleanIcon className={styles.icon} />;\n case ChartDataType.DATE:\n return <DateIcon className={styles.icon} />;\n case ChartDataType.SSN:\n return <SSNIcon className={styles.icon} />;\n default:\n return <StringIcon className={styles.icon} />;\n }\n};\n\nexport default AttributeTypeIcon;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\nimport {CircularProgress as CircularProgress} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport AttributeTypeDetails from '../AttributeTypeDetails/AttributeTypeDetails';\nimport {useExistsTotalsRequest} from '../../hooks/useExistsTotalsRequest';\nimport {HeaderInfo} from './HeaderInfo';\nimport {DetailedAttributeType} from '../../types/DetailedAttributeType';\nimport AttributeTypeIcon, {AttributeTypeIconSizes} from '../AttributeTypeIcon/AttributeTypeIcon';\nimport ChartDataTooltip from '../ChartDataTooltip/ChartDataTooltip';\nimport {useStyles} from './styles';\n\nexport type AttributeTypeSummaryProps = {\n detailedAttributeType: DetailedAttributeType;\n};\n\nconst AttributeTypeSummary = ({detailedAttributeType}: AttributeTypeSummaryProps) => {\n const styles = useStyles();\n const total = useExistsTotalsRequest(detailedAttributeType.fieldName);\n const renderDataTypeInfo = (type: string) => {\n return (\n <>\n <div className={styles.attributeTypeIconWrapper}>\n <AttributeTypeIcon type={type} size={AttributeTypeIconSizes.NORMAL} />\n </div>\n {i18n.text(type)}\n </>\n );\n };\n\n const recordsInfo =\n total === null ? <CircularProgress size=\"24\" className={styles.totalLoading} /> : formatNumberAsMetric(total);\n\n return (\n <div>\n <div className={styles.header}>\n <HeaderInfo title={i18n.text('Profiles')} className={styles.attributeTypeSummary}>\n <Tooltip\n title={\n <ChartDataTooltip\n data={[\n {\n label: i18n.text('Entities with exists attribute'),\n value: i18n.number(total)\n }\n ]}\n />\n }\n >\n <div>{recordsInfo}</div>\n </Tooltip>\n </HeaderInfo>\n <HeaderInfo title={i18n.text('Data type')} className={styles.attributeTypeSummary}>\n {renderDataTypeInfo(detailedAttributeType.type)}\n </HeaderInfo>\n </div>\n <AttributeTypeDetails details={detailedAttributeType.details} />\n </div>\n );\n};\n\nexport default AttributeTypeSummary;\n","import {useContext, useEffect, useState} from 'react';\nimport {getTotals, FilterOptions} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\nimport {EntityTypeContext} from '../contexts/EntityTypeContext';\n\nexport const useExistsTotalsRequest = (attributeFieldName: string) => {\n const [total, setTotal] = useState<number>(null);\n const entityType = useContext(EntityTypeContext);\n const safePromise = useSafePromise();\n\n useEffect(() => {\n if (entityType.uri && attributeFieldName) {\n const existsFilter = {\n filter: FilterOptions.EXISTS,\n fieldName: attributeFieldName\n };\n\n const entityTypeFilter = {\n filter: FilterOptions.EQUALS,\n fieldName: 'type',\n values: [entityType.uri]\n };\n\n const options = {\n searchOptions: 'strictTypeSearch'\n };\n\n setTotal(null);\n safePromise(getTotals([existsFilter, entityTypeFilter], options))\n .then(({total}) => setTotal(total))\n .catch(console.error);\n }\n }, [entityType.uri, attributeFieldName]);\n\n return total;\n};\n","import classnames from 'classnames';\nimport React, {useContext} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {CircularProgress as CircularProgress} from '@material-ui/core';\n\nimport i18n from 'ui-i18n';\nimport {RequestStates} from '@reltio/components';\nimport mdmModule, {search} from '@reltio/mdm-module';\nimport {ActivityFilter, Metadata, TEntityType} from '@reltio/mdm-sdk';\n\nimport {ChartsDataContext} from '../../contexts/ChartsDataContext';\nimport {ChartsDataWithState} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {countEntityTypeAttributes} from '../../services/attributes';\nimport {getEntityTypeSummarySearchState} from '../../services/charts';\n\nimport {HeaderInfo} from './HeaderInfo';\n\nimport {useStyles} from './styles';\n\nexport type EntityTypeSummaryProps = {\n entityType: TEntityType;\n};\n\nconst EntityTypeSummary = ({entityType}: EntityTypeSummaryProps) => {\n const {data: chartsData, state} = useContext<ChartsDataWithState>(ChartsDataContext);\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const attributeTypesCount = countEntityTypeAttributes(metadata, entityType);\n const {activeProfiles = 0, inactiveProfiles = 0, sourceSystems = 0} = chartsData?.summary || {};\n const getValue = (value: number) =>\n state === RequestStates.LOADING ? (\n <CircularProgress size=\"24\" className={styles.totalLoading} />\n ) : (\n i18n.number(value)\n );\n const styles = useStyles();\n const dispatch = useDispatch();\n const searchRedirect = useSearchRedirect(getEntityTypeSummarySearchState);\n const searchProfiles = (activeness: ActivityFilter) => {\n dispatch(search.actions.activityFilterUpdated(activeness));\n searchRedirect();\n };\n return (\n <div className={styles.header}>\n <HeaderInfo\n title={i18n.text('Active profiles')}\n className={classnames(styles.entitySummary, styles.clickable)}\n onClick={() => searchProfiles(ActivityFilter.ACTIVE_ONLY)}\n dataReltioId=\"reltio-dq-dashboard-entitylevel-summary-activeProfiles\"\n >\n {getValue(activeProfiles)}\n </HeaderInfo>\n <HeaderInfo\n title={i18n.text('Inactive profiles')}\n className={classnames(styles.entitySummary, styles.clickable)}\n onClick={() => searchProfiles(ActivityFilter.INACTIVE_ONLY)}\n dataReltioId=\"reltio-dq-dashboard-entitylevel-summary-inactiveProfiles\"\n >\n {getValue(inactiveProfiles)}\n </HeaderInfo>\n <HeaderInfo title={i18n.text('Attributes')} className={styles.entitySummary}>\n {i18n.number(attributeTypesCount)}\n </HeaderInfo>\n <HeaderInfo title={i18n.text('Source systems')} className={styles.entitySummary}>\n {getValue(sourceSystems)}\n </HeaderInfo>\n </div>\n );\n};\n\nexport default EntityTypeSummary;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n content: {\n padding: '0 16px',\n marginTop: '4px'\n }\n});\n","import React, {useContext} from 'react';\n\nimport {getLabel, DQDataLevel} from '@reltio/mdm-sdk';\nimport {BasicViewContent} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\nimport {ViewProps} from '../../types/ViewProps';\nimport {DetailedAttributeTypeContext} from '../../contexts/DetailedAttributeTypeContext';\nimport {DataLevelContext} from '../../contexts/DataLevelContext';\nimport {EntityTypeContext} from '../../contexts/EntityTypeContext';\n\nimport AttributeTypeSummary from '../../components/Summary/AttributeTypeSummary';\nimport DQLayoutItemHeader from '../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemView from '../../components/DQLayoutItemView/DQLayoutItemView';\nimport EntityTypeSummary from '../../components/Summary/EntityTypeSummary';\n\nimport {useStyles} from './styles';\n\nconst Summary = ({config}: ViewProps) => {\n const styles = useStyles();\n const detailedAttributeType = useContext(DetailedAttributeTypeContext);\n const dataLevel = useContext(DataLevelContext);\n const entityType = useContext(EntityTypeContext);\n const isAttributeTypeLevel = dataLevel === DQDataLevel.ATTRIBUTE_TYPE;\n const title = isAttributeTypeLevel\n ? getLabel(detailedAttributeType.label)\n : `${i18n.text('Entity')}: ${getLabel(entityType.label)}`;\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} />\n <BasicViewContent className={styles.content}>\n {isAttributeTypeLevel ? (\n <AttributeTypeSummary detailedAttributeType={detailedAttributeType} />\n ) : (\n <EntityTypeSummary entityType={entityType} />\n )}\n </BasicViewContent>\n </DQLayoutItemView>\n );\n};\n\nexport default Summary;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n viewContent: {\n height: '100%',\n overflow: 'hidden',\n position: 'relative',\n padding: '0 16px 10px'\n }\n});\n","import React from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {BasicViewContent} from '@reltio/components';\nimport {DashboardLayoutItemView} from '@reltio/dashboard';\nimport DQLayoutItemHeader from '../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport {ViewProps} from '../../types/ViewProps';\nimport DQDashboardError from '../../components/DQDashboardError/DQDashboardError';\nimport {EMPTY_STATE_ICONS} from '@reltio/components';\nimport {ErrorData} from '../../types/ErrorData';\nimport {EmptyStateVariants} from '../../types/EmptyStateVariants';\nimport {useStyles} from './styles';\n\ntype Props = ViewProps & {\n errorData: ErrorData;\n titleChildren?: React.ReactNode;\n infoTooltipTitle?: React.ReactNode;\n onRefresh?: () => void;\n};\n\nconst DefaultIcon = EMPTY_STATE_ICONS.ERROR;\n\nconst DQDashboardErrorView = ({config, errorData, titleChildren, infoTooltipTitle, onRefresh}: Props) => {\n const {id, title: viewTitle} = config;\n const styles = useStyles();\n return (\n <DashboardLayoutItemView id={id}>\n <DQLayoutItemHeader title={viewTitle} infoTooltipTitle={infoTooltipTitle}>\n {titleChildren}\n </DQLayoutItemHeader>\n <BasicViewContent className={styles.viewContent}>\n <ReactResizeDetector refreshMode=\"debounce\" refreshRate={100} handleWidth handleHeight>\n <DQDashboardError\n errorData={{Icon: DefaultIcon, ...errorData}}\n onRefresh={onRefresh}\n variant={EmptyStateVariants.SMALL}\n />\n </ReactResizeDetector>\n </BasicViewContent>\n </DashboardLayoutItemView>\n );\n};\n\nexport default DQDashboardErrorView;\n","import {always, cond, curry, identity, join, map, pipe, propOr, propEq, slice} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {ChartData} from '@reltio/components';\nimport {\n getAttributeTypesHierarchyByUri,\n isDateType,\n isTimestampBasedType,\n DataValidationFunction,\n DQChartsData,\n FilterOptions,\n Metadata,\n SearchState,\n AttributeType\n} from '@reltio/mdm-sdk';\nimport {getSearchState, localizeChartValues, facetFiltersToSearchState} from './charts';\nimport {getEqualsRawFilterSearchState, RawFilterFields} from './rawFilters';\nimport {getAttributeLabel} from './attributes';\nimport {GetSearchStateProps} from '../types/GetSearchStateProps';\n\ntype GetFormattedDataForTableChartFn = (chartType: string) => (chartsData: DQChartsData) => ChartData[];\nconst getFormattedDataForTableChart: GetFormattedDataForTableChartFn = (chartType: string) =>\n pipe(\n propOr({}, chartType),\n Object.entries,\n map(([item, value]) => ({label: item, group: item, value})),\n localizeChartValues\n );\n\nexport const valueComparator = ({sortDirection, sortField}: {sortDirection: 'asc' | 'desc'; sortField: string}) => (\n a: ChartData,\n b: ChartData\n) => {\n if (sortDirection === 'asc') {\n return a[sortField] > b[sortField] ? 1 : -1;\n } else return a[sortField] < b[sortField] ? 1 : -1;\n};\n\nconst filterExistedDVF = (dvfs: DataValidationFunction[], chartData: ChartData[]) =>\n chartData.filter((chartDataItem: ChartData) => dvfs.find(propEq('uri', chartDataItem.group)));\n\nconst findDVFByUri = (dvfs: DataValidationFunction[], uri: string) => dvfs.find(propEq('uri', uri));\n\nconst enrichDVFDataWithFunctionLabel = curry((dvfs: DataValidationFunction[], chartData: ChartData[]) =>\n pipe(\n filterExistedDVF,\n map((chartDataItem: ChartData) => {\n const functionName = findDVFByUri(dvfs, chartDataItem.group)?.name;\n return {...chartDataItem, label: functionName};\n })\n )(dvfs, chartData)\n);\n\nconst getAttributeTypeLabelFromHierarhy: (attributeHierarhy: AttributeType[]) => string = pipe(\n map(getAttributeLabel),\n slice(1, Infinity),\n join(' / ')\n);\n\nconst enrichEntityLevelDVFData = curry((dvfs: DataValidationFunction[], metadata: Metadata, chartData: ChartData[]) =>\n pipe(\n filterExistedDVF,\n map((chartDataItem: ChartData) => {\n const {name, attribute: attributeUri} = findDVFByUri(dvfs, chartDataItem.group);\n const attributeTypesHierarhy = getAttributeTypesHierarchyByUri(metadata, attributeUri);\n return {\n ...chartDataItem,\n label: name,\n attributeLabel: getAttributeTypeLabelFromHierarhy(attributeTypesHierarhy)\n };\n })\n )(dvfs, chartData)\n);\n\ntype GetValidationChartDataFn = (chartsData: DQChartsData) => ChartData[];\nexport const getValidationChartData = (dvfs: DataValidationFunction[]): GetValidationChartDataFn =>\n pipe(getFormattedDataForTableChart('dataValidationFunctions'), enrichDVFDataWithFunctionLabel(dvfs));\n\nexport const getEntityLevelValidationChartData = (\n dvfs: DataValidationFunction[],\n metadata: Metadata\n): GetValidationChartDataFn =>\n pipe(getFormattedDataForTableChart('dataValidationFunctions'), enrichEntityLevelDVFData(dvfs, metadata));\nexport const getFrequencyChartData = getFormattedDataForTableChart('frequency');\nexport const getPatternAnalisysData = getFormattedDataForTableChart('pattern');\n\nconst getDVFAnalyticAttribtuteUri = (entityTypeUri: string, attributeName: string) =>\n `${entityTypeUri}/analyticsAttributes/AttributeValidations/analyticsAttributes/${attributeName}`;\nconst getValidationFilter = ({name, uri}: DataValidationFunction, entityTypeUri: string) => [\n {\n filter: FilterOptions.EQUALS,\n values: [[name]],\n fieldName: 'analyticsAttributes.AttributeValidations.FunctionName',\n uri: getDVFAnalyticAttribtuteUri(entityTypeUri, 'FunctionName')\n },\n {\n filter: FilterOptions.EQUALS,\n values: [[uri]],\n fieldName: 'analyticsAttributes.AttributeValidations.FunctionURI',\n uri: getDVFAnalyticAttribtuteUri(entityTypeUri, 'FunctionURI')\n }\n];\n\nconst getFrequencyAnalysisStateForTimestamp = curry(\n ({detailedAttributeType, entityTypeUri}: GetSearchStateProps, attributeValue: string) =>\n getEqualsRawFilterSearchState({\n fieldName: `${detailedAttributeType.fieldName}`,\n value: attributeValue,\n entityTypeUri\n })\n);\nconst getFrequencyAnalysisFilterForDate = curry(({fieldName}: {fieldName: string}, attributeValue: string) => [\n {\n filter: FilterOptions.ON,\n values: [attributeValue],\n fieldName\n }\n]);\nconst getFrequencyAnalysisFilter = curry(({fieldName}: {fieldName: string}, attributeValue: string) => [\n {\n filter: FilterOptions.EQUALS,\n values: [[attributeValue]],\n fieldName\n }\n]);\n\nexport const getFrequencyAnalysisSearchState = ({detailedAttributeType, entityTypeUri}: GetSearchStateProps) =>\n cond([\n [isTimestampBasedType, always(getFrequencyAnalysisStateForTimestamp)],\n [isDateType, always(getSearchState(getFrequencyAnalysisFilterForDate))],\n [identity, always(getSearchState(getFrequencyAnalysisFilter))]\n ])(detailedAttributeType.type)({detailedAttributeType, entityTypeUri});\n\nexport const getValidationSearchState = (dvfs: DataValidationFunction[]) => ({\n entityTypeUri\n}: GetSearchStateProps): ((dvfUri: string) => SearchState) => (dvfUri) => {\n const dvf = findDVFByUri(dvfs, dvfUri);\n return pipe(getValidationFilter, facetFiltersToSearchState(null, entityTypeUri))(dvf, entityTypeUri);\n};\n\nexport const getPatternAnalysisSearchState = curry(\n ({detailedAttributeType, entityTypeUri}: GetSearchStateProps, pattern: string) =>\n getEqualsRawFilterSearchState({\n fieldName: `${detailedAttributeType.fieldName}.${RawFilterFields.PATTERN}`,\n value: `\"${pattern}\"`,\n entityTypeUri\n })\n);\nexport const getRowsCounterLabel = (chartData: ChartData[]) =>\n `(${chartData.length >= 100 ? i18n.text('top') + ' 100' : chartData.length})`;\n","import i18n from 'ui-i18n';\n\nimport {DQDataLevel, TimeSeriesDataValues} from '@reltio/mdm-sdk';\n\nimport {TableChartData} from '../../../types/TableChartData';\n\nconst getEntityLevelColumnsOptions = (functionsCount: number) => [\n {\n id: 'attributeLabel',\n label: i18n.text('Attribute'),\n width: 0.23,\n sortable: true\n },\n {\n id: 'label',\n label: i18n.text('Validation function'),\n secondLabel: `(${functionsCount})`,\n width: 0.37,\n sortable: true\n },\n {\n id: 'value',\n label: i18n.text('Profiles'),\n width: 0.4,\n sortable: true\n }\n];\n\nconst getAttributeLevelColumnsOptions = (functionsCount: number) => [\n {\n id: 'label',\n label: i18n.text('Validation function'),\n secondLabel: `(${functionsCount})`,\n width: 0.4,\n sortable: true\n },\n {\n id: 'value',\n label: i18n.text('Profiles'),\n width: 0.6,\n sortable: true\n }\n];\n\nexport const getColumnsOptions = (dataLevel: DQDataLevel, chartData: TableChartData[]) => {\n return dataLevel === DQDataLevel.ATTRIBUTE_TYPE\n ? getAttributeLevelColumnsOptions(chartData.length)\n : getEntityLevelColumnsOptions(chartData.length);\n};\nexport enum ViolatedValidationTimeSeriesData {\n VIOLATED_PERCENTAGE = 'violatedPercentage',\n VIOLATED_PROFILES_COUNT = 'violatedProfilesCount'\n}\n\nexport const getViolatedValidationData = (data: TimeSeriesDataValues) => {\n const {totalProfilesCount, violatedProfilesCount} = data.violatedProfiles;\n return {\n [ViolatedValidationTimeSeriesData.VIOLATED_PERCENTAGE]: Math.round(\n (violatedProfilesCount / totalProfilesCount) * 100\n ),\n [ViolatedValidationTimeSeriesData.VIOLATED_PROFILES_COUNT]: violatedProfilesCount\n };\n};\n","import {pipe, split, is} from 'ramda';\nimport i18n from 'ui-i18n';\nimport {TableChartData} from '../../types/TableChartData';\n\nexport const getLabelAndMaxValue = pipe(split('|'), ([label, maxValue]) => ({label, maxValue}));\nexport const getValueByColumnId = (id: string, rowValue: TableChartData) =>\n is(Number, rowValue[id]) ? i18n.number(rowValue[id]) : rowValue[id];\n","import React, {useRef} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {RootRef as RootRef} from '@material-ui/core';\n\ntype Props = {\n children: React.ReactElement;\n handler: (isOverflow: boolean) => void;\n handleWidth?: boolean;\n};\n\nconst OverflowingHandler = ({children, handler, handleWidth = true}: Props) => {\n const checkOverflow = (el: HTMLElement) => el && el.clientWidth < el.scrollWidth;\n const resizeHandler = () => handler(checkOverflow(childrenRef.current));\n const childrenRef = useRef();\n return (\n <ReactResizeDetector handleWidth={handleWidth} onResize={resizeHandler}>\n <RootRef rootRef={childrenRef}>{children}</RootRef>\n </ReactResizeDetector>\n );\n};\nexport default OverflowingHandler;\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst NUMBER_CELL_WIDTH = 90;\nconst SORT_ICON_WIDTH = 22;\nconst BAR_PADDING_WIDHT = 32;\nconst textOverflow = {\n background: 'linear-gradient(to right, rgba(255, 255, 255, 0.2), #fff 100%)',\n content: '\"\"',\n height: '100%',\n pointerEvents: 'none',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '40px'\n};\nconst BarAxis = {\n background: 'rgba(0, 0, 0, 0.38)',\n bottom: 0,\n content: '\"\"',\n height: '3px',\n left: 0,\n position: 'absolute',\n width: '1px'\n};\n\nexport const useStyles = makeStyles((theme) => ({\n attribute: {\n '&:after': textOverflow,\n alignItems: 'center',\n color: theme.palette.text.primary,\n display: 'flex',\n fontSize: '13px',\n fontWeight: 'normal',\n height: '100%',\n lineHeight: '15px',\n overflow: 'hidden',\n padding: '0 16px',\n whiteSpace: 'pre'\n },\n bar: {\n borderRadius: '0 !important',\n minHeight: '16px !important',\n position: 'initial !important' as 'initial'\n },\n colorBarContainer: {\n '&>div': {\n opacity: 1\n },\n boxSizing: 'border-box',\n height: '100%',\n padding: '5px 0 6px',\n position: 'relative',\n width: '100%'\n },\n headCell: {\n '&>div': {\n display: 'flex',\n flexDirection: (isFirstColumn) => (isFirstColumn ? 'row' : 'row-revers'),\n flexGrow: 1,\n justifyContent: 'flex-start',\n marginLeft: (isFirstColumn) => !isFirstColumn && '-26px',\n paddingLeft: '16px',\n paddingRight: (isFirstColumn) => isFirstColumn && '0'\n },\n '&>div>span': {\n flexGrow: 1,\n justifyContent: (isFirstColumn) => (isFirstColumn ? 'flex-start' : 'flex-end'),\n marginLeft: '0!important',\n width: '100%'\n },\n height: '100%',\n lineHeight: '47px'\n },\n headCellWithRange: {\n '&>div': {\n display: 'flex',\n flexDirection: 'row-revers',\n flexGrow: 1,\n justifyContent: 'flex-start',\n padding: '0 10px 0 16px'\n },\n '&>div>span': {\n flexGrow: 1,\n justifyContent: 'flex-start!important',\n width: '100%'\n },\n height: '100%',\n lineHeight: '47px'\n },\n headLabel: {\n color: theme.palette.text.primary,\n fontSize: '12px',\n fontWeight: 500,\n lineHeight: '47px',\n overflow: 'hidden',\n position: 'relative',\n whiteSpace: 'nowrap',\n '&.overflowed:after': textOverflow\n },\n labelWrapper: {\n maxWidth: `${NUMBER_CELL_WIDTH}px`,\n '&.sortable': {\n maxWidth: `${NUMBER_CELL_WIDTH - SORT_ICON_WIDTH}px`\n }\n },\n number: {\n color: theme.palette.text.primary,\n flexShrink: 0,\n fontSize: '13px',\n fontWeight: 'normal',\n lineHeight: '15px',\n marginRight: '32px',\n overflow: 'hidden',\n textAlign: 'right',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n width: `${NUMBER_CELL_WIDTH}px`\n },\n numberContainer: {\n alignItems: 'center',\n display: 'flex',\n height: '100%',\n padding: '0 10px 0 16px'\n },\n rangeLabel: {\n '&:first-child': {\n flexGrow: 1\n },\n color: theme.palette.text.secondary,\n fontSize: '12px'\n },\n rangeWrapper: {\n '&:after': {\n ...BarAxis,\n left: 'initial',\n right: 0\n },\n '&:before': BarAxis,\n alignItems: 'flex-end',\n display: 'flex',\n flexGrow: 1,\n lineHeight: '24px',\n marginLeft: '32px',\n maxWidth: `calc(100% - ${NUMBER_CELL_WIDTH + BAR_PADDING_WIDHT}px)`,\n position: 'relative',\n '&.sortable': {\n height: '100%',\n maxWidth: `calc(100% - ${BAR_PADDING_WIDHT + NUMBER_CELL_WIDTH + SORT_ICON_WIDTH}px)`\n }\n },\n tooltipTitle: {\n color: 'rgba(255, 255, 255, 0.6)'\n },\n tooltipValue: {\n whiteSpace: 'pre-wrap'\n }\n}));\n","import classnames from 'classnames';\nimport React, {useState} from 'react';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\nimport DefaultHeadCellRenderer from 'react-components/dist/Table/DefaultHeadCellRenderer/DefaultHeadCellRenderer';\nimport {getLabelAndMaxValue} from '../helpers';\nimport OverflowingHandler from './OverflowingHandler';\nimport {Tooltip as Tooltip} from '@material-ui/core';\n\nimport {useStyles} from './styles';\n\ntype HeadCellRendererProps = {\n headCellData: {\n label: string;\n sortable?: boolean;\n };\n headIndex?: number;\n};\n\nconst HeadCellRenderer = ({headCellData, headIndex, ...otherProps}: HeadCellRendererProps) => {\n const isFirstColumn = headIndex === 0;\n const styles = useStyles(isFirstColumn);\n const {label, maxValue} = getLabelAndMaxValue(headCellData.label);\n const formattedMaxValue = formatNumberAsMetric(Number(maxValue), 999);\n const hasRange = !!maxValue;\n const [isOverflowing, setIsOverflowing] = useState<boolean>(false);\n const labelElement = (\n <OverflowingHandler handler={setIsOverflowing}>\n <Tooltip title={isOverflowing ? label : ''}>\n <div className={classnames(styles.headLabel, {overflowed: isOverflowing})}>{label}</div>\n </Tooltip>\n </OverflowingHandler>\n );\n\n return (\n <div className={classnames({[styles.headCell]: !hasRange, [styles.headCellWithRange]: hasRange})}>\n <DefaultHeadCellRenderer\n {...otherProps}\n headCellData={{\n ...headCellData,\n label: hasRange ? (\n <>\n <div\n className={classnames(styles.rangeWrapper, {\n sortable: headCellData.sortable\n })}\n >\n <span className={styles.rangeLabel}>0</span>\n <span className={styles.rangeLabel}>{formattedMaxValue}</span>\n </div>\n <div\n className={classnames({\n [styles.labelWrapper]: !headCellData.sortable,\n sortable: headCellData.sortable\n })}\n >\n {labelElement}\n </div>\n </>\n ) : (\n labelElement\n )\n }}\n />\n </div>\n );\n};\n\nexport default HeadCellRenderer;\n","import React from 'react';\n\nimport {TableColumnHeader} from '../../../types/TableColumnHeader';\nimport {TableChartData} from '../../../types/TableChartData';\nimport {getValueByColumnId} from '../helpers';\n\nimport ChartDataTooltip from '../../ChartDataTooltip/ChartDataTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n columnsHeaders: TableColumnHeader[];\n chartData: TableChartData;\n};\n\nconst TableCellTooltip = ({columnsHeaders, chartData}: Props) => {\n const styles = useStyles();\n return (\n <ChartDataTooltip\n data={columnsHeaders.map(({label, id}) => ({\n label: <span className={styles.tooltipValue}>{label}</span>,\n value: getValueByColumnId(id, chartData)\n }))}\n />\n );\n};\nexport default TableCellTooltip;\n","import classnames from 'classnames';\nimport React from 'react';\nimport {Tooltip as Tooltip} from '@material-ui/core';\n\nimport {useClickableStyle, withTableContext} from '@reltio/components';\nimport {utils} from '@reltio/mdm-sdk';\n\nimport {TableChartData} from '../../../types/TableChartData';\nimport {TableColumnHeader} from '../../../types/TableColumnHeader';\n\nimport TableCellTooltip from './TableCellTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value?: string;\n rowValue?: TableChartData;\n onClick?: () => void;\n columnData: {\n cellClassName?: string;\n labelRenderer?: React.ComponentType<{chartData: TableChartData}>;\n };\n columnsHeaders: TableColumnHeader[];\n};\n\nexport const LabelCellRenderer = ({value = '', columnData, rowValue: chartData, columnsHeaders, onClick}: Props) => {\n const {cellClassName, labelRenderer: LabelRenderer} = columnData;\n const styles = useStyles();\n const clickable = useClickableStyle(onClick);\n const hasCustomRenderer = !!LabelRenderer;\n\n return (\n <Tooltip title={<TableCellTooltip columnsHeaders={columnsHeaders} chartData={chartData} />}>\n <div className={classnames(styles.attribute, clickable, cellClassName)} onClick={onClick}>\n {hasCustomRenderer ? <LabelRenderer chartData={chartData} /> : utils.strings.removeLineBreaks(value)}\n </div>\n </Tooltip>\n );\n};\n\nexport default withTableContext(({onItemClick, columnsHeaders}, {rowValue: {group}}) => {\n return {\n onClick:\n onItemClick &&\n (() => {\n onItemClick(group);\n }),\n columnsHeaders\n };\n})(LabelCellRenderer);\n","import classnames from 'classnames';\nimport {isNil} from 'ramda';\nimport React from 'react';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {ChartData, ColorBar, useClickableStyle, withTableContext} from '@reltio/components';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\n\nimport {TableColumnHeader} from '../../../types/TableColumnHeader';\n\nimport TableCellTooltip from './TableCellTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n value: number;\n columnData: {\n maxValue?: number;\n };\n rowValue?: ChartData;\n onClick?: () => void;\n columnsHeaders: TableColumnHeader[];\n};\n\nexport const NumberCellValueRenderer = ({\n value,\n columnData: {maxValue},\n rowValue: chartData,\n columnsHeaders,\n onClick\n}: Props) => {\n const styles = useStyles();\n const clickable = useClickableStyle(onClick);\n const formattedValue = value === 0 ? '0' : formatNumberAsMetric(value, 999);\n return (\n <Tooltip title={<TableCellTooltip columnsHeaders={columnsHeaders} chartData={chartData} />}>\n <div className={classnames(styles.numberContainer, clickable)} onClick={onClick}>\n <Typography className={styles.number}>{formattedValue}</Typography>\n {!isNil(maxValue) && (\n <div className={styles.colorBarContainer}>\n <ColorBar width={value} maxWidth={maxValue} className={styles.bar} />\n </div>\n )}\n </div>\n </Tooltip>\n );\n};\n\nexport default withTableContext(({onItemClick, columnsHeaders}, {rowValue: {group}}) => {\n return {\n onClick:\n onItemClick &&\n (() => {\n onItemClick(group);\n }),\n columnsHeaders\n };\n})(NumberCellValueRenderer);\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype Dimensions = {\n width: number | string;\n height: number | string;\n};\n\nexport const useStyles = makeStyles({\n tableContainer: ({width, height}: Dimensions) => ({\n height: height,\n width: width,\n display: 'flex',\n flexDirection: 'column',\n '& .hoveredRow': {\n background: 'transparent'\n },\n '& .hoveredRow:after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: 'rgba(0,0,0,0.07)',\n pointerEvents: 'none'\n }\n }),\n cellBorder: {\n borderLeft: 'none',\n borderRight: 'none!important'\n }\n});\n","import React, {useMemo} from 'react';\nimport {omit, pick, pluck} from 'ramda';\nimport {BasicTable} from '@reltio/components';\nimport HeadCellRenderer from './cell-renderers/HeadCellRenderer';\nimport LabelCellRenderer from './cell-renderers/LabelCellRenderer';\nimport NumberCellValueRenderer from './cell-renderers/NumberCellValueRenderer';\nimport {TableChartData} from '../../types/TableChartData';\n\nimport {useStyles} from './styles';\n\nexport type ColumnsOptions = {\n id: string;\n label: string;\n width?: number;\n secondLabel?: string;\n sortable?: boolean;\n resizable?: boolean;\n cellClassName?: string;\n labelRenderer?: React.ComponentType<{chartData: TableChartData}>;\n};\n\ntype Props = {\n data: TableChartData[];\n width: number;\n height: number;\n onItemClick?: (group: string) => void;\n columnsOptions: ColumnsOptions[];\n basicTableRef?: React.MutableRefObject<any> | null;\n dataReltioId?: string;\n};\n\nconst ROW_HEIGHT = 28;\n\nconst getExtendedLabel = (label: string, secondLabel: string) => (secondLabel ? `${label} ${secondLabel}` : label);\n\nconst TableWithBars = ({\n width,\n height,\n data,\n columnsOptions,\n basicTableRef,\n onItemClick,\n dataReltioId,\n ...otherProps\n}: Props) => {\n const styles = useStyles({width, height});\n\n const tableClasses = useMemo(() => ({cellBorder: styles.cellBorder}), [styles]);\n const maxValue = useMemo(() => Math.max(...pluck('value', data)), [data]);\n\n const headData = useMemo(\n () =>\n columnsOptions.map((columnOptions) => ({\n resizable: false,\n sortable: false,\n headCellRenderer: HeadCellRenderer,\n rowCellValueRenderer: LabelCellRenderer,\n label: getExtendedLabel(columnOptions.label, columnOptions.secondLabel),\n initialWidth: width * columnOptions.width,\n ...(columnOptions.id === 'value'\n ? {\n label: getExtendedLabel(columnOptions.label, columnOptions.secondLabel).concat(\n `|${maxValue}`\n ),\n maxValue,\n rowCellValueRenderer: NumberCellValueRenderer\n }\n : {}),\n ...omit(['label', 'width'], columnOptions)\n })),\n [columnsOptions, maxValue, width]\n );\n\n const columnsHeaders = useMemo(() => columnsOptions.map(pick(['id', 'label'])), [columnsOptions]);\n\n const context = useMemo(\n () => ({\n onItemClick,\n columnsHeaders\n }),\n [onItemClick, columnsHeaders]\n );\n\n return (\n <div className={styles.tableContainer} data-reltio-id={dataReltioId}>\n <BasicTable\n columnsData={headData}\n rowsData={data}\n headRowHeight={48}\n getRowCellHeight={() => ROW_HEIGHT}\n classes={tableClasses}\n defaultColumnWidth={100}\n defaultColumnMinWidth={100}\n ref={basicTableRef}\n context={context}\n hoverStateEnabled\n {...otherProps}\n />\n </div>\n );\n};\n\nexport default TableWithBars;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n layoutItemContent: {\n padding: '0 0 10px'\n }\n}));\n","import React, {ReactElement, useCallback, useMemo, useState, useContext} from 'react';\nimport {withPercents, toggleSortOrder, RequestStates} from '@reltio/components';\nimport TableWithBars, {ColumnsOptions} from '../../../components/CustomTableWithBars/TableWithBars';\nimport {valueComparator as defaultComparator} from '../../../services/tableCharts';\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport {DQDashboardView} from '../../../types/DQDashboardView';\nimport {ErrorData} from '../../../types/ErrorData';\nimport {TableChartData} from '../../../types/TableChartData';\nimport TimeRangeChip from '../../../components/TimeRangeChip/TimeRangeChip';\nimport {TimeRangeContext} from '../../../contexts/TimeRangeContext';\n\nimport {useStyles} from './styles';\nimport {TimeRange} from '../../../types/TimeRange';\n\ntype Props = {\n config: DQDashboardView;\n data: TableChartData[];\n columnsOptions: ColumnsOptions[];\n title: string;\n state: RequestStates;\n onRefresh: () => void;\n infoTooltipTitle?: string | ReactElement;\n customComparator?: ({\n sortDirection,\n sortField\n }: {\n sortDirection: 'asc' | 'desc';\n sortField: string;\n }) => (a: TableChartData, b: TableChartData) => number;\n onItemClick?: (group: string) => void;\n titleChildren?: React.ReactNode;\n noDataComponentData?: ErrorData;\n};\n\nconst CustomTableWithBarsChart = ({\n config,\n data,\n title,\n columnsOptions,\n infoTooltipTitle,\n customComparator,\n onItemClick,\n titleChildren,\n state,\n onRefresh\n}: Props) => {\n const styles = useStyles();\n const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('desc');\n const [sortField, setSortField] = useState<string>('value');\n const comparator = useCallback(\n (a: TableChartData, b: TableChartData) =>\n customComparator\n ? customComparator({sortDirection, sortField})(a, b)\n : defaultComparator({sortDirection, sortField})(a, b),\n [sortDirection, sortField, customComparator]\n );\n const handleSort = (field: string) => {\n setSortDirection(() => (sortField === field ? toggleSortOrder(sortDirection) : sortDirection));\n setSortField(field);\n };\n const sortedData = useMemo(() => [...data.sort(comparator)], [comparator, data]);\n const timeRange = useContext(TimeRangeContext);\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {titleChildren}\n {timeRange !== TimeRange.TODAY && <TimeRangeChip disabled={true} />}\n </DQLayoutItemHeader>\n <DQLayoutItemContent\n className={styles.layoutItemContent}\n data={sortedData}\n loadingState={state}\n onRefresh={onRefresh}\n >\n {({data, width = 0, height = 0}) => {\n return (\n <TableWithBars\n {...{\n data,\n width,\n height,\n columnsOptions: columnsOptions,\n sorting: {\n field: sortField,\n order: sortDirection\n },\n onSort: handleSort,\n onItemClick\n }}\n />\n );\n }}\n </DQLayoutItemContent>\n </DQLayoutItemView>\n );\n};\n\nexport default withPercents(CustomTableWithBarsChart);\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"88\",\n height: \"88\",\n viewBox: \"0 0 88 88\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"44\",\n cy: \"44\",\n r: \"44\",\n fill: \"#0072CE\",\n fillOpacity: \".1\"\n}), React.createElement(\"mask\", {\n id: \"svg1830866123a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"0\",\n y: \"0\",\n width: \"88\",\n height: \"88\"\n}, React.createElement(\"circle\", {\n cx: \"44\",\n cy: \"44\",\n r: \"44\",\n fill: \"#fff\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg1830866123a)\"\n}, React.createElement(\"g\", {\n opacity: \".9\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n fill: \"#fff\"\n}, React.createElement(\"path\", {\n d: \"M12.375 18.688a7 7 0 017-7h75.742a7 7 0 017 7v49.02a7 7 0 01-7 7H19.375a7 7 0 01-7-7v-49.02z\"\n}), React.createElement(\"path\", {\n opacity: \".4\",\n d: \"M16.844 22.813a7 7 0 017-7h75.741a7 7 0 017 7v49.02a7 7 0 01-7 7H23.844a7 7 0 01-7-7v-49.02z\"\n})), React.createElement(\"ellipse\", {\n opacity: \".5\",\n cx: \"87.908\",\n cy: \"29.318\",\n rx: \"1.496\",\n ry: \"1.5\",\n fill: \"#6DBCFF\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.854 31.381a3.562 3.562 0 013.552-3.563 3.562 3.562 0 013.552 3.563 3.562 3.562 0 01-3.552 3.564 3.562 3.562 0 01-3.552-3.564z\",\n fill: \"#E3EBF4\"\n}), React.createElement(\"path\", {\n opacity: \".5\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 29.052c0-.726.588-1.313 1.313-1.313h23.983a1.313 1.313 0 110 2.626H32.01a1.313 1.313 0 01-1.313-1.313z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"path\", {\n opacity: \".43\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 33.553c0-.518.42-.938.938-.938h43.37a.938.938 0 010 1.876h-43.37a.938.938 0 01-.938-.938z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 36.554c0-.31.252-.563.563-.563h13.993a.563.563 0 110 1.126H31.26a.563.563 0 01-.563-.563z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"rect\", {\n opacity: \".5\",\n x: \"19.854\",\n y: \"17.689\",\n width: \"29.914\",\n height: \"4.126\",\n rx: \"2.063\",\n fill: \"#645F6D\"\n}), React.createElement(\"ellipse\", {\n opacity: \".5\",\n cx: \"87.908\",\n cy: \"43.573\",\n rx: \"1.496\",\n ry: \"1.5\",\n fill: \"#6DBCFF\"\n}), React.createElement(\"rect\", {\n x: \"19.854\",\n y: \"42.072\",\n width: \"7.105\",\n height: \"7.127\",\n rx: \"3.552\",\n fill: \"#E3EBF4\"\n}), React.createElement(\"path\", {\n opacity: \".5\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 43.306c0-.725.588-1.313 1.313-1.313h28.41a1.313 1.313 0 110 2.626H32.01a1.313 1.313 0 01-1.313-1.313z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"path\", {\n opacity: \".43\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 47.808c0-.518.42-.938.938-.938h48.23a.938.938 0 110 1.876h-48.23a.938.938 0 01-.938-.938z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 50.809c0-.31.252-.563.563-.563h38.884a.563.563 0 110 1.125H31.26a.563.563 0 01-.563-.562z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"ellipse\", {\n opacity: \".5\",\n cx: \"87.908\",\n cy: \"57.828\",\n rx: \"1.496\",\n ry: \"1.5\",\n fill: \"#6DBCFF\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.854 59.891a3.562 3.562 0 013.552-3.564 3.562 3.562 0 013.552 3.564 3.562 3.562 0 01-3.552 3.564 3.562 3.562 0 01-3.552-3.564z\",\n fill: \"#E3EBF4\"\n}), React.createElement(\"path\", {\n opacity: \".5\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 57.561c0-.725.588-1.313 1.313-1.313h38.132a1.313 1.313 0 110 2.626H32.01a1.313 1.313 0 01-1.313-1.313z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"path\", {\n opacity: \".43\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 62.063c0-.518.42-.938.938-.938h31.778a.938.938 0 110 1.875H31.635a.938.938 0 01-.938-.937z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M30.697 65.064c0-.311.252-.563.563-.563h13.993a.563.563 0 110 1.125H31.26a.563.563 0 01-.563-.562z\",\n fill: \"#B1AABD\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 3.094h88V88H0V3.094z\",\n fill: \"url(#paint0_linear_3200_4362)\"\n}), React.createElement(\"path\", {\n d: \"M79.893 76.85H21.308v14.184h58.585V76.85z\",\n fill: \"#F5C056\"\n}), React.createElement(\"path\", {\n d: \"M79.893 76.85H74.6v14.184h5.293V76.85z\",\n fill: \"#E99B00\"\n}), React.createElement(\"path\", {\n d: \"M48.73 76.893H26.283v14.184H48.73V76.893z\",\n fill: \"#FFEA5A\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M44.894 57.829c-1.687-4.26 13.113-4.043 11.413 0-1.353 3.218-1.353 7.53 0 12.934H44.894C46 64.93 46 60.618 44.894 57.83z\",\n fill: \"#FFD264\"\n}), React.createElement(\"path\", {\n d: \"M61.253 70.383H39.949v2.663h21.304v-2.663z\",\n fill: \"#FFD264\"\n}), React.createElement(\"path\", {\n d: \"M47.938 70.383h-4.185v2.663h4.185v-2.663z\",\n fill: \"#FFEA5A\"\n}), React.createElement(\"path\", {\n d: \"M64.676 73.046h-28.15v3.804h28.15v-3.804z\",\n fill: \"#795D1A\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M35.764 16.363v5.325H15.602v.143c0 13.634 8.992 24.714 20.162 24.961v2.994c-14-.986-25.108-15.488-25.108-33.233v-.19h25.108z\",\n fill: \"#FFCB64\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M64.677 16.363v5.325h20.161v.143c0 13.634-8.991 24.714-20.161 24.961v2.994c13.999-.986 25.107-15.488 25.107-33.233v-.19H64.677z\",\n fill: \"#ED985C\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M56.307 57.829c-1.353 3.218-1.353 7.53 0 12.934h-5.706V54.715c3.278.026 6.556 1.091 5.706 3.114z\",\n fill: \"#F4B046\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M64.676 73.046v3.804H50.601v-3.804h14.075z\",\n fill: \"#4F350B\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M61.253 70.383v2.663H50.6v-2.663h10.652z\",\n fill: \"#F4B046\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M74.933 10.656a102.429 102.429 0 01.01 2.663h-1.897l-.38 3.044h2.193c-1.138 25.55-13.019 45.65-24.448 45.65-11.43 0-23.311-20.1-24.449-45.65h2.194l-.38-3.044h-1.898a91.212 91.212 0 01.01-2.663h49.045z\",\n fill: \"#FFCE66\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M45.937 10.656c.006.569.01 1.14.01 1.712v.952h-.044l-.241 3.043h.294c.126 24.948 1.435 39.335 3.123 45.65-8.89-3.2-15.661-20.403-16.308-45.65h1.465l-.241-3.044h-1.271a158.252 158.252 0 01.006-2.663h13.207z\",\n fill: \"#FFEA5A\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M70.284 16.363h-3.91l.422-3.044h3.581a81.301 81.301 0 00-.01-2.663h4.566a102.429 102.429 0 01.01 2.663h-1.897l-.38 3.044h2.193c-1.138 25.55-13.019 45.65-24.448 45.65-.414 0-.828-.026-1.241-.078 11.92-1.382 19.899-20.946 21.114-45.572zm.083-5.707h-44.48 44.48z\",\n fill: \"#F4B046\"\n}), React.createElement(\"path\", {\n opacity: \".519\",\n d: \"M72.665 13.32h-44.51v3.043h44.51v-3.044z\",\n fill: \"#F4B046\"\n}), React.createElement(\"path\", {\n d: \"M48.318 73.046h-5.706v3.804h5.706v-3.804z\",\n fill: \"#96691F\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M65.526 10.656h4.235L58.973 35.935h-4.235l10.788-25.279z\",\n fill: \"url(#paint1_linear_3200_4362)\"\n}), React.createElement(\"g\", {\n filter: \"url(#filter0_d_3200_4362)\"\n}, React.createElement(\"path\", {\n d: \"M56.909 56.472c5.993 0 10.85-4.858 10.85-10.85 0-5.994-4.857-10.852-10.85-10.852-5.993 0-10.852 4.858-10.852 10.851 0 5.993 4.859 10.851 10.852 10.851z\",\n fill: \"#000\"\n})), React.createElement(\"path\", {\n d: \"M56.909 56.472c5.993 0 10.85-4.858 10.85-10.85 0-5.994-4.857-10.852-10.85-10.852-5.993 0-10.852 4.858-10.852 10.851 0 5.993 4.859 10.851 10.852 10.851z\",\n fill: \"#DD612C\"\n}), React.createElement(\"path\", {\n d: \"M56.909 54.302a8.681 8.681 0 100-17.362 8.681 8.681 0 000 17.362z\",\n fill: \"#FFCE66\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M56.909 36.94a8.685 8.685 0 018.347 6.291c-5.74.351-10.312 5.02-10.51 10.8a8.699 8.699 0 01-6.008-5.47A11.212 11.212 0 0054.9 37.174a8.684 8.684 0 012.008-.234z\",\n fill: \"#FFF18C\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M48.202 10.656l10.862 25.341H54.83L43.646 10.705l4.556-.049z\",\n fill: \"#F83D3D\"\n})), React.createElement(\"defs\", null, React.createElement(\"linearGradient\", {\n id: \"paint0_linear_3200_4362\",\n x1: \"0\",\n y1: \"3.094\",\n x2: \"0\",\n y2: \"88\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopColor: \"#FAFAFA\",\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#F4F4F4\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint1_linear_3200_4362\",\n x1: \"62.25\",\n y1: \"10.656\",\n x2: \"62.25\",\n y2: \"35.935\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopColor: \"#B93131\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#831616\"\n})), React.createElement(\"filter\", {\n id: \"filter0_d_3200_4362\",\n x: \"40.057\",\n y: \"30.77\",\n width: \"33.702\",\n height: \"33.703\",\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n}, React.createElement(\"feFlood\", {\n floodOpacity: \"0\",\n result: \"BackgroundImageFix\"\n}), React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",\n result: \"hardAlpha\"\n}), React.createElement(\"feOffset\", {\n dy: \"2\"\n}), React.createElement(\"feGaussianBlur\", {\n stdDeviation: \"3\"\n}), React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0.0335613 0 0 0 0 0.334579 0 0 0 0 0.412601 0 0 0 0.5 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_3200_4362\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_3200_4362\",\n result: \"shape\"\n})))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"88\",\n height: \"88\",\n viewBox: \"0 0 88 88\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"44\",\n cy: \"44\",\n r: \"44\",\n fill: \"#0072CE\",\n fillOpacity: \".1\"\n}), React.createElement(\"mask\", {\n id: \"svg355575424a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"0\",\n y: \"0\",\n width: \"88\",\n height: \"88\"\n}, React.createElement(\"circle\", {\n cx: \"44\",\n cy: \"44\",\n r: \"44\",\n fill: \"#fff\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg355575424a)\"\n}, React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M-5.5 3.094h88V88h-88V3.094z\",\n fill: \"url(#paint0_linear_3488_11934)\"\n}), React.createElement(\"path\", {\n opacity: \".05\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M64.543 19.547L84.7 39.704V90.88H32.1L17.875 77.372V19.547h46.668z\",\n fill: \"url(#paint1_linear_3488_11934)\"\n}), React.createElement(\"path\", {\n opacity: \".06\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.156 19.938h69.438A2.406 2.406 0 0188 22.343v53.968a2.406 2.406 0 01-2.406 2.407H16.156a2.406 2.406 0 01-2.406-2.406v-53.97a2.406 2.406 0 012.406-2.405z\",\n fill: \"#000\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.188 19.25H86.28c.95 0 1.719.77 1.719 1.719v53.968c0 .95-.77 1.72-1.719 1.72H17.187c-.949 0-1.718-.77-1.718-1.72V20.97c0-.95.77-1.719 1.719-1.719z\",\n fill: \"#fff\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.223 24.968c0-.57.462-1.031 1.031-1.031h14.309a1.031 1.031 0 010 2.063H37.254c-.57 0-1.031-.462-1.031-1.032z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.094 29.093c0-.57.462-1.031 1.031-1.031h22.07a1.031 1.031 0 010 2.063h-22.07c-.57 0-1.031-.462-1.031-1.032z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.223 56.031c0-.57.462-1.031 1.031-1.031h14.309a1.031 1.031 0 010 2.063H37.254c-.57 0-1.031-.462-1.031-1.032z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.094 60.156c0-.57.462-1.031 1.031-1.031h22.07a1.031 1.031 0 010 2.063h-22.07c-.57 0-1.031-.462-1.031-1.032z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.223 66.344c0-.57.462-1.031 1.031-1.031h28.059a1.031 1.031 0 010 2.062H37.254c-.57 0-1.031-.462-1.031-1.031z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.094 70.469c0-.57.462-1.031 1.031-1.031h25.508a1.031 1.031 0 010 2.062H37.125c-.57 0-1.031-.462-1.031-1.031z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.567 35.406c0-.57.461-1.031 1.03-1.031h28.06a1.031 1.031 0 110 2.063h-28.06c-.569 0-1.03-.462-1.03-1.032z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.438 39.531c0-.57.461-1.031 1.03-1.031H70.54a1.031 1.031 0 010 2.063H48.47c-.57 0-1.032-.462-1.032-1.032z\",\n fill: \"#979797\"\n}), React.createElement(\"circle\", {\n cx: \"23.031\",\n cy: \"27.156\",\n r: \"3.094\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.031\",\n cy: \"27.156\",\n r: \"3.094\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"41.25\",\n cy: \"36.438\",\n r: \"2.063\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"41.25\",\n cy: \"46.75\",\n r: \"2.063\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.031\",\n cy: \"58.094\",\n r: \"3.094\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.031\",\n cy: \"68.406\",\n r: \"3.094\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.567 45.719c0-.57.461-1.032 1.03-1.032h28.06a1.031 1.031 0 110 2.063h-28.06c-.569 0-1.03-.462-1.03-1.031z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.438 49.844c0-.57.461-1.032 1.03-1.032h25.509a1.031 1.031 0 010 2.063H48.469c-.57 0-1.032-.462-1.032-1.031z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M31.802 37.125v-2.75h-.688V48.251h3.843v-.688h-3.155v-9.75h3.155v-.688h-3.155z\",\n fill: \"#2B98F0\"\n}), React.createElement(\"path\", {\n opacity: \".54\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.68 26.469l-1.215 1.215-1.215-1.215h2.43z\",\n fill: \"#000\"\n}), React.createElement(\"path\", {\n opacity: \".6\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.188 7.563h63.937c1.14 0 2.063.923 2.063 2.062v6.188c0 1.139-.924 2.062-2.063 2.062H17.187a2.062 2.062 0 01-2.062-2.063V9.625c0-1.14.923-2.063 2.063-2.063z\",\n fill: \"#fff\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.938 12.719c0-1.14.923-2.063 2.062-2.063h24.063a2.063 2.063 0 010 4.125H22a2.062 2.062 0 01-2.063-2.062zM50.875 12.719c0-1.14.923-2.063 2.063-2.063h3.437a2.063 2.063 0 010 4.125h-3.438a2.062 2.062 0 01-2.062-2.062z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n d: \"M37.687 66.48l8.942 8.309v.958l19.925 19.702 31.064-.552 7.006-25.47-34.487-34.144-11.2.567c-3.238-1.86-5.34-3.02-6.306-3.48-.54-.258-.383 5.565-2.755 7.725-1.243 1.133-3.462 4.104-6.657 8.914l-5.532 17.47z\",\n fill: \"url(#paint2_linear_3488_11934)\"\n}), React.createElement(\"g\", {\n filter: \"url(#filter0_d_3488_11934)\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n}, React.createElement(\"path\", {\n d: \"M67.338 33.427a22.7 22.7 0 013.043 1.642l-.913 4.312a18.719 18.719 0 014.236 4.554l4.28-.699a23.425 23.425 0 012.392 6.47l-3.639 2.443c.262 2.058.2 4.18-.216 6.285l3.466 2.572a24.254 24.254 0 01-2.838 6.375l-4.231-.855a19.61 19.61 0 01-4.526 4.366l.62 4.34a23.426 23.426 0 01-6.409 2.551l-2.345-3.649a18.72 18.72 0 01-6.219-.1l-2.593 3.564a22.7 22.7 0 01-6.224-2.757l.912-4.304a18.715 18.715 0 01-4.281-4.567l-4.285.7a23.424 23.424 0 01-2.4-6.438l3.633-2.44a19.607 19.607 0 01.21-6.384l-3.465-2.57a24.263 24.263 0 012.823-6.34l4.229.855a19.605 19.605 0 014.604-4.429l-.618-4.332c2-1.154 4.155-2.005 6.39-2.524l2.347 3.652a18.713 18.713 0 016.259.125l2.588-3.557c1.069.296 2.128.675 3.17 1.14zM60.075 49.74c-2.804-1.248-6.112.064-7.388 2.93-1.276 2.867-.038 6.203 2.766 7.452 2.804 1.248 6.112-.064 7.388-2.93 1.276-2.867.038-6.203-2.766-7.452z\",\n fill: \"#6B93AC\"\n}), React.createElement(\"path\", {\n d: \"M67.338 33.427a22.7 22.7 0 013.043 1.642l-.913 4.312c.779.597 1.503 1.25 2.168 1.95l-10.07 9.392a5.444 5.444 0 00-1.491-.983c-2.804-1.248-6.112.064-7.388 2.93a5.7 5.7 0 00.626 5.749l-10.071 9.39c-.502-.585-.965-1.2-1.39-1.84l-4.284.7a23.424 23.424 0 01-2.4-6.437l3.633-2.44a19.607 19.607 0 01.21-6.384l-3.465-2.57a24.263 24.263 0 012.823-6.34l4.229.855a19.605 19.605 0 014.604-4.429l-.618-4.332c2-1.154 4.155-2.005 6.39-2.524l2.347 3.652a18.713 18.713 0 016.259.125l2.588-3.557c1.069.296 2.128.675 3.17 1.14z\",\n fill: \"#7CA6BF\"\n}), React.createElement(\"path\", {\n d: \"M62.886 42.644c6.409 2.854 9.24 10.479 6.322 17.03-2.917 6.553-10.478 9.552-16.887 6.698-6.409-2.853-9.24-10.478-6.322-17.03 2.917-6.553 10.478-9.551 16.887-6.698zm-1.32 2.966c-4.808-2.14-10.478.109-12.666 5.023-2.188 4.914-.065 10.633 4.742 12.773 4.806 2.14 10.477-.108 12.665-5.023 2.188-4.914.065-10.633-4.742-12.773z\",\n fill: \"#AAC4D5\"\n}), React.createElement(\"path\", {\n d: \"M62.886 42.644a12.424 12.424 0 014.22 3.075l-2.366 2.207a9.317 9.317 0 00-3.175-2.316c-4.807-2.14-10.477.109-12.665 5.023-1.635 3.673-.863 7.795 1.638 10.536l-2.367 2.208c-3.325-3.656-4.35-9.145-2.172-14.035 2.917-6.553 10.478-9.551 16.887-6.698z\",\n fill: \"#CBDDE9\"\n}))), React.createElement(\"defs\", null, React.createElement(\"linearGradient\", {\n id: \"paint0_linear_3488_11934\",\n x1: \"-5.5\",\n y1: \"3.094\",\n x2: \"-5.5\",\n y2: \"88\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopColor: \"#FAFAFA\",\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#F4F4F4\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint1_linear_3488_11934\",\n x1: \"91.478\",\n y1: \"62.257\",\n x2: \"53.241\",\n y2: \"26.703\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint2_linear_3488_11934\",\n x1: \"86.975\",\n y1: \"77.519\",\n x2: \"49.809\",\n y2: \"46.968\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopColor: \"#90A4AE\",\n stopOpacity: \"0\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopOpacity: \".75\"\n})), React.createElement(\"filter\", {\n id: \"filter0_d_3488_11934\",\n x: \"32.168\",\n y: \"30.067\",\n width: \"53.209\",\n height: \"53.716\",\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n}, React.createElement(\"feFlood\", {\n floodOpacity: \"0\",\n result: \"BackgroundImageFix\"\n}), React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",\n result: \"hardAlpha\"\n}), React.createElement(\"feOffset\", {\n dx: \"1\",\n dy: \"2\"\n}), React.createElement(\"feGaussianBlur\", {\n stdDeviation: \"2\"\n}), React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_3488_11934\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_3488_11934\",\n result: \"shape\"\n})))));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => React.createElement(\"svg\", _extends({\n width: \"88\",\n height: \"88\",\n viewBox: \"0 0 88 88\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"circle\", {\n cx: \"44\",\n cy: \"44\",\n r: \"44\",\n fill: \"#0072CE\",\n fillOpacity: \".1\"\n}), React.createElement(\"mask\", {\n id: \"svg1954152798a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"0\",\n y: \"0\",\n width: \"88\",\n height: \"88\"\n}, React.createElement(\"circle\", {\n cx: \"44\",\n cy: \"44\",\n r: \"44\",\n fill: \"#fff\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg1954152798a)\"\n}, React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M-5.5 3.094h88V88h-88V3.094z\",\n fill: \"url(#paint0_linear_4523_4542)\"\n}), React.createElement(\"path\", {\n opacity: \".05\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M64.543 19.547L84.7 39.704V90.88H32.1L17.875 77.372V19.547h46.668z\",\n fill: \"url(#paint1_linear_4523_4542)\"\n}), React.createElement(\"path\", {\n opacity: \".06\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.156 19.938h69.438A2.406 2.406 0 0188 22.343v53.968a2.406 2.406 0 01-2.406 2.407H16.156a2.406 2.406 0 01-2.406-2.406v-53.97a2.406 2.406 0 012.406-2.405z\",\n fill: \"#000\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.188 19.25H86.28c.95 0 1.719.77 1.719 1.719v53.968c0 .95-.77 1.72-1.719 1.72H17.187c-.949 0-1.718-.77-1.718-1.72V20.97c0-.95.77-1.719 1.719-1.719z\",\n fill: \"#fff\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.223 24.968c0-.57.462-1.031 1.031-1.031h14.309a1.031 1.031 0 010 2.063H37.254c-.57 0-1.031-.462-1.031-1.032z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.094 29.093c0-.57.462-1.031 1.031-1.031h22.07a1.031 1.031 0 110 2.063h-22.07c-.57 0-1.031-.462-1.031-1.032z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.223 56.031c0-.57.462-1.031 1.031-1.031h14.309a1.031 1.031 0 010 2.063H37.254c-.57 0-1.031-.462-1.031-1.032z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.094 60.156c0-.57.462-1.031 1.031-1.031h22.07a1.031 1.031 0 110 2.063h-22.07c-.57 0-1.031-.462-1.031-1.032z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.223 66.344c0-.57.462-1.031 1.031-1.031h28.059a1.031 1.031 0 010 2.063H37.254c-.57-.001-1.031-.463-1.031-1.032z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M36.094 70.469c0-.57.462-1.031 1.031-1.031h25.508a1.031 1.031 0 010 2.063H37.125c-.57-.001-1.031-.463-1.031-1.032z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.567 35.406c0-.57.461-1.031 1.03-1.031h28.06a1.031 1.031 0 010 2.063h-28.06c-.569 0-1.03-.462-1.03-1.032z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.438 39.531c0-.57.461-1.031 1.03-1.031H70.54a1.031 1.031 0 010 2.063H48.47c-.57 0-1.032-.462-1.032-1.032z\",\n fill: \"#979797\"\n}), React.createElement(\"circle\", {\n cx: \"23.031\",\n cy: \"27.156\",\n r: \"3.094\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.031\",\n cy: \"27.156\",\n r: \"3.094\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"41.25\",\n cy: \"36.438\",\n r: \"2.063\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"41.25\",\n cy: \"46.75\",\n r: \"2.063\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.031\",\n cy: \"58.094\",\n r: \"3.094\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"circle\", {\n cx: \"23.031\",\n cy: \"68.406\",\n r: \"3.094\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.567 45.719c0-.57.461-1.032 1.03-1.032h28.06a1.031 1.031 0 010 2.063h-28.06c-.569 0-1.03-.462-1.03-1.031z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.438 49.844c0-.57.461-1.032 1.03-1.032h25.509a1.031 1.031 0 010 2.063H48.469c-.57 0-1.032-.462-1.032-1.031z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M31.802 37.125v-2.75h-.688V48.251h3.843v-.688h-3.155v-9.75h3.155v-.688h-3.155z\",\n fill: \"#2B98F0\"\n}), React.createElement(\"path\", {\n opacity: \".54\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.68 26.469l-1.215 1.215-1.215-1.215h2.43z\",\n fill: \"#000\"\n}), React.createElement(\"path\", {\n opacity: \".6\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M17.188 7.563h63.937c1.14 0 2.063.923 2.063 2.062v6.188c0 1.139-.924 2.062-2.063 2.062H17.187a2.062 2.062 0 01-2.062-2.063V9.625c0-1.14.923-2.063 2.063-2.063z\",\n fill: \"#fff\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.938 12.719c0-1.14.923-2.063 2.062-2.063h24.063a2.062 2.062 0 010 4.125H22a2.062 2.062 0 01-2.063-2.062zM50.875 12.719c0-1.14.923-2.063 2.063-2.063h3.437a2.062 2.062 0 110 4.125h-3.438a2.062 2.062 0 01-2.062-2.062z\",\n fill: \"#979797\"\n}), React.createElement(\"g\", {\n filter: \"url(#filter0_d_4523_4542)\"\n}, React.createElement(\"path\", {\n d: \"M57.406 74.25c9.493 0 17.188-7.695 17.188-17.188 0-9.492-7.695-17.187-17.188-17.187-9.492 0-17.187 7.695-17.187 17.188 0 9.492 7.695 17.187 17.187 17.187z\",\n fill: \"#000\"\n})), React.createElement(\"path\", {\n d: \"M57.406 74.25c9.493 0 17.188-7.695 17.188-17.188 0-9.492-7.695-17.187-17.188-17.187-9.492 0-17.187 7.695-17.187 17.188 0 9.492 7.695 17.187 17.187 17.187z\",\n fill: \"#4A90E2\"\n}), React.createElement(\"path\", {\n opacity: \".15\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M57.406 34.719c12.34 0 22.344 10.003 22.344 22.343S69.746 79.406 57.406 79.406c-12.34 0-22.343-10.003-22.343-22.344 0-12.34 10.003-22.343 22.343-22.343zm-.172 2.406c-10.916 0-19.765 8.85-19.765 19.766 0 10.916 8.85 19.765 19.765 19.765C68.151 76.656 77 67.806 77 56.891c0-10.917-8.85-19.766-19.766-19.766z\",\n fill: \"#4A90E2\"\n}), React.createElement(\"path\", {\n opacity: \".3\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M57.406 38.844c10.062 0 18.219 8.157 18.219 18.218 0 10.062-8.157 18.22-18.219 18.22-10.062 0-18.218-8.158-18.218-18.22 0-10.061 8.156-18.218 18.218-18.218zm0 2.043c-8.933 0-16.175 7.242-16.175 16.175 0 8.934 7.242 16.176 16.175 16.176 8.934 0 16.176-7.242 16.176-16.175 0-8.934-7.242-16.176-16.176-16.176z\",\n fill: \"#4A90E2\"\n}), React.createElement(\"path\", {\n opacity: \".05\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M57.406 26.469C74.303 26.469 88 40.166 88 57.062c0 16.897-13.697 30.594-30.594 30.594-16.896 0-30.593-13.697-30.593-30.594 0-16.896 13.697-30.593 30.593-30.593zm-.172 3.437c-14.903 0-26.984 12.082-26.984 26.985 0 14.903 12.081 26.984 26.984 26.984 14.903 0 26.985-12.081 26.985-26.984 0-14.903-12.082-26.985-26.985-26.985z\",\n fill: \"#4A90E2\"\n}), React.createElement(\"path\", {\n d: \"M57.406 71.844c8.164 0 14.782-6.618 14.782-14.781 0-8.164-6.618-14.782-14.782-14.782-8.163 0-14.781 6.618-14.781 14.782 0 8.163 6.618 14.78 14.781 14.78z\",\n fill: \"#61A3F1\"\n}), React.createElement(\"path\", {\n opacity: \".05\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M58.298 46.448L75.18 63.33 66.066 75.41h-2.029l-7.582-7.582 1.006-3.178.837-18.201z\",\n fill: \"url(#paint2_linear_4523_4542)\"\n}), React.createElement(\"g\", {\n filter: \"url(#filter1_d_4523_4542)\"\n}, React.createElement(\"circle\", {\n cx: \"57.406\",\n cy: \"47.781\",\n r: \"1.719\",\n fill: \"#fff\"\n})), React.createElement(\"g\", {\n filter: \"url(#filter2_d_4523_4542)\"\n}, React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M55.688 53.969a1.719 1.719 0 113.438 0v12.375a1.719 1.719 0 11-3.438 0V53.969z\",\n fill: \"#fff\"\n}))), React.createElement(\"defs\", null, React.createElement(\"linearGradient\", {\n id: \"paint0_linear_4523_4542\",\n x1: \"-5.5\",\n y1: \"3.094\",\n x2: \"-5.5\",\n y2: \"88\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopColor: \"#FAFAFA\",\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#F4F4F4\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint1_linear_4523_4542\",\n x1: \"91.478\",\n y1: \"62.257\",\n x2: \"53.241\",\n y2: \"26.703\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint2_linear_4523_4542\",\n x1: \"77.079\",\n y1: \"63.788\",\n x2: \"62.929\",\n y2: \"54.707\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\"\n})), React.createElement(\"filter\", {\n id: \"filter0_d_4523_4542\",\n x: \"36.219\",\n y: \"37.875\",\n width: \"42.375\",\n height: \"42.375\",\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n}, React.createElement(\"feFlood\", {\n floodOpacity: \"0\",\n result: \"BackgroundImageFix\"\n}), React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",\n result: \"hardAlpha\"\n}), React.createElement(\"feOffset\", {\n dy: \"2\"\n}), React.createElement(\"feGaussianBlur\", {\n stdDeviation: \"2\"\n}), React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_4523_4542\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_4523_4542\",\n result: \"shape\"\n})), React.createElement(\"filter\", {\n id: \"filter1_d_4523_4542\",\n x: \"51.688\",\n y: \"44.063\",\n width: \"11.438\",\n height: \"11.438\",\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n}, React.createElement(\"feFlood\", {\n floodOpacity: \"0\",\n result: \"BackgroundImageFix\"\n}), React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",\n result: \"hardAlpha\"\n}), React.createElement(\"feOffset\", {\n dy: \"2\"\n}), React.createElement(\"feGaussianBlur\", {\n stdDeviation: \"2\"\n}), React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_4523_4542\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_4523_4542\",\n result: \"shape\"\n})), React.createElement(\"filter\", {\n id: \"filter2_d_4523_4542\",\n x: \"51.688\",\n y: \"50.25\",\n width: \"11.438\",\n height: \"23.813\",\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n}, React.createElement(\"feFlood\", {\n floodOpacity: \"0\",\n result: \"BackgroundImageFix\"\n}), React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\",\n result: \"hardAlpha\"\n}), React.createElement(\"feOffset\", {\n dy: \"2\"\n}), React.createElement(\"feGaussianBlur\", {\n stdDeviation: \"2\"\n}), React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_4523_4542\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_4523_4542\",\n result: \"shape\"\n})))));","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n title: {\n whiteSpace: 'nowrap',\n height: '24px',\n display: 'flex',\n alignItems: 'center',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n titleCount: {\n overflow: 'hidden',\n lineHeight: '24px',\n textOverflow: 'ellipsis'\n },\n viewContent: {\n height: '100%',\n overflow: 'hidden',\n position: 'relative',\n padding: '0 16px 10px'\n },\n countProfiles: {\n color: theme.palette.text.primary,\n fontWeight: 700\n }\n}));\n","import React, {ReactElement} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {Link as Link} from '@material-ui/core';\nimport i18n from 'ui-i18n';\nimport {BasicViewContent, EMPTY_STATE_ICONS} from '@reltio/components';\nimport {DQDataLevel} from '@reltio/mdm-sdk';\nimport NiceOneIcon from '../icons/niceOne.svg';\nimport SettingsIcon from '../icons/settingsIcon.svg';\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport NotSupportedIcon from '../icons/notSupportedIcon.svg';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport DQDashboardNoData from '../../../components/DQDashboardNoData/DQDashboardNoData';\nimport {DQDashboardView} from '../../../types/DQDashboardView';\nimport {useStyles} from './styles';\n\nexport enum VVFNoDataChartType {\n DVF_NOT_SUPPORTED = 'dvfNotSupported',\n DVF_NOT_CONFIGURE = 'dvfNotConfigured',\n DATA_VALID = 'dataValid',\n PERMISSION_DENIED = 'permissionDenied'\n}\ntype Props = {\n chartType?: VVFNoDataChartType;\n dataLevel: DQDataLevel;\n title: string;\n infoTooltipTitle?: string | ReactElement;\n titleChildren?: React.ReactNode;\n dvfConfigLink: string;\n config: DQDashboardView;\n};\n\nconst VVFChartNoData = ({\n chartType,\n dataLevel,\n title: chartTitle,\n infoTooltipTitle,\n titleChildren,\n dvfConfigLink,\n config\n}: Props) => {\n const styles = useStyles();\n let icon, message, title;\n const dataSourceLabel =\n dataLevel === DQDataLevel.ATTRIBUTE_TYPE ? i18n.text('attribute type') : i18n.text('entity type');\n switch (chartType) {\n case VVFNoDataChartType.DVF_NOT_SUPPORTED: {\n icon = NotSupportedIcon;\n title = i18n.text('Data validation functions are not supported for\\nReference attributes at this time.');\n break;\n }\n case VVFNoDataChartType.DVF_NOT_CONFIGURE: {\n icon = SettingsIcon;\n message = i18n.text('If we spot any validation issues, we’ll display them here.');\n title = (\n <>\n <Link\n href={dvfConfigLink}\n target=\"_blank\"\n component={dvfConfigLink ? 'a' : 'span'}\n color={dvfConfigLink ? 'primary' : 'inherit'}\n underline={dvfConfigLink ? 'hover' : 'none'}\n data-reltio-id=\"reltio-dq-dashboard-define-dvf-link\"\n >\n {`${i18n.text('Define some data validation functions')} `}\n </Link>\n {i18n.text('for this ${dataSourceLabel} (or ask your Tenant Admin).', {dataSourceLabel})}\n </>\n );\n break;\n }\n case VVFNoDataChartType.DATA_VALID: {\n icon = NiceOneIcon;\n message = i18n.text(\n 'We didn’t spot any validation issues for this ${dataSourceLabel}.\\nYou can kick back and enjoy a cold one.',\n {dataSourceLabel}\n );\n title = i18n.text('Nice one!');\n break;\n }\n case VVFNoDataChartType.PERMISSION_DENIED: {\n icon = EMPTY_STATE_ICONS.ERROR;\n message = i18n.text('Please contact your Tenant Admin to change permissions');\n title = i18n.text('You don’t currently have permission to view this chart');\n }\n }\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={chartTitle} infoTooltipTitle={infoTooltipTitle}>\n {titleChildren}\n </DQLayoutItemHeader>\n <BasicViewContent className={styles.viewContent}>\n <ReactResizeDetector refreshMode=\"debounce\" refreshRate={100} handleHeight>\n {({height = 0}) => (\n <DQDashboardNoData\n height={height}\n data={{\n Icon: icon,\n title,\n message\n }}\n />\n )}\n </ReactResizeDetector>\n </BasicViewContent>\n </DQLayoutItemView>\n );\n};\n\nexport default VVFChartNoData;\n","import {isNil} from 'ramda';\nimport React from 'react';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport i18n from 'ui-i18n';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n isDataValid: boolean;\n totalProfiles: number;\n invalidProfiles: number;\n};\nexport const TitleChildrenValue = ({isDataValid, totalProfiles, invalidProfiles}: Props) => {\n const styles = useStyles();\n\n const getTitleChildrenValue = () => {\n if (isDataValid) {\n return i18n.text('0 profiles');\n }\n\n return !isNil(invalidProfiles) ? (\n <>\n <span className={styles.countProfiles}>{formatNumberAsMetric(invalidProfiles)}</span>\n {` (${Math.round((invalidProfiles / totalProfiles) * 100)}% ${i18n.text(\n 'out of'\n )} ${formatNumberAsMetric(totalProfiles)}) ${\n invalidProfiles !== 1 ? i18n.text('profiles') : i18n.text('profile')\n }`}\n </>\n ) : null;\n };\n return <Typography className={styles.titleCount}>{getTitleChildrenValue()}</Typography>;\n};\n","import React, {useContext, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {propEq, pluck} from 'ramda';\n\nimport i18n from 'ui-i18n';\nimport mdmModule from '@reltio/mdm-module';\nimport {ApiErrorCode, DataValidationFunction, DQDataLevel, Metadata, StatusVF} from '@reltio/mdm-sdk';\nimport {RequestStates} from '@reltio/components';\n\nimport {DataLevelContext} from '../../../contexts/DataLevelContext';\nimport {DetailedAttributeTypeContext} from '../../../contexts/DetailedAttributeTypeContext';\nimport {DVFContext} from '../../../contexts/DVFContext';\nimport {EntityTypeContext} from '../../../contexts/EntityTypeContext';\nimport {useChartData} from '../../../hooks/useChartData';\nimport {useEntityCount} from '../../../hooks/useEntityCount';\nimport {useInvalidProfiles} from '../../../hooks/useInvalidProfiles';\nimport {useSearchRedirect} from '../../../hooks/useSearchRedirect';\nimport {ViewProps} from '../../../types/ViewProps';\nimport {getDVFsForAttribute} from '../../../services/attributes';\nimport {isReferenceChild} from '../../../services/attributeDetails';\nimport {\n getValidationChartData,\n getEntityLevelValidationChartData,\n getValidationSearchState,\n valueComparator\n} from '../../../services/tableCharts';\nimport {getColumnsOptions} from './helpers';\n\nimport CustomTableWithBarsChart from '../CustomTableWithBarsChart/CustomTableWithBarsChart';\nimport VVFChartNoData, {VVFNoDataChartType} from './VVFChartNodata';\nimport {ChartDataTooltip, InfoDataRenderer} from '../../../components/ChartDataTooltip';\nimport {TitleChildrenValue} from './TitleChildrenValue';\n\nconst ViolatedValidationFuncChart = (props: ViewProps) => {\n const {config} = props;\n\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const dataLevel = useContext(DataLevelContext);\n const isAttributeDataLevel = dataLevel === DQDataLevel.ATTRIBUTE_TYPE;\n const {dvfs, dvfConfigLink} = useContext(DVFContext);\n const {data: dvfsData, state: dvfsState, reload: dvfsReload, errorCode} = dvfs;\n const attributeType = useContext(DetailedAttributeTypeContext);\n const entityType = useContext(EntityTypeContext);\n const entityTypeUri = entityType.uri;\n\n const currentDvfs: DataValidationFunction[] = useMemo(\n () => (isAttributeDataLevel ? getDVFsForAttribute(dvfsData, attributeType?.uri) : dvfsData) || [],\n [isAttributeDataLevel, dvfsData, attributeType?.uri]\n );\n const activeDvfs = useMemo(() => currentDvfs.filter(propEq('status', StatusVF.ACTIVE)), [currentDvfs]);\n const {data: chartData, state: chartDataState, reload: chartDataReload} = useChartData(\n isAttributeDataLevel\n ? getValidationChartData(activeDvfs)\n : getEntityLevelValidationChartData(activeDvfs, metadata)\n );\n const entityTypesArray = useMemo(() => [entityType], [entityType]);\n const dvfUris = useMemo(() => pluck('uri', activeDvfs), [activeDvfs]);\n const invalidProfiles = useInvalidProfiles({\n entityTypeUri,\n dvfUris\n });\n const getEntityCounts = useEntityCount(entityTypesArray);\n const totalProfiles = getEntityCounts(entityTypeUri);\n const searchProfiles = useSearchRedirect(getValidationSearchState(activeDvfs));\n const chartState = useMemo(() => {\n if (dvfsState === RequestStates.LOADED && chartDataState === RequestStates.LOADED) return RequestStates.LOADED;\n return dvfsState === RequestStates.ERROR || chartDataState === RequestStates.ERROR\n ? RequestStates.ERROR\n : RequestStates.LOADING;\n }, [chartDataState, dvfsState]);\n const reloadFunction = useMemo(() => {\n return () => {\n dvfsState === RequestStates.ERROR && dvfsReload();\n chartDataState === RequestStates.ERROR && chartDataReload();\n };\n }, [chartDataState, dvfsState, dvfsReload, chartDataReload]);\n const isPermissionDenied = errorCode === ApiErrorCode.ACCESS_DENIED;\n\n const isDVFNotSupported = isAttributeDataLevel && isReferenceChild(attributeType);\n const isDVFNotConfigured =\n errorCode === ApiErrorCode.DVF_NOT_CONFIGURED ||\n (activeDvfs?.length === 0 && chartState !== RequestStates.ERROR && dvfsState === RequestStates.LOADED);\n const isDataValid = chartState === RequestStates.LOADED && activeDvfs?.length > 0 && chartData.length === 0;\n const isLoadingError = chartState === RequestStates.ERROR && errorCode !== ApiErrorCode.DVF_NOT_CONFIGURED;\n const titleChildren = !isLoadingError && !isDVFNotConfigured && chartState !== RequestStates.LOADING && (\n <TitleChildrenValue isDataValid={isDataValid} totalProfiles={totalProfiles} invalidProfiles={invalidProfiles} />\n );\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Profiles with invalid data')}\n data={[{value: i18n.text('Shows the number of profiles that violate active validation functions')}]}\n DataRenderer={InfoDataRenderer}\n />\n );\n const getChartDataType = () => {\n if (isDVFNotSupported) return VVFNoDataChartType.DVF_NOT_SUPPORTED;\n if (isDVFNotConfigured) return VVFNoDataChartType.DVF_NOT_CONFIGURE;\n if (isDataValid) return VVFNoDataChartType.DATA_VALID;\n if (isPermissionDenied) return VVFNoDataChartType.PERMISSION_DENIED;\n };\n\n const columnsOptions = getColumnsOptions(dataLevel, chartData);\n\n return isDVFNotConfigured || isDataValid || isPermissionDenied ? (\n <VVFChartNoData\n config={config}\n chartType={getChartDataType()}\n title={i18n.text(config.title)}\n infoTooltipTitle={infoTooltipTitle}\n titleChildren={titleChildren}\n dvfConfigLink={dvfConfigLink}\n dataLevel={dataLevel}\n />\n ) : (\n <CustomTableWithBarsChart\n config={config}\n title={i18n.text(config.title)}\n data={chartData}\n onItemClick={searchProfiles}\n titleChildren={titleChildren}\n state={chartState}\n onRefresh={reloadFunction}\n customComparator={valueComparator}\n infoTooltipTitle={infoTooltipTitle}\n columnsOptions={columnsOptions}\n />\n );\n};\n\nexport default ViolatedValidationFuncChart;\n","import {useEffect, useState} from 'react';\nimport {FilterOptions, getTotals} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nexport const useInvalidProfiles = ({entityTypeUri, dvfUris}: {entityTypeUri: string; dvfUris: string[]}) => {\n const [invalidProfilesCount, setInvalidProfilesCount] = useState<number>(null);\n const safePromise = useSafePromise();\n\n useEffect(() => {\n const filter = [\n {\n fieldName: 'type',\n filter: FilterOptions.EQUALS,\n values: [entityTypeUri]\n },\n {\n fieldName: 'analyticsAttributes.AttributeValidations.FunctionURI',\n filter: FilterOptions.EQUALS,\n values: dvfUris\n }\n ];\n safePromise(getTotals(filter))\n .then(({total}) => setInvalidProfilesCount(total))\n .catch(() => setInvalidProfilesCount(null));\n }, [entityTypeUri, dvfUris]);\n\n return invalidProfilesCount;\n};\n","import React, {useContext, useMemo} from 'react';\nimport {TooltipProps} from 'recharts';\n\nimport i18n from 'ui-i18n';\nimport {DQDataLevel, formatNumberAsMetric, TimeSeriesMetric} from '@reltio/mdm-sdk';\n\nimport {getTimeSeriesData, isTimeSeriesHasData} from '../../../services/mlDq';\nimport {useMlDqDataRequest} from '../../../hooks/useMlDqDataRequest';\nimport {DetailedAttributeTypeContext} from '../../../contexts/DetailedAttributeTypeContext';\nimport {EntityTypeContext} from '../../../contexts/EntityTypeContext';\nimport {useReloadFacet} from '../../../contexts/ReloadFacetContext';\nimport {LineChartData} from '../../../types/LineChartData';\nimport {TimeRangeContext} from '../../../contexts/TimeRangeContext';\nimport {ViewProps} from '../../../types/ViewProps';\nimport {getViolatedValidationData, ViolatedValidationTimeSeriesData} from './helpers';\n\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport LineChart from '../../../components/LineChart/LineChart';\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport TimeRangeChip from '../../../components/TimeRangeChip/TimeRangeChip';\nimport {ChartDataTooltip, InfoDataRenderer} from '../../../components/ChartDataTooltip';\nimport {TimeSeriesInfoPanel} from '../../../components/TimeSeriesInfoPanel/TimeSeriesInfoPanel';\n\nconst INFO_PANEL_HEIGHT = 36;\n\n// TODO get rid of temporary hardcoded metric\nconst VIOLATED_PROFILES_METRIC = 'violatedProfiles';\nconst metrics = [VIOLATED_PROFILES_METRIC as TimeSeriesMetric];\n\nconst getTooltip = ({active, payload}: TooltipProps) => {\n if (active && payload && payload.length) {\n const {payload: currentPayload} = payload[0];\n const data = [\n {\n value: `${currentPayload.violatedPercentage}% (${formatNumberAsMetric(\n +currentPayload.violatedProfilesCount\n )} ${i18n.text('profiles')})`\n }\n ];\n return <ChartDataTooltip title={i18n.date(currentPayload.group, 'MMM D, YYYY')} data={data} />;\n }\n};\n\nconst ViolatedValidationFuncTimeSeriesChart = (props: ViewProps) => {\n const {config} = props;\n const {title} = config;\n const timeRange = useContext(TimeRangeContext);\n const entityType = useContext(EntityTypeContext);\n const detailedAttributeType = useContext(DetailedAttributeTypeContext);\n const entityTypeUri = entityType.uri;\n const attributeFieldName = detailedAttributeType.fieldName;\n const {data, state, reload} = useMlDqDataRequest({\n entityTypeUri,\n attributeFieldName,\n timeRange,\n metrics\n });\n\n const chartData: LineChartData[] = useMemo(() => getTimeSeriesData(getViolatedValidationData)(data), [data]);\n\n useReloadFacet({\n state,\n reload,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Profiles with invalid data')}\n data={[{value: i18n.text('Shows the number of profiles that violate active validation functions')}]}\n DataRenderer={InfoDataRenderer}\n />\n );\n const infoLabel = `${i18n.text('No. of profiles')}:`;\n const dateLabel = `${i18n.text('Today')}`;\n\n const hasData = isTimeSeriesHasData(ViolatedValidationTimeSeriesData.VIOLATED_PERCENTAGE, chartData);\n\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n <TimeRangeChip />\n </DQLayoutItemHeader>\n <DQLayoutItemContent data={hasData && chartData} loadingState={state} onRefresh={reload}>\n {({data, width, height}) => (\n <>\n <TimeSeriesInfoPanel\n infoLabel={infoLabel}\n dateLabel={dateLabel}\n chartData={data}\n percentKey={ViolatedValidationTimeSeriesData.VIOLATED_PERCENTAGE}\n dataKey={ViolatedValidationTimeSeriesData.VIOLATED_PROFILES_COUNT}\n />\n <LineChart\n width={width}\n height={height - INFO_PANEL_HEIGHT}\n data={data}\n keys={metrics}\n getTooltip={getTooltip}\n yAxisLabel={i18n.text('Percentage of profiles with invalid data')}\n />\n </>\n )}\n </DQLayoutItemContent>\n </DQLayoutItemView>\n );\n};\n\nexport default ViolatedValidationFuncTimeSeriesChart;\n","import React from 'react';\n\nimport {ViewProps} from '../../../types/ViewProps';\nimport {checkIsTimeSeries} from '../../../services/mlDq';\n\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport ViolatedValidationFuncChartToday from './ViolatedValidationFuncChart';\nimport ViolatedValidationFuncTimeSeriesChart from './ViolatedValidationFuncTimeSeriesChart';\n\nconst ViolatedValidationFuncChart = (props: ViewProps) => {\n const {config} = props;\n const isTimeSeries = checkIsTimeSeries(config);\n return (\n <DQLayoutItemView config={config}>\n {isTimeSeries ? (\n <ViolatedValidationFuncTimeSeriesChart {...props} />\n ) : (\n <ViolatedValidationFuncChartToday {...props} />\n )}\n </DQLayoutItemView>\n );\n};\n\nexport default ViolatedValidationFuncChart;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n monoFontCell: {\n fontFamily: '\"Roboto Mono\", monospace'\n }\n});\n","import React, {useContext} from 'react';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {isDateType, isSSNType} from '@reltio/mdm-sdk';\nimport {getFrequencyChartData, getFrequencyAnalysisSearchState} from '../../services/tableCharts';\nimport CustomTableWithBarsChart from './CustomTableWithBarsChart/CustomTableWithBarsChart';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {ViewProps} from '../../types/ViewProps';\nimport {convertDateLabelsInChartData} from '../../services/charts';\nimport {getRowsCounterLabel} from '../../services/tableCharts';\nimport {DetailedAttributeTypeContext} from '../../contexts/DetailedAttributeTypeContext';\nimport {ChartDataTooltip, InfoDataRenderer} from '../../components/ChartDataTooltip';\n\nimport {useStyles} from './styles';\n\nconst FrequencyAnalysisChart = ({config}: ViewProps) => {\n const styles = useStyles();\n\n const {data: chartData, state, reload} = useChartData(getFrequencyChartData);\n const attributeType: string = useContext(DetailedAttributeTypeContext).type;\n const preparedData = isDateType(attributeType) ? convertDateLabelsInChartData(chartData, attributeType) : chartData;\n const searchProfiles = useSearchRedirect(getFrequencyAnalysisSearchState);\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Frequency analysis')}\n data={[{value: i18n.text('Shows the number of times each value occurs')}]}\n DataRenderer={InfoDataRenderer}\n />\n );\n\n const columnsOptions = [\n {\n id: 'label',\n label: i18n.text('Value'),\n secondLabel: getRowsCounterLabel(chartData),\n width: 0.4,\n cellClassName: classnames({[styles.monoFontCell]: isSSNType(attributeType)})\n },\n {\n id: 'value',\n label: i18n.text('Count'),\n width: 0.6\n }\n ];\n\n return (\n <CustomTableWithBarsChart\n config={config}\n data={preparedData}\n title={config.title}\n infoTooltipTitle={infoTooltipTitle}\n onItemClick={searchProfiles}\n state={state}\n onRefresh={reload}\n columnsOptions={columnsOptions}\n />\n );\n};\n\nexport default FrequencyAnalysisChart;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme & {tooltip: Record<string, string | number>}) => ({\n tooltipWrapper: {\n ...theme.tooltip,\n padding: '4px 8px'\n }\n}));\n","import React from 'react';\nimport {TooltipProps} from 'recharts';\nimport i18n from 'ui-i18n';\nimport ChartDataTooltip from '../../../../components/ChartDataTooltip/ChartDataTooltip';\nimport {useStyles} from './styles';\n\ntype Props = TooltipProps & {\n name?: string;\n};\n\nexport const BarTooltip = ({payload, active, name}: Props) => {\n const tooltipPayload = payload?.[0]?.payload;\n const value = tooltipPayload?.value;\n const tooltipLabel = tooltipPayload?.label;\n const propertiesName = name ? `${name}` : '';\n const styles = useStyles();\n return (\n active && (\n <div className={styles.tooltipWrapper}>\n <ChartDataTooltip\n data={[\n {label: propertiesName, value: tooltipLabel},\n {label: i18n.text('No of profiles'), value: i18n.number(value)}\n ]}\n />\n </div>\n )\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n chartInfoLabel: {\n fontSize: '13px',\n lineHeight: '15px',\n color: 'rgba(0, 0, 0, 0.54)',\n paddingRight: '8px'\n },\n chartInfoValue: {\n fontSize: '13px',\n lineHeight: '15px',\n color: 'rgba(0, 0, 0, 0.87)'\n },\n chartInfoWrapper: {\n display: 'flex',\n backgroundColor: 'rgba(0, 0, 0, 0.05)',\n margin: '0 12px 12px',\n padding: '9px 12px 8px'\n },\n chartInfoItem: {\n marginRight: '16px'\n },\n clickable: {\n cursor: 'pointer'\n },\n title: {\n marginRight: '50px',\n fontSize: '16px'\n },\n root: {\n padding: '0 0 0 16px',\n minHeight: 'auto',\n marginTop: '12px',\n marginBottom: '12px'\n }\n}));\n","import React from 'react';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {InfoPanelData} from '../../../types/InfoPanelData';\nimport {useStyles} from './styles';\n\ntype Props = {\n data: InfoPanelData[];\n};\n\nexport const InfoPanel = ({data}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.chartInfoWrapper}>\n {data.map(({label, value, localizedValue}) => (\n <div key={label} className={styles.chartInfoItem}>\n <span className={styles.chartInfoLabel}>{label}: </span>\n {value !== localizedValue ? (\n <Tooltip title={localizedValue}>\n <span className={styles.chartInfoValue}>{value}</span>\n </Tooltip>\n ) : (\n <span className={styles.chartInfoValue}>{value}</span>\n )}\n </div>\n ))}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles(() => ({\n labelWrapper: ({width}: {width: number}) => ({\n overflow: 'hidden',\n width: `${width}px`,\n marginTop: '-3px'\n }),\n xAxisLabel: {\n textAlign: 'center',\n whiteSpace: 'nowrap',\n fontSize: '12px',\n '&::first-letter': {textTransform: 'capitalize'},\n '&:after': {\n top: '0',\n right: '0',\n width: '10px',\n height: '100%',\n content: '\"\"',\n position: 'absolute',\n background: 'linear-gradient(to right, rgba(255, 255, 255, 0.2), #fff 100%)',\n pointerEvents: 'none'\n }\n }\n}));\n","import React from 'react';\nimport {ExpandedValueTooltip} from '@reltio/components';\nimport {ContentRenderer} from 'recharts';\nimport {TickProps} from '../../../../types/TickProps';\nimport {useStyles} from './styles';\n\nconst SPACE_BETWEEN_LABELS = 4;\n\ntype Props = {\n width: number;\n height: number;\n label: string;\n x: number;\n y: number;\n};\nexport const XAxisLabel = ({width, height, label, x, y}: Props) => {\n const styles = useStyles({width});\n\n const xCoord = x - width / 2;\n\n return (\n <foreignObject x={xCoord} y={y} width={width} height={height}>\n <div className={styles.labelWrapper}>\n <ExpandedValueTooltip value={label}>\n <div className={styles.xAxisLabel}>{label}</div>\n </ExpandedValueTooltip>\n </div>\n </foreignObject>\n );\n};\n\nexport const renderXAxis: ContentRenderer<TickProps> = (tickProps) => {\n const {x, y, width, height, payload, visibleTicksCount} = tickProps;\n const {value} = payload;\n const maxTickWidth = width / visibleTicksCount - SPACE_BETWEEN_LABELS;\n\n return <XAxisLabel width={maxTickWidth} height={height} label={value} x={x} y={y} />;\n};\n","import {BarProps, CartesianGridProps, XAxisProps, YAxisProps, LabelProps, BarChartProps} from 'recharts';\nimport BarChartOptions from '../../../types/BarChartOptions';\nimport {tickFormatter} from '../../../services/barCharts';\nimport {MIN_CHART_BAR_SIZE} from '../../../services/charts';\nimport {renderXAxis} from './XAxisLabel/XAxisLabel';\n\ntype BarChartSettings = {\n barChart: BarChartProps;\n bar: BarProps;\n xAxis: XAxisProps;\n yAxis: YAxisProps;\n cartesianGrid: CartesianGridProps;\n labelForX: LabelProps;\n labelForY: LabelProps;\n};\n\nconst getBarChartSettings = ({\n showCategories = false,\n interval,\n barCategoryGap,\n maxBarSize,\n yTickRenderer,\n tickCount\n}: BarChartOptions): BarChartSettings => {\n return {\n barChart: {\n barCategoryGap: barCategoryGap || '10%'\n },\n bar: {\n dataKey: 'value',\n fill: '#0072CE',\n minPointSize: MIN_CHART_BAR_SIZE,\n maxBarSize: maxBarSize || 50\n },\n xAxis: {\n tick: showCategories && renderXAxis,\n tickLine: false,\n interval: interval ? interval : 0,\n dataKey: 'label'\n },\n yAxis: {\n axisLine: false,\n tickLine: false,\n tick: yTickRenderer || {fill: '#000', fontSize: 12},\n width: 60,\n tickFormatter: tickFormatter,\n tickCount: tickCount || 5\n },\n cartesianGrid: {\n stroke: '#000',\n strokeOpacity: '0.05',\n vertical: false\n },\n labelForX: {\n position: 'insideBottom',\n style: {\n textAnchor: 'middle',\n fontSize: '10px',\n fill: 'rgba(0, 0, 0, 0.54)'\n },\n offset: showCategories ? -3 : 3\n },\n labelForY: {\n angle: 270,\n position: 'left',\n offset: -3,\n style: {\n textAnchor: 'middle',\n fontSize: '10px',\n fill: 'rgba(0, 0, 0, 0.54)'\n }\n }\n };\n};\n\nexport default getBarChartSettings;\n","import React from 'react';\nimport {Rectangle, RectangleProps} from 'recharts';\nimport {useStyles} from './styles';\n\ntype Props = RectangleProps & {\n isClickable: boolean;\n};\n\nconst CustomBackgroundOnHover = ({isClickable, ...rectangleProps}: Props) => {\n const styles = useStyles();\n const className = isClickable ? styles.clickable : undefined;\n return (\n <Rectangle {...rectangleProps} className={className} fill=\"#000\" opacity=\"0.1\" pointerEvents=\"visibleFill\" />\n );\n};\nexport default CustomBackgroundOnHover;\n","import React from 'react';\nimport {Rectangle, RectangleProps} from 'recharts';\n\ntype Props = RectangleProps & {\n value?: number;\n};\n\nconst CustomBar = (props: Props) => {\n const {value} = props;\n return value > 0 ? <Rectangle {...props} /> : null;\n};\nexport default CustomBar;\n","import React, {useContext} from 'react';\nimport {Bar, BarChart, CartesianGrid, Label, Tooltip as ChartTooltip, XAxis, YAxis} from 'recharts';\nimport {ChartData, RequestStates} from '@reltio/components';\nimport {TimeRangeContext} from '../../../contexts/TimeRangeContext';\nimport {BarTooltip} from './BarTooltip/BarTooltip';\nimport {InfoPanel} from './InfoPanel';\nimport getBarChartSettings from './getBarChartSettings';\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport CustomBackgroundOnHover from './CustomBackgroundOnHover';\nimport CustomBar from './CustomBar';\nimport TimeRangeChip from '../../../components/TimeRangeChip/TimeRangeChip';\n\nimport {DQDashboardView} from '../../../types/DQDashboardView';\nimport {InfoPanelData} from '../../../types/InfoPanelData';\nimport BarChartOptions from '../../../types/BarChartOptions';\n\nimport {useStyles} from './styles';\nimport {TimeRange} from '../../../types/TimeRange';\n\ntype Props = {\n config: DQDashboardView;\n data: ChartData[];\n xAxisLabel: string;\n yAxisLabel: string;\n state: RequestStates;\n onRefresh: () => void;\n onItemClick?: (group: string) => void;\n infoPanelData?: InfoPanelData[];\n infoTooltipTitle?: React.ReactNode;\n barTooltipTitle?: string;\n options?: BarChartOptions;\n titleChildren?: React.ReactNode;\n};\n\nconst CustomBarChart = ({\n data,\n config,\n xAxisLabel,\n yAxisLabel,\n barTooltipTitle,\n infoPanelData,\n infoTooltipTitle,\n onItemClick,\n options = {},\n state,\n onRefresh\n}: Props) => {\n const styles = useStyles();\n const {title} = config;\n const {cartesianGrid, bar, xAxis, yAxis, labelForX, labelForY, barChart} = getBarChartSettings(options);\n const onBarClick = onItemClick && (({activePayload}) => onItemClick(activePayload[0].payload.group));\n const clickable = onBarClick ? styles.clickable : undefined;\n const showInfoPanel = state === RequestStates.LOADED && infoPanelData.length > 0;\n const timeRange = useContext(TimeRangeContext);\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {timeRange !== TimeRange.TODAY && <TimeRangeChip disabled={true} />}\n </DQLayoutItemHeader>\n {showInfoPanel && <InfoPanel data={infoPanelData} />}\n <DQLayoutItemContent data={data} loadingState={state} onRefresh={onRefresh}>\n {({data, width = 0, height = 0}) => {\n return (\n <div>\n <BarChart width={width} height={height} data={data} onClick={onBarClick} {...barChart}>\n <CartesianGrid {...cartesianGrid} />\n <ChartTooltip\n content={<BarTooltip name={barTooltipTitle} />}\n cursor={<CustomBackgroundOnHover isClickable={!!onBarClick} />}\n />\n <Bar {...bar} shape={<CustomBar className={clickable} />} />\n <YAxis {...yAxis}>\n <Label {...labelForY} value={yAxisLabel} />\n </YAxis>\n <XAxis {...xAxis}>\n <Label {...labelForX} value={xAxisLabel} />\n </XAxis>\n </BarChart>\n </div>\n );\n }}\n </DQLayoutItemContent>\n </DQLayoutItemView>\n );\n};\n\nexport default CustomBarChart;\n","import React from 'react';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {getLengthChartData, getLengthStatisticsSearchState} from '../../services/barCharts';\nimport {ViewProps} from '../../types/ViewProps';\nimport CustomBarChart from './CustomBarChart/CustomBarChart';\nimport {ChartDataTooltip, InfoDataRenderer} from '../../components/ChartDataTooltip';\nimport i18n from 'ui-i18n';\n\nconst LengthStatisticsChart = ({config}: ViewProps) => {\n const {data, state, reload} = useChartData(getLengthChartData);\n const {chartData, infoPanelData} = data;\n const searchProfiles = useSearchRedirect(getLengthStatisticsSearchState);\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Length statistics')}\n data={[{value: i18n.text('Measures the string length of values')}]}\n DataRenderer={InfoDataRenderer}\n />\n );\n return (\n <CustomBarChart\n config={config}\n data={chartData}\n xAxisLabel={i18n.text('Length of values')}\n yAxisLabel={i18n.text('No. of profiles')}\n infoPanelData={infoPanelData}\n barTooltipTitle={i18n.text('Length')}\n infoTooltipTitle={infoTooltipTitle}\n onItemClick={searchProfiles}\n state={state}\n onRefresh={reload}\n />\n );\n};\nexport default LengthStatisticsChart;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useLabelStyles = makeStyles({\n icon: {\n width: '20px',\n height: '20px',\n borderRadius: '4px',\n fontSize: '14px',\n marginRight: '8px'\n },\n text: ({color}: {color: string}) => ({\n backgroundColor: color\n })\n});\n","import React from 'react';\nimport {getSourceColor} from '@reltio/mdm-sdk';\nimport {SourceIcon} from '@reltio/components';\nimport {TableChartData} from '../../../types/TableChartData';\n\nimport {useLabelStyles} from './styles';\n\nconst SourceLabelRenderer = ({chartData}: {chartData: TableChartData}) => {\n const {group, label} = chartData;\n const styles = useLabelStyles({color: getSourceColor(group)});\n return (\n <>\n <SourceIcon sourceType={group} className={styles.icon} classes={{textRoot: styles.text}} />\n {label}\n </>\n );\n};\n\nexport default SourceLabelRenderer;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {useChartData} from '../../../hooks/useChartData';\nimport {useSearchRedirect} from '../../../hooks/useSearchRedirect';\nimport {getCrosswalkAnalysisData, getCrosswalkAnalysisSearchState} from '../../../services/barCharts';\nimport CustomTableWithBarsChart from '../CustomTableWithBarsChart/CustomTableWithBarsChart';\nimport {valueComparator} from '../../../services/tableCharts';\nimport SourceLabelRenderer from './SourceLabelRenderer';\nimport {ChartDataTooltip, InfoDataRenderer} from '../../../components/ChartDataTooltip';\nimport {ViewProps} from '../../../types/ViewProps';\nimport {Metadata} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useSelector} from 'react-redux';\n\nconst CrosswalkAnalysisChart = ({config}: ViewProps) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const {data, state, reload} = useChartData(getCrosswalkAnalysisData(metadata));\n const {chartData} = data;\n const searchProfiles = useSearchRedirect(getCrosswalkAnalysisSearchState);\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Source system analysis')}\n data={[{value: i18n.text('Distribution of source systems contributing to profiles')}]}\n DataRenderer={InfoDataRenderer}\n />\n );\n const columnsOptions = [\n {\n id: 'label',\n label: i18n.text('Source system'),\n secondLabel: `(${chartData.length})`,\n width: 0.4,\n sortable: true,\n labelRenderer: SourceLabelRenderer\n },\n {\n id: 'value',\n label: i18n.text('Profiles'),\n width: 0.6,\n sortable: true\n }\n ];\n return (\n <CustomTableWithBarsChart\n config={{...config}}\n data={chartData}\n title={config.title}\n infoTooltipTitle={infoTooltipTitle}\n onItemClick={searchProfiles}\n state={state}\n onRefresh={reload}\n customComparator={valueComparator}\n columnsOptions={columnsOptions}\n />\n );\n};\nexport default CrosswalkAnalysisChart;\n","import React, {useContext} from 'react';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {getValueDistributionData} from '../../services/barCharts';\nimport {getValueDistributionSearchState} from '../../services/barCharts';\nimport {ViewProps} from '../../types/ViewProps';\nimport CustomBarChart from './CustomBarChart/CustomBarChart';\nimport {DetailedAttributeTypeContext} from '../../contexts/DetailedAttributeTypeContext';\nimport i18n from 'ui-i18n';\n\nconst ValueDistributionChart = ({config}: ViewProps) => {\n const attributeType: string = useContext(DetailedAttributeTypeContext).type;\n const {data, state, reload} = useChartData(getValueDistributionData(attributeType));\n const {chartData, infoPanelData} = data;\n const searchProfiles = useSearchRedirect(getValueDistributionSearchState(attributeType));\n return (\n <CustomBarChart\n config={config}\n data={chartData}\n xAxisLabel={i18n.text('Value')}\n yAxisLabel={i18n.text('No. of profiles')}\n infoPanelData={infoPanelData}\n barTooltipTitle={i18n.text('Value')}\n onItemClick={searchProfiles}\n state={state}\n onRefresh={reload}\n />\n );\n};\nexport default ValueDistributionChart;\n","import React from 'react';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {getMonthDistributionData, getMonthDistributionSearchState} from '../../services/barCharts';\nimport {ViewProps} from '../../types/ViewProps';\nimport CustomBarChart from './CustomBarChart/CustomBarChart';\nimport i18n from 'ui-i18n';\n\nconst MonthDistributionChart = ({config}: ViewProps) => {\n const {data, state, reload} = useChartData(getMonthDistributionData);\n const {chartData, infoPanelData} = data;\n const searchProfiles = useSearchRedirect(getMonthDistributionSearchState);\n\n return (\n <CustomBarChart\n config={config}\n data={chartData}\n xAxisLabel={i18n.text('Months of the year')}\n yAxisLabel={i18n.text('No. of profiles')}\n infoPanelData={infoPanelData}\n barTooltipTitle={i18n.text('Months of the year')}\n options={{showCategories: true, barCategoryGap: '20%', interval: 'preserveStartEnd'}}\n onItemClick={searchProfiles}\n state={state}\n onRefresh={reload}\n />\n );\n};\nexport default MonthDistributionChart;\n","import React from 'react';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {getDayOfWeekDistributionData, getDayOfweekDistributionSearchState} from '../../services/barCharts';\nimport {ViewProps} from '../../types/ViewProps';\nimport CustomBarChart from './CustomBarChart/CustomBarChart';\nimport i18n from 'ui-i18n';\n\nconst DayOfWeekDistributionChart = ({config}: ViewProps) => {\n const {data, state, reload} = useChartData(getDayOfWeekDistributionData);\n const {chartData, infoPanelData} = data;\n const searchProfiles = useSearchRedirect(getDayOfweekDistributionSearchState);\n\n return (\n <CustomBarChart\n config={config}\n data={chartData}\n xAxisLabel={i18n.text('Days of the week')}\n yAxisLabel={i18n.text('No. of profiles')}\n infoPanelData={infoPanelData}\n barTooltipTitle={i18n.text('Days of the week')}\n options={{showCategories: true, barCategoryGap: '25%', interval: 'preserveStartEnd'}}\n onItemClick={searchProfiles}\n state={state}\n onRefresh={reload}\n />\n );\n};\nexport default DayOfWeekDistributionChart;\n","import React from 'react';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {getDayOfMonthDistributionData, getDayOfMonthDistributionSearchState} from '../../services/barCharts';\nimport {ViewProps} from '../../types/ViewProps';\nimport CustomBarChart from './CustomBarChart/CustomBarChart';\nimport i18n from 'ui-i18n';\n\nconst DayOfMonthDistributionChart = ({config}: ViewProps) => {\n const {data, state, reload} = useChartData(getDayOfMonthDistributionData);\n const {chartData, infoPanelData} = data;\n const searchProfiles = useSearchRedirect(getDayOfMonthDistributionSearchState);\n\n return (\n <CustomBarChart\n config={config}\n data={chartData}\n xAxisLabel={i18n.text('Days of the month')}\n yAxisLabel={i18n.text('No. of profiles')}\n infoPanelData={infoPanelData}\n barTooltipTitle={i18n.text('Days of the month')}\n options={{showCategories: true, interval: 1}}\n onItemClick={searchProfiles}\n state={state}\n onRefresh={reload}\n />\n );\n};\nexport default DayOfMonthDistributionChart;\n","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {getPatternAnalisysData, getPatternAnalysisSearchState} from '../../services/tableCharts';\nimport CustomTableWithBarsChart from './CustomTableWithBarsChart/CustomTableWithBarsChart';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {ViewProps} from '../../types/ViewProps';\nimport ChartDataTooltip from '../../components/ChartDataTooltip/ChartDataTooltip';\nimport {getRowsCounterLabel} from '../../services/tableCharts';\nimport {useStyles} from './styles';\n\nconst PatternAnalysisChart = ({config}: ViewProps) => {\n const styles = useStyles();\n const {data: chartData, state, reload} = useChartData(getPatternAnalisysData);\n const searchProfiles = useSearchRedirect(getPatternAnalysisSearchState);\n const infoTooltipTitle = <ChartDataTooltip title={i18n.text('Pattern analysis')} data={[]} />;\n const columnsOptions = [\n {\n id: 'label',\n label: i18n.text('Value'),\n secondLabel: getRowsCounterLabel(chartData),\n width: 0.4,\n cellClassName: styles.monoFontCell\n },\n {\n id: 'value',\n label: i18n.text('Count'),\n width: 0.6\n }\n ];\n return (\n <CustomTableWithBarsChart\n config={config}\n data={chartData}\n title={config.title}\n infoTooltipTitle={infoTooltipTitle}\n onItemClick={searchProfiles}\n state={state}\n onRefresh={reload}\n columnsOptions={columnsOptions}\n />\n );\n};\n\nexport default PatternAnalysisChart;\n","import {curry, keys, mergeAll, omit, pipe} from 'ramda';\nimport React from 'react';\nimport {Bar, BarChart, CartesianGrid, Label, Tooltip as ChartTooltip, XAxis, YAxis} from 'recharts';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\nimport BarChartOptions from '../../../types/BarChartOptions';\nimport getBarChartSettings from './getBarChartSettings';\nimport {useStyles} from './styles';\n\ntype StackedBarChartData = {\n label: string;\n group: string;\n} & {[index: string]: number | string};\n\ntype Props = {\n data: StackedBarChartData[];\n xAxisLabel?: string;\n yAxisLabel?: string;\n onItemClick?: (key: string, group: string) => void;\n getTooltip?: (payload: {active: boolean}) => React.ReactNode;\n getBarOpacity?: (key: string) => number;\n getBarColor: (key: string) => string;\n onBarSelect?: (key: string) => (data: unknown) => void;\n showTopLabel?: boolean;\n width: number;\n height: number;\n options?: BarChartOptions;\n dataReltioId?: string;\n};\n\nconst StackedBarChart = ({\n xAxisLabel,\n yAxisLabel,\n data,\n getTooltip,\n getBarOpacity,\n onBarSelect,\n width,\n height,\n showTopLabel = false,\n options = {},\n onItemClick,\n getBarColor,\n dataReltioId\n}: Props) => {\n const styles = useStyles();\n const {cartesianGrid, xAxis, yAxis, labelForX, labelForY, barChart, bar} = getBarChartSettings(options);\n const onBarClick = curry((key, payload) => onItemClick && onItemClick(key, payload.group));\n const clickable = onItemClick ? styles.clickable : undefined;\n const getBars = (chartData: StackedBarChartData[]) => {\n const uniqueDataKeys = pipe(mergeAll, omit(['label', 'group']), keys)(chartData);\n const getBarLabel = curry((index: number, {x, y, width, value}) =>\n showTopLabel && index === uniqueDataKeys.length - 1 ? (\n <text x={x + width / 2} textAnchor=\"middle\" y={y - 5} fontSize=\"12px\">\n {formatNumberAsMetric(value, 999)}\n </text>\n ) : null\n );\n return uniqueDataKeys.map((key: string, index: number) => (\n <Bar\n stackId={'all'}\n dataKey={key}\n opacity={getBarOpacity ? getBarOpacity(key) : 1}\n fill={getBarColor(key)}\n onMouseOver={onBarSelect(key)}\n onMouseLeave={onBarSelect(null)}\n key={key}\n label={getBarLabel(index)}\n maxBarSize={bar.maxBarSize}\n onClick={onBarClick(key)}\n className={clickable}\n />\n ));\n };\n\n return (\n <div data-reltio-id={dataReltioId}>\n <BarChart width={width} height={height} data={data} {...barChart} margin={{top: 15}}>\n <CartesianGrid {...cartesianGrid} />\n <ChartTooltip content={getTooltip} cursor={null} />\n {getBars(data)}\n <YAxis {...yAxis}>\n <Label {...labelForY} value={yAxisLabel} />\n </YAxis>\n <XAxis {...xAxis}>\n <Label {...labelForX} value={xAxisLabel} />\n </XAxis>\n </BarChart>\n </div>\n );\n};\nexport default StackedBarChart;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useIconStyles = makeStyles({\n icon: ({color}: {color: string}) => ({\n backgroundColor: color,\n flexShrink: 0,\n fontSize: '14px',\n height: '12px',\n margin: ' 0 8px 0 0',\n width: '12px'\n })\n});\n\nexport const useStyles = makeStyles((theme: Theme & {tooltip: Record<string, string | number>}) => ({\n consolidationRateWrapper: {\n display: 'flex'\n },\n ratePercent: {\n fontWeight: 700,\n lineHeight: '24px',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n tableWithSelectedRow: {\n '& .Table__grid__cell_wrapper_EWDDh': {\n opacity: 0.12\n },\n '& .Table__grid__cell_wrapper_EWDDh.hoveredRow': {\n opacity: 1\n }\n },\n tooltipWrapper: {\n ...theme.tooltip,\n padding: '4px 8px'\n }\n}));\n","import React from 'react';\n\nimport i18n from 'ui-i18n';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {DQChartsData, formatNumberAsMetric} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nexport const ConsolidationPercentage = ({data}: {data: DQChartsData}) => {\n const styles = useStyles();\n const {totalCrosswalks, totalEntities} = data.consolidationRate;\n const reltioCleanser = data.consolidationRate.totalCrosswalksBySource['ReltioCleanser'] || 0;\n const percent = ((1 - totalEntities / (totalCrosswalks - reltioCleanser)) * 100).toFixed(1);\n const formattedPercent = percent.split('.')[1] == '0' ? percent.split('.')[0] : i18n.number(Number(percent));\n\n return (\n <Typography>\n <span className={styles.ratePercent}>{formattedPercent}% </span>\n <span>\n {`(${formatNumberAsMetric(totalCrosswalks - reltioCleanser, 999)} ${i18n.text(\n 'to'\n )} ${formatNumberAsMetric(totalEntities, 999)} ${i18n.text('profiles')})`}\n </span>\n </Typography>\n );\n};\n","import React from 'react';\nimport {getSourceColor} from '@reltio/mdm-sdk';\nimport {TableChartData} from '../../../types/TableChartData';\n\nimport {useIconStyles} from './styles';\n\nconst SourceLabelRenderer = ({chartData}: {chartData: TableChartData}) => {\n const {group, label} = chartData;\n const styles = useIconStyles({color: getSourceColor(group)});\n return (\n <>\n <div className={styles.icon} />\n {label}\n </>\n );\n};\n\nexport default SourceLabelRenderer;\n","import React from 'react';\nimport {ContentRenderer} from 'recharts';\nimport {tickFormatter} from '../../../services/barCharts';\nimport {TickProps} from '../../../types/TickProps';\n\nexport const YAxisTickRenderer: ContentRenderer<TickProps> = (tickProps) => {\n const {\n x,\n y,\n payload: {value},\n index\n } = tickProps;\n if (index % 2 === 0)\n return (\n <text fill=\"#000\" x={x} y={y} textAnchor=\"middle\" fontSize=\"12px\">\n {tickFormatter(Number(value))}\n </text>\n );\n return null;\n};\n","import classnames from 'classnames';\nimport {isNil, pick, propEq} from 'ramda';\nimport React, {useCallback, useContext, useMemo, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\nimport {ChartData} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {getSourceColor, getSourceSystemLabel, Metadata} from '@reltio/mdm-sdk';\nimport ChartDataTooltip from '../../../components/ChartDataTooltip/ChartDataTooltip';\nimport TableWithBars, {ColumnsOptions} from '../../../components/CustomTableWithBars/TableWithBars';\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport {ChartsDataContext} from '../../../contexts/ChartsDataContext';\nimport {ChartsDataWithState, useChartData} from '../../../hooks/useChartData';\nimport {useSearchRedirect} from '../../../hooks/useSearchRedirect';\nimport {\n getBarOpacity,\n getConsolidationRateChartData,\n getConsolidationRateSearchState,\n getConsolidationRateTableData\n} from '../../../services/barCharts';\nimport {ViewProps} from '../../../types/ViewProps';\nimport StackedBarChart from '../CustomBarChart/StackedBarChart';\nimport {ConsolidationPercentage} from './ConsolidationPercentage';\nimport SourceLabelRenderer from './SourceLabelRenderer';\nimport {YAxisTickRenderer} from './YAxisTickRenderer';\n\nimport {useStyles} from './styles';\n\nconst STACKED_BAR_CHART_WIDTH = 256;\n\nconst getBarColor = (key: string) => (key === 'Reltio profiles' ? '#0072CE' : getSourceColor(key));\nconst infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Consolidation rate')}\n data={[\n {\n value: i18n.text(\n 'Consolidation rate is the measurement of the total number source profiles versus the number of Reltio profiles after removing duplicates.'\n )\n },\n {value: i18n.text('Consolidation rate helps to understand the data reduction achieved by matching.')}\n ]}\n />\n);\n\nconst ConsolidationRateChart = ({config}: ViewProps) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const styles = useStyles();\n const {title} = config;\n const [selectedSource, setSelectedSource] = useState<{rowIndex: number; key: string}>();\n const {data: barChartData, state, reload} = useChartData<ChartData[]>(getConsolidationRateChartData);\n const {data: tableChartData} = useChartData<ChartData[]>(getConsolidationRateTableData(metadata));\n const {data: chartsData} = useContext<ChartsDataWithState>(ChartsDataContext);\n const searchProfiles = useSearchRedirect(getConsolidationRateSearchState);\n const sortedBarChartData = useMemo(() => {\n const sortedSourceData = pick(['group', 'label'], barChartData[0]);\n for (let key = tableChartData.length - 1; key >= 0; key--) {\n sortedSourceData[tableChartData[key].group] = barChartData[0][tableChartData[key].group];\n }\n return [sortedSourceData, barChartData[1]];\n }, [tableChartData, barChartData]);\n const getTooltip = useCallback(\n ({active}) => {\n if (!(selectedSource && active)) return '';\n let data = [];\n if (selectedSource?.key === 'Reltio profiles') {\n data = [\n {\n label: i18n.text('Reltio profiles'),\n value: i18n.number(chartsData.consolidationRate.totalEntities)\n }\n ];\n } else {\n data = [\n {\n label: i18n.text('Source system'),\n value: getSourceSystemLabel(metadata, selectedSource.key)\n },\n {\n label: i18n.text('Source profiles'),\n value: i18n.number(chartsData.consolidationRate.totalCrosswalksBySource[selectedSource.key])\n }\n ];\n }\n return (\n <div className={styles.tooltipWrapper}>\n <ChartDataTooltip data={data} />\n </div>\n );\n },\n [selectedSource, chartsData, metadata]\n );\n\n const barSelectHandler = useCallback(\n (key: string) => () => {\n if (key) {\n const rowIndex = tableChartData.findIndex(propEq('group', key));\n setSelectedSource({rowIndex, key});\n } else setSelectedSource(null);\n },\n [setSelectedSource, tableChartData]\n );\n\n const rowSelectHandler = useCallback(\n (rowIndex: number) => {\n if (!isNil(rowIndex)) {\n const key = tableChartData[rowIndex]?.group;\n setSelectedSource({rowIndex, key});\n } else setSelectedSource(null);\n },\n [setSelectedSource, tableChartData]\n );\n\n const rowClickHandler = (rowIndex: number) => {\n if (!isNil(rowIndex)) {\n const key = tableChartData[rowIndex]?.group;\n searchProfiles(key);\n }\n };\n\n const columnsOptions: ColumnsOptions[] = [\n {\n id: 'label',\n label: i18n.text('Source system'),\n secondLabel: `(${i18n.number(tableChartData.length)})`,\n resizable: false,\n labelRenderer: SourceLabelRenderer,\n width: 0.3\n },\n {\n id: 'value',\n resizable: false,\n label: i18n.text('Source profiles'),\n width: 0.7\n }\n ];\n\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {chartsData.consolidationRate && <ConsolidationPercentage data={chartsData} />}\n </DQLayoutItemHeader>\n <DQLayoutItemContent data={tableChartData} loadingState={state} onRefresh={reload}>\n {({height = 0, width = 0}) => {\n return (\n <div\n className={classnames(styles.consolidationRateWrapper, {\n [styles.tableWithSelectedRow]:\n !isNil(selectedSource?.rowIndex) && selectedSource?.rowIndex !== -1\n })}\n >\n <StackedBarChart\n yAxisLabel={i18n.text('No. of profiles')}\n data={sortedBarChartData}\n getTooltip={getTooltip}\n getBarOpacity={getBarOpacity(selectedSource)}\n getBarColor={getBarColor}\n onBarSelect={barSelectHandler}\n width={STACKED_BAR_CHART_WIDTH}\n height={height}\n options={{\n showCategories: true,\n maxBarSize: 40,\n yTickRenderer: YAxisTickRenderer,\n tickCount: 8\n }}\n onItemClick={searchProfiles}\n dataReltioId=\"reltio-dq-dashboard-consolidation-rate-barchart\"\n showTopLabel\n />\n <TableWithBars\n {...{\n data: tableChartData,\n width: width - STACKED_BAR_CHART_WIDTH,\n height,\n columnsOptions: columnsOptions,\n sorting: {\n field: 'value',\n order: 'desc'\n },\n onRowClick: rowClickHandler,\n onRowHover: rowSelectHandler,\n hoverRowIndex: selectedSource?.rowIndex,\n hoverStateEnabled: true,\n dataReltioId: 'reltio-dq-dashboard-consolidation-rate-tablechart'\n }}\n />\n </div>\n );\n }}\n </DQLayoutItemContent>\n </DQLayoutItemView>\n );\n};\nexport default ConsolidationRateChart;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n content: {\n marginTop: '-13px'\n },\n bar: {\n height: '16px'\n }\n});\n","import React from 'react';\n\nimport i18n from 'ui-i18n';\n\nimport {useRDMChartDataRequest} from '../../../hooks/useRDMChartDataRequest';\nimport {useSearchRedirect} from '../../../hooks/useSearchRedirect';\nimport {getRDMTranscodeSearchState} from '../../../services/rdmTranscode';\nimport {getRDMChartColors} from '../../../services/rdmTranscode';\nimport {ViewProps} from '../../../types/ViewProps';\n\nimport {ChartDataTooltip, InfoDataRenderer} from '../../../components/ChartDataTooltip';\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport StackedHorizontalBarChart from '../../../components/StackedHorizontalBarChart/StackedHorizontalBarChart';\n\nimport {useStyles} from './styles';\n\nconst RDMTranscodeChart = ({config}: ViewProps) => {\n const {title} = config;\n\n const searchProfiles = useSearchRedirect(getRDMTranscodeSearchState);\n const {data, state, reload} = useRDMChartDataRequest();\n const colors = getRDMChartColors(data);\n const styles = useStyles();\n\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('RDM value mapping status')}\n data={[\n {\n value: i18n.text(\n 'The relative number and percentage of reference data values that have been mapped to canonical values and transcoded for use by Reltio Reference Data Management.'\n )\n },\n {\n label: `${i18n.text('Mapped values')}:`,\n value: i18n.text('Values that have been mapped and transcoded')\n },\n {\n label: `${i18n.text('Unmapped values')}:`,\n value: i18n.text('Values that have not been mapped and transcoded')\n }\n ]}\n DataRenderer={InfoDataRenderer}\n />\n );\n\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle} />\n <DQLayoutItemContent data={data} loadingState={state} onRefresh={reload} className={styles.content}>\n {({data}) => (\n <StackedHorizontalBarChart\n data={data}\n colors={colors}\n onItemClick={searchProfiles}\n classes={{bar: styles.bar}}\n />\n )}\n </DQLayoutItemContent>\n </DQLayoutItemView>\n );\n};\n\nexport default RDMTranscodeChart;\n","import {useCallback, useContext, useEffect, useState} from 'react';\n\nimport {ChartData, RequestStates, useSafePromise} from '@reltio/components';\nimport {FilterOptions, getTotals} from '@reltio/mdm-sdk';\n\nimport {EntityTypeContext} from '../contexts/EntityTypeContext';\nimport {formatRDMTranscodeData} from '../services/rdmTranscode';\n\nexport const useRDMChartDataRequest = () => {\n const entityType = useContext(EntityTypeContext);\n const [requestState, setRequestState] = useState<RequestStates>(RequestStates.INIT);\n const [data, setData] = useState<ChartData[]>([]);\n const safePromise = useSafePromise();\n\n const getRDMData = useCallback(\n (isRDMLoolupResolve: boolean) => {\n return getTotals([\n {\n filter: FilterOptions.EQUALS,\n fieldName: 'type',\n values: [entityType.uri]\n },\n {\n filter: FilterOptions.EQUALS,\n fieldName: 'rdmLookups.resolved',\n values: [isRDMLoolupResolve]\n }\n ]);\n },\n [entityType]\n );\n\n const onError = (error) => {\n console.error(error); // eslint-disable-line\n setRequestState(RequestStates.ERROR);\n setData([]);\n };\n\n const onRequestFinished = (data: ChartData[]) => {\n setData(data);\n setRequestState(RequestStates.LOADED);\n };\n\n const loadRDMChartData = useCallback(() => {\n setRequestState(RequestStates.LOADING);\n setData([]);\n return safePromise(Promise.all([getRDMData(true), getRDMData(false)]))\n .then(formatRDMTranscodeData)\n .then(onRequestFinished)\n .catch(onError);\n }, [getRDMData]);\n\n useEffect(() => {\n loadRDMChartData();\n }, [loadRDMChartData]);\n\n return {data: data, state: requestState, reload: loadRDMChartData};\n};\n","import React from 'react';\nimport i18n from 'ui-i18n';\n\nimport {ViewType} from '../constants/ViewType';\n\nimport FillRateChart from './charts/FillRateChart';\nimport UniquenessAnalysisChart from './charts/UniquenessAnalysisChart';\nimport Summary from './Summary/Summary';\nimport DQDashboardErrorView from './DQDashboardErrorView/DQDashboardErrorView';\nimport ViolatedValidationFuncChart from './charts/ViolatedValidationFuncChart';\nimport FrequencyAnalysisChart from './charts/FrequencyAnalysisChart';\nimport LengthStatisticsChart from './charts/LengthStatisticsChart';\nimport CrosswalkAnalysisChart from './charts/CrosswalkAnalysisChart/CrosswalkAnalysisChart';\nimport ValueDistributionChart from './charts/ValueDistributionChart';\nimport MonthDistributionChart from './charts/MonthDistributionChart';\nimport DayOfWeekDistributionChart from './charts/DayOfWeekDistributionChart';\nimport DayOfMonthDistributionChart from './charts/DayOfMonthDistributionChart';\nimport PatternAnalysisChart from './charts/PatternAnalysisChart';\nimport ConsolidationRateChart from './charts/ConsolidationRateChart/ConsolidationRateChart';\nimport RDMTranscodeChart from './charts/RDMTranscodeChart/RDMTranscodeChart';\n\nclass ViewsFactory {\n static getComponent = ({type, config, isFullscreen, onToggleFullscreen}) => {\n const props = {\n config,\n isFullscreen,\n onToggleFullscreen\n };\n switch (type) {\n case ViewType.FILL_RATE:\n return <FillRateChart {...props} />;\n case ViewType.UNIQUENESS:\n return <UniquenessAnalysisChart {...props} />;\n case ViewType.SUMMARY:\n return <Summary {...props} />;\n case ViewType.DATA_VALIDATION:\n return <ViolatedValidationFuncChart {...props} />;\n case ViewType.FREQUENCY:\n return <FrequencyAnalysisChart {...props} />;\n case ViewType.LENGTH_STATISTIC:\n return <LengthStatisticsChart {...props} />;\n case ViewType.CROSSWALK_ANALYSIS:\n return <CrosswalkAnalysisChart {...props} />;\n case ViewType.VALUE_DISTRIBUTION:\n return <ValueDistributionChart {...props} />;\n case ViewType.MONTH_DISTRIBUTION:\n return <MonthDistributionChart {...props} />;\n case ViewType.DAY_OF_WEEK_DISTRIBUTION:\n return <DayOfWeekDistributionChart {...props} />;\n case ViewType.DAY_OF_MONTH_DISTRIBUTION:\n return <DayOfMonthDistributionChart {...props} />;\n case ViewType.PATTERN:\n return <PatternAnalysisChart {...props} />;\n case ViewType.CONSOLIDATION_RATE:\n return <ConsolidationRateChart {...props} />;\n case ViewType.RDM_TRANSCODE:\n return <RDMTranscodeChart {...props} />;\n default:\n return (\n <DQDashboardErrorView\n {...props}\n errorData={{message: i18n.text(\"Chart isn't supported for this data type\")}}\n />\n );\n }\n };\n}\n\nexport default ViewsFactory;\n","import React from 'react';\nimport ViewsFactory from '../../views/ViewsFactory';\nimport {DQDashboardView} from '../../types/DQDashboardView';\nimport {ReactGridLayoutItem} from '@reltio/components';\n\ntype Props = {\n className?: string;\n isFullscreen: boolean;\n style: React.CSSProperties;\n views: DQDashboardView[];\n onToggleFullscreen: (id: string) => void;\n layoutItemConfig: ReactGridLayoutItem;\n children: React.ReactNode;\n};\n\nexport const DQDashboardLayoutItem = ({\n layoutItemConfig,\n views,\n onToggleFullscreen,\n isFullscreen,\n className,\n children: ResizeComponent,\n style\n}: Props) => {\n const config = views.find(({id}) => layoutItemConfig.i === id);\n\n if (!config) {\n return null;\n }\n const {type} = config;\n\n return (\n <div style={style} className={className}>\n {ViewsFactory.getComponent({\n type,\n config,\n onToggleFullscreen,\n isFullscreen\n })}\n {ResizeComponent}\n </div>\n );\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n overflow: 'auto',\n backgroundColor: '#EEEEEE',\n height: '100%',\n flexGrow: 1,\n padding: '0 4px',\n boxSizing: 'border-box'\n }\n});\n","import {assoc, map} from 'ramda';\nimport React, {memo, useMemo} from 'react';\n\nimport {ReltioGridLayout, ReltioGridLayoutItem} from '@reltio/components';\n\nimport {DQDashboardView} from '../../types/DQDashboardView';\nimport {DQDashboardLayoutItem} from '../DQDashboardLayoutItem/DQDashboardLayoutItem';\n\nimport {useStyles} from './styles';\n\nexport type DQDashboardLayoutProps = {\n views: DQDashboardView[];\n layout?: ReltioGridLayoutItem[];\n layoutOptions?: {\n cols: number;\n rowHeight: number;\n margin: [number, number];\n };\n};\n\nconst reltioGridLayoutToStaticLayout = map(assoc('isStatic', true));\nconst DEFAULT_LAYOUT_OPTIONS = {\n cols: 6,\n rowHeight: 10,\n margin: [12, 12] as [number, number]\n};\n\nconst DQDashboardLayout = ({views, layout, layoutOptions = DEFAULT_LAYOUT_OPTIONS}: DQDashboardLayoutProps) => {\n const styles = useStyles();\n\n const staticLayout = useMemo(() => reltioGridLayoutToStaticLayout(layout), [layout]);\n return (\n <div className={styles.root}>\n <ReltioGridLayout\n LayoutItem={DQDashboardLayoutItem}\n views={views}\n layout={staticLayout}\n layoutOptions={layoutOptions}\n />\n </div>\n );\n};\n\nexport default memo(DQDashboardLayout);\n","import React from 'react';\n\nimport {DQDataLevel} from '@reltio/mdm-sdk';\nimport {ReltioGridLayoutItem} from '@reltio/components';\n\nimport {DataLevelContext} from '../../contexts/DataLevelContext';\nimport {TimeRangeContext} from '../../contexts/TimeRangeContext';\nimport {DQDashboardView} from '../../types/DQDashboardView';\nimport {TimeRange} from '../../types/TimeRange';\n\nimport DQDashboardLayout from '../DQDashboardLayout/DQDashboardLayout';\n\ntype Props = {\n dataLevel: DQDataLevel;\n views: DQDashboardView[];\n timeRange: TimeRange;\n layout?: ReltioGridLayoutItem[];\n isSliding?: boolean;\n};\n\nconst AttributeLevelLayout = ({dataLevel, views, layout, timeRange, isSliding = false}: Props) => {\n return (\n (dataLevel === DQDataLevel.ATTRIBUTE_TYPE || isSliding) && (\n <TimeRangeContext.Provider value={timeRange}>\n <DataLevelContext.Provider value={DQDataLevel.ATTRIBUTE_TYPE}>\n <DQDashboardLayout views={views} layout={layout} />\n </DataLevelContext.Provider>\n </TimeRangeContext.Provider>\n )\n );\n};\n\nexport default AttributeLevelLayout;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n breadcrumb: {\n fontSize: '16px',\n color: theme.palette.text.primary\n },\n active: {\n color: 'rgba(0, 0, 102, 1)'\n },\n clickable: {\n cursor: 'pointer'\n }\n}));\n","import React from 'react';\nimport {Breadcrumbs as Breadcrumbs} from '@material-ui/core';\nimport classnames from 'classnames';\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport i18n from 'ui-i18n';\nimport {DQDataLevel} from '@reltio/mdm-sdk';\n\nimport {DetailedAttributeType} from '../../types/DetailedAttributeType';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n dataLevel: DQDataLevel;\n detailedAttributeType: DetailedAttributeType;\n onChange: (dataLevel: DQDataLevel) => void;\n};\nconst DataLevelBreadcrumbs = ({dataLevel, detailedAttributeType, onChange}: Props) => {\n const styles = useStyles();\n\n const handleChangeDataLevel = (dataLevel: DQDataLevel) => () => {\n onChange(dataLevel);\n };\n\n return (\n <Breadcrumbs separator={<NavigateNextIcon fontSize=\"small\" />} aria-label=\"breadcrumb\">\n {[\n <Typography\n key={DQDataLevel.ENTITY_TYPE}\n className={classnames(styles.breadcrumb, {\n [styles.active]: dataLevel === DQDataLevel.ENTITY_TYPE,\n [styles.clickable]: dataLevel === DQDataLevel.ATTRIBUTE_TYPE\n })}\n onClick={handleChangeDataLevel(DQDataLevel.ENTITY_TYPE)}\n data-reltio-id=\"reltio-dq-dashboard-breadcrumb-entity-level\"\n >\n {i18n.text('Entity overview')}\n </Typography>\n ].concat(\n dataLevel === DQDataLevel.ATTRIBUTE_TYPE ? (\n <Typography\n key={DQDataLevel.ATTRIBUTE_TYPE}\n className={classnames(styles.breadcrumb, styles.active)}\n data-reltio-id=\"reltio-dq-dashboard-breadcrumb-attribute-level\"\n >\n {detailedAttributeType?.label}\n </Typography>\n ) : (\n []\n )\n )}\n </Breadcrumbs>\n );\n};\n\nexport default DataLevelBreadcrumbs;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n paddingRight: '12px',\n paddingLeft: '20px',\n display: 'flex',\n flexDirection: 'row-reverse'\n },\n detailIcon: {\n marginLeft: '-5px',\n borderRadius: '50%',\n padding: '2px',\n width: '26px',\n height: '26px',\n boxSizing: 'border-box'\n },\n activeIcon: {\n background: 'white'\n }\n});\n","import React from 'react';\nimport {prop} from 'ramda';\nimport classnames from 'classnames';\nimport {\n AttributeTypeDetailIcon,\n AttributeTypeDetailIconSizes,\n AttributeTypeDetailIconVariant\n} from '../AttributeTypeDetailIcon/AttributeTypeDetailIcon';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport {ChartData, RequestStates} from '@reltio/components';\nimport {getDetailLabel, checkIsDataQualitativeForAttributeList} from '../../services/attributeDetails';\nimport {AttrTypeDetails, AttrTypeDetailsType} from '../../types/DetailedAttributeType';\nimport {useStyles} from './styles';\n\ntype Props = {\n fillRateData?: ChartData[];\n fillRateState?: RequestStates;\n details: AttrTypeDetails;\n classes?: {\n iconRoot: string;\n iconsWrapper: string;\n };\n};\n\nconst AttributeTypeDetailsIcons = ({details, classes, fillRateData, fillRateState}: Props) => {\n const styles = useStyles();\n const iconRoot = prop('iconRoot', classes);\n const iconsWrapper = prop('iconsWrapper', classes);\n\n return (\n <div className={classnames(styles.root, iconsWrapper)}>\n {Object.entries(details || {})\n .reverse()\n .map(([detailType, value]) => {\n let iconVariant = AttributeTypeDetailIconVariant.NORMAL;\n if (detailType === AttrTypeDetailsType.REQUIRED) {\n const isDataLoading = fillRateState === RequestStates.LOADING;\n const isDataQualitative = checkIsDataQualitativeForAttributeList(fillRateData);\n if (isDataLoading) {\n iconVariant = AttributeTypeDetailIconVariant.LOADING;\n }\n if (!isDataLoading && !isDataQualitative) {\n iconVariant = AttributeTypeDetailIconVariant.BAD_QUALITY;\n }\n }\n return (\n <div\n key={detailType}\n className={classnames(value && (iconRoot || styles.activeIcon), styles.detailIcon)}\n >\n {value && (\n <Tooltip title={getDetailLabel(detailType)}>\n <span>\n <AttributeTypeDetailIcon\n detailType={detailType as AttrTypeDetailsType}\n variant={iconVariant}\n size={AttributeTypeDetailIconSizes.SMALL}\n />\n </span>\n </Tooltip>\n )}\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default AttributeTypeDetailsIcons;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n bar: {\n width: '100%',\n display: 'flex',\n flexWrap: 'nowrap'\n },\n barPart: {\n height: '8px',\n flexGrow: 1\n },\n fillRateSquare: {\n height: '8px',\n width: '8px',\n display: 'inline-block',\n marginRight: '5px',\n verticalAlign: 'middle'\n },\n inactiveBarPart: {\n background: '#EFEFEF'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {Tooltip as Tooltip} from '@material-ui/core';\n\nimport i18n from 'ui-i18n';\nimport {ChartData, withPercents} from '@reltio/components';\n\nimport {isEmptyData, getBarWidthStyle} from '../../services/charts';\nimport {getFillRateColorByState, getFillRateColors} from '../../services/fillRate';\n\nimport {TooltipWithSquares} from '../ChartDataTooltip';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n data: ChartData[];\n};\n\nconst FillRateLine = ({data}: Props) => {\n const styles = useStyles();\n const colors = getFillRateColors(data);\n\n return !isEmptyData(data) ? (\n <Tooltip\n title={<TooltipWithSquares title={i18n.text('Fill rate')} data={data} getColor={getFillRateColorByState} />}\n >\n <div className={styles.bar}>\n {data.map((chartData, index) => (\n <div\n key={chartData.group}\n className={styles.barPart}\n style={{...getBarWidthStyle(chartData), background: colors[index]}}\n />\n ))}\n </div>\n </Tooltip>\n ) : (\n <div className={styles.bar}>\n <div className={classnames(styles.barPart, styles.inactiveBarPart)} />\n </div>\n );\n};\n\nexport default withPercents(FillRateLine);\n","import {makeStyles} from '@material-ui/core/styles';\n\nconst levelLineColor = 'rgba(0, 114, 206, 0.12)';\nexport const useStyles = makeStyles({\n linesWrapper: {\n position: 'absolute',\n left: '9px',\n top: 0,\n bottom: 0\n },\n line: {\n position: 'absolute',\n width: '2px',\n background: levelLineColor,\n bottom: 0,\n zIndex: 2,\n left: 0,\n top: 0\n },\n horizontalLine: {\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n left: '2px',\n top: '15px',\n width: '3px',\n height: '2px',\n background: levelLineColor\n }\n },\n parentLine: {\n left: '20px',\n top: '34px'\n },\n lastLevel: {\n bottom: '31px'\n },\n lastLevelSelected: {\n '&:after': {top: '13px'}\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {range} from 'ramda';\nimport {Marginator} from '@reltio/components';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n level: number;\n margin: number;\n hasChildren: boolean;\n isLastLevelItem: boolean;\n isCollapsed: boolean;\n isSelected: boolean;\n};\n\nconst getLevelsRange = (hasChildren: boolean, level: number): number[] => {\n if (level > 0 && hasChildren) return range(1, level + 1);\n\n if (level > 1) return range(1, level);\n return [];\n};\n\nconst TreeLines = ({level, margin, hasChildren, isLastLevelItem, isCollapsed, isSelected = false}: Props) => {\n const styles = useStyles();\n const drawLine = !isCollapsed && (level > 0 || hasChildren);\n\n return (\n <div className={styles.linesWrapper}>\n {getLevelsRange(hasChildren, level).map((level: number) => (\n <Marginator key={level} margin={margin} level={level} className={styles.line} />\n ))}\n {drawLine && (\n <Marginator\n margin={margin}\n level={level}\n className={classnames(\n styles.line,\n !hasChildren && level > 0 && styles.horizontalLine,\n hasChildren && styles.parentLine,\n isLastLevelItem && styles.lastLevel,\n isSelected && isLastLevelItem && styles.lastLevelSelected\n )}\n />\n )}\n </div>\n );\n};\n\nexport default TreeLines;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n listItem: {\n padding: '0 0 0 15px',\n '&:after': {\n content: '\"\"',\n left: 0,\n right: 0,\n position: 'absolute',\n bottom: 0,\n height: '1px',\n background: 'rgba(0, 0, 0, 0.05)'\n }\n },\n selectedItem: {\n background: 'white!important',\n border: '1px solid #000066',\n boxShadow:\n '0px 12px 17px -2px rgba(0, 0, 102, 0.06), 0px 5px 32px -4px rgba(0, 0, 102, 0.06), 0px 7px 8px -4px rgba(0, 0, 204, 0.1)',\n borderRadius: '6px',\n zIndex: 1,\n paddingLeft: '14px',\n '&:after': {\n display: 'none'\n }\n },\n clickableItem: {\n cursor: 'pointer',\n '&:hover::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n height: '100%',\n backgroundColor: 'rgba(0,0,0,0.07)',\n pointerEvents: 'none',\n zIndex: 1\n }\n },\n content: {\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n position: 'relative'\n },\n attribute: {\n paddingLeft: '9px',\n boxSizing: 'border-box',\n width: '100%',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n height: '100%',\n position: 'relative',\n fontSize: '13px'\n },\n marginWrapper: {\n display: 'inline-block',\n height: '100%',\n position: 'relative',\n width: '100%'\n },\n attributeType: {\n position: 'absolute',\n left: 0,\n top: '8px'\n },\n fillRate: {\n position: 'absolute',\n bottom: '8px',\n left: 0,\n right: 0,\n zIndex: 1\n },\n attributeLabel: {\n padding: '8px 0 0 15px',\n position: 'relative',\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n right: 0,\n top: 0,\n width: '40px',\n height: '100%',\n background: 'linear-gradient(to right, rgba(255, 255, 255, 0.2), #fff 100%)',\n pointerEvents: 'none'\n }\n },\n parentAttributeLabel: {\n padding: '14px 0 0 13px'\n },\n detailsIcon: {\n background: 'white'\n },\n collapseIcon: {\n marginRight: '6px'\n },\n iconLoader: {\n width: '22px',\n height: '22px',\n border: '2px solid white',\n background: 'rgba(196, 196, 196, 0.4)',\n borderRadius: '50%'\n },\n iconsLoaderWrapper: {\n paddingRight: '23px',\n paddingLeft: '28px',\n display: 'flex'\n },\n iconLoaderWrapper: {\n width: '24px',\n height: '24px',\n backgroundColor: 'white',\n borderRadius: '50%',\n marginRight: '-3px'\n },\n fillRateLineLoader: {\n height: '8px',\n width: '100%',\n background: 'rgba(196, 196, 196, 0.4)',\n left: 0,\n right: 0,\n bottom: '8px',\n zIndex: 1,\n position: 'absolute'\n },\n iconsWrapper: {\n paddingRight: '11px'\n }\n});\n","import classnames from 'classnames';\nimport {times} from 'ramda';\nimport React from 'react';\nimport {ListItem as ListItem} from '@material-ui/core';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport ArrowRightIcon from '@material-ui/icons/ArrowRight';\n\nimport {ChartData, ExpandedValueTooltip, Marginator, noop, RequestStates, SmallIconButton} from '@reltio/components';\n\nimport {getAttributeLabel} from '../../services/attributes';\nimport {DetailedAttributeType} from '../../types/DetailedAttributeType';\n\nimport AttributeTypeDetailsIcons from '../AttributeTypeDetailsIcons/AttributeTypeDetailsIcons';\nimport AttributeTypeIcon from '../AttributeTypeIcon/AttributeTypeIcon';\nimport FillRateLine from '../FillRateLine/FillRateLine';\nimport TreeLines from './TreeLines/TreeLines';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n detailedAttributeType: DetailedAttributeType;\n level: number;\n onClick: (detailedAttributeType: DetailedAttributeType) => void;\n fillRateData?: ChartData[];\n fillRateState?: RequestStates;\n style?: React.CSSProperties;\n selected?: boolean;\n onCollapse?: () => void;\n isCollapsed?: boolean;\n isLastLevelItem?: boolean;\n isLoading?: boolean;\n};\n\nconst MARGIN_LEFT = 20;\nconst AttributeListItem = ({\n detailedAttributeType,\n fillRateData,\n fillRateState,\n style,\n level,\n selected = false,\n onClick,\n onCollapse = noop,\n isCollapsed = false,\n isLastLevelItem = false,\n isLoading\n}: Props) => {\n const styles = useStyles();\n const handleItemClick = () => {\n onClick(detailedAttributeType);\n };\n const hasChildren = !!detailedAttributeType.children;\n const hasFillRate = !!fillRateData;\n const attributeLabel = getAttributeLabel(detailedAttributeType);\n const CollapseIcon = isCollapsed ? ArrowRightIcon : ArrowDropDownIcon;\n\n return (\n <ListItem\n style={style}\n selected={selected}\n classes={{\n selected: styles.selectedItem\n }}\n onClick={hasChildren ? undefined : handleItemClick}\n component=\"div\"\n className={classnames(styles.listItem, !hasChildren && styles.clickableItem)}\n >\n <div className={styles.content}>\n {!hasChildren && (\n <div className={styles.attributeType}>\n <AttributeTypeIcon type={detailedAttributeType.type} />\n </div>\n )}\n <div className={styles.attribute}>\n <TreeLines\n level={level}\n margin={MARGIN_LEFT}\n hasChildren={hasChildren}\n isLastLevelItem={isLastLevelItem}\n isCollapsed={isCollapsed}\n isSelected={selected}\n />\n <Marginator margin={MARGIN_LEFT} level={level} className={styles.marginWrapper}>\n <ExpandedValueTooltip value={attributeLabel}>\n <div\n className={classnames(\n styles.attributeLabel,\n hasChildren && styles.parentAttributeLabel\n )}\n >\n {hasChildren && (\n <SmallIconButton\n size=\"XXS\"\n icon={CollapseIcon}\n onClick={onCollapse}\n className={styles.collapseIcon}\n />\n )}\n {attributeLabel}\n </div>\n </ExpandedValueTooltip>\n </Marginator>\n {!isLoading && hasFillRate && !hasChildren && (\n <div className={styles.fillRate}>\n <FillRateLine data={fillRateData} />\n </div>\n )}\n {isLoading && !hasChildren && <div className={styles.fillRateLineLoader}></div>}\n </div>\n\n {isLoading ? (\n <div className={styles.iconsLoaderWrapper}>\n {times(\n (key: number) => (\n <div className={styles.iconLoaderWrapper} key={`unloadedIcon-${key}`}>\n <div className={styles.iconLoader}></div>\n </div>\n ),\n 5\n )}\n </div>\n ) : (\n <AttributeTypeDetailsIcons\n details={detailedAttributeType.details}\n classes={{iconRoot: styles.detailsIcon, iconsWrapper: selected && styles.iconsWrapper}}\n fillRateData={fillRateData}\n fillRateState={fillRateState}\n />\n )}\n </div>\n </ListItem>\n );\n};\n\nexport default AttributeListItem;\n","import {isComplexAttribute, isImage} from '@reltio/mdm-sdk';\nimport {\n __,\n assoc,\n both,\n curry,\n either,\n filter,\n find,\n findIndex,\n head,\n identity,\n includes,\n map,\n not,\n pipe,\n pluck,\n prop,\n propEq,\n propOr\n} from 'ramda';\nimport {ChartData} from '@reltio/components';\nimport {DetailedAttributeType, AttributeItemType, AttrTypeDetailsType} from '../../types/DetailedAttributeType';\nimport {\n filterAttributeByNotEmpty,\n filterAttributeByDetails,\n filterAttributeTreeByDetails\n} from '../../services/attributeFilters';\nimport {FilterOption} from '../../types/FilterOption';\nimport {FilterOptionsGroup} from '../../types/FilterOptionsGroup';\nimport {getDetailLabel} from '../../services/attributeDetails';\nimport i18n from 'ui-i18n';\n\nconst getAttrTypeFromItem = propOr({}, 'attributeItem');\ntype GetFirstSimpleDetailedAttrTypeFn = (items: AttributeItemType[]) => DetailedAttributeType;\nexport const getFirstSimpleDetailedAttrType: GetFirstSimpleDetailedAttrTypeFn = pipe(\n find(pipe(getAttrTypeFromItem, either(isComplexAttribute, isImage), not)),\n getAttrTypeFromItem\n);\n\nconst filterDetailedAttrTypeByFieldName = (fieldName: string) =>\n pipe(getAttrTypeFromItem, propEq('fieldName', fieldName));\n\ntype GetDetailedAttrTypeByFieldNameFn = (items: AttributeItemType[], uri: string) => DetailedAttributeType;\nexport const getDetailedAttrTypeByFieldName: GetDetailedAttrTypeByFieldNameFn = (items, fieldName) =>\n pipe(find(filterDetailedAttrTypeByFieldName(fieldName)), propOr(null, 'attributeItem'))(items);\n\nexport const getIndexByFieldName = (items: AttributeItemType[], fieldName: string): number =>\n findIndex(filterDetailedAttrTypeByFieldName(fieldName))(items);\n\nexport const getFillRateByAttributeType = (\n fillRates: Record<string, ChartData[]>,\n attributeType: DetailedAttributeType\n) => fillRates[attributeType.fieldName];\n\nexport const rejectCollapsedItemsChildren = (\n items: AttributeItemType[],\n collapsedFieldNames: string[]\n): AttributeItemType[] =>\n items.filter(\n ({attributeItem}) =>\n !collapsedFieldNames.some(\n (collapsedFieldName) =>\n attributeItem.fieldName.startsWith(collapsedFieldName) &&\n attributeItem.fieldName !== collapsedFieldName\n )\n );\n\nconst getFilterOptionsByGroup = (group: string) => filter(propEq('group', group));\n\nconst getDetailsOptionCount = (items: AttributeItemType[], option: FilterOption) =>\n items.filter((item) => filterAttributeByDetails([option], item.attributeItem)).length;\n\nexport enum EmptinessFilterValue {\n SHOW_EMPTY = 'showEmpty'\n}\n\nexport const emptinessFilterOptions = [\n {\n label: i18n.text('Show attributes with no data'),\n value: EmptinessFilterValue.SHOW_EMPTY,\n group: 'emptiness'\n }\n];\n\nexport const getEmptinessOptions = (): FilterOptionsGroup => {\n return {\n label: '',\n options: emptinessFilterOptions\n };\n};\n\nexport const getDetailsOptions = (items: AttributeItemType[]): FilterOptionsGroup => {\n const options = Object.values(AttrTypeDetailsType)\n .map((value) => ({\n value,\n label: getDetailLabel(value),\n group: 'details'\n }))\n .map((option) => assoc('count', getDetailsOptionCount(items, option), option));\n\n return {\n label: i18n.text('Attribute properties'),\n options\n };\n};\n\nexport const filterItemsByEmptiness = curry(\n (options: FilterOption[], fillRates: Record<string, ChartData[]>, items: AttributeItemType[]) => {\n const firstEmptinessOption = head(getFilterOptionsByGroup('emptiness')(options));\n switch (firstEmptinessOption?.value) {\n case EmptinessFilterValue.SHOW_EMPTY:\n return items;\n default:\n return items.filter(pipe(getAttrTypeFromItem, filterAttributeByNotEmpty(fillRates)));\n }\n }\n);\n\nconst filterValidDetailsOptions = (options: FilterOption[]) => {\n const validOptionValues = Object.values(AttrTypeDetailsType);\n return options.filter(pipe(prop('value'), includes(__, validOptionValues)));\n};\nconst getFieldNameFromItem: (item: AttributeItemType) => string = pipe(getAttrTypeFromItem, prop('fieldName'));\nconst getFilteredNestedFieldNames = (options: FilterOption[]): ((items: AttributeItemType[]) => string[]) =>\n pipe(\n filter(pipe(getAttrTypeFromItem, both(prop('children'), filterAttributeByDetails(options)))),\n map(getFieldNameFromItem)\n );\n\nexport const filterItemsByDetails = curry((options: FilterOption[], items: AttributeItemType[]) => {\n const detailsOptions = pipe(getFilterOptionsByGroup('details'), filterValidDetailsOptions)(options);\n const filteredNestedFieldNames = getFilteredNestedFieldNames(detailsOptions)(items);\n return items.filter(\n ({attributeItem}) =>\n filteredNestedFieldNames.some((fieldName) => attributeItem.fieldName.startsWith(fieldName)) ||\n filterAttributeTreeByDetails(detailsOptions, attributeItem)\n );\n});\n\nexport const getAtrributeFieldNames: (items: AttributeItemType[]) => string[] = pipe(\n map(getAttrTypeFromItem),\n pluck('fieldName'),\n identity\n);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n searchWrapper: {\n padding: '8px 0px 8px 16px',\n alignItems: 'center',\n display: 'flex',\n flexGrow: 1,\n justifyContent: 'flex-end',\n marginLeft: '-105px'\n },\n filterByDetails: {\n width: '32px',\n height: '32px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n marginLeft: '9px'\n },\n searchInput: {\n borderRadius: '4px',\n width: '202px',\n minHeight: '32px!important',\n justifyContent: 'flex-end',\n alignItems: 'center',\n padding: '0 2px',\n boxSizing: 'border-box',\n '& input': {fontSize: '13px'},\n '& button': {padding: '2px'}\n },\n filledInput: {\n '& button:last-child': {\n backgroundColor: 'rgba(0, 0, 0, 0.0509804)'\n }\n },\n menu: {\n width: '300px',\n paddingTop: '8px'\n },\n filterIcon: {\n color: theme.palette.text.secondary\n },\n filterIconFilterApplied: {\n color: '#0072CE'\n },\n filterIconWrapper: {\n width: '32px',\n height: '32px',\n borderRadius: '4px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n cursor: 'pointer',\n position: 'relative',\n '&:after': {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: '4px',\n background: 'rgba(0, 0, 0, 0.04)'\n },\n '&:hover': {\n '&:after': {\n content: '\"\"'\n }\n }\n },\n filterIconWrapperActive: {\n background: 'rgba(0, 0, 0, 0.04)',\n '&:after': {\n content: '\"\"',\n background: 'rgba(0, 0, 0, 0.04)'\n }\n },\n filterIconWrapperSelected: {\n background: 'rgba(0, 114, 206, 0.12)'\n },\n dropdownMenuTitle: {\n lineHeight: '48px',\n height: '48px',\n paddingLeft: '16px'\n },\n option: {\n paddingLeft: '5px',\n fontSize: '13px',\n height: '28px',\n lineHeight: '16px',\n letterSpacing: 'normal',\n paddingRight: '19px',\n filter: (isActive) => (isActive ? 'grayscale(0)' : 'grayscale(1)'),\n opacity: (isActive) => (isActive ? 1 : 0.5)\n },\n typeIconWrapper: {\n width: '28px',\n marginLeft: '1px',\n '& svg': {\n width: '20px',\n height: '20px'\n }\n },\n valueContainer: {\n marginLeft: 0\n },\n counter: {\n marginLeft: '5px'\n },\n\n optionLabel: {\n flexGrow: 1\n },\n groupLabel: {\n textTransform: 'uppercase',\n margin: '15px 16px 5px',\n letterSpacing: '0.1px',\n display: 'block'\n },\n actionsContainer: {\n display: 'flex',\n padding: '12px 5px 8px 12px'\n },\n clearAllButton: {\n marginRight: 'auto'\n }\n}));\n","import React from 'react';\nimport {isNil} from 'ramda';\nimport {Checkbox as Checkbox} from '@material-ui/core';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport {ExpandedValueTooltip} from '@reltio/components';\nimport {FilterOption} from '../../types/FilterOption';\nimport {AttrTypeDetailsType} from '../../types/DetailedAttributeType';\nimport {AttributeTypeDetailIcon} from '../AttributeTypeDetailIcon/AttributeTypeDetailIcon';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\nimport {useStyles} from './styles';\n\ntype Props = {\n data: FilterOption;\n isSelected: boolean;\n onChange: (data: FilterOption) => void;\n};\n\nconst Option = ({isSelected, data, onChange}: Props) => {\n const {count, label, value} = data;\n const showCounter = !isNil(count);\n const isOptionActive = !showCounter || count > 0;\n const styles = useStyles(isOptionActive);\n const handleClick = () => onChange(data);\n return (\n <MenuItem\n className={styles.option}\n component=\"div\"\n onClick={handleClick}\n data-reltio-id={`reltio-dq-dashboard-option-${data.value}`}\n >\n <Checkbox color=\"primary\" checked={isSelected} />\n <span className={styles.typeIconWrapper}>\n <AttributeTypeDetailIcon detailType={value as AttrTypeDetailsType} />\n </span>\n <ExpandedValueTooltip value={label}>\n <div className={styles.optionLabel}>{label}</div>\n </ExpandedValueTooltip>\n {showCounter && <span className={styles.counter}>{formatNumberAsMetric(count, 999)}</span>}\n </MenuItem>\n );\n};\n\nexport default Option;\n","import {curry, flatten, pipe, pluck, propEq, remove} from 'ramda';\nimport {FilterOption} from '../../types/FilterOption';\nimport {FilterOptionsGroup} from '../../types/FilterOptionsGroup';\n\nexport const containsOption = curry(\n (option: FilterOption, options: FilterOption[]) => !!options.find(propEq('value', option.value))\n);\n\nexport const withoutOption = curry((option: FilterOption, options: FilterOption[]) => {\n const optionIndex = options.findIndex(propEq('value', option.value));\n return optionIndex !== -1 ? remove(optionIndex, 1, options) : options;\n});\n\nexport const getValidFilterOptions = (\n options: FilterOption[],\n filterOptionsGroups: FilterOptionsGroup[]\n): FilterOption[] => {\n const allValidFilterOptions: FilterOption[] = pipe(pluck('options'), flatten)(filterOptionsGroups);\n return options.filter(({value}) => allValidFilterOptions.find(propEq('value', value)));\n};\n","import React, {useEffect, useState} from 'react';\nimport {always, concat, ifElse} from 'ramda';\nimport classnames from 'classnames';\nimport i18n from 'ui-i18n';\nimport {Button as Button} from '@material-ui/core';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport {Popover as Popover} from '@material-ui/core';\nimport {Typography as Typography} from '@material-ui/core';\nimport SearchInput from 'react-components/dist/Form/SearchInput';\nimport {FilterOption} from '../../types/FilterOption';\nimport {FilterOptionsGroup} from '../../types/FilterOptionsGroup';\nimport Option from './Option';\nimport {containsOption, getValidFilterOptions, withoutOption} from './helpers';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n filterOptions: FilterOptionsGroup[];\n onChangeFilterOptions: (filterOptions: FilterOption[]) => void;\n onChangeFilterText: (filterText: string) => void;\n defaultFilterOptions?: FilterOption[];\n defaultFilterText?: string;\n};\n\nconst SEARCH_INPUT_HEIGHT = 40;\n\nconst AttributesFilters = ({\n defaultFilterOptions = [],\n filterOptions,\n defaultFilterText,\n onChangeFilterText,\n onChangeFilterOptions\n}: Props) => {\n const styles = useStyles();\n\n const [anchorEl, setAnchorEl] = useState(null);\n const [selectedFilterOptions, setSelectedFilterOptions] = useState<FilterOption[]>([]);\n const [valueInFilterTextInput, setValueInFilterTextInput] = useState<string>(defaultFilterText || null);\n useEffect(() => {\n setSelectedFilterOptions(getValidFilterOptions(defaultFilterOptions, filterOptions));\n }, [defaultFilterOptions, filterOptions]);\n\n const openFilter = (event) => setAnchorEl(event.currentTarget);\n const closeFilter = () => setAnchorEl(null);\n\n const handleClearAll = () => {\n setSelectedFilterOptions([]);\n };\n\n const handleCancel = () => {\n setSelectedFilterOptions(defaultFilterOptions);\n closeFilter();\n };\n\n const handleApply = () => {\n onChangeFilterOptions(selectedFilterOptions);\n closeFilter();\n };\n\n const handleClose = () => {\n setSelectedFilterOptions(always(defaultFilterOptions));\n closeFilter();\n };\n\n const handleChangeFilterText = (filterText: string) => {\n setValueInFilterTextInput(filterText);\n onChangeFilterText(filterText || '');\n };\n\n const handleOptionChange = (option: FilterOption) => {\n setSelectedFilterOptions(ifElse(containsOption(option), withoutOption(option), concat([option])));\n };\n\n const hasSelectedOptions = !!selectedFilterOptions.length;\n const isPopupOpen = !!anchorEl;\n const indicatorClassname = classnames(styles.filterIconWrapper, {\n [styles.filterIconWrapperActive]: isPopupOpen,\n [styles.filterIconWrapperSelected]: hasSelectedOptions\n });\n const indicatorIconClassname = hasSelectedOptions ? styles.filterIconFilterApplied : styles.filterIcon;\n\n return (\n <div className={styles.searchWrapper}>\n <div data-reltio-id=\"reltio-dq-dashboard-attributes-search-input\">\n <SearchInput\n autofocus\n onChange={handleChangeFilterText}\n initialValue={defaultFilterText || null}\n height={SEARCH_INPUT_HEIGHT}\n placeholder={i18n.text('Search attribute name')}\n classes={{root: classnames(styles.searchInput, {[styles.filledInput]: !!valueInFilterTextInput})}}\n />\n </div>\n <div className={styles.filterByDetails} data-reltio-id=\"reltio-dq-dashboard-attributes-filter\">\n <div className={indicatorClassname} onClick={openFilter}>\n <FilterListIcon className={indicatorIconClassname} />\n </div>\n <Popover\n open={!!anchorEl}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n PaperProps={{\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n ['data-reltio-id']: 'reltio-dq-dashboard-attributes-filter-popup'\n }}\n >\n <div className={styles.menu}>\n <Typography variant=\"h6\" className={styles.dropdownMenuTitle}>\n {i18n.text('Filter')}\n </Typography>\n <div className={styles.valueContainer}>\n {filterOptions.map(({label, options}) => {\n return (\n <div key={label}>\n {label && (\n <Typography variant=\"caption\" className={styles.groupLabel}>\n {label}\n </Typography>\n )}\n {options.map((option) => {\n const isSelected = containsOption(option, selectedFilterOptions);\n\n return (\n <Option\n key={option.label}\n data={option}\n isSelected={isSelected}\n onChange={handleOptionChange}\n />\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n <div className={styles.actionsContainer}>\n <Button\n onClick={handleClearAll}\n className={styles.clearAllButton}\n disabled={!hasSelectedOptions}\n data-reltio-id=\"reltio-dq-dashboard-filter-clear-all-button\"\n >\n {i18n.text('Clear all')}\n </Button>\n <Button onClick={handleCancel} data-reltio-id=\"reltio-dq-dashboard-filter-cancel-button\">\n {i18n.text('Cancel')}\n </Button>\n <Button\n color=\"primary\"\n onClick={handleApply}\n data-reltio-id=\"reltio-dq-dashboard-filter-apply-button\"\n >\n {i18n.text('Apply')}\n </Button>\n </div>\n </Popover>\n </div>\n </div>\n );\n};\n\nexport default AttributesFilters;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '360px',\n minWidth: '360px',\n maxWidth: '360px',\n display: 'flex',\n flexDirection: 'column',\n background: '#fff',\n zIndex: 1,\n marginBottom: '8px',\n borderRadius: '4px',\n boxShadow: '0px 1px 1px rgba(0, 0, 0, 0.14), 0px 2px 1px rgba(0, 0, 0, 0.12), 0px 1px 3px rgba(0, 0, 0, 0.2)'\n },\n title: {\n height: '24px',\n margin: '16px',\n display: 'flex',\n alignItems: 'center',\n fontSize: '16px',\n lineHeight: '24px',\n color: theme.palette.text.primary\n },\n itemCount: {\n color: theme.palette.text.primary,\n borderLeft: '1px solid rgba(0, 0, 0, 0.12)',\n marginLeft: '16px',\n paddingLeft: '16px'\n },\n listWrapper: {\n flexGrow: 1,\n overflow: 'hidden',\n position: 'relative'\n },\n loadingAnimation: {\n '&:before': {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: '50%',\n zIndex: 1,\n width: '500%',\n marginLeft: '-250%',\n background:\n 'linear-gradient(to right, rgba(255, 255, 255, 0) 46%, rgba(255, 255, 255, 0.35) 50%, rgba(255, 255, 255, 0) 54%) 50% 50%;',\n animation: '$loaderAnimation 0.8s linear infinite',\n content: '\"\"',\n pointerEvents: 'none'\n }\n },\n columnsTitle: {\n height: '48px',\n display: 'grid',\n gridGap: '32px',\n gridTemplateColumns: '308px 108px',\n alignItems: 'center',\n padding: '0 16px',\n background: 'rgba(0, 0, 0, 0.06)',\n borderBottom: '1px solid rgba(0, 0, 0, 0.1)',\n fontWeight: 500,\n fontSize: '12px',\n lineHeight: '16px',\n color: theme.palette.text.secondary\n },\n loaderWrapper: {\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100%',\n height: '4px',\n zIndex: 1\n },\n '@keyframes loaderAnimation': {\n '0%': {\n transform: 'translate(-30%, 0)'\n },\n '100%': {\n transform: 'translate(30%, 0)'\n }\n }\n}));\n","import React, {useEffect, useRef, useState, useMemo, useContext} from 'react';\nimport classnames from 'classnames';\nimport {pathOr, isEmpty, assoc, equals} from 'ramda';\nimport {FixedSizeList as List} from 'react-window';\nimport ReactResizeDetector from 'react-resize-detector';\nimport i18n from 'ui-i18n';\nimport {TEntityType} from '@reltio/mdm-sdk';\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport {\n getAtrributeFieldNames,\n getDetailedAttrTypeByFieldName,\n getIndexByFieldName,\n getFirstSimpleDetailedAttrType,\n getFillRateByAttributeType,\n rejectCollapsedItemsChildren,\n getEmptinessOptions,\n getDetailsOptions,\n filterItemsByEmptiness,\n filterItemsByDetails,\n emptinessFilterOptions\n} from './helpers';\nimport {useAttrTypeDetails} from '../../hooks/useAttrTypeDetails';\nimport {useFillRateRequest} from '../../hooks/useFillRateRequest';\nimport {ChartsDataWithState} from '../../hooks/useChartData';\nimport {FilterOption} from '../../types/FilterOption';\nimport {AttributeItemType, DetailedAttributeType} from '../../types/DetailedAttributeType';\nimport AttributesFilters from '../AttributesFilters/AttributesFilters';\nimport {DVFContext} from '../../contexts/DVFContext';\nimport DQDashboardNoData from '../DQDashboardNoData/DQDashboardNoData';\nimport {EMPTY_STATE_ICONS, RequestStates} from '@reltio/components';\nimport {EmptyStateVariants} from '../../types/EmptyStateVariants';\nimport {ChartsDataContext} from '../../contexts/ChartsDataContext';\nimport {formatFillRateData} from '../../services/fillRate';\nimport {useStyles} from './styles';\n\nexport type DQDashboardAttributesListProps = {\n entityType: TEntityType;\n onAttributesListChange: ({\n selectedDetailedAttributeType,\n filterText,\n filterOptions\n }: {\n selectedDetailedAttributeType: DetailedAttributeType;\n filterText: string;\n filterOptions: FilterOption[];\n }) => void;\n defaultFieldName?: string;\n defaultFilterText?: string;\n defaultFilterOptions?: FilterOption[];\n disableAttributeSelection: boolean;\n};\n\ntype RenderAttributeProps = {\n data: AttributeItemType[];\n style: React.CSSProperties;\n index: number;\n};\n\nconst LIST_ITEM_HEIGHT = 48;\nconst NO_DATA_HEIGHT = 349;\n\nconst getItemsLabel = (count: number) => (count === 1 ? i18n.text('item') : i18n.text('items'));\n\nconst DQDashboardAttributesList = ({\n entityType,\n onAttributesListChange,\n defaultFieldName,\n defaultFilterOptions,\n defaultFilterText,\n disableAttributeSelection\n}: DQDashboardAttributesListProps) => {\n const styles = useStyles();\n const listRef = useRef<List>();\n const listWrapper = useRef<HTMLDivElement>();\n const [filterText, setFilterText] = useState(defaultFilterText || '');\n const [collapsedFieldNames, setCollapsedFieldNames] = useState<string[]>([]);\n const [selectedFilterOptions, setSelectedFilterOptions] = useState<FilterOption[]>(\n defaultFilterOptions || emptinessFilterOptions\n );\n const [selectedFieldName, setSelectedFieldName] = useState({fieldName: defaultFieldName});\n const [fillRates, setFillRates] = useState({});\n const {data: chartsData} = useContext<ChartsDataWithState>(ChartsDataContext);\n const dvfState = useContext(DVFContext)?.dvfs?.state;\n const items = useAttrTypeDetails(entityType, filterText);\n\n const attributeFieldNames = getAtrributeFieldNames(items);\n const memoizedAttributeFieldNames = useMemo(\n () => attributeFieldNames,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [attributeFieldNames.toString()]\n );\n const {data: initialFillRates, state: fillRatesState} = useFillRateRequest(\n entityType.uri,\n memoizedAttributeFieldNames\n );\n useEffect(() => setFillRates(initialFillRates), [initialFillRates]);\n useEffect(() => {\n const fillRateFromChartsData = chartsData?.fillRate && formatFillRateData(chartsData?.fillRate);\n const fillRateForSelectedAttribute = fillRates[selectedFieldName.fieldName];\n setFillRates((fillRates) =>\n !fillRateFromChartsData || equals(fillRateForSelectedAttribute, fillRateFromChartsData)\n ? fillRates\n : assoc(selectedFieldName.fieldName, fillRateFromChartsData, fillRates)\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [chartsData?.fillRate]);\n\n const isLoading =\n fillRatesState === RequestStates.LOADING ||\n dvfState === RequestStates.LOADING ||\n fillRatesState === RequestStates.INIT ||\n dvfState === RequestStates.INIT;\n\n const {filteredItems, filterOptions} = useMemo(() => {\n const isFillRateNotLoaded = fillRatesState === RequestStates.INIT || fillRatesState === RequestStates.LOADING;\n const filteredByEmptinessItems = isFillRateNotLoaded\n ? items\n : filterItemsByEmptiness(selectedFilterOptions, fillRates, items);\n const detailsFilterOptions = getDetailsOptions(filteredByEmptinessItems);\n\n const filteredItems = filterItemsByDetails(selectedFilterOptions, filteredByEmptinessItems);\n const emptinessFilterOptions = getEmptinessOptions();\n const filterOptions = [emptinessFilterOptions, detailsFilterOptions];\n\n return {filteredItems, filterOptions};\n }, [items, selectedFilterOptions, fillRates, fillRatesState]);\n\n const visibleItems = useMemo(() => rejectCollapsedItemsChildren(filteredItems, collapsedFieldNames), [\n filteredItems,\n collapsedFieldNames\n ]);\n const countAttrTypes = filteredItems.length;\n\n const handleAttrTypeDetailsChange = (selectedDetailedAttributeType: DetailedAttributeType) => {\n onAttributesListChange({selectedDetailedAttributeType, filterText, filterOptions: selectedFilterOptions});\n setSelectedFieldName({fieldName: selectedDetailedAttributeType.fieldName});\n };\n\n const getSelectedDetailedAttributeType = () => {\n const selectedDetailedAttributeType =\n getDetailedAttrTypeByFieldName(filteredItems, selectedFieldName.fieldName) ||\n getFirstSimpleDetailedAttrType(filteredItems);\n return isEmpty(selectedDetailedAttributeType) || disableAttributeSelection\n ? null\n : selectedDetailedAttributeType;\n };\n\n useEffect(() => {\n if (disableAttributeSelection) {\n listRef.current?.scrollTo(0);\n return;\n }\n if (filteredItems.length) {\n const selectedDetailedAttributeType = getSelectedDetailedAttributeType();\n setSelectedFieldName({fieldName: selectedDetailedAttributeType?.fieldName || selectedFieldName.fieldName});\n }\n const indexOfSelectedFieldName = getIndexByFieldName(filteredItems, selectedFieldName.fieldName);\n indexOfSelectedFieldName > -1\n ? listRef.current?.scrollToItem(indexOfSelectedFieldName, 'center')\n : listRef.current?.scrollTo(0);\n }, [filteredItems]); // eslint-disable-line\n\n useEffect(() => {\n const selectedDetailedAttributeType = getSelectedDetailedAttributeType();\n onAttributesListChange({selectedDetailedAttributeType, filterText, filterOptions: selectedFilterOptions});\n }, [filterText, selectedFilterOptions, selectedFieldName]); // eslint-disable-line\n\n useEffect(() => {\n setSelectedFieldName(({fieldName}) => (disableAttributeSelection ? {fieldName: null} : {fieldName}));\n }, [disableAttributeSelection]);\n\n const handleScroll = ({scrollOffset}) => {\n if (listWrapper.current) {\n const currentBorderTop = listWrapper.current?.style?.borderTop;\n if (scrollOffset === 0) {\n listWrapper.current.style.borderTop = '';\n }\n if (scrollOffset > 0 && currentBorderTop === '') {\n listWrapper.current.style.borderTop = '1px solid rgba(0, 0, 0, 0.05)';\n }\n }\n };\n\n const handleCollapse = (fieldName: string) => () => {\n setCollapsedFieldNames((collapsedFieldNames) =>\n collapsedFieldNames.includes(fieldName)\n ? collapsedFieldNames.filter((collapsedFieldName) => collapsedFieldName !== fieldName)\n : collapsedFieldNames.concat(fieldName)\n );\n };\n\n const renderAttribute = ({data, index, style}: RenderAttributeProps) => {\n const {attributeItem, level = 0} = data[index];\n const selected = selectedFieldName.fieldName === attributeItem.fieldName;\n const fillRateData = getFillRateByAttributeType(fillRates, attributeItem);\n\n const isLastLevelItem = index > 0 && level > pathOr(-1, [index + 1, 'level'], visibleItems);\n\n return (\n <AttributeListItem\n fillRateData={fillRateData}\n fillRateState={fillRatesState}\n isLoading={isLoading}\n style={style}\n detailedAttributeType={attributeItem}\n level={level}\n onClick={handleAttrTypeDetailsChange}\n selected={selected}\n onCollapse={handleCollapse(attributeItem.fieldName)}\n isCollapsed={collapsedFieldNames.includes(attributeItem.fieldName)}\n isLastLevelItem={isLastLevelItem}\n />\n );\n };\n\n const itemCount = visibleItems.length;\n const hasData = !!itemCount;\n return (\n <div className={styles.root}>\n <div className={styles.title}>\n {i18n.text('Attributes')}\n <span className={styles.itemCount}>{`${countAttrTypes} ${getItemsLabel(countAttrTypes)}`}</span>\n <AttributesFilters\n defaultFilterText={defaultFilterText}\n defaultFilterOptions={selectedFilterOptions}\n onChangeFilterOptions={setSelectedFilterOptions}\n onChangeFilterText={setFilterText}\n filterOptions={filterOptions}\n />\n </div>\n <div\n ref={listWrapper}\n className={classnames(styles.listWrapper, {[styles.loadingAnimation]: isLoading})}\n data-reltio-id=\"reltio-dq-dashboard-attributes-list\"\n >\n {hasData ? (\n <ReactResizeDetector refreshMode=\"debounce\" refreshRate={100} handleHeight>\n {({height = 250}: {height: number}) => (\n <List\n ref={listRef}\n itemCount={itemCount}\n width=\"100%\"\n height={height}\n itemData={visibleItems}\n itemSize={LIST_ITEM_HEIGHT}\n onScroll={handleScroll}\n >\n {renderAttribute}\n </List>\n )}\n </ReactResizeDetector>\n ) : (\n !isLoading && (\n <DQDashboardNoData\n height={NO_DATA_HEIGHT}\n data={{\n Icon: EMPTY_STATE_ICONS.SEARCH_RESULTS,\n title: i18n.text('No results found'),\n message: i18n.text(\n 'Try adjusting your search or filter to find\\nwhat you’re looking for'\n )\n }}\n variant={EmptyStateVariants.MEDIUM}\n />\n )\n )}\n </div>\n </div>\n );\n};\n\nexport default DQDashboardAttributesList;\n","import {useState, useEffect, useMemo, useContext} from 'react';\nimport {useSelector} from 'react-redux';\nimport {evolve} from 'ramda';\nimport {TEntityType, Metadata, getEntityTypeMatchAttributes} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {getAttrTypeDetails} from '../services/attributeDetails';\nimport {AttributeItemType, DetailedAttributeType} from '../types/DetailedAttributeType';\nimport {collectFilteredAttributeItems} from '../services/attributeDetails';\nimport {DVFContext} from '../contexts/DVFContext';\n\nexport const useAttrTypeDetails = (entityType: TEntityType, filterText: string) => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const attrTypeItems = useMemo(() => collectFilteredAttributeItems(filterText)(metadata, entityType), [\n metadata,\n entityType,\n filterText\n ]);\n const [itemsWithDetails, setItemsWithDetails] = useState<AttributeItemType[]>([]);\n\n const entityTypeUri = entityType.uri;\n const matchAttributes = useMemo(() => getEntityTypeMatchAttributes(metadata, entityTypeUri), [\n metadata,\n entityTypeUri\n ]);\n const dvf = useContext(DVFContext)?.dvfs?.data;\n useEffect(() => {\n setItemsWithDetails([]);\n dvf &&\n setItemsWithDetails(\n attrTypeItems.map(\n evolve({\n attributeItem: (attrTypeItem: DetailedAttributeType) => ({\n ...attrTypeItem,\n details: getAttrTypeDetails({attrTypeItem, dvf, matchAttributes}),\n ...(attrTypeItem.children && {\n children: attrTypeItem.children.map((child) => {\n child.details = getAttrTypeDetails({attrTypeItem: child, dvf, matchAttributes});\n child.details.reference = attrTypeItem.isAttributeReference;\n return child;\n })\n })\n })\n })\n )\n );\n }, [attrTypeItems, matchAttributes, dvf]);\n\n return itemsWithDetails;\n};\n","import {useCallback, useEffect, useState} from 'react';\nimport {ChartData, useSafePromise, RequestStates} from '@reltio/components';\nimport {DQDataLevel, DQMetric, getDQChartsData} from '@reltio/mdm-sdk';\nimport {formatFillRatesData} from '../services/fillRate';\n\nexport const useFillRateRequest = (entityTypeUri: string, attributeFieldNames: string[]) => {\n const [requestState, setRequestState] = useState<RequestStates>(RequestStates.INIT);\n const [fillRateData, setFillRateData] = useState<Record<string, ChartData[]>>({});\n const safePromise = useSafePromise();\n\n const onError = (error) => {\n console.error(error); // eslint-disable-line\n setRequestState(RequestStates.ERROR);\n setFillRateData({});\n };\n\n const loadFillRateData = useCallback(() => {\n if (!attributeFieldNames.length) return;\n setRequestState(RequestStates.LOADING);\n setFillRateData({});\n\n const onRequestFinished = (data: Record<string, ChartData[]>) => {\n setFillRateData(data);\n setRequestState(RequestStates.LOADED);\n };\n\n return safePromise(\n getDQChartsData({\n entityTypeUri,\n attributes: attributeFieldNames,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE,\n metrics: [DQMetric.FILL_RATE]\n })\n )\n .then(formatFillRatesData)\n .then(onRequestFinished)\n .catch(onError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [safePromise, setRequestState, setFillRateData, attributeFieldNames]);\n\n const refreshAction = useCallback(() => {\n try {\n loadFillRateData();\n } catch (e) {\n onError(e);\n }\n }, [loadFillRateData]);\n\n useEffect(() => {\n refreshAction();\n }, [refreshAction]);\n\n return {data: fillRateData, state: requestState, reload: refreshAction};\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n root: {\n display: 'flex',\n alignItems: 'center',\n width: '100%'\n },\n title: {\n flexShrink: 0,\n paddingLeft: '20px'\n },\n content: {\n overflow: 'hidden',\n flexGrow: 1\n }\n});\n","import React from 'react';\nimport {Typography as Typography} from '@material-ui/core';\nimport {useStyles} from './styles';\n\ntype Props = {\n title: string;\n children: React.ReactNode;\n};\nconst DQDashboardHeader = ({title, children}: Props) => {\n const styles = useStyles();\n return (\n <div className={styles.root}>\n <Typography variant=\"h6\" className={styles.title}>\n {title}\n </Typography>\n <div className={styles.content}>{children}</div>\n </div>\n );\n};\n\nexport default DQDashboardHeader;\n","import {CSSProperties} from 'react';\nimport {makeStyles} from '@material-ui/core/styles';\n\ntype StyleProps = {\n attributeListWidth: number;\n entityLevelBarWidth: number;\n transitionTimeout: number;\n};\n\nconst scrollTopShadow: CSSProperties = {\n position: 'absolute',\n content: '\"\"',\n top: 0,\n left: 0,\n right: 0,\n zIndex: 1\n};\nconst gridPadding = 12;\n\nexport const useStyles = makeStyles((theme) => ({\n entityLevelBarWrapper: ({attributeListWidth}: StyleProps) => ({\n width: `calc(100% - ${attributeListWidth - gridPadding}px)`,\n height: '100%',\n verticalAlign: 'top',\n position: 'relative',\n boxSizing: 'border-box'\n }),\n entityLevelBar: ({transitionTimeout}: StyleProps) => ({\n position: 'absolute',\n top: 0,\n bottom: 0,\n right: '16px',\n width: '28px',\n background: 'linear-gradient(0deg, rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05)), #FFFFFF',\n boxShadow: '0px 1px 1px rgba(0, 0, 0, 0.14), 0px 2px 1px rgba(0, 0, 0, 0.12), 0px 1px 3px rgba(0, 0, 0, 0.2)',\n color: theme.palette.text.secondary,\n fontWeight: 500,\n fontSize: '14px',\n writingMode: 'vertical-rl',\n textTransform: 'uppercase',\n cursor: 'pointer',\n transition: `opacity ${transitionTimeout}s`,\n padding: '52px 0',\n marginBottom: '8px',\n lineHeight: '28px'\n }),\n entityLevelBarHidden: () => ({\n opacity: 0\n }),\n entityLevelLayout: ({transitionTimeout}: StyleProps) => ({\n width: '100%',\n height: '100%',\n position: 'relative',\n left: 0,\n transition: `left ${transitionTimeout}s`,\n marginTop: '-12px',\n '&:before': {\n ...scrollTopShadow,\n top: '8px',\n height: '4px',\n background: 'linear-gradient(180deg, #EEEEEE 0%, rgba(238, 238, 238, 0) 100%)',\n zIndex: 1\n },\n '&:after': {\n ...scrollTopShadow,\n height: '8px',\n background: '#EEEEEE'\n }\n }),\n entityLevelLayoutSliding: ({entityLevelBarWidth}: StyleProps) => ({\n left: `-${entityLevelBarWidth}px`\n }),\n expandButton: {\n position: 'absolute',\n top: '15px',\n left: '6px',\n writingMode: 'initial',\n textTransform: 'none',\n maxWidth: '24px',\n height: '24px',\n borderRadius: '12px',\n background: '#fff',\n boxShadow: '0px 2px 2px rgba(0, 0, 0, 0.14), 0px 3px 1px rgba(0, 0, 0, 0.12), 0px 1px 5px rgba(0, 0, 0, 0.2)',\n transition: 'max-width 0.3s linear',\n zIndex: 2,\n overflow: 'hidden',\n display: 'flex',\n lineHeight: '28px',\n '&:hover': {\n maxWidth: '500px'\n }\n },\n expandButtonText: {\n paddingRight: '8px',\n fontSize: '12px',\n lineHeight: '24px'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\nimport RightArrowIcon from '@material-ui/icons/ChevronRight';\n\nimport i18n from 'ui-i18n';\nimport {ReltioGridLayoutItem} from '@reltio/components';\nimport {getLabel, DQDataLevel, TEntityType} from '@reltio/mdm-sdk';\n\nimport {ATTRIBUTE_LIST_WIDTH, ENTITY_LEVEL_BAR_WIDTH, TRANSITION_TIMEOUT_MS} from '../constants';\nimport {DQDashboardView} from '../../../types/DQDashboardView';\nimport {DataLevelContext} from '../../../contexts/DataLevelContext';\n\nimport DQDashboardLayout from '../../DQDashboardLayout/DQDashboardLayout';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n showEntityLevel: () => void;\n dataLevel: DQDataLevel;\n views: DQDashboardView[];\n entityType: TEntityType;\n layout?: ReltioGridLayoutItem[];\n isSliding?: boolean;\n};\n\nconst EntityLevelLayout = ({showEntityLevel, dataLevel, views, layout, entityType, isSliding = false}: Props) => {\n const styles = useStyles({\n transitionTimeout: TRANSITION_TIMEOUT_MS / 1000,\n attributeListWidth: ATTRIBUTE_LIST_WIDTH,\n entityLevelBarWidth: ENTITY_LEVEL_BAR_WIDTH\n });\n\n const expandButtonTitle = `${i18n.text('Entity')}: ${getLabel(entityType.label)} ${i18n.text('overview')}`;\n return (\n <div className={styles.entityLevelBarWrapper} onClick={showEntityLevel}>\n <div\n className={classnames(styles.entityLevelBar, {\n [styles.entityLevelBarHidden]: dataLevel === DQDataLevel.ENTITY_TYPE\n })}\n data-reltio-id=\"reltio-dq-dashboard-entity-level-bar-button\"\n >\n <div className={styles.expandButton}>\n <RightArrowIcon />\n <span className={styles.expandButtonText}>{expandButtonTitle}</span>\n </div>\n {i18n.text('Entity')}\n </div>\n <div\n className={classnames(styles.entityLevelLayout, {\n [styles.entityLevelLayoutSliding]: dataLevel !== DQDataLevel.ENTITY_TYPE\n })}\n >\n {(dataLevel === DQDataLevel.ENTITY_TYPE || isSliding) && (\n <DataLevelContext.Provider value={DQDataLevel.ENTITY_TYPE}>\n <DQDashboardLayout views={views} layout={layout} />\n </DataLevelContext.Provider>\n )}\n </div>\n </div>\n );\n};\n\nexport default EntityLevelLayout;\n","export const TRANSITION_TIMEOUT_MS = 300;\nexport const ATTRIBUTE_LIST_WIDTH = 360;\nexport const ENTITY_LEVEL_BAR_WIDTH = 76;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n counter: {\n fontSize: '10px',\n lineHeight: '12px',\n height: '12px',\n background: 'rgba(0, 0, 0, 0.05)',\n padding: '1px 4px',\n borderRadius: '2px'\n },\n selectRoot: {\n '&>fieldset': {\n border: 'none !important',\n outline: 'none !important'\n }\n },\n select: {\n borderRadius: '6px !important',\n border: '1px solid rgba(0, 0, 0, 0.05)',\n padding: '3px 29px 3px 15px !important',\n fontSize: '18px',\n lineHeight: '24px',\n paddingRight: '30px',\n color: theme.palette.text.primary,\n minWidth: '128px',\n boxSizing: 'border-box',\n '&:hover,&:focus': {\n background: 'rgba(0, 0, 0, 0.05)',\n border: 'none',\n padding: '4px 30px 4px 16px !important'\n }\n },\n selectValue: {\n display: 'flex',\n alignItems: 'center',\n gap: '9px'\n },\n arrowIcon: {\n height: '16px',\n top: 'calc(50% - 8px)',\n right: '1px'\n },\n menu: {\n padding: '4px 0',\n display: 'flex',\n flexDirection: 'column',\n gap: '4px'\n },\n optionRoot: {\n maxWidth: '184px',\n minWidth: '140px',\n display: 'flex',\n paddingRight: '8px'\n },\n optionLabel: {\n flexGrow: 1,\n fontSize: '13px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n paddingRight: '10px',\n minWidth: 0\n }\n}));\n","import React from 'react';\nimport {isNil, find, pipe, propEq} from 'ramda';\nimport {MenuItem as MenuItem} from '@material-ui/core';\nimport Select, {SelectProps} from '@material-ui/core/Select';\nimport {Typography as Typography} from '@material-ui/core';\n\nimport {ExpandedValueTooltip, getValue} from '@reltio/components';\nimport {formatNumberAsMetric} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\nexport type Option = {\n value: string;\n label: string;\n count?: number;\n};\ntype Props = {\n options: Option[];\n value: string;\n onChange: (value: string) => void;\n dataReltioId?: string;\n dataReltioOptionId?: string;\n} & Omit<SelectProps, 'onChange' | 'value'>;\nconst Selector = ({options, value, onChange, dataReltioId, dataReltioOptionId, ...selectProps}: Props) => {\n const styles = useStyles();\n\n const renderCount = (count: number) => <span className={styles.counter}>{formatNumberAsMetric(count, 999)}</span>;\n\n const renderValue = (value: string) => {\n const {label, count}: Option = find(propEq('value', value))(options);\n return (\n <div className={styles.selectValue}>\n {label}\n {!isNil(count) && renderCount(count)}\n </div>\n );\n };\n\n const renderOption = ({value, label, count}: Option, index: number) => (\n <MenuItem\n key={value}\n value={value}\n classes={{\n root: styles.optionRoot\n }}\n data-reltio-id={`${dataReltioOptionId}-${index}`}\n >\n <ExpandedValueTooltip value={label}>\n <Typography className={styles.optionLabel}>{label}</Typography>\n </ExpandedValueTooltip>\n {!isNil(count) && renderCount(count)}\n </MenuItem>\n );\n\n return (\n <Select\n variant=\"outlined\"\n MenuProps={{\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left'\n },\n transformOrigin: {\n vertical: 'top',\n horizontal: 'left'\n },\n getContentAnchorEl: null,\n classes: {\n list: styles.menu\n }\n }}\n value={value}\n onChange={pipe(getValue, onChange)}\n renderValue={renderValue}\n className={styles.selectRoot}\n classes={{\n outlined: styles.select,\n icon: styles.arrowIcon\n }}\n autoWidth\n data-reltio-id={dataReltioId}\n {...selectProps}\n >\n {options.map(renderOption)}\n </Select>\n );\n};\n\nexport default Selector;\n","import React from 'react';\nimport {map, pipe} from 'ramda';\n\nimport {TEntityType} from '@reltio/mdm-sdk';\n\nimport Selector, {Option} from '../Selector/Selector';\n\nexport type TEntityTypeWithCount = TEntityType & {\n entityCount: number;\n};\ntype Props = {\n entityTypes: TEntityTypeWithCount[];\n entityTypeUri: string;\n onChange: (entityTypeUri: string) => void;\n};\nconst EntityTypeSelector = ({entityTypes, entityTypeUri, onChange}: Props) => {\n const options: Option[] = pipe(\n map(({label, uri, entityCount}: {label: string; uri: string; entityCount: number}) => ({\n label,\n count: entityCount,\n value: uri\n }))\n )(entityTypes);\n\n return (\n <Selector\n options={options}\n value={entityTypeUri}\n onChange={onChange}\n dataReltioOptionId=\"reltio-dq-dashboard-entity-type-selector-option\"\n dataReltioId=\"reltio-dq-dashboard-entity-type-selector\"\n />\n );\n};\n\nexport default EntityTypeSelector;\n","import React, {useMemo} from 'react';\n\nimport {TimeRange} from '../../types/TimeRange';\n\nimport {getTimeRangeOptions} from '../../services/mlDq';\n\nimport Selector, {Option} from '../Selector/Selector';\n\ntype Props = {\n value: TimeRange;\n onChange: (value: TimeRange) => void;\n};\n\nconst TimeRangeSelector = ({value, onChange}: Props) => {\n const options: Option[] = useMemo(() => getTimeRangeOptions(), []);\n\n return (\n <Selector\n options={options}\n value={value}\n onChange={onChange}\n dataReltioOptionId=\"reltio-dq-dashboard-time-range-selector-option\"\n dataReltioId=\"reltio-dq-dashboard-time-range-selector\"\n />\n );\n};\n\nexport default TimeRangeSelector;\n","import {makeStyles} from '@material-ui/core/styles';\nimport {Theme} from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n root: {\n display: 'flex',\n alignItems: 'center',\n marginRight: '16px'\n },\n updateTime: {\n color: theme.palette.text.secondary,\n fontSize: '13px',\n paddingRight: '16px'\n }\n}));\n","import React, {useEffect, useState} from 'react';\nimport moment from 'moment';\nimport RefreshIcon from '@material-ui/icons/Refresh';\n\nimport i18n from 'ui-i18n';\nimport {DQDataLevel} from '@reltio/mdm-sdk';\nimport {SmallIconButtonWithTooltip} from '@reltio/components';\n\nimport {useReloadAllFacets, useUpdateTime} from '../../contexts/ReloadFacetContext';\n\nimport {useStyles} from './styles';\n\nconst DATE_UPDATE_TIME_MS = 10000;\n\ntype Props = {\n dataLevel: DQDataLevel;\n};\n\nconst UpdateTimeHeader = ({dataLevel}: Props) => {\n const styles = useStyles();\n const [, setTick] = useState(0);\n const refreshAll = useReloadAllFacets();\n const {updateTime} = useUpdateTime(dataLevel);\n\n const handleRefreshAll = () => {\n refreshAll(dataLevel);\n };\n\n useEffect(() => {\n const intervalId = setInterval(() => setTick((timer) => timer + 1), DATE_UPDATE_TIME_MS);\n return () => clearInterval(intervalId);\n }, []);\n\n const date = moment(updateTime).fromNow();\n return (\n <div className={styles.root}>\n <span className={styles.updateTime}>{`${i18n.text('Last updated')} ${date}`}</span>\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Refresh')}\n icon={RefreshIcon}\n onClick={handleRefreshAll}\n size=\"S\"\n />\n </div>\n );\n};\n\nexport default UpdateTimeHeader;\n","import {CSSProperties} from 'react';\nimport {makeStyles} from '@material-ui/core/styles';\n\ntype StyleProps = {\n attributeListWidth: number;\n entityLevelBarWidth: number;\n transitionTimeout: number;\n};\n\nconst scrollTopShadow: CSSProperties = {\n position: 'absolute',\n content: '\"\"',\n top: 0,\n left: 0,\n right: 0,\n zIndex: 1\n};\n\nexport const useStyles = makeStyles((theme) => ({\n perspectiveView: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflowX: 'hidden',\n overflowY: 'auto',\n fontFamily: 'Roboto, Helvetica, Arial, sans-serif',\n display: 'flex',\n flexDirection: 'column',\n background: '#EEEEEE'\n },\n content: () => ({\n display: 'flex',\n height: '100%',\n whiteSpace: 'nowrap',\n marginLeft: '12px'\n }),\n contentWithEntityLevel: ({attributeListWidth, entityLevelBarWidth}: StyleProps) => ({\n width: `calc(200% - ${attributeListWidth + entityLevelBarWidth}px)`,\n marginLeft: '0'\n }),\n additionalLabel: {\n color: theme.palette.text.secondary,\n marginLeft: '10px'\n },\n contentWrapper: ({attributeListWidth, entityLevelBarWidth, transitionTimeout}: StyleProps) => ({\n flexGrow: 1,\n position: 'absolute',\n top: '56px',\n bottom: 0,\n left: `calc(-100% + ${attributeListWidth + entityLevelBarWidth}px)`,\n width: '100%',\n height: 'calc(100% - 56px)',\n transition: `left ${transitionTimeout}s`\n }),\n contentWrapperOneSlide: () => ({\n left: 0,\n transition: 'none'\n }),\n contentWrapperEntityLevel: () => ({\n left: 0\n }),\n attributeLevelWrapper: () => ({\n verticalAlign: 'top',\n width: 'auto',\n height: '100%',\n flexGrow: 1,\n position: 'relative',\n marginTop: '-12px',\n '&:before': {\n ...scrollTopShadow,\n top: '8px',\n height: '4px',\n background: 'linear-gradient(180deg, #EEEEEE 0%, rgba(238, 238, 238, 0) 100%)',\n zIndex: 1\n },\n '&:after': {\n ...scrollTopShadow,\n height: '8px',\n background: '#EEEEEE'\n }\n }),\n attributeLevelWithEntityLevel: ({attributeListWidth, entityLevelBarWidth}: StyleProps) => ({\n width: `calc(100% - ${attributeListWidth + entityLevelBarWidth}px)`\n }),\n navigationWrapper: {\n display: 'flex',\n gap: '16px',\n padding: '12px',\n alignItems: 'center'\n },\n headerRightSide: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'row-reverse',\n marginRight: '4px'\n }\n}));\n","import classnames from 'classnames';\nimport {ascend, assoc, equals, map, path, pipe, prop, reject, sortWith} from 'ramda';\nimport React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS, ReltioGridLayoutItem, useSavedState} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {getEntityType, DQDataLevel, DQMetric, TEntityType, Metadata} from '@reltio/mdm-sdk';\n\nimport {ATTRIBUTE_LIST_WIDTH, ENTITY_LEVEL_BAR_WIDTH, TRANSITION_TIMEOUT_MS} from './constants';\nimport {defaultLayoutsByDataLevel} from '../../constants/defaultConfig';\nimport {ChartsDataContext} from '../../contexts/ChartsDataContext';\nimport {DetailedAttributeTypeContext} from '../../contexts/DetailedAttributeTypeContext';\nimport {DVFContext} from '../../contexts/DVFContext';\nimport {EntityTypeContext} from '../../contexts/EntityTypeContext';\nimport {useReloadFacet, useUpdateTime} from '../../contexts/ReloadFacetContext';\nimport {useChartsDataRequest} from '../../hooks/useChartsDataRequest';\nimport {useDVF} from '../../hooks/useDVF';\nimport {useDvfConfigLink} from '../../hooks/useDvfConfigLink';\nimport {useEntityCount} from '../../hooks/useEntityCount';\nimport {useEntityTypes} from '../../hooks/useEntityTypes';\nimport {\n getLayoutByAttributeType,\n getMetricsFromViews,\n getEntityLevelViews,\n getAttributeLevelViews,\n hasTimeRangeLayout\n} from '../../services/charts';\nimport {checkEntityTypeHasRDMLookup} from '../../services/rdmTranscode';\nimport {isReferenceChild} from '../../services/attributeDetails';\nimport {DetailedAttributeType} from '../../types/DetailedAttributeType';\nimport {DQDashboardPerspectiveConfig} from '../../types/DQDashboardPerspectiveConfig';\nimport {DQDashboardSavedState} from '../../types/DQDashboardSavedState';\nimport {EmptyStateVariants} from '../../types/EmptyStateVariants';\nimport {FilterOption} from '../../types/FilterOption';\nimport {TimeRange} from '../../types/TimeRange';\nimport {RDMLookupState} from '../../constants/RdmLookupState';\n\nimport AttributeLevelLayout from './AttributeLevelLayout';\nimport DataLevelBreadcrumbs from '../DataLevelBreadcrumbs/DataLevelBreadcrumbs';\nimport DQDashboardAttributesList from '../DQDashboardAttributesList/DQDashboardAttributesList';\nimport DQDashboardError from '../DQDashboardError/DQDashboardError';\nimport DQDashboardHeader from '../DQDashboardHeader/DQDashboardHeader';\nimport DQDashboardNoData from '../DQDashboardNoData/DQDashboardNoData';\nimport EntityLevelLayout from './EntityLevelLayout/EntityLevelLayout';\nimport EntityTypeSelector, {TEntityTypeWithCount} from '../EntityTypeSelector/EntityTypeSelector';\nimport TimeRangeSelector from '../TimeRangeSelector/TimeRangeSelector';\nimport UpdateTimeHeader from '../UpdateTimeHeader/UpdateTimeHeader';\n\nimport {useStyles} from './styles';\n\nconst NO_DATA_HEIGHT = 359;\nconst getFirstEntityTypeUri = path([0, 'uri']);\n\ntype Props = {\n config: DQDashboardPerspectiveConfig;\n saveState: (state: DQDashboardSavedState) => void;\n getSavedState: () => Promise<DQDashboardSavedState>;\n};\n\nconst DQDashboardPerspectiveView = ({config, saveState, getSavedState}: Props) => {\n const styles = useStyles({\n transitionTimeout: TRANSITION_TIMEOUT_MS / 1000,\n attributeListWidth: ATTRIBUTE_LIST_WIDTH,\n entityLevelBarWidth: ENTITY_LEVEL_BAR_WIDTH\n });\n const customAttributeLayouts = config.layoutsByDataLevel?.[DQDataLevel.ATTRIBUTE_TYPE];\n const entityTypes = useEntityTypes();\n const [entityTypeUri, setEntityTypeUri] = useState<string>();\n const [isSliding, setIsSliding] = useState<boolean>(false);\n const [timeRange, setTimeRange] = useState<TimeRange>(\n hasTimeRangeLayout(customAttributeLayouts) ? TimeRange.LAST_7_DAYS : TimeRange.TODAY\n );\n const entityType = entityTypes && entityTypeUri ? getEntityType({entityTypes}, entityTypeUri) : null;\n const getEntityCount = useEntityCount(entityTypes);\n const [detailedAttributeType, setDetailedAttributeType] = useState<DetailedAttributeType>(null);\n const {isLoaded, savedState} = useSavedState<DQDashboardSavedState>(getSavedState);\n const canGetDQStatistic = useSelector(mdmModule.selectors.getCanUserGetDQStatistic);\n const [dataLevel, setDataLevel] = useState<DQDataLevel>();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const hasRDMLookup = metadata && entityType && checkEntityTypeHasRDMLookup(metadata, entityType);\n const {resetUpdateTimes} = useUpdateTime(dataLevel);\n\n const dvfConfigLink = useDvfConfigLink(entityType);\n const dvfs = useDVF(entityType?.uri);\n const dvfContext = useMemo(() => ({dvfs, dvfConfigLink}), [dvfs, dvfConfigLink]);\n const dqDashboardSavedState = useRef<DQDashboardSavedState>();\n useEffect(() => {\n dqDashboardSavedState.current = savedState;\n }, [savedState]);\n\n const handleSetEntityTypeByUri = useCallback(\n (entityTypeUri: string) => {\n if (entityType?.uri !== entityTypeUri) {\n resetUpdateTimes(DQDataLevel.ENTITY_TYPE);\n setDetailedAttributeType(null);\n setEntityTypeUri(entityTypeUri);\n const newDQDashboardSavedState = {\n dataLevel: DQDataLevel.ENTITY_TYPE,\n entityTypeUri,\n ...(dqDashboardSavedState.current && {\n filterOptions: dqDashboardSavedState.current.filterOptions,\n filterText: dqDashboardSavedState.current.filterText,\n fieldName: dqDashboardSavedState.current.fieldName\n })\n };\n setDataLevel(DQDataLevel.ENTITY_TYPE);\n saveState(newDQDashboardSavedState);\n dqDashboardSavedState.current = newDQDashboardSavedState;\n }\n },\n [entityType?.uri] // eslint-disable-line\n );\n const currentRDMLookupState = hasRDMLookup ? RDMLookupState.RDM_LOOKUP_EXIST : RDMLookupState.RDM_LOOKUP_NOT_EXIST;\n const entityLevelLayout =\n config.layoutsByDataLevel?.[DQDataLevel.ENTITY_TYPE]?.[currentRDMLookupState] ||\n defaultLayoutsByDataLevel[DQDataLevel.ENTITY_TYPE][currentRDMLookupState];\n const attributeLevelLayout = useMemo(\n (): ReltioGridLayoutItem[] =>\n getLayoutByAttributeType(customAttributeLayouts, detailedAttributeType?.type, timeRange),\n [detailedAttributeType?.type, customAttributeLayouts, timeRange]\n );\n\n const entityLevelViews = useMemo(\n () => (entityLevelLayout ? getEntityLevelViews(config.viewsByDataLevel, entityLevelLayout) : []),\n [config.viewsByDataLevel, entityLevelLayout]\n );\n const entityLevelMetrics = useMemo(() => getMetricsFromViews(entityLevelViews), [entityLevelViews]);\n const entityLevelChartsData = useChartsDataRequest({\n entityType,\n dataLevel: DQDataLevel.ENTITY_TYPE,\n metrics: entityLevelMetrics\n });\n\n useReloadFacet({\n state: entityLevelChartsData.state,\n reload: entityLevelChartsData.reload,\n dataLevel: DQDataLevel.ENTITY_TYPE\n });\n\n const attributeLevelViews = useMemo(\n () => getAttributeLevelViews(config.viewsByDataLevel, detailedAttributeType?.type, attributeLevelLayout),\n [config.viewsByDataLevel, detailedAttributeType?.type, attributeLevelLayout]\n );\n\n const attributeLevelMetrics = useMemo(\n () =>\n pipe(getMetricsFromViews, (metrics: DQMetric[]) =>\n isReferenceChild(detailedAttributeType) ? reject(equals(DQMetric.DATA_VALIDATION))(metrics) : metrics\n )(attributeLevelViews),\n [attributeLevelViews, detailedAttributeType]\n );\n const attributeLevelChartsData = useChartsDataRequest({\n entityType,\n detailedAttributeType,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE,\n metrics: attributeLevelMetrics\n });\n\n useReloadFacet({\n state: attributeLevelChartsData.state,\n reload: attributeLevelChartsData.reload,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n\n const sortedEntityTypesWithCount: TEntityTypeWithCount[] = pipe(\n map((entityType: TEntityType) => assoc('entityCount', getEntityCount(entityType.uri))(entityType)),\n sortWith([\n ({entityCount: a}: {entityCount: number}, {entityCount: b}: {entityCount: number}) =>\n a === b || (a > 0 && b > 0) ? 0 : a === 0 ? 1 : -1,\n ascend(prop('label'))\n ])\n )(entityTypes);\n\n useEffect(() => {\n if (isLoaded) {\n const isEntityTypeExists = !!getEntityType({entityTypes}, savedState.entityTypeUri);\n setEntityTypeUri(\n isEntityTypeExists ? savedState.entityTypeUri : getFirstEntityTypeUri(sortedEntityTypesWithCount)\n );\n setDataLevel(\n entityLevelLayout ? savedState.dataLevel || DQDataLevel.ENTITY_TYPE : DQDataLevel.ATTRIBUTE_TYPE\n );\n }\n }, [isLoaded]); // eslint-disable-line\n\n const handleAttributesListChange = ({\n selectedDetailedAttributeType,\n filterText,\n filterOptions\n }: {\n selectedDetailedAttributeType: DetailedAttributeType;\n filterText: string;\n filterOptions: FilterOption[];\n }) => {\n const fieldName = selectedDetailedAttributeType?.fieldName;\n const newDQDashboardSavedState: DQDashboardSavedState = {\n entityTypeUri: entityType.uri,\n fieldName,\n filterOptions,\n filterText,\n dataLevel: fieldName ? DQDataLevel.ATTRIBUTE_TYPE : dataLevel\n };\n if (!equals(dqDashboardSavedState.current, newDQDashboardSavedState)) {\n saveState(newDQDashboardSavedState);\n dqDashboardSavedState.current = newDQDashboardSavedState;\n }\n if (fieldName) {\n setDataLevel(DQDataLevel.ATTRIBUTE_TYPE);\n hasTimeRangeLayout(customAttributeLayouts) && setTimeRange(TimeRange.LAST_7_DAYS);\n }\n\n if (!equals(detailedAttributeType, selectedDetailedAttributeType)) {\n resetUpdateTimes(DQDataLevel.ATTRIBUTE_TYPE);\n setDetailedAttributeType(selectedDetailedAttributeType);\n }\n };\n\n const showEntityLevel = () => {\n setDataLevel(DQDataLevel.ENTITY_TYPE);\n };\n\n useEffect(() => {\n setIsSliding(true);\n if (dataLevel === DQDataLevel.ENTITY_TYPE) {\n setTimeout(() => {\n setDetailedAttributeType(null);\n }, TRANSITION_TIMEOUT_MS);\n }\n setTimeout(() => {\n setIsSliding(false);\n }, TRANSITION_TIMEOUT_MS);\n }, [dataLevel]);\n\n const handleTimeRangeChange = (timeRange: TimeRange) => {\n resetUpdateTimes(dataLevel);\n setTimeRange(timeRange);\n };\n\n const showContent = entityType && canGetDQStatistic && isLoaded && !!getEntityCount(entityTypeUri);\n const hasEntityLevel = !!entityLevelLayout;\n const showTimeRange = dataLevel === DQDataLevel.ATTRIBUTE_TYPE && hasTimeRangeLayout(customAttributeLayouts);\n return (\n <div className={styles.perspectiveView}>\n <DQDashboardHeader title={i18n.text('Data Quality')}>\n {entityType && (\n <div className={styles.navigationWrapper}>\n <EntityTypeSelector\n entityTypes={sortedEntityTypesWithCount}\n entityTypeUri={entityType.uri}\n onChange={handleSetEntityTypeByUri}\n />\n <DataLevelBreadcrumbs\n dataLevel={dataLevel}\n detailedAttributeType={detailedAttributeType}\n onChange={setDataLevel}\n />\n <div className={styles.headerRightSide}>\n {showTimeRange && <TimeRangeSelector value={timeRange} onChange={handleTimeRangeChange} />}\n <UpdateTimeHeader dataLevel={dataLevel} />\n </div>\n </div>\n )}\n </DQDashboardHeader>\n <div\n className={classnames(styles.contentWrapper, {\n [styles.contentWrapperEntityLevel]: dataLevel === DQDataLevel.ENTITY_TYPE,\n [styles.contentWrapperOneSlide]: !showContent || !hasEntityLevel\n })}\n >\n {showContent && (\n <div\n className={classnames(styles.content, {\n [styles.contentWithEntityLevel]: hasEntityLevel\n })}\n >\n <DVFContext.Provider value={dvfContext}>\n <EntityTypeContext.Provider value={entityType}>\n {hasEntityLevel && (\n <ChartsDataContext.Provider value={entityLevelChartsData}>\n <EntityLevelLayout\n showEntityLevel={showEntityLevel}\n dataLevel={dataLevel}\n views={entityLevelViews}\n layout={entityLevelLayout}\n entityType={entityType}\n isSliding={isSliding}\n />\n </ChartsDataContext.Provider>\n )}\n <ChartsDataContext.Provider value={attributeLevelChartsData}>\n <DQDashboardAttributesList\n entityType={entityType}\n onAttributesListChange={handleAttributesListChange}\n defaultFieldName={dqDashboardSavedState.current?.fieldName}\n defaultFilterText={dqDashboardSavedState.current?.filterText}\n defaultFilterOptions={dqDashboardSavedState.current?.filterOptions}\n disableAttributeSelection={dataLevel === DQDataLevel.ENTITY_TYPE}\n />\n <div\n className={classnames(styles.attributeLevelWrapper, {\n [styles.attributeLevelWithEntityLevel]: hasEntityLevel\n })}\n >\n {detailedAttributeType && (\n <DetailedAttributeTypeContext.Provider value={detailedAttributeType}>\n <AttributeLevelLayout\n dataLevel={dataLevel}\n views={attributeLevelViews}\n layout={attributeLevelLayout}\n timeRange={timeRange}\n isSliding={isSliding}\n />\n </DetailedAttributeTypeContext.Provider>\n )}\n </div>\n </ChartsDataContext.Provider>\n </EntityTypeContext.Provider>\n </DVFContext.Provider>\n </div>\n )}\n {!canGetDQStatistic && (\n <DQDashboardError\n height={NO_DATA_HEIGHT}\n errorData={{\n title: i18n.text('You don’t currently have permission to view this page'),\n message: i18n.text(' Please contact your Tenant Admin to change permissions')\n }}\n variant={EmptyStateVariants.LARGE}\n />\n )}\n {isLoaded && entityType && !getEntityCount(entityTypeUri) && canGetDQStatistic && (\n <DQDashboardNoData\n height={NO_DATA_HEIGHT}\n data={{\n Icon: EMPTY_STATE_ICONS.NO_DATA,\n title: i18n.text('Give us something to go on!'),\n message: i18n.text(\n 'Go ahead and load some data. We’ll put it on the scales and\\nlet you know here if it measures up.'\n )\n }}\n variant={EmptyStateVariants.LARGE}\n />\n )}\n </div>\n </div>\n );\n};\n\nexport default DQDashboardPerspectiveView;\n","import {useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {isAvailableEntityType, Metadata} from '@reltio/mdm-sdk';\n\nexport const useEntityTypes = () => {\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const entityTypes = useMemo(() => metadata.entityTypes.filter(isAvailableEntityType), [metadata.entityTypes]);\n return entityTypes;\n};\n","import {insert, join, pipe, propEq, split} from 'ramda';\nimport {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {getLastUriPart, TEntityType, getConsoleApps} from '@reltio/mdm-sdk';\nimport {useSafePromise} from '@reltio/components';\n\nexport const useDvfConfigLink = (selectedEntityType: TEntityType) => {\n const [consoleLink, setConsoleLink] = useState<string>(null);\n const [dvfConfigLink, setDVFConfigLink] = useState<string>(null);\n const safePromise = useSafePromise();\n const servicesPath = useSelector(mdmModule.selectors.getServicesPath);\n const environment = useSelector(mdmModule.selectors.getEnvironment) as string;\n const tenant = useSelector(mdmModule.selectors.getTenant) as string;\n useEffect(() => {\n safePromise(getConsoleApps({servicesPath, tenant, environment}))\n .then((response) => {\n const consoleLink = response?.data?.apps.find(propEq('name', 'Console')).uri;\n setConsoleLink(consoleLink);\n })\n .catch(() => setConsoleLink(null));\n }, [environment, tenant, servicesPath]);\n useEffect(() => {\n const dvfConfigLink =\n consoleLink && selectedEntityType?.uri\n ? pipe(\n split('?'),\n insert(1, `datamodeler/entityDetails/${getLastUriPart(selectedEntityType.uri)}/validation?`),\n join('')\n )(consoleLink)\n : null;\n setDVFConfigLink(dvfConfigLink);\n }, [selectedEntityType, consoleLink]);\n\n return dvfConfigLink;\n};\n","import {useState, useEffect, useCallback, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {getDVF, DataValidationFunction, ApiErrorCode} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport {useSafePromise, RequestStates} from '@reltio/components';\n\nexport const useDVF = (entityTypeUri: string) => {\n const [dvfs, setDvfs] = useState<DataValidationFunction[]>(null);\n const [requestState, setRequestState] = useState<RequestStates>(RequestStates.INIT);\n const [errorCode, setErrorCode] = useState<number>();\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n const dvfPath: string = useSelector(mdmModule.selectors.getDVFPath);\n const safePromise = useSafePromise();\n const env: string = useSelector(mdmModule.selectors.getEnvironment);\n const canUserReadDVF = useSelector(mdmModule.selectors.getCanUserReadDVF);\n const onError = (error: {errorCode: number}) => {\n console.error(error); // eslint-disable-line\n setRequestState(RequestStates.ERROR);\n setDvfs([]);\n setErrorCode(error?.errorCode);\n };\n const onRequestFinished = (dvf: {functions: DataValidationFunction[]}) => {\n setDvfs(dvf.functions);\n setErrorCode(undefined);\n setRequestState(RequestStates.LOADED);\n };\n const loadDVFs = useCallback(() => {\n if (!canUserReadDVF) {\n onError({errorCode: ApiErrorCode.ACCESS_DENIED});\n return;\n }\n if (entityTypeUri && env) {\n setErrorCode(undefined);\n setRequestState(RequestStates.LOADING);\n return safePromise(getDVF({dvfPath, tenant, entityTypeUri, env})).then(onRequestFinished).catch(onError);\n }\n }, [dvfPath, tenant, entityTypeUri, env]);\n\n useEffect(() => {\n loadDVFs();\n }, [loadDVFs]);\n\n const result = useMemo(() => ({data: dvfs, state: requestState, reload: loadDVFs, errorCode}), [\n dvfs,\n requestState,\n loadDVFs,\n errorCode\n ]);\n\n return result;\n};\n","import React, {useCallback} from 'react';\nimport {Provider} from 'react-redux';\nimport {Store} from 'redux';\nimport {MuiThemeProvider, createMuiTheme, createGenerateClassName, StylesProvider} from '@material-ui/core/styles';\n\nimport {promisifyCallback} from '@reltio/mdm-sdk';\n\nimport {DQDashboardPerspectiveConfig} from '../../types/DQDashboardPerspectiveConfig';\nimport {DQDashboardSavedState} from '../../types/DQDashboardSavedState';\nimport {ReloadFacetProvider} from '../../contexts/ReloadFacetContext';\nimport {theme} from '../../theme';\n\nimport DQDashboardPerspectiveView from './DQDashboardPerspectiveView';\n\nconst dqDashboardTheme = createMuiTheme(theme);\n\nconst generateClassName = createGenerateClassName({\n productionPrefix: 'DQDashboardPerspective',\n disableGlobal: true\n});\n\ntype Props = {\n store: Store<unknown>;\n config: DQDashboardPerspectiveConfig;\n saveState: (state: DQDashboardSavedState) => void;\n getSavedState: (clb: (state: DQDashboardSavedState) => void) => void;\n};\n\nconst DQDashboardPerspective = ({store, config, saveState, getSavedState}: Props) => {\n const getSavedStatePromisified: () => Promise<DQDashboardSavedState> = useCallback(\n promisifyCallback(getSavedState),\n [getSavedState]\n );\n\n return (\n <Provider store={store}>\n <MuiThemeProvider theme={dqDashboardTheme}>\n <StylesProvider generateClassName={generateClassName}>\n <ReloadFacetProvider>\n <DQDashboardPerspectiveView\n config={config}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n </ReloadFacetProvider>\n </StylesProvider>\n </MuiThemeProvider>\n </Provider>\n );\n};\n\nexport default DQDashboardPerspective;\n","import {DQDashboardView} from '@reltio/dq-dashboard';\n\nexport default DQDashboardView;\n"],"names":["AvatarStates","className","icon","avatarText","rootClasses","otherProps","state","setState","useState","useEffect","ICON_MODE","TEXT_MODE","onImageLoadFail","ERROR_MODE","Avatar","classnames","iconRoot","src","onError","textRoot","contextSelector","CellRenderer","withContext","TableContext","useStyles","makeStyles","theme","display","flexDirection","basicView","BasicView","forwardRef","ref","children","styles","Paper","classes","root","displayName","propTypes","PropTypes","flex","padding","paddingTop","toolbar","minHeight","lineHeight","title","fontSize","fontWeight","whiteSpace","overflow","textOverflow","Toolbar","Typography","variant","bar","backgroundColor","palette","secondary","main","opacity","position","minWidth","borderRadius","top","left","height","widthIsNumber","width","is","Number","maxWidth","getBarColorWidth","useCallback","style","flexWrap","alignItems","justifyContent","boxSizing","color","text","primary","letterSpacing","textAlign","embedded","flexShrink","full","textBox","marginTop","secondaryText","button","boxShadow","EMPTY_STATE_VARIANTS","EMPTY_STATE_ICONS","SEARCH_RESULTS","props","viewBox","xmlns","xmlnsXlink","cx","cy","fx","fy","r","gradientTransform","id","stopColor","stopOpacity","offset","x1","y1","x2","y2","x","y","filterUnits","stdDeviation","in","stroke","strokeWidth","fill","fillRule","xlinkHref","fillOpacity","mask","transform","d","rx","ry","filter","SELECT_ATTRIBUTES","maskType","maskUnits","clipRule","gradientUnits","NO_DATA","dx","dy","result","values","type","mixBlendMode","ERROR","colorInterpolationFilters","floodOpacity","mode","in2","LogoRenderer","buttonTitle","onClick","identity","access","showButton","h5","subtitle1","Button","ErrorBoundary","React","constructor","super","this","error","componentDidCatch","console","render","EmptyStub","HideOnShrink","widthToHide","handleWidth","reltioLayoutItemToReactGridLayoutItem","maxHeight","isStatic","w","h","minW","minH","maxW","maxH","i","static","reactGridLayoutItemToReltioLayoutItem","reactGridLayoutToReltioLayout","layout","map","getReltioLayoutItemById","curry","find","propEq","updateExtraPropsInLayoutItem","from","to","mergeAll","pick","copyPropsFromPreviousLayout","oldReltioLayout","reltioLayout","layoutItem","pipe","prop","defaultTo","__","_","gridLayout","background","border","transitionDuration","zIndex","userSelect","transitionProperty","willChange","pointerEvents","transition","backgroundImage","bottom","right","svg2Url","backgroundRepeat","backgroundOrigin","cursor","visibility","gridFullscreen","overflowY","ReltioGridLayout","views","layoutOptions","onLayoutChanged","draggableHandle","LayoutItem","onRemove","onDrop","droppingItem","isDroppable","useRef","fullscreenItemId","setFullscreenItemId","setWidth","cols","rowHeight","margin","processedLayout","useMemo","reltioLayoutToReactGridLayout","onReltioLayoutChanged","onToggleFullscreen","prevId","isFullscreenEnabled","onItemHeightResize","layoutId","isLayoutChanged","newLayout","newHeight","options","Math","ceil","calcHeight","refreshMode","refreshRate","onResize","innerRef","autoSize","onLayoutChange","isResizable","isDraggable","e","isItemFullscreen","autosizeComponent","autosizing","AutosizeComponent","layoutItemId","handleHeight","key","layoutItemConfig","fullscreen","item","isFullscreen","defaultProps","onConfigChanged","memo","sourceType","metadata","useSelector","mdmModule","uri","findSourceSystemByUri","getSourceSystemLabel","sourceIcon","getAbsoluteImageUrl","VerticalDivider","borderLeft","Component","WithPercents","data","dataWithPercents","percents","countPercents","pluck","percent","enrichDataWithPercents","clickable","useClickableStyle","undefined","useSavedState","getSavedState","isLoaded","setIsLoaded","savedState","setSavedState","then","catch","DateRangeTypes","RequestStates","loader","LinearProgress","view","DashboardViewIdContext","value","ReloadFacetSignalContext","createContext","ReloadFacetActionContext","RequestsUpdateTimeContext","ReloadFacetProvider","refreshSignals","setRefreshSignals","updateTimes","setUpdateTimes","resetUpdateTimes","dataLevel","assoc","refreshAll","signals","nextSignal","propOr","Provider","updateTime","actionId","time","Date","now","assocPath","useReloadFacet","reload","useContext","Error","refreshSignal","useRefreshAction","action","nanoid","useUpdateTime","min","Object","defaultTheme","tooltip","ChartDataType","CustomViewType","ViewType","DQMetric","RDMLookupState","defaultViewsByDataLevel","DQDataLevel","FILL_RATE","i18n","UNIQUENESS","SUMMARY","DATA_VALIDATION","FREQUENCY","LENGTH_STATISTIC","PATTERN","CROSSWALK_ANALYSIS","MONTH_DISTRIBUTION","DAY_OF_WEEK_DISTRIBUTION","DAY_OF_MONTH_DISTRIBUTION","VALUE_DISTRIBUTION","UNSUPPORTED","CONSOLIDATION_RATE","RDM_TRANSCODE","defaultLayoutsByDataLevel","today","default","SSN","BOOLEAN","DATE","INTEGER","FLOAT","RDM_LOOKUP_EXIST","RDM_LOOKUP_NOT_EXIST","ChartsDataContext","DetailedAttributeTypeContext","DVFContext","EntityTypeContext","useChartsDataRequest","entityType","detailedAttributeType","metrics","requestState","setRequestState","chartsData","setChartsData","lastRequestTime","setLastRequestTime","attributeFieldName","fieldName","entityTypeUri","safePromise","useSafePromise","onRequestFinished","loadChartsData","async","buildFilterQueryString","FilterOptions","getActiveProfiles","getFacets","query","generateValuableQueryString","activeness","ActivityFilters","body","pageSize","pageNo","getInactiveProfiles","getDqChartsData","getDQChartsData","Promise","all","activeProfiles","inactiveProfiles","dqChartsData","sourceSystems","path","omit","keys","length","summary","getLastUriPart","attributes","pathOr","needRefresh","refreshAction","useEntityCount","entityTypes","entitiesCountMap","setEntitiesCountMap","TimeRange","getAdvancedSearchFilter","filters","index","operator","SearchOperator","localizeChartValues","chartData","localizedValue","getPercentLabel","isNil","isEmptyData","isEmpty","facetFiltersToSearchState","advanced","when","isDateType","evolve","mapFilterValue","parseTimestamp","searchOptions","searchByOv","ovOnly","version","getSearchState","getFilter","getChartDataTypeByAttributeType","DataTypes","STRING","UNKNOWN","getValidViews","allViews","supportedViews","reduce","viewType","viewIndex","findIndex","includes","concat","getMetricsFromViews","metric","hasTimeRangeLayout","layouts","timeRange","getBarWidthStyle","enrichChartDataWithSourceLabel","max","group","label","getEntityTypeSummarySearchState","transformTimeSeriesChartData","toFixed","RDMTranscodeStatus","RDMChartColors","RESOLVED","UNRESOLVED","getRDMChartColors","getChartItemColor","formatRDMTranscodeData","resolveCount","unresolveCount","total","dataReltioId","getRDMTranscodeFilter","rdmTranscodeStatus","getRDMTranscodeSearchState","isContainActiveVF","dvf","attributeTypeUri","some","allPass","StatusVF","isFloatingType","getAttributeLabel","getLabel","name","AttrTypeDetailsType","filterAttributeByDetails","filterOptions","detail","details","filterAttributeTreeByDetails","child","filterAttributeByNotEmpty","fillRates","fillRate","FillRateState","filterAttributeByEmpty","filterAttributeTreeByEmpty","parents","attributeUriToSearchUri","filterAttributesTypesByName","filterText","array","resultArray","currentItem","isCurrentItemMatch","toLowerCase","filterAttributeByName","push","assign","getAttrTypeDetails","attrTypeItem","matchAttributes","required","isAttributeReference","INCLUDED_IN_MATCHING","CONTAIN_VF","REQUIRED","REFERENCE","RDM_LOOKUP","isRDMLookupAttrType","getDetailLabel","attributeDetailType","buildItems","items","level","chain","childrenItems","isReference","attributeItem","isReferenceChild","EmptyStateVariants","DataLevelContext","TimeRangeContext","getTimeRangeOptions","TODAY","LAST_7_DAYS","LAST_30_DAYS","getTimeSeriesData","getData","_max_date","sortBy","getDaysByTimeRange","checkIsTimeSeries","config","timeSeries","paddingRight","infoDataLabel","chartDataLabel","tooltipWrapper","row","DataRenderer","ChartDataRenderer","fillRateSquare","marginRight","verticalAlign","getColor","tooltipData","infoIcon","infoTooltipTitle","hasInfoIcon","hasChildren","BasicViewHeader","SmallIconButton","InfoIcon","size","tooltipTitle","FillRateChartColors","getFillRateColorByState","getFillRateColors","getLabelFromState","formatFillRateData","entries","indexOf","formatFillRatesData","toPairs","getFillRateData","getFillRateChartData","always","converge","colors","getFillRateFilter","getFillRateSearchState","useChartData","getChartData","getRawFilterSearchState","keyword","isRawFilter","getEqualsRawFilterSearchState","excludeDescendantEntityTypes","searchState","entityTypesFilter","entityTypesUris","AdditionalFilterOptionsValues","join","getExcludedEntityTypesRawFilter","getDescendantEntityTypes","currentRawFilter","newRawFilter","useSearchRedirect","dispatch","useDispatch","ui","container","paddingBottom","small","marginBottom","medium","large","message","refreshButton","refreshIcon","defaultIcon","onRefresh","errorData","SMALL","Icon","startIcon","Replay","viewContent","loadingState","BasicViewContent","DashboardLinearLoader","legendLabel","legendValue","legend","itemColor","payload","withPercents","legendProps","align","wrapperStyle","content","formatNumberAsMetric","BarAxis","stackedBar","flexGrow","inactivePart","tooltipFillRate","legendWrapper","rangeWrapper","rangeValue","Bar","BarWithTooltip","withTooltip","getTooltipData","onItemClick","onBarClick","maxValue","sum","searchProfiles","useMlDqDataRequest","timeSeriesData","setTimeSeriesData","tenant","mlDqPath","startDate","endDate","days","moment","format","startDay","setDate","getDate","getTimeRangeDates","getMlDqData","attribute","DAYS_OF_WEEK","MONTHS","getFormattedDataForBarChart","chartType","RELTIO_PROFILES","SOURCE_PROFILES","getConsolidationRateChartData","InfoPanelProperties","getLabelForInfoPanel","propName","Properties","lengthStatistics","MEDIAN","AVERAGE","MININMUN","MAXIMUM","valueDistribution","crosswalkAnalysis","NUMBER_OF_SOURCES","AVG_NUMBER_OF_PROFILES","MIN_NUMBER_OF_PROFILES","MAX_NUMBER_OF_PROFILES","getInfoPanelDataForBarChart","getDataForBarChart","infoPanelData","getChartValueLabel","attributeType","formatDataTypeValue","dataTypeDefinition","convertDataWithInterval","getStartRangeFromChartData","split","head","chartDataWithRange","sort","ascend","dataItem","startRange","endRange","isLastItem","addIntervalBrackets","toString","getLengthChartData","getMonthDistributionData","getDayOfWeekDistributionData","getDayOfMonthDistributionData","getDayOfweekDistributionSearchState","dayOfWeek","getMonthDistributionSearchState","month","getDayOfMonthDistributionSearchState","dayOfMonth","getLengthStatisticsSearchState","getRangeRawFilterSearchState","getCrosswalkAnalysisSearchState","source","getValueDistributionFilterForDate","timestampStart","timestampEnd","getValueDistributionFilterForNumber","getValueDistributionFilterForFloat","lastItem","isSingleValue","getValueDistributionSearchState","cond","getConsolidationRateFilter","getConsolidationRateSearchState","getBarOpacity","selectedBar","tickFormatter","toUpperCase","getTooltip","getTooltipProp","yAxisLabel","cartesianGrid","xAxis","yAxis","line","referenceLine","labelForY","dataKey","tick","angle","textAnchor","allowDuplicatedCategory","tickCount","strokeDasharray","strokeOpacity","dot","activeDot","isFront","tooltipProps","selectedDots","setSelectedDots","onMouseMove","mouseEvent","isTooltipActive","activeLabel","activePayload","onMouseLeave","segment","every","isNaN","selectedDotsIndex","getReferenceLineCoord","_extends","target","arguments","prototype","hasOwnProperty","call","apply","infoPanel","gap","info","dynamicInfo","dynamicInfoPositive","dynamicInfoNegative","dynamicIcon","period","TimeSeriesInfoPanel","dateLabel","infoLabel","percentKey","lastChartData","last","dynamicPercent","slice","Infinity","prevPercent","lastPercent","getDynamicPercent","isPositiveDynamic","abs","tooltipKeys","active","currentPayload","disabled","chipProps","getLabelByTimeRange","Chip","InfoDataRenderer","isTimeSeries","UniquenessChartColors","UniquenessAnalysisState","getUniquenessColors","formatUniquenessAnalysisData","getUniquenessData","getUniquenessChartData","uniqueness","loading","badQuality","AttributeTypeDetailIconSizes","NORMAL","AttributeTypeDetailIconVariant","AttributeTypeDetailIcon","detailType","paddingLeft","iconVariant","isDataLoading","isDataQualitative","checkIsDataQualitativeForSummary","LOADING","BAD_QUALITY","chipClasses","header","borderRight","entitySummary","attributeTypeSummary","infoTitle","infoContent","attributeTypeIconWrapper","totalLoading","HeaderInfo","AttributeTypeIconSizes","setTotal","existsFilter","entityTypeFilter","getTotals","useExistsTotalsRequest","recordsInfo","CircularProgress","Tooltip","attributeTypesCount","collectAttributes","isReadableAttribute","either","getAttributeTypeSubAttributes","countEntityTypeAttributes","getValue","searchRedirect","search","ActivityFilter","isAttributeTypeLevel","DefaultIcon","titleChildren","viewTitle","getFormattedDataForTableChart","valueComparator","sortDirection","sortField","a","b","filterExistedDVF","dvfs","chartDataItem","findDVFByUri","enrichDVFDataWithFunctionLabel","getAttributeTypeLabelFromHierarhy","enrichEntityLevelDVFData","attributeUri","attributeTypesHierarhy","getAttributeTypesHierarchyByUri","attributeLabel","getFrequencyChartData","getPatternAnalisysData","getDVFAnalyticAttribtuteUri","attributeName","getValidationFilter","getFrequencyAnalysisStateForTimestamp","attributeValue","getFrequencyAnalysisFilterForDate","getFrequencyAnalysisFilter","getFrequencyAnalysisSearchState","isTimestampBasedType","getPatternAnalysisSearchState","pattern","getRowsCounterLabel","ViolatedValidationTimeSeriesData","getViolatedValidationData","totalProfilesCount","violatedProfilesCount","violatedProfiles","VIOLATED_PERCENTAGE","round","VIOLATED_PROFILES_COUNT","getLabelAndMaxValue","getValueByColumnId","rowValue","handler","childrenRef","el","current","clientWidth","scrollWidth","RootRef","rootRef","colorBarContainer","headCell","isFirstColumn","marginLeft","headCellWithRange","headLabel","labelWrapper","number","numberContainer","rangeLabel","tooltipValue","headCellData","headIndex","formattedMaxValue","hasRange","isOverflowing","setIsOverflowing","labelElement","overflowed","DefaultHeadCellRenderer","sortable","columnsHeaders","withTableContext","columnData","cellClassName","labelRenderer","LabelRenderer","hasCustomRenderer","utils","formattedValue","ColorBar","tableContainer","cellBorder","getExtendedLabel","secondLabel","columnsOptions","basicTableRef","tableClasses","headData","columnOptions","resizable","headCellRenderer","HeadCellRenderer","rowCellValueRenderer","LabelCellRenderer","initialWidth","NumberCellValueRenderer","context","BasicTable","columnsData","rowsData","headRowHeight","getRowCellHeight","defaultColumnWidth","defaultColumnMinWidth","hoverStateEnabled","layoutItemContent","customComparator","setSortDirection","setSortField","comparator","defaultComparator","handleSort","field","toggleSortOrder","sortedData","sorting","order","onSort","titleCount","countProfiles","VVFNoDataChartType","chartTitle","dvfConfigLink","dataSourceLabel","DVF_NOT_SUPPORTED","NotSupportedIcon","DVF_NOT_CONFIGURE","SettingsIcon","Link","href","component","underline","DATA_VALID","NiceOneIcon","PERMISSION_DENIED","TitleChildrenValue","isDataValid","totalProfiles","invalidProfiles","isAttributeDataLevel","dvfsData","dvfsState","dvfsReload","errorCode","currentDvfs","getDVFsForAttribute","activeDvfs","chartDataState","chartDataReload","getValidationChartData","getEntityLevelValidationChartData","entityTypesArray","dvfUris","invalidProfilesCount","setInvalidProfilesCount","useInvalidProfiles","getEntityCounts","dvfUri","getValidationSearchState","chartState","reloadFunction","isPermissionDenied","ApiErrorCode","isDVFNotSupported","isDVFNotConfigured","functionsCount","getEntityLevelColumnsOptions","getColumnsOptions","violatedPercentage","hasData","isTimeSeriesHasData","monoFontCell","fontFamily","preparedData","convertDateLabelsInChartData","isSSNType","BarTooltip","tooltipPayload","tooltipLabel","propertiesName","chartInfoLabel","chartInfoValue","chartInfoWrapper","chartInfoItem","InfoPanel","xAxisLabel","textTransform","XAxisLabel","xCoord","ExpandedValueTooltip","renderXAxis","tickProps","visibleTicksCount","maxTickWidth","showCategories","interval","barCategoryGap","maxBarSize","yTickRenderer","barChart","minPointSize","tickLine","axisLine","vertical","labelForX","isClickable","rectangleProps","barTooltipTitle","getBarChartSettings","showInfoPanel","shape","useLabelStyles","getSourceColor","SourceIcon","applySpec","getCrosswalkAnalysisData","SourceLabelRenderer","getValueDistributionData","onBarSelect","showTopLabel","getBarColor","uniqueDataKeys","getBarLabel","stackId","onMouseOver","getBars","useIconStyles","consolidationRateWrapper","ratePercent","tableWithSelectedRow","ConsolidationPercentage","totalCrosswalks","totalEntities","consolidationRate","reltioCleanser","totalCrosswalksBySource","formattedPercent","YAxisTickRenderer","selectedSource","setSelectedSource","barChartData","tableChartData","crosswalk","descend","getConsolidationRateTableData","sortedBarChartData","sortedSourceData","barSelectHandler","rowIndex","rowSelectHandler","rowClickHandler","onRowClick","onRowHover","hoverRowIndex","setData","getRDMData","isRDMLoolupResolve","loadRDMChartData","useRDMChartDataRequest","ViewsFactory","getComponent","DQDashboardLayoutItem","ResizeComponent","reltioGridLayoutToStaticLayout","DEFAULT_LAYOUT_OPTIONS","staticLayout","isSliding","breadcrumb","onChange","Breadcrumbs","separator","NavigateNext","handleChangeDataLevel","detailIcon","activeIcon","fillRateData","fillRateState","iconsWrapper","reverse","barPart","inactiveBarPart","levelLineColor","linesWrapper","horizontalLine","parentLine","lastLevel","lastLevelSelected","isLastLevelItem","isCollapsed","isSelected","drawLine","range","getLevelsRange","Marginator","listItem","selectedItem","clickableItem","marginWrapper","parentAttributeLabel","detailsIcon","collapseIcon","iconLoader","iconsLoaderWrapper","iconLoaderWrapper","fillRateLineLoader","selected","onCollapse","noop","isLoading","hasFillRate","CollapseIcon","ArrowRightIcon","ArrowDropDownIcon","ListItem","times","getAttrTypeFromItem","getFirstSimpleDetailedAttrType","isComplexAttribute","isImage","not","filterDetailedAttrTypeByFieldName","getFilterOptionsByGroup","EmptinessFilterValue","emptinessFilterOptions","SHOW_EMPTY","filterItemsByEmptiness","firstEmptinessOption","filterValidDetailsOptions","validOptionValues","getFieldNameFromItem","filterItemsByDetails","detailsOptions","filteredNestedFieldNames","both","getFilteredNestedFieldNames","startsWith","getAtrributeFieldNames","searchWrapper","filterByDetails","searchInput","filledInput","menu","filterIcon","filterIconFilterApplied","filterIconWrapper","filterIconWrapperActive","filterIconWrapperSelected","dropdownMenuTitle","option","isActive","typeIconWrapper","valueContainer","counter","optionLabel","groupLabel","actionsContainer","clearAllButton","count","showCounter","MenuItem","Checkbox","checked","containsOption","withoutOption","optionIndex","remove","defaultFilterOptions","defaultFilterText","onChangeFilterText","onChangeFilterOptions","anchorEl","setAnchorEl","selectedFilterOptions","setSelectedFilterOptions","valueInFilterTextInput","setValueInFilterTextInput","filterOptionsGroups","allValidFilterOptions","flatten","getValidFilterOptions","closeFilter","handleOptionChange","ifElse","hasSelectedOptions","isPopupOpen","indicatorClassname","indicatorIconClassname","SearchInput","autofocus","initialValue","placeholder","event","currentTarget","FilterList","Popover","open","onClose","anchorOrigin","horizontal","transformOrigin","PaperProps","itemCount","listWrapper","loadingAnimation","animation","columnsTitle","gridGap","gridTemplateColumns","borderBottom","loaderWrapper","onAttributesListChange","defaultFieldName","disableAttributeSelection","listRef","setFilterText","collapsedFieldNames","setCollapsedFieldNames","selectedFieldName","setSelectedFieldName","setFillRates","dvfState","attrTypeItems","getAttributeTypesTree","collectFilteredAttributeItems","itemsWithDetails","setItemsWithDetails","getEntityTypeMatchAttributes","reference","useAttrTypeDetails","attributeFieldNames","memoizedAttributeFieldNames","initialFillRates","fillRatesState","setFillRateData","loadFillRateData","useFillRateRequest","fillRateFromChartsData","fillRateForSelectedAttribute","equals","filteredItems","filteredByEmptinessItems","detailsFilterOptions","getDetailsOptionCount","getDetailsOptions","visibleItems","collapsedFieldName","rejectCollapsedItemsChildren","countAttrTypes","handleAttrTypeDetailsChange","selectedDetailedAttributeType","getSelectedDetailedAttributeType","getDetailedAttrTypeByFieldName","scrollTo","indexOfSelectedFieldName","getIndexByFieldName","scrollToItem","handleScroll","scrollOffset","currentBorderTop","borderTop","renderAttribute","getFillRateByAttributeType","itemData","itemSize","onScroll","MEDIUM","scrollTopShadow","entityLevelBarWrapper","attributeListWidth","entityLevelBar","transitionTimeout","writingMode","entityLevelBarHidden","entityLevelLayout","entityLevelLayoutSliding","entityLevelBarWidth","expandButton","expandButtonText","showEntityLevel","TRANSITION_TIMEOUT_MS","expandButtonTitle","selectRoot","outline","select","selectValue","arrowIcon","optionRoot","dataReltioOptionId","selectProps","renderCount","Select","MenuProps","getContentAnchorEl","list","renderValue","outlined","autoWidth","entityCount","setTick","useReloadAllFacets","intervalId","setInterval","timer","clearInterval","date","fromNow","RefreshIcon","perspectiveView","overflowX","contentWithEntityLevel","additionalLabel","contentWrapper","contentWrapperOneSlide","contentWrapperEntityLevel","attributeLevelWrapper","attributeLevelWithEntityLevel","navigationWrapper","headerRightSide","getFirstEntityTypeUri","saveState","customAttributeLayouts","layoutsByDataLevel","isAvailableEntityType","useEntityTypes","setEntityTypeUri","setIsSliding","setTimeRange","getEntityType","getEntityCount","setDetailedAttributeType","canGetDQStatistic","setDataLevel","hasRDMLookup","isAttrTreeHasRDMLookup","any","checkEntityTypeHasRDMLookup","selectedEntityType","consoleLink","setConsoleLink","setDVFConfigLink","servicesPath","environment","getConsoleApps","response","apps","insert","useDvfConfigLink","setDvfs","setErrorCode","dvfPath","env","canUserReadDVF","functions","loadDVFs","getDVF","useDVF","dvfContext","dqDashboardSavedState","handleSetEntityTypeByUri","newDQDashboardSavedState","currentRDMLookupState","attributeLevelLayout","chartDataType","customLayouts","defaultLayouts","mergedLayoutsByType","mergeLeft","getLayoutByAttributeType","entityLevelViews","uniqBy","getEntityLevelViews","viewsByDataLevel","entityLevelMetrics","entityLevelChartsData","attributeLevelViews","getViewsByDataType","getAttributeLevelViews","attributeLevelMetrics","reject","attributeLevelChartsData","sortedEntityTypesWithCount","sortWith","isEntityTypeExists","setTimeout","showContent","hasEntityLevel","showTimeRange","LARGE","dqDashboardTheme","createMuiTheme","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","store","getSavedStatePromisified","promisifyCallback","StylesProvider"],"sourceRoot":""}
|