in src/pages/Home/Home.state.ts [161:199]
export function mergeWithSeparatePool(
runs: Run[],
initialData: DataAndNew,
params: Record<string, string>,
): DataAndNew {
return runs.reduce((data, item): DataAndNew => {
const groupKey = item[params._group as keyof Run] || 'undefined';
if (typeof groupKey === 'string') {
// If we already have same group, we need to check if we can add current item there
if (data.rungroups[groupKey]) {
const index = data.rungroups[groupKey].findIndex((r) => r.run_number === item.run_number);
// If we already have this run, we can update it....
if (index > -1) {
return {
rungroups: {
...data.rungroups,
[groupKey]: sortRuns(
data.rungroups[groupKey].map((r) => (r.run_number === item.run_number ? item : r)),
params._order,
),
},
newRuns: data.newRuns,
};
}
}
//...else we need to merge or add it to newData
const indexInNewData = data.newRuns.findIndex((r) => r.run_number === item.run_number);
return {
rungroups: data.rungroups,
newRuns:
indexInNewData > -1
? data.newRuns.map((r) => (r.run_number === item.run_number ? item : r))
: [...data.newRuns, item],
};
}
return data;
}, initialData);
}