Skip to main content

Hi everyone,

I’m currently creating a column chart with the ODS widgets and I encountered a problem. When I filter values and there is 1 observation displayed with a Y-value close to 1, the Y-axis rescales itself but displays floats (the values can only be integers).

 

I tried to set the column values as integers, but it didn’t fix the issue. I also found a way to solve it by adding <ods-chart ... step=1>, but then it displays too many numbers on the Y-axis when observations have high Y-values.

 

 

I hope that I explained my problem clearly 😀

Do you have any tips ?

Thanks in advance and best regards,

 

David

Auto-translation 🪄

Bonjour à tous, Je suis en train de créer un histogramme avec les widgets ODS et j'ai rencontré un problème. Lorsque je filtre des valeurs et qu'une observation est affichée avec une valeur Y proche de 1, l'axe Y se redimensionne mais affiche des flottants (les valeurs ne peuvent être que des nombres entiers). J'ai essayé de définir les valeurs des colonnes sous forme d'entiers, mais cela n'a pas résolu le problème. J'ai également trouvé un moyen de le résoudre en ajoutant , mais il affiche ensuite trop de nombres sur l'axe Y lorsque les observations ont des valeurs Y élevées.  J'espère avoir expliqué clairement mon problème 😀Avez-vous des conseils ? Merci d'avance et meilleures salutations, David

Hi, 

You must consider having a dynamic step value.

You’ll need probably another aggregation with ods-adv-analysis for exemple to get the max of your values. And then dynamically, provide a step value to ods-chart depending on this max value. 

If max_value <= 5, then the step can be 1, otherwise it can be 10 or 50 or so. 

 

It can be a bit technical, do not hesitate to share your code if you need more help to try this hack

Auto-translation 🪄

Bonjour, Vous devez envisager d'avoir une valeur de pas dynamique. Vous aurez probablement besoin d'une autre agrégation avec ods-adv-analysis par exemple pour obtenir le maximum de vos valeurs. Et puis dynamiquement, fournissez une valeur de pas à ods-chart en fonction de cette valeur maximale. Si max_value <= 5, le pas peut être de 1, sinon il peut être de 10 ou 50 environ.  Cela peut être un peu technique, n'hésitez pas à partager votre code si vous avez besoin d'aide supplémentaire pour essayer ce hack

Thanks a lot for your answer. I tried as you suggested (if that’s how you meant it ^^) and I should be close to the answer, but it doesn’t display anything. I assume the error is in the <div ng-if...> but I don’t understand it.

 

Thank’s in advance for your help.

Best,

David

Auto-translation 🪄

Merci beaucoup pour votre réponse. J'ai essayé comme vous l'avez suggéré (si c'est comme ça que vous le pensiez ^^) et je devrais être proche de la réponse, mais elle n'affiche rien. Je suppose que l'erreur est dans le
mais je ne la comprends pas. Merci d'avance pour votre aide.Bien, David

Hi, sorry the late answer, heavy load before this summer, 

 

The problem in your code is a matter of scoped variables. 

maxnb only exists in the ods-adv-analysis block. therefore it won’t exists outside, and your ng-ifs will never be true.

What I recommand is for exemple at the top of your code, or at least on a parent element of all your blocks, to set a object :

<div ng-init="values = {}"

your code here ....

</div>

 

then, you’ll store your variable into this object that will exists on a wider scope :

 

<div ng-init="values={}"
<div ods-adv-analysis="maxnb"
....>

{{ values.maxnb = maxnb ; '' }}

</div>



<div>

{{ values.maxnb }} <--- here values.maxnb exists as it's in the parent scope

</div>
</div>

 

I made a video about this topic : 

 

 

Auto-translation 🪄

Bonjour, désolé pour la réponse tardive, charge importante avant cet été,  Le problème dans votre code est une question de variables étendues. maxnb n'existe que dans le bloc ods-adv-analysis. donc il n'existera pas à l'extérieur, et vos ng-ifs ne seront jamais vrais. Ce que je recommande c'est par exemple en haut de votre code, ou au moins sur un élément parent de tous vos blocs, de définir un objet :
 puis, vous stockerez votre variable dans cet objet qui existera sur une portée plus large : 
<--- ici values.maxnb existe tel qu'il est dans la portée parent
 J'ai créé une vidéo sur ce sujet :   

Reply