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];
+ }
}
}
}