0.0.5 • Published 2 years ago

@vincjo/svelte-data-handler v0.0.5

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Abstract

DataHandler is a single, easy-to-use class to manipulate a dataset sorting, filtering and paginating.

It contains a set of Svelte stores handled by a small layer of logic.

DataHandler class provides Typescript support.

:arrow_right: Documentation

Install

npm i -D @vincjo/svelte-data-handler

Methods

import { DataHandler } from '@vincjo/svelte-data-handler'


const dataHandler = new DataHandler(myJSON, { itemsPerPage: 50 })

/********************
 *                  *
 *      Items       *
 *                  *
 ********************/

/* Get a readable store of sorted, filtered & paginated data */
dataHandler.getItems(): Readable<any[]>

/* Get the number of items as a readable store (total + displayed) */
dataHandler.getItemsCount(): Readable<{ total: number; start: number; end: number; }>

/* Sort items by key  (keyName) */
dataHandler.sortAsc( 'firstname': string): void
dataHandler.sortDesc('firstname': string): void

/* Sort items using a function */
dataHandler.sortAsc(  (item)  => { 
    return `${item.firstname} ${item.lastname}` 
}): void

dataHandler.sortDesc( (item)  => {
    return `${item.firstname} ${item.lastname}` 
}): void

/* Function global search (searchValue) */
dataHandler.search('Dupont'): void

/* Programmatically destroy the global search */
dataHandler.clearSearch(): void

/* Filter data by key (filterValue, keyName) */
dataHandler.filter('Jean', 'firstname'): void

/* Filter data by using a function (filterValue, fn(item) ) */
dataHandler.filter( 'Jean Dupont', (item) => {
    return `${item.firstname} ${item.lastname}`
})

/* Remove all the filters */
dataHandler.clearFilters(): void

/* Changing the dataset */
dataHandler.set(myOtherJSON: any[]): void




/********************
 *                  *
 *      Pages       *
 *                  *
 ********************/

/* Get pages as an array of object */
const pages = dataHandler.getPages(): Readable<{ index: number; value: number }[]>
console.log( $pages )

/* get the current total number of pages */
dataHandler.getPageCount(): Readable<number> 

/* Get the current page */
dataHandler.getPageNumber(): Readable<number>

/* Navigate */
dataHandler.setPage(24): void
dataHandler.setPage('previous'): void
dataHandler.setPage('next'): void




/********************
 *                  *
 *      Event       *
 *                  *
 ********************/

/* Get a store that increments each time the data is updated */
const triggerChange = dataHandler.getTriggerChange(): Writable<number>

$: $triggerChange, scrollTop()

const scrollTop = () => {
	if (element) {
		element.scrollTop = 0
	}
}




/********************
 *                  *
 *      Params      *
 *                  *
 ********************/

/* Update number of items per pages, can be set to "null" */
const dataHandler.updateParams({ itemsPerPage: 100 }): void

/* Set no pagination */
const dataHandler.updateParams(): void
0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.1

2 years ago