107 lines
3.1 KiB
Plaintext
107 lines
3.1 KiB
Plaintext
import Context from './core/Context';
|
|
import Rows from './core/Handlers/Rows';
|
|
import Pages from './core/Handlers/Pages';
|
|
import GlobalSearch from './core/Handlers/GlobalSearch';
|
|
import Filters from './core/Handlers/Filters';
|
|
export default class DataHandler {
|
|
context;
|
|
rows;
|
|
pages;
|
|
globalSearch;
|
|
filters;
|
|
i18n;
|
|
constructor(data = [], params = { rowsPerPage: null }) {
|
|
this.i18n = this.translate(params.i18n);
|
|
this.context = new Context(data, params);
|
|
this.rows = new Rows(this.context);
|
|
this.pages = new Pages(this.context);
|
|
this.globalSearch = new GlobalSearch(this.context);
|
|
this.filters = new Filters(this.context);
|
|
}
|
|
setRows(data) {
|
|
this.context.rawRows.set(data);
|
|
this.applySorting();
|
|
}
|
|
getRows() {
|
|
return this.context.rows;
|
|
}
|
|
getRowCount() {
|
|
return this.context.rowCount;
|
|
}
|
|
getRowsPerPage() {
|
|
return this.context.rowsPerPage;
|
|
}
|
|
sort(orderBy) {
|
|
this.setPage(1);
|
|
this.rows.sort(orderBy);
|
|
}
|
|
applySorting(params = null) {
|
|
this.rows.applySorting(params);
|
|
}
|
|
sortAsc(orderBy) {
|
|
this.setPage(1);
|
|
this.rows.sortAsc(orderBy);
|
|
}
|
|
sortDesc(orderBy) {
|
|
this.setPage(1);
|
|
this.rows.sortDesc(orderBy);
|
|
}
|
|
getSorted() {
|
|
return this.context.sorted;
|
|
}
|
|
search(value, scope = null) {
|
|
this.globalSearch.set(value, scope);
|
|
}
|
|
clearSearch() {
|
|
this.globalSearch.remove();
|
|
}
|
|
filter(value, filterBy) {
|
|
return this.filters.set(value, filterBy);
|
|
}
|
|
clearFilters() {
|
|
this.filters.remove();
|
|
}
|
|
getPages(params = { ellipsis: false }) {
|
|
if (params.ellipsis) {
|
|
return this.context.pagesWithEllipsis;
|
|
}
|
|
return this.context.pages;
|
|
}
|
|
getPageCount() {
|
|
return this.context.pageCount;
|
|
}
|
|
getPageNumber() {
|
|
return this.context.pageNumber;
|
|
}
|
|
setPage(value) {
|
|
switch (value) {
|
|
case 'previous': return this.pages.previous();
|
|
case 'next': return this.pages.next();
|
|
default: return this.pages.goTo(value);
|
|
}
|
|
}
|
|
getTriggerChange() {
|
|
return this.context.triggerChange;
|
|
}
|
|
translate(i18n) {
|
|
return { ...{
|
|
search: 'Search...',
|
|
show: 'Show',
|
|
entries: 'entries',
|
|
filter: 'Filter',
|
|
rowCount: 'Showing {start} to {end} of {total} entries',
|
|
noRows: 'No entries to found',
|
|
previous: 'Previous',
|
|
next: 'Next'
|
|
}, ...i18n };
|
|
}
|
|
/**
|
|
* Deprecated
|
|
* use setRows() instead
|
|
*/
|
|
update(data) {
|
|
console.log('%c%s', 'color:#e65100;background:#fff3e0;font-size:12px;border-radius:4px;padding:4px;text-align:center;', `DataHandler.update(data) method is deprecated. Please use DataHandler.setRows(data) instead`);
|
|
this.context.rawRows.set(data);
|
|
}
|
|
}
|