Sulla base di this, è possibile utilizzare una stringa di formato come la seguente:
yaxis: {
tickOptions: { formatString: "%'.2f" },
min : 0
}
Quella stringa di formato, insieme al valore, finiscono come argomenti in una chiamata a $.jqplot.sprintf
. È quindi possibile impostare i separatori come segue:
$.jqplot.sprintf.thousandsSeparator = ',';
$.jqplot.sprintf.decimalMark = '.';
Quindi questo codice:
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));
produrrà questo:
European 10,000.00
Other 10 000,00
US 10,000.00
Tuttavia, vedere come quello europeo è lo stesso del NOI? Quando le impostazioni di questi separatori vengono cambiate, ne risulta la sostituzione delle stringhe, da qui il motivo per cui l'europeo finisce come fa: sostituendo le virgole con i punti e quindi i punti con virgole ti restituiscono la stringa originale.
A causa di ciò, si avrebbe bisogno di fornire un metodo di formattazione segno di spunta su misura così da poter applicare tali impostazioni on-the-fly e poi fare una stringa sostituire:
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;
}
Questo significa che sarà anche bisogno di un po ' comodo meccanismo per stabilire sia la localizzazione dell'utente che i caratteri separatori corretti da usare. Salvare e ripristinare i caratteri thousandsSeparator
e decimalMark
in questo modo solo per garantire che l'impostazione in questo modo non causi problemi involontari altrove.
Si noti inoltre che la mia soluzione presuppone che i caratteri #
e _
non si trovino altrimenti nel valore che si desidera formattare. Se non è così, modificare i separatori nel metodo FormatTick
in qualcosa di più adatto.
Imparando che posso solo impostare $ .jqplot.sprintf.thousandsSeparator e $ .jqplot.sprintf.decimalMark l'ho risolto per la mia pagina di solo tedesco. Molte grazie! – alfonx