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",
|
||||
"version": "0.7.1",
|
||||
"version": "0.7.2",
|
||||
"description": "Visualization of data from various sources (CSV, API, HTML...) with filters, classification, pagination, etc.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
|
@ -19,7 +19,6 @@ module.exports =
|
||||
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 : ",
|
||||
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.",
|
||||
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.",
|
||||
|
@ -36,7 +36,7 @@ export class Render implements DatasRenders
|
||||
else
|
||||
{
|
||||
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 )
|
||||
{
|
||||
datasHTML+=this.settings.fieldsBegining;
|
||||
@ -46,17 +46,18 @@ export class Render implements DatasRenders
|
||||
}
|
||||
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;
|
||||
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
|
||||
/// REVOIR : IL FAUT QUE L'ON SOIT DANS LA BONNE COLONNE !!!!
|
||||
if(this._converter.fields.indexOf(field) !== -1)
|
||||
datasHTML+=this.settings.dataDisplaying.replace("#VALUE" , datas[row][field]).replace("#FIELDNAME" , field);
|
||||
if(row[field] !== undefined)
|
||||
datasHTML+=this.settings.dataDisplaying.replace("#VALUE", row[field]).replace("#FIELDNAME", field);
|
||||
else
|
||||
console.log(errors.renderUnknownField+field);
|
||||
datasHTML+=this.settings.dataDisplaying.replace("#VALUE", "").replace("#FIELDNAME", field);
|
||||
}
|
||||
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"});
|
||||
render=new Render(converter);
|
||||
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;
|
||||
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();
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user