codecharta-visualization 1.114.0 → 1.115.0
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/README.md +4 -1
- package/app/app.module.ts +1 -12
- package/app/app.scss +0 -2
- package/app/codeCharta/assets/codecharta_logo.svg +1 -0
- package/app/codeCharta/codeCharta.component.html +10 -7
- package/app/codeCharta/codeCharta.component.scss +22 -51
- package/app/codeCharta/codeCharta.component.ts +5 -7
- package/app/codeCharta/codeCharta.model.ts +0 -1
- package/app/codeCharta/e2e/__snapshots__/logo.e2e.ts.snap +2 -2
- package/app/codeCharta/e2e/logo.po.ts +7 -7
- package/app/codeCharta/e2e/url.e2e.ts +2 -2
- package/app/codeCharta/index.d.ts +1 -1
- package/app/codeCharta/model/customConfig/customConfig.api.model.ts +1 -0
- package/app/codeCharta/services/isAttributeSideBarVisible.service.ts +2 -2
- package/app/codeCharta/services/loadFile/loadFile.service.spec.ts +6 -6
- package/app/codeCharta/services/loadFile/loadFile.service.ts +7 -3
- package/app/codeCharta/services/loadInitialFile/loadInitialFile.service.spec.ts +1 -1
- package/app/codeCharta/services/loadInitialFile/loadInitialFile.service.ts +7 -7
- package/app/codeCharta/services/version/version.service.ts +2 -2
- package/app/codeCharta/state/effects/autoFitCodeMapChange/autoFitCodeMap.effect.ts +5 -5
- package/app/codeCharta/state/effects/linkColorMetricToHeightMetric/linkColorMetricToHeightMetric.effect.ts +2 -2
- package/app/codeCharta/state/effects/nodeContextMenu/excludeButton/excludeButton.component.ts +4 -3
- package/app/codeCharta/state/effects/nodeContextMenu/flattenButtons/flattenButtons.component.html +2 -2
- package/app/codeCharta/state/effects/nodeContextMenu/flattenButtons/flattenButtons.component.ts +4 -3
- package/app/codeCharta/state/effects/nodeContextMenu/focusButtons/focusButtons.component.ts +4 -3
- package/app/codeCharta/state/effects/nodeContextMenu/highlightButtons/highlightButtons.component.spec.ts +5 -5
- package/app/codeCharta/state/effects/nodeContextMenu/highlightButtons/highlightButtons.component.ts +4 -6
- package/app/codeCharta/state/effects/nodeContextMenu/markFolderRow/markFolderRow.component.ts +5 -4
- package/app/codeCharta/state/effects/nodeContextMenu/nodeContextMenu.service.ts +2 -2
- package/app/codeCharta/state/effects/nodeContextMenu/nodeContextMenuCard/nodeContextMenuCard.component.html +1 -1
- package/app/codeCharta/state/effects/nodeContextMenu/nodeContextMenuCard/nodeContextMenuCard.component.scss +6 -7
- package/app/codeCharta/state/effects/nodeContextMenu/nodeContextMenuCard/nodeContextMenuCard.component.ts +5 -4
- package/app/codeCharta/state/effects/nodeContextMenu/nodeContextMenuCard/nodeContextMenuCard.module.ts +1 -2
- package/app/codeCharta/state/effects/nodeContextMenu/openNodeContextMenu.effect.ts +1 -4
- package/app/codeCharta/state/effects/renderCodeMapEffect/renderCodeMap.effect.ts +4 -4
- package/app/codeCharta/state/effects/resetChosenMetrics/resetChosenMetrics.effect.spec.ts +25 -19
- package/app/codeCharta/state/effects/resetChosenMetrics/resetChosenMetrics.effect.ts +6 -5
- package/app/codeCharta/state/effects/resetSelectedEdgeMetricWhenItDoesntExistAnymore/resetSelectedEdgeMetricWhenItDoesntExistAnymore.effect.spec.ts +13 -13
- package/app/codeCharta/state/effects/resetSelectedEdgeMetricWhenItDoesntExistAnymore/resetSelectedEdgeMetricWhenItDoesntExistAnymore.effect.ts +6 -6
- package/app/codeCharta/state/effects/unfocusNodes/unfocusNodes.effect.ts +2 -2
- package/app/codeCharta/state/effects/updateEdgePreviews/updateEdgePreviews.effect.ts +2 -2
- package/app/codeCharta/state/effects/updateEdgePreviews/utils/edgePreviewNodes.selector.ts +5 -3
- package/app/codeCharta/state/effects/updateFileSettings/updateFileSettings.effect.ts +2 -2
- package/app/codeCharta/state/effects/updateFileSettings/utils/__snapshots__/blacklist.merger.spec.ts.snap +9 -9
- package/app/codeCharta/state/effects/updateFileSettings/utils/__snapshots__/edges.merger.spec.ts.snap +16 -16
- package/app/codeCharta/state/effects/updateFileSettings/utils/__snapshots__/markedPackages.merger.spec.ts.snap +10 -10
- package/app/codeCharta/state/effects/updateVisibleTopLabels/updateVisibleTopLabels.effect.ts +2 -2
- package/app/codeCharta/state/selectors/accumulatedData/accumulatedData.selector.spec.ts +76 -0
- package/app/codeCharta/state/selectors/accumulatedData/accumulatedData.selector.ts +7 -12
- package/app/codeCharta/state/selectors/accumulatedData/metricData/edgeMetricData.calculator.spec.ts +46 -0
- package/app/codeCharta/state/selectors/accumulatedData/metricData/{edgeMetricData.selector.ts → edgeMetricData.calculator.ts} +10 -23
- package/app/codeCharta/state/selectors/accumulatedData/metricData/metricData.selector.ts +10 -6
- package/app/codeCharta/state/selectors/accumulatedData/metricData/metricNames.selector.spec.ts +5 -5
- package/app/codeCharta/state/selectors/accumulatedData/metricData/metricNames.selector.ts +2 -2
- package/app/codeCharta/state/selectors/accumulatedData/metricData/{nodeMetricData.selector.spec.ts → nodeMetricData.calculator.spec.ts} +2 -2
- package/app/codeCharta/state/selectors/accumulatedData/metricData/{nodeMetricData.selector.ts → nodeMetricData.calculator.ts} +0 -5
- package/app/codeCharta/state/selectors/accumulatedData/metricData/selectedColorMetricData.selector.ts +4 -4
- package/app/codeCharta/state/selectors/accumulatedData/utils/addEdgeMetricsForLeaves.ts +3 -2
- package/app/codeCharta/state/selectors/accumulatedData/utils/getMetricValuesForNode.spec.ts +4 -11
- package/app/codeCharta/state/selectors/accumulatedData/utils/getMetricValuesForNode.ts +2 -2
- package/app/codeCharta/state/selectors/allNecessaryRenderDataAvailable/areAllNecessaryRenderDataAvailable.selector.ts +7 -6
- package/app/codeCharta/state/selectors/primaryMetrics/primaryMetrics.selector.ts +27 -11
- package/app/codeCharta/state/store/appSettings/appSettings.actions.ts +0 -2
- package/app/codeCharta/state/store/appSettings/appSettings.reducer.ts +0 -2
- package/app/codeCharta/state/store/appSettings/invertArea/invertArea.actions.ts +1 -12
- package/app/codeCharta/state/store/appSettings/invertArea/invertArea.reducer.ts +2 -4
- package/app/codeCharta/state/store/dynamicSettings/colorRange/resetColorRange.effect.ts +1 -1
- package/app/codeCharta/ui/actionIcon/actionIcon.component.ts +4 -3
- package/app/codeCharta/ui/actionIcon/actionIcon.module.ts +1 -2
- package/app/codeCharta/ui/attributeSideBar/attributeSideBar.component.scss +1 -1
- package/app/codeCharta/ui/attributeSideBar/attributeSideBar.component.spec.ts +59 -7
- package/app/codeCharta/ui/attributeSideBar/attributeSideBar.component.ts +5 -7
- package/app/codeCharta/ui/attributeSideBar/attributeSideBar.module.ts +2 -2
- package/app/codeCharta/ui/attributeSideBar/attributeSideBarHeaderSection/attributeSideBarHeaderSection.component.ts +5 -4
- package/app/codeCharta/ui/attributeSideBar/attributeSideBarHeaderSection/nodePath/nodePath.component.ts +4 -3
- package/app/codeCharta/ui/attributeSideBar/attributeSideBarPrimaryMetrics/attributeSideBarPrimaryMetric/attributeSideBarPrimaryMetric.component.ts +4 -3
- package/app/codeCharta/ui/attributeSideBar/attributeSideBarPrimaryMetrics/attributeSideBarPrimaryMetrics.component.html +10 -5
- package/app/codeCharta/ui/attributeSideBar/attributeSideBarPrimaryMetrics/attributeSideBarPrimaryMetrics.component.ts +4 -3
- package/app/codeCharta/ui/attributeSideBar/attributeSideBarSecondaryMetrics/attributeSideBarSecondaryMetrics.component.html +5 -1
- package/app/codeCharta/ui/attributeSideBar/attributeSideBarSecondaryMetrics/attributeSideBarSecondaryMetrics.component.ts +4 -3
- package/app/codeCharta/ui/attributeSideBar/attributeSideBarSecondaryMetrics/secondaryMetrics.selector.spec.ts +29 -4
- package/app/codeCharta/ui/attributeSideBar/attributeSideBarSecondaryMetrics/secondaryMetrics.selector.ts +11 -4
- package/app/codeCharta/ui/attributeSideBar/attributeTypeSelector/attributeTypeSelector.component.scss +4 -6
- package/app/codeCharta/ui/attributeSideBar/attributeTypeSelector/attributeTypeSelector.component.ts +5 -4
- package/app/codeCharta/ui/attributeSideBar/metricDeltaSelected/metricDeltaSelected.component.spec.ts +2 -2
- package/app/codeCharta/ui/attributeSideBar/metricDeltaSelected/metricDeltaSelected.component.ts +4 -3
- package/app/codeCharta/ui/attributeSideBar/util/edge.ts +7 -0
- package/app/codeCharta/ui/attributeSideBar/util/metric.ts +2 -0
- package/app/codeCharta/ui/{legendPanel/selectors/legendMetric.ts → attributeSideBar/util/metricDescriptors.ts} +10 -4
- package/app/codeCharta/ui/codeMap/__snapshots__/codeMap.arrow.service.spec.ts.snap +16 -16
- package/app/codeCharta/ui/codeMap/__snapshots__/codeMap.render.service.spec.ts.snap +19 -19
- package/app/codeCharta/ui/codeMap/codeMap.arrow.service.spec.ts +5 -4
- package/app/codeCharta/ui/codeMap/codeMap.arrow.service.ts +34 -29
- package/app/codeCharta/ui/codeMap/codeMap.component.ts +9 -8
- package/app/codeCharta/ui/codeMap/codeMap.label.service.ts +5 -5
- package/app/codeCharta/ui/codeMap/codeMap.mouseEvent.service.spec.ts +14 -1
- package/app/codeCharta/ui/codeMap/codeMap.mouseEvent.service.ts +30 -25
- package/app/codeCharta/ui/codeMap/codeMap.render.service.spec.ts +8 -6
- package/app/codeCharta/ui/codeMap/codeMap.render.service.ts +18 -13
- package/app/codeCharta/ui/codeMap/threeViewer/threeOrbitControls.service.spec.ts +3 -3
- package/app/codeCharta/ui/codeMap/threeViewer/threeOrbitControls.service.ts +9 -9
- package/app/codeCharta/ui/codeMap/threeViewer/threeRenderer.service.ts +3 -3
- package/app/codeCharta/ui/codeMap/threeViewer/threeSceneService.ts +16 -19
- package/app/codeCharta/ui/codeMap/threeViewer/threeStats.service.spec.ts +27 -32
- package/app/codeCharta/ui/codeMap/threeViewer/threeStats.service.ts +3 -4
- package/app/codeCharta/ui/codeMap/threeViewer/threeViewer.service.spec.ts +2 -2
- package/app/codeCharta/ui/codeMap/threeViewer/threeViewer.service.ts +6 -6
- package/app/codeCharta/ui/colorPicker/colorPicker.component.spec.ts +5 -2
- package/app/codeCharta/ui/colorPicker/colorPicker.component.ts +3 -2
- package/app/codeCharta/ui/colorPickerForMapColor/colorPickerForMapColor.component.ts +5 -4
- package/app/codeCharta/ui/copyToClipboardButton/copyToClipboard.service.ts +2 -2
- package/app/codeCharta/ui/copyToClipboardButton/copyToClipboardButton.component.ts +4 -3
- package/app/codeCharta/ui/customConfigs/addCustomConfigButton/addCustomConfigButton.component.spec.ts +17 -10
- package/app/codeCharta/ui/customConfigs/addCustomConfigButton/addCustomConfigButton.component.ts +4 -3
- package/app/codeCharta/ui/customConfigs/addCustomConfigButton/addCustomConfigButton.module.ts +3 -3
- package/app/codeCharta/ui/customConfigs/addCustomConfigButton/addCustomConfigDialog/addCustomConfigDialog.component.html +14 -2
- package/app/codeCharta/ui/customConfigs/addCustomConfigButton/addCustomConfigDialog/addCustomConfigDialog.component.ts +23 -13
- package/app/codeCharta/ui/customConfigs/addCustomConfigButton/addCustomConfigDialog/addCustomConfigDialog.spec.ts +23 -9
- package/app/codeCharta/ui/customConfigs/addCustomConfigButton/addCustomConfigDialog/addCustomDialog.component.scss +7 -6
- package/app/codeCharta/ui/customConfigs/addCustomConfigButton/addCustomConfigDialog/downloadAndPurgeConfigs/downloadAndPurgeConfigs.component.ts +5 -4
- package/app/codeCharta/ui/customConfigs/customConfigHelper.service.ts +2 -2
- package/app/codeCharta/ui/customConfigs/customConfigList/customConfigItemGroup/customConfig2ApplicableColor.pipe.ts +2 -2
- package/app/codeCharta/ui/customConfigs/customConfigList/customConfigItemGroup/customConfig2ApplicableMessage.pipe.ts +2 -2
- package/app/codeCharta/ui/customConfigs/customConfigList/customConfigItemGroup/customConfigDescription/applyCustomConfigButton.component.html +15 -12
- package/app/codeCharta/ui/customConfigs/customConfigList/customConfigItemGroup/customConfigDescription/applyCustomConfigButton.component.scss +12 -8
- package/app/codeCharta/ui/customConfigs/customConfigList/customConfigItemGroup/customConfigDescription/applyCustomConfigButton.component.ts +7 -6
- package/app/codeCharta/ui/customConfigs/customConfigList/customConfigItemGroup/customConfigDescription/applyCustomConfigButton.spec.ts +0 -6
- package/app/codeCharta/ui/customConfigs/customConfigList/customConfigItemGroup/customConfigItemGroup.component.html +21 -4
- package/app/codeCharta/ui/customConfigs/customConfigList/customConfigItemGroup/customConfigItemGroup.component.scss +38 -0
- package/app/codeCharta/ui/customConfigs/customConfigList/customConfigItemGroup/customConfigItemGroup.component.spec.ts +32 -7
- package/app/codeCharta/ui/customConfigs/customConfigList/customConfigItemGroup/customConfigItemGroup.component.ts +17 -2
- package/app/codeCharta/ui/customConfigs/customConfigList/customConfigList.component.html +8 -8
- package/app/codeCharta/ui/customConfigs/customConfigList/customConfigList.component.scss +27 -31
- package/app/codeCharta/ui/customConfigs/customConfigList/customConfigList.component.spec.ts +6 -3
- package/app/codeCharta/ui/customConfigs/customConfigList/customConfigList.component.ts +5 -4
- package/app/codeCharta/ui/customConfigs/customConfigList/getCustomConfigItemGroups.spec.ts +5 -1
- package/app/codeCharta/ui/customConfigs/customConfigList/getCustomConfigItemGroups.ts +2 -1
- package/app/codeCharta/ui/customConfigs/customConfigNoteDialogButton/customConfigNoteDialog/customConfigNoteDialog.component.html +12 -0
- package/app/codeCharta/ui/customConfigs/customConfigNoteDialogButton/customConfigNoteDialog/customConfigNoteDialog.component.scss +31 -0
- package/app/codeCharta/ui/customConfigs/customConfigNoteDialogButton/customConfigNoteDialog/customConfigNoteDialog.component.ts +12 -0
- package/app/codeCharta/ui/customConfigs/customConfigNoteDialogButton/customConfigNoteDialogButton.component.html +3 -0
- package/app/codeCharta/ui/customConfigs/customConfigNoteDialogButton/customConfigNoteDialogButton.component.spec.ts +90 -0
- package/app/codeCharta/ui/customConfigs/customConfigNoteDialogButton/customConfigNoteDialogButton.component.ts +33 -0
- package/app/codeCharta/ui/customConfigs/customConfigNoteDialogButton/customConfigNoteDialogButton.module.ts +14 -0
- package/app/codeCharta/ui/customConfigs/customConfigs.component.spec.ts +5 -4
- package/app/codeCharta/ui/customConfigs/customConfigs.component.ts +6 -4
- package/app/codeCharta/ui/customConfigs/customConfigs.module.ts +14 -3
- package/app/codeCharta/ui/customConfigs/downloadCustomConfigsButton/downloadCustomConfigsButton.component.ts +4 -3
- package/app/codeCharta/ui/customConfigs/uploadCustomConfigButton/uploadCustomConfigButton.component.ts +3 -2
- package/app/codeCharta/ui/customConfigs/uploadCustomConfigButton/uploadCustomConfigButton.module.ts +1 -2
- package/app/codeCharta/ui/dialogs/changelogDialog/changelogDialog.component.html +6 -6
- package/app/codeCharta/ui/dialogs/changelogDialog/changelogDialog.component.scss +6 -14
- package/app/codeCharta/ui/dialogs/changelogDialog/changelogDialog.component.ts +4 -3
- package/app/codeCharta/ui/dialogs/changelogDialog/changelogDialog.module.ts +1 -2
- package/app/codeCharta/ui/dialogs/confirmationDialog/confirmationDialog.component.scss +3 -3
- package/app/codeCharta/ui/dialogs/confirmationDialog/confirmationDialog.component.ts +4 -3
- package/app/codeCharta/ui/dialogs/errorDialog/errorDialog.component.po.ts +4 -9
- package/app/codeCharta/ui/dialogs/errorDialog/errorDialog.component.ts +3 -2
- package/app/codeCharta/ui/export3DMapButton/export3DMapButton.component.ts +4 -3
- package/app/codeCharta/ui/fileExtensionBar/distributionMetricChooser/distributionMetricChooser.component.ts +4 -3
- package/app/codeCharta/ui/fileExtensionBar/fileExtensionBar.component.scss +5 -6
- package/app/codeCharta/ui/fileExtensionBar/fileExtensionBar.component.ts +5 -4
- package/app/codeCharta/ui/fileExtensionBar/fileExtensionBar.module.ts +1 -2
- package/app/codeCharta/ui/fileExtensionBar/selectors/fileExtensionCalculator.spec.ts +18 -18
- package/app/codeCharta/ui/fileExtensionBar/selectors/fileExtensionCalculator.ts +1 -1
- package/app/codeCharta/ui/filePanel/filePanel.component.html +1 -1
- package/app/codeCharta/ui/filePanel/filePanel.component.scss +7 -27
- package/app/codeCharta/ui/filePanel/filePanel.component.ts +5 -4
- package/app/codeCharta/ui/filePanel/filePanel.module.ts +2 -2
- package/app/codeCharta/ui/filePanel/filePanel.po.ts +6 -4
- package/app/codeCharta/ui/filePanel/filePanelDeltaSelector/filePanelDeltaSelector.component.html +26 -24
- package/app/codeCharta/ui/filePanel/filePanelDeltaSelector/filePanelDeltaSelector.component.scss +6 -0
- package/app/codeCharta/ui/filePanel/filePanelDeltaSelector/filePanelDeltaSelector.component.ts +5 -3
- package/app/codeCharta/ui/filePanel/filePanelFileSelector/filePanelFileSelector.component.html +1 -0
- package/app/codeCharta/ui/filePanel/filePanelFileSelector/filePanelFileSelector.component.scss +2 -9
- package/app/codeCharta/ui/filePanel/filePanelFileSelector/filePanelFileSelector.component.spec.ts +1 -1
- package/app/codeCharta/ui/filePanel/filePanelFileSelector/filePanelFileSelector.component.ts +5 -4
- package/app/codeCharta/ui/filePanel/filePanelFileSelector/removeFileButton/removeFileButton.component.scss +1 -1
- package/app/codeCharta/ui/filePanel/filePanelFileSelector/removeFileButton/removeFileButton.component.ts +5 -4
- package/app/codeCharta/ui/filePanel/filePanelStateButtons/filePanelStateButtons.component.html +1 -1
- package/app/codeCharta/ui/filePanel/filePanelStateButtons/filePanelStateButtons.component.ts +4 -6
- package/app/codeCharta/ui/filePanel/fileSelectionMode.service.ts +2 -2
- package/app/codeCharta/ui/labelledColorPicker/labelledColorPicker.component.html +1 -1
- package/app/codeCharta/ui/labelledColorPicker/labelledColorPicker.component.scss +12 -8
- package/app/codeCharta/ui/labelledColorPicker/labelledColorPicker.component.spec.ts +2 -2
- package/app/codeCharta/ui/labelledColorPicker/labelledColorPicker.component.ts +4 -3
- package/app/codeCharta/ui/legendPanel/legendBlock/legendBlock.component.html +8 -8
- package/app/codeCharta/ui/legendPanel/legendBlock/legendBlock.component.ts +5 -4
- package/app/codeCharta/ui/legendPanel/legendMarkedPackages/legendMarkedPackages.component.ts +5 -4
- package/app/codeCharta/ui/legendPanel/legendPanel.component.html +11 -5
- package/app/codeCharta/ui/legendPanel/legendPanel.component.ts +5 -7
- package/app/codeCharta/ui/legendPanel/selectors/legendAreaMetric.selector.ts +4 -4
- package/app/codeCharta/ui/legendPanel/selectors/legendColorMetric.selector.ts +4 -4
- package/app/codeCharta/ui/legendPanel/selectors/legendEdgeMetric.selector.spec.ts +10 -4
- package/app/codeCharta/ui/legendPanel/selectors/legendEdgeMetric.selector.ts +7 -7
- package/app/codeCharta/ui/legendPanel/selectors/legendHeightMetric.selector.ts +4 -4
- package/app/codeCharta/ui/loadingFileProgressSpinner/loadingFileProgressSpinner.component.scss +1 -1
- package/app/codeCharta/ui/loadingFileProgressSpinner/loadingFileProgressSpinner.component.ts +5 -4
- package/app/codeCharta/ui/metricChooser/metricChooser.component.html +1 -2
- package/app/codeCharta/ui/metricChooser/metricChooser.component.scss +22 -13
- package/app/codeCharta/ui/metricChooser/metricChooser.component.spec.ts +9 -7
- package/app/codeCharta/ui/metricChooser/metricChooser.component.ts +11 -10
- package/app/codeCharta/ui/metricChooser/metricChooser.module.ts +1 -2
- package/app/codeCharta/ui/metricChooser/metricChooserTypeHovered/metricChooserTypeHovered.component.ts +4 -3
- package/app/codeCharta/ui/metricChooser/metricChooserValueHovered/metricChooserValueHovered.component.ts +4 -3
- package/app/codeCharta/ui/resetSettingsButton/resetSettingsButton.component.scss +21 -3
- package/app/codeCharta/ui/resetSettingsButton/resetSettingsButton.component.ts +5 -4
- package/app/codeCharta/ui/ribbonBar/areaMetricChooser/areaMetricChooser.component.spec.ts +9 -6
- package/app/codeCharta/ui/ribbonBar/areaMetricChooser/areaMetricChooser.component.ts +4 -3
- package/app/codeCharta/ui/ribbonBar/areaSettingsPanel/areaSettingsPanel.component.html +13 -23
- package/app/codeCharta/ui/ribbonBar/areaSettingsPanel/areaSettingsPanel.component.scss +12 -3
- package/app/codeCharta/ui/ribbonBar/areaSettingsPanel/areaSettingsPanel.component.spec.ts +31 -17
- package/app/codeCharta/ui/ribbonBar/areaSettingsPanel/areaSettingsPanel.component.ts +14 -14
- package/app/codeCharta/ui/ribbonBar/areaSettingsPanel/areaSettingsPanel.module.ts +1 -2
- package/app/codeCharta/ui/ribbonBar/artificialIntelligence/artificialIntelligence.component.scss +2 -3
- package/app/codeCharta/ui/ribbonBar/artificialIntelligence/artificialIntelligence.component.ts +5 -4
- package/app/codeCharta/ui/ribbonBar/artificialIntelligence/highRiskProfile/highRiskProfile.component.html +12 -3
- package/app/codeCharta/ui/ribbonBar/artificialIntelligence/highRiskProfile/highRiskProfile.component.spec.ts +10 -2
- package/app/codeCharta/ui/ribbonBar/artificialIntelligence/highRiskProfile/highRiskProfile.component.ts +3 -2
- package/app/codeCharta/ui/ribbonBar/artificialIntelligence/highRiskProfile/riskProfileBar.directive.ts +2 -2
- package/app/codeCharta/ui/ribbonBar/artificialIntelligence/selectors/artificialIntelligence.selector.spec.ts +6 -16
- package/app/codeCharta/ui/ribbonBar/artificialIntelligence/selectors/artificialIntelligence.selector.ts +7 -11
- package/app/codeCharta/ui/ribbonBar/artificialIntelligence/suspiciousMetrics/suspiciousMetrics.component.html +11 -1
- package/app/codeCharta/ui/ribbonBar/artificialIntelligence/suspiciousMetrics/suspiciousMetrics.component.spec.ts +4 -4
- package/app/codeCharta/ui/ribbonBar/artificialIntelligence/suspiciousMetrics/suspiciousMetrics.component.ts +6 -5
- package/app/codeCharta/ui/ribbonBar/colorMetricChooser/colorMetricChooser.component.spec.ts +9 -6
- package/app/codeCharta/ui/ribbonBar/colorMetricChooser/colorMetricChooser.component.ts +4 -3
- package/app/codeCharta/ui/ribbonBar/colorSettingsPanel/colorSettingsPanel.component.html +11 -10
- package/app/codeCharta/ui/ribbonBar/colorSettingsPanel/colorSettingsPanel.component.scss +17 -12
- package/app/codeCharta/ui/ribbonBar/colorSettingsPanel/colorSettingsPanel.component.ts +5 -4
- package/app/codeCharta/ui/ribbonBar/colorSettingsPanel/metricColorRangeSlider/metricColorRangeSlider.component.ts +5 -4
- package/app/codeCharta/ui/ribbonBar/colorSettingsPanel/metricColorRangeSlider/rangeSlider/rangeSlider.component.html +2 -2
- package/app/codeCharta/ui/ribbonBar/colorSettingsPanel/metricColorRangeSlider/rangeSlider/rangeSlider.component.scss +21 -6
- package/app/codeCharta/ui/ribbonBar/colorSettingsPanel/metricColorRangeSlider/rangeSlider/rangeSlider.component.ts +6 -5
- package/app/codeCharta/ui/ribbonBar/colorSettingsPanel/metricColorRangeSlider/rangeSlider/rangeSliderLabels/rangeSliderLabels.component.spec.ts +2 -2
- package/app/codeCharta/ui/ribbonBar/colorSettingsPanel/metricColorRangeSlider/rangeSlider/rangeSliderLabels/rangeSliderLabels.component.ts +5 -4
- package/app/codeCharta/ui/ribbonBar/edgeMetricChooser/edgeMetricChooser.component.scss +1 -1
- package/app/codeCharta/ui/ribbonBar/edgeMetricChooser/edgeMetricChooser.component.spec.ts +8 -6
- package/app/codeCharta/ui/ribbonBar/edgeMetricChooser/edgeMetricChooser.component.ts +5 -4
- package/app/codeCharta/ui/ribbonBar/edgeSettingsPanel/edgeMetricToggle/edgeMetricToggle.component.ts +4 -4
- package/app/codeCharta/ui/ribbonBar/edgeSettingsPanel/edgeSettingsPanel.component.html +14 -15
- package/app/codeCharta/ui/ribbonBar/edgeSettingsPanel/edgeSettingsPanel.component.spec.ts +1 -1
- package/app/codeCharta/ui/ribbonBar/edgeSettingsPanel/edgeSettingsPanel.component.ts +4 -3
- package/app/codeCharta/ui/ribbonBar/edgeSettingsPanel/selectors/amountOfBuildingsWithSelectedEdgeMetric.selector.ts +3 -3
- package/app/codeCharta/ui/ribbonBar/heightMetricChooser/areaMetricChooser.component.ts +4 -3
- package/app/codeCharta/ui/ribbonBar/heightMetricChooser/heightMetricChooser.component.spec.ts +9 -6
- package/app/codeCharta/ui/ribbonBar/heightSettingsPanel/heightSettingsPanel.component.html +15 -19
- package/app/codeCharta/ui/ribbonBar/heightSettingsPanel/heightSettingsPanel.component.spec.ts +3 -2
- package/app/codeCharta/ui/ribbonBar/heightSettingsPanel/heightSettingsPanel.component.ts +5 -6
- package/app/codeCharta/ui/ribbonBar/linkColorMetricToHeightMetricButton/linkColorMetricToHeightMetricButton.component.html +1 -1
- package/app/codeCharta/ui/ribbonBar/linkColorMetricToHeightMetricButton/linkColorMetricToHeightMetricButton.component.scss +2 -0
- package/app/codeCharta/ui/ribbonBar/linkColorMetricToHeightMetricButton/linkColorMetricToHeightMetricButton.component.spec.ts +4 -4
- package/app/codeCharta/ui/ribbonBar/linkColorMetricToHeightMetricButton/linkColorMetricToHeightMetricButton.component.ts +5 -4
- package/app/codeCharta/ui/ribbonBar/ribbonBar.component.html +21 -8
- package/app/codeCharta/ui/ribbonBar/ribbonBar.component.scss +18 -8
- package/app/codeCharta/ui/ribbonBar/ribbonBar.component.spec.ts +22 -23
- package/app/codeCharta/ui/ribbonBar/ribbonBar.component.ts +7 -6
- package/app/codeCharta/ui/ribbonBar/showScenariosButton/addCustomScenario/addCustomScenario.component.html +1 -1
- package/app/codeCharta/ui/ribbonBar/showScenariosButton/addCustomScenario/addCustomScenario.component.scss +9 -7
- package/app/codeCharta/ui/ribbonBar/showScenariosButton/addCustomScenario/addCustomScenario.component.spec.ts +10 -3
- package/app/codeCharta/ui/ribbonBar/showScenariosButton/addCustomScenario/addCustomScenario.component.ts +7 -10
- package/app/codeCharta/ui/ribbonBar/showScenariosButton/addCustomScenario/addCustomScenario.module.ts +1 -2
- package/app/codeCharta/ui/ribbonBar/showScenariosButton/scenario.service.ts +6 -6
- package/app/codeCharta/ui/ribbonBar/showScenariosButton/scenarios/scenarios.component.scss +2 -2
- package/app/codeCharta/ui/ribbonBar/showScenariosButton/scenarios/scenarios.component.ts +5 -4
- package/app/codeCharta/ui/ribbonBar/showScenariosButton/showScenariosButton.component.ts +5 -4
- package/app/codeCharta/ui/screenshotButton/screenshotButton.component.ts +8 -7
- package/app/codeCharta/ui/searchPanel/blacklistPanel/blacklistPanel.component.scss +2 -2
- package/app/codeCharta/ui/searchPanel/blacklistPanel/blacklistPanel.component.ts +5 -4
- package/app/codeCharta/ui/searchPanel/mapTreeView/mapTreeView.component.scss +14 -11
- package/app/codeCharta/ui/searchPanel/mapTreeView/mapTreeView.component.ts +5 -5
- package/app/codeCharta/ui/searchPanel/mapTreeView/mapTreeViewItemIcon/mapTreeViewItemIcon.component.ts +3 -2
- package/app/codeCharta/ui/searchPanel/mapTreeView/mapTreeViewItemName/mapTreeViewItemName.component.ts +4 -3
- package/app/codeCharta/ui/searchPanel/mapTreeView/mapTreeViewItemOptionButtons/mapTreeViewItemOptionButtons.component.html +2 -2
- package/app/codeCharta/ui/searchPanel/mapTreeView/mapTreeViewItemOptionButtons/mapTreeViewItemOptionButtons.component.ts +3 -2
- package/app/codeCharta/ui/searchPanel/mapTreeView/mapTreeViewLevel/mapTreeViewLevel.component.ts +4 -3
- package/app/codeCharta/ui/searchPanel/matchingFilesCounter/matchingFilesCounter.component.html +1 -1
- package/app/codeCharta/ui/searchPanel/matchingFilesCounter/matchingFilesCounter.component.scss +2 -2
- package/app/codeCharta/ui/searchPanel/matchingFilesCounter/matchingFilesCounter.component.ts +5 -4
- package/app/codeCharta/ui/searchPanel/searchBar/blacklistSearchPattern.effect.ts +1 -2
- package/app/codeCharta/ui/searchPanel/searchBar/searchBar.component.scss +0 -3
- package/app/codeCharta/ui/searchPanel/searchBar/searchBar.component.spec.ts +1 -1
- package/app/codeCharta/ui/searchPanel/searchBar/searchBar.component.ts +7 -6
- package/app/codeCharta/ui/searchPanel/searchPanel.component.html +1 -1
- package/app/codeCharta/ui/searchPanel/searchPanel.component.scss +0 -4
- package/app/codeCharta/ui/searchPanel/searchPanel.component.ts +4 -3
- package/app/codeCharta/ui/searchPanel/searchPanelModeSelector/searchPanelModeSelector.component.html +6 -20
- package/app/codeCharta/ui/searchPanel/searchPanelModeSelector/searchPanelModeSelector.component.scss +4 -6
- package/app/codeCharta/ui/searchPanel/searchPanelModeSelector/searchPanelModeSelector.component.ts +5 -4
- package/app/codeCharta/ui/searchPanel/sortingButton/sortingButton.component.ts +4 -3
- package/app/codeCharta/ui/searchPanel/sortingOption/sortingOption.component.spec.ts +1 -1
- package/app/codeCharta/ui/searchPanel/sortingOption/sortingOption.component.ts +4 -3
- package/app/codeCharta/ui/slider/slider.component.html +17 -21
- package/app/codeCharta/ui/slider/slider.component.scss +36 -19
- package/app/codeCharta/ui/slider/slider.component.spec.ts +38 -38
- package/app/codeCharta/ui/slider/slider.component.ts +8 -9
- package/app/codeCharta/ui/slider/slider.module.ts +1 -2
- package/app/codeCharta/ui/toolBar/downloadButton/downloadButton.component.spec.ts +2 -1
- package/app/codeCharta/ui/toolBar/downloadButton/downloadButton.component.ts +4 -3
- package/app/codeCharta/ui/toolBar/downloadButton/downloadButton.module.ts +1 -2
- package/app/codeCharta/ui/toolBar/downloadButton/downloadDialog/downloadDialog.component.html +1 -1
- package/app/codeCharta/ui/toolBar/downloadButton/downloadDialog/downloadDialog.component.scss +4 -5
- package/app/codeCharta/ui/toolBar/downloadButton/downloadDialog/downloadDialog.component.ts +5 -4
- package/app/codeCharta/ui/toolBar/globalConfigurationButton/globalConfigurationButton.component.html +1 -1
- package/app/codeCharta/ui/toolBar/globalConfigurationButton/globalConfigurationButton.component.scss +28 -34
- package/app/codeCharta/ui/toolBar/globalConfigurationButton/globalConfigurationButton.component.ts +5 -4
- package/app/codeCharta/ui/toolBar/globalConfigurationButton/globalConfigurationButton.module.ts +1 -2
- package/app/codeCharta/ui/toolBar/globalConfigurationButton/globalConfigurationDialog/displayQualitySelection/displayQualitySelection.component.html +1 -1
- package/app/codeCharta/ui/toolBar/globalConfigurationButton/globalConfigurationDialog/displayQualitySelection/displayQualitySelection.component.ts +4 -3
- package/app/codeCharta/ui/toolBar/globalConfigurationButton/globalConfigurationDialog/globalConfigurationDialog.component.html +26 -23
- package/app/codeCharta/ui/toolBar/globalConfigurationButton/globalConfigurationDialog/globalConfigurationDialog.component.ts +4 -3
- package/app/codeCharta/ui/toolBar/globalConfigurationButton/globalConfigurationDialog/mapLayoutSelection/mapLayoutSelection.component.html +1 -1
- package/app/codeCharta/ui/toolBar/globalConfigurationButton/globalConfigurationDialog/mapLayoutSelection/mapLayoutSelection.component.spec.ts +27 -24
- package/app/codeCharta/ui/toolBar/globalConfigurationButton/globalConfigurationDialog/mapLayoutSelection/mapLayoutSelection.component.ts +5 -4
- package/app/codeCharta/ui/toolBar/hoveredNodePathPanel/hoveredNodePathPanel.component.ts +5 -4
- package/app/codeCharta/ui/toolBar/loadingMapProgressSpinner/loadingMapProgressSpinner.component.ts +5 -4
- package/app/codeCharta/ui/toolBar/presentationModeButton/presentationModeButton.component.html +8 -11
- package/app/codeCharta/ui/toolBar/presentationModeButton/presentationModeButton.component.scss +4 -3
- package/app/codeCharta/ui/toolBar/presentationModeButton/presentationModeButton.component.spec.ts +2 -2
- package/app/codeCharta/ui/toolBar/presentationModeButton/presentationModeButton.component.ts +5 -4
- package/app/codeCharta/ui/toolBar/toolBar.component.scss +2 -4
- package/app/codeCharta/ui/toolBar/toolBar.component.ts +5 -5
- package/app/codeCharta/ui/toolBar/toolBar.module.ts +1 -2
- package/app/codeCharta/ui/toolBar/uploadFilesButton/uploadFiles.service.ts +2 -2
- package/app/codeCharta/ui/toolBar/uploadFilesButton/uploadFilesButton.component.ts +5 -4
- package/app/codeCharta/ui/viewCube/centerMapButton/centerMapButton.component.ts +5 -4
- package/app/codeCharta/ui/viewCube/viewCube.component.spec.ts +2 -2
- package/app/codeCharta/ui/viewCube/viewCube.component.ts +6 -5
- package/app/codeCharta/ui/viewCube/viewCube.mouseEvents.service.spec.ts +3 -2
- package/app/codeCharta/ui/viewCube/viewCube.mouseEvents.service.ts +6 -6
- package/app/codeCharta/util/EventEmitter.ts +22 -0
- package/app/codeCharta/util/__snapshots__/aggregationGenerator.spec.ts.snap +116 -116
- package/app/codeCharta/util/__snapshots__/deltaGenerator.spec.ts.snap +82 -82
- package/app/codeCharta/util/__snapshots__/fileHelper.spec.ts.snap +23 -23
- package/app/codeCharta/util/aggregationGenerator.spec.ts +33 -27
- package/app/codeCharta/util/aggregationGenerator.ts +4 -1
- package/app/codeCharta/util/algorithm/treeMapLayout/__snapshots__/treeMapGenerator.spec.ts.snap +137 -137
- package/app/codeCharta/util/algorithm/treeMapLayout/__snapshots__/treeMapHelper.spec.ts.snap +9 -9
- package/app/codeCharta/util/customConfigBuilder.spec.ts +11 -4
- package/app/codeCharta/util/customConfigBuilder.ts +9 -3
- package/app/codeCharta/util/customConfigHelper.ts +8 -8
- package/app/codeCharta/util/dataMocks.ts +29 -5
- package/app/codeCharta/util/debounce.spec.ts +16 -0
- package/app/codeCharta/util/debounce.ts +10 -0
- package/app/codeCharta/util/fileDownloader.ts +1 -1
- package/app/codeCharta/util/gameObjectsParser/__snapshots__/gameObjectsImporter.spec.ts.snap +37 -37
- package/app/codeCharta/util/nodeDecorator.spec.ts +14 -1
- package/app/codeCharta/util/nodeDecorator.ts +12 -12
- package/app/codeCharta/util/parseNumberInput.ts +1 -1
- package/app/codeCharta/util/reduxHelper.ts +3 -3
- package/app/codeCharta/util/simplePipes/SimplePipesModule.ts +9 -0
- package/app/codeCharta/util/simplePipes/metricDescriptorTitle.pipe.spec.ts +62 -0
- package/app/codeCharta/util/simplePipes/metricDescriptorTitle.pipe.ts +18 -0
- package/app/codeCharta/util/{removeExtension.pipe.ts → simplePipes/removeExtension.pipe.ts} +1 -1
- package/app/codeCharta/util/truncateText.pipe.ts +8 -0
- package/app/codeCharta/util/truncateText.spec.ts +19 -0
- package/app/index.html +1 -0
- package/app/material/_theme.scss +28 -17
- package/app/material/matDialog.scss +1 -1
- package/app/material/matMenu.scss +2 -2
- package/app/material/material.module.ts +5 -3
- package/app/material/material.scss +1 -6
- package/app/polyfills.ts +28 -0
- package/conf/jestE2E.config.json +1 -3
- package/conf/jestUnit.config.json +5 -17
- package/conf/webpack.config.js +19 -56
- package/dist/webpack/3rdpartylicenses.txt +1063 -0
- package/dist/webpack/codeCharta/assets/codecharta_logo.svg +1 -0
- package/dist/webpack/codeCharta/assets/empty.png +0 -0
- package/dist/webpack/codeCharta/assets/favicon.ico +0 -0
- package/dist/webpack/codeCharta/assets/gameObjectsFile.json +75 -0
- package/dist/webpack/codeCharta/assets/icon.icns +0 -0
- package/dist/webpack/codeCharta/assets/icon.ico +0 -0
- package/dist/webpack/codeCharta/assets/icon.png +0 -0
- package/dist/webpack/codeCharta/assets/output.cc.json.gz +0 -0
- package/dist/webpack/codeCharta/assets/sample1.cc.json +97 -0
- package/dist/webpack/codeCharta/assets/sample2.cc.json +46 -0
- package/dist/webpack/codeCharta/assets/sample3.cc.json +40 -0
- package/dist/webpack/codeCharta/assets/sample4.cc.json +45 -0
- package/dist/webpack/codeCharta/assets/scenarios.json +50 -0
- package/dist/webpack/index.html +7 -7
- package/dist/webpack/main.bc36f7880e897bab.js +1 -0
- package/dist/webpack/material-icons-outlined.78a93b2079680a08.woff +0 -0
- package/dist/webpack/material-icons-outlined.f86cb7b0aa53f0fe.woff2 +0 -0
- package/dist/webpack/material-icons-round.92dc7ca2f4c591e7.woff +0 -0
- package/dist/webpack/material-icons-round.b10ec9db5b7fbc74.woff2 +0 -0
- package/dist/webpack/material-icons-sharp.3885863ee4746422.woff2 +0 -0
- package/dist/webpack/material-icons-sharp.a71cb2bf66c604de.woff +0 -0
- package/dist/webpack/material-icons-two-tone.588d63134de807a7.woff +0 -0
- package/dist/webpack/material-icons-two-tone.675bd578bd14533e.woff2 +0 -0
- package/dist/webpack/material-icons.4ad034d2c499d9b6.woff +0 -0
- package/dist/webpack/material-icons.59322316b3fd6063.woff2 +0 -0
- package/dist/webpack/polyfills.d69fe4da6218c8a9.js +1 -0
- package/dist/webpack/runtime.e384ce5b1b4e5942.js +1 -0
- package/dist/webpack/styles.796849f6e33c93f5.css +4 -0
- package/package.json +33 -51
- package/tsconfig.json +25 -22
- package/app/codeCharta/state/effects/resetDynamicMargin/resetDynamicMargin.effect.spec.ts +0 -48
- package/app/codeCharta/state/effects/resetDynamicMargin/resetDynamicMargin.effect.ts +0 -19
- package/app/codeCharta/state/selectors/accumulatedData/metricData/edgeMetricData.selector.spec.ts +0 -56
- package/app/codeCharta/state/store/appSettings/dynamicMargin/dynamicMargin.actions.ts +0 -21
- package/app/codeCharta/state/store/appSettings/dynamicMargin/dynamicMargin.reducer.spec.ts +0 -17
- package/app/codeCharta/state/store/appSettings/dynamicMargin/dynamicMargin.reducer.ts +0 -16
- package/app/codeCharta/state/store/appSettings/dynamicMargin/dynamicMargin.selector.ts +0 -4
- package/app/codeCharta/ui/ribbonBar/areaSettingsPanel/areaSettingsPanel.po.ts +0 -22
- package/app/codeCharta/ui/ribbonBar/areaSettingsPanel/invertAreaOption/invertAreaOption.component.html +0 -1
- package/app/codeCharta/ui/ribbonBar/areaSettingsPanel/invertAreaOption/invertAreaOption.component.spec.ts +0 -29
- package/app/codeCharta/ui/ribbonBar/areaSettingsPanel/invertAreaOption/invertAreaOption.component.ts +0 -23
- package/app/codeCharta/ui/ribbonBar/areaSettingsPanel.po.ts +0 -19
- package/app/codeCharta/ui/ribbonBar/edgeSettingsPanel/edgeMetricToggle/edgeMetricToggle.component.scss +0 -4
- package/app/codeCharta/ui/ribbonBar/heightSettingsPanel/heightSettingsPanel.component.scss +0 -18
- package/app/codeCharta/util/envDetector.ts +0 -3
- package/app/codeCharta/util/removeExtensionModule.ts +0 -8
- package/app/codeCharta/util/testUtils/drag.ts +0 -47
- package/app/material/matSelect.scss +0 -17
- package/conf/webpack.loaders.js +0 -54
- package/dist/webpack/04411cba9583fb0df01f.woff +0 -0
- package/dist/webpack/6289913a298e816100f5.woff +0 -0
- package/dist/webpack/6b3adb7ef9c9ac8d598a.woff +0 -0
- package/dist/webpack/6c307c85ae675678f41e.woff2 +0 -0
- package/dist/webpack/a70ec3e73fd410cdb178.woff2 +0 -0
- package/dist/webpack/aa2aae2fbd0e0b30967d.woff +0 -0
- package/dist/webpack/aa80805e686668b4358c.woff2 +0 -0
- package/dist/webpack/b906db2201d314b2ee12.woff2 +0 -0
- package/dist/webpack/bundle.js +0 -3
- package/dist/webpack/bundle.js.LICENSE.txt +0 -7619
- package/dist/webpack/bundle.js.map +0 -1
- package/dist/webpack/c6c0935815f6ba8fd80a.woff2 +0 -0
- package/dist/webpack/cb25b0543db8b7f06135.woff +0 -0
- /package/app/{assets/icon.ico → codeCharta/assets/favicon.ico} +0 -0
- /package/app/{assets → codeCharta/assets}/flatten.png +0 -0
- /package/app/{assets → codeCharta/assets}/icon.icns +0 -0
- /package/{dist/webpack → app/codeCharta/assets}/icon.ico +0 -0
- /package/app/{assets → codeCharta/assets}/icon.png +0 -0
- /package/app/codeCharta/state/store/fileSettings/attributeDescriptors/{attributesDescriptors.selector.ts → attributeDescriptors.selector.ts} +0 -0
- /package/app/codeCharta/util/{removeExtension.pipe.spec.ts → simplePipes/removeExtension.pipe.spec.ts} +0 -0
- /package/dist/webpack/{af36b2ef7e54a0b53f02.png → codeCharta/assets/flatten.png} +0 -0
- /package/dist/webpack/{6bfc95354e1616904298.png → codeCharta/assets/logo.png} +0 -0
- /package/dist/webpack/{8b43027f47b20503057d.eot → fontawesome-webfont.2b13baa7dd4f54c9.eot} +0 -0
- /package/dist/webpack/{1e59d2330b4c6deb84b3.ttf → fontawesome-webfont.8a7cb27d142e3e19.ttf} +0 -0
- /package/dist/webpack/{f691f37e57f04c152e23.woff → fontawesome-webfont.cf011583fb81df9f.woff} +0 -0
- /package/dist/webpack/{c1e38fd9e0e74ba58f7a.svg → fontawesome-webfont.da909aa098b0ee2d.svg} +0 -0
- /package/dist/webpack/{20fd1704ea223900efa9.woff2 → fontawesome-webfont.e9955780856cf8aa.woff2} +0 -0
|
@@ -2,7 +2,6 @@ import { CodeMapNode, FileMeta } from "../../../codeCharta.model"
|
|
|
2
2
|
import { FileState } from "../../../model/files/files"
|
|
3
3
|
import { fileStatesAvailable, isDeltaState, isPartialState } from "../../../model/files/files.helper"
|
|
4
4
|
import { AggregationGenerator } from "../../../util/aggregationGenerator"
|
|
5
|
-
import { clone } from "../../../util/clone"
|
|
6
5
|
import { NodeDecorator } from "../../../util/nodeDecorator"
|
|
7
6
|
import { CcState } from "../../store/store"
|
|
8
7
|
import { metricNamesSelector } from "./metricData/metricNames.selector"
|
|
@@ -28,13 +27,13 @@ export const accumulatedDataSelector: (state: CcState) => AccumulatedData = crea
|
|
|
28
27
|
return accumulatedDataFallback
|
|
29
28
|
}
|
|
30
29
|
|
|
31
|
-
const data =
|
|
30
|
+
const data = _getUndecoratedAccumulatedData(fileStates)
|
|
32
31
|
if (!data?.map) {
|
|
33
32
|
return accumulatedDataFallback
|
|
34
33
|
}
|
|
35
34
|
|
|
36
35
|
NodeDecorator.decorateMap(data.map, metricData, blacklist)
|
|
37
|
-
addEdgeMetricsForLeaves(data.map, metricNames)
|
|
36
|
+
addEdgeMetricsForLeaves(metricData.nodeEdgeMetricsMap, data.map, metricNames)
|
|
38
37
|
NodeDecorator.decorateParentNodesWithAggregatedAttributes(data.map, isDeltaState(fileStates), attributeTypes)
|
|
39
38
|
|
|
40
39
|
return {
|
|
@@ -44,19 +43,15 @@ export const accumulatedDataSelector: (state: CcState) => AccumulatedData = crea
|
|
|
44
43
|
}
|
|
45
44
|
)
|
|
46
45
|
|
|
47
|
-
const
|
|
48
|
-
// TODO this cloning shouldn't be necessary. When migrating to NgRx
|
|
49
|
-
// we should find and eliminate the responsible side effects
|
|
50
|
-
const visibleFileStates = clone(fileStates)
|
|
51
|
-
|
|
46
|
+
export const _getUndecoratedAccumulatedData = (fileStates: FileState[]) => {
|
|
52
47
|
if (isPartialState(fileStates)) {
|
|
53
|
-
return AggregationGenerator.
|
|
48
|
+
return AggregationGenerator.calculateAggregationFile(fileStates)
|
|
54
49
|
}
|
|
55
50
|
if (isDeltaState(fileStates)) {
|
|
56
|
-
const [reference, comparison] =
|
|
51
|
+
const [reference, comparison] = fileStates
|
|
57
52
|
if (comparison && reference.file.map.name !== comparison.file.map.name) {
|
|
58
|
-
return AggregationGenerator.
|
|
53
|
+
return AggregationGenerator.calculateAggregationFile(fileStates)
|
|
59
54
|
}
|
|
60
|
-
return getDeltaFile(
|
|
55
|
+
return getDeltaFile(fileStates)
|
|
61
56
|
}
|
|
62
57
|
}
|
package/app/codeCharta/state/selectors/accumulatedData/metricData/edgeMetricData.calculator.spec.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { calculateEdgeMetricData } from "./edgeMetricData.calculator"
|
|
2
|
+
import { FILE_STATES, VALID_NODE_WITH_PATH } from "../../../../util/dataMocks"
|
|
3
|
+
import { FileState } from "../../../../model/files/files"
|
|
4
|
+
import { clone } from "../../../../util/clone"
|
|
5
|
+
|
|
6
|
+
describe("edgeMetricDataCalculator", () => {
|
|
7
|
+
let fileStates: FileState[]
|
|
8
|
+
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
fileStates = clone(FILE_STATES)
|
|
11
|
+
fileStates[0].file.map = clone(VALID_NODE_WITH_PATH)
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
it("should create correct edge Metrics", () => {
|
|
15
|
+
const { edgeMetricData } = calculateEdgeMetricData(fileStates, [])
|
|
16
|
+
|
|
17
|
+
expect(edgeMetricData.map(x => x.name)).toContain("pairingRate")
|
|
18
|
+
expect(edgeMetricData.map(x => x.name)).toContain("otherMetric")
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
it("should calculate correct maximum value for edge Metrics", () => {
|
|
22
|
+
const { edgeMetricData } = calculateEdgeMetricData(fileStates, [])
|
|
23
|
+
|
|
24
|
+
expect(edgeMetricData.find(x => x.name === "pairingRate").maxValue).toEqual(2)
|
|
25
|
+
expect(edgeMetricData.find(x => x.name === "otherMetric").maxValue).toEqual(1)
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
it("should sort the metrics after calculating them", () => {
|
|
29
|
+
const { edgeMetricData } = calculateEdgeMetricData(fileStates, [])
|
|
30
|
+
|
|
31
|
+
expect(edgeMetricData).toHaveLength(3)
|
|
32
|
+
expect(edgeMetricData[0].name).toBe("avgCommits")
|
|
33
|
+
expect(edgeMetricData[1].name).toBe("otherMetric")
|
|
34
|
+
expect(edgeMetricData[2].name).toBe("pairingRate")
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
it("should provide nodeEdgeMetricsMap", () => {
|
|
38
|
+
const { nodeEdgeMetricsMap } = calculateEdgeMetricData(fileStates, [])
|
|
39
|
+
|
|
40
|
+
const pairingRateMapKeys = [...nodeEdgeMetricsMap.get("pairingRate").keys()]
|
|
41
|
+
|
|
42
|
+
expect(pairingRateMapKeys[0]).toEqual("/root/big leaf")
|
|
43
|
+
expect(pairingRateMapKeys[1]).toEqual("/root/Parent Leaf/small leaf")
|
|
44
|
+
expect(pairingRateMapKeys[2]).toEqual("/root/Parent Leaf/other small leaf")
|
|
45
|
+
})
|
|
46
|
+
})
|
|
@@ -2,30 +2,14 @@ import { hierarchy } from "d3-hierarchy"
|
|
|
2
2
|
import { BlacklistItem, Edge, EdgeMetricCount, EdgeMetricData } from "../../../../codeCharta.model"
|
|
3
3
|
import { FileState } from "../../../../model/files/files"
|
|
4
4
|
import { isPathBlacklisted } from "../../../../util/codeMapHelper"
|
|
5
|
-
import { createSelector } from "../../../angular-redux/createSelector"
|
|
6
|
-
import { blacklistSelector } from "../../../store/fileSettings/blacklist/blacklist.selector"
|
|
7
|
-
import { visibleFileStatesSelector } from "../../visibleFileStates.selector"
|
|
8
5
|
import { sortByMetricName } from "./sortByMetricName"
|
|
9
6
|
|
|
10
7
|
export type EdgeMetricCountMap = Map<string, EdgeMetricCount>
|
|
11
8
|
export type NodeEdgeMetricsMap = Map<string, EdgeMetricCountMap>
|
|
12
|
-
/** @deprecated use edgeMetricMapSelector instead to ensure unidirectional data flow and prevent random manipulation */
|
|
13
|
-
export let nodeEdgeMetricsMap: NodeEdgeMetricsMap = new Map()
|
|
14
|
-
|
|
15
|
-
const edgeMetricDataAndMapSelector = createSelector([visibleFileStatesSelector, blacklistSelector], calculateEdgeMetricData)
|
|
16
|
-
|
|
17
|
-
export const edgeMetricDataSelector = createSelector(
|
|
18
|
-
[edgeMetricDataAndMapSelector],
|
|
19
|
-
edgeMetricDataAndMap => edgeMetricDataAndMap.sortedEdgeMetricList
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
export const edgeMetricMapSelector = createSelector(
|
|
23
|
-
[edgeMetricDataAndMapSelector],
|
|
24
|
-
edgeMetricDataAndMap => edgeMetricDataAndMap.nodeEdgeMetricsMap
|
|
25
|
-
)
|
|
26
9
|
|
|
27
10
|
export function calculateEdgeMetricData(visibleFileStates: FileState[], blacklist: BlacklistItem[]) {
|
|
28
|
-
nodeEdgeMetricsMap = new Map()
|
|
11
|
+
const nodeEdgeMetricsMap: NodeEdgeMetricsMap = new Map()
|
|
12
|
+
|
|
29
13
|
const allFilePaths: Set<string> = new Set()
|
|
30
14
|
|
|
31
15
|
for (const { file } of visibleFileStates) {
|
|
@@ -39,15 +23,18 @@ export function calculateEdgeMetricData(visibleFileStates: FileState[], blacklis
|
|
|
39
23
|
if (bothNodesAssociatedAreVisible(edge, allFilePaths, blacklist)) {
|
|
40
24
|
// TODO: We likely only need the attributes once per file.
|
|
41
25
|
for (const edgeMetric of Object.keys(edge.attributes)) {
|
|
42
|
-
const edgeMetricEntry =
|
|
26
|
+
const edgeMetricEntry = updateEntryForMetric(nodeEdgeMetricsMap, edgeMetric)
|
|
43
27
|
addEdgeToNodes(edgeMetricEntry, edge.fromNodeName, edge.toNodeName)
|
|
44
28
|
}
|
|
45
29
|
}
|
|
46
30
|
}
|
|
47
31
|
}
|
|
48
|
-
const newEdgeMetricData = getMetricDataFromMap()
|
|
32
|
+
const newEdgeMetricData = getMetricDataFromMap(nodeEdgeMetricsMap)
|
|
49
33
|
sortByMetricName(newEdgeMetricData)
|
|
50
|
-
return {
|
|
34
|
+
return {
|
|
35
|
+
edgeMetricData: newEdgeMetricData,
|
|
36
|
+
nodeEdgeMetricsMap
|
|
37
|
+
}
|
|
51
38
|
}
|
|
52
39
|
|
|
53
40
|
function bothNodesAssociatedAreVisible(edge: Edge, filePaths: Set<string>, blacklist: BlacklistItem[]) {
|
|
@@ -57,7 +44,7 @@ function bothNodesAssociatedAreVisible(edge: Edge, filePaths: Set<string>, black
|
|
|
57
44
|
return false
|
|
58
45
|
}
|
|
59
46
|
|
|
60
|
-
function
|
|
47
|
+
function updateEntryForMetric(nodeEdgeMetricsMap: NodeEdgeMetricsMap, edgeMetricName: string) {
|
|
61
48
|
let nodeEdgeMetric = nodeEdgeMetricsMap.get(edgeMetricName)
|
|
62
49
|
if (!nodeEdgeMetric) {
|
|
63
50
|
nodeEdgeMetric = new Map()
|
|
@@ -82,7 +69,7 @@ function addEdgeToNodes(edgeMetricEntry: EdgeMetricCountMap, fromNode: string, t
|
|
|
82
69
|
}
|
|
83
70
|
}
|
|
84
71
|
|
|
85
|
-
function getMetricDataFromMap() {
|
|
72
|
+
function getMetricDataFromMap(nodeEdgeMetricsMap: NodeEdgeMetricsMap) {
|
|
86
73
|
const metricData: EdgeMetricData[] = []
|
|
87
74
|
|
|
88
75
|
for (const [edgeMetric, occurrences] of nodeEdgeMetricsMap) {
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { createSelector } from "../../../angular-redux/createSelector"
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { blacklistSelector } from "../../../store/fileSettings/blacklist/blacklist.selector"
|
|
3
|
+
import { visibleFileStatesSelector } from "../../visibleFileStates.selector"
|
|
4
|
+
import { calculateEdgeMetricData } from "./edgeMetricData.calculator"
|
|
5
|
+
import { calculateNodeMetricData } from "./nodeMetricData.calculator"
|
|
4
6
|
|
|
5
|
-
export const metricDataSelector = createSelector([
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
export const metricDataSelector = createSelector([visibleFileStatesSelector, blacklistSelector], (visibleFileStates, blacklist) => {
|
|
8
|
+
return {
|
|
9
|
+
nodeMetricData: calculateNodeMetricData(visibleFileStates, blacklist),
|
|
10
|
+
...calculateEdgeMetricData(visibleFileStates, blacklist)
|
|
11
|
+
}
|
|
12
|
+
})
|
package/app/codeCharta/state/selectors/accumulatedData/metricData/metricNames.selector.spec.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { CcState } from "../../../store/store"
|
|
2
|
-
import {
|
|
2
|
+
import { metricDataSelector } from "./metricData.selector"
|
|
3
3
|
import { metricNamesSelector } from "./metricNames.selector"
|
|
4
4
|
|
|
5
|
-
const
|
|
6
|
-
jest.mock("./
|
|
7
|
-
|
|
5
|
+
const mockedMetricDataSelector = metricDataSelector as unknown as jest.Mock
|
|
6
|
+
jest.mock("./metricData.selector", () => ({
|
|
7
|
+
metricDataSelector: jest.fn()
|
|
8
8
|
}))
|
|
9
9
|
|
|
10
10
|
describe("metricNamesSelector", () => {
|
|
11
11
|
it("should get the names of the metrics", () => {
|
|
12
|
-
|
|
12
|
+
mockedMetricDataSelector.mockImplementationOnce(() => ({ edgeMetricData: [{ name: "metricOfTruth" }, { name: "otherMetric" }] }))
|
|
13
13
|
|
|
14
14
|
expect(metricNamesSelector({} as unknown as CcState)).toEqual(["metricOfTruth", "otherMetric"])
|
|
15
15
|
})
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createSelector } from "../../../angular-redux/createSelector"
|
|
2
|
-
import {
|
|
2
|
+
import { metricDataSelector } from "./metricData.selector"
|
|
3
3
|
|
|
4
|
-
export const metricNamesSelector = createSelector([
|
|
4
|
+
export const metricNamesSelector = createSelector([metricDataSelector], metricData => metricData.edgeMetricData.map(x => x.name))
|
|
@@ -2,9 +2,9 @@ import { TEST_DELTA_MAP_A, VALID_NODE_WITH_ROOT_UNARY } from "../../../../util/d
|
|
|
2
2
|
import { FileSelectionState, FileState } from "../../../../model/files/files"
|
|
3
3
|
import { NodeDecorator } from "../../../../util/nodeDecorator"
|
|
4
4
|
import { clone } from "../../../../util/clone"
|
|
5
|
-
import { calculateNodeMetricData, UNARY_METRIC } from "./nodeMetricData.
|
|
5
|
+
import { calculateNodeMetricData, UNARY_METRIC } from "./nodeMetricData.calculator"
|
|
6
6
|
|
|
7
|
-
describe("
|
|
7
|
+
describe("nodeMetricDataCalculator", () => {
|
|
8
8
|
let fileState: FileState
|
|
9
9
|
|
|
10
10
|
beforeEach(() => {
|
|
@@ -3,9 +3,6 @@ import { hierarchy } from "d3-hierarchy"
|
|
|
3
3
|
import { BlacklistItem, NodeMetricData } from "../../../../codeCharta.model"
|
|
4
4
|
import { FileState } from "../../../../model/files/files"
|
|
5
5
|
import { isLeaf, isPathBlacklisted } from "../../../../util/codeMapHelper"
|
|
6
|
-
import { createSelector } from "../../../angular-redux/createSelector"
|
|
7
|
-
import { blacklistSelector } from "../../../store/fileSettings/blacklist/blacklist.selector"
|
|
8
|
-
import { visibleFileStatesSelector } from "../../visibleFileStates.selector"
|
|
9
6
|
import { sortByMetricName } from "./sortByMetricName"
|
|
10
7
|
|
|
11
8
|
export const UNARY_METRIC = "unary"
|
|
@@ -54,5 +51,3 @@ export const calculateNodeMetricData = (visibleFileStates: FileState[], blacklis
|
|
|
54
51
|
sortByMetricName(metricData)
|
|
55
52
|
return metricData
|
|
56
53
|
}
|
|
57
|
-
|
|
58
|
-
export const nodeMetricDataSelector = createSelector([visibleFileStatesSelector, blacklistSelector], calculateNodeMetricData)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createSelector } from "../../../angular-redux/createSelector"
|
|
2
2
|
import { colorMetricSelector } from "../../../store/dynamicSettings/colorMetric/colorMetric.selector"
|
|
3
3
|
import { CcState } from "../../../store/store"
|
|
4
|
-
import {
|
|
4
|
+
import { metricDataSelector } from "./metricData.selector"
|
|
5
5
|
|
|
6
6
|
export type MetricMinMax = {
|
|
7
7
|
minValue: number
|
|
@@ -9,9 +9,9 @@ export type MetricMinMax = {
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export const selectedColorMetricDataSelector: (state: CcState) => MetricMinMax = createSelector(
|
|
12
|
-
[
|
|
13
|
-
(
|
|
14
|
-
const data = nodeMetricData.find(x => x.name === colorMetric)
|
|
12
|
+
[metricDataSelector, colorMetricSelector],
|
|
13
|
+
(metricData, colorMetric) => {
|
|
14
|
+
const data = metricData.nodeMetricData.find(x => x.name === colorMetric)
|
|
15
15
|
return {
|
|
16
16
|
minValue: data?.minValue ?? 0,
|
|
17
17
|
maxValue: data?.maxValue ?? 0
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { hierarchy } from "d3-hierarchy"
|
|
2
2
|
import { CodeMapNode } from "../../../../codeCharta.model"
|
|
3
3
|
import { isLeaf } from "../../../../util/codeMapHelper"
|
|
4
|
+
import { NodeEdgeMetricsMap } from "../metricData/edgeMetricData.calculator"
|
|
4
5
|
import { getMetricValuesForNode } from "./getMetricValuesForNode"
|
|
5
6
|
|
|
6
|
-
export const addEdgeMetricsForLeaves = (map: CodeMapNode, metricNames: string[]) => {
|
|
7
|
+
export const addEdgeMetricsForLeaves = (nodeEdgeMetricsMap: NodeEdgeMetricsMap, map: CodeMapNode, metricNames: string[]) => {
|
|
7
8
|
if (metricNames.length === 0) {
|
|
8
9
|
return
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
for (const node of hierarchy(map)) {
|
|
12
13
|
if (isLeaf(node)) {
|
|
13
|
-
const edgeMetrics = getMetricValuesForNode(node, metricNames)
|
|
14
|
+
const edgeMetrics = getMetricValuesForNode(nodeEdgeMetricsMap, node, metricNames)
|
|
14
15
|
for (const [key, value] of edgeMetrics) {
|
|
15
16
|
node.data.edgeAttributes[key] = value
|
|
16
17
|
}
|
|
@@ -1,23 +1,16 @@
|
|
|
1
1
|
import { HierarchyNode } from "d3-hierarchy"
|
|
2
2
|
import { CodeMapNode } from "../../../../codeCharta.model"
|
|
3
|
+
import { NodeEdgeMetricsMap, EdgeMetricCountMap } from "../metricData/edgeMetricData.calculator"
|
|
3
4
|
import { getMetricValuesForNode } from "./getMetricValuesForNode"
|
|
4
5
|
|
|
5
|
-
jest.mock("../metricData/edgeMetricData.selector", () => ({
|
|
6
|
-
nodeEdgeMetricsMap: {
|
|
7
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
8
|
-
get: (_metricName: string) => ({
|
|
9
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
10
|
-
get: (_path: string) => ({ incoming: 0, outgoing: 1 })
|
|
11
|
-
})
|
|
12
|
-
}
|
|
13
|
-
}))
|
|
14
|
-
|
|
15
6
|
describe("getMetricValuesForNode", () => {
|
|
16
7
|
it("should return Edge Metric counts for node", () => {
|
|
17
8
|
const metricNames = ["pairingRate"]
|
|
18
9
|
const node = { data: { path: "/root/big leaf" } } as HierarchyNode<CodeMapNode>
|
|
10
|
+
const nodesEdgeMetricCountMap: EdgeMetricCountMap = new Map([["/root/big leaf", { incoming: 0, outgoing: 1 }]])
|
|
11
|
+
const nodeEdgeMetricsMap: NodeEdgeMetricsMap = new Map([["pairingRate", nodesEdgeMetricCountMap]])
|
|
19
12
|
|
|
20
|
-
const metricsForNode = getMetricValuesForNode(node, metricNames)
|
|
13
|
+
const metricsForNode = getMetricValuesForNode(nodeEdgeMetricsMap, node, metricNames)
|
|
21
14
|
|
|
22
15
|
expect(metricsForNode.get(metricNames[0])).toEqual({ incoming: 0, outgoing: 1 })
|
|
23
16
|
})
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { HierarchyNode } from "d3-hierarchy"
|
|
2
2
|
import { CodeMapNode } from "../../../../codeCharta.model"
|
|
3
|
-
import { EdgeMetricCountMap,
|
|
3
|
+
import { EdgeMetricCountMap, NodeEdgeMetricsMap } from "../metricData/edgeMetricData.calculator"
|
|
4
4
|
|
|
5
|
-
export const getMetricValuesForNode = (node: HierarchyNode<CodeMapNode>, metricNames: string[]) => {
|
|
5
|
+
export const getMetricValuesForNode = (nodeEdgeMetricsMap: NodeEdgeMetricsMap, node: HierarchyNode<CodeMapNode>, metricNames: string[]) => {
|
|
6
6
|
const nodeEdgeMetrics: EdgeMetricCountMap = new Map()
|
|
7
7
|
|
|
8
8
|
for (const metricName of metricNames) {
|
|
@@ -5,15 +5,16 @@ import { colorMetricSelector } from "../../store/dynamicSettings/colorMetric/col
|
|
|
5
5
|
import { dynamicSettingsSelector } from "../../store/dynamicSettings/dynamicSettings.selector"
|
|
6
6
|
import { heightMetricSelector } from "../../store/dynamicSettings/heightMetric/heightMetric.selector"
|
|
7
7
|
import { filesSelector } from "../../store/files/files.selector"
|
|
8
|
-
import {
|
|
8
|
+
import { metricDataSelector } from "../accumulatedData/metricData/metricData.selector"
|
|
9
9
|
import { areDynamicSettingsAvailable } from "./utils/areDynamicSettingsAvailable"
|
|
10
10
|
import { areMetricsAvailable } from "./utils/areMetricsAvailable"
|
|
11
11
|
|
|
12
12
|
const areFileStatesAvailableSelector = createSelector([filesSelector], files => fileStatesAvailable(files))
|
|
13
13
|
|
|
14
14
|
export const areChosenMetricsAvailableSelector = createSelector(
|
|
15
|
-
[
|
|
16
|
-
(
|
|
15
|
+
[metricDataSelector, areaMetricSelector, colorMetricSelector, heightMetricSelector],
|
|
16
|
+
(metricData, areaMetric, colorMetric, heightMetric) =>
|
|
17
|
+
areMetricsAvailable(metricData.nodeMetricData, [areaMetric, colorMetric, heightMetric])
|
|
17
18
|
)
|
|
18
19
|
|
|
19
20
|
const areDynamicSettingsAvailableSelector = createSelector([dynamicSettingsSelector], dynamicSettings =>
|
|
@@ -21,9 +22,9 @@ const areDynamicSettingsAvailableSelector = createSelector([dynamicSettingsSelec
|
|
|
21
22
|
)
|
|
22
23
|
|
|
23
24
|
export const areAllNecessaryRenderDataAvailableSelector = createSelector(
|
|
24
|
-
[
|
|
25
|
-
(
|
|
26
|
-
if (nodeMetricData === null || !areFileStatesAvailable || !areChosenMetricsAvailable || !areDynamicSettingsAvailable) {
|
|
25
|
+
[metricDataSelector, areFileStatesAvailableSelector, areChosenMetricsAvailableSelector, areDynamicSettingsAvailableSelector],
|
|
26
|
+
(metricData, areFileStatesAvailable, areChosenMetricsAvailable, areDynamicSettingsAvailable) => {
|
|
27
|
+
if (metricData.nodeMetricData === null || !areFileStatesAvailable || !areChosenMetricsAvailable || !areDynamicSettingsAvailable) {
|
|
27
28
|
return false
|
|
28
29
|
}
|
|
29
30
|
|
|
@@ -3,17 +3,22 @@ import { CcState } from "../../store/store"
|
|
|
3
3
|
import { Metric } from "../../../ui/attributeSideBar/util/metric"
|
|
4
4
|
import { primaryMetricNamesSelector } from "./primaryMetricNames.selector"
|
|
5
5
|
import { createSelector } from "../../angular-redux/createSelector"
|
|
6
|
+
import { getMetricDescriptors } from "../../../ui/attributeSideBar/util/metricDescriptors"
|
|
7
|
+
import { attributeDescriptorsSelector } from "../../store/fileSettings/attributeDescriptors/attributeDescriptors.selector"
|
|
8
|
+
import { Edge } from "app/codeCharta/ui/attributeSideBar/util/edge"
|
|
9
|
+
import { CodeMapNode } from "app/codeCharta/codeCharta.model"
|
|
10
|
+
import { AttributeDescriptors } from "../../../codeCharta.model"
|
|
6
11
|
|
|
7
12
|
export type PrimaryMetrics = {
|
|
8
13
|
area: Metric
|
|
9
14
|
height: Metric
|
|
10
15
|
color: Metric
|
|
11
|
-
edge:
|
|
16
|
+
edge: Edge
|
|
12
17
|
}
|
|
13
18
|
|
|
14
19
|
export const primaryMetricsSelector: (state: CcState) => PrimaryMetrics | undefined = createSelector(
|
|
15
|
-
[selectedNodeSelector, primaryMetricNamesSelector],
|
|
16
|
-
(selectedNode, primaryMetricNames) => {
|
|
20
|
+
[selectedNodeSelector, primaryMetricNamesSelector, attributeDescriptorsSelector],
|
|
21
|
+
(selectedNode, primaryMetricNames, attributeDescriptors) => {
|
|
17
22
|
if (!selectedNode) {
|
|
18
23
|
return
|
|
19
24
|
}
|
|
@@ -21,21 +26,32 @@ export const primaryMetricsSelector: (state: CcState) => PrimaryMetrics | undefi
|
|
|
21
26
|
return {
|
|
22
27
|
area: {
|
|
23
28
|
name: primaryMetricNames.areaMetric,
|
|
24
|
-
value: selectedNode.attributes[primaryMetricNames.areaMetric]
|
|
29
|
+
value: selectedNode.attributes[primaryMetricNames.areaMetric],
|
|
30
|
+
descriptors: getMetricDescriptors(primaryMetricNames.areaMetric, attributeDescriptors)
|
|
25
31
|
},
|
|
26
32
|
height: {
|
|
27
33
|
name: primaryMetricNames.heightMetric,
|
|
28
|
-
value: selectedNode.attributes[primaryMetricNames.heightMetric]
|
|
34
|
+
value: selectedNode.attributes[primaryMetricNames.heightMetric],
|
|
35
|
+
descriptors: getMetricDescriptors(primaryMetricNames.heightMetric, attributeDescriptors)
|
|
29
36
|
},
|
|
30
37
|
color: {
|
|
31
38
|
name: primaryMetricNames.colorMetric,
|
|
32
|
-
value: selectedNode.attributes[primaryMetricNames.colorMetric]
|
|
39
|
+
value: selectedNode.attributes[primaryMetricNames.colorMetric],
|
|
40
|
+
descriptors: getMetricDescriptors(primaryMetricNames.colorMetric, attributeDescriptors)
|
|
33
41
|
},
|
|
34
|
-
edge:
|
|
35
|
-
name: primaryMetricNames.edgeMetric,
|
|
36
|
-
incoming: selectedNode.edgeAttributes[primaryMetricNames.edgeMetric]?.incoming,
|
|
37
|
-
outgoing: selectedNode.edgeAttributes[primaryMetricNames.edgeMetric]?.outgoing
|
|
38
|
-
}
|
|
42
|
+
edge: getEdge(primaryMetricNames.edgeMetric, selectedNode, attributeDescriptors)
|
|
39
43
|
}
|
|
40
44
|
}
|
|
41
45
|
)
|
|
46
|
+
|
|
47
|
+
function getEdge(key: string, selectedNode: CodeMapNode, attributeDescriptors: AttributeDescriptors): Edge {
|
|
48
|
+
if (key === undefined || key === null) {
|
|
49
|
+
return null
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
name: key,
|
|
53
|
+
incoming: selectedNode.edgeAttributes[key]?.incoming,
|
|
54
|
+
outgoing: selectedNode.edgeAttributes[key]?.outgoing,
|
|
55
|
+
descriptors: getMetricDescriptors(key, attributeDescriptors)
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -9,7 +9,6 @@ import { defaultEdgeHeight } from "./edgeHeight/edgeHeight.actions"
|
|
|
9
9
|
import { defaultScaling } from "./scaling/scaling.actions"
|
|
10
10
|
import { defaultHideFlatBuildings } from "./hideFlatBuildings/hideFlatBuildings.actions"
|
|
11
11
|
import { defaultInvertHeight } from "./invertHeight/invertHeight.actions"
|
|
12
|
-
import { defaultDynamicMargin } from "./dynamicMargin/dynamicMargin.actions"
|
|
13
12
|
import { defaultIsWhiteBackground } from "./isWhiteBackground/isWhiteBackground.actions"
|
|
14
13
|
import { defaultMapColors } from "./mapColors/mapColors.actions"
|
|
15
14
|
import { defaultIsPresentationMode } from "./isPresentationMode/isPresentationMode.actions"
|
|
@@ -57,7 +56,6 @@ export const defaultAppSettings: AppSettings = {
|
|
|
57
56
|
hideFlatBuildings: defaultHideFlatBuildings,
|
|
58
57
|
invertHeight: defaultInvertHeight,
|
|
59
58
|
invertArea: defaultInvertArea,
|
|
60
|
-
dynamicMargin: defaultDynamicMargin,
|
|
61
59
|
isWhiteBackground: defaultIsWhiteBackground,
|
|
62
60
|
mapColors: defaultMapColors,
|
|
63
61
|
isPresentationMode: defaultIsPresentationMode,
|
|
@@ -8,7 +8,6 @@ import { mapColors } from "./mapColors/mapColors.reducer"
|
|
|
8
8
|
import { resetCameraIfNewFileIsLoaded } from "./resetCameraIfNewFileIsLoaded/resetCameraIfNewFileIsLoaded.reducer"
|
|
9
9
|
import { showOnlyBuildingsWithEdges } from "./showOnlyBuildingsWithEdges/showOnlyBuildingsWithEdges.reducer"
|
|
10
10
|
import { isWhiteBackground } from "./isWhiteBackground/isWhiteBackground.reducer"
|
|
11
|
-
import { dynamicMargin } from "./dynamicMargin/dynamicMargin.reducer"
|
|
12
11
|
import { invertHeight } from "./invertHeight/invertHeight.reducer"
|
|
13
12
|
import { hideFlatBuildings } from "./hideFlatBuildings/hideFlatBuildings.reducer"
|
|
14
13
|
import { scaling } from "./scaling/scaling.reducer"
|
|
@@ -39,7 +38,6 @@ const appSettings = combineReducers({
|
|
|
39
38
|
showOnlyBuildingsWithEdges,
|
|
40
39
|
isEdgeMetricVisible,
|
|
41
40
|
isWhiteBackground,
|
|
42
|
-
dynamicMargin,
|
|
43
41
|
invertHeight,
|
|
44
42
|
invertArea,
|
|
45
43
|
hideFlatBuildings,
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Action } from "redux"
|
|
2
2
|
|
|
3
3
|
export enum InvertAreaActions {
|
|
4
|
-
SET_INVERT_AREA = "SET_INVERT_AREA"
|
|
5
|
-
TOGGLE_INVERTING_AREA = "TOGGLE_INVERTING_AREA"
|
|
4
|
+
SET_INVERT_AREA = "SET_INVERT_AREA"
|
|
6
5
|
}
|
|
7
6
|
|
|
8
7
|
export interface SetInvertAreaAction extends Action {
|
|
@@ -20,13 +19,3 @@ export function setInvertArea(invertArea: boolean = defaultInvertArea): SetInver
|
|
|
20
19
|
payload: invertArea
|
|
21
20
|
}
|
|
22
21
|
}
|
|
23
|
-
|
|
24
|
-
export interface ToggleInvertingAreaAction extends Action {
|
|
25
|
-
type: InvertAreaActions.TOGGLE_INVERTING_AREA
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export function toggleInvertingArea(): ToggleInvertingAreaAction {
|
|
29
|
-
return {
|
|
30
|
-
type: InvertAreaActions.TOGGLE_INVERTING_AREA
|
|
31
|
-
}
|
|
32
|
-
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { InvertAreaAction, InvertAreaActions, setInvertArea
|
|
1
|
+
import { InvertAreaAction, InvertAreaActions, setInvertArea } from "./invertArea.actions"
|
|
2
2
|
|
|
3
|
-
export function invertArea(state = setInvertArea().payload, action: InvertAreaAction
|
|
3
|
+
export function invertArea(state = setInvertArea().payload, action: InvertAreaAction) {
|
|
4
4
|
switch (action.type) {
|
|
5
5
|
case InvertAreaActions.SET_INVERT_AREA:
|
|
6
6
|
return action.payload
|
|
7
|
-
case InvertAreaActions.TOGGLE_INVERTING_AREA:
|
|
8
|
-
return !state
|
|
9
7
|
default:
|
|
10
8
|
return state
|
|
11
9
|
}
|
|
@@ -21,7 +21,7 @@ export class ResetColorRangeEffect {
|
|
|
21
21
|
)
|
|
22
22
|
)
|
|
23
23
|
|
|
24
|
-
constructor(@Inject(ActionsToken) private actions$: Actions,
|
|
24
|
+
constructor(@Inject(ActionsToken) private actions$: Actions, private store: Store) {}
|
|
25
25
|
|
|
26
26
|
resetColorRange$ = createEffect(() =>
|
|
27
27
|
this.resetActions$.pipe(
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import "
|
|
2
|
-
import { Component, Input } from "@angular/core"
|
|
1
|
+
import { Component, Input, ViewEncapsulation } from "@angular/core"
|
|
3
2
|
|
|
4
3
|
@Component({
|
|
5
4
|
selector: "cc-action-icon",
|
|
6
|
-
|
|
5
|
+
templateUrl: "./actionIcon.component.html",
|
|
6
|
+
styleUrls: ["./actionIcon.component.scss"],
|
|
7
|
+
encapsulation: ViewEncapsulation.None
|
|
7
8
|
})
|
|
8
9
|
export class ActionIconComponent {
|
|
9
10
|
@Input() icon: string
|
|
@@ -5,7 +5,6 @@ import { ActionIconComponent } from "./actionIcon.component"
|
|
|
5
5
|
@NgModule({
|
|
6
6
|
imports: [CommonModule],
|
|
7
7
|
declarations: [ActionIconComponent],
|
|
8
|
-
exports: [ActionIconComponent]
|
|
9
|
-
entryComponents: [ActionIconComponent]
|
|
8
|
+
exports: [ActionIconComponent]
|
|
10
9
|
})
|
|
11
10
|
export class ActionIconModule {}
|
|
@@ -2,7 +2,7 @@ import { TestBed } from "@angular/core/testing"
|
|
|
2
2
|
import { render } from "@testing-library/angular"
|
|
3
3
|
import { klona } from "klona"
|
|
4
4
|
import { expect } from "@jest/globals"
|
|
5
|
-
import { TEST_NODE_FOLDER, TEST_NODE_LEAF } from "../../util/dataMocks"
|
|
5
|
+
import { TEST_NODE_FOLDER, TEST_NODE_LEAF, TEST_ATTRIBUTE_DESCRIPTORS } from "../../util/dataMocks"
|
|
6
6
|
import { selectedNodeSelector } from "../../state/selectors/selectedNode.selector"
|
|
7
7
|
import { AttributeSideBarComponent } from "./attributeSideBar.component"
|
|
8
8
|
import { AttributeSideBarModule } from "./attributeSideBar.module"
|
|
@@ -13,13 +13,19 @@ jest.mock("../../state/selectors/selectedNode.selector", () => ({
|
|
|
13
13
|
}))
|
|
14
14
|
const mockedSelectedNodeSelector = selectedNodeSelector as jest.Mock
|
|
15
15
|
|
|
16
|
+
const selectedMetricNames = {
|
|
17
|
+
areaMetric: "a",
|
|
18
|
+
heightMetric: "a",
|
|
19
|
+
colorMetric: "a",
|
|
20
|
+
edgeMetric: "c"
|
|
21
|
+
}
|
|
22
|
+
|
|
16
23
|
jest.mock("../../state/selectors/primaryMetrics/primaryMetricNames.selector", () => ({
|
|
17
|
-
primaryMetricNamesSelector: jest.fn(() =>
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}))
|
|
24
|
+
primaryMetricNamesSelector: jest.fn(() => selectedMetricNames)
|
|
25
|
+
}))
|
|
26
|
+
|
|
27
|
+
jest.mock("../../state/store/fileSettings/attributeDescriptors/attributeDescriptors.selector", () => ({
|
|
28
|
+
attributeDescriptorsSelector: jest.fn(() => TEST_ATTRIBUTE_DESCRIPTORS)
|
|
23
29
|
}))
|
|
24
30
|
|
|
25
31
|
describe("AttributeSideBarComponent", () => {
|
|
@@ -110,6 +116,52 @@ describe("AttributeSideBarComponent", () => {
|
|
|
110
116
|
)
|
|
111
117
|
expect(attributeTypeSelectorWithinSecondaryMetrics.length).toBe(1)
|
|
112
118
|
})
|
|
119
|
+
|
|
120
|
+
it("should contain 'no edge metric available' note", async () => {
|
|
121
|
+
mockedSelectedNodeSelector.mockImplementation(() => {
|
|
122
|
+
const node = klona(TEST_NODE_FOLDER)
|
|
123
|
+
node["children"] = [{}]
|
|
124
|
+
return node
|
|
125
|
+
})
|
|
126
|
+
|
|
127
|
+
selectedMetricNames.edgeMetric = undefined
|
|
128
|
+
|
|
129
|
+
const { container } = await render(AttributeSideBarComponent, { excludeComponentDeclaration: true })
|
|
130
|
+
|
|
131
|
+
const primaryMetricsWithoutEdgeMetric = container.querySelectorAll("cc-attribute-side-bar-primary-metrics td")
|
|
132
|
+
// if this turns out to be flaky, iterate through all results
|
|
133
|
+
expect(primaryMetricsWithoutEdgeMetric[3].textContent === "No edge metric available")
|
|
134
|
+
})
|
|
135
|
+
|
|
136
|
+
it("should contain primary/secondary metrics with title/tooltip attribute/metric descriptor information", async () => {
|
|
137
|
+
selectedMetricNames.areaMetric = "a"
|
|
138
|
+
selectedMetricNames.heightMetric = "b"
|
|
139
|
+
selectedMetricNames.colorMetric = "someColor"
|
|
140
|
+
selectedMetricNames.edgeMetric = "someEdge"
|
|
141
|
+
|
|
142
|
+
mockedSelectedNodeSelector.mockImplementation(() => {
|
|
143
|
+
const node = klona(TEST_NODE_FOLDER)
|
|
144
|
+
node["children"] = [{}]
|
|
145
|
+
node["attributes"] = { a: 3, b: 1, c: 4, someColor: 10 }
|
|
146
|
+
node["edgeAttributes"] = { someEdge: { incoming: 20, outgoing: 60 } }
|
|
147
|
+
return node
|
|
148
|
+
})
|
|
149
|
+
|
|
150
|
+
const { container } = await render(AttributeSideBarComponent, { excludeComponentDeclaration: true })
|
|
151
|
+
|
|
152
|
+
const attributeTypeSelectorWithinPrimaryMetrics = container.querySelectorAll("cc-attribute-side-bar-primary-metrics td")
|
|
153
|
+
const attributeTypeSelectorWithinSecondaryMetrics = container.querySelectorAll(
|
|
154
|
+
"cc-attribute-side-bar-secondary-metrics .metric-row"
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
expect(attributeTypeSelectorWithinPrimaryMetrics[0].getAttribute("title")).toBe("a_testTitle (a):\na_testDescription")
|
|
158
|
+
expect(attributeTypeSelectorWithinPrimaryMetrics[1].getAttribute("title")).toBe("b_testTitle (b)")
|
|
159
|
+
expect(attributeTypeSelectorWithinPrimaryMetrics[2].getAttribute("title")).toBe("someColor")
|
|
160
|
+
expect(attributeTypeSelectorWithinPrimaryMetrics[3].getAttribute("title")).toBe("someEdge")
|
|
161
|
+
|
|
162
|
+
expect(attributeTypeSelectorWithinSecondaryMetrics[0].getAttribute("title")).toBe("c:\nc_testDescription")
|
|
163
|
+
expect(attributeTypeSelectorWithinSecondaryMetrics.length).toBe(1)
|
|
164
|
+
})
|
|
113
165
|
})
|
|
114
166
|
|
|
115
167
|
function isAttributeTypeSelectorShown(container: Element) {
|