diff --git a/js/roi/ROIManager.js b/js/roi/ROIManager.js index 0f9e97f45..86fc49f40 100644 --- a/js/roi/ROIManager.js +++ b/js/roi/ROIManager.js @@ -274,6 +274,10 @@ class ROIManager { return this.roiSets.find(roiSet => true === roiSet.isUserDefined) } + deleteUserDefinedROISet(){ + this.roiSets = this.roiSets.filter(roiSet => roiSet.isUserDefined !== true); + } + initializeUserDefinedROISet() { const config = diff --git a/js/roi/ROIMenu.js b/js/roi/ROIMenu.js index 539053c9f..c13cbfea9 100644 --- a/js/roi/ROIMenu.js +++ b/js/roi/ROIMenu.js @@ -109,8 +109,14 @@ class ROIMenu { '
', { label: 'Delete', - click: () => { + click: async () => { roiSet.removeFeature(feature) + const userDefinedFeatures = await roiSet.getAllFeatures() + + // Delete user defined ROI Set if it is empty + if (Object.keys(userDefinedFeatures).length === 0) { + roiManager.deleteUserDefinedROISet() + } roiManager.deleteRegionWithKey(regionElement.dataset.region, columnContainer) roiManager.repaintTable() } diff --git a/js/roi/ROISet.js b/js/roi/ROISet.js index e97bbd845..2880f5de5 100644 --- a/js/roi/ROISet.js +++ b/js/roi/ROISet.js @@ -184,6 +184,10 @@ class DynamicFeatureSource { if (this.featureMap[chr]) { const match = `${chr}-${start}-${end}` this.featureMap[chr] = this.featureMap[chr].filter(feature => match !== `${feature.chr}-${feature.start}-${feature.end}`) + // Check if featureMap for a specific chromosome is empty now and delete it if yes + if (this.featureMap[chr].length === 0) { + delete this.featureMap[chr]; + } } } }