Skip to main content
Solved

Dynamic Year Parameter for Dataset Context in ODS Widgets

  • May 14, 2024
  • 2 replies
  • 102 views
  • Translate

Hello Opendatasoft Community,

I hope this message finds you well.

I am currently working on a project where we utilize the ODS Widgets to display various datasets. Our application is designed to pull data from multiple sources, and currently, we hardcode the year values for dataset parameters. Here is a snippet of our configuration:

 

<!-- Conteneur principal de l'application AngularJS utilisant la librairie ODS Widgets -->
<div ng-app="ods-widgets">
    <!-- DĂ©finition des sources de donnĂ©es et des paramètres pour les requĂŞtes -->
    <ods-dataset-context domain="opendata.fr.ch"
                         context="population, 
                                  populationlatest,
                                  emplois,
                                  emploislatest,
                                  logements,
                                  logementslatest,
                                  vacantslatest,
                                  education,
                                  educationlatest,
                                  educationecolelatest,
                                  ctxdistricts, 
                                  ctxcommunes"
                         population-dataset="01_02_age_5_sex_natio"
                         populationlatest-dataset="01_02_age_5_sex_natio"
                         emplois-dataset="06_02_etablissements_emplois_branches"
                         emploislatest-dataset="06_02_etablissements_emplois_branches"                         
                         logements-dataset="09_03_parc_log_selon_categorie_batiment_et_nbre_pieces_des_2010"
                         logementslatest-dataset="09_03_parc_log_selon_categorie_batiment_et_nbre_pieces_des_2010"
                         vacantslatest-dataset="09_03_log_vacants_1_categorie_batiment_des_1995"
                         education-dataset="15_02_eleves_lieu_domicile"
                         educationlatest-dataset="15_02_eleves_lieu_domicile"
                         educationecolelatest-dataset="15_02_eleves_lieu_ecole"

                         populationlatest-parameters="{'refine.annee':'2022'}"
                         emploislatest-parameters="{'refine.annee':'2021'}"
                         logementslatest-parameters="{'refine.annee':'2022'}"
                         vacantslatest-parameters="{'refine.statyear_taux_log_vacant':'2023'}"
                         educationlatest-parameters="{'refine.annee':'2021'}"
                         educationecolelatest-parameters="{'refine.annee':'2021'}"

                         ctxdistricts-dataset="01_02_age_5_sex_natio"
                         ctxcommunes-dataset="01_02_age_5_sex_natio"

                         ng-init="values = {};
                                  selected = {}">
</div>
 

We would like to know if it is possible to dynamically refine our data by using a variable, such as the maximum year available in the dataset, instead of setting a hardcoded value. For example, instead of setting educationecolelatest-parameters="{'refine.annee':'2021'}", we would like to use something like educationecolelatest-parameters="{'refine.annee': max(annee)}" so that our dashboards automatically adapt to the latest year available in the data.

This feature would greatly enhance the flexibility and maintenance of our dashboards, allowing them to remain up-to-date without manual intervention each year.

Is there a way to achieve this within the current capabilities of the ODS Widgets? If not, are there any planned updates or workarounds that you could suggest?

Thank you in advance for your assistance and guidance!

Best regards,

Auto-translation 🪄

Bonjour la communautĂ© Opendatasoft, J'espère que ce message vous trouvera bien. Je travaille actuellement sur un projet dans lequel nous utilisons les widgets ODS pour afficher divers ensembles de donnĂ©es. Notre application est conçue pour extraire des donnĂ©es de plusieurs sources, et actuellement, nous codons en dur les valeurs de l'annĂ©e pour les paramètres de l'ensemble de donnĂ©es. Voici un extrait de notre configuration : 
       

Best answer by Maria Söderlind

Hi,

We have done something similar on a dashboard.

This is the dashboard: https://opendata.umea.se/pages/maltidsservicestatistik/ (you can switch to English in the top right corner)

This is the data set used: https://opendata.umea.se/explore/dataset/sammanstallning-maltidsservice/table/?disjunctive.omrade&disjunctive.enhet&disjunctive.typ_av_kok&disjunctive.verksamhet

 

To get current year, and previous year we used the following code:

 

