Added mode, view and controller for accumulated stats.
这个提交包含在:
		
							父节点
							
								
									44eee371d6
								
							
						
					
					
						当前提交
						e80c9b8ef8
					
				
					共有  4 个文件被更改,包括 210 次插入 和 0 次删除
				
			
		|  | @ -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); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | @ -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, | ||||||
|  |     ); | ||||||
|  | } | ||||||
|  | @ -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">×</a>Nothing found!</div>'; | ||||||
|  |         } | ||||||
|  |         ?>
 | ||||||
|  | </div> | ||||||
|  | 
 | ||||||
|  | @ -86,6 +86,8 @@ | ||||||
|                     <a class="dropdown-item" href="<?php echo site_url('dayswithqso');?>" title="Dayswithqso">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> |                     <div class="dropdown-divider"></div> | ||||||
|                     <a class="dropdown-item" href="<?php echo site_url('timeline');?>" title="Dxcctimeline">DXCC Timeline</a> |                     <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> | 				</div> | ||||||
|         	</li> |         	</li> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		正在加载…
	
		在新工单中引用