Compare commits

...

2 Commits

Author SHA1 Message Date
9526bf094f Relecture code. 2021-09-27 12:11:05 +02:00
a7dce830c8 Allégement contraintes interface du rendu HTML. 2021-09-27 12:10:22 +02:00
4 changed files with 21 additions and 11 deletions

View File

@ -12,7 +12,8 @@ module.exports =
parserDatasNotFound : "Aucune donnée n'a été trouvée.", parserDatasNotFound : "Aucune donnée n'a été trouvée.",
parserFail: "La lecture des données du fichier a échoué.", parserFail: "La lecture des données du fichier a échoué.",
parserNeedUrl: "Merci de fournir une url valide pour le fichier à parser.", parserNeedUrl: "Merci de fournir une url valide pour le fichier à parser.",
renderNeedDatas: "Il ne peut y avoir de pagination, si les données n'ont pas été récupérées.", renderNeedDatas: "Il ne peut y avoir de pagination, si les données n'ont pas été récupérées.",
renderUnknownField: "Un champ non attendu a été trouvé dans les données à afficher : ",
selector2HTMLFail: "Le création d'un filtre dans le DOM nécessite l'initialisation de l'élément HTML et du numéro du champs à filter.", selector2HTMLFail: "Le création d'un filtre dans le DOM nécessite l'initialisation de l'élément HTML et du numéro du champs à filter.",
selectorCheckIsOkFail: "Le test est lancé sur un filtre incorrectement initialisé ou sur un attribut absent de la donnée à tester.", selectorCheckIsOkFail: "Le test est lancé sur un filtre incorrectement initialisé ou sur un attribut absent de la donnée à tester.",
selectorFieldNotFound: "Au moins un des champs devant servir à filtrer les données n'existe pas dans le fichier.", selectorFieldNotFound: "Au moins un des champs devant servir à filtrer les données n'existe pas dans le fichier.",

View File

@ -24,10 +24,12 @@ const initialise = async () =>
converter.datasSourceUrl="http://localhost:8080/datas/elements-chimiques.csv"; converter.datasSourceUrl="http://localhost:8080/datas/elements-chimiques.csv";
await converter.parse(); await converter.parse();
converter.datasSortingFunctions=[{ datasFieldNb:4, sort:mySort }]; converter.datasSortingFunctions=[{ datasFieldNb:4, sort:mySort }];
// Adaptation du rendu // Adaptation du rendu suivant la taille de l'écran
const myRender=new Render(converter);
if(window.innerWidth < 800) if(window.innerWidth < 800)
{ {
converter.datasRender.settings={ myRender.settings=
{
allBegining:"<h4>Affichage petits écrans !</h4>", allBegining:"<h4>Affichage petits écrans !</h4>",
allEnding:"", allEnding:"",
linesBegining:"<ul>", linesBegining:"<ul>",
@ -36,9 +38,13 @@ const initialise = async () =>
lineEnding:"</ul></li>", lineEnding:"</ul></li>",
dataDisplaying:"<li><b>#FIELDNAME :</b> #VALUE</li>", dataDisplaying:"<li><b>#FIELDNAME :</b> #VALUE</li>",
}; };
converter.datasRender=myRender;
}
else
{
myRender.settings.allBegining="<table class='table-hover'>";
converter.datasRender=myRender;
} }
else
converter.datasRender.settings.allBegining="<table class='table-hover'>";
// Configuration de la pagination // Configuration de la pagination
const pagination=new Pagination(converter, { id:"pages" }, "Page à afficher :"); const pagination=new Pagination(converter, { id:"pages" }, "Page à afficher :");

View File

@ -3,12 +3,11 @@ export interface Counter
displayElement?: DOMElement; // peut être undefined si on ne souhaite pas d'affichage automatique dans la page 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 value?: number; // undefined jusqu'à recevoir sa première valeur
} }
export interface DatasRenders export interface DatasRenders // interface à respecter par toute alternative à la classe Render par défaut
{ {
rend2HTML(datas: any[]): string; rend2HTML(datas: any[]): string;
settings: DatasRendersSettings;
} }
export interface DatasRendersSettings export interface DatasRendersSettings // interface spécifique à la classe Render par défaut.
{ {
allBegining: string; allBegining: string;
allEnding: string; allEnding: string;

View File

@ -27,16 +27,17 @@ export class Render implements DatasRenders
this.settings=settings; this.settings=settings;
} }
// Reçoit les données à afficher et créer le HTML correspondant // Reçoit les données à afficher et retourne le HTML correspondant.
public rend2HTML(datas: any[]) : string public rend2HTML(datas: any[]) : string
{ {
// Il peut n'y avoir aucune donnée (filtres...), mais les noms des champs doivent être connus.
if(this._converter.parseMetas === undefined || this._converter.parseMetas.fields === undefined) if(this._converter.parseMetas === undefined || this._converter.parseMetas.fields === undefined)
throw new Error(errors.renderNeedDatas); throw new Error(errors.renderNeedDatas);
else else
{ {
let datasHTML=this.settings.allBegining; let datasHTML=this.settings.allBegining;
// On ne souhaite pas nécessairement afficher les noms de colonne // On ne souhaite pas nécessairement afficher les noms des champs
if(this.settings.fieldsBegining !== undefined && this.settings.fieldDisplaying !== undefined) if(this.settings.fieldsBegining !== undefined && this.settings.fieldDisplaying !== undefined && this.settings.fieldsEnding !== undefined )
{ {
datasHTML+=this.settings.fieldsBegining; datasHTML+=this.settings.fieldsBegining;
for (let i in this._converter.parseMetas!.fields) for (let i in this._converter.parseMetas!.fields)
@ -49,8 +50,11 @@ export class Render implements DatasRenders
datasHTML+=this.settings.lineBegining; datasHTML+=this.settings.lineBegining;
for(let field in datas[row]) for(let field in datas[row])
{ {
// On n'affiche que les champs attendus et signale les erreurs dans la console
if(this._converter.parseMetas.fields.indexOf(field) !== -1) if(this._converter.parseMetas.fields.indexOf(field) !== -1)
datasHTML+=this.settings.dataDisplaying.replace("#VALUE" , datas[row][field]).replace("#FIELDNAME" , field); datasHTML+=this.settings.dataDisplaying.replace("#VALUE" , datas[row][field]).replace("#FIELDNAME" , field);
else
console.log(errors.renderUnknownField+field);
} }
datasHTML+=this.settings.lineEnding; datasHTML+=this.settings.lineEnding;
} }