Pergunta

Estou usando o dojox.charting.widget.Chart2D e estou tentando recuperar os dados de um dojo.data.ItemFileReadStore. Posso recuperar os dados e tudo funciona e exibe, exceto que não consigo encontrar uma maneira de exibir rótulos personalizados nos itens. Meu snippet html é:

<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>

E meu json do itemFileReadStore é:

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

Eu tentei definir o atributo da etiqueta na série e defini o labelAttribute no JSON. Eu também tentei apenas label no JSON e também não funcionou. Quando eu forneço os dados como um JSON em um array ou forneça o data Diretamente na série, eu tenho os rótulos para funcionar. Eu realmente queria torná -lo mais flexível, fornecendo os dados por meio de um armazenamento de dados.

Foi útil?

Solução

A maneira de fazer isso é modificar um pouco o seu JSON e atualizar atributos correspondentes no HTML.

JSON:

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

A única mudança significativa é separar dados específicos da torta em um subobjeto (slice) Pela simplicidade.

HTML (apenas a linha relacionada à loja deve ser modificada):

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

Deixe -me saber como foi.

Outras dicas

Eu tive que enfrentar problemas semelhantes com rótulos personalizados, embora estivesse usando uma maneira programática de criar o gráfico no div .... Espero que isso ajude alguém ....

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

mychart é a variável que eu usei para criar o widget de gráfico ....

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top