FreeDatas2HTML/src/freeDatas2HTMLInterfaces.ts

105 lines
2.6 KiB
TypeScript

export interface Counter
{
displayElement?: DOMElement; // peut être undefined si on ne souhaite pas d'affichage automatique dans la page
value?: number; // undefined jusqu'à recevoir sa première valeur
}
export interface DatasRenders // interface à respecter par toute alternative à la classe Render par défaut
{
rend2HTML(datas: any[]): string;
}
export interface DatasRendersSettings // interface spécifique à la classe Render par défaut.
{
allBegining: string;
allEnding: string;
fieldsBegining?: string;
fieldsEnding?: string;
fieldDisplaying?: string;
linesBegining: string;
linesEnding: string;
lineBegining: string;
lineEnding: string;
dataDisplaying: string;
}
export interface DOMElement
{
id: string;
eltDOM?: HTMLElement;
}
export interface Paginations
{
options?: PaginationsOptions;
selectedValue?: number; // on peut utiliser une Pagination sans proposer d'options à l'utilisateur.
pages: PaginationsPages;
rend2HTML(): void;
creaPageSelector(nbTotal:number) : void;
}
export interface PaginationsOptions
{
displayElement: DOMElement;
name?: string;
values: number[];
};
export interface PaginationsPages
{
displayElement: DOMElement;
name: string;
values?: number[];
selectedValue?: number;
}
export interface Datas
{
[key: string]: string;
}
export interface ParseErrors
{
code?: string;
message: string;
row: number;
type?: string;
}
export interface ParseResults
{
datas: {[index: string]:string}[];
errors: ParseErrors[];
fields: string[];
}
export interface Parsers
{
datasRemoteSource: RemoteSource;
setRemoteSource(settings : RemoteSourceSettings): void;
datas2Parse?: string;
document2Parse?: HTMLDocument;
parseResults: ParseResults|undefined;
parse(): Promise<void>;
}
export interface RemoteSourceSettings
{
url: string;
headers?: { key:string, value:string }[];
withCredentials?: boolean;
}
export interface RemoteSource extends RemoteSourceSettings
{
getFetchSettings() : {};
}
export interface Selectors
{
datasViewElt: DOMElement;
datasFieldNb: number;
separator?: string|undefined;
name?: string;
values?: string[];
selector2HTML() : void;
dataIsOk(data: any) : boolean;
}
export interface SortingFields
{
datasFieldNb: number;
order?: "asc"|"desc"|undefined;
field2HTML() : void;
}
export interface SortingFunctions
{
datasFieldNb: number;
sort(a: any,b: any, order?: "asc"|"desc"): number; // cf. https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
}