@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
78 lines • 11.7 kB
JavaScript
import { HeaderColumnType } from '../../header/models/header-column';
import { HeaderChangeType } from '../../header/models/user-changes/header-change-type';
import { Component } from '@angular/core';
import { SearchIndex } from '../../search/models/search-index';
import { PaginationParams } from '../../utility/pagination/pagination-params';
import * as i0 from "@angular/core";
import * as i1 from "../../search/search-keyword-resolver-service/search-index-resolver.service";
export class AbstractSortableViewComponent {
_resolver;
_lastHeaderSearchState;
_subHeader;
constructor(_resolver) {
this._resolver = _resolver;
this._lastHeaderSearchState = {
columnType: undefined,
fieldIdentifier: '',
sortDirection: '',
columnIdentifier: -1,
fieldType: undefined
};
}
ngOnDestroy() {
if (this._subHeader) {
this._subHeader.unsubscribe();
}
}
registerHeaderChange(headerChange$) {
this._subHeader = headerChange$.subscribe((header) => {
if (!header) {
return;
}
if (header.changeType === HeaderChangeType.SORT || header.changeType === HeaderChangeType.SEARCH) {
if (header.changeType === HeaderChangeType.SORT) {
this._lastHeaderSearchState = header.description;
}
// TODO we might not need to search all the time, do some filtering
this.reload();
}
});
}
addSortParams(params) {
if (this._lastHeaderSearchState.sortDirection !== '') {
return params.set(PaginationParams.PAGE_SORT, `${this.getSortId()},${this._lastHeaderSearchState.sortDirection}`);
}
else {
return params.set(PaginationParams.PAGE_SORT, this.getDefaultSortParam());
}
}
getSortId() {
if (this._lastHeaderSearchState.columnType === HeaderColumnType.META) {
return this.getMetaFieldSortId();
}
else {
switch (this._lastHeaderSearchState.fieldType) {
case 'number':
return this._resolver.getIndex(this._lastHeaderSearchState.fieldIdentifier, SearchIndex.NUMBER);
case 'date':
case 'dateTime':
return this._resolver.getIndex(this._lastHeaderSearchState.fieldIdentifier, SearchIndex.TIMESTAMP);
case 'user':
case 'userList':
return this._resolver.getIndex(this._lastHeaderSearchState.fieldIdentifier, SearchIndex.FULL_NAME, true);
default:
return this._resolver.getIndex(this._lastHeaderSearchState.fieldIdentifier, SearchIndex.FULLTEXT, true);
}
}
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractSortableViewComponent, deps: [{ token: i1.SearchIndexResolverService }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AbstractSortableViewComponent, selector: "ncc-abstract-sortable-view", ngImport: i0, template: '', isInline: true });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractSortableViewComponent, decorators: [{
type: Component,
args: [{
selector: 'ncc-abstract-sortable-view',
template: ''
}]
}], ctorParameters: () => [{ type: i1.SearchIndexResolverService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGFibGUtdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvdmlldy9hYnN0cmFjdC9zb3J0YWJsZS12aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBSW5FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxTQUFTLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzdELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDOzs7QUFNNUUsTUFBTSxPQUFnQiw2QkFBNkI7SUFLZjtJQUh0QixzQkFBc0IsQ0FBd0I7SUFDOUMsVUFBVSxDQUFlO0lBRW5DLFlBQWdDLFNBQXFDO1FBQXJDLGNBQVMsR0FBVCxTQUFTLENBQTRCO1FBQ2pFLElBQUksQ0FBQyxzQkFBc0IsR0FBRztZQUMxQixVQUFVLEVBQUUsU0FBUztZQUNyQixlQUFlLEVBQUUsRUFBRTtZQUNuQixhQUFhLEVBQUUsRUFBRTtZQUNqQixnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDcEIsU0FBUyxFQUFFLFNBQVM7U0FDdkIsQ0FBQztJQUNOLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDakM7SUFDTCxDQUFDO0lBRU0sb0JBQW9CLENBQUMsYUFBdUM7UUFDL0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBb0IsRUFBRSxFQUFFO1lBQy9ELElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1QsT0FBTzthQUNWO1lBQ0QsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLGdCQUFnQixDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtnQkFDOUYsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLGdCQUFnQixDQUFDLElBQUksRUFBRTtvQkFDN0MsSUFBSSxDQUFDLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxXQUFvQyxDQUFDO2lCQUM3RTtnQkFDRCxtRUFBbUU7Z0JBQ25FLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNqQjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUlTLGFBQWEsQ0FBQyxNQUFrQjtRQUN0QyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLEtBQUssRUFBRSxFQUFFO1lBQ2xELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7U0FDckg7YUFBTTtZQUNILE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztTQUM3RTtJQUNMLENBQUM7SUFFUyxTQUFTO1FBQ2YsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxLQUFLLGdCQUFnQixDQUFDLElBQUksRUFBRTtZQUNsRSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQ3BDO2FBQU07WUFDSCxRQUFRLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUU7Z0JBQzNDLEtBQUssUUFBUTtvQkFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNwRyxLQUFLLE1BQU0sQ0FBQztnQkFDWixLQUFLLFVBQVU7b0JBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdkcsS0FBSyxNQUFNLENBQUM7Z0JBQ1osS0FBSyxVQUFVO29CQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM3RztvQkFDSSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUMvRztTQUNKO0lBQ0wsQ0FBQzt3R0EvRGlCLDZCQUE2Qjs0RkFBN0IsNkJBQTZCLGtFQUZyQyxFQUFFOzs0RkFFTSw2QkFBNkI7a0JBSmxELFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsUUFBUSxFQUFFLEVBQUU7aUJBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NvcnRDaGFuZ2VEZXNjcmlwdGlvbn0gZnJvbSAnLi4vLi4vaGVhZGVyL21vZGVscy91c2VyLWNoYW5nZXMvc29ydC1jaGFuZ2UtZGVzY3JpcHRpb24nO1xuaW1wb3J0IHtIZWFkZXJDb2x1bW5UeXBlfSBmcm9tICcuLi8uLi9oZWFkZXIvbW9kZWxzL2hlYWRlci1jb2x1bW4nO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtIZWFkZXJDaGFuZ2V9IGZyb20gJy4uLy4uL2hlYWRlci9tb2RlbHMvdXNlci1jaGFuZ2VzL2hlYWRlci1jaGFuZ2UnO1xuaW1wb3J0IHtIdHRwUGFyYW1zfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0hlYWRlckNoYW5nZVR5cGV9IGZyb20gJy4uLy4uL2hlYWRlci9tb2RlbHMvdXNlci1jaGFuZ2VzL2hlYWRlci1jaGFuZ2UtdHlwZSc7XG5pbXBvcnQge0NvbXBvbmVudCwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U2VhcmNoSW5kZXhSZXNvbHZlclNlcnZpY2V9IGZyb20gJy4uLy4uL3NlYXJjaC9zZWFyY2gta2V5d29yZC1yZXNvbHZlci1zZXJ2aWNlL3NlYXJjaC1pbmRleC1yZXNvbHZlci5zZXJ2aWNlJztcbmltcG9ydCB7U2VhcmNoSW5kZXh9IGZyb20gJy4uLy4uL3NlYXJjaC9tb2RlbHMvc2VhcmNoLWluZGV4JztcbmltcG9ydCB7UGFnaW5hdGlvblBhcmFtc30gZnJvbSAnLi4vLi4vdXRpbGl0eS9wYWdpbmF0aW9uL3BhZ2luYXRpb24tcGFyYW1zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduY2MtYWJzdHJhY3Qtc29ydGFibGUtdmlldycsXG4gICAgdGVtcGxhdGU6ICcnXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0U29ydGFibGVWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIHByb3RlY3RlZCBfbGFzdEhlYWRlclNlYXJjaFN0YXRlOiBTb3J0Q2hhbmdlRGVzY3JpcHRpb247XG4gICAgcHJvdGVjdGVkIF9zdWJIZWFkZXI6IFN1YnNjcmlwdGlvbjtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3Jlc29sdmVyOiBTZWFyY2hJbmRleFJlc29sdmVyU2VydmljZSkge1xuICAgICAgICB0aGlzLl9sYXN0SGVhZGVyU2VhcmNoU3RhdGUgPSB7XG4gICAgICAgICAgICBjb2x1bW5UeXBlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBmaWVsZElkZW50aWZpZXI6ICcnLFxuICAgICAgICAgICAgc29ydERpcmVjdGlvbjogJycsXG4gICAgICAgICAgICBjb2x1bW5JZGVudGlmaWVyOiAtMSxcbiAgICAgICAgICAgIGZpZWxkVHlwZTogdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9zdWJIZWFkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX3N1YkhlYWRlci51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVySGVhZGVyQ2hhbmdlKGhlYWRlckNoYW5nZSQ6IE9ic2VydmFibGU8SGVhZGVyQ2hhbmdlPik6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJIZWFkZXIgPSBoZWFkZXJDaGFuZ2UkLnN1YnNjcmliZSgoaGVhZGVyOiBIZWFkZXJDaGFuZ2UpID0+IHtcbiAgICAgICAgICAgIGlmICghaGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhlYWRlci5jaGFuZ2VUeXBlID09PSBIZWFkZXJDaGFuZ2VUeXBlLlNPUlQgfHwgaGVhZGVyLmNoYW5nZVR5cGUgPT09IEhlYWRlckNoYW5nZVR5cGUuU0VBUkNIKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhlYWRlci5jaGFuZ2VUeXBlID09PSBIZWFkZXJDaGFuZ2VUeXBlLlNPUlQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFzdEhlYWRlclNlYXJjaFN0YXRlID0gaGVhZGVyLmRlc2NyaXB0aW9uIGFzIFNvcnRDaGFuZ2VEZXNjcmlwdGlvbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVE9ETyB3ZSBtaWdodCBub3QgbmVlZCB0byBzZWFyY2ggYWxsIHRoZSB0aW1lLCBkbyBzb21lIGZpbHRlcmluZ1xuICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCByZWxvYWQoKTogdm9pZDtcblxuICAgIHByb3RlY3RlZCBhZGRTb3J0UGFyYW1zKHBhcmFtczogSHR0cFBhcmFtcyk6IEh0dHBQYXJhbXMge1xuICAgICAgICBpZiAodGhpcy5fbGFzdEhlYWRlclNlYXJjaFN0YXRlLnNvcnREaXJlY3Rpb24gIT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyYW1zLnNldChQYWdpbmF0aW9uUGFyYW1zLlBBR0VfU09SVCwgYCR7dGhpcy5nZXRTb3J0SWQoKX0sJHt0aGlzLl9sYXN0SGVhZGVyU2VhcmNoU3RhdGUuc29ydERpcmVjdGlvbn1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJhbXMuc2V0KFBhZ2luYXRpb25QYXJhbXMuUEFHRV9TT1JULCB0aGlzLmdldERlZmF1bHRTb3J0UGFyYW0oKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0U29ydElkKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLl9sYXN0SGVhZGVyU2VhcmNoU3RhdGUuY29sdW1uVHlwZSA9PT0gSGVhZGVyQ29sdW1uVHlwZS5NRVRBKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRNZXRhRmllbGRTb3J0SWQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5fbGFzdEhlYWRlclNlYXJjaFN0YXRlLmZpZWxkVHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvbHZlci5nZXRJbmRleCh0aGlzLl9sYXN0SGVhZGVyU2VhcmNoU3RhdGUuZmllbGRJZGVudGlmaWVyLCBTZWFyY2hJbmRleC5OVU1CRVIpO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2RhdGVUaW1lJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVyLmdldEluZGV4KHRoaXMuX2xhc3RIZWFkZXJTZWFyY2hTdGF0ZS5maWVsZElkZW50aWZpZXIsIFNlYXJjaEluZGV4LlRJTUVTVEFNUCk7XG4gICAgICAgICAgICAgICAgY2FzZSAndXNlcic6XG4gICAgICAgICAgICAgICAgY2FzZSAndXNlckxpc3QnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVzb2x2ZXIuZ2V0SW5kZXgodGhpcy5fbGFzdEhlYWRlclNlYXJjaFN0YXRlLmZpZWxkSWRlbnRpZmllciwgU2VhcmNoSW5kZXguRlVMTF9OQU1FLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVzb2x2ZXIuZ2V0SW5kZXgodGhpcy5fbGFzdEhlYWRlclNlYXJjaFN0YXRlLmZpZWxkSWRlbnRpZmllciwgU2VhcmNoSW5kZXguRlVMTFRFWFQsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldE1ldGFGaWVsZFNvcnRJZCgpOiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0RGVmYXVsdFNvcnRQYXJhbSgpOiBzdHJpbmc7XG5cbn1cbiJdfQ==