26

पर प्रदर्शित करने के लिए कस्टम डेटा स्वरूपण मैंने यहां विभिन्न दस्तावेज और इसी तरह के प्रश्नों को देखा है, लेकिन विशेष समाधान नहीं मिल रहा है। क्षमा करें अगर मैंने कुछ भी स्पष्ट किया है या इस सवाल को दोहराया है!जावास्क्रिप्ट चार्ट.जेएस - टूलटिप

पृष्ठभूमि की थोड़ी सी जानकारी के रूप में, मैंने चार्ट.जेएस प्लगइन का उपयोग करके 4 ग्राफ लागू किए हैं और डेटाबेस से PHP का उपयोग करके आवश्यक डेटा में पास किया है। यह सब ठीक से काम कर रहा है और ठीक है।

मेरी समस्या है कि मुझे टूलटिप्स में डेटा स्वरूपित डेटा उर्फ ​​के रूप में प्रदर्शित करने की आवश्यकता है। % के साथ संख्यात्मक के रूप में। उदाहरण के तौर पर, डेटाबेस से मेरा डेटा में से एक है -0.17222। मैंने इसे अपनी तालिका में प्रदर्शित करने के प्रतिशत के रूप में स्वरूपित किया है और सब ठीक है। हालांकि, chart.js बार ग्राफ़ के लिए डेटा सेट करते समय, डेटा स्पष्ट रूप से इस स्वरूपण को याद कर रहा है और -0.17222 के रूप में प्रदर्शित होता है जो मैं नहीं चाहता हूं।

क्षमा करें, मैं एक तस्वीर पोस्ट करना चाहता था, लेकिन मेरी प्रतिष्ठा बहुत बकवास है!

मैं डेटाबेस से डेटा हड़पने, तो मेरी तालिका में सेट करें:

