Skip to content
Snippets Groups Projects
Commit 1100c8b7 authored by Valentin Perrelle's avatar Valentin Perrelle Committed by David Bühler
Browse files

[Ivette] add mergeArrays to dome/utils

parent 1a36e3bb
No related branches found
No related tags found
No related merge requests found
...@@ -109,4 +109,24 @@ export function styles( ...@@ -109,4 +109,24 @@ export function styles(
return (empty ? undefined : buffer); return (empty ? undefined : buffer);
} }
export type Indexed = { key: unknown; }
export function mergeArrays<A, B>(
a1: Array<A>,
a2: Array<B>,
match: (x1: A, x2: B) => boolean
): Array<A & Partial<B>> {
return a1.map(x1 => ({...x1, ...(a2.find(x2 => match(x1, x2)))}));
}
export function mergeArraysByKey<A, B>(
a1: Array<A & Indexed>,
a2: Array<B & Indexed>
): Array<A & Partial<B>> {
return mergeArrays(a1, a2, (x1, x2) => x1.key === x2.key);
}
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
...@@ -28,6 +28,7 @@ import _ from 'lodash'; ...@@ -28,6 +28,7 @@ import _ from 'lodash';
import React, { useEffect } from 'react'; import React, { useEffect } from 'react';
import * as Dome from 'dome'; import * as Dome from 'dome';
import * as Json from 'dome/data/json'; import * as Json from 'dome/data/json';
import * as Utils from 'dome/misc/utils';
import * as States from 'frama-c/states'; import * as States from 'frama-c/states';
import * as Compare from 'dome/data/compare'; import * as Compare from 'dome/data/compare';
import * as Settings from 'dome/data/settings'; import * as Settings from 'dome/data/settings';
...@@ -613,10 +614,7 @@ export default function RenderProperties(): JSX.Element { ...@@ -613,10 +614,7 @@ export default function RenderProperties(): JSX.Element {
useEffect(() => { useEffect(() => {
model.removeAllData(); model.removeAllData();
const data = kernelData.map(entry1 => ({ const data = Utils.mergeArraysByKey(kernelData, evaData);
...entry1,
...(evaData.find(entry2 => entry2.key === entry1.key))
}));
model.updateData(data); model.updateData(data);
model.reload(); model.reload();
}, [model, kernelData, evaData]); }, [model, kernelData, evaData]);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment