GithubHelp home page GithubHelp logo

datalocale / dataviz-finances-gironde Goto Github PK

View Code? Open in Web Editor NEW
11.0 11.0 19.0 36.74 MB

Home Page: https://www.gironde.fr/un-budget-au-service-des-solidarites-humaine-et-territoriale

License: MIT License

JavaScript 58.48% HTML 31.67% Nearley 0.33% SCSS 9.52%

dataviz-finances-gironde's People

Contributors

acidjames avatar akakeronos avatar clementinehahn avatar davidbruant avatar dudezertdamien avatar suzdata avatar vinber avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

dataviz-finances-gironde's Issues

Faire un outil de preprocessing pour bundler les données financières et textuelles

C'est un peu une méta-issue à découper si nécessaire le jour où les idées/usages sont plus claires.

Le besoin s'est fait sentir à l'occasion de https://github.com/dtc-innovation/dataviz-finances-gironde/pull/76
Dans cette PR, on fetch 6 csv côté client. Ces 6 csv ont chacun du markdown qui est transformé en HTML côté client. Donc on perd en perf de chargement parce :

  • 6 requêtes HTTP
  • on parse du csv (+ coût du code du parser)
  • on parse du markdown (+ coût du code du parser)
  • on modifie la structure de données (de 6 tableaux vers des map nestées). Ce point est mineur vu que la transformation est linéaire, mais existe.

On pourrait imaginer un outil qui prend les 6 csv, génère une seule structure de données avec les markdown déjà transformés en HTML.

Un autre sujet à discuter, c'est les calculs financiers faits côté client pour chaque utilisateur. On pourrait les faire dans une étape de build.

Permettre export CSV du tableau agrégé

Ajouter un bouton d'export, générer le CSV à la volée à partir des données (calculer et ajouter les totaux des catégories hierarchiques). Ne pas formatter les nombres (contrairement à l'affichage).

correction des formules agrégées

Dans l'outil de validation des données M52 et agrégées, la sélection d'un morceau sur n'importe lequel des 2 sunburst permet de voir dans le tableau situé en dessous et intitulé morceau de la M52 sélectionné les articles correspondant à cette sélection.
Il pourrait être utile d'avoir le même fonctionnement pour connaître les morceaux du tableau agrégé sélectionné par la sélection.
Actuellement sur firefox 51 rien ne se modifie à part le tableau Morceau de la M52 sélectionné.

Compatibilité navigateur

IE9 et Firefox 49 minimum

Pour le moment, nous utilisons assez violemment ES6. Ce n'est pas très grave, ça peut se compenser avec Babel.

Un site Jekyll + React

Pas sûr de la valeur à court terme de cette idée, mais cette issue est le résultat d'une réflexion de fond qui est applicable à ce projet.

Objectifs :

  • Un site avec des plein d'urls (historique navigateur, bookmarkabilité, moteurs de recherche)
  • Un SPA avec des composants
  • Temps de chargement initial rapide pour les pages de contenu
  • Facilité de contribution au site
  • Maintenabilité

