2014-01-31 Sergio Martin <sergio.martin@artica.es>

* mobile/operation/agent.php
	mobile/operation/events.php
	mobile/operation/modules.php
	mobile/operation/alerts.php
	mobile/include/style/main.css
	include/functions.php: Fixed last 10 events on
	agent view and improve usability and styles



git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@9392 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
zarzuelo 2014-01-31 10:50:55 +00:00
parent b83c4a25f5
commit 6951d59a89
7 changed files with 167 additions and 59 deletions

View File

@ -1,3 +1,19 @@
2014-01-31 Sergio Martin <sergio.martin@artica.es>
* mobile/operation/agent.php
mobile/operation/events.php
mobile/operation/modules.php
mobile/operation/alerts.php
mobile/include/style/main.css
include/functions.php: Fixed last 10 events on
agent view and improve usability and styles
2014-01-30 Sergio Martin <sergio.martin@artica.es>
* include/languages/es.po
include/languages/es.mo: Update some spanish
bad translations
2014-01-30 Sergio Martin <sergio.martin@artica.es> 2014-01-30 Sergio Martin <sergio.martin@artica.es>
* operation/gis_maps/ajax.php: Fixed broken agent * operation/gis_maps/ajax.php: Fixed broken agent

View File

@ -1,5 +1,6 @@
* { * {
text-decoration: none !important; text-decoration: none !important;
font-size: 12px;
} }
body { body {
@ -8,7 +9,6 @@ body {
direction: ltr; direction: ltr;
display: block; display: block;
font-family: Arial,Helvetica,sans-serif; font-family: Arial,Helvetica,sans-serif;
font-size: 12px;
margin: 0; margin: 0;
text-align: left; text-align: left;
vertical-align: top; vertical-align: top;
@ -27,12 +27,14 @@ body {
} }
/*INIT----------Tactical styles-----------------------------------------*/ /*INIT----------Tactical styles-----------------------------------------*/
/* Common */
#tactical1 *, #tactical2 * { #tactical1 *, #tactical2 * {
font-size: 12px !important; font-weight: bold;
} }
#tactical1 a, #tactical2 a { #tactical1 a, #tactical2 a {
font-size: 18px !important; font-weight: bold;
color: #222;
} }
legend { legend {
@ -47,6 +49,24 @@ legend {
font-weight: normal !important; font-weight: normal !important;
text-shadow: none !important; text-shadow: none !important;
} }
/* For mobiles */
@media screen and (max-width: 750px)
{
#tactical1 *, #tactical2 * {
font-size: 12px;
}
#tactical1 a, #tactical2 a {
font-size: 18px;
}
}
/* For tablets */
@media screen and (min-width: 750px)
{
#tactical1 a, #tactical2 a {
font-size: 25px !important;
}
}
/*END-----------Tactical styles-----------------------------------------*/ /*END-----------Tactical styles-----------------------------------------*/
#status_pie { #status_pie {
@ -250,6 +270,14 @@ table#list_events th {
border: 0px; border: 0px;
} }
div.graph {
margin: 0 auto;
}
.tickLabels * {
font-size: 10px !important;
}
table.alternate tr:nth-child(odd) td, table.alternate tr:nth-child(odd) th{ table.alternate tr:nth-child(odd) td, table.alternate tr:nth-child(odd) th{
background-color: #ffffff; background-color: #ffffff;
} }
@ -457,6 +485,15 @@ table.event_details td.cell_event_name {
font-size: 12px !important; font-size: 12px !important;
} }
.agent_details {
line-height: 25px;
}
.agent_name {
font-weight: bold;
font-size: 14px;
}
@media screen and (max-width: 25em) { @media screen and (max-width: 25em) {
#list_agents .cell_2 .ui-table-cell-label, #list_agents .cell_2 .ui-table-cell-label,
#list_agents .cell_3 .ui-table-cell-label, #list_agents .cell_3 .ui-table-cell-label,
@ -573,6 +610,11 @@ table.event_details td.cell_event_name {
color: #000000 !important; color: #000000 !important;
} }
#list_Modules .module_name {
font-size: 15px;
font-weight: bold;
}
@media screen and (max-width: 25em) { @media screen and (max-width: 25em) {
#list_Modules_Embedded .cell_1 .ui-table-cell-label, #list_Modules_Embedded .cell_1 .ui-table-cell-label,
#list_Modules_Embedded .cell_4 .ui-table-cell-label { #list_Modules_Embedded .cell_4 .ui-table-cell-label {
@ -827,7 +869,11 @@ li.ui-btn {
} }
* { * {
font-size: 18px; font-size: 18px !important;
}
.event_name {
font-size: 18px !important;
} }
} }
@ -837,9 +883,9 @@ li.ui-btn {
max-width: 300px; max-width: 300px;
} }
#logout_dialog-button_close { .event_name {
display: block; font-size: 15px;
margin: 15px auto; font-weight: bold;
} }
#login_container #login_btn-container { #login_container #login_btn-container {

