UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

140 lines (139 loc) 7.23 kB
import { BehaviorSubject, Observable, ReplaySubject, Subject } from 'rxjs'; import { FieldsGroup } from './models/fields-group'; import { HeaderState, HeaderStateInterface } from './header-state'; import { OnDestroy } from '@angular/core'; import { HeaderChange } from './models/user-changes/header-change'; import { PetriNetReference } from '../resources/interface/petri-net-reference'; import { HeaderType } from './models/header-type'; import { HeaderMode } from './models/header-mode'; import { HeaderColumn } from './models/header-column'; import { UserPreferenceService } from '../user/services/user-preference.service'; import { LoggerService } from '../logger/services/logger.service'; import { LoadingEmitter } from '../utility/loading-emitter'; import { SortDirection } from '@angular/material/sort'; import { ViewIdService } from '../user/services/view-id.service'; import { Net } from '../process/net'; import { OverflowService } from './services/overflow.service'; import * as i0 from "@angular/core"; export declare abstract class AbstractHeaderService implements OnDestroy { protected _headerType: HeaderType; protected _preferences: UserPreferenceService; protected _logger: LoggerService; private _viewIdService; protected _overflowService: OverflowService; static readonly DEFAULT_HEADER_COUNT = 5; static readonly DEFAULT_HEADER_RESPONSIVITY = true; protected _headerColumnCount$: BehaviorSubject<number>; protected _preferenceColumnCount$: ReplaySubject<number>; protected _responsiveHeaders$: BehaviorSubject<boolean>; protected _headerState: HeaderState; protected _headerChange$: Subject<HeaderChange>; protected _clearHeaderSearch$: Subject<number>; private _initDefaultHeaders; private _initializedCount; loading: LoadingEmitter; fieldsGroup: Array<FieldsGroup>; protected constructor(_headerType: HeaderType, _preferences: UserPreferenceService, _logger: LoggerService, _viewIdService: ViewIdService, _overflowService: OverflowService); /** * Provides Observable for all changes in header */ get headerChange$(): Observable<HeaderChange>; get selectedHeaders$(): Observable<Array<HeaderColumn>>; get headerState(): HeaderStateInterface; get headerType(): HeaderType; get overflowMode(): boolean; get headerColumnCount(): number; set headerColumnCount(maxColumns: number); get headerColumnCount$(): Observable<number>; get responsiveHeaders(): boolean; set responsiveHeaders(responsiveHeaders: boolean); get responsiveHeaders$(): Observable<boolean>; get clearHeaderSearch$(): Observable<number>; set initDefaultHeaders(defaultHeaders: Array<string>); get initDefaultHeaders(): Array<string>; get preferenceColumnCount$(): Observable<number>; private initializeHeaderState; protected initializeDefaultHeaderState(): void; /** * Adds `null` headers if the new count is greater than the current count. * * Removes extra headers if the new count is smaller than the current count. */ protected updateHeaderColumnCount(): void; setAllowedNets(allowedNets: Array<PetriNetReference>): void; setTaskAllowedNets(allowedNets: Array<Net>): void; /** * If this view has som headers stored in it's preferences attempts to load them. * If the preferences contain nonexistent headers they will be skipped. * * This function is NOT called by the abstract class' constructor. * It is the responsibility of the child class to call it at an appropriate moment. */ protected loadHeadersFromPreferences(): void; protected abstract createMetaHeaders(): Array<HeaderColumn>; /** * Change sort mode for selected column all other column are set to default sort mode * Emit request for sorted panels * @param columnIndex index of the column that caused the sort change * @param active Represents column identifier * @param direction Represent one of sort modes: asd, desc and '' */ sortHeaderChanged(columnIndex: number, active: string, direction: SortDirection): void; /** * Saves the search value in the appropriate column in the header * Emit request for searched panels by user input query */ headerSearchInputChanged(columnIndex: number, searchInput: any): void; /** * Change active header and titles of panels */ headerColumnSelected(columnIndex: number, newHeaderColumn: HeaderColumn): void; /** * Change selected header mode there are three possible modes: SORT, SEARCH and EDIT * @param newMode the mode that the header should change to * @param saveLastMode whether the last state should be remembered. * It can be restored with the [HeaderState.restoreLastMode()]{@link HeaderState#restoreLastMode} method. */ changeMode(newMode: HeaderMode, saveLastMode?: boolean): void; confirmEditMode(): void; /** * When user cancels the edit mode, the last saved headers state is loaded and emitted * Last mode in header is reloaded as well. Possible reloaded modes: sort or search */ revertEditMode(): void; ngOnDestroy(): void; /** * @param newMode the {@link HeaderMode} that is being selected as the next mode * @returnsa {@link HeaderChange} object with {@link ModeChangeDescription} object as it's `description`, * where the `previousMode` is set to the currently selected mode and the `currentMode` is set to the provided argument */ protected modeChangeFromCurrent(newMode: HeaderMode): HeaderChange; /** * @returns a {@link HeaderChange} object with {@link ModeChangeDescription} object as it's `description`, * where the `previousMode` is set to [EDIT]{@link HeaderMode#EDIT} and the `currentMode` to the mode * that is currently selected */ protected modeChangeAfterEdit(): HeaderChange; /** * @param oldMode the {@link HeaderMode} that was previously selected * @param newMode the {@link HeaderMode} that is selected now * @returns a {@link HeaderChange} object with {@link ModeChangeDescription} object as it's `description` * containing information about a change to the header mode */ protected createModeChange(oldMode: HeaderMode, newMode: HeaderMode): HeaderChange; /** * Emits a new value into the [clearHeaderSearch$]{@link AbstractHeaderService#clearHeaderSearch$} stream, that notifies * the header search component, that it should clear the input for the specified column. * @param columnIndex the index of the column that should be cleared */ clearHeaderSearch(columnIndex: number): void; /** * @returns the Id of the view, if the ViewIdService was injected. Returns `undefined` if the service was not injected. */ protected getViewId(): string | undefined; protected abstract saveState(): any; protected abstract saveNewState(): any; protected abstract restoreLastState(): any; static ɵfac: i0.ɵɵFactoryDeclaration<AbstractHeaderService, [null, null, null, { optional: true; }, { optional: true; }]>; static ɵprov: i0.ɵɵInjectableDeclaration<AbstractHeaderService>; }