LSformElement :: valueWithUnit : improve floatint number display and add parameter...
authorBenjamin Renard <brenard@easter-eggs.com>
Tue, 7 Apr 2015 18:34:18 +0000 (20:34 +0200)
committerBenjamin Renard <brenard@easter-eggs.com>
Tue, 7 Apr 2015 18:34:18 +0000 (20:34 +0200)
doc/conf/LSattribute/LSattr_html/LSattr_html_valueWithUnit.docbook
public_html/includes/class/class.LSformElement_valueWithUnit.php

index bf565d3..d376512 100644 (file)
       '[facteur1]' => '[label unit1]',
       '[facteur2]' => '[label unit2]',
       [...]
-    )
+    ),
+    'nb_decimals' => [number of decimals],
+    'dec_point' => '[decimals point]',
+    'thousands_sep' => '[thousands separator]'
   )
 ),]]>
 ...
   </listitem>
 </varlistentry>
 
+<varlistentry>
+  <term>nb_decimals</term>
+  <listitem>
+    <simpara>Le nombre de décimals à afficher en cas de nombre non-entier (Par defaut : <literal>2</literal>).</simpara>
+  </listitem>
+</varlistentry>
+
+<varlistentry>
+  <term>dec_point</term>
+  <listitem>
+    <simpara>Le caractère à utiliser comme séparateur de décimal (Par defaut, une virgule).</simpara>
+  </listitem>
+</varlistentry>
+
+<varlistentry>
+  <term>thousands_sep</term>
+  <listitem>
+    <simpara>Le caractère à utiliser comme séparateur de milliers (Par defaut, un espace).</simpara>
+  </listitem>
+</varlistentry>
+
 </variablelist>
 
 </sect4>
index 71bba0c..caa6f94 100644 (file)
@@ -54,6 +54,25 @@ class LSformElement_valueWithUnit extends LSformElement {
   }
 
  /**
+  * Return formatted number
+  *
+  * This method return take a number as paremeter and
+  * return it after formatting.
+  *
+  * @param[in] int|float $number The number
+  *
+  * @retbal string Formatted number
+  */
+  function formatNumber($number) {
+    if ((int)$number==$number) return $number;
+    return number_format($number,
+      (isset($this -> params['html_options']['nb_decimals'])?$this -> params['html_options']['nb_decimals']:2),
+      (isset($this -> params['html_options']['dec_point'])?$this -> params['html_options']['dec_point']:","),
+      (isset($this -> params['html_options']['thousands_sep'])?$this -> params['html_options']['thousands_sep']:" ")
+    );
+  }
+
+ /**
   * Retourne les infos d'affichage de l'élément
   * 
   * Cette méthode retourne les informations d'affichage de l'élement
@@ -74,12 +93,10 @@ class LSformElement_valueWithUnit extends LSformElement {
           );
           foreach($units as $sill => $label) {
             if ($infos['value'] >= $sill) {
-              if ($infos['value'] % $sill == 0) {
-                $infos['valueWithUnit']=$infos['value']/$sill;
-                $infos['unitSill']=$sill;
-                $infos['unitLabel']=$label;
-                break;
-              }
+              $infos['valueWithUnit']=$this -> formatNumber($infos['value']/$sill);
+              $infos['unitSill']=$sill;
+              $infos['unitLabel']=$label;
+              break;
             }
           }
           $values_and_units[$value] = $infos;