diff --git a/API/Backend/Config/validate.js b/API/Backend/Config/validate.js index e6cd9b24..d1d11ffd 100644 --- a/API/Backend/Config/validate.js +++ b/API/Backend/Config/validate.js @@ -39,6 +39,7 @@ const validateStructure = (config) => { const validateLayers = (config) => { let errs = []; + let existingUUIDs = []; Utils.traverseLayers(config.layers, (layer) => { // Check layer name const validNameErrs = isValidLayerName(layer.name); @@ -90,9 +91,17 @@ const validateLayers = (config) => { err(`Unknown layer type: '${layer.type}'`, ["layers[layer].type"]) ); } - }); - errs = errs.concat(hasNonHeaderWithSublayers(config)); + if (layer.uuid != null) { + if (existingUUIDs.includes(layer.uuid)) { + errs = errs.concat([ + err( + `Found a layer with duplicate uuid: ${layer.name} - ${layer.uuid}` + ), + ]); + } else existingUUIDs.push(layer.uuid); + } + }); return errs; }; diff --git a/config/js/config.js b/config/js/config.js index c9935f93..e1adfc16 100644 --- a/config/js/config.js +++ b/config/js/config.js @@ -1954,10 +1954,9 @@ function mmgisLinkModalsToLayersCloneClick(e) { var mainThis = $(this).parent().parent().parent().parent(); var mainId = mainThis.attr("id"); mainId = mainId.substring(mainId.indexOf("_") + 1); - makeLayerBarAndModal( - dataOfLastUsedLayerSlot[mainId], - dataOfLastUsedLayerSlot[mainId].__level - ); + const cloned = JSON.parse(JSON.stringify(dataOfLastUsedLayerSlot[mainId])); + delete cloned.uuid; + makeLayerBarAndModal(cloned, cloned.__level); refresh(); }