@reltio/remotes 1.4.1537 → 1.4.1539

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/6299.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"6299.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/contexts/DateRangesProvider/index.tsx","webpack://@reltio/remotes/../dq-dashboard/src/contexts/EntityAndAttributeTypeProvider/index.tsx","webpack://@reltio/remotes/../dq-dashboard/src/types/DQDateRangeValue.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/dateRange.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/helpers.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/PermissionsProvider/index.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/usePermissionsRequest.ts","webpack://@reltio/remotes/../dq-dashboard/src/theme/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/DVFContext/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/ChartsDataProvider/index.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useEntityCount.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/mlDq.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/DataLevelContext/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/services/advancedFilters.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/charts.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/hooks/useChartsDataRequest.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/types/EmptyStateVariants.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/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/components/LineChart/helpers.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartInfoPanel/positiveDynamic.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartInfoPanel/negativeDynamic.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartInfoPanel/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartInfoPanel/ChartInfoPanel.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartInfoPanel/TimeSeriesInfoPanel.tsx","webpack://@reltio/remotes/../dq-dashboard/src/services/barCharts.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/LineChart/getLineChartSettings.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/views/charts/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/FillRateChart/FillRateTimeSeriesChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/PeriodChip/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/PeriodChip/PeriodChip.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/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/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/hooks/useNoDataDvfType.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ViolatedValidationFuncChart/hooks/useDvfs.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/ViolatedValidationFuncChart/TotalInfo.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/FrequencyAnalysisChart.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/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/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/components/SourceLabelRenderer/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/SourceLabelRenderer/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/YAxisTickRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ConsolidationRateChart/ConsolidationRateChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/services/rdmTranscode.ts","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/DQDashboardLayout.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/Warning/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/Warning/Warning.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/styles.ts","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/ContentSlider/helpers.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ContentSlider/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ContentSlider/ContentSlider.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/DataLevelSwitcher/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/DataLevelSwitcher/DataLevelSwitcher.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useAttrTypeDetails.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardAttributesList/helpers.ts","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/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/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/DQDashboardNoContent/DQDashboardNoContent.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/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/LoadingComponent/icons/Loading.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/LoadingComponent/LoadingComponent.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/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/hooks/useDebounceFunction.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/constants.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 i18n from 'ui-i18n';\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 {i18n.text(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 '&$root_small': {\n minHeight: '160px'\n },\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 root_small: {},\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 classnames from 'classnames';\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 small = 'small'\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={classnames(styles.root, styles[`root_${variant}`])}>\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 '&.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 isResizing: {\n zIndex: 9,\n willChange: 'width, height',\n pointerEvents: 'none'\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 [resizingItemId, setResizingItemId] = useState(null);\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 {!!width && (\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(classes.root, styles.gridLayout, {\n [styles.gridFullscreen]: isFullscreenEnabled\n })}\n onDrop={handleDrop}\n droppingItem={droppingItem}\n isDroppable={isDroppable}\n onResizeStart={(_, layoutItem) => setResizingItemId(layoutItem.i)}\n onResizeStop={() => setResizingItemId(null)}\n data-reltio-id=\"reltio-grid-layout\"\n >\n {processedLayout.map((layoutItem) => {\n const isItemFullscreen = fullscreenItemId === layoutItem.i;\n const isResizing = resizingItemId === layoutItem.i;\n const isAutosize = (getReltioLayoutItemById(layout, layoutItem.i) || {}).autosizing;\n const autosizeComponent = isAutosize\n ? {AutosizeComponent: getAutosizeComponent(layoutItem.i)}\n : {};\n return (\n <LayoutItem\n key={layoutItem.i}\n layoutItemConfig={layoutItem}\n views={views}\n onToggleFullscreen={onToggleFullscreen}\n onRemove={onRemove}\n className={classnames(\n {fullscreen: isItemFullscreen, [styles.isResizing]: isResizing},\n classes.item\n )}\n isFullscreen={isItemFullscreen}\n {...autosizeComponent}\n />\n );\n })}\n </GridLayout>\n )}\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 root: PropTypes.string,\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\nexport const 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 React from 'react';\nimport {AttributeType, SearchFilter} 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 AttributeOption = {\n label: string;\n value: string;\n attrType: AttributeType;\n chipLabel: string;\n level: number;\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 FiltersRowData = {\n attribute: AttributeSelectorItem;\n filter: string;\n id: number;\n values: SearchFilter['values'];\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\nexport type PerspectivesSettings = Record<string, PerspectiveSettingItem>;\n\nexport type PerspectiveSettingItem = {\n active?: number;\n width?: number;\n};\n\nexport type RightPanelTab = {\n content?: React.ReactElement;\n title?: React.ReactElement;\n buttonProps?: {\n id: number;\n icon: React.FC;\n tooltipTitle: string;\n showForDisabled?: boolean;\n };\n headerProps?:\n | {content: React.ReactElement}\n | {mainTitle: string; secondTitle?: string; rightContent?: React.ReactElement};\n hidden?: 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=\"primary\" 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 // eslint-disable-next-line react-hooks/exhaustive-deps\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 // eslint-disable-next-line react-hooks/exhaustive-deps\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 React, {useState, useContext, useCallback} from 'react';\n\nimport {DatePeriod} from '@reltio/mdm-sdk';\n\ntype Props = {\n children: React.ReactNode;\n};\n\ntype Zoom = [string, string];\n\nconst PeriodContext = React.createContext<{\n period?: DatePeriod;\n changePeriod?: (period: DatePeriod) => void;\n }>(null);\n\nconst ZoomContext = React.createContext<{\n zoom?: [string, string];\n getDateRange?: () => DatePeriod;\n changeZoom?: (zoom: [string, string]) => void;\n }>({});\n\nexport const DateRangesProvider = ({children}: Props) => {\n const [zoom, setZoom] = useState<Zoom>(null);\n const [period, setPeriod] = useState<DatePeriod>(null);\n const changePeriod = useCallback(\n (newPeriod: DatePeriod) => {\n setPeriod(newPeriod);\n period && setZoom(null);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [period]\n );\n const changeZoom = useCallback((zoom: Zoom) => {\n if (zoom) {\n const validatedZoom: [string, string] =\n new Date(zoom[0]) > new Date(zoom[1]) ? [zoom[1], zoom[0]] : [zoom[0], zoom[1]];\n setZoom(validatedZoom);\n }\n }, []);\n\n const getDateRange: () => DatePeriod = useCallback(\n () => (zoom ? [new Date(zoom[0]), new Date(zoom[1])] : period),\n [zoom, period]\n );\n return (\n <PeriodContext.Provider value={{period, changePeriod}}>\n <ZoomContext.Provider value={{zoom, getDateRange, changeZoom}}>{children}</ZoomContext.Provider>\n </PeriodContext.Provider>\n );\n};\n\nexport const usePeriod = () => {\n return useContext(PeriodContext);\n};\n\nexport const useZoom = () => {\n return useContext(ZoomContext);\n};\n","import React, {useContext, useState} from 'react';\n\nimport {TEntityType} from '@reltio/mdm-sdk';\n\nimport {DetailedAttributeType} from '../../types/DetailedAttributeType';\n\nconst EntityAndAttributeTypeContext = React.createContext<{\n detailedAttributeType: DetailedAttributeType;\n setDetailedAttributeType: (detailedAttributeType: DetailedAttributeType) => void;\n entityType: TEntityType;\n setEntityType: (entityType: TEntityType) => void;\n }>(null);\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const EntityAndAttributeTypeProvider = ({children}: Props) => {\n const [detailedAttributeType, setDetailedAttributeType] = useState<DetailedAttributeType>(null);\n const [entityType, setEntityType] = useState<TEntityType>(null);\n return (\n <EntityAndAttributeTypeContext.Provider\n value={{detailedAttributeType, setDetailedAttributeType, entityType, setEntityType}}\n >\n {children}\n </EntityAndAttributeTypeContext.Provider>\n );\n};\n\nexport const useEntityAndAttributeType = () => useContext(EntityAndAttributeTypeContext);\n","import {omit} from 'ramda';\n\nimport {DateRangeValue} from '@reltio/mdm-sdk';\n\nexport type DQDateRangeValue = Exclude<DateRangeValue, DateRangeValue.LAST_DAY>;\nexport const DQDateRangeValue = omit(['LAST_DAY'], {...DateRangeValue});\n","import moment from 'moment';\nimport {DatePeriod, DateRangeValue, getDateRangeByValue} from '@reltio/mdm-sdk';\n\ntype GetDQDateRangeByValue = (value: DatePeriod | [number, number]) => [number, number];\nexport const getDQDateRangeByValue: GetDQDateRangeByValue = (value) => {\n const currentDate = moment();\n\n switch (value) {\n case DateRangeValue.LAST_WEEK:\n return [moment(currentDate).subtract(6, 'days').valueOf(), currentDate.valueOf()];\n default:\n return getDateRangeByValue(value);\n }\n};\n","import {ascend, assoc, defaultTo, map, path, pipe, prop, sortWith, includes, propEq, __, isEmpty} from 'ramda';\n\nimport {TEntityType, TenantPermission, Permission} from '@reltio/mdm-sdk';\n\nimport {DQDateRangeValue} from '../../types/DQDateRangeValue';\nimport {getDQDateRangeByValue} from '../../services/dateRange';\n\nexport const sortEntityTypesWithCount = ({entityTypes, getEntityCount}) =>\n 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\nexport const getFirstEntityTypeUri = path([0, 'uri']);\n\nexport const dateRangeValues: DQDateRangeValue[] = Object.values(DQDateRangeValue);\n\nexport const getValuesDateRange = pipe(\n getDQDateRangeByValue,\n defaultTo([]),\n map((value) => value && new Date(value))\n);\n\nexport const checkPermissions = ({\n roles,\n tenantPermissions,\n entityTypeUri\n}: {\n roles: string[];\n tenantPermissions: TenantPermission[];\n entityTypeUri: string;\n}) => {\n const canReadWithoutFilter = ({filter, access}: Permission) => {\n return access && includes('READ', access) && !filter;\n };\n const getPermissionsForRoles = (permissions: Permission[], roles: string[]) =>\n (permissions || []).filter(pipe(prop('role'), includes(__, roles)));\n const getPermissionByUri = (uri: string) => tenantPermissions.find(propEq('uri', uri))?.permissions;\n const configurationLevelPermission = getPermissionsForRoles(getPermissionByUri('configuration'), roles);\n const entityLevelPermission = getPermissionsForRoles(getPermissionByUri(entityTypeUri), roles);\n if (!isEmpty(configurationLevelPermission)) {\n return configurationLevelPermission.some(canReadWithoutFilter);\n }\n if (!isEmpty(entityLevelPermission)) {\n return entityLevelPermission.some(canReadWithoutFilter);\n }\n return true;\n};\n","import {RequestStates} from '@reltio/components';\nimport React, {useContext, useMemo} from 'react';\nimport {isEmpty} from 'ramda';\nimport {usePermissionsRequest} from '../../hooks/usePermissionsRequest';\nimport {checkPermissions} from '../../components/DQDashboardPerspectiveView/helpers';\nimport {useEntityAndAttributeType} from '../EntityAndAttributeTypeProvider';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {DQDashboardPerspectiveConfig} from '../../types/DQDashboardPerspectiveConfig';\n\ntype Props = {children: React.ReactNode; config: DQDashboardPerspectiveConfig};\n\nexport const PermissionsContext = React.createContext<{\n isTimeSeriesAvailable: boolean;\n hasRestrictions: boolean;\n canGetDQStatistic: boolean;\n permissionsLoadingState: RequestStates;\n}>(null);\n\nexport const PermissionsProvider = ({children, config}: Props) => {\n const {permissions: tenantPermissions, requestState: permissionsLoadingState} = usePermissionsRequest();\n const entityTypeUri = useEntityAndAttributeType()?.entityType?.uri;\n const roles = useSelector(mdmModule.selectors.getUserRoles);\n const canGetDQStatistic = useSelector(mdmModule.selectors.getCanUserGetDQStatistic);\n const noMetaDataRestrictions = useMemo(\n () =>\n permissionsLoadingState === RequestStates.LOADED &&\n checkPermissions({roles, tenantPermissions, entityTypeUri}),\n [tenantPermissions, permissionsLoadingState, roles, entityTypeUri]\n );\n const hasRestrictions = !isEmpty(tenantPermissions);\n const {showTimeSeries = true} = config;\n return (\n <PermissionsContext.Provider\n value={{\n isTimeSeriesAvailable: showTimeSeries && noMetaDataRestrictions,\n hasRestrictions,\n canGetDQStatistic,\n permissionsLoadingState\n }}\n >\n {children}\n </PermissionsContext.Provider>\n );\n};\n\nexport const usePermissionsContext = () => useContext(PermissionsContext);\n","import {useState, useCallback, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {RequestStates, useSafePromise} from '@reltio/components';\nimport {getTenantPermissions, TenantPermission} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nexport const usePermissionsRequest = () => {\n const [permissions, setPermissions] = useState<TenantPermission[]>(null);\n const [requestState, setRequestState] = useState<RequestStates>(RequestStates.INIT);\n const safePromise = useSafePromise();\n const apiPath: string = useSelector(mdmModule.selectors.getApiPath);\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n\n const onRequestFinished = (permissions) => {\n setPermissions(permissions);\n setRequestState(RequestStates.LOADED);\n };\n\n const onError = (error: {errorCode: number}) => {\n console.error(error); // eslint-disable-line\n setRequestState(RequestStates.ERROR);\n setPermissions(null);\n };\n\n const loadPermissions = useCallback(() => {\n setRequestState(RequestStates.LOADING);\n safePromise(getTenantPermissions({tenant, apiPath})).then(onRequestFinished).catch(onError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [apiPath, tenant]);\n useEffect(() => {\n loadPermissions();\n }, [loadPermissions]);\n\n return useMemo(\n () => ({\n permissions,\n requestState,\n reload: loadPermissions\n }),\n [permissions, requestState]\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","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, {useContext, useState} from 'react';\n\nimport {ChartsDataWithState} from '../../types/ChartsDataWithState';\n\ntype Props = {children: React.ReactNode};\n\nexport const ChartsDataContext = React.createContext<{\n chartsData: ChartsDataWithState | Record<string, never>;\n changeChartsData: (chartsData: ChartsDataWithState) => void;\n }>(null);\n\nexport const ChartsDataProvider = ({children}: Props) => {\n const [chartsData, setChartsData] = useState<ChartsDataWithState | Record<string, never>>({});\n const changeChartsData = (chartsData: ChartsDataWithState) => setChartsData(chartsData);\n return <ChartsDataContext.Provider value={{chartsData, changeChartsData}}>{children}</ChartsDataContext.Provider>;\n};\n\nexport const useChartsDataContext = () => useContext(ChartsDataContext);\n","import {pluck} from 'ramda';\nimport {useCallback, useEffect, useMemo, useState} from 'react';\nimport {RequestStates, 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 [requestState, setRequestState] = useState<RequestStates>(RequestStates.INIT);\n const safePromise = useSafePromise();\n\n const onRequestFinished = ({type: entitiesCountMap}) => {\n setEntitiesCountMap(entitiesCountMap);\n setRequestState(RequestStates.LOADED);\n };\n\n const onError = (error: {errorCode: number}) => {\n console.error(error); // eslint-disable-line\n setRequestState(RequestStates.ERROR);\n setEntitiesCountMap(null);\n };\n\n const getEntityCount = useCallback(() => {\n setRequestState(RequestStates.LOADING);\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}),\n body: [{fieldName: 'type', pageSize: 101, pageNo: 1}]\n })\n )\n .then(onRequestFinished)\n .catch(onError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [entityTypes]);\n useEffect(() => {\n getEntityCount();\n }, [getEntityCount]);\n\n return useMemo(\n () => ({\n getEntityCount: (entityTypeUri: string) =>\n Number(entitiesCountMap?.[getLastUriPart(entityTypeUri)] || null),\n state: requestState\n }),\n [entitiesCountMap, requestState]\n );\n};\n","import moment from 'moment';\nimport {append, assoc, curry, defaultTo, map, pipe, prop, propEq, reject, sortBy} from 'ramda';\n\nimport {\n DatePeriod,\n isDateRangeValue,\n TimeSeriesData,\n TimeSeriesDataValues,\n FillRateState,\n UniquenessAnalysisState,\n DQMetric,\n getRangeOptionLabel,\n getDateRangeByDatePeriod,\n DateRangeValue\n} from '@reltio/mdm-sdk';\nimport {ChartData, enrichDataWithPercents} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\nimport {DQDateRangeValue} from '../types/DQDateRangeValue';\nimport {LineChartData} from '../types/LineChartData';\nimport {DQDashboardView} from '../types/DQDashboardView';\nimport {getDQDateRangeByValue} from '../services/dateRange';\n\nexport const getLabelByTimeRange = (period: DatePeriod): string =>\n isDateRangeValue(period as DQDateRangeValue)\n ? getRangeOptionLabel(period as DQDateRangeValue)\n : (period as [Date, Date]).map((date) => i18n.date(moment(date))).join(' \\u2013 ');\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, 'MMM D'),\n ...getData(values)\n })),\n sortBy(prop('group'))\n );\n\nexport const getTimeRangeDates = (period: DatePeriod) => {\n const dateFormat = 'YYYY-MM-DD';\n\n const [startTimestamp, endTimeStamp] = getDateRangeByDatePeriod(period, getDQDateRangeByValue);\n return {\n startDate: moment(startTimestamp).format(dateFormat),\n endDate: moment(endTimeStamp).format(dateFormat)\n };\n};\n\nexport const checkIsTimeSeries = (config: DQDashboardView) => config?.options?.timeSeries;\n\nexport const getChartTooltipDateTitle = (hasData: boolean, date: string) =>\n hasData ? i18n.date(date, 'MMM D, YYYY') : i18n.text('No data available');\n\nexport const hasTimeRange = (period: DatePeriod) => period !== DateRangeValue.LAST_DAY;\n\nconst getStateFromMetric = (metric: DQMetric) => {\n switch (metric) {\n case DQMetric.FILL_RATE:\n return FillRateState.EXISTS;\n case DQMetric.UNIQUENESS:\n return UniquenessAnalysisState.UNIQUE;\n }\n};\n\nconst getTodayData = (metric: DQMetric, todayChartData: ChartData[]) => {\n if (metric === DQMetric.DATA_VALIDATION)\n return todayChartData.reduce(\n (todayData, currentData) => assoc(currentData.group, currentData.value, todayData),\n {\n group: moment().format('YYYY-MM-DD'),\n label: i18n.date(moment(), 'MMM D')\n }\n );\n else {\n const todayChartDataWithPercent = enrichDataWithPercents(todayChartData);\n const todayOption = getStateFromMetric(metric);\n const todayData = {\n group: moment().format('YYYY-MM-DD'),\n label: i18n.date(moment(), 'MMM D'),\n [metric]: todayChartDataWithPercent.find(propEq('group', todayOption))?.percent\n };\n return todayChartData.reduce((todayDataForTimeSeries, dataItem) => {\n todayDataForTimeSeries[dataItem.group] = dataItem.value;\n return todayDataForTimeSeries;\n }, todayData);\n }\n};\n\nexport const enrichTimeSeriesDataWithTodayData = curry(\n (period: DatePeriod, todayChartData: ChartData[], metric: DQMetric, timeSeriesData: LineChartData[]) => {\n const {endDate} = getTimeRangeDates(period);\n const today = moment().format('YYYY-MM-DD');\n return endDate === today\n ? pipe(reject(propEq('group', today)), append(getTodayData(metric, todayChartData)))(timeSeriesData)\n : timeSeriesData;\n }\n);\n\nexport const getPeriodValue = (zoom: [string, string], period: DatePeriod): DatePeriod =>\n zoom ? [new Date(zoom[0]), new Date(zoom[1])] : period;\n","import React from 'react';\nimport {DQDataLevel} from '@reltio/mdm-sdk';\n\nexport const DataLevelContext = React.createContext<DQDataLevel>(null);\n\nDataLevelContext.displayName = 'DataLevelContext';\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: '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: '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 id: 'FillRateViewTimeSeries',\n type: ViewType.FILL_RATE,\n title: i18n.text('Fill rate over time'),\n options: {\n timeSeries: true\n }\n },\n {\n id: 'UniquenessAnalysisViewTimeSeries',\n type: ViewType.UNIQUENESS,\n title: i18n.text('Uniqueness analysis over time'),\n options: {\n timeSeries: true\n }\n },\n {\n id: 'ValidationViewTimeSeries',\n type: ViewType.DATA_VALIDATION,\n title: i18n.text('Profiles with invalid data over time'),\n options: {\n timeSeries: true\n }\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 timeRange: {\n default: [\n {x: 0, y: 0, width: 6, height: 6, id: 'SummaryView'},\n {x: 0, y: 6, width: 3, height: 12, id: 'ValidationView'},\n {x: 3, y: 6, width: 3, height: 12, id: 'ValidationViewTimeSeries'},\n {x: 0, y: 18, width: 3, height: 12, id: 'FillRateView'},\n {x: 3, y: 18, width: 3, height: 12, id: 'FillRateViewTimeSeries'},\n {x: 0, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisView'},\n {x: 3, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisViewTimeSeries'},\n {x: 0, y: 42, width: 3, height: 14, id: 'FrequencyAnalysis'},\n {x: 3, y: 42, width: 3, height: 14, id: 'CrosswalkAnalysis'},\n {x: 0, y: 56, width: 6, height: 19, id: 'LengthStatistics'}\n ],\n SSN: [\n {x: 0, y: 0, width: 6, height: 6, id: 'SummaryView'},\n {x: 0, y: 6, width: 3, height: 12, id: 'ValidationView'},\n {x: 3, y: 6, width: 3, height: 12, id: 'ValidationViewTimeSeries'},\n {x: 0, y: 18, width: 3, height: 12, id: 'FillRateView'},\n {x: 3, y: 18, width: 3, height: 12, id: 'FillRateViewTimeSeries'},\n {x: 0, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisView'},\n {x: 3, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisViewTimeSeries'},\n {x: 0, y: 42, width: 3, height: 14, id: 'FrequencyAnalysis'},\n {x: 3, y: 42, width: 3, height: 14, id: 'CrosswalkAnalysis'},\n {x: 0, y: 56, width: 3, height: 14, id: 'PatternAnalysis'}\n ],\n boolean: [\n {x: 0, y: 0, width: 6, height: 6, id: 'SummaryView'},\n {x: 0, y: 6, width: 3, height: 12, id: 'ValidationView'},\n {x: 3, y: 6, width: 3, height: 12, id: 'ValidationViewTimeSeries'},\n {x: 0, y: 18, width: 3, height: 12, id: 'FillRateView'},\n {x: 3, y: 18, width: 3, height: 12, id: 'FillRateViewTimeSeries'},\n {x: 0, y: 30, width: 3, height: 12, id: 'FrequencyAnalysis'},\n {x: 3, y: 30, width: 3, height: 12, id: 'CrosswalkAnalysis'}\n ],\n date: [\n {x: 0, y: 0, width: 6, height: 6, id: 'SummaryView'},\n {x: 0, y: 6, width: 3, height: 12, id: 'ValidationView'},\n {x: 3, y: 6, width: 3, height: 12, id: 'ValidationViewTimeSeries'},\n {x: 0, y: 18, width: 3, height: 12, id: 'FillRateView'},\n {x: 3, y: 18, width: 3, height: 12, id: 'FillRateViewTimeSeries'},\n {x: 0, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisView'},\n {x: 3, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisViewTimeSeries'},\n {x: 0, y: 42, width: 3, height: 14, id: 'FrequencyAnalysis'},\n {x: 3, y: 42, width: 3, height: 14, id: 'CrosswalkAnalysis'},\n {x: 0, y: 56, width: 6, height: 19, id: 'ValueDistribution'}\n ],\n integer: [\n {x: 0, y: 0, width: 6, height: 6, id: 'SummaryView'},\n {x: 0, y: 6, width: 3, height: 12, id: 'ValidationView'},\n {x: 3, y: 6, width: 3, height: 12, id: 'ValidationViewTimeSeries'},\n {x: 0, y: 18, width: 3, height: 12, id: 'FillRateView'},\n {x: 3, y: 18, width: 3, height: 12, id: 'FillRateViewTimeSeries'},\n {x: 0, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisView'},\n {x: 3, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisViewTimeSeries'},\n {x: 0, y: 42, width: 3, height: 14, id: 'FrequencyAnalysis'},\n {x: 3, y: 42, width: 3, height: 14, id: 'CrosswalkAnalysis'},\n {x: 0, y: 56, width: 6, height: 19, id: 'ValueDistribution'}\n ],\n float: [\n {x: 0, y: 0, width: 6, height: 6, id: 'SummaryView'},\n {x: 0, y: 6, width: 3, height: 12, id: 'ValidationView'},\n {x: 3, y: 6, width: 3, height: 12, id: 'ValidationViewTimeSeries'},\n {x: 0, y: 18, width: 3, height: 12, id: 'FillRateView'},\n {x: 3, y: 18, width: 3, height: 12, id: 'FillRateViewTimeSeries'},\n {x: 0, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisView'},\n {x: 3, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisViewTimeSeries'},\n {x: 0, y: 42, width: 3, height: 14, id: 'FrequencyAnalysis'},\n {x: 3, y: 42, width: 3, height: 14, id: 'CrosswalkAnalysis'},\n {x: 0, y: 56, 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 {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 all,\n any,\n assoc,\n concat,\n curry,\n defaultTo,\n equals,\n evolve,\n filter,\n isEmpty,\n isNil,\n map,\n mergeLeft,\n pipe,\n pluck,\n prop,\n propEq,\n uniq,\n uniqBy,\n when\n} from 'ramda';\n\nimport i18n from 'ui-i18n';\nimport {ChartData, RequestStates} 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 ReltioGridLayoutItem\n} from '@reltio/mdm-sdk';\n\nimport {ChartDataType} from '../constants/ChartDataType';\nimport {defaultLayoutsByDataLevel, defaultViewsByDataLevel} from '../constants/defaultConfig';\nimport {ViewType} from '../constants/ViewType';\nimport {getAdvancedSearchFilter} from './advancedFilters';\n\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';\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 =\n (getFilter) =>\n ({\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 ];\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 uniq\n);\n\nexport const getLayoutByAttributeType = (\n layouts: LayoutsByAttributeType,\n type: string,\n timeRangeAvailable: boolean\n) => {\n const chartDataType = getChartDataTypeByAttributeType(type);\n const customLayouts = (timeRangeAvailable && layouts?.timeRange) || layouts?.today;\n const defaultLayouts =\n (timeRangeAvailable && defaultLayoutsByDataLevel[DQDataLevel.ATTRIBUTE_TYPE]['timeRange']) ||\n defaultLayoutsByDataLevel[DQDataLevel.ATTRIBUTE_TYPE]['today'];\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 enrichChartDataWithSourceLabel = curry((metadata: Metadata, chartData: ChartData[]) =>\n chartData.map((data) => assoc('label', getSourceSystemLabel(metadata, data.group) || data.label, data))\n);\nexport const getEntityTypeSummarySearchState =\n ({entityTypeUri}: GetSearchStateProps) =>\n () =>\n facetFiltersToSearchState(undefined, entityTypeUri, []);\n\nexport const formatPercent = (percent: number | string): number => +(Number(percent) * 100).toFixed(1);\n\nexport const transformTimeSeriesChartData = curry((metric: DQMetric, chartData: TimeSeriesDataValues[]) =>\n chartData.map((data) => {\n return {\n ...data,\n [metric]: typeof data[metric] === 'number' ? formatPercent(data[metric]) : null\n };\n })\n);\n\nexport const getChartState = (states: RequestStates[]) => {\n if (all(equals(RequestStates.LOADED), states)) return RequestStates.LOADED;\n if (any(equals(RequestStates.ERROR), states)) return RequestStates.ERROR;\n if (any(equals(RequestStates.LOADING), states)) return RequestStates.LOADING;\n return RequestStates.INIT;\n};\n","import {propEq, allPass} from 'ramda';\nimport {\n getLabel,\n AttributeType,\n DataTypes,\n DataValidationFunction,\n getAttributeTypesTree,\n Metadata,\n TEntityType,\n StatusVF,\n AttributeNode\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 = getAttributeTypesTree(metadata, entityType) || [];\n const collectAttributes = (attributes: AttributeType[]) => {\n return attributes.reduce((attributesCollection: AttributeType[], attribute: AttributeNode) => {\n const children = attribute?.children;\n return children?.length\n ? [...attributesCollection, attribute, ...collectAttributes(children)]\n : [...attributesCollection, 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} 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 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","import {useCallback, useEffect, useMemo, useState} from 'react';\nimport {omit, pathOr, pipe, keys, path, length, ifElse, has} 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\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 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 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(\n pipe(\n pathOr({}, ['statistic', attributeFieldName]),\n ifElse(has('error'), onError, onRequestFinished)\n )\n )\n .catch(onError);\n }\n }, [setRequestState, setChartsData, safePromise, attributeFieldName, entityTypeUri, dataLevel, metrics]);\n\n const refreshAction = useRefreshAction({\n action: loadChartsData,\n dataLevel\n });\n\n useEffect(() => {\n refreshAction();\n }, [refreshAction]);\n\n const chartsDataResult = useMemo(\n () => ({data: chartsData, state: requestState, reload: refreshAction}),\n [chartsData, requestState, refreshAction]\n );\n\n return chartsDataResult;\n};\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';\nimport {isNil} from 'ramda';\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 getValueLabel = ({value, percent}: {value: number; percent?: number}) =>\n isNil(percent) ? i18n.number(value) : `(${i18n.number(value)})`;\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: `${getPercentLabel(percent)} ${getValueLabel({value, 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={250}>\n <VerticalDivider height={24} margin={16} />\n {children}\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';\n\nimport {DQDashboardView} from '../../types/DQDashboardView';\nimport {DataLevelContext} from '../../contexts/DataLevelContext';\nimport {usePeriod} from '../../contexts/DateRangesProvider';\nimport {hasTimeRange} from '../../services/mlDq';\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 {period} = usePeriod();\n const dataReltioId = hasTimeRange(period)\n ? `reltio-dq-dashboard-chart-time-series-${type}-${dataLevel}`\n : `reltio-dq-dashboard-chart-${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 = (chartsData: DQChartsData) => {\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 {useMemo} from 'react';\n\nimport {DQChartsData} from '@reltio/mdm-sdk';\n\nimport {useChartsDataContext} from '../contexts/ChartsDataProvider';\n\nexport const useChartData = <T>(getChartData: (chartsData: DQChartsData) => T) => {\n const {\n chartsData: {data: chartsData, state, reload}\n } = useChartsDataContext();\n const data = useMemo(() => getChartData(chartsData), [chartsData, getChartData]);\n return useMemo(() => ({data, state, reload}), [data, state, reload]);\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","import {assoc, curry, pipe} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {getDescendantEntityTypes, Metadata, SearchState} from '@reltio/mdm-sdk';\n\nimport {useEntityAndAttributeType} from '../contexts/EntityAndAttributeTypeProvider';\nimport {getExcludedEntityTypesRawFilter} from '../services/rawFilters';\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, entityType} = useEntityAndAttributeType();\n\n return pipe(\n getSearchState({detailedAttributeType, entityTypeUri: entityType.uri}),\n excludeDescendantEntityTypes(metadata, entityType.uri),\n ui.actions.openSearch,\n dispatch\n );\n};\n","export enum EmptyStateVariants {\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large'\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 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 {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 <DQDashboardError\n height={height}\n errorData={{\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=\"top\"\n wrapperStyle={{\n display: 'flex',\n overflowY: 'auto',\n maxHeight: '100%',\n maxWidth: '100%',\n marginTop: '13px'\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 {`${getPercentLabel(percent)} (${formatNumberAsMetric(value, 999)})`}\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: `${getPercentLabel(percent)} (${i18n.number(value)})`\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('percent'), 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, useRef, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {last, head, path, pathOr, pipe} from 'ramda';\n\nimport {RequestStates, useSafePromise} from '@reltio/components';\nimport {DatePeriod, DQDataLevel, TimeSeriesMetric, getMlDqData, TimeSeriesData} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport {DQDateRangeValue} from '../types/DQDateRangeValue';\nimport {getTimeRangeDates} from '../services/mlDq';\nimport {useRefreshAction} from '../contexts/ReloadFacetContext';\n\ntype useMlDqDataRequestProps = {\n entityTypeUri: string;\n attributeFieldName: string;\n period?: DatePeriod;\n dataLevel?: DQDataLevel;\n metrics?: TimeSeriesMetric[];\n};\n\nconst needRefreshData = (period: DatePeriod, data: TimeSeriesData[]) => {\n const currentRange = data\n ? {\n startDate: pipe(last, path(['time', '_max_date']))(data),\n endDate: pipe(head, path(['time', '_min_date']))(data)\n }\n : null;\n\n if (currentRange) {\n const currentStartTime = new Date(currentRange.startDate);\n const currentEndTime = new Date(currentRange.endDate);\n const {startDate, endDate} = getTimeRangeDates(period);\n const startTime = new Date(startDate);\n const endTime = new Date(endDate);\n if (startTime >= currentStartTime && endTime <= currentEndTime) return false;\n }\n\n return true;\n};\n\nexport const useMlDqDataRequest = ({\n entityTypeUri,\n attributeFieldName,\n period = DQDateRangeValue.LAST_WEEK,\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 const oldRequestDependencies = useRef<string>();\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 memoizedRequestDependencies = [attributeFieldName, entityTypeUri, dataLevel, metrics, tenant].toString();\n\n const loadChartsData = useCallback(() => {\n if (!entityTypeUri) return;\n setRequestState(RequestStates.LOADING);\n setTimeSeriesData(null);\n\n const {startDate, endDate} = getTimeRangeDates(period);\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 // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [memoizedRequestDependencies, period]);\n\n const refreshAction = useRefreshAction({\n action: loadChartsData,\n dataLevel\n });\n\n useEffect(() => {\n const needRefresh = needRefreshData(period, timeSeriesData);\n (needRefresh || memoizedRequestDependencies !== oldRequestDependencies?.current) && refreshAction();\n oldRequestDependencies.current = memoizedRequestDependencies;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [refreshAction]);\n\n return useMemo(\n () => ({data: timeSeriesData, state: requestState, reload: refreshAction}),\n [timeSeriesData, requestState, refreshAction]\n );\n};\n","import {flatten, pipe, props, map, isNil, propEq, reject, curry, slice, findIndex, assocPath, last, path} from 'ramda';\n\nimport i18n from 'ui-i18n';\nimport {DatePeriod} from '@reltio/mdm-sdk';\n\nimport {getTimeRangeDates} from '../../services/mlDq';\nimport {LineChartData} from '../../types/LineChartData';\n\nconst getValuesFromChartData = curry((keys: string[], data: LineChartData[]) =>\n pipe(map(props(keys)), flatten, reject(isNil))(data)\n);\n\nexport const getMaxValueFromLineChartData = (keys: string[], data: LineChartData[]) =>\n pipe(getValuesFromChartData(keys), (values: number[]) => Math.max(...values))(data);\n\nexport const getMinValueFromLineChartData = (keys: string[], data: LineChartData[]) =>\n pipe(getValuesFromChartData(keys), (values: number[]) => Math.min(...values))(data);\n\nconst roundPercent = (percent: number) => Math.round(percent * 100) / 100;\n\nconst getOneLinePercentEdgeData = (data: number) => {\n if (data === 0 || data === 100)\n return {\n minYAxisValue: 0,\n maxYAxisValue: 100\n };\n const minYAxisValue = data > 50 ? roundPercent(2 * data - 100) : 0;\n const maxYAxisValue = data > 50 ? 100 : roundPercent(2 * data);\n return {\n minYAxisValue,\n maxYAxisValue\n };\n};\n\nexport const getUpdatedEdgeData = ({\n minLineChartData,\n maxLineChartData,\n isPercent\n}: {\n minLineChartData: number;\n maxLineChartData: number;\n isPercent: boolean;\n}) => {\n if (minLineChartData === maxLineChartData) {\n return isPercent\n ? getOneLinePercentEdgeData(minLineChartData)\n : {\n minYAxisValue: 'minData',\n maxYAxisValue: 'maxData'\n };\n }\n const gap = (maxLineChartData - minLineChartData) / 6;\n const updatedMinData = roundPercent(minLineChartData - gap);\n const updatedMaxData = roundPercent(maxLineChartData + gap);\n return {\n minYAxisValue: updatedMinData > 0 ? updatedMinData : 0,\n maxYAxisValue: isPercent && updatedMaxData > 100 ? 100 : updatedMaxData\n };\n};\n\nconst isLineChartDataEmpty = (data: LineChartData, keys: string[]) =>\n keys.every((key) => isNil(data[key]) || isNaN(+data[key]));\n\nexport const getEmptyAreas = (chartData: LineChartData[], keys: string[]) => {\n const getDateByIndex = (index: number) => path([index, 'group'], chartData);\n const extendArea = (areas: Record<'start' | 'end', number>[], index: number) => {\n const lastArea = last(areas);\n const endDate = getDateByIndex(index === chartData.length - 1 ? index : index + 1);\n\n return (lastArea && getDateByIndex(index) !== lastArea.end) || areas?.length === 0\n ? areas.concat({\n start: getDateByIndex(index === 0 ? index : index - 1),\n end: endDate\n })\n : assocPath([areas.length - 1, 'end'], endDate, areas);\n };\n\n return chartData.reduce((emptyAreas, data, index) => {\n return isLineChartDataEmpty(data, keys) ? extendArea(emptyAreas, index) : emptyAreas;\n }, []);\n};\n\nexport const XAxisTickFormatter = (value: number) => i18n.date(value, 'MMM D');\n\nexport const getZoomedData = (data: LineChartData[], dateRange: DatePeriod): LineChartData[] => {\n if (data.length === 1) return data;\n const {startDate, endDate} = getTimeRangeDates(dateRange);\n const indexStart = findIndex(propEq('group', startDate), data);\n const indexEnd = findIndex(propEq('group', endDate), data) + 1;\n return data && dateRange ? slice(indexStart, indexEnd, data) : data;\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: \"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 dynamicIcon: {\n paddingRight: '4px'\n },\n\n percent: {\n fontWeight: 700,\n paddingRight: '4px'\n },\n\n period: {\n fontWeight: 'bold'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\n\nimport PositiveDynamicIcon from './positiveDynamic.svg';\nimport NegativeDynamicIcon from './negativeDynamic.svg';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n label: React.ReactNode;\n info: React.ReactNode;\n dynamicPercent?: number;\n};\n\nexport const ChartInfoPanel = ({label, info, dynamicPercent}: Props) => {\n const styles = useStyles();\n\n const isPositiveDynamic = dynamicPercent > 0;\n return (\n <div className={styles.infoPanel}>\n {label}\n <span className={styles.info}>{info}</span>\n {!!dynamicPercent && (\n <span\n className={classnames(styles.dynamicInfo, {\n [styles.dynamicInfoPositive]: isPositiveDynamic,\n [styles.dynamicInfoNegative]: !isPositiveDynamic\n })}\n >\n {isPositiveDynamic ? (\n <PositiveDynamicIcon className={styles.dynamicIcon} />\n ) : (\n <NegativeDynamicIcon className={styles.dynamicIcon} />\n )}\n {Math.abs(dynamicPercent).toFixed(2)}%\n </span>\n )}\n </div>\n );\n};\n\nexport default ChartInfoPanel;\n","import React, {useMemo} from 'react';\nimport {last, pipe, pluck, slice, reject, isNil} from 'ramda';\nimport moment from 'moment';\n\nimport i18n from 'ui-i18n';\nimport {DatePeriod, formatNumberAsMetric, getDateRangeByValue} from '@reltio/mdm-sdk';\n\nimport {TimeSeriesChartData} from '../../types/TimeSeriesChartData';\nimport {getZoomedData} from '../LineChart/helpers';\n\nimport ChartInfoPanel from './ChartInfoPanel';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n dateRange: DatePeriod;\n infoLabel: string;\n dataKey: string;\n chartData: TimeSeriesChartData[];\n percentKey: string;\n};\n\nconst getDynamicPercent = (chartData: TimeSeriesChartData[], percentKey: string): number => {\n const filteredData = pipe(pluck(percentKey), reject(isNil))(chartData);\n if (filteredData.length < 2) return 0;\n return pipe(\n slice(-2, Infinity),\n ([prevPercent, lastPercent]) => lastPercent - prevPercent,\n (percent: number) => Math.round(percent * 10000) / 10000\n )(filteredData);\n};\n\nconst TimeSeriesInfoPanel = ({dateRange, infoLabel, percentKey, dataKey, chartData}: Props) => {\n const styles = useStyles();\n\n const zoomedData = useMemo(() => getZoomedData(chartData, dateRange), [chartData, dateRange]);\n const lastChartData = last(zoomedData);\n const data = lastChartData?.[dataKey];\n const percent = lastChartData?.[percentKey];\n const dynamicPercent = percentKey && getDynamicPercent(zoomedData, percentKey);\n const lastDateOfPeriod = getDateRangeByValue(dateRange)[1];\n const dateLabel = moment().isSame(lastDateOfPeriod, 'day') ? i18n.text('Today') : i18n.date(lastDateOfPeriod);\n\n const label = (\n <>\n <span className={styles.period}>{dateLabel}:</span>\n {infoLabel}\n </>\n );\n const info = (\n <>\n <span className={styles.percent}>{percent}%</span>({formatNumberAsMetric(data, 999)})\n </>\n );\n\n return <ChartInfoPanel label={label} info={info} dynamicPercent={dynamicPercent} />;\n};\n\nexport default TimeSeriesInfoPanel;\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 = (chartsData: DQChartsData) => {\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() : Math.round(value * 1000) / 1000;\n};\n","import {\n CartesianGridProps,\n LineProps,\n TooltipProps,\n XAxisProps,\n YAxisProps,\n ReferenceLineProps,\n LabelProps\n} from 'recharts';\nimport {tickFormatter} from '../../services/barCharts';\nimport {\n getMaxValueFromLineChartData,\n getMinValueFromLineChartData,\n getUpdatedEdgeData,\n XAxisTickFormatter\n} from './helpers';\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 = ({keys, data, isPercent}): LineChartSettings => {\n const minLineChartData = getMinValueFromLineChartData(keys, data);\n const maxLineChartData = getMaxValueFromLineChartData(keys, data);\n const {minYAxisValue, maxYAxisValue} = getUpdatedEdgeData({minLineChartData, maxLineChartData, isPercent});\n\n return {\n xAxis: {\n type: 'category',\n dataKey: 'term',\n tick: {\n fill: '#000',\n fontSize: '12px',\n tickMargin: '18px',\n style: {\n userSelect: 'none'\n }\n },\n angle: 0,\n textAnchor: 'middle',\n stroke: '#666',\n tickLine: false,\n dy: 8,\n tickFormatter: XAxisTickFormatter,\n interval: 'preserveStartEnd'\n },\n yAxis: {\n dataKey: '',\n type: 'number',\n tick: {\n fill: '#000',\n fontSize: '12px',\n width: undefined,\n style: {\n userSelect: 'none'\n }\n },\n stroke: '#666',\n tickFormatter: tickFormatter,\n tickCount: 5,\n width: 59,\n tickLine: false,\n domain: [minYAxisValue, maxYAxisValue]\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: {stroke: 'white', strokeWidth: 2, r: 5}\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: '10px',\n fill: 'rgba(0, 0, 0, 0.54)',\n userSelect: 'none'\n }\n }\n };\n};\n\nexport default getLineChartSettings;\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, useMemo} 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 {either, pluck, isNil} from 'ramda';\n\nimport {DatePeriod} from '@reltio/mdm-sdk';\n\nimport {LineChartData} from '../../types/LineChartData';\nimport getLineChartSettings from './getLineChartSettings';\nimport {getZoomedData, getEmptyAreas} from './helpers';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n data: LineChartData[];\n width: number;\n height: number;\n keys: string[];\n dateRange: DatePeriod;\n getTooltip?: (payload: TooltipProps) => React.ReactNode;\n getColor?: (key: string) => string;\n yAxisLabel?: string;\n isPercent?: boolean;\n changeZoom?: (zoom: [string, string]) => void;\n};\n\nconst DEFAULT_LINE_COLOR = '#00439D';\ntype MouseEventProps = {\n activeLabel: string;\n activePayload: {value: number}[];\n isTooltipActive: boolean;\n};\n\nconst LineChart = ({\n data,\n width,\n height,\n getTooltip: getTooltipProp,\n getColor,\n keys,\n yAxisLabel,\n isPercent = true,\n dateRange,\n changeZoom\n}: Props) => {\n const styles = useStyles();\n const {cartesianGrid, tooltip, xAxis, yAxis, line, referenceLine, labelForY} = getLineChartSettings({\n keys,\n data,\n isPercent\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 [zoomAreaStart, setZoomAreaStart] = useState<string>(null);\n const [zoomAreaEnd, setZoomAreaEnd] = useState<string>(null);\n\n const handleMouseDown = (mouseEvent: MouseEventProps) => {\n mouseEvent?.activeLabel && setZoomAreaStart(mouseEvent.activeLabel);\n };\n const handleMouseMove = (mouseEvent: MouseEventProps) => {\n if (mouseEvent.isTooltipActive && mouseEvent.activePayload) {\n setSelectedDots({\n group: mouseEvent.activeLabel,\n values: pluck('value', mouseEvent.activePayload)\n });\n } else setSelectedDots(undefined);\n zoomAreaStart && setZoomAreaEnd(mouseEvent.activeLabel);\n };\n const handleMouseLeave = () => {\n setSelectedDots(undefined);\n };\n const handleMouseUp = () => {\n zoomAreaEnd && changeZoom([zoomAreaStart, zoomAreaEnd]);\n setZoomAreaEnd(null);\n setZoomAreaStart(null);\n };\n const zoomedData = useMemo(() => getZoomedData(data, dateRange), [data, dateRange]);\n const emptyAreas = useMemo(() => getEmptyAreas(zoomedData, keys), [zoomedData, keys]);\n const hasZoomArea = zoomAreaStart && zoomAreaEnd;\n return (\n <LineChartWidget\n width={width}\n height={height}\n data={zoomedData}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n onMouseDown={handleMouseDown}\n onMouseUp={handleMouseUp}\n margin={{\n top: 12,\n right: 20\n }}\n >\n {selectedDots && <ReferenceLine {...referenceLine} x={selectedDots.group} />}\n {selectedDots &&\n selectedDots.values.every(either(isNaN, isNil)) &&\n !hasZoomArea &&\n emptyAreas.map((emptyArea, index) => (\n <ReferenceArea x1={emptyArea.start} x2={emptyArea.end} key={index} />\n ))}\n {hasZoomArea && <ReferenceArea x1={zoomAreaStart} x2={zoomAreaEnd} strokeOpacity={0.3} />}\n <CartesianGrid {...cartesianGrid} />\n <XAxis {...xAxis} dataKey=\"group\" />\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} filterNull={false} />\n </LineChartWidget>\n );\n};\n\nexport default LineChart;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n monoFontCell: {\n fontFamily: '\"Roboto Mono\", monospace'\n },\n timeSeriesContent: {\n padding: '0 12px 10px'\n }\n});\n","import {assoc, map, pick, pipe} from 'ramda';\nimport React, {useCallback, useMemo} from 'react';\nimport {TooltipProps} from 'recharts';\nimport i18n from 'ui-i18n';\n\nimport {ChartData, RequestStates} from '@reltio/components';\nimport {DQDataLevel, DQMetric, FillRateState, TimeSeriesMetric} from '@reltio/mdm-sdk';\n\nimport {usePeriod, useZoom} from '../../../contexts/DateRangesProvider';\nimport {useEntityAndAttributeType} from '../../../contexts/EntityAndAttributeTypeProvider';\nimport {useReloadFacet} from '../../../contexts/ReloadFacetContext';\nimport {useChartData} from '../../../hooks/useChartData';\nimport {useMlDqDataRequest} from '../../../hooks/useMlDqDataRequest';\nimport {getChartState, getPercentLabel, transformTimeSeriesChartData} from '../../../services/charts';\nimport {\n formatFillRateData,\n getFillRateChartData,\n getFillRateColorByState,\n getFillRateData\n} from '../../../services/fillRate';\nimport {enrichTimeSeriesDataWithTodayData, getChartTooltipDateTitle, getTimeSeriesData} from '../../../services/mlDq';\nimport {LineChartData} from '../../../types/LineChartData';\n\nimport {ChartDataTooltip} from '../../../components/ChartDataTooltip';\nimport TimeSeriesInfoPanel from '../../../components/ChartInfoPanel/TimeSeriesInfoPanel';\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport LineChart from '../../../components/LineChart/LineChart';\n\nimport {useStyles} from '../styles';\n\nconst INFO_PANEL_HEIGHT = 36;\n\nconst tooltipKeys = [FillRateState.EXISTS, FillRateState.MISSING];\nconst metrics = [DQMetric.FILL_RATE as TimeSeriesMetric];\n\nconst getColor = () => getFillRateColorByState(FillRateState.EXISTS);\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: `${getPercentLabel(percent)} (${i18n.number(value)})`\n }))\n )(currentPayload);\n const title = getChartTooltipDateTitle(!!data.length, currentPayload.group);\n return <ChartDataTooltip data={data} title={title} />;\n }\n};\n\nconst FillRateTimeSeriesChart = () => {\n const styles = useStyles();\n const {entityType, detailedAttributeType} = useEntityAndAttributeType();\n const {getDateRange, changeZoom} = useZoom();\n const {period} = usePeriod();\n\n const entityTypeUri = entityType.uri;\n const attributeFieldName = detailedAttributeType.fieldName;\n const {\n data: mlDqData,\n state: mlDqState,\n reload: mlDqReload\n } = useMlDqDataRequest({\n entityTypeUri,\n attributeFieldName,\n period,\n metrics\n });\n\n useReloadFacet({\n state: mlDqState,\n reload: mlDqReload,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n const {data: todayData, state: todayState, reload: todayReload} = useChartData(getFillRateChartData);\n const chartData: LineChartData[] = useMemo(\n () =>\n pipe(\n getTimeSeriesData(getFillRateData),\n transformTimeSeriesChartData(DQMetric.FILL_RATE),\n enrichTimeSeriesDataWithTodayData(period, todayData.chartData, DQMetric.FILL_RATE)\n )(mlDqData),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [mlDqData, todayData]\n );\n const reloadFunction = useCallback(() => {\n mlDqState === RequestStates.ERROR && mlDqReload();\n todayState === RequestStates.ERROR && todayReload();\n }, [mlDqState, mlDqReload, todayState, todayReload]);\n\n const infoLabel = `${i18n.text('% of profiles with complete values')}:`;\n const dateRange = getDateRange();\n return (\n <DQLayoutItemContent\n data={chartData}\n loadingState={getChartState([mlDqState, todayState])}\n onRefresh={reloadFunction}\n className={styles.timeSeriesContent}\n >\n {({data, width, height}) => (\n <>\n <TimeSeriesInfoPanel\n infoLabel={infoLabel}\n dateRange={dateRange}\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 getColor={getColor}\n yAxisLabel={i18n.text('% of profiles')}\n dateRange={dateRange}\n changeZoom={changeZoom}\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: '8px',\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 from 'react';\nimport classnames from 'classnames';\nimport Chip, {ChipProps} from '@material-ui/core/Chip';\n\nimport {useZoom} from '../../contexts/DateRangesProvider';\nimport {getLabelByTimeRange} from '../../services/mlDq';\n\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\n\ntype Props = ChipProps & {\n disabled?: boolean;\n};\n\nconst PeriodChip = ({disabled = false, ...chipProps}: Props) => {\n const styles = useStyles();\n const {getDateRange} = useZoom();\n const label = disabled ? i18n.text('Today') : getLabelByTimeRange(getDateRange());\n\n return (\n <Chip\n classes={{\n root: classnames(styles.root, styles.disabled),\n label: styles.label\n }}\n label={label}\n {...chipProps}\n />\n );\n};\n\nexport default PeriodChip;\n","import React from 'react';\nimport i18n from 'ui-i18n';\n\nimport {ViewProps} from '../../../types/ViewProps';\nimport {usePeriod} from '../../../contexts/DateRangesProvider';\nimport {checkIsTimeSeries, hasTimeRange} 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 PeriodChip from '../../../components/PeriodChip/PeriodChip';\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 const {period} = usePeriod();\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {hasTimeRange(period) && <PeriodChip 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 {assoc, map, pick, pipe} from 'ramda';\nimport React, {useCallback, useMemo} from 'react';\nimport {TooltipProps} from 'recharts';\n\nimport i18n from 'ui-i18n';\nimport {ChartData, RequestStates} from '@reltio/components';\nimport {DQDataLevel, DQMetric, TimeSeriesMetric, UniquenessAnalysisState} from '@reltio/mdm-sdk';\n\nimport {usePeriod, useZoom} from '../../../contexts/DateRangesProvider';\nimport {useEntityAndAttributeType} from '../../../contexts/EntityAndAttributeTypeProvider';\nimport {useReloadFacet} from '../../../contexts/ReloadFacetContext';\nimport {useChartData} from '../../../hooks/useChartData';\nimport {useMlDqDataRequest} from '../../../hooks/useMlDqDataRequest';\nimport {getChartState, getPercentLabel, transformTimeSeriesChartData} from '../../../services/charts';\nimport {enrichTimeSeriesDataWithTodayData, getChartTooltipDateTitle, getTimeSeriesData} from '../../../services/mlDq';\nimport {\n formatUniquenessAnalysisData,\n getUniquenessChartData,\n getUniquenessColorByState,\n getUniquenessData\n} from '../../../services/uniquenessAnalysis';\nimport {LineChartData} from '../../../types/LineChartData';\n\nimport {ChartDataTooltip} from '../../../components/ChartDataTooltip';\nimport TimeSeriesInfoPanel from '../../../components/ChartInfoPanel/TimeSeriesInfoPanel';\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport LineChart from '../../../components/LineChart/LineChart';\n\nimport {useStyles} from '../styles';\n\nconst INFO_PANEL_HEIGHT = 36;\n\nconst tooltipKeys = [UniquenessAnalysisState.UNIQUE, UniquenessAnalysisState.NOT_UNIQUE];\nconst metrics = [DQMetric.UNIQUENESS as TimeSeriesMetric];\n\nconst getColor = () => getUniquenessColorByState(UniquenessAnalysisState.UNIQUE);\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: `${getPercentLabel(percent)} (${i18n.number(value)})`\n }))\n )(currentPayload);\n const title = getChartTooltipDateTitle(!!data.length, currentPayload.group);\n return <ChartDataTooltip data={data} title={title} />;\n }\n};\n\nconst UniquenessAnalysisTimeSeriesChart = () => {\n const styles = useStyles();\n const {entityType, detailedAttributeType} = useEntityAndAttributeType();\n const {period} = usePeriod();\n\n const entityTypeUri = entityType.uri;\n const {getDateRange, changeZoom} = useZoom();\n const attributeFieldName = detailedAttributeType.fieldName;\n const {\n data: dataMlDq,\n state: stateMlDq,\n reload: reloadMlDq\n } = useMlDqDataRequest({\n entityTypeUri,\n attributeFieldName,\n period,\n metrics\n });\n\n useReloadFacet({\n state: stateMlDq,\n reload: reloadMlDq,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n\n const {data: dataToday, state: stateToday, reload: reloadToday} = useChartData(getUniquenessChartData);\n\n const chartData: LineChartData[] = useMemo(\n () =>\n pipe(\n getTimeSeriesData(getUniquenessData),\n transformTimeSeriesChartData(DQMetric.UNIQUENESS),\n enrichTimeSeriesDataWithTodayData(period, dataToday.chartData, DQMetric.UNIQUENESS)\n )(dataMlDq),\n [dataMlDq, dataToday]\n );\n const reloadFunction = useCallback(() => {\n stateMlDq === RequestStates.ERROR && reloadMlDq();\n stateToday === RequestStates.ERROR && reloadToday();\n }, [stateMlDq, reloadMlDq, stateToday, reloadToday]);\n\n const infoLabel = `${i18n.text('% of unique distinct values')}:`;\n const dateRange = getDateRange();\n return (\n <DQLayoutItemContent\n data={chartData}\n loadingState={getChartState([stateMlDq, stateToday])}\n onRefresh={reloadFunction}\n className={styles.timeSeriesContent}\n >\n {({data, width, height}) => (\n <>\n <TimeSeriesInfoPanel\n infoLabel={infoLabel}\n dateRange={dateRange}\n chartData={chartData}\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 getColor={getColor}\n yAxisLabel={i18n.text('% of distinct values')}\n dateRange={dateRange}\n changeZoom={changeZoom}\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 {usePeriod} from '../../../contexts/DateRangesProvider';\nimport {checkIsTimeSeries, hasTimeRange} from '../../../services/mlDq';\n\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport PeriodChip from '../../../components/PeriodChip/PeriodChip';\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 const {period} = usePeriod();\n\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {hasTimeRange(period) && <PeriodChip 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 from 'react';\nimport classnames from 'classnames';\nimport Chip, {ChipProps} from '@material-ui/core/Chip';\n\nimport {RequestStates} from '@reltio/components';\n\nimport {getDetailLabel, checkIsDataQualitativeForSummary} from '../../services/attributeDetails';\nimport {useChartsDataContext} from '../../contexts/ChartsDataProvider';\nimport {AttrTypeDetailsType} from '../../types/DetailedAttributeType';\n\nimport {\n AttributeTypeDetailIcon,\n AttributeTypeDetailIconVariant\n} from '../AttributeTypeDetailIcon/AttributeTypeDetailIcon';\n\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 {\n chartsData: {data, state}\n } = useChartsDataContext();\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 rootTimeRange: {\n marginLeft: '40px'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {ChipProps} from '@material-ui/core/Chip';\n\nimport {AttrTypeDetails, AttrTypeDetailsType} from '../../types/DetailedAttributeType';\nimport {usePeriod} from '../../contexts/DateRangesProvider';\nimport {hasTimeRange} from '../../services/mlDq';\n\nimport AttributeTypeDetailChip from '../AttributeTypeDetailChip/AttributeTypeDetailChip';\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 const {period} = usePeriod();\n\n return (\n <div className={classnames(styles.root, {[styles.rootTimeRange]: hasTimeRange(period)})}>\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 summaryWrapper: {\n display: 'flex'\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, {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {CircularProgress as CircularProgress} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport classnames from 'classnames';\n\nimport {usePeriod} from '../../contexts/DateRangesProvider';\nimport {useEntityAndAttributeType} from '../../contexts/EntityAndAttributeTypeProvider';\nimport {DetailedAttributeType} from '../../types/DetailedAttributeType';\nimport {useEntityCount} from '../../hooks/useEntityCount';\nimport {hasTimeRange} from '../../services/mlDq';\n\nimport AttributeTypeDetails from '../AttributeTypeDetails/AttributeTypeDetails';\nimport {HeaderInfo} from './HeaderInfo';\nimport AttributeTypeIcon, {AttributeTypeIconSizes} from '../AttributeTypeIcon/AttributeTypeIcon';\nimport ChartDataTooltip from '../ChartDataTooltip/ChartDataTooltip';\n\nimport {useStyles} from './styles';\n\nexport type AttributeTypeSummaryProps = {\n detailedAttributeType: DetailedAttributeType;\n};\n\nconst AttributeTypeSummary = ({detailedAttributeType}: AttributeTypeSummaryProps) => {\n const styles = useStyles();\n const {entityType} = useEntityAndAttributeType();\n const entityTypesArray = useMemo(() => [entityType], [entityType]);\n const total = useEntityCount(entityTypesArray).getEntityCount(entityType.uri);\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 = total ? i18n.number(total) : <CircularProgress size={24} className={styles.totalLoading} />;\n\n const {period} = usePeriod();\n\n return (\n <div className={classnames({[styles.summaryWrapper]: hasTimeRange(period)})}>\n <div className={styles.header}>\n <HeaderInfo title={i18n.text('Active 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 classnames from 'classnames';\nimport React 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 {useChartsDataContext} from '../../contexts/ChartsDataProvider';\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 {\n chartsData: {data, state}\n } = useChartsDataContext();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const attributeTypesCount = countEntityTypeAttributes(metadata, entityType);\n const {activeProfiles = 0, inactiveProfiles = 0, sourceSystems = 0} = data?.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 {useEntityAndAttributeType} from '../../contexts/EntityAndAttributeTypeProvider';\nimport {DataLevelContext} from '../../contexts/DataLevelContext';\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, entityType} = useEntityAndAttributeType();\n const dataLevel = useContext(DataLevelContext);\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\nexport const 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';\nimport {always, either, isEmpty, isNil, propOr, when} from 'ramda';\n\nimport {DatePeriod, DQDataLevel, TimeSeriesDataValues, getDvfColor} from '@reltio/mdm-sdk';\n\nimport {LineChartData} from '../../../types/LineChartData';\nimport {TableChartData} from '../../../types/TableChartData';\nimport {hasTimeRange} from '../../../services/mlDq';\n\nexport const NO_DATA_FIELD = 'noData';\n\nconst getEntityLevelColumnsOptions = ({functionsCount, period}: {functionsCount: number; period: DatePeriod}) => [\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 ...(hasTimeRange(period) ? {getBarColor: getDvfColor} : {})\n }\n];\n\nconst getAttributeLevelColumnsOptions = ({functionsCount, period}: {functionsCount: number; period: DatePeriod}) => [\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 ...(hasTimeRange(period) ? {getBarColor: getDvfColor} : {})\n }\n];\n\nexport const getColumnsOptions = (dataLevel: DQDataLevel, chartData: TableChartData[], period: DatePeriod) => {\n return (dataLevel === DQDataLevel.ATTRIBUTE_TYPE ? getAttributeLevelColumnsOptions : getEntityLevelColumnsOptions)({\n functionsCount: chartData.length,\n period\n });\n};\n\nexport const getViolatedValidationData = (timeSeriesData: TimeSeriesDataValues): LineChartData => {\n const {data} = propOr({}, 'violatedProfiles', timeSeriesData);\n return when(either(isNil, isEmpty), always({[NO_DATA_FIELD]: null}))(data);\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: \"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 fontSize: '14px',\n overflow: 'hidden',\n lineHeight: '20px',\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 chartInfoPanel: {\n padding: '0 12px'\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 DQDashboardError from '../../../components/DQDashboardError/DQDashboardError';\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 <DQDashboardError\n height={height}\n errorData={{\n Icon: icon,\n title,\n message\n }}\n />\n )}\n </ReactResizeDetector>\n </BasicViewContent>\n </DQLayoutItemView>\n );\n};\n\nexport default VVFChartNoData;\n","import {useContext, useCallback} from 'react';\n\nimport {RequestStates} from '@reltio/components';\nimport {ApiErrorCode, DataValidationFunction, DQDataLevel} from '@reltio/mdm-sdk';\n\nimport {useEntityAndAttributeType} from '../../../../contexts/EntityAndAttributeTypeProvider';\nimport {DataLevelContext} from '../../../../contexts/DataLevelContext';\nimport {isReferenceChild} from '../../../../services/attributeDetails';\n\nimport {VVFNoDataChartType} from '../VVFChartNodata';\n\ntype Props = {\n dvfs: DataValidationFunction[];\n errorCode: ApiErrorCode;\n state: RequestStates;\n};\n\nexport const useNoDataDvfType = ({dvfs: activeDvfs, errorCode, state: dvfsState}: Props) => {\n const dataLevel = useContext(DataLevelContext);\n const {detailedAttributeType} = useEntityAndAttributeType();\n\n const getNoDataStatus = useCallback(\n (chartDataState: RequestStates, hasData: boolean) => {\n const chartState =\n dvfsState === RequestStates.LOADED && chartDataState === RequestStates.LOADED\n ? RequestStates.LOADED\n : dvfsState === RequestStates.ERROR || chartDataState === RequestStates.ERROR\n ? RequestStates.ERROR\n : RequestStates.LOADING;\n\n const isAttributeDataLevel = dataLevel === DQDataLevel.ATTRIBUTE_TYPE;\n const isPermissionDenied = errorCode === ApiErrorCode.ACCESS_DENIED;\n const isDVFNotSupported = isAttributeDataLevel && isReferenceChild(detailedAttributeType);\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 && !hasData;\n\n const getNoDataType = () => {\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 return {\n type: getNoDataType(),\n chartState\n };\n },\n [activeDvfs, errorCode, dvfsState, dataLevel, detailedAttributeType]\n );\n\n return getNoDataStatus;\n};\n","import {useContext, useMemo} from 'react';\nimport {propEq} from 'ramda';\n\nimport {DataValidationFunction, DQDataLevel, StatusVF} from '@reltio/mdm-sdk';\n\nimport {useEntityAndAttributeType} from '../../../../contexts/EntityAndAttributeTypeProvider';\nimport {DataLevelContext} from '../../../../contexts/DataLevelContext';\nimport {DVFContext} from '../../../../contexts/DVFContext';\nimport {getDVFsForAttribute} from '../../../../services/attributes';\n\ntype Props = {\n onlyActive?: boolean;\n};\n\nexport const useDvfs = ({onlyActive = true}: Props) => {\n const {dvfs, dvfConfigLink} = useContext(DVFContext);\n const dataLevel = useContext(DataLevelContext);\n const {detailedAttributeType} = useEntityAndAttributeType();\n\n const {data: dvfsData, state, reload, errorCode} = dvfs;\n\n const isAttributeDataLevel = dataLevel === DQDataLevel.ATTRIBUTE_TYPE;\n const currentDvfs: DataValidationFunction[] = useMemo(\n () => (isAttributeDataLevel ? getDVFsForAttribute(dvfsData, detailedAttributeType?.uri) : dvfsData) || [],\n [isAttributeDataLevel, dvfsData, detailedAttributeType?.uri]\n );\n const resultDvfs = useMemo(\n () => (onlyActive ? currentDvfs.filter(propEq('status', StatusVF.ACTIVE)) : currentDvfs),\n [currentDvfs, onlyActive]\n );\n\n return {\n dvfs: resultDvfs,\n dvfConfigLink,\n state,\n reload,\n errorCode\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 <>\n <RootRef rootRef={childrenRef}>{children}</RootRef>\n </>\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 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 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\nexport const useNumberCellStyles = makeStyles((theme) => ({\n bar: ({barColor}: {barColor: string}) => ({\n borderRadius: '0 !important',\n minHeight: '16px !important',\n position: 'initial !important' as 'initial',\n background: barColor || theme.palette.secondary.main\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 numberContainer: {\n alignItems: 'center',\n display: 'flex',\n height: '100%',\n padding: '0 10px 0 16px'\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}));\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; variant?: string}>;\n variant?: string;\n };\n columnsHeaders: TableColumnHeader[];\n};\n\nexport const LabelCellRenderer = ({value = '', columnData, rowValue: chartData, columnsHeaders, onClick}: Props) => {\n const {cellClassName, variant, 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 ? (\n <LabelRenderer variant={variant} chartData={chartData} />\n ) : (\n utils.strings.removeLineBreaks(value)\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})(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 {useNumberCellStyles} from './styles';\n\ntype Props = {\n value: number;\n columnData: {\n maxValue?: number;\n getBarColor?: (group: string) => string;\n };\n rowValue?: ChartData;\n onClick?: () => void;\n columnsHeaders: TableColumnHeader[];\n};\n\nexport const NumberCellValueRenderer = ({\n value,\n columnData: {maxValue, getBarColor},\n rowValue: chartData,\n columnsHeaders,\n onClick\n}: Props) => {\n const styles = useNumberCellStyles({barColor: getBarColor && getBarColor(chartData.group)});\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}: Dimensions) => ({\n width: width,\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\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 getBarColor?: (group: string) => string;\n variant?: string;\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 display: 'flex',\n flexDirection: 'column'\n }\n}));\n","import React, {ReactElement, useCallback, useMemo, useState} from 'react';\n\nimport {withPercents, toggleSortOrder, RequestStates} from '@reltio/components';\n\nimport {valueComparator as defaultComparator} from '../../../services/tableCharts';\nimport {hasTimeRange} from '../../../services/mlDq';\nimport {DQDashboardView} from '../../../types/DQDashboardView';\nimport {ErrorData} from '../../../types/ErrorData';\nimport {TableChartData} from '../../../types/TableChartData';\nimport {usePeriod} from '../../../contexts/DateRangesProvider';\n\nimport PeriodChip from '../../../components/PeriodChip/PeriodChip';\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport TableWithBars, {ColumnsOptions} from '../../../components/CustomTableWithBars/TableWithBars';\n\nimport {useStyles} from './styles';\nimport {DQDataLevel} from '@reltio/mdm-sdk';\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 contentChildren?: React.ReactNode;\n noDataComponentData?: ErrorData;\n dataLevel?: DQDataLevel;\n};\n\nconst CustomTableWithBarsChart = ({\n config,\n data,\n title,\n columnsOptions,\n infoTooltipTitle,\n customComparator,\n onItemClick,\n contentChildren,\n state,\n onRefresh,\n dataLevel = DQDataLevel.ATTRIBUTE_TYPE\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 {period} = usePeriod();\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {hasTimeRange(period) && dataLevel === DQDataLevel.ATTRIBUTE_TYPE && <PeriodChip 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 <>\n {contentChildren}\n <TableWithBars\n {...{\n data,\n width,\n height,\n columnsOptions,\n sorting: {\n field: sortField,\n order: sortDirection\n },\n onSort: handleSort,\n onItemClick\n }}\n />\n </>\n );\n }}\n </DQLayoutItemContent>\n </DQLayoutItemView>\n );\n};\n\nexport default withPercents(CustomTableWithBarsChart);\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 TotalInfo = ({isDataValid, totalProfiles, invalidProfiles}: Props) => {\n const styles = useStyles();\n\n const getTotalInfo = () => {\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 </>\n ) : null;\n };\n const totalInfo = getTotalInfo();\n return totalInfo && <Typography className={styles.titleCount}>{totalInfo}</Typography>;\n};\n","import React, {useCallback, useContext, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {pluck} from 'ramda';\n\nimport i18n from 'ui-i18n';\nimport mdmModule from '@reltio/mdm-module';\nimport {ApiErrorCode, DQDataLevel, Metadata} from '@reltio/mdm-sdk';\nimport {RequestStates} from '@reltio/components';\n\nimport {usePeriod} from '../../../contexts/DateRangesProvider';\nimport {DataLevelContext} from '../../../contexts/DataLevelContext';\nimport {useEntityAndAttributeType} from '../../../contexts/EntityAndAttributeTypeProvider';\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 {\n getValidationChartData,\n getEntityLevelValidationChartData,\n getValidationSearchState,\n valueComparator\n} from '../../../services/tableCharts';\nimport {getColumnsOptions} from './helpers';\nimport {useNoDataDvfType} from './hooks/useNoDataDvfType';\nimport {useDvfs} from './hooks/useDvfs';\nimport {useReloadFacet} from '../../../contexts/ReloadFacetContext';\n\nimport CustomTableWithBarsChart from '../CustomTableWithBarsChart/CustomTableWithBarsChart';\nimport VVFChartNoData, {VVFNoDataChartType} from './VVFChartNodata';\nimport {ChartDataTooltip, InfoDataRenderer} from '../../../components/ChartDataTooltip';\nimport ChartInfoPanel from '../../../components/ChartInfoPanel/ChartInfoPanel';\nimport {TotalInfo} from './TotalInfo';\n\nimport {useStyles} from './styles';\n\nconst ViolatedValidationFuncChart = (props: ViewProps) => {\n const styles = useStyles();\n const {config} = props;\n\n const dvfData = useDvfs({});\n const {dvfs, dvfConfigLink, errorCode: dvfErrorCode, reload: dvfsReload, state: dvfsState} = dvfData;\n const getNoDataStatus = useNoDataDvfType(dvfData);\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const dataLevel = useContext(DataLevelContext);\n const isAttributeDataLevel = dataLevel === DQDataLevel.ATTRIBUTE_TYPE;\n const {period} = usePeriod();\n const {entityType} = useEntityAndAttributeType();\n const entityTypeUri = entityType.uri;\n\n const {\n data: chartData,\n state,\n reload\n } = useChartData(\n isAttributeDataLevel ? getValidationChartData(dvfs) : getEntityLevelValidationChartData(dvfs, metadata)\n );\n const hasData = !!chartData.length;\n const {type: noDataType, chartState} = getNoDataStatus(state, hasData);\n const entityTypesArray = useMemo(() => [entityType], [entityType]);\n const dvfUris = useMemo(() => pluck('uri', dvfs), [dvfs]);\n const invalidProfiles = useInvalidProfiles({entityTypeUri, dvfUris});\n const {getEntityCount} = useEntityCount(entityTypesArray);\n const totalProfiles = getEntityCount(entityTypeUri);\n const searchProfiles = useSearchRedirect(getValidationSearchState(dvfs));\n\n const isLoadingError = chartState === RequestStates.ERROR && dvfErrorCode !== ApiErrorCode.DVF_NOT_CONFIGURED;\n\n const totalInfo = !isLoadingError &&\n noDataType !== VVFNoDataChartType.DVF_NOT_CONFIGURE &&\n chartState !== RequestStates.LOADING && (\n <TotalInfo\n isDataValid={VVFNoDataChartType.DATA_VALID === noDataType}\n totalProfiles={totalProfiles}\n invalidProfiles={invalidProfiles}\n />\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 contentChildren = (\n <div className={styles.chartInfoPanel}>\n <ChartInfoPanel label={`${i18n.text('Profiles with invalid data')}:`} info={totalInfo} />\n </div>\n );\n\n const columnsOptions = getColumnsOptions(dataLevel, chartData, period);\n\n useReloadFacet({\n state,\n reload,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n\n const reloadFunction = useCallback(() => {\n dvfsState === RequestStates.ERROR && dvfsReload();\n state === RequestStates.ERROR && reload();\n }, [dvfsState, dvfsReload, state, reload]);\n\n return noDataType ? (\n <VVFChartNoData\n config={config}\n chartType={noDataType}\n title={i18n.text(config.title)}\n infoTooltipTitle={infoTooltipTitle}\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 state={chartState}\n onRefresh={reloadFunction}\n customComparator={valueComparator}\n infoTooltipTitle={infoTooltipTitle}\n columnsOptions={columnsOptions}\n contentChildren={contentChildren}\n dataLevel={dataLevel}\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 // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [entityTypeUri, dvfUris]);\n\n return invalidProfilesCount;\n};\n","import React, {useCallback, useContext, useMemo} from 'react';\nimport {TooltipProps} from 'recharts';\nimport {isNil, map, pipe, propSatisfies, keys, reduce, reject, uniq, without} from 'ramda';\n\nimport i18n from 'ui-i18n';\nimport {DQDataLevel, DataValidationFunction, TimeSeriesMetric, getLabel, getDvfColor, DQMetric} from '@reltio/mdm-sdk';\nimport {ChartData, RequestStates} from '@reltio/components';\n\nimport {getTimeSeriesData, getChartTooltipDateTitle, enrichTimeSeriesDataWithTodayData} from '../../../services/mlDq';\nimport {getChartState} from '../../../services/charts';\nimport {useMlDqDataRequest} from '../../../hooks/useMlDqDataRequest';\nimport {useEntityAndAttributeType} from '../../../contexts/EntityAndAttributeTypeProvider';\nimport {useReloadFacet} from '../../../contexts/ReloadFacetContext';\nimport {DataLevelContext} from '../../../contexts/DataLevelContext';\nimport {LineChartData} from '../../../types/LineChartData';\nimport {usePeriod, useZoom} from '../../../contexts/DateRangesProvider';\nimport {ViewProps} from '../../../types/ViewProps';\nimport {getViolatedValidationData, NO_DATA_FIELD} from './helpers';\nimport {findDVFByUri, getValidationChartData} from '../../../services/tableCharts';\nimport {useNoDataDvfType} from './hooks/useNoDataDvfType';\nimport {useChartData} from '../../../hooks/useChartData';\nimport {useDvfs} from './hooks/useDvfs';\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 PeriodChip from '../../../components/PeriodChip/PeriodChip';\nimport {ChartDataTooltip, InfoDataRenderer, TooltipWithSquares} from '../../../components/ChartDataTooltip';\nimport VVFChartNoData, {VVFNoDataChartType} from './VVFChartNodata';\n\n// TODO get rid of hardcoded metric\nconst VIOLATED_PROFILES_METRIC = 'violatedProfiles';\nconst metrics = [VIOLATED_PROFILES_METRIC as TimeSeriesMetric];\n\nconst getTooltip =\n (dvfs: DataValidationFunction[], dataKeys: string[]) =>\n ({active, payload}: TooltipProps) => {\n if (active && payload && payload.length) {\n const {payload: currentPayload} = payload[0];\n const data: ChartData[] = pipe(\n map((functionId: string) => {\n const dvf = findDVFByUri(dvfs, functionId);\n return {\n label: getLabel(dvf?.label || dvf?.name),\n value: currentPayload[functionId],\n group: functionId\n };\n }),\n reject(propSatisfies(isNil, 'value'))\n )(dataKeys);\n const title = getChartTooltipDateTitle(!!data.length, currentPayload.group);\n return <TooltipWithSquares title={title} data={data} getColor={getDvfColor} />;\n }\n };\n\nconst ViolatedValidationFuncTimeSeriesChart = (props: ViewProps) => {\n const {config} = props;\n const {title} = config;\n const {period} = usePeriod();\n\n const dvfData = useDvfs({onlyActive: false});\n const {dvfs, dvfConfigLink, reload: reloadDvf, state: stateDvf} = dvfData;\n const {getDateRange, changeZoom} = useZoom();\n const getNoDataStatus = useNoDataDvfType(dvfData);\n const {entityType, detailedAttributeType} = useEntityAndAttributeType();\n const dataLevel = useContext(DataLevelContext);\n const entityTypeUri = entityType.uri;\n const attributeFieldName = detailedAttributeType?.fieldName;\n const {\n data: dataMlDq,\n state: stateMlDq,\n reload: reloadMlDq\n } = useMlDqDataRequest({\n entityTypeUri,\n attributeFieldName,\n period,\n metrics\n });\n const {data: dataToday, state: stateToday, reload: reloadToday} = useChartData(getValidationChartData(dvfs));\n const chartData: LineChartData[] = useMemo(\n () =>\n pipe(\n getTimeSeriesData(getViolatedValidationData),\n enrichTimeSeriesDataWithTodayData(period, dataToday, DQMetric.DATA_VALIDATION)\n )(dataMlDq),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dataMlDq, dataToday]\n );\n\n useReloadFacet({\n state: stateMlDq,\n reload: reloadMlDq,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n\n const dataKeys = pipe(\n reduce((acc: string[], data: LineChartData) => acc.concat(keys(data)), []),\n uniq,\n without(['label', 'group'])\n )(chartData);\n\n const hasData = dataKeys.toString() !== NO_DATA_FIELD;\n\n const {type: noDataType, chartState} = getNoDataStatus(getChartState([stateMlDq, stateToday]), hasData);\n\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Profiles with invalid data over time')}\n data={[{value: i18n.text('Shows the number of profiles that violate active validation functions')}]}\n DataRenderer={InfoDataRenderer}\n />\n );\n\n const reloadFunction = useCallback(() => {\n stateDvf === RequestStates.ERROR && reloadDvf();\n stateMlDq === RequestStates.ERROR && reloadMlDq();\n stateToday === RequestStates.ERROR && reloadToday();\n }, [stateDvf, reloadDvf, stateMlDq, reloadMlDq, stateToday, reloadToday]);\n\n const titleChildren = <PeriodChip />;\n const loadingState =\n chartState === RequestStates.LOADING ? RequestStates.LOADING : getChartState([stateMlDq, stateToday]);\n return noDataType === VVFNoDataChartType.DVF_NOT_SUPPORTED ||\n noDataType === VVFNoDataChartType.PERMISSION_DENIED ? (\n <VVFChartNoData\n config={config}\n chartType={noDataType}\n title={i18n.text(title)}\n infoTooltipTitle={infoTooltipTitle}\n titleChildren={titleChildren}\n dvfConfigLink={dvfConfigLink}\n dataLevel={dataLevel}\n />\n ) : (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {titleChildren}\n </DQLayoutItemHeader>\n <DQLayoutItemContent data={chartData} loadingState={loadingState} onRefresh={reloadFunction}>\n {({data, width, height}) => (\n <div>\n <LineChart\n width={width}\n height={height}\n data={data}\n keys={dataKeys}\n getTooltip={getTooltip(dvfs, dataKeys)}\n getColor={getDvfColor}\n yAxisLabel={i18n.text('No. of profiles')}\n isPercent={false}\n dateRange={getDateRange()}\n changeZoom={changeZoom}\n />\n </div>\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 classnames from 'classnames';\nimport React, {useMemo} from 'react';\nimport i18n from 'ui-i18n';\n\nimport {isDateType, isSSNType} from '@reltio/mdm-sdk';\n\nimport {ChartDataTooltip, InfoDataRenderer} from '../../components/ChartDataTooltip';\nimport {useEntityAndAttributeType} from '../../contexts/EntityAndAttributeTypeProvider';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {convertDateLabelsInChartData} from '../../services/charts';\nimport {getFrequencyAnalysisSearchState, getFrequencyChartData, getRowsCounterLabel} from '../../services/tableCharts';\nimport {ViewProps} from '../../types/ViewProps';\n\nimport CustomTableWithBarsChart from './CustomTableWithBarsChart/CustomTableWithBarsChart';\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 = useEntityAndAttributeType().detailedAttributeType?.type;\n const preparedData = useMemo(\n () => (isDateType(attributeType) ? convertDateLabelsInChartData(chartData, attributeType) : chartData),\n [chartData]\n );\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';\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 paddingTop: '3px',\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 ? 0 : 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 {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 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 from 'react';\nimport {Bar, BarChart, CartesianGrid, Label, Tooltip as ChartTooltip, XAxis, YAxis} from 'recharts';\nimport {ChartData, RequestStates} from '@reltio/components';\n\nimport {usePeriod} from '../../../contexts/DateRangesProvider';\nimport getBarChartSettings from './getBarChartSettings';\nimport {DQDashboardView} from '../../../types/DQDashboardView';\nimport {InfoPanelData} from '../../../types/InfoPanelData';\nimport BarChartOptions from '../../../types/BarChartOptions';\nimport {hasTimeRange} from '../../../services/mlDq';\n\nimport {BarTooltip} from './BarTooltip/BarTooltip';\nimport {InfoPanel} from './InfoPanel';\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 PeriodChip from '../../../components/PeriodChip/PeriodChip';\n\nimport {useStyles} from './styles';\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};\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 {period} = usePeriod();\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {hasTimeRange(period) && <PeriodChip 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 label: ({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","import React from 'react';\n\nimport {getSourceColor} from '@reltio/mdm-sdk';\nimport {SourceIcon} from '@reltio/components';\n\nimport {TableChartData} from '../../types/TableChartData';\n\nimport {useLabelStyles} from './styles';\n\ntype Props = {\n chartData: TableChartData;\n variant?: string;\n};\n\nexport const INCLUDE_SOURCE_ICON = 'includeSourceIcon';\n\nconst SourceLabelRenderer = ({chartData, variant}: Props) => {\n const {group, label} = chartData;\n const styles = useLabelStyles({color: getSourceColor(group)});\n return (\n <>\n {variant === INCLUDE_SOURCE_ICON ? (\n <SourceIcon sourceType={group} className={styles.icon} classes={{textRoot: styles.text}} />\n ) : (\n <div className={styles.label} />\n )}\n {label}\n </>\n );\n};\n\nexport default SourceLabelRenderer;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport i18n from 'ui-i18n';\nimport {Metadata} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport {useChartData} from '../../../hooks/useChartData';\nimport {useSearchRedirect} from '../../../hooks/useSearchRedirect';\nimport {getCrosswalkAnalysisData, getCrosswalkAnalysisSearchState} from '../../../services/barCharts';\nimport {valueComparator} from '../../../services/tableCharts';\nimport {ViewProps} from '../../../types/ViewProps';\n\nimport CustomTableWithBarsChart from '../CustomTableWithBarsChart/CustomTableWithBarsChart';\nimport SourceLabelRenderer, {INCLUDE_SOURCE_ICON} from '../../../components/SourceLabelRenderer/SourceLabelRenderer';\nimport {ChartDataTooltip, InfoDataRenderer} from '../../../components/ChartDataTooltip';\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 variant: INCLUDE_SOURCE_ICON\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 from 'react';\nimport i18n from 'ui-i18n';\n\nimport {useEntityAndAttributeType} from '../../contexts/EntityAndAttributeTypeProvider';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {getValueDistributionData, getValueDistributionSearchState} from '../../services/barCharts';\nimport {ViewProps} from '../../types/ViewProps';\n\nimport CustomBarChart from './CustomBarChart/CustomBarChart';\n\nconst ValueDistributionChart = ({config}: ViewProps) => {\n const attributeType: string = useEntityAndAttributeType().detailedAttributeType?.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 useStyles = makeStyles((theme: Theme & {tooltip: Record<string, string | number>}) => ({\n consolidationRateWrapper: {\n display: 'flex'\n },\n ratePercent: {\n fontWeight: 700,\n lineHeight: '20px',\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';\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 <>\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 </>\n );\n};\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, useMemo, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\n\nimport {ChartData} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {getSourceColor, getSourceSystemLabel, Metadata} from '@reltio/mdm-sdk';\n\nimport {useChartsDataContext} from '../../../contexts/ChartsDataProvider';\nimport {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';\n\nimport StackedBarChart from '../CustomBarChart/StackedBarChart';\nimport {ConsolidationPercentage} from './ConsolidationPercentage';\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 SourceLabelRenderer from '../../../components/SourceLabelRenderer/SourceLabelRenderer';\nimport ChartInfoPanel from '../../../components/ChartInfoPanel/ChartInfoPanel';\nimport {YAxisTickRenderer} from './YAxisTickRenderer';\n\nimport {useStyles} from './styles';\n\nconst STACKED_BAR_CHART_WIDTH = 256;\nconst CHART_INFO_PANEL_HEIGHT = 34;\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 {\n chartsData: {data: chartsData}\n } = useChartsDataContext();\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}></DQLayoutItemHeader>\n <DQLayoutItemContent data={tableChartData} loadingState={state} onRefresh={reload}>\n {({height = 0, width = 0}) => {\n const chartHeight = chartsData.consolidationRate ? height - CHART_INFO_PANEL_HEIGHT : height;\n return (\n <>\n {chartsData.consolidationRate && (\n <ChartInfoPanel\n label={`${i18n.text('Consolidation rate')}:`}\n info={<ConsolidationPercentage data={chartsData} />}\n />\n )}\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={chartHeight}\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: chartHeight,\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 }}\n </DQLayoutItemContent>\n </DQLayoutItemView>\n );\n};\nexport default ConsolidationRateChart;\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 {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, useEffect, useState} from 'react';\n\nimport {ChartData, RequestStates, useSafePromise} from '@reltio/components';\nimport {FilterOptions, getTotals} from '@reltio/mdm-sdk';\n\nimport {useEntityAndAttributeType} from '../contexts/EntityAndAttributeTypeProvider';\nimport {formatRDMTranscodeData} from '../services/rdmTranscode';\n\nexport const useRDMChartDataRequest = () => {\n const {entityType} = useEntityAndAttributeType();\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 // eslint-disable-next-line react-hooks/exhaustive-deps\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 {assoc, map} from 'ramda';\nimport React, {memo, useMemo} from 'react';\n\nimport {ReltioGridLayoutItem} from '@reltio/mdm-sdk';\nimport {ReltioGridLayout} from '@reltio/components';\n\nimport {DQDashboardView} from '../../types/DQDashboardView';\nimport {DQDashboardLayoutItem} from '../DQDashboardLayoutItem/DQDashboardLayoutItem';\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 staticLayout = useMemo(() => reltioGridLayoutToStaticLayout(layout), [layout]);\n return (\n <ReltioGridLayout\n LayoutItem={DQDashboardLayoutItem}\n views={views}\n layout={staticLayout}\n layoutOptions={layoutOptions}\n />\n );\n};\n\nexport default memo(DQDashboardLayout);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n warning: {\n fontSize: '13px',\n color: 'rgba(0, 0, 0, 0.54)',\n height: '47px',\n border: '1px solid rgba(0, 0, 0, 0.12)',\n margin: '14px 11px 0 12px',\n display: 'flex',\n alignItems: 'center',\n paddingLeft: '18px',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n errorIcon: {\n color: 'rgba(0, 0, 0, 0.54)',\n marginRight: '14px'\n }\n});\n","import React from 'react';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport {useStyles} from './styles';\n\nconst Warning = ({text}) => {\n const styles = useStyles();\n return (\n text && (\n <div className={styles.warning} data-reltio-id=\"dq-warning\">\n <ErrorIcon className={styles.errorIcon} />\n {text}\n </div>\n )\n );\n};\n\nexport default Warning;\n","import {CSSProperties} from 'react';\nimport {makeStyles} from '@material-ui/core/styles';\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(() => ({\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 height: 'calc(100% - 56px)',\n position: 'relative'\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 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 periodSelector: {\n position: 'relative',\n margin: '0',\n height: '30px',\n borderRadius: '6px',\n border: '1px solid rgba(0, 0, 0, 0.12)',\n flexBasis: '196px'\n },\n paper: {\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 '& ul>div': {\n minWidth: '300px'\n }\n },\n input: {\n padding: '8px 0 8px 16px',\n fontSize: '13px'\n },\n inputRoot: {\n backgroundColor: 'transparent',\n paddingRight: 4\n },\n dropdownIndicator: {\n width: '18px',\n height: '18px',\n '& svg': {\n width: '18px',\n height: '18px'\n }\n },\n layoutRoot: {\n overflow: 'auto',\n backgroundColor: '#EEEEEE',\n height: '100%',\n flexGrow: 1,\n padding: '0 4px',\n boxSizing: 'border-box'\n }\n}));\n","import React, {useEffect, useMemo} from 'react';\nimport {equals, pipe, reject} from 'ramda';\n\nimport {DQDataLevel, DQMetric, ReltioGridLayoutItem, TEntityType} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\n\nimport {DataLevelContext} from '../../contexts/DataLevelContext';\nimport {useChartsDataContext} from '../../contexts/ChartsDataProvider';\nimport {useEntityAndAttributeType} from '../../contexts/EntityAndAttributeTypeProvider';\nimport {useReloadFacet} from '../../contexts/ReloadFacetContext';\nimport {usePermissionsContext} from '../../contexts/PermissionsProvider';\nimport {DQDashboardPerspectiveConfig} from '../../types/DQDashboardPerspectiveConfig';\nimport {getLayoutByAttributeType, getMetricsFromViews, getAttributeLevelViews} from '../../services/charts';\nimport {isReferenceChild} from '../../services/attributeDetails';\nimport {useChartsDataRequest} from '../../hooks/useChartsDataRequest';\n\nimport DQDashboardLayout from '../DQDashboardLayout/DQDashboardLayout';\nimport Warning from '../Warning/Warning';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: DQDashboardPerspectiveConfig;\n entityType?: TEntityType;\n};\n\nconst AttributeLevelLayout = ({config, entityType}: Props) => {\n const styles = useStyles();\n const {detailedAttributeType} = useEntityAndAttributeType();\n const {hasRestrictions, isTimeSeriesAvailable} = usePermissionsContext();\n const customAttributeLayouts = config.layoutsByDataLevel?.[DQDataLevel.ATTRIBUTE_TYPE];\n const layout = useMemo(\n (): ReltioGridLayoutItem[] =>\n getLayoutByAttributeType(customAttributeLayouts, detailedAttributeType?.type, isTimeSeriesAvailable),\n [detailedAttributeType?.type, customAttributeLayouts]\n );\n\n const views = useMemo(\n () => getAttributeLevelViews(config.viewsByDataLevel, detailedAttributeType?.type, layout),\n [config.viewsByDataLevel, detailedAttributeType?.type, layout]\n );\n\n const attributeLevelMetrics = useMemo(\n () =>\n pipe(getMetricsFromViews, (metrics: DQMetric[]) =>\n isReferenceChild(detailedAttributeType) ? reject(equals(DQMetric.DATA_VALIDATION))(metrics) : metrics\n )(views),\n [views, detailedAttributeType]\n );\n\n const chartsData = useChartsDataRequest({\n entityType,\n detailedAttributeType,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE,\n metrics: attributeLevelMetrics\n });\n const {changeChartsData} = useChartsDataContext();\n useEffect(() => changeChartsData(chartsData), [chartsData]);\n useReloadFacet({\n state: chartsData.state,\n reload: chartsData.reload,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n return (\n <DataLevelContext.Provider value={DQDataLevel.ATTRIBUTE_TYPE}>\n <div className={styles.layoutRoot}>\n {hasRestrictions && (\n <Warning\n text={i18n.text(\n 'Not seeing the data you expected for this attribute? Contact your tenant admin to verify permissions.'\n )}\n />\n )}\n <DQDashboardLayout views={views} layout={layout} />\n </div>\n </DataLevelContext.Provider>\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 {useEntityAndAttributeType} from '../../contexts/EntityAndAttributeTypeProvider';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n dataLevel: DQDataLevel;\n onChange: (dataLevel: DQDataLevel) => void;\n};\nconst DataLevelBreadcrumbs = ({dataLevel, onChange}: Props) => {\n const styles = useStyles();\n const {detailedAttributeType, setDetailedAttributeType} = useEntityAndAttributeType();\n const handleChangeDataLevel = (dataLevel: DQDataLevel) => () => {\n if (dataLevel === DQDataLevel.ENTITY_TYPE) {\n setDetailedAttributeType(null);\n }\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 {find, map, pipe, pluck, propOr, propEq, sum, without} from 'ramda';\n\nexport type PageSettings = {\n index: number;\n width?: number;\n}[];\n\nexport const calculatePagePartsWidth = ({pages, width: allWidth}: {pages: PageSettings[]; width: number}) => {\n return pages.reduce((acc: PageSettings[], pagesettings: PageSettings) => {\n const fixedWidth = pagesettings.reduce((width, pagePart) => {\n return width + (pagePart?.width || 0);\n }, 0);\n\n acc.push(\n pagesettings.map(({width: partWidth, index}) =>\n partWidth\n ? {\n index,\n width: partWidth\n }\n : {\n index,\n width: allWidth - fixedWidth\n }\n )\n );\n return acc;\n }, []);\n};\n\nconst getPagePartWidth = (pagePartIndex: number) => pipe(find(propEq('index', pagePartIndex)), propOr(0, 'width'));\n\nexport const getPageIndexes = pluck('index');\n\nexport const getPagePartStyleWidth = ({\n pagesSettings,\n page,\n pagePartIndex\n}: {\n pagePartIndex: number;\n page: number;\n pagesSettings: PageSettings[];\n}) => {\n const pageIndexes = getPageIndexes(pagesSettings[page]);\n const minCurrentIndex = Math.min(...pageIndexes);\n const maxCurrentIndex = Math.max(...pageIndexes);\n\n if (pagePartIndex < minCurrentIndex || pagePartIndex > maxCurrentIndex) {\n return pipe(\n find((pageSettings, indexPage) => indexPage !== page),\n getPagePartWidth(pagePartIndex)\n )(pagesSettings);\n } else return getPagePartWidth(pagePartIndex)(pagesSettings[page]);\n};\n\nexport const getLeftPageOffset = ({page, pagesSettings}: {page: number; pagesSettings: PageSettings[]}) => {\n const pageIndexes = getPageIndexes(pagesSettings[page]);\n const prevPageIndexes = page === 0 ? [] : getPageIndexes(pagesSettings[page - 1]);\n const leftPagesIndexes = without(pageIndexes, prevPageIndexes);\n\n return page === 0\n ? 0\n : -pipe(\n map((pagePartIndex) => getPagePartWidth(pagePartIndex)(pagesSettings[page - 1])),\n sum\n )(leftPagesIndexes);\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StyleProps = {\n transitionTime: number;\n pagesCount: number;\n};\n\nexport const useStyles = makeStyles(() => ({\n root: ({transitionTime}: StyleProps) => ({\n transition: `left ${transitionTime}s ease 0s`,\n height: '100%',\n width: '100%',\n position: 'absolute'\n }),\n pagesWrapper: ({pagesCount}: StyleProps) => ({\n display: 'flex',\n height: '100%',\n width: `${100 * pagesCount}%`\n }),\n page: {\n display: 'flex'\n }\n}));\n","import React, {useEffect, useState} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {\n PageSettings,\n calculatePagePartsWidth,\n getPagePartStyleWidth,\n getLeftPageOffset,\n getPageIndexes\n} from './helpers';\n\nimport {useStyles} from './styles';\n\nconst TRANSITION_TIMEOUT_MS = 300;\n\nexport type ContentSliderProps = {\n page: number;\n pages: PageSettings[];\n children?: React.ReactNodeArray;\n startSliding?: () => void;\n endSliding?: () => void;\n};\n\nconst ContentSlider = ({page, children, pages, startSliding, endSliding}: ContentSliderProps) => {\n const styles = useStyles({\n transitionTime: TRANSITION_TIMEOUT_MS / 1000,\n pagesCount: pages.length\n });\n\n const [savedPage, setSavedPage] = useState(0);\n useEffect(() => {\n startSliding && startSliding();\n setTimeout(() => {\n setSavedPage(page);\n endSliding && endSliding();\n }, TRANSITION_TIMEOUT_MS);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [page]);\n\n const currentPageIndexes = getPageIndexes(pages[page]);\n\n return (\n <ReactResizeDetector refreshMode=\"debounce\" refreshRate={100} handleWidth>\n {({width = 250}: {width: number}) => {\n const pagesSettings = calculatePagePartsWidth({pages, width});\n const left = getLeftPageOffset({page, pagesSettings});\n\n return (\n <div className={styles.root} style={{left}}>\n <div className={styles.pagesWrapper}>\n {children.map((component, index) => {\n const showComponent = page !== savedPage || currentPageIndexes.includes(index);\n const styleWidth = getPagePartStyleWidth({\n pagesSettings,\n page: page,\n pagePartIndex: index\n });\n\n return (\n <section className={styles.page} style={{width: styleWidth}} key={index}>\n {showComponent && component}\n </section>\n );\n })}\n </div>\n </div>\n );\n }}\n </ReactResizeDetector>\n );\n};\n\nexport default ContentSlider;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n height: '100%',\n verticalAlign: 'top',\n position: 'relative',\n boxSizing: 'border-box'\n },\n entityLevelBar: {\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 padding: '52px 0',\n marginBottom: '8px',\n lineHeight: '28px'\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 whiteSpace: 'nowrap'\n }\n}));\n","import React from 'react';\nimport RightArrowIcon from '@material-ui/icons/ChevronRight';\n\nimport i18n from 'ui-i18n';\nimport {getLabel, TEntityType} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n showEntityLevel: () => void;\n entityType: TEntityType;\n};\n\nconst DataLevelSwitcher = ({showEntityLevel, entityType}: Props) => {\n const styles = useStyles();\n\n const expandButtonTitle = `${i18n.text('Entity')}: ${getLabel(entityType.label)} ${i18n.text('overview')}`;\n return (\n <div className={styles.root} onClick={showEntityLevel}>\n <div className={styles.entityLevelBar} data-reltio-id=\"reltio-dq-dashboard-entity-level-bar-button\">\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 );\n};\n\nexport default DataLevelSwitcher;\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 {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 noDataFilterOptions = [\n {\n label: i18n.text('Show attributes with no data'),\n value: EmptinessFilterValue.SHOW_EMPTY,\n group: 'emptiness'\n }\n];\n\nexport const getNoDataOptions = (): FilterOptionsGroup => {\n return {\n label: '',\n options: noDataFilterOptions\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({\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((theme) => ({\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 noData: {\n '&::before': {\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 noDataLabel: {\n fontSize: '12px',\n color: theme.palette.text.secondary,\n lineHeight: '16px',\n marginTop: '4px'\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';\nimport i18n from 'ui-i18n';\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 noData = !hasFillRate && !isLoading;\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, {[styles.clickableItem]: !hasChildren, [styles.noData]: noData})}\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 {noData && !hasChildren && (\n <div className={styles.noDataLabel}>{i18n.text('No data')}</div>\n )}\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 {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 classnames from 'classnames';\nimport {assoc, equals, isEmpty, pathOr} from 'ramda';\nimport React, {useContext, useEffect, useMemo, useRef, useState} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {FixedSizeList as List} from 'react-window';\n\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS, RequestStates} from '@reltio/components';\nimport {TEntityType} from '@reltio/mdm-sdk';\n\nimport {useChartsDataContext} from '../../contexts/ChartsDataProvider';\nimport {DVFContext} from '../../contexts/DVFContext';\nimport {useAttrTypeDetails} from '../../hooks/useAttrTypeDetails';\nimport {useFillRateRequest} from '../../hooks/useFillRateRequest';\nimport {formatFillRateData} from '../../services/fillRate';\nimport {AttributeItemType, DetailedAttributeType} from '../../types/DetailedAttributeType';\nimport {EmptyStateVariants} from '../../types/EmptyStateVariants';\nimport {FilterOption} from '../../types/FilterOption';\nimport {\n noDataFilterOptions,\n filterItemsByDetails,\n filterItemsByEmptiness,\n getAtrributeFieldNames,\n getDetailedAttrTypeByFieldName,\n getDetailsOptions,\n getNoDataOptions,\n getFillRateByAttributeType,\n getFirstSimpleDetailedAttrType,\n getIndexByFieldName,\n rejectCollapsedItemsChildren\n} from './helpers';\n\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport AttributesFilters from '../AttributesFilters/AttributesFilters';\nimport DQDashboardError from '../DQDashboardError/DQDashboardError';\n\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 || noDataFilterOptions\n );\n const [selectedFieldName, setSelectedFieldName] = useState(defaultFieldName);\n const [fillRates, setFillRates] = useState({});\n const {\n chartsData: {data: chartsData}\n } = useChartsDataContext();\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];\n setFillRates((fillRates) =>\n !fillRateFromChartsData || equals(fillRateForSelectedAttribute, fillRateFromChartsData)\n ? fillRates\n : assoc(selectedFieldName, fillRateFromChartsData, fillRates)\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [chartsData?.fillRate]);\n\n const isFillRateNotLoaded = fillRatesState === RequestStates.INIT || fillRatesState === RequestStates.LOADING;\n const isLoading = isFillRateNotLoaded || dvfState === RequestStates.LOADING || dvfState === RequestStates.INIT;\n\n const isDVFLoaded = dvfState === RequestStates.LOADED || dvfState === RequestStates.ERROR;\n const isFillRateLoaded = fillRatesState === RequestStates.LOADED;\n\n const {filteredItems, filterOptions} = useMemo(() => {\n const filteredByEmptinessItems = isFillRateLoaded\n ? filterItemsByEmptiness(selectedFilterOptions, fillRates, items)\n : items;\n const detailsFilterOptions = getDetailsOptions(filteredByEmptinessItems);\n\n const filteredItems = isDVFLoaded\n ? filterItemsByDetails(selectedFilterOptions, filteredByEmptinessItems)\n : filteredByEmptinessItems;\n const noDataFilterOptions = getNoDataOptions();\n const filterOptions = [noDataFilterOptions, detailsFilterOptions];\n\n return {filteredItems, filterOptions};\n }, [items, selectedFilterOptions, fillRates, isFillRateLoaded, isDVFLoaded]);\n\n const visibleItems = useMemo(\n () => rejectCollapsedItemsChildren(filteredItems, collapsedFieldNames),\n [filteredItems, collapsedFieldNames]\n );\n const countAttrTypes = filteredItems.length;\n\n const handleAttrTypeDetailsChange = (selectedDetailedAttributeType: DetailedAttributeType) => {\n onAttributesListChange({selectedDetailedAttributeType, filterText, filterOptions: selectedFilterOptions});\n setSelectedFieldName(selectedDetailedAttributeType.fieldName);\n };\n\n const selectedDetailedAttributeType = useMemo(() => {\n const selectedDetailedAttributeType =\n getDetailedAttrTypeByFieldName(filteredItems, selectedFieldName) ||\n getFirstSimpleDetailedAttrType(filteredItems);\n return isEmpty(selectedDetailedAttributeType) || disableAttributeSelection\n ? null\n : selectedDetailedAttributeType;\n }, [filteredItems, selectedFieldName, disableAttributeSelection]);\n\n useEffect(() => {\n if (disableAttributeSelection) {\n listRef.current?.scrollTo(0);\n return;\n }\n if (filteredItems.length) {\n if (selectedDetailedAttributeType?.fieldName) setSelectedFieldName(selectedDetailedAttributeType.fieldName);\n }\n const indexOfSelectedFieldName = getIndexByFieldName(filteredItems, selectedFieldName);\n indexOfSelectedFieldName > -1\n ? listRef.current?.scrollToItem(indexOfSelectedFieldName, 'center')\n : listRef.current?.scrollTo(0);\n }, [filteredItems, selectedDetailedAttributeType]); // eslint-disable-line\n\n useEffect(() => {\n onAttributesListChange({selectedDetailedAttributeType, filterText, filterOptions: selectedFilterOptions});\n }, [filterText, selectedFilterOptions, selectedDetailedAttributeType]); // eslint-disable-line\n\n useEffect(() => {\n setSelectedFieldName((fieldName) => (disableAttributeSelection ? 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 === 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 const showNoData = !hasData && (items.length === 0 || (filteredItems.length === 0 && isDVFLoaded));\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 && !showNoData})}\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 showNoData && (\n <DQDashboardError\n height={NO_DATA_HEIGHT}\n errorData={{\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 {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 React from 'react';\n\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS} from '@reltio/components';\n\nimport {usePermissionsContext} from '../../contexts/PermissionsProvider';\nimport {EmptyStateVariants} from '../../types/EmptyStateVariants';\n\nimport DQDashboardError from '../DQDashboardError/DQDashboardError';\n\nexport const NO_DATA_HEIGHT = 359;\n\nconst DQDashboardNoContent = () => {\n const {canGetDQStatistic} = usePermissionsContext();\n const errorData = canGetDQStatistic\n ? {\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 : {\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 return <DQDashboardError height={NO_DATA_HEIGHT} errorData={errorData} variant={EmptyStateVariants.LARGE} />;\n};\n\nexport default DQDashboardNoContent;\n","import {CSSProperties} from 'react';\nimport {makeStyles} from '@material-ui/core/styles';\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(() => ({\n root: {\n width: '100%',\n height: '100%',\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 layoutRoot: {\n overflow: 'auto',\n backgroundColor: '#EEEEEE',\n height: '100%',\n flexGrow: 1,\n padding: '0 4px',\n boxSizing: 'border-box'\n }\n}));\n","import React, {useMemo, useEffect} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\n\nimport {DQDataLevel, Metadata, TEntityType} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport i18n from 'ui-i18n';\n\nimport {getMetricsFromViews, getEntityLevelViews} from '../../../services/charts';\nimport {DQDashboardPerspectiveConfig} from '../../../types/DQDashboardPerspectiveConfig';\nimport {defaultLayoutsByDataLevel} from '../../../constants/defaultConfig';\nimport {checkEntityTypeHasRDMLookup} from '../../../services/rdmTranscode';\nimport {useChartsDataContext} from '../../../contexts/ChartsDataProvider';\nimport {DataLevelContext} from '../../../contexts/DataLevelContext';\nimport {useReloadFacet} from '../../../contexts/ReloadFacetContext';\nimport {usePermissionsContext} from '../../../contexts/PermissionsProvider';\nimport {RDMLookupState} from '../../../constants/RdmLookupState';\nimport {useChartsDataRequest} from '../../../hooks/useChartsDataRequest';\n\nimport DQDashboardLayout from '../../DQDashboardLayout/DQDashboardLayout';\nimport Warning from '../../Warning/Warning';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: DQDashboardPerspectiveConfig;\n entityType?: TEntityType;\n};\n\nconst EntityLevelLayout = ({config, entityType}: Props) => {\n const styles = useStyles();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const hasRDMLookup = metadata && entityType && checkEntityTypeHasRDMLookup(metadata, entityType);\n const currentRDMLookupState = hasRDMLookup ? RDMLookupState.RDM_LOOKUP_EXIST : RDMLookupState.RDM_LOOKUP_NOT_EXIST;\n const {hasRestrictions} = usePermissionsContext();\n const layout =\n config.layoutsByDataLevel?.[DQDataLevel.ENTITY_TYPE]?.[currentRDMLookupState] ||\n defaultLayoutsByDataLevel[DQDataLevel.ENTITY_TYPE][currentRDMLookupState];\n\n const views = useMemo(\n () => (layout ? getEntityLevelViews(config.viewsByDataLevel, layout) : []),\n [config.viewsByDataLevel, layout]\n );\n const metrics = useMemo(() => getMetricsFromViews(views), [views]);\n\n const chartsData = useChartsDataRequest({\n entityType,\n dataLevel: DQDataLevel.ENTITY_TYPE,\n metrics\n });\n const {changeChartsData} = useChartsDataContext();\n useEffect(() => changeChartsData(chartsData), [chartsData]);\n useReloadFacet({\n state: chartsData.state,\n reload: chartsData.reload,\n dataLevel: DQDataLevel.ENTITY_TYPE\n });\n\n return (\n <div className={classnames(styles.root)}>\n <DataLevelContext.Provider value={DQDataLevel.ENTITY_TYPE}>\n <div className={styles.layoutRoot}>\n {hasRestrictions && (\n <Warning\n text={i18n.text(\n 'Not seeing the data you expected for this entity type? Contact your tenant admin to verify permissions.'\n )}\n />\n )}\n <DQDashboardLayout views={views} layout={layout} />\n </div>\n </DataLevelContext.Provider>\n </div>\n );\n};\n\nexport default EntityLevelLayout;\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.12)',\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';\nimport {mergeClasses} from '@reltio/components';\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 = ({\n options,\n value,\n onChange,\n dataReltioId,\n dataReltioOptionId,\n classes: classesProps = {},\n ...selectProps\n}: 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 classes = mergeClasses(classesProps, {\n outlined: styles.select,\n icon: styles.arrowIcon\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={classes}\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","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: \"256\",\n height: \"256\",\n viewBox: \"0 0 256 256\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"g\", null, React.createElement(\"g\", null, React.createElement(\"circle\", {\n cx: \"128\",\n cy: \"128\",\n r: \"128\",\n fill: \"#0072CE\",\n fillOpacity: \".03\"\n}), React.createElement(\"mask\", {\n id: \"svg1824010396a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"0\",\n y: \"0\",\n width: \"256\",\n height: \"256\"\n}, React.createElement(\"circle\", {\n cx: \"128\",\n cy: \"128\",\n r: \"128\",\n fill: \"#fff\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg1824010396a)\"\n}, React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M-16 9h256v247H-16V9z\",\n fill: \"url(#paint0_linear_2978_41880)\"\n}), React.createElement(\"g\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n}, React.createElement(\"path\", {\n d: \"M40.755 44.17C40.755 38.002 45.76 33 51.92 33h251.675c6.167 0 11.166 5.001 11.166 11.17v160.596H40.755V44.171z\",\n fill: \"#5E7282\"\n}), React.createElement(\"path\", {\n d: \"M50.371 43.106h255.685V195.71H50.371V43.106z\",\n fill: \"url(#paint1_linear_2978_41880)\"\n}), React.createElement(\"path\", {\n d: \"M15.545 208.914c2.321.469 4.723.716 7.183.716H338.75c.22 0 .439-.002.658-.006-7.061 8.445-17.67 13.816-29.524 13.816H45.655c-12.111 0-22.916-5.597-29.968-14.349l-.142-.177z\",\n fill: \"#BDCBD8\"\n}), React.createElement(\"path\", {\n d: \"M339.015 204.883v4.966H15v-4.966h324.015z\",\n fill: \"#D4DCDF\"\n}), React.createElement(\"path\", {\n d: \"M201.107 213.991h-45.221a11.176 11.176 0 01-11.046-9.449h67.314a11.172 11.172 0 01-11.047 9.449z\",\n fill: \"url(#paint2_linear_2978_41880)\"\n})), React.createElement(\"g\", {\n filter: \"url(#filter0_d_2978_41880)\"\n}, React.createElement(\"rect\", {\n x: \"81.703\",\n y: \"99\",\n width: \"170\",\n height: \"26\",\n rx: \"8\",\n fill: \"#D1E6FF\"\n}), React.createElement(\"rect\", {\n x: \"84.703\",\n y: \"102\",\n width: \"164\",\n height: \"20\",\n rx: \"5\",\n stroke: \"#fff\",\n strokeWidth: \"6\"\n})), React.createElement(\"g\", {\n filter: \"url(#filter1_d_2978_41880)\"\n}, React.createElement(\"mask\", {\n id: \"svg1824010396b\",\n fill: \"#fff\"\n}, React.createElement(\"rect\", {\n x: \"81\",\n y: \"105\",\n width: \"108\",\n height: \"14\",\n rx: \"2\"\n})), React.createElement(\"rect\", {\n x: \"81\",\n y: \"105\",\n width: \"108\",\n height: \"14\",\n rx: \"2\",\n fill: \"#61A3F1\"\n}), React.createElement(\"rect\", {\n x: \"81\",\n y: \"105\",\n width: \"108\",\n height: \"14\",\n rx: \"2\",\n stroke: \"#4A90E2\",\n strokeWidth: \"8\",\n mask: \"url(#svg1824010396b)\"\n})), React.createElement(\"g\", null, React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M122.703 74a3 3 0 013-3h81.625a3 3 0 010 6h-81.625a3 3 0 01-3-3z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M146.703 86a3 3 0 013-3h34a3 3 0 110 6h-34a3 3 0 01-3-3zM136.703 139a3 3 0 013-3h54a3 3 0 110 6h-54a3 3 0 01-3-3z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".1\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M112.703 151a3 3 0 013-3h103a3 3 0 110 6h-103a3 3 0 01-3-3zM124.703 163a3 3 0 013-3h79a3 3 0 110 6h-79a3 3 0 01-3-3z\",\n fill: \"#979797\"\n}), React.createElement(\"g\", {\n filter: \"url(#filter2_ddd_2978_41880)\"\n}, React.createElement(\"g\", null, React.createElement(\"g\", null, React.createElement(\"path\", {\n fill: \"#A0C1D7\",\n d: \"M70.703 64h11v8h-11z\"\n}), React.createElement(\"rect\", {\n x: \"62\",\n y: \"59\",\n width: \"28\",\n height: \"8\",\n rx: \"1\",\n fill: \"#BDD4E3\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M38.23 160.5c20.704 20.703 54.27 20.703 74.973 0 20.703-20.703 20.703-54.27 0-74.973-20.703-20.703-54.27-20.703-74.973 0-20.703 20.703-20.703 54.27 0 74.973z\",\n fill: \"#BDD4E3\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M113.427 85.988c20.463 20.652 20.404 53.981-.175 74.561-20.432 20.431-53.432 20.635-74.115.613l-.446-.439 74.736-74.735z\",\n fill: \"#A0C1D7\"\n}), React.createElement(\"path\", {\n opacity: \".144\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M75.037 175.385c29.402 0 53.236-23.834 53.236-53.236a54.67 54.67 0 00-.106-3.399L100.45 91.037l-55.142 58.396 25.814 25.811c1.293.094 2.598.141 3.915.141z\",\n fill: \"url(#paint3_linear_2978_41880)\"\n}), React.createElement(\"circle\", {\n cx: \"75.94\",\n cy: \"123.237\",\n r: \"44.723\",\n fill: \"#91B0C2\"\n}), React.createElement(\"g\", null, React.createElement(\"g\", {\n filter: \"url(#filter3_d_2978_41880)\"\n}, React.createElement(\"circle\", {\n r: \"42.793\",\n transform: \"matrix(-1 0 0 1 75.94 123.237)\",\n fill: \"#F7F4FF\"\n}))), React.createElement(\"path\", {\n opacity: \".05\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M105.043 175.309l-10.298.861-20.313-20.152.863-2.292-9.973-9.982 18.679-6.882h-4.308l-8.943-8.951 4.545-10.532L94.35 90.74l37.888 37.162c-.343 20.088-11.146 37.627-27.195 47.407z\",\n fill: \"url(#paint4_linear_2978_41880)\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M67.703 123a8 8 0 0112.362-6.707l14.477-25.145A36.828 36.828 0 0075.703 86c-20.434 0-37 16.565-37 37h29z\",\n fill: \"url(#paint5_angular_2978_41880)\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M94.297 90.6l.24.138s-12.45 35.125-12.811 35.752a6.92 6.92 0 01-11.985-6.92c.361-.626 24.556-28.97 24.556-28.97z\",\n fill: \"#323232\"\n}), React.createElement(\"circle\", {\n cx: \"75.94\",\n cy: \"123.237\",\n r: \"2.896\",\n fill: \"#EEEBF6\"\n}), React.createElement(\"circle\", {\n cx: \"96.211\",\n cy: \"148.655\",\n r: \"2.574\",\n fill: \"#A0C3D7\"\n}), React.createElement(\"circle\", {\n cx: \"107.15\",\n cy: \"131.924\",\n r: \"2.574\",\n fill: \"#A0C3D7\"\n}), React.createElement(\"rect\", {\n x: \"62.427\",\n y: \"135.592\",\n width: \"27.027\",\n height: \"10.039\",\n rx: \"3\",\n fill: \"#A0C3D7\"\n}), React.createElement(\"path\", {\n opacity: \".05\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M85.914 170.534H75.112l-21.605-21.472 2.126-2.775v-1.01L42.8 132.523l2.853-2.529 40.261 40.54z\",\n fill: \"url(#paint6_linear_2978_41880)\"\n}), React.createElement(\"path\", {\n opacity: \".02\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M96.362 136.555h-4.988l-38.126-38.01 2.853-2.53 40.261 40.54z\",\n fill: \"url(#paint7_linear_2978_41880)\"\n}), React.createElement(\"path\", {\n opacity: \".02\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M116.746 129.006h-4.988L73.632 90.995l2.853-2.53 40.261 40.541z\",\n fill: \"url(#paint8_linear_2978_41880)\"\n}), React.createElement(\"path\", {\n opacity: \".02\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M85.793 152.41h-4.988l-38.126-38.011 2.852-2.53 40.262 40.541z\",\n fill: \"url(#paint9_linear_2978_41880)\"\n}), React.createElement(\"circle\", {\n cx: \"75.618\",\n cy: \"155.734\",\n r: \"2.574\",\n fill: \"#A0C3D7\"\n}), React.createElement(\"circle\", {\n cx: \"55.026\",\n cy: \"148.655\",\n r: \"2.574\",\n fill: \"#A0C3D7\"\n}), React.createElement(\"circle\", {\n cx: \"44.73\",\n cy: \"131.924\",\n r: \"2.574\",\n fill: \"#A0C3D7\"\n}), React.createElement(\"g\", {\n fill: \"#A0C3D7\"\n}, React.createElement(\"circle\", {\n r: \"2.574\",\n transform: \"matrix(1 0 0 -1 96.21 97.363)\"\n}), React.createElement(\"circle\", {\n r: \"2.574\",\n transform: \"matrix(1 0 0 -1 107.149 114.094)\"\n}), React.createElement(\"circle\", {\n r: \"2.574\",\n transform: \"matrix(1 0 0 -1 75.618 90.284)\"\n}), React.createElement(\"circle\", {\n r: \"2.574\",\n transform: \"matrix(1 0 0 -1 55.026 97.363)\"\n}), React.createElement(\"circle\", {\n r: \"2.574\",\n transform: \"matrix(1 0 0 -1 44.73 114.094)\"\n}))))))))), React.createElement(\"defs\", null, React.createElement(\"linearGradient\", {\n id: \"paint0_linear_2978_41880\",\n x1: \"-16\",\n y1: \"9\",\n x2: \"-16\",\n y2: \"256\",\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_2978_41880\",\n x1: \"178.214\",\n y1: \"43.106\",\n x2: \"178.214\",\n y2: \"195.709\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopColor: \"#F2F9FB\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#fff\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint2_linear_2978_41880\",\n x1: \"178.497\",\n y1: \"204.542\",\n x2: \"178.497\",\n y2: \"213.991\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopColor: \"#90AABF\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#869DAE\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint3_linear_2978_41880\",\n x1: \"154.275\",\n y1: \"146.574\",\n x2: \"96.683\",\n y2: \"91.352\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint4_linear_2978_41880\",\n x1: \"60.762\",\n y1: \"143.327\",\n x2: \"114.747\",\n y2: \"176.019\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".87\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopOpacity: \".01\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint6_linear_2978_41880\",\n x1: \"90.287\",\n y1: \"154.267\",\n x2: \"68.53\",\n y2: \"131.301\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint7_linear_2978_41880\",\n x1: \"100.735\",\n y1: \"120.288\",\n x2: \"78.978\",\n y2: \"97.322\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint8_linear_2978_41880\",\n x1: \"121.119\",\n y1: \"112.739\",\n x2: \"99.362\",\n y2: \"89.773\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint9_linear_2978_41880\",\n x1: \"90.166\",\n y1: \"136.143\",\n x2: \"68.409\",\n y2: \"113.177\",\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_2978_41880\",\n x: \"77.703\",\n y: \"96\",\n width: \"178\",\n height: \"34\",\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: \"1\"\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.06 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_2978_41880\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_2978_41880\",\n result: \"shape\"\n})), React.createElement(\"filter\", {\n id: \"filter1_d_2978_41880\",\n x: \"77\",\n y: \"102\",\n width: \"116\",\n height: \"22\",\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: \"1\"\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.06 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_2978_41880\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_2978_41880\",\n result: \"shape\"\n})), React.createElement(\"filter\", {\n id: \"filter2_ddd_2978_41880\",\n x: \"-13.297\",\n y: \"28\",\n width: \"181.534\",\n height: \"189.17\",\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(\"feMorphology\", {\n radius: \"4\",\n operator: \"erode\",\n in: \"SourceAlpha\",\n result: \"effect1_dropShadow_2978_41880\"\n}), React.createElement(\"feOffset\", {\n dy: \"7\"\n}), React.createElement(\"feGaussianBlur\", {\n stdDeviation: \"4\"\n}), React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0.600156 0 0 0 0 0.745337 0 0 0 0 0.8625 0 0 0 0.1 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_2978_41880\"\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(\"feMorphology\", {\n radius: \"4\",\n operator: \"dilate\",\n in: \"SourceAlpha\",\n result: \"effect2_dropShadow_2978_41880\"\n}), React.createElement(\"feOffset\", {\n dy: \"5\"\n}), React.createElement(\"feGaussianBlur\", {\n stdDeviation: \"16\"\n}), React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0.447059 0 0 0 0 0.807843 0 0 0 0.06 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"effect1_dropShadow_2978_41880\",\n result: \"effect2_dropShadow_2978_41880\"\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(\"feMorphology\", {\n radius: \"2\",\n operator: \"dilate\",\n in: \"SourceAlpha\",\n result: \"effect3_dropShadow_2978_41880\"\n}), React.createElement(\"feOffset\", {\n dy: \"12\"\n}), React.createElement(\"feGaussianBlur\", {\n stdDeviation: \"8.5\"\n}), React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0.447059 0 0 0 0 0.807843 0 0 0 0.06 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"effect2_dropShadow_2978_41880\",\n result: \"effect3_dropShadow_2978_41880\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect3_dropShadow_2978_41880\",\n result: \"shape\"\n})), React.createElement(\"filter\", {\n id: \"filter3_d_2978_41880\",\n x: \"29.148\",\n y: \"78.444\",\n width: \"93.585\",\n height: \"93.585\",\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.1 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_2978_41880\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_2978_41880\",\n result: \"shape\"\n})), React.createElement(\"radialGradient\", {\n id: \"paint5_angular_2978_41880\",\n cx: \"0\",\n cy: \"0\",\n r: \"1\",\n gradientUnits: \"userSpaceOnUse\",\n gradientTransform: \"rotate(-56.035 152.55 -12.515) scale(43.4058 65.5062)\"\n}, React.createElement(\"stop\", {\n stopColor: \"#CFE8FF\"\n}), React.createElement(\"stop\", {\n offset: \".599\",\n stopColor: \"#D1F2F9\",\n stopOpacity: \"0\"\n})))));","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {EmptyState} from '@reltio/components';\nimport LoadingIcon from './icons/Loading.svg';\n\nconst LoadingComponent = () => {\n return (\n <EmptyState\n LogoRenderer={LoadingIcon}\n text={i18n.text('Loading...')}\n secondaryText={i18n.text('Please give us a moment while we load the page')}\n />\n );\n};\n\nexport default LoadingComponent;\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);\n return (\n date.isValid() && (\n <div className={styles.root}>\n <span className={styles.updateTime}>{`${i18n.text('Last updated')} ${date.fromNow()}`}</span>\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Refresh')}\n icon={RefreshIcon}\n onClick={handleRefreshAll}\n size=\"S\"\n />\n </div>\n )\n );\n};\n\nexport default UpdateTimeHeader;\n","import {equals, pick} from 'ramda';\nimport React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport moment from 'moment';\n\nimport i18n from 'ui-i18n';\nimport {DateRangeEditor, RequestStates, useSavedState} from '@reltio/components';\nimport {getEntityType, DQDataLevel, DateRangeValue, getDateRangeOptions} from '@reltio/mdm-sdk';\n\nimport {useEntityAndAttributeType} from '../../contexts/EntityAndAttributeTypeProvider';\nimport {DVFContext} from '../../contexts/DVFContext';\nimport {useUpdateTime} from '../../contexts/ReloadFacetContext';\nimport {ChartsDataProvider} from '../../contexts/ChartsDataProvider';\nimport {usePeriod, useZoom} from '../../contexts/DateRangesProvider';\nimport {usePermissionsContext} from '../../contexts/PermissionsProvider';\nimport {useDVF} from '../../hooks/useDVF';\nimport {useDvfConfigLink} from '../../hooks/useDvfConfigLink';\nimport {useEntityCount} from '../../hooks/useEntityCount';\nimport {useEntityTypes} from '../../hooks/useEntityTypes';\nimport {useDebounceFunction} from '../../hooks/useDebounceFunction';\nimport {DetailedAttributeType} from '../../types/DetailedAttributeType';\nimport {DQDashboardPerspectiveConfig} from '../../types/DQDashboardPerspectiveConfig';\nimport {DQDateRangeValue} from '../../types/DQDateRangeValue';\nimport {DQDashboardSavedState} from '../../types/DQDashboardSavedState';\nimport {FilterOption} from '../../types/FilterOption';\nimport {ATTRIBUTE_LIST_WIDTH, ENTITY_LEVEL_BAR_WIDTH} from './constants';\nimport {getTimeRangeDates, getPeriodValue} from '../../services/mlDq';\nimport {dateRangeValues, getFirstEntityTypeUri, getValuesDateRange, sortEntityTypesWithCount} from './helpers';\n\nimport AttributeLevelLayout from './AttributeLevelLayout';\nimport DataLevelBreadcrumbs from '../DataLevelBreadcrumbs/DataLevelBreadcrumbs';\nimport ContentSlider from '../ContentSlider/ContentSlider';\nimport DataLevelSwitcher from './DataLevelSwitcher/DataLevelSwitcher';\nimport DQDashboardAttributesList from '../DQDashboardAttributesList/DQDashboardAttributesList';\nimport DQDashboardHeader from '../DQDashboardHeader/DQDashboardHeader';\nimport DQDashboardNoContent from '../DQDashboardNoContent/DQDashboardNoContent';\nimport EntityLevelLayout from './EntityLevelLayout/EntityLevelLayout';\nimport EntityTypeSelector from '../EntityTypeSelector/EntityTypeSelector';\nimport LoadingComponent from '../LoadingComponent/LoadingComponent';\nimport UpdateTimeHeader from '../UpdateTimeHeader/UpdateTimeHeader';\n\nimport {useStyles} from './styles';\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 const entityTypes = useEntityTypes();\n const {setEntityType, entityType, detailedAttributeType, setDetailedAttributeType} = useEntityAndAttributeType();\n const [entityTypeUri, setEntityTypeUri] = useState<string>('');\n\n const {getEntityCount, state: entityCountRequestState} = useEntityCount(entityTypes);\n const {canGetDQStatistic, permissionsLoadingState, isTimeSeriesAvailable} = usePermissionsContext();\n\n const [dataLevel, setDataLevel] = useState<DQDataLevel>();\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\n const dqDashboardSavedState = useRef<DQDashboardSavedState>();\n const {isLoaded: isSavedStateLoaded, savedState} = useSavedState<DQDashboardSavedState>(getSavedState);\n const {zoom, changeZoom} = useZoom();\n const {period, changePeriod} = usePeriod();\n const getNewSavedState = (state: DQDashboardSavedState): DQDashboardSavedState => ({\n fieldName: null,\n zoom: zoom || null,\n entityTypeUri,\n period,\n ...dqDashboardSavedState?.current,\n ...state\n });\n const isPermissionsRequestFinished =\n permissionsLoadingState === RequestStates.ERROR || permissionsLoadingState === RequestStates.LOADED;\n\n useEffect(() => {\n const selectedEntityType = entityTypes && entityTypeUri ? getEntityType({entityTypes}, entityTypeUri) : null;\n setEntityType(selectedEntityType);\n }, [entityTypeUri]);\n\n useEffect(() => {\n if (isSavedStateLoaded && isPermissionsRequestFinished) {\n dqDashboardSavedState.current = savedState;\n const isEntityTypeExists = !!getEntityType({entityTypes}, savedState.entityTypeUri);\n setEntityTypeUri(\n isEntityTypeExists ? savedState.entityTypeUri : getFirstEntityTypeUri(sortedEntityTypesWithCount)\n );\n\n setDataLevel((savedState.fieldName && savedState.dataLevel) || DQDataLevel.ENTITY_TYPE);\n const defaultPeriod = isTimeSeriesAvailable ? DateRangeValue.LAST_WEEK : DateRangeValue.LAST_DAY;\n const newPeriod =\n isTimeSeriesAvailable &&\n (dateRangeValues.includes(savedState?.period as DQDateRangeValue) || Array.isArray(savedState?.period))\n ? savedState.period\n : defaultPeriod;\n changePeriod(newPeriod);\n if (savedState.zoom) {\n changeZoom(savedState.zoom);\n }\n }\n }, [isSavedStateLoaded, isPermissionsRequestFinished]); // eslint-disable-line\n\n useEffect(() => {\n if (dataLevel === DQDataLevel.ENTITY_TYPE) {\n saveStateHandler({\n fieldName: null,\n dataLevel: DQDataLevel.ENTITY_TYPE,\n entityTypeUri\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dataLevel, entityTypeUri]);\n\n useEffect(() => {\n if (isSavedStateLoaded && dataLevel === DQDataLevel.ATTRIBUTE_TYPE) {\n const {startDate, endDate} = getTimeRangeDates(period);\n saveStateHandler({\n period: [new Date(startDate), new Date(endDate)],\n zoom\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [zoom]);\n\n useEffect(() => {\n if (isSavedStateLoaded && dataLevel === DQDataLevel.ATTRIBUTE_TYPE) saveStateHandler({period});\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [period]);\n const saveStateDebounce = useDebounceFunction<DQDashboardSavedState>(saveState);\n const saveStateHandler = (state: DQDashboardSavedState) => {\n const newSavedState = getNewSavedState(state);\n saveStateDebounce(newSavedState, dqDashboardSavedState.current);\n dqDashboardSavedState.current = newSavedState;\n };\n const sortedEntityTypesWithCount = useMemo(\n () => sortEntityTypesWithCount({entityTypes, getEntityCount}),\n [entityTypes, getEntityCount]\n );\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 setDataLevel(DQDataLevel.ENTITY_TYPE);\n }\n },\n [entityType?.uri] // eslint-disable-line\n );\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 if (\n fieldName ||\n !equals({filterText, filterOptions}, pick([filterText, filterOptions], dqDashboardSavedState.current))\n )\n saveStateHandler({\n fieldName: fieldName || null,\n filterOptions,\n filterText,\n dataLevel: fieldName ? DQDataLevel.ATTRIBUTE_TYPE : dataLevel\n });\n\n fieldName && setDataLevel(DQDataLevel.ATTRIBUTE_TYPE);\n\n if (!equals(detailedAttributeType, selectedDetailedAttributeType)) {\n resetUpdateTimes(DQDataLevel.ATTRIBUTE_TYPE);\n selectedDetailedAttributeType && setDetailedAttributeType(selectedDetailedAttributeType);\n }\n };\n\n const showEntityLevel = () => {\n setDetailedAttributeType(null);\n setDataLevel(DQDataLevel.ENTITY_TYPE);\n resetUpdateTimes(DQDataLevel.ENTITY_TYPE);\n };\n\n const showDashboard =\n entityCountRequestState !== RequestStates.LOADING && isSavedStateLoaded && isPermissionsRequestFinished;\n const showContent = entityType && canGetDQStatistic && !!getEntityCount(entityTypeUri);\n const showTimeRange = dataLevel === DQDataLevel.ATTRIBUTE_TYPE && isTimeSeriesAvailable;\n const dateRangeEditorValue = getPeriodValue(zoom, period);\n return showDashboard ? (\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 dataLevel={dataLevel} onChange={setDataLevel} />\n <div className={styles.headerRightSide}>\n {showTimeRange && (\n <DateRangeEditor\n values={dateRangeEditorValue}\n options={getDateRangeOptions(dateRangeValues)}\n getValuesDateRange={getValuesDateRange}\n onChange={changePeriod}\n className={styles.periodSelector}\n TextFieldProps={{\n InputProps: {\n classes: {input: styles.input, root: styles.inputRoot},\n disableUnderline: true\n }\n }}\n MenuProps={{classes: {paper: styles.paper}}}\n classes={{dropdownIndicator: styles.dropdownIndicator}}\n DateRangePickerProps={{\n maxDate: moment().startOf('day').toDate()\n }}\n />\n )}\n <UpdateTimeHeader dataLevel={dataLevel} />\n </div>\n </div>\n )}\n </DQDashboardHeader>\n {showContent ? (\n <div className={styles.content}>\n <DVFContext.Provider value={dvfContext}>\n <ChartsDataProvider>\n <ContentSlider\n page={dataLevel === DQDataLevel.ENTITY_TYPE ? 0 : 1}\n pages={[\n [{index: 0}, {index: 2, width: ATTRIBUTE_LIST_WIDTH + 12}],\n [\n {index: 1, width: ENTITY_LEVEL_BAR_WIDTH},\n {index: 2, width: ATTRIBUTE_LIST_WIDTH},\n {index: 3}\n ]\n ]}\n >\n <ChartsDataProvider>\n <EntityLevelLayout config={config} entityType={entityType} />\n </ChartsDataProvider>\n <DataLevelSwitcher showEntityLevel={showEntityLevel} entityType={entityType} />\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 className={styles.attributeLevelWrapper}>\n {detailedAttributeType && (\n <AttributeLevelLayout config={config} entityType={entityType} />\n )}\n </div>\n </ContentSlider>\n </ChartsDataProvider>\n </DVFContext.Provider>\n </div>\n ) : (\n entityType && <DQDashboardNoContent />\n )}\n </div>\n ) : (\n <LoadingComponent />\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 // eslint-disable-next-line react-hooks/exhaustive-deps\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[]>([]);\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 // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dvfPath, tenant, entityTypeUri, env]);\n\n useEffect(() => {\n loadDVFs();\n }, [loadDVFs]);\n\n const result = useMemo(\n () => ({data: dvfs, state: requestState, reload: loadDVFs, errorCode}),\n [dvfs, requestState, loadDVFs, errorCode]\n );\n return result;\n};\n","import {useCallback, useRef} from 'react';\nimport {equals} from 'ramda';\n\nconst DEBOUNCE_TIMEOUT = 200;\n\nexport const useDebounceFunction = <T extends unknown>(fn: (params: T) => void) => {\n const timer = useRef<ReturnType<typeof setTimeout>>();\n const lastParams = useRef<T>(null);\n\n return useCallback(\n (params: T, startParams: T) => {\n timer?.current && clearTimeout(timer?.current);\n if (!lastParams?.current) lastParams.current = startParams;\n if (!equals(params, lastParams?.current)) {\n timer.current = setTimeout(() => {\n lastParams.current = params;\n fn(params);\n }, DEBOUNCE_TIMEOUT);\n }\n },\n [fn]\n );\n};\n","export const NO_DATA_HEIGHT = 359;\nexport const ATTRIBUTE_LIST_WIDTH = 360;\nexport const ENTITY_LEVEL_BAR_WIDTH = 60;\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';\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport MomentUtils from '@date-io/moment';\n\nimport {promisifyCallback} from '@reltio/mdm-sdk';\n\nimport {DQDashboardPerspectiveConfig} from '../../types/DQDashboardPerspectiveConfig';\nimport {DQDashboardSavedState} from '../../types/DQDashboardSavedState';\nimport {ReloadFacetProvider} from '../../contexts/ReloadFacetContext';\nimport {DateRangesProvider} from '../../contexts/DateRangesProvider';\nimport {EntityAndAttributeTypeProvider} from '../../contexts/EntityAndAttributeTypeProvider';\nimport {PermissionsProvider} from '../../contexts/PermissionsProvider';\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 <MuiPickersUtilsProvider utils={MomentUtils}>\n <MuiThemeProvider theme={dqDashboardTheme}>\n <StylesProvider generateClassName={generateClassName}>\n <ReloadFacetProvider>\n <EntityAndAttributeTypeProvider>\n <PermissionsProvider config={config}>\n <DateRangesProvider>\n <DQDashboardPerspectiveView\n config={config}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n </DateRangesProvider>\n </PermissionsProvider>\n </EntityAndAttributeTypeProvider>\n </ReloadFacetProvider>\n </StylesProvider>\n </MuiThemeProvider>\n </MuiPickersUtilsProvider>\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","i18n","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","root_small","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","transition","willChange","backgroundImage","bottom","right","svg2Url","backgroundRepeat","backgroundOrigin","cursor","visibility","gridFullscreen","overflowY","isResizing","pointerEvents","ReltioGridLayout","views","layoutOptions","onLayoutChanged","draggableHandle","LayoutItem","onRemove","onDrop","droppingItem","isDroppable","useRef","resizingItemId","setResizingItemId","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","onResizeStart","onResizeStop","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","enrichDataWithPercents","data","percents","countPercents","pluck","percent","Component","WithPercents","dataWithPercents","clickable","useClickableStyle","undefined","useSavedState","getSavedState","isLoaded","setIsLoaded","savedState","setSavedState","then","catch","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","PeriodContext","ZoomContext","DateRangesProvider","zoom","setZoom","period","setPeriod","changePeriod","newPeriod","changeZoom","validatedZoom","getDateRange","usePeriod","useZoom","EntityAndAttributeTypeContext","EntityAndAttributeTypeProvider","detailedAttributeType","setDetailedAttributeType","entityType","setEntityType","useEntityAndAttributeType","DQDateRangeValue","omit","DateRangeValue","getDQDateRangeByValue","currentDate","moment","subtract","valueOf","getDateRangeByValue","getFirstEntityTypeUri","path","dateRangeValues","getValuesDateRange","PermissionsContext","PermissionsProvider","config","permissions","tenantPermissions","requestState","permissionsLoadingState","setPermissions","setRequestState","safePromise","useSafePromise","apiPath","tenant","onRequestFinished","loadPermissions","getTenantPermissions","usePermissionsRequest","entityTypeUri","roles","canGetDQStatistic","noMetaDataRestrictions","canReadWithoutFilter","includes","getPermissionsForRoles","getPermissionByUri","configurationLevelPermission","entityLevelPermission","isEmpty","some","checkPermissions","hasRestrictions","showTimeSeries","isTimeSeriesAvailable","usePermissionsContext","defaultTheme","tooltip","DVFContext","ChartsDataContext","ChartsDataProvider","chartsData","setChartsData","changeChartsData","useChartsDataContext","useEntityCount","entityTypes","entitiesCountMap","setEntitiesCountMap","getEntityCount","buildFilterQueryString","fieldName","FilterOptions","getFacets","query","generateValuableQueryString","activeness","body","pageSize","pageNo","getLastUriPart","getTimeSeriesData","getData","group","_max_date","label","sortBy","getTimeRangeDates","dateFormat","startTimestamp","endTimeStamp","getDateRangeByDatePeriod","startDate","format","endDate","checkIsTimeSeries","timeSeries","getChartTooltipDateTitle","hasData","date","hasTimeRange","enrichTimeSeriesDataWithTodayData","todayChartData","metric","timeSeriesData","today","reject","append","DQMetric","reduce","todayData","currentData","todayChartDataWithPercent","todayOption","FillRateState","UniquenessAnalysisState","getStateFromMetric","todayDataForTimeSeries","dataItem","getTodayData","DataLevelContext","ChartDataType","CustomViewType","ViewType","RDMLookupState","defaultViewsByDataLevel","DQDataLevel","FILL_RATE","UNIQUENESS","SUMMARY","DATA_VALIDATION","FREQUENCY","LENGTH_STATISTIC","PATTERN","CROSSWALK_ANALYSIS","VALUE_DISTRIBUTION","UNSUPPORTED","CONSOLIDATION_RATE","RDM_TRANSCODE","defaultLayoutsByDataLevel","default","SSN","BOOLEAN","DATE","INTEGER","FLOAT","timeRange","boolean","integer","float","RDM_LOOKUP_EXIST","RDM_LOOKUP_NOT_EXIST","getAdvancedSearchFilter","filters","attributes","index","operator","SearchOperator","localizeChartValues","chartData","localizedValue","getPercentLabel","isNil","isEmptyData","facetFiltersToSearchState","advanced","when","isDateType","evolve","mapFilterValue","parseTimestamp","searchOptions","searchByOv","ovOnly","version","getSearchState","getFilter","getChartDataTypeByAttributeType","DataTypes","STRING","UNKNOWN","getValidViews","allViews","supportedViews","viewType","viewIndex","findIndex","concat","getMetricsFromViews","uniq","getBarWidthStyle","enrichChartDataWithSourceLabel","max","getEntityTypeSummarySearchState","transformTimeSeriesChartData","toFixed","getChartState","states","all","equals","any","isContainActiveVF","dvf","attributeTypeUri","allPass","StatusVF","isFloatingType","getAttributeLabel","getLabel","name","AttrTypeDetailsType","filterAttributeByDetails","filterOptions","detail","details","filterAttributeTreeByDetails","length","child","filterAttributeByNotEmpty","fillRates","fillRate","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","parents","level","chain","childrenItems","isReference","attributeItem","attributeUriToSearchUri","isReferenceChild","useChartsDataRequest","metrics","attributeFieldName","loadChartsData","async","getActiveProfiles","ActivityFilters","getInactiveProfiles","getDqChartsData","getDQChartsData","Promise","activeProfiles","inactiveProfiles","dqChartsData","sourceSystems","keys","summary","pathOr","ifElse","has","refreshAction","paddingRight","infoDataLabel","chartDataLabel","tooltipWrapper","row","DataRenderer","ChartDataRenderer","fillRateSquare","marginRight","verticalAlign","getValueLabel","getColor","tooltipData","infoIcon","infoTooltipTitle","hasInfoIcon","hasChildren","BasicViewHeader","SmallIconButton","InfoIcon","size","tooltipTitle","dataReltioId","FillRateChartColors","getFillRateColorByState","getChartItemColor","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","EmptyStateVariants","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","LAST_WEEK","setTimeSeriesData","mlDqPath","oldRequestDependencies","memoizedRequestDependencies","toString","getMlDqData","attribute","needRefresh","currentRange","last","head","currentStartTime","currentEndTime","startTime","endTime","needRefreshData","current","getValuesFromChartData","flatten","roundPercent","round","XAxisTickFormatter","getZoomedData","dateRange","indexStart","indexEnd","slice","_extends","target","arguments","source","prototype","hasOwnProperty","call","apply","infoPanel","gap","info","dynamicInfo","dynamicInfoPositive","dynamicInfoNegative","dynamicIcon","dynamicPercent","isPositiveDynamic","abs","infoLabel","percentKey","dataKey","zoomedData","lastChartData","filteredData","Infinity","prevPercent","lastPercent","getDynamicPercent","lastDateOfPeriod","dateLabel","isSame","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","chartDataWithRange","sort","ascend","startRange","endRange","isLastItem","addIntervalBrackets","getLengthChartData","getMonthDistributionData","getDayOfWeekDistributionData","getDayOfMonthDistributionData","getDayOfweekDistributionSearchState","dayOfWeek","getMonthDistributionSearchState","month","getDayOfMonthDistributionSearchState","dayOfMonth","getLengthStatisticsSearchState","getRangeRawFilterSearchState","getCrosswalkAnalysisSearchState","getValueDistributionFilterForDate","timestampStart","timestampEnd","getValueDistributionFilterForNumber","getValueDistributionFilterForFloat","lastItem","isSingleValue","getValueDistributionSearchState","cond","getConsolidationRateFilter","getConsolidationRateSearchState","getBarOpacity","selectedBar","tickFormatter","toUpperCase","isPercent","minLineChartData","getMinValueFromLineChartData","maxLineChartData","getMaxValueFromLineChartData","minYAxisValue","maxYAxisValue","updatedMinData","updatedMaxData","getUpdatedEdgeData","xAxis","tick","tickMargin","angle","textAnchor","tickLine","interval","yAxis","tickCount","domain","cartesianGrid","strokeDasharray","strokeOpacity","line","dot","activeDot","referenceLine","isFront","labelForY","getTooltip","getTooltipProp","yAxisLabel","getLineChartSettings","tooltipProps","selectedDots","setSelectedDots","zoomAreaStart","setZoomAreaStart","zoomAreaEnd","setZoomAreaEnd","emptyAreas","getDateByIndex","every","isNaN","isLineChartDataEmpty","areas","lastArea","end","start","extendArea","getEmptyAreas","hasZoomArea","onMouseMove","mouseEvent","isTooltipActive","activePayload","activeLabel","onMouseLeave","onMouseDown","onMouseUp","either","emptyArea","filterNull","monoFontCell","fontFamily","timeSeriesContent","tooltipKeys","active","currentPayload","mlDqData","mlDqState","mlDqReload","todayState","todayReload","reloadFunction","disabled","chipProps","isDateRangeValue","getRangeOptionLabel","Chip","InfoDataRenderer","isTimeSeries","UniquenessChartColors","getUniquenessColorByState","getUniquenessColors","formatUniquenessAnalysisData","getUniquenessData","getUniquenessChartData","uniqueness","dataMlDq","stateMlDq","reloadMlDq","dataToday","stateToday","reloadToday","loading","badQuality","AttributeTypeDetailIconSizes","NORMAL","AttributeTypeDetailIconVariant","AttributeTypeDetailIcon","detailType","paddingLeft","iconVariant","isDataLoading","isDataQualitative","checkIsDataQualitativeForSummary","LOADING","BAD_QUALITY","rootTimeRange","marginLeft","chipClasses","header","borderRight","entitySummary","attributeTypeSummary","infoTitle","infoContent","attributeTypeIconWrapper","totalLoading","summaryWrapper","HeaderInfo","AttributeTypeIconSizes","entityTypesArray","total","recordsInfo","CircularProgress","Tooltip","attributeTypesCount","getAttributeTypesTree","collectAttributes","attributesCollection","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","getValidationChartData","getFrequencyChartData","getPatternAnalisysData","getDVFAnalyticAttribtuteUri","attributeName","getValidationFilter","getFrequencyAnalysisStateForTimestamp","attributeValue","getFrequencyAnalysisFilterForDate","getFrequencyAnalysisFilter","getFrequencyAnalysisSearchState","isTimestampBasedType","getPatternAnalysisSearchState","pattern","getRowsCounterLabel","NO_DATA_FIELD","getEntityLevelColumnsOptions","functionsCount","sortable","secondLabel","getBarColor","getDvfColor","getAttributeLevelColumnsOptions","getColumnsOptions","getViolatedValidationData","titleCount","countProfiles","chartInfoPanel","VVFNoDataChartType","chartTitle","dvfConfigLink","dataSourceLabel","DVF_NOT_SUPPORTED","NotSupportedIcon","DVF_NOT_CONFIGURE","SettingsIcon","Link","href","component","underline","DATA_VALID","NiceOneIcon","PERMISSION_DENIED","useNoDataDvfType","activeDvfs","errorCode","dvfsState","chartDataState","chartState","isAttributeDataLevel","isPermissionDenied","ApiErrorCode","isDVFNotSupported","isDVFNotConfigured","isDataValid","useDvfs","onlyActive","dvfsData","currentDvfs","getDVFsForAttribute","getLabelAndMaxValue","getValueByColumnId","rowValue","handler","childrenRef","el","clientWidth","scrollWidth","RootRef","rootRef","headCell","isFirstColumn","headCellWithRange","headLabel","labelWrapper","rangeLabel","tooltipValue","useNumberCellStyles","barColor","colorBarContainer","numberContainer","number","headCellData","headIndex","formattedMaxValue","hasRange","isOverflowing","setIsOverflowing","labelElement","overflowed","DefaultHeadCellRenderer","columnsHeaders","withTableContext","columnData","cellClassName","labelRenderer","LabelRenderer","hasCustomRenderer","utils","formattedValue","ColorBar","tableContainer","cellBorder","getExtendedLabel","columnsOptions","basicTableRef","tableClasses","headData","columnOptions","resizable","headCellRenderer","HeadCellRenderer","rowCellValueRenderer","LabelCellRenderer","initialWidth","NumberCellValueRenderer","context","BasicTable","columnsData","rowsData","headRowHeight","getRowCellHeight","defaultColumnWidth","defaultColumnMinWidth","hoverStateEnabled","layoutItemContent","customComparator","contentChildren","setSortDirection","setSortField","comparator","defaultComparator","handleSort","field","toggleSortOrder","sortedData","sorting","order","onSort","TotalInfo","totalProfiles","invalidProfiles","totalInfo","dvfData","dvfErrorCode","dvfsReload","getNoDataStatus","getEntityLevelValidationChartData","noDataType","dvfUris","invalidProfilesCount","setInvalidProfilesCount","getTotals","useInvalidProfiles","dvfUri","getValidationSearchState","dataKeys","functionId","propSatisfies","reloadDvf","stateDvf","acc","without","preparedData","convertDateLabelsInChartData","isSSNType","xAxisLabel","textTransform","XAxisLabel","xCoord","ExpandedValueTooltip","renderXAxis","tickProps","visibleTicksCount","maxTickWidth","showCategories","barCategoryGap","maxBarSize","yTickRenderer","barChart","minPointSize","axisLine","vertical","labelForX","BarTooltip","tooltipPayload","tooltipLabel","propertiesName","chartInfoLabel","chartInfoValue","chartInfoWrapper","chartInfoItem","InfoPanel","isClickable","rectangleProps","barTooltipTitle","getBarChartSettings","showInfoPanel","shape","useLabelStyles","INCLUDE_SOURCE_ICON","getSourceColor","SourceIcon","applySpec","getCrosswalkAnalysisData","SourceLabelRenderer","getValueDistributionData","onBarSelect","showTopLabel","uniqueDataKeys","getBarLabel","stackId","onMouseOver","getBars","consolidationRateWrapper","ratePercent","tableWithSelectedRow","ConsolidationPercentage","totalCrosswalks","totalEntities","consolidationRate","reltioCleanser","totalCrosswalksBySource","formattedPercent","YAxisTickRenderer","selectedSource","setSelectedSource","barChartData","tableChartData","crosswalk","descend","getConsolidationRateTableData","sortedBarChartData","sortedSourceData","barSelectHandler","rowIndex","rowSelectHandler","rowClickHandler","chartHeight","onRowClick","onRowHover","hoverRowIndex","RDMTranscodeStatus","RDMChartColors","RESOLVED","UNRESOLVED","getRDMChartColors","formatRDMTranscodeData","resolveCount","unresolveCount","getRDMTranscodeFilter","rdmTranscodeStatus","getRDMTranscodeSearchState","setData","getRDMData","isRDMLoolupResolve","loadRDMChartData","useRDMChartDataRequest","ViewsFactory","getComponent","MONTH_DISTRIBUTION","DAY_OF_WEEK_DISTRIBUTION","DAY_OF_MONTH_DISTRIBUTION","DQDashboardLayoutItem","ResizeComponent","reltioGridLayoutToStaticLayout","DEFAULT_LAYOUT_OPTIONS","staticLayout","warning","errorIcon","scrollTopShadow","perspectiveView","overflowX","attributeLevelWrapper","navigationWrapper","headerRightSide","periodSelector","flexBasis","paper","input","inputRoot","dropdownIndicator","layoutRoot","customAttributeLayouts","layoutsByDataLevel","layouts","timeRangeAvailable","chartDataType","customLayouts","defaultLayouts","mergedLayoutsByType","mergeLeft","getLayoutByAttributeType","uniqBy","getViewsByDataType","getAttributeLevelViews","viewsByDataLevel","attributeLevelMetrics","breadcrumb","onChange","Breadcrumbs","separator","NavigateNext","handleChangeDataLevel","getPagePartWidth","pagePartIndex","getPageIndexes","transitionTime","pagesWrapper","pagesCount","page","pages","startSliding","endSliding","TRANSITION_TIMEOUT_MS","savedPage","setSavedPage","setTimeout","currentPageIndexes","pagesSettings","allWidth","pagesettings","fixedWidth","pagePart","partWidth","calculatePagePartsWidth","pageIndexes","prevPageIndexes","leftPagesIndexes","getLeftPageOffset","showComponent","styleWidth","minCurrentIndex","maxCurrentIndex","pageSettings","indexPage","getPagePartStyleWidth","entityLevelBar","writingMode","expandButton","expandButtonText","showEntityLevel","expandButtonTitle","getAttrTypeFromItem","getFirstSimpleDetailedAttrType","isComplexAttribute","isImage","not","filterDetailedAttrTypeByFieldName","getFilterOptionsByGroup","EmptinessFilterValue","noDataFilterOptions","SHOW_EMPTY","filterItemsByEmptiness","firstEmptinessOption","filterValidDetailsOptions","validOptionValues","getFieldNameFromItem","filterItemsByDetails","detailsOptions","filteredNestedFieldNames","both","getFilteredNestedFieldNames","startsWith","getAtrributeFieldNames","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","noData","noDataLabel","selected","onCollapse","noop","isLoading","hasFillRate","CollapseIcon","ArrowRightIcon","ArrowDropDownIcon","ListItem","times","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","getValidFilterOptions","closeFilter","handleOptionChange","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","collectFilteredAttributeItems","itemsWithDetails","setItemsWithDetails","getEntityTypeMatchAttributes","reference","useAttrTypeDetails","attributeFieldNames","memoizedAttributeFieldNames","initialFillRates","fillRatesState","setFillRateData","loadFillRateData","useFillRateRequest","fillRateFromChartsData","fillRateForSelectedAttribute","isDVFLoaded","isFillRateLoaded","filteredItems","filteredByEmptinessItems","detailsFilterOptions","getDetailsOptionCount","getDetailsOptions","visibleItems","collapsedFieldName","rejectCollapsedItemsChildren","countAttrTypes","handleAttrTypeDetailsChange","selectedDetailedAttributeType","getDetailedAttrTypeByFieldName","scrollTo","indexOfSelectedFieldName","getIndexByFieldName","scrollToItem","handleScroll","scrollOffset","currentBorderTop","borderTop","renderAttribute","getFillRateByAttributeType","showNoData","itemData","itemSize","onScroll","MEDIUM","LARGE","hasRDMLookup","isAttrTreeHasRDMLookup","checkEntityTypeHasRDMLookup","currentRDMLookupState","getEntityLevelViews","selectRoot","outline","select","selectValue","arrowIcon","optionRoot","dataReltioOptionId","classesProps","selectProps","renderCount","mergeClasses","outlined","Select","MenuProps","getContentAnchorEl","list","renderValue","autoWidth","entityCount","radius","EmptyState","LoadingIcon","setTick","useReloadAllFacets","intervalId","setInterval","timer","clearInterval","isValid","fromNow","RefreshIcon","saveState","isAvailableEntityType","useEntityTypes","setEntityTypeUri","entityCountRequestState","setDataLevel","selectedEntityType","consoleLink","setConsoleLink","setDVFConfigLink","servicesPath","environment","getConsoleApps","response","apps","insert","useDvfConfigLink","setDvfs","setErrorCode","dvfPath","env","canUserReadDVF","functions","loadDVFs","getDVF","useDVF","dvfContext","dqDashboardSavedState","isSavedStateLoaded","isPermissionsRequestFinished","getEntityType","isEntityTypeExists","sortedEntityTypesWithCount","defaultPeriod","Array","isArray","saveStateHandler","saveStateDebounce","fn","lastParams","params","startParams","clearTimeout","useDebounceFunction","newSavedState","getNewSavedState","sortWith","sortEntityTypesWithCount","handleSetEntityTypeByUri","showDashboard","showContent","showTimeRange","dateRangeEditorValue","getPeriodValue","DateRangeEditor","getDateRangeOptions","TextFieldProps","InputProps","disableUnderline","DateRangePickerProps","maxDate","startOf","toDate","ATTRIBUTE_LIST_WIDTH","dqDashboardTheme","createMuiTheme","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","store","getSavedStatePromisified","promisifyCallback","MuiPickersUtilsProvider","MomentUtils","StylesProvider"],"sourceRoot":""}
1
+ {"version":3,"file":"6299.js","mappings":"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","sources":["webpack://@reltio/remotes/../components/src/components/AvatarWithFallback/AvatarWithFallback.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/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/HideOnShrink/HideOnShrink.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/../dq-dashboard/src/contexts/ReloadFacetContext/index.tsx","webpack://@reltio/remotes/../dq-dashboard/src/contexts/DateRangesProvider/index.tsx","webpack://@reltio/remotes/../dq-dashboard/src/contexts/EntityAndAttributeTypeProvider/index.tsx","webpack://@reltio/remotes/../dq-dashboard/src/types/DQDateRangeValue.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/dateRange.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/helpers.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/PermissionsProvider/index.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/usePermissionsRequest.ts","webpack://@reltio/remotes/../dq-dashboard/src/theme/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/DVFContext/index.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/ChartsDataProvider/index.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useEntityCount.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/mlDq.ts","webpack://@reltio/remotes/../dq-dashboard/src/contexts/DataLevelContext/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/services/advancedFilters.ts","webpack://@reltio/remotes/../dq-dashboard/src/services/charts.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/hooks/useChartsDataRequest.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/types/EmptyStateVariants.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/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/components/LineChart/helpers.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartInfoPanel/positiveDynamic.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartInfoPanel/negativeDynamic.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartInfoPanel/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartInfoPanel/ChartInfoPanel.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/ChartInfoPanel/TimeSeriesInfoPanel.tsx","webpack://@reltio/remotes/../dq-dashboard/src/services/barCharts.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/LineChart/getLineChartSettings.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/views/charts/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/FillRateChart/FillRateTimeSeriesChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/PeriodChip/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/PeriodChip/PeriodChip.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/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/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/hooks/useNoDataDvfType.ts","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ViolatedValidationFuncChart/hooks/useDvfs.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/ViolatedValidationFuncChart/TotalInfo.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/FrequencyAnalysisChart.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/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/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/components/SourceLabelRenderer/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/SourceLabelRenderer/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/YAxisTickRenderer.tsx","webpack://@reltio/remotes/../dq-dashboard/src/views/charts/ConsolidationRateChart/ConsolidationRateChart.tsx","webpack://@reltio/remotes/../dq-dashboard/src/services/rdmTranscode.ts","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/DQDashboardLayout.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/Warning/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/Warning/Warning.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/styles.ts","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/ContentSlider/helpers.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ContentSlider/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/ContentSlider/ContentSlider.tsx","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/DataLevelSwitcher/styles.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/DataLevelSwitcher/DataLevelSwitcher.tsx","webpack://@reltio/remotes/../dq-dashboard/src/hooks/useAttrTypeDetails.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardAttributesList/helpers.ts","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/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/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/DQDashboardNoContent/DQDashboardNoContent.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/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/LoadingComponent/icons/Loading.svg","webpack://@reltio/remotes/../dq-dashboard/src/components/LoadingComponent/LoadingComponent.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/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/hooks/useDebounceFunction.ts","webpack://@reltio/remotes/../dq-dashboard/src/components/DQDashboardPerspectiveView/constants.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 {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\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 '&$root_small': {\n minHeight: '160px'\n },\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 root_small: {},\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 classnames from 'classnames';\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 small = 'small'\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={classnames(styles.root, styles[`root_${variant}`])}>\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 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 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\nexport const 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 React from 'react';\nimport {AttributeType, SearchFilter} 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 ReltioGridLayoutOptions = {\n cols: number;\n rowHeight: number;\n margin: [number, number];\n};\n\nexport type AttributeOption = {\n label: string;\n value: string;\n attrType: AttributeType;\n chipLabel: string;\n level: number;\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 FiltersRowData = {\n attribute: AttributeSelectorItem;\n filter: string;\n id: number;\n values: SearchFilter['values'];\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\nexport type PerspectivesSettings = Record<string, PerspectiveSettingItem>;\n\nexport type PerspectiveSettingItem = {\n active?: number;\n width?: number;\n};\n\nexport type RightPanelTab = {\n content?: React.ReactElement;\n title?: React.ReactElement;\n buttonProps?: {\n id: number;\n icon: React.FC;\n tooltipTitle: string;\n showForDisabled?: boolean;\n };\n headerProps?:\n | {content: React.ReactElement}\n | {mainTitle: string; secondTitle?: string; rightContent?: React.ReactElement};\n hidden?: boolean;\n};\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 // eslint-disable-next-line react-hooks/exhaustive-deps\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 // eslint-disable-next-line react-hooks/exhaustive-deps\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 React, {useState, useContext, useCallback} from 'react';\n\nimport {DatePeriod} from '@reltio/mdm-sdk';\n\ntype Props = {\n children: React.ReactNode;\n};\n\ntype Zoom = [string, string];\n\nconst PeriodContext = React.createContext<{\n period?: DatePeriod;\n changePeriod?: (period: DatePeriod) => void;\n }>(null);\n\nconst ZoomContext = React.createContext<{\n zoom?: [string, string];\n getDateRange?: () => DatePeriod;\n changeZoom?: (zoom: [string, string]) => void;\n }>({});\n\nexport const DateRangesProvider = ({children}: Props) => {\n const [zoom, setZoom] = useState<Zoom>(null);\n const [period, setPeriod] = useState<DatePeriod>(null);\n const changePeriod = useCallback(\n (newPeriod: DatePeriod) => {\n setPeriod(newPeriod);\n period && setZoom(null);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [period]\n );\n const changeZoom = useCallback((zoom: Zoom) => {\n if (zoom) {\n const validatedZoom: [string, string] =\n new Date(zoom[0]) > new Date(zoom[1]) ? [zoom[1], zoom[0]] : [zoom[0], zoom[1]];\n setZoom(validatedZoom);\n }\n }, []);\n\n const getDateRange: () => DatePeriod = useCallback(\n () => (zoom ? [new Date(zoom[0]), new Date(zoom[1])] : period),\n [zoom, period]\n );\n return (\n <PeriodContext.Provider value={{period, changePeriod}}>\n <ZoomContext.Provider value={{zoom, getDateRange, changeZoom}}>{children}</ZoomContext.Provider>\n </PeriodContext.Provider>\n );\n};\n\nexport const usePeriod = () => {\n return useContext(PeriodContext);\n};\n\nexport const useZoom = () => {\n return useContext(ZoomContext);\n};\n","import React, {useContext, useState} from 'react';\n\nimport {TEntityType} from '@reltio/mdm-sdk';\n\nimport {DetailedAttributeType} from '../../types/DetailedAttributeType';\n\nconst EntityAndAttributeTypeContext = React.createContext<{\n detailedAttributeType: DetailedAttributeType;\n setDetailedAttributeType: (detailedAttributeType: DetailedAttributeType) => void;\n entityType: TEntityType;\n setEntityType: (entityType: TEntityType) => void;\n }>(null);\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport const EntityAndAttributeTypeProvider = ({children}: Props) => {\n const [detailedAttributeType, setDetailedAttributeType] = useState<DetailedAttributeType>(null);\n const [entityType, setEntityType] = useState<TEntityType>(null);\n return (\n <EntityAndAttributeTypeContext.Provider\n value={{detailedAttributeType, setDetailedAttributeType, entityType, setEntityType}}\n >\n {children}\n </EntityAndAttributeTypeContext.Provider>\n );\n};\n\nexport const useEntityAndAttributeType = () => useContext(EntityAndAttributeTypeContext);\n","import {omit} from 'ramda';\n\nimport {DateRangeValue} from '@reltio/mdm-sdk';\n\nexport type DQDateRangeValue = Exclude<DateRangeValue, DateRangeValue.LAST_DAY>;\nexport const DQDateRangeValue = omit(['LAST_DAY'], {...DateRangeValue});\n","import moment from 'moment';\nimport {DatePeriod, DateRangeValue, getDateRangeByValue} from '@reltio/mdm-sdk';\n\ntype GetDQDateRangeByValue = (value: DatePeriod | [number, number]) => [number, number];\nexport const getDQDateRangeByValue: GetDQDateRangeByValue = (value) => {\n const currentDate = moment();\n\n switch (value) {\n case DateRangeValue.LAST_WEEK:\n return [moment(currentDate).subtract(6, 'days').valueOf(), currentDate.valueOf()];\n default:\n return getDateRangeByValue(value);\n }\n};\n","import {ascend, assoc, defaultTo, map, path, pipe, prop, sortWith, includes, propEq, __, isEmpty} from 'ramda';\n\nimport {TEntityType, TenantPermission, Permission} from '@reltio/mdm-sdk';\n\nimport {DQDateRangeValue} from '../../types/DQDateRangeValue';\nimport {getDQDateRangeByValue} from '../../services/dateRange';\n\nexport const sortEntityTypesWithCount = ({entityTypes, getEntityCount}) =>\n 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\nexport const getFirstEntityTypeUri = path([0, 'uri']);\n\nexport const dateRangeValues: DQDateRangeValue[] = Object.values(DQDateRangeValue);\n\nexport const getValuesDateRange = pipe(\n getDQDateRangeByValue,\n defaultTo([]),\n map((value) => value && new Date(value))\n);\n\nexport const checkPermissions = ({\n roles,\n tenantPermissions,\n entityTypeUri\n}: {\n roles: string[];\n tenantPermissions: TenantPermission[];\n entityTypeUri: string;\n}) => {\n const canReadWithoutFilter = ({filter, access}: Permission) => {\n return access && includes('READ', access) && !filter;\n };\n const getPermissionsForRoles = (permissions: Permission[], roles: string[]) =>\n (permissions || []).filter(pipe(prop('role'), includes(__, roles)));\n const getPermissionByUri = (uri: string) => tenantPermissions.find(propEq('uri', uri))?.permissions;\n const configurationLevelPermission = getPermissionsForRoles(getPermissionByUri('configuration'), roles);\n const entityLevelPermission = getPermissionsForRoles(getPermissionByUri(entityTypeUri), roles);\n if (!isEmpty(configurationLevelPermission)) {\n return configurationLevelPermission.some(canReadWithoutFilter);\n }\n if (!isEmpty(entityLevelPermission)) {\n return entityLevelPermission.some(canReadWithoutFilter);\n }\n return true;\n};\n","import {RequestStates} from '@reltio/components';\nimport React, {useContext, useMemo} from 'react';\nimport {isEmpty} from 'ramda';\nimport {usePermissionsRequest} from '../../hooks/usePermissionsRequest';\nimport {checkPermissions} from '../../components/DQDashboardPerspectiveView/helpers';\nimport {useEntityAndAttributeType} from '../EntityAndAttributeTypeProvider';\nimport {useSelector} from 'react-redux';\nimport mdmModule from '@reltio/mdm-module';\nimport {DQDashboardPerspectiveConfig} from '../../types/DQDashboardPerspectiveConfig';\n\ntype Props = {children: React.ReactNode; config: DQDashboardPerspectiveConfig};\n\nexport const PermissionsContext = React.createContext<{\n isTimeSeriesAvailable: boolean;\n hasRestrictions: boolean;\n canGetDQStatistic: boolean;\n permissionsLoadingState: RequestStates;\n}>(null);\n\nexport const PermissionsProvider = ({children, config}: Props) => {\n const {permissions: tenantPermissions, requestState: permissionsLoadingState} = usePermissionsRequest();\n const entityTypeUri = useEntityAndAttributeType()?.entityType?.uri;\n const roles = useSelector(mdmModule.selectors.getUserRoles);\n const canGetDQStatistic = useSelector(mdmModule.selectors.getCanUserGetDQStatistic);\n const noMetaDataRestrictions = useMemo(\n () =>\n permissionsLoadingState === RequestStates.LOADED &&\n checkPermissions({roles, tenantPermissions, entityTypeUri}),\n [tenantPermissions, permissionsLoadingState, roles, entityTypeUri]\n );\n const hasRestrictions = !isEmpty(tenantPermissions);\n const {showTimeSeries = true} = config;\n return (\n <PermissionsContext.Provider\n value={{\n isTimeSeriesAvailable: showTimeSeries && noMetaDataRestrictions,\n hasRestrictions,\n canGetDQStatistic,\n permissionsLoadingState\n }}\n >\n {children}\n </PermissionsContext.Provider>\n );\n};\n\nexport const usePermissionsContext = () => useContext(PermissionsContext);\n","import {useState, useCallback, useEffect, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {RequestStates, useSafePromise} from '@reltio/components';\nimport {getTenantPermissions, TenantPermission} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nexport const usePermissionsRequest = () => {\n const [permissions, setPermissions] = useState<TenantPermission[]>(null);\n const [requestState, setRequestState] = useState<RequestStates>(RequestStates.INIT);\n const safePromise = useSafePromise();\n const apiPath: string = useSelector(mdmModule.selectors.getApiPath);\n const tenant: string = useSelector(mdmModule.selectors.getTenant);\n\n const onRequestFinished = (permissions) => {\n setPermissions(permissions);\n setRequestState(RequestStates.LOADED);\n };\n\n const onError = (error: {errorCode: number}) => {\n console.error(error); // eslint-disable-line\n setRequestState(RequestStates.ERROR);\n setPermissions(null);\n };\n\n const loadPermissions = useCallback(() => {\n setRequestState(RequestStates.LOADING);\n safePromise(getTenantPermissions({tenant, apiPath})).then(onRequestFinished).catch(onError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [apiPath, tenant]);\n useEffect(() => {\n loadPermissions();\n }, [loadPermissions]);\n\n return useMemo(\n () => ({\n permissions,\n requestState,\n reload: loadPermissions\n }),\n [permissions, requestState]\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","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, {useContext, useState} from 'react';\n\nimport {ChartsDataWithState} from '../../types/ChartsDataWithState';\n\ntype Props = {children: React.ReactNode};\n\nexport const ChartsDataContext = React.createContext<{\n chartsData: ChartsDataWithState | Record<string, never>;\n changeChartsData: (chartsData: ChartsDataWithState) => void;\n }>(null);\n\nexport const ChartsDataProvider = ({children}: Props) => {\n const [chartsData, setChartsData] = useState<ChartsDataWithState | Record<string, never>>({});\n const changeChartsData = (chartsData: ChartsDataWithState) => setChartsData(chartsData);\n return <ChartsDataContext.Provider value={{chartsData, changeChartsData}}>{children}</ChartsDataContext.Provider>;\n};\n\nexport const useChartsDataContext = () => useContext(ChartsDataContext);\n","import {pluck} from 'ramda';\nimport {useCallback, useEffect, useMemo, useState} from 'react';\nimport {RequestStates, 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 [requestState, setRequestState] = useState<RequestStates>(RequestStates.INIT);\n const safePromise = useSafePromise();\n\n const onRequestFinished = ({type: entitiesCountMap}) => {\n setEntitiesCountMap(entitiesCountMap);\n setRequestState(RequestStates.LOADED);\n };\n\n const onError = (error: {errorCode: number}) => {\n console.error(error); // eslint-disable-line\n setRequestState(RequestStates.ERROR);\n setEntitiesCountMap(null);\n };\n\n const getEntityCount = useCallback(() => {\n setRequestState(RequestStates.LOADING);\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}),\n body: [{fieldName: 'type', pageSize: 101, pageNo: 1}]\n })\n )\n .then(onRequestFinished)\n .catch(onError);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [entityTypes]);\n useEffect(() => {\n getEntityCount();\n }, [getEntityCount]);\n\n return useMemo(\n () => ({\n getEntityCount: (entityTypeUri: string) =>\n Number(entitiesCountMap?.[getLastUriPart(entityTypeUri)] || null),\n state: requestState\n }),\n [entitiesCountMap, requestState]\n );\n};\n","import moment from 'moment';\nimport {append, assoc, curry, defaultTo, map, pipe, prop, propEq, reject, sortBy} from 'ramda';\n\nimport {\n DatePeriod,\n isDateRangeValue,\n TimeSeriesData,\n TimeSeriesDataValues,\n FillRateState,\n UniquenessAnalysisState,\n DQMetric,\n getRangeOptionLabel,\n getDateRangeByDatePeriod,\n DateRangeValue\n} from '@reltio/mdm-sdk';\nimport {ChartData, enrichDataWithPercents} from '@reltio/components';\nimport i18n from 'ui-i18n';\n\nimport {DQDateRangeValue} from '../types/DQDateRangeValue';\nimport {LineChartData} from '../types/LineChartData';\nimport {DQDashboardView} from '../types/DQDashboardView';\nimport {getDQDateRangeByValue} from '../services/dateRange';\n\nexport const getLabelByTimeRange = (period: DatePeriod): string =>\n isDateRangeValue(period as DQDateRangeValue)\n ? getRangeOptionLabel(period as DQDateRangeValue)\n : (period as [Date, Date]).map((date) => i18n.date(moment(date))).join(' \\u2013 ');\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, 'MMM D'),\n ...getData(values)\n })),\n sortBy(prop('group'))\n );\n\nexport const getTimeRangeDates = (period: DatePeriod) => {\n const dateFormat = 'YYYY-MM-DD';\n\n const [startTimestamp, endTimeStamp] = getDateRangeByDatePeriod(period, getDQDateRangeByValue);\n return {\n startDate: moment(startTimestamp).format(dateFormat),\n endDate: moment(endTimeStamp).format(dateFormat)\n };\n};\n\nexport const checkIsTimeSeries = (config: DQDashboardView) => config?.options?.timeSeries;\n\nexport const getChartTooltipDateTitle = (hasData: boolean, date: string) =>\n hasData ? i18n.date(date, 'MMM D, YYYY') : i18n.text('No data available');\n\nexport const hasTimeRange = (period: DatePeriod) => period !== DateRangeValue.LAST_DAY;\n\nconst getStateFromMetric = (metric: DQMetric) => {\n switch (metric) {\n case DQMetric.FILL_RATE:\n return FillRateState.EXISTS;\n case DQMetric.UNIQUENESS:\n return UniquenessAnalysisState.UNIQUE;\n }\n};\n\nconst getTodayData = (metric: DQMetric, todayChartData: ChartData[]) => {\n if (metric === DQMetric.DATA_VALIDATION)\n return todayChartData.reduce(\n (todayData, currentData) => assoc(currentData.group, currentData.value, todayData),\n {\n group: moment().format('YYYY-MM-DD'),\n label: i18n.date(moment(), 'MMM D')\n }\n );\n else {\n const todayChartDataWithPercent = enrichDataWithPercents(todayChartData);\n const todayOption = getStateFromMetric(metric);\n const todayData = {\n group: moment().format('YYYY-MM-DD'),\n label: i18n.date(moment(), 'MMM D'),\n [metric]: todayChartDataWithPercent.find(propEq('group', todayOption))?.percent\n };\n return todayChartData.reduce((todayDataForTimeSeries, dataItem) => {\n todayDataForTimeSeries[dataItem.group] = dataItem.value;\n return todayDataForTimeSeries;\n }, todayData);\n }\n};\n\nexport const enrichTimeSeriesDataWithTodayData = curry(\n (period: DatePeriod, todayChartData: ChartData[], metric: DQMetric, timeSeriesData: LineChartData[]) => {\n const {endDate} = getTimeRangeDates(period);\n const today = moment().format('YYYY-MM-DD');\n return endDate === today\n ? pipe(reject(propEq('group', today)), append(getTodayData(metric, todayChartData)))(timeSeriesData)\n : timeSeriesData;\n }\n);\n\nexport const getPeriodValue = (zoom: [string, string], period: DatePeriod): DatePeriod =>\n zoom ? [new Date(zoom[0]), new Date(zoom[1])] : period;\n","import React from 'react';\nimport {DQDataLevel} from '@reltio/mdm-sdk';\n\nexport const DataLevelContext = React.createContext<DQDataLevel>(null);\n\nDataLevelContext.displayName = 'DataLevelContext';\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: '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: '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 id: 'FillRateViewTimeSeries',\n type: ViewType.FILL_RATE,\n title: i18n.text('Fill rate over time'),\n options: {\n timeSeries: true\n }\n },\n {\n id: 'UniquenessAnalysisViewTimeSeries',\n type: ViewType.UNIQUENESS,\n title: i18n.text('Uniqueness analysis over time'),\n options: {\n timeSeries: true\n }\n },\n {\n id: 'ValidationViewTimeSeries',\n type: ViewType.DATA_VALIDATION,\n title: i18n.text('Profiles with invalid data over time'),\n options: {\n timeSeries: true\n }\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 timeRange: {\n default: [\n {x: 0, y: 0, width: 6, height: 6, id: 'SummaryView'},\n {x: 0, y: 6, width: 3, height: 12, id: 'ValidationView'},\n {x: 3, y: 6, width: 3, height: 12, id: 'ValidationViewTimeSeries'},\n {x: 0, y: 18, width: 3, height: 12, id: 'FillRateView'},\n {x: 3, y: 18, width: 3, height: 12, id: 'FillRateViewTimeSeries'},\n {x: 0, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisView'},\n {x: 3, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisViewTimeSeries'},\n {x: 0, y: 42, width: 3, height: 14, id: 'FrequencyAnalysis'},\n {x: 3, y: 42, width: 3, height: 14, id: 'CrosswalkAnalysis'},\n {x: 0, y: 56, width: 6, height: 19, id: 'LengthStatistics'}\n ],\n SSN: [\n {x: 0, y: 0, width: 6, height: 6, id: 'SummaryView'},\n {x: 0, y: 6, width: 3, height: 12, id: 'ValidationView'},\n {x: 3, y: 6, width: 3, height: 12, id: 'ValidationViewTimeSeries'},\n {x: 0, y: 18, width: 3, height: 12, id: 'FillRateView'},\n {x: 3, y: 18, width: 3, height: 12, id: 'FillRateViewTimeSeries'},\n {x: 0, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisView'},\n {x: 3, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisViewTimeSeries'},\n {x: 0, y: 42, width: 3, height: 14, id: 'FrequencyAnalysis'},\n {x: 3, y: 42, width: 3, height: 14, id: 'CrosswalkAnalysis'},\n {x: 0, y: 56, width: 3, height: 14, id: 'PatternAnalysis'}\n ],\n boolean: [\n {x: 0, y: 0, width: 6, height: 6, id: 'SummaryView'},\n {x: 0, y: 6, width: 3, height: 12, id: 'ValidationView'},\n {x: 3, y: 6, width: 3, height: 12, id: 'ValidationViewTimeSeries'},\n {x: 0, y: 18, width: 3, height: 12, id: 'FillRateView'},\n {x: 3, y: 18, width: 3, height: 12, id: 'FillRateViewTimeSeries'},\n {x: 0, y: 30, width: 3, height: 12, id: 'FrequencyAnalysis'},\n {x: 3, y: 30, width: 3, height: 12, id: 'CrosswalkAnalysis'}\n ],\n date: [\n {x: 0, y: 0, width: 6, height: 6, id: 'SummaryView'},\n {x: 0, y: 6, width: 3, height: 12, id: 'ValidationView'},\n {x: 3, y: 6, width: 3, height: 12, id: 'ValidationViewTimeSeries'},\n {x: 0, y: 18, width: 3, height: 12, id: 'FillRateView'},\n {x: 3, y: 18, width: 3, height: 12, id: 'FillRateViewTimeSeries'},\n {x: 0, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisView'},\n {x: 3, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisViewTimeSeries'},\n {x: 0, y: 42, width: 3, height: 14, id: 'FrequencyAnalysis'},\n {x: 3, y: 42, width: 3, height: 14, id: 'CrosswalkAnalysis'},\n {x: 0, y: 56, width: 6, height: 19, id: 'ValueDistribution'}\n ],\n integer: [\n {x: 0, y: 0, width: 6, height: 6, id: 'SummaryView'},\n {x: 0, y: 6, width: 3, height: 12, id: 'ValidationView'},\n {x: 3, y: 6, width: 3, height: 12, id: 'ValidationViewTimeSeries'},\n {x: 0, y: 18, width: 3, height: 12, id: 'FillRateView'},\n {x: 3, y: 18, width: 3, height: 12, id: 'FillRateViewTimeSeries'},\n {x: 0, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisView'},\n {x: 3, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisViewTimeSeries'},\n {x: 0, y: 42, width: 3, height: 14, id: 'FrequencyAnalysis'},\n {x: 3, y: 42, width: 3, height: 14, id: 'CrosswalkAnalysis'},\n {x: 0, y: 56, width: 6, height: 19, id: 'ValueDistribution'}\n ],\n float: [\n {x: 0, y: 0, width: 6, height: 6, id: 'SummaryView'},\n {x: 0, y: 6, width: 3, height: 12, id: 'ValidationView'},\n {x: 3, y: 6, width: 3, height: 12, id: 'ValidationViewTimeSeries'},\n {x: 0, y: 18, width: 3, height: 12, id: 'FillRateView'},\n {x: 3, y: 18, width: 3, height: 12, id: 'FillRateViewTimeSeries'},\n {x: 0, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisView'},\n {x: 3, y: 30, width: 3, height: 12, id: 'UniquenessAnalysisViewTimeSeries'},\n {x: 0, y: 42, width: 3, height: 14, id: 'FrequencyAnalysis'},\n {x: 3, y: 42, width: 3, height: 14, id: 'CrosswalkAnalysis'},\n {x: 0, y: 56, 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 {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 all,\n any,\n assoc,\n concat,\n curry,\n defaultTo,\n equals,\n evolve,\n filter,\n isEmpty,\n isNil,\n map,\n mergeLeft,\n pipe,\n pluck,\n prop,\n propEq,\n uniq,\n uniqBy,\n when\n} from 'ramda';\n\nimport i18n from 'ui-i18n';\nimport {ChartData, RequestStates} 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 ReltioGridLayoutItem\n} from '@reltio/mdm-sdk';\n\nimport {ChartDataType} from '../constants/ChartDataType';\nimport {defaultLayoutsByDataLevel, defaultViewsByDataLevel} from '../constants/defaultConfig';\nimport {ViewType} from '../constants/ViewType';\nimport {getAdvancedSearchFilter} from './advancedFilters';\n\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';\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 =\n (getFilter) =>\n ({\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 ];\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 uniq\n);\n\nexport const getLayoutByAttributeType = (\n layouts: LayoutsByAttributeType,\n type: string,\n timeRangeAvailable: boolean\n) => {\n const chartDataType = getChartDataTypeByAttributeType(type);\n const customLayouts = (timeRangeAvailable && layouts?.timeRange) || layouts?.today;\n const defaultLayouts =\n (timeRangeAvailable && defaultLayoutsByDataLevel[DQDataLevel.ATTRIBUTE_TYPE]['timeRange']) ||\n defaultLayoutsByDataLevel[DQDataLevel.ATTRIBUTE_TYPE]['today'];\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 enrichChartDataWithSourceLabel = curry((metadata: Metadata, chartData: ChartData[]) =>\n chartData.map((data) => assoc('label', getSourceSystemLabel(metadata, data.group) || data.label, data))\n);\nexport const getEntityTypeSummarySearchState =\n ({entityTypeUri}: GetSearchStateProps) =>\n () =>\n facetFiltersToSearchState(undefined, entityTypeUri, []);\n\nexport const formatPercent = (percent: number | string): number => +(Number(percent) * 100).toFixed(1);\n\nexport const transformTimeSeriesChartData = curry((metric: DQMetric, chartData: TimeSeriesDataValues[]) =>\n chartData.map((data) => {\n return {\n ...data,\n [metric]: typeof data[metric] === 'number' ? formatPercent(data[metric]) : null\n };\n })\n);\n\nexport const getChartState = (states: RequestStates[]) => {\n if (all(equals(RequestStates.LOADED), states)) return RequestStates.LOADED;\n if (any(equals(RequestStates.ERROR), states)) return RequestStates.ERROR;\n if (any(equals(RequestStates.LOADING), states)) return RequestStates.LOADING;\n return RequestStates.INIT;\n};\n","import {propEq, allPass} from 'ramda';\nimport {\n getLabel,\n AttributeType,\n DataTypes,\n DataValidationFunction,\n getAttributeTypesTree,\n Metadata,\n TEntityType,\n StatusVF,\n AttributeNode\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 = getAttributeTypesTree(metadata, entityType) || [];\n const collectAttributes = (attributes: AttributeType[]) => {\n return attributes.reduce((attributesCollection: AttributeType[], attribute: AttributeNode) => {\n const children = attribute?.children;\n return children?.length\n ? [...attributesCollection, attribute, ...collectAttributes(children)]\n : [...attributesCollection, 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} 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 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","import {useCallback, useEffect, useMemo, useState} from 'react';\nimport {omit, pathOr, pipe, keys, path, length, ifElse, has} 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\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 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 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(\n pipe(\n pathOr({}, ['statistic', attributeFieldName]),\n ifElse(has('error'), onError, onRequestFinished)\n )\n )\n .catch(onError);\n }\n }, [setRequestState, setChartsData, safePromise, attributeFieldName, entityTypeUri, dataLevel, metrics]);\n\n const refreshAction = useRefreshAction({\n action: loadChartsData,\n dataLevel\n });\n\n useEffect(() => {\n refreshAction();\n }, [refreshAction]);\n\n const chartsDataResult = useMemo(\n () => ({data: chartsData, state: requestState, reload: refreshAction}),\n [chartsData, requestState, refreshAction]\n );\n\n return chartsDataResult;\n};\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';\nimport {isNil} from 'ramda';\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 getValueLabel = ({value, percent}: {value: number; percent?: number}) =>\n isNil(percent) ? i18n.number(value) : `(${i18n.number(value)})`;\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: `${getPercentLabel(percent)} ${getValueLabel({value, 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={250}>\n <VerticalDivider height={24} margin={16} />\n {children}\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';\n\nimport {DQDashboardView} from '../../types/DQDashboardView';\nimport {DataLevelContext} from '../../contexts/DataLevelContext';\nimport {usePeriod} from '../../contexts/DateRangesProvider';\nimport {hasTimeRange} from '../../services/mlDq';\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 {period} = usePeriod();\n const dataReltioId = hasTimeRange(period)\n ? `reltio-dq-dashboard-chart-time-series-${type}-${dataLevel}`\n : `reltio-dq-dashboard-chart-${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 = (chartsData: DQChartsData) => {\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 {useMemo} from 'react';\n\nimport {DQChartsData} from '@reltio/mdm-sdk';\n\nimport {useChartsDataContext} from '../contexts/ChartsDataProvider';\n\nexport const useChartData = <T>(getChartData: (chartsData: DQChartsData) => T) => {\n const {\n chartsData: {data: chartsData, state, reload}\n } = useChartsDataContext();\n const data = useMemo(() => getChartData(chartsData), [chartsData, getChartData]);\n return useMemo(() => ({data, state, reload}), [data, state, reload]);\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","import {assoc, curry, pipe} from 'ramda';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport mdmModule, {ui} from '@reltio/mdm-module';\nimport {getDescendantEntityTypes, Metadata, SearchState} from '@reltio/mdm-sdk';\n\nimport {useEntityAndAttributeType} from '../contexts/EntityAndAttributeTypeProvider';\nimport {getExcludedEntityTypesRawFilter} from '../services/rawFilters';\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, entityType} = useEntityAndAttributeType();\n\n return pipe(\n getSearchState({detailedAttributeType, entityTypeUri: entityType.uri}),\n excludeDescendantEntityTypes(metadata, entityType.uri),\n ui.actions.openSearch,\n dispatch\n );\n};\n","export enum EmptyStateVariants {\n SMALL = 'small',\n MEDIUM = 'medium',\n LARGE = 'large'\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 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 {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 <DQDashboardError\n height={height}\n errorData={{\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=\"top\"\n wrapperStyle={{\n display: 'flex',\n overflowY: 'auto',\n maxHeight: '100%',\n maxWidth: '100%',\n marginTop: '13px'\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 {`${getPercentLabel(percent)} (${formatNumberAsMetric(value, 999)})`}\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: `${getPercentLabel(percent)} (${i18n.number(value)})`\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('percent'), 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, useRef, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {last, head, path, pathOr, pipe} from 'ramda';\n\nimport {RequestStates, useSafePromise} from '@reltio/components';\nimport {DatePeriod, DQDataLevel, TimeSeriesMetric, getMlDqData, TimeSeriesData} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport {DQDateRangeValue} from '../types/DQDateRangeValue';\nimport {getTimeRangeDates} from '../services/mlDq';\nimport {useRefreshAction} from '../contexts/ReloadFacetContext';\n\ntype useMlDqDataRequestProps = {\n entityTypeUri: string;\n attributeFieldName: string;\n period?: DatePeriod;\n dataLevel?: DQDataLevel;\n metrics?: TimeSeriesMetric[];\n};\n\nconst needRefreshData = (period: DatePeriod, data: TimeSeriesData[]) => {\n const currentRange = data\n ? {\n startDate: pipe(last, path(['time', '_max_date']))(data),\n endDate: pipe(head, path(['time', '_min_date']))(data)\n }\n : null;\n\n if (currentRange) {\n const currentStartTime = new Date(currentRange.startDate);\n const currentEndTime = new Date(currentRange.endDate);\n const {startDate, endDate} = getTimeRangeDates(period);\n const startTime = new Date(startDate);\n const endTime = new Date(endDate);\n if (startTime >= currentStartTime && endTime <= currentEndTime) return false;\n }\n\n return true;\n};\n\nexport const useMlDqDataRequest = ({\n entityTypeUri,\n attributeFieldName,\n period = DQDateRangeValue.LAST_WEEK,\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 const oldRequestDependencies = useRef<string>();\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 memoizedRequestDependencies = [attributeFieldName, entityTypeUri, dataLevel, metrics, tenant].toString();\n\n const loadChartsData = useCallback(() => {\n if (!entityTypeUri) return;\n setRequestState(RequestStates.LOADING);\n setTimeSeriesData(null);\n\n const {startDate, endDate} = getTimeRangeDates(period);\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 // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [memoizedRequestDependencies, period]);\n\n const refreshAction = useRefreshAction({\n action: loadChartsData,\n dataLevel\n });\n\n useEffect(() => {\n const needRefresh = needRefreshData(period, timeSeriesData);\n (needRefresh || memoizedRequestDependencies !== oldRequestDependencies?.current) && refreshAction();\n oldRequestDependencies.current = memoizedRequestDependencies;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [refreshAction]);\n\n return useMemo(\n () => ({data: timeSeriesData, state: requestState, reload: refreshAction}),\n [timeSeriesData, requestState, refreshAction]\n );\n};\n","import {flatten, pipe, props, map, isNil, propEq, reject, curry, slice, findIndex, assocPath, last, path} from 'ramda';\n\nimport i18n from 'ui-i18n';\nimport {DatePeriod} from '@reltio/mdm-sdk';\n\nimport {getTimeRangeDates} from '../../services/mlDq';\nimport {LineChartData} from '../../types/LineChartData';\n\nconst getValuesFromChartData = curry((keys: string[], data: LineChartData[]) =>\n pipe(map(props(keys)), flatten, reject(isNil))(data)\n);\n\nexport const getMaxValueFromLineChartData = (keys: string[], data: LineChartData[]) =>\n pipe(getValuesFromChartData(keys), (values: number[]) => Math.max(...values))(data);\n\nexport const getMinValueFromLineChartData = (keys: string[], data: LineChartData[]) =>\n pipe(getValuesFromChartData(keys), (values: number[]) => Math.min(...values))(data);\n\nconst roundPercent = (percent: number) => Math.round(percent * 100) / 100;\n\nconst getOneLinePercentEdgeData = (data: number) => {\n if (data === 0 || data === 100)\n return {\n minYAxisValue: 0,\n maxYAxisValue: 100\n };\n const minYAxisValue = data > 50 ? roundPercent(2 * data - 100) : 0;\n const maxYAxisValue = data > 50 ? 100 : roundPercent(2 * data);\n return {\n minYAxisValue,\n maxYAxisValue\n };\n};\n\nexport const getUpdatedEdgeData = ({\n minLineChartData,\n maxLineChartData,\n isPercent\n}: {\n minLineChartData: number;\n maxLineChartData: number;\n isPercent: boolean;\n}) => {\n if (minLineChartData === maxLineChartData) {\n return isPercent\n ? getOneLinePercentEdgeData(minLineChartData)\n : {\n minYAxisValue: 'minData',\n maxYAxisValue: 'maxData'\n };\n }\n const gap = (maxLineChartData - minLineChartData) / 6;\n const updatedMinData = roundPercent(minLineChartData - gap);\n const updatedMaxData = roundPercent(maxLineChartData + gap);\n return {\n minYAxisValue: updatedMinData > 0 ? updatedMinData : 0,\n maxYAxisValue: isPercent && updatedMaxData > 100 ? 100 : updatedMaxData\n };\n};\n\nconst isLineChartDataEmpty = (data: LineChartData, keys: string[]) =>\n keys.every((key) => isNil(data[key]) || isNaN(+data[key]));\n\nexport const getEmptyAreas = (chartData: LineChartData[], keys: string[]) => {\n const getDateByIndex = (index: number) => path([index, 'group'], chartData);\n const extendArea = (areas: Record<'start' | 'end', number>[], index: number) => {\n const lastArea = last(areas);\n const endDate = getDateByIndex(index === chartData.length - 1 ? index : index + 1);\n\n return (lastArea && getDateByIndex(index) !== lastArea.end) || areas?.length === 0\n ? areas.concat({\n start: getDateByIndex(index === 0 ? index : index - 1),\n end: endDate\n })\n : assocPath([areas.length - 1, 'end'], endDate, areas);\n };\n\n return chartData.reduce((emptyAreas, data, index) => {\n return isLineChartDataEmpty(data, keys) ? extendArea(emptyAreas, index) : emptyAreas;\n }, []);\n};\n\nexport const XAxisTickFormatter = (value: number) => i18n.date(value, 'MMM D');\n\nexport const getZoomedData = (data: LineChartData[], dateRange: DatePeriod): LineChartData[] => {\n if (data.length === 1) return data;\n const {startDate, endDate} = getTimeRangeDates(dateRange);\n const indexStart = findIndex(propEq('group', startDate), data);\n const indexEnd = findIndex(propEq('group', endDate), data) + 1;\n return data && dateRange ? slice(indexStart, indexEnd, data) : data;\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: \"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 dynamicIcon: {\n paddingRight: '4px'\n },\n\n percent: {\n fontWeight: 700,\n paddingRight: '4px'\n },\n\n period: {\n fontWeight: 'bold'\n }\n}));\n","import React from 'react';\nimport classnames from 'classnames';\n\nimport PositiveDynamicIcon from './positiveDynamic.svg';\nimport NegativeDynamicIcon from './negativeDynamic.svg';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n label: React.ReactNode;\n info: React.ReactNode;\n dynamicPercent?: number;\n};\n\nexport const ChartInfoPanel = ({label, info, dynamicPercent}: Props) => {\n const styles = useStyles();\n\n const isPositiveDynamic = dynamicPercent > 0;\n return (\n <div className={styles.infoPanel}>\n {label}\n <span className={styles.info}>{info}</span>\n {!!dynamicPercent && (\n <span\n className={classnames(styles.dynamicInfo, {\n [styles.dynamicInfoPositive]: isPositiveDynamic,\n [styles.dynamicInfoNegative]: !isPositiveDynamic\n })}\n >\n {isPositiveDynamic ? (\n <PositiveDynamicIcon className={styles.dynamicIcon} />\n ) : (\n <NegativeDynamicIcon className={styles.dynamicIcon} />\n )}\n {Math.abs(dynamicPercent).toFixed(2)}%\n </span>\n )}\n </div>\n );\n};\n\nexport default ChartInfoPanel;\n","import React, {useMemo} from 'react';\nimport {last, pipe, pluck, slice, reject, isNil} from 'ramda';\nimport moment from 'moment';\n\nimport i18n from 'ui-i18n';\nimport {DatePeriod, formatNumberAsMetric, getDateRangeByValue} from '@reltio/mdm-sdk';\n\nimport {TimeSeriesChartData} from '../../types/TimeSeriesChartData';\nimport {getZoomedData} from '../LineChart/helpers';\n\nimport ChartInfoPanel from './ChartInfoPanel';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n dateRange: DatePeriod;\n infoLabel: string;\n dataKey: string;\n chartData: TimeSeriesChartData[];\n percentKey: string;\n};\n\nconst getDynamicPercent = (chartData: TimeSeriesChartData[], percentKey: string): number => {\n const filteredData = pipe(pluck(percentKey), reject(isNil))(chartData);\n if (filteredData.length < 2) return 0;\n return pipe(\n slice(-2, Infinity),\n ([prevPercent, lastPercent]) => lastPercent - prevPercent,\n (percent: number) => Math.round(percent * 10000) / 10000\n )(filteredData);\n};\n\nconst TimeSeriesInfoPanel = ({dateRange, infoLabel, percentKey, dataKey, chartData}: Props) => {\n const styles = useStyles();\n\n const zoomedData = useMemo(() => getZoomedData(chartData, dateRange), [chartData, dateRange]);\n const lastChartData = last(zoomedData);\n const data = lastChartData?.[dataKey];\n const percent = lastChartData?.[percentKey];\n const dynamicPercent = percentKey && getDynamicPercent(zoomedData, percentKey);\n const lastDateOfPeriod = getDateRangeByValue(dateRange)[1];\n const dateLabel = moment().isSame(lastDateOfPeriod, 'day') ? i18n.text('Today') : i18n.date(lastDateOfPeriod);\n\n const label = (\n <>\n <span className={styles.period}>{dateLabel}:</span>\n {infoLabel}\n </>\n );\n const info = (\n <>\n <span className={styles.percent}>{percent}%</span>({formatNumberAsMetric(data, 999)})\n </>\n );\n\n return <ChartInfoPanel label={label} info={info} dynamicPercent={dynamicPercent} />;\n};\n\nexport default TimeSeriesInfoPanel;\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 = (chartsData: DQChartsData) => {\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() : Math.round(value * 1000) / 1000;\n};\n","import {\n CartesianGridProps,\n LineProps,\n TooltipProps,\n XAxisProps,\n YAxisProps,\n ReferenceLineProps,\n LabelProps\n} from 'recharts';\nimport {tickFormatter} from '../../services/barCharts';\nimport {\n getMaxValueFromLineChartData,\n getMinValueFromLineChartData,\n getUpdatedEdgeData,\n XAxisTickFormatter\n} from './helpers';\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 = ({keys, data, isPercent}): LineChartSettings => {\n const minLineChartData = getMinValueFromLineChartData(keys, data);\n const maxLineChartData = getMaxValueFromLineChartData(keys, data);\n const {minYAxisValue, maxYAxisValue} = getUpdatedEdgeData({minLineChartData, maxLineChartData, isPercent});\n\n return {\n xAxis: {\n type: 'category',\n dataKey: 'term',\n tick: {\n fill: '#000',\n fontSize: '12px',\n tickMargin: '18px',\n style: {\n userSelect: 'none'\n }\n },\n angle: 0,\n textAnchor: 'middle',\n stroke: '#666',\n tickLine: false,\n dy: 8,\n tickFormatter: XAxisTickFormatter,\n interval: 'preserveStartEnd'\n },\n yAxis: {\n dataKey: '',\n type: 'number',\n tick: {\n fill: '#000',\n fontSize: '12px',\n width: undefined,\n style: {\n userSelect: 'none'\n }\n },\n stroke: '#666',\n tickFormatter: tickFormatter,\n tickCount: 5,\n width: 59,\n tickLine: false,\n domain: [minYAxisValue, maxYAxisValue]\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: {stroke: 'white', strokeWidth: 2, r: 5}\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: '10px',\n fill: 'rgba(0, 0, 0, 0.54)',\n userSelect: 'none'\n }\n }\n };\n};\n\nexport default getLineChartSettings;\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, useMemo} 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 {either, pluck, isNil} from 'ramda';\n\nimport {DatePeriod} from '@reltio/mdm-sdk';\n\nimport {LineChartData} from '../../types/LineChartData';\nimport getLineChartSettings from './getLineChartSettings';\nimport {getZoomedData, getEmptyAreas} from './helpers';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n data: LineChartData[];\n width: number;\n height: number;\n keys: string[];\n dateRange: DatePeriod;\n getTooltip?: (payload: TooltipProps) => React.ReactNode;\n getColor?: (key: string) => string;\n yAxisLabel?: string;\n isPercent?: boolean;\n changeZoom?: (zoom: [string, string]) => void;\n};\n\nconst DEFAULT_LINE_COLOR = '#00439D';\ntype MouseEventProps = {\n activeLabel: string;\n activePayload: {value: number}[];\n isTooltipActive: boolean;\n};\n\nconst LineChart = ({\n data,\n width,\n height,\n getTooltip: getTooltipProp,\n getColor,\n keys,\n yAxisLabel,\n isPercent = true,\n dateRange,\n changeZoom\n}: Props) => {\n const styles = useStyles();\n const {cartesianGrid, tooltip, xAxis, yAxis, line, referenceLine, labelForY} = getLineChartSettings({\n keys,\n data,\n isPercent\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 [zoomAreaStart, setZoomAreaStart] = useState<string>(null);\n const [zoomAreaEnd, setZoomAreaEnd] = useState<string>(null);\n\n const handleMouseDown = (mouseEvent: MouseEventProps) => {\n mouseEvent?.activeLabel && setZoomAreaStart(mouseEvent.activeLabel);\n };\n const handleMouseMove = (mouseEvent: MouseEventProps) => {\n if (mouseEvent.isTooltipActive && mouseEvent.activePayload) {\n setSelectedDots({\n group: mouseEvent.activeLabel,\n values: pluck('value', mouseEvent.activePayload)\n });\n } else setSelectedDots(undefined);\n zoomAreaStart && setZoomAreaEnd(mouseEvent.activeLabel);\n };\n const handleMouseLeave = () => {\n setSelectedDots(undefined);\n };\n const handleMouseUp = () => {\n zoomAreaEnd && changeZoom([zoomAreaStart, zoomAreaEnd]);\n setZoomAreaEnd(null);\n setZoomAreaStart(null);\n };\n const zoomedData = useMemo(() => getZoomedData(data, dateRange), [data, dateRange]);\n const emptyAreas = useMemo(() => getEmptyAreas(zoomedData, keys), [zoomedData, keys]);\n const hasZoomArea = zoomAreaStart && zoomAreaEnd;\n return (\n <LineChartWidget\n width={width}\n height={height}\n data={zoomedData}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n onMouseDown={handleMouseDown}\n onMouseUp={handleMouseUp}\n margin={{\n top: 12,\n right: 20\n }}\n >\n {selectedDots && <ReferenceLine {...referenceLine} x={selectedDots.group} />}\n {selectedDots &&\n selectedDots.values.every(either(isNaN, isNil)) &&\n !hasZoomArea &&\n emptyAreas.map((emptyArea, index) => (\n <ReferenceArea x1={emptyArea.start} x2={emptyArea.end} key={index} />\n ))}\n {hasZoomArea && <ReferenceArea x1={zoomAreaStart} x2={zoomAreaEnd} strokeOpacity={0.3} />}\n <CartesianGrid {...cartesianGrid} />\n <XAxis {...xAxis} dataKey=\"group\" />\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} filterNull={false} />\n </LineChartWidget>\n );\n};\n\nexport default LineChart;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n monoFontCell: {\n fontFamily: '\"Roboto Mono\", monospace'\n },\n timeSeriesContent: {\n padding: '0 12px 10px'\n }\n});\n","import {assoc, map, pick, pipe} from 'ramda';\nimport React, {useCallback, useMemo} from 'react';\nimport {TooltipProps} from 'recharts';\nimport i18n from 'ui-i18n';\n\nimport {ChartData, RequestStates} from '@reltio/components';\nimport {DQDataLevel, DQMetric, FillRateState, TimeSeriesMetric} from '@reltio/mdm-sdk';\n\nimport {usePeriod, useZoom} from '../../../contexts/DateRangesProvider';\nimport {useEntityAndAttributeType} from '../../../contexts/EntityAndAttributeTypeProvider';\nimport {useReloadFacet} from '../../../contexts/ReloadFacetContext';\nimport {useChartData} from '../../../hooks/useChartData';\nimport {useMlDqDataRequest} from '../../../hooks/useMlDqDataRequest';\nimport {getChartState, getPercentLabel, transformTimeSeriesChartData} from '../../../services/charts';\nimport {\n formatFillRateData,\n getFillRateChartData,\n getFillRateColorByState,\n getFillRateData\n} from '../../../services/fillRate';\nimport {enrichTimeSeriesDataWithTodayData, getChartTooltipDateTitle, getTimeSeriesData} from '../../../services/mlDq';\nimport {LineChartData} from '../../../types/LineChartData';\n\nimport {ChartDataTooltip} from '../../../components/ChartDataTooltip';\nimport TimeSeriesInfoPanel from '../../../components/ChartInfoPanel/TimeSeriesInfoPanel';\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport LineChart from '../../../components/LineChart/LineChart';\n\nimport {useStyles} from '../styles';\n\nconst INFO_PANEL_HEIGHT = 36;\n\nconst tooltipKeys = [FillRateState.EXISTS, FillRateState.MISSING];\nconst metrics = [DQMetric.FILL_RATE as TimeSeriesMetric];\n\nconst getColor = () => getFillRateColorByState(FillRateState.EXISTS);\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: `${getPercentLabel(percent)} (${i18n.number(value)})`\n }))\n )(currentPayload);\n const title = getChartTooltipDateTitle(!!data.length, currentPayload.group);\n return <ChartDataTooltip data={data} title={title} />;\n }\n};\n\nconst FillRateTimeSeriesChart = () => {\n const styles = useStyles();\n const {entityType, detailedAttributeType} = useEntityAndAttributeType();\n const {getDateRange, changeZoom} = useZoom();\n const {period} = usePeriod();\n\n const entityTypeUri = entityType.uri;\n const attributeFieldName = detailedAttributeType.fieldName;\n const {\n data: mlDqData,\n state: mlDqState,\n reload: mlDqReload\n } = useMlDqDataRequest({\n entityTypeUri,\n attributeFieldName,\n period,\n metrics\n });\n\n useReloadFacet({\n state: mlDqState,\n reload: mlDqReload,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n const {data: todayData, state: todayState, reload: todayReload} = useChartData(getFillRateChartData);\n const chartData: LineChartData[] = useMemo(\n () =>\n pipe(\n getTimeSeriesData(getFillRateData),\n transformTimeSeriesChartData(DQMetric.FILL_RATE),\n enrichTimeSeriesDataWithTodayData(period, todayData.chartData, DQMetric.FILL_RATE)\n )(mlDqData),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [mlDqData, todayData]\n );\n const reloadFunction = useCallback(() => {\n mlDqState === RequestStates.ERROR && mlDqReload();\n todayState === RequestStates.ERROR && todayReload();\n }, [mlDqState, mlDqReload, todayState, todayReload]);\n\n const infoLabel = `${i18n.text('% of profiles with complete values')}:`;\n const dateRange = getDateRange();\n return (\n <DQLayoutItemContent\n data={chartData}\n loadingState={getChartState([mlDqState, todayState])}\n onRefresh={reloadFunction}\n className={styles.timeSeriesContent}\n >\n {({data, width, height}) => (\n <>\n <TimeSeriesInfoPanel\n infoLabel={infoLabel}\n dateRange={dateRange}\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 getColor={getColor}\n yAxisLabel={i18n.text('% of profiles')}\n dateRange={dateRange}\n changeZoom={changeZoom}\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: '8px',\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 from 'react';\nimport classnames from 'classnames';\nimport Chip, {ChipProps} from '@material-ui/core/Chip';\n\nimport {useZoom} from '../../contexts/DateRangesProvider';\nimport {getLabelByTimeRange} from '../../services/mlDq';\n\nimport {useStyles} from './styles';\nimport i18n from 'ui-i18n';\n\ntype Props = ChipProps & {\n disabled?: boolean;\n};\n\nconst PeriodChip = ({disabled = false, ...chipProps}: Props) => {\n const styles = useStyles();\n const {getDateRange} = useZoom();\n const label = disabled ? i18n.text('Today') : getLabelByTimeRange(getDateRange());\n\n return (\n <Chip\n classes={{\n root: classnames(styles.root, styles.disabled),\n label: styles.label\n }}\n label={label}\n {...chipProps}\n />\n );\n};\n\nexport default PeriodChip;\n","import React from 'react';\nimport i18n from 'ui-i18n';\n\nimport {ViewProps} from '../../../types/ViewProps';\nimport {usePeriod} from '../../../contexts/DateRangesProvider';\nimport {checkIsTimeSeries, hasTimeRange} 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 PeriodChip from '../../../components/PeriodChip/PeriodChip';\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 const {period} = usePeriod();\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {hasTimeRange(period) && <PeriodChip 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 {assoc, map, pick, pipe} from 'ramda';\nimport React, {useCallback, useMemo} from 'react';\nimport {TooltipProps} from 'recharts';\n\nimport i18n from 'ui-i18n';\nimport {ChartData, RequestStates} from '@reltio/components';\nimport {DQDataLevel, DQMetric, TimeSeriesMetric, UniquenessAnalysisState} from '@reltio/mdm-sdk';\n\nimport {usePeriod, useZoom} from '../../../contexts/DateRangesProvider';\nimport {useEntityAndAttributeType} from '../../../contexts/EntityAndAttributeTypeProvider';\nimport {useReloadFacet} from '../../../contexts/ReloadFacetContext';\nimport {useChartData} from '../../../hooks/useChartData';\nimport {useMlDqDataRequest} from '../../../hooks/useMlDqDataRequest';\nimport {getChartState, getPercentLabel, transformTimeSeriesChartData} from '../../../services/charts';\nimport {enrichTimeSeriesDataWithTodayData, getChartTooltipDateTitle, getTimeSeriesData} from '../../../services/mlDq';\nimport {\n formatUniquenessAnalysisData,\n getUniquenessChartData,\n getUniquenessColorByState,\n getUniquenessData\n} from '../../../services/uniquenessAnalysis';\nimport {LineChartData} from '../../../types/LineChartData';\n\nimport {ChartDataTooltip} from '../../../components/ChartDataTooltip';\nimport TimeSeriesInfoPanel from '../../../components/ChartInfoPanel/TimeSeriesInfoPanel';\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport LineChart from '../../../components/LineChart/LineChart';\n\nimport {useStyles} from '../styles';\n\nconst INFO_PANEL_HEIGHT = 36;\n\nconst tooltipKeys = [UniquenessAnalysisState.UNIQUE, UniquenessAnalysisState.NOT_UNIQUE];\nconst metrics = [DQMetric.UNIQUENESS as TimeSeriesMetric];\n\nconst getColor = () => getUniquenessColorByState(UniquenessAnalysisState.UNIQUE);\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: `${getPercentLabel(percent)} (${i18n.number(value)})`\n }))\n )(currentPayload);\n const title = getChartTooltipDateTitle(!!data.length, currentPayload.group);\n return <ChartDataTooltip data={data} title={title} />;\n }\n};\n\nconst UniquenessAnalysisTimeSeriesChart = () => {\n const styles = useStyles();\n const {entityType, detailedAttributeType} = useEntityAndAttributeType();\n const {period} = usePeriod();\n\n const entityTypeUri = entityType.uri;\n const {getDateRange, changeZoom} = useZoom();\n const attributeFieldName = detailedAttributeType.fieldName;\n const {\n data: dataMlDq,\n state: stateMlDq,\n reload: reloadMlDq\n } = useMlDqDataRequest({\n entityTypeUri,\n attributeFieldName,\n period,\n metrics\n });\n\n useReloadFacet({\n state: stateMlDq,\n reload: reloadMlDq,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n\n const {data: dataToday, state: stateToday, reload: reloadToday} = useChartData(getUniquenessChartData);\n\n const chartData: LineChartData[] = useMemo(\n () =>\n pipe(\n getTimeSeriesData(getUniquenessData),\n transformTimeSeriesChartData(DQMetric.UNIQUENESS),\n enrichTimeSeriesDataWithTodayData(period, dataToday.chartData, DQMetric.UNIQUENESS)\n )(dataMlDq),\n [dataMlDq, dataToday]\n );\n const reloadFunction = useCallback(() => {\n stateMlDq === RequestStates.ERROR && reloadMlDq();\n stateToday === RequestStates.ERROR && reloadToday();\n }, [stateMlDq, reloadMlDq, stateToday, reloadToday]);\n\n const infoLabel = `${i18n.text('% of unique distinct values')}:`;\n const dateRange = getDateRange();\n return (\n <DQLayoutItemContent\n data={chartData}\n loadingState={getChartState([stateMlDq, stateToday])}\n onRefresh={reloadFunction}\n className={styles.timeSeriesContent}\n >\n {({data, width, height}) => (\n <>\n <TimeSeriesInfoPanel\n infoLabel={infoLabel}\n dateRange={dateRange}\n chartData={chartData}\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 getColor={getColor}\n yAxisLabel={i18n.text('% of distinct values')}\n dateRange={dateRange}\n changeZoom={changeZoom}\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 {usePeriod} from '../../../contexts/DateRangesProvider';\nimport {checkIsTimeSeries, hasTimeRange} from '../../../services/mlDq';\n\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport PeriodChip from '../../../components/PeriodChip/PeriodChip';\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 const {period} = usePeriod();\n\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {hasTimeRange(period) && <PeriodChip 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 from 'react';\nimport classnames from 'classnames';\nimport Chip, {ChipProps} from '@material-ui/core/Chip';\n\nimport {RequestStates} from '@reltio/components';\n\nimport {getDetailLabel, checkIsDataQualitativeForSummary} from '../../services/attributeDetails';\nimport {useChartsDataContext} from '../../contexts/ChartsDataProvider';\nimport {AttrTypeDetailsType} from '../../types/DetailedAttributeType';\n\nimport {\n AttributeTypeDetailIcon,\n AttributeTypeDetailIconVariant\n} from '../AttributeTypeDetailIcon/AttributeTypeDetailIcon';\n\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 {\n chartsData: {data, state}\n } = useChartsDataContext();\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 rootTimeRange: {\n marginLeft: '40px'\n }\n});\n","import React from 'react';\nimport classnames from 'classnames';\nimport {ChipProps} from '@material-ui/core/Chip';\n\nimport {AttrTypeDetails, AttrTypeDetailsType} from '../../types/DetailedAttributeType';\nimport {usePeriod} from '../../contexts/DateRangesProvider';\nimport {hasTimeRange} from '../../services/mlDq';\n\nimport AttributeTypeDetailChip from '../AttributeTypeDetailChip/AttributeTypeDetailChip';\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 const {period} = usePeriod();\n\n return (\n <div className={classnames(styles.root, {[styles.rootTimeRange]: hasTimeRange(period)})}>\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 summaryWrapper: {\n display: 'flex'\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, {useMemo} from 'react';\nimport i18n from 'ui-i18n';\nimport {CircularProgress as CircularProgress} from '@material-ui/core';\nimport {Tooltip as Tooltip} from '@material-ui/core';\nimport classnames from 'classnames';\n\nimport {usePeriod} from '../../contexts/DateRangesProvider';\nimport {useEntityAndAttributeType} from '../../contexts/EntityAndAttributeTypeProvider';\nimport {DetailedAttributeType} from '../../types/DetailedAttributeType';\nimport {useEntityCount} from '../../hooks/useEntityCount';\nimport {hasTimeRange} from '../../services/mlDq';\n\nimport AttributeTypeDetails from '../AttributeTypeDetails/AttributeTypeDetails';\nimport {HeaderInfo} from './HeaderInfo';\nimport AttributeTypeIcon, {AttributeTypeIconSizes} from '../AttributeTypeIcon/AttributeTypeIcon';\nimport ChartDataTooltip from '../ChartDataTooltip/ChartDataTooltip';\n\nimport {useStyles} from './styles';\n\nexport type AttributeTypeSummaryProps = {\n detailedAttributeType: DetailedAttributeType;\n};\n\nconst AttributeTypeSummary = ({detailedAttributeType}: AttributeTypeSummaryProps) => {\n const styles = useStyles();\n const {entityType} = useEntityAndAttributeType();\n const entityTypesArray = useMemo(() => [entityType], [entityType]);\n const total = useEntityCount(entityTypesArray).getEntityCount(entityType.uri);\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 = total ? i18n.number(total) : <CircularProgress size={24} className={styles.totalLoading} />;\n\n const {period} = usePeriod();\n\n return (\n <div className={classnames({[styles.summaryWrapper]: hasTimeRange(period)})}>\n <div className={styles.header}>\n <HeaderInfo title={i18n.text('Active 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 classnames from 'classnames';\nimport React 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 {useChartsDataContext} from '../../contexts/ChartsDataProvider';\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 {\n chartsData: {data, state}\n } = useChartsDataContext();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const attributeTypesCount = countEntityTypeAttributes(metadata, entityType);\n const {activeProfiles = 0, inactiveProfiles = 0, sourceSystems = 0} = data?.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 {useEntityAndAttributeType} from '../../contexts/EntityAndAttributeTypeProvider';\nimport {DataLevelContext} from '../../contexts/DataLevelContext';\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, entityType} = useEntityAndAttributeType();\n const dataLevel = useContext(DataLevelContext);\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\nexport const 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';\nimport {always, either, isEmpty, isNil, propOr, when} from 'ramda';\n\nimport {DatePeriod, DQDataLevel, TimeSeriesDataValues, getDvfColor} from '@reltio/mdm-sdk';\n\nimport {LineChartData} from '../../../types/LineChartData';\nimport {TableChartData} from '../../../types/TableChartData';\nimport {hasTimeRange} from '../../../services/mlDq';\n\nexport const NO_DATA_FIELD = 'noData';\n\nconst getEntityLevelColumnsOptions = ({functionsCount, period}: {functionsCount: number; period: DatePeriod}) => [\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 ...(hasTimeRange(period) ? {getBarColor: getDvfColor} : {})\n }\n];\n\nconst getAttributeLevelColumnsOptions = ({functionsCount, period}: {functionsCount: number; period: DatePeriod}) => [\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 ...(hasTimeRange(period) ? {getBarColor: getDvfColor} : {})\n }\n];\n\nexport const getColumnsOptions = (dataLevel: DQDataLevel, chartData: TableChartData[], period: DatePeriod) => {\n return (dataLevel === DQDataLevel.ATTRIBUTE_TYPE ? getAttributeLevelColumnsOptions : getEntityLevelColumnsOptions)({\n functionsCount: chartData.length,\n period\n });\n};\n\nexport const getViolatedValidationData = (timeSeriesData: TimeSeriesDataValues): LineChartData => {\n const {data} = propOr({}, 'violatedProfiles', timeSeriesData);\n return when(either(isNil, isEmpty), always({[NO_DATA_FIELD]: null}))(data);\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: \"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 fontSize: '14px',\n overflow: 'hidden',\n lineHeight: '20px',\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 chartInfoPanel: {\n padding: '0 12px'\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 DQDashboardError from '../../../components/DQDashboardError/DQDashboardError';\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 <DQDashboardError\n height={height}\n errorData={{\n Icon: icon,\n title,\n message\n }}\n />\n )}\n </ReactResizeDetector>\n </BasicViewContent>\n </DQLayoutItemView>\n );\n};\n\nexport default VVFChartNoData;\n","import {useContext, useCallback} from 'react';\n\nimport {RequestStates} from '@reltio/components';\nimport {ApiErrorCode, DataValidationFunction, DQDataLevel} from '@reltio/mdm-sdk';\n\nimport {useEntityAndAttributeType} from '../../../../contexts/EntityAndAttributeTypeProvider';\nimport {DataLevelContext} from '../../../../contexts/DataLevelContext';\nimport {isReferenceChild} from '../../../../services/attributeDetails';\n\nimport {VVFNoDataChartType} from '../VVFChartNodata';\n\ntype Props = {\n dvfs: DataValidationFunction[];\n errorCode: ApiErrorCode;\n state: RequestStates;\n};\n\nexport const useNoDataDvfType = ({dvfs: activeDvfs, errorCode, state: dvfsState}: Props) => {\n const dataLevel = useContext(DataLevelContext);\n const {detailedAttributeType} = useEntityAndAttributeType();\n\n const getNoDataStatus = useCallback(\n (chartDataState: RequestStates, hasData: boolean) => {\n const chartState =\n dvfsState === RequestStates.LOADED && chartDataState === RequestStates.LOADED\n ? RequestStates.LOADED\n : dvfsState === RequestStates.ERROR || chartDataState === RequestStates.ERROR\n ? RequestStates.ERROR\n : RequestStates.LOADING;\n\n const isAttributeDataLevel = dataLevel === DQDataLevel.ATTRIBUTE_TYPE;\n const isPermissionDenied = errorCode === ApiErrorCode.ACCESS_DENIED;\n const isDVFNotSupported = isAttributeDataLevel && isReferenceChild(detailedAttributeType);\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 && !hasData;\n\n const getNoDataType = () => {\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 return {\n type: getNoDataType(),\n chartState\n };\n },\n [activeDvfs, errorCode, dvfsState, dataLevel, detailedAttributeType]\n );\n\n return getNoDataStatus;\n};\n","import {useContext, useMemo} from 'react';\nimport {propEq} from 'ramda';\n\nimport {DataValidationFunction, DQDataLevel, StatusVF} from '@reltio/mdm-sdk';\n\nimport {useEntityAndAttributeType} from '../../../../contexts/EntityAndAttributeTypeProvider';\nimport {DataLevelContext} from '../../../../contexts/DataLevelContext';\nimport {DVFContext} from '../../../../contexts/DVFContext';\nimport {getDVFsForAttribute} from '../../../../services/attributes';\n\ntype Props = {\n onlyActive?: boolean;\n};\n\nexport const useDvfs = ({onlyActive = true}: Props) => {\n const {dvfs, dvfConfigLink} = useContext(DVFContext);\n const dataLevel = useContext(DataLevelContext);\n const {detailedAttributeType} = useEntityAndAttributeType();\n\n const {data: dvfsData, state, reload, errorCode} = dvfs;\n\n const isAttributeDataLevel = dataLevel === DQDataLevel.ATTRIBUTE_TYPE;\n const currentDvfs: DataValidationFunction[] = useMemo(\n () => (isAttributeDataLevel ? getDVFsForAttribute(dvfsData, detailedAttributeType?.uri) : dvfsData) || [],\n [isAttributeDataLevel, dvfsData, detailedAttributeType?.uri]\n );\n const resultDvfs = useMemo(\n () => (onlyActive ? currentDvfs.filter(propEq('status', StatusVF.ACTIVE)) : currentDvfs),\n [currentDvfs, onlyActive]\n );\n\n return {\n dvfs: resultDvfs,\n dvfConfigLink,\n state,\n reload,\n errorCode\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 <>\n <RootRef rootRef={childrenRef}>{children}</RootRef>\n </>\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 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 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\nexport const useNumberCellStyles = makeStyles((theme) => ({\n bar: ({barColor}: {barColor: string}) => ({\n borderRadius: '0 !important',\n minHeight: '16px !important',\n position: 'initial !important' as 'initial',\n background: barColor || theme.palette.secondary.main\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 numberContainer: {\n alignItems: 'center',\n display: 'flex',\n height: '100%',\n padding: '0 10px 0 16px'\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}));\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; variant?: string}>;\n variant?: string;\n };\n columnsHeaders: TableColumnHeader[];\n};\n\nexport const LabelCellRenderer = ({value = '', columnData, rowValue: chartData, columnsHeaders, onClick}: Props) => {\n const {cellClassName, variant, 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 ? (\n <LabelRenderer variant={variant} chartData={chartData} />\n ) : (\n utils.strings.removeLineBreaks(value)\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})(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 {useNumberCellStyles} from './styles';\n\ntype Props = {\n value: number;\n columnData: {\n maxValue?: number;\n getBarColor?: (group: string) => string;\n };\n rowValue?: ChartData;\n onClick?: () => void;\n columnsHeaders: TableColumnHeader[];\n};\n\nexport const NumberCellValueRenderer = ({\n value,\n columnData: {maxValue, getBarColor},\n rowValue: chartData,\n columnsHeaders,\n onClick\n}: Props) => {\n const styles = useNumberCellStyles({barColor: getBarColor && getBarColor(chartData.group)});\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}: Dimensions) => ({\n width: width,\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\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 getBarColor?: (group: string) => string;\n variant?: string;\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 display: 'flex',\n flexDirection: 'column'\n }\n}));\n","import React, {ReactElement, useCallback, useMemo, useState} from 'react';\n\nimport {withPercents, toggleSortOrder, RequestStates} from '@reltio/components';\n\nimport {valueComparator as defaultComparator} from '../../../services/tableCharts';\nimport {hasTimeRange} from '../../../services/mlDq';\nimport {DQDashboardView} from '../../../types/DQDashboardView';\nimport {ErrorData} from '../../../types/ErrorData';\nimport {TableChartData} from '../../../types/TableChartData';\nimport {usePeriod} from '../../../contexts/DateRangesProvider';\n\nimport PeriodChip from '../../../components/PeriodChip/PeriodChip';\nimport DQLayoutItemHeader from '../../../components/DQLayoutItemHeader/DQLayoutItemHeader';\nimport DQLayoutItemContent from '../../../components/DQLayoutItemContent/DQLayoutItemContent';\nimport DQLayoutItemView from '../../../components/DQLayoutItemView/DQLayoutItemView';\nimport TableWithBars, {ColumnsOptions} from '../../../components/CustomTableWithBars/TableWithBars';\n\nimport {useStyles} from './styles';\nimport {DQDataLevel} from '@reltio/mdm-sdk';\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 contentChildren?: React.ReactNode;\n noDataComponentData?: ErrorData;\n dataLevel?: DQDataLevel;\n};\n\nconst CustomTableWithBarsChart = ({\n config,\n data,\n title,\n columnsOptions,\n infoTooltipTitle,\n customComparator,\n onItemClick,\n contentChildren,\n state,\n onRefresh,\n dataLevel = DQDataLevel.ATTRIBUTE_TYPE\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 {period} = usePeriod();\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {hasTimeRange(period) && dataLevel === DQDataLevel.ATTRIBUTE_TYPE && <PeriodChip 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 <>\n {contentChildren}\n <TableWithBars\n {...{\n data,\n width,\n height,\n columnsOptions,\n sorting: {\n field: sortField,\n order: sortDirection\n },\n onSort: handleSort,\n onItemClick\n }}\n />\n </>\n );\n }}\n </DQLayoutItemContent>\n </DQLayoutItemView>\n );\n};\n\nexport default withPercents(CustomTableWithBarsChart);\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 TotalInfo = ({isDataValid, totalProfiles, invalidProfiles}: Props) => {\n const styles = useStyles();\n\n const getTotalInfo = () => {\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 </>\n ) : null;\n };\n const totalInfo = getTotalInfo();\n return totalInfo && <Typography className={styles.titleCount}>{totalInfo}</Typography>;\n};\n","import React, {useCallback, useContext, useMemo} from 'react';\nimport {useSelector} from 'react-redux';\nimport {pluck} from 'ramda';\n\nimport i18n from 'ui-i18n';\nimport mdmModule from '@reltio/mdm-module';\nimport {ApiErrorCode, DQDataLevel, Metadata} from '@reltio/mdm-sdk';\nimport {RequestStates} from '@reltio/components';\n\nimport {usePeriod} from '../../../contexts/DateRangesProvider';\nimport {DataLevelContext} from '../../../contexts/DataLevelContext';\nimport {useEntityAndAttributeType} from '../../../contexts/EntityAndAttributeTypeProvider';\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 {\n getValidationChartData,\n getEntityLevelValidationChartData,\n getValidationSearchState,\n valueComparator\n} from '../../../services/tableCharts';\nimport {getColumnsOptions} from './helpers';\nimport {useNoDataDvfType} from './hooks/useNoDataDvfType';\nimport {useDvfs} from './hooks/useDvfs';\nimport {useReloadFacet} from '../../../contexts/ReloadFacetContext';\n\nimport CustomTableWithBarsChart from '../CustomTableWithBarsChart/CustomTableWithBarsChart';\nimport VVFChartNoData, {VVFNoDataChartType} from './VVFChartNodata';\nimport {ChartDataTooltip, InfoDataRenderer} from '../../../components/ChartDataTooltip';\nimport ChartInfoPanel from '../../../components/ChartInfoPanel/ChartInfoPanel';\nimport {TotalInfo} from './TotalInfo';\n\nimport {useStyles} from './styles';\n\nconst ViolatedValidationFuncChart = (props: ViewProps) => {\n const styles = useStyles();\n const {config} = props;\n\n const dvfData = useDvfs({});\n const {dvfs, dvfConfigLink, errorCode: dvfErrorCode, reload: dvfsReload, state: dvfsState} = dvfData;\n const getNoDataStatus = useNoDataDvfType(dvfData);\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const dataLevel = useContext(DataLevelContext);\n const isAttributeDataLevel = dataLevel === DQDataLevel.ATTRIBUTE_TYPE;\n const {period} = usePeriod();\n const {entityType} = useEntityAndAttributeType();\n const entityTypeUri = entityType.uri;\n\n const {\n data: chartData,\n state,\n reload\n } = useChartData(\n isAttributeDataLevel ? getValidationChartData(dvfs) : getEntityLevelValidationChartData(dvfs, metadata)\n );\n const hasData = !!chartData.length;\n const {type: noDataType, chartState} = getNoDataStatus(state, hasData);\n const entityTypesArray = useMemo(() => [entityType], [entityType]);\n const dvfUris = useMemo(() => pluck('uri', dvfs), [dvfs]);\n const invalidProfiles = useInvalidProfiles({entityTypeUri, dvfUris});\n const {getEntityCount} = useEntityCount(entityTypesArray);\n const totalProfiles = getEntityCount(entityTypeUri);\n const searchProfiles = useSearchRedirect(getValidationSearchState(dvfs));\n\n const isLoadingError = chartState === RequestStates.ERROR && dvfErrorCode !== ApiErrorCode.DVF_NOT_CONFIGURED;\n\n const totalInfo = !isLoadingError &&\n noDataType !== VVFNoDataChartType.DVF_NOT_CONFIGURE &&\n chartState !== RequestStates.LOADING && (\n <TotalInfo\n isDataValid={VVFNoDataChartType.DATA_VALID === noDataType}\n totalProfiles={totalProfiles}\n invalidProfiles={invalidProfiles}\n />\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 contentChildren = (\n <div className={styles.chartInfoPanel}>\n <ChartInfoPanel label={`${i18n.text('Profiles with invalid data')}:`} info={totalInfo} />\n </div>\n );\n\n const columnsOptions = getColumnsOptions(dataLevel, chartData, period);\n\n useReloadFacet({\n state,\n reload,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n\n const reloadFunction = useCallback(() => {\n dvfsState === RequestStates.ERROR && dvfsReload();\n state === RequestStates.ERROR && reload();\n }, [dvfsState, dvfsReload, state, reload]);\n\n return noDataType ? (\n <VVFChartNoData\n config={config}\n chartType={noDataType}\n title={i18n.text(config.title)}\n infoTooltipTitle={infoTooltipTitle}\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 state={chartState}\n onRefresh={reloadFunction}\n customComparator={valueComparator}\n infoTooltipTitle={infoTooltipTitle}\n columnsOptions={columnsOptions}\n contentChildren={contentChildren}\n dataLevel={dataLevel}\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 // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [entityTypeUri, dvfUris]);\n\n return invalidProfilesCount;\n};\n","import React, {useCallback, useContext, useMemo} from 'react';\nimport {TooltipProps} from 'recharts';\nimport {isNil, map, pipe, propSatisfies, keys, reduce, reject, uniq, without} from 'ramda';\n\nimport i18n from 'ui-i18n';\nimport {DQDataLevel, DataValidationFunction, TimeSeriesMetric, getLabel, getDvfColor, DQMetric} from '@reltio/mdm-sdk';\nimport {ChartData, RequestStates} from '@reltio/components';\n\nimport {getTimeSeriesData, getChartTooltipDateTitle, enrichTimeSeriesDataWithTodayData} from '../../../services/mlDq';\nimport {getChartState} from '../../../services/charts';\nimport {useMlDqDataRequest} from '../../../hooks/useMlDqDataRequest';\nimport {useEntityAndAttributeType} from '../../../contexts/EntityAndAttributeTypeProvider';\nimport {useReloadFacet} from '../../../contexts/ReloadFacetContext';\nimport {DataLevelContext} from '../../../contexts/DataLevelContext';\nimport {LineChartData} from '../../../types/LineChartData';\nimport {usePeriod, useZoom} from '../../../contexts/DateRangesProvider';\nimport {ViewProps} from '../../../types/ViewProps';\nimport {getViolatedValidationData, NO_DATA_FIELD} from './helpers';\nimport {findDVFByUri, getValidationChartData} from '../../../services/tableCharts';\nimport {useNoDataDvfType} from './hooks/useNoDataDvfType';\nimport {useChartData} from '../../../hooks/useChartData';\nimport {useDvfs} from './hooks/useDvfs';\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 PeriodChip from '../../../components/PeriodChip/PeriodChip';\nimport {ChartDataTooltip, InfoDataRenderer, TooltipWithSquares} from '../../../components/ChartDataTooltip';\nimport VVFChartNoData, {VVFNoDataChartType} from './VVFChartNodata';\n\n// TODO get rid of hardcoded metric\nconst VIOLATED_PROFILES_METRIC = 'violatedProfiles';\nconst metrics = [VIOLATED_PROFILES_METRIC as TimeSeriesMetric];\n\nconst getTooltip =\n (dvfs: DataValidationFunction[], dataKeys: string[]) =>\n ({active, payload}: TooltipProps) => {\n if (active && payload && payload.length) {\n const {payload: currentPayload} = payload[0];\n const data: ChartData[] = pipe(\n map((functionId: string) => {\n const dvf = findDVFByUri(dvfs, functionId);\n return {\n label: getLabel(dvf?.label || dvf?.name),\n value: currentPayload[functionId],\n group: functionId\n };\n }),\n reject(propSatisfies(isNil, 'value'))\n )(dataKeys);\n const title = getChartTooltipDateTitle(!!data.length, currentPayload.group);\n return <TooltipWithSquares title={title} data={data} getColor={getDvfColor} />;\n }\n };\n\nconst ViolatedValidationFuncTimeSeriesChart = (props: ViewProps) => {\n const {config} = props;\n const {title} = config;\n const {period} = usePeriod();\n\n const dvfData = useDvfs({onlyActive: false});\n const {dvfs, dvfConfigLink, reload: reloadDvf, state: stateDvf} = dvfData;\n const {getDateRange, changeZoom} = useZoom();\n const getNoDataStatus = useNoDataDvfType(dvfData);\n const {entityType, detailedAttributeType} = useEntityAndAttributeType();\n const dataLevel = useContext(DataLevelContext);\n const entityTypeUri = entityType.uri;\n const attributeFieldName = detailedAttributeType?.fieldName;\n const {\n data: dataMlDq,\n state: stateMlDq,\n reload: reloadMlDq\n } = useMlDqDataRequest({\n entityTypeUri,\n attributeFieldName,\n period,\n metrics\n });\n const {data: dataToday, state: stateToday, reload: reloadToday} = useChartData(getValidationChartData(dvfs));\n const chartData: LineChartData[] = useMemo(\n () =>\n pipe(\n getTimeSeriesData(getViolatedValidationData),\n enrichTimeSeriesDataWithTodayData(period, dataToday, DQMetric.DATA_VALIDATION)\n )(dataMlDq),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dataMlDq, dataToday]\n );\n\n useReloadFacet({\n state: stateMlDq,\n reload: reloadMlDq,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n\n const dataKeys = pipe(\n reduce((acc: string[], data: LineChartData) => acc.concat(keys(data)), []),\n uniq,\n without(['label', 'group'])\n )(chartData);\n\n const hasData = dataKeys.toString() !== NO_DATA_FIELD;\n\n const {type: noDataType, chartState} = getNoDataStatus(getChartState([stateMlDq, stateToday]), hasData);\n\n const infoTooltipTitle = (\n <ChartDataTooltip\n title={i18n.text('Profiles with invalid data over time')}\n data={[{value: i18n.text('Shows the number of profiles that violate active validation functions')}]}\n DataRenderer={InfoDataRenderer}\n />\n );\n\n const reloadFunction = useCallback(() => {\n stateDvf === RequestStates.ERROR && reloadDvf();\n stateMlDq === RequestStates.ERROR && reloadMlDq();\n stateToday === RequestStates.ERROR && reloadToday();\n }, [stateDvf, reloadDvf, stateMlDq, reloadMlDq, stateToday, reloadToday]);\n\n const titleChildren = <PeriodChip />;\n const loadingState =\n chartState === RequestStates.LOADING ? RequestStates.LOADING : getChartState([stateMlDq, stateToday]);\n return noDataType === VVFNoDataChartType.DVF_NOT_SUPPORTED ||\n noDataType === VVFNoDataChartType.PERMISSION_DENIED ? (\n <VVFChartNoData\n config={config}\n chartType={noDataType}\n title={i18n.text(title)}\n infoTooltipTitle={infoTooltipTitle}\n titleChildren={titleChildren}\n dvfConfigLink={dvfConfigLink}\n dataLevel={dataLevel}\n />\n ) : (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {titleChildren}\n </DQLayoutItemHeader>\n <DQLayoutItemContent data={chartData} loadingState={loadingState} onRefresh={reloadFunction}>\n {({data, width, height}) => (\n <div>\n <LineChart\n width={width}\n height={height}\n data={data}\n keys={dataKeys}\n getTooltip={getTooltip(dvfs, dataKeys)}\n getColor={getDvfColor}\n yAxisLabel={i18n.text('No. of profiles')}\n isPercent={false}\n dateRange={getDateRange()}\n changeZoom={changeZoom}\n />\n </div>\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 classnames from 'classnames';\nimport React, {useMemo} from 'react';\nimport i18n from 'ui-i18n';\n\nimport {isDateType, isSSNType} from '@reltio/mdm-sdk';\n\nimport {ChartDataTooltip, InfoDataRenderer} from '../../components/ChartDataTooltip';\nimport {useEntityAndAttributeType} from '../../contexts/EntityAndAttributeTypeProvider';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {convertDateLabelsInChartData} from '../../services/charts';\nimport {getFrequencyAnalysisSearchState, getFrequencyChartData, getRowsCounterLabel} from '../../services/tableCharts';\nimport {ViewProps} from '../../types/ViewProps';\n\nimport CustomTableWithBarsChart from './CustomTableWithBarsChart/CustomTableWithBarsChart';\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 = useEntityAndAttributeType().detailedAttributeType?.type;\n const preparedData = useMemo(\n () => (isDateType(attributeType) ? convertDateLabelsInChartData(chartData, attributeType) : chartData),\n [chartData]\n );\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';\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 paddingTop: '3px',\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 ? 0 : 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 {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 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 from 'react';\nimport {Bar, BarChart, CartesianGrid, Label, Tooltip as ChartTooltip, XAxis, YAxis} from 'recharts';\nimport {ChartData, RequestStates} from '@reltio/components';\n\nimport {usePeriod} from '../../../contexts/DateRangesProvider';\nimport getBarChartSettings from './getBarChartSettings';\nimport {DQDashboardView} from '../../../types/DQDashboardView';\nimport {InfoPanelData} from '../../../types/InfoPanelData';\nimport BarChartOptions from '../../../types/BarChartOptions';\nimport {hasTimeRange} from '../../../services/mlDq';\n\nimport {BarTooltip} from './BarTooltip/BarTooltip';\nimport {InfoPanel} from './InfoPanel';\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 PeriodChip from '../../../components/PeriodChip/PeriodChip';\n\nimport {useStyles} from './styles';\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};\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 {period} = usePeriod();\n return (\n <DQLayoutItemView config={config}>\n <DQLayoutItemHeader title={title} infoTooltipTitle={infoTooltipTitle}>\n {hasTimeRange(period) && <PeriodChip 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 label: ({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","import React from 'react';\n\nimport {getSourceColor} from '@reltio/mdm-sdk';\nimport {SourceIcon} from '@reltio/components';\n\nimport {TableChartData} from '../../types/TableChartData';\n\nimport {useLabelStyles} from './styles';\n\ntype Props = {\n chartData: TableChartData;\n variant?: string;\n};\n\nexport const INCLUDE_SOURCE_ICON = 'includeSourceIcon';\n\nconst SourceLabelRenderer = ({chartData, variant}: Props) => {\n const {group, label} = chartData;\n const styles = useLabelStyles({color: getSourceColor(group)});\n return (\n <>\n {variant === INCLUDE_SOURCE_ICON ? (\n <SourceIcon sourceType={group} className={styles.icon} classes={{textRoot: styles.text}} />\n ) : (\n <div className={styles.label} />\n )}\n {label}\n </>\n );\n};\n\nexport default SourceLabelRenderer;\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport i18n from 'ui-i18n';\nimport {Metadata} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\n\nimport {useChartData} from '../../../hooks/useChartData';\nimport {useSearchRedirect} from '../../../hooks/useSearchRedirect';\nimport {getCrosswalkAnalysisData, getCrosswalkAnalysisSearchState} from '../../../services/barCharts';\nimport {valueComparator} from '../../../services/tableCharts';\nimport {ViewProps} from '../../../types/ViewProps';\n\nimport CustomTableWithBarsChart from '../CustomTableWithBarsChart/CustomTableWithBarsChart';\nimport SourceLabelRenderer, {INCLUDE_SOURCE_ICON} from '../../../components/SourceLabelRenderer/SourceLabelRenderer';\nimport {ChartDataTooltip, InfoDataRenderer} from '../../../components/ChartDataTooltip';\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 variant: INCLUDE_SOURCE_ICON\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 from 'react';\nimport i18n from 'ui-i18n';\n\nimport {useEntityAndAttributeType} from '../../contexts/EntityAndAttributeTypeProvider';\nimport {useChartData} from '../../hooks/useChartData';\nimport {useSearchRedirect} from '../../hooks/useSearchRedirect';\nimport {getValueDistributionData, getValueDistributionSearchState} from '../../services/barCharts';\nimport {ViewProps} from '../../types/ViewProps';\n\nimport CustomBarChart from './CustomBarChart/CustomBarChart';\n\nconst ValueDistributionChart = ({config}: ViewProps) => {\n const attributeType: string = useEntityAndAttributeType().detailedAttributeType?.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 useStyles = makeStyles((theme: Theme & {tooltip: Record<string, string | number>}) => ({\n consolidationRateWrapper: {\n display: 'flex'\n },\n ratePercent: {\n fontWeight: 700,\n lineHeight: '20px',\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';\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 <>\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 </>\n );\n};\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, useMemo, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport i18n from 'ui-i18n';\n\nimport {ChartData} from '@reltio/components';\nimport mdmModule from '@reltio/mdm-module';\nimport {getSourceColor, getSourceSystemLabel, Metadata} from '@reltio/mdm-sdk';\n\nimport {useChartsDataContext} from '../../../contexts/ChartsDataProvider';\nimport {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';\n\nimport StackedBarChart from '../CustomBarChart/StackedBarChart';\nimport {ConsolidationPercentage} from './ConsolidationPercentage';\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 SourceLabelRenderer from '../../../components/SourceLabelRenderer/SourceLabelRenderer';\nimport ChartInfoPanel from '../../../components/ChartInfoPanel/ChartInfoPanel';\nimport {YAxisTickRenderer} from './YAxisTickRenderer';\n\nimport {useStyles} from './styles';\n\nconst STACKED_BAR_CHART_WIDTH = 256;\nconst CHART_INFO_PANEL_HEIGHT = 34;\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 {\n chartsData: {data: chartsData}\n } = useChartsDataContext();\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}></DQLayoutItemHeader>\n <DQLayoutItemContent data={tableChartData} loadingState={state} onRefresh={reload}>\n {({height = 0, width = 0}) => {\n const chartHeight = chartsData.consolidationRate ? height - CHART_INFO_PANEL_HEIGHT : height;\n return (\n <>\n {chartsData.consolidationRate && (\n <ChartInfoPanel\n label={`${i18n.text('Consolidation rate')}:`}\n info={<ConsolidationPercentage data={chartsData} />}\n />\n )}\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={chartHeight}\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: chartHeight,\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 }}\n </DQLayoutItemContent>\n </DQLayoutItemView>\n );\n};\nexport default ConsolidationRateChart;\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 {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, useEffect, useState} from 'react';\n\nimport {ChartData, RequestStates, useSafePromise} from '@reltio/components';\nimport {FilterOptions, getTotals} from '@reltio/mdm-sdk';\n\nimport {useEntityAndAttributeType} from '../contexts/EntityAndAttributeTypeProvider';\nimport {formatRDMTranscodeData} from '../services/rdmTranscode';\n\nexport const useRDMChartDataRequest = () => {\n const {entityType} = useEntityAndAttributeType();\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 // eslint-disable-next-line react-hooks/exhaustive-deps\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 {assoc, map} from 'ramda';\nimport React, {memo, useMemo} from 'react';\n\nimport {ReltioGridLayoutItem} from '@reltio/mdm-sdk';\nimport {ReltioGridLayout, ReltioGridLayoutOptions} from '@reltio/components';\n\nimport {DQDashboardView} from '../../types/DQDashboardView';\nimport {DQDashboardLayoutItem} from '../DQDashboardLayoutItem/DQDashboardLayoutItem';\n\nexport type DQDashboardLayoutProps = {\n views: DQDashboardView[];\n layout?: ReltioGridLayoutItem[];\n layoutOptions?: ReltioGridLayoutOptions;\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 staticLayout = useMemo(() => reltioGridLayoutToStaticLayout(layout), [layout]);\n return (\n <ReltioGridLayout\n LayoutItem={DQDashboardLayoutItem}\n views={views}\n layout={staticLayout}\n layoutOptions={layoutOptions}\n />\n );\n};\n\nexport default memo(DQDashboardLayout);\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles({\n warning: {\n fontSize: '13px',\n color: 'rgba(0, 0, 0, 0.54)',\n height: '47px',\n border: '1px solid rgba(0, 0, 0, 0.12)',\n margin: '14px 11px 0 12px',\n display: 'flex',\n alignItems: 'center',\n paddingLeft: '18px',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n errorIcon: {\n color: 'rgba(0, 0, 0, 0.54)',\n marginRight: '14px'\n }\n});\n","import React from 'react';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport {useStyles} from './styles';\n\nconst Warning = ({text}) => {\n const styles = useStyles();\n return (\n text && (\n <div className={styles.warning} data-reltio-id=\"dq-warning\">\n <ErrorIcon className={styles.errorIcon} />\n {text}\n </div>\n )\n );\n};\n\nexport default Warning;\n","import {CSSProperties} from 'react';\nimport {makeStyles} from '@material-ui/core/styles';\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(() => ({\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 height: 'calc(100% - 56px)',\n position: 'relative'\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 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 periodSelector: {\n position: 'relative',\n margin: '0',\n height: '30px',\n borderRadius: '6px',\n border: '1px solid rgba(0, 0, 0, 0.12)',\n flexBasis: '196px'\n },\n paper: {\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 '& ul>div': {\n minWidth: '300px'\n }\n },\n input: {\n padding: '8px 0 8px 16px',\n fontSize: '13px'\n },\n inputRoot: {\n backgroundColor: 'transparent',\n paddingRight: 4\n },\n dropdownIndicator: {\n width: '18px',\n height: '18px',\n '& svg': {\n width: '18px',\n height: '18px'\n }\n },\n layoutRoot: {\n overflow: 'auto',\n backgroundColor: '#EEEEEE',\n height: '100%',\n flexGrow: 1,\n padding: '0 4px',\n boxSizing: 'border-box'\n }\n}));\n","import React, {useEffect, useMemo} from 'react';\nimport {equals, pipe, reject} from 'ramda';\n\nimport {DQDataLevel, DQMetric, ReltioGridLayoutItem, TEntityType} from '@reltio/mdm-sdk';\nimport i18n from 'ui-i18n';\n\nimport {DataLevelContext} from '../../contexts/DataLevelContext';\nimport {useChartsDataContext} from '../../contexts/ChartsDataProvider';\nimport {useEntityAndAttributeType} from '../../contexts/EntityAndAttributeTypeProvider';\nimport {useReloadFacet} from '../../contexts/ReloadFacetContext';\nimport {usePermissionsContext} from '../../contexts/PermissionsProvider';\nimport {DQDashboardPerspectiveConfig} from '../../types/DQDashboardPerspectiveConfig';\nimport {getLayoutByAttributeType, getMetricsFromViews, getAttributeLevelViews} from '../../services/charts';\nimport {isReferenceChild} from '../../services/attributeDetails';\nimport {useChartsDataRequest} from '../../hooks/useChartsDataRequest';\n\nimport DQDashboardLayout from '../DQDashboardLayout/DQDashboardLayout';\nimport Warning from '../Warning/Warning';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: DQDashboardPerspectiveConfig;\n entityType?: TEntityType;\n};\n\nconst AttributeLevelLayout = ({config, entityType}: Props) => {\n const styles = useStyles();\n const {detailedAttributeType} = useEntityAndAttributeType();\n const {hasRestrictions, isTimeSeriesAvailable} = usePermissionsContext();\n const customAttributeLayouts = config.layoutsByDataLevel?.[DQDataLevel.ATTRIBUTE_TYPE];\n const layout = useMemo(\n (): ReltioGridLayoutItem[] =>\n getLayoutByAttributeType(customAttributeLayouts, detailedAttributeType?.type, isTimeSeriesAvailable),\n [detailedAttributeType?.type, customAttributeLayouts]\n );\n\n const views = useMemo(\n () => getAttributeLevelViews(config.viewsByDataLevel, detailedAttributeType?.type, layout),\n [config.viewsByDataLevel, detailedAttributeType?.type, layout]\n );\n\n const attributeLevelMetrics = useMemo(\n () =>\n pipe(getMetricsFromViews, (metrics: DQMetric[]) =>\n isReferenceChild(detailedAttributeType) ? reject(equals(DQMetric.DATA_VALIDATION))(metrics) : metrics\n )(views),\n [views, detailedAttributeType]\n );\n\n const chartsData = useChartsDataRequest({\n entityType,\n detailedAttributeType,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE,\n metrics: attributeLevelMetrics\n });\n const {changeChartsData} = useChartsDataContext();\n useEffect(() => changeChartsData(chartsData), [chartsData]);\n useReloadFacet({\n state: chartsData.state,\n reload: chartsData.reload,\n dataLevel: DQDataLevel.ATTRIBUTE_TYPE\n });\n return (\n <DataLevelContext.Provider value={DQDataLevel.ATTRIBUTE_TYPE}>\n <div className={styles.layoutRoot}>\n {hasRestrictions && (\n <Warning\n text={i18n.text(\n 'Not seeing the data you expected for this attribute? Contact your tenant admin to verify permissions.'\n )}\n />\n )}\n <DQDashboardLayout views={views} layout={layout} />\n </div>\n </DataLevelContext.Provider>\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 {useEntityAndAttributeType} from '../../contexts/EntityAndAttributeTypeProvider';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n dataLevel: DQDataLevel;\n onChange: (dataLevel: DQDataLevel) => void;\n};\nconst DataLevelBreadcrumbs = ({dataLevel, onChange}: Props) => {\n const styles = useStyles();\n const {detailedAttributeType, setDetailedAttributeType} = useEntityAndAttributeType();\n const handleChangeDataLevel = (dataLevel: DQDataLevel) => () => {\n if (dataLevel === DQDataLevel.ENTITY_TYPE) {\n setDetailedAttributeType(null);\n }\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 {find, map, pipe, pluck, propOr, propEq, sum, without} from 'ramda';\n\nexport type PageSettings = {\n index: number;\n width?: number;\n}[];\n\nexport const calculatePagePartsWidth = ({pages, width: allWidth}: {pages: PageSettings[]; width: number}) => {\n return pages.reduce((acc: PageSettings[], pagesettings: PageSettings) => {\n const fixedWidth = pagesettings.reduce((width, pagePart) => {\n return width + (pagePart?.width || 0);\n }, 0);\n\n acc.push(\n pagesettings.map(({width: partWidth, index}) =>\n partWidth\n ? {\n index,\n width: partWidth\n }\n : {\n index,\n width: allWidth - fixedWidth\n }\n )\n );\n return acc;\n }, []);\n};\n\nconst getPagePartWidth = (pagePartIndex: number) => pipe(find(propEq('index', pagePartIndex)), propOr(0, 'width'));\n\nexport const getPageIndexes = pluck('index');\n\nexport const getPagePartStyleWidth = ({\n pagesSettings,\n page,\n pagePartIndex\n}: {\n pagePartIndex: number;\n page: number;\n pagesSettings: PageSettings[];\n}) => {\n const pageIndexes = getPageIndexes(pagesSettings[page]);\n const minCurrentIndex = Math.min(...pageIndexes);\n const maxCurrentIndex = Math.max(...pageIndexes);\n\n if (pagePartIndex < minCurrentIndex || pagePartIndex > maxCurrentIndex) {\n return pipe(\n find((pageSettings, indexPage) => indexPage !== page),\n getPagePartWidth(pagePartIndex)\n )(pagesSettings);\n } else return getPagePartWidth(pagePartIndex)(pagesSettings[page]);\n};\n\nexport const getLeftPageOffset = ({page, pagesSettings}: {page: number; pagesSettings: PageSettings[]}) => {\n const pageIndexes = getPageIndexes(pagesSettings[page]);\n const prevPageIndexes = page === 0 ? [] : getPageIndexes(pagesSettings[page - 1]);\n const leftPagesIndexes = without(pageIndexes, prevPageIndexes);\n\n return page === 0\n ? 0\n : -pipe(\n map((pagePartIndex) => getPagePartWidth(pagePartIndex)(pagesSettings[page - 1])),\n sum\n )(leftPagesIndexes);\n};\n","import {makeStyles} from '@material-ui/core/styles';\n\ntype StyleProps = {\n transitionTime: number;\n pagesCount: number;\n};\n\nexport const useStyles = makeStyles(() => ({\n root: ({transitionTime}: StyleProps) => ({\n transition: `left ${transitionTime}s ease 0s`,\n height: '100%',\n width: '100%',\n position: 'absolute'\n }),\n pagesWrapper: ({pagesCount}: StyleProps) => ({\n display: 'flex',\n height: '100%',\n width: `${100 * pagesCount}%`\n }),\n page: {\n display: 'flex'\n }\n}));\n","import React, {useEffect, useState} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {\n PageSettings,\n calculatePagePartsWidth,\n getPagePartStyleWidth,\n getLeftPageOffset,\n getPageIndexes\n} from './helpers';\n\nimport {useStyles} from './styles';\n\nconst TRANSITION_TIMEOUT_MS = 300;\n\nexport type ContentSliderProps = {\n page: number;\n pages: PageSettings[];\n children?: React.ReactNodeArray;\n startSliding?: () => void;\n endSliding?: () => void;\n};\n\nconst ContentSlider = ({page, children, pages, startSliding, endSliding}: ContentSliderProps) => {\n const styles = useStyles({\n transitionTime: TRANSITION_TIMEOUT_MS / 1000,\n pagesCount: pages.length\n });\n\n const [savedPage, setSavedPage] = useState(0);\n useEffect(() => {\n startSliding && startSliding();\n setTimeout(() => {\n setSavedPage(page);\n endSliding && endSliding();\n }, TRANSITION_TIMEOUT_MS);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [page]);\n\n const currentPageIndexes = getPageIndexes(pages[page]);\n\n return (\n <ReactResizeDetector refreshMode=\"debounce\" refreshRate={100} handleWidth>\n {({width = 250}: {width: number}) => {\n const pagesSettings = calculatePagePartsWidth({pages, width});\n const left = getLeftPageOffset({page, pagesSettings});\n\n return (\n <div className={styles.root} style={{left}}>\n <div className={styles.pagesWrapper}>\n {children.map((component, index) => {\n const showComponent = page !== savedPage || currentPageIndexes.includes(index);\n const styleWidth = getPagePartStyleWidth({\n pagesSettings,\n page: page,\n pagePartIndex: index\n });\n\n return (\n <section className={styles.page} style={{width: styleWidth}} key={index}>\n {showComponent && component}\n </section>\n );\n })}\n </div>\n </div>\n );\n }}\n </ReactResizeDetector>\n );\n};\n\nexport default ContentSlider;\n","import {makeStyles} from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n height: '100%',\n verticalAlign: 'top',\n position: 'relative',\n boxSizing: 'border-box'\n },\n entityLevelBar: {\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 padding: '52px 0',\n marginBottom: '8px',\n lineHeight: '28px'\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 whiteSpace: 'nowrap'\n }\n}));\n","import React from 'react';\nimport RightArrowIcon from '@material-ui/icons/ChevronRight';\n\nimport i18n from 'ui-i18n';\nimport {getLabel, TEntityType} from '@reltio/mdm-sdk';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n showEntityLevel: () => void;\n entityType: TEntityType;\n};\n\nconst DataLevelSwitcher = ({showEntityLevel, entityType}: Props) => {\n const styles = useStyles();\n\n const expandButtonTitle = `${i18n.text('Entity')}: ${getLabel(entityType.label)} ${i18n.text('overview')}`;\n return (\n <div className={styles.root} onClick={showEntityLevel}>\n <div className={styles.entityLevelBar} data-reltio-id=\"reltio-dq-dashboard-entity-level-bar-button\">\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 );\n};\n\nexport default DataLevelSwitcher;\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 {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 noDataFilterOptions = [\n {\n label: i18n.text('Show attributes with no data'),\n value: EmptinessFilterValue.SHOW_EMPTY,\n group: 'emptiness'\n }\n];\n\nexport const getNoDataOptions = (): FilterOptionsGroup => {\n return {\n label: '',\n options: noDataFilterOptions\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({\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((theme) => ({\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 noData: {\n '&::before': {\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 noDataLabel: {\n fontSize: '12px',\n color: theme.palette.text.secondary,\n lineHeight: '16px',\n marginTop: '4px'\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';\nimport i18n from 'ui-i18n';\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 noData = !hasFillRate && !isLoading;\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, {[styles.clickableItem]: !hasChildren, [styles.noData]: noData})}\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 {noData && !hasChildren && (\n <div className={styles.noDataLabel}>{i18n.text('No data')}</div>\n )}\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 {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 classnames from 'classnames';\nimport {assoc, equals, isEmpty, pathOr} from 'ramda';\nimport React, {useContext, useEffect, useMemo, useRef, useState} from 'react';\nimport ReactResizeDetector from 'react-resize-detector';\nimport {FixedSizeList as List} from 'react-window';\n\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS, RequestStates} from '@reltio/components';\nimport {TEntityType} from '@reltio/mdm-sdk';\n\nimport {useChartsDataContext} from '../../contexts/ChartsDataProvider';\nimport {DVFContext} from '../../contexts/DVFContext';\nimport {useAttrTypeDetails} from '../../hooks/useAttrTypeDetails';\nimport {useFillRateRequest} from '../../hooks/useFillRateRequest';\nimport {formatFillRateData} from '../../services/fillRate';\nimport {AttributeItemType, DetailedAttributeType} from '../../types/DetailedAttributeType';\nimport {EmptyStateVariants} from '../../types/EmptyStateVariants';\nimport {FilterOption} from '../../types/FilterOption';\nimport {\n noDataFilterOptions,\n filterItemsByDetails,\n filterItemsByEmptiness,\n getAtrributeFieldNames,\n getDetailedAttrTypeByFieldName,\n getDetailsOptions,\n getNoDataOptions,\n getFillRateByAttributeType,\n getFirstSimpleDetailedAttrType,\n getIndexByFieldName,\n rejectCollapsedItemsChildren\n} from './helpers';\n\nimport AttributeListItem from '../AttributeListItem/AttributeListItem';\nimport AttributesFilters from '../AttributesFilters/AttributesFilters';\nimport DQDashboardError from '../DQDashboardError/DQDashboardError';\n\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 || noDataFilterOptions\n );\n const [selectedFieldName, setSelectedFieldName] = useState(defaultFieldName);\n const [fillRates, setFillRates] = useState({});\n const {\n chartsData: {data: chartsData}\n } = useChartsDataContext();\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];\n setFillRates((fillRates) =>\n !fillRateFromChartsData || equals(fillRateForSelectedAttribute, fillRateFromChartsData)\n ? fillRates\n : assoc(selectedFieldName, fillRateFromChartsData, fillRates)\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [chartsData?.fillRate]);\n\n const isFillRateNotLoaded = fillRatesState === RequestStates.INIT || fillRatesState === RequestStates.LOADING;\n const isLoading = isFillRateNotLoaded || dvfState === RequestStates.LOADING || dvfState === RequestStates.INIT;\n\n const isDVFLoaded = dvfState === RequestStates.LOADED || dvfState === RequestStates.ERROR;\n const isFillRateLoaded = fillRatesState === RequestStates.LOADED;\n\n const {filteredItems, filterOptions} = useMemo(() => {\n const filteredByEmptinessItems = isFillRateLoaded\n ? filterItemsByEmptiness(selectedFilterOptions, fillRates, items)\n : items;\n const detailsFilterOptions = getDetailsOptions(filteredByEmptinessItems);\n\n const filteredItems = isDVFLoaded\n ? filterItemsByDetails(selectedFilterOptions, filteredByEmptinessItems)\n : filteredByEmptinessItems;\n const noDataFilterOptions = getNoDataOptions();\n const filterOptions = [noDataFilterOptions, detailsFilterOptions];\n\n return {filteredItems, filterOptions};\n }, [items, selectedFilterOptions, fillRates, isFillRateLoaded, isDVFLoaded]);\n\n const visibleItems = useMemo(\n () => rejectCollapsedItemsChildren(filteredItems, collapsedFieldNames),\n [filteredItems, collapsedFieldNames]\n );\n const countAttrTypes = filteredItems.length;\n\n const handleAttrTypeDetailsChange = (selectedDetailedAttributeType: DetailedAttributeType) => {\n onAttributesListChange({selectedDetailedAttributeType, filterText, filterOptions: selectedFilterOptions});\n setSelectedFieldName(selectedDetailedAttributeType.fieldName);\n };\n\n const selectedDetailedAttributeType = useMemo(() => {\n const selectedDetailedAttributeType =\n getDetailedAttrTypeByFieldName(filteredItems, selectedFieldName) ||\n getFirstSimpleDetailedAttrType(filteredItems);\n return isEmpty(selectedDetailedAttributeType) || disableAttributeSelection\n ? null\n : selectedDetailedAttributeType;\n }, [filteredItems, selectedFieldName, disableAttributeSelection]);\n\n useEffect(() => {\n if (disableAttributeSelection) {\n listRef.current?.scrollTo(0);\n return;\n }\n if (filteredItems.length) {\n if (selectedDetailedAttributeType?.fieldName) setSelectedFieldName(selectedDetailedAttributeType.fieldName);\n }\n const indexOfSelectedFieldName = getIndexByFieldName(filteredItems, selectedFieldName);\n indexOfSelectedFieldName > -1\n ? listRef.current?.scrollToItem(indexOfSelectedFieldName, 'center')\n : listRef.current?.scrollTo(0);\n }, [filteredItems, selectedDetailedAttributeType]); // eslint-disable-line\n\n useEffect(() => {\n onAttributesListChange({selectedDetailedAttributeType, filterText, filterOptions: selectedFilterOptions});\n }, [filterText, selectedFilterOptions, selectedDetailedAttributeType]); // eslint-disable-line\n\n useEffect(() => {\n setSelectedFieldName((fieldName) => (disableAttributeSelection ? 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 === 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 const showNoData = !hasData && (items.length === 0 || (filteredItems.length === 0 && isDVFLoaded));\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 && !showNoData})}\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 showNoData && (\n <DQDashboardError\n height={NO_DATA_HEIGHT}\n errorData={{\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 {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 React from 'react';\n\nimport i18n from 'ui-i18n';\nimport {EMPTY_STATE_ICONS} from '@reltio/components';\n\nimport {usePermissionsContext} from '../../contexts/PermissionsProvider';\nimport {EmptyStateVariants} from '../../types/EmptyStateVariants';\n\nimport DQDashboardError from '../DQDashboardError/DQDashboardError';\n\nexport const NO_DATA_HEIGHT = 359;\n\nconst DQDashboardNoContent = () => {\n const {canGetDQStatistic} = usePermissionsContext();\n const errorData = canGetDQStatistic\n ? {\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 : {\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 return <DQDashboardError height={NO_DATA_HEIGHT} errorData={errorData} variant={EmptyStateVariants.LARGE} />;\n};\n\nexport default DQDashboardNoContent;\n","import {CSSProperties} from 'react';\nimport {makeStyles} from '@material-ui/core/styles';\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(() => ({\n root: {\n width: '100%',\n height: '100%',\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 layoutRoot: {\n overflow: 'auto',\n backgroundColor: '#EEEEEE',\n height: '100%',\n flexGrow: 1,\n padding: '0 4px',\n boxSizing: 'border-box'\n }\n}));\n","import React, {useMemo, useEffect} from 'react';\nimport classnames from 'classnames';\nimport {useSelector} from 'react-redux';\n\nimport {DQDataLevel, Metadata, TEntityType} from '@reltio/mdm-sdk';\nimport mdmModule from '@reltio/mdm-module';\nimport i18n from 'ui-i18n';\n\nimport {getMetricsFromViews, getEntityLevelViews} from '../../../services/charts';\nimport {DQDashboardPerspectiveConfig} from '../../../types/DQDashboardPerspectiveConfig';\nimport {defaultLayoutsByDataLevel} from '../../../constants/defaultConfig';\nimport {checkEntityTypeHasRDMLookup} from '../../../services/rdmTranscode';\nimport {useChartsDataContext} from '../../../contexts/ChartsDataProvider';\nimport {DataLevelContext} from '../../../contexts/DataLevelContext';\nimport {useReloadFacet} from '../../../contexts/ReloadFacetContext';\nimport {usePermissionsContext} from '../../../contexts/PermissionsProvider';\nimport {RDMLookupState} from '../../../constants/RdmLookupState';\nimport {useChartsDataRequest} from '../../../hooks/useChartsDataRequest';\n\nimport DQDashboardLayout from '../../DQDashboardLayout/DQDashboardLayout';\nimport Warning from '../../Warning/Warning';\n\nimport {useStyles} from './styles';\n\ntype Props = {\n config: DQDashboardPerspectiveConfig;\n entityType?: TEntityType;\n};\n\nconst EntityLevelLayout = ({config, entityType}: Props) => {\n const styles = useStyles();\n const metadata: Metadata = useSelector(mdmModule.selectors.getMetadata);\n const hasRDMLookup = metadata && entityType && checkEntityTypeHasRDMLookup(metadata, entityType);\n const currentRDMLookupState = hasRDMLookup ? RDMLookupState.RDM_LOOKUP_EXIST : RDMLookupState.RDM_LOOKUP_NOT_EXIST;\n const {hasRestrictions} = usePermissionsContext();\n const layout =\n config.layoutsByDataLevel?.[DQDataLevel.ENTITY_TYPE]?.[currentRDMLookupState] ||\n defaultLayoutsByDataLevel[DQDataLevel.ENTITY_TYPE][currentRDMLookupState];\n\n const views = useMemo(\n () => (layout ? getEntityLevelViews(config.viewsByDataLevel, layout) : []),\n [config.viewsByDataLevel, layout]\n );\n const metrics = useMemo(() => getMetricsFromViews(views), [views]);\n\n const chartsData = useChartsDataRequest({\n entityType,\n dataLevel: DQDataLevel.ENTITY_TYPE,\n metrics\n });\n const {changeChartsData} = useChartsDataContext();\n useEffect(() => changeChartsData(chartsData), [chartsData]);\n useReloadFacet({\n state: chartsData.state,\n reload: chartsData.reload,\n dataLevel: DQDataLevel.ENTITY_TYPE\n });\n\n return (\n <div className={classnames(styles.root)}>\n <DataLevelContext.Provider value={DQDataLevel.ENTITY_TYPE}>\n <div className={styles.layoutRoot}>\n {hasRestrictions && (\n <Warning\n text={i18n.text(\n 'Not seeing the data you expected for this entity type? Contact your tenant admin to verify permissions.'\n )}\n />\n )}\n <DQDashboardLayout views={views} layout={layout} />\n </div>\n </DataLevelContext.Provider>\n </div>\n );\n};\n\nexport default EntityLevelLayout;\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.12)',\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';\nimport {mergeClasses} from '@reltio/components';\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 = ({\n options,\n value,\n onChange,\n dataReltioId,\n dataReltioOptionId,\n classes: classesProps = {},\n ...selectProps\n}: 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 classes = mergeClasses(classesProps, {\n outlined: styles.select,\n icon: styles.arrowIcon\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={classes}\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","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: \"256\",\n height: \"256\",\n viewBox: \"0 0 256 256\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n}, props), React.createElement(\"g\", null, React.createElement(\"g\", null, React.createElement(\"circle\", {\n cx: \"128\",\n cy: \"128\",\n r: \"128\",\n fill: \"#0072CE\",\n fillOpacity: \".03\"\n}), React.createElement(\"mask\", {\n id: \"svg1824010396a\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: \"0\",\n y: \"0\",\n width: \"256\",\n height: \"256\"\n}, React.createElement(\"circle\", {\n cx: \"128\",\n cy: \"128\",\n r: \"128\",\n fill: \"#fff\"\n})), React.createElement(\"g\", {\n mask: \"url(#svg1824010396a)\"\n}, React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M-16 9h256v247H-16V9z\",\n fill: \"url(#paint0_linear_2978_41880)\"\n}), React.createElement(\"g\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n}, React.createElement(\"path\", {\n d: \"M40.755 44.17C40.755 38.002 45.76 33 51.92 33h251.675c6.167 0 11.166 5.001 11.166 11.17v160.596H40.755V44.171z\",\n fill: \"#5E7282\"\n}), React.createElement(\"path\", {\n d: \"M50.371 43.106h255.685V195.71H50.371V43.106z\",\n fill: \"url(#paint1_linear_2978_41880)\"\n}), React.createElement(\"path\", {\n d: \"M15.545 208.914c2.321.469 4.723.716 7.183.716H338.75c.22 0 .439-.002.658-.006-7.061 8.445-17.67 13.816-29.524 13.816H45.655c-12.111 0-22.916-5.597-29.968-14.349l-.142-.177z\",\n fill: \"#BDCBD8\"\n}), React.createElement(\"path\", {\n d: \"M339.015 204.883v4.966H15v-4.966h324.015z\",\n fill: \"#D4DCDF\"\n}), React.createElement(\"path\", {\n d: \"M201.107 213.991h-45.221a11.176 11.176 0 01-11.046-9.449h67.314a11.172 11.172 0 01-11.047 9.449z\",\n fill: \"url(#paint2_linear_2978_41880)\"\n})), React.createElement(\"g\", {\n filter: \"url(#filter0_d_2978_41880)\"\n}, React.createElement(\"rect\", {\n x: \"81.703\",\n y: \"99\",\n width: \"170\",\n height: \"26\",\n rx: \"8\",\n fill: \"#D1E6FF\"\n}), React.createElement(\"rect\", {\n x: \"84.703\",\n y: \"102\",\n width: \"164\",\n height: \"20\",\n rx: \"5\",\n stroke: \"#fff\",\n strokeWidth: \"6\"\n})), React.createElement(\"g\", {\n filter: \"url(#filter1_d_2978_41880)\"\n}, React.createElement(\"mask\", {\n id: \"svg1824010396b\",\n fill: \"#fff\"\n}, React.createElement(\"rect\", {\n x: \"81\",\n y: \"105\",\n width: \"108\",\n height: \"14\",\n rx: \"2\"\n})), React.createElement(\"rect\", {\n x: \"81\",\n y: \"105\",\n width: \"108\",\n height: \"14\",\n rx: \"2\",\n fill: \"#61A3F1\"\n}), React.createElement(\"rect\", {\n x: \"81\",\n y: \"105\",\n width: \"108\",\n height: \"14\",\n rx: \"2\",\n stroke: \"#4A90E2\",\n strokeWidth: \"8\",\n mask: \"url(#svg1824010396b)\"\n})), React.createElement(\"g\", null, React.createElement(\"path\", {\n opacity: \".8\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M122.703 74a3 3 0 013-3h81.625a3 3 0 010 6h-81.625a3 3 0 01-3-3z\",\n fill: \"#B6C7DB\"\n}), React.createElement(\"path\", {\n opacity: \".2\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M146.703 86a3 3 0 013-3h34a3 3 0 110 6h-34a3 3 0 01-3-3zM136.703 139a3 3 0 013-3h54a3 3 0 110 6h-54a3 3 0 01-3-3z\",\n fill: \"#979797\"\n}), React.createElement(\"path\", {\n opacity: \".1\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M112.703 151a3 3 0 013-3h103a3 3 0 110 6h-103a3 3 0 01-3-3zM124.703 163a3 3 0 013-3h79a3 3 0 110 6h-79a3 3 0 01-3-3z\",\n fill: \"#979797\"\n}), React.createElement(\"g\", {\n filter: \"url(#filter2_ddd_2978_41880)\"\n}, React.createElement(\"g\", null, React.createElement(\"g\", null, React.createElement(\"path\", {\n fill: \"#A0C1D7\",\n d: \"M70.703 64h11v8h-11z\"\n}), React.createElement(\"rect\", {\n x: \"62\",\n y: \"59\",\n width: \"28\",\n height: \"8\",\n rx: \"1\",\n fill: \"#BDD4E3\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M38.23 160.5c20.704 20.703 54.27 20.703 74.973 0 20.703-20.703 20.703-54.27 0-74.973-20.703-20.703-54.27-20.703-74.973 0-20.703 20.703-20.703 54.27 0 74.973z\",\n fill: \"#BDD4E3\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M113.427 85.988c20.463 20.652 20.404 53.981-.175 74.561-20.432 20.431-53.432 20.635-74.115.613l-.446-.439 74.736-74.735z\",\n fill: \"#A0C1D7\"\n}), React.createElement(\"path\", {\n opacity: \".144\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M75.037 175.385c29.402 0 53.236-23.834 53.236-53.236a54.67 54.67 0 00-.106-3.399L100.45 91.037l-55.142 58.396 25.814 25.811c1.293.094 2.598.141 3.915.141z\",\n fill: \"url(#paint3_linear_2978_41880)\"\n}), React.createElement(\"circle\", {\n cx: \"75.94\",\n cy: \"123.237\",\n r: \"44.723\",\n fill: \"#91B0C2\"\n}), React.createElement(\"g\", null, React.createElement(\"g\", {\n filter: \"url(#filter3_d_2978_41880)\"\n}, React.createElement(\"circle\", {\n r: \"42.793\",\n transform: \"matrix(-1 0 0 1 75.94 123.237)\",\n fill: \"#F7F4FF\"\n}))), React.createElement(\"path\", {\n opacity: \".05\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M105.043 175.309l-10.298.861-20.313-20.152.863-2.292-9.973-9.982 18.679-6.882h-4.308l-8.943-8.951 4.545-10.532L94.35 90.74l37.888 37.162c-.343 20.088-11.146 37.627-27.195 47.407z\",\n fill: \"url(#paint4_linear_2978_41880)\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M67.703 123a8 8 0 0112.362-6.707l14.477-25.145A36.828 36.828 0 0075.703 86c-20.434 0-37 16.565-37 37h29z\",\n fill: \"url(#paint5_angular_2978_41880)\"\n}), React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M94.297 90.6l.24.138s-12.45 35.125-12.811 35.752a6.92 6.92 0 01-11.985-6.92c.361-.626 24.556-28.97 24.556-28.97z\",\n fill: \"#323232\"\n}), React.createElement(\"circle\", {\n cx: \"75.94\",\n cy: \"123.237\",\n r: \"2.896\",\n fill: \"#EEEBF6\"\n}), React.createElement(\"circle\", {\n cx: \"96.211\",\n cy: \"148.655\",\n r: \"2.574\",\n fill: \"#A0C3D7\"\n}), React.createElement(\"circle\", {\n cx: \"107.15\",\n cy: \"131.924\",\n r: \"2.574\",\n fill: \"#A0C3D7\"\n}), React.createElement(\"rect\", {\n x: \"62.427\",\n y: \"135.592\",\n width: \"27.027\",\n height: \"10.039\",\n rx: \"3\",\n fill: \"#A0C3D7\"\n}), React.createElement(\"path\", {\n opacity: \".05\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M85.914 170.534H75.112l-21.605-21.472 2.126-2.775v-1.01L42.8 132.523l2.853-2.529 40.261 40.54z\",\n fill: \"url(#paint6_linear_2978_41880)\"\n}), React.createElement(\"path\", {\n opacity: \".02\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M96.362 136.555h-4.988l-38.126-38.01 2.853-2.53 40.261 40.54z\",\n fill: \"url(#paint7_linear_2978_41880)\"\n}), React.createElement(\"path\", {\n opacity: \".02\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M116.746 129.006h-4.988L73.632 90.995l2.853-2.53 40.261 40.541z\",\n fill: \"url(#paint8_linear_2978_41880)\"\n}), React.createElement(\"path\", {\n opacity: \".02\",\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M85.793 152.41h-4.988l-38.126-38.011 2.852-2.53 40.262 40.541z\",\n fill: \"url(#paint9_linear_2978_41880)\"\n}), React.createElement(\"circle\", {\n cx: \"75.618\",\n cy: \"155.734\",\n r: \"2.574\",\n fill: \"#A0C3D7\"\n}), React.createElement(\"circle\", {\n cx: \"55.026\",\n cy: \"148.655\",\n r: \"2.574\",\n fill: \"#A0C3D7\"\n}), React.createElement(\"circle\", {\n cx: \"44.73\",\n cy: \"131.924\",\n r: \"2.574\",\n fill: \"#A0C3D7\"\n}), React.createElement(\"g\", {\n fill: \"#A0C3D7\"\n}, React.createElement(\"circle\", {\n r: \"2.574\",\n transform: \"matrix(1 0 0 -1 96.21 97.363)\"\n}), React.createElement(\"circle\", {\n r: \"2.574\",\n transform: \"matrix(1 0 0 -1 107.149 114.094)\"\n}), React.createElement(\"circle\", {\n r: \"2.574\",\n transform: \"matrix(1 0 0 -1 75.618 90.284)\"\n}), React.createElement(\"circle\", {\n r: \"2.574\",\n transform: \"matrix(1 0 0 -1 55.026 97.363)\"\n}), React.createElement(\"circle\", {\n r: \"2.574\",\n transform: \"matrix(1 0 0 -1 44.73 114.094)\"\n}))))))))), React.createElement(\"defs\", null, React.createElement(\"linearGradient\", {\n id: \"paint0_linear_2978_41880\",\n x1: \"-16\",\n y1: \"9\",\n x2: \"-16\",\n y2: \"256\",\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_2978_41880\",\n x1: \"178.214\",\n y1: \"43.106\",\n x2: \"178.214\",\n y2: \"195.709\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopColor: \"#F2F9FB\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#fff\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint2_linear_2978_41880\",\n x1: \"178.497\",\n y1: \"204.542\",\n x2: \"178.497\",\n y2: \"213.991\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopColor: \"#90AABF\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopColor: \"#869DAE\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint3_linear_2978_41880\",\n x1: \"154.275\",\n y1: \"146.574\",\n x2: \"96.683\",\n y2: \"91.352\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint4_linear_2978_41880\",\n x1: \"60.762\",\n y1: \"143.327\",\n x2: \"114.747\",\n y2: \"176.019\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".87\"\n}), React.createElement(\"stop\", {\n offset: \"1\",\n stopOpacity: \".01\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint6_linear_2978_41880\",\n x1: \"90.287\",\n y1: \"154.267\",\n x2: \"68.53\",\n y2: \"131.301\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint7_linear_2978_41880\",\n x1: \"100.735\",\n y1: \"120.288\",\n x2: \"78.978\",\n y2: \"97.322\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint8_linear_2978_41880\",\n x1: \"121.119\",\n y1: \"112.739\",\n x2: \"99.362\",\n y2: \"89.773\",\n gradientUnits: \"userSpaceOnUse\"\n}, React.createElement(\"stop\", {\n stopOpacity: \".01\"\n}), React.createElement(\"stop\", {\n offset: \"1\"\n})), React.createElement(\"linearGradient\", {\n id: \"paint9_linear_2978_41880\",\n x1: \"90.166\",\n y1: \"136.143\",\n x2: \"68.409\",\n y2: \"113.177\",\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_2978_41880\",\n x: \"77.703\",\n y: \"96\",\n width: \"178\",\n height: \"34\",\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: \"1\"\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.06 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_2978_41880\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_2978_41880\",\n result: \"shape\"\n})), React.createElement(\"filter\", {\n id: \"filter1_d_2978_41880\",\n x: \"77\",\n y: \"102\",\n width: \"116\",\n height: \"22\",\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: \"1\"\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.06 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_2978_41880\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_2978_41880\",\n result: \"shape\"\n})), React.createElement(\"filter\", {\n id: \"filter2_ddd_2978_41880\",\n x: \"-13.297\",\n y: \"28\",\n width: \"181.534\",\n height: \"189.17\",\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(\"feMorphology\", {\n radius: \"4\",\n operator: \"erode\",\n in: \"SourceAlpha\",\n result: \"effect1_dropShadow_2978_41880\"\n}), React.createElement(\"feOffset\", {\n dy: \"7\"\n}), React.createElement(\"feGaussianBlur\", {\n stdDeviation: \"4\"\n}), React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0.600156 0 0 0 0 0.745337 0 0 0 0 0.8625 0 0 0 0.1 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_2978_41880\"\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(\"feMorphology\", {\n radius: \"4\",\n operator: \"dilate\",\n in: \"SourceAlpha\",\n result: \"effect2_dropShadow_2978_41880\"\n}), React.createElement(\"feOffset\", {\n dy: \"5\"\n}), React.createElement(\"feGaussianBlur\", {\n stdDeviation: \"16\"\n}), React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0.447059 0 0 0 0 0.807843 0 0 0 0.06 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"effect1_dropShadow_2978_41880\",\n result: \"effect2_dropShadow_2978_41880\"\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(\"feMorphology\", {\n radius: \"2\",\n operator: \"dilate\",\n in: \"SourceAlpha\",\n result: \"effect3_dropShadow_2978_41880\"\n}), React.createElement(\"feOffset\", {\n dy: \"12\"\n}), React.createElement(\"feGaussianBlur\", {\n stdDeviation: \"8.5\"\n}), React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0.447059 0 0 0 0 0.807843 0 0 0 0.06 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"effect2_dropShadow_2978_41880\",\n result: \"effect3_dropShadow_2978_41880\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect3_dropShadow_2978_41880\",\n result: \"shape\"\n})), React.createElement(\"filter\", {\n id: \"filter3_d_2978_41880\",\n x: \"29.148\",\n y: \"78.444\",\n width: \"93.585\",\n height: \"93.585\",\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.1 0\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow_2978_41880\"\n}), React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow_2978_41880\",\n result: \"shape\"\n})), React.createElement(\"radialGradient\", {\n id: \"paint5_angular_2978_41880\",\n cx: \"0\",\n cy: \"0\",\n r: \"1\",\n gradientUnits: \"userSpaceOnUse\",\n gradientTransform: \"rotate(-56.035 152.55 -12.515) scale(43.4058 65.5062)\"\n}, React.createElement(\"stop\", {\n stopColor: \"#CFE8FF\"\n}), React.createElement(\"stop\", {\n offset: \".599\",\n stopColor: \"#D1F2F9\",\n stopOpacity: \"0\"\n})))));","import React from 'react';\nimport i18n from 'ui-i18n';\nimport {EmptyState} from '@reltio/components';\nimport LoadingIcon from './icons/Loading.svg';\n\nconst LoadingComponent = () => {\n return (\n <EmptyState\n LogoRenderer={LoadingIcon}\n text={i18n.text('Loading...')}\n secondaryText={i18n.text('Please give us a moment while we load the page')}\n />\n );\n};\n\nexport default LoadingComponent;\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);\n return (\n date.isValid() && (\n <div className={styles.root}>\n <span className={styles.updateTime}>{`${i18n.text('Last updated')} ${date.fromNow()}`}</span>\n <SmallIconButtonWithTooltip\n tooltipTitle={i18n.text('Refresh')}\n icon={RefreshIcon}\n onClick={handleRefreshAll}\n size=\"S\"\n />\n </div>\n )\n );\n};\n\nexport default UpdateTimeHeader;\n","import {equals, pick} from 'ramda';\nimport React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport moment from 'moment';\n\nimport i18n from 'ui-i18n';\nimport {DateRangeEditor, RequestStates, useSavedState} from '@reltio/components';\nimport {getEntityType, DQDataLevel, DateRangeValue, getDateRangeOptions} from '@reltio/mdm-sdk';\n\nimport {useEntityAndAttributeType} from '../../contexts/EntityAndAttributeTypeProvider';\nimport {DVFContext} from '../../contexts/DVFContext';\nimport {useUpdateTime} from '../../contexts/ReloadFacetContext';\nimport {ChartsDataProvider} from '../../contexts/ChartsDataProvider';\nimport {usePeriod, useZoom} from '../../contexts/DateRangesProvider';\nimport {usePermissionsContext} from '../../contexts/PermissionsProvider';\nimport {useDVF} from '../../hooks/useDVF';\nimport {useDvfConfigLink} from '../../hooks/useDvfConfigLink';\nimport {useEntityCount} from '../../hooks/useEntityCount';\nimport {useEntityTypes} from '../../hooks/useEntityTypes';\nimport {useDebounceFunction} from '../../hooks/useDebounceFunction';\nimport {DetailedAttributeType} from '../../types/DetailedAttributeType';\nimport {DQDashboardPerspectiveConfig} from '../../types/DQDashboardPerspectiveConfig';\nimport {DQDateRangeValue} from '../../types/DQDateRangeValue';\nimport {DQDashboardSavedState} from '../../types/DQDashboardSavedState';\nimport {FilterOption} from '../../types/FilterOption';\nimport {ATTRIBUTE_LIST_WIDTH, ENTITY_LEVEL_BAR_WIDTH} from './constants';\nimport {getTimeRangeDates, getPeriodValue} from '../../services/mlDq';\nimport {dateRangeValues, getFirstEntityTypeUri, getValuesDateRange, sortEntityTypesWithCount} from './helpers';\n\nimport AttributeLevelLayout from './AttributeLevelLayout';\nimport DataLevelBreadcrumbs from '../DataLevelBreadcrumbs/DataLevelBreadcrumbs';\nimport ContentSlider from '../ContentSlider/ContentSlider';\nimport DataLevelSwitcher from './DataLevelSwitcher/DataLevelSwitcher';\nimport DQDashboardAttributesList from '../DQDashboardAttributesList/DQDashboardAttributesList';\nimport DQDashboardHeader from '../DQDashboardHeader/DQDashboardHeader';\nimport DQDashboardNoContent from '../DQDashboardNoContent/DQDashboardNoContent';\nimport EntityLevelLayout from './EntityLevelLayout/EntityLevelLayout';\nimport EntityTypeSelector from '../EntityTypeSelector/EntityTypeSelector';\nimport LoadingComponent from '../LoadingComponent/LoadingComponent';\nimport UpdateTimeHeader from '../UpdateTimeHeader/UpdateTimeHeader';\n\nimport {useStyles} from './styles';\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 const entityTypes = useEntityTypes();\n const {setEntityType, entityType, detailedAttributeType, setDetailedAttributeType} = useEntityAndAttributeType();\n const [entityTypeUri, setEntityTypeUri] = useState<string>('');\n\n const {getEntityCount, state: entityCountRequestState} = useEntityCount(entityTypes);\n const {canGetDQStatistic, permissionsLoadingState, isTimeSeriesAvailable} = usePermissionsContext();\n\n const [dataLevel, setDataLevel] = useState<DQDataLevel>();\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\n const dqDashboardSavedState = useRef<DQDashboardSavedState>();\n const {isLoaded: isSavedStateLoaded, savedState} = useSavedState<DQDashboardSavedState>(getSavedState);\n const {zoom, changeZoom} = useZoom();\n const {period, changePeriod} = usePeriod();\n const getNewSavedState = (state: DQDashboardSavedState): DQDashboardSavedState => ({\n fieldName: null,\n zoom: zoom || null,\n entityTypeUri,\n period,\n ...dqDashboardSavedState?.current,\n ...state\n });\n const isPermissionsRequestFinished =\n permissionsLoadingState === RequestStates.ERROR || permissionsLoadingState === RequestStates.LOADED;\n\n useEffect(() => {\n const selectedEntityType = entityTypes && entityTypeUri ? getEntityType({entityTypes}, entityTypeUri) : null;\n setEntityType(selectedEntityType);\n }, [entityTypeUri]);\n\n useEffect(() => {\n if (isSavedStateLoaded && isPermissionsRequestFinished) {\n dqDashboardSavedState.current = savedState;\n const isEntityTypeExists = !!getEntityType({entityTypes}, savedState.entityTypeUri);\n setEntityTypeUri(\n isEntityTypeExists ? savedState.entityTypeUri : getFirstEntityTypeUri(sortedEntityTypesWithCount)\n );\n\n setDataLevel((savedState.fieldName && savedState.dataLevel) || DQDataLevel.ENTITY_TYPE);\n const defaultPeriod = isTimeSeriesAvailable ? DateRangeValue.LAST_WEEK : DateRangeValue.LAST_DAY;\n const newPeriod =\n isTimeSeriesAvailable &&\n (dateRangeValues.includes(savedState?.period as DQDateRangeValue) || Array.isArray(savedState?.period))\n ? savedState.period\n : defaultPeriod;\n changePeriod(newPeriod);\n if (savedState.zoom) {\n changeZoom(savedState.zoom);\n }\n }\n }, [isSavedStateLoaded, isPermissionsRequestFinished]); // eslint-disable-line\n\n useEffect(() => {\n if (dataLevel === DQDataLevel.ENTITY_TYPE) {\n saveStateHandler({\n fieldName: null,\n dataLevel: DQDataLevel.ENTITY_TYPE,\n entityTypeUri\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dataLevel, entityTypeUri]);\n\n useEffect(() => {\n if (isSavedStateLoaded && dataLevel === DQDataLevel.ATTRIBUTE_TYPE) {\n const {startDate, endDate} = getTimeRangeDates(period);\n saveStateHandler({\n period: [new Date(startDate), new Date(endDate)],\n zoom\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [zoom]);\n\n useEffect(() => {\n if (isSavedStateLoaded && dataLevel === DQDataLevel.ATTRIBUTE_TYPE) saveStateHandler({period});\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [period]);\n const saveStateDebounce = useDebounceFunction<DQDashboardSavedState>(saveState);\n const saveStateHandler = (state: DQDashboardSavedState) => {\n const newSavedState = getNewSavedState(state);\n saveStateDebounce(newSavedState, dqDashboardSavedState.current);\n dqDashboardSavedState.current = newSavedState;\n };\n const sortedEntityTypesWithCount = useMemo(\n () => sortEntityTypesWithCount({entityTypes, getEntityCount}),\n [entityTypes, getEntityCount]\n );\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 setDataLevel(DQDataLevel.ENTITY_TYPE);\n }\n },\n [entityType?.uri] // eslint-disable-line\n );\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 if (\n fieldName ||\n !equals({filterText, filterOptions}, pick([filterText, filterOptions], dqDashboardSavedState.current))\n )\n saveStateHandler({\n fieldName: fieldName || null,\n filterOptions,\n filterText,\n dataLevel: fieldName ? DQDataLevel.ATTRIBUTE_TYPE : dataLevel\n });\n\n fieldName && setDataLevel(DQDataLevel.ATTRIBUTE_TYPE);\n\n if (!equals(detailedAttributeType, selectedDetailedAttributeType)) {\n resetUpdateTimes(DQDataLevel.ATTRIBUTE_TYPE);\n selectedDetailedAttributeType && setDetailedAttributeType(selectedDetailedAttributeType);\n }\n };\n\n const showEntityLevel = () => {\n setDetailedAttributeType(null);\n setDataLevel(DQDataLevel.ENTITY_TYPE);\n resetUpdateTimes(DQDataLevel.ENTITY_TYPE);\n };\n\n const showDashboard =\n entityCountRequestState !== RequestStates.LOADING && isSavedStateLoaded && isPermissionsRequestFinished;\n const showContent = entityType && canGetDQStatistic && !!getEntityCount(entityTypeUri);\n const showTimeRange = dataLevel === DQDataLevel.ATTRIBUTE_TYPE && isTimeSeriesAvailable;\n const dateRangeEditorValue = getPeriodValue(zoom, period);\n return showDashboard ? (\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 dataLevel={dataLevel} onChange={setDataLevel} />\n <div className={styles.headerRightSide}>\n {showTimeRange && (\n <DateRangeEditor\n values={dateRangeEditorValue}\n options={getDateRangeOptions(dateRangeValues)}\n getValuesDateRange={getValuesDateRange}\n onChange={changePeriod}\n className={styles.periodSelector}\n TextFieldProps={{\n InputProps: {\n classes: {input: styles.input, root: styles.inputRoot},\n disableUnderline: true\n }\n }}\n MenuProps={{classes: {paper: styles.paper}}}\n classes={{dropdownIndicator: styles.dropdownIndicator}}\n DateRangePickerProps={{\n maxDate: moment().startOf('day').toDate()\n }}\n />\n )}\n <UpdateTimeHeader dataLevel={dataLevel} />\n </div>\n </div>\n )}\n </DQDashboardHeader>\n {showContent ? (\n <div className={styles.content}>\n <DVFContext.Provider value={dvfContext}>\n <ChartsDataProvider>\n <ContentSlider\n page={dataLevel === DQDataLevel.ENTITY_TYPE ? 0 : 1}\n pages={[\n [{index: 0}, {index: 2, width: ATTRIBUTE_LIST_WIDTH + 12}],\n [\n {index: 1, width: ENTITY_LEVEL_BAR_WIDTH},\n {index: 2, width: ATTRIBUTE_LIST_WIDTH},\n {index: 3}\n ]\n ]}\n >\n <ChartsDataProvider>\n <EntityLevelLayout config={config} entityType={entityType} />\n </ChartsDataProvider>\n <DataLevelSwitcher showEntityLevel={showEntityLevel} entityType={entityType} />\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 className={styles.attributeLevelWrapper}>\n {detailedAttributeType && (\n <AttributeLevelLayout config={config} entityType={entityType} />\n )}\n </div>\n </ContentSlider>\n </ChartsDataProvider>\n </DVFContext.Provider>\n </div>\n ) : (\n entityType && <DQDashboardNoContent />\n )}\n </div>\n ) : (\n <LoadingComponent />\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 // eslint-disable-next-line react-hooks/exhaustive-deps\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[]>([]);\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 // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dvfPath, tenant, entityTypeUri, env]);\n\n useEffect(() => {\n loadDVFs();\n }, [loadDVFs]);\n\n const result = useMemo(\n () => ({data: dvfs, state: requestState, reload: loadDVFs, errorCode}),\n [dvfs, requestState, loadDVFs, errorCode]\n );\n return result;\n};\n","import {useCallback, useRef} from 'react';\nimport {equals} from 'ramda';\n\nconst DEBOUNCE_TIMEOUT = 200;\n\nexport const useDebounceFunction = <T extends unknown>(fn: (params: T) => void) => {\n const timer = useRef<ReturnType<typeof setTimeout>>();\n const lastParams = useRef<T>(null);\n\n return useCallback(\n (params: T, startParams: T) => {\n timer?.current && clearTimeout(timer?.current);\n if (!lastParams?.current) lastParams.current = startParams;\n if (!equals(params, lastParams?.current)) {\n timer.current = setTimeout(() => {\n lastParams.current = params;\n fn(params);\n }, DEBOUNCE_TIMEOUT);\n }\n },\n [fn]\n );\n};\n","export const NO_DATA_HEIGHT = 359;\nexport const ATTRIBUTE_LIST_WIDTH = 360;\nexport const ENTITY_LEVEL_BAR_WIDTH = 60;\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';\nimport {MuiPickersUtilsProvider} from '@material-ui/pickers';\nimport MomentUtils from '@date-io/moment';\n\nimport {promisifyCallback} from '@reltio/mdm-sdk';\n\nimport {DQDashboardPerspectiveConfig} from '../../types/DQDashboardPerspectiveConfig';\nimport {DQDashboardSavedState} from '../../types/DQDashboardSavedState';\nimport {ReloadFacetProvider} from '../../contexts/ReloadFacetContext';\nimport {DateRangesProvider} from '../../contexts/DateRangesProvider';\nimport {EntityAndAttributeTypeProvider} from '../../contexts/EntityAndAttributeTypeProvider';\nimport {PermissionsProvider} from '../../contexts/PermissionsProvider';\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 <MuiPickersUtilsProvider utils={MomentUtils}>\n <MuiThemeProvider theme={dqDashboardTheme}>\n <StylesProvider generateClassName={generateClassName}>\n <ReloadFacetProvider>\n <EntityAndAttributeTypeProvider>\n <PermissionsProvider config={config}>\n <DateRangesProvider>\n <DQDashboardPerspectiveView\n config={config}\n saveState={saveState}\n getSavedState={getSavedStatePromisified}\n />\n </DateRangesProvider>\n </PermissionsProvider>\n </EntityAndAttributeTypeProvider>\n </ReloadFacetProvider>\n </StylesProvider>\n </MuiThemeProvider>\n </MuiPickersUtilsProvider>\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","useStyles","makeStyles","flex","padding","paddingTop","children","styles","theme","root","display","flexWrap","flexDirection","alignItems","justifyContent","overflow","height","minHeight","boxSizing","color","palette","text","primary","fontSize","fontWeight","lineHeight","letterSpacing","textAlign","secondary","root_small","embedded","flexShrink","width","full","textBox","maxWidth","marginTop","secondaryText","button","minWidth","borderRadius","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","opacity","d","rx","ry","filter","SELECT_ATTRIBUTES","style","maskType","maskUnits","clipRule","gradientUnits","NO_DATA","dx","dy","result","values","type","mixBlendMode","ERROR","colorInterpolationFilters","floodOpacity","mode","in2","variant","LogoRenderer","buttonTitle","onClick","identity","access","showButton","Typography","classes","h5","subtitle1","Button","EmptyStub","HideOnShrink","widthToHide","handleWidth","render","propTypes","PropTypes","sourceType","metadata","useSelector","mdmModule","uri","findSourceSystemByUri","getSourceSystemLabel","sourceIcon","getAbsoluteImageUrl","VerticalDivider","margin","borderLeft","enrichDataWithPercents","data","percents","countPercents","pluck","map","item","i","percent","Component","WithPercents","dataWithPercents","useMemo","displayName","clickable","cursor","useClickableStyle","undefined","useSavedState","getSavedState","isLoaded","setIsLoaded","savedState","setSavedState","then","_","catch","RequestStates","ReloadFacetSignalContext","createContext","ReloadFacetActionContext","RequestsUpdateTimeContext","ReloadFacetProvider","refreshSignals","setRefreshSignals","updateTimes","setUpdateTimes","resetUpdateTimes","useCallback","dataLevel","assoc","refreshAll","signals","nextSignal","propOr","Provider","value","updateTime","actionId","time","Date","now","assocPath","useReloadFacet","reload","useContext","Error","refreshSignal","useRefreshAction","action","nanoid","useUpdateTime","Math","min","Object","PeriodContext","React","ZoomContext","DateRangesProvider","zoom","setZoom","period","setPeriod","changePeriod","newPeriod","changeZoom","validatedZoom","getDateRange","usePeriod","useZoom","EntityAndAttributeTypeContext","EntityAndAttributeTypeProvider","detailedAttributeType","setDetailedAttributeType","entityType","setEntityType","useEntityAndAttributeType","DQDateRangeValue","omit","DateRangeValue","getDQDateRangeByValue","currentDate","moment","subtract","valueOf","getDateRangeByValue","getFirstEntityTypeUri","path","dateRangeValues","getValuesDateRange","pipe","defaultTo","PermissionsContext","PermissionsProvider","config","permissions","tenantPermissions","requestState","permissionsLoadingState","setPermissions","setRequestState","safePromise","useSafePromise","apiPath","tenant","onRequestFinished","error","console","loadPermissions","getTenantPermissions","usePermissionsRequest","entityTypeUri","roles","canGetDQStatistic","noMetaDataRestrictions","canReadWithoutFilter","includes","getPermissionsForRoles","prop","__","getPermissionByUri","find","propEq","configurationLevelPermission","entityLevelPermission","isEmpty","some","checkPermissions","hasRestrictions","showTimeSeries","isTimeSeriesAvailable","usePermissionsContext","defaultTheme","tooltip","backgroundColor","DVFContext","ChartsDataContext","ChartsDataProvider","chartsData","setChartsData","changeChartsData","useChartsDataContext","useEntityCount","entityTypes","entitiesCountMap","setEntitiesCountMap","getEntityCount","buildFilterQueryString","fieldName","FilterOptions","getFacets","query","generateValuableQueryString","activeness","body","pageSize","pageNo","Number","getLastUriPart","getTimeSeriesData","getData","group","_max_date","label","i18n","sortBy","getTimeRangeDates","dateFormat","startTimestamp","endTimeStamp","getDateRangeByDatePeriod","startDate","format","endDate","checkIsTimeSeries","options","timeSeries","getChartTooltipDateTitle","hasData","date","hasTimeRange","enrichTimeSeriesDataWithTodayData","curry","todayChartData","metric","timeSeriesData","today","reject","append","DQMetric","reduce","todayData","currentData","todayChartDataWithPercent","todayOption","FillRateState","UniquenessAnalysisState","getStateFromMetric","todayDataForTimeSeries","dataItem","getTodayData","DataLevelContext","ChartDataType","CustomViewType","ViewType","RDMLookupState","defaultViewsByDataLevel","DQDataLevel","FILL_RATE","title","UNIQUENESS","SUMMARY","DATA_VALIDATION","FREQUENCY","LENGTH_STATISTIC","PATTERN","CROSSWALK_ANALYSIS","VALUE_DISTRIBUTION","UNSUPPORTED","CONSOLIDATION_RATE","RDM_TRANSCODE","defaultLayoutsByDataLevel","default","SSN","BOOLEAN","DATE","INTEGER","FLOAT","timeRange","boolean","integer","float","RDM_LOOKUP_EXIST","RDM_LOOKUP_NOT_EXIST","getAdvancedSearchFilter","filters","attributes","index","operator","SearchOperator","localizeChartValues","chartData","localizedValue","getPercentLabel","isNil","isEmptyData","facetFiltersToSearchState","advanced","when","isDateType","evolve","mapFilterValue","parseTimestamp","searchOptions","searchByOv","ovOnly","version","getSearchState","getFilter","getChartDataTypeByAttributeType","DataTypes","STRING","UNKNOWN","getValidViews","views","allViews","supportedViews","layout","layoutItem","viewType","viewIndex","findIndex","concat","getMetricsFromViews","uniq","getBarWidthStyle","enrichChartDataWithSourceLabel","max","getEntityTypeSummarySearchState","transformTimeSeriesChartData","toFixed","getChartState","states","all","equals","any","isContainActiveVF","dvf","attributeTypeUri","allPass","StatusVF","isFloatingType","getAttributeLabel","getLabel","name","AttrTypeDetailsType","filterAttributeByDetails","filterOptions","detail","details","filterAttributeTreeByDetails","length","child","filterAttributeByNotEmpty","fillRates","fillRate","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","parents","level","chain","childrenItems","isReference","attributeItem","attributeUriToSearchUri","isReferenceChild","useChartsDataRequest","metrics","attributeFieldName","loadChartsData","async","getActiveProfiles","ActivityFilters","getInactiveProfiles","getDqChartsData","getDQChartsData","Promise","activeProfiles","inactiveProfiles","dqChartsData","sourceSystems","keys","summary","pathOr","ifElse","has","refreshAction","whiteSpace","paddingRight","infoDataLabel","chartDataLabel","tooltipWrapper","row","DataRenderer","ChartDataRenderer","key","fillRateSquare","marginRight","verticalAlign","getValueLabel","getColor","tooltipData","background","infoIcon","position","infoTooltipTitle","hasInfoIcon","hasChildren","BasicViewHeader","SmallIconButton","InfoIcon","size","tooltipTitle","view","dataReltioId","BasicView","FillRateChartColors","getFillRateColorByState","getChartItemColor","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","EmptyStateVariants","container","paddingBottom","small","maxHeight","marginBottom","medium","large","message","refreshButton","main","refreshIcon","defaultIcon","onRefresh","errorData","SMALL","Icon","startIcon","Replay","viewContent","loadingState","BasicViewContent","refreshMode","refreshRate","handleHeight","ErrorBoundary","DashboardLinearLoader","legendLabel","legendValue","legend","itemColor","payload","withPercents","legendProps","align","wrapperStyle","overflowY","content","formatNumberAsMetric","BarAxis","bottom","left","stackedBar","right","bar","flexGrow","transition","top","zIndex","pointerEvents","inactivePart","tooltipFillRate","legendWrapper","rangeWrapper","rangeValue","Bar","forwardRef","ref","BarWithTooltip","withTooltip","getTooltipData","onItemClick","onBarClick","maxValue","sum","searchProfiles","useMlDqDataRequest","LAST_WEEK","setTimeSeriesData","mlDqPath","oldRequestDependencies","useRef","memoizedRequestDependencies","toString","getMlDqData","attribute","needRefresh","currentRange","last","head","currentStartTime","currentEndTime","startTime","endTime","needRefreshData","current","getValuesFromChartData","flatten","roundPercent","round","XAxisTickFormatter","getZoomedData","dateRange","indexStart","indexEnd","slice","_extends","target","arguments","source","prototype","hasOwnProperty","call","apply","this","infoPanel","gap","info","dynamicInfo","dynamicInfoPositive","dynamicInfoNegative","dynamicIcon","dynamicPercent","isPositiveDynamic","abs","infoLabel","percentKey","dataKey","zoomedData","lastChartData","filteredData","Infinity","prevPercent","lastPercent","getDynamicPercent","lastDateOfPeriod","dateLabel","isSame","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","chartDataWithRange","sort","ascend","startRange","endRange","isLastItem","addIntervalBrackets","getLengthChartData","getMonthDistributionData","getDayOfWeekDistributionData","getDayOfMonthDistributionData","getDayOfweekDistributionSearchState","dayOfWeek","getMonthDistributionSearchState","month","getDayOfMonthDistributionSearchState","dayOfMonth","getLengthStatisticsSearchState","getRangeRawFilterSearchState","getCrosswalkAnalysisSearchState","getValueDistributionFilterForDate","timestampStart","timestampEnd","getValueDistributionFilterForNumber","getValueDistributionFilterForFloat","lastItem","isSingleValue","getValueDistributionSearchState","cond","getConsolidationRateFilter","getConsolidationRateSearchState","getBarOpacity","selectedBar","tickFormatter","toUpperCase","isPercent","minLineChartData","getMinValueFromLineChartData","maxLineChartData","getMaxValueFromLineChartData","minYAxisValue","maxYAxisValue","updatedMinData","updatedMaxData","getUpdatedEdgeData","xAxis","tick","tickMargin","userSelect","angle","textAnchor","tickLine","interval","yAxis","tickCount","domain","cartesianGrid","strokeDasharray","strokeOpacity","line","dot","activeDot","referenceLine","isFront","labelForY","getTooltip","getTooltipProp","yAxisLabel","getLineChartSettings","tooltipProps","selectedDots","setSelectedDots","zoomAreaStart","setZoomAreaStart","zoomAreaEnd","setZoomAreaEnd","emptyAreas","getDateByIndex","every","isNaN","isLineChartDataEmpty","areas","lastArea","end","start","extendArea","getEmptyAreas","hasZoomArea","onMouseMove","mouseEvent","isTooltipActive","activePayload","activeLabel","onMouseLeave","onMouseDown","onMouseUp","either","emptyArea","filterNull","monoFontCell","fontFamily","timeSeriesContent","tooltipKeys","active","currentPayload","pick","mlDqData","mlDqState","mlDqReload","todayState","todayReload","reloadFunction","border","disabled","chipProps","isDateRangeValue","getRangeOptionLabel","Chip","InfoDataRenderer","isTimeSeries","UniquenessChartColors","getUniquenessColorByState","getUniquenessColors","formatUniquenessAnalysisData","getUniquenessData","getUniquenessChartData","uniqueness","dataMlDq","stateMlDq","reloadMlDq","dataToday","stateToday","reloadToday","loading","badQuality","AttributeTypeDetailIconSizes","NORMAL","AttributeTypeDetailIconVariant","AttributeTypeDetailIcon","detailType","paddingLeft","iconVariant","isDataLoading","isDataQualitative","checkIsDataQualitativeForSummary","LOADING","BAD_QUALITY","rootTimeRange","marginLeft","chipClasses","header","borderRight","entitySummary","attributeTypeSummary","infoTitle","infoContent","attributeTypeIconWrapper","totalLoading","summaryWrapper","HeaderInfo","AttributeTypeIconSizes","entityTypesArray","total","recordsInfo","CircularProgress","Tooltip","attributeTypesCount","getAttributeTypesTree","collectAttributes","attributesCollection","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","getValidationChartData","getFrequencyChartData","getPatternAnalisysData","getDVFAnalyticAttribtuteUri","attributeName","getValidationFilter","getFrequencyAnalysisStateForTimestamp","attributeValue","getFrequencyAnalysisFilterForDate","getFrequencyAnalysisFilter","getFrequencyAnalysisSearchState","isTimestampBasedType","getPatternAnalysisSearchState","pattern","getRowsCounterLabel","NO_DATA_FIELD","getEntityLevelColumnsOptions","functionsCount","sortable","secondLabel","getBarColor","getDvfColor","getAttributeLevelColumnsOptions","getColumnsOptions","getViolatedValidationData","textOverflow","titleCount","countProfiles","chartInfoPanel","VVFNoDataChartType","chartTitle","dvfConfigLink","dataSourceLabel","DVF_NOT_SUPPORTED","NotSupportedIcon","DVF_NOT_CONFIGURE","SettingsIcon","Link","href","component","underline","DATA_VALID","NiceOneIcon","PERMISSION_DENIED","useNoDataDvfType","activeDvfs","errorCode","dvfsState","chartDataState","chartState","isAttributeDataLevel","isPermissionDenied","ApiErrorCode","isDVFNotSupported","isDVFNotConfigured","isDataValid","useDvfs","onlyActive","dvfsData","currentDvfs","getDVFsForAttribute","getLabelAndMaxValue","getValueByColumnId","rowValue","is","handler","childrenRef","onResize","el","clientWidth","scrollWidth","RootRef","rootRef","headCell","isFirstColumn","headCellWithRange","headLabel","labelWrapper","rangeLabel","tooltipValue","useNumberCellStyles","barColor","colorBarContainer","numberContainer","number","headCellData","headIndex","formattedMaxValue","hasRange","isOverflowing","setIsOverflowing","labelElement","overflowed","DefaultHeadCellRenderer","columnsHeaders","withTableContext","columnData","cellClassName","labelRenderer","LabelRenderer","hasCustomRenderer","utils","formattedValue","ColorBar","tableContainer","cellBorder","getExtendedLabel","columnsOptions","basicTableRef","tableClasses","headData","columnOptions","resizable","headCellRenderer","HeadCellRenderer","rowCellValueRenderer","LabelCellRenderer","initialWidth","NumberCellValueRenderer","context","BasicTable","columnsData","rowsData","headRowHeight","getRowCellHeight","defaultColumnWidth","defaultColumnMinWidth","hoverStateEnabled","layoutItemContent","customComparator","contentChildren","setSortDirection","setSortField","comparator","defaultComparator","handleSort","field","toggleSortOrder","sortedData","sorting","order","onSort","TotalInfo","totalProfiles","invalidProfiles","totalInfo","dvfData","dvfErrorCode","dvfsReload","getNoDataStatus","getEntityLevelValidationChartData","noDataType","dvfUris","invalidProfilesCount","setInvalidProfilesCount","getTotals","useInvalidProfiles","dvfUri","getValidationSearchState","dataKeys","functionId","propSatisfies","reloadDvf","stateDvf","acc","without","preparedData","convertDateLabelsInChartData","isSSNType","xAxisLabel","textTransform","XAxisLabel","xCoord","ExpandedValueTooltip","renderXAxis","tickProps","visibleTicksCount","maxTickWidth","showCategories","barCategoryGap","maxBarSize","yTickRenderer","barChart","minPointSize","axisLine","vertical","labelForX","BarTooltip","tooltipPayload","tooltipLabel","propertiesName","chartInfoLabel","chartInfoValue","chartInfoWrapper","chartInfoItem","InfoPanel","isClickable","rectangleProps","barTooltipTitle","getBarChartSettings","showInfoPanel","shape","useLabelStyles","INCLUDE_SOURCE_ICON","getSourceColor","SourceIcon","applySpec","getCrosswalkAnalysisData","SourceLabelRenderer","getValueDistributionData","onBarSelect","showTopLabel","uniqueDataKeys","mergeAll","getBarLabel","stackId","onMouseOver","getBars","consolidationRateWrapper","ratePercent","tableWithSelectedRow","ConsolidationPercentage","totalCrosswalks","totalEntities","consolidationRate","reltioCleanser","totalCrosswalksBySource","formattedPercent","YAxisTickRenderer","selectedSource","setSelectedSource","barChartData","tableChartData","crosswalk","descend","getConsolidationRateTableData","sortedBarChartData","sortedSourceData","barSelectHandler","rowIndex","rowSelectHandler","rowClickHandler","chartHeight","onRowClick","onRowHover","hoverRowIndex","RDMTranscodeStatus","RDMChartColors","RESOLVED","UNRESOLVED","getRDMChartColors","formatRDMTranscodeData","resolveCount","unresolveCount","getRDMTranscodeFilter","rdmTranscodeStatus","getRDMTranscodeSearchState","setData","getRDMData","isRDMLoolupResolve","loadRDMChartData","useRDMChartDataRequest","ViewsFactory","getComponent","isFullscreen","onToggleFullscreen","MONTH_DISTRIBUTION","DAY_OF_WEEK_DISTRIBUTION","DAY_OF_MONTH_DISTRIBUTION","DQDashboardLayoutItem","layoutItemConfig","ResizeComponent","reltioGridLayoutToStaticLayout","DEFAULT_LAYOUT_OPTIONS","cols","rowHeight","memo","layoutOptions","staticLayout","ReltioGridLayout","LayoutItem","warning","errorIcon","scrollTopShadow","perspectiveView","overflowX","attributeLevelWrapper","navigationWrapper","headerRightSide","periodSelector","flexBasis","paper","input","inputRoot","dropdownIndicator","layoutRoot","customAttributeLayouts","layoutsByDataLevel","layouts","timeRangeAvailable","chartDataType","customLayouts","defaultLayouts","mergedLayoutsByType","mergeLeft","getLayoutByAttributeType","uniqBy","getViewsByDataType","getAttributeLevelViews","viewsByDataLevel","attributeLevelMetrics","breadcrumb","onChange","Breadcrumbs","separator","NavigateNext","handleChangeDataLevel","getPagePartWidth","pagePartIndex","getPageIndexes","transitionTime","pagesWrapper","pagesCount","page","pages","startSliding","endSliding","TRANSITION_TIMEOUT_MS","savedPage","setSavedPage","setTimeout","currentPageIndexes","pagesSettings","allWidth","pagesettings","fixedWidth","pagePart","partWidth","calculatePagePartsWidth","pageIndexes","prevPageIndexes","leftPagesIndexes","getLeftPageOffset","showComponent","styleWidth","minCurrentIndex","maxCurrentIndex","pageSettings","indexPage","getPagePartStyleWidth","entityLevelBar","writingMode","expandButton","expandButtonText","showEntityLevel","expandButtonTitle","getAttrTypeFromItem","getFirstSimpleDetailedAttrType","isComplexAttribute","isImage","not","filterDetailedAttrTypeByFieldName","getFilterOptionsByGroup","EmptinessFilterValue","noDataFilterOptions","SHOW_EMPTY","filterItemsByEmptiness","firstEmptinessOption","filterValidDetailsOptions","validOptionValues","getFieldNameFromItem","filterItemsByDetails","detailsOptions","filteredNestedFieldNames","both","getFilteredNestedFieldNames","startsWith","getAtrributeFieldNames","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","noData","noDataLabel","selected","onCollapse","noop","isLoading","hasFillRate","CollapseIcon","ArrowRightIcon","ArrowDropDownIcon","ListItem","times","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","getValidFilterOptions","closeFilter","handleOptionChange","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","collectFilteredAttributeItems","itemsWithDetails","setItemsWithDetails","getEntityTypeMatchAttributes","reference","useAttrTypeDetails","attributeFieldNames","memoizedAttributeFieldNames","initialFillRates","fillRatesState","setFillRateData","loadFillRateData","e","useFillRateRequest","fillRateFromChartsData","fillRateForSelectedAttribute","isDVFLoaded","isFillRateLoaded","filteredItems","filteredByEmptinessItems","detailsFilterOptions","getDetailsOptionCount","getDetailsOptions","visibleItems","collapsedFieldName","rejectCollapsedItemsChildren","countAttrTypes","handleAttrTypeDetailsChange","selectedDetailedAttributeType","getDetailedAttrTypeByFieldName","scrollTo","indexOfSelectedFieldName","getIndexByFieldName","scrollToItem","handleScroll","scrollOffset","currentBorderTop","borderTop","renderAttribute","getFillRateByAttributeType","showNoData","itemData","itemSize","onScroll","MEDIUM","LARGE","hasRDMLookup","isAttrTreeHasRDMLookup","checkEntityTypeHasRDMLookup","currentRDMLookupState","getEntityLevelViews","selectRoot","outline","select","selectValue","arrowIcon","optionRoot","dataReltioOptionId","classesProps","selectProps","renderCount","mergeClasses","outlined","Select","MenuProps","getContentAnchorEl","list","renderValue","autoWidth","entityCount","radius","EmptyState","LoadingIcon","setTick","useReloadAllFacets","intervalId","setInterval","timer","clearInterval","isValid","fromNow","RefreshIcon","saveState","isAvailableEntityType","useEntityTypes","setEntityTypeUri","entityCountRequestState","setDataLevel","selectedEntityType","consoleLink","setConsoleLink","setDVFConfigLink","servicesPath","environment","getConsoleApps","response","apps","insert","useDvfConfigLink","setDvfs","setErrorCode","dvfPath","env","canUserReadDVF","functions","loadDVFs","getDVF","useDVF","dvfContext","dqDashboardSavedState","isSavedStateLoaded","isPermissionsRequestFinished","getEntityType","isEntityTypeExists","sortedEntityTypesWithCount","defaultPeriod","Array","isArray","saveStateHandler","saveStateDebounce","fn","lastParams","params","startParams","clearTimeout","useDebounceFunction","newSavedState","getNewSavedState","sortWith","sortEntityTypesWithCount","handleSetEntityTypeByUri","showDashboard","showContent","showTimeRange","dateRangeEditorValue","getPeriodValue","DateRangeEditor","getDateRangeOptions","TextFieldProps","InputProps","disableUnderline","DateRangePickerProps","maxDate","startOf","toDate","ATTRIBUTE_LIST_WIDTH","dqDashboardTheme","createMuiTheme","generateClassName","createGenerateClassName","productionPrefix","disableGlobal","store","getSavedStatePromisified","promisifyCallback","MuiPickersUtilsProvider","MomentUtils","StylesProvider"],"sourceRoot":""}