codecharta-visualization 1.87.1 → 1.88.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/app/app.module.ts +18 -8
- package/app/codeCharta/codeCharta.component.ts +2 -0
- package/app/codeCharta/codeCharta.model.ts +2 -0
- package/app/codeCharta/codeCharta.service.spec.ts +41 -50
- package/app/codeCharta/codeCharta.service.ts +33 -32
- package/app/codeCharta/e2e/url.e2e.ts +1 -1
- package/app/codeCharta/state/store/appStatus/appStatus.reducer.ts +3 -1
- package/app/codeCharta/state/store/appStatus/appStatus.selector.ts +3 -0
- package/app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.actions.ts +23 -0
- package/app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.reducer.ts +15 -0
- package/app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.selector.ts +4 -0
- package/app/codeCharta/state/store/state.actions.ts +3 -1
- package/app/codeCharta/ui/codeMap/codeMap.mouseEvent.service.ts +6 -8
- package/app/codeCharta/ui/customConfigs/customConfigs.component.html +9 -9
- package/app/codeCharta/ui/dialog/dialog.addCustomConfigSettings.component.html +2 -2
- package/app/codeCharta/ui/dialog/dialog.changelog.component.scss +15 -0
- package/app/codeCharta/ui/dialog/dialog.changelog.component.spec.ts +15 -15
- package/app/codeCharta/ui/dialog/dialog.changelog.component.ts +2 -1
- package/app/codeCharta/ui/dialog/dialog.service.spec.ts +68 -0
- package/app/codeCharta/ui/dialog/dialog.service.ts +38 -17
- package/app/codeCharta/ui/edgeChooser/edgeChooser.e2e.ts +3 -2
- package/app/codeCharta/ui/fileChooser/fileChooser.e2e.ts +5 -6
- package/app/codeCharta/ui/filePanel/filePanel.component.html +24 -106
- package/app/codeCharta/ui/filePanel/filePanel.component.scss +12 -57
- package/app/codeCharta/ui/filePanel/filePanel.component.spec.ts +40 -72
- package/app/codeCharta/ui/filePanel/filePanel.component.ts +29 -81
- package/app/codeCharta/ui/filePanel/filePanel.module.ts +13 -1
- package/app/codeCharta/ui/filePanel/filePanel.po.ts +6 -24
- package/app/codeCharta/ui/filePanel/filePanelDeltaSelector/filePanelDeltaSelector.component.html +23 -0
- package/app/codeCharta/ui/filePanel/filePanelDeltaSelector/filePanelDeltaSelector.component.ts +18 -0
- package/app/codeCharta/ui/filePanel/filePanelFileSelector/filePanelFileSelector.component.html +18 -0
- package/app/codeCharta/ui/filePanel/filePanelFileSelector/filePanelFileSelector.component.ts +16 -0
- package/app/codeCharta/ui/filePanel/filePanelStateButtons/filePanelStateButtons.component.html +18 -0
- package/app/codeCharta/ui/filePanel/filePanelStateButtons/filePanelStateButtons.component.ts +11 -0
- package/app/codeCharta/ui/mapTreeView/mapTreeView.level.e2e.ts +7 -5
- package/app/codeCharta/ui/mapTreeView/mapTreeViewLevel/mapTreeViewLevel.component.html +1 -1
- package/app/codeCharta/ui/mapTreeView/mapTreeViewLevel/mapTreeViewLevel.component.spec.ts +6 -16
- package/app/codeCharta/ui/mapTreeView/mapTreeViewLevel/mapTreeViewLevel.component.ts +15 -11
- package/app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.html +22 -0
- package/app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.scss +31 -0
- package/app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.spec.ts +35 -0
- package/app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.ts +30 -0
- package/app/codeCharta/ui/nodeContextMenu/{markFolderColorPicker/markFolderColorPicker.module.ts → markFolderRow/markFolderRow.module.ts} +4 -5
- package/app/codeCharta/ui/nodeContextMenu/markFolderRow/selectors/markFolderItems.selector.spec.ts +17 -0
- package/app/codeCharta/ui/nodeContextMenu/markFolderRow/selectors/markFolderItems.selector.ts +29 -0
- package/app/codeCharta/ui/nodeContextMenu/markFolderRow/selectors/rightClickedNode.selector.spec.ts +15 -0
- package/app/codeCharta/ui/nodeContextMenu/markFolderRow/selectors/rightClickedNode.selector.ts +9 -0
- package/app/codeCharta/ui/nodeContextMenu/nodeContextMenu.component.html +2 -15
- package/app/codeCharta/ui/nodeContextMenu/nodeContextMenu.component.scss +0 -15
- package/app/codeCharta/ui/nodeContextMenu/nodeContextMenu.component.spec.ts +10 -119
- package/app/codeCharta/ui/nodeContextMenu/nodeContextMenu.component.ts +40 -134
- package/app/codeCharta/ui/nodeContextMenu/nodeContextMenu.module.ts +2 -2
- package/app/codeCharta/ui/ribbonBar/ribbonBar.component.html +1 -1
- package/app/codeCharta/ui/toolBar/toolBar.component.html +1 -1
- package/app/codeCharta/ui/toolBar/toolBar.component.scss +1 -1
- package/app/codeCharta/ui/ui.ts +2 -2
- package/app/codeCharta/util/customConfigHelper.spec.ts +155 -60
- package/app/codeCharta/util/customConfigHelper.ts +33 -3
- package/app/codeCharta/util/dataMocks.ts +4 -2
- package/app/codeCharta/util/fileValidator.spec.ts +69 -182
- package/app/codeCharta/util/fileValidator.ts +61 -37
- package/dist/webpack/bundle.js +852 -485
- package/dist/webpack/bundle.js.map +1 -1
- package/package.json +1 -1
- package/app/codeCharta/ui/nodeContextMenu/markFolderColorPicker/markFolderColorPicker.component.html +0 -9
- package/app/codeCharta/ui/nodeContextMenu/markFolderColorPicker/markFolderColorPicker.component.scss +0 -13
- package/app/codeCharta/ui/nodeContextMenu/markFolderColorPicker/markFolderColorPicker.component.ts +0 -10
package/dist/webpack/bundle.js
CHANGED
|
@@ -204448,43 +204448,43 @@ class CodeChartaService {
|
|
|
204448
204448
|
loadFiles(nameDataPairs) {
|
|
204449
204449
|
return __awaiter(this, void 0, void 0, function* () {
|
|
204450
204450
|
this.fileStates = this.storeService.getState().files;
|
|
204451
|
+
const fileValidationResults = [];
|
|
204452
|
+
this.getValidationResults(nameDataPairs, fileValidationResults);
|
|
204453
|
+
this.storeService.dispatch((0,_state_store_appSettings_isLoadingFile_isLoadingFile_actions__WEBPACK_IMPORTED_MODULE_5__.setIsLoadingFile)(false));
|
|
204454
|
+
if (fileValidationResults.length > 0) yield this.dialogService.showValidationDialog(fileValidationResults);
|
|
204451
204455
|
|
|
204452
|
-
|
|
204453
|
-
try {
|
|
204454
|
-
(0,_util_fileValidator__WEBPACK_IMPORTED_MODULE_0__.validate)(nameDataPair);
|
|
204455
|
-
this.addFile(nameDataPair);
|
|
204456
|
-
} catch (error) {
|
|
204457
|
-
if (error.error.length > 0) {
|
|
204458
|
-
this.fileStates = [];
|
|
204459
|
-
this.recentFiles = [];
|
|
204460
|
-
this.storeService.dispatch((0,_state_store_appSettings_isLoadingFile_isLoadingFile_actions__WEBPACK_IMPORTED_MODULE_5__.setIsLoadingFile)(false));
|
|
204461
|
-
yield this.dialogService.showValidationErrorDialog(error);
|
|
204462
|
-
break;
|
|
204463
|
-
}
|
|
204464
|
-
|
|
204465
|
-
if (error.warning.length > 0) {
|
|
204466
|
-
this.addFile(nameDataPair);
|
|
204467
|
-
this.addRecentFile(nameDataPair.fileName);
|
|
204468
|
-
this.storeService.dispatch((0,_state_store_appSettings_isLoadingFile_isLoadingFile_actions__WEBPACK_IMPORTED_MODULE_5__.setIsLoadingFile)(false));
|
|
204469
|
-
yield this.dialogService.showValidationWarningDialog(error);
|
|
204470
|
-
}
|
|
204471
|
-
}
|
|
204472
|
-
}
|
|
204473
|
-
|
|
204474
|
-
if (this.fileStates.length > 0) {
|
|
204456
|
+
if (this.recentFiles.length > 0) {
|
|
204475
204457
|
this.storeService.dispatch((0,_state_store_dynamicSettings_recentFiles_recentFiles_actions__WEBPACK_IMPORTED_MODULE_8__.setRecentFiles)(this.recentFiles));
|
|
204476
204458
|
this.storeService.dispatch((0,_state_store_files_files_actions__WEBPACK_IMPORTED_MODULE_2__.setFiles)(this.fileStates));
|
|
204477
|
-
this.fileStates = [];
|
|
204478
|
-
this.recentFiles = [];
|
|
204479
204459
|
const recentFile = this.storeService.getState().dynamicSettings.recentFiles[0];
|
|
204480
204460
|
const rootName = this.storeService.getState().files.find(f => f.file.fileMeta.fileName === recentFile).file.map.name;
|
|
204481
|
-
this.storeService.dispatch((0,_state_store_files_files_actions__WEBPACK_IMPORTED_MODULE_2__.
|
|
204461
|
+
this.storeService.dispatch((0,_state_store_files_files_actions__WEBPACK_IMPORTED_MODULE_2__.setMultipleByNames)(this.recentFiles));
|
|
204482
204462
|
CodeChartaService.updateRootData(rootName);
|
|
204483
204463
|
this.setDefaultScenario();
|
|
204464
|
+
this.fileStates = [];
|
|
204465
|
+
this.recentFiles = [];
|
|
204484
204466
|
}
|
|
204485
204467
|
});
|
|
204486
204468
|
}
|
|
204487
204469
|
|
|
204470
|
+
getValidationResults(nameDataPairs, fileValidationResults) {
|
|
204471
|
+
for (const nameDataPair of nameDataPairs) {
|
|
204472
|
+
const fileValidationResult = {
|
|
204473
|
+
fileName: nameDataPair === null || nameDataPair === void 0 ? void 0 : nameDataPair.fileName,
|
|
204474
|
+
errors: [],
|
|
204475
|
+
warnings: []
|
|
204476
|
+
};
|
|
204477
|
+
fileValidationResult.errors.push(...(0,_util_fileValidator__WEBPACK_IMPORTED_MODULE_0__.checkErrors)(nameDataPair === null || nameDataPair === void 0 ? void 0 : nameDataPair.content));
|
|
204478
|
+
|
|
204479
|
+
if (fileValidationResult.errors.length === 0) {
|
|
204480
|
+
fileValidationResult.warnings.push(...(0,_util_fileValidator__WEBPACK_IMPORTED_MODULE_0__.checkWarnings)(nameDataPair === null || nameDataPair === void 0 ? void 0 : nameDataPair.content));
|
|
204481
|
+
this.addFile(nameDataPair);
|
|
204482
|
+
}
|
|
204483
|
+
|
|
204484
|
+
if (fileValidationResult.errors.length > 0 || fileValidationResult.warnings.length > 0) fileValidationResults.push(fileValidationResult);
|
|
204485
|
+
}
|
|
204486
|
+
}
|
|
204487
|
+
|
|
204488
204488
|
addFile(file) {
|
|
204489
204489
|
const ccFile = (0,_util_fileHelper__WEBPACK_IMPORTED_MODULE_7__.getCCFile)(file);
|
|
204490
204490
|
_util_nodeDecorator__WEBPACK_IMPORTED_MODULE_1__.NodeDecorator.decorateMapWithPathAttribute(ccFile);
|
|
@@ -204555,10 +204555,6 @@ class CodeChartaService {
|
|
|
204555
204555
|
CodeChartaService.ROOT_PATH = `/${CodeChartaService.ROOT_NAME}`;
|
|
204556
204556
|
}
|
|
204557
204557
|
|
|
204558
|
-
addRecentFile(fileName) {
|
|
204559
|
-
this.recentFiles.push(fileName);
|
|
204560
|
-
}
|
|
204561
|
-
|
|
204562
204558
|
}
|
|
204563
204559
|
CodeChartaService.$inject = ["storeService", "dialogService"];
|
|
204564
204560
|
CodeChartaService.ROOT_NAME = "root";
|
|
@@ -209764,20 +209760,38 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
209764
209760
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
209765
209761
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
209766
209762
|
/* harmony export */ });
|
|
209767
|
-
/* harmony import */ var
|
|
209763
|
+
/* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! redux */ "./node_modules/redux/es/redux.js");
|
|
209768
209764
|
/* harmony import */ var _hoveredBuildingPath_hoveredBuildingPath_reducer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hoveredBuildingPath/hoveredBuildingPath.reducer */ "./app/codeCharta/state/store/appStatus/hoveredBuildingPath/hoveredBuildingPath.reducer.ts");
|
|
209769
|
-
/* harmony import */ var
|
|
209765
|
+
/* harmony import */ var _rightClickedNodeData_rightClickedNodeData_reducer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rightClickedNodeData/rightClickedNodeData.reducer */ "./app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.reducer.ts");
|
|
209766
|
+
/* harmony import */ var _selectedBuildingId_selectedBuildingId_reducer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./selectedBuildingId/selectedBuildingId.reducer */ "./app/codeCharta/state/store/appStatus/selectedBuildingId/selectedBuildingId.reducer.ts");
|
|
209770
209767
|
|
|
209771
209768
|
|
|
209772
209769
|
|
|
209773
|
-
|
|
209770
|
+
|
|
209771
|
+
const appStatus = (0,redux__WEBPACK_IMPORTED_MODULE_3__.combineReducers)({
|
|
209774
209772
|
hoveredBuildingPath: _hoveredBuildingPath_hoveredBuildingPath_reducer__WEBPACK_IMPORTED_MODULE_0__.hoveredBuildingPath,
|
|
209775
|
-
selectedBuildingId:
|
|
209773
|
+
selectedBuildingId: _selectedBuildingId_selectedBuildingId_reducer__WEBPACK_IMPORTED_MODULE_2__.selectedBuildingId,
|
|
209774
|
+
rightClickedNodeData: _rightClickedNodeData_rightClickedNodeData_reducer__WEBPACK_IMPORTED_MODULE_1__.rightClickedNodeData
|
|
209776
209775
|
});
|
|
209777
209776
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (appStatus);
|
|
209778
209777
|
|
|
209779
209778
|
/***/ }),
|
|
209780
209779
|
|
|
209780
|
+
/***/ "./app/codeCharta/state/store/appStatus/appStatus.selector.ts":
|
|
209781
|
+
/*!********************************************************************!*\
|
|
209782
|
+
!*** ./app/codeCharta/state/store/appStatus/appStatus.selector.ts ***!
|
|
209783
|
+
\********************************************************************/
|
|
209784
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
209785
|
+
|
|
209786
|
+
"use strict";
|
|
209787
|
+
__webpack_require__.r(__webpack_exports__);
|
|
209788
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
209789
|
+
/* harmony export */ "appStatusSelector": () => (/* binding */ appStatusSelector)
|
|
209790
|
+
/* harmony export */ });
|
|
209791
|
+
const appStatusSelector = state => state.appStatus;
|
|
209792
|
+
|
|
209793
|
+
/***/ }),
|
|
209794
|
+
|
|
209781
209795
|
/***/ "./app/codeCharta/state/store/appStatus/hoveredBuildingPath/hoveredBuildingPath.actions.ts":
|
|
209782
209796
|
/*!*************************************************************************************************!*\
|
|
209783
209797
|
!*** ./app/codeCharta/state/store/appStatus/hoveredBuildingPath/hoveredBuildingPath.actions.ts ***!
|
|
@@ -209845,6 +209859,77 @@ const hoveredBuildingPathSelector = ccState => ccState.appStatus.hoveredBuilding
|
|
|
209845
209859
|
|
|
209846
209860
|
/***/ }),
|
|
209847
209861
|
|
|
209862
|
+
/***/ "./app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.actions.ts":
|
|
209863
|
+
/*!***************************************************************************************************!*\
|
|
209864
|
+
!*** ./app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.actions.ts ***!
|
|
209865
|
+
\***************************************************************************************************/
|
|
209866
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
209867
|
+
|
|
209868
|
+
"use strict";
|
|
209869
|
+
__webpack_require__.r(__webpack_exports__);
|
|
209870
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
209871
|
+
/* harmony export */ "RightClickedNodeDataActions": () => (/* binding */ RightClickedNodeDataActions),
|
|
209872
|
+
/* harmony export */ "defaultRightClickedNodeData": () => (/* binding */ defaultRightClickedNodeData),
|
|
209873
|
+
/* harmony export */ "setRightClickedNodeData": () => (/* binding */ setRightClickedNodeData)
|
|
209874
|
+
/* harmony export */ });
|
|
209875
|
+
var RightClickedNodeDataActions;
|
|
209876
|
+
|
|
209877
|
+
(function (RightClickedNodeDataActions) {
|
|
209878
|
+
RightClickedNodeDataActions["SET_RIGHT_CLICKED_NODE_DATA"] = "SET_RIGHT_CLICKED_NODE_DATA";
|
|
209879
|
+
})(RightClickedNodeDataActions || (RightClickedNodeDataActions = {}));
|
|
209880
|
+
|
|
209881
|
+
const defaultRightClickedNodeData = null;
|
|
209882
|
+
const setRightClickedNodeData = payload => ({
|
|
209883
|
+
type: RightClickedNodeDataActions.SET_RIGHT_CLICKED_NODE_DATA,
|
|
209884
|
+
payload
|
|
209885
|
+
});
|
|
209886
|
+
|
|
209887
|
+
/***/ }),
|
|
209888
|
+
|
|
209889
|
+
/***/ "./app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.reducer.ts":
|
|
209890
|
+
/*!***************************************************************************************************!*\
|
|
209891
|
+
!*** ./app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.reducer.ts ***!
|
|
209892
|
+
\***************************************************************************************************/
|
|
209893
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
209894
|
+
|
|
209895
|
+
"use strict";
|
|
209896
|
+
__webpack_require__.r(__webpack_exports__);
|
|
209897
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
209898
|
+
/* harmony export */ "rightClickedNodeData": () => (/* binding */ rightClickedNodeData)
|
|
209899
|
+
/* harmony export */ });
|
|
209900
|
+
/* harmony import */ var _rightClickedNodeData_actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./rightClickedNodeData.actions */ "./app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.actions.ts");
|
|
209901
|
+
|
|
209902
|
+
const rightClickedNodeData = (state = _rightClickedNodeData_actions__WEBPACK_IMPORTED_MODULE_0__.defaultRightClickedNodeData, action) => {
|
|
209903
|
+
switch (action.type) {
|
|
209904
|
+
case _rightClickedNodeData_actions__WEBPACK_IMPORTED_MODULE_0__.RightClickedNodeDataActions.SET_RIGHT_CLICKED_NODE_DATA:
|
|
209905
|
+
return action.payload;
|
|
209906
|
+
|
|
209907
|
+
default:
|
|
209908
|
+
return state;
|
|
209909
|
+
}
|
|
209910
|
+
};
|
|
209911
|
+
|
|
209912
|
+
/***/ }),
|
|
209913
|
+
|
|
209914
|
+
/***/ "./app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.selector.ts":
|
|
209915
|
+
/*!****************************************************************************************************!*\
|
|
209916
|
+
!*** ./app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.selector.ts ***!
|
|
209917
|
+
\****************************************************************************************************/
|
|
209918
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
209919
|
+
|
|
209920
|
+
"use strict";
|
|
209921
|
+
__webpack_require__.r(__webpack_exports__);
|
|
209922
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
209923
|
+
/* harmony export */ "rightClickedNodeDataSelector": () => (/* binding */ rightClickedNodeDataSelector)
|
|
209924
|
+
/* harmony export */ });
|
|
209925
|
+
/* harmony import */ var _angular_redux_createSelector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../angular-redux/createSelector */ "./app/codeCharta/state/angular-redux/createSelector.ts");
|
|
209926
|
+
/* harmony import */ var _appStatus_selector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../appStatus.selector */ "./app/codeCharta/state/store/appStatus/appStatus.selector.ts");
|
|
209927
|
+
|
|
209928
|
+
|
|
209929
|
+
const rightClickedNodeDataSelector = (0,_angular_redux_createSelector__WEBPACK_IMPORTED_MODULE_0__.createSelector)([_appStatus_selector__WEBPACK_IMPORTED_MODULE_1__.appStatusSelector], appStatus => appStatus.rightClickedNodeData);
|
|
209930
|
+
|
|
209931
|
+
/***/ }),
|
|
209932
|
+
|
|
209848
209933
|
/***/ "./app/codeCharta/state/store/appStatus/selectedBuildingId/selectedBuildingId.actions.ts":
|
|
209849
209934
|
/*!***********************************************************************************************!*\
|
|
209850
209935
|
!*** ./app/codeCharta/state/store/appStatus/selectedBuildingId/selectedBuildingId.actions.ts ***!
|
|
@@ -214164,6 +214249,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
214164
214249
|
/* harmony import */ var _files_files_actions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./files/files.actions */ "./app/codeCharta/state/store/files/files.actions.ts");
|
|
214165
214250
|
/* harmony import */ var _appStatus_hoveredBuildingPath_hoveredBuildingPath_actions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./appStatus/hoveredBuildingPath/hoveredBuildingPath.actions */ "./app/codeCharta/state/store/appStatus/hoveredBuildingPath/hoveredBuildingPath.actions.ts");
|
|
214166
214251
|
/* harmony import */ var _appStatus_selectedBuildingId_selectedBuildingId_actions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./appStatus/selectedBuildingId/selectedBuildingId.actions */ "./app/codeCharta/state/store/appStatus/selectedBuildingId/selectedBuildingId.actions.ts");
|
|
214252
|
+
/* harmony import */ var _appStatus_rightClickedNodeData_rightClickedNodeData_actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./appStatus/rightClickedNodeData/rightClickedNodeData.actions */ "./app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.actions.ts");
|
|
214253
|
+
|
|
214167
214254
|
|
|
214168
214255
|
|
|
214169
214256
|
|
|
@@ -214193,7 +214280,8 @@ const defaultState = {
|
|
|
214193
214280
|
files: _files_files_actions__WEBPACK_IMPORTED_MODULE_5__.defaultFiles,
|
|
214194
214281
|
appStatus: {
|
|
214195
214282
|
hoveredBuildingPath: _appStatus_hoveredBuildingPath_hoveredBuildingPath_actions__WEBPACK_IMPORTED_MODULE_6__.defaultHoveredBuildingPath,
|
|
214196
|
-
selectedBuildingId: _appStatus_selectedBuildingId_selectedBuildingId_actions__WEBPACK_IMPORTED_MODULE_7__.defaultSelectedBuildingId
|
|
214283
|
+
selectedBuildingId: _appStatus_selectedBuildingId_selectedBuildingId_actions__WEBPACK_IMPORTED_MODULE_7__.defaultSelectedBuildingId,
|
|
214284
|
+
rightClickedNodeData: _appStatus_rightClickedNodeData_rightClickedNodeData_actions__WEBPACK_IMPORTED_MODULE_8__.defaultRightClickedNodeData
|
|
214197
214285
|
}
|
|
214198
214286
|
};
|
|
214199
214287
|
|
|
@@ -216897,11 +216985,13 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
216897
216985
|
/* harmony import */ var _util_codeMapHelper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/codeMapHelper */ "./app/codeCharta/util/codeMapHelper.ts");
|
|
216898
216986
|
/* harmony import */ var _state_store_fileSettings_blacklist_blacklist_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../state/store/fileSettings/blacklist/blacklist.service */ "./app/codeCharta/state/store/fileSettings/blacklist/blacklist.service.ts");
|
|
216899
216987
|
/* harmony import */ var _state_store_files_files_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../state/store/files/files.service */ "./app/codeCharta/state/store/files/files.service.ts");
|
|
216900
|
-
/* harmony import */ var
|
|
216901
|
-
/* harmony import */ var
|
|
216988
|
+
/* harmony import */ var d3_hierarchy__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! d3-hierarchy */ "./node_modules/d3-hierarchy/src/hierarchy/index.js");
|
|
216989
|
+
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! three */ "./node_modules/three/build/three.module.js");
|
|
216902
216990
|
/* harmony import */ var _util_lazyLoader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/lazyLoader */ "./app/codeCharta/util/lazyLoader.ts");
|
|
216903
216991
|
/* harmony import */ var _state_store_appStatus_hoveredBuildingPath_hoveredBuildingPath_actions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../state/store/appStatus/hoveredBuildingPath/hoveredBuildingPath.actions */ "./app/codeCharta/state/store/appStatus/hoveredBuildingPath/hoveredBuildingPath.actions.ts");
|
|
216904
216992
|
/* harmony import */ var _state_store_appStatus_hoveredBuildingPath_hoveredBuildingPath_selector__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../state/store/appStatus/hoveredBuildingPath/hoveredBuildingPath.selector */ "./app/codeCharta/state/store/appStatus/hoveredBuildingPath/hoveredBuildingPath.selector.ts");
|
|
216993
|
+
/* harmony import */ var _state_store_appStatus_rightClickedNodeData_rightClickedNodeData_actions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../state/store/appStatus/rightClickedNodeData/rightClickedNodeData.actions */ "./app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.actions.ts");
|
|
216994
|
+
|
|
216905
216995
|
|
|
216906
216996
|
|
|
216907
216997
|
|
|
@@ -216957,7 +217047,7 @@ class CodeMapMouseEventService {
|
|
|
216957
217047
|
};
|
|
216958
217048
|
this.isGrabbing = false;
|
|
216959
217049
|
this.isMoving = false;
|
|
216960
|
-
this.raycaster = new
|
|
217050
|
+
this.raycaster = new three__WEBPACK_IMPORTED_MODULE_8__.Raycaster();
|
|
216961
217051
|
this.temporaryLabelForBuilding = null;
|
|
216962
217052
|
this.hoveredBuildingPath = null;
|
|
216963
217053
|
this.threeUpdateCycleService.register(() => this.threeRendererService.render());
|
|
@@ -217253,12 +217343,10 @@ class CodeMapMouseEventService {
|
|
|
217253
217343
|
const building = this.intersectedBuilding;
|
|
217254
217344
|
|
|
217255
217345
|
if (building && !this.hasMouseMovedMoreThanThreePixels(this.mouseOnLastClick)) {
|
|
217256
|
-
|
|
217257
|
-
|
|
217258
|
-
|
|
217259
|
-
|
|
217260
|
-
y: this.mouse.y
|
|
217261
|
-
}
|
|
217346
|
+
this.storeService.dispatch((0,_state_store_appStatus_rightClickedNodeData_rightClickedNodeData_actions__WEBPACK_IMPORTED_MODULE_7__.setRightClickedNodeData)({
|
|
217347
|
+
nodeId: building.node.id,
|
|
217348
|
+
xPositionOfRightClickEvent: this.mouse.x,
|
|
217349
|
+
yPositionOfRightClickEvent: this.mouse.y
|
|
217262
217350
|
}));
|
|
217263
217351
|
}
|
|
217264
217352
|
|
|
@@ -217307,7 +217395,7 @@ class CodeMapMouseEventService {
|
|
|
217307
217395
|
|
|
217308
217396
|
for (const {
|
|
217309
217397
|
data
|
|
217310
|
-
} of (0,
|
|
217398
|
+
} of (0,d3_hierarchy__WEBPACK_IMPORTED_MODULE_9__["default"])(codeMapNode)) {
|
|
217311
217399
|
const building = lookUp.idToBuilding.get(data.id);
|
|
217312
217400
|
|
|
217313
217401
|
if (building) {
|
|
@@ -221061,6 +221149,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
221061
221149
|
/* harmony import */ var _CHANGELOG_md__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../CHANGELOG.md */ "../CHANGELOG.md");
|
|
221062
221150
|
/* harmony import */ var _CHANGELOG_md__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_CHANGELOG_md__WEBPACK_IMPORTED_MODULE_0__);
|
|
221063
221151
|
/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../package.json */ "./package.json");
|
|
221152
|
+
/* harmony import */ var _dialog_changelog_component_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dialog.changelog.component.scss */ "./app/codeCharta/ui/dialog/dialog.changelog.component.scss");
|
|
221153
|
+
|
|
221064
221154
|
|
|
221065
221155
|
|
|
221066
221156
|
class DialogChangelogController {
|
|
@@ -221093,7 +221183,7 @@ class DialogChangelogController {
|
|
|
221093
221183
|
const end = this.findEndChangesLine(changelogLines, lineIndex);
|
|
221094
221184
|
|
|
221095
221185
|
for (const changeLine of changelogLines.slice(start, end)) {
|
|
221096
|
-
changelogTypes.push(changeLine);
|
|
221186
|
+
changelogTypes.push(`${changeLine}<br>`);
|
|
221097
221187
|
}
|
|
221098
221188
|
}
|
|
221099
221189
|
|
|
@@ -221609,28 +221699,47 @@ class DialogService {
|
|
|
221609
221699
|
});
|
|
221610
221700
|
}
|
|
221611
221701
|
|
|
221612
|
-
|
|
221702
|
+
showValidationDialog(fileValidationResults) {
|
|
221613
221703
|
return __awaiter(this, void 0, void 0, function* () {
|
|
221614
|
-
const
|
|
221615
|
-
|
|
221616
|
-
|
|
221704
|
+
const htmlMessages = [];
|
|
221705
|
+
const filesWithErrors = fileValidationResults.filter(validationResult => {
|
|
221706
|
+
return validationResult.errors.length > 0;
|
|
221707
|
+
});
|
|
221708
|
+
|
|
221709
|
+
if (filesWithErrors.length > 0) {
|
|
221710
|
+
htmlMessages.push("<h2>Errors</h2>");
|
|
221711
|
+
|
|
221712
|
+
for (const fileWithErrors of filesWithErrors) {
|
|
221713
|
+
const fileErrorMessage = this.buildFileErrorMessage(fileWithErrors);
|
|
221714
|
+
htmlMessages.push(fileErrorMessage);
|
|
221715
|
+
}
|
|
221716
|
+
}
|
|
221717
|
+
|
|
221718
|
+
const filesWithWarnings = fileValidationResults.filter(validationResult => {
|
|
221719
|
+
return validationResult.warnings.length > 0;
|
|
221720
|
+
});
|
|
221721
|
+
|
|
221722
|
+
if (filesWithWarnings.length > 0) {
|
|
221723
|
+
htmlMessages.push("<h2>Warnings</h2>");
|
|
221724
|
+
|
|
221725
|
+
for (const fileWithWarnings of filesWithWarnings) {
|
|
221726
|
+
const fileWarningMessage = this.buildFileWarningMessage(fileWithWarnings);
|
|
221727
|
+
htmlMessages.push(fileWarningMessage);
|
|
221728
|
+
}
|
|
221729
|
+
}
|
|
221730
|
+
|
|
221731
|
+
yield this.showErrorDialog(htmlMessages.join(""), "Something is wrong with the uploaded file(s)");
|
|
221617
221732
|
});
|
|
221618
221733
|
}
|
|
221619
221734
|
|
|
221620
|
-
|
|
221621
|
-
|
|
221622
|
-
|
|
221623
|
-
const htmlMessage = this.buildHtmlMessage(warningSymbol, validationResult.warning);
|
|
221624
|
-
yield this.showErrorDialog(htmlMessage, "Validation Warning");
|
|
221625
|
-
});
|
|
221735
|
+
buildFileErrorMessage(fileValidationResult) {
|
|
221736
|
+
const errorSymbol = '<i class="fa fa-exclamation-circle"></i> ';
|
|
221737
|
+
return `<p><strong>${fileValidationResult.fileName}:</strong> ${this.buildHtmlMessage(errorSymbol, fileValidationResult.errors)}</p>`;
|
|
221626
221738
|
}
|
|
221627
221739
|
|
|
221628
|
-
|
|
221629
|
-
|
|
221630
|
-
|
|
221631
|
-
const htmlMessage = this.buildHtmlMessage(errorSymbol, validationResult.error);
|
|
221632
|
-
yield this.showErrorDialogAndOpenFileChooser(htmlMessage, "Validation Error");
|
|
221633
|
-
});
|
|
221740
|
+
buildFileWarningMessage(fileValidationResult) {
|
|
221741
|
+
const warningSymbol = '<i class="fa fa-exclamation-triangle"></i> ';
|
|
221742
|
+
return `<p><strong>${fileValidationResult.fileName}:</strong> ${this.buildHtmlMessage(warningSymbol, fileValidationResult.warnings)}</p>`;
|
|
221634
221743
|
}
|
|
221635
221744
|
|
|
221636
221745
|
buildHtmlMessage(symbol, validationResult) {
|
|
@@ -222365,6 +222474,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
222365
222474
|
/* harmony import */ var _model_files_files__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../model/files/files */ "./app/codeCharta/model/files/files.ts");
|
|
222366
222475
|
/* harmony import */ var _codeCharta_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../codeCharta.service */ "./app/codeCharta/codeCharta.service.ts");
|
|
222367
222476
|
/* harmony import */ var _state_store_dynamicSettings_recentFiles_recentFiles_actions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../state/store/dynamicSettings/recentFiles/recentFiles.actions */ "./app/codeCharta/state/store/dynamicSettings/recentFiles/recentFiles.actions.ts");
|
|
222477
|
+
/* harmony import */ var _state_store_appSettings_mapColors_mapColors_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../state/store/appSettings/mapColors/mapColors.service */ "./app/codeCharta/state/store/appSettings/mapColors/mapColors.service.ts");
|
|
222478
|
+
|
|
222368
222479
|
|
|
222369
222480
|
|
|
222370
222481
|
|
|
@@ -222379,57 +222490,114 @@ class FilePanelController {
|
|
|
222379
222490
|
this.$rootScope = $rootScope;
|
|
222380
222491
|
this.storeService = storeService;
|
|
222381
222492
|
this._viewModel = {
|
|
222382
|
-
isSingleState: null,
|
|
222383
222493
|
isPartialState: null,
|
|
222384
222494
|
isDeltaState: null,
|
|
222385
222495
|
files: null,
|
|
222386
222496
|
renderState: null,
|
|
222387
222497
|
selectedFileNames: {
|
|
222388
|
-
single: null,
|
|
222389
222498
|
delta: {
|
|
222390
222499
|
reference: null,
|
|
222391
222500
|
comparison: null
|
|
222392
222501
|
},
|
|
222393
222502
|
partial: []
|
|
222394
222503
|
},
|
|
222395
|
-
pictogramFirstFileColor: null,
|
|
222396
222504
|
pictogramUpperColor: null,
|
|
222397
222505
|
pictogramLowerColor: null
|
|
222398
222506
|
};
|
|
222399
|
-
_state_store_files_files_service__WEBPACK_IMPORTED_MODULE_2__.FilesService.subscribe(this.$rootScope, this);
|
|
222400
|
-
}
|
|
222401
222507
|
|
|
222402
|
-
|
|
222403
|
-
|
|
222404
|
-
|
|
222405
|
-
const files = this.storeService.getState().files;
|
|
222508
|
+
this.onPartialSelectionClosed = () => {
|
|
222509
|
+
this.updateSelectedFileNamesInViewModel();
|
|
222510
|
+
};
|
|
222406
222511
|
|
|
222407
|
-
|
|
222408
|
-
this.
|
|
222409
|
-
} else {
|
|
222410
|
-
this.partialStateFileRemove(files);
|
|
222411
|
-
}
|
|
222512
|
+
this.onDeltaReferenceFileChange = referenceFileName => {
|
|
222513
|
+
const rootFile = this._viewModel.files.find(x => x.file.fileMeta.fileName === referenceFileName);
|
|
222412
222514
|
|
|
222413
|
-
|
|
222414
|
-
|
|
222415
|
-
|
|
222515
|
+
if (!rootFile) {
|
|
222516
|
+
return;
|
|
222517
|
+
}
|
|
222416
222518
|
|
|
222417
|
-
|
|
222418
|
-
|
|
222419
|
-
this.
|
|
222420
|
-
}
|
|
222421
|
-
|
|
222422
|
-
|
|
222519
|
+
const rootName = rootFile.file.map.name;
|
|
222520
|
+
_codeCharta_service__WEBPACK_IMPORTED_MODULE_5__.CodeChartaService.updateRootData(rootName);
|
|
222521
|
+
this.storeService.dispatch((0,_state_store_files_files_actions__WEBPACK_IMPORTED_MODULE_1__.setDeltaByNames)(referenceFileName, this._viewModel.selectedFileNames.delta.comparison));
|
|
222522
|
+
};
|
|
222523
|
+
|
|
222524
|
+
this.onDeltaComparisonFileChange = comparisonFileName => {
|
|
222525
|
+
const referenceFileName = this._viewModel.selectedFileNames.delta.reference;
|
|
222526
|
+
|
|
222527
|
+
const rootName = this._viewModel.files.find(x => x.file.fileMeta.fileName === referenceFileName).file.map.name;
|
|
222528
|
+
|
|
222529
|
+
_codeCharta_service__WEBPACK_IMPORTED_MODULE_5__.CodeChartaService.updateRootData(rootName);
|
|
222530
|
+
this.storeService.dispatch((0,_state_store_files_files_actions__WEBPACK_IMPORTED_MODULE_1__.setDeltaByNames)(referenceFileName, comparisonFileName));
|
|
222531
|
+
};
|
|
222532
|
+
|
|
222533
|
+
this.onPartialFilesChange = partialFileNames => {
|
|
222534
|
+
if (partialFileNames.length > 0) {
|
|
222535
|
+
this.storeService.dispatch((0,_state_store_files_files_actions__WEBPACK_IMPORTED_MODULE_1__.setMultipleByNames)(partialFileNames));
|
|
222536
|
+
} else {
|
|
222537
|
+
this._viewModel.selectedFileNames.partial = [];
|
|
222538
|
+
}
|
|
222539
|
+
};
|
|
222540
|
+
|
|
222541
|
+
this.onDeltaStateSelected = () => {
|
|
222542
|
+
this._viewModel.selectedFileNames.delta.reference = this.getLastVisibleFileName();
|
|
222543
|
+
this.onDeltaComparisonFileChange(null);
|
|
222544
|
+
};
|
|
222545
|
+
|
|
222546
|
+
this.selectAllPartialFiles = () => {
|
|
222547
|
+
const allFileNames = this._viewModel.files.map(x => x.file.fileMeta.fileName);
|
|
222548
|
+
|
|
222549
|
+
this.onPartialFilesChange(allFileNames);
|
|
222550
|
+
};
|
|
222551
|
+
|
|
222552
|
+
this.selectRecentPartialFiles = () => {
|
|
222553
|
+
const recentFileNames = this.storeService.getState().dynamicSettings.recentFiles;
|
|
222554
|
+
|
|
222555
|
+
if (recentFileNames.length > 0) {
|
|
222556
|
+
this.onPartialFilesChange(recentFileNames);
|
|
222557
|
+
} else {
|
|
222558
|
+
this.selectAllPartialFiles();
|
|
222559
|
+
}
|
|
222560
|
+
};
|
|
222561
|
+
|
|
222562
|
+
this.selectZeroPartialFiles = () => {
|
|
222563
|
+
this.onPartialFilesChange([]);
|
|
222564
|
+
};
|
|
222565
|
+
|
|
222566
|
+
this.invertPartialFileSelection = () => {
|
|
222567
|
+
const invertedFileNames = [];
|
|
222568
|
+
const partialFileNames = new Set(this._viewModel.selectedFileNames.partial);
|
|
222569
|
+
|
|
222570
|
+
for (const {
|
|
222571
|
+
file: {
|
|
222572
|
+
fileMeta: {
|
|
222573
|
+
fileName
|
|
222574
|
+
}
|
|
222575
|
+
}
|
|
222576
|
+
} of this._viewModel.files) {
|
|
222577
|
+
if (!partialFileNames.has(fileName)) {
|
|
222578
|
+
invertedFileNames.push(fileName);
|
|
222579
|
+
}
|
|
222580
|
+
}
|
|
222581
|
+
|
|
222582
|
+
this.onPartialFilesChange(invertedFileNames);
|
|
222583
|
+
};
|
|
222584
|
+
|
|
222585
|
+
_state_store_files_files_service__WEBPACK_IMPORTED_MODULE_2__.FilesService.subscribe(this.$rootScope, this);
|
|
222586
|
+
_state_store_appSettings_mapColors_mapColors_service__WEBPACK_IMPORTED_MODULE_7__.MapColorsService.subscribe(this.$rootScope, this);
|
|
222423
222587
|
}
|
|
222424
222588
|
|
|
222425
|
-
|
|
222426
|
-
|
|
222427
|
-
this.
|
|
222589
|
+
onMapColorsChanged(mapColors) {
|
|
222590
|
+
this._viewModel.pictogramUpperColor = mapColors.positiveDelta;
|
|
222591
|
+
this._viewModel.pictogramLowerColor = mapColors.negativeDelta;
|
|
222428
222592
|
}
|
|
222429
222593
|
|
|
222430
|
-
|
|
222431
|
-
|
|
222432
|
-
this.
|
|
222594
|
+
onRemoveFile(filename, $event) {
|
|
222595
|
+
this.storeService.dispatch((0,_state_store_files_files_actions__WEBPACK_IMPORTED_MODULE_1__.removeFile)(filename));
|
|
222596
|
+
this.storeService.dispatch((0,_state_store_dynamicSettings_recentFiles_recentFiles_actions__WEBPACK_IMPORTED_MODULE_6__.removeRecentFile)(filename));
|
|
222597
|
+
const files = this.storeService.getState().files;
|
|
222598
|
+
this.partialStateFileRemove(files);
|
|
222599
|
+
$event.stopPropagation();
|
|
222600
|
+
$event.preventDefault();
|
|
222433
222601
|
}
|
|
222434
222602
|
|
|
222435
222603
|
partialStateFileRemove(files) {
|
|
@@ -222444,31 +222612,16 @@ class FilePanelController {
|
|
|
222444
222612
|
|
|
222445
222613
|
onFilesSelectionChanged(files) {
|
|
222446
222614
|
this._viewModel.files = files;
|
|
222447
|
-
this._viewModel.isSingleState = (0,_model_files_files_helper__WEBPACK_IMPORTED_MODULE_3__.isSingleState)(files);
|
|
222448
222615
|
this._viewModel.isPartialState = (0,_model_files_files_helper__WEBPACK_IMPORTED_MODULE_3__.isPartialState)(files);
|
|
222449
222616
|
this._viewModel.isDeltaState = (0,_model_files_files_helper__WEBPACK_IMPORTED_MODULE_3__.isDeltaState)(files);
|
|
222450
|
-
this.setPictogramColor();
|
|
222451
222617
|
this.updateSelectedFileNamesInViewModel();
|
|
222452
222618
|
this.lastRenderState = this._viewModel.renderState;
|
|
222453
222619
|
}
|
|
222454
222620
|
|
|
222455
|
-
onPartialSelectionClosed() {
|
|
222456
|
-
this.updateSelectedFileNamesInViewModel();
|
|
222457
|
-
}
|
|
222458
|
-
|
|
222459
|
-
setPictogramColor() {
|
|
222460
|
-
this._viewModel.pictogramFirstFileColor = "#808080";
|
|
222461
|
-
this._viewModel.pictogramUpperColor = this.storeService.getState().appSettings.mapColors.positiveDelta;
|
|
222462
|
-
this._viewModel.pictogramLowerColor = this.storeService.getState().appSettings.mapColors.negativeDelta;
|
|
222463
|
-
}
|
|
222464
|
-
|
|
222465
222621
|
updateSelectedFileNamesInViewModel() {
|
|
222466
222622
|
const visibleFileStates = (0,_model_files_files_helper__WEBPACK_IMPORTED_MODULE_3__.getVisibleFileStates)(this._viewModel.files);
|
|
222467
222623
|
|
|
222468
|
-
if (this._viewModel.
|
|
222469
|
-
this._viewModel.renderState = _model_files_files__WEBPACK_IMPORTED_MODULE_4__.FileSelectionState.Single;
|
|
222470
|
-
this._viewModel.selectedFileNames.single = visibleFileStates[0].file.fileMeta.fileName;
|
|
222471
|
-
} else if (this._viewModel.isDeltaState) {
|
|
222624
|
+
if (this._viewModel.isDeltaState) {
|
|
222472
222625
|
this._viewModel.renderState = _model_files_files__WEBPACK_IMPORTED_MODULE_4__.FileSelectionState.Comparison;
|
|
222473
222626
|
let reference = visibleFileStates[0].file.fileMeta.fileName;
|
|
222474
222627
|
let comparison = visibleFileStates[visibleFileStates.length - 1].file.fileMeta.fileName;
|
|
@@ -222487,96 +222640,7 @@ class FilePanelController {
|
|
|
222487
222640
|
}
|
|
222488
222641
|
}
|
|
222489
222642
|
|
|
222490
|
-
onSingleFileChange(singleFileName) {
|
|
222491
|
-
this.storeService.dispatch((0,_state_store_files_files_actions__WEBPACK_IMPORTED_MODULE_1__.setSingleByName)(singleFileName));
|
|
222492
|
-
|
|
222493
|
-
const rootName = this._viewModel.files.find(x => x.selectedAs === _model_files_files__WEBPACK_IMPORTED_MODULE_4__.FileSelectionState.Single).file.map.name;
|
|
222494
|
-
|
|
222495
|
-
_codeCharta_service__WEBPACK_IMPORTED_MODULE_5__.CodeChartaService.updateRootData(rootName);
|
|
222496
|
-
}
|
|
222497
|
-
|
|
222498
|
-
onDeltaReferenceFileChange(referenceFileName) {
|
|
222499
|
-
const rootName = this._viewModel.files.find(x => x.file.fileMeta.fileName === referenceFileName).file.map.name;
|
|
222500
|
-
|
|
222501
|
-
_codeCharta_service__WEBPACK_IMPORTED_MODULE_5__.CodeChartaService.updateRootData(rootName);
|
|
222502
|
-
this.storeService.dispatch((0,_state_store_files_files_actions__WEBPACK_IMPORTED_MODULE_1__.setDeltaByNames)(referenceFileName, this._viewModel.selectedFileNames.delta.comparison));
|
|
222503
|
-
}
|
|
222504
|
-
|
|
222505
|
-
onDeltaComparisonFileChange(comparisonFileName) {
|
|
222506
|
-
const referenceFileName = this._viewModel.selectedFileNames.delta.reference;
|
|
222507
|
-
|
|
222508
|
-
const rootName = this._viewModel.files.find(x => x.file.fileMeta.fileName === referenceFileName).file.map.name;
|
|
222509
|
-
|
|
222510
|
-
_codeCharta_service__WEBPACK_IMPORTED_MODULE_5__.CodeChartaService.updateRootData(rootName);
|
|
222511
|
-
this.storeService.dispatch((0,_state_store_files_files_actions__WEBPACK_IMPORTED_MODULE_1__.setDeltaByNames)(referenceFileName, comparisonFileName));
|
|
222512
|
-
}
|
|
222513
|
-
|
|
222514
|
-
onPartialFilesChange(partialFileNames) {
|
|
222515
|
-
if (partialFileNames.length > 0) {
|
|
222516
|
-
this.storeService.dispatch((0,_state_store_files_files_actions__WEBPACK_IMPORTED_MODULE_1__.setMultipleByNames)(partialFileNames));
|
|
222517
|
-
} else {
|
|
222518
|
-
this._viewModel.selectedFileNames.partial = [];
|
|
222519
|
-
}
|
|
222520
|
-
}
|
|
222521
|
-
|
|
222522
|
-
onSingleStateSelected() {
|
|
222523
|
-
this._viewModel.selectedFileNames.single = this.getLastVisibleFileName();
|
|
222524
|
-
this.onSingleFileChange(this._viewModel.selectedFileNames.single);
|
|
222525
|
-
}
|
|
222526
|
-
|
|
222527
|
-
onPartialStateSelected() {
|
|
222528
|
-
this.selectRecentPartialFiles();
|
|
222529
|
-
}
|
|
222530
|
-
|
|
222531
|
-
onDeltaStateSelected() {
|
|
222532
|
-
this._viewModel.selectedFileNames.delta.reference = this.getLastVisibleFileName();
|
|
222533
|
-
this.onDeltaComparisonFileChange(null);
|
|
222534
|
-
}
|
|
222535
|
-
|
|
222536
|
-
selectAllPartialFiles() {
|
|
222537
|
-
const allFileNames = this._viewModel.files.map(x => x.file.fileMeta.fileName);
|
|
222538
|
-
|
|
222539
|
-
this.onPartialFilesChange(allFileNames);
|
|
222540
|
-
}
|
|
222541
|
-
|
|
222542
|
-
selectRecentPartialFiles() {
|
|
222543
|
-
const recentFileNames = this.storeService.getState().dynamicSettings.recentFiles;
|
|
222544
|
-
|
|
222545
|
-
if (recentFileNames.length > 0) {
|
|
222546
|
-
this.onPartialFilesChange(recentFileNames);
|
|
222547
|
-
} else {
|
|
222548
|
-
this.selectAllPartialFiles();
|
|
222549
|
-
}
|
|
222550
|
-
}
|
|
222551
|
-
|
|
222552
|
-
selectZeroPartialFiles() {
|
|
222553
|
-
this.onPartialFilesChange([]);
|
|
222554
|
-
}
|
|
222555
|
-
|
|
222556
|
-
invertPartialFileSelection() {
|
|
222557
|
-
const invertedFileNames = [];
|
|
222558
|
-
const partialFileNames = new Set(this._viewModel.selectedFileNames.partial);
|
|
222559
|
-
|
|
222560
|
-
for (const {
|
|
222561
|
-
file: {
|
|
222562
|
-
fileMeta: {
|
|
222563
|
-
fileName
|
|
222564
|
-
}
|
|
222565
|
-
}
|
|
222566
|
-
} of this._viewModel.files) {
|
|
222567
|
-
if (!partialFileNames.has(fileName)) {
|
|
222568
|
-
invertedFileNames.push(fileName);
|
|
222569
|
-
}
|
|
222570
|
-
}
|
|
222571
|
-
|
|
222572
|
-
this.onPartialFilesChange(invertedFileNames);
|
|
222573
|
-
}
|
|
222574
|
-
|
|
222575
222643
|
getLastVisibleFileName() {
|
|
222576
|
-
if (this.lastRenderState === _model_files_files__WEBPACK_IMPORTED_MODULE_4__.FileSelectionState.Single) {
|
|
222577
|
-
return this._viewModel.selectedFileNames.single;
|
|
222578
|
-
}
|
|
222579
|
-
|
|
222580
222644
|
if (this.lastRenderState === _model_files_files__WEBPACK_IMPORTED_MODULE_4__.FileSelectionState.Partial) {
|
|
222581
222645
|
const visibleFileStates = (0,_model_files_files_helper__WEBPACK_IMPORTED_MODULE_3__.getVisibleFileStates)(this._viewModel.files);
|
|
222582
222646
|
|
|
@@ -222595,7 +222659,7 @@ class FilePanelController {
|
|
|
222595
222659
|
}
|
|
222596
222660
|
FilePanelController.$inject = ["$rootScope", "storeService"];
|
|
222597
222661
|
const filePanelComponent = {
|
|
222598
|
-
selector: "
|
|
222662
|
+
selector: "ccFilePanel",
|
|
222599
222663
|
template: __webpack_require__(/*! ./filePanel.component.html */ "./app/codeCharta/ui/filePanel/filePanel.component.html"),
|
|
222600
222664
|
controller: FilePanelController
|
|
222601
222665
|
};
|
|
@@ -222615,11 +222679,162 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
222615
222679
|
/* harmony import */ var _state_state_module__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../state/state.module */ "./app/codeCharta/state/state.module.ts");
|
|
222616
222680
|
/* harmony import */ var _dialog_dialog_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dialog/dialog.module */ "./app/codeCharta/ui/dialog/dialog.module.ts");
|
|
222617
222681
|
/* harmony import */ var _filePanel_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./filePanel.component */ "./app/codeCharta/ui/filePanel/filePanel.component.ts");
|
|
222682
|
+
/* harmony import */ var _angular_upgrade_static__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @angular/upgrade/static */ "./node_modules/@angular/upgrade/fesm2015/static.js");
|
|
222683
|
+
/* harmony import */ var _filePanelFileSelector_filePanelFileSelector_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./filePanelFileSelector/filePanelFileSelector.component */ "./app/codeCharta/ui/filePanel/filePanelFileSelector/filePanelFileSelector.component.ts");
|
|
222684
|
+
/* harmony import */ var _filePanelStateButtons_filePanelStateButtons_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./filePanelStateButtons/filePanelStateButtons.component */ "./app/codeCharta/ui/filePanel/filePanelStateButtons/filePanelStateButtons.component.ts");
|
|
222685
|
+
/* harmony import */ var _filePanelDeltaSelector_filePanelDeltaSelector_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./filePanelDeltaSelector/filePanelDeltaSelector.component */ "./app/codeCharta/ui/filePanel/filePanelDeltaSelector/filePanelDeltaSelector.component.ts");
|
|
222686
|
+
|
|
222687
|
+
|
|
222688
|
+
|
|
222689
|
+
|
|
222690
|
+
|
|
222691
|
+
|
|
222692
|
+
|
|
222693
|
+
|
|
222694
|
+
angular__WEBPACK_IMPORTED_MODULE_0___default().module("app.codeCharta.ui.filePanel", ["app.codeCharta.state"]).component(_filePanel_component__WEBPACK_IMPORTED_MODULE_3__.filePanelComponent.selector, _filePanel_component__WEBPACK_IMPORTED_MODULE_3__.filePanelComponent).directive("ccFilePanelFileSelector", (0,_angular_upgrade_static__WEBPACK_IMPORTED_MODULE_7__.downgradeComponent)({
|
|
222695
|
+
component: _filePanelFileSelector_filePanelFileSelector_component__WEBPACK_IMPORTED_MODULE_4__.FilePanelFileSelectorComponent
|
|
222696
|
+
})).directive("ccFilePanelStateButtons", (0,_angular_upgrade_static__WEBPACK_IMPORTED_MODULE_7__.downgradeComponent)({
|
|
222697
|
+
component: _filePanelStateButtons_filePanelStateButtons_component__WEBPACK_IMPORTED_MODULE_5__.FilePanelStateButtonsComponent
|
|
222698
|
+
})).directive("ccFilePanelDeltaSelector", (0,_angular_upgrade_static__WEBPACK_IMPORTED_MODULE_7__.downgradeComponent)({
|
|
222699
|
+
component: _filePanelDeltaSelector_filePanelDeltaSelector_component__WEBPACK_IMPORTED_MODULE_6__.FilePanelDeltaSelectorComponent
|
|
222700
|
+
}));
|
|
222701
|
+
|
|
222702
|
+
/***/ }),
|
|
222703
|
+
|
|
222704
|
+
/***/ "./app/codeCharta/ui/filePanel/filePanelDeltaSelector/filePanelDeltaSelector.component.ts":
|
|
222705
|
+
/*!************************************************************************************************!*\
|
|
222706
|
+
!*** ./app/codeCharta/ui/filePanel/filePanelDeltaSelector/filePanelDeltaSelector.component.ts ***!
|
|
222707
|
+
\************************************************************************************************/
|
|
222708
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
222709
|
+
|
|
222710
|
+
"use strict";
|
|
222711
|
+
__webpack_require__.r(__webpack_exports__);
|
|
222712
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
222713
|
+
/* harmony export */ "FilePanelDeltaSelectorComponent": () => (/* binding */ FilePanelDeltaSelectorComponent)
|
|
222714
|
+
/* harmony export */ });
|
|
222715
|
+
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js");
|
|
222716
|
+
var __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) {
|
|
222717
|
+
var c = arguments.length,
|
|
222718
|
+
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
|
|
222719
|
+
d;
|
|
222720
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
222721
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
222722
|
+
};
|
|
222723
|
+
|
|
222724
|
+
var __metadata = undefined && undefined.__metadata || function (k, v) {
|
|
222725
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
222726
|
+
};
|
|
222727
|
+
|
|
222728
|
+
|
|
222729
|
+
let FilePanelDeltaSelectorComponent = class FilePanelDeltaSelectorComponent {};
|
|
222730
|
+
|
|
222731
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input)(), __metadata("design:type", Array)], FilePanelDeltaSelectorComponent.prototype, "files", void 0);
|
|
222732
|
+
|
|
222733
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input)(), __metadata("design:type", String)], FilePanelDeltaSelectorComponent.prototype, "pictogramFirstColor", void 0);
|
|
222734
|
+
|
|
222735
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input)(), __metadata("design:type", String)], FilePanelDeltaSelectorComponent.prototype, "pictogramUpperColor", void 0);
|
|
222736
|
+
|
|
222737
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input)(), __metadata("design:type", String)], FilePanelDeltaSelectorComponent.prototype, "pictogramLowerColor", void 0);
|
|
222738
|
+
|
|
222739
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input)(), __metadata("design:type", Function)], FilePanelDeltaSelectorComponent.prototype, "handleDeltaReferenceFileChange", void 0);
|
|
222740
|
+
|
|
222741
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input)(), __metadata("design:type", Function)], FilePanelDeltaSelectorComponent.prototype, "handleDeltaComparisonFileChange", void 0);
|
|
222742
|
+
|
|
222743
|
+
FilePanelDeltaSelectorComponent = __decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Component)({
|
|
222744
|
+
selector: "cc-file-panel-delta-selector",
|
|
222745
|
+
template: __webpack_require__(/*! ./filePanelDeltaSelector.component.html */ "./app/codeCharta/ui/filePanel/filePanelDeltaSelector/filePanelDeltaSelector.component.html")
|
|
222746
|
+
})], FilePanelDeltaSelectorComponent);
|
|
222747
|
+
|
|
222748
|
+
|
|
222749
|
+
/***/ }),
|
|
222750
|
+
|
|
222751
|
+
/***/ "./app/codeCharta/ui/filePanel/filePanelFileSelector/filePanelFileSelector.component.ts":
|
|
222752
|
+
/*!**********************************************************************************************!*\
|
|
222753
|
+
!*** ./app/codeCharta/ui/filePanel/filePanelFileSelector/filePanelFileSelector.component.ts ***!
|
|
222754
|
+
\**********************************************************************************************/
|
|
222755
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
222756
|
+
|
|
222757
|
+
"use strict";
|
|
222758
|
+
__webpack_require__.r(__webpack_exports__);
|
|
222759
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
222760
|
+
/* harmony export */ "FilePanelFileSelectorComponent": () => (/* binding */ FilePanelFileSelectorComponent)
|
|
222761
|
+
/* harmony export */ });
|
|
222762
|
+
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js");
|
|
222763
|
+
var __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) {
|
|
222764
|
+
var c = arguments.length,
|
|
222765
|
+
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
|
|
222766
|
+
d;
|
|
222767
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
222768
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
222769
|
+
};
|
|
222770
|
+
|
|
222771
|
+
var __metadata = undefined && undefined.__metadata || function (k, v) {
|
|
222772
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
222773
|
+
};
|
|
222774
|
+
|
|
222775
|
+
|
|
222776
|
+
let FilePanelFileSelectorComponent = class FilePanelFileSelectorComponent {};
|
|
222777
|
+
|
|
222778
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input)(), __metadata("design:type", Array)], FilePanelFileSelectorComponent.prototype, "files", void 0);
|
|
222779
|
+
|
|
222780
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input)(), __metadata("design:type", Array)], FilePanelFileSelectorComponent.prototype, "selectedFileNames", void 0);
|
|
222781
|
+
|
|
222782
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input)(), __metadata("design:type", Function)], FilePanelFileSelectorComponent.prototype, "handleSelectedFilesChanged", void 0);
|
|
222783
|
+
|
|
222784
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input)(), __metadata("design:type", Function)], FilePanelFileSelectorComponent.prototype, "handleSelectAllPartialFiles", void 0);
|
|
222785
|
+
|
|
222786
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input)(), __metadata("design:type", Function)], FilePanelFileSelectorComponent.prototype, "handleSelectZeroPartialFiles", void 0);
|
|
222787
|
+
|
|
222788
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input)(), __metadata("design:type", Function)], FilePanelFileSelectorComponent.prototype, "handleInvertSelectedPartialFiles", void 0);
|
|
222789
|
+
|
|
222790
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input)(), __metadata("design:type", Function)], FilePanelFileSelectorComponent.prototype, "handleOnSelectionClosed", void 0);
|
|
222791
|
+
|
|
222792
|
+
FilePanelFileSelectorComponent = __decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Component)({
|
|
222793
|
+
selector: "cc-file-panel-file-selector",
|
|
222794
|
+
template: __webpack_require__(/*! ./filePanelFileSelector.component.html */ "./app/codeCharta/ui/filePanel/filePanelFileSelector/filePanelFileSelector.component.html")
|
|
222795
|
+
})], FilePanelFileSelectorComponent);
|
|
222796
|
+
|
|
222797
|
+
|
|
222798
|
+
/***/ }),
|
|
222799
|
+
|
|
222800
|
+
/***/ "./app/codeCharta/ui/filePanel/filePanelStateButtons/filePanelStateButtons.component.ts":
|
|
222801
|
+
/*!**********************************************************************************************!*\
|
|
222802
|
+
!*** ./app/codeCharta/ui/filePanel/filePanelStateButtons/filePanelStateButtons.component.ts ***!
|
|
222803
|
+
\**********************************************************************************************/
|
|
222804
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
222805
|
+
|
|
222806
|
+
"use strict";
|
|
222807
|
+
__webpack_require__.r(__webpack_exports__);
|
|
222808
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
222809
|
+
/* harmony export */ "FilePanelStateButtonsComponent": () => (/* binding */ FilePanelStateButtonsComponent)
|
|
222810
|
+
/* harmony export */ });
|
|
222811
|
+
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js");
|
|
222812
|
+
var __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) {
|
|
222813
|
+
var c = arguments.length,
|
|
222814
|
+
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
|
|
222815
|
+
d;
|
|
222816
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
222817
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
222818
|
+
};
|
|
222819
|
+
|
|
222820
|
+
var __metadata = undefined && undefined.__metadata || function (k, v) {
|
|
222821
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
222822
|
+
};
|
|
222823
|
+
|
|
222824
|
+
|
|
222825
|
+
let FilePanelStateButtonsComponent = class FilePanelStateButtonsComponent {};
|
|
222826
|
+
|
|
222827
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input)(), __metadata("design:type", Boolean)], FilePanelStateButtonsComponent.prototype, "isDeltaState", void 0);
|
|
222618
222828
|
|
|
222829
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input)(), __metadata("design:type", Function)], FilePanelStateButtonsComponent.prototype, "handleStandardButtonClicked", void 0);
|
|
222619
222830
|
|
|
222831
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Input)(), __metadata("design:type", Function)], FilePanelStateButtonsComponent.prototype, "handleDeltaButtonClicked", void 0);
|
|
222620
222832
|
|
|
222833
|
+
FilePanelStateButtonsComponent = __decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Component)({
|
|
222834
|
+
selector: "cc-file-panel-state-buttons",
|
|
222835
|
+
template: __webpack_require__(/*! ./filePanelStateButtons.component.html */ "./app/codeCharta/ui/filePanel/filePanelStateButtons/filePanelStateButtons.component.html")
|
|
222836
|
+
})], FilePanelStateButtonsComponent);
|
|
222621
222837
|
|
|
222622
|
-
angular__WEBPACK_IMPORTED_MODULE_0___default().module("app.codeCharta.ui.filePanel", ["app.codeCharta.state"]).component(_filePanel_component__WEBPACK_IMPORTED_MODULE_3__.filePanelComponent.selector, _filePanel_component__WEBPACK_IMPORTED_MODULE_3__.filePanelComponent);
|
|
222623
222838
|
|
|
222624
222839
|
/***/ }),
|
|
222625
222840
|
|
|
@@ -223874,11 +224089,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
223874
224089
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
223875
224090
|
/* harmony export */ "MapTreeViewLevelComponent": () => (/* binding */ MapTreeViewLevelComponent)
|
|
223876
224091
|
/* harmony export */ });
|
|
223877
|
-
/* harmony import */ var
|
|
224092
|
+
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js");
|
|
223878
224093
|
/* harmony import */ var _state_angular_redux_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../state/angular-redux/store */ "./app/codeCharta/state/angular-redux/store.ts");
|
|
223879
224094
|
/* harmony import */ var _state_store_appStatus_hoveredBuildingPath_hoveredBuildingPath_selector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../state/store/appStatus/hoveredBuildingPath/hoveredBuildingPath.selector */ "./app/codeCharta/state/store/appStatus/hoveredBuildingPath/hoveredBuildingPath.selector.ts");
|
|
223880
224095
|
/* harmony import */ var _state_store_appStatus_hoveredBuildingPath_hoveredBuildingPath_actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../state/store/appStatus/hoveredBuildingPath/hoveredBuildingPath.actions */ "./app/codeCharta/state/store/appStatus/hoveredBuildingPath/hoveredBuildingPath.actions.ts");
|
|
223881
|
-
/* harmony import */ var
|
|
224096
|
+
/* harmony import */ var _state_store_appStatus_rightClickedNodeData_rightClickedNodeData_actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../state/store/appStatus/rightClickedNodeData/rightClickedNodeData.actions */ "./app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.actions.ts");
|
|
224097
|
+
/* harmony import */ var _state_store_appStatus_rightClickedNodeData_rightClickedNodeData_selector__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../state/store/appStatus/rightClickedNodeData/rightClickedNodeData.selector */ "./app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.selector.ts");
|
|
223882
224098
|
var __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) {
|
|
223883
224099
|
var c = arguments.length,
|
|
223884
224100
|
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
|
|
@@ -223902,27 +224118,30 @@ var __param = undefined && undefined.__param || function (paramIndex, decorator)
|
|
|
223902
224118
|
|
|
223903
224119
|
|
|
223904
224120
|
|
|
224121
|
+
|
|
223905
224122
|
let MapTreeViewLevelComponent = class MapTreeViewLevelComponent {
|
|
223906
224123
|
constructor(store) {
|
|
223907
224124
|
this.store = store;
|
|
223908
224125
|
this.isOpen = false;
|
|
223909
|
-
this.isContextMenuOpenForNode = false;
|
|
223910
224126
|
|
|
223911
224127
|
this.openNodeContextMenu = $event => {
|
|
223912
224128
|
$event.stopPropagation();
|
|
223913
224129
|
$event.preventDefault();
|
|
223914
|
-
this.
|
|
223915
|
-
|
|
224130
|
+
this.store.dispatch((0,_state_store_appStatus_rightClickedNodeData_rightClickedNodeData_actions__WEBPACK_IMPORTED_MODULE_3__.setRightClickedNodeData)({
|
|
224131
|
+
nodeId: this.node.id,
|
|
224132
|
+
xPositionOfRightClickEvent: $event.clientX,
|
|
224133
|
+
yPositionOfRightClickEvent: $event.clientY
|
|
224134
|
+
}));
|
|
223916
224135
|
document.querySelector(".tree-element-0").addEventListener("scroll", this.scrollFunction);
|
|
223917
224136
|
};
|
|
223918
224137
|
|
|
223919
224138
|
this.scrollFunction = () => {
|
|
223920
|
-
|
|
224139
|
+
this.store.dispatch((0,_state_store_appStatus_rightClickedNodeData_rightClickedNodeData_actions__WEBPACK_IMPORTED_MODULE_3__.setRightClickedNodeData)(null));
|
|
223921
224140
|
document.querySelector(".tree-element-0").removeEventListener("scroll", this.scrollFunction);
|
|
223922
224141
|
};
|
|
223923
224142
|
|
|
223924
224143
|
this.hoveredBuildingPath$ = this.store.select(_state_store_appStatus_hoveredBuildingPath_hoveredBuildingPath_selector__WEBPACK_IMPORTED_MODULE_1__.hoveredBuildingPathSelector);
|
|
223925
|
-
|
|
224144
|
+
this.rightClickedNodeData$ = this.store.select(_state_store_appStatus_rightClickedNodeData_rightClickedNodeData_selector__WEBPACK_IMPORTED_MODULE_4__.rightClickedNodeDataSelector);
|
|
223926
224145
|
}
|
|
223927
224146
|
|
|
223928
224147
|
ngOnInit() {
|
|
@@ -223931,10 +224150,6 @@ let MapTreeViewLevelComponent = class MapTreeViewLevelComponent {
|
|
|
223931
224150
|
}
|
|
223932
224151
|
}
|
|
223933
224152
|
|
|
223934
|
-
onHideNodeContextMenu() {
|
|
223935
|
-
this.isContextMenuOpenForNode = false;
|
|
223936
|
-
}
|
|
223937
|
-
|
|
223938
224153
|
onMouseEnter() {
|
|
223939
224154
|
this.store.dispatch((0,_state_store_appStatus_hoveredBuildingPath_hoveredBuildingPath_actions__WEBPACK_IMPORTED_MODULE_2__.setHoveredBuildingPath)(this.node.path));
|
|
223940
224155
|
}
|
|
@@ -223949,14 +224164,14 @@ let MapTreeViewLevelComponent = class MapTreeViewLevelComponent {
|
|
|
223949
224164
|
|
|
223950
224165
|
};
|
|
223951
224166
|
|
|
223952
|
-
__decorate([(0,
|
|
224167
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.Input)(), __metadata("design:type", Object)], MapTreeViewLevelComponent.prototype, "node", void 0);
|
|
223953
224168
|
|
|
223954
|
-
__decorate([(0,
|
|
224169
|
+
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.Input)(), __metadata("design:type", Number)], MapTreeViewLevelComponent.prototype, "depth", void 0);
|
|
223955
224170
|
|
|
223956
|
-
MapTreeViewLevelComponent = __decorate([(0,
|
|
224171
|
+
MapTreeViewLevelComponent = __decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.Component)({
|
|
223957
224172
|
selector: "cc-map-tree-view-level",
|
|
223958
224173
|
template: __webpack_require__(/*! ./mapTreeViewLevel.component.html */ "./app/codeCharta/ui/mapTreeView/mapTreeViewLevel/mapTreeViewLevel.component.html")
|
|
223959
|
-
}), __param(0, (0,
|
|
224174
|
+
}), __param(0, (0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.Inject)(_state_angular_redux_store__WEBPACK_IMPORTED_MODULE_0__.Store)), __metadata("design:paramtypes", [_state_angular_redux_store__WEBPACK_IMPORTED_MODULE_0__.Store])], MapTreeViewLevelComponent);
|
|
223960
224175
|
|
|
223961
224176
|
|
|
223962
224177
|
/***/ }),
|
|
@@ -224813,19 +225028,23 @@ IsNodeFocusedPipe = __decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_0__.Pi
|
|
|
224813
225028
|
|
|
224814
225029
|
/***/ }),
|
|
224815
225030
|
|
|
224816
|
-
/***/ "./app/codeCharta/ui/nodeContextMenu/
|
|
224817
|
-
|
|
224818
|
-
!*** ./app/codeCharta/ui/nodeContextMenu/
|
|
224819
|
-
|
|
225031
|
+
/***/ "./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.ts":
|
|
225032
|
+
/*!************************************************************************************!*\
|
|
225033
|
+
!*** ./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.ts ***!
|
|
225034
|
+
\************************************************************************************/
|
|
224820
225035
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
224821
225036
|
|
|
224822
225037
|
"use strict";
|
|
224823
225038
|
__webpack_require__.r(__webpack_exports__);
|
|
224824
225039
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
224825
|
-
/* harmony export */ "
|
|
225040
|
+
/* harmony export */ "MarkFolderRowComponent": () => (/* binding */ MarkFolderRowComponent)
|
|
224826
225041
|
/* harmony export */ });
|
|
224827
|
-
/* harmony import */ var
|
|
224828
|
-
/* harmony import */ var
|
|
225042
|
+
/* harmony import */ var _markFolderRow_component_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./markFolderRow.component.scss */ "./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.scss");
|
|
225043
|
+
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js");
|
|
225044
|
+
/* harmony import */ var _state_angular_redux_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../state/angular-redux/store */ "./app/codeCharta/state/angular-redux/store.ts");
|
|
225045
|
+
/* harmony import */ var _state_store_fileSettings_markedPackages_markedPackages_actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../state/store/fileSettings/markedPackages/markedPackages.actions */ "./app/codeCharta/state/store/fileSettings/markedPackages/markedPackages.actions.ts");
|
|
225046
|
+
/* harmony import */ var _selectors_markFolderItems_selector__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./selectors/markFolderItems.selector */ "./app/codeCharta/ui/nodeContextMenu/markFolderRow/selectors/markFolderItems.selector.ts");
|
|
225047
|
+
/* harmony import */ var _selectors_rightClickedNode_selector__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./selectors/rightClickedNode.selector */ "./app/codeCharta/ui/nodeContextMenu/markFolderRow/selectors/rightClickedNode.selector.ts");
|
|
224829
225048
|
var __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) {
|
|
224830
225049
|
var c = arguments.length,
|
|
224831
225050
|
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
|
|
@@ -224838,35 +225057,62 @@ var __metadata = undefined && undefined.__metadata || function (k, v) {
|
|
|
224838
225057
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
224839
225058
|
};
|
|
224840
225059
|
|
|
225060
|
+
var __param = undefined && undefined.__param || function (paramIndex, decorator) {
|
|
225061
|
+
return function (target, key) {
|
|
225062
|
+
decorator(target, key, paramIndex);
|
|
225063
|
+
};
|
|
225064
|
+
};
|
|
225065
|
+
|
|
225066
|
+
|
|
225067
|
+
|
|
224841
225068
|
|
|
224842
225069
|
|
|
224843
|
-
let MarkFolderColorPickerComponent = class MarkFolderColorPickerComponent {};
|
|
224844
225070
|
|
|
224845
|
-
__decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_1__.Input)(), __metadata("design:type", Function)], MarkFolderColorPickerComponent.prototype, "markFolder", void 0);
|
|
224846
225071
|
|
|
224847
|
-
|
|
224848
|
-
|
|
224849
|
-
|
|
224850
|
-
|
|
225072
|
+
let MarkFolderRowComponent = class MarkFolderRowComponent {
|
|
225073
|
+
constructor(store) {
|
|
225074
|
+
this.store = store;
|
|
225075
|
+
this.markFolderItems$ = store.select(_selectors_markFolderItems_selector__WEBPACK_IMPORTED_MODULE_3__.markFolderItemsSelector);
|
|
225076
|
+
this.node$ = store.select(_selectors_rightClickedNode_selector__WEBPACK_IMPORTED_MODULE_4__.rightClickedNodeSelector);
|
|
225077
|
+
}
|
|
225078
|
+
|
|
225079
|
+
markFolder(path, color) {
|
|
225080
|
+
this.store.dispatch((0,_state_store_fileSettings_markedPackages_markedPackages_actions__WEBPACK_IMPORTED_MODULE_2__.markPackages)([{
|
|
225081
|
+
path,
|
|
225082
|
+
color
|
|
225083
|
+
}]));
|
|
225084
|
+
}
|
|
225085
|
+
|
|
225086
|
+
unmarkFolder(path) {
|
|
225087
|
+
this.store.dispatch((0,_state_store_fileSettings_markedPackages_markedPackages_actions__WEBPACK_IMPORTED_MODULE_2__.unmarkPackage)({
|
|
225088
|
+
path
|
|
225089
|
+
}));
|
|
225090
|
+
}
|
|
225091
|
+
|
|
225092
|
+
};
|
|
225093
|
+
MarkFolderRowComponent = __decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.Component)({
|
|
225094
|
+
selector: "cc-mark-folder-row",
|
|
225095
|
+
template: __webpack_require__(/*! ./markFolderRow.component.html */ "./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.html")
|
|
225096
|
+
}), __param(0, (0,_angular_core__WEBPACK_IMPORTED_MODULE_5__.Inject)(_state_angular_redux_store__WEBPACK_IMPORTED_MODULE_1__.Store)), __metadata("design:paramtypes", [_state_angular_redux_store__WEBPACK_IMPORTED_MODULE_1__.Store])], MarkFolderRowComponent);
|
|
224851
225097
|
|
|
224852
225098
|
|
|
224853
225099
|
/***/ }),
|
|
224854
225100
|
|
|
224855
|
-
/***/ "./app/codeCharta/ui/nodeContextMenu/
|
|
224856
|
-
|
|
224857
|
-
!*** ./app/codeCharta/ui/nodeContextMenu/
|
|
224858
|
-
|
|
225101
|
+
/***/ "./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.module.ts":
|
|
225102
|
+
/*!*********************************************************************************!*\
|
|
225103
|
+
!*** ./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.module.ts ***!
|
|
225104
|
+
\*********************************************************************************/
|
|
224859
225105
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
224860
225106
|
|
|
224861
225107
|
"use strict";
|
|
224862
225108
|
__webpack_require__.r(__webpack_exports__);
|
|
224863
225109
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
224864
|
-
/* harmony export */ "
|
|
225110
|
+
/* harmony export */ "MarkFolderRowModule": () => (/* binding */ MarkFolderRowModule)
|
|
224865
225111
|
/* harmony export */ });
|
|
224866
225112
|
/* harmony import */ var _angular_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @angular/common */ "./node_modules/@angular/common/fesm2015/common.js");
|
|
224867
225113
|
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js");
|
|
224868
225114
|
/* harmony import */ var _colorPicker_colorPicker_module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../colorPicker/colorPicker.module */ "./app/codeCharta/ui/colorPicker/colorPicker.module.ts");
|
|
224869
|
-
/* harmony import */ var
|
|
225115
|
+
/* harmony import */ var _markFolderRow_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./markFolderRow.component */ "./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.ts");
|
|
224870
225116
|
var __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) {
|
|
224871
225117
|
var c = arguments.length,
|
|
224872
225118
|
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
|
|
@@ -224879,14 +225125,75 @@ var __decorate = undefined && undefined.__decorate || function (decorators, targ
|
|
|
224879
225125
|
|
|
224880
225126
|
|
|
224881
225127
|
|
|
224882
|
-
let
|
|
224883
|
-
|
|
225128
|
+
let MarkFolderRowModule = class MarkFolderRowModule {};
|
|
225129
|
+
MarkFolderRowModule = __decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_2__.NgModule)({
|
|
224884
225130
|
imports: [_angular_common__WEBPACK_IMPORTED_MODULE_3__.CommonModule, _colorPicker_colorPicker_module__WEBPACK_IMPORTED_MODULE_0__.ColorPickerModule],
|
|
224885
|
-
declarations: [
|
|
224886
|
-
exports: [
|
|
224887
|
-
})],
|
|
225131
|
+
declarations: [_markFolderRow_component__WEBPACK_IMPORTED_MODULE_1__.MarkFolderRowComponent],
|
|
225132
|
+
exports: [_markFolderRow_component__WEBPACK_IMPORTED_MODULE_1__.MarkFolderRowComponent]
|
|
225133
|
+
})], MarkFolderRowModule);
|
|
224888
225134
|
|
|
224889
225135
|
|
|
225136
|
+
/***/ }),
|
|
225137
|
+
|
|
225138
|
+
/***/ "./app/codeCharta/ui/nodeContextMenu/markFolderRow/selectors/markFolderItems.selector.ts":
|
|
225139
|
+
/*!***********************************************************************************************!*\
|
|
225140
|
+
!*** ./app/codeCharta/ui/nodeContextMenu/markFolderRow/selectors/markFolderItems.selector.ts ***!
|
|
225141
|
+
\***********************************************************************************************/
|
|
225142
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
225143
|
+
|
|
225144
|
+
"use strict";
|
|
225145
|
+
__webpack_require__.r(__webpack_exports__);
|
|
225146
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
225147
|
+
/* harmony export */ "_getMarkFolderItems": () => (/* binding */ _getMarkFolderItems),
|
|
225148
|
+
/* harmony export */ "markFolderItemsSelector": () => (/* binding */ markFolderItemsSelector)
|
|
225149
|
+
/* harmony export */ });
|
|
225150
|
+
/* harmony import */ var _state_angular_redux_createSelector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../state/angular-redux/createSelector */ "./app/codeCharta/state/angular-redux/createSelector.ts");
|
|
225151
|
+
/* harmony import */ var _state_store_appSettings_mapColors_mapColors_selector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../state/store/appSettings/mapColors/mapColors.selector */ "./app/codeCharta/state/store/appSettings/mapColors/mapColors.selector.ts");
|
|
225152
|
+
/* harmony import */ var _state_store_fileSettings_markedPackages_markedPackages_selector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../state/store/fileSettings/markedPackages/markedPackages.selector */ "./app/codeCharta/state/store/fileSettings/markedPackages/markedPackages.selector.ts");
|
|
225153
|
+
/* harmony import */ var _state_store_fileSettings_markedPackages_util_findIndexOfMarkedPackageOrParent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../state/store/fileSettings/markedPackages/util/findIndexOfMarkedPackageOrParent */ "./app/codeCharta/state/store/fileSettings/markedPackages/util/findIndexOfMarkedPackageOrParent.ts");
|
|
225154
|
+
/* harmony import */ var _rightClickedNode_selector__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./rightClickedNode.selector */ "./app/codeCharta/ui/nodeContextMenu/markFolderRow/selectors/rightClickedNode.selector.ts");
|
|
225155
|
+
|
|
225156
|
+
|
|
225157
|
+
|
|
225158
|
+
|
|
225159
|
+
|
|
225160
|
+
const markingColorsSelector = (0,_state_angular_redux_createSelector__WEBPACK_IMPORTED_MODULE_0__.createSelector)([_state_store_appSettings_mapColors_mapColors_selector__WEBPACK_IMPORTED_MODULE_1__.mapColorsSelector], mapColors => mapColors.markingColors);
|
|
225161
|
+
const _getMarkFolderItems = (node, markingColors, markedPackages) => {
|
|
225162
|
+
if (node === null) return markingColors.map(color => ({
|
|
225163
|
+
color,
|
|
225164
|
+
isMarked: false
|
|
225165
|
+
}));
|
|
225166
|
+
const nodeIndexWithinMarkedPackages = (0,_state_store_fileSettings_markedPackages_util_findIndexOfMarkedPackageOrParent__WEBPACK_IMPORTED_MODULE_3__.findIndexOfMarkedPackageOrParent)(markedPackages, node.path);
|
|
225167
|
+
return markingColors.map(color => ({
|
|
225168
|
+
color,
|
|
225169
|
+
isMarked: nodeIndexWithinMarkedPackages !== -1 && color === markedPackages[nodeIndexWithinMarkedPackages].color
|
|
225170
|
+
}));
|
|
225171
|
+
};
|
|
225172
|
+
const markFolderItemsSelector = (0,_state_angular_redux_createSelector__WEBPACK_IMPORTED_MODULE_0__.createSelector)([_rightClickedNode_selector__WEBPACK_IMPORTED_MODULE_4__.rightClickedNodeSelector, markingColorsSelector, _state_store_fileSettings_markedPackages_markedPackages_selector__WEBPACK_IMPORTED_MODULE_2__.markedPackagesSelector], _getMarkFolderItems);
|
|
225173
|
+
|
|
225174
|
+
/***/ }),
|
|
225175
|
+
|
|
225176
|
+
/***/ "./app/codeCharta/ui/nodeContextMenu/markFolderRow/selectors/rightClickedNode.selector.ts":
|
|
225177
|
+
/*!************************************************************************************************!*\
|
|
225178
|
+
!*** ./app/codeCharta/ui/nodeContextMenu/markFolderRow/selectors/rightClickedNode.selector.ts ***!
|
|
225179
|
+
\************************************************************************************************/
|
|
225180
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
225181
|
+
|
|
225182
|
+
"use strict";
|
|
225183
|
+
__webpack_require__.r(__webpack_exports__);
|
|
225184
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
225185
|
+
/* harmony export */ "_getNode": () => (/* binding */ _getNode),
|
|
225186
|
+
/* harmony export */ "rightClickedNodeSelector": () => (/* binding */ rightClickedNodeSelector)
|
|
225187
|
+
/* harmony export */ });
|
|
225188
|
+
/* harmony import */ var _state_angular_redux_createSelector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../state/angular-redux/createSelector */ "./app/codeCharta/state/angular-redux/createSelector.ts");
|
|
225189
|
+
/* harmony import */ var _state_store_appStatus_rightClickedNodeData_rightClickedNodeData_selector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../state/store/appStatus/rightClickedNodeData/rightClickedNodeData.selector */ "./app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.selector.ts");
|
|
225190
|
+
/* harmony import */ var _state_store_lookUp_idToBuilding_idToBuilding_selector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../state/store/lookUp/idToBuilding/idToBuilding.selector */ "./app/codeCharta/state/store/lookUp/idToBuilding/idToBuilding.selector.ts");
|
|
225191
|
+
|
|
225192
|
+
|
|
225193
|
+
|
|
225194
|
+
const _getNode = (idToBuilding, rightClickedNodeData) => rightClickedNodeData !== null ? idToBuilding.get(rightClickedNodeData.nodeId).node : null;
|
|
225195
|
+
const rightClickedNodeSelector = (0,_state_angular_redux_createSelector__WEBPACK_IMPORTED_MODULE_0__.createSelector)([_state_store_lookUp_idToBuilding_idToBuilding_selector__WEBPACK_IMPORTED_MODULE_2__.idToBuildingSelector, _state_store_appStatus_rightClickedNodeData_rightClickedNodeData_selector__WEBPACK_IMPORTED_MODULE_1__.rightClickedNodeDataSelector], _getNode);
|
|
225196
|
+
|
|
224890
225197
|
/***/ }),
|
|
224891
225198
|
|
|
224892
225199
|
/***/ "./app/codeCharta/ui/nodeContextMenu/nodeContextMenu.component.ts":
|
|
@@ -224907,11 +225214,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
224907
225214
|
/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_1__);
|
|
224908
225215
|
/* harmony import */ var _codeCharta_model__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../codeCharta.model */ "./app/codeCharta/codeCharta.model.ts");
|
|
224909
225216
|
/* harmony import */ var _state_store_fileSettings_blacklist_blacklist_actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../state/store/fileSettings/blacklist/blacklist.actions */ "./app/codeCharta/state/store/fileSettings/blacklist/blacklist.actions.ts");
|
|
224910
|
-
/* harmony import */ var
|
|
224911
|
-
/* harmony import */ var
|
|
224912
|
-
/* harmony import */ var
|
|
224913
|
-
/* harmony import */ var
|
|
224914
|
-
/* harmony import */ var
|
|
225217
|
+
/* harmony import */ var _util_codeMapHelper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/codeMapHelper */ "./app/codeCharta/util/codeMapHelper.ts");
|
|
225218
|
+
/* harmony import */ var _util_fileValidator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/fileValidator */ "./app/codeCharta/util/fileValidator.ts");
|
|
225219
|
+
/* harmony import */ var _state_store_store__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../state/store/store */ "./app/codeCharta/state/store/store.ts");
|
|
225220
|
+
/* harmony import */ var _state_store_appStatus_rightClickedNodeData_rightClickedNodeData_selector__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../state/store/appStatus/rightClickedNodeData/rightClickedNodeData.selector */ "./app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.selector.ts");
|
|
225221
|
+
/* harmony import */ var _state_store_appStatus_rightClickedNodeData_rightClickedNodeData_actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../state/store/appStatus/rightClickedNodeData/rightClickedNodeData.actions */ "./app/codeCharta/state/store/appStatus/rightClickedNodeData/rightClickedNodeData.actions.ts");
|
|
224915
225222
|
|
|
224916
225223
|
|
|
224917
225224
|
|
|
@@ -224941,82 +225248,62 @@ class NodeContextMenuController {
|
|
|
224941
225248
|
this.blacklistService = blacklistService;
|
|
224942
225249
|
this._viewModel = {
|
|
224943
225250
|
codeMapNode: null,
|
|
224944
|
-
showNodeContextMenu: false,
|
|
224945
|
-
markingColors: null,
|
|
224946
225251
|
nodePath: "",
|
|
224947
225252
|
lastPartOfNodePath: ""
|
|
224948
225253
|
};
|
|
224949
225254
|
|
|
224950
|
-
this.onBuildingRightClicked = ({
|
|
224951
|
-
detail: {
|
|
224952
|
-
building,
|
|
224953
|
-
x,
|
|
224954
|
-
y
|
|
224955
|
-
}
|
|
224956
|
-
}) => {
|
|
224957
|
-
const nodeType = building.node.isLeaf ? _codeCharta_model__WEBPACK_IMPORTED_MODULE_2__.NodeType.FILE : _codeCharta_model__WEBPACK_IMPORTED_MODULE_2__.NodeType.FOLDER;
|
|
224958
|
-
this.onShowNodeContextMenu(building.node.path, nodeType, x, y);
|
|
224959
|
-
};
|
|
224960
|
-
|
|
224961
225255
|
this.onBodyLeftClickHideNodeContextMenu = mouseEvent => {
|
|
224962
225256
|
if (this.isEventFromColorPicker(mouseEvent)) return;
|
|
224963
|
-
this.
|
|
225257
|
+
this.hideNodeContextMenu();
|
|
224964
225258
|
};
|
|
224965
225259
|
|
|
224966
225260
|
this.onBodyRightClickHideNodeContextMenu = event => {
|
|
224967
225261
|
if (event.button === ClickType.RightClick) {
|
|
224968
|
-
this.
|
|
225262
|
+
this.hideNodeContextMenu();
|
|
224969
225263
|
}
|
|
224970
225264
|
};
|
|
224971
225265
|
|
|
224972
225266
|
this.onMapWheelHideNodeContextMenu = () => {
|
|
224973
|
-
this.
|
|
224974
|
-
};
|
|
224975
|
-
|
|
224976
|
-
this.hideContextMenu = () => {
|
|
224977
|
-
NodeContextMenuController.broadcastHideEvent(this.$rootScope);
|
|
225267
|
+
this.hideNodeContextMenu();
|
|
224978
225268
|
};
|
|
224979
225269
|
|
|
224980
|
-
this.
|
|
224981
|
-
this.storeService.dispatch((0,
|
|
224982
|
-
|
|
224983
|
-
|
|
224984
|
-
|
|
225270
|
+
this.hideNodeContextMenu = () => {
|
|
225271
|
+
this.storeService.dispatch((0,_state_store_appStatus_rightClickedNodeData_rightClickedNodeData_actions__WEBPACK_IMPORTED_MODULE_8__.setRightClickedNodeData)(null));
|
|
225272
|
+
document.body.removeEventListener("click", this.onBodyLeftClickHideNodeContextMenu, true);
|
|
225273
|
+
document.body.removeEventListener("mousedown", this.onBodyRightClickHideNodeContextMenu, true);
|
|
225274
|
+
document.getElementById("codeMap").removeEventListener("wheel", this.onMapWheelHideNodeContextMenu, true);
|
|
224985
225275
|
};
|
|
224986
225276
|
|
|
224987
|
-
|
|
224988
|
-
|
|
224989
|
-
|
|
224990
|
-
|
|
224991
|
-
|
|
224992
|
-
}
|
|
225277
|
+
_state_store_store__WEBPACK_IMPORTED_MODULE_6__.Store.store.subscribe(() => {
|
|
225278
|
+
const state = _state_store_store__WEBPACK_IMPORTED_MODULE_6__.Store.store.getState();
|
|
225279
|
+
const rightClickedNodeData = (0,_state_store_appStatus_rightClickedNodeData_rightClickedNodeData_selector__WEBPACK_IMPORTED_MODULE_7__.rightClickedNodeDataSelector)(state);
|
|
225280
|
+
if (this.rightClickedNodeData === rightClickedNodeData) return;
|
|
225281
|
+
this.rightClickedNodeData = rightClickedNodeData;
|
|
224993
225282
|
|
|
224994
|
-
|
|
224995
|
-
|
|
225283
|
+
if (rightClickedNodeData === null) {
|
|
225284
|
+
this.hideNodeContextMenu();
|
|
225285
|
+
} else {
|
|
225286
|
+
const rightClickedNode = state.lookUp.idToNode.get(rightClickedNodeData.nodeId);
|
|
225287
|
+
const nodeType = (0,_util_codeMapHelper__WEBPACK_IMPORTED_MODULE_4__.isLeaf)(rightClickedNode) ? _codeCharta_model__WEBPACK_IMPORTED_MODULE_2__.NodeType.FILE : _codeCharta_model__WEBPACK_IMPORTED_MODULE_2__.NodeType.FOLDER;
|
|
225288
|
+
this.showNodeContextMenu(rightClickedNode.path, nodeType, rightClickedNodeData.xPositionOfRightClickEvent, rightClickedNodeData.yPositionOfRightClickEvent);
|
|
225289
|
+
}
|
|
225290
|
+
});
|
|
224996
225291
|
}
|
|
224997
225292
|
|
|
224998
|
-
|
|
224999
|
-
this._viewModel.codeMapNode = (0,
|
|
225293
|
+
showNodeContextMenu(path, nodeType, mouseX, mouseY) {
|
|
225294
|
+
this._viewModel.codeMapNode = (0,_util_codeMapHelper__WEBPACK_IMPORTED_MODULE_4__.getCodeMapNodeFromPath)(path, nodeType, this.codeMapPreRenderService.getRenderMap());
|
|
225000
225295
|
this._viewModel.nodePath = path;
|
|
225001
225296
|
this._viewModel.lastPartOfNodePath = `${path.lastIndexOf("/") === 0 ? "" : "..."}${path.slice(path.lastIndexOf("/"))}`;
|
|
225002
|
-
this._viewModel.showNodeContextMenu = true;
|
|
225003
225297
|
const {
|
|
225004
225298
|
x,
|
|
225005
225299
|
y
|
|
225006
225300
|
} = this.calculatePosition(mouseX, mouseY);
|
|
225007
225301
|
this.setPosition(x, y);
|
|
225008
|
-
document.body.addEventListener("click", this.onBodyLeftClickHideNodeContextMenu,
|
|
225302
|
+
document.body.addEventListener("click", this.onBodyLeftClickHideNodeContextMenu, false);
|
|
225009
225303
|
document.body.addEventListener("mousedown", this.onBodyRightClickHideNodeContextMenu, true);
|
|
225010
225304
|
document.getElementById("codeMap").addEventListener("wheel", this.onMapWheelHideNodeContextMenu, true);
|
|
225011
225305
|
}
|
|
225012
225306
|
|
|
225013
|
-
onHideNodeContextMenu() {
|
|
225014
|
-
this._viewModel.showNodeContextMenu = false;
|
|
225015
|
-
document.body.removeEventListener("click", this.onBodyLeftClickHideNodeContextMenu, true);
|
|
225016
|
-
document.body.removeEventListener("mousedown", this.onBodyRightClickHideNodeContextMenu, true);
|
|
225017
|
-
document.getElementById("codeMap").removeEventListener("wheel", this.onMapWheelHideNodeContextMenu, true);
|
|
225018
|
-
}
|
|
225019
|
-
|
|
225020
225307
|
flattenNode() {
|
|
225021
225308
|
const codeMapNode = this._viewModel.codeMapNode;
|
|
225022
225309
|
const blacklistItem = {
|
|
@@ -225046,7 +225333,7 @@ class NodeContextMenuController {
|
|
|
225046
225333
|
};
|
|
225047
225334
|
|
|
225048
225335
|
if (this.blacklistService.resultsInEmptyMap([blacklistItem])) {
|
|
225049
|
-
this.dialogService.showErrorDialog(
|
|
225336
|
+
this.dialogService.showErrorDialog(_util_fileValidator__WEBPACK_IMPORTED_MODULE_5__.ERROR_MESSAGES.blacklistError, "Blacklist Error");
|
|
225050
225337
|
} else {
|
|
225051
225338
|
this.storeService.dispatch((0,_state_store_fileSettings_blacklist_blacklist_actions__WEBPACK_IMPORTED_MODULE_3__.addBlacklistItem)(blacklistItem));
|
|
225052
225339
|
}
|
|
@@ -225054,24 +225341,12 @@ class NodeContextMenuController {
|
|
|
225054
225341
|
|
|
225055
225342
|
addNodeToConstantHighlight() {
|
|
225056
225343
|
this.threeSceneService.addNodeAndChildrenToConstantHighlight(this._viewModel.codeMapNode);
|
|
225057
|
-
this.
|
|
225344
|
+
this.hideNodeContextMenu();
|
|
225058
225345
|
}
|
|
225059
225346
|
|
|
225060
225347
|
removeNodeFromConstantHighlight() {
|
|
225061
225348
|
this.threeSceneService.removeNodeAndChildrenFromConstantHighlight(this._viewModel.codeMapNode);
|
|
225062
|
-
this.
|
|
225063
|
-
}
|
|
225064
|
-
|
|
225065
|
-
clickColor(color) {
|
|
225066
|
-
if (this.isNodeOrParentMarked(color)) {
|
|
225067
|
-
this.unmarkFolder();
|
|
225068
|
-
} else {
|
|
225069
|
-
this.markFolder(color);
|
|
225070
|
-
}
|
|
225071
|
-
}
|
|
225072
|
-
|
|
225073
|
-
unmarkFolder() {
|
|
225074
|
-
this.storeService.dispatch((0,_state_store_fileSettings_markedPackages_markedPackages_actions__WEBPACK_IMPORTED_MODULE_8__.unmarkPackage)(this._viewModel.codeMapNode));
|
|
225349
|
+
this.hideNodeContextMenu();
|
|
225075
225350
|
}
|
|
225076
225351
|
|
|
225077
225352
|
calculatePosition(mouseX, mouseY) {
|
|
@@ -225088,42 +225363,9 @@ class NodeContextMenuController {
|
|
|
225088
225363
|
angular__WEBPACK_IMPORTED_MODULE_1___default().element(this.$element[0].children[0]).css("left", `${x}px`);
|
|
225089
225364
|
}
|
|
225090
225365
|
|
|
225091
|
-
isNodeOrParentMarked(color) {
|
|
225092
|
-
if (!color || !this._viewModel.codeMapNode) {
|
|
225093
|
-
return false;
|
|
225094
|
-
}
|
|
225095
|
-
|
|
225096
|
-
if (this.isNodeMarked()) {
|
|
225097
|
-
return this.packageMatchesColor(color);
|
|
225098
|
-
}
|
|
225099
|
-
|
|
225100
|
-
return this.packageMatchesColorOfParentMP(color);
|
|
225101
|
-
}
|
|
225102
|
-
|
|
225103
225366
|
isEventFromColorPicker(mouseEvent) {
|
|
225104
225367
|
const elements = mouseEvent.composedPath();
|
|
225105
|
-
return elements.some(element => (element === null || element === void 0 ? void 0 : element.nodeName) === "CC-
|
|
225106
|
-
}
|
|
225107
|
-
|
|
225108
|
-
isNodeMarked() {
|
|
225109
|
-
return this.storeService.getState().fileSettings.markedPackages.some(mp => mp.path === this._viewModel.codeMapNode.path);
|
|
225110
|
-
}
|
|
225111
|
-
|
|
225112
|
-
packageMatchesColor(color) {
|
|
225113
|
-
return this.storeService.getState().fileSettings.markedPackages.some(mp => mp.path === this._viewModel.codeMapNode.path && mp.color === color);
|
|
225114
|
-
}
|
|
225115
|
-
|
|
225116
|
-
packageMatchesColorOfParentMP(color) {
|
|
225117
|
-
const {
|
|
225118
|
-
markedPackages
|
|
225119
|
-
} = this.storeService.getState().fileSettings;
|
|
225120
|
-
const index = (0,_state_store_fileSettings_markedPackages_util_findIndexOfMarkedPackageOrParent__WEBPACK_IMPORTED_MODULE_7__.findIndexOfMarkedPackageOrParent)(markedPackages, this._viewModel.codeMapNode.path);
|
|
225121
|
-
|
|
225122
|
-
if (index === -1) {
|
|
225123
|
-
return false;
|
|
225124
|
-
}
|
|
225125
|
-
|
|
225126
|
-
return this.storeService.getState().fileSettings.markedPackages[index].color === color;
|
|
225368
|
+
return elements.some(element => (element === null || element === void 0 ? void 0 : element.nodeName) === "CC-COLOR-PICKER" || (element === null || element === void 0 ? void 0 : element.nodeName) === "COLOR-CHROME");
|
|
225127
225369
|
}
|
|
225128
225370
|
|
|
225129
225371
|
isNodeConstantlyHighlighted() {
|
|
@@ -225147,38 +225389,8 @@ class NodeContextMenuController {
|
|
|
225147
225389
|
return ((_b = (_a = this._viewModel.codeMapNode) === null || _a === void 0 ? void 0 : _a.children) === null || _b === void 0 ? void 0 : _b.length) > 0;
|
|
225148
225390
|
}
|
|
225149
225391
|
|
|
225150
|
-
static broadcastShowEvent($rootScope, path, type, x, y) {
|
|
225151
|
-
const rootScope = $rootScope || NodeContextMenuController.instance.$rootScope;
|
|
225152
|
-
rootScope.$broadcast(NodeContextMenuController.SHOW_NODE_CONTEXT_MENU_EVENT, {
|
|
225153
|
-
path,
|
|
225154
|
-
type,
|
|
225155
|
-
x,
|
|
225156
|
-
y
|
|
225157
|
-
});
|
|
225158
|
-
}
|
|
225159
|
-
|
|
225160
|
-
static broadcastHideEvent($rootScope) {
|
|
225161
|
-
const rootScope = $rootScope || NodeContextMenuController.instance.$rootScope;
|
|
225162
|
-
rootScope.$broadcast(NodeContextMenuController.HIDE_NODE_CONTEXT_MENU_EVENT);
|
|
225163
|
-
}
|
|
225164
|
-
|
|
225165
|
-
static subscribeToShowNodeContextMenu($rootScope, subscriber) {
|
|
225166
|
-
$rootScope.$on(NodeContextMenuController.SHOW_NODE_CONTEXT_MENU_EVENT, (_event, data) => {
|
|
225167
|
-
subscriber.onShowNodeContextMenu(data.path, data.type, data.x, data.y);
|
|
225168
|
-
});
|
|
225169
|
-
}
|
|
225170
|
-
|
|
225171
|
-
static subscribeToHideNodeContextMenu($rootScope, subscriber) {
|
|
225172
|
-
const rootScope = $rootScope || NodeContextMenuController.instance.$rootScope;
|
|
225173
|
-
rootScope.$on(NodeContextMenuController.HIDE_NODE_CONTEXT_MENU_EVENT, () => {
|
|
225174
|
-
subscriber.onHideNodeContextMenu();
|
|
225175
|
-
});
|
|
225176
|
-
}
|
|
225177
|
-
|
|
225178
225392
|
}
|
|
225179
225393
|
NodeContextMenuController.$inject = ["$element", "$window", "$rootScope", "storeService", "codeMapPreRenderService", "threeSceneService", "dialogService", "blacklistService"];
|
|
225180
|
-
NodeContextMenuController.SHOW_NODE_CONTEXT_MENU_EVENT = "show-node-context-menu";
|
|
225181
|
-
NodeContextMenuController.HIDE_NODE_CONTEXT_MENU_EVENT = "hide-node-context-menu";
|
|
225182
225394
|
const nodeContextMenuComponent = {
|
|
225183
225395
|
selector: "nodeContextMenuComponent",
|
|
225184
225396
|
template: __webpack_require__(/*! ./nodeContextMenu.component.html */ "./app/codeCharta/ui/nodeContextMenu/nodeContextMenu.component.html"),
|
|
@@ -225201,8 +225413,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
225201
225413
|
/* harmony import */ var angular__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(angular__WEBPACK_IMPORTED_MODULE_2__);
|
|
225202
225414
|
/* harmony import */ var _angular_upgrade_static__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @angular/upgrade/static */ "./node_modules/@angular/upgrade/fesm2015/static.js");
|
|
225203
225415
|
/* harmony import */ var _nodeContextMenu_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./nodeContextMenu.component */ "./app/codeCharta/ui/nodeContextMenu/nodeContextMenu.component.ts");
|
|
225204
|
-
/* harmony import */ var
|
|
225205
|
-
/* harmony import */ var
|
|
225416
|
+
/* harmony import */ var _focusButtons_focusButtons_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./focusButtons/focusButtons.component */ "./app/codeCharta/ui/nodeContextMenu/focusButtons/focusButtons.component.ts");
|
|
225417
|
+
/* harmony import */ var _markFolderRow_markFolderRow_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./markFolderRow/markFolderRow.component */ "./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.ts");
|
|
225206
225418
|
|
|
225207
225419
|
|
|
225208
225420
|
|
|
@@ -225210,10 +225422,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
225210
225422
|
|
|
225211
225423
|
|
|
225212
225424
|
|
|
225213
|
-
angular__WEBPACK_IMPORTED_MODULE_2___default().module("app.codeCharta.ui.nodeContextMenu", ["app.codeCharta.state", "app.codeCharta.ui"]).component(_nodeContextMenu_component__WEBPACK_IMPORTED_MODULE_3__.nodeContextMenuComponent.selector, _nodeContextMenu_component__WEBPACK_IMPORTED_MODULE_3__.nodeContextMenuComponent).directive("
|
|
225214
|
-
component:
|
|
225425
|
+
angular__WEBPACK_IMPORTED_MODULE_2___default().module("app.codeCharta.ui.nodeContextMenu", ["app.codeCharta.state", "app.codeCharta.ui"]).component(_nodeContextMenu_component__WEBPACK_IMPORTED_MODULE_3__.nodeContextMenuComponent.selector, _nodeContextMenu_component__WEBPACK_IMPORTED_MODULE_3__.nodeContextMenuComponent).directive("ccMarkFolderRow", (0,_angular_upgrade_static__WEBPACK_IMPORTED_MODULE_6__.downgradeComponent)({
|
|
225426
|
+
component: _markFolderRow_markFolderRow_component__WEBPACK_IMPORTED_MODULE_5__.MarkFolderRowComponent
|
|
225215
225427
|
})).directive("ccFocusButtons", (0,_angular_upgrade_static__WEBPACK_IMPORTED_MODULE_6__.downgradeComponent)({
|
|
225216
|
-
component:
|
|
225428
|
+
component: _focusButtons_focusButtons_component__WEBPACK_IMPORTED_MODULE_4__.FocusButtonsComponent
|
|
225217
225429
|
}));
|
|
225218
225430
|
|
|
225219
225431
|
/***/ }),
|
|
@@ -226828,7 +227040,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
226828
227040
|
|
|
226829
227041
|
|
|
226830
227042
|
|
|
226831
|
-
angular__WEBPACK_IMPORTED_MODULE_0___default().module("app.codeCharta.ui", ["app.codeCharta.ui.artificialIntelligence", "app.codeCharta.ui.customConfigs", "app.codeCharta.ui.metricValueHovered", "app.codeCharta.ui.downloadButton", "app.codeCharta.ui.screenshotButton", "app.codeCharta.ui.globalSettingsButton", "app.codeCharta.ui.nodePathPanel", "app.codeCharta.ui.edgeSettingsPanel", "app.codeCharta.ui.edgeChooser", "app.codeCharta.ui.presentationModeButton", "app.codeCharta.ui.centerMapButton", "app.codeCharta.ui.searchPanel", "app.codeCharta.ui.searchPanelModeSelector", "app.codeCharta.ui.searchBar", "app.codeCharta.ui.metricType", "app.codeCharta.ui.areaSettingsPanel", "app.codeCharta.ui.blacklistPanel", "app.codeCharta.ui.codeMap", "app.codeCharta.ui.colorSettingsPanel", "app.codeCharta.ui.dialog", "app.codeCharta.ui.fileChooser", "app.codeCharta.ui.fileExtensionBar", "app.codeCharta.ui.
|
|
227043
|
+
angular__WEBPACK_IMPORTED_MODULE_0___default().module("app.codeCharta.ui", ["app.codeCharta.ui.artificialIntelligence", "app.codeCharta.ui.customConfigs", "app.codeCharta.ui.metricValueHovered", "app.codeCharta.ui.downloadButton", "app.codeCharta.ui.screenshotButton", "app.codeCharta.ui.globalSettingsButton", "app.codeCharta.ui.nodePathPanel", "app.codeCharta.ui.edgeSettingsPanel", "app.codeCharta.ui.edgeChooser", "app.codeCharta.ui.presentationModeButton", "app.codeCharta.ui.centerMapButton", "app.codeCharta.ui.searchPanel", "app.codeCharta.ui.searchPanelModeSelector", "app.codeCharta.ui.searchBar", "app.codeCharta.ui.metricType", "app.codeCharta.ui.areaSettingsPanel", "app.codeCharta.ui.blacklistPanel", "app.codeCharta.ui.codeMap", "app.codeCharta.ui.colorSettingsPanel", "app.codeCharta.ui.dialog", "app.codeCharta.ui.fileChooser", "app.codeCharta.ui.fileExtensionBar", "app.codeCharta.ui.heightSettingsPanel", "app.codeCharta.ui.loadingGif", "app.codeCharta.ui.metricChooser", "app.codeCharta.ui.metricType", "app.codeCharta.ui.nodeContextMenu", "app.codeCharta.ui.rangeSlider", "app.codeCharta.ui.resetSettingsButton", "app.codeCharta.ui.ribbonBar", "app.codeCharta.ui.scenarioDropDown", "app.codeCharta.ui.toolBar", "app.codeCharta.ui.viewCube", "app.codeCharta.ui.layoutSelection", "app.codeCharta.ui.sharpnessModeSelector", "app.codeCharta.ui.maxTreeMapFiles", "app.codeCharta.ui.filePanel"]).directive("ccSortingButton", (0,_angular_upgrade_static__WEBPACK_IMPORTED_MODULE_45__.downgradeComponent)({
|
|
226832
227044
|
component: _sortingButton_sortingButton_component__WEBPACK_IMPORTED_MODULE_41__.SortingButtonComponent
|
|
226833
227045
|
})).directive("ccSortingOption", (0,_angular_upgrade_static__WEBPACK_IMPORTED_MODULE_45__.downgradeComponent)({
|
|
226834
227046
|
component: _sortingOption_sortingOption_component__WEBPACK_IMPORTED_MODULE_39__.SortingOptionComponent
|
|
@@ -230045,14 +230257,16 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
230045
230257
|
/* harmony export */ "CustomConfigHelper": () => (/* binding */ CustomConfigHelper)
|
|
230046
230258
|
/* harmony export */ });
|
|
230047
230259
|
/* harmony import */ var _codeCharta_model__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../codeCharta.model */ "./app/codeCharta/codeCharta.model.ts");
|
|
230048
|
-
/* harmony import */ var
|
|
230049
|
-
/* harmony import */ var
|
|
230050
|
-
/* harmony import */ var
|
|
230051
|
-
/* harmony import */ var
|
|
230052
|
-
/* harmony import */ var
|
|
230053
|
-
/* harmony import */ var
|
|
230054
|
-
/* harmony import */ var
|
|
230055
|
-
/* harmony import */ var
|
|
230260
|
+
/* harmony import */ var _model_customConfig_customConfig_api_model__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../model/customConfig/customConfig.api.model */ "./app/codeCharta/model/customConfig/customConfig.api.model.ts");
|
|
230261
|
+
/* harmony import */ var _fileNameHelper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fileNameHelper */ "./app/codeCharta/util/fileNameHelper.ts");
|
|
230262
|
+
/* harmony import */ var _fileDownloader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fileDownloader */ "./app/codeCharta/util/fileDownloader.ts");
|
|
230263
|
+
/* harmony import */ var _state_store_state_actions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../state/store/state.actions */ "./app/codeCharta/state/store/state.actions.ts");
|
|
230264
|
+
/* harmony import */ var _state_store_dynamicSettings_colorRange_colorRange_actions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../state/store/dynamicSettings/colorRange/colorRange.actions */ "./app/codeCharta/state/store/dynamicSettings/colorRange/colorRange.actions.ts");
|
|
230265
|
+
/* harmony import */ var _state_store_dynamicSettings_margin_margin_actions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../state/store/dynamicSettings/margin/margin.actions */ "./app/codeCharta/state/store/dynamicSettings/margin/margin.actions.ts");
|
|
230266
|
+
/* harmony import */ var _state_store_appSettings_camera_camera_actions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../state/store/appSettings/camera/camera.actions */ "./app/codeCharta/state/store/appSettings/camera/camera.actions.ts");
|
|
230267
|
+
/* harmony import */ var _state_store_appSettings_cameraTarget_cameraTarget_actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../state/store/appSettings/cameraTarget/cameraTarget.actions */ "./app/codeCharta/state/store/appSettings/cameraTarget/cameraTarget.actions.ts");
|
|
230268
|
+
/* harmony import */ var _codeChartaStorage__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./codeChartaStorage */ "./app/codeCharta/util/codeChartaStorage.ts");
|
|
230269
|
+
|
|
230056
230270
|
|
|
230057
230271
|
|
|
230058
230272
|
|
|
@@ -230065,13 +230279,13 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
230065
230279
|
|
|
230066
230280
|
|
|
230067
230281
|
const CUSTOM_CONFIG_FILE_EXTENSION = ".cc.config.json";
|
|
230068
|
-
const CUSTOM_CONFIGS_LOCAL_STORAGE_VERSION = "1.0.
|
|
230069
|
-
const CUSTOM_CONFIGS_DOWNLOAD_FILE_VERSION = "1.0.
|
|
230282
|
+
const CUSTOM_CONFIGS_LOCAL_STORAGE_VERSION = "1.0.1";
|
|
230283
|
+
const CUSTOM_CONFIGS_DOWNLOAD_FILE_VERSION = "1.0.1";
|
|
230070
230284
|
const CUSTOM_CONFIGS_LOCAL_STORAGE_ELEMENT = "CodeCharta::customConfigs";
|
|
230071
230285
|
class CustomConfigHelper {
|
|
230072
230286
|
static getStorage() {
|
|
230073
230287
|
if (CustomConfigHelper.storage === undefined) {
|
|
230074
|
-
CustomConfigHelper.storage = new
|
|
230288
|
+
CustomConfigHelper.storage = new _codeChartaStorage__WEBPACK_IMPORTED_MODULE_9__.CodeChartaStorage();
|
|
230075
230289
|
}
|
|
230076
230290
|
|
|
230077
230291
|
return CustomConfigHelper.storage;
|
|
@@ -230122,10 +230336,35 @@ class CustomConfigHelper {
|
|
|
230122
230336
|
}
|
|
230123
230337
|
|
|
230124
230338
|
static loadCustomConfigs() {
|
|
230125
|
-
const ccLocalStorage =
|
|
230339
|
+
const ccLocalStorage = this.getCcLocalStorage();
|
|
230126
230340
|
return new Map(ccLocalStorage === null || ccLocalStorage === void 0 ? void 0 : ccLocalStorage.customConfigs);
|
|
230127
230341
|
}
|
|
230128
230342
|
|
|
230343
|
+
static getCcLocalStorage() {
|
|
230344
|
+
const ccLocalStorage = JSON.parse(CustomConfigHelper.getStorage().getItem(CUSTOM_CONFIGS_LOCAL_STORAGE_ELEMENT), _codeCharta_model__WEBPACK_IMPORTED_MODULE_0__.stateObjectReviver);
|
|
230345
|
+
|
|
230346
|
+
if ((ccLocalStorage === null || ccLocalStorage === void 0 ? void 0 : ccLocalStorage.version) === "1.0.0") {
|
|
230347
|
+
return this.replaceSingleModeInLocalStorage(ccLocalStorage);
|
|
230348
|
+
}
|
|
230349
|
+
|
|
230350
|
+
return ccLocalStorage;
|
|
230351
|
+
}
|
|
230352
|
+
|
|
230353
|
+
static replaceSingleModeInLocalStorage(ccLocalStorage) {
|
|
230354
|
+
var _a;
|
|
230355
|
+
|
|
230356
|
+
for (const [, customConfig] of (_a = ccLocalStorage === null || ccLocalStorage === void 0 ? void 0 : ccLocalStorage.customConfigs.values()) !== null && _a !== void 0 ? _a : []) {
|
|
230357
|
+
if (customConfig.mapSelectionMode === "SINGLE") {
|
|
230358
|
+
customConfig.mapSelectionMode = _model_customConfig_customConfig_api_model__WEBPACK_IMPORTED_MODULE_1__.CustomConfigMapSelectionMode.MULTIPLE;
|
|
230359
|
+
}
|
|
230360
|
+
}
|
|
230361
|
+
|
|
230362
|
+
ccLocalStorage.version = CUSTOM_CONFIGS_LOCAL_STORAGE_VERSION;
|
|
230363
|
+
CustomConfigHelper.getStorage().removeItem(CUSTOM_CONFIGS_LOCAL_STORAGE_ELEMENT);
|
|
230364
|
+
CustomConfigHelper.getStorage().setItem(CUSTOM_CONFIGS_LOCAL_STORAGE_ELEMENT, JSON.stringify(ccLocalStorage, _codeCharta_model__WEBPACK_IMPORTED_MODULE_0__.stateObjectReviver));
|
|
230365
|
+
return ccLocalStorage;
|
|
230366
|
+
}
|
|
230367
|
+
|
|
230129
230368
|
static addCustomConfigs(newCustomConfigs) {
|
|
230130
230369
|
for (const newCustomConfig of newCustomConfigs) {
|
|
230131
230370
|
CustomConfigHelper.customConfigs.set(newCustomConfig.id, newCustomConfig);
|
|
@@ -230171,6 +230410,10 @@ class CustomConfigHelper {
|
|
|
230171
230410
|
const importedCustomConfigsFile = JSON.parse(content, _codeCharta_model__WEBPACK_IMPORTED_MODULE_0__.stateObjectReviver);
|
|
230172
230411
|
|
|
230173
230412
|
for (const exportedConfig of importedCustomConfigsFile.customConfigs.values()) {
|
|
230413
|
+
if (exportedConfig.mapSelectionMode === "SINGLE") {
|
|
230414
|
+
exportedConfig.mapSelectionMode = _model_customConfig_customConfig_api_model__WEBPACK_IMPORTED_MODULE_1__.CustomConfigMapSelectionMode.MULTIPLE;
|
|
230415
|
+
}
|
|
230416
|
+
|
|
230174
230417
|
const alreadyExistingConfig = CustomConfigHelper.getCustomConfigSettings(exportedConfig.id);
|
|
230175
230418
|
|
|
230176
230419
|
if (alreadyExistingConfig) {
|
|
@@ -230178,7 +230421,7 @@ class CustomConfigHelper {
|
|
|
230178
230421
|
}
|
|
230179
230422
|
|
|
230180
230423
|
if (CustomConfigHelper.hasCustomConfigByName(exportedConfig.mapSelectionMode, exportedConfig.assignedMaps, exportedConfig.name)) {
|
|
230181
|
-
exportedConfig.name += ` (${
|
|
230424
|
+
exportedConfig.name += ` (${_fileNameHelper__WEBPACK_IMPORTED_MODULE_2__.FileNameHelper.getFormattedTimestamp(new Date(exportedConfig.creationTime))})`;
|
|
230182
230425
|
}
|
|
230183
230426
|
|
|
230184
230427
|
const importedCustomConfig = {
|
|
@@ -230201,13 +230444,13 @@ class CustomConfigHelper {
|
|
|
230201
230444
|
timestamp: Date.now(),
|
|
230202
230445
|
customConfigs
|
|
230203
230446
|
};
|
|
230204
|
-
let fileName =
|
|
230447
|
+
let fileName = _fileNameHelper__WEBPACK_IMPORTED_MODULE_2__.FileNameHelper.getNewTimestamp() + CUSTOM_CONFIG_FILE_EXTENSION;
|
|
230205
230448
|
|
|
230206
230449
|
if (!customConfigFileStateConnector.isDeltaMode() && customConfigFileStateConnector.getAmountOfUploadedFiles() === 1 && customConfigFileStateConnector.isEachFileSelected()) {
|
|
230207
|
-
fileName = `${
|
|
230450
|
+
fileName = `${_fileNameHelper__WEBPACK_IMPORTED_MODULE_2__.FileNameHelper.withoutCCJsonExtension(customConfigFileStateConnector.getJointMapName())}_${fileName}`;
|
|
230208
230451
|
}
|
|
230209
230452
|
|
|
230210
|
-
|
|
230453
|
+
_fileDownloader__WEBPACK_IMPORTED_MODULE_3__.FileDownloader.downloadData(JSON.stringify(customConfigsDownloadFile, _codeCharta_model__WEBPACK_IMPORTED_MODULE_0__.stateObjectReplacer), fileName);
|
|
230211
230454
|
}
|
|
230212
230455
|
|
|
230213
230456
|
static createExportCustomConfigFromConfig(customConfig) {
|
|
@@ -230266,14 +230509,14 @@ class CustomConfigHelper {
|
|
|
230266
230509
|
|
|
230267
230510
|
static applyCustomConfig(configId, storeService, threeCameraService, threeOrbitControlsService) {
|
|
230268
230511
|
const customConfig = this.getCustomConfigSettings(configId);
|
|
230269
|
-
storeService.dispatch((0,
|
|
230270
|
-
storeService.dispatch((0,
|
|
230271
|
-
storeService.dispatch((0,
|
|
230512
|
+
storeService.dispatch((0,_state_store_state_actions__WEBPACK_IMPORTED_MODULE_4__.setState)(customConfig.stateSettings));
|
|
230513
|
+
storeService.dispatch((0,_state_store_dynamicSettings_colorRange_colorRange_actions__WEBPACK_IMPORTED_MODULE_5__.setColorRange)(customConfig.stateSettings.dynamicSettings.colorRange));
|
|
230514
|
+
storeService.dispatch((0,_state_store_dynamicSettings_margin_margin_actions__WEBPACK_IMPORTED_MODULE_6__.setMargin)(customConfig.stateSettings.dynamicSettings.margin));
|
|
230272
230515
|
setTimeout(() => {
|
|
230273
230516
|
threeCameraService.setPosition();
|
|
230274
230517
|
threeOrbitControlsService.setControlTarget();
|
|
230275
|
-
storeService.dispatch((0,
|
|
230276
|
-
storeService.dispatch((0,
|
|
230518
|
+
storeService.dispatch((0,_state_store_appSettings_camera_camera_actions__WEBPACK_IMPORTED_MODULE_7__.setCamera)(customConfig.stateSettings.appSettings.camera));
|
|
230519
|
+
storeService.dispatch((0,_state_store_appSettings_cameraTarget_cameraTarget_actions__WEBPACK_IMPORTED_MODULE_8__.setCameraTarget)(customConfig.stateSettings.appSettings.cameraTarget));
|
|
230277
230520
|
}, 100);
|
|
230278
230521
|
}
|
|
230279
230522
|
|
|
@@ -230877,7 +231120,8 @@ FileNameHelper.JSON_EXTENSION = ".json";
|
|
|
230877
231120
|
__webpack_require__.r(__webpack_exports__);
|
|
230878
231121
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
230879
231122
|
/* harmony export */ "ERROR_MESSAGES": () => (/* binding */ ERROR_MESSAGES),
|
|
230880
|
-
/* harmony export */ "
|
|
231123
|
+
/* harmony export */ "checkWarnings": () => (/* binding */ checkWarnings),
|
|
231124
|
+
/* harmony export */ "checkErrors": () => (/* binding */ checkErrors),
|
|
230881
231125
|
/* harmony export */ "getAsApiVersion": () => (/* binding */ getAsApiVersion)
|
|
230882
231126
|
/* harmony export */ });
|
|
230883
231127
|
/* harmony import */ var ajv__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ajv */ "./node_modules/ajv/lib/ajv.js");
|
|
@@ -230904,32 +231148,44 @@ const ERROR_MESSAGES = {
|
|
|
230904
231148
|
fileAlreadyExists: "File already exists.",
|
|
230905
231149
|
blacklistError: "Excluding all buildings is not possible."
|
|
230906
231150
|
};
|
|
230907
|
-
function
|
|
230908
|
-
const
|
|
230909
|
-
|
|
230910
|
-
|
|
230911
|
-
|
|
230912
|
-
}
|
|
231151
|
+
function checkWarnings(file) {
|
|
231152
|
+
const warnings = [];
|
|
231153
|
+
|
|
231154
|
+
if (!file) {
|
|
231155
|
+
return warnings;
|
|
231156
|
+
}
|
|
231157
|
+
|
|
231158
|
+
if (fileHasHigherMinorVersion(file)) {
|
|
231159
|
+
warnings.push(`${ERROR_MESSAGES.minorApiVersionOutdated} Found: ${file.apiVersion}`);
|
|
231160
|
+
}
|
|
231161
|
+
|
|
231162
|
+
return warnings;
|
|
231163
|
+
}
|
|
231164
|
+
function checkErrors(file) {
|
|
231165
|
+
const errors = [];
|
|
230913
231166
|
|
|
230914
231167
|
switch (true) {
|
|
230915
231168
|
case !file:
|
|
230916
|
-
|
|
231169
|
+
errors.push(ERROR_MESSAGES.fileIsInvalid);
|
|
230917
231170
|
break;
|
|
230918
231171
|
|
|
230919
231172
|
case !isValidApiVersion(file):
|
|
230920
|
-
|
|
231173
|
+
errors.push(ERROR_MESSAGES.apiVersionIsInvalid);
|
|
230921
231174
|
break;
|
|
230922
231175
|
|
|
230923
231176
|
case fileHasHigherMajorVersion(file):
|
|
230924
|
-
|
|
230925
|
-
break;
|
|
230926
|
-
|
|
230927
|
-
case fileHasHigherMinorVersion(file):
|
|
230928
|
-
result.warning.push(`${ERROR_MESSAGES.minorApiVersionOutdated} Found: ${file.apiVersion}`);
|
|
231177
|
+
errors.push(ERROR_MESSAGES.majorApiVersionIsOutdated);
|
|
230929
231178
|
break;
|
|
230930
231179
|
}
|
|
230931
231180
|
|
|
230932
|
-
if (
|
|
231181
|
+
if (errors.length === 0) errors.push(...checkJsonSchema(file));
|
|
231182
|
+
return errors;
|
|
231183
|
+
}
|
|
231184
|
+
|
|
231185
|
+
function checkJsonSchema(file) {
|
|
231186
|
+
const errors = [];
|
|
231187
|
+
|
|
231188
|
+
if (errors.length === 0) {
|
|
230933
231189
|
const ajv = new (ajv__WEBPACK_IMPORTED_MODULE_0___default())({
|
|
230934
231190
|
allErrors: true
|
|
230935
231191
|
});
|
|
@@ -230937,18 +231193,15 @@ function validate(nameDataPair) {
|
|
|
230937
231193
|
const valid = validate(file);
|
|
230938
231194
|
|
|
230939
231195
|
if (!valid) {
|
|
230940
|
-
|
|
231196
|
+
errors.push(...validate.errors.map(error => getValidationMessage(error)));
|
|
230941
231197
|
} else if (file.nodes.length === 0) {
|
|
230942
|
-
|
|
231198
|
+
errors.push(ERROR_MESSAGES.nodesEmpty);
|
|
230943
231199
|
} else {
|
|
230944
|
-
validateAllNodesAreUnique(file.nodes[0],
|
|
230945
|
-
validateFixedFolders(file, result);
|
|
231200
|
+
errors.push(...validateAllNodesAreUnique(file.nodes[0]), ...validateFixedFolders(file));
|
|
230946
231201
|
}
|
|
230947
231202
|
}
|
|
230948
231203
|
|
|
230949
|
-
|
|
230950
|
-
throw result;
|
|
230951
|
-
}
|
|
231204
|
+
return errors;
|
|
230952
231205
|
}
|
|
230953
231206
|
|
|
230954
231207
|
function isValidApiVersion(file) {
|
|
@@ -230984,13 +231237,15 @@ function getValidationMessage(error) {
|
|
|
230984
231237
|
return `${errorType} error: ${errorParameter} ${error.message}`;
|
|
230985
231238
|
}
|
|
230986
231239
|
|
|
230987
|
-
function validateAllNodesAreUnique(node
|
|
231240
|
+
function validateAllNodesAreUnique(node) {
|
|
231241
|
+
const errors = [];
|
|
230988
231242
|
const names = new Set();
|
|
230989
231243
|
names.add(`${node.name}|${node.type}`);
|
|
230990
|
-
validateChildrenAreUniqueRecursive(node,
|
|
231244
|
+
validateChildrenAreUniqueRecursive(node, errors, names, `/${node.name}`);
|
|
231245
|
+
return errors;
|
|
230991
231246
|
}
|
|
230992
231247
|
|
|
230993
|
-
function validateChildrenAreUniqueRecursive(node,
|
|
231248
|
+
function validateChildrenAreUniqueRecursive(node, errors, names, subPath) {
|
|
230994
231249
|
if ((0,_codeMapHelper__WEBPACK_IMPORTED_MODULE_3__.isLeaf)(node)) {
|
|
230995
231250
|
return;
|
|
230996
231251
|
}
|
|
@@ -230999,19 +231254,15 @@ function validateChildrenAreUniqueRecursive(node, result, names, subPath) {
|
|
|
230999
231254
|
const path = `${subPath}/${child.name}`;
|
|
231000
231255
|
|
|
231001
231256
|
if (names.has(`${path}|${child.type}`)) {
|
|
231002
|
-
|
|
231257
|
+
errors.push(`${ERROR_MESSAGES.nodesNotUnique} Found duplicate of ${child.type} with path: ${path}`);
|
|
231003
231258
|
} else {
|
|
231004
231259
|
names.add(`${path}|${child.type}`);
|
|
231005
|
-
validateChildrenAreUniqueRecursive(child,
|
|
231260
|
+
validateChildrenAreUniqueRecursive(child, errors, names, path);
|
|
231006
231261
|
}
|
|
231007
231262
|
}
|
|
231008
231263
|
}
|
|
231009
231264
|
|
|
231010
|
-
function
|
|
231011
|
-
const notFixed = [];
|
|
231012
|
-
const outOfBounds = [];
|
|
231013
|
-
const intersections = new Set();
|
|
231014
|
-
|
|
231265
|
+
function checkChildNodes(childNodes, notFixed, file, errors, outOfBounds, intersections) {
|
|
231015
231266
|
for (const node of childNodes) {
|
|
231016
231267
|
if (node.fixedPosition === undefined) {
|
|
231017
231268
|
notFixed.push(`${node.name}`);
|
|
@@ -231019,7 +231270,7 @@ function validateFixedFolders(file, result, childNodes = file.nodes[0].children)
|
|
|
231019
231270
|
const apiVersion = getAsApiVersion(file.apiVersion);
|
|
231020
231271
|
|
|
231021
231272
|
if (apiVersion.major < 1 || apiVersion.major === 1 && apiVersion.minor < 2) {
|
|
231022
|
-
|
|
231273
|
+
errors.push(`${ERROR_MESSAGES.fixedFoldersNotAllowed} Found: ${file.apiVersion}`);
|
|
231023
231274
|
return;
|
|
231024
231275
|
}
|
|
231025
231276
|
|
|
@@ -231034,24 +231285,34 @@ function validateFixedFolders(file, result, childNodes = file.nodes[0].children)
|
|
|
231034
231285
|
}
|
|
231035
231286
|
}
|
|
231036
231287
|
}
|
|
231288
|
+
}
|
|
231289
|
+
|
|
231290
|
+
function validateFixedFolders(file, childNodes = file.nodes[0].children) {
|
|
231291
|
+
const errors = [];
|
|
231292
|
+
const notFixed = [];
|
|
231293
|
+
const outOfBounds = [];
|
|
231294
|
+
const intersections = new Set();
|
|
231295
|
+
checkChildNodes(childNodes, notFixed, file, errors, outOfBounds, intersections);
|
|
231037
231296
|
|
|
231038
231297
|
if (notFixed.length > 0 && notFixed.length !== childNodes.length) {
|
|
231039
|
-
|
|
231298
|
+
errors.push(`${ERROR_MESSAGES.notAllFoldersAreFixed} Found: ${notFixed.join(", ")}`);
|
|
231040
231299
|
}
|
|
231041
231300
|
|
|
231042
231301
|
if (outOfBounds.length > 0) {
|
|
231043
|
-
|
|
231302
|
+
errors.push(`${ERROR_MESSAGES.fixedFoldersOutOfBounds} Found: ${outOfBounds.join(", ")}`);
|
|
231044
231303
|
}
|
|
231045
231304
|
|
|
231046
231305
|
if (intersections.size > 0) {
|
|
231047
|
-
|
|
231306
|
+
errors.push(`${ERROR_MESSAGES.fixedFoldersOverlapped} Found: ${[...intersections].join(", ")}`);
|
|
231048
231307
|
}
|
|
231049
231308
|
|
|
231050
231309
|
for (const node of childNodes) {
|
|
231051
231310
|
if (node.children) {
|
|
231052
|
-
validateFixedFolders(file,
|
|
231311
|
+
errors.push(...validateFixedFolders(file, node.children));
|
|
231053
231312
|
}
|
|
231054
231313
|
}
|
|
231314
|
+
|
|
231315
|
+
return errors;
|
|
231055
231316
|
}
|
|
231056
231317
|
|
|
231057
231318
|
function getFoundFolderMessage(node) {
|
|
@@ -237946,6 +238207,33 @@ ___CSS_LOADER_EXPORT___.push([module.id, ".custom-configs {\n margin-left: 15%;
|
|
|
237946
238207
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
237947
238208
|
|
|
237948
238209
|
|
|
238210
|
+
/***/ }),
|
|
238211
|
+
|
|
238212
|
+
/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./app/codeCharta/ui/dialog/dialog.changelog.component.scss":
|
|
238213
|
+
/*!***********************************************************************************************************************************************!*\
|
|
238214
|
+
!*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./app/codeCharta/ui/dialog/dialog.changelog.component.scss ***!
|
|
238215
|
+
\***********************************************************************************************************************************************/
|
|
238216
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
238217
|
+
|
|
238218
|
+
"use strict";
|
|
238219
|
+
__webpack_require__.r(__webpack_exports__);
|
|
238220
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
238221
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
238222
|
+
/* harmony export */ });
|
|
238223
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "./node_modules/css-loader/dist/runtime/sourceMaps.js");
|
|
238224
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
238225
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
|
|
238226
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
238227
|
+
// Imports
|
|
238228
|
+
|
|
238229
|
+
|
|
238230
|
+
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
238231
|
+
// Module
|
|
238232
|
+
___CSS_LOADER_EXPORT___.push([module.id, "img[alt$=\"xs\"] {\n height: 32px; }\n\nimg[alt$=\"s\"] {\n height: 64px; }\n\nimg[alt$=\"m\"] {\n height: 256px; }\n\nimg[alt$=\"l\"] {\n height: 350px; }\n\nimg[alt$=\"xl\"] {\n height: 512px; }\n", "",{"version":3,"sources":["webpack://./app/codeCharta/ui/dialog/dialog.changelog.component.scss"],"names":[],"mappings":"AAAA;EACC,YAAY,EAAA;;AAEb;EACC,YAAY,EAAA;;AAEb;EACC,aAAa,EAAA;;AAEd;EACC,aAAa,EAAA;;AAEd;EACC,aAAa,EAAA","sourcesContent":["img[alt$=\"xs\"] {\n\theight: 32px;\n}\nimg[alt$=\"s\"] {\n\theight: 64px;\n}\nimg[alt$=\"m\"] {\n\theight: 256px;\n}\nimg[alt$=\"l\"] {\n\theight: 350px;\n}\nimg[alt$=\"xl\"] {\n\theight: 512px;\n}\n"],"sourceRoot":""}]);
|
|
238233
|
+
// Exports
|
|
238234
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
238235
|
+
|
|
238236
|
+
|
|
237949
238237
|
/***/ }),
|
|
237950
238238
|
|
|
237951
238239
|
/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./app/codeCharta/ui/dialog/dialog.component.scss":
|
|
@@ -238130,7 +238418,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
238130
238418
|
|
|
238131
238419
|
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
238132
238420
|
// Module
|
|
238133
|
-
___CSS_LOADER_EXPORT___.push([module.id, "file-panel
|
|
238421
|
+
___CSS_LOADER_EXPORT___.push([module.id, "cc-file-panel {\n width: calc(100% - 150px);\n min-width: 400px;\n display: inline-block; }\n cc-file-panel.hidden {\n display: none; }\n cc-file-panel .mode-chooser {\n display: inline-flex;\n vertical-align: middle;\n margin-left: 10px; }\n cc-file-panel .state-selector-button.mode-selector {\n height: 24px;\n width: 66px;\n background-color: #ffffff; }\n cc-file-panel .state-selector-button.mode-selector.middle {\n border-left: 1px solid rgba(230, 230, 230, 0.96);\n border-right: 1px solid rgba(230, 230, 230, 0.96); }\n cc-file-panel .state-selector-button.mode-selector.current {\n background-color: #009688;\n color: #ffffff; }\n cc-file-panel .state-selector-button.mode-selector.current:hover {\n background-color: #009688; }\n cc-file-panel .state-selector-button.mode-selector .text {\n display: block;\n margin-top: -5px;\n margin-right: 0px; }\n cc-file-panel .state-selector-button.mode-selector .text:active {\n padding: -5px;\n margin: -5px; }\n cc-file-panel .pictogram {\n display: inline-flex;\n width: 10px;\n margin-right: 5px;\n margin-left: 5px;\n height: 22px;\n border-radius: 2px;\n align-self: center;\n vertical-align: bottom; }\n cc-file-panel .delta-select {\n width: 200px;\n margin: 0 10px 0 10px;\n vertical-align: bottom; }\n cc-file-panel .standard-select {\n margin: 0 10px 0 10px; }\n", "",{"version":3,"sources":["webpack://./app/codeCharta/ui/filePanel/filePanel.component.scss"],"names":[],"mappings":"AAAA;EACC,yBAAyB;EACzB,gBAAgB;EAChB,qBAAqB,EAAA;EAHtB;IAME,aAAa,EAAA;EANf;IAUE,oBAAoB;IACpB,sBAAsB;IACtB,iBAAiB,EAAA;EAZnB;IAiBG,YAAY;IACZ,WAAW;IACX,yBAAyB,EAAA;IAnB5B;MAsBI,gDAAgD;MAChD,iDAAiD,EAAA;IAvBrD;MA2BI,yBAAkC;MAClC,cAAc,EAAA;IA5BlB;MA+BI,yBAAkC,EAAA;IA/BtC;MAkCI,cAAc;MACd,gBAAgB;MAChB,iBAAiB,EAAA;MApCrB;QAuCK,aAAa;QACb,YAAY,EAAA;EAxCjB;IA+CE,oBAAoB;IACpB,WAAW;IACX,iBAAiB;IACjB,gBAAgB;IAChB,YAAY;IACZ,kBAAkB;IAClB,kBAAkB;IAClB,sBAAsB,EAAA;EAtDxB;IA0DE,YAAY;IACZ,qBAAqB;IACrB,sBAAsB,EAAA;EA5DxB;IAgEE,qBAAqB,EAAA","sourcesContent":["cc-file-panel {\n\twidth: calc(100% - 150px);\n\tmin-width: 400px;\n\tdisplay: inline-block;\n\n\t&.hidden {\n\t\tdisplay: none;\n\t}\n\n\t.mode-chooser {\n\t\tdisplay: inline-flex;\n\t\tvertical-align: middle;\n\t\tmargin-left: 10px;\n\t}\n\n\t.state-selector-button {\n\t\t&.mode-selector {\n\t\t\theight: 24px;\n\t\t\twidth: 66px;\n\t\t\tbackground-color: #ffffff;\n\n\t\t\t&.middle {\n\t\t\t\tborder-left: 1px solid rgba(230, 230, 230, 0.96);\n\t\t\t\tborder-right: 1px solid rgba(230, 230, 230, 0.96);\n\t\t\t}\n\n\t\t\t&.current {\n\t\t\t\tbackground-color: rgb(0, 150, 136);\n\t\t\t\tcolor: #ffffff;\n\t\t\t}\n\t\t\t&.current:hover {\n\t\t\t\tbackground-color: rgb(0, 150, 136);\n\t\t\t}\n\t\t\t.text {\n\t\t\t\tdisplay: block;\n\t\t\t\tmargin-top: -5px;\n\t\t\t\tmargin-right: 0px;\n\n\t\t\t\t&:active {\n\t\t\t\t\tpadding: -5px;\n\t\t\t\t\tmargin: -5px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t.pictogram {\n\t\tdisplay: inline-flex;\n\t\twidth: 10px;\n\t\tmargin-right: 5px;\n\t\tmargin-left: 5px;\n\t\theight: 22px;\n\t\tborder-radius: 2px;\n\t\talign-self: center;\n\t\tvertical-align: bottom;\n\t}\n\n\t.delta-select {\n\t\twidth: 200px;\n\t\tmargin: 0 10px 0 10px;\n\t\tvertical-align: bottom;\n\t}\n\n\t.standard-select {\n\t\tmargin: 0 10px 0 10px;\n\t}\n}\n"],"sourceRoot":""}]);
|
|
238134
238422
|
// Exports
|
|
238135
238423
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
238136
238424
|
|
|
@@ -238488,10 +238776,10 @@ ___CSS_LOADER_EXPORT___.push([module.id, "", "",{"version":3,"sources":[],"names
|
|
|
238488
238776
|
|
|
238489
238777
|
/***/ }),
|
|
238490
238778
|
|
|
238491
|
-
/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./app/codeCharta/ui/nodeContextMenu/
|
|
238492
|
-
|
|
238493
|
-
!*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./app/codeCharta/ui/nodeContextMenu/
|
|
238494
|
-
|
|
238779
|
+
/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.scss":
|
|
238780
|
+
/*!*******************************************************************************************************************************************************************!*\
|
|
238781
|
+
!*** ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.scss ***!
|
|
238782
|
+
\*******************************************************************************************************************************************************************/
|
|
238495
238783
|
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
238496
238784
|
|
|
238497
238785
|
"use strict";
|
|
@@ -238508,7 +238796,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
238508
238796
|
|
|
238509
238797
|
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
238510
238798
|
// Module
|
|
238511
|
-
___CSS_LOADER_EXPORT___.push([module.id, "cc-mark-folder-
|
|
238799
|
+
___CSS_LOADER_EXPORT___.push([module.id, "cc-mark-folder-row .row {\n display: flex; }\n\ncc-mark-folder-row :hover {\n cursor: pointer; }\n\ncc-mark-folder-row .colorButton {\n width: 32px;\n height: 32px; }\n cc-mark-folder-row .colorButton i {\n font-size: 25px;\n display: block;\n color: red;\n text-shadow: -1px 0 white, 0 1px white, 1px 0 white, 0 -1px white; }\n\ncc-mark-folder-row cc-color-picker {\n width: 32px;\n height: 32px; }\n cc-mark-folder-row cc-color-picker .cc-color-picker-trigger {\n font-size: 25px;\n margin-top: 8px; }\n", "",{"version":3,"sources":["webpack://./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.scss"],"names":[],"mappings":"AAAA;EAEE,aAAa,EAAA;;AAFf;EAME,eAAe,EAAA;;AANjB;EAUE,WAAW;EACX,YAAY,EAAA;EAXd;IAcG,eAAe;IACf,cAAc;IACd,UAAU;IACV,iEAAiE,EAAA;;AAjBpE;EAsBE,WAAW;EACX,YAAY,EAAA;EAvBd;IA0BG,eAAe;IACf,eAAe,EAAA","sourcesContent":["cc-mark-folder-row {\n\t.row {\n\t\tdisplay: flex;\n\t}\n\n\t:hover {\n\t\tcursor: pointer;\n\t}\n\n\t.colorButton {\n\t\twidth: 32px;\n\t\theight: 32px;\n\n\t\ti {\n\t\t\tfont-size: 25px;\n\t\t\tdisplay: block;\n\t\t\tcolor: red;\n\t\t\ttext-shadow: -1px 0 white, 0 1px white, 1px 0 white, 0 -1px white;\n\t\t}\n\t}\n\n\tcc-color-picker {\n\t\twidth: 32px;\n\t\theight: 32px;\n\n\t\t.cc-color-picker-trigger {\n\t\t\tfont-size: 25px;\n\t\t\tmargin-top: 8px;\n\t\t}\n\t}\n}\n"],"sourceRoot":""}]);
|
|
238512
238800
|
// Exports
|
|
238513
238801
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
238514
238802
|
|
|
@@ -238535,7 +238823,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
238535
238823
|
|
|
238536
238824
|
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
238537
238825
|
// Module
|
|
238538
|
-
___CSS_LOADER_EXPORT___.push([module.id, ".cdk-overlay-container {\n /* overwrite z-index of below #codemap-context-menu */\n z-index: 2000 !important; }\n\nnode-context-menu-component #codemap-context-menu {\n position: absolute;\n z-index: 2000; }\n\nnode-context-menu-component .button-group {\n display: inline-grid; }\n\nnode-context-menu-component .png-icon {\n margin: 5px auto auto;\n padding: 0;\n display: inline-block;\n background-repeat: no-repeat no-repeat;\n pointer-events: none; }\n\nnode-context-menu-component .md-button:not(.colorButton),\nnode-context-menu-component [mat-button] {\n width: 100%;\n text-align: left;\n margin-top: 0;\n line-height: 30px;\n min-height: 30px; }\n node-context-menu-component .md-button:not(.colorButton) i,\n node-context-menu-component [mat-button] i {\n min-width: 15px; }\n node-context-menu-component .md-button:not(.colorButton):not(:last-child),\n node-context-menu-component [mat-button]:not(:last-child) {\n margin-bottom: 0; }\n
|
|
238826
|
+
___CSS_LOADER_EXPORT___.push([module.id, ".cdk-overlay-container {\n /* overwrite z-index of below #codemap-context-menu */\n z-index: 2000 !important; }\n\nnode-context-menu-component #codemap-context-menu {\n position: absolute;\n z-index: 2000; }\n\nnode-context-menu-component .button-group {\n display: inline-grid; }\n\nnode-context-menu-component .png-icon {\n margin: 5px auto auto;\n padding: 0;\n display: inline-block;\n background-repeat: no-repeat no-repeat;\n pointer-events: none; }\n\nnode-context-menu-component .md-button:not(.colorButton),\nnode-context-menu-component [mat-button] {\n width: 100%;\n text-align: left;\n margin-top: 0;\n line-height: 30px;\n min-height: 30px; }\n node-context-menu-component .md-button:not(.colorButton) i,\n node-context-menu-component [mat-button] i {\n min-width: 15px; }\n node-context-menu-component .md-button:not(.colorButton):not(:last-child),\n node-context-menu-component [mat-button]:not(:last-child) {\n margin-bottom: 0; }\n", "",{"version":3,"sources":["webpack://./app/codeCharta/ui/nodeContextMenu/nodeContextMenu.component.scss"],"names":[],"mappings":"AAAA;EACC,qDAAA;EACA,wBAAwB,EAAA;;AAGzB;EAEE,kBAAkB;EAClB,aAAa,EAAA;;AAHf;EAOE,oBAAoB,EAAA;;AAPtB;EAWE,qBAAqB;EACrB,UAAU;EACV,qBAAqB;EACrB,sCAAsC;EACtC,oBAAoB,EAAA;;AAftB;;EAmBE,WAAW;EACX,gBAAgB;EAChB,aAAa;EACb,iBAAiB;EACjB,gBAAgB,EAAA;EAvBlB;;IA0BG,eAAe,EAAA;EA1BlB;;IA8BG,gBAAgB,EAAA","sourcesContent":[".cdk-overlay-container {\n\t/* overwrite z-index of below #codemap-context-menu */\n\tz-index: 2000 !important;\n}\n\nnode-context-menu-component {\n\t#codemap-context-menu {\n\t\tposition: absolute;\n\t\tz-index: 2000;\n\t}\n\n\t.button-group {\n\t\tdisplay: inline-grid;\n\t}\n\n\t.png-icon {\n\t\tmargin: 5px auto auto;\n\t\tpadding: 0;\n\t\tdisplay: inline-block;\n\t\tbackground-repeat: no-repeat no-repeat;\n\t\tpointer-events: none;\n\t}\n\t.md-button:not(.colorButton),\n\t[mat-button] {\n\t\twidth: 100%;\n\t\ttext-align: left;\n\t\tmargin-top: 0;\n\t\tline-height: 30px;\n\t\tmin-height: 30px;\n\n\t\ti {\n\t\t\tmin-width: 15px;\n\t\t}\n\n\t\t&:not(:last-child) {\n\t\t\tmargin-bottom: 0;\n\t\t}\n\t}\n}\n"],"sourceRoot":""}]);
|
|
238539
238827
|
// Exports
|
|
238540
238828
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
238541
238829
|
|
|
@@ -238862,7 +239150,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
238862
239150
|
|
|
238863
239151
|
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
238864
239152
|
// Module
|
|
238865
|
-
___CSS_LOADER_EXPORT___.push([module.id, "tool-bar-component .tool-bar {\n display: flex;\n align-items: center;\n background-color: #f0f0f0;\n height: 35px;\n border-bottom: 1px solid #cdcdcd; }\n\ntool-bar-component .toolbar-button {\n min-width: 24px;\n min-height: 24px;\n border-radius: 100%;\n padding: 5px;\n line-height: 0%;\n margin-right: 0;\n background-color: #009688;\n color: white; }\n tool-bar-component .toolbar-button:hover {\n background-color: #007c70 !important; }\n tool-bar-component .toolbar-button .folder-icon {\n margin-right: -2px; }\n\ntool-bar-component .md-focused {\n background-color: #009688 !important; }\n\ntool-bar-component .right-aligned {\n position: absolute;\n right: 10px;\n display: inline-flex;\n align-items: center;\n width: 400px; }\n\ntool-bar-component span {\n font-size: 10pt
|
|
239153
|
+
___CSS_LOADER_EXPORT___.push([module.id, "tool-bar-component .tool-bar {\n display: flex;\n align-items: center;\n background-color: #f0f0f0;\n height: 35px;\n border-bottom: 1px solid #cdcdcd; }\n\ntool-bar-component .toolbar-button {\n min-width: 24px;\n min-height: 24px;\n border-radius: 100%;\n padding: 5px;\n line-height: 0%;\n margin-right: 0;\n background-color: #009688;\n color: white; }\n tool-bar-component .toolbar-button:hover {\n background-color: #007c70 !important; }\n tool-bar-component .toolbar-button .folder-icon {\n margin-right: -2px; }\n\ntool-bar-component .md-focused {\n background-color: #009688 !important; }\n\ntool-bar-component .right-aligned {\n position: absolute;\n right: 10px;\n display: inline-flex;\n align-items: center;\n width: 400px;\n justify-content: space-between; }\n\ntool-bar-component span {\n font-size: 10pt; }\n\ntool-bar-component loading-gif-map-component {\n margin-right: 15px;\n width: 15px; }\n\nfile-panel-component.hidden,\nnode-path-panel-component.hidden {\n display: none; }\n", "",{"version":3,"sources":["webpack://./app/codeCharta/ui/toolBar/toolBar.component.scss"],"names":[],"mappings":"AAAA;EAEE,aAAa;EACb,mBAAmB;EACnB,yBAAyB;EACzB,YAAY;EACZ,gCAAgC,EAAA;;AANlC;EAUE,eAAe;EACf,gBAAgB;EAChB,mBAAmB;EACnB,YAAY;EACZ,eAAe;EACf,eAAe;EACf,yBAAkC;EAClC,YAAY,EAAA;EAjBd;IAmBG,oCAA6C,EAAA;EAnBhD;IAuBG,kBAAkB,EAAA;;AAvBrB;EA4BE,oCAA6C,EAAA;;AA5B/C;EAgCE,kBAAkB;EAClB,WAAW;EACX,oBAAoB;EACpB,mBAAmB;EACnB,YAAY;EACZ,8BAA8B,EAAA;;AArChC;EAyCE,eAAe,EAAA;;AAzCjB;EA6CE,kBAAkB;EAClB,WAAW,EAAA;;AAIb;;EAGE,aAAa,EAAA","sourcesContent":["tool-bar-component {\n\t.tool-bar {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tbackground-color: #f0f0f0;\n\t\theight: 35px;\n\t\tborder-bottom: 1px solid #cdcdcd;\n\t}\n\n\t.toolbar-button {\n\t\tmin-width: 24px;\n\t\tmin-height: 24px;\n\t\tborder-radius: 100%;\n\t\tpadding: 5px;\n\t\tline-height: 0%;\n\t\tmargin-right: 0;\n\t\tbackground-color: rgb(0, 150, 136);\n\t\tcolor: white;\n\t\t&:hover {\n\t\t\tbackground-color: rgb(0, 124, 112) !important;\n\t\t}\n\n\t\t.folder-icon {\n\t\t\tmargin-right: -2px;\n\t\t}\n\t}\n\n\t.md-focused {\n\t\tbackground-color: rgb(0, 150, 136) !important;\n\t}\n\n\t.right-aligned {\n\t\tposition: absolute;\n\t\tright: 10px;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\twidth: 400px;\n\t\tjustify-content: space-between;\n\t}\n\n\tspan {\n\t\tfont-size: 10pt;\n\t}\n\n\tloading-gif-map-component {\n\t\tmargin-right: 15px;\n\t\twidth: 15px;\n\t}\n}\n\nfile-panel-component,\nnode-path-panel-component {\n\t&.hidden {\n\t\tdisplay: none;\n\t}\n}\n"],"sourceRoot":""}]);
|
|
238866
239154
|
// Exports
|
|
238867
239155
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
238868
239156
|
|
|
@@ -242015,7 +242303,7 @@ module.exports = code;
|
|
|
242015
242303
|
/***/ ((module) => {
|
|
242016
242304
|
|
|
242017
242305
|
// Module
|
|
242018
|
-
var code = "<div class=\"custom-configs\">\n\t<md-menu class=\"custom-configs-component\">\n\t\t<md-button class=\"custom-configs-button\" ng-click=\"$ctrl.initView(); $mdMenu.open($event);\" title=\"Open your saved Custom
|
|
242306
|
+
var code = "<div class=\"custom-configs\">\n\t<md-menu class=\"custom-configs-component\">\n\t\t<md-button class=\"custom-configs-button\" ng-click=\"$ctrl.initView(); $mdMenu.open($event);\" title=\"Open your saved Custom Views\">\n\t\t\t<i class=\"fa fa-cogs\"></i>\n\t\t</md-button>\n\n\t\t<md-menu-content class=\"custom-configs-drop-down\" width=\"7\">\n\t\t\t<md-menu-item class=\"custom-configs-item\">\n\t\t\t\t<md-button class=\"custom-configs-dialog-name\" ng-disabled=\"true\">Custom Views</md-button>\n\n\t\t\t\t<md-button\n\t\t\t\t\tclass=\"action-button\"\n\t\t\t\t\tonclick=\"document.getElementById('input-file-id').click()\"\n\t\t\t\t\ttitle=\"Upload Custom View (.cc.config.json file).\"\n\t\t\t\t>\n\t\t\t\t\t<i class=\"fa fa-folder-open\" aria-hidden=\"true\"></i>\n\t\t\t\t</md-button>\n\t\t\t\t<md-button\n\t\t\t\t\tng-click=\"$ctrl.downloadPreloadedCustomConfigs()\"\n\t\t\t\t\tng-disabled=\"!$ctrl._viewModel.hasDownloadableConfigs\"\n\t\t\t\t\tclass=\"action-button\"\n\t\t\t\t\ttitle=\"Download Custom View related to currently uploaded maps, if any.\"\n\t\t\t\t>\n\t\t\t\t\t<i class=\"fa fa-download\" aria-hidden=\"true\"></i>\n\t\t\t\t</md-button>\n\t\t\t\t<md-button ng-click=\"$ctrl.showAddCustomConfigSettings()\" class=\"action-button\" title=\"Create new Custom View\">\n\t\t\t\t\t<i class=\"fa fa-plus\" aria-hidden=\"true\"></i>\n\t\t\t\t</md-button>\n\t\t\t</md-menu-item>\n\n\t\t\t<md-divider></md-divider>\n\n\t\t\t<md-menu-item ng-if=\"!$ctrl._viewModel.dropDownCustomConfigItemGroups.length\" class=\"custom-configs-item\">\n\t\t\t\t<md-button disabled>It is time to add your first Custom View.</md-button>\n\t\t\t</md-menu-item>\n\n\t\t\t<md-menu-item\n\t\t\t\tclass=\"custom-configs-item\"\n\t\t\t\tng-repeat=\"customConfigItemGroup in $ctrl._viewModel.dropDownCustomConfigItemGroups |\n limitTo: $ctrl._viewModel.visibleEntries\"\n\t\t\t>\n\t\t\t\t<md-button\n\t\t\t\t\tclass=\"button-hovering\"\n\t\t\t\t\tng-click=\"collapsed=!collapsed\"\n\t\t\t\t\tng-style=\"!customConfigItemGroup.hasApplicableItems && { color: 'rgba(0,0,0,0.3)' }\"\n\t\t\t\t\tmd-prevent-menu-close=\"md-prevent-menu-close\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"collapse-trigger\">\n\t\t\t\t\t\tCustom View(s) in <strong>{{ customConfigItemGroup.mapSelectionMode | lowercase }}</strong> mode for\n\t\t\t\t\t\t<strong>{{ customConfigItemGroup.mapNames }}</strong>\n\t\t\t\t\t</span>\n\t\t\t\t\t<i ng-show=\"!collapsed\" class=\"collapse-icon fa fa-arrow-down\"></i>\n\t\t\t\t\t<i ng-show=\"collapsed\" class=\"collapse-icon fa fa-arrow-up\"></i>\n\t\t\t\t</md-button>\n\n\t\t\t\t<div class=\"collapsable\" ng-show=\"collapsed\">\n\t\t\t\t\t<div class=\"custom-configs-item\" ng-repeat=\"customConfig in customConfigItemGroup.customConfigItems\">\n\t\t\t\t\t\t<md-button\n\t\t\t\t\t\t\tclass=\"button-hovering\"\n\t\t\t\t\t\t\tng-click=\"$ctrl.applyCustomConfig(customConfig.id)\"\n\t\t\t\t\t\t\tng-disabled=\"!customConfig.isApplicable\"\n\t\t\t\t\t\t\ttitle=\"{{\n\t\t\t\t\t\t\t\tcustomConfig.isApplicable\n\t\t\t\t\t\t\t\t\t? 'Apply Custom Config'\n\t\t\t\t\t\t\t\t\t: 'This one is applicable for map(s) ' +\n\t\t\t\t\t\t\t\t\t customConfig.mapNames +\n\t\t\t\t\t\t\t\t\t ' in ' +\n\t\t\t\t\t\t\t\t\t customConfig.mapSelectionMode +\n\t\t\t\t\t\t\t\t\t ' mode only.'\n\t\t\t\t\t\t\t}}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ customConfig.name }}\n\t\t\t\t\t\t</md-button>\n\n\t\t\t\t\t\t<md-button\n\t\t\t\t\t\t\tng-click=\"$ctrl.removeCustomConfig(customConfig.id, $index, $parent.$index)\"\n\t\t\t\t\t\t\tmd-prevent-menu-close=\"md-prevent-menu-close\"\n\t\t\t\t\t\t\tclass=\"action-button remove button-hovering\"\n\t\t\t\t\t\t\ttitle=\"Remove Custom Config\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<i class=\"fa fa-minus-square\"></i>\n\t\t\t\t\t\t</md-button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</md-menu-item>\n\t\t\t<button\n\t\t\t\tng-show=\"$ctrl._viewModel.showNonApplicableButton\"\n\t\t\t\tng-click=\"$ctrl.toggleNonApplicableItems();\"\n\t\t\t\tmd-prevent-menu-close=\"md-prevent-menu-close\"\n\t\t\t>\n\t\t\t\t{{ $ctrl.isExpanded() ? \"Hide non-applicable Custom Views\" : \"Show non-applicable Custom Views\" }}\n\t\t\t\t<i ng-class=\"$ctrl.isExpanded() ? 'fa fa-angle-up' : 'fa fa-angle-down'\"></i>\n\t\t\t</button>\n\t\t</md-menu-content>\n\t</md-menu>\n\n\t<md-menu class=\"custom-configs-component\">\n\t\t<md-button\n\t\t\tclass=\"custom-configs-button plus\"\n\t\t\tng-click=\"$ctrl.showAddCustomConfigSettings();\"\n\t\t\ttitle=\"Quick save current view as a Custom View\"\n\t\t>\n\t\t\t<i class=\"fa fa-plus\"></i>\n\t\t</md-button>\n\t\t<md-menu-content></md-menu-content>\n\t</md-menu>\n</div>\n";
|
|
242019
242307
|
// Exports
|
|
242020
242308
|
module.exports = code;
|
|
242021
242309
|
|
|
@@ -242028,7 +242316,7 @@ module.exports = code;
|
|
|
242028
242316
|
/***/ ((module) => {
|
|
242029
242317
|
|
|
242030
242318
|
// Module
|
|
242031
|
-
var code = "<md-dialog class=\"custom-config-dialog\">\n\t<md-toolbar>\n\t\t<div class=\"md-toolbar-tools\">\n\t\t\t<h2>Add Custom
|
|
242319
|
+
var code = "<md-dialog class=\"custom-config-dialog\">\n\t<md-toolbar>\n\t\t<div class=\"md-toolbar-tools\">\n\t\t\t<h2>Add Custom View</h2>\n\t\t</div>\n\t</md-toolbar>\n\n\t<md-dialog-content>\n\t\t<div class=\"md-dialog-content\">\n\t\t\t<md-input-container class=\"md-block\">\n\t\t\t\t<label>View Name</label>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"custom-config-input\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tng-model=\"$ctrl._viewModel.customConfigName\"\n\t\t\t\t\tng-on-show=\"$ctrl.validateCustomConfigName()\"\n\t\t\t\t\tng-on-keyup=\"$ctrl.validateCustomConfigName()\"\n\t\t\t\t/>\n\t\t\t</md-input-container>\n\t\t\t<div class=\"md-block\" ng-show=\"$ctrl._viewModel.addErrorMessage.length > 0\">\n\t\t\t\t<div class=\"error\">\n\t\t\t\t\t<i class=\"fa fa-warning\"></i>\n\t\t\t\t\t<span>{{ $ctrl._viewModel.addErrorMessage }}</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</md-dialog-content>\n\n\t<md-dialog-actions>\n\t\t<span class=\"warning\" ng-show=\"$ctrl._viewModel.localStorageSizeWarningMessage.length > 0\">\n\t\t\t<span>{{ $ctrl._viewModel.localStorageSizeWarningMessage }}</span>\n\t\t</span>\n\t\t<span ng-show=\"$ctrl._viewModel.localStorageSizeWarningMessage.length > 0\">\n\t\t\t<md-button\n\t\t\t\tng-click=\"$ctrl.showPurgeConfirmDialog()\"\n\t\t\t\tclass=\"md-warn\"\n\t\t\t\ttitle=\"Download old unused Custom Views as a backup file and then delete them in the browser.\"\n\t\t\t\t>Download & Purge ...</md-button\n\t\t\t>\n\t\t</span>\n\n\t\t<md-button ng-click=\"$ctrl.addCustomConfig()\" ng-disabled=\"!$ctrl.isNewCustomConfigValid()\" class=\"md-primary\">Add</md-button>\n\t</md-dialog-actions>\n</md-dialog>\n";
|
|
242032
242320
|
// Exports
|
|
242033
242321
|
module.exports = code;
|
|
242034
242322
|
|
|
@@ -242171,7 +242459,46 @@ module.exports = code;
|
|
|
242171
242459
|
/***/ ((module) => {
|
|
242172
242460
|
|
|
242173
242461
|
// Module
|
|
242174
|
-
var code = "<
|
|
242462
|
+
var code = "<cc-file-panel-state-buttons\n\t[is-delta-state]=\"$ctrl._viewModel.isDeltaState\"\n\t[handle-standard-button-clicked]=\"$ctrl.selectRecentPartialFiles\"\n\t[handle-delta-button-clicked]=\"$ctrl.onDeltaStateSelected\"\n></cc-file-panel-state-buttons>\n\n<cc-file-panel-file-selector\n\tstyle=\"display: inline-block; width: 200px\"\n\tng-show=\"!$ctrl._viewModel.isDeltaState\"\n\t[selected-file-names]=\"$ctrl._viewModel.selectedFileNames.partial\"\n\t[handle-selected-files-changed]=\"$ctrl.onPartialFilesChange\"\n\t[handle-select-all-partial-files]=\"$ctrl.selectAllPartialFiles\"\n\t[handle-select-zero-partial-files]=\"$ctrl.selectZeroPartialFiles\"\n\t[handle-invert-selected-partial-files]=\"$ctrl.invertPartialFileSelection\"\n\t[handle-on-selection-closed]=\"$ctrl.onPartialSelectionClosed\"\n\t[files]=\"$ctrl._viewModel.files\"\n></cc-file-panel-file-selector>\n\n<cc-file-panel-delta-selector\n\tng-show=\"$ctrl._viewModel.isDeltaState\"\n\t[pictogram-upper-color]=\"$ctrl._viewModel.pictogramUpperColor\"\n\t[pictogram-lower-color]=\"$ctrl._viewModel.pictogramLowerColor\"\n\t[handle-delta-reference-file-change]=\"$ctrl.onDeltaReferenceFileChange\"\n\t[handle-delta-comparison-file-change]=\"$ctrl.onDeltaComparisonFileChange\"\n\t[files]=\"$ctrl._viewModel.files\"\n></cc-file-panel-delta-selector>\n";
|
|
242463
|
+
// Exports
|
|
242464
|
+
module.exports = code;
|
|
242465
|
+
|
|
242466
|
+
/***/ }),
|
|
242467
|
+
|
|
242468
|
+
/***/ "./app/codeCharta/ui/filePanel/filePanelDeltaSelector/filePanelDeltaSelector.component.html":
|
|
242469
|
+
/*!**************************************************************************************************!*\
|
|
242470
|
+
!*** ./app/codeCharta/ui/filePanel/filePanelDeltaSelector/filePanelDeltaSelector.component.html ***!
|
|
242471
|
+
\**************************************************************************************************/
|
|
242472
|
+
/***/ ((module) => {
|
|
242473
|
+
|
|
242474
|
+
// Module
|
|
242475
|
+
var code = "<mat-select\n\tclass=\"delta-select\"\n\tplaceholder=\"select reference file\"\n\t[(ngModel)]=\"selectedDeltaReferenceFile\"\n\t(selectionChange)=\"handleDeltaReferenceFileChange(selectedDeltaReferenceFile)\"\n>\n\t<mat-option *ngFor=\"let file of files\" [value]=\"file.file.fileMeta.fileName\">\n\t\t{{ file.file.fileMeta.fileName }}\n\t</mat-option>\n</mat-select>\n\n<div class=\"pictogram\" [style.background]=\"'linear-gradient(' + pictogramUpperColor + ' 50%, ' + pictogramLowerColor + ' 50%)'\"></div>\n\n<mat-select\n\tclass=\"delta-select\"\n\tplaceholder=\"select comparison file\"\n\t[(ngModel)]=\"selectedDeltaComparisonFile\"\n\t(selectionChange)=\"handleDeltaComparisonFileChange(selectedDeltaComparisonFile)\"\n>\n\t<mat-option *ngFor=\"let file of files\" [value]=\"file.file.fileMeta.fileName\">\n\t\t{{ file.file.fileMeta.fileName }}\n\t</mat-option>\n</mat-select>\n";
|
|
242476
|
+
// Exports
|
|
242477
|
+
module.exports = code;
|
|
242478
|
+
|
|
242479
|
+
/***/ }),
|
|
242480
|
+
|
|
242481
|
+
/***/ "./app/codeCharta/ui/filePanel/filePanelFileSelector/filePanelFileSelector.component.html":
|
|
242482
|
+
/*!************************************************************************************************!*\
|
|
242483
|
+
!*** ./app/codeCharta/ui/filePanel/filePanelFileSelector/filePanelFileSelector.component.html ***!
|
|
242484
|
+
\************************************************************************************************/
|
|
242485
|
+
/***/ ((module) => {
|
|
242486
|
+
|
|
242487
|
+
// Module
|
|
242488
|
+
var code = "<mat-select\n\tclass=\"standard-select\"\n\t[(ngModel)]=\"selectedFileNames\"\n\t(selectionChange)=\"handleSelectedFilesChanged(selectedFileNames)\"\n\tname=\"recentFiles\"\n\t[placeholder]=\"selectedFileNames\"\n\tmultiple\n\t(closed)=\"handleOnSelectionClosed()\"\n>\n\t<div class=\"actions\">\n\t\t<button mat-button (click)=\"handleSelectAllPartialFiles()\">All</button>\n\t\t<button mat-button (click)=\"handleSelectZeroPartialFiles()\">None</button>\n\t\t<button mat-button (click)=\"handleInvertSelectedPartialFiles()\">Invert</button>\n\t</div>\n\t<mat-option *ngFor=\"let file of files\" [value]=\"file.file.fileMeta.fileName\">\n\t\t{{ file.file.fileMeta.fileName }}\n\t</mat-option>\n</mat-select>\n";
|
|
242489
|
+
// Exports
|
|
242490
|
+
module.exports = code;
|
|
242491
|
+
|
|
242492
|
+
/***/ }),
|
|
242493
|
+
|
|
242494
|
+
/***/ "./app/codeCharta/ui/filePanel/filePanelStateButtons/filePanelStateButtons.component.html":
|
|
242495
|
+
/*!************************************************************************************************!*\
|
|
242496
|
+
!*** ./app/codeCharta/ui/filePanel/filePanelStateButtons/filePanelStateButtons.component.html ***!
|
|
242497
|
+
\************************************************************************************************/
|
|
242498
|
+
/***/ ((module) => {
|
|
242499
|
+
|
|
242500
|
+
// Module
|
|
242501
|
+
var code = "<div class=\"mode-chooser\">\n\t<button\n\t\tmat-button\n\t\tclass=\"state-selector-button mode-selector left\"\n\t\t(click)=\"handleStandardButtonClicked()\"\n\t\t[class.current]=\"!isDeltaState\"\n\t>\n\t\t<span class=\"text\">Standard</span>\n\t</button>\n\t<button\n\t\tmat-button\n\t\tclass=\"state-selector-button mode-selector right\"\n\t\t(click)=\"handleDeltaButtonClicked()\"\n\t\t[class.current]=\"isDeltaState\"\n\t>\n\t\t<span class=\"text\">Delta</span>\n\t</button>\n</div>\n";
|
|
242175
242502
|
// Exports
|
|
242176
242503
|
module.exports = code;
|
|
242177
242504
|
|
|
@@ -242353,7 +242680,7 @@ module.exports = code;
|
|
|
242353
242680
|
/***/ ((module) => {
|
|
242354
242681
|
|
|
242355
242682
|
// Module
|
|
242356
|
-
var code = "<div *ngIf=\"!node.isExcluded\" class=\"tree-element-{{ depth }} {{ (node | isNodeLeaf) ? 'tree-leaf' : 'tree-parent' }}\">\n\t<div\n\t\tid=\"{{ node.path }}\"\n\t\tclass=\"tree-element-label-{{ depth }} tree-element-label\"\n\t\t[class.hovered]=\"(hoveredBuildingPath$ | async) === node.path\"\n\t\t[class.marked]=\"
|
|
242683
|
+
var code = "<div *ngIf=\"!node.isExcluded\" class=\"tree-element-{{ depth }} {{ (node | isNodeLeaf) ? 'tree-leaf' : 'tree-parent' }}\">\n\t<div\n\t\tid=\"{{ node.path }}\"\n\t\tclass=\"tree-element-label-{{ depth }} tree-element-label\"\n\t\t[class.hovered]=\"(hoveredBuildingPath$ | async) === node.path\"\n\t\t[class.marked]=\"(rightClickedNodeData$ | async)?.nodeId === node.id\"\n\t\t(mouseenter)=\"onMouseEnter()\"\n\t\t(mouseleave)=\"onMouseLeave()\"\n\t\t(click)=\"toggleOpen()\"\n\t\t(contextmenu)=\"openNodeContextMenu($event)\"\n\t>\n\t\t<cc-map-tree-view-item-icon [node]=\"node\" [isOpen]=\"isOpen\"></cc-map-tree-view-item-icon>\n\t\t<cc-map-tree-view-item-name\n\t\t\t[node]=\"node\"\n\t\t\t[isHovered]=\"(hoveredBuildingPath$ | async) === node.path\"\n\t\t\t[unaryValue]=\"node.attributes.unary\"\n\t\t>\n\t\t</cc-map-tree-view-item-name>\n\n\t\t<cc-map-tree-view-item-option-buttons\n\t\t\t*ngIf=\"(hoveredBuildingPath$ | async) === node.path\"\n\t\t\t[isFlattened]=\"node.isFlattened\"\n\t\t\t[openNodeContextMenu]=\"openNodeContextMenu\"\n\t\t></cc-map-tree-view-item-option-buttons>\n\t</div>\n\n\t<div class=\"tree-element-children tree-element-children-{{ depth }}\">\n\t\t<ng-container *ngIf=\"isOpen\">\n\t\t\t<div *ngFor=\"let childNode of node.children\">\n\t\t\t\t<cc-map-tree-view-level [node]=\"childNode\" [depth]=\"depth + 1\"></cc-map-tree-view-level>\n\t\t\t</div>\n\t\t</ng-container>\n\t</div>\n</div>\n";
|
|
242357
242684
|
// Exports
|
|
242358
242685
|
module.exports = code;
|
|
242359
242686
|
|
|
@@ -242506,14 +242833,14 @@ module.exports = code;
|
|
|
242506
242833
|
|
|
242507
242834
|
/***/ }),
|
|
242508
242835
|
|
|
242509
|
-
/***/ "./app/codeCharta/ui/nodeContextMenu/
|
|
242510
|
-
|
|
242511
|
-
!*** ./app/codeCharta/ui/nodeContextMenu/
|
|
242512
|
-
|
|
242836
|
+
/***/ "./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.html":
|
|
242837
|
+
/*!**************************************************************************************!*\
|
|
242838
|
+
!*** ./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.html ***!
|
|
242839
|
+
\**************************************************************************************/
|
|
242513
242840
|
/***/ ((module) => {
|
|
242514
242841
|
|
|
242515
242842
|
// Module
|
|
242516
|
-
var code = "<cc-color-picker\n\t[hexColor]=\"'#ff0000'\"\n\t(onColorChange)=\"markFolder($event)\"\n\t[triggerTemplate]=\"colorPickerTriggerTemplate\"\n></cc-color-picker>\n\n<ng-template #colorPickerTriggerTemplate>\n\t<div class=\"cc-color-picker-trigger fa fa-paint-brush\"></div>\n</ng-template>\n";
|
|
242843
|
+
var code = "<div class=\"row\" *ngIf=\"node$ | async as node\">\n\t<ng-container *ngFor=\"let markFolderItem of markFolderItems$ | async\">\n\t\t<button\n\t\t\t[style.background-color]=\"markFolderItem.color\"\n\t\t\t(click)=\"markFolderItem.isMarked ? unmarkFolder(node.path) : markFolder(node.path, markFolderItem.color)\"\n\t\t\tclass=\"colorButton\"\n\t\t\ttitle=\"Colorize folder\"\n\t\t>\n\t\t\t<i class=\"fa fa-times\" *ngIf=\"markFolderItem.isMarked\"></i>\n\t\t</button>\n\t</ng-container>\n\n\t<cc-color-picker\n\t\t[hexColor]=\"'#ff0000'\"\n\t\t(onColorChange)=\"markFolder(node.path, $event)\"\n\t\t[triggerTemplate]=\"colorPickerTriggerTemplate\"\n\t></cc-color-picker>\n</div>\n\n<ng-template #colorPickerTriggerTemplate>\n\t<div class=\"cc-color-picker-trigger fa fa-paint-brush\"></div>\n</ng-template>\n";
|
|
242517
242844
|
// Exports
|
|
242518
242845
|
module.exports = code;
|
|
242519
242846
|
|
|
@@ -242530,7 +242857,7 @@ var ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___ = __webpack_require__(/*! ../../../
|
|
|
242530
242857
|
var ___HTML_LOADER_IMPORT_0___ = __webpack_require__(/*! ../../../assets/flatten.png */ "./app/assets/flatten.png");
|
|
242531
242858
|
// Module
|
|
242532
242859
|
var ___HTML_LOADER_REPLACEMENT_0___ = ___HTML_LOADER_GET_SOURCE_FROM_IMPORT___(___HTML_LOADER_IMPORT_0___);
|
|
242533
|
-
var code = "<md-card id=\"codemap-context-menu\" ng-show=\"$ctrl.
|
|
242860
|
+
var code = "<md-card id=\"codemap-context-menu\" ng-show=\"$ctrl.rightClickedNodeData !== null\">\n\t<div ng-if=\"$ctrl.nodeIsFolder()\">\n\t\t<cc-mark-folder-row></cc-mark-folder-row>\n\t\t<md-divider></md-divider>\n\t</div>\n\n\t<div class=\"button-group\">\n\t\t<md-button ng-disabled=\"true\" title=\"{{ $ctrl._viewModel.nodePath }}\">\n\t\t\t{{ $ctrl._viewModel.lastPartOfNodePath }}\n\t\t</md-button>\n\n\t\t<cc-focus-buttons [code-map-node]=\"$ctrl._viewModel.codeMapNode\"></cc-focus-buttons>\n\t\t<md-button\n\t\t\tng-if=\"!$ctrl._viewModel.codeMapNode.isFlattened\"\n\t\t\tng-click=\"$ctrl.flattenNode()\"\n\t\t\tid=\"flatten-button\"\n\t\t\ttitle=\"Flatten node and children-nodes, but keep an empty space\"\n\t\t>\n\t\t\t<img alt=\"flattenIcon\" class=\"png-icon\" src=\"" + ___HTML_LOADER_REPLACEMENT_0___ + "\" style=\"width: 17px; height: 17px\" />\n\t\t\tFlatten\n\t\t</md-button>\n\t\t<md-button\n\t\t\tng-if=\"$ctrl._viewModel.codeMapNode.isFlattened\"\n\t\t\tng-click=\"$ctrl.showFlattenedNode()\"\n\t\t\ttitle=\"Show node and children-nodes\"\n\t\t\t><img alt=\"flattenIcon\" class=\"png-icon\" src=\"" + ___HTML_LOADER_REPLACEMENT_0___ + "\" style=\"width: 17px; height: 17px\" /> Show</md-button\n\t\t>\n\t\t<md-button\n\t\t\tng-if=\"!$ctrl.isNodeConstantlyHighlighted()\"\n\t\t\ttitle=\"Highlight node constantly\"\n\t\t\tng-click=\"$ctrl.addNodeToConstantHighlight()\"\n\t\t\t><i class=\"fa fa-cubes\"></i> Keep Highlight</md-button\n\t\t>\n\t\t<md-button\n\t\t\tng-if=\"$ctrl.isNodeConstantlyHighlighted()\"\n\t\t\ttitle=\"Remove constant highlight\"\n\t\t\tng-click=\"$ctrl.removeNodeFromConstantHighlight()\"\n\t\t\t><i class=\"fa fa-cubes\"></i> Remove Highlight</md-button\n\t\t>\n\n\t\t<md-button ng-click=\"$ctrl.excludeNode()\" id=\"exclude-button\" title=\"Exclude node and children-nodes and reorder the CodeMap\"\n\t\t\t><i class=\"fa fa-ban\"></i> Exclude</md-button\n\t\t>\n\t</div>\n</md-card>\n";
|
|
242534
242861
|
// Exports
|
|
242535
242862
|
module.exports = code;
|
|
242536
242863
|
|
|
@@ -242595,7 +242922,7 @@ module.exports = code;
|
|
|
242595
242922
|
/***/ ((module) => {
|
|
242596
242923
|
|
|
242597
242924
|
// Module
|
|
242598
|
-
var code = "<search-panel-component></search-panel-component>\n\n<md-card class=\"scenario-card\" ng-attr-id=\"scenario-card\" ng-mouseup=\"$ctrl.onClick()\">\n\t<div class=\"section\">\n\t\t<div class=\"section-header\">\n\t\t\t<scenario-drop-down-component></scenario-drop-down-component>\n\t\t</div>\n\t\t<span class=\"section-title no-hover\">Metric Templates</span>\n\t</div>\n</md-card>\n\n<md-card class=\"custom-configs-card\" ng-show=\"$ctrl._viewModel.experimentalFeaturesEnabled\" ng-attr-id=\"custom-configs-card\">\n\t<div class=\"section\">\n\t\t<div class=\"section-header\">\n\t\t\t<custom-configs-component></custom-configs-component>\n\t\t</div>\n\t\t<span class=\"section-title no-hover\">
|
|
242925
|
+
var code = "<search-panel-component></search-panel-component>\n\n<md-card class=\"scenario-card\" ng-attr-id=\"scenario-card\" ng-mouseup=\"$ctrl.onClick()\">\n\t<div class=\"section\">\n\t\t<div class=\"section-header\">\n\t\t\t<scenario-drop-down-component></scenario-drop-down-component>\n\t\t</div>\n\t\t<span class=\"section-title no-hover\">Metric Templates</span>\n\t</div>\n</md-card>\n\n<md-card class=\"custom-configs-card\" ng-show=\"$ctrl._viewModel.experimentalFeaturesEnabled\" ng-attr-id=\"custom-configs-card\">\n\t<div class=\"section\">\n\t\t<div class=\"section-header\">\n\t\t\t<custom-configs-component></custom-configs-component>\n\t\t</div>\n\t\t<span class=\"section-title no-hover\">Custom Views</span>\n\t</div>\n</md-card>\n\n<md-card class=\"ai-card\" ng-show=\"$ctrl._viewModel.experimentalFeaturesEnabled\" ng-attr-id=\"ai-card\">\n\t<div class=\"section\">\n\t\t<div class=\"section-header\">\n\t\t\t<artificial-intelligence-component></artificial-intelligence-component>\n\t\t</div>\n\t\t<span class=\"section-title no-hover\">Suspicious Metrics</span>\n\t</div>\n</md-card>\n\n<md-card\n\tng-attr-id=\"area-metric-card\"\n\tclass=\"area-metric-card metric-card\"\n\tng-class=\"{\n\t\texpanded: $ctrl._viewModel.panelSelection === $ctrl._viewModel.panelSelectionValues.AREA_PANEL_OPEN\n\t}\"\n>\n\t<div class=\"section\">\n\t\t<div class=\"section-header\">\n\t\t\t<area-metric-chooser-component></area-metric-chooser-component>\n\t\t</div>\n\t\t<span\n\t\t\tclass=\"section-title\"\n\t\t\tng-click=\"$ctrl.toggle($ctrl._viewModel.panelSelectionValues.AREA_PANEL_OPEN)\"\n\t\t\ttitle=\"Show area metric settings\"\n\t\t\t>Area Metric Options <i class=\"fa fa-angle-down\"></i\n\t\t></span>\n\t</div>\n\t<area-settings-panel-component\n\t\tng-class=\"{\n\t\t\thidden: $ctrl._viewModel.panelSelection !== $ctrl._viewModel.panelSelectionValues.AREA_PANEL_OPEN\n\t\t}\"\n\t></area-settings-panel-component>\n</md-card>\n\n<md-card\n\tng-attr-id=\"height-metric-card\"\n\tclass=\"height-metric-card metric-card\"\n\tng-class=\"{\n\t\texpanded: $ctrl._viewModel.panelSelection === $ctrl._viewModel.panelSelectionValues.HEIGHT_PANEL_OPEN\n\t}\"\n>\n\t<div class=\"section\">\n\t\t<div class=\"section-header\">\n\t\t\t<height-metric-chooser-component></height-metric-chooser-component>\n\t\t</div>\n\t\t<span\n\t\t\tclass=\"section-title\"\n\t\t\tng-click=\"$ctrl.toggle($ctrl._viewModel.panelSelectionValues.HEIGHT_PANEL_OPEN)\"\n\t\t\ttitle=\"Show height metric settings\"\n\t\t\t>Height Metric Options <i class=\"fa fa-angle-down\"></i\n\t\t></span>\n\t</div>\n\t<height-settings-panel-component\n\t\tng-class=\"{\n\t\t\thidden: $ctrl._viewModel.panelSelection !== $ctrl._viewModel.panelSelectionValues.HEIGHT_PANEL_OPEN\n\t\t}\"\n\t></height-settings-panel-component>\n</md-card>\n\n<md-card\n\tng-attr-id=\"color-metric-card\"\n\tclass=\"color-metric-card metric-card\"\n\tng-class=\"{\n\t\texpanded: $ctrl._viewModel.panelSelection === $ctrl._viewModel.panelSelectionValues.COLOR_PANEL_OPEN\n\t}\"\n\tng-show=\"!$ctrl._viewModel.isDeltaState\"\n>\n\t<div class=\"section\">\n\t\t<div class=\"section-header\">\n\t\t\t<color-metric-chooser-component></color-metric-chooser-component>\n\t\t</div>\n\t\t<span\n\t\t\tclass=\"section-title\"\n\t\t\tng-click=\"$ctrl.toggle($ctrl._viewModel.panelSelectionValues.COLOR_PANEL_OPEN)\"\n\t\t\ttitle=\"Show color metric settings\"\n\t\t\t>Color Metric Options <i class=\"fa fa-angle-down\"></i\n\t\t></span>\n\t</div>\n\t<color-settings-panel-component\n\t\tng-class=\"{\n\t\t\thidden: $ctrl._viewModel.panelSelection !== $ctrl._viewModel.panelSelectionValues.COLOR_PANEL_OPEN\n\t\t}\"\n\t></color-settings-panel-component>\n</md-card>\n\n<md-card\n\tng-attr-id=\"edge-metric-card\"\n\tclass=\"edge-metric-card metric-card\"\n\tng-class=\"{\n\t\texpanded: $ctrl._viewModel.panelSelection === $ctrl._viewModel.panelSelectionValues.EDGE_PANEL_OPEN\n\t}\"\n\tng-show=\"!$ctrl._viewModel.isDeltaState\"\n>\n\t<div class=\"section\">\n\t\t<div class=\"section-header\">\n\t\t\t<edge-chooser-component></edge-chooser-component>\n\t\t</div>\n\t\t<span\n\t\t\tclass=\"section-title\"\n\t\t\tng-click=\"$ctrl.toggle($ctrl._viewModel.panelSelectionValues.EDGE_PANEL_OPEN)\"\n\t\t\ttitle=\"Show edge metric settings\"\n\t\t>\n\t\t\tEdge Metric Options <i class=\"fa fa-angle-down\"></i>\n\t\t</span>\n\t\t<edge-settings-panel-component\n\t\t\tng-class=\"{\n\t\t\t\thidden: $ctrl._viewModel.panelSelection !== $ctrl._viewModel.panelSelectionValues.EDGE_PANEL_OPEN\n\t\t\t}\"\n\t\t></edge-settings-panel-component>\n\t</div>\n</md-card>\n\n<md-card ng-attr-id=\"color-settings-card\" class=\"color-settings-card\" ng-show=\"$ctrl._viewModel.isDeltaState\">\n\t<div\n\t\tclass=\"color-section\"\n\t\tlayout=\"row\"\n\t\tlayout-align=\"space-between center\"\n\t\tng-click=\"$ctrl.toggle($ctrl._viewModel.panelSelectionValues.COLOR_PANEL_OPEN)\"\n\t\ttitle=\"Show color settings\"\n\t>\n\t\t<span>\n\t\t\t<i class=\"fa fa-paint-brush color-icon\"></i>\n\t\t\tColor Settings\n\t\t</span>\n\t\t<i class=\"fa fa-sort-down color-dropdown-icon\"></i>\n\t</div>\n\t<color-settings-panel-component\n\t\tng-class=\"{\n\t\t\thidden: $ctrl._viewModel.panelSelection !== $ctrl._viewModel.panelSelectionValues.COLOR_PANEL_OPEN\n\t\t}\"\n\t></color-settings-panel-component>\n</md-card>\n";
|
|
242599
242926
|
// Exports
|
|
242600
242927
|
module.exports = code;
|
|
242601
242928
|
|
|
@@ -242712,7 +243039,7 @@ module.exports = code;
|
|
|
242712
243039
|
/***/ ((module) => {
|
|
242713
243040
|
|
|
242714
243041
|
// Module
|
|
242715
|
-
var code = "<div class=\"tool-bar\" ng-mouseup=\"$ctrl.onClick()\">\n\t<file-chooser-directive></file-chooser-directive>\n\t<download-button-component ng-show=\"!$ctrl._viewModel.experimentalFeaturesEnabled\"></download-button-component>\n\t<screenshot-button-component></screenshot-button-component>\n\t<cc-export-threed-map-button></cc-export-threed-map-button>\n\n\t<file-panel
|
|
243042
|
+
var code = "<div class=\"tool-bar\" ng-mouseup=\"$ctrl.onClick()\">\n\t<file-chooser-directive></file-chooser-directive>\n\t<download-button-component ng-show=\"!$ctrl._viewModel.experimentalFeaturesEnabled\"></download-button-component>\n\t<screenshot-button-component></screenshot-button-component>\n\t<cc-export-threed-map-button></cc-export-threed-map-button>\n\n\t<cc-file-panel ng-class=\"{ hidden: $ctrl._viewModel.isNodeHovered }\"></cc-file-panel>\n\t<node-path-panel-component ng-class=\"{ hidden: !$ctrl._viewModel.isNodeHovered }\"></node-path-panel-component>\n\n\t<div class=\"right-aligned\">\n\t\t<loading-gif-map-component></loading-gif-map-component>\n\t\t<span>Presentation mode</span>\n\t\t<presentation-mode-button-component></presentation-mode-button-component>\n\t\t<span>Global Configuration</span>\n\t\t<global-settings-button-component></global-settings-button-component>\n\t</div>\n</div>\n";
|
|
242716
243043
|
// Exports
|
|
242717
243044
|
module.exports = code;
|
|
242718
243045
|
|
|
@@ -242738,7 +243065,7 @@ module.exports = code;
|
|
|
242738
243065
|
/***/ ((module) => {
|
|
242739
243066
|
|
|
242740
243067
|
// Module
|
|
242741
|
-
var code = "<h1>Change Log</h1>\n<p>All notable changes to this project will be documented in this file.</p>\n<p>The format is based on <a href=\"http://keepachangelog.com/\">Keep a Changelog</a>\nand this project adheres to <a href=\"http://semver.org/\">Semantic Versioning</a></p>\n<h2>[unreleased] (Added 🚀 | Changed | Removed 🗑 | Fixed 🐞 | Chore 👨💻 👩💻)</h2>\n<h2>[1.87.1] - 2022-01-17</h2>\n<h3>Changed</h3>\n<ul>\n<li>User-friendly renaming for display quality options <a href=\"https://github.com/MaibornWolff/codecharta/pull/2601\">#2601</a></li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix color of selected building in delta mode <a href=\"https://github.com/MaibornWolff/codecharta/pull/2603\">#2603</a></li>\n<li>Fix link to news page when clicking 'Know more' button changelog dialog <a href=\"https://github.com/MaibornWolff/codecharta/pull/2602\">#2602</a></li>\n</ul>\n<h2>[1.87.0] - 2022-01-11</h2>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Migrate <code>unfocus-button-component</code> to Angular.</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Remove suspicious metrics from custom map configurations <a href=\"https://github.com/MaibornWolff/codecharta/pull/2564\">#2564</a>.</li>\n<li>Add 'show/hide non-applicable CustomConfigs' button to Custom Configs menu <a href=\"https://github.com/MaibornWolff/codecharta/pull/2591\">#2591</a>.</li>\n</ul>\n<h2>[1.86.0] - 2021-12-20</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Add 3D export feature for 3D printing <a href=\"https://github.com/MaibornWolff/codecharta/pull/2561\">#2561</a>. \n \n</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Replace all color pickers in the context of ongoing Angular migration <a href=\"https://github.com/MaibornWolff/codecharta/pull/2560\">#2560</a>.</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix showing names of custom configs properly <a href=\"https://github.com/MaibornWolff/codecharta/pull/2557\">#2557</a>.</li>\n<li>Fix minor memory leak in context menu for code map buildings <a href=\"https://github.com/MaibornWolff/codecharta/issues/2565\">#2565</a>.</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Migrate legend panel to Angular <a href=\"https://github.com/MaibornWolff/codecharta/pull/2560\">#2560</a>.</li>\n</ul>\n<h2>[1.85.0] - 2021-12-13</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix delta values of secondary metrics not shown in delta mode within attribute side bar <a href=\"https://github.com/MaibornWolff/codecharta/issues/2539\">#2539</a>.</li>\n<li>Use icon tag instead of font awesome icon <a href=\"https://github.com/MaibornWolff/codecharta/pull/2537\">#2537</a>.</li>\n<li>Rename text for placeholder of metric chooser <a href=\"https://github.com/MaibornWolff/codecharta/pull/2547\">#2547</a></li>\n<li>Fix attribute type selector of primary edge metric not shown <a href=\"https://github.com/MaibornWolff/codecharta/issues/2528\">#2528</a>.</li>\n<li>Identical files and files with identical file names but different hashes can be loaded <a href=\"https://github.com/MaibornWolff/codecharta/pull/2548\">#2548</a></li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Remove <code>secondaryMetrics</code> from store and remove <code>secondaryMetrics.service</code> as the data can be derived from selected node <a href=\"https://github.com/MaibornWolff/codecharta/pull/2527\">#2527</a>.</li>\n<li>Migrate <code>attribute-side-bar-component</code> to Angular <a href=\"https://github.com/MaibornWolff/codecharta/pull/2527\">#2527</a>.</li>\n<li>Switch from Webpack 4 Loaders to Asset Module to load icons properly with css-loader 6.x <a href=\"https://github.com/MaibornWolff/codecharta/pull/2542\">#2542</a>.</li>\n</ul>\n<h3>Removed 🗑</h3>\n<ul>\n<li>Remove notification dialog when deleting a custom config <a href=\"https://github.com/MaibornWolff/codecharta/pull/2553\">#2553</a></li>\n</ul>\n<h2>[1.84.1] - 2021-11-29</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix compressed files not being loaded (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2525\">#2524</a>)</li>\n</ul>\n<h2>[1.84.0] - 2021-11-22</h2>\n<h3>Changed</h3>\n<ul>\n<li>Improved the UI and usability of the Suspicious Metrics Feature (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2494\">#2376</a>) \n<ul>\n<li>The Metrics and the Analysis are now split in two menus \n</li>\n<li>The Suspicious Metrics are now sorted with the Very High Risk on top \n</li>\n<li>The bar in the analysis shows the percentages \n</li>\n</ul>\n</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix showing labels when weighted gradient on yellow buildings in color metric options are enabled (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2511\">#2511</a>)</li>\n<li>Fix rounding of the sum of percentages in risk profile (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2516\">#2393</a>)</li>\n<li>Fix legend panel not having a background (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2510\">#2422</a>)</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Remove <code>nodeSearch.service.ts</code> and <code>searchedNodePaths</code> from store as they can be derived from <code>searchPattern</code> (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2495\">#2495</a>).</li>\n<li>Refactor where metric data are calculated (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2514\">#2514</a>).</li>\n<li>Migrate <code>attribute-type-selector-component</code> to Angular (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2519\">#2519</a>).</li>\n</ul>\n<h2>[1.83.1] - 2021-11-10</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix loading files from URL in Web Demo (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2494\">#2494</a>)</li>\n</ul>\n<h2>[1.83.0] - 2021-11-09</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix unwanted calculations of suspicious metrics when experimental features are disabled (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2471\">#2471</a>)</li>\n<li>Fix UI issues in the configuration panel (<a href=\"https://github.com/maibornwolff/codecharta/issues/2322\">#2322</a>)</li>\n<li>Fix tooltip of sorting order button in map tree view showing wrong sorting order (<a href=\"https://github.com/maibornwolff/codecharta/issues/2473\">#2473</a>)</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Calculate MD5 checksum when generating .cc.json files (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2450\">#2411</a>)</li>\n</ul>\n<h2>[1.82.0] - 2021-10-18</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix what's new section including the last opened version (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2453\">#2447</a>)</li>\n<li>Fix unfocus button text not showing correctly (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2439\">#2439</a>)</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Folders in the Folder structure view of the top left come now always before any files, regardless of the sort order.</li>\n</ul>\n<h2>[1.81.0] - 2021-10-11</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix color picker not being usable (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2439\">#2439</a>)</li>\n<li>Fix Changelog inconsistencies (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2425\">#2425</a>) \n</li>\n<li>Fix memory and performance issues related to drawing labels on floors/folders (<a href=\"https://github.com/MaibornWolff/codecharta/issues/2348\">#2348</a>).</li>\n<li>Hides legend block if label description is not available and adds new metric descriptions (<a href=\"https://github.com/maibornwolff/codecharta/issues/2377\">#2377</a>).</li>\n</ul>\n<h2>[1.80.0] - 2021-10-04</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Adds feature to display building colors as a gradients (<a href=\"https://github.com/MaibornWolff/codecharta/issues/2327\">#2327</a>).\n<ul>\n<li>\"Weighted Gradient\" only mixes colors in a small interval around the preset values.</li>\n<li>\"True Gradient\" mixes colors from the 0 to the highest value, the two preset color range values determine the balance.</li>\n<li>\"Absolute\" represents the old behaviour without gradients. \n</li>\n</ul>\n</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix broken file/node search #2389</li>\n<li>Fix changelog inconsistencies (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2425\">#2425</a>)</li>\n</ul>\n<h2>[1.79.0] - 2021-09-20</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Add metric descriptions to the frontend and show a translation next to the entry (<a href=\"https://github.com/MaibornWolff/codecharta/issues/2330\">#2330</a>) \n</li>\n<li>An option has been added to the global settings to enable copying screenshots to clipboard instead of saving them in a file (<a href=\"https://github.com/MaibornWolff/codecharta/issues/2326\">#2326</a>) \n</li>\n<li>Add changelog guidelines (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2358\">#2358</a>)</li>\n<li>A changelog dialog with the latest additions to CodeCharta appears on version update (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2342\">#1315</a>) \n</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix broken method call in screenshot feature.</li>\n<li>Improve changelog entries.</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Changing the background color and remove \"outgoing\" and \"incoming\" edges from the legend, if not applicable (<a href=\"https://github.com/MaibornWolff/codecharta/issues/2330\">#2330</a>)</li>\n<li>Improve the user experience for the AI Feature \"Suspicious Metrics and Risk Profiles\" and enable it for any programming language (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2362\">#2362</a>) \n</li>\n</ul>\n<h2>[1.78.0] - 2021-09-06</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>A changelog dialog with the latest additions to CodeCharta appears on version update (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1315\">#1315</a>)</li>\n<li>Add documentation for SCMLogParserV2 (<a href=\"https://github.com/maibornwolff/codecharta/issues/1349\">#1349</a>)</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Empty temporary label during hovering (<a href=\"https://github.com/maibornwolff/codecharta/issues/2328\">#2328</a>)</li>\n<li>Show the screenshot hotkey in the screenshot title (<a href=\"https://github.com/maibornwolff/codecharta/issues/2323\">#2323</a>)</li>\n<li>Improved rendering performance (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2345\">#2345</a>)</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Update GH-Pages and visualization dependencies (<a href=\"https://github.com/maibornwolff/codecharta/issues/2356\">#2356</a>)</li>\n</ul>\n<h2>[1.77.0] - 2021-07-30</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>The \"Color Metric Options\" panel and \"Legend\" panel display the maximum value of the selected metric instead of infinite. (<a href=\"https://github.com/maibornwolff/codecharta/issues/1520\">#1520</a>)</li>\n<li>Mark color-section as unimportant in delta mode (<a href=\"https://github.com/maibornwolff/codecharta/issues/769\">#769</a>)</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Small ui improvements added. (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1881\">#1881</a>)</li>\n<li>Numbers/Percentages always show in the distribution bar(<a href=\"https://github.com/MaibornWolff/codecharta/issues/1540\">#1540</a>)\n<ul>\n<li>Toggle between percentage and absolute numbers by clicking anywhere on the (expanded) distribution bar.</li>\n<li>The old expanded distribution bar is now accessible through a button.</li>\n</ul>\n</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>It is no longer possible to exclude all files on the map (<a href=\"https://github.com/MaibornWolff/codecharta/issues/901\">#901</a>)</li>\n</ul>\n<h2>[1.76.0] - 2021-07-13</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Custom metric scenarios which include the 'Color-Metric' (rloc) will now also save any changes made to the color scheme.</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Performance improvements when loading new files. (<a href=\"https://github.com/maibornwolff/codecharta/issues/1312\">#1312</a>)</li>\n</ul>\n<h2>[1.75.0] - 2021-07-05</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Imported files are now compressed by default. Use the -nc parameter to uncompress the files. (<a href=\"https://github.com/maibornwolff/codecharta/issues/1702\">#1702</a>)</li>\n<li>Export the current view as a png image by using \"Ctrl+Alt+S\" or clicking the corresponding button (<a href=\"https://github.com/MaibornWolff/codecharta/issues/674\">#674</a>)</li>\n<li>Show only labels of buildings according to a chosen color (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1347\">#1347</a>)</li>\n<li>New buttons to reset the color hex values and color metric thresholds separately (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1613\">#1613</a>) \n</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Metric aggregations now work as intended and are available from the sidebar when selecting folders (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1953\">#1953</a>)</li>\n<li>Opening new files does no longer remove old ones.\n<ul>\n<li>Already loaded files can be individually removed.</li>\n<li>The 'Multiple' view will select the latest files. \n</li>\n</ul>\n</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>It is now possible to rotate the map by rotating the view cube (<a href=\"https://github.com/MaibornWolff/codecharta/issues/353\">#353</a>)</li>\n</ul>\n<h2>[1.74.0] - 2021-05-31</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>SonarImport: SonarQube 8.8 support. Older versions are still supported.</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Only show labels for building included in the search</li>\n<li>Color slider not initialized correctly (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1592\">#1592</a>)</li>\n</ul>\n<h2>[1.73.0] - 2021-05-10</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Improve descriptions (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1879\">#1879</a>)\n\n<img src=\"https://user-images.githubusercontent.com/57844849/115393175-b2897b00-a1e1-11eb-8601-d2128f3469a3.png\" alt=\"option dialog\"></li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Excluding in delta mode is broken (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1578\">#1578</a>)\n(Inclusion and exclusion of files using wildcard searches in the flatten and exclude operations)</li>\n<li>Fix labels and lines missing a connection in some cases(<a href=\"https://github.com/MaibornWolff/codecharta/issues/1716\">#1716</a>)</li>\n<li>Ribbons resizing when expanding (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1952\">#1952</a>)</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Fix breaking changes with newest three-js version(<a href=\"https://github.com/MaibornWolff/codecharta/issues/1877\">#1877</a>)</li>\n</ul>\n<h2>[1.72.0] - 2021-04-22</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Hints for Global Settings (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1715\">#1715</a>)</li>\n<li>Indicate total nodes and excluded / flattened nodes in file explorer (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1880\">#1880</a>)</li>\n<li>Add path to node context menu (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1667\">#1667</a>)</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Made the header semi responsive (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1037\">#1037</a>)</li>\n</ul>\n<h2>[1.71.2] - 2021-03-16</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>DevOps pipeline changes</li>\n<li>Fixed web visualization in github</li>\n</ul>\n<h2>[1.71.1] - 2021-03-16</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>DevOps pipeline changes</li>\n</ul>\n<h2>[1.71.0] - 2021-03-16</h2>\n<h3>Changed</h3>\n<ul>\n<li>Disable unready AI function</li>\n<li>Fix linter errors</li>\n<li>Fix editorconfig</li>\n</ul>\n<h2>[1.70.2] - 2021-03-12</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>DevOps pipeline changes</li>\n<li>Project naming for Docker deployment</li>\n</ul>\n<h2>[1.70.1] - 2021-03-12</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>DevOps pipeline changes</li>\n</ul>\n<h2>[1.70.0] - 2021-03-09</h2>\n<h3>Changed</h3>\n<ul>\n<li>Render on demand (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1728\">#1728</a>)</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Memory leaks</li>\n</ul>\n<h2>[1.69.0] - 2021-02-23</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Added WebGL FXAA antialias & PixelRatio Options in order to achieve better resolution on high dpi displays(https://github.com/MaibornWolff/codecharta/pull/1551).\n<img src=\"https://user-images.githubusercontent.com/74670211/106582136-f4404900-6543-11eb-8f5b-5e1ec47457c7.png\" alt=\"option dialog\">\nThere are 4 available modes:\n<ul>\n<li><strong>standard mode</strong>: the pixel density is only applied to the small cube with standard browser aliasing</li>\n<li><strong>pixel ratio without aliasing</strong>: no antialiasing is used</li>\n<li><strong>pixel ration with FXAA</strong>: Nvidia FXAA antialiasing shader is used as an alisaing technique. this has better perfromance the standard browser aliasing aliasing</li>\n<li><strong>pixel ration with MSAA</strong>: this is the best aliasing quality, slower then FXAA.</li>\n</ul>\n</li>\n<li>Added GPU Stats (only in dev mode)</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Unfocus now respects the focus depth (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1099\">#1099</a>)</li>\n<li>Track anonymous usage data also for older CodeCharta API versions and fix some minor bugs.</li>\n</ul>\n<h2>[1.68.0] - 2021-02-08</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>A new experimental feature has been added to track anonymous metadata of a currently loaded map.\n<ul>\n<li>Neither the map name nor file names will be tracked but anonymous metric values and statistics like (average, min, max).</li>\n<li>The tracked data will not be sent to a server yet. Instead, it can be downloaded as a json file in the Global Settings for now.</li>\n<li>It is planned to send the anonymous data to a server in the future, so that we can collect tracking data automatically.</li>\n<li><img src=\"https://user-images.githubusercontent.com/26900540/106896300-ac5f2480-66f1-11eb-8096-246d1733c0ee.png\" alt=\"example of new feature\"></li>\n</ul>\n</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Errors occurred in delta mode if names of root folders were different</li>\n<li>Switching maps in delta mode now shows the differences between the maps (<a href=\"https://github.com/maibornwolff/codecharta/issues/1606\">#1606</a>)</li>\n<li>Label over hovered building not shown for height Metric value of zero (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1623\">#1623</a>)</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>CodeChartaStorage class has been introduced to dynamically store values either on disk (standalone version) or in the localStorage (web version). This is the first step to solve <a href=\"https://github.com/MaibornWolff/codecharta/issues/684\">#684</a>.</li>\n</ul>\n<h2>[1.67.0] - 2021-01-26</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>\n<p>Allow opening files from local drive by double clicking on the buildings or clicking on their names (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1314\">#1314</a>)</p>\n<ul>\n<li>Only available in the standalone version!</li>\n<li>files are opened in associated third-party applications</li>\n<li>web-links are opened in a browser window</li>\n</ul>\n</li>\n<li>\n<p>Allow customized color in the node context menu (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1556\">#1556</a>).</p>\n<p><a href=\"https://user-images.githubusercontent.com/3596742/104302048-a007f300-54c8-11eb-86c1-287483884783.png\">!example of new feature #1556</a></p>\n</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>fixed wrong max tree map visibility (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1624\">#1624</a>)</li>\n<li>fixed incorrect label placement on delta maps that share no common nodes (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1686\">#1686</a>)</li>\n</ul>\n<h2>[1.66.0] - 2021-01-18</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Allow color of buildings to be customizable in the ribbon bar and in the legend. Colors of edges are now customizable as well (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1533\">#1533</a>)\n<img src=\"https://user-images.githubusercontent.com/3596742/103547861-3c1c7380-4ea5-11eb-8df2-541caf65b9df.png\" alt=\"example of new feature\"></li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Global settings not reverting to default ones (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1632\">#1632</a>)</li>\n<li>Maximum treemap files shown in squarified node (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1624\">#1624</a>)</li>\n<li>Wrong folder names and colors in legend when using the highlight folder feature (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1555\">#1555</a>)</li>\n<li>Temporary labels are placed at the wrong height for scaled buildings (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1618\">#1618</a>)</li>\n<li>Visible labels will disappear or placed lower for scaled buildings (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1619\">#1619</a>)</li>\n<li>Unnecessary break line for secondary metrics (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1093\">#1093</a>)</li>\n</ul>\n<h2>[1.65.0] - 2020-12-23</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Highlight label while hovering over building, draw a temporary label for hovered buildings that have none (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1529\">#1529</a>)</li>\n<li>Integrated streetlayout (<a href=\"https://github.com/MaibornWolff/codecharta/issues/904\">#904</a>)\n<img src=\"https://user-images.githubusercontent.com/63230711/78872405-87eed900-7a49-11ea-984a-c0ef738779b9.png\" alt=\"cc_street_ccv\">\nIn street layout file nodes are displayed as buildings and directories are displayed as streets. A street layout has the advantage of a more apparent directory structure and stable positioning of nodes after metric changes.\ntwo different Street layout are integrated : - StreetLayout : as described above. - TMStreet : a combination of street layout and squarified layout.</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>The button to see excluded buildings is now merged into the flattened button. Excluded and flattened buildings can now be seen by opening the building with the eye slash icon (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1543\">#1543</a>)</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Height scaling not applied to buildings (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1595\">#1595</a>))</li>\n<li>Fixed multiple label positioning/scaling bugs</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>e2e flaky test (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1322\">#1322</a>)</li>\n</ul>\n<h2>[1.64.0] - 2020-12-15</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>\n<p>Download and upload Custom Configurations is now possible (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1472\">#1472</a>)</p>\n<ul>\n<li>Open the Custom Configs menu in the toolbar on top of the map</li>\n<li>Next to the <code>plus</code> Button you can see two new buttons: Upload and download.\n<ul>\n<li>Download: If you already have added Custom Configs you can download them by clicking the download button.\n<ul>\n<li>Custom Configs which are applicable for the currently selected map(s) will be downloaded as <code>.cc.config.json</code> files.</li>\n</ul>\n</li>\n<li>Upload: Click the upload button and specify your Custom Config file (<code><file-name>.cc.config.json</code>)\n<ul>\n<li>Already existing Custom Configs will be skipped.</li>\n<li>Different Custom Configs with same names will be renamed.</li>\n<li>Another way to upload your Custom Configs is to upload a <code>.cc.json</code> file together with one or multiple <code>.cc.config.json</code> files using the default <code>Load .cc.json map</code> button in the upper left corner.</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>The Configs are stored to the local storage of your browser.\n<ul>\n<li>If a limit of <code>768KB</code> is exceeded you will see a warning when trying to add a new Custom Config.</li>\n<li>You can click the displayed \"download and purge\" button to download/backup at least 6 months old Configs and then purge them from the local storage to make space for new ones.</li>\n<li>If we cannot purge any Configs, you might have to do that by your own by deleting specific Configs manually.</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Increase possible margin size (<a href=\"https://github.com/MaibornWolff/codecharta/pull/1490\">#1490</a>)\n<ul>\n<li>change displayed margin value from % to pixel</li>\n<li>change dynamic margin value to a default margin value that should fit the map</li>\n</ul>\n</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Re-enabled color selection for folders and on hover (<a href=\"https://github.com/MaibornWolff/codecharta/pull/1544\">#1544</a>)</li>\n<li>Labels do not take delta height into account (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1523\">#1523</a>)</li>\n<li>The calculation of the map resolution scale factor was wrong (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1491\">#1491</a>)\n<ul>\n<li>The factor is used to decrease the map resolution especially for big maps to avoid performance issues.</li>\n<li>Now only the selected maps will be considered for the calculation. Unselected maps will be skipped.</li>\n</ul>\n</li>\n</ul>\n<h2>[1.63.0] - 2020-11-30</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Add the folder name onto the floor on the first 3 layers to get a better overview of the map (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1491\">#1491</a>)</li>\n<li>UX Improvements related to labels allowing for user interaction #1404\n<ul>\n<li>Labels can be hovered, hovering their corresponding node</li>\n<li>Selecting a label will select the corresponding node</li>\n<li>Hovering a label will remove its transparency and move towards the user:\n<ul>\n<li>If other labels obstruct the hovered label it will move to the front</li>\n</ul>\n</li>\n<li>Increased the transparency of other labels; this makes it easier to distinguish the hovered label</li>\n<li>Increase the amount of labels to 250.</li>\n</ul>\n</li>\n<li>Show file count of folders in Attribute-Side-Bar (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1255\">#1255</a>):\n<img src=\"https://user-images.githubusercontent.com/3596742/100371884-be915800-3008-11eb-89f5-ed57c62680cc.png\" alt=\"img showing file count of folder\"></li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Buildings are flattened when delta is active #824.</li>\n<li>Selected Building now stays highlighted when map is rotated #1498</li>\n</ul>\n<h2>[1.62.0] - 2020-11-12</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>\n<p>A new option in the Global Settings allows to enable/disable experimental features #1318</p>\n<ul>\n<li>Click on the settings button in the upper right corner to open the Global Settings dialog.</li>\n<li>Activate/Deactivate the new option \"Enable Experimental Features\"</li>\n<li>The features will be shown/hidden accordingly</li>\n</ul>\n</li>\n<li>\n<p>\"CustomViews\", the first experimental feature has been added #1318</p>\n<ul>\n<li>It must be enabled by activating the new option in the Global Settings dialog as mentioned before.</li>\n<li>You can save your current map configurations to replay/restore them later.</li>\n<li>A saved CustomView can only be applied for it's original map.</li>\n<li>This will enable you to be more efficient in analizing projects by switching between different CustomViews.</li>\n</ul>\n</li>\n<li>\n<p>NodeContextMenu now contains option to keep buildings highlighted #1323</p>\n</li>\n<li>\n<p>Fixed Folder algorithm supports nested (parent-child) Fixed Folders #1431</p>\n<ol>\n<li>Define children of a Fixed Folder also as Fixed Folders by adding the <code>fixedPosition</code> attribute manually in <code>.cc.json</code>.</li>\n<li>All children of a parent Fixed Folder must be fixed.</li>\n<li>Read the how-to guide for further information: https://maibornwolff.github.io/codecharta/how-to/fixate_folders_with_a_custom_cc_json/</li>\n</ol>\n</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>\n<p>Improved search</p>\n<ol>\n<li>Not providing any star in the search bar from now on expects the input to\nbe a wildcard search. Thus, files are going to match paths that have\nleading or following characters. E.g., <code>oo</code> is going to match\n<code>/root/foobar</code>.</li>\n<li>To use the explicit former search mode, wrap the search entry in quotes as\nin: <code>\"oo\"</code>. This would only match filenames that are exactly <code>oo</code>.</li>\n<li>The search field accepts multiple search entries at once, separated by\ncommata. <code>foo,bar</code> is going to search for both <code>*foo*</code> and <code>*bar*</code> and\nmarks all matched files accordingly.</li>\n<li>It is possible to invert the search with a leading exclamation mark as in\n<code>!foobar</code>. That will match any file that does not match <code>*foobar*</code>. It is\nonly possible to invert the complete input, not individual search entries.</li>\n<li>Whitespace handling changed to ignore leading whitespace.</li>\n</ol>\n</li>\n<li>\n<p>Distribution metric #1188</p>\n<ol>\n<li>set rloc to default distribution metric, showing language percentages for real lines of code, if available. Else set to unary to show language distribution over files</li>\n</ol>\n</li>\n<li>\n<p>Improved file sorting in the file overview of the search bar</p>\n<ul>\n<li>Numbers are sorted naturally</li>\n<li>Characters are compared with their base character (e.g., <code>a</code> is now next to <code>á</code>).</li>\n</ul>\n</li>\n<li>\n<p>Label metric not shown by default anymore</p>\n</li>\n</ul>\n<h2>[1.61.0] - 2020-10-30</h2>\n<h3>Changed</h3>\n<ul>\n<li>Disable highlighting buildings during map movement #1432</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>File tree/flattened/excluded overlay visualization is buggy #1269</li>\n<li>EdgePreview on Map broken when selecting zero #1276</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Schedules and merge retries of dependabot dependency updates changed</li>\n</ul>\n<h2>[1.60.2] - 2020-10-24</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Mouse cursor flickering #1170</li>\n<li>Fix flipping map when clicking any option in the toolbar #1410</li>\n<li>Fix edge metric not working correctly</li>\n</ul>\n<h2>[1.60.1] - 2020-10-20</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Issue with first start without an internet connection not working#1266</li>\n<li>Issue with ribbon bar sizes for opened cards #1035</li>\n</ul>\n<h2>[1.60.0] - 2020-10-16</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Parsing feedback with progressbar and probable ETA for parsers and SonarImporter #847</li>\n<li>Mark node names and make the names clickable for nodes that have a link to them #1313</li>\n<li>Indicate the metric name next to a shown value in a new line on labels #1035</li>\n<li>Checkboxes to display metric names and values and to display node names on labels #1035</li>\n<li>Mark node names and make the names clickable for nodes that have a link to them #1313</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Label design #1035</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>First start without an internet connection of standalone not working #1266</li>\n<li>Comparing a map in delta mode shows the correct differences</li>\n<li>This mainly applies to maps compared with itself while it also fixes some other minor miscalculations</li>\n<li>File extensions detection is improved</li>\n<li>Zooming in and out the map will now close the node context menu #1324\n<ul>\n<li>Improved and simplified event handling in NodeContextMenu component</li>\n</ul>\n</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Improved performance of multiple operations (e.g., delta mode).</li>\n</ul>\n<h2>[1.59.0] - 2020-10-09</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>New EXPERIMENTAL SCMLogParser version</li>\n<li>Improved performance around 300% when parsing CodeCharta</li>\n<li>Improved memory usage</li>\n<li>Fixed issue with old parser creating incorrect nodes in CodeCharta #871</li>\n<li>ATTENTION: the parser is experimental, therefore some potential issues might remain, e.g. potentially an unhandled edge case when parsing node</li>\n<li>To use the new parser a reversed git log is needed, as well as a git file list, refer to <code>ccsh scmlogparserv2 -h</code> for additional information</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Color-Metric slider is set and activated in the map accordingly to the released sliderbutton #1319</li>\n<li>Deselcting a building will instantly dehighlight the buildings which were connected through edges #890</li>\n</ul>\n<h2>[1.58.1] - 2020-10-02</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Showing wrong edges when hovering a building after selecting one #1137</li>\n</ul>\n<h2>[1.58.0] - 2020-10-02</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Add active color metric to the top of the legend panel #1278</li>\n<li>SourceCodeParser: Java 14 Support #1277</li>\n</ul>\n<h2>[1.57.4] - 2020-09-25</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Metric-Settings-Panels closed when clicking an option inside the panel #1258</li>\n<li>Improve loading and rendering maps performance</li>\n</ul>\n<h2>[1.57.3] - 2020-09-18</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Improve overall performance for loading and rendering maps</li>\n<li>Improve error messages when a file can't be loaded with the URL parameters</li>\n</ul>\n<h2>[1.57.2] - 2020-09-11</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>New API version 1.2 not set correctly in analysis</li>\n</ul>\n<h2>[1.57.1] - 2020-09-11</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Validation of unique filenames not checking for the complete path and instead throwing an error on duplicate filename</li>\n</ul>\n<h2>[1.57.0] - 2020-09-11</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li><code>fixedPosition</code> as a new property in the <code>cc.json</code> that allows to fixate folders in the map</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li><code>cc.json</code> version updated to <code>1.2</code></li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Compressed `cc.jsons (.gz) not marked as accepted when selecting a file in the file chooser</li>\n</ul>\n<h3>Docs 🔎</h3>\n<ul>\n<li><a href=\"https://maibornwolff.github.io//codecharta/how-to/fixate_folders_with_a_custom_cc_json/\">How-To: Fixate Folders in the <code>cc.json</code></a></li>\n<li>CC-Json-API changes</li>\n</ul>\n<h2>[1.56.0] - 2020-09-04</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Improve performance when switching to multiple or delta mode when edges are available</li>\n<li>Scenario with EdgeMetric is only appliable when EdgeMetric is existing for the Map #1201</li>\n<li>Starting standalone version results in infinite loading loop #1202</li>\n<li>Expanded metric selection will close when clicking anywhere outside of that selection #1036</li>\n</ul>\n<h2>[1.55.0] - 2020-08-28</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Cursor indicator for different mouse actions #1042</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Edge-Metrics sorted by name now instead of number of incoming and outgoing edges</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Number of incoming and outgoing edges not visible when hovering over a node #1095</li>\n<li>Highlighting buildings in multiple mode now works #956</li>\n</ul>\n<h2>[1.54.0] - 2020-08-21</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Opening NodeContextMenu in the tree-view marks the node until it is closed #1068</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Missing Sonarcloud metrics in demo</li>\n</ul>\n<h3>Docs 🔎</h3>\n<ul>\n<li>Added note how to fix missing <code>sh</code> command issue when running integration tests on Windows</li>\n</ul>\n<h2>[1.53.0] - 2020-08-14</h2>\n<h3>Changed</h3>\n<ul>\n<li>NodeContextMenu will show up when releasing the right-mouse-button now #1027</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>NodeContextMenu showing up after moving the mouse while holding right-mouse-button #1027</li>\n</ul>\n<h2>[1.52.0] - 2020-08-07</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Support for Tokei 12 new JSON schema #1103</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Rename master branch to main for a more inclusive naming #1117</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>After loading an invalid file the filechooser pops up again, so that the user can choose a valid file #1021</li>\n<li>Quality gates on sonarcloud.io are red #879</li>\n</ul>\n<h3>Docs 🔎</h3>\n<ul>\n<li>Moved developer guides to our <a href=\"https://maibornwolff.github.io/codecharta/\">gh-pages</a> #986</li>\n</ul>\n<h2>[1.51.0] - 2020-07-24</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>File chooser now accept \".json\" files only to avoid accidentally loading incorrect files #1094</li>\n<li>Lots of tooltips #1030</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Blacklisting a building would sometimes not update the map #1098</li>\n<li>Changes made after opening the filechooser and closing it won't be applied #875</li>\n<li>Edge metric list not always updated correctly when loading a new file #1106</li>\n</ul>\n<h2>[1.50.0] - 2020-07-10</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Line between scenario indicator and remove button #1069</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Reduced transition time when opening or collapsing parts of the ribbon bar #1043</li>\n<li>Search Panel will open now when clicking in the search field and collapse when clicking somewhere else #1071</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Opening the same file again will now reload the file and reset the application #1032</li>\n<li>Improve render performance by persisting color conversions #1034</li>\n<li>Sorting in tree-view not being applied #1040</li>\n</ul>\n<h2>[1.49.1] - 2020-07-03</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Improved performance significantly when switching between single, multiple and delta</li>\n<li>Color-Range-Slider sometimes misbehaved when loading a new map or excluding buildings #926</li>\n</ul>\n<h2>[1.49.0] - 2020-06-19</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Custom scenarios can be created and saved through the scenario menu #675</li>\n<li>Importer and parser documentation can now be found on the github Website #954</li>\n<li>Output of sourcemonitor can now be compressed with the compression flag</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>[Security] Bump angular from 1.7.9 to 1.8.0 in /visualization #995</li>\n</ul>\n<h2>[1.48.0] - 2020-06-12</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Support of compressed cc.json files. Files can be compressed in the analysis #848</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Improved performance of several importers #846</li>\n</ul>\n<h2>[1.47.1] - 2020-05-08</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Attribute-Side-Bar being invisible</li>\n</ul>\n<h2>[1.47.0] - 2020-05-02</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>When hovering over a folder, all buildings inside it will be highlighted as well #694</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Rename the button Show-Complete-Map button to Unfocus #642</li>\n<li>Move the Unfocus button (visible when right-clicking a focused node) to the node-context-menu #948</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Generating a delta map with merged empty folders in between is now working correctly #730</li>\n<li>Reduced time when opening a new file #932</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>[Security] Bump jquery from 3.4.0 to 3.5.0 in /visualization #944</li>\n</ul>\n<h2>[1.46.1] - 2020-04-24</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Error dialogs in case of validation or api version issues #610</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Improved overall rendering performance of larger maps by roughly 40% #836</li>\n</ul>\n<h2>[1.45.5] - 2020-04-17</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Median symbol for aggregated relative metrics #365</li>\n<li>AttributeTypes for tokeiImporter and SCMLogParser #365</li>\n<li>Ellipsis button in TreeView list when hovering a node to access context menu #780</li>\n<li>Show gray eye-icon next to the ellipsis-button to indicate a flattened node #780</li>\n<li>Attribute Type selector in the metric dropdowns for edges and nodes</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Metrics with AttributeType relative are now aggregated using the median #365</li>\n<li>Showing absolute number of files instead of relative number when hovering list item in TreeView #780</li>\n<li>Clicking a hovered list item inside the TreeView opens folders #780</li>\n<li>Color node name in gray when flattened #780</li>\n</ul>\n<h3>Removed 🗑</h3>\n<ul>\n<li>Eye-icon in TreeView list to flatten a node #780</li>\n<li>Option to focus a node when clicking the node name inside the TreeView #780</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Consistency of AttributeTypes representation #365</li>\n<li>Wrong file description for tokeiimporter</li>\n<li>Improved search performance #837</li>\n</ul>\n<h2>[1.44.0] - 2020-03-27</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Dialog to select between different sorting options #388</li>\n<li>Button to reverse the current selected sorting #388</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Show file selection in toolBar after excluding or hiding a node instead of an empty toolBar #896</li>\n</ul>\n<h2>[1.43.0] - 2020-03-20</h2>\n<h3>Changed</h3>\n<ul>\n<li>Selectable metrics will only contain metrics from the visible maps</li>\n<li>Closing the attribute-side-bar by clicking somewhere in the map will now be triggered on mouse up instead of mouse down</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Search-panel opening for a short duration when importing a new file</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Fix vulnerability with nokogiri <1.10.8</li>\n</ul>\n<h2>[1.42.3] - 2020-03-13</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Loading Gif not displayed when preparing to render a new map #857</li>\n<li>Selecting zero files in Multiple mode will not trigger the 3D CodeMap creation</li>\n<li>Metrics in the dropdown menu now show the correct max value for the visible maps #876</li>\n</ul>\n<h2>[1.42.2] - 2020-02-14</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Replaced non standard <code>[[</code> in sh scripts #849</li>\n<li>Improved performance for loading a new file #836</li>\n<li>Marked Packages are loaded from files #798</li>\n</ul>\n<h2>[1.42.1] - 2020-02-07</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>GC Overhead Limit (OutOfMemory Exception) during analysis of large SCMLogs fixed #845</li>\n</ul>\n<h2>[1.42.0] - 2020-01-31</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Support for camel and kebab-case for ccsh arguments #772</li>\n<li>RawTextParser for analysis #660</li>\n<li>IndentationLevel as metric for RawTextParser #660</li>\n<li>Show additional Pairing Rate of Selected Building, simultaneously to the currently hovered Buildings #736</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Options of the ccsh are now consistently in kebab-case #772</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Path prefix handling in tokeiimporter #841</li>\n</ul>\n<h2>[1.41.8] - 2020-01-17</h2>\n<h3>Removed 🗑</h3>\n<ul>\n<li>Project name parameters in the ccsh #773</li>\n</ul>\n<h2>[1.41.6] - 2020-01-10</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Deployment</li>\n</ul>\n<h2>[1.41.1] - 2020-01-10</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Performance of loading maps with edges improved #823</li>\n<li>Calculation of other Group for fileExtensionBar #768</li>\n<li>Remove focus of UI elements when they are not visible anymore</li>\n</ul>\n<h2>[1.41.0] - 2019-12-06</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Show the relative number of files a folder includes compared to the project in the TreeView #380</li>\n<li>Show the number of files a folder includes in the TreeView when hovering #380</li>\n<li>When the File Extension Bar is hovered, all buildings corresponding to that extension are highlighted #545</li>\n<li>Toggle between percentage and absolute values when clicking the file extension details section #545</li>\n<li>Sum hovered delta values for folders #781</li>\n</ul>\n<h2>[1.40.0] - 2019-11-22</h2>\n<h3>Changed</h3>\n<ul>\n<li>Replaced Blacklist Hide with Flatten option #691</li>\n<li>Flattened buildings are not hidden by default #691</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Bump @types/three from 0.89.12 to 0.103.2 in /visualization #453</li>\n<li>Bump angularjs-slider from 6.5.1 to 7.0.0 in /visualization #454</li>\n<li>Bump webpack from 3.12.0 to 4.41.2 in /visualization #436</li>\n<li>[Security] Bump angular from 1.7.7 to 1.7.9 in /visualization #800</li>\n</ul>\n<h2>[1.39.0] - 2019-11-15</h2>\n<h3>Added</h3>\n<ul>\n<li>Progress indicator for SonarImporter #544</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>New style for hovered metric values #696</li>\n<li>Redesigned slider labels in ribbonBar sections #696</li>\n<li>Shortened ribbonBar sections #696</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Missing pictures and broken links in docs #785</li>\n<li>SCMLogParser is now more resilient to unusual SVN commit messages #763</li>\n</ul>\n<h2>[1.38.1] - 2019-11-13</h2>\n<h3>Added</h3>\n<ul>\n<li>New github-pages https://maibornwolff.github.io/codecharta/</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Sum symbol for hovered metric values only shows for folders #775</li>\n</ul>\n<h2>[1.38.0] - 2019-11-08</h2>\n<h3>Added</h3>\n<ul>\n<li>Temporal coupling edges generated by SCMLogParser #622</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Downloaded files are no longer formatted #679</li>\n<li>Added highly and median coupled files metrics to non-churn metric list of SCMLogParser #622</li>\n<li>Moved nodePathPanel to toolBar and updated style #607</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Removed attributes from downloaded files that should not be there #679</li>\n</ul>\n<h2>[1.37.0] - 2019-10-25</h2>\n<h3>Added</h3>\n<ul>\n<li>Sidebar with information regarding the selected building #527</li>\n<li>Sidebar closes when selected buildings is excluded #748</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Animation to show or hide the legend panel #527</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>Expandable detail panel in lower left corner #527</li>\n<li>Removed option to maximize/minimize detail panel #527</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Autofocus and label size for focused nodes #747</li>\n<li>Selected buildings stays selected when settings are changed #748</li>\n<li>IllegalStateException when scanning single file in SourceCodeParser #573</li>\n<li>SourceCodeParser places files in the project root correctly into the hierarchy #574</li>\n</ul>\n<h2>[1.36.0] - 2019-10-18</h2>\n<h3>Changed</h3>\n<ul>\n<li>Open and close the ribbonBar sections independently with an updated animation</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Camera is now resetted correctly, when unfocusing #634</li>\n<li>Inputs of Color Range Slider now waits a second before it commits its values #676</li>\n<li>Fixed root folder name in TreeView after new map after loading new map #649</li>\n<li>Increased size of ribbonBar for big screens #644</li>\n<li>File-Extension-Bar will not display excluded nodes anymore #725</li>\n<li>Sanitize input for shelljs #600</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>Bump jacoco from 0.8.1 to 0.8.4 in /analysis</li>\n</ul>\n<h2>[1.35.0] - 2019-10-04</h2>\n<h3>Added</h3>\n<ul>\n<li>Checkbox in global Settings for disabling camera reset, when new map is loaded #685</li>\n<li>Pipe support for SourceCodeParser #716</li>\n<li>Pipe support for SCMLogParser #717</li>\n<li>Pipe support for SonarImporter #715</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Exclude and Hide options are disabled for empty and already existing search patterns #654</li>\n</ul>\n<h2>[1.34.0] - 2019-09-20</h2>\n<h3>Added</h3>\n<ul>\n<li>Tokei Importer #538</li>\n<li>Prominent Notice that we use Sonar-jar #713</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>Bump kotlin-reflect from 1.3.41 to 1.3.50 in /analysis</li>\n<li>Bump json from 20180813 to 20190722 in /analysis</li>\n<li>Bump rxjava from 2.2.9 to 2.2.12 in /analysis</li>\n<li>Bump assertj-core from 3.12.2 to 3.13.2 in /analysis</li>\n<li>Bump sonar-java-plugin from 5.12.1.17771 to 5.14.0.18788 in /analysis</li>\n</ul>\n<h2>[1.33.0] - 2019-09-10</h2>\n<h3>Added</h3>\n<ul>\n<li>Edge Previews (Palm-Tree-Effect) #529</li>\n<li>Dropdown to select Edge Metric, including Edge Counter #529</li>\n<li>Edge Metric settings for Edge Height, Number of Previews & show only building with Edges #529</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Edge Visualization to better distinguish between incoming and outgoing edges #529</li>\n<li>Distribution metric is by default the same as area metric #689</li>\n<li>MapTreeView below searchBar opens the first level by default #690</li>\n<li>Focus metric search when opening metricChooser #693</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>Edge Options in Context menu #529</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>SourceCodeParser now skips custom metrics for files, if the syntax tree cannot be created</li>\n<li>Nodes with color metric equals 0 are colored correct again #677</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>[Security] Bump mixin-deep from 1.3.1 to 1.3.2 in /visualization</li>\n</ul>\n<h2>[1.32.0] - 2019-08-09</h2>\n<h3>Added</h3>\n<ul>\n<li>Search for metrics and an indicator for the highest value in dropdown #575</li>\n<li>Button to enable PresentationMode that uses Flashlight-Hovering #576</li>\n<li>Clarifying information which file is which in the file bar when in delta mode #615</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Replaced Scenario dropdown with button on the left of the metric sections #628</li>\n</ul>\n<h2>[1.31.0] - 2019-08-02</h2>\n<h3>Added</h3>\n<ul>\n<li>New Metric in SourceCodeParser: Maximum-Nesting-Level #659</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Label hight adjustment now matches scaling of map #594</li>\n<li>SCMLogParser now guesses the input file encoding #614</li>\n</ul>\n<h2>[1.30.0] - 2019-07-26</h2>\n<h3>Added</h3>\n<ul>\n<li>New Search Bar #526</li>\n<li>Number of Renames Metric to SCMLogParser #621</li>\n<li>Age In Weeks Metric for SCMLogParser #620</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>ToolBar now shows partially cut-off controls if the window is too small #582</li>\n<li>Position of the legendPanel was moved to the bottom-right corner #633</li>\n<li>RibbonBar only opens the three metric section</li>\n<li>Moved Scenario-select to the right in order to use less space</li>\n<li>Moved loading-gif from ribbonBar to toolBar</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>RibbonBar toggle button</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>FileExtensionBar height to not show a bottom-margin in Chrome</li>\n<li>PointerEvents not being propagated when RibbonBar was extended</li>\n<li>Reduced memory usage of SCMLogParser to avoid OutOfMemory Exception #631</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>[Security] Bump lodash.mergewith from 4.6.1 to 4.6.2 in /visualization</li>\n<li>[Security] Bump lodash from 4.17.11 to 4.17.13 in /visualization</li>\n<li>[Security] Bump fstream from 1.0.11 to 1.0.12 in /visualization</li>\n</ul>\n<h2>[1.29.0] - 2019-07-12</h2>\n<h3>Changed</h3>\n<ul>\n<li>Moved Button to reset the map to the center next to the view-cube #606</li>\n<li>Moved FileExtensionBar #527</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>Burger Menu / SideNav #526</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Colors in File-Extension-Bar will be displayed in MS Edge and Standlone now #584</li>\n</ul>\n<h2>[1.28.0] - 2019-06-28</h2>\n<h3>Added</h3>\n<ul>\n<li>Releasing will now remind the developer to manually add the release notes #533</li>\n<li>StructureModifier to remove and move nodes and set root of projects #547 / #181</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>More informative log messages regarding the success of project merging #547</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>Release Notes are not generated and added automatically to a release #533</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Margin will now be set correctly depending on whether dynamicMargin is enabled or not #602</li>\n</ul>\n<h2>[1.27.0] - 2019-06-25</h2>\n<h3>Added</h3>\n<ul>\n<li>Automatically generates release notes from changelog and appends it to release #533</li>\n<li>Adds global settings-menu with settings from options panel and weblinks #528</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Moved File Settings from Ribbon Bar to new File Setting Bar #525</li>\n<li>Rename sample file codemap-nodes #587</li>\n<li>Hide checkbox to select white-positive-buildings in delta state #345</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>Removes Options panel from sidebar #528</li>\n<li>Removes Weblinks panel from sidebar #528</li>\n<li>Removed URL-parameter info from sidebar #525</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Unary Metric will no longer be auto-selected when a new map is loaded #579</li>\n</ul>\n<h2>[1.26.0] - 2019-06-14</h2>\n<h3>Added</h3>\n<ul>\n<li>FileExtensionBar to show file-distribution of chosen metric #495</li>\n<li>sum icon is now displayed on the left of the metric value #364</li>\n<li>Added Pop-up dialog before downloading file to set filename and see what data will be stored #523</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Fix set default ColorRange when resetting color section #560</li>\n</ul>\n<h2>[1.25.1] - 2019-05-30</h2>\n<h3>Added</h3>\n<ul>\n<li>SVN log parser keeps track of renaming of files for metric calculation #542</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Entries with renaming information in SVN logs are attributed to correct file #542</li>\n<li>Unary metric will no longer be removed from the MetricChooser-Dropdown when a folder was excluded or hidden #548</li>\n<li>Changing margin and then file or mode will no longer freeze the application #524</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>[Security] Bump tar from 2.2.1 to 2.2.2 in /visualization</li>\n</ul>\n<h2>[1.25.0] - 2019-05-17</h2>\n<h3>Added</h3>\n<ul>\n<li>Added SonarJava to Source code parser #343</li>\n<li>Added exclude and defaultExclude options to SourceCodeParser #508</li>\n<li>Show loading-gif in ribbonBar when rerendering map</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Using Sonar Plugins for Source code parser, giving the Sonar Metrics #343</li>\n<li>Use debounced settings update instead of throttled</li>\n<li>Filename of downloaded file now contains time #484</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Fixed issue with too long line in ccsh.bat #506</li>\n<li>Prevent downloaded files from having multiple Timestamps #484</li>\n<li>Do not show loadingGif when cancelling the fileChooser #498</li>\n<li>Excluding a building now updates the maximum value of colorRange #355</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>Bump angular-material from 1.1.9 to 1.1.14 in /visualization</li>\n<li>[Security] Bump jquery from 3.3.1 to 3.4.0 in /visualization</li>\n</ul>\n<h2>[1.24.0] - 2019-04-23</h2>\n<h3>Removed</h3>\n<ul>\n<li>Settings as URL parameters #470</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Fixed issue with trailing slash in URL parameter of SonarImporter #356</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>Bump d3 from 4.13.0 to 5.9.2 in /visualization</li>\n<li>Bump sinon from 4.5.0 to 7.3.1 in /visualization</li>\n</ul>\n<h2>[1.23.0] - 2019-03-22</h2>\n<h3>Added</h3>\n<ul>\n<li>Project Name can be specified for merge filter #394</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Throw a MergeException if project names do not match in MergeFilter #394</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Excluded buildings are no longer used for aggregated metric calculation #352</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>Bump browser-sync-webpack-plugin from 1.2.0 to 2.2.2 in /visualization</li>\n<li>Bump @types/node from 8.10.19 to 11.11.3 in /visualization</li>\n<li>Bump html-webpack-plugin from 2.30.1 to 3.2.0 in /visualization</li>\n<li>Bump load-grunt-tasks from 3.5.2 to 4.0.0 in /visualization #444</li>\n<li>Bump ajv from 5.5.2 to 6.10.0 in /visualization #447</li>\n<li>Bump resolve-url-loader from 2.3.0 to 3.0.1 in /visualization #448</li>\n</ul>\n<h2>[1.22.0] - 2019-03-15</h2>\n<h3>Added</h3>\n<ul>\n<li>Added buttons to select all/none/inversion of revisions/maps in multiple mode #391</li>\n<li>Merge filter can merge all files of folders #392</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Fixed bug that code map was not re-loaded when changing from multiple to single revision mode #396</li>\n<li>Fixed missing apiVersion in aggregated map #398</li>\n<li>Input Fields of color sliders adjust width according to content #409</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>Bump nouislider from 11.1.0 to 13.1.1 in /visualization</li>\n<li>Bump typescript from 2.7.2 to 3.3.3333 in /visualization</li>\n<li>Bump @types/d3 from 4.13.0 to 5.7.1 in /visualization</li>\n</ul>\n<h2>[1.21.2] - 2019-02-26</h2>\n<h3>Added</h3>\n<ul>\n<li>When entering Multiple Mode, all Maps/revisions are preselected</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Fixing non-existent metric aggregation on root-level when using multiple Files</li>\n</ul>\n<h2>[1.21.1] - 2019-02-22</h2>\n<h3>Added</h3>\n<ul>\n<li>Hovering a node in the map also hovers it in the tree view #351</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Fixing sync between treeview hovering and map hovering #351</li>\n<li>Folders can no longer be colored in the CodeMap or TreeView #359</li>\n</ul>\n<h2>[1.21.0] - 2019-02-16</h2>\n<h3>Added</h3>\n<ul>\n<li>Color searched node names green in TreeView #225</li>\n<li>Add option buttons (three dots) in TreeViewSearch to <code>Hide</code> or <code>Exclude</code> matching nodes #298</li>\n<li>Show blacklist entry counter in blacklistPanel header #298</li>\n<li>Option checkbox 'Hide Flattened Buildings' #225</li>\n<li>Hide/Flatten non-searched buildings #225</li>\n<li>Hide/Flatten all buildings, if searchPattern can't find any matching nodes #225</li>\n<li>Show maxValue of each metric in metricChooser select list #204</li>\n<li>Colored color-slider inside the RibbonBar #318</li>\n<li>Option to color positive buildings white #311</li>\n<li>Clicking the ribbonBar section-titles toggles the ribbonBar #324</li>\n<li>View-Cube displayed in top right corner #274</li>\n<li>Adding prettier formatter</li>\n<li>Adapt colorRange when changing colorMetric #330</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Update TreeView filter with search field #225</li>\n<li>Use 'gitignore' style matching in TreeViewSearch #225</li>\n<li>Reorder <code>Focus</code>, <code>Hide</code> and <code>Exclude</code> buttons in nodeContextMenu #298</li>\n<li>Reorder sidebarPanels (BlacklistPanel beneath TreeViewSearchPanel) #298</li>\n<li>Use <code>fa-ban</code>-icon as symbols for blacklistPanel (instead of <code>fa-list</code>) #298</li>\n<li>Use <code>fa-ban</code>-icon as symbols for blacklistType <code>Exclude</code> (instead of <code>fa-times</code>) #298</li>\n<li>Label size keeps readable for large maps or a high distance between camera and map #237</li>\n<li>updated dependencies to fix vulnerabilities</li>\n<li>Scenarios only update settings which exist in Scenario and not all #224</li>\n<li>MergeFilter to merge unique blacklist entries #275</li>\n<li>MergeFilter to only merge unique attributeType entries #275</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>Remove invertHeight checkbox in delta-view #306</li>\n<li>Remove option to add blacklist entries from inside the blacklistPanel #298</li>\n<li>Remove statistic functions in Experimental panel #308</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>CodeMap does not move anymore when navigating in text-fields #307</li>\n<li>Merge blacklist in multipleFile view and convert paths #275</li>\n<li>Show logo in NW.js standalone application #233</li>\n</ul>\n<h2>[1.20.1] - 2018-12-19</h2>\n<p>Fixed release issues.</p>\n<h2>[1.20.0] - 2018-12-19</h2>\n<h3>Added</h3>\n<ul>\n<li>button to unfocus node</li>\n<li>NodeContextMenu: Option to only hide dependent edges</li>\n<li>plop support</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Renaming 'isolate node' to 'focus node'</li>\n<li>Focusing a node does not remove the blacklist items of type Hide</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>NodeContextMenu: Option to 'show all' nodes, which used to unhide all nodes</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Reshow hidden nodes from Treeview or Blacklist</li>\n</ul>\n<h2>[1.19.0] - 2018-11-02</h2>\n<h3>Added</h3>\n<ul>\n<li>Deleted files in delta view use their previous area value in order to be visible #254</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Buildings in the delta view are not colored correctly #253</li>\n<li>Reset Button in RibbonBar to reset 'Invert Colors' #255</li>\n<li>Remove lag of 'Invert Color' checkboxes, when selecting single/delta mode #255</li>\n</ul>\n<h2>[1.18.1] - 2018-10-31</h2>\n<p>Fixed release issues</p>\n<h2>[1.18.0] - 2018-10-29</h2>\n<h3>Added</h3>\n<ul>\n<li>Integration with Jasome through JasomeImporter #245</li>\n<li>URL parameter 'mode' with the values Single, Multiple or Delta</li>\n<li>Blacklist to persist excluded or hidden nodes #205</li>\n<li>Option to exclude nodes in nodeContextMenu #205</li>\n<li>BlacklistPanel in SettingsSidebar to manage blacklist #205</li>\n<li>Save-Button to download current CodeMap #205</li>\n<li>Publishing visualization on Docker Hub #252</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>No longer fat jar of every subcomponent of analysis, baked into ccsh</li>\n<li>Changed simple syserr write to logger call for analysis #243</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>URL parameter 'delta' does not exist anymore</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Show delta of CodeMap when URL parameter mode=delta is set</li>\n</ul>\n<h2>[1.17.0] - 2018-09-28</h2>\n<h3>Changed</h3>\n<ul>\n<li>Invert delta colors moved from color to heigh metric column in ribbon bar #220</li>\n<li>Delta value now as kindOfMap shown #220</li>\n<li>Aggreate maps as multiple rename #220</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Single/delta buttons now correctly activated when delta in ulr shown #220</li>\n</ul>\n<h2>[1.17.0] - 2018-09-21</h2>\n<h3>Added</h3>\n<ul>\n<li>CodeMaatImport for temporal coupling dependencies #172</li>\n<li>EdgeFilter to aggregate edge-attributes as node-attributes #222</li>\n<li>Option to show and hide dependent edges from node-context-menu #218</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>MergeFilter merges edges #172</li>\n</ul>\n<h2>[1.16.2] - 2018-09-10</h2>\n<h3>Fixed</h3>\n<ul>\n<li>missing event in firefox #232</li>\n</ul>\n<h2>[1.16.1] - 2018-08-31</h2>\n<h3>Added</h3>\n<ul>\n<li>gitlab + dotnet manual</li>\n</ul>\n<h2>[1.16.0] - 2018-08-31</h2>\n<h3>Added</h3>\n<ul>\n<li>add the option to add multiple files via url parameter (e.g. ?file=a&file=b...)</li>\n</ul>\n<h2>[1.15.1] - 2018-08-13</h2>\n<p>Fixed release issues</p>\n<h2>[1.15.0] - 2018-08-13</h2>\n<h3>Added</h3>\n<ul>\n<li>e2e tests are running in CI Environment (headless)</li>\n<li>pupeteer as e2e test framework</li>\n<li>Show names of marked packages in legend</li>\n<li>Added a source code importer that can analyse rloc,mcc for java source code</li>\n<li>keep settings when the user changes a file</li>\n<li>Added option to set white background</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>cypress</li>\n</ul>\n<h2>[1.14.2] - 2018-07-16</h2>\n<h3>Changed</h3>\n<ul>\n<li>Changed folder detail metrics from mean to sum</li>\n</ul>\n<h2>[1.14.1] - 2018-07-13</h2>\n<p>Fixed release issues</p>\n<h2>[1.14.0] - 2018-07-13</h2>\n<h3>Added</h3>\n<ul>\n<li>Added UnderstandImporter to Analysis</li>\n<li>Packages can be highlighted in different colors #152</li>\n<li>Adding a context menu with highlighting colors and convenience methods for the tree view and 3D view #155</li>\n<li>Folders and files to highlight can be described in the cc.json #165</li>\n<li>Dynamic/automatic margin computing de/activated by tick</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Details panel: using the sum of the childrens metrics instead of the mean value</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Display buttons do not trigger map changes #185</li>\n<li>Flickering surfaces when zooming out</li>\n</ul>\n<h2>[1.13.0] - 2018-06-08</h2>\n<h3>Added</h3>\n<ul>\n<li>Layout switcher #141</li>\n<li>Added CrococosmoImporter to Analysis</li>\n<li>Added type, dirs, name to CSVExporter</li>\n<li>Invert height of building checkbox</li>\n<li>Aggregate multiple maps in visualization #110</li>\n<li>Auto Focus selected map part</li>\n<li>Timmer added to applySettings in SettingsService</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Crococosmo xml files will now generate a cc.json file for each version</li>\n<li>Suppressing ARIA warnings</li>\n<li>Simplified gradle structure of analysis part</li>\n<li>Deltas added in the metric quick access panel #138</li>\n<li>Ticks and ResetValue Buttons call to onSettingsChange to avoid applySettings timer</li>\n<li>compacting empty middle packages #150</li>\n<li>Detail panel minimized by default</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>filter by regex shows parent nodes #116</li>\n<li>typo in scss file</li>\n</ul>\n<h2>[1.12.0] - 2018-04-27</h2>\n<h3>Added</h3>\n<ul>\n<li>horizontal quick access metric chooser</li>\n<li>Link behind filepath in detailPanel #84</li>\n<li>Double click event-handler on Buildings #84</li>\n<li>Detail Panel can be minimized and maximized</li>\n<li>Settings option to minimize Detail Panel</li>\n<li>cypress as an e2e test runner</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>metric details from legend</li>\n<li>metric chooser from settings panel</li>\n</ul>\n<h2>[1.11.2] - 2018-04-13</h2>\n<h3>Fixed</h3>\n<ul>\n<li>a sonar importer bug which prevented the importer to fetch the last page #122</li>\n</ul>\n<h2>[1.11.1] - 2018-04-11</h2>\n<p>Fixed release issues</p>\n<h2>[1.11.0] - 2018-04-11</h2>\n<h3>Added</h3>\n<ul>\n<li>SASS support</li>\n<li>simple regex filter</li>\n<li>Reset Button</li>\n<li>Dialog Service replaces console log calls and window.alert calls</li>\n<li>linking tree view and map hover</li>\n<li>auto fit scene button</li>\n<li>anugularJS material</li>\n<li>Scenarios are now filtered by compatibility for the given map</li>\n<li>Link in visualization #84</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>materialize-css</li>\n<li>grunt</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>less flickering and artifacts</li>\n</ul>\n<h2>[1.10.0] - 2018-03-22</h2>\n<h3>Changed</h3>\n<ul>\n<li>Clean up UI #86</li>\n<li>Updated analysis dependencies</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Delta View shows Deltas of itself as non-trivial if nodes have same name #89: Compare deltas by path not name</li>\n<li>Delta calculation performance boost #91</li>\n<li>Problems when intermediate nodes missed metrics #92</li>\n<li>removed unnecessary calculations</li>\n<li>removed bug in SonarImporter that slowed up performance and missed out multiple metrics</li>\n<li>minor bugs</li>\n</ul>\n<h2>[1.9.3] - 2018-02-23</h2>\n<h3>Changed</h3>\n<ul>\n<li>sorting treeview by folders and names</li>\n</ul>\n<h2>[1.9.2] - 2018-02-20</h2>\n<h3>Added</h3>\n<ul>\n<li>added preliminary CSVExporter for visualisation data</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>padding rendering</li>\n<li>minimal building height is 1 to prevent clipping issues</li>\n<li>fallback values for visualization when no metric is available (area = 1, height = 1, color = grey). Data in data structure will not be changed.</li>\n</ul>\n<h2>[1.9.1] - 2018-02-20</h2>\n<h3>Fixed</h3>\n<ul>\n<li>detail panel bug fix</li>\n</ul>\n<h2>[1.9.0] - 2018-02-20</h2>\n<h3>Changed</h3>\n<ul>\n<li>moved to unscoped npm packages</li>\n</ul>\n<h2>[1.8.2] - 2018-02-20</h2>\n<h3>Changed</h3>\n<ul>\n<li>detail panel background is white now. better visibility</li>\n</ul>\n<h2>[1.8.1] - 2018-02-20</h2>\n<h3>Changed</h3>\n<ul>\n<li>revision chooser moved to settings panel and uses now understandable dropdowns instead of links. Part of the #82 proposals</li>\n</ul>\n<h2>[1.8.0] - 2018-02-20</h2>\n<h3>Added</h3>\n<ul>\n<li>Experimental dependency support</li>\n<li>loading indicator</li>\n<li>file path to detail panel</li>\n<li>collapsible tree view and visibility/isolation per node toggles</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>added a ray-aabb intersection test before precise testing. Less time is spent in intersection methods.</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>fixed a minor bug</li>\n<li>canvas mouse event listener are now limited to the canvas dom element. UI events will not trigger the canvas listeners anymore</li>\n<li>canvas mouse events distinguish now between click and drag. Dragging does not reset selection anymore</li>\n<li>slider input #64</li>\n<li>rz slider initialization bug</li>\n<li>increasing test coverage</li>\n<li>deltas where calculated on map loading even though, they were disabled</li>\n</ul>\n<h2>[1.7.2] - 2018-02-02</h2>\n<h3>Fixed</h3>\n<ul>\n<li>url to homepage</li>\n<li>analysis package</li>\n</ul>\n<h2>[1.7.1] - 2018-02-02</h2>\n<p>Fixed release issues</p>\n<h2>[1.7.0] - 2018-02-02</h2>\n<h3>Changed</h3>\n<ul>\n<li>npm pachage scoped to @maibornwolff</li>\n<li>Defined further scenarios via json file</li>\n<li>Added description for metrics and scenarios</li>\n<li>using fixed point values in detail panel (ui) to truncate infinite or long decimals</li>\n<li>folders now use the mean attributes of their buildings(leaves)</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Bugfix: detail panel should be cleared before setting new details else old values may survive</li>\n</ul>\n<h2>[1.6.7] - 2018-02-01</h2>\n<p>Fixed release issues</p>\n<h2>[1.6.6] - 2018-02-01</h2>\n<h3>Added</h3>\n<ul>\n<li>added anonymous git log generator anongit</li>\n<li>browser demo shows codecharta-visualization sonar analysis</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>rewrote command line interface</li>\n<li>linking ccsh to bin/ccsh will be deleted later</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>No underscore for scenarios in tooltips #71</li>\n</ul>\n<h2>[1.6.5] - 2018-01-30</h2>\n<p>Fixed release issues</p>\n<h2>[1.6.4] - 2018-01-30</h2>\n<h3>Fixed</h3>\n<ul>\n<li>fixed broken SonarImporter due to jdk9 migration</li>\n</ul>\n<h2>[1.6.3] - 2018-01-26</h2>\n<h3>Added</h3>\n<ul>\n<li>added npm publish for analysis</li>\n<li>simple release script for automatic changelog updates, commits, tags, version bumps</li>\n</ul>\n<h2>[1.6.2] - 2018-01-25</h2>\n<h3>Added</h3>\n<ul>\n<li>added support for git log --raw and git log --numstat --raw</li>\n<li>added support for git log --numstat and codechurn</li>\n<li>added support for renames in SCMLogParser for git log --name-status</li>\n<li>added support for renames in SCMLogParser for git log --numstat, git log --raw and git log --numstat --raw</li>\n<li>added new SCM experimental metrics range_of_weeks_with_commits and successive_weeks_of_commits</li>\n<li>the file origin of a node is displayed in the details now</li>\n<li>sonarqube analysis on CI build</li>\n<li>npm publish support in visualization</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Deltas are no longer experimental</li>\n<li>two selected delta maps now merge their nodes correctly. The map where\na node was missing get's a copy of this node with metrics=0.\nFile additions/deletions are therefore only visible when areaMetric is\nunary and deltas are activated.</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>delta display bug for heights</li>\n<li>going back from delta view now correctly removes deltas from node data</li>\n<li>Delta shown although not in delta mode #60</li>\n<li>Allow inversion of delta colors #57</li>\n<li>npm binary error</li>\n</ul>\n<h2>[1.5.2] - 2018-01-04</h2>\n<h3>Changed</h3>\n<ul>\n<li>scaling slider now has steps of 0.1. This allows the user to select precise values like 2.0</li>\n<li>updated jdk to jdk9</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Opening the same file a second time does not work #53</li>\n<li>added missing require declaration</li>\n<li>added glsl loader in testing environment</li>\n<li>Native Application support is bugged while building in Travis CI #48</li>\n</ul>\n<h2>[1.5.1] - 2017-11-14</h2>\n<h3>Added</h3>\n<ul>\n<li>command line parameter to toggle \"authors\" attribute in SCMLogParser</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>when passing a file through the \"file\" parameter in the URL, the map now renders correctly</li>\n</ul>\n<h2>[1.5.0] - 2017-10-24</h2>\n<h3>Added</h3>\n<ul>\n<li>experimental delta functionality</li>\n<li>loading multiple maps</li>\n<li>experimental margin slider</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>faster rendering</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>nwjs packages and native apps due to a bug</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>using color metric instead of height metric for color range slider ceil</li>\n</ul>\n<h2>[1.4.0] - 2017-09-14</h2>\n<h3>Added</h3>\n<ul>\n<li>Typescript support</li>\n<li>Browsersync</li>\n<li>added advanced merging strategy \"leaf\" in MergeFilter</li>\n<li>advanced merging with restructuring</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Browserify replaced with Webpack</li>\n<li>Better debugging</li>\n<li>Karma instead of Mocha</li>\n</ul>\n<h2>[1.3.2] - 2017-08-18</h2>\n<h3>Added</h3>\n<ul>\n<li>add slider controls for color thresholds #19</li>\n<li>Added additional structuring in SonarImporter for multi-module projects</li>\n<li>button to generate current url parameters</li>\n<li>camera position is now a setting (e.g. in scenarios or url parameters)</li>\n<li>margin slider: make it easier to find out to which package/folder a class belongs #20</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>better url parameter resolution (nested parameters are handled correctly)</li>\n<li>changed hover color. Allows better distinction between hover and select</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>obsolete helper grid</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>changing display or color settings resets scaling #18</li>\n<li>scenario description #32</li>\n<li>Scaling should not scale the labels #35</li>\n</ul>\n<h2>[1.3.1] - 2017-07-05</h2>\n<h3>Fixed</h3>\n<ul>\n<li>Prevented override of URL-parameters by default scenario</li>\n</ul>\n<h2>[1.3.0] - 2017-07-05</h2>\n<h3>Added</h3>\n<ul>\n<li>Adding simple merge functionality for multiple json files</li>\n<li>Added CSVImporter</li>\n<li>Added Translation for SonarQube metrics</li>\n<li>Added descriptions for metrics</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Changed uppercase metrics, e.g. RLOC, to lowercase metrics</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Simple cc.json does not display anything #17</li>\n</ul>\n<h2>[1.2.0] - 2017-06-19</h2>\n<h3>Added</h3>\n<ul>\n<li>Adding Labels and UI</li>\n<li>Support for links to source page of SonarQube in sonarimporter</li>\n<li>Added SCMLogParser</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>GitHub Issue: legend is wrong #21</li>\n</ul>\n<h2>[1.1.5] - 2017-05-31</h2>\n<h3>Fixed</h3>\n<ul>\n<li>Wrong version numbers in analysis part</li>\n</ul>\n<h2>[1.1.4] - 2017-05-26</h2>\n<h3>Added</h3>\n<ul>\n<li>Scenarios and default scenario</li>\n<li>Translation API for Metrics</li>\n<li>Metric tooltips in dropdown</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>GitHub Issue: Sonarimporter crashes with null pointer exception when there is a component without path. #13</li>\n</ul>\n<h2>[1.1.3] - 2017-05-01</h2>\n<h3>Added</h3>\n<ul>\n<li>Support for SonarQube Measures-API</li>\n<li>Error logging for sonarqube errors</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Standard Sonar metric is now complexity,ncloc,functions,duplicated_lines,classes,blocker_violations,generated_lines,bugs,commented_out_code_lines,lines,violations,comment_lines,duplicated_blocks</li>\n</ul>\n<h2>[1.1.2] - 2017-04-28</h2>\n<h3>Added</h3>\n<ul>\n<li>Translation API for Metrics</li>\n</ul>\n<h2>[1.1.1] - 2017-04-07</h2>\n<h3>Fixed</h3>\n<ul>\n<li>GitHub Issue: Flickering surfaces #3</li>\n<li>GitHub Issue: Unable to install due to readlink error on macOS #4</li>\n</ul>\n<h2>[1.1.0] - 2017-03-27</h2>\n<h3>Added</h3>\n<ul>\n<li>SourceMonitorImporter for importing projects from SourceMonitor.</li>\n</ul>\n<h2>[1.0.0] - 2017-03-17</h2>\n<h3>Added</h3>\n<ul>\n<li>SonarImporter for importing projects from SonarQube.</li>\n<li>ValidationTool for validating an existing json file.</li>\n</ul>\n";
|
|
243068
|
+
var code = "<h1>Change Log</h1>\n<p>All notable changes to this project will be documented in this file.</p>\n<p>The format is based on <a href=\"http://keepachangelog.com/\">Keep a Changelog</a>\nand this project adheres to <a href=\"http://semver.org/\">Semantic Versioning</a></p>\n<h2>[unreleased] (Added 🚀 | Changed | Removed 🗑 | Fixed 🐞 | Chore 👨💻 👩💻)</h2>\n<h2>[1.88.0] - 2022-01-24</h2>\n<h3>Changed</h3>\n<ul>\n<li>Rename custom configs to custom view <a href=\"https://github.com/MaibornWolff/codecharta/pull/2625\">#2625</a></li>\n<li>Combine single and multiple mode into standard mode <a href=\"https://github.com/MaibornWolff/codecharta/pull/2578\">#2578</a>\n<img src=\"https://user-images.githubusercontent.com/72517530/150765617-2d66eb78-2c26-45c5-b63b-f84994ed88ab.png\" alt=\"xs\"></li>\n<li>Improve file validation handling and provide more descriptive import messages <a href=\"https://github.com/MaibornWolff/codecharta/pull/2604\">#2604</a>\n<img src=\"https://user-images.githubusercontent.com/48621967/150532207-f3b482ed-3a14-43c0-b1a3-80ac4c25d5e0.png\" alt=\"xs\"></li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix Image not shown in what is new dialog <a href=\"https://github.com/MaibornWolff/codecharta/pull/2610\">#2610</a></li>\n</ul>\n<h2>[1.87.1] - 2022-01-17</h2>\n<h3>Changed</h3>\n<ul>\n<li>User-friendly renaming for display quality options <a href=\"https://github.com/MaibornWolff/codecharta/pull/2601\">#2601</a></li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix color of selected building in delta mode <a href=\"https://github.com/MaibornWolff/codecharta/pull/2603\">#2603</a></li>\n<li>Fix link to news page when clicking 'Know more' button changelog dialog <a href=\"https://github.com/MaibornWolff/codecharta/pull/2602\">#2602</a></li>\n<li>Fix Image not shown in what is new dialog <a href=\"https://github.com/MaibornWolff/codecharta/pull/2610\">#2610</a></li>\n</ul>\n<h2>[1.87.0] - 2022-01-11</h2>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Migrate <code>unfocus-button-component</code> to Angular.</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Remove suspicious metrics from custom map configurations <a href=\"https://github.com/MaibornWolff/codecharta/pull/2564\">#2564</a>.</li>\n<li>Add 'show/hide non-applicable CustomConfigs' button to Custom Configs menu <a href=\"https://github.com/MaibornWolff/codecharta/pull/2591\">#2591</a>.</li>\n</ul>\n<h2>[1.86.0] - 2021-12-20</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Add 3D export feature for 3D printing <a href=\"https://github.com/MaibornWolff/codecharta/pull/2561\">#2561</a>. \n<img src=\"https://user-images.githubusercontent.com/48621967/146173663-e0ea177e-6ed8-4ddb-bd11-410415541e9f.png\" alt=\"xs\">\n<img src=\"https://user-images.githubusercontent.com/48621967/146174397-42a6e475-ed2f-47c0-ba9c-4f8304d53399.png\" alt=\"l\"></li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Replace all color pickers in the context of ongoing Angular migration <a href=\"https://github.com/MaibornWolff/codecharta/pull/2560\">#2560</a>.</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix showing names of custom configs properly <a href=\"https://github.com/MaibornWolff/codecharta/pull/2557\">#2557</a>.</li>\n<li>Fix minor memory leak in context menu for code map buildings <a href=\"https://github.com/MaibornWolff/codecharta/issues/2565\">#2565</a>.</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Migrate legend panel to Angular <a href=\"https://github.com/MaibornWolff/codecharta/pull/2560\">#2560</a>.</li>\n</ul>\n<h2>[1.85.0] - 2021-12-13</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix delta values of secondary metrics not shown in delta mode within attribute side bar <a href=\"https://github.com/MaibornWolff/codecharta/issues/2539\">#2539</a>.</li>\n<li>Use icon tag instead of font awesome icon <a href=\"https://github.com/MaibornWolff/codecharta/pull/2537\">#2537</a>.</li>\n<li>Rename text for placeholder of metric chooser <a href=\"https://github.com/MaibornWolff/codecharta/pull/2547\">#2547</a></li>\n<li>Fix attribute type selector of primary edge metric not shown <a href=\"https://github.com/MaibornWolff/codecharta/issues/2528\">#2528</a>.</li>\n<li>Identical files and files with identical file names but different hashes can be loaded <a href=\"https://github.com/MaibornWolff/codecharta/pull/2548\">#2548</a></li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Remove <code>secondaryMetrics</code> from store and remove <code>secondaryMetrics.service</code> as the data can be derived from selected node <a href=\"https://github.com/MaibornWolff/codecharta/pull/2527\">#2527</a>.</li>\n<li>Migrate <code>attribute-side-bar-component</code> to Angular <a href=\"https://github.com/MaibornWolff/codecharta/pull/2527\">#2527</a>.</li>\n<li>Switch from Webpack 4 Loaders to Asset Module to load icons properly with css-loader 6.x <a href=\"https://github.com/MaibornWolff/codecharta/pull/2542\">#2542</a>.</li>\n</ul>\n<h3>Removed 🗑</h3>\n<ul>\n<li>Remove notification dialog when deleting a custom config <a href=\"https://github.com/MaibornWolff/codecharta/pull/2553\">#2553</a></li>\n</ul>\n<h2>[1.84.1] - 2021-11-29</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix compressed files not being loaded (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2525\">#2524</a>)</li>\n</ul>\n<h2>[1.84.0] - 2021-11-22</h2>\n<h3>Changed</h3>\n<ul>\n<li>Improved the UI and usability of the Suspicious Metrics Feature (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2494\">#2376</a>) \n<ul>\n<li>The Metrics and the Analysis are now split in two menus \n<img src=\"https://user-images.githubusercontent.com/48621967/141795078-bb856f53-1bc3-4c09-8be5-d031899835ae.png\" alt=\"xs\"></li>\n<li>The Suspicious Metrics are now sorted with the Very High Risk on top \n<img src=\"https://user-images.githubusercontent.com/48621967/141793011-1bfc0e19-bd3a-4bd2-af70-c3dd472821b6.png\" alt=\"m\"></li>\n<li>The bar in the analysis shows the percentages \n<img src=\"https://user-images.githubusercontent.com/48621967/141791111-564778fa-b767-4ee4-b024-6856f1a79b4b.png\" alt=\"m\"></li>\n</ul>\n</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix showing labels when weighted gradient on yellow buildings in color metric options are enabled (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2511\">#2511</a>)</li>\n<li>Fix rounding of the sum of percentages in risk profile (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2516\">#2393</a>)</li>\n<li>Fix legend panel not having a background (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2510\">#2422</a>)</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Remove <code>nodeSearch.service.ts</code> and <code>searchedNodePaths</code> from store as they can be derived from <code>searchPattern</code> (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2495\">#2495</a>).</li>\n<li>Refactor where metric data are calculated (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2514\">#2514</a>).</li>\n<li>Migrate <code>attribute-type-selector-component</code> to Angular (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2519\">#2519</a>).</li>\n</ul>\n<h2>[1.83.1] - 2021-11-10</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix loading files from URL in Web Demo (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2494\">#2494</a>)</li>\n</ul>\n<h2>[1.83.0] - 2021-11-09</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix unwanted calculations of suspicious metrics when experimental features are disabled (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2471\">#2471</a>)</li>\n<li>Fix UI issues in the configuration panel (<a href=\"https://github.com/maibornwolff/codecharta/issues/2322\">#2322</a>)</li>\n<li>Fix tooltip of sorting order button in map tree view showing wrong sorting order (<a href=\"https://github.com/maibornwolff/codecharta/issues/2473\">#2473</a>)</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Calculate MD5 checksum when generating .cc.json files (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2450\">#2411</a>)</li>\n</ul>\n<h2>[1.82.0] - 2021-10-18</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix what's new section including the last opened version (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2453\">#2447</a>)</li>\n<li>Fix unfocus button text not showing correctly (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2439\">#2439</a>)</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Folders in the Folder structure view of the top left come now always before any files, regardless of the sort order.</li>\n</ul>\n<h2>[1.81.0] - 2021-10-11</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix color picker not being usable (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2439\">#2439</a>)</li>\n<li>Fix Changelog inconsistencies (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2425\">#2425</a>) \n<img src=\"https://user-images.githubusercontent.com/48621967/135866024-ee06119a-1a62-4912-90df-ac3aa9216608.PNG\" alt=\"xl\"></li>\n<li>Fix memory and performance issues related to drawing labels on floors/folders (<a href=\"https://github.com/MaibornWolff/codecharta/issues/2348\">#2348</a>).</li>\n<li>Hides legend block if label description is not available and adds new metric descriptions (<a href=\"https://github.com/maibornwolff/codecharta/issues/2377\">#2377</a>).</li>\n</ul>\n<h2>[1.80.0] - 2021-10-04</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Adds feature to display building colors as a gradients (<a href=\"https://github.com/MaibornWolff/codecharta/issues/2327\">#2327</a>).\n<ul>\n<li>\"Weighted Gradient\" only mixes colors in a small interval around the preset values.</li>\n<li>\"True Gradient\" mixes colors from the 0 to the highest value, the two preset color range values determine the balance.</li>\n<li>\"Absolute\" represents the old behaviour without gradients. \n<img src=\"https://user-images.githubusercontent.com/42114276/134924267-245c65c9-2893-43a8-9a0a-17e3182bf15a.JPG\" alt=\"l\"></li>\n</ul>\n</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix broken file/node search #2389</li>\n<li>Fix changelog inconsistencies (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2425\">#2425</a>)</li>\n</ul>\n<h2>[1.79.0] - 2021-09-20</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Add metric descriptions to the frontend and show a translation next to the entry (<a href=\"https://github.com/MaibornWolff/codecharta/issues/2330\">#2330</a>) \n</li>\n<li>An option has been added to the global settings to enable copying screenshots to clipboard instead of saving them in a file (<a href=\"https://github.com/MaibornWolff/codecharta/issues/2326\">#2326</a>) \n<img src=\"https://user-images.githubusercontent.com/57844849/131342771-a3c637e3-8241-49aa-8d51-71e3a8d38aef.png\" alt=\"xl\"></li>\n<li>Add changelog guidelines (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2358\">#2358</a>)</li>\n<li>A changelog dialog with the latest additions to CodeCharta appears on version update (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2342\">#1315</a>) \n<img src=\"https://user-images.githubusercontent.com/48621967/131360878-a8e1ef40-7f73-4de7-8b3f-4c8dc21448da.PNG\" alt=\"xl\"></li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Fix broken method call in screenshot feature.</li>\n<li>Improve changelog entries.</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Changing the background color and remove \"outgoing\" and \"incoming\" edges from the legend, if not applicable (<a href=\"https://github.com/MaibornWolff/codecharta/issues/2330\">#2330</a>)</li>\n<li>Improve the user experience for the AI Feature \"Suspicious Metrics and Risk Profiles\" and enable it for any programming language (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2362\">#2362</a>) \n<img src=\"https://user-images.githubusercontent.com/26900540/133250867-adf4583d-9d0e-4f81-b8a7-1407b93d9f40.png\" alt=\"m\"></li>\n</ul>\n<h2>[1.78.0] - 2021-09-06</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>A changelog dialog with the latest additions to CodeCharta appears on version update (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1315\">#1315</a>)</li>\n<li>Add documentation for SCMLogParserV2 (<a href=\"https://github.com/maibornwolff/codecharta/issues/1349\">#1349</a>)</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Empty temporary label during hovering (<a href=\"https://github.com/maibornwolff/codecharta/issues/2328\">#2328</a>)</li>\n<li>Show the screenshot hotkey in the screenshot title (<a href=\"https://github.com/maibornwolff/codecharta/issues/2323\">#2323</a>)</li>\n<li>Improved rendering performance (<a href=\"https://github.com/MaibornWolff/codecharta/pull/2345\">#2345</a>)</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Update GH-Pages and visualization dependencies (<a href=\"https://github.com/maibornwolff/codecharta/issues/2356\">#2356</a>)</li>\n</ul>\n<h2>[1.77.0] - 2021-07-30</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>The \"Color Metric Options\" panel and \"Legend\" panel display the maximum value of the selected metric instead of infinite. (<a href=\"https://github.com/maibornwolff/codecharta/issues/1520\">#1520</a>)</li>\n<li>Mark color-section as unimportant in delta mode (<a href=\"https://github.com/maibornwolff/codecharta/issues/769\">#769</a>)</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Small ui improvements added. (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1881\">#1881</a>)</li>\n<li>Numbers/Percentages always show in the distribution bar(<a href=\"https://github.com/MaibornWolff/codecharta/issues/1540\">#1540</a>)\n<ul>\n<li>Toggle between percentage and absolute numbers by clicking anywhere on the (expanded) distribution bar.</li>\n<li>The old expanded distribution bar is now accessible through a button.</li>\n</ul>\n</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>It is no longer possible to exclude all files on the map (<a href=\"https://github.com/MaibornWolff/codecharta/issues/901\">#901</a>)</li>\n</ul>\n<h2>[1.76.0] - 2021-07-13</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Custom metric scenarios which include the 'Color-Metric' (rloc) will now also save any changes made to the color scheme.</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Performance improvements when loading new files. (<a href=\"https://github.com/maibornwolff/codecharta/issues/1312\">#1312</a>)</li>\n</ul>\n<h2>[1.75.0] - 2021-07-05</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Imported files are now compressed by default. Use the -nc parameter to uncompress the files. (<a href=\"https://github.com/maibornwolff/codecharta/issues/1702\">#1702</a>)</li>\n<li>Export the current view as a png image by using \"Ctrl+Alt+S\" or clicking the corresponding button (<a href=\"https://github.com/MaibornWolff/codecharta/issues/674\">#674</a>)</li>\n<li>Show only labels of buildings according to a chosen color (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1347\">#1347</a>)</li>\n<li>New buttons to reset the color hex values and color metric thresholds separately (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1613\">#1613</a>) \n<img src=\"https://user-images.githubusercontent.com/50167165/121889295-5b071780-cd19-11eb-87ef-aba0ab0c6c09.png\" alt=\"l\"></li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Metric aggregations now work as intended and are available from the sidebar when selecting folders (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1953\">#1953</a>)</li>\n<li>Opening new files does no longer remove old ones.\n<ul>\n<li>Already loaded files can be individually removed.</li>\n<li>The 'Multiple' view will select the latest files. \n<img src=\"https://user-images.githubusercontent.com/50167165/123071234-c6856f00-d414-11eb-8326-e25f614e75d7.png\" alt=\"l\"></li>\n</ul>\n</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>It is now possible to rotate the map by rotating the view cube (<a href=\"https://github.com/MaibornWolff/codecharta/issues/353\">#353</a>)</li>\n</ul>\n<h2>[1.74.0] - 2021-05-31</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>SonarImport: SonarQube 8.8 support. Older versions are still supported.</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Only show labels for building included in the search</li>\n<li>Color slider not initialized correctly (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1592\">#1592</a>)</li>\n</ul>\n<h2>[1.73.0] - 2021-05-10</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Improve descriptions (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1879\">#1879</a>)\n\n<img src=\"https://user-images.githubusercontent.com/57844849/115393175-b2897b00-a1e1-11eb-8601-d2128f3469a3.png\" alt=\"m\"></li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Excluding in delta mode is broken (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1578\">#1578</a>)\n(Inclusion and exclusion of files using wildcard searches in the flatten and exclude operations)</li>\n<li>Fix labels and lines missing a connection in some cases(<a href=\"https://github.com/MaibornWolff/codecharta/issues/1716\">#1716</a>)</li>\n<li>Ribbons resizing when expanding (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1952\">#1952</a>)</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Fix breaking changes with newest three-js version(<a href=\"https://github.com/MaibornWolff/codecharta/issues/1877\">#1877</a>)</li>\n</ul>\n<h2>[1.72.0] - 2021-04-22</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Hints for Global Settings (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1715\">#1715</a>)</li>\n<li>Indicate total nodes and excluded / flattened nodes in file explorer (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1880\">#1880</a>)</li>\n<li>Add path to node context menu (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1667\">#1667</a>)</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Made the header semi responsive (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1037\">#1037</a>)</li>\n</ul>\n<h2>[1.71.2] - 2021-03-16</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>DevOps pipeline changes</li>\n<li>Fixed web visualization in github</li>\n</ul>\n<h2>[1.71.1] - 2021-03-16</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>DevOps pipeline changes</li>\n</ul>\n<h2>[1.71.0] - 2021-03-16</h2>\n<h3>Changed</h3>\n<ul>\n<li>Disable unready AI function</li>\n<li>Fix linter errors</li>\n<li>Fix editorconfig</li>\n</ul>\n<h2>[1.70.2] - 2021-03-12</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>DevOps pipeline changes</li>\n<li>Project naming for Docker deployment</li>\n</ul>\n<h2>[1.70.1] - 2021-03-12</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>DevOps pipeline changes</li>\n</ul>\n<h2>[1.70.0] - 2021-03-09</h2>\n<h3>Changed</h3>\n<ul>\n<li>Render on demand (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1728\">#1728</a>)</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Memory leaks</li>\n</ul>\n<h2>[1.69.0] - 2021-02-23</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Added WebGL FXAA antialias & PixelRatio Options in order to achieve better resolution on high dpi displays(https://github.com/MaibornWolff/codecharta/pull/1551).\n<img src=\"https://user-images.githubusercontent.com/74670211/106582136-f4404900-6543-11eb-8f5b-5e1ec47457c7.png\" alt=\"option dialog\">\nThere are 4 available modes:\n<ul>\n<li><strong>standard mode</strong>: the pixel density is only applied to the small cube with standard browser aliasing</li>\n<li><strong>pixel ratio without aliasing</strong>: no antialiasing is used</li>\n<li><strong>pixel ration with FXAA</strong>: Nvidia FXAA antialiasing shader is used as an alisaing technique. this has better perfromance the standard browser aliasing aliasing</li>\n<li><strong>pixel ration with MSAA</strong>: this is the best aliasing quality, slower then FXAA.</li>\n</ul>\n</li>\n<li>Added GPU Stats (only in dev mode)</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Unfocus now respects the focus depth (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1099\">#1099</a>)</li>\n<li>Track anonymous usage data also for older CodeCharta API versions and fix some minor bugs.</li>\n</ul>\n<h2>[1.68.0] - 2021-02-08</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>A new experimental feature has been added to track anonymous metadata of a currently loaded map.\n<ul>\n<li>Neither the map name nor file names will be tracked but anonymous metric values and statistics like (average, min, max).</li>\n<li>The tracked data will not be sent to a server yet. Instead, it can be downloaded as a json file in the Global Settings for now.</li>\n<li>It is planned to send the anonymous data to a server in the future, so that we can collect tracking data automatically.</li>\n<li><img src=\"https://user-images.githubusercontent.com/26900540/106896300-ac5f2480-66f1-11eb-8096-246d1733c0ee.png\" alt=\"example of new feature\"></li>\n</ul>\n</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Errors occurred in delta mode if names of root folders were different</li>\n<li>Switching maps in delta mode now shows the differences between the maps (<a href=\"https://github.com/maibornwolff/codecharta/issues/1606\">#1606</a>)</li>\n<li>Label over hovered building not shown for height Metric value of zero (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1623\">#1623</a>)</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>CodeChartaStorage class has been introduced to dynamically store values either on disk (standalone version) or in the localStorage (web version). This is the first step to solve <a href=\"https://github.com/MaibornWolff/codecharta/issues/684\">#684</a>.</li>\n</ul>\n<h2>[1.67.0] - 2021-01-26</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>\n<p>Allow opening files from local drive by double clicking on the buildings or clicking on their names (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1314\">#1314</a>)</p>\n<ul>\n<li>Only available in the standalone version!</li>\n<li>files are opened in associated third-party applications</li>\n<li>web-links are opened in a browser window</li>\n</ul>\n</li>\n<li>\n<p>Allow customized color in the node context menu (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1556\">#1556</a>).</p>\n<p><a href=\"https://user-images.githubusercontent.com/3596742/104302048-a007f300-54c8-11eb-86c1-287483884783.png\">!example of new feature #1556</a></p>\n</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>fixed wrong max tree map visibility (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1624\">#1624</a>)</li>\n<li>fixed incorrect label placement on delta maps that share no common nodes (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1686\">#1686</a>)</li>\n</ul>\n<h2>[1.66.0] - 2021-01-18</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Allow color of buildings to be customizable in the ribbon bar and in the legend. Colors of edges are now customizable as well (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1533\">#1533</a>)\n<img src=\"https://user-images.githubusercontent.com/3596742/103547861-3c1c7380-4ea5-11eb-8df2-541caf65b9df.png\" alt=\"example of new feature\"></li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Global settings not reverting to default ones (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1632\">#1632</a>)</li>\n<li>Maximum treemap files shown in squarified node (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1624\">#1624</a>)</li>\n<li>Wrong folder names and colors in legend when using the highlight folder feature (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1555\">#1555</a>)</li>\n<li>Temporary labels are placed at the wrong height for scaled buildings (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1618\">#1618</a>)</li>\n<li>Visible labels will disappear or placed lower for scaled buildings (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1619\">#1619</a>)</li>\n<li>Unnecessary break line for secondary metrics (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1093\">#1093</a>)</li>\n</ul>\n<h2>[1.65.0] - 2020-12-23</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Highlight label while hovering over building, draw a temporary label for hovered buildings that have none (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1529\">#1529</a>)</li>\n<li>Integrated streetlayout (<a href=\"https://github.com/MaibornWolff/codecharta/issues/904\">#904</a>)\n<img src=\"https://user-images.githubusercontent.com/63230711/78872405-87eed900-7a49-11ea-984a-c0ef738779b9.png\" alt=\"cc_street_ccv\">\nIn street layout file nodes are displayed as buildings and directories are displayed as streets. A street layout has the advantage of a more apparent directory structure and stable positioning of nodes after metric changes.\ntwo different Street layout are integrated : - StreetLayout : as described above. - TMStreet : a combination of street layout and squarified layout.</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>The button to see excluded buildings is now merged into the flattened button. Excluded and flattened buildings can now be seen by opening the building with the eye slash icon (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1543\">#1543</a>)</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Height scaling not applied to buildings (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1595\">#1595</a>))</li>\n<li>Fixed multiple label positioning/scaling bugs</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>e2e flaky test (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1322\">#1322</a>)</li>\n</ul>\n<h2>[1.64.0] - 2020-12-15</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>\n<p>Download and upload Custom Configurations is now possible (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1472\">#1472</a>)</p>\n<ul>\n<li>Open the Custom Configs menu in the toolbar on top of the map</li>\n<li>Next to the <code>plus</code> Button you can see two new buttons: Upload and download.\n<ul>\n<li>Download: If you already have added Custom Configs you can download them by clicking the download button.\n<ul>\n<li>Custom Configs which are applicable for the currently selected map(s) will be downloaded as <code>.cc.config.json</code> files.</li>\n</ul>\n</li>\n<li>Upload: Click the upload button and specify your Custom Config file (<code><file-name>.cc.config.json</code>)\n<ul>\n<li>Already existing Custom Configs will be skipped.</li>\n<li>Different Custom Configs with same names will be renamed.</li>\n<li>Another way to upload your Custom Configs is to upload a <code>.cc.json</code> file together with one or multiple <code>.cc.config.json</code> files using the default <code>Load .cc.json map</code> button in the upper left corner.</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>The Configs are stored to the local storage of your browser.\n<ul>\n<li>If a limit of <code>768KB</code> is exceeded you will see a warning when trying to add a new Custom Config.</li>\n<li>You can click the displayed \"download and purge\" button to download/backup at least 6 months old Configs and then purge them from the local storage to make space for new ones.</li>\n<li>If we cannot purge any Configs, you might have to do that by your own by deleting specific Configs manually.</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Increase possible margin size (<a href=\"https://github.com/MaibornWolff/codecharta/pull/1490\">#1490</a>)\n<ul>\n<li>change displayed margin value from % to pixel</li>\n<li>change dynamic margin value to a default margin value that should fit the map</li>\n</ul>\n</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Re-enabled color selection for folders and on hover (<a href=\"https://github.com/MaibornWolff/codecharta/pull/1544\">#1544</a>)</li>\n<li>Labels do not take delta height into account (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1523\">#1523</a>)</li>\n<li>The calculation of the map resolution scale factor was wrong (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1491\">#1491</a>)\n<ul>\n<li>The factor is used to decrease the map resolution especially for big maps to avoid performance issues.</li>\n<li>Now only the selected maps will be considered for the calculation. Unselected maps will be skipped.</li>\n</ul>\n</li>\n</ul>\n<h2>[1.63.0] - 2020-11-30</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Add the folder name onto the floor on the first 3 layers to get a better overview of the map (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1491\">#1491</a>)</li>\n<li>UX Improvements related to labels allowing for user interaction #1404\n<ul>\n<li>Labels can be hovered, hovering their corresponding node</li>\n<li>Selecting a label will select the corresponding node</li>\n<li>Hovering a label will remove its transparency and move towards the user:\n<ul>\n<li>If other labels obstruct the hovered label it will move to the front</li>\n</ul>\n</li>\n<li>Increased the transparency of other labels; this makes it easier to distinguish the hovered label</li>\n<li>Increase the amount of labels to 250.</li>\n</ul>\n</li>\n<li>Show file count of folders in Attribute-Side-Bar (<a href=\"https://github.com/MaibornWolff/codecharta/issues/1255\">#1255</a>):\n<img src=\"https://user-images.githubusercontent.com/3596742/100371884-be915800-3008-11eb-89f5-ed57c62680cc.png\" alt=\"img showing file count of folder\"></li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Buildings are flattened when delta is active #824.</li>\n<li>Selected Building now stays highlighted when map is rotated #1498</li>\n</ul>\n<h2>[1.62.0] - 2020-11-12</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>\n<p>A new option in the Global Settings allows to enable/disable experimental features #1318</p>\n<ul>\n<li>Click on the settings button in the upper right corner to open the Global Settings dialog.</li>\n<li>Activate/Deactivate the new option \"Enable Experimental Features\"</li>\n<li>The features will be shown/hidden accordingly</li>\n</ul>\n</li>\n<li>\n<p>\"CustomViews\", the first experimental feature has been added #1318</p>\n<ul>\n<li>It must be enabled by activating the new option in the Global Settings dialog as mentioned before.</li>\n<li>You can save your current map configurations to replay/restore them later.</li>\n<li>A saved CustomView can only be applied for it's original map.</li>\n<li>This will enable you to be more efficient in analizing projects by switching between different CustomViews.</li>\n</ul>\n</li>\n<li>\n<p>NodeContextMenu now contains option to keep buildings highlighted #1323</p>\n</li>\n<li>\n<p>Fixed Folder algorithm supports nested (parent-child) Fixed Folders #1431</p>\n<ol>\n<li>Define children of a Fixed Folder also as Fixed Folders by adding the <code>fixedPosition</code> attribute manually in <code>.cc.json</code>.</li>\n<li>All children of a parent Fixed Folder must be fixed.</li>\n<li>Read the how-to guide for further information: https://maibornwolff.github.io/codecharta/how-to/fixate_folders_with_a_custom_cc_json/</li>\n</ol>\n</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>\n<p>Improved search</p>\n<ol>\n<li>Not providing any star in the search bar from now on expects the input to\nbe a wildcard search. Thus, files are going to match paths that have\nleading or following characters. E.g., <code>oo</code> is going to match\n<code>/root/foobar</code>.</li>\n<li>To use the explicit former search mode, wrap the search entry in quotes as\nin: <code>\"oo\"</code>. This would only match filenames that are exactly <code>oo</code>.</li>\n<li>The search field accepts multiple search entries at once, separated by\ncommata. <code>foo,bar</code> is going to search for both <code>*foo*</code> and <code>*bar*</code> and\nmarks all matched files accordingly.</li>\n<li>It is possible to invert the search with a leading exclamation mark as in\n<code>!foobar</code>. That will match any file that does not match <code>*foobar*</code>. It is\nonly possible to invert the complete input, not individual search entries.</li>\n<li>Whitespace handling changed to ignore leading whitespace.</li>\n</ol>\n</li>\n<li>\n<p>Distribution metric #1188</p>\n<ol>\n<li>set rloc to default distribution metric, showing language percentages for real lines of code, if available. Else set to unary to show language distribution over files</li>\n</ol>\n</li>\n<li>\n<p>Improved file sorting in the file overview of the search bar</p>\n<ul>\n<li>Numbers are sorted naturally</li>\n<li>Characters are compared with their base character (e.g., <code>a</code> is now next to <code>á</code>).</li>\n</ul>\n</li>\n<li>\n<p>Label metric not shown by default anymore</p>\n</li>\n</ul>\n<h2>[1.61.0] - 2020-10-30</h2>\n<h3>Changed</h3>\n<ul>\n<li>Disable highlighting buildings during map movement #1432</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>File tree/flattened/excluded overlay visualization is buggy #1269</li>\n<li>EdgePreview on Map broken when selecting zero #1276</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Schedules and merge retries of dependabot dependency updates changed</li>\n</ul>\n<h2>[1.60.2] - 2020-10-24</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Mouse cursor flickering #1170</li>\n<li>Fix flipping map when clicking any option in the toolbar #1410</li>\n<li>Fix edge metric not working correctly</li>\n</ul>\n<h2>[1.60.1] - 2020-10-20</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Issue with first start without an internet connection not working#1266</li>\n<li>Issue with ribbon bar sizes for opened cards #1035</li>\n</ul>\n<h2>[1.60.0] - 2020-10-16</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Parsing feedback with progressbar and probable ETA for parsers and SonarImporter #847</li>\n<li>Mark node names and make the names clickable for nodes that have a link to them #1313</li>\n<li>Indicate the metric name next to a shown value in a new line on labels #1035</li>\n<li>Checkboxes to display metric names and values and to display node names on labels #1035</li>\n<li>Mark node names and make the names clickable for nodes that have a link to them #1313</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Label design #1035</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>First start without an internet connection of standalone not working #1266</li>\n<li>Comparing a map in delta mode shows the correct differences</li>\n<li>This mainly applies to maps compared with itself while it also fixes some other minor miscalculations</li>\n<li>File extensions detection is improved</li>\n<li>Zooming in and out the map will now close the node context menu #1324\n<ul>\n<li>Improved and simplified event handling in NodeContextMenu component</li>\n</ul>\n</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Improved performance of multiple operations (e.g., delta mode).</li>\n</ul>\n<h2>[1.59.0] - 2020-10-09</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>New EXPERIMENTAL SCMLogParser version</li>\n<li>Improved performance around 300% when parsing CodeCharta</li>\n<li>Improved memory usage</li>\n<li>Fixed issue with old parser creating incorrect nodes in CodeCharta #871</li>\n<li>ATTENTION: the parser is experimental, therefore some potential issues might remain, e.g. potentially an unhandled edge case when parsing node</li>\n<li>To use the new parser a reversed git log is needed, as well as a git file list, refer to <code>ccsh scmlogparserv2 -h</code> for additional information</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Color-Metric slider is set and activated in the map accordingly to the released sliderbutton #1319</li>\n<li>Deselcting a building will instantly dehighlight the buildings which were connected through edges #890</li>\n</ul>\n<h2>[1.58.1] - 2020-10-02</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Showing wrong edges when hovering a building after selecting one #1137</li>\n</ul>\n<h2>[1.58.0] - 2020-10-02</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Add active color metric to the top of the legend panel #1278</li>\n<li>SourceCodeParser: Java 14 Support #1277</li>\n</ul>\n<h2>[1.57.4] - 2020-09-25</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Metric-Settings-Panels closed when clicking an option inside the panel #1258</li>\n<li>Improve loading and rendering maps performance</li>\n</ul>\n<h2>[1.57.3] - 2020-09-18</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Improve overall performance for loading and rendering maps</li>\n<li>Improve error messages when a file can't be loaded with the URL parameters</li>\n</ul>\n<h2>[1.57.2] - 2020-09-11</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>New API version 1.2 not set correctly in analysis</li>\n</ul>\n<h2>[1.57.1] - 2020-09-11</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Validation of unique filenames not checking for the complete path and instead throwing an error on duplicate filename</li>\n</ul>\n<h2>[1.57.0] - 2020-09-11</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li><code>fixedPosition</code> as a new property in the <code>cc.json</code> that allows to fixate folders in the map</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li><code>cc.json</code> version updated to <code>1.2</code></li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Compressed `cc.jsons (.gz) not marked as accepted when selecting a file in the file chooser</li>\n</ul>\n<h3>Docs 🔎</h3>\n<ul>\n<li><a href=\"https://maibornwolff.github.io//codecharta/how-to/fixate_folders_with_a_custom_cc_json/\">How-To: Fixate Folders in the <code>cc.json</code></a></li>\n<li>CC-Json-API changes</li>\n</ul>\n<h2>[1.56.0] - 2020-09-04</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Improve performance when switching to multiple or delta mode when edges are available</li>\n<li>Scenario with EdgeMetric is only appliable when EdgeMetric is existing for the Map #1201</li>\n<li>Starting standalone version results in infinite loading loop #1202</li>\n<li>Expanded metric selection will close when clicking anywhere outside of that selection #1036</li>\n</ul>\n<h2>[1.55.0] - 2020-08-28</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Cursor indicator for different mouse actions #1042</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Edge-Metrics sorted by name now instead of number of incoming and outgoing edges</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Number of incoming and outgoing edges not visible when hovering over a node #1095</li>\n<li>Highlighting buildings in multiple mode now works #956</li>\n</ul>\n<h2>[1.54.0] - 2020-08-21</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Opening NodeContextMenu in the tree-view marks the node until it is closed #1068</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Missing Sonarcloud metrics in demo</li>\n</ul>\n<h3>Docs 🔎</h3>\n<ul>\n<li>Added note how to fix missing <code>sh</code> command issue when running integration tests on Windows</li>\n</ul>\n<h2>[1.53.0] - 2020-08-14</h2>\n<h3>Changed</h3>\n<ul>\n<li>NodeContextMenu will show up when releasing the right-mouse-button now #1027</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>NodeContextMenu showing up after moving the mouse while holding right-mouse-button #1027</li>\n</ul>\n<h2>[1.52.0] - 2020-08-07</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Support for Tokei 12 new JSON schema #1103</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Rename master branch to main for a more inclusive naming #1117</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>After loading an invalid file the filechooser pops up again, so that the user can choose a valid file #1021</li>\n<li>Quality gates on sonarcloud.io are red #879</li>\n</ul>\n<h3>Docs 🔎</h3>\n<ul>\n<li>Moved developer guides to our <a href=\"https://maibornwolff.github.io/codecharta/\">gh-pages</a> #986</li>\n</ul>\n<h2>[1.51.0] - 2020-07-24</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>File chooser now accept \".json\" files only to avoid accidentally loading incorrect files #1094</li>\n<li>Lots of tooltips #1030</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Blacklisting a building would sometimes not update the map #1098</li>\n<li>Changes made after opening the filechooser and closing it won't be applied #875</li>\n<li>Edge metric list not always updated correctly when loading a new file #1106</li>\n</ul>\n<h2>[1.50.0] - 2020-07-10</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Line between scenario indicator and remove button #1069</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Reduced transition time when opening or collapsing parts of the ribbon bar #1043</li>\n<li>Search Panel will open now when clicking in the search field and collapse when clicking somewhere else #1071</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Opening the same file again will now reload the file and reset the application #1032</li>\n<li>Improve render performance by persisting color conversions #1034</li>\n<li>Sorting in tree-view not being applied #1040</li>\n</ul>\n<h2>[1.49.1] - 2020-07-03</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Improved performance significantly when switching between single, multiple and delta</li>\n<li>Color-Range-Slider sometimes misbehaved when loading a new map or excluding buildings #926</li>\n</ul>\n<h2>[1.49.0] - 2020-06-19</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Custom scenarios can be created and saved through the scenario menu #675</li>\n<li>Importer and parser documentation can now be found on the github Website #954</li>\n<li>Output of sourcemonitor can now be compressed with the compression flag</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>[Security] Bump angular from 1.7.9 to 1.8.0 in /visualization #995</li>\n</ul>\n<h2>[1.48.0] - 2020-06-12</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Support of compressed cc.json files. Files can be compressed in the analysis #848</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Improved performance of several importers #846</li>\n</ul>\n<h2>[1.47.1] - 2020-05-08</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Attribute-Side-Bar being invisible</li>\n</ul>\n<h2>[1.47.0] - 2020-05-02</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>When hovering over a folder, all buildings inside it will be highlighted as well #694</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Rename the button Show-Complete-Map button to Unfocus #642</li>\n<li>Move the Unfocus button (visible when right-clicking a focused node) to the node-context-menu #948</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Generating a delta map with merged empty folders in between is now working correctly #730</li>\n<li>Reduced time when opening a new file #932</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>[Security] Bump jquery from 3.4.0 to 3.5.0 in /visualization #944</li>\n</ul>\n<h2>[1.46.1] - 2020-04-24</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Error dialogs in case of validation or api version issues #610</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Improved overall rendering performance of larger maps by roughly 40% #836</li>\n</ul>\n<h2>[1.45.5] - 2020-04-17</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Median symbol for aggregated relative metrics #365</li>\n<li>AttributeTypes for tokeiImporter and SCMLogParser #365</li>\n<li>Ellipsis button in TreeView list when hovering a node to access context menu #780</li>\n<li>Show gray eye-icon next to the ellipsis-button to indicate a flattened node #780</li>\n<li>Attribute Type selector in the metric dropdowns for edges and nodes</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Metrics with AttributeType relative are now aggregated using the median #365</li>\n<li>Showing absolute number of files instead of relative number when hovering list item in TreeView #780</li>\n<li>Clicking a hovered list item inside the TreeView opens folders #780</li>\n<li>Color node name in gray when flattened #780</li>\n</ul>\n<h3>Removed 🗑</h3>\n<ul>\n<li>Eye-icon in TreeView list to flatten a node #780</li>\n<li>Option to focus a node when clicking the node name inside the TreeView #780</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Consistency of AttributeTypes representation #365</li>\n<li>Wrong file description for tokeiimporter</li>\n<li>Improved search performance #837</li>\n</ul>\n<h2>[1.44.0] - 2020-03-27</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Dialog to select between different sorting options #388</li>\n<li>Button to reverse the current selected sorting #388</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Show file selection in toolBar after excluding or hiding a node instead of an empty toolBar #896</li>\n</ul>\n<h2>[1.43.0] - 2020-03-20</h2>\n<h3>Changed</h3>\n<ul>\n<li>Selectable metrics will only contain metrics from the visible maps</li>\n<li>Closing the attribute-side-bar by clicking somewhere in the map will now be triggered on mouse up instead of mouse down</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Search-panel opening for a short duration when importing a new file</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Fix vulnerability with nokogiri <1.10.8</li>\n</ul>\n<h2>[1.42.3] - 2020-03-13</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Loading Gif not displayed when preparing to render a new map #857</li>\n<li>Selecting zero files in Multiple mode will not trigger the 3D CodeMap creation</li>\n<li>Metrics in the dropdown menu now show the correct max value for the visible maps #876</li>\n</ul>\n<h2>[1.42.2] - 2020-02-14</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Replaced non standard <code>[[</code> in sh scripts #849</li>\n<li>Improved performance for loading a new file #836</li>\n<li>Marked Packages are loaded from files #798</li>\n</ul>\n<h2>[1.42.1] - 2020-02-07</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>GC Overhead Limit (OutOfMemory Exception) during analysis of large SCMLogs fixed #845</li>\n</ul>\n<h2>[1.42.0] - 2020-01-31</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Support for camel and kebab-case for ccsh arguments #772</li>\n<li>RawTextParser for analysis #660</li>\n<li>IndentationLevel as metric for RawTextParser #660</li>\n<li>Show additional Pairing Rate of Selected Building, simultaneously to the currently hovered Buildings #736</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Options of the ccsh are now consistently in kebab-case #772</li>\n</ul>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Path prefix handling in tokeiimporter #841</li>\n</ul>\n<h2>[1.41.8] - 2020-01-17</h2>\n<h3>Removed 🗑</h3>\n<ul>\n<li>Project name parameters in the ccsh #773</li>\n</ul>\n<h2>[1.41.6] - 2020-01-10</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Deployment</li>\n</ul>\n<h2>[1.41.1] - 2020-01-10</h2>\n<h3>Fixed 🐞</h3>\n<ul>\n<li>Performance of loading maps with edges improved #823</li>\n<li>Calculation of other Group for fileExtensionBar #768</li>\n<li>Remove focus of UI elements when they are not visible anymore</li>\n</ul>\n<h2>[1.41.0] - 2019-12-06</h2>\n<h3>Added 🚀</h3>\n<ul>\n<li>Show the relative number of files a folder includes compared to the project in the TreeView #380</li>\n<li>Show the number of files a folder includes in the TreeView when hovering #380</li>\n<li>When the File Extension Bar is hovered, all buildings corresponding to that extension are highlighted #545</li>\n<li>Toggle between percentage and absolute values when clicking the file extension details section #545</li>\n<li>Sum hovered delta values for folders #781</li>\n</ul>\n<h2>[1.40.0] - 2019-11-22</h2>\n<h3>Changed</h3>\n<ul>\n<li>Replaced Blacklist Hide with Flatten option #691</li>\n<li>Flattened buildings are not hidden by default #691</li>\n</ul>\n<h3>Chore 👨💻 👩💻</h3>\n<ul>\n<li>Bump @types/three from 0.89.12 to 0.103.2 in /visualization #453</li>\n<li>Bump angularjs-slider from 6.5.1 to 7.0.0 in /visualization #454</li>\n<li>Bump webpack from 3.12.0 to 4.41.2 in /visualization #436</li>\n<li>[Security] Bump angular from 1.7.7 to 1.7.9 in /visualization #800</li>\n</ul>\n<h2>[1.39.0] - 2019-11-15</h2>\n<h3>Added</h3>\n<ul>\n<li>Progress indicator for SonarImporter #544</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>New style for hovered metric values #696</li>\n<li>Redesigned slider labels in ribbonBar sections #696</li>\n<li>Shortened ribbonBar sections #696</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Missing pictures and broken links in docs #785</li>\n<li>SCMLogParser is now more resilient to unusual SVN commit messages #763</li>\n</ul>\n<h2>[1.38.1] - 2019-11-13</h2>\n<h3>Added</h3>\n<ul>\n<li>New github-pages https://maibornwolff.github.io/codecharta/</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Sum symbol for hovered metric values only shows for folders #775</li>\n</ul>\n<h2>[1.38.0] - 2019-11-08</h2>\n<h3>Added</h3>\n<ul>\n<li>Temporal coupling edges generated by SCMLogParser #622</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Downloaded files are no longer formatted #679</li>\n<li>Added highly and median coupled files metrics to non-churn metric list of SCMLogParser #622</li>\n<li>Moved nodePathPanel to toolBar and updated style #607</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Removed attributes from downloaded files that should not be there #679</li>\n</ul>\n<h2>[1.37.0] - 2019-10-25</h2>\n<h3>Added</h3>\n<ul>\n<li>Sidebar with information regarding the selected building #527</li>\n<li>Sidebar closes when selected buildings is excluded #748</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Animation to show or hide the legend panel #527</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>Expandable detail panel in lower left corner #527</li>\n<li>Removed option to maximize/minimize detail panel #527</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Autofocus and label size for focused nodes #747</li>\n<li>Selected buildings stays selected when settings are changed #748</li>\n<li>IllegalStateException when scanning single file in SourceCodeParser #573</li>\n<li>SourceCodeParser places files in the project root correctly into the hierarchy #574</li>\n</ul>\n<h2>[1.36.0] - 2019-10-18</h2>\n<h3>Changed</h3>\n<ul>\n<li>Open and close the ribbonBar sections independently with an updated animation</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Camera is now resetted correctly, when unfocusing #634</li>\n<li>Inputs of Color Range Slider now waits a second before it commits its values #676</li>\n<li>Fixed root folder name in TreeView after new map after loading new map #649</li>\n<li>Increased size of ribbonBar for big screens #644</li>\n<li>File-Extension-Bar will not display excluded nodes anymore #725</li>\n<li>Sanitize input for shelljs #600</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>Bump jacoco from 0.8.1 to 0.8.4 in /analysis</li>\n</ul>\n<h2>[1.35.0] - 2019-10-04</h2>\n<h3>Added</h3>\n<ul>\n<li>Checkbox in global Settings for disabling camera reset, when new map is loaded #685</li>\n<li>Pipe support for SourceCodeParser #716</li>\n<li>Pipe support for SCMLogParser #717</li>\n<li>Pipe support for SonarImporter #715</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Exclude and Hide options are disabled for empty and already existing search patterns #654</li>\n</ul>\n<h2>[1.34.0] - 2019-09-20</h2>\n<h3>Added</h3>\n<ul>\n<li>Tokei Importer #538</li>\n<li>Prominent Notice that we use Sonar-jar #713</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>Bump kotlin-reflect from 1.3.41 to 1.3.50 in /analysis</li>\n<li>Bump json from 20180813 to 20190722 in /analysis</li>\n<li>Bump rxjava from 2.2.9 to 2.2.12 in /analysis</li>\n<li>Bump assertj-core from 3.12.2 to 3.13.2 in /analysis</li>\n<li>Bump sonar-java-plugin from 5.12.1.17771 to 5.14.0.18788 in /analysis</li>\n</ul>\n<h2>[1.33.0] - 2019-09-10</h2>\n<h3>Added</h3>\n<ul>\n<li>Edge Previews (Palm-Tree-Effect) #529</li>\n<li>Dropdown to select Edge Metric, including Edge Counter #529</li>\n<li>Edge Metric settings for Edge Height, Number of Previews & show only building with Edges #529</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Edge Visualization to better distinguish between incoming and outgoing edges #529</li>\n<li>Distribution metric is by default the same as area metric #689</li>\n<li>MapTreeView below searchBar opens the first level by default #690</li>\n<li>Focus metric search when opening metricChooser #693</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>Edge Options in Context menu #529</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>SourceCodeParser now skips custom metrics for files, if the syntax tree cannot be created</li>\n<li>Nodes with color metric equals 0 are colored correct again #677</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>[Security] Bump mixin-deep from 1.3.1 to 1.3.2 in /visualization</li>\n</ul>\n<h2>[1.32.0] - 2019-08-09</h2>\n<h3>Added</h3>\n<ul>\n<li>Search for metrics and an indicator for the highest value in dropdown #575</li>\n<li>Button to enable PresentationMode that uses Flashlight-Hovering #576</li>\n<li>Clarifying information which file is which in the file bar when in delta mode #615</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Replaced Scenario dropdown with button on the left of the metric sections #628</li>\n</ul>\n<h2>[1.31.0] - 2019-08-02</h2>\n<h3>Added</h3>\n<ul>\n<li>New Metric in SourceCodeParser: Maximum-Nesting-Level #659</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Label hight adjustment now matches scaling of map #594</li>\n<li>SCMLogParser now guesses the input file encoding #614</li>\n</ul>\n<h2>[1.30.0] - 2019-07-26</h2>\n<h3>Added</h3>\n<ul>\n<li>New Search Bar #526</li>\n<li>Number of Renames Metric to SCMLogParser #621</li>\n<li>Age In Weeks Metric for SCMLogParser #620</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>ToolBar now shows partially cut-off controls if the window is too small #582</li>\n<li>Position of the legendPanel was moved to the bottom-right corner #633</li>\n<li>RibbonBar only opens the three metric section</li>\n<li>Moved Scenario-select to the right in order to use less space</li>\n<li>Moved loading-gif from ribbonBar to toolBar</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>RibbonBar toggle button</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>FileExtensionBar height to not show a bottom-margin in Chrome</li>\n<li>PointerEvents not being propagated when RibbonBar was extended</li>\n<li>Reduced memory usage of SCMLogParser to avoid OutOfMemory Exception #631</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>[Security] Bump lodash.mergewith from 4.6.1 to 4.6.2 in /visualization</li>\n<li>[Security] Bump lodash from 4.17.11 to 4.17.13 in /visualization</li>\n<li>[Security] Bump fstream from 1.0.11 to 1.0.12 in /visualization</li>\n</ul>\n<h2>[1.29.0] - 2019-07-12</h2>\n<h3>Changed</h3>\n<ul>\n<li>Moved Button to reset the map to the center next to the view-cube #606</li>\n<li>Moved FileExtensionBar #527</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>Burger Menu / SideNav #526</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Colors in File-Extension-Bar will be displayed in MS Edge and Standlone now #584</li>\n</ul>\n<h2>[1.28.0] - 2019-06-28</h2>\n<h3>Added</h3>\n<ul>\n<li>Releasing will now remind the developer to manually add the release notes #533</li>\n<li>StructureModifier to remove and move nodes and set root of projects #547 / #181</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>More informative log messages regarding the success of project merging #547</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>Release Notes are not generated and added automatically to a release #533</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Margin will now be set correctly depending on whether dynamicMargin is enabled or not #602</li>\n</ul>\n<h2>[1.27.0] - 2019-06-25</h2>\n<h3>Added</h3>\n<ul>\n<li>Automatically generates release notes from changelog and appends it to release #533</li>\n<li>Adds global settings-menu with settings from options panel and weblinks #528</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Moved File Settings from Ribbon Bar to new File Setting Bar #525</li>\n<li>Rename sample file codemap-nodes #587</li>\n<li>Hide checkbox to select white-positive-buildings in delta state #345</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>Removes Options panel from sidebar #528</li>\n<li>Removes Weblinks panel from sidebar #528</li>\n<li>Removed URL-parameter info from sidebar #525</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Unary Metric will no longer be auto-selected when a new map is loaded #579</li>\n</ul>\n<h2>[1.26.0] - 2019-06-14</h2>\n<h3>Added</h3>\n<ul>\n<li>FileExtensionBar to show file-distribution of chosen metric #495</li>\n<li>sum icon is now displayed on the left of the metric value #364</li>\n<li>Added Pop-up dialog before downloading file to set filename and see what data will be stored #523</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Fix set default ColorRange when resetting color section #560</li>\n</ul>\n<h2>[1.25.1] - 2019-05-30</h2>\n<h3>Added</h3>\n<ul>\n<li>SVN log parser keeps track of renaming of files for metric calculation #542</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Entries with renaming information in SVN logs are attributed to correct file #542</li>\n<li>Unary metric will no longer be removed from the MetricChooser-Dropdown when a folder was excluded or hidden #548</li>\n<li>Changing margin and then file or mode will no longer freeze the application #524</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>[Security] Bump tar from 2.2.1 to 2.2.2 in /visualization</li>\n</ul>\n<h2>[1.25.0] - 2019-05-17</h2>\n<h3>Added</h3>\n<ul>\n<li>Added SonarJava to Source code parser #343</li>\n<li>Added exclude and defaultExclude options to SourceCodeParser #508</li>\n<li>Show loading-gif in ribbonBar when rerendering map</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Using Sonar Plugins for Source code parser, giving the Sonar Metrics #343</li>\n<li>Use debounced settings update instead of throttled</li>\n<li>Filename of downloaded file now contains time #484</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Fixed issue with too long line in ccsh.bat #506</li>\n<li>Prevent downloaded files from having multiple Timestamps #484</li>\n<li>Do not show loadingGif when cancelling the fileChooser #498</li>\n<li>Excluding a building now updates the maximum value of colorRange #355</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>Bump angular-material from 1.1.9 to 1.1.14 in /visualization</li>\n<li>[Security] Bump jquery from 3.3.1 to 3.4.0 in /visualization</li>\n</ul>\n<h2>[1.24.0] - 2019-04-23</h2>\n<h3>Removed</h3>\n<ul>\n<li>Settings as URL parameters #470</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Fixed issue with trailing slash in URL parameter of SonarImporter #356</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>Bump d3 from 4.13.0 to 5.9.2 in /visualization</li>\n<li>Bump sinon from 4.5.0 to 7.3.1 in /visualization</li>\n</ul>\n<h2>[1.23.0] - 2019-03-22</h2>\n<h3>Added</h3>\n<ul>\n<li>Project Name can be specified for merge filter #394</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Throw a MergeException if project names do not match in MergeFilter #394</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Excluded buildings are no longer used for aggregated metric calculation #352</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>Bump browser-sync-webpack-plugin from 1.2.0 to 2.2.2 in /visualization</li>\n<li>Bump @types/node from 8.10.19 to 11.11.3 in /visualization</li>\n<li>Bump html-webpack-plugin from 2.30.1 to 3.2.0 in /visualization</li>\n<li>Bump load-grunt-tasks from 3.5.2 to 4.0.0 in /visualization #444</li>\n<li>Bump ajv from 5.5.2 to 6.10.0 in /visualization #447</li>\n<li>Bump resolve-url-loader from 2.3.0 to 3.0.1 in /visualization #448</li>\n</ul>\n<h2>[1.22.0] - 2019-03-15</h2>\n<h3>Added</h3>\n<ul>\n<li>Added buttons to select all/none/inversion of revisions/maps in multiple mode #391</li>\n<li>Merge filter can merge all files of folders #392</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Fixed bug that code map was not re-loaded when changing from multiple to single revision mode #396</li>\n<li>Fixed missing apiVersion in aggregated map #398</li>\n<li>Input Fields of color sliders adjust width according to content #409</li>\n</ul>\n<h3>Chore</h3>\n<ul>\n<li>Bump nouislider from 11.1.0 to 13.1.1 in /visualization</li>\n<li>Bump typescript from 2.7.2 to 3.3.3333 in /visualization</li>\n<li>Bump @types/d3 from 4.13.0 to 5.7.1 in /visualization</li>\n</ul>\n<h2>[1.21.2] - 2019-02-26</h2>\n<h3>Added</h3>\n<ul>\n<li>When entering Multiple Mode, all Maps/revisions are preselected</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Fixing non-existent metric aggregation on root-level when using multiple Files</li>\n</ul>\n<h2>[1.21.1] - 2019-02-22</h2>\n<h3>Added</h3>\n<ul>\n<li>Hovering a node in the map also hovers it in the tree view #351</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Fixing sync between treeview hovering and map hovering #351</li>\n<li>Folders can no longer be colored in the CodeMap or TreeView #359</li>\n</ul>\n<h2>[1.21.0] - 2019-02-16</h2>\n<h3>Added</h3>\n<ul>\n<li>Color searched node names green in TreeView #225</li>\n<li>Add option buttons (three dots) in TreeViewSearch to <code>Hide</code> or <code>Exclude</code> matching nodes #298</li>\n<li>Show blacklist entry counter in blacklistPanel header #298</li>\n<li>Option checkbox 'Hide Flattened Buildings' #225</li>\n<li>Hide/Flatten non-searched buildings #225</li>\n<li>Hide/Flatten all buildings, if searchPattern can't find any matching nodes #225</li>\n<li>Show maxValue of each metric in metricChooser select list #204</li>\n<li>Colored color-slider inside the RibbonBar #318</li>\n<li>Option to color positive buildings white #311</li>\n<li>Clicking the ribbonBar section-titles toggles the ribbonBar #324</li>\n<li>View-Cube displayed in top right corner #274</li>\n<li>Adding prettier formatter</li>\n<li>Adapt colorRange when changing colorMetric #330</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Update TreeView filter with search field #225</li>\n<li>Use 'gitignore' style matching in TreeViewSearch #225</li>\n<li>Reorder <code>Focus</code>, <code>Hide</code> and <code>Exclude</code> buttons in nodeContextMenu #298</li>\n<li>Reorder sidebarPanels (BlacklistPanel beneath TreeViewSearchPanel) #298</li>\n<li>Use <code>fa-ban</code>-icon as symbols for blacklistPanel (instead of <code>fa-list</code>) #298</li>\n<li>Use <code>fa-ban</code>-icon as symbols for blacklistType <code>Exclude</code> (instead of <code>fa-times</code>) #298</li>\n<li>Label size keeps readable for large maps or a high distance between camera and map #237</li>\n<li>updated dependencies to fix vulnerabilities</li>\n<li>Scenarios only update settings which exist in Scenario and not all #224</li>\n<li>MergeFilter to merge unique blacklist entries #275</li>\n<li>MergeFilter to only merge unique attributeType entries #275</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>Remove invertHeight checkbox in delta-view #306</li>\n<li>Remove option to add blacklist entries from inside the blacklistPanel #298</li>\n<li>Remove statistic functions in Experimental panel #308</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>CodeMap does not move anymore when navigating in text-fields #307</li>\n<li>Merge blacklist in multipleFile view and convert paths #275</li>\n<li>Show logo in NW.js standalone application #233</li>\n</ul>\n<h2>[1.20.1] - 2018-12-19</h2>\n<p>Fixed release issues.</p>\n<h2>[1.20.0] - 2018-12-19</h2>\n<h3>Added</h3>\n<ul>\n<li>button to unfocus node</li>\n<li>NodeContextMenu: Option to only hide dependent edges</li>\n<li>plop support</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Renaming 'isolate node' to 'focus node'</li>\n<li>Focusing a node does not remove the blacklist items of type Hide</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>NodeContextMenu: Option to 'show all' nodes, which used to unhide all nodes</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Reshow hidden nodes from Treeview or Blacklist</li>\n</ul>\n<h2>[1.19.0] - 2018-11-02</h2>\n<h3>Added</h3>\n<ul>\n<li>Deleted files in delta view use their previous area value in order to be visible #254</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Buildings in the delta view are not colored correctly #253</li>\n<li>Reset Button in RibbonBar to reset 'Invert Colors' #255</li>\n<li>Remove lag of 'Invert Color' checkboxes, when selecting single/delta mode #255</li>\n</ul>\n<h2>[1.18.1] - 2018-10-31</h2>\n<p>Fixed release issues</p>\n<h2>[1.18.0] - 2018-10-29</h2>\n<h3>Added</h3>\n<ul>\n<li>Integration with Jasome through JasomeImporter #245</li>\n<li>URL parameter 'mode' with the values Single, Multiple or Delta</li>\n<li>Blacklist to persist excluded or hidden nodes #205</li>\n<li>Option to exclude nodes in nodeContextMenu #205</li>\n<li>BlacklistPanel in SettingsSidebar to manage blacklist #205</li>\n<li>Save-Button to download current CodeMap #205</li>\n<li>Publishing visualization on Docker Hub #252</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>No longer fat jar of every subcomponent of analysis, baked into ccsh</li>\n<li>Changed simple syserr write to logger call for analysis #243</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>URL parameter 'delta' does not exist anymore</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Show delta of CodeMap when URL parameter mode=delta is set</li>\n</ul>\n<h2>[1.17.0] - 2018-09-28</h2>\n<h3>Changed</h3>\n<ul>\n<li>Invert delta colors moved from color to heigh metric column in ribbon bar #220</li>\n<li>Delta value now as kindOfMap shown #220</li>\n<li>Aggreate maps as multiple rename #220</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Single/delta buttons now correctly activated when delta in ulr shown #220</li>\n</ul>\n<h2>[1.17.0] - 2018-09-21</h2>\n<h3>Added</h3>\n<ul>\n<li>CodeMaatImport for temporal coupling dependencies #172</li>\n<li>EdgeFilter to aggregate edge-attributes as node-attributes #222</li>\n<li>Option to show and hide dependent edges from node-context-menu #218</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>MergeFilter merges edges #172</li>\n</ul>\n<h2>[1.16.2] - 2018-09-10</h2>\n<h3>Fixed</h3>\n<ul>\n<li>missing event in firefox #232</li>\n</ul>\n<h2>[1.16.1] - 2018-08-31</h2>\n<h3>Added</h3>\n<ul>\n<li>gitlab + dotnet manual</li>\n</ul>\n<h2>[1.16.0] - 2018-08-31</h2>\n<h3>Added</h3>\n<ul>\n<li>add the option to add multiple files via url parameter (e.g. ?file=a&file=b...)</li>\n</ul>\n<h2>[1.15.1] - 2018-08-13</h2>\n<p>Fixed release issues</p>\n<h2>[1.15.0] - 2018-08-13</h2>\n<h3>Added</h3>\n<ul>\n<li>e2e tests are running in CI Environment (headless)</li>\n<li>pupeteer as e2e test framework</li>\n<li>Show names of marked packages in legend</li>\n<li>Added a source code importer that can analyse rloc,mcc for java source code</li>\n<li>keep settings when the user changes a file</li>\n<li>Added option to set white background</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>cypress</li>\n</ul>\n<h2>[1.14.2] - 2018-07-16</h2>\n<h3>Changed</h3>\n<ul>\n<li>Changed folder detail metrics from mean to sum</li>\n</ul>\n<h2>[1.14.1] - 2018-07-13</h2>\n<p>Fixed release issues</p>\n<h2>[1.14.0] - 2018-07-13</h2>\n<h3>Added</h3>\n<ul>\n<li>Added UnderstandImporter to Analysis</li>\n<li>Packages can be highlighted in different colors #152</li>\n<li>Adding a context menu with highlighting colors and convenience methods for the tree view and 3D view #155</li>\n<li>Folders and files to highlight can be described in the cc.json #165</li>\n<li>Dynamic/automatic margin computing de/activated by tick</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Details panel: using the sum of the childrens metrics instead of the mean value</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Display buttons do not trigger map changes #185</li>\n<li>Flickering surfaces when zooming out</li>\n</ul>\n<h2>[1.13.0] - 2018-06-08</h2>\n<h3>Added</h3>\n<ul>\n<li>Layout switcher #141</li>\n<li>Added CrococosmoImporter to Analysis</li>\n<li>Added type, dirs, name to CSVExporter</li>\n<li>Invert height of building checkbox</li>\n<li>Aggregate multiple maps in visualization #110</li>\n<li>Auto Focus selected map part</li>\n<li>Timmer added to applySettings in SettingsService</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Crococosmo xml files will now generate a cc.json file for each version</li>\n<li>Suppressing ARIA warnings</li>\n<li>Simplified gradle structure of analysis part</li>\n<li>Deltas added in the metric quick access panel #138</li>\n<li>Ticks and ResetValue Buttons call to onSettingsChange to avoid applySettings timer</li>\n<li>compacting empty middle packages #150</li>\n<li>Detail panel minimized by default</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>filter by regex shows parent nodes #116</li>\n<li>typo in scss file</li>\n</ul>\n<h2>[1.12.0] - 2018-04-27</h2>\n<h3>Added</h3>\n<ul>\n<li>horizontal quick access metric chooser</li>\n<li>Link behind filepath in detailPanel #84</li>\n<li>Double click event-handler on Buildings #84</li>\n<li>Detail Panel can be minimized and maximized</li>\n<li>Settings option to minimize Detail Panel</li>\n<li>cypress as an e2e test runner</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>metric details from legend</li>\n<li>metric chooser from settings panel</li>\n</ul>\n<h2>[1.11.2] - 2018-04-13</h2>\n<h3>Fixed</h3>\n<ul>\n<li>a sonar importer bug which prevented the importer to fetch the last page #122</li>\n</ul>\n<h2>[1.11.1] - 2018-04-11</h2>\n<p>Fixed release issues</p>\n<h2>[1.11.0] - 2018-04-11</h2>\n<h3>Added</h3>\n<ul>\n<li>SASS support</li>\n<li>simple regex filter</li>\n<li>Reset Button</li>\n<li>Dialog Service replaces console log calls and window.alert calls</li>\n<li>linking tree view and map hover</li>\n<li>auto fit scene button</li>\n<li>anugularJS material</li>\n<li>Scenarios are now filtered by compatibility for the given map</li>\n<li>Link in visualization #84</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>materialize-css</li>\n<li>grunt</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>less flickering and artifacts</li>\n</ul>\n<h2>[1.10.0] - 2018-03-22</h2>\n<h3>Changed</h3>\n<ul>\n<li>Clean up UI #86</li>\n<li>Updated analysis dependencies</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Delta View shows Deltas of itself as non-trivial if nodes have same name #89: Compare deltas by path not name</li>\n<li>Delta calculation performance boost #91</li>\n<li>Problems when intermediate nodes missed metrics #92</li>\n<li>removed unnecessary calculations</li>\n<li>removed bug in SonarImporter that slowed up performance and missed out multiple metrics</li>\n<li>minor bugs</li>\n</ul>\n<h2>[1.9.3] - 2018-02-23</h2>\n<h3>Changed</h3>\n<ul>\n<li>sorting treeview by folders and names</li>\n</ul>\n<h2>[1.9.2] - 2018-02-20</h2>\n<h3>Added</h3>\n<ul>\n<li>added preliminary CSVExporter for visualisation data</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>padding rendering</li>\n<li>minimal building height is 1 to prevent clipping issues</li>\n<li>fallback values for visualization when no metric is available (area = 1, height = 1, color = grey). Data in data structure will not be changed.</li>\n</ul>\n<h2>[1.9.1] - 2018-02-20</h2>\n<h3>Fixed</h3>\n<ul>\n<li>detail panel bug fix</li>\n</ul>\n<h2>[1.9.0] - 2018-02-20</h2>\n<h3>Changed</h3>\n<ul>\n<li>moved to unscoped npm packages</li>\n</ul>\n<h2>[1.8.2] - 2018-02-20</h2>\n<h3>Changed</h3>\n<ul>\n<li>detail panel background is white now. better visibility</li>\n</ul>\n<h2>[1.8.1] - 2018-02-20</h2>\n<h3>Changed</h3>\n<ul>\n<li>revision chooser moved to settings panel and uses now understandable dropdowns instead of links. Part of the #82 proposals</li>\n</ul>\n<h2>[1.8.0] - 2018-02-20</h2>\n<h3>Added</h3>\n<ul>\n<li>Experimental dependency support</li>\n<li>loading indicator</li>\n<li>file path to detail panel</li>\n<li>collapsible tree view and visibility/isolation per node toggles</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>added a ray-aabb intersection test before precise testing. Less time is spent in intersection methods.</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>fixed a minor bug</li>\n<li>canvas mouse event listener are now limited to the canvas dom element. UI events will not trigger the canvas listeners anymore</li>\n<li>canvas mouse events distinguish now between click and drag. Dragging does not reset selection anymore</li>\n<li>slider input #64</li>\n<li>rz slider initialization bug</li>\n<li>increasing test coverage</li>\n<li>deltas where calculated on map loading even though, they were disabled</li>\n</ul>\n<h2>[1.7.2] - 2018-02-02</h2>\n<h3>Fixed</h3>\n<ul>\n<li>url to homepage</li>\n<li>analysis package</li>\n</ul>\n<h2>[1.7.1] - 2018-02-02</h2>\n<p>Fixed release issues</p>\n<h2>[1.7.0] - 2018-02-02</h2>\n<h3>Changed</h3>\n<ul>\n<li>npm pachage scoped to @maibornwolff</li>\n<li>Defined further scenarios via json file</li>\n<li>Added description for metrics and scenarios</li>\n<li>using fixed point values in detail panel (ui) to truncate infinite or long decimals</li>\n<li>folders now use the mean attributes of their buildings(leaves)</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Bugfix: detail panel should be cleared before setting new details else old values may survive</li>\n</ul>\n<h2>[1.6.7] - 2018-02-01</h2>\n<p>Fixed release issues</p>\n<h2>[1.6.6] - 2018-02-01</h2>\n<h3>Added</h3>\n<ul>\n<li>added anonymous git log generator anongit</li>\n<li>browser demo shows codecharta-visualization sonar analysis</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>rewrote command line interface</li>\n<li>linking ccsh to bin/ccsh will be deleted later</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>No underscore for scenarios in tooltips #71</li>\n</ul>\n<h2>[1.6.5] - 2018-01-30</h2>\n<p>Fixed release issues</p>\n<h2>[1.6.4] - 2018-01-30</h2>\n<h3>Fixed</h3>\n<ul>\n<li>fixed broken SonarImporter due to jdk9 migration</li>\n</ul>\n<h2>[1.6.3] - 2018-01-26</h2>\n<h3>Added</h3>\n<ul>\n<li>added npm publish for analysis</li>\n<li>simple release script for automatic changelog updates, commits, tags, version bumps</li>\n</ul>\n<h2>[1.6.2] - 2018-01-25</h2>\n<h3>Added</h3>\n<ul>\n<li>added support for git log --raw and git log --numstat --raw</li>\n<li>added support for git log --numstat and codechurn</li>\n<li>added support for renames in SCMLogParser for git log --name-status</li>\n<li>added support for renames in SCMLogParser for git log --numstat, git log --raw and git log --numstat --raw</li>\n<li>added new SCM experimental metrics range_of_weeks_with_commits and successive_weeks_of_commits</li>\n<li>the file origin of a node is displayed in the details now</li>\n<li>sonarqube analysis on CI build</li>\n<li>npm publish support in visualization</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Deltas are no longer experimental</li>\n<li>two selected delta maps now merge their nodes correctly. The map where\na node was missing get's a copy of this node with metrics=0.\nFile additions/deletions are therefore only visible when areaMetric is\nunary and deltas are activated.</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>delta display bug for heights</li>\n<li>going back from delta view now correctly removes deltas from node data</li>\n<li>Delta shown although not in delta mode #60</li>\n<li>Allow inversion of delta colors #57</li>\n<li>npm binary error</li>\n</ul>\n<h2>[1.5.2] - 2018-01-04</h2>\n<h3>Changed</h3>\n<ul>\n<li>scaling slider now has steps of 0.1. This allows the user to select precise values like 2.0</li>\n<li>updated jdk to jdk9</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Opening the same file a second time does not work #53</li>\n<li>added missing require declaration</li>\n<li>added glsl loader in testing environment</li>\n<li>Native Application support is bugged while building in Travis CI #48</li>\n</ul>\n<h2>[1.5.1] - 2017-11-14</h2>\n<h3>Added</h3>\n<ul>\n<li>command line parameter to toggle \"authors\" attribute in SCMLogParser</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>when passing a file through the \"file\" parameter in the URL, the map now renders correctly</li>\n</ul>\n<h2>[1.5.0] - 2017-10-24</h2>\n<h3>Added</h3>\n<ul>\n<li>experimental delta functionality</li>\n<li>loading multiple maps</li>\n<li>experimental margin slider</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>faster rendering</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>nwjs packages and native apps due to a bug</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>using color metric instead of height metric for color range slider ceil</li>\n</ul>\n<h2>[1.4.0] - 2017-09-14</h2>\n<h3>Added</h3>\n<ul>\n<li>Typescript support</li>\n<li>Browsersync</li>\n<li>added advanced merging strategy \"leaf\" in MergeFilter</li>\n<li>advanced merging with restructuring</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Browserify replaced with Webpack</li>\n<li>Better debugging</li>\n<li>Karma instead of Mocha</li>\n</ul>\n<h2>[1.3.2] - 2017-08-18</h2>\n<h3>Added</h3>\n<ul>\n<li>add slider controls for color thresholds #19</li>\n<li>Added additional structuring in SonarImporter for multi-module projects</li>\n<li>button to generate current url parameters</li>\n<li>camera position is now a setting (e.g. in scenarios or url parameters)</li>\n<li>margin slider: make it easier to find out to which package/folder a class belongs #20</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>better url parameter resolution (nested parameters are handled correctly)</li>\n<li>changed hover color. Allows better distinction between hover and select</li>\n</ul>\n<h3>Removed</h3>\n<ul>\n<li>obsolete helper grid</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>changing display or color settings resets scaling #18</li>\n<li>scenario description #32</li>\n<li>Scaling should not scale the labels #35</li>\n</ul>\n<h2>[1.3.1] - 2017-07-05</h2>\n<h3>Fixed</h3>\n<ul>\n<li>Prevented override of URL-parameters by default scenario</li>\n</ul>\n<h2>[1.3.0] - 2017-07-05</h2>\n<h3>Added</h3>\n<ul>\n<li>Adding simple merge functionality for multiple json files</li>\n<li>Added CSVImporter</li>\n<li>Added Translation for SonarQube metrics</li>\n<li>Added descriptions for metrics</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Changed uppercase metrics, e.g. RLOC, to lowercase metrics</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>Simple cc.json does not display anything #17</li>\n</ul>\n<h2>[1.2.0] - 2017-06-19</h2>\n<h3>Added</h3>\n<ul>\n<li>Adding Labels and UI</li>\n<li>Support for links to source page of SonarQube in sonarimporter</li>\n<li>Added SCMLogParser</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>GitHub Issue: legend is wrong #21</li>\n</ul>\n<h2>[1.1.5] - 2017-05-31</h2>\n<h3>Fixed</h3>\n<ul>\n<li>Wrong version numbers in analysis part</li>\n</ul>\n<h2>[1.1.4] - 2017-05-26</h2>\n<h3>Added</h3>\n<ul>\n<li>Scenarios and default scenario</li>\n<li>Translation API for Metrics</li>\n<li>Metric tooltips in dropdown</li>\n</ul>\n<h3>Fixed</h3>\n<ul>\n<li>GitHub Issue: Sonarimporter crashes with null pointer exception when there is a component without path. #13</li>\n</ul>\n<h2>[1.1.3] - 2017-05-01</h2>\n<h3>Added</h3>\n<ul>\n<li>Support for SonarQube Measures-API</li>\n<li>Error logging for sonarqube errors</li>\n</ul>\n<h3>Changed</h3>\n<ul>\n<li>Standard Sonar metric is now complexity,ncloc,functions,duplicated_lines,classes,blocker_violations,generated_lines,bugs,commented_out_code_lines,lines,violations,comment_lines,duplicated_blocks</li>\n</ul>\n<h2>[1.1.2] - 2017-04-28</h2>\n<h3>Added</h3>\n<ul>\n<li>Translation API for Metrics</li>\n</ul>\n<h2>[1.1.1] - 2017-04-07</h2>\n<h3>Fixed</h3>\n<ul>\n<li>GitHub Issue: Flickering surfaces #3</li>\n<li>GitHub Issue: Unable to install due to readlink error on macOS #4</li>\n</ul>\n<h2>[1.1.0] - 2017-03-27</h2>\n<h3>Added</h3>\n<ul>\n<li>SourceMonitorImporter for importing projects from SourceMonitor.</li>\n</ul>\n<h2>[1.0.0] - 2017-03-17</h2>\n<h3>Added</h3>\n<ul>\n<li>SonarImporter for importing projects from SonarQube.</li>\n<li>ValidationTool for validating an existing json file.</li>\n</ul>\n";
|
|
242742
243069
|
// Exports
|
|
242743
243070
|
module.exports = code;
|
|
242744
243071
|
|
|
@@ -280129,6 +280456,36 @@ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js
|
|
|
280129
280456
|
|
|
280130
280457
|
/***/ }),
|
|
280131
280458
|
|
|
280459
|
+
/***/ "./app/codeCharta/ui/dialog/dialog.changelog.component.scss":
|
|
280460
|
+
/*!******************************************************************!*\
|
|
280461
|
+
!*** ./app/codeCharta/ui/dialog/dialog.changelog.component.scss ***!
|
|
280462
|
+
\******************************************************************/
|
|
280463
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
280464
|
+
|
|
280465
|
+
"use strict";
|
|
280466
|
+
__webpack_require__.r(__webpack_exports__);
|
|
280467
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
280468
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
280469
|
+
/* harmony export */ });
|
|
280470
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
|
280471
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
280472
|
+
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_dialog_changelog_component_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./dialog.changelog.component.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./app/codeCharta/ui/dialog/dialog.changelog.component.scss");
|
|
280473
|
+
|
|
280474
|
+
|
|
280475
|
+
|
|
280476
|
+
var options = {};
|
|
280477
|
+
|
|
280478
|
+
options.insert = "head";
|
|
280479
|
+
options.singleton = false;
|
|
280480
|
+
|
|
280481
|
+
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_dialog_changelog_component_scss__WEBPACK_IMPORTED_MODULE_1__["default"], options);
|
|
280482
|
+
|
|
280483
|
+
|
|
280484
|
+
|
|
280485
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_dialog_changelog_component_scss__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {});
|
|
280486
|
+
|
|
280487
|
+
/***/ }),
|
|
280488
|
+
|
|
280132
280489
|
/***/ "./app/codeCharta/ui/dialog/dialog.component.scss":
|
|
280133
280490
|
/*!********************************************************!*\
|
|
280134
280491
|
!*** ./app/codeCharta/ui/dialog/dialog.component.scss ***!
|
|
@@ -280729,10 +281086,10 @@ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js
|
|
|
280729
281086
|
|
|
280730
281087
|
/***/ }),
|
|
280731
281088
|
|
|
280732
|
-
/***/ "./app/codeCharta/ui/nodeContextMenu/
|
|
280733
|
-
|
|
280734
|
-
!*** ./app/codeCharta/ui/nodeContextMenu/
|
|
280735
|
-
|
|
281089
|
+
/***/ "./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.scss":
|
|
281090
|
+
/*!**************************************************************************************!*\
|
|
281091
|
+
!*** ./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.scss ***!
|
|
281092
|
+
\**************************************************************************************/
|
|
280736
281093
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
280737
281094
|
|
|
280738
281095
|
"use strict";
|
|
@@ -280742,7 +281099,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
280742
281099
|
/* harmony export */ });
|
|
280743
281100
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
|
280744
281101
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
280745
|
-
/* harmony import */ var
|
|
281102
|
+
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_markFolderRow_component_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/sass-loader/dist/cjs.js!./markFolderRow.component.scss */ "./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.scss");
|
|
280746
281103
|
|
|
280747
281104
|
|
|
280748
281105
|
|
|
@@ -280751,11 +281108,11 @@ var options = {};
|
|
|
280751
281108
|
options.insert = "head";
|
|
280752
281109
|
options.singleton = false;
|
|
280753
281110
|
|
|
280754
|
-
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(
|
|
281111
|
+
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_markFolderRow_component_scss__WEBPACK_IMPORTED_MODULE_1__["default"], options);
|
|
280755
281112
|
|
|
280756
281113
|
|
|
280757
281114
|
|
|
280758
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (
|
|
281115
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_markFolderRow_component_scss__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {});
|
|
280759
281116
|
|
|
280760
281117
|
/***/ }),
|
|
280761
281118
|
|
|
@@ -341929,7 +342286,7 @@ module.exports = JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#
|
|
|
341929
342286
|
/***/ ((module) => {
|
|
341930
342287
|
|
|
341931
342288
|
"use strict";
|
|
341932
|
-
module.exports = JSON.parse('{"author":"MaibornWolff GmbH <dist_intern_codecharta@maibornwolff.de>","homepage":"https://maibornwolff.github.io/codecharta/","bugs":{"url":"https://github.com/MaibornWolff/codecharta/issues","email":"dist_intern_codecharta@maibornwolff.de"},"repository":{"type":"git","url":"https://github.com/MaibornWolff/codecharta.git"},"name":"codecharta-visualization","version":"1.
|
|
342289
|
+
module.exports = JSON.parse('{"author":"MaibornWolff GmbH <dist_intern_codecharta@maibornwolff.de>","homepage":"https://maibornwolff.github.io/codecharta/","bugs":{"url":"https://github.com/MaibornWolff/codecharta/issues","email":"dist_intern_codecharta@maibornwolff.de"},"repository":{"type":"git","url":"https://github.com/MaibornWolff/codecharta.git"},"name":"codecharta-visualization","version":"1.88.0","engines":{"node":">=16"},"description":"MaibornWolff CodeCharta","files":["dist/webpack","app","conf","Dockerfile","LICENSE.md","package.json","package-lock.json","README.md","tsconfig.json","cli.js"],"codecharta":{"apiVersion":"1.3"},"window":{"icon":"app/icon.png","toolbar":true,"frame":true,"width":1024,"height":768},"main":"dist/webpack/index.html","build":{"nwVersion":"0.53.0","output":"./dist/packages/","outputPattern":"codecharta-visualization-${VERSION}-${PLATFORM}-${ARCH}","files":"./dist/webpack/**/*","packed":true,"targets":["zip"],"appId":"io.github.maibornwolff.codecharta","win":{"productName":"codecharta-visualization","companyName":"MaibornWolff GmbH","icon":"app/assets/icon.ico"},"mac":{"icon":"app/assets/icon.icns","displayName":"codecharta-visualization"}},"browserslist":["last 2 versions","not IE 11"],"scripts":{"start":"nw .","build":"webpack --config ./conf/webpack.config.js --env STANDALONE=true --env DEV=false","build:web":"webpack --config ./conf/webpack.config.js --env STANDALONE=false --env DEV=false","dev":"webpack serve --config ./conf/webpack.config.js --env STANDALONE=false --env DEV=true","test":"jest --config ./jest.config.json .*\\\\.spec\\\\.ts --env=jsdom","test:auto":"npm test -- --watch","test:autoNoCoverage":"npm run test:auto -- --coverage false","test:updateSnaps":"npm test -- --updateSnapshot","e2e":"cross-env TEST_TYPE=\\"e2e\\" jest --config ./jest.config.json .*\\\\.e2e\\\\.ts --coverage false","e2e:auto":"npm run e2e -- --watch","e2e:ci":"npm run e2e -- --runInBand","package":"node -e \'fs.rmSync(\\"dist/packages\\", { recursive: true, force: true })\' && build --concurrent --tasks win-x86,win-x64,linux-x86,linux-x64,mac-x64 --mirror https://dl.nwjs.io/ . && bestzip ./dist/packages/codecharta-visualization-$npm_package_version-web.zip ./dist/webpack","lint":"eslint \\"app/**/*.ts\\"","lint:fix":"npm run lint -- --fix","precommit":"lint-staged","schema:generate":"typescript-json-schema ./app/codeCharta/codeCharta.model.ts ExportCCFile --required --topRef --out app/codeCharta/util/generatedSchema.json"},"lint-staged":{"app/**/*.ts":"eslint --fix"},"bin":{"codecharta-visualization":"cli.js"},"license":"BSD-3-Clause","dependencies":{"@angular/animations":"^12.2.12","@angular/cdk":"^12.2.12","@angular/common":"^12.2.12","@angular/compiler":"^12.2.12","@angular/core":"^12.2.12","@angular/material":"^12.2.12","@angular/platform-browser":"^12.2.12","@angular/platform-browser-dynamic":"^12.2.12","@angular/upgrade":"^12.2.12","@types/webpack":"^5.28.0","ajv":"^6.12.6","angular":"^1.8.2","angular-animate":"^1.8.2","angular-aria":"^1.8.2","angular-material":"^1.2.2","angular-messages":"^1.8.2","angular-mocks":"^1.8.2","angular-sanitize":"^1.8.2","angularjs-nouislider":"^14.1.3","angularjs-slider":"^7.0.0","babel-plugin-transform-es2015-modules-commonjs":"^6.26.2","browserify-zlib":"^0.2.0","changelog-parser":"^2.8.0","color-convert":"^2.0.1","core-js":"^3.15.2","d3-hierarchy":"^2.0.0","font-awesome":"^4.7.0","hotkeys-js":"^3.8.2","ignore":"^5.1.8","klona":"^2.0.4","lodash.camelcase":"^4.3.0","lodash.debounce":"^4.0.8","lodash.isequal":"^4.5.0","lodash.throttle":"^4.1.1","material-icons":"^1.10.4","md5":"^2.3.0","ngx-color":"^7.3.3","nouislider":"^15.0.0","nw":"^0.58.0","open":"^8.0.6","percent-round":"^2.2.1","redux":"^4.0.5","remark":"^13.0.0","remark-html":"^13.0.1","remark-loader":"^4.0.0","rxjs":"^7.5.1","shelljs":"^0.8.4","three":"^0.126.1","three-orbit-controls":"^82.1.0","typescript-json-schema":"^0.52.0","zone.js":"^0.11.4"},"devDependencies":{"@babel/cli":"^7.13.14","@babel/core":"^7.13.15","@babel/preset-env":"^7.13.15","@babel/preset-typescript":"^7.13.0","@testing-library/angular":"^10.11.0","@testing-library/user-event":"^13.5.0","@types/angular":"^1.8.1","@types/angular-mocks":"^1.7.0","@types/color-convert":"^2.0.0","@types/d3-hierarchy":"^3.0.2","@types/expect-puppeteer":"^4.4.5","@types/jest":"^26.0.22","@types/jest-environment-puppeteer":"^4.4.1","@types/lodash":"^4.14.168","@types/node":"^16.0.0","@types/puppeteer":"^5.4.3","@types/three":"^0.126.0","@typescript-eslint/eslint-plugin":"^5.0.0","@typescript-eslint/parser":"^5.0.0","babel-loader":"^8.2.2","babel-plugin-angularjs-annotate":"^0.10.0","bestzip":"^2.2.0","canvas":"^2.7.0","clean-webpack-plugin":"^4.0.0","cross-env":"^7.0.3","css-loader":"^6.0.0","eslint":"^8.0.0","eslint-config-prettier":"^8.2.0","eslint-plugin-unicorn":"^40.0.0","file-loader":"^6.2.0","html-loader":"^1.1.0","html-loader-jest":"^0.2.1","html-webpack-plugin":"^5.3.1","jest":"^26.6.3","jest-preset-angular":"^9.0.7","jest-puppeteer":"^6.0.0","jest-serializer-html":"^7.0.0","lint-staged":"^11.0.0","makeshift":"^1.1.0","node-polyfill-webpack-plugin":"^1.1.4","node-sass":"^6.0.1","nwjs-builder-phoenix":"^1.15.0","puppeteer":"^10.4.0","sass-loader":"^12.0.0","style-loader":"^2.0.0","ts-jest":"^26.5.5","ts-loader":"^9.0.0","typescript":"^4.3.5","webpack":"^5.33.2","webpack-cli":"^4.7.2","webpack-dev-server":"^3.11.2","webpack-glsl-loader":"^1.0.1"},"optionalDependencies":{"7zip-bin-linux":"^1.3.1","7zip-bin-mac":"^1.0.1","7zip-bin-win":"^2.2.0"}}');
|
|
341933
342290
|
|
|
341934
342291
|
/***/ })
|
|
341935
342292
|
|
|
@@ -342250,27 +342607,32 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
342250
342607
|
/* harmony import */ var _app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app */ "./app/app.ts");
|
|
342251
342608
|
/* harmony import */ var zone_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! zone.js */ "./node_modules/zone.js/fesm2015/zone.js");
|
|
342252
342609
|
/* harmony import */ var zone_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(zone_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
342253
|
-
/* harmony import */ var
|
|
342254
|
-
/* harmony import */ var
|
|
342255
|
-
/* harmony import */ var
|
|
342256
|
-
/* harmony import */ var
|
|
342257
|
-
/* harmony import */ var
|
|
342258
|
-
/* harmony import */ var
|
|
342259
|
-
/* harmony import */ var
|
|
342260
|
-
/* harmony import */ var
|
|
342261
|
-
/* harmony import */ var
|
|
342262
|
-
/* harmony import */ var
|
|
342263
|
-
/* harmony import */ var
|
|
342264
|
-
/* harmony import */ var
|
|
342265
|
-
/* harmony import */ var
|
|
342266
|
-
/* harmony import */ var
|
|
342267
|
-
/* harmony import */ var
|
|
342268
|
-
/* harmony import */ var
|
|
342269
|
-
/* harmony import */ var
|
|
342270
|
-
/* harmony import */ var
|
|
342271
|
-
/* harmony import */ var
|
|
342272
|
-
/* harmony import */ var
|
|
342273
|
-
/* harmony import */ var
|
|
342610
|
+
/* harmony import */ var _angular_core__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @angular/core */ "./node_modules/@angular/core/fesm2015/core.js");
|
|
342611
|
+
/* harmony import */ var _angular_platform_browser__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @angular/platform-browser */ "./node_modules/@angular/platform-browser/fesm2015/platform-browser.js");
|
|
342612
|
+
/* harmony import */ var _angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @angular/platform-browser-dynamic */ "./node_modules/@angular/platform-browser-dynamic/fesm2015/platform-browser-dynamic.js");
|
|
342613
|
+
/* harmony import */ var _angular_upgrade_static__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @angular/upgrade/static */ "./node_modules/@angular/upgrade/fesm2015/static.js");
|
|
342614
|
+
/* harmony import */ var _angular_forms__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @angular/forms */ "./node_modules/@angular/forms/fesm2015/forms.js");
|
|
342615
|
+
/* harmony import */ var _material_material_module__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./material/material.module */ "./app/material/material.module.ts");
|
|
342616
|
+
/* harmony import */ var _codeCharta_ui_mapTreeView_mapTreeView_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./codeCharta/ui/mapTreeView/mapTreeView.module */ "./app/codeCharta/ui/mapTreeView/mapTreeView.module.ts");
|
|
342617
|
+
/* harmony import */ var _codeCharta_ui_mapTreeView_mapTreeView_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./codeCharta/ui/mapTreeView/mapTreeView.component */ "./app/codeCharta/ui/mapTreeView/mapTreeView.component.ts");
|
|
342618
|
+
/* harmony import */ var _codeCharta_ui_matchingFilesCounter_matchingFilesCounter_component__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./codeCharta/ui/matchingFilesCounter/matchingFilesCounter.component */ "./app/codeCharta/ui/matchingFilesCounter/matchingFilesCounter.component.ts");
|
|
342619
|
+
/* harmony import */ var _codeCharta_ui_matchingFilesCounter_matchingFilesCounter_module__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./codeCharta/ui/matchingFilesCounter/matchingFilesCounter.module */ "./app/codeCharta/ui/matchingFilesCounter/matchingFilesCounter.module.ts");
|
|
342620
|
+
/* harmony import */ var _codeCharta_ui_attributeSideBar_attributeSideBar_module__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./codeCharta/ui/attributeSideBar/attributeSideBar.module */ "./app/codeCharta/ui/attributeSideBar/attributeSideBar.module.ts");
|
|
342621
|
+
/* harmony import */ var _codeCharta_ui_attributeSideBar_attributeSideBar_component__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./codeCharta/ui/attributeSideBar/attributeSideBar.component */ "./app/codeCharta/ui/attributeSideBar/attributeSideBar.component.ts");
|
|
342622
|
+
/* harmony import */ var _codeCharta_ui_export3DMapButton_export3DMapButton_component__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./codeCharta/ui/export3DMapButton/export3DMapButton.component */ "./app/codeCharta/ui/export3DMapButton/export3DMapButton.component.ts");
|
|
342623
|
+
/* harmony import */ var _codeCharta_ui_export3DMapButton_export3DMapButton_module__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./codeCharta/ui/export3DMapButton/export3DMapButton.module */ "./app/codeCharta/ui/export3DMapButton/export3DMapButton.module.ts");
|
|
342624
|
+
/* harmony import */ var _codeCharta_ui_labelledColorPicker_labelledColorPicker_component__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./codeCharta/ui/labelledColorPicker/labelledColorPicker.component */ "./app/codeCharta/ui/labelledColorPicker/labelledColorPicker.component.ts");
|
|
342625
|
+
/* harmony import */ var _codeCharta_ui_legendPanel_legendPanel_component__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./codeCharta/ui/legendPanel/legendPanel.component */ "./app/codeCharta/ui/legendPanel/legendPanel.component.ts");
|
|
342626
|
+
/* harmony import */ var _codeCharta_ui_legendPanel_legendPanel_module__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./codeCharta/ui/legendPanel/legendPanel.module */ "./app/codeCharta/ui/legendPanel/legendPanel.module.ts");
|
|
342627
|
+
/* harmony import */ var _codeCharta_ui_colorPickerForMapColor_colorPickerForMapColor_module__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./codeCharta/ui/colorPickerForMapColor/colorPickerForMapColor.module */ "./app/codeCharta/ui/colorPickerForMapColor/colorPickerForMapColor.module.ts");
|
|
342628
|
+
/* harmony import */ var _codeCharta_ui_colorPickerForMapColor_colorPickerForMapColor_component__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./codeCharta/ui/colorPickerForMapColor/colorPickerForMapColor.component */ "./app/codeCharta/ui/colorPickerForMapColor/colorPickerForMapColor.component.ts");
|
|
342629
|
+
/* harmony import */ var _codeCharta_ui_nodeContextMenu_focusButtons_focusButtons_module__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./codeCharta/ui/nodeContextMenu/focusButtons/focusButtons.module */ "./app/codeCharta/ui/nodeContextMenu/focusButtons/focusButtons.module.ts");
|
|
342630
|
+
/* harmony import */ var _codeCharta_ui_nodeContextMenu_focusButtons_focusButtons_component__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./codeCharta/ui/nodeContextMenu/focusButtons/focusButtons.component */ "./app/codeCharta/ui/nodeContextMenu/focusButtons/focusButtons.component.ts");
|
|
342631
|
+
/* harmony import */ var _codeCharta_ui_filePanel_filePanelFileSelector_filePanelFileSelector_component__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./codeCharta/ui/filePanel/filePanelFileSelector/filePanelFileSelector.component */ "./app/codeCharta/ui/filePanel/filePanelFileSelector/filePanelFileSelector.component.ts");
|
|
342632
|
+
/* harmony import */ var _codeCharta_ui_filePanel_filePanelStateButtons_filePanelStateButtons_component__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./codeCharta/ui/filePanel/filePanelStateButtons/filePanelStateButtons.component */ "./app/codeCharta/ui/filePanel/filePanelStateButtons/filePanelStateButtons.component.ts");
|
|
342633
|
+
/* harmony import */ var _codeCharta_ui_filePanel_filePanelDeltaSelector_filePanelDeltaSelector_component__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./codeCharta/ui/filePanel/filePanelDeltaSelector/filePanelDeltaSelector.component */ "./app/codeCharta/ui/filePanel/filePanelDeltaSelector/filePanelDeltaSelector.component.ts");
|
|
342634
|
+
/* harmony import */ var _codeCharta_ui_nodeContextMenu_markFolderRow_markFolderRow_component__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component */ "./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.component.ts");
|
|
342635
|
+
/* harmony import */ var _codeCharta_ui_nodeContextMenu_markFolderRow_markFolderRow_module__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.module */ "./app/codeCharta/ui/nodeContextMenu/markFolderRow/markFolderRow.module.ts");
|
|
342274
342636
|
var __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) {
|
|
342275
342637
|
var c = arguments.length,
|
|
342276
342638
|
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
|
|
@@ -342306,6 +342668,11 @@ var __param = undefined && undefined.__param || function (paramIndex, decorator)
|
|
|
342306
342668
|
|
|
342307
342669
|
|
|
342308
342670
|
|
|
342671
|
+
|
|
342672
|
+
|
|
342673
|
+
|
|
342674
|
+
|
|
342675
|
+
|
|
342309
342676
|
|
|
342310
342677
|
|
|
342311
342678
|
|
|
@@ -342324,13 +342691,13 @@ let AppModule = class AppModule {
|
|
|
342324
342691
|
}
|
|
342325
342692
|
|
|
342326
342693
|
};
|
|
342327
|
-
AppModule = __decorate([(0,
|
|
342328
|
-
imports: [
|
|
342329
|
-
declarations: [],
|
|
342330
|
-
entryComponents: [
|
|
342331
|
-
}), __param(0, (0,
|
|
342694
|
+
AppModule = __decorate([(0,_angular_core__WEBPACK_IMPORTED_MODULE_23__.NgModule)({
|
|
342695
|
+
imports: [_angular_platform_browser__WEBPACK_IMPORTED_MODULE_24__.BrowserModule, _angular_upgrade_static__WEBPACK_IMPORTED_MODULE_25__.UpgradeModule, _codeCharta_ui_mapTreeView_mapTreeView_module__WEBPACK_IMPORTED_MODULE_3__.MapTreeViewModule, _codeCharta_ui_matchingFilesCounter_matchingFilesCounter_module__WEBPACK_IMPORTED_MODULE_6__.MatchingFilesCounterModule, _codeCharta_ui_attributeSideBar_attributeSideBar_module__WEBPACK_IMPORTED_MODULE_7__.AttributeSideBarModule, _material_material_module__WEBPACK_IMPORTED_MODULE_2__.MaterialModule, _angular_forms__WEBPACK_IMPORTED_MODULE_26__.FormsModule, _codeCharta_ui_export3DMapButton_export3DMapButton_module__WEBPACK_IMPORTED_MODULE_10__.Export3DMapButtonModule, _codeCharta_ui_legendPanel_legendPanel_module__WEBPACK_IMPORTED_MODULE_13__.LegendPanelModule, _codeCharta_ui_colorPickerForMapColor_colorPickerForMapColor_module__WEBPACK_IMPORTED_MODULE_14__.ColorPickerForMapColorModule, _codeCharta_ui_nodeContextMenu_focusButtons_focusButtons_module__WEBPACK_IMPORTED_MODULE_16__.FocusButtonsModule, _codeCharta_ui_nodeContextMenu_markFolderRow_markFolderRow_module__WEBPACK_IMPORTED_MODULE_22__.MarkFolderRowModule],
|
|
342696
|
+
declarations: [_codeCharta_ui_filePanel_filePanelFileSelector_filePanelFileSelector_component__WEBPACK_IMPORTED_MODULE_18__.FilePanelFileSelectorComponent, _codeCharta_ui_filePanel_filePanelStateButtons_filePanelStateButtons_component__WEBPACK_IMPORTED_MODULE_19__.FilePanelStateButtonsComponent, _codeCharta_ui_filePanel_filePanelDeltaSelector_filePanelDeltaSelector_component__WEBPACK_IMPORTED_MODULE_20__.FilePanelDeltaSelectorComponent],
|
|
342697
|
+
entryComponents: [_codeCharta_ui_mapTreeView_mapTreeView_component__WEBPACK_IMPORTED_MODULE_4__.MapTreeViewComponent, _codeCharta_ui_matchingFilesCounter_matchingFilesCounter_component__WEBPACK_IMPORTED_MODULE_5__.MatchingFilesCounterComponent, _codeCharta_ui_attributeSideBar_attributeSideBar_component__WEBPACK_IMPORTED_MODULE_8__.AttributeSideBarComponent, _codeCharta_ui_export3DMapButton_export3DMapButton_component__WEBPACK_IMPORTED_MODULE_9__.Export3DMapButtonComponent, _codeCharta_ui_legendPanel_legendPanel_component__WEBPACK_IMPORTED_MODULE_12__.LegendPanelComponent, _codeCharta_ui_labelledColorPicker_labelledColorPicker_component__WEBPACK_IMPORTED_MODULE_11__.LabelledColorPickerComponent, _codeCharta_ui_colorPickerForMapColor_colorPickerForMapColor_component__WEBPACK_IMPORTED_MODULE_15__.ColorPickerForMapColorComponent, _codeCharta_ui_nodeContextMenu_focusButtons_focusButtons_component__WEBPACK_IMPORTED_MODULE_17__.FocusButtonsComponent, _codeCharta_ui_filePanel_filePanelFileSelector_filePanelFileSelector_component__WEBPACK_IMPORTED_MODULE_18__.FilePanelFileSelectorComponent, _codeCharta_ui_filePanel_filePanelStateButtons_filePanelStateButtons_component__WEBPACK_IMPORTED_MODULE_19__.FilePanelStateButtonsComponent, _codeCharta_ui_filePanel_filePanelDeltaSelector_filePanelDeltaSelector_component__WEBPACK_IMPORTED_MODULE_20__.FilePanelDeltaSelectorComponent, _codeCharta_ui_nodeContextMenu_focusButtons_focusButtons_component__WEBPACK_IMPORTED_MODULE_17__.FocusButtonsComponent, _codeCharta_ui_nodeContextMenu_markFolderRow_markFolderRow_component__WEBPACK_IMPORTED_MODULE_21__.MarkFolderRowComponent]
|
|
342698
|
+
}), __param(0, (0,_angular_core__WEBPACK_IMPORTED_MODULE_23__.Inject)(_angular_upgrade_static__WEBPACK_IMPORTED_MODULE_25__.UpgradeModule)), __metadata("design:paramtypes", [_angular_upgrade_static__WEBPACK_IMPORTED_MODULE_25__.UpgradeModule])], AppModule);
|
|
342332
342699
|
|
|
342333
|
-
(0,
|
|
342700
|
+
(0,_angular_platform_browser_dynamic__WEBPACK_IMPORTED_MODULE_27__.platformBrowserDynamic)().bootstrapModule(AppModule);
|
|
342334
342701
|
})();
|
|
342335
342702
|
|
|
342336
342703
|
/******/ })()
|