var kpiRex = new Handsontable(example1, { 
    data: getRexData(), 

तब मैं चार्ट अनुभाग में ऐसा तरह इस डेटा फ़ीड:

data: kpiRex.getDataAtRow(3) 

किसी भी मदद की बहुत अच्छा होगा! मैं इस पर घंटों तक फंस गया हूं और शायद यह वास्तव में कुछ आसान है जिसे मैं देख रहा हूं।

उत्तर

26

आप इस तरह अपने चार्ट विकल्पों में एक कस्टम टूलटिप टेम्पलेट निर्दिष्ट करना:

// String - Template string for single tooltips 
tooltipTemplate: "<%if (label){%><%=label %>: <%}%><%= value + ' %' %>", 
// String - Template string for multiple tooltips 
multiTooltipTemplate: "<%= value + ' %' %>", 

इस तरह अगर है कि तुम क्या चाहते हो तो आप अपने मूल्यों के बाद एक '%' पर हस्ताक्षर जोड़ सकते हैं।

यहां a jsfiddle to illustrate this है।

ध्यान दें कि tooltipTemplate लागू होता है अगर आप केवल एक डाटासेट है, multiTooltipTemplate लागू होता है अगर आप कई डेटासेट की है।

इस विकल्प का उल्लेख global chart configuration section of the documentation में किया गया है। एक नज़र डालें, यह उन सभी अन्य विकल्पों की जांच करने लायक है जिन्हें वहां अनुकूलित किया जा सकता है।

ध्यान दें कि आपके डेटासेट में केवल संख्यात्मक मान होना चाहिए। (वहां कोई% संकेत या अन्य सामान नहीं है)।

+2

बड़े पैमाने पर धन्यवाद! मैं पहले टूलटिप टेम्पलेट का उपयोग कर रहा था, लेकिन मुझे मल्टीटूलिप टेम्पलेट की आवश्यकता होनी चाहिए क्योंकि मेरे पास 4 चार्ट हैं। कोई विचार नहीं कि मैं इस विकल्प को कैसे चूक गया! यह अब काम कर रहा है! समय लेने के लिए फिर से धन्यवाद। –

+0

आपका स्वागत है। मुझे खुशी है कि इससे मदद मिली। – rtome

+0

jsfiddle के लिए धन्यवाद, यह वास्तव में उपयोगी उपयोग करने के लिए धन्यवाद। मैं इस उदाहरण का उपयोग कर मुद्रा स्वरूपण जोड़ रहा हूं। –

9

आप tooltipTemplate एक समारोह दे सकते हैं, और टूलटिप प्रारूप के रूप में आप चाहते हैं:

tooltipTemplate: function(v) {return someFunction(v.value);} 
multiTooltipTemplate: function(v) {return someOtherFunction(v.value);} 

उन दिए गए 'वी' तर्क 'मान' संपत्ति के अलावा बहुत सी जानकारी होते हैं। आप उस फ़ंक्शन के अंदर 'डीबगर' डाल सकते हैं और स्वयं का निरीक्षण कर सकते हैं।

let that = this; 
    options = { 
    legend: { 
     display: false, 
     responsive: false 
    }, 
    tooltips: { 
     callbacks: { 
     label: function(tooltipItem, data) { 
      let account: Account = that.accounts[tooltipItem.index]; 
      return account.accountNumber+":"+account.balance+"€"; 
     } 
     } 
    } 
    } 
+0

जादू की तरह काम करता है! धन्यवाद! – prsnca

+0

"कुछ अन्य कार्य()" वापसी क्या होनी चाहिए? एक स्ट्रिंग टेम्पलेट जैसे "<% डेटासेट लेबल - मान%>", स्ट्रिंग या कुछ और? या अधिक सटीक रूप से यह क्या करना चाहिए? आपूर्ति पैरामीटर के गुणों को कुछ या संशोधित करें? – SomethingOn

+0

@ कुछ कुछ अन्य निष्पादन() को उस स्ट्रिंग को वापस करना चाहिए जिसे आप टूल टिप में प्रदर्शित करना चाहते हैं। एक टेम्पलेट नहीं, बस स्ट्रिंग। जब तक आप एक स्ट्रिंग वापस करते हैं, तब तक आप v.value को वांछित कर सकते हैं। यह v को संशोधित नहीं करता है, जो खतरनाक लगता है। –

30

chart.js 2.1.6 में, मैं कुछ इस तरह (टाइपप्रति में) किया था।

options: { 
    tooltips: { 
     callbacks: { 
      label: function(tooltipItem, data) { 
       return tooltipItem.yLabel; 
      } 
     } 
    } 
} 

यानी, आप tooltipItem.yLabel, जो y- अक्ष मूल्य रखती है के लिए संशोधन लौट सकते हैं: उन है कि सिर्फ वर्तमान, अस्वरूपित मूल्य पहुँच सकते हैं और यह फेरबदल शुरू करना चाहते हैं के लिए, डिफ़ॉल्ट टूलटिप के समान है। मेरे मामले में, मैं एक वित्तीय चार्ट के लिए एक डॉलर चिह्न, राउंडिंग, और हजारों के लिए अल्पविराम जोड़ना चाहते थे, इसलिए मैं प्रयोग किया है:

options: { 
    tooltips: { 
     callbacks: { 
      label: function(tooltipItem, data) { 
       return "$" + Number(tooltipItem.yLabel).toFixed(0).replace(/./g, function(c, i, a) { 
        return i > 0 && c !== "." && (a.length - i) % 3 === 0 ? "," + c : c; 
       }); 
      } 
     } 
    } 
} 
+0

इस साथी के लिए धन्यवाद –

+0

सही उत्तर! – Unbreakable

+0

क्या आप ऊपर दिए गए पहले उत्तर जैसे मान के अंत में प्रतिशत जोड़ने के लिए ऐसा करने में मेरी सहायता कर सकते हैं, लेकिन संस्करण 2+ के लिए? बहुत बहुत धन्यवाद। मैं एक जे एस नौसिखिया हूँ ... – jaminroe

59

chart.js 2.0+ के लिए, यह बदल गया है (और नहीं tooltipTemplate/multiTooltipTemplate):

+0

यह अच्छा है, लेकिन यह भी निकल जाता है 'श्रृंखला के लेबल – RafaelTSCS

+0

मैं कॉलबैक इस्तेमाल किया इस .. कॉलबैक की तरह मेरे टूलटिप genearte करें: { लेबल: समारोह (tooltipItem, डेटा) { वापसी tooltipItem। yLabel + '%'; } लेकिन यह एक्स-अक्ष मूल्य भी दिखाता है .. मैं अपने टूलटिप – Rajiv

+1

@Kyrth से एक्स-अक्ष मान को छिपाना चाहता हूं। हालांकि यह अभी भी एक्स-अक्ष मान प्रदर्शित करता है .. केवल yAxis मान को प्रदर्शित करने के लिए कैसे करें। –

-1
tooltips: { 
      enabled: true, 
        mode: 'single', 
        callbacks: { 
        label: function(tooltipItems, data) { 
         return data.datasets[tooltipItems.datasetIndex].label+": "+tooltipItems.yLabel; 
        } 
        } 
       } 
+1

आपको उचित कोड स्निपेट जोड़ना चाहिए और सबसे पहले आपको केवल कोड जोड़ने और उत्तर पोस्ट करने के बजाय ओपी की स्क्रिप्ट में त्रुटि या समस्या को इंगित करना चाहिए, आपको अधिक वर्णनात्मक होना चाहिए –

संबंधित मुद्दे