X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=skyquake%2Fplugins%2Fcomposer%2Fsrc%2Fsrc%2Flibraries%2Fmodel%2FDescriptorModelSerializer.js;h=449f0a36ee488b50d1e01067147ec0e5a3206a5f;hb=6620bca06b9874e68e8bc11ce28b7a6eeda5cc03;hp=014beb32bb1cfba62656352099e656259d9ed459;hpb=25ceeb3e3d86705229fad71f9b6738b97ead7e36;p=osm%2FUI.git diff --git a/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelSerializer.js b/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelSerializer.js index 014beb32b..449f0a36e 100644 --- a/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelSerializer.js +++ b/skyquake/plugins/composer/src/src/libraries/model/DescriptorModelSerializer.js @@ -29,6 +29,7 @@ let nsdFields = null; let vldFields = null; let vnfdFields = null; let cvnfdFields = null; +let configParameterMapFields = null; @@ -129,7 +130,7 @@ const DescriptorModelSerializer = { return DescriptorModelSerializer.serialize(d); }); - return confd; + return cleanEmptyTopKeys(confd); } }, @@ -161,7 +162,7 @@ const DescriptorModelSerializer = { } // fix-end confd[property] = confd[property].map(d => DescriptorModelSerializer[property].serialize(d)); - return confd; + return cleanEmptyTopKeys(confd); } }, 'vnfd-connection-point-ref': { @@ -185,7 +186,7 @@ const DescriptorModelSerializer = { if(!vnfdFields) vnfdFields = DescriptorModelMetaFactory.getModelFieldNamesForType('vnfd').concat('uiState'); const confd = _.pick(vnfdModel, vnfdFields); confd.vdu = confd.vdu.map(d => DescriptorModelSerializer.serialize(d)); - return confd; + return cleanEmptyTopKeys(confd); } }, vdu: { @@ -195,26 +196,55 @@ const DescriptorModelSerializer = { checkForChoiceAndRemove(k, copy, vduModel) } const confd = _.omit(copy, ['uiState']); - return confd; + return cleanEmptyTopKeys(confd); } + }, + 'config-parameter-map': { + serialize(configParameterMap) { + //vnfapMapFields + if(!configParameterMapFields) configParameterMapFields = DescriptorModelMetaFactory.getModelFieldNamesForType('nsd.config-parameter-map'); + return _.pick(configParameterMap, configParameterMapFields); + } } }; function checkForChoiceAndRemove(k, confd, model) { - let state = model.uiState; - if (state.choice) { - let choice = state.choice[k] - if(choice) { - for (let key in confd[k]) { - if(choice && (choice.selected.indexOf(key) > -1)) { - confd[key] = confd[k][key] - } - }; - delete confd[k]; - } - } - return confd; + let state = model.uiState; + if (state.choice) { + let choice = state.choice[k] + if(choice) { + if (choice.constructor.name == "Array") { + for(let i = 0; i < choice.length; i++) { + for (let key in confd[k][i]) { + if(choice[i] && (choice[i].selected.indexOf(key) > -1)) { + confd[k][i][key] = confd[k][i][key] + } + confd[key]; + }; + } + } else { + for (let key in confd[k]) { + if(choice && (choice.selected.indexOf(key) > -1)) { + confd[key] = confd[k][key] + } + }; + delete confd[k]; + } + + } + } + return confd; +} + +function cleanEmptyTopKeys(m){ + Object.keys(m).forEach(k => { + const isEmptyObject = typeof m[k] === 'object' && _.isEmpty(m[k]); + if (typeof m[k] === 'undefined' || isEmptyObject || m[k] === '') { + delete m[k]; + } + }); + return m; } export default DescriptorModelSerializer;