From 892fc9896dc6b86c7abb67163fba29b2d3342e62 Mon Sep 17 00:00:00 2001 From: antonioaltamura <antonioaltamura7@gmail.com> Date: Fri, 25 Jun 2021 16:06:52 +0200 Subject: [PATCH] variant-interpreter-browser-rd.js external setting in progress. mergeConfigById() added in utilsNew.js #152, opencb/iva#236 --- src/core/utilsNew.js | 46 +++++++++++++++---- .../variant-interpreter-browser-rd.js | 5 +- 2 files changed, 41 insertions(+), 10 deletions(-) diff --git a/src/core/utilsNew.js b/src/core/utilsNew.js index 5a39c564e9..fe36d8a425 100644 --- a/src/core/utilsNew.js +++ b/src/core/utilsNew.js @@ -396,11 +396,11 @@ export default class UtilsNew { } /** - * Hydrates `external` array with `internal` data. + * Hydrates `external` array of objects with `internal` one. * * @param internal * @param external - * @return {Array} hydrated array + * @returns {Array} hydrated array */ static mergeConfigArray(internal, external) { // console.log("internal, external", internal, external) @@ -422,9 +422,9 @@ export default class UtilsNew { * @deprecated * It merges external filter list with internal one. It support reorganisation of sections. * - * @param internal - * @param external - * @return {Array} hydrated array + * @param internal {Array} + * @param external {Array} + * @returns {Array} hydrated array */ static mergeFiltersOld(internal, external) { // console.log("internal, external", internal, external) @@ -432,7 +432,7 @@ export default class UtilsNew { // flattening the whole list of fields const allFields = internal.sections.flatMap(section => section); const sections = external.sections.map(section => { - //const internalSection = internal.sections.find(s => s.id === section.id); + // const internalSection = internal.sections.find(s => s.id === section.id); // hydrates all the fields of each external section from the pool of fields. const fields = UtilsNew.mergeConfigArray(allFields, section.fields); return {...external, fields: fields}; @@ -445,9 +445,9 @@ export default class UtilsNew { * It merges external filter list with internal one. * It doesn't support sections reorder and fields reorganisation among sections. Sections are fixed from the internal config. * - * @param internal Filter object - * @param external Simplified filter object - * @return {Array} hydrated array + * @param internal {Array} Filter object + * @param external {Array} Simplified filter object + * @returns {Array} hydrated array */ static mergeFilters(internal, external) { // console.log("internal, external", internal, external) @@ -467,4 +467,32 @@ export default class UtilsNew { return internal; } + /** + * Hydrates `external` array with `internal` data. + * `external` is a plain list of IDs. + * + * @param internal {Array} Array of objects + * @param external {Array} List of IDs + * @returns {Array} hydrated array + */ + static mergeConfigById(internal, external) { + // console.log("internal, external", internal, external) + if (external?.length) { + return external.map(id => { + const obj = internal.find(e => id === e.id); + if (!obj) { + console.error(`Config Merge failed. ${id} not found in internal config`); + } else { + return {...obj}; + } + }); + } + console.warn("external config not available"); + return internal; + } + + static mergeTable(internal, external) { + + } + } diff --git a/src/core/webcomponents/variant/interpretation/variant-interpreter-browser-rd.js b/src/core/webcomponents/variant/interpretation/variant-interpreter-browser-rd.js index 1c03335fe7..33af13dcdc 100644 --- a/src/core/webcomponents/variant/interpretation/variant-interpreter-browser-rd.js +++ b/src/core/webcomponents/variant/interpretation/variant-interpreter-browser-rd.js @@ -112,7 +112,10 @@ class VariantInterpreterBrowserRd extends LitElement { settingsObserver() { this._config = {...this.getDefaultConfig(), ...this.config}; - this._config.filter = UtilsNew.mergeFilters(this._config?.filter, this.settings.filters); + // merge filters + this._config.filter = UtilsNew.mergeFilters(this._config?.filter, this.settings.menu.filters); + // merge details tab + this._config.filter.detail.items = UtilsNew.mergeConfigById(this._config.filter.detail.items, this.settings.details); this.requestUpdate(); }