From 92f986ec244bd4aa3c7ba30b67cedd02613a284b Mon Sep 17 00:00:00 2001 From: Anissa Lam Date: Thu, 9 Jun 2022 09:31:23 -0700 Subject: [PATCH 1/3] Fix the variable tables that's related to WRC changes. --- webui/src/js/viewModels/model-design-view.js | 26 +++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/webui/src/js/viewModels/model-design-view.js b/webui/src/js/viewModels/model-design-view.js index 7b53b9d72..a1f083893 100644 --- a/webui/src/js/viewModels/model-design-view.js +++ b/webui/src/js/viewModels/model-design-view.js @@ -164,21 +164,39 @@ function(accUtils, i18n, ko, project, urlCatalog, viewHelper, wktLogger, ViewMod }; // Triggered when changes have been downloaded from the WRC backend, for the active WDT Model File provider. - // this.changesAutoDownloaded = (event) => { + function filterOriginalModelProperties(array1, array2){ + return array1.filter(c => array2.findIndex(x=>x.uid == c.uid) > -1) + } + wktLogger.debug('Received changesAutoDownloaded event with modelContent = %s', event.detail.value); this.wrcBackendTriggerChange = true; this.project.wdtModel.modelContent(event.detail.value); if (event.detail.properties) { - const existingProperties = this.project.wdtModel.getModelPropertiesObject().observable(); + // Model properties initially passed to WRC was a deep copy + // created using the spread operator. event.detail.properties + // contains what the model properties need to be now, which + // may in fact result in the removal of some of the original + // ones passed to the WRC. + const existingProperties = filterOriginalModelProperties( + this.project.wdtModel.getModelPropertiesObject().observable(), + event.detail.properties + ); + this.project.wdtModel.getModelPropertiesObject().observable(existingProperties); event.detail.properties.forEach((item) => { + // Get index of existing property that matches property coming + // from “Design View” const index = existingProperties.map(item1 => item1.uid).indexOf(item.uid); if (index === -1) { - // Must call addNewItem() in order to get remove() function added + // Didn’t find a match, so we need to call addNewItem() in order + // to get the remove() function added to the property coming from “Design View” this.project.wdtModel.getModelPropertiesObject().addNewItem({uid: item.uid, Name: item.Name, Value: item.Value}); } else { - // Update existing properties with data from "Design View" + // Found a match, so we just need to update existing properties + // with data coming from “Design View”. The uid of the existing + // property will be the same, but “Design View” could have made + // both the Name and Value different. existingProperties[index].Name = item.Name; existingProperties[index].Value = item.Value; } From e720ae78c2da20584f1fbc24608f717ea9c5b444 Mon Sep 17 00:00:00 2001 From: Mike Wooten Date: Thu, 23 Jun 2022 08:09:05 -0400 Subject: [PATCH 2/3] Add missing semi-colon --- webui/src/js/viewModels/model-design-view.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webui/src/js/viewModels/model-design-view.js b/webui/src/js/viewModels/model-design-view.js index a1f083893..bbab36e60 100644 --- a/webui/src/js/viewModels/model-design-view.js +++ b/webui/src/js/viewModels/model-design-view.js @@ -166,7 +166,7 @@ function(accUtils, i18n, ko, project, urlCatalog, viewHelper, wktLogger, ViewMod // Triggered when changes have been downloaded from the WRC backend, for the active WDT Model File provider. this.changesAutoDownloaded = (event) => { function filterOriginalModelProperties(array1, array2){ - return array1.filter(c => array2.findIndex(x=>x.uid == c.uid) > -1) + return array1.filter(c => array2.findIndex(x=>x.uid == c.uid) > -1); } wktLogger.debug('Received changesAutoDownloaded event with modelContent = %s', event.detail.value); From 797024f009078d909e51015b5a0885e238e48bd9 Mon Sep 17 00:00:00 2001 From: Mike Wooten Date: Fri, 24 Jun 2022 12:37:01 -0400 Subject: [PATCH 3/3] Changed spread oper to JSON.parse(JSON.stringify) --- webui/src/js/viewModels/model-design-view.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webui/src/js/viewModels/model-design-view.js b/webui/src/js/viewModels/model-design-view.js index bbab36e60..16c7251aa 100644 --- a/webui/src/js/viewModels/model-design-view.js +++ b/webui/src/js/viewModels/model-design-view.js @@ -131,7 +131,7 @@ function(accUtils, i18n, ko, project, urlCatalog, viewHelper, wktLogger, ViewMod // providerOptions['name'] = this.project.wdtModel.getDefaultModelFile(); // Set model properties provider option - providerOptions['modelProperties'] = [...this.project.wdtModel.getModelPropertiesObject().observable()]; + providerOptions['modelProperties'] = JSON.parse(JSON.stringify(this.project.wdtModel.getModelPropertiesObject().observable())); // Set model archive provider option providerOptions['modelArchive'] = this.project.wdtModel.archiveRoots;