Afficher l'étiquette personnalisée du magasin de données avec dojox.charting

StackOverflow https://stackoverflow.com/questions/1977170

  •  21-09-2019
  •  | 
  •  

Question

J'utilise le dojox.charting.widget.Chart2D et je suis en train de récupérer les données à partir d'un dojo.data.ItemFileReadStore. Je peux récupérer les données, et tout fonctionne et affiche, sauf que je ne peux pas sembler trouver un moyen d'afficher des étiquettes personnalisées sur les articles. Mon code HTML est:

<div dojoType="dojo.data.ItemFileReadStore" jsId="chartDataStore" 
    url="json/archiveinfo.json.php"></div>
<div dojoType="dojox.charting.widget.Chart2D" id="chartTest" 
    theme="dojox.charting.themes.PlotKit.blue" style="width: 300px; height: 300px;">
  <div class="plot" name="default" type="Pie" fontColor="black" htmlLabels="false" 
    radius="100"></div>
  <div class="series" name="Series A" store="chartDataStore" field="y" 
    label="text" valueFn="Number(x)"></div>
  <div class="action" type="Tooltip"></div>
  <div class="action" type="MoveSlice"></div>
</div>

Et mon JSON du ItemFileReadStore est:

{"identifier":"id","labelAttribute":"text","items":
  [
    {"id":1,"y":55,"text":"Free"},
    {"id":2,"y":45,"text":"Used"}
  ]
}

Je l'ai essayé de placer l'attribut label de la série et ont mis l'labelAttribute dans le JSON. J'ai aussi essayé juste label dans le JSON et il ne fonctionne pas non plus. Quand je fournir les données en tant que JSON dans un array ou fournir le data directement dans la série, je reçois les étiquettes de travailler. Je voulais vraiment le rendre plus souple mais en fournissant les données via un DataStore.

Était-ce utile?

La solution

La façon de le faire est de modifier votre JSON un peu et mettre à jour les attributs correspondants dans le code HTML.

JSON:

{
  "items": [
    {"id":1, "slice": {"y":55,"text":"Free"}},
    {"id":2, "slice": {"y":45,"text":"Used"}}
  ]
}

Le seul changement significatif est de séparer les données spécifiques à tarte dans un sous-objet (slice) pour la simplicité.

HTML (seule la ligne devrait être modifiée liée au magasin):

<div class="series" name="Series A"
  store="chartDataStore" field="slice"></div>

Permettez-moi de savoir comment il va.

Autres conseils

Je devais faire face à des problèmes similaires avec des étiquettes personnalisées, bien que j'utilisais une façon programmatique pour créer le graphique sur div .... Espérons que cela aide quelqu'un ....

var mytooltip = new dojox.charting.action2d.Tooltip(mychart,"default", 
    {text: function(e) {
               var tooltiptext = <construct ur custom label here>   
               return tooltiptext;
        }
    }); 

mychart est la variable que je l'ai utilisé pour créer le widget de diagramme ....

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top