Jekyll résout "Un site avec des plein d'urls" et "Facilité de contribution au site" et en partie "Temps de chargement initial rapide" (au sens où c'est très cache-able).
React résout "Un SPA avec des composants", mais on perd le temps de chargement rapide (3AR avant du contenu).

La combinaison naïve des deux aurait une seule page avec du React côté front-end. On perdrait au moins les URLs.
Pour avoir tous les points, on peut imaginer que l'on a des layout jekyll et qu'on génère (Server-Side Rendering) des morceaux de contenu avec React auquels on applique un layout Jekyll.

Le petit point de maintenabilité que l'on predrait serait de devoir maintenir/garder synchronisé le routing côté client et serveur.

Faire un premier jet de la page de dataviz publique

L'outil actuellement déployé est un outil métier qui a prouvé ne pas être une bonne base pour un dataviz publique. Il nous faut une autre page.

Definition of Done : une seconde page sur une autre URL montre le total des dépenses et recettes pour le CA 2015. Cette page contient un faux squelette qui ressemble au site de la gironde.

  • Créer un dossier/fichier
  • Hardcoder le squelette
  • Créer le boilerplate redux/react qui permet le rendu des recettes dépenses calculées à partir des vraies données.
  • Ajouter les tâches de build associées

Fichiers liste ordonnée des "codes" (données aggrégées ou M52)

Idée / Je ne sais pas si c'est le lieu mais cela m'oblique à l'écrire ? Et peut-être que c'est ce que vous avez prévu ?

Générer des fichiers avec la liste des codes M52, aggrégé, type markdown, pour que l'on puisse commencer à remplir des "zones" de texte, qui seront ensuite être "affiché" dans la viz ou dans un composant ?

Par exemple, on a par défaut dans le fichier des codes de la DFI :
le code, le titre métier, le titre public, l'explication, le contexte
Par défaut on a donc code et titre métier.
On peut commencer à surcharger avec des titres plus compréhensibles sur les thématiques demandées ?

Idem pour la M52
par défaut un fichier brut avec la nomenclature officielle mais avec des possibilités de rajouter des infos titre public, explication, le contexte

peut-être que c'est juste pour clarifier dans ma tête :) donc on peut effacer en suivant !

Utiliser du routing côté client

J'aime bien page.js.

URL Page
/ Home
/focus/:focus Focus pages
/finance-details/:contentId Pages de détails sur les éléments financiers
/strategie Page de stratégie budgétaire

Implémenter un mécanisme flexible de navigation arborescente

La navigation "validée" jusque-là ressemble à ça :

navigation -proposition

Il n'y a pas une arborescence triviale.
Les dépenses sont découpées selon le premier niveau des fonctions de la M52. Les recettes selon le découpage agrégé. Le social a pour l'instant un découpage, mais pourrait en avoir deux de l'aggrégé (par prestation/par public)... ou pas. On sait pas trop.

Dans tous les cas, il faudrait pouvoir exprimer le découpage de la navigation facilement. Pour le moment, on ne va décider d'un découpage par élément. Mais ce découpage sera "libre" au sens où il pourra piocher des éléments de la M52 ou de l'agrégée.
Il n'est pas clair comment on va s'assurer que les totaux font bien 100%. On se cognera au problème quand il arrivera.

Améliorer les viz

  • M52 : ajouter un sélecteur R/D + F/I
  • Agg : ajouter un sélecteur "vue par prestation"/"vue par public"
  • adoucir les couleurs

Problème avec watchify

Visiblement, watchify ne fonctionne pas. Il build une fois et trouve des erreurs ensuite (package dans node_modules qu'il ne trouve pas alors qu'il y sont). Peut-être une mauvaise interaction avec rollupify.

Le plus important de rollupify, c'est pouvoir utiliser la syntaxe des modules ES6. Si nous utilisons TypeScript ( comme pour #18 ), on peut se passer de rollupify.

Créer et documenter le système qui permet de contribuer du contenu textuel

Tout un tas de fichiers avec 2 colonnes :

  • identifiant
  • texte

Liste des fichiers :
Pour chaque identifiant de rubrique fonctionnelle M52 :

  • Un fichier qui associe une étiquette
  • Un fichier qui associe un texte d'explication atemporel
  • Un fichier par année qui associe un texte d'explication pour l'année concernée

Pour chaque identifiant de la vision agrégée :

  • Un fichier qui associe une étiquette
  • Un fichier qui associe un texte d'explication atemporel
  • Un fichier par année qui associe un texte d'explication pour l'année concernée

Soit au moins 4 fichiers + 2 fichiers pour 2015 (=6) à ce stade.

Les fichiers seront fournis en format .csv. Les textes peuvent être fournis sous format markdown. L'outil fera le rendu.

Améliorations analyse données

  • Ajouter les montants à côté des M52 qui ne sont dans aucun aggrégé
  • Ne pas mentionner les non-Ordre Réél dans les M52 manquants
  • Tableau avec bordure
  • Dans les lignes M52 qui apparaissent au moins 2 fois, ne pas compter celles qui apparaissent exactement 2 fois dans les DF entre "par prestation" et "par publique"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.