@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
140 lines (139 loc) • 7.23 kB
TypeScript
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>;
}