UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

78 lines 11.7 kB
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==