Added mode, view and controller for accumulated stats.

pull/643/head
Andreas 2020-10-04 21:41:01 +02:00
rodzic 44eee371d6
commit e80c9b8ef8
4 zmienionych plików z 210 dodań i 0 usunięć

Wyświetl plik

@ -0,0 +1,56 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Accumulated extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->model('user_model');
if(!$this->user_model->authorize(2)) { $this->session->set_flashdata('notice', 'You\'re not allowed to do that!'); redirect('dashboard'); }
}
public function index()
{
// Render Page
$data['page_title'] = "Accumulated statistics";
$this->load->model('Accumulate_model');
if ($this->input->post('band') != NULL) { // Band is not set when page first loads.
$band = $this->input->post('band');
}
else {
$band = 'All';
}
$data['accumulated_dxcc_array'] = $this->Accumulate_model->get_accumulated_dxcc($band);
$data['worked_bands'] = $this->Accumulate_model->get_worked_bands();
$data['bandselect'] = $band;
$this->load->view('interface_assets/header', $data);
$this->load->view('accumulate/index');
$this->load->view('interface_assets/footer');
}
public function details() {
$this->load->model('logbook_model');
$adif = str_replace('"', "", $this->input->post("Adif"));
$country = $this->logbook_model->get_entity($adif);
$band = str_replace('"', "", $this->input->post("Band"));
$data['results'] = $this->logbook_model->timeline_qso_details($adif, $band);
// Render Page
$data['page_title'] = "Log View - DXCC";
$data['filter'] = "country ". $country['name'];
if ($band != "All") {
$data['filter'] .= " and " . $band;
}
$this->load->view('timeline/details', $data);
}
}

Wyświetl plik

@ -0,0 +1,93 @@
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Accumulate_model extends CI_Model
{
function __construct()
{
// Call the Model constructor
parent::__construct();
}
function get_accumulated_dxcc($band) {
$CI =& get_instance();
$CI->load->model('Stations');
$station_id = $CI->Stations->find_active();
$sql = "SELECT year(col_time_on) as year,
(select count(distinct b.col_dxcc) from " . $this->config->item('table_name') . " as b where year(col_time_on) <= year and b.station_id = ". $station_id;
if ($band != 'All') {
if ($band == 'SAT') {
$sql .= " and col_prop_mode ='" . $band . "'";
} else {
$sql .= " and col_prop_mode !='SAT'";
$sql .= " and col_band ='" . $band . "'";
}
}
$sql .=") total from " . $this->config->item('table_name') . " as a
where a.station_id = ". $station_id;
$sql .= " group by year(a.col_time_on)
order by year(a.col_time_on)";
$query = $this->db->query($sql);
return $query->result();
}
function get_worked_bands() {
$CI =& get_instance();
$CI->load->model('Stations');
$station_id = $CI->Stations->find_active();
$data = $this->db->query(
"SELECT distinct LOWER(`COL_BAND`) as `COL_BAND` FROM `" . $this->config->item('table_name') . "` WHERE station_id = " . $station_id . " AND COL_PROP_MODE != \"SAT\""
);
$worked_slots = array();
foreach ($data->result() as $row) {
array_push($worked_slots, $row->COL_BAND);
}
$SAT_data = $this->db->query(
"SELECT distinct LOWER(`COL_PROP_MODE`) as `COL_PROP_MODE` FROM `" . $this->config->item('table_name') . "` WHERE station_id = " . $station_id . " AND COL_PROP_MODE = \"SAT\""
);
foreach ($SAT_data->result() as $row) {
array_push($worked_slots, strtoupper($row->COL_PROP_MODE));
}
// bring worked-slots in order of defined $bandslots
$results = array();
foreach (array_keys($this->bandslots) as $slot) {
if (in_array($slot, $worked_slots)) {
array_push($results, $slot);
}
}
return $results;
}
public $bandslots = array("160m" => 0,
"80m" => 0,
"60m" => 0,
"40m" => 0,
"30m" => 0,
"20m" => 0,
"17m" => 0,
"15m" => 0,
"12m" => 0,
"10m" => 0,
"6m" => 0,
"4m" => 0,
"2m" => 0,
"70cm" => 0,
"23cm" => 0,
"13cm" => 0,
"9cm" => 0,
"6cm" => 0,
"3cm" => 0,
"1.25cm" => 0,
"SAT" => 0,
);
}

Wyświetl plik

@ -0,0 +1,59 @@
<div class="container">
<h2><?php echo $page_title; ?></h1>
<form class="form" action="<?php echo site_url('accumulated'); ?>" method="post" enctype="multipart/form-data">
<fieldset>
<!-- Select Basic -->
<div class="form-group row">
<label class="col-md-1 control-label" for="band">Band</label>
<div class="col-md-2">
<select id="band2" name="band" class="form-control">
<option value="All" <?php if ($this->input->post('band') == "All" || $this->input->method() !== 'post') echo ' selected'; ?> >All</option>
<?php foreach($worked_bands as $band) {
echo '<option value="' . $band . '"';
if ($this->input->post('band') == $band) echo ' selected';
echo '>' . $band . '</option>'."\n";
} ?>
</select>
</div>
</div>
<!-- Button (Double) -->
<div class="form-group row">
<label class="col-md-1 control-label" for="button1id"></label>
<div class="col-md-10">
<button id="button1id" type="submit" name="button1id" class="btn btn-success btn-primary">Show</button>
</div>
</div>
</fieldset>
</form>
<?php
$i = 1;
if ($accumulated_dxcc_array) {
echo '<table class="table table-sm table-bordered table-hover table-striped table-condensed text-center">
<thead>
<tr>
<td>#</td>
<td>Year</td>
<td>Accumulated # of DXCC\'s worked</td>
</tr>
</thead>
<tbody>';
foreach ($accumulated_dxcc_array as $line) {
echo '<tr>
<td>' . $i++ . '</td>
<td>' . $line->year . '</td>
<td>' . $line->total . '</td>
</tr>';
}
echo '</tfoot></table></div>';
}
else {
echo '<div class="alert alert-danger" role="alert"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>Nothing found!</div>';
}
?>
</div>

Wyświetl plik

@ -86,6 +86,8 @@
<a class="dropdown-item" href="<?php echo site_url('dayswithqso');?>" title="Dayswithqso">Days with QSOs</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('timeline');?>" title="Dxcctimeline">DXCC Timeline</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?php echo site_url('accumulated');?>" title="Dxcctimeline">Accumulated statistics</a>
</div>
</li>