From 14608b8488a401277bba7bc953cac883c4422877 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabrice=20PENHO=C3=8BT?= Date: Wed, 1 Sep 2021 17:54:34 +0200 Subject: [PATCH] =?UTF-8?q?Installation=20module=20natural-orderby=20pour?= =?UTF-8?q?=20am=C3=A9liorer=20le=20classement=20des=20donn=C3=A9es=20+=20?= =?UTF-8?q?=20adaptation=20du=20code.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +++---- package-lock.json | 7 ++++++- package.json | 3 ++- src/freeDatas2HTML.ts | 3 ++- tests/fixtures.js | 8 ++++---- tests/freeDatas2HTMLSpec.ts | 2 +- 6 files changed, 18 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 056ee58..2ee2942 100644 --- a/README.md +++ b/README.md @@ -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 ! diff --git a/package-lock.json b/package-lock.json index f7f3bd9..2b02f44 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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", diff --git a/package.json b/package.json index a760e2b..432e5b3 100644 --- a/package.json +++ b/package.json @@ -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" } } diff --git a/src/freeDatas2HTML.ts b/src/freeDatas2HTML.ts index d972794..ced3a84 100644 --- a/src/freeDatas2HTML.ts +++ b/src/freeDatas2HTML.ts @@ -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]="', - selector2HTML: '', - selector1HTMLWithTags: '', - datasHTMLFor1Select: '
Z (numéro atomique)ÉlémentSymboleFamilleAbondance des éléments dans la croûte terrestre (μg/k)
109MeitnériumMtIndéfinieInexistant
110DarmstadtiumDsIndéfinieInexistant
111RoentgeniumRgIndéfinieInexistant
113NihoniumNhIndéfinieInexistant
114FléroviumFlIndéfinieInexistant
115MoscoviumMcIndéfinieInexistant
116LivermoriumLvIndéfinieInexistant
117TennesseTsIndéfinieInexistant
118OganessonOgIndéfinieInexistant
', + selector1HTML: '', + selector2HTML: '', + selector1HTMLWithTags: '', + datasHTMLFor1Select: '
Z (numéro atomique)ÉlémentSymboleFamilleAbondance des éléments dans la croûte terrestre (μg/k)
9FluorFHalogène> 100000
17ChloreClHalogène> 100000
35BromeBrHalogène> 1 et < 100 000
53IodeIHalogène> 1 et < 100 000
', datasHTMLFor2Select:'
Z (numéro atomique)ÉlémentSymboleFamilleAbondance des éléments dans la croûte terrestre (μg/k)
2HéliumHeGaz noble> 1 et < 100 000
10NéonNeGaz noble> 1 et < 100 000
18ArgonArGaz noble> 1 et < 100 000
', datasHTMLFor2SelectNone:'
Z (numéro atomique)ÉlémentSymboleFamilleAbondance des éléments dans la croûte terrestre (μg/k)
', datasHTMLForSelectTagsField:'
Z (numéro atomique)ÉlémentSymboleFamilleAbondance des éléments dans la croûte terrestre (μg/k)Étiquettes
118OganessonOgIndéfinieInexistantExemple10
', diff --git a/tests/freeDatas2HTMLSpec.ts b/tests/freeDatas2HTMLSpec.ts index 6a5ef57..9349736 100644 --- a/tests/freeDatas2HTMLSpec.ts +++ b/tests/freeDatas2HTMLSpec.ts @@ -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);