From aea9a5335b7f2126630dfc7da5b2ae457caf392b Mon Sep 17 00:00:00 2001
From: mdtrooper <tres.14159@gmail.com>
Date: Wed, 21 Jul 2010 18:07:21 +0000
Subject: [PATCH] 2010-07-21  Miguel de Dios  <miguel.dedios@artica.es>

	* operation/agentes/estado_ultimopaquete.php: added code for sort by
	data.

	* operation/agentes/estado_monitores.php,
	godmode/agentes/module_manager.php: added the icons and source code for
	order rows of list alerts by columns Module Name, Type, Interval and
	Timestamp.



git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@3052 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
---
 pandora_console/ChangeLog                     |  10 ++
 .../godmode/agentes/module_manager.php        |  99 +++++++++++++--
 .../operation/agentes/estado_monitores.php    | 117 ++++++++++++++++--
 .../agentes/estado_ultimopaquete.php          |  22 +++-
 4 files changed, 232 insertions(+), 16 deletions(-)

diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog
index ebdd461d59..ef9e56cd44 100644
--- a/pandora_console/ChangeLog
+++ b/pandora_console/ChangeLog
@@ -1,3 +1,13 @@
+2010-07-21  Miguel de Dios  <miguel.dedios@artica.es>
+
+	* operation/agentes/estado_ultimopaquete.php: added code for sort by
+	data.
+	
+	* operation/agentes/estado_monitores.php,
+	godmode/agentes/module_manager.php: added the icons and source code for
+	order rows of list alerts by columns Module Name, Type, Interval and
+	Timestamp.
+
 2010-07-21  Miguel de Dios  <miguel.dedios@artica.es>
 
 	* include/functions_html.php: lost in previus commit the change to
diff --git a/pandora_console/godmode/agentes/module_manager.php b/pandora_console/godmode/agentes/module_manager.php
index 79dca89b23..34f45e978b 100644
--- a/pandora_console/godmode/agentes/module_manager.php
+++ b/pandora_console/godmode/agentes/module_manager.php
@@ -125,10 +125,87 @@ if ($multiple_delete) {
 
 echo "<h3>".__('Assigned modules')."</h3>";
 
+$url = 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=module&id_agente=' . $id_agente;
+$selectNameUp = '';
+$selectNameDown = '';
+$selectServerUp = '';
+$selectServerDown = '';
+$selectTypeUp = '';
+$selectTypeDown = '';
+$selectIntervalUp = '';
+$selectIntervalDown = '';
+$sortField = get_parameter('sort_field');
+$sort = get_parameter('sort', 'none');
+$selected = 'border: 1px solid black;';
+
+$order[] = array('field' => 'id_module_group', 'order' => 'ASC');
+
+switch ($sortField) {
+	case 'name':
+		switch ($sort) {
+			case 'up':
+				$selectNameUp = $selected;
+				$order[] = array('field' => 'tagente_modulo.nombre', 'order' => 'ASC');
+				break;
+			case 'down':
+				$selectNameDown = $selected;
+				$order[] = array('field' => 'tagente_modulo.nombre', 'order' => 'DESC');
+				break;
+		}
+		break;
+	case 'server':
+		switch ($sort) {
+			case 'up':
+				$selectServerUp = $selected;
+				$order[] = array('field' => 'id_modulo', 'order' => 'ASC');
+				break;
+			case 'down':
+				$selectServerDown = $selected;
+				$order[] = array('field' => 'id_modulo', 'order' => 'DESC');
+				break;
+		}
+		break;
+	case 'type':
+		switch ($sort) {
+			case 'up':
+				$selectTypeUp = $selected;
+				$order[] = array('field' => 'id_tipo_modulo', 'order' => 'ASC');
+				break;
+			case 'down':
+				$selectTypeDown = $selected;
+				$order[] = array('field' => 'id_tipo_modulo', 'order' => 'DESC');
+				break;
+		}
+		break;
+	case 'interval':
+		switch ($sort) {
+			case 'up':
+				$selectIntervalUp = $selected;
+				$order[] = array('field' => 'module_interval', 'order' => 'ASC');
+				break;
+			case 'down':
+				$selectIntervalDown = $selected;
+				$order[] = array('field' => 'module_interval', 'order' => 'DESC');
+				break;
+		}
+		break;
+	default:
+		$selectNameUp = $selected;
+		$selectNameDown = '';
+		$selectServerUp = '';
+		$selectServerDown = '';
+		$selectTypeUp = '';
+		$selectTypeDown = '';
+		$selectIntervalUp = '';
+		$selectIntervalDown = '';
+		$order[] = array('field' => 'nombre', 'order' => 'ASC');
+		break;
+}
+
 $modules = get_db_all_rows_filter ('tagente_modulo',
 	array ('delete_pending' => 0,
 		'id_agente' => $id_agente,
-		'order' => 'id_module_group, nombre'),
+		'order' => $order),
 	array ('id_agente_modulo', 'id_tipo_modulo', 'descripcion', 'nombre',
 		'max', 'min', 'module_interval', 'id_modulo', 'id_module_group',
 		'disabled',));
