Revu de la création du HTML des données reçues, qui peuvent avoir des champs absents ou trop ou encore fournis dans un ordre variable.
This commit is contained in:
parent
c8086135fe
commit
be57ef6927
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "freedatas2html",
|
"name": "freedatas2html",
|
||||||
"version": "0.7.1",
|
"version": "0.7.2",
|
||||||
"description": "Visualization of data from various sources (CSV, API, HTML...) with filters, classification, pagination, etc.",
|
"description": "Visualization of data from various sources (CSV, API, HTML...) with filters, classification, pagination, etc.",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -19,7 +19,6 @@ module.exports =
|
|||||||
parserRemoteFail: "Erreur rencontrée durant l'accès aux données distantes.",
|
parserRemoteFail: "Erreur rencontrée durant l'accès aux données distantes.",
|
||||||
parserTypeError: "Une donnée a été trouvée avec un type imprévu : ",
|
parserTypeError: "Une donnée a été trouvée avec un type imprévu : ",
|
||||||
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.",
|
||||||
|
@ -36,7 +36,7 @@ export class Render implements DatasRenders
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
let datasHTML=this.settings.allBegining;
|
let datasHTML=this.settings.allBegining;
|
||||||
// On ne souhaite pas nécessairement afficher les noms des champs
|
// Les noms des champs ne sont pas forcément affichés séparément.
|
||||||
if(this.settings.fieldsBegining !== undefined && this.settings.fieldDisplaying !== undefined && this.settings.fieldsEnding !== undefined )
|
if(this.settings.fieldsBegining !== undefined && this.settings.fieldDisplaying !== undefined && this.settings.fieldsEnding !== undefined )
|
||||||
{
|
{
|
||||||
datasHTML+=this.settings.fieldsBegining;
|
datasHTML+=this.settings.fieldsBegining;
|
||||||
@ -45,18 +45,19 @@ export class Render implements DatasRenders
|
|||||||
datasHTML+=this.settings.fieldsEnding;
|
datasHTML+=this.settings.fieldsEnding;
|
||||||
}
|
}
|
||||||
datasHTML+=this.settings.linesBegining;
|
datasHTML+=this.settings.linesBegining;
|
||||||
|
|
||||||
for (let row in datas)
|
// Suivant les objets/lignes, les champs peuvent se trouver dans un ordre différent,
|
||||||
|
// ou encore des champs peuvent manquer ou être en trop.
|
||||||
|
// Seuls les champs de "fields" doivent être traités et en respectant l'ordre de ce tableau.
|
||||||
|
for (let row of datas)
|
||||||
{
|
{
|
||||||
datasHTML+=this.settings.lineBegining;
|
datasHTML+=this.settings.lineBegining;
|
||||||
for(let field in datas[row])
|
for(let field of this._converter.fields)
|
||||||
{
|
{
|
||||||
// On n'affiche que les champs attendus et signale les erreurs dans la console
|
if(row[field] !== undefined)
|
||||||
/// REVOIR : IL FAUT QUE L'ON SOIT DANS LA BONNE COLONNE !!!!
|
datasHTML+=this.settings.dataDisplaying.replace("#VALUE", row[field]).replace("#FIELDNAME", field);
|
||||||
if(this._converter.fields.indexOf(field) !== -1)
|
|
||||||
datasHTML+=this.settings.dataDisplaying.replace("#VALUE" , datas[row][field]).replace("#FIELDNAME" , field);
|
|
||||||
else
|
else
|
||||||
console.log(errors.renderUnknownField+field);
|
datasHTML+=this.settings.dataDisplaying.replace("#VALUE", "").replace("#FIELDNAME", field);
|
||||||
}
|
}
|
||||||
datasHTML+=this.settings.lineEnding;
|
datasHTML+=this.settings.lineEnding;
|
||||||
}
|
}
|
||||||
|
@ -12,16 +12,17 @@ describe("Test du moteur de rendu HTML.", () =>
|
|||||||
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:8080/datas/datas1.csv"});
|
converter=new FreeDatas2HTML("CSV","", { url:"http://localhost:8080/datas/datas1.csv"});
|
||||||
render=new Render(converter);
|
render=new Render(converter);
|
||||||
converter.fields=[ "Z", "Élément", "Symbole", "Famille" ] ;
|
converter.fields=[ "Z", "Élément", "Symbole", "Famille" ] ;
|
||||||
datas=[{"Z":"1","Élément":"Hydrogène","Symbole":"H","Famille":"Non-métal"},{"Z":"2","Élément":"Hélium","Symbole":"He","Famille":"Gaz noble"},{"Z":"3","Élément":"Lithium","Symbole":"Li","Famille":"Métal alcalin"},{"Z":"4","Élément":"Béryllium","Symbole":"Be","Famille":"","Champ ignoré":"Je me sens ignoré !"}] ;// Famille volontairement vide et champ à ignoré pour le dernier
|
// Les champs des différentes lignes ne sont pas forcément dans le même ordre, dans les champs peuvent être vide ou encore en trop...
|
||||||
|
datas=[{"Z":"1","Élément":"Hydrogène","Symbole":"H","Famille":"Non-métal"},{"Famille":"Gaz noble","Élément":"Hélium","Z":"2","Symbole":"He"},{"Champ ignoré":"Je me champ ignoré !", "Z":"3","Élément":"Lithium","Famille":"Métal alcalin","Symbole":"Li"},{"Z":"4","Élément":"Béryllium","Symbole":"Be","Famille":"","Champ ignoré":"Je me champ ignoré !"}] ;
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Doit générer une erreur, si lancé sans fournir une liste des champs de données.", () =>
|
it("Doit générer une erreur, si lancé sans fournir une liste des champs.", () =>
|
||||||
{
|
{
|
||||||
converter.fields=undefined;
|
converter.fields=undefined;
|
||||||
expect(() => { return render.rend2HTML(datas) }).toThrowError(errors.renderNeedDatas);
|
expect(() => { return render.rend2HTML(datas) }).toThrowError(errors.renderNeedDatas);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Ne doit pas générer d'erreur, si lancé avec une liste des champs de données, même s'il n'y a aucune donnée à afficher.", () =>
|
it("Ne doit pas générer d'erreur, si lancé avec une liste des champs, même s'il n'y a aucune donnée à afficher.", () =>
|
||||||
{
|
{
|
||||||
expect(() => { return render.rend2HTML([])}).not.toThrowError();
|
expect(() => { return render.rend2HTML([])}).not.toThrowError();
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user