Ajout possibilité de tout stopper à la moindre erreur rencontrée par le parseur + suppression des noms de colonne vide pouvant être reçus.
This commit is contained in:
parent
78d5279eed
commit
4d4360e709
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "freecsv2html",
|
||||
"version": "0.2.0",
|
||||
"version": "0.3.1",
|
||||
"description": "Conversion of a csv file into an HTML code with selection lists, data sorting, etc.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
|
@ -25,6 +25,7 @@ export class freeCSV2HTML
|
||||
public parseDatas: papaParseDatas[] = [];
|
||||
public parseErrors: papaParseErrors[] = [];
|
||||
public datasHTML: string = "";
|
||||
public stopIfParseErrors : boolean = false;
|
||||
|
||||
set datasViewElt(elt: domElement)
|
||||
{
|
||||
@ -83,9 +84,17 @@ export class freeCSV2HTML
|
||||
header: true,
|
||||
complete: function(results :any)
|
||||
{
|
||||
converter.parseMeta=results.meta;
|
||||
converter.parseErrors=results.errors;
|
||||
converter.parseDatas=results.data;
|
||||
// Attention, papaParse peut accepter un nom de colonne vide
|
||||
let realFields: string[]=[];
|
||||
for(let i in results.meta.fields)
|
||||
{
|
||||
if(results.meta.fields[i].trim() !== "")
|
||||
realFields.push(results.meta.fields[i]);
|
||||
}
|
||||
results.meta.fields=realFields;
|
||||
converter.parseMeta=results.meta;
|
||||
resolve(true);
|
||||
},
|
||||
error:function(error :any)
|
||||
@ -110,13 +119,15 @@ export class freeCSV2HTML
|
||||
|
||||
await this.parse();
|
||||
|
||||
if(this.parseDatas.length === 0 || this.parseMeta!.fields === undefined)
|
||||
if(this.parseDatas.length === 0 || this.parseMeta!.fields === undefined) // je force avec "!", car l'existence de parseMeta certaine après parse().
|
||||
throw new Error(errors.datasNotFound);
|
||||
else if(this.stopIfParseErrors && this.parseErrors.length!==0)
|
||||
console.error(this.parseErrors);
|
||||
else
|
||||
{
|
||||
let converter=this;
|
||||
// Affichage initial des données du fichier
|
||||
this.datasHTML=this.createDatasHTML(this.parseMeta!.fields, this.parseDatas); // je force avec "!", car l'existence de parseMeta certaine après parse().
|
||||
this.datasHTML=this.createDatasHTML(this.parseMeta!.fields, this.parseDatas);
|
||||
this._datasViewElt.eltDOM.innerHTML=this.datasHTML;
|
||||
|
||||
// Si demandé, création des listes permettant de filter les données
|
||||
|
14
tests/datas/datas-errors2.csv
Normal file
14
tests/datas/datas-errors2.csv
Normal file
@ -0,0 +1,14 @@
|
||||
Z (numéro atomique),Élément,Symbole,Famille,Abondance,,
|
||||
1,Hydrogène,H,Non-métal,1400000,dze,
|
||||
2,Hélium,He,Gaz noble,8,,
|
||||
3,Lithium,Li,Métal alcalin,20000,,
|
||||
4,Béryllium,Be,Métal alcalino-terreux,2800,,
|
||||
5,Bore,B,Métalloïde,10000,dd,dd
|
||||
6,Carbone,C,Non-métal,200000,,
|
||||
7,Azote,N,Non-métal,19000,,
|
||||
8,Oxygène,O,Non-métal,461000000,,
|
||||
9,Fluor,F,Halogène,585000,,
|
||||
10,Néon,Ne,Gaz noble,5,,
|
||||
11,Sodium,Na,Métal alcalin,23600000,,
|
||||
12,Magnésium,Mg,Métal alcalino-terreux,23300000,,
|
||||
13,Aluminium,Al,Métal pauvre,82300000,,
|
|
@ -80,6 +80,14 @@ describe("freeCSV2HTML", () =>
|
||||
expect(converter.parseErrors.length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
it("Ne doit garder que les noms de colonne non vides.", async () =>
|
||||
{
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas-errors2.csv";
|
||||
await converter.parse();
|
||||
expect(converter.parseMeta.fields.length).toEqual(5);
|
||||
});
|
||||
|
||||
it("Ne doit enregistrer aucune erreur de lecture si le fichier est ok.", async () =>
|
||||
{
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
@ -110,6 +118,25 @@ describe("freeCSV2HTML", () =>
|
||||
let txtDatasViewsElt=document.getElementById("datas").innerHTML;
|
||||
expect(txtDatasViewsElt).toEqual("");
|
||||
});
|
||||
|
||||
it("Si la moindre erreur est rencontrée durant la parsage et que cela est demandé, ne rien afficher dans l'emplacement prévu pour les données.", async () =>
|
||||
{
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas-errors1.csv";
|
||||
converter.stopIfParseErrors=true;
|
||||
await converter.run();
|
||||
let txtDatasViewsElt=document.getElementById("datas").innerHTML;
|
||||
expect(txtDatasViewsElt).toEqual("");
|
||||
});
|
||||
|
||||
it("Sauf si cela est demandé, même si des erreurs sont rencontrées durant la parsage, les données trouvées dans le fichier seront affichées.", async () =>
|
||||
{
|
||||
converter.datasViewElt={ id:"datas" };
|
||||
converter.datasSourceUrl="http://localhost:9876/datas/datas-errors1.csv";
|
||||
await converter.run();
|
||||
let txtDatasViewsElt=document.getElementById("datas").innerHTML;
|
||||
expect(txtDatasViewsElt).not.toEqual("");
|
||||
});
|
||||
|
||||
it("Doit afficher un tableau correspondant aux données du fichier csv", async () =>
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user