refactor: create rows for table (#3235)

Divide different cased into separated functions

Co-authored-by: Palash Gupta <palashgdev@gmail.com>
This commit is contained in:
Yevhen Shevchenko 2023-08-01 13:07:57 +03:00 committed by GitHub
parent 348fa0ba5e
commit 23e6902921
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -305,36 +305,21 @@ const isEqualQueriesByLabel = (
queryName: string,
): boolean => equalQueries.includes(queryName);
const fillDataFromSeries = (
currentQuery: QueryDataV3,
queryTableData: QueryDataV3[],
columns: DynamicColumns,
equalQueriesByLabels: string[],
// TODO: fix it
// eslint-disable-next-line sonarjs/cognitive-complexity
const fillAggregationData = (
column: DynamicColumn,
value: string,
unusedColumnsKeys: Set<keyof RowData>,
): void => {
const { series, queryName } = currentQuery;
const isEqualQuery = isEqualQueriesByLabel(equalQueriesByLabels, queryName);
if (!series) return;
series.forEach((seria) => {
const labelEntries = Object.entries(seria.labels);
const unusedColumnsKeys = new Set<keyof RowData>(
columns.map((item) => item.field),
);
columns.forEach((column) => {
if (queryName === column.field) {
if (seria.values.length === 0) return;
column.data.push(parseFloat(seria.values[0].value).toFixed(2));
column.data.push(parseFloat(value).toFixed(2));
unusedColumnsKeys.delete(column.field);
return;
}
};
if (column.type !== 'field' && column.field !== queryName) {
const fillRestAggregationData = (
column: DynamicColumn,
queryTableData: QueryDataV3[],
seria: SeriesItem,
equalQueriesByLabels: string[],
): void => {
const nextQueryData =
queryTableData.find((q) => q.queryName === column.field) || null;
@ -353,13 +338,14 @@ const fillDataFromSeries = (
} else {
column.data.push('N/A');
}
};
unusedColumnsKeys.delete(column.field);
return;
}
if (isEqualQuery) return;
const fillLabelsData = (
column: DynamicColumn,
seria: SeriesItem,
unusedColumnsKeys: Set<keyof RowData>,
): void => {
const labelEntries = Object.entries(seria.labels);
labelEntries.forEach(([key, currentValue]) => {
if (column.field === key) {
@ -367,6 +353,50 @@ const fillDataFromSeries = (
unusedColumnsKeys.delete(key);
}
});
};
const fillDataFromSeries = (
currentQuery: QueryDataV3,
queryTableData: QueryDataV3[],
columns: DynamicColumns,
equalQueriesByLabels: string[],
): void => {
const { series, queryName } = currentQuery;
const isEqualQuery = isEqualQueriesByLabel(equalQueriesByLabels, queryName);
if (!series) return;
series.forEach((seria) => {
const unusedColumnsKeys = new Set<keyof RowData>(
columns.map((item) => item.field),
);
columns.forEach((column) => {
if (queryName === column.field) {
if (seria.values.length === 0) return;
fillAggregationData(
column,
parseFloat(seria.values[0].value).toFixed(2),
unusedColumnsKeys,
);
return;
}
if (column.type !== 'field' && column.field !== queryName) {
fillRestAggregationData(
column,
queryTableData,
seria,
equalQueriesByLabels,
);
return;
}
if (isEqualQuery) return;
fillLabelsData(column, seria, unusedColumnsKeys);
fillEmptyRowCells(unusedColumnsKeys, columns, column);
});