@opengis/bi
Version:
BI data visualization module
25 lines (18 loc) • 937 B
JavaScript
import { getSelectVal } from '@opengis/fastify-table/utils.js';
export default async function metaFormat({ rows, columns }) {
const selectCols = columns?.filter?.((el) => el.data);
if (!selectCols?.length) return rows;
await Promise.all(selectCols.map(async (attr) => {
const values = [...new Set(rows?.map((el) => el[attr.name]).flat())].filter((el) => (typeof el === 'boolean' ? true : el));
if (!values.length) return null;
const cls = await getSelectVal({ name: attr.data, values });
if (!cls) return null;
rows.forEach(el => {
const val = el[attr.name]?.map?.(c => cls[c.toString()] || cls[c] || c) || cls[el[attr.name]?.toString()] || cls[el[attr.name]] || el[attr.name];
if (!val) return;
Object.assign(el, { [val?.color ? `${attr.name}_data` : `${attr.name}_text`]: (val.color ? val : val.text || val) });
});
return null;
}));
return rows;
}