InseeFr / Bowie

Insee Survey design solution
https://inseefr.github.io/Bowie/
MIT License
7 stars 4 forks source link

Filter a list #52

Open romaintailhurat opened 1 year ago

romaintailhurat commented 1 year ago

Business case

🇬🇧 We want to be able to filter a list (simple choice, multiple choice and suggester components) using variables. Several use cases already exist:

🇫🇷 On veut pouvoir filtrer une liste (QCU, QCM et suggester) à partir de variables (collectées, calculées ou externes). Plusieurs cas d'usage connus:

Stakeholders

Stack

here describe the impact on the product softwares, linking to related issues

DDI

Could be through the CodeDomain element in the GridDimension:

<d:GridDimension displayCode="false" displayLabel="false" rank="1">
    <d:CodeDomain>
        <r:CodeListReference>
            <r:Agency>fr.insee</r:Agency>
            <r:ID>la9tdpdo</r:ID>
            <r:Version>1</r:Version>
            <r:TypeOfObject>CodeList</r:TypeOfObject>
        </r:CodeListReference>
        <r:CodeSubsetInformation>
            <r:IncludedCode>
                <r:Range>
                    <r:CollationAlgorithm>[VTL here ????]</r:CollationAlgorithm>
                </r:Range>
            </r:IncludedCode>
        </r:CodeSubsetInformation>
    </d:CodeDomain>
</d:GridDimension>

Pogues

link to project issues

Eno

link to project issues

Lunatic

Progress

describe progress

Release date

here we want to keep track of deadlines; and provide links to milestones

AnneHuSKa commented 1 year ago

https://github.com/InseeFr/Bowie/issues/21 : closed beacause the same as this one. This one in Bowie backlog because the issue 21 was.

laurentC35 commented 1 year ago

Cas du suggester plus complexe, à réfléchir en terme d'attendu

Pour les autres : conditionFilter sur les options

BulotF commented 7 months ago

Côté DDI, je suis d'accord que l'élément en charge d'indiquer la liste des codes autorisé pour une réponse est bien dans d:CodeDomain / r:CodeSubsetInformation / r:IncludedCode. Mais Range ne correspond pas au besoin : il permet de définir une plage de codes que l'on souhaite (avec MinimumValue et MaximumValue) ; CollationAlgorithm ne sert que pour l'ordre de tri de ces éléments. La seule alternative à Range, CodeReference n'est pas satisfaisante non plus, mais elle offre l'avantage de traiter les codes 1 à 1.

C'est sur CodeReference que je souhaiterais rajouter un UserAttributePair "CodeFilter" dont la valeur serait la formule de filtre (quand bien même ce n'est pas très propre) en attendant d'obtenir une évolution du standard DDI.

BulotF commented 1 month ago

Exemple de ce que ça pourrait donner avec ce que j'ai proposé en mars :

            <d:CodeDomain>
               <r:GenericOutputFormat controlledVocabularyID="INSEE-GOF-CV">radio-button</r:GenericOutputFormat>
               <r:CodeListReference>
                  <r:Agency>fr.insee</r:Agency>
                  <r:ID>j334iumu</r:ID>
                  <r:Version>1</r:Version>
                  <r:TypeOfObject>CodeList</r:TypeOfObject>
               </r:CodeListReference>
               <r:CodeSubsetInformation>
                  <r:IncludedCode>
                     <r:CodeReference>
                        <r:Agency>fr.insee</r:Agency>
                        <r:ID>j334iumu-1</r:ID>
                        <r:Version>1</r:Version>
                        <r:TypeOfObject>Code</r:TypeOfObject>
                        <r:UserAttributePair>
                           <r:AttributeKey>CodeFilter</r:AttributeKey>
                           <r:AttributeValue>TOTO != 1</r:AttributeValue>
                        </r:UserAttributePair>
                     </r:CodeReference>
                     <r:CodeReference>
                        <r:Agency>fr.insee</r:Agency>
                        <r:ID>j334iumu-2</r:ID>
                        <r:Version>1</r:Version>
                        <r:TypeOfObject>Code</r:TypeOfObject>
                     </r:CodeReference>
                     <r:CodeReference>
                        <r:Agency>fr.insee</r:Agency>
                        <r:ID>j334iumu-3</r:ID>
                        <r:Version>1</r:Version>
                        <r:TypeOfObject>Code</r:TypeOfObject>
                        <r:UserAttributePair>
                           <r:AttributeKey>CodeFilter</r:AttributeKey>
                           <r:AttributeValue>TOTO != 3</r:AttributeValue>
                        </r:UserAttributePair>
                     </r:CodeReference>
                  </r:IncludedCode>
               </r:CodeSubsetInformation>
               <r:OutParameter isArray="false">
                  <r:Agency>fr.insee</r:Agency>
                  <r:ID>j3343clt-RDOP-jbgdjdkn</r:ID>
                  <r:Version>1</r:Version>
                  <r:CodeRepresentation>
                     <r:CodeListReference>
                        <r:Agency>fr.insee</r:Agency>
                        <r:ID>j334iumu</r:ID>
                        <r:Version>1</r:Version>
                        <r:TypeOfObject>CodeList</r:TypeOfObject>
                     </r:CodeListReference>
                  </r:CodeRepresentation>
               </r:OutParameter>
               <r:ResponseCardinality minimumResponses="1" maximumResponses="1"/>
            </d:CodeDomain>