Project

General

Profile

Développement #73174

statistiques, permettre de sélectionner plusieurs formulaires

Added by Valentin Deniaud almost 2 years ago. Updated almost 2 years ago.

Status:
Fermé
Priority:
Normal
Target version:
-
Start date:
09 January 2023
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:
No

Description

C'est le dernier gros truc qui empêche de déprécier bijoe.

Associated revisions

Revision d0a2e4c2 (diff)
Added by Valentin Deniaud almost 2 years ago

statistics: drop legacy category filter support (#73174)

Revision 02433859 (diff)
Added by Valentin Deniaud almost 2 years ago

statistics: allow filtering by multiple formdefs (#73174)

History

#1

Updated by Valentin Deniaud almost 2 years ago

Obstacle ici, on s'appuie sur la méthode get_period_query https://gitea.entrouvert.org/entrouvert/wcs/src/branch/main/wcs/sql.py#L4641.

Or elle est limitée à un seul formulaire (ou tous) par la ligne suivante :

            if criteria.__class__.__name__ == 'Equal' and criteria.attribute == 'formdef_id':
                # if there's a formdef_id specified, switch to using the
                # specific table so we have access to all fields
                table_name = get_formdef_table_name(formdef_class.get(criteria.value))

Il faudrait réussir à lever cette limite. Le cas d'usage est, par exemple :
  • Formulaire A avec un champ booléen d'identifiant technique '1' et d'identifiant textuel 'bool'
  • Formulaire B avec un champ booléen d'identifiant technique '2' et d'identifiant textuel 'bool'
  • Compter les demandes de A et de B où le champ 'bool' vaut true en une requête

(si on se limite à A (situtation actuelle), ça donne une requête du type select count(*) from formdata_42_a where f1 = true (et formdata_43_b/f2 pour B))

Je veux bien l'avis de quelqu'un à l'aise avec le stockage des données dans wcs sur la question et éventuellement des pistes pour avancer.

#2

Updated by Frédéric Péters almost 2 years ago

On n'a pas de quoi faire une récupération d'info sur des champs via une requête unique.

Le bout de piste que j'ai imaginé à un moment ce serait l'ajout d'une colonne jsonb dans laquelle les données marquées "afficher dans les stats" seraient dupliquées, avec en clés les varnames; cette colonne jsonb serait alors reprise dans la table globale wcs_all_forms.

#3

Updated by Valentin Deniaud almost 2 years ago

Frédéric Péters a écrit :

Le bout de piste que j'ai imaginé à un moment ce serait l'ajout d'une colonne jsonb dans laquelle les données marquées "afficher dans les stats" seraient dupliquées, avec en clés les varnames; cette colonne jsonb serait alors reprise dans la table globale wcs_all_forms.

Je me lance là dedans ou cette piste est à mûrir davantage ? -> gros morceau traité dans #73770

#4

Updated by Valentin Deniaud almost 2 years ago

  • Assignee set to Valentin Deniaud
#5

Updated by Valentin Deniaud almost 2 years ago

Éléments de plan, lors d'une stat portant sur plusieurs formulaires :
  • Les sous-filtres à afficher doivent être seulement les champs communs aux formulaires.
    • C'est plus simple techniquement mais la raison n'est pas technique : soit F1 et F2 des formulaires avec un champ A en commun. Si on va cocher « Statistiques » dans les options d'affichage de A sur F1, et que ça le fait apparaître dans les statistiques, alors elles apparaîtront « fausses » car il n'y aura pas les données de A pour F2. Donc ne pas afficher A à ce stade empêche les erreurs de configuration.
  • En revanche les options pour chaque sous-filtres peuvent être agrégées sans risque.
    • C'est à dire que si un champ liste a pour options ['Paris', 'Marseille'] sur F1 et ['Toulouse', 'Paris'] sur F2, on doit permettre de filtrer sur toutes les villes et pas juste 'Paris'.
#6

Updated by Robot Gitea almost 2 years ago

  • Status changed from Nouveau to Solution proposée

Valentin Deniaud (vdeniaud) a ouvert une pull request sur Gitea concernant cette demande :

#7

Updated by Robot Gitea almost 2 years ago

  • Status changed from Solution proposée to En cours

Frédéric Péters (fpeters) a relu et demandé des modifications sur une pull request sur Gitea concernant cette demande :

#8

Updated by Valentin Deniaud almost 2 years ago

  • Status changed from En cours to Solution proposée
#9

Updated by Robot Gitea almost 2 years ago

  • Status changed from Solution proposée to Solution validée

Frédéric Péters (fpeters) a approuvé une pull request sur Gitea concernant cette demande :

#10

Updated by Robot Gitea almost 2 years ago

  • Status changed from Solution validée to Résolu (à déployer)

Frédéric Péters (fpeters) a mergé une pull request sur Gitea concernant cette demande :

#11

Updated by Transition automatique almost 2 years ago

  • Status changed from Résolu (à déployer) to Solution déployée
#12

Updated by Transition automatique over 1 year ago

Automatic expiration

Also available in: Atom PDF