@@ -140,12 +217,20 @@ if ($modules === false) {
 
 $table->width = '95%';
 $table->head = array ();
-$table->head[0] = __('Name');
+$table->head[0] = __('Name') . ' ' .
+	'<a href="' . $url . '&sort_field=name&sort=up"><img src="images/sort_up.png" style="' . $selectNameUp . '" /></a>' .
+	'<a href="' . $url . '&sort_field=name&sort=down"><img src="images/sort_down.png" style="' . $selectNameDown . '" /></a>';
 if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK)
 	$table->head[1] = "<span title='" . __('Policy') . "'>" . __('P.') . "</span>";
-$table->head[2] = "<span title='" . __('Server') . "'>" . __('S.') . "</span>";
-$table->head[3] = __('Type');
-$table->head[4] = __('Interval');
+$table->head[2] = "<span title='" . __('Server') . "'>" . __('S.') . "</span>" . ' ' .
+	'<a href="' . $url . '&sort_field=server&sort=up"><img src="images/sort_up.png" style="' . $selectServerUp . '" /></a>' .
+	'<a href="' . $url . '&sort_field=server&sort=down"><img src="images/sort_down.png" style="' . $selectServerDown . '" /></a>';
+$table->head[3] = __('Type') . ' ' .
+	'<a href="' . $url . '&sort_field=type&sort=up"><img src="images/sort_up.png" style="' . $selectTypeUp . '" /></a>' .
+	'<a href="' . $url . '&sort_field=type&sort=down"><img src="images/sort_down.png" style="' . $selectTypeDown . '" /></a>';
+$table->head[4] = __('Interval') . ' ' .
+	'<a href="' . $url . '&sort_field=interval&sort=up"><img src="images/sort_up.png" style="' . $selectIntervalUp . '" /></a>' .
+	'<a href="' . $url . '&sort_field=interval&sort=down"><img src="images/sort_down.png" style="' . $selectIntervalDown . '" /></a>';
 $table->head[5] = __('Description');
 $table->head[6] = __('Max/Min');
 $table->head[7] = __('Action');
@@ -153,10 +238,10 @@ $table->head[7] = __('Action');
 $table->style = array ();
 $table->style[0] = 'font-weight: bold';
 $table->size = array ();
-$table->size[2] = '35px';
+$table->size[2] = '55px';
 $table->size[7] = '65px';
 $table->align = array ();
-$table->align[2] = 'left';
+$table->align[2] = 'center';
 $table->align[7] = 'left';
 $table->data = array ();
 
diff --git a/pandora_console/operation/agentes/estado_monitores.php b/pandora_console/operation/agentes/estado_monitores.php
index bfb834d9aa..4e892b9a9c 100644
--- a/pandora_console/operation/agentes/estado_monitores.php
+++ b/pandora_console/operation/agentes/estado_monitores.php
@@ -24,6 +24,99 @@ if (!isset ($id_agente)) {
 	exit;
 }
 
+$id_agent = get_parameter('id_agente');
+$url = 'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=' . $id_agent;
+$selectTypeUp = '';
+$selectTypeDown = '';
+$selectNameUp = '';
+$selectNameDown = '';
+$selectStatusUp = '';
+$selectStatusDown = '';
+$selectDataUp = '';
+$selectDataDown = '';
+$selectLastContactUp = '';
+$selectLastContactDown = '';
+$sortField = get_parameter('sort_field');
+$sort = get_parameter('sort', 'none');
+$selected = 'border: 1px solid black;';
+
+switch ($sortField) {
+	case 'type':
+		switch ($sort) {
+			case 'up':
+				$selectTypeUp = $selected;
+				$order = array('field' => 'tagente_modulo.id_tipo_modulo', 'order' => 'ASC');
+				break;
+			case 'down':
+				$selectTypeDown = $selected;
+				$order = array('field' => 'tagente_modulo.id_tipo_modulo', 'order' => 'DESC');
+				break;
+		}
+		break;
+	case 'name':
+		switch ($sort) {
+			case 'up':
+				$selectNameUp = $selected;
+				$order = array('field' => 'tagente_modulo.nombre', 'order' => 'ASC');
+				break;
+			case 'down':
+				$selectNameDown = $selected;
+				$order = array('field' => 'tagente_modulo.nombre', 'order' => 'DESC');
+				break;
+		}
+		break;
+	case 'status':
+		switch ($sort) {
+			case 'up':
+				$selectStatusUp = $selected;
+				$order = array('field' => 'tagente_estado.estado', 'order' => 'ASC');
+				break;
+			case 'down':
+				$selectStatusDown = $selected;
+				$order = array('field' => 'tagente_estado.estado', 'order' => 'DESC');
+				break;
+		}
+		break;
+	case 'data':
+		switch ($sort) {
+			case 'up':
+				$selectDataUp = $selected;
+				$order = array('field' => 'tagente_estado.datos', 'order' => 'ASC');
+				break;
+			case 'down':
+				$selectDataDown = $selected;
+				$order = array('field' => 'tagente_estado.datos', 'order' => 'DESC');
+				break;
+		}
+		break;
+	case 'last_contact':
+		switch ($sort) {
+			case 'up':
+				$selectLastContactUp = $selected;
+				$order = array('field' => 'tagente_estado.utimestamp', 'order' => 'ASC');
+				break;
+			case 'down':
+				$selectLastContactDown = $selected;
+				$order = array('field' => 'tagente_estado.utimestamp', 'order' => 'DESC');
+				break;
+		}
+		break;
+	default:
+		$selectTypeUp = '';
+		$selectTypeDown = '';
+		$selectNameUp = $selected;
+		$selectNameDown = '';
+		$selectStatusUp = '';
+		$selectStatusDown = '';
+		$selectDataUp = '';
+		$selectDataDown = '';
+		$selectLastContactUp = '';
+		$selectLastContactDown = '';
+		
+		$order = array('field' => 'tagente_modulo.nombre', 'order' => 'ASC');
+		break;
+}
+
 // Get all module from agent
 $sql = sprintf ("
 	SELECT *
@@ -35,8 +128,8 @@ $sql = sprintf ("
 		AND tagente_modulo.disabled = 0
 		AND tagente_modulo.delete_pending = 0
 		AND tagente_estado.utimestamp != 0 
-	ORDER BY tagente_modulo.id_module_group , tagente_modulo.nombre
-	", $id_agente);
+	ORDER BY tagente_modulo.id_module_group , %s %s
+	", $id_agente, $order['field'], $order['order']);
 
 $modules = get_db_all_rows_sql ($sql);
 if (empty ($modules)) {
@@ -50,13 +143,23 @@ $table->head = array ();
 $table->data = array ();
 
 $table->head[0] = '';
-$table->head[1] = __('Type');
-$table->head[2] = __('Module name');
+$table->head[1] = __('Type') . ' ' .
+	'<a href="' . $url . '&sort_field=type&sort=up"><img src="images/sort_up.png" style="' . $selectTypeUp . '" /></a>' .
+	'<a href="' . $url . '&sort_field=type&sort=down"><img src="images/sort_down.png" style="' . $selectTypeDown . '" /></a>';
+$table->head[2] = __('Module name') . ' ' .
+	'<a href="' . $url . '&sort_field=name&sort=up"><img src="images/sort_up.png" style="' . $selectNameUp . '" /></a>' .
+	'<a href="' . $url . '&sort_field=name&sort=down"><img src="images/sort_down.png" style="' . $selectNameDown . '" /></a>';
 $table->head[3] = __('Description');
-$table->head[4] = __('Status');
-$table->head[5] = __('Data');
+$table->head[4] = __('Status') . ' ' .
+	'<a href="' . $url . '&sort_field=status&sort=up"><img src="images/sort_up.png" style="' . $selectStatusUp . '" /></a>' .
+	'<a href="' . $url . '&sort_field=status&sort=down"><img src="images/sort_down.png" style="' . $selectStatusDown . '" /></a>';
+$table->head[5] = __('Data') . ' ' .
+	'<a href="' . $url . '&sort_field=data&sort=up"><img src="images/sort_up.png" style="' . $selectDataUp . '" /></a>' .
+	'<a href="' . $url . '&sort_field=data&sort=down"><img src="images/sort_down.png" style="' . $selectDataDown . '" /></a>';
 $table->head[6] = __('Graph');
-$table->head[7] = __('Last contact');
+$table->head[7] = __('Last contact') . ' ' .
+	'<a href="' . $url . '&sort_field=last_contact&sort=up"><img src="images/sort_up.png" style="' . $selectLastContactUp . '" /></a>' .
+	'<a href="' . $url . '&sort_field=last_contact&sort=down"><img src="images/sort_down.png" style="' . $selectLastContactDown . '" /></a>';
 
 $table->align = array("left","left","left","left","center");
 
diff --git a/pandora_console/operation/agentes/estado_ultimopaquete.php b/pandora_console/operation/agentes/estado_ultimopaquete.php
index 9b112733d0..c672f3b9c4 100644
--- a/pandora_console/operation/agentes/estado_ultimopaquete.php
+++ b/pandora_console/operation/agentes/estado_ultimopaquete.php
@@ -59,6 +59,8 @@ $selectIntervalUp = '';
 $selectIntervalDown = '';
 $selectTimestampUp = '';
 $selectTimestampDown = '';
+$selectDataUp = '';
+$selectDataDown = '';
 
 $order[] = array('field' => 'id_module_group', 'order' => 'ASC');
 
@@ -111,6 +113,19 @@ switch ($sortField) {
 				break;
 		}
 		break;
+	case 'data':
+		switch ($sort) {
+			case 'up':
+				$selectDataUp = $selected;
+				$order[] = array('field' => 'tagente_estado.datos', 'order' => 'ASC');
+				break;
+			case 'down':
+				$selectDataDown = $selected;
+				$order[] = array('field' => 'tagente_estado.datos', 'order' => 'DESC');
+				break;
+		}
+		break;
+		break;
 	default:
 		$selectNameUp = $selected;
 		$selectNameDown = '';
@@ -136,7 +151,7 @@ if ($modules === false) {
 	return;
 }
 
-echo "<table width='95%' cellpadding='3' cellspacing='3' class='databox'>";
+echo "<table width='98%' cellpadding='3' cellspacing='3' class='databox'>";
 echo "<th></th>";
 echo "<th>".__('Module name') . ' ' .
 			'<a href="' . $url . '&sort_field=name&sort=up"><img src="images/sort_up.png" style="' . $selectNameUp . '" /></a>' .
@@ -151,7 +166,10 @@ echo "<th>".__('int') . ' ' .
 			'<a href="' . $url . '&sort_field=interval&sort=down"><img src="images/sort_down.png" style="' . $selectIntervalDown . '" /></a>';
 echo "</th>";
 echo "<th>".__('Description') . "</th>";
-echo "<th>".__('Data') . "</th>";
+echo "<th>".__('Data') . ' ' .
+	'<a href="' . $url . '&sort_field=data&sort=up"><img src="images/sort_up.png" style="' . $selectDataUp . '" /></a>' .
+	'<a href="' . $url . '&sort_field=data&sort=down"><img src="images/sort_down.png" style="' . $selectDataDown . '" /></a>';
+echo "</th>";
 echo "<th>".__('Graph')."</th>";
 echo "<th>".__('Raw Data')."</th>";
 echo "<th>".__('Timestamp') . ' ' .