# Base de données des calculatrices CASIO Ce dépôt contient des images, métadonnées et propriétés sur les calculatrices graphiques et formelles CASIO modernes (la plupart des modèles après 2000). Ces informations sont utilisées par l'index des calculatrices sur Planète Casio. ## Format Chaque calculatrice est décrite par un fichier YAML dans le dossier `calculators`. Les propriétés sont classées en catégories avec différents champs dans chaque catégorie. Les champs peuvent être de types différents et les valeurs autorisées sont au cas-par-cas, mais souvent on rencontre: * Du texte brut : `full_name: "Graph 90+E"` * Des booléens : `touch_screen: no` * Des entiers: `default_cpu_frequency: 56000000 # Hz` * Des énumérations : `audience: audience.high_school` Les énumérations commençent toujours par le nom du champ. Beaucoup de champs qui acceptent des énumérations acceptent aussi des booléens. Certains champs acceptent des listes. Le fichier `model.yaml` décrit le modèle des données : il liste toutes les catégories, tous les champs, et toutes les calculatrices ; il donnes les unités pour les champs numériques concernés ; et il attribute des scores aux valeurs des champs pour permettre de faire des comparatifs. Les valeurs peuvent contenir du Markdown ainsi que que des marqueurs de la forme `@lang{...}` pour insérer du texte qui n'est visible que quand les données sont affichées dans une certaine langue. Les fichiers `lang/*.yaml` traduisent les noms des catégories, des champs, et les valeurs énumérées, et `@lang{...}` n'est utilisé que pour les quelques passages de texte qui n'y sont pas listés. ## Outils et utilisation On peut soit utiliser la base directement en YAML, soit utiliser le module Python `calcdb` dans le dossier `tools`. On peut aussi utiliser la version JSON générée avec `tools/convert-json.py` si c'est plus pratique. Trois outils sont fournis dans `tools` : * La bibliothèque `calcdb.py` fournit de quoi manipuler la base en Python. La classe principale est `CalcDB`, qui charge les fichiers YAML depuis la racine de ce dépôt. Une class `Lang` représente les différents langages, et présente quelques méthodes pour simplifier la traduction. Enfin, une fonction `render()` implémente toutes les règles d'affichage pour fournir le texte à afficher pour chaque valeur dans un tableau. * Le script `convert-json.py` permet de convertir la base en JSON. Utilisez `make json` ou `make json-min` et récupérez le fichier de sortie dans `out`. * Le script `render-html.py` génère un tableau HTML avec les informations. Ce tableau contient des attributs CSS et HTML permettant de le manipuler en Javascript, et est notamment utilisé sur l'index des calculatrices de Planète Casio. Utilisez `make html-fr` ou `make html-en` pour générer une page web autonome pour consulter le tableau, ou `make index-fr` ou `make index-en` pour générer la version utilisée sur Planète Casio. ## Résumé des dossiers * `calculators`: Fichiers YAML avec les propriétés de tous les modèles. * `lang`: Traduction des noms de catégories, champs, et valeurs énumérées. * `model.yaml`: Liste de catégories, champs, calculatrices, et scores pour toutes les valeurs énumérées comparables. * `images`: Petites et grandes photos de tous les modèles, en JPG. Les grandes photos sont généralements limitées à 1000 pixels de haut ; les petites sont toutes fixées à 150 pixels de haut. Le dossier `small` a une image supplémentaire `g35+.jpg` avec les deux générations de Graph 35+ côte-à-côte. * `tools`: Scripts Python pour manipuler la base de données, et un module Python `calcdb` réutilisable pour extraire efficacement des informations. Ces dossiers ne sont pas indexés par le dépôt : * `out`: Dossier de sortie pour tous les fichiers générés par les scripts. ## TODO * Ajouter des liens vers les émulateurs. * Télécharger les manuels et les héberger sur Planète Casio. * Télécharger tous les OS updaters, les héberger sur Planète Casio, et les ajouter à la base de données. * Compléter les icônes pixel art.