title = __('General overview'); $this->ajaxMethods = [ 'getLogSizeStatus', 'getServerStatus', ]; $this->interval = 300000; $this->refreshConfig = [ 'logSizeStatus' => [ 'id' => 'status-log-size', 'method' => 'getLogSizeStatus', ], 'ServerStatus' => [ 'id' => 'status-servers', 'method' => 'getServerStatus', ], ]; } /** * Return the html log size status. * * @return string */ public function getLogSizeStatus():string { $size = $this->valueMonitoring('console_log_size'); $status = ($size[0]['datos'] < 1000) ? true : false; if ($status === true) { $image_status = html_print_image('images/status_check@svg.svg', true); $text = html_print_div( [ 'content' => __('Everything’s OK!'), 'class' => 'status-text', ], true ); } else { $image_status = html_print_image('images/status_error@svg.svg', true); $text = html_print_div( [ 'content' => __('Too size log size'), 'class' => 'status-text', ], true ); } $output = $image_status.$text; return html_print_div( [ 'content' => $output, 'class' => 'margin-top-5 flex_center', 'id' => 'status-log-size', ], true ); } /** * Return the html Servers status. * * @return string */ public function getServerStatus():string { $status = check_all_servers_up(); if ($status === true) { $image_status = html_print_image('images/status_check@svg.svg', true); $text = html_print_div( [ 'content' => __('Everything’s OK!'), 'class' => 'status-text', ], true ); } else { $image_status = html_print_image('images/status_error@svg.svg', true); $text = html_print_div( [ 'content' => __('Something’s wrong'), 'class' => 'status-text', ], true ); } $output = $image_status.$text; return html_print_div( [ 'content' => $output, 'class' => 'flex_center margin-top-5', 'id' => 'status-servers', ], true ); } /** * Returns the html of the used licenses. * * @return string */ public function getLicenseUsageGraph():string { // TODO connect to automonitorization. $options = [ 'labels' => [ 'Agents used', 'Free agents', ], 'colors' => [ '#1C4E6B', '#5C63A2', ], 'legend' => [ 'position' => 'bottom', 'align' => 'right', ], 'cutout' => 80, ]; $pie = ring_graph([60, 40], $options); $output = html_print_div( [ 'content' => $pie, 'style' => 'margin: 0 auto; max-width: 320px', ], true ); return $output; } /** * Returns the html of a graph with the processed xmls * * @return string */ public function getXmlProcessedGraph():string { $sql = 'SELECT utimestamp, DATE_FORMAT(FROM_UNIXTIME(utimestamp), "%Y-%m-%d %H:00:00") AS hour, COUNT(*) AS xml_proccessed FROM tagent_access WHERE FROM_UNIXTIME(utimestamp) >= NOW() - INTERVAL 24 HOUR GROUP BY hour ORDER BY hour;'; $rows = db_process_sql($sql); $dates = []; $xml_proccessed = []; $total = 0; foreach ($rows as $key => $raw_data) { $dates[] = date('H:00:00', $raw_data['utimestamp']); $total += $raw_data['xml_proccessed']; $xml_proccessed[] = $raw_data['xml_proccessed']; } $options = [ 'labels' => $dates, 'legend' => [ 'display' => false ], 'tooltips' => [ 'display' => false ], 'scales' => [ 'y' => [ 'grid' => ['display' => false], 'ticks' => ['display' => false], ], 'x' => [ 'grid' => ['display' => false], 'display' => false, ], ], ]; $data = [ [ 'backgroundColor' => '#009D9E', 'borderColor' => '#009D9E', 'pointBackgroundColor' => '#009D9E', 'pointHoverBorderColor' => '#009D9E', 'data' => $xml_proccessed, ], ]; $graph_area = html_print_div( [ 'content' => line_graph($data, $options), 'class' => 'margin-top-5 w100p h100p', 'style' => 'max-height: 330px;', ], true ); $total = html_print_div( [ 'content' => $total, 'class' => 'text-xl', ], true ); $output = $total.$graph_area; return $output; } }