opendash
Version:
open.DASH data visualization framework
30 lines (23 loc) • 849 B
text/typescript
import * as React from "react";
import { DataItemInterface, useOpenDashServices, useForceRender } from "..";
export function useDataItems(searchString?: string): DataItemInterface[] {
const { DataService } = useOpenDashServices();
const forceRender = useForceRender();
React.useEffect(() => {
return DataService.subscribeItemList(() => {
forceRender();
});
}, []);
return React.useMemo(() => {
if (searchString) {
const searchStrings = searchString.toLowerCase().split(" ");
return DataService._listOrThrowSync().filter(item => {
const searchIndex = [item.id, item.name].join("~").toLowerCase();
return searchStrings.every(searchTerm =>
searchIndex.includes(searchTerm)
);
});
}
return DataService._listOrThrowSync();
}, [forceRender, searchString]);
}