Skip to main content

Display thousands separator in Aras Innovator

Aras Innovator can automatically handle the format of Decimal Property with client culture. See below figures, users can find different number output in different culture.
The problem is, system only handles the decimal separator. Although Aras Innovator is not a kind of accounting system, it still makes inconvenience for recognizing price data.

Figure 1. The decimal data in default culture (en-US).

Figure 2. The decimal data in German culture (de-DE).

Solution

  1. Open "\Innovator\Client\javascript\ArasNumberHelper.js".
  2. Move to line 38 and add below code to "ArasNumberHelperFormat" function.
  3. Save file.

 if (locale!==null)
 {
  //Called by converting from neutral 
  this.requestModules();
  
  locale = this.localizationModule.normalizeLocale(locale);
  
  var formatResult,temp,digits;
  
  if (pattern)
  {
   temp = pattern.split('.');
   digits = Math.min(temp[1] ? temp[1].length : 0, 20);
  }
  else
  {
   formatResult = number.toString();
   
   if (this.isExponentialFormat(formatResult))
   {
    temp  = formatResult.split('e-');
    digits = temp[1] ? parseInt(temp[1]) : 0;
    temp = temp[0].split('.');
    digits += temp[1] ? temp[1].length : 0;
    number = number.toFixed(Math.min(digits, 20));
   }
   else
   {
    digits = 0;
   }
  }
  
  formatResult = this.numberModule.format(number,{
   locale: locale,
   places: digits
  });
  
  return formatResult;
 }

Result

Most of web controls on Aras Innovator wrappers around Dijit (Dojo's UI library), so the solution mainly calls dojo/number to achieve number formatting. The results are shown in below figures, decimal data can display thousands separator in different culture correctly.

Figure 3. The decimal data with thousands separator in default culture (en-US).

Figure 4. The decimal data with thousands separator in German culture (de-DE).

Comments

  1. It's cann't work in Aras 12SP9

    ReplyDelete
    Replies
    1. Thanks for your comment.
      I mainly work on 11SP9, and the client side of V12 had changed a lots, so I think this solution should be only applicable for V11.
      But I believe it is possible to do same thing in V12, maybe you can take this solution as reference to find and modify relevant code by yourself.

      Delete

Post a Comment

Popular posts from this blog

aras.uiShowItemEx Method (aras Object)

aras.uiShowItemEx Method Shows Item with Item node. Syntax aras.uiShowItem( itemNd , viewMode , isOpenInTearOff ) Parameters Name Type Description itemNd Object Required. Item node. viewMode String Optional. Unknown purpose but only supports the following values: tab view (Default) openFile new ※Each supported value will get same result. Therefore, call method and pass undefined for this parameter is OK. isOpenInTearOff Boolean Optional. Specifies whether show Item with tear-off window. true - open in a tear-off window. false - open in a tab. (Default) Return Value An AsyncResult object or a Boolean. Returns AsyncResult object if the Item winodw is opened successfully, otherwise returns false. See Also aras Object Aras Innovator Client Framework

aras.uiShowItem Method (aras Object)

aras.uiShowItem Method Gets Item by Item ID and then shows the Item. Syntax aras.uiShowItem( itemTypeName , itemID , viewMode ) Parameters Name Type Description itemTypeName String Required. Name of the ItemType. itemID String Required. ID of the Item. viewMode String Optional. Unknown purpose but only supports the following values: tab view - This is default. openFile new ※Each supported value will get same result. Therefore, call method without this parameter is OK. Return Value An AsyncResult object or a Boolean. Returns AsyncResult object if the Item winodw is opened successfully, otherwise returns false. See Also aras Object Aras Innovator Client Framework

window.handleItemChange Method (Instance Window Object)

window.handleItemChange Method Changes current Item's property value. If Item is not locked, the function will do nothing. Syntax window.handleItemChange( propNm , propVal , dataType , datePattern ) Parameters Name Type Description propNm String Required. Property name. propVal String Required. Property value. dataType String Optional. Property data type. If the data type is "date", this parameter is required, otherwise it is not necessary to pass. datePattern String Optional. Date pattern, supports the following values: short_date (Default) short_date_time long_date long_date_time See Also Instance Window Object Aras Innovator Client Framework