Installation module natural-orderby pour améliorer le classement des données + adaptation du code.

This commit is contained in:
Fabrice PENHOËT 2021-09-01 17:54:34 +02:00
parent c80795cfec
commit 14608b8488
6 changed files with 18 additions and 12 deletions

View File

@ -18,11 +18,10 @@ De même l'idée est de rester libre du rendu des données en n'imposant pas de
La première version se contente de récupérer et parser des données présentes dans un fichier CSV via un appel Ajax.
Les données trouvées sont affichées dans un tableau. En option, des colonnes peuvent être indiquées par filtrer les données.
Pour parser les données CSV, [Papa Parse](https://www.papaparse.com/) est utilisé.
[Papa Parse](https://www.papaparse.com/) est utilisé pour parser les fichiers CSV et [natural-orderby](https://yobacca.github.io/natural-orderby/#/) pour obtenir des classements plus naturels.
Cette première version est fonctionnelle, même s'il reste à revoir le classement par ordre alphabétique des filtres pouvant poser un souci si des colonnes contiennent des nombres, des dates, etc.
Ensuite ajouter la possibilité de classement sur certaines colonnes et la pagination, le tout en options, le développeur final devant pouvoir adapter le module à son besoin. Et puis s'attaquer aux autres sources/formats possibles pour les données...
Il reste à ajouter la possibilité de classement sur certaines colonnes et la pagination, le tout en options, le développeur final devant pouvoir adapter le module à son besoin.
Et puis s'attaquer aux autres sources/formats possibles pour les données...
Bref, il reste beaucoup de choses à faire !

7
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "freedatas2html",
"version": "0.3.1",
"version": "0.3.3",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -4155,6 +4155,11 @@
"to-regex": "^3.0.1"
}
},
"natural-orderby": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/natural-orderby/-/natural-orderby-2.0.3.tgz",
"integrity": "sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q=="
},
"negotiator": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",

View File

@ -1,6 +1,6 @@
{
"name": "freedatas2html",
"version": "0.3.3",
"version": "0.3.4",
"description": "Visualization of data from various sources (CSV, API, HTML...) with filters, classification, pagination, etc.",
"main": "index.js",
"scripts": {
@ -39,6 +39,7 @@
"webpack-dev-server": "^3.11.2"
},
"dependencies": {
"natural-orderby": "^2.0.3",
"papaparse": "^5.3.1"
}
}

View File

@ -1,5 +1,6 @@
const Papa = require("papaparse");
const errors = require("./errors.js");
const { compare }= require('natural-orderby');
import { papaParseDatas, papaParseErrors, papaParseMeta } from "./papaParseInterfaces";
import { domElement, selectors } from "./freeDatas2HTMLInterfaces";
@ -155,7 +156,7 @@ export class freeDatas2HTML
}
if(values.length > 0)
{
values.sort();
values.sort(compare());
this._datasSelectors[i].name=colName;
this._datasSelectors[i].values=values;
selectorsHTML[i]="<label for='freeDatas2HTMLSelector"+i+"'>"+colName+" : </label><select name='freeDatas2HTMLSelector"+i+"' id='freeDatas2HTMLSelector"+i+"'><option value='0'>----</option>";

File diff suppressed because one or more lines are too long

View File

@ -237,7 +237,7 @@ describe("freeDatas2HTML", () =>
converter.datasSelectors=[{ datasFieldNb:5, id:"selector1", separator:"|"}];
await converter.run();
let selectElement=document.getElementById("freeDatas2HTMLSelector0") as HTMLInputElement;
selectElement.value="3"; // = "Exemple10" retournant une seule ligne
selectElement.value="11"; // = "Exemple10" retournant une seule ligne
selectElement.dispatchEvent(new Event('change'));
let txtDatasViewsElt=document.getElementById("datas").innerHTML;
expect(txtDatasViewsElt).toEqual(fixtures.datasHTMLForSelectTagsField);