2013-01-31 13 views
5

के आधार पर प्रारूपित टिकिक्स के बीच परिवर्तन को संभालने के लिए मैं अपने jqplot में टिक को कैसे प्रारूपित कर सकता हूं। और "" क्षेत्र में निर्भर करता है।जेक्यूप्लॉट - क्षेत्र

उदाहरण के लिए।

  • यूरोपीय - 1.000,00
  • अमेरिका - 1,000.00
  • अन्य 1 000,00

मेरे उदाहरण jqPlot प्रारंभ की तरह दिखता है ....

plot3 = $.jqplot('saturationChart', lineArray, 
     { 
      title:m_Language.saturationChartName, 
      series:lineColor, 
      legend:{show:true, location:'se'}, 
      // You can specify options for all axes on the plot at once with 
      // the axesDefaults object. Here, we're using a canvas renderer 
      // to draw the axis label which allows rotated text. 
      axes:{ 
      xaxis:{ 
//   label:'Minutes', 
       renderer: $.jqplot.LogAxisRenderer, 
       tickDistribution:'power', 
       labelRenderer: $.jqplot.CanvasAxisLabelRenderer, 
       labelOptions: { 
       //fontSize: '12pt' 
       }, 
      }, 
      yaxis:{ 
//   label:'Megaohms', 
       renderer: $.jqplot.LogAxisRenderer, 
       tickDistribution:'power', 
       labelRenderer: $.jqplot.CanvasAxisLabelRenderer, 
       labelOptions: { 
       //fontSize: '12pt' 
       } 
      }, 
      } 
     }); 

मैंने देखा दस्तावेज़ीकरण के माध्यम से, लेकिन मुझे यकीन नहीं है कि मुझे कौन से कीवर्ड देखने की ज़रूरत है ... किसी भी मदद की सराहना की जाएगी

उत्तर

12

पर this आधार पर, आप निम्नलिखित की तरह एक प्रारूप स्ट्रिंग इस्तेमाल कर सकते हैं:

yaxis: { 
    tickOptions: { formatString: "%'.2f" }, 
    min : 0 
} 

प्रारूप स्ट्रिंग, मूल्य के साथ साथ, ऊपर तर्कों के रूप $.jqplot.sprintf के लिए एक कॉल में खत्म है।

$.jqplot.sprintf.thousandsSeparator = ','; 
$.jqplot.sprintf.decimalMark = '.'; 

तो यह कोड:

var value = 10000; 
$.jqplot.sprintf.thousandsSeparator = '.'; 
$.jqplot.sprintf.decimalMark = ','; 
console.log($.jqplot.sprintf("European %'.2f", value)); 

$.jqplot.sprintf.thousandsSeparator = ' '; 
$.jqplot.sprintf.decimalMark = ','; 
console.log($.jqplot.sprintf("Other %'.2f", value)); 

$.jqplot.sprintf.thousandsSeparator = ','; 
$.jqplot.sprintf.decimalMark = '.'; 
console.log($.jqplot.sprintf("US %'.2f", value)); 

इस उत्पादन होगा:

European 10,000.00 
Other 10 000,00 
US 10,000.00 

हालांकि, देखते हैं कि कैसे यूरोपीय से एक के रूप में ही है इस प्रकार है फिर आप विभाजक सेट कर सकते हैं अमेरिका? जब उन विभाजक सेटिंग्स बदल दी जाती हैं, तो इसका परिणाम स्ट्रिंग प्रतिस्थापन में होता है, इसलिए यूरोपीय एक ऐसा क्यों समाप्त होता है: अल्पविरामों को अल्पविरामों के साथ बदलता है और फिर अल्पविराम के साथ अवधि आपको मूल स्ट्रिंग देता है।

क्योंकि इस बात का, आप एक कस्टम टिक स्वरूपण तरीका प्रदान करने की आवश्यकता होगी ताकि आप ऑन-द-फ्लाई उन सेटिंग्स लागू हो सकते हैं और फिर एक स्ट्रिंग की जगह है:

yaxis: { 
    tickOptions: { 
     tickOptions: { formatString: "%'.2f" }, 
     formatter: function(format, value){ 
      return FormatTick(format, value); 
     } 
    } 
} 

.... 

function FormatTick(format, value) { 
    var prevThousandsSeparator = $.jqplot.sprintf.thousandsSeparator; 
    var prevDecimalMark = $.jqplot.sprintf.decimalMark; 

    $.jqplot.sprintf.thousandsSeparator = '#'; 
    $.jqplot.sprintf.decimalMark = '_'; 

    var formattedValue = $.jqplot.sprintf(format, value); 
    formattedValue = formattedValue.replace($.jqplot.sprintf.decimalMark, Language.DecimalMark) 
     .replace($.jqplot.sprintf.thousandsSeparator, Language.ThousandsSeparator); 

    $.jqplot.sprintf.thousandsSeparator = prevThousandsSeparator; 
    $.jqplot.sprintf.decimalMark = prevDecimalMark; 

    return formattedValue; 
} 

इसका मतलब है आप भी कुछ की आवश्यकता होगी उपयोगकर्ता के लोकेल और सही विभाजक पात्रों दोनों का उपयोग करने के लिए सुविधाजनक तंत्र। मैं इस स्थिति में thousandsSeparator और decimalMark वर्णों को सहेजता और पुनर्स्थापित करता हूं ताकि यह सुनिश्चित किया जा सके कि उन्हें इस तरह से स्थापित करने से अनजान समस्याएं कहीं और नहीं आतीं।

ध्यान दें कि मेरा समाधान मानता है कि # और _ वर्ण अन्यथा उस प्रारूप में नहीं होंगे जो आप प्रारूपित करना चाहते हैं। यदि ऐसा नहीं है, तो FormatTick विधि में विभाजक को कुछ और उपयुक्त बनाने के लिए संशोधित करें।

+0

सीखना कि मैं सिर्फ $ .jqplot.sprintf.thousandsSeparator और $ .jqplot.sprintf.decimalMark को अपने जर्मन-केवल पृष्ठ के लिए हल कर सकता हूं। आपका बहुत बहुत धन्यवाद! – alfonx

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