mirror of
https://github.com/SigNoz/signoz.git
synced 2025-12-18 16:07:10 +00:00
* feat: add the ability to drag columns * feat: add the ability to drag columns in the logs explorer * feat: update drag logic * fix: resolve comments * feat: resolve comment regarding error handling --------- Co-authored-by: Vishal Sharma <makeavish786@gmail.com> Co-authored-by: Palash Gupta <palashgdev@gmail.com>
38 lines
989 B
TypeScript
38 lines
989 B
TypeScript
import { ColumnsType } from 'antd/es/table';
|
|
|
|
const filterColumns = <T>(
|
|
initialColumns: ColumnsType<T>,
|
|
findColumns: ColumnsType<T>,
|
|
isColumnExist = true,
|
|
): ColumnsType<T> =>
|
|
initialColumns.filter(({ title: columnTitle }) => {
|
|
const column = findColumns.find(({ title }) => title === columnTitle);
|
|
|
|
return isColumnExist ? !!column : !column;
|
|
});
|
|
|
|
export const getDraggedColumns = <T>(
|
|
currentColumns: ColumnsType<T>,
|
|
draggedColumns: ColumnsType<T>,
|
|
): ColumnsType<T> => {
|
|
if (draggedColumns.length) {
|
|
const actualDruggedColumns = filterColumns<T>(draggedColumns, currentColumns);
|
|
const newColumns = filterColumns<T>(
|
|
currentColumns,
|
|
actualDruggedColumns,
|
|
false,
|
|
);
|
|
|
|
return [...actualDruggedColumns, ...newColumns].reduce((acc, { title }) => {
|
|
const column = currentColumns.find(
|
|
({ title: columnTitle }) => title === columnTitle,
|
|
);
|
|
|
|
if (column) return [...acc, column];
|
|
return acc;
|
|
}, [] as ColumnsType<T>);
|
|
}
|
|
|
|
return currentColumns;
|
|
};
|