Recherche:Les chemins du langage/Programme de listes de mots
À terme un formulaire Web pourrait permettre à chacun d'éditer son texte en ligne (ex : via CKEditor), avec deux fonctions JavaScript de calcul et suggestion d'homographe existant sur le Wiktionnaire.
Idéalement il faudrait pouvoir afficher et éditer les longues listes de mots de façon fluide, et y lancer des recherches de type mots-croisés (avec jokers...).
Modèle
[modifier | modifier le wikicode]En termes d'architecture de base de données Une approche par une entité "Mot" (sensible à la casse) dont on peut calculer des liens entre ses instances en forme normale de Boyce Codd, serait très consommatrice en calcul, même avec du cache.
Il conviendrait donc de persister une indexation des relations entre les mots dans une autre entité. Cette dernière sera plus générale que "figure de style", car elle devra englober les synonymes et antonymes, voire les dérivés et les étymons.
CREATE TABLE `word` (
`id` int(11) NOT NULL,
`language_id` int(11) NOT NULL,
`nature_id` int(11) NOT NULL,
`spelling` varchar(255) COLLATE utf8_bin NOT NULL,
`pronunciation` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`romanization` varchar(255) COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Les faux-amis pouvant être totaux ou partiel, les différents sens de chaque mot devront également être répertoriés.
Vue
[modifier | modifier le wikicode]Idéalement un tableau triable, filtrable et modifiable devrait permettre toutes les consultations possibles, ainsi que des mises à jours fréquentes des corpus, éventuellement en collecticiel.
Étant donnés les temps de chargement de milliers de mots, une pagination est envisagée.
Comparatif des tableurs en ligne
[modifier | modifier le wikicode]Différents outils d'édition de tableau en ligne existent[1][2], en voici un état de l'art réalisé en 2018 :
Bibliothèque | Tarif | Dépendances | Commentaire |
---|---|---|---|
ag-Grid[3] | Payant | ||
Backgrid.js[4] | Gratuit | Backbone.js | |
Bootstrap table[5] | Gratuit | jQuery, Bootstrap | Testée avec erreur sur jQuery 3.3.1 : le chargement des data en masse et les traductions en français ne fonctionnent pas. |
Clusterize.js[6] | Gratuit | Pas de filtre ou de tri. | |
Datatable avec Editor[7] | Payant avec éditeur | Tableau en lecture seule testé avec succès : on peut rechercher une partie de graphie, de prononciation ou une romanisation pour une langue et une nature donnée. Mais pas de wildcard. | |
Dynatable[8] | Payant | jQuery | Inactive depuis 2014. |
FancyGrid[9] | Payant | ||
Fixed Header Table[10] | Gratuit | Pas de filtre ou de tri. | |
FooTable[11] | Gratuit | jQuery | Testée. Parfois l'erreur sur jQuery 3.3.1 FooTable is not defined. |
Handsontable[12] | Payant | ||
jqgrid[13] | Payant | ||
jQuery HighchartTable[14] | Gratuit | Pas de filtre ou de tri. | |
jQuery KingTable[15] | Gratuit | Tableau en lecture seule. Exportation CSV, JSON et XML. | |
JQuery ReStable[16] | Gratuit | Pas de filtre ou de tri. | |
jsGrid[17] | Gratuit | Testée mais avec une injection de chaque ligne en JS (améliorable pour les gros volumes ?). | |
jTable[18] | Gratuit | jQuery | Testée avec erreur sur jQuery 3.3.1. |
ngTable[19] | Gratuit | AngularJS | |
React-Data-Grid[20] | Gratuit | React.js | Semblait actif il y a trois mois mais le site officiel est cassé. |
React Griddle[21] | Gratuit | React.js | Voir si ça fait aussi la version mobile avec React Native. |
Recline.js[22] | Gratuit | Semble inactive depuis un an. | |
SlickGrid[23] | Gratuit | Testée. Dépôt principal inactif depuis quatre ans, mais un fork semble correspond aux besoins : filtre, tri et fluidité garantie à 500 000 lignes (récupérées en JSON via une API). Toutefois, les largeurs des en-têtes ne correspondent pas toujours à ceux de leurs colonnes, et il est relativement complexe de cumuler plusieurs fonctionnalités. | |
Stackable.js[24] | Gratuit | Pas de filtre ou de tri. | |
Tabella.js[25] | Payant | ||
Tabulator[26] | Gratuit | Testée avec erreur sur jQuery 3.3.1 si "add row" + "t.widget is not a function" |
On trouve aussi un tableau en PHP pour Symfony avec Doctrine : EasyAdminBundle[27], qui permet des filtres moyennant une extension[28]. Et une alternative plus complexe : SonataAdminBundle[29].
Performances
[modifier | modifier le wikicode]Temps de chargement d'une page, dans une base de six millions de mots (en secondes).
Bibliothèque | wget | Firefox | Speed Index | Start Render | Time To Interactive |
---|---|---|---|---|---|
Datatables (avec server-side) | 0,142 | 123 | |||
Datatables bundle (Symfony) | pire | ||||
Easyadmin V2 | 8,413 | ||||
Easyadmin V4 | mieux | ||||
Footable | 0,189 | ||||
Sonata admin | 0,448 |
Conclusion, la solution retenue pour la V1 est Easyadmin V4 : https://words-list.com/easy_admin
Références
[modifier | modifier le wikicode]- ↑ https://www.sitepoint.com/12-amazing-jquery-tables/
- ↑ https://jspreadsheets.com/
- ↑ https://www.ag-grid.com/
- ↑ http://backgridjs.com/#basic-example
- ↑ http://bootstrap-table.wenzhixin.net.cn/documentation/
- ↑ https://clusterize.js.org/
- ↑ https://datatables.net/examples/plug-ins/range_filtering.html
- ↑ https://www.dynatable.com/
- ↑ https://fancygrid.com/
- ↑ http://www.fixedheadertable.com/
- ↑ https://fooplugins.github.io/FooTable/docs/getting-started.html
- ↑ https://handsontable.com/features
- ↑ http://www.guriddo.net/demo/guriddojs/
- ↑ http://highcharttable.org/
- ↑ https://robertoprevato.github.io/demos/jqkingtable/index.html
- ↑ https://codeb.it/restable/
- ↑ http://js-grid.com/
- ↑ http://www.jtable.org/Demo/PagingAndSorting
- ↑ http://ng-table.com/#/
- ↑ https://github.com/adazzle/react-data-grid
- ↑ https://griddlegriddle.github.io/Griddle/
- ↑ http://okfnlabs.org/recline/demos/
- ↑ http://6pac.github.io/SlickGrid/examples/example3-editing.html
- ↑ http://johnpolacek.github.io/stacktable.js/
- ↑ http://iliketomatoes.github.io/tabellajs/
- ↑ http://tabulator.info/
- ↑ https://symfony.com/doc/master/bundles/EasyAdminBundle/index.html
- ↑ https://packagist.org/packages/alterphp/easyadmin-extension-bundle
- ↑ https://symfony.com/doc/master/bundles/SonataAdminBundle/index.html