Added DXCC timeline.
这个提交包含在:
父节点
ac3b0475bc
当前提交
e2d84f2332
共有 6 个文件被更改,包括 254 次插入 和 1 次删除
|
|
@ -0,0 +1,58 @@
|
||||||
|
<?php
|
||||||
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||||
|
|
||||||
|
class Timeline 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'] = "DXCC Timeline";
|
||||||
|
|
||||||
|
$this->load->model('Timeline_model');
|
||||||
|
|
||||||
|
if ($this->input->post('band') != NULL) { // Band is not set when page first loads.
|
||||||
|
$band = $this->input->post('band');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$band = 'All';
|
||||||
|
}
|
||||||
|
|
||||||
|
$data['dxcc_timeline_array'] = $this->Timeline_model->get_dxcc_timeline($band);
|
||||||
|
$data['worked_bands'] = $this->Timeline_model->get_worked_bands();
|
||||||
|
$data['bandselect'] = $band;
|
||||||
|
|
||||||
|
$this->load->view('interface_assets/header', $data);
|
||||||
|
$this->load->view('timeline/index');
|
||||||
|
$this->load->view('interface_assets/footer');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function details() {
|
||||||
|
$this->load->model('logbook_model');
|
||||||
|
|
||||||
|
$adif = str_replace('"', "", $this->input->get("Adif"));
|
||||||
|
$country = $this->logbook_model->get_entity($adif);
|
||||||
|
$band = str_replace('"', "", $this->input->get("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('interface_assets/header', $data);
|
||||||
|
$this->load->view('timeline/details');
|
||||||
|
$this->load->view('interface_assets/footer');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -263,6 +263,26 @@ class Logbook_model extends CI_Model {
|
||||||
return $this->db->get($this->config->item('table_name'));
|
return $this->db->get($this->config->item('table_name'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function timeline_qso_details($adif, $band){
|
||||||
|
$CI =& get_instance();
|
||||||
|
$CI->load->model('Stations');
|
||||||
|
$station_id = $CI->Stations->find_active();
|
||||||
|
|
||||||
|
if ($band != 'All') {
|
||||||
|
if ($band == 'SAT') {
|
||||||
|
$this->db->where('col_prop_mode', $band);
|
||||||
|
} else {
|
||||||
|
$this->db->where('COL_PROP_MODE !=', 'SAT');
|
||||||
|
$this->db->where('col_band', $band);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->db->where('station_id', $station_id);
|
||||||
|
$this->db->where('COL_DXCC', $adif);
|
||||||
|
|
||||||
|
return $this->db->get($this->config->item('table_name'));
|
||||||
|
}
|
||||||
|
|
||||||
public function was_qso_details($state, $band){
|
public function was_qso_details($state, $band){
|
||||||
$CI =& get_instance();
|
$CI =& get_instance();
|
||||||
$CI->load->model('Stations');
|
$CI->load->model('Stations');
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,97 @@
|
||||||
|
<?php
|
||||||
|
if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||||
|
|
||||||
|
class Timeline_model extends CI_Model
|
||||||
|
{
|
||||||
|
function __construct()
|
||||||
|
{
|
||||||
|
// Call the Model constructor
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_dxcc_timeline($band)
|
||||||
|
{
|
||||||
|
$CI =& get_instance();
|
||||||
|
$CI->load->model('Stations');
|
||||||
|
$station_id = $CI->Stations->find_active();
|
||||||
|
|
||||||
|
$sql = "select min(date(COL_TIME_ON)) date, prefix, col_country, end, adif from "
|
||||||
|
.$this->config->item('table_name'). " thcv
|
||||||
|
join dxcc_entities on thcv.col_dxcc = dxcc_entities.adif
|
||||||
|
where 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 .= " group by col_dxcc, col_country
|
||||||
|
order by date desc";
|
||||||
|
|
||||||
|
$query = $this->db->query($sql);
|
||||||
|
|
||||||
|
return $query->result();
|
||||||
|
}
|
||||||
|
|
||||||
|
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,
|
||||||
|
);
|
||||||
|
|
||||||
|
function get_worked_bands()
|
||||||
|
{
|
||||||
|
$CI =& get_instance();
|
||||||
|
$CI->load->model('Stations');
|
||||||
|
$station_id = $CI->Stations->find_active();
|
||||||
|
|
||||||
|
// get all worked slots from database
|
||||||
|
$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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -71,7 +71,9 @@
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
<a class="dropdown-item" href="<?php echo site_url('distances');?>" title="Distances">Distances worked</a>
|
<a class="dropdown-item" href="<?php echo site_url('distances');?>" title="Distances">Distances worked</a>
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
<a class="dropdown-item" href="<?php echo site_url('dayswithqso');?>" title="Distances">Days with QSOs</a>
|
<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>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<h2>Logbook</h2>
|
||||||
|
|
||||||
|
<h3>Filtering on <?php echo $filter ?></h3>
|
||||||
|
|
||||||
|
<?php $this->load->view('view_log/partial/log') ?>
|
||||||
|
|
@ -0,0 +1,69 @@
|
||||||
|
<div class="container">
|
||||||
|
<h1><?php echo $page_title; ?></h1>
|
||||||
|
|
||||||
|
<form class="form" action="<?php echo site_url('timeline'); ?>" 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 = count($dxcc_timeline_array);
|
||||||
|
if ($dxcc_timeline_array) {
|
||||||
|
echo '<table class="table table-bordered table-hover table-striped table-condensed text-center">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<td>#</td>
|
||||||
|
<td>Date</td>
|
||||||
|
<td>Prefix</td>
|
||||||
|
<td>Country</td>
|
||||||
|
<td>Deleted</td>
|
||||||
|
<td>End date</td>
|
||||||
|
<td>Show QSOs</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>';
|
||||||
|
|
||||||
|
foreach ($dxcc_timeline_array as $line) {
|
||||||
|
echo '<tr>
|
||||||
|
<td>' . $i-- . '</td>
|
||||||
|
<td>' . $line->date . '</td>
|
||||||
|
<td>' . $line->prefix . '</td>
|
||||||
|
<td>' . $line->col_country . '</td>
|
||||||
|
<td>';
|
||||||
|
if (!empty($line->end)) echo 'Yes';
|
||||||
|
echo '</td>
|
||||||
|
<td>' . $line->end . '</td>
|
||||||
|
<td><a href=\'timeline\details?Adif="' . $line->adif . '"&Band="'. $bandselect . '"\'>Show</a></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">×</a>Nothing found!</div>';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
</div>
|
||||||
正在加载…
在新工单中引用