<ods-dataset-context context="currentyear,previousyear, alltheyears"

                             currentyear-dataset="sammanstallning-maltidsservice"

                             currentyear-parameters="{'disjunctive.omrade':true,'disjunctive.typ_av_kok':true,'disjunctive.verksamhet':true,'sort':'period'}"

                             previousyear-dataset="sammanstallning-maltidsservice"

                             previousyear-parameters="{'sort':'period','disjunctive.omrade':true,'disjunctive.typ_av_kok':true,'disjunctive.verksamhet':true}"

                             alltheyears-dataset="sammanstallning-maltidsservice"

                             alltheyears-parameters="{'sort':'period','disjunctive.omrade':true,'disjunctive.typ_av_kok':true,'disjunctive.verksamhet':true}">    

 

 

                <div ods-analysis="everyyear"

                     ods-analysis-context="alltheyears"

                     ods-analysis-x="ar"

                     ods-analysis-serie-total="AVG(ekologisk)"

                     ods-analysis-sort="-x">               

 

                    <!--******      Filter on current year         ****-->

                    {{ currentyear.parameters['refine.period'] = everyyear.results[0].x.year  ; "" }}            

 

                    <!--******      Filter on previous year         ****-->                  

                    {{ previousyear.parameters['refine.period'] = everyyear.results[1].x.year  ; "" }}    

 

I’m not sure this is the best/smartest way to do it, but it is one way to do it đź™‚

Auto-translation 🪄

Bonjour, Nous avons fait quelque chose de similaire sur un tableau de bord. Voici le tableau de bord : https://opendata.umea.se/pages/maltidsservicestatistik/ (vous pouvez passer Ă  l'anglais dans le coin supĂ©rieur droit) Voici l'ensemble de donnĂ©es utilisĂ© : https ://opendata.umea.se/explore/dataset/sammanstallning-maltidsservice/table/?disjunctive.omrade&disjunctive.enhet&disjunctive.typ_av_kok&disjunctive.verksamhet Pour obtenir l'annĂ©e en cours et l'annĂ©e prĂ©cĂ©dente, nous avons utilisĂ© le code suivant : 
View original

Hi,

We have done something similar on a dashboard.

This is the dashboard: https://opendata.umea.se/pages/maltidsservicestatistik/ (you can switch to English in the top right corner)

This is the data set used: https://opendata.umea.se/explore/dataset/sammanstallning-maltidsservice/table/?disjunctive.omrade&disjunctive.enhet&disjunctive.typ_av_kok&disjunctive.verksamhet

 

To get current year, and previous year we used the following code:

 

<ods-dataset-context context="currentyear,previousyear, alltheyears"

                             currentyear-dataset="sammanstallning-maltidsservice"

                             currentyear-parameters="{'disjunctive.omrade':true,'disjunctive.typ_av_kok':true,'disjunctive.verksamhet':true,'sort':'period'}"

                             previousyear-dataset="sammanstallning-maltidsservice"

                             previousyear-parameters="{'sort':'period','disjunctive.omrade':true,'disjunctive.typ_av_kok':true,'disjunctive.verksamhet':true}"

                             alltheyears-dataset="sammanstallning-maltidsservice"

                             alltheyears-parameters="{'sort':'period','disjunctive.omrade':true,'disjunctive.typ_av_kok':true,'disjunctive.verksamhet':true}">    

 

 

                <div ods-analysis="everyyear"

                     ods-analysis-context="alltheyears"

                     ods-analysis-x="ar"

                     ods-analysis-serie-total="AVG(ekologisk)"

                     ods-analysis-sort="-x">               

 

                    <!--******      Filter on current year         ****-->

                    {{ currentyear.parameters['refine.period'] = everyyear.results[0].x.year  ; "" }}            

 

                    <!--******      Filter on previous year         ****-->                  

                    {{ previousyear.parameters['refine.period'] = everyyear.results[1].x.year  ; "" }}    

 

I’m not sure this is the best/smartest way to do it, but it is one way to do it đź™‚

Auto-translation 🪄

Bonjour, Nous avons fait quelque chose de similaire sur un tableau de bord. Voici le tableau de bord : https://opendata.umea.se/pages/maltidsservicestatistik/ (vous pouvez passer Ă  l'anglais dans le coin supĂ©rieur droit) Voici l'ensemble de donnĂ©es utilisĂ© : https ://opendata.umea.se/explore/dataset/sammanstallning-maltidsservice/table/?disjunctive.omrade&disjunctive.enhet&disjunctive.typ_av_kok&disjunctive.verksamhet Pour obtenir l'annĂ©e en cours et l'annĂ©e prĂ©cĂ©dente, nous avons utilisĂ© le code suivant : 
Translate

  • Beginner
  • May 15, 2024

Thank you very much @Maria Söderlind !

 

I didn’t fully understood the capabilities of the ods-analysis tags. It will perfectly help me render those values dynamically. Thank you for your help ! 

 

 

Auto-translation 🪄

Merci beaucoup @Maria Söderlind ! Je n’ai pas entièrement compris les capacitĂ©s des balises ods-analysis. Cela m'aidera parfaitement Ă  restituer ces valeurs de manière dynamique. Merci pour votre aide !
Translate

Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings