diff --git a/public/documentation.html b/public/documentation.html new file mode 100644 index 0000000..691c438 --- /dev/null +++ b/public/documentation.html @@ -0,0 +1,167 @@ + + + + + + + + + + + Documentation de FreeDatas2HTML + + + + + + +
+

Documentation FreeDatas2HTML

+ +

Installation FreeDatas2HTML

+ +

Pour l’instant FreeDatas2HTML n’est pas disponible sur NPM.
+ Vous devez donc en récupérer une copie sur le dépôt GIT du projet.
+ Si vous travaillez en TypeScript, vous pouvez directement utiliser les fichiers présents dans le répertoire /src et ignorer le sous-répertoire /build.
+ Si vous travaillez en JavaScript, vous devez au contraire utiliser les scripts présents dans le répertoire /src/build.

+ +

Importation de la classe principale

+ +

Une fois les scripts présents dans le répertoire de votre projet, vous pouvez les importer comme n’importe quel module :
+ import { FreeDatas2HTML } from "./modules/FreeDatas2HTML";

+ +

À supposer que les scripts soient situés dans le sous-répertoire FreeDatas2HTML du répertoire modules de votre projet.

+ +

Suivant ce que vous souhaitez faire, vous aurez peut-être besoin d’importer d’autres classes, comme indiqué plus loin.

+ +

Instanciation de la classe principale

+ +

Ensuite, dans votre script, vous pouvez créer votre instance de manière classique :
+ const myConverter=new FreeDatas2HTML("CSV");

+ +

Type de données

+ +

Le premier argument du constructeur est obligatoire et vous permet d’indiquer le format des données à parser, avec trois options possibles : « CSV », « JSON », « HTML ».

+ +

Fournir directement les données à parser

+ +

Si vous avez déjà les données à parser sous la main, vous pouvez les fournir en deuxième argument du constructeur sous forme d’une chaîne de caractère :
+ const myConverter=new FreeDatas2HTML("JSON", `[{ "name": "Doe", "firstname" : "John" },{ "name": "Doe", "firstname" : "Janie" }]`);
+ Mais vous pouvez très bien fournir ou modifier cette information après l’instanciation :
+ myConverter.parser.datas2Parse=`[{ "name": "Doe", "firstname" : "John" },{ "name": "Doe", "firstname" : "Janie" }]`;

+ +

Importer les données à partir d’une source distante

+ +

Le dernier argument, vous permet de passer une instance de la classe RemoteSource qu’il vous faudra au préalable avoir importée et déclarée :
+ import { FreeDatas2HTML, RemoteSource } from "./modules/FreeDatas2HTML";
+ const mySource=new RemoteSource({ url:"https://www.example.com/datas.csv" });
+ const myConverter=new FreeDatas2HTML("CSV","", mySource);
+ En fait, il sera accepté une instance de n’importe quelle classe validant l’interface RemoteSources que vous pouvez retrouver déclarée dans le script interface.ts.

+ +

Vous pouvez fournir des entêtes pour l’appel à la source de données distantes :
+ mySource.headers=[ { key:"token", value:"1234" }, { key:"userName", value:"Toto" }];

+ +

Il vous est aussi possible de déclarer la propriété XMLHttpRequest.withCredentials :
+ source.withCredentials=true;
+
+ Mais vous pouvez aussi fournir la source de données distante après l’instanciation en utilisant le setter :
+ myConverter.parser.setRemoteSource({ url:"https://www.example.com/datas.csv" });
+ Dans ce cas l’importation préalable de la classe RemoteSource est inutile.
+ De nouveau, vous pouvez fournir des options :
+ myConverter.parser.setRemoteSource({ url:"https://www.example.com/datas.csv", headers:[{ key:"token", value:"1234" }], withCredentials:true });

+ +

Définir l’élément du DOM où seront afficher les données

+ +

Ceci est facultatif, car vous pouvez très bien simplement vouloir parser les données.
+ Mais si vous souhaitez que FreeDatas2HTML s’occupe d’afficher les données, vous pouvez indiquer l’id de l’élément de la page où les afficher :
+ myConverter.datasViewElt={ id:"myDatas" };
+ L’élément doit exister dans la page, sans quoi le setter générera une erreur.

+ +

Parser les données

+ +

Pour lancer le parsage, utilisez la méthode run() qui est asynchrone :
+ await myConverter.run();

+ +

En cas de succès du parsage, si l’id de l’élément du DOM devant recevoir les données est connu, elles seront automatiquement affichées dans la page.

+ +

Dans tous les cas, une fois le parsage finalisé avec succès, vous pouvez accéder aux noms de champs et aux données trouvées :
+ const fields=myConverter.fields; // format de sortie: string[], exemple: ["fistname", "name"]
+ const datas=myConverter.datas; // format de sortie : {[index: string]:string}[], exemple: [{firstname:"Janie", name:"Doe"}, {firstname:"John", name:"Doe"}];

+ Les formats de sortie sont les mêmes, quel que soit le format des données parsées.

+ +

Tolérance aux erreurs de parsage

+ +

