عرض تسمية مخصصة من متجر البيانات مع dojox.charting

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

  •  21-09-2019
  •  | 
  •  

سؤال

أنا أستخدم dojox.charting.widget.Chart2D وأنا أحاول استرداد البيانات من dojo.data.ItemFileReadStore. يمكنني استرداد البيانات ، وكل شيء يعمل ويعرض ، إلا أنه لا يمكنني العثور على طريقة لعرض ملصقات مخصصة على العناصر. مقتطف 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>

و json الخاص بي من itemFilereadStore هو:

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

لقد حاولت تعيين سمة التسمية في السلسلة وقمت بتعيين ملف labelAttribute في JSON. لقد حاولت أيضًا فقط label في JSON ولم ينجح ذلك أيضًا. عندما أقوم بتقديم البيانات كـ JSON في array أو توفير data مباشرة في السلسلة ، أحصل على الملصقات للعمل. أردت حقًا أن أجعلها أكثر مرونة من خلال توفير البيانات عبر مخزن بيانات.

هل كانت مفيدة؟

المحلول

طريقة القيام بذلك هي تعديل JSON قليلاً وتحديث السمات المقابلة في HTML.

JSON:

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

التغيير الوحيد ذو معنى هو فصل البيانات الخاصة بالفطيرة في كائن فرعي (slice) للبساطة.

HTML (يجب تعديل الخط المتعلق بالمتجر فقط):

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

أعلمني كيف سيسير الامر.

نصائح أخرى

اضطررت إلى مواجهة مشكلة مماثلة في الملصقات المخصصة ، على الرغم من أنني كنت أستخدم طريقة برمجية لإنشاء الرسم البياني على Div .... آمل أن يساعد هذا شخصًا ما ....

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

mychart هو المتغير الذي استخدمته لإنشاء عنصر واجهة المستخدم ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top