Bonjour,

Il y a un truc qui m'échappe : NetworkPortEthernet est dédié à la gestion des ports Ethernet. À ma connaissance seules les vitesses 10 Mbits/s, 100 Mbit/s, 1 GBit/s et 10 Gbit/s ont été normalisées par l'ISO. Quels sont ces switchs qui gèrent des vitesses "hors norme" ? S'il s'agit d'aggrégats, alors tu devrais les définir comme tel en utilisant NetworkPortAggregate. Peut-être manque-t-il une vitesse propre aux aggrégats ...

Tu trouveras un patch, ci-joint, qui résout le problème pour l'affichage, mais pas pour la saisie. Je ne l'ais pas commité car si les ports en question sont des aggrégats, cette modification devrait logiquement rejoindre la classe NetworkPortAggregate.

Damien
On 02/11/2012 05:53, Damien Touraine wrote:
Bonjour,

Dans la base de donnée, ce champs est un entier. Donc, il n'y a pas de soucis avec la structure de donnée actuelle. Mais, c'est pour le rendu et la saisie dans les formulaires que cela pose problème.

Je vais essayer de résoudre ce problème :
C'est bien dans le cas d'un import que tu rencontre ce problème, Non ? Si tel est le cas, on peut se contenter de simplement afficher la valeur si elle ne fait pas partie des valeur pré-définies (10, 100, 1000, ...), tout en laissant ces champs prédéfinie pour la saisie de la valeur. Si on souhaite également pouvoir saisir une valeur différente dans le formulaire, nous pourrions ajouter une ligne "autre" dans le choix des vitesses. Un champs "text" appraîtrait afin de saisir cette valeur.

Damien
On 01/11/2012 18:47, David DURIEUX wrote:
J'ai des ports réseau de switch par exemple qui peuvent avoir des
vitesses différentes de celle qui sont pas défaut (10, 100, 1000,
10000) genre du 2 Gbit/s ou autre.

Est-ce qu'il ne faudrait pas créé un objet networkportspeed avec des
valeurs personalizables (en ayant les 4 que l'on a actuellement créé
dedans)?

PS : désolé je n'avais pas percuté avant pour ce soucis de vitesse :/

David Durieux
++

_______________________________________________
Glpi-dev mailing list
Glpi-dev@gna.org
https://mail.gna.org/listinfo/glpi-dev


Index: inc/networkportethernet.class.php
===================================================================
--- inc/networkportethernet.class.php	(revision 19656)
+++ inc/networkportethernet.class.php	(working copy)
@@ -65,7 +65,7 @@
                               array('value' => $this->fields['type']));
       echo "</td>";
       echo "<td>" . __('Ethernet port speed') . "</td><td>\n";
-      Dropdown::showFromArray('speed', self::getPortSpeed(),
+      Dropdown::showFromArray('speed', self::getPortSpeed(true, $this->fields['speed']),
                               array('value' => $this->fields['speed']));
       echo "</td>";
       echo "</tr>\n";
@@ -133,7 +133,7 @@
 
       if (!empty($this->fields['speed'])) {
          $row->addCell($row->getHeaderByName('Instantiation', 'speed'),
-                       self::getPortSpeed($this->fields["speed"]), $father);
+                       self::getPortSpeed(false, $this->fields['speed']), $father);
       }
 
       if (!empty($this->fields['type'])) {
@@ -395,25 +395,42 @@
    /**
     * Get the possible value for Ethernet port speed
     *
-    * @param $val if not set, ask for all values, else for 1 value (default NULL)
+    * @param $get_array do we have to return an array of all available speeds or not ?
+    * @param $val       the current value, even if we need the array, thus, we can convert it to
+    *                   readable value (ie.: Mbit/s, Gbit/s ...).
     *
     * @return array or string
    **/
-   static function getPortSpeed($val=NULL) {
+   static function getPortSpeed($get_array, $val) {
 
-      $tmp = array(0     => '',
-                   10    => __('10 Mbit/s'),
-                   100   => __('100 MBit/s'),
-                   1000  => __('1 GBit/s'),
-                   10000 => __('10 GBit/s'));
+      if (!is_numeric($val)) {
+         return NOT_AVAILABLE;
+      }
+      $val = intval($val);
 
-      if (is_null($val)) {
+      $tmp = array(0      => Dropdown::EMPTY_VALUE,
+                   //TRANS: %1$s is port speed (10, 100, ...)
+                   10     => sprintf(__('%1$d Mbit/s'), 10),
+                   100    => sprintf(__('%1$d Mbit/s'), 100),
+                   1000   => sprintf(__('%1$d Gbit/s'), 1),
+                   10000  => sprintf(__('%1$d Gbit/s'), 10));
+
+      if (!isset($tmp[$val])) {
+         if (($val % 1000000) == 0) {
+            $tmp[$val] = sprintf(__('%1$d Tbit/s'), $val / 1000000);
+         } elseif (($val % 1000) == 0) {
+            $tmp[$val] = sprintf(__('%1$d Gbit/s'), $val / 1000);
+         } else {
+            $tmp[$val] = sprintf(__('%1$d Mbit/s'), $val);
+         }
+      }
+
+      if ($get_array) {
+         ksort($tmp);
          return $tmp;
       }
-      if (isset($tmp[$val])) {
-         return $tmp[$val];
-      }
-      return NOT_AVAILABLE;
+
+      return $tmp[$val];
    }
 
 
@@ -432,7 +449,7 @@
             return self::getPortTypeName($values[$field]);
 
          case 'speed':
-            return self::getPortSpeed($values[$field]);
+            return self::getPortSpeed(false, $values[$field]);
       }
       return parent::getSpecificValueToDisplay($field, $values, $options);
    }
@@ -458,7 +475,8 @@
 
          case 'speed':
             $options['value'] = $values[$field];
-            return Dropdown::showFromArray($name, self::getPortSpeed(), $options);
+            return Dropdown::showFromArray($name, self::getPortSpeed(true, $options['value']),
+                                           $options);
       }
       return parent::getSpecificValueToSelect($field, $name, $values, $options);
    }
_______________________________________________
Glpi-dev mailing list
Glpi-dev@gna.org
https://mail.gna.org/listinfo/glpi-dev

Reply via email to