diff options
Diffstat (limited to 'src/view/client/main.ts')
-rw-r--r-- | src/view/client/main.ts | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/src/view/client/main.ts b/src/view/client/main.ts deleted file mode 100644 index 5885871..0000000 --- a/src/view/client/main.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { h, withVar, mount, Html } from 'lib/rx' -import * as Search from 'lib/search' -import * as Functions from 'lib/functions' -import * as I18n from 'lib/i18n' -import * as Filters from 'view/filters' -import * as Books from 'view/books' -import * as Book from 'book' - -// @ts-ignore -const sortedBookLibrary: Array<Book> = (bookLibrary as Array<Book.Book>).sort((a, b) => - a.authorsSort == b.authorsSort - ? a.date > b.date - : a.authorsSort > b.authorsSort) - -mount(withVar<Filters.Model>({}, (filters, updateFilters) => - withVar('', (search, updateSearch) => { - const filteredBooks = filters.flatMap(f => search.map(s => - sortedBookLibrary.filter(book => - (f.read === undefined || book.read === f.read) - && (s === '' || matchSearch(book, s)) - ) - )) - - return [ - h('aside', Filters.view({ filteredBooks, filters, updateFilters })), - h('main', - h('header', - h('input', - { className: 'g-Search', - oninput: Functions.debounce( - (event: Event) => updateSearch(_ => (event.target as HTMLInputElement).value), - 500 - ) - } - ), - filteredBooks.map(fb => I18n.unit(fb.length, 'livre', 'livres')) - ), - Books.view(filteredBooks) - ) - ] - }) -)) - -function matchSearch(book: Book.Book, search: string): boolean { - return Search.match(search, book.title, book.subtitle, ...book.authors) -} |