I was surprised when I saw that all number formats in flash graphs are using American NLS number format-decimal separator "." and group separator ",". Because I live in Croatia, where decimal and group separator signs are contrary, I was searching to find a solution to get a proper display of number values in flash charts.
The try
I was trying several things to work that out:- Set default language in browser to Croatian.
- Set "Initialization PL/SQL Code" option (from Home|Application Builder|Application xxx|Edit Security Attributes) to:
alter session set NLS_NUMERIC_CHARACTERS=',.'
- Try formatting values for chart
The solution
Then I realize that flash chart is independent piece of code running in Apex through it's external definition, in XML part of chart setting. Looking closely what is written there lead me to solution. GotoHome|Application Builder|Application xxx|Page yyy|Flash Chart Attributes
, where your flash chart is placed.
Find
Chart XML
section and change Use Custom XML->Yes
.
Then in next (enabled) XML section whith default values as:
<labels enabled="true" position="Outside"> <font family="Tahoma" size="10" color="0x000000" /> <format><![CDATA[{%Value}{numDecimals:2,decimalSeparator:\,,thousandsSeparator:.}]]></format> </labels>change highlighted row to:
<labels enabled="true" position="Outside"> <font family="Tahoma" size="10" color="0x000000" /> <format><![CDATA[{%Value}{numDecimals:2,decimalSeparator:.,thousandsSeparator:\,}]]></format> </labels>Result is finally as expected, graph with proper nls format setting
The End
Because Oracle is in total control of session values, I think that this code should be generated dynamically to follow real nls format values. Especially that this solution doesn't cover translated applications where such a setting is hard codded for all languages!Hope this helps someone.
Cheers!