Le parseur peut rencontrer certaines erreurs ne le bloquant pas, mais correspondant à des anomalies, par exemple, une colonne en trop dans des données CSV.
+ Si vous souhaitez bloquer la suite quand cela arrive, il vous faut l’indiquer avant de lancer le parsage :
+ myConverter.stopIfParseErrors=true;
+ Par défaut, les erreurs de parsage sont tolérées.

+ +

Adapter le rendu visuel des données

+ +

Par défaut toutes les données trouvées seront affichées sous forme de tableau sans classe CSS particulière :

+ +

<table>
+  <thead><tr><td>firstname</td><td>name</td></tr></thead>
+  <tbody>
+   <tr><td>Janie</td><td>Doe</td></tr>
+   <tr><td>John</td><td>Doe</td></tr>
+  </tbody>
+ </table>

+ +

Ne pas afficher tous les champs disponibles

+ +

Si vous ne souhaitez pas afficher tous les champs trouvés dans votre fichier, vous pouvez indiquer ceux à garder :
+ myConverter.fields2Rend=[0,2]; // n’affichera que le 1ᵉʳ et le troisième champ, la numérotation commençant à zéro.

+ +

Ce setter provoquera une erreur si vous fournissez un numéro de champ n’existant pas les données parsées.
+ Vous pouvez par contre le déclarer à tout moment, pour prise en compte dès le prochain affichage.

+ +

Pour de nouveau afficher tous les champs (situation par défaut), il suffit de passer un tableau vide :
+ myConverter.fields2Rend=[];

+ +

Adapter le code HTML généré pour l’affichage des données

+ +

Pour spécifier le code HTML à générer, vous devez créer une instance de la classe Render ou d’une autre classe validant l’interface DatasRenders déclarée dans le script interface.ts.
+ Dans le cas de la classe Render, il faut commencer par l’importer :
+ import { FreeDatas2HTML, Render } from "./modules/FreeDatas2HTML";

+ +

Puis l’instancier :
+ const myRender=new Render();
+ Et utiliser l’attribut settings pour décrire ce que vous souhaitez obtenir :
+ myRender.settings=
+ {
+     allBegining:"<h4>Moi je préfère les listes aux tableaux !</h4>",
+     allEnding:"Pas vous ?",
+     linesBegining:"<ul>",
+     linesEnding:"</ul>",
+     lineBegining:"<li><ul>",
+     lineEnding:"</ul></li>",
+     dataDisplaying:"<li><b>#FIELDNAME :</b> #VALUE</li>",
+ };

+ Dans ce cas la configuration par défaut est écrasée par la valeur de settings.
+ Consulter le type DatasRendersSettings pour voir tous les attributs disponibles.

+ +

Si vous souhaitez simplement modifier un des attributs, vous pouvez le faire ainsi :
+ myRender.settings.allBegining="<table class='myTable'>";
+ Ici le tableau sera le même que précédément, seule la balise <table> recevra une classe CSS ou ce que vous voulez…

+ +

Dans les deux cas, il faut ensuite attribuer votre Render à votre instance de FreeDatas2HTML :
+ myConverter.datasRender=myRender;

+ +

À SUIVRE – DOCUMENTATION EN COURS D’ÉCRITURE

+ +
+ + + + \ No newline at end of file diff --git a/public/examples.html b/public/examples.html index 5377820..3959e2d 100644 --- a/public/examples.html +++ b/public/examples.html @@ -19,6 +19,7 @@ diff --git a/public/index.html b/public/index.html index 082aac9..71a5aac 100644 --- a/public/index.html +++ b/public/index.html @@ -19,6 +19,7 @@ diff --git a/public/mentions-legales.html b/public/mentions-legales.html index 1aedbe8..07529f8 100755 --- a/public/mentions-legales.html +++ b/public/mentions-legales.html @@ -18,6 +18,7 @@ diff --git a/public/userFile.html b/public/userFile.html index 4208422..64912a6 100644 --- a/public/userFile.html +++ b/public/userFile.html @@ -19,6 +19,7 @@ diff --git a/public/withCSV.html b/public/withCSV.html index 5938c72..65844bd 100644 --- a/public/withCSV.html +++ b/public/withCSV.html @@ -19,6 +19,7 @@ diff --git a/public/withHTML.html b/public/withHTML.html index d9390c0..d89a203 100644 --- a/public/withHTML.html +++ b/public/withHTML.html @@ -20,6 +20,7 @@ diff --git a/public/withJSON.html b/public/withJSON.html index f35af3e..98f4a34 100644 --- a/public/withJSON.html +++ b/public/withJSON.html @@ -20,6 +20,7 @@ diff --git a/public/withMixedFields.html b/public/withMixedFields.html index 5bff31b..873b30a 100644 --- a/public/withMixedFields.html +++ b/public/withMixedFields.html @@ -20,6 +20,7 @@ diff --git a/public/withUL.html b/public/withUL.html index a4ece60..03ba7b5 100644 --- a/public/withUL.html +++ b/public/withUL.html @@ -20,6 +20,7 @@