Browse Source

feat(lib): implement fuse.js

pull/5055/head
KenTandrian 3 days ago
parent
commit
703c1a3b47
  1. 27
      libs/ui/src/lib/assistant/assistant.component.ts

27
libs/ui/src/lib/assistant/assistant.component.ts

@ -41,6 +41,7 @@ import { MatSelectModule } from '@angular/material/select';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { Account, AssetClass, DataSource } from '@prisma/client'; import { Account, AssetClass, DataSource } from '@prisma/client';
import { differenceInYears } from 'date-fns'; import { differenceInYears } from 'date-fns';
import Fuse from 'fuse.js';
import { isFunction } from 'lodash'; import { isFunction } from 'lodash';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
import { EMPTY, Observable, Subject, merge, of } from 'rxjs'; import { EMPTY, Observable, Subject, merge, of } from 'rxjs';
@ -642,20 +643,18 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit {
return acc; return acc;
}, [] as IRoute[]); }, [] as IRoute[]);
return allRoutes const fuse = new Fuse(allRoutes, {
.filter(({ title }) => { keys: ['title'],
return title.toLowerCase().includes(searchTerm); threshold: 0.3
}) });
.map(({ routerLink, title }) => {
return { return fuse.search(searchTerm).map(({ item: { routerLink, title } }) => {
routerLink, return {
mode: SearchMode.QUICK_LINK as const, routerLink,
name: title mode: SearchMode.QUICK_LINK as const,
}; name: title
}) };
.sort((a, b) => { });
return a.name.localeCompare(b.name);
});
} }
private setFilterFormValues() { private setFilterFormValues() {

Loading…
Cancel
Save