ha-frontend/src/components/data-table/sort-filter.ts

37 lines
1021 B
TypeScript
Raw Normal View History

2020-05-18 16:51:46 +02:00
import { wrap } from "comlink";
2020-05-23 08:05:47 +02:00
import type { api } from "./sort_filter_worker";
type FilterDataType = api["filterData"];
2020-05-19 13:59:16 +02:00
type FilterDataParamTypes = Parameters<FilterDataType>;
2020-05-23 08:05:47 +02:00
type SortDataType = api["sortData"];
2020-05-19 13:59:16 +02:00
type SortDataParamTypes = Parameters<SortDataType>;
2020-05-18 16:51:46 +02:00
let worker: any | undefined;
2020-05-19 13:59:16 +02:00
export const filterData = async (
data: FilterDataParamTypes[0],
columns: FilterDataParamTypes[1],
filter: FilterDataParamTypes[2]
): Promise<ReturnType<FilterDataType>> => {
if (!worker) {
worker = wrap(new Worker("./sort_filter_worker", { type: "module" }));
}
return await worker.filterData(data, columns, filter);
};
export const sortData = async (
data: SortDataParamTypes[0],
columns: SortDataParamTypes[1],
direction: SortDataParamTypes[2],
sortColumn: SortDataParamTypes[3]
): Promise<ReturnType<SortDataType>> => {
2020-05-18 16:51:46 +02:00
if (!worker) {
worker = wrap(new Worker("./sort_filter_worker", { type: "module" }));
}
2020-05-19 13:59:16 +02:00
return await worker.sortData(data, columns, direction, sortColumn);
2020-05-18 16:51:46 +02:00
};