View File

@ -65,6 +65,7 @@ class Agent {
$system = System::getInstance(); $system = System::getInstance();
$ui->createPage(); $ui->createPage();
if ($this->id != 0) { if ($this->id != 0) {
$agent_name = (string) agents_get_name ($this->id); $agent_name = (string) agents_get_name ($this->id);
@ -109,20 +110,22 @@ class Agent {
if (!empty($addresses)) { if (!empty($addresses)) {
$ip .= ui_print_help_tip(__('Other IP addresses').': <br>'.implode('<br>',$addresses), true); $ip .= ui_print_help_tip(__('Other IP addresses').': <br>'.implode('<br>',$addresses), true);
} }
$ip .= '<br />';
$last_contant = '<b>' . __('Last contact') . ' / ' . __('Remote') . '</b>&nbsp;' $last_contact = __('Last contact') . ' / ' . __('Remote') . '<b>:&nbsp;'
.ui_print_timestamp ($this->agent["ultimo_contacto"], true); .ui_print_timestamp ($this->agent["ultimo_contacto"], true) . '</b><br />';
$description = $description =
empty($agent["comentarios"]) ? '<em>' . __('N/A') . '</em>' : $this->agent["comentarios"]; empty($agent["comentarios"]) ? '' : $this->agent["comentarios"] . '<br />';
$html = '<div class="agent_details">';
$html = ui_print_group_icon ($this->agent["id_grupo"], true) . '&nbsp;&nbsp;'; $html .= ui_print_group_icon ($this->agent["id_grupo"], true) . '&nbsp;&nbsp;';
$html .= $agent_name . '<br />'; $html .= '<span class="agent_name">' . $agent_name . '</span><br />';
$html .= $ip . '<br />'; $html .= $ip;
$html .= $last_contant . '<br />'; $html .= $last_contact;
$html .= $description . '<br />'; $html .= $description;
$html .= '</div>';
$ui->contentGridAddCell($html); $ui->contentGridAddCell($html);
ob_start(); ob_start();
@ -132,6 +135,7 @@ class Agent {
$html .= "<b>" . __('Events (24h)') . "</b><br />"; $html .= "<b>" . __('Events (24h)') . "</b><br />";
$html .= graph_graphic_agentevents( $html .= graph_graphic_agentevents(
$this->id, 250, 15, 86400, ui_get_full_url(false), true); $this->id, 250, 15, 86400, ui_get_full_url(false), true);
$html .= '<br><br>';
$ui->contentGridAddCell($html); $ui->contentGridAddCell($html);
$ui->contentEndGrid(); $ui->contentEndGrid();
@ -153,12 +157,10 @@ class Agent {
$ui->contentEndCollapsible(); $ui->contentEndCollapsible();
$events = new Events(); $events = new Events();
$filters = array('id_agent' => $this->id);
$events->setFilters($filters);
$events->disabledColumns(array('agent'));
$events->setReadOnly();
$ui->contentBeginCollapsible(sprintf(__('Last %s Events'), $system->getPageSize())); $ui->contentBeginCollapsible(sprintf(__('Last %s Events'), $system->getPageSize()));
$ui->contentCollapsibleAddItem($events->listEventsHtml(0, true)); $tabledata = $events->listEventsHtml(0, true, 'last_agent_events');
$ui->contentCollapsibleAddItem($tabledata['table']);
$ui->contentCollapsibleAddItem($events->putEventsTableJS($this->id));
$ui->contentEndCollapsible(); $ui->contentEndCollapsible();
} }
$ui->endContent(); $ui->endContent();

View File

@ -258,7 +258,7 @@ class Alerts {
} }
$row = array(); $row = array();
if ($this->columns['agent']) { if (isset($this->columns['agent']) && $this->columns['agent']) {
$row[__('Agent')] = sprintf($disabled_style, $row[__('Agent')] = sprintf($disabled_style,
'<a class="ui-link" data-ajax="false" href="index.php?page=agent&id=' . $alert['id_agente'] . '">' . io_safe_output($alert['agent_name'])) . '</a>'; '<a class="ui-link" data-ajax="false" href="index.php?page=agent&id=' . $alert['id_agente'] . '">' . io_safe_output($alert['agent_name'])) . '</a>';
} }

View File

@ -59,7 +59,17 @@ class Events {
else { else {
switch ($parameter2) { switch ($parameter2) {
case 'get_events': case 'get_events':
if ($system->getRequest('agent_events', '0') == 1) {
$this->disabledColumns(array('agent'));
$filters = array('id_agent' => $system->getRequest('id_agent', 0));
$this->setFilters($filters);
$this->setReadOnly();
$this->eventsGetFilters(); $this->eventsGetFilters();
}
else {
$this->eventsGetFilters();
}
$page = $system->getRequest('page', 0); $page = $system->getRequest('page', 0);
$system = System::getInstance(); $system = System::getInstance();
@ -85,7 +95,7 @@ class Events {
break; break;
} }
if($event['criticity'] == EVENT_CRIT_WARNING) { if($event['criticity'] == EVENT_CRIT_WARNING || $event['criticity'] == EVENT_CRIT_MAINTENANCE ) {
$img_st = str_replace("white.png", "dark.png", $img_st); $img_st = str_replace("white.png", "dark.png", $img_st);
} }
@ -100,7 +110,7 @@ class Events {
} }
$row = array(); $row = array();
$row[] = $open_link . '<b class="ui-table-cell-label">' . __('Event Name') . '</b>' . io_safe_output($event['evento']) . $close_link; $row[] = $open_link . '<b class="ui-table-cell-label">' . __('Event Name') . '</b><div class="event_name">' . io_safe_output($event['evento']) . '</div>' . $close_link;
if ($event["id_agente"] == 0) { if ($event["id_agente"] == 0) {
$agent_name = __('System'); $agent_name = __('System');
@ -365,12 +375,15 @@ class Events {
if ($this->filter > 0) { if ($this->filter > 0) {
$this->loadPresetFilter(); $this->loadPresetFilter();
} }
$this->limit = $system->getRequest('limit', -1);
} }
public function setFilters($filters) { public function setFilters($filters) {
if (isset($filters['id_agent'])) { if (isset($filters['id_agent'])) {
$this->id_agent = $filters['id_agent']; $this->id_agent = $filters['id_agent'];
} }
if (isset($filters['all_events'])) { if (isset($filters['all_events'])) {
$this->all_events = $filters['all_events']; $this->all_events = $filters['all_events'];
} }
@ -700,10 +713,17 @@ class Events {
} }
//-------------------------------------------------------------- //--------------------------------------------------------------
if (isset($this->limit) && $this->limit != -1) {
$offset = 0;
$pagination = $this->limit;
}
else {
$offset = $page * $system->getPageSize();
$pagination = $system->getPageSize();
}
$events_db = events_get_events_grouped($sql_post, $events_db = events_get_events_grouped($sql_post,
$page * $system->getPageSize(), $system->getPageSize(), false, false); $offset, $pagination, false, false);
if (empty($events_db)) { if (empty($events_db)) {
$events_db = array(); $events_db = array();
} }
@ -713,7 +733,7 @@ class Events {
return array('events' => $events_db, 'total' => $total_events); return array('events' => $events_db, 'total' => $total_events);
} }
public function listEventsHtml($page = 0, $return = false) { public function listEventsHtml($page = 0, $return = false, $id_table = 'list_events') {
$system = System::getInstance(); $system = System::getInstance();
$listEvents = $this->getListEvents($page); $listEvents = $this->getListEvents($page);
@ -732,7 +752,7 @@ class Events {
else { else {
// Create an empty table to be filled from ajax // Create an empty table to be filled from ajax
$table = new Table(); $table = new Table();
$table->id = 'list_events'; $table->id = $id_table;
if (!$return) { if (!$return) {
$ui->contentAddHtml($table->getHTML()); $ui->contentAddHtml($table->getHTML());
@ -747,11 +767,19 @@ class Events {
$this->addJavascriptDialog(); $this->addJavascriptDialog();
} }
else { else {
return $table->getHTML(); $this->addJavascriptAddBottom();
return array('table' => $table->getHTML(), 'data' => $events_db);
} }
} }
} }
public function putEventsTableJS($id_agent) {
return "<script type=\"text/javascript\">
ajax_load_latest_agent_events(" . $id_agent . ", 10);
</script>";
}
private function addJavascriptDialog() { private function addJavascriptDialog() {
$ui = Ui::getInstance(); $ui = Ui::getInstance();
@ -891,14 +919,13 @@ class Events {
$ui->contentAddHtml("<script type=\"text/javascript\"> $ui->contentAddHtml("<script type=\"text/javascript\">
var load_more_rows = 1; var load_more_rows = 1;
var page = 0; var page = 0;
function add_rows(data, table_id) {
function add_rows(data) {
if (data.end) { if (data.end) {
$(\"#loading_rows\").hide(); $(\"#loading_rows\").hide();
} }
else { else {
$.each(data.events, function(key, event) { $.each(data.events, function(key, event) {
$(\"table#list_events tbody\").append( $(\"table#\"+table_id+\" tbody\").append(
\"<tr class='events \" + event[2] + \"'>\" + \"<tr class='events \" + event[2] + \"'>\" +
\"<td class='cell_0'>\" + \"<td class='cell_0'>\" +
event[0] + event[0] +
@ -917,7 +944,6 @@ class Events {
function ajax_load_rows() { function ajax_load_rows() {
if (load_more_rows) { if (load_more_rows) {
load_more_rows = 0; load_more_rows = 0;
postvars = {}; postvars = {};
@ -937,20 +963,38 @@ class Events {
$.post(\"index.php\", $.post(\"index.php\",
postvars, postvars,
function (data) { function (data) {
add_rows(data); add_rows(data, 'list_events');
if($('#list_events').offset() != undefined) {
//For large screens load the new events //For large screens load the new events
//Check if the end of the event list tables is in the client limits //Check if the end of the event list tables is in the client limits
var table_end = $('#list_events').offset().top + $('#list_events').height(); var table_end = $('#list_events').offset().top + $('#list_events').height();
if (table_end < document.documentElement.clientHeight) { if (table_end < document.documentElement.clientHeight) {
ajax_load_rows(); ajax_load_rows();
} }
}
}, },
\"json\"); \"json\");
} }
} }
function ajax_load_latest_agent_events(id_agent, limit) {
postvars = {};
postvars[\"action\"] = \"ajax\";
postvars[\"parameter1\"] = \"events\";
postvars[\"parameter2\"] = \"get_events\";
postvars[\"agent_events\"] = \"1\";
postvars[\"id_agent\"] = id_agent;
postvars[\"limit\"] = limit;
$.post(\"index.php\",
postvars,
function (data) {
add_rows(data, 'last_agent_events');
},
\"json\");
}
$(document).ready(function() { $(document).ready(function() {
ajax_load_rows(); ajax_load_rows();

View File

@ -407,12 +407,12 @@ class Modules {
$row = array(); $row = array();
$row[0] = $row[__('Module name')] = $row[0] = $row[__('Module name')] =
'<span class="data">'.$module['module_name']."</span>"; '<span class="data module_name">'.ui_print_truncate_text($module['module_name'], 30, false)."</span>";
if ($this->columns['agent']) { if ($this->columns['agent']) {
$row[1] = $row[__('Agent name')] = $row[1] = $row[__('Agent name')] =
'<span class="data"><span class="show_collapside" style="display: none; font-weight: bolder;">' . __('Agent') . ' </span>' . '<span class="data"><span class="show_collapside" style="display: none; font-weight: bolder;">' . __('Agent') . ' </span>' .
'<a class="ui-link" data-ajax="false" href="index.php?page=agent&id=' . $module["id_agent"] . '">' . $module['agent_name'] . '</a>' . '<a class="ui-link" data-ajax="false" href="index.php?page=agent&id=' . $module["id_agent"] . '">' . ui_print_truncate_text($module['agent_name'], 50, false) . '</a>' .
'</span>'; '</span>';
} }
if ($module['utimestamp'] == 0 && (($module['module_type'] < 21 || if ($module['utimestamp'] == 0 && (($module['module_type'] < 21 ||
@ -454,8 +454,8 @@ class Modules {
} }
} }
$row[4] = $row[__('Interval')] = $row[__('Interval')] =
($module['module_interval'] == 0) ? human_time_description_raw($module['agent_interval']) : human_time_description_raw($module['module_interval']); ($module['module_interval'] == 0) ? human_time_description_raw($module['agent_interval'], false, 'tiny') : human_time_description_raw($module['module_interval'], false, 'tiny');
$row[4] = $row[__('Interval')] = '<span class="data"><span class="show_collapside" style="display: none; font-weight: bolder;">' . __('Interval.') . ' </span>' . $row[4] = $row[__('Interval')] = '<span class="data"><span class="show_collapside" style="display: none; font-weight: bolder;">' . __('Interval.') . ' </span>' .
$row[__('Interval')] . $row[__('Interval')] .
@ -463,8 +463,8 @@ class Modules {
$row[6] = $row[__('Timestamp')] = $row[6] = $row[__('Timestamp')] =
'<span class="data"><span class="show_collapside" style="display: none; font-weight: bolder;">&nbsp;' . __('Last update.') . ' </span>' . '<span class="data"><span class="show_collapside" style="display: none; font-weight: bolder;">' . __('Last update.') . ' </span>' .
ui_print_timestamp($module["utimestamp"], true) . '</span>'; ui_print_timestamp($module["utimestamp"], true, array('units' => 'tiny')) . '</span>';
if (is_numeric($module["datos"])) { if (is_numeric($module["datos"])) {
$output = format_numeric($module["datos"]); $output = format_numeric($module["datos"]);
@ -624,7 +624,7 @@ class Modules {
$(\"table#list_Modules tbody\").append(\"<tr>\" + $(\"table#list_Modules tbody\").append(\"<tr>\" +
\"<th class='head_vertical'></th>\" + \"<th class='head_vertical'></th>\" +
\"<td class='cell_1'><b class='ui-table-cell-label'>" . __('Module name') . "</b>\" + module[0] + \"</td>\" + \"<td class='cell_1'><b class='ui-table-cell-label'>" . __('Module name') . "</b>\" + module[0] + \"</td>\" +
\"<td class='cell_0'><b class='ui-table-cell-label'>" . __('Agent name') . "</b>\" + module[2] + \"</td>\" + \"<td class='cell_0'><b class='ui-table-cell-label'>" . __('Agent name') . "</b>\" + module[1] + \"</td>\" +
\"<td class='cell_2'><b class='ui-table-cell-label'>" . __('Status') . "</b>\" + module[5] + \"</td>\" + \"<td class='cell_2'><b class='ui-table-cell-label'>" . __('Status') . "</b>\" + module[5] + \"</td>\" +
\"<td class='cell_3'><b class='ui-table-cell-label'>" . __('Interval') . "</b>\" + module[4] + \"</td>\" + \"<td class='cell_3'><b class='ui-table-cell-label'>" . __('Interval') . "</b>\" + module[4] + \"</td>\" +
\"<td class='cell_4'><b class='ui-table-cell-label'>" . __('Timestamp') . "</b>\" + module[6] + \"</td>\" + \"<td class='cell_4'><b class='ui-table-cell-label'>" . __('Timestamp') . "</b>\" + module[6] + \"</td>\" +