import { BehaviorSubject, Observable, Subject } from "rxjs"; import { OPERATORI } from "./services/enums/operatori-filtri.enums"; import { FiltriParser } from "./services/parser/filtri-parser"; export interface Filtro { nomeCampo: string | string[]; valore: any; operatoreId: number; label: string; labelOperatore?: string; isAttivo: boolean; type?: string; visibile?: boolean; deletable?: boolean; isPredefinito?: boolean; idConfig?: number; labelExport?: string; extra?: any; idFiltro?: string; configFiltro?: ConfigFiltro; formValue?: any; } export interface FiltroDefault { valore: any; operatoreId: number; formValue?: any; } export interface ConfigFiltro { id?: number; nomeCampo: string; label: string; tipoInput: "text" | "number" | "ng2-select" | "ng2-select-multi" | "date" | "selezione-singola" | "selezione-multipla" | "datetime" | "switch"; controlType: "textbox" | "ng2-select" | "ng2-select-multi" | "date" | "selezione-singola" | "selezione-multipla" | "datetime" | "switch"; operatori: OPERATORI[]; operatoreConcatenazione?: 'or' | 'and'; options?: { id: string; text: string; }[]; pattern?: string; model?: any; maxlength?: number; minlength?: number; type?: string; visible?: boolean; deletable?: boolean; userSettable?: boolean; mapTo?: any; mapOperatore?: any; closeOnSelect?: boolean; default?: FiltroDefault[]; suggerimenti?: { id: any; text: string; value: any; }[]; } export interface ElencoFiltriCRUD { configFiltri: ConfigFiltro[]; listaConfigFiltriSub: BehaviorSubject; filtri: Filtro[]; listaFiltriSub: Subject; parseFiltri: FiltriParser; /** * utilizzato da crud-serverside.ts * @returns */ getListaFiltriAsObservable(): Observable; /** * utilizzato da crud-serverside.ts * @param filtroInput */ aggiungiFiltro(filtroInput: Filtro): void; /** * utilizzato da crud-serverside.ts * @param filtriInput * @param updateSubscribed */ setFiltri(filtriInput: Filtro[], updateSubscribed: boolean): void; /** * utilizzato da crud-serverside.ts * @param filtriConfigInput */ setConfigFiltri(filtriConfigInput: ConfigFiltro[]): void; /** * utilizzato da crud-serverside.ts * @param indice * @param filtro */ setFiltrobyIndice(indice: number, filtro: Filtro): void; /** * usato da lista-filtri-compilabili * @param id * @param value */ setValoreFiltrobyId(id: string, value: any): void; /** * usato da lista-filtri-compilabili * @param id * @param attivo * @param valore */ cambiaStatoFiltrobyId(id: string, attivo: boolean, valore: any): void; aggiornaListaFiltri(updateSubscribed: boolean): void; /** * chiamato da setConfigFiltri */ aggiornaListaConfigFiltri(): void; /** * */ aggiornaConfigObjInFiltri(): void; /** * */ setFiltriFromConfig(): void; /** * * @param config * @param operatore * @param valore * @returns */ ottieniFiltroDaOpEConfig(config: ConfigFiltro, operatore: number, valore: any): Filtro; /** * */ setFiltriFromConfig(): void; /** * * @param config * @param operatore * @param valore * @returns */ ottieniFiltroDaOpEConfig(config: ConfigFiltro, operatore: number, valore: any): Filtro; /** * agisce sulla sub e effettua il calcolo */ getNFiltriAttivi(): number; /** * usato da crud-serverside.ts * Ritorna array di indici che rispecchiano la query * @param nomeCampo * @param valore */ hasFiltro(nomeCampo: any, valore: any): number[]; /** * utilizzato da crud-serverside.ts * @param indice */ rimuoviFiltrobyIndice(indice: number): void; /** * utilizzato da crud-serverside.ts * @param indice * @returns */ getFiltro(indice: any): Filtro; }