Skip to content

Commit

Permalink
variant-interpreter-browser-rd.js external setting in progress. merge…
Browse files Browse the repository at this point in the history
…ConfigById() added in utilsNew.js #152, opencb/iva#236
  • Loading branch information
antonioaltamura committed Jun 25, 2021
1 parent 7356b40 commit 892fc98
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 10 deletions.
46 changes: 37 additions & 9 deletions src/core/utilsNew.js
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -422,17 +422,17 @@ 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)
if (external) {
// 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};
Expand All @@ -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)
Expand All @@ -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) {

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}

Expand Down

0 comments on commit 892fc98

Please sign in to comment.