From: Thierry Parmentelat Date: Thu, 18 Jun 2009 04:50:16 +0000 (+0000) Subject: bugfix for ticket #540 X-Git-Tag: PLEWWW-4.3-22~7 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=784cfe2a92ff21e58b773b6895e6ea4b82a0c646;p=plewww.git bugfix for ticket #540 display bandwidths in a human readable way fix IP-sorting on the nodes table as well --- diff --git a/planetlab/includes/plc_functions.php b/planetlab/includes/plc_functions.php index b1ce672..facf215 100644 --- a/planetlab/includes/plc_functions.php +++ b/planetlab/includes/plc_functions.php @@ -453,6 +453,14 @@ function interface_method_selectors ($api, $method, $primary) { return $selectors; } +// displays bandwidth with kbps Mbps Gbps as needed +function pretty_bandwidth ($bw) { + if ($bw < 1000) return $bw; + if ($bw < 1000000) return strval($bw/1000) . " kbps"; + if ($bw < 1000000000) return strval($bw/1000000) . " Mbps"; + else return strval($bw/1000000000) . " Gbps"; +} + //////////////////// function instantiation_label ($slice) { $instantiation_labels = array ('not-instantiated'=>'NOT', diff --git a/planetlab/nodes/interface.php b/planetlab/nodes/interface.php index e766efb..6f7e922 100644 --- a/planetlab/nodes/interface.php +++ b/planetlab/nodes/interface.php @@ -48,7 +48,8 @@ if ( ! $node_id) { } $tabs=array(); -$tabs[] = array('label'=>'Back to node', 'url'=>l_node($node_id), +$tabs[] = array('label'=>'Back to node', 'url'=>l_node($node_id), + 'values' => array('show_details'=>False,'show_interfaces'=>True), 'bubble'=>'Cancel pending changes'); plekit_linetabs($tabs); diff --git a/planetlab/nodes/node.php b/planetlab/nodes/node.php index 1441223..8f1f25f 100644 --- a/planetlab/nodes/node.php +++ b/planetlab/nodes/node.php @@ -416,44 +416,42 @@ if ( $local_peer ) { plc_warning_html("This node has no interface"); echo "Please add an interface to make this a usable PLC node.

\n"; } else { + + // display a hostname column iff at least one interface has a hostname + $need_hostname=false; + if ($interfaces) foreach ($interfaces as $interface) if ($interface['hostname']) $need_hostname=true; + $headers=array(); - $headers["IP"]="IPAddress"; + $sort_column=0; + if (plc_is_admin()) { $headers['I']='int'; $sort_column +=1;} + $headers["IP"]="sortIPAddress"; + if ($need_hostname) $headers['hostname']='string'; $headers["Method"]="string"; $headers["Type"]="string"; $headers["MAC"]="string"; - $headers["bw limit"]="FileSize"; + $headers["bw limit"]="sortBandwidth"; // a single symbol, marking 'p' for primary and a delete button for non-primary if ( $privileges ) $headers[plc_delete_icon()]='string'; $table_options=array('search_area'=>false,"pagesize_area"=>false,'notes_area'=>false); - $table=new PlekitTable("node_interfaces",$headers,2,$table_options); + $table=new PlekitTable("node_interfaces",$headers,$sort_column,$table_options); $table->start(); foreach ( $interfaces as $interface ) { $interface_id= $interface['interface_id']; $interface_ip= $interface['ip']; - $interface_broad= $interface['broadcast']; - $interface_primary= $interface['is_primary']; - $interface_network= $interface['network']; - $interface_dns1= $interface['dns1']; - $interface_dns2= $interface['dns2']; - $interface_hostname= $interface['hostname']; - $interface_netmaks= $interface['netmask']; - $interface_gatewary= $interface['gateway']; - $interface_mac= $interface['mac']; - $interface_bwlimit= $interface['bwlimit']; - $interface_type= $interface['type']; - $interface_method= $interface['method']; $table->row_start(); + if (plc_is_admin()) $table->cell(l_interface_t($interface_id,$interface_id)); $table->cell(l_interface_t($interface_id,$interface_ip)); - $table->cell($interface_method); - $table->cell($interface_type); - $table->cell($interface_mac); - $table->cell($interface_bwlimit); + if ($need_hostname) $table->cell($interface['hostname']); + $table->cell($interface['method']); + $table->cell($interface['type']); + $table->cell($interface['mac']); + $table->cell(pretty_bandwidth($interface['bwlimit'])); if ( $privileges ) { - if ($interface_primary) { + if ($interface['is_primary']) { $table->cell(plc_bubble("p","Cannot delete a primary interface")); } else { $table->cell ($form->checkbox_html('interface_ids[]',$interface_id)); diff --git a/planetlab/nodes/nodes.php b/planetlab/nodes/nodes.php index 275c00f..fd96f51 100644 --- a/planetlab/nodes/nodes.php +++ b/planetlab/nodes/nodes.php @@ -157,7 +157,7 @@ $headers["Site"]="string"; $headers["State"]="string"; $headers["Hostname"]="string"; $headers["Type"]="string"; -$headers["IP"]="IPAddress"; +$headers["IP"]="sortIPAddress"; $headers["A"]="string"; $headers["S"]='int'; $headers["?"]="string"; diff --git a/plekit/tablesort/customsort.js b/plekit/tablesort/customsort.js index c91fcca..a31af9e 100644 --- a/plekit/tablesort/customsort.js +++ b/plekit/tablesort/customsort.js @@ -354,3 +354,29 @@ function sortFileSizePrepareData(td, innerText) { return isNaN(innerText) ? "" : innerText * mult; }; + +var sortBandwidth = fdTableSort.sortNumeric; + +function sortBandwidthPrepareData(td, innerText) { + var regExp = /(kbps|mbps|gbps)/i; + + var type = innerText.search(regExp) != -1 ? innerText.match(regExp)[0] : ""; + + switch (type.toLowerCase()) { + case "kbps" : + mult = 1000; + break; + case "mb" : + mult = 1000000; + break; + case "gb" : + mult = 1000000000; + break; + default : + mult = 1; + }; + + innerText = parseFloat(innerText.replace(/[^0-9\.\-]/g,'')); + + return isNaN(innerText) ? "" : innerText * mult; +};