Merge branch 'dev' into search_fix
这个提交包含在:
		
						当前提交
						437f60359e
					
				
					共有  13 个文件被更改,包括 285 次插入 和 14 次删除
				
			
		
							
								
								
									
										34
									
								
								application/controllers/Logbook.php
									
									
									
									
									
										
										
										可执行文件 -> 普通文件
									
								
							
							
						
						
									
										34
									
								
								application/controllers/Logbook.php
									
									
									
									
									
										
										
										可执行文件 -> 普通文件
									
								
							|  | @ -711,6 +711,40 @@ class Logbook extends CI_Controller { | |||
| 		$this->db->where('station_profile.user_id', $this->session->userdata('user_id')); | ||||
| 		$this->db->order_by(''.$this->config->item('table_name').'.COL_TIME_ON', 'desc'); | ||||
| 		return $this->db->get(); | ||||
|   } | ||||
| 
 | ||||
| 	function search_duplicates($station_id) { | ||||
| 		$station_id = $this->security->xss_clean($station_id); | ||||
| 
 | ||||
| 		$this->load->model('user_model'); | ||||
| 
 | ||||
| 		if(!$this->user_model->authorize($this->config->item('auth_mode'))) { return; } | ||||
| 		 | ||||
| 		$CI =& get_instance(); | ||||
| 		$CI->load->model('logbooks_model'); | ||||
| 		$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); | ||||
| 		 | ||||
| 		if (!$logbooks_locations_array) { | ||||
| 			return null; | ||||
| 		} | ||||
| 
 | ||||
| 		$location_list = "'".implode("','",$logbooks_locations_array)."'"; | ||||
| 		 | ||||
| 		$sql = 'select count(*) as occurence, COL_CALL, COL_MODE, COL_SUBMODE, station_callsign, COL_SAT_NAME, COL_BAND,  min(col_time_on) Mintime, max(col_time_on) Maxtime from ' . $this->config->item('table_name') .  | ||||
| 		' join station_profile on ' . $this->config->item('table_name') . '.station_id = station_profile.station_id where ' . $this->config->item('table_name') .'.station_id in ('. $location_list . ')';  | ||||
| 		 | ||||
| 		if ($station_id != 'All') { | ||||
| 			$sql .= ' and station_profile.station_id = ' . $station_id; | ||||
| 		} | ||||
| 		 | ||||
| 		$sql .= ' group by col_call, col_mode, COL_SUBMODE, STATION_CALLSIGN, col_band, COL_SAT_NAME having count(*) > 1 and timediff(maxtime, mintime) < 3000'; | ||||
| 
 | ||||
| 		$query = $this->db->query($sql); | ||||
| 
 | ||||
| 		$data['qsos'] = $query; | ||||
| 
 | ||||
| 		$this->load->view('search/duplicates_result.php', $data); | ||||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| 	/* | ||||
|  |  | |||
|  | @ -56,6 +56,18 @@ class Search extends CI_Controller { | |||
|         } | ||||
|     } | ||||
| 
 | ||||
| 	// Searches for duplicate QSOs within 30m of time difference
 | ||||
|     public function duplicates() { | ||||
| 		$this->load->model('stations'); | ||||
| 
 | ||||
| 		$data['station_profile'] = $this->stations->all_of_user(); | ||||
|         $data['page_title'] = "Duplicate QSOs within 30m time difference"; | ||||
| 
 | ||||
| 		$this->load->view('interface_assets/header', $data); | ||||
| 		$this->load->view('search/duplicates'); | ||||
| 		$this->load->view('interface_assets/footer'); | ||||
|     } | ||||
| 
 | ||||
|     function json_result() { | ||||
|           if(isset($_POST['search'])) { | ||||
| 			  $result = $this->fetchQueryResult($_POST['search'], false); | ||||
|  |  | |||
|  | @ -25,26 +25,47 @@ class Timeline extends CI_Controller { | |||
|             $band = 'All'; | ||||
|         } | ||||
| 
 | ||||
|         if ($this->input->post('mode') != NULL) {   // Band is not set when page first loads.
 | ||||
|         if ($this->input->post('mode') != NULL) { | ||||
|             $mode = $this->input->post('mode'); | ||||
|         } | ||||
|         else { | ||||
|             $mode = 'All'; | ||||
|         } | ||||
| 
 | ||||
|         if ($this->input->post('awardradio') != NULL) {   // Band is not set when page first loads.
 | ||||
|         if ($this->input->post('awardradio') != NULL) { | ||||
|             $award = $this->input->post('awardradio'); | ||||
|         } | ||||
|         else { | ||||
|             $award = 'dxcc'; | ||||
|         } | ||||
| 
 | ||||
|         if ($this->input->post('qsl') != NULL) { | ||||
|             $qsl = $this->input->post('qsl'); | ||||
|         } | ||||
|         else { | ||||
|             $qsl = '0'; | ||||
|         } | ||||
| 
 | ||||
|         if ($this->input->post('lotw') != NULL) { | ||||
|             $lotw = $this->input->post('lotw'); | ||||
|         } | ||||
|         else { | ||||
|             $lotw = '0'; | ||||
|         } | ||||
| 
 | ||||
|         if ($this->input->post('eqsl') != NULL) { | ||||
|             $eqsl = $this->input->post('eqsl'); | ||||
|         } | ||||
|         else { | ||||
|             $eqsl = '0'; | ||||
|         } | ||||
| 
 | ||||
|         $this->load->model('modes'); | ||||
|         $this->load->model('bands'); | ||||
| 
 | ||||
|         $data['modes'] = $this->modes->active(); | ||||
| 
 | ||||
|         $data['timeline_array'] = $this->Timeline_model->get_timeline($band, $mode, $award); | ||||
|         $data['timeline_array'] = $this->Timeline_model->get_timeline($band, $mode, $award, $qsl, $lotw, $eqsl); | ||||
|         $data['worked_bands'] = $this->bands->get_worked_bands(); | ||||
|         $data['bandselect'] = $band; | ||||
|         $data['modeselect'] = $mode; | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ if (!defined('BASEPATH')) exit('No direct script access allowed'); | |||
| 
 | ||||
| class Timeline_model extends CI_Model | ||||
| { | ||||
|     function get_timeline($band, $mode, $award)  { | ||||
|     function get_timeline($band, $mode, $award, $qsl, $lotw, $eqsl)  { | ||||
| 		$CI =& get_instance(); | ||||
| 		$CI->load->model('logbooks_model'); | ||||
| 		$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook')); | ||||
|  | @ -15,16 +15,16 @@ class Timeline_model extends CI_Model | |||
| 		$location_list = "'".implode("','",$logbooks_locations_array)."'"; | ||||
| 
 | ||||
|         switch ($award) { | ||||
|             case 'dxcc': $result = $this->get_timeline_dxcc($band, $mode, $location_list); break; | ||||
|             case 'was':  $result = $this->get_timeline_was($band, $mode, $location_list);  break; | ||||
|             case 'iota': $result = $this->get_timeline_iota($band, $mode, $location_list); break; | ||||
|             case 'waz':  $result = $this->get_timeline_waz($band, $mode, $location_list);  break; | ||||
|             case 'dxcc': $result = $this->get_timeline_dxcc($band, $mode, $location_list, $qsl, $lotw, $eqsl); break; | ||||
|             case 'was':  $result = $this->get_timeline_was($band, $mode, $location_list, $qsl, $lotw, $eqsl);  break; | ||||
|             case 'iota': $result = $this->get_timeline_iota($band, $mode, $location_list, $qsl, $lotw, $eqsl); break; | ||||
|             case 'waz':  $result = $this->get_timeline_waz($band, $mode, $location_list, $qsl, $lotw, $eqsl);  break; | ||||
|         } | ||||
| 
 | ||||
|         return $result; | ||||
|     } | ||||
| 
 | ||||
|     public function get_timeline_dxcc($band, $mode, $location_list) { | ||||
|     public function get_timeline_dxcc($band, $mode, $location_list, $qsl, $lotw, $eqsl) { | ||||
|         $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 | ||||
|  | @ -44,6 +44,8 @@ class Timeline_model extends CI_Model | |||
|             $sql .= " and col_mode ='" . $mode . "'"; | ||||
|         } | ||||
| 
 | ||||
|         $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl); | ||||
| 
 | ||||
|         $sql .= " group by col_dxcc, col_country
 | ||||
|                 order by date desc";
 | ||||
| 
 | ||||
|  | @ -52,7 +54,7 @@ class Timeline_model extends CI_Model | |||
|         return $query->result(); | ||||
|     } | ||||
| 
 | ||||
|     public function get_timeline_was($band, $mode, $location_list) { | ||||
|     public function get_timeline_was($band, $mode, $location_list, $qsl, $lotw, $eqsl) { | ||||
|         $sql = "select min(date(COL_TIME_ON)) date, col_state from " | ||||
|             .$this->config->item('table_name'). " thcv
 | ||||
|             where station_id in (" . $location_list . ")";
 | ||||
|  | @ -74,6 +76,8 @@ class Timeline_model extends CI_Model | |||
|         $sql .= " and COL_DXCC in ('291', '6', '110')"; | ||||
|         $sql .= " and COL_STATE in ('AK','AL','AR','AZ','CA','CO','CT','DE','FL','GA','HI','IA','ID','IL','IN','KS','KY','LA','MA','MD','ME','MI','MN','MO','MS','MT','NC','ND','NE','NH','NJ','NM','NV','NY','OH','OK','OR','PA','RI','SC','SD','TN','TX','UT','VA','VT','WA','WI','WV','WY')"; | ||||
| 
 | ||||
|         $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl); | ||||
| 
 | ||||
|         $sql .= " group by col_state
 | ||||
|                 order by date desc";
 | ||||
| 
 | ||||
|  | @ -82,7 +86,7 @@ class Timeline_model extends CI_Model | |||
|         return $query->result(); | ||||
|     } | ||||
| 
 | ||||
|     public function get_timeline_iota($band, $mode, $location_list) { | ||||
|     public function get_timeline_iota($band, $mode, $location_list, $qsl, $lotw, $eqsl) { | ||||
|         $sql = "select min(date(COL_TIME_ON)) date,  col_iota, name, prefix from " | ||||
|             .$this->config->item('table_name'). " thcv
 | ||||
|             join iota on thcv.col_iota = iota.tag | ||||
|  | @ -102,6 +106,8 @@ class Timeline_model extends CI_Model | |||
|             $sql .= " and col_mode ='" . $mode . "'"; | ||||
|         } | ||||
| 
 | ||||
|         $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl); | ||||
| 
 | ||||
|         $sql .= " and col_iota <> '' group by col_iota, name, prefix
 | ||||
|                 order by date desc";
 | ||||
| 
 | ||||
|  | @ -110,7 +116,7 @@ class Timeline_model extends CI_Model | |||
|         return $query->result(); | ||||
|     } | ||||
| 
 | ||||
|     public function get_timeline_waz($band, $mode, $location_list) { | ||||
|     public function get_timeline_waz($band, $mode, $location_list, $qsl, $lotw, $eqsl) { | ||||
|         $sql = "select min(date(COL_TIME_ON)) date, col_cqz from " | ||||
|             .$this->config->item('table_name'). " thcv
 | ||||
|             where station_id in (" . $location_list . ")";
 | ||||
|  | @ -129,6 +135,8 @@ class Timeline_model extends CI_Model | |||
|             $sql .= " and col_mode ='" . $mode . "'"; | ||||
|         } | ||||
| 
 | ||||
|         $sql .= $this->addQslToQuery($qsl, $lotw, $eqsl); | ||||
| 
 | ||||
|         $sql .= " and col_cqz <> '' group by col_cqz
 | ||||
|                 order by date desc";
 | ||||
| 
 | ||||
|  | @ -137,4 +145,38 @@ class Timeline_model extends CI_Model | |||
|         return $query->result(); | ||||
|     } | ||||
| 
 | ||||
|      | ||||
| 	// Adds confirmation to query
 | ||||
| 	function addQslToQuery($qsl, $lotw, $eqsl) { | ||||
| 		$sql = ''; | ||||
| 		if ($lotw == 1 and $qsl == 0 and $eqsl == 0) { | ||||
| 			$sql .= " and col_lotw_qsl_rcvd = 'Y'"; | ||||
| 		} | ||||
| 
 | ||||
| 		if ($qsl == 1 and $lotw == 0 and $eqsl == 0) { | ||||
| 			$sql .= " and col_qsl_rcvd = 'Y'"; | ||||
| 		} | ||||
| 
 | ||||
|         if ($eqsl == 1 and $lotw == 0 and $qsl == 0) { | ||||
| 			$sql .= " and col_eqsl_qsl_rcvd = 'Y'"; | ||||
| 		} | ||||
| 
 | ||||
|         if ($lotw == 1 and $qsl == 1 and $eqsl == 0) { | ||||
| 			$sql .= " and (col_lotw_qsl_rcvd = 'Y' or col_qsl_rcvd = 'Y')"; | ||||
| 		} | ||||
| 
 | ||||
| 		if ($qsl == 1 and $lotw == 0 and $eqsl == 1) { | ||||
| 			$sql .= " and (col_qsl_rcvd = 'Y' or col_eqsl_qsl_rcvd = 'Y')"; | ||||
| 		} | ||||
| 
 | ||||
|         if ($eqsl == 1 and $lotw == 1 and $qsl == 0) { | ||||
| 			$sql .= " and (col_eqsl_qsl_rcvd = 'Y' or col_lotw_qsl_rcvd = 'Y')"; | ||||
| 		} | ||||
| 
 | ||||
| 		if ($qsl == 1 && $lotw == 1 && $eqsl == 1) { | ||||
| 			$sql .= " and (col_qsl_rcvd = 'Y' or col_lotw_qsl_rcvd = 'Y' or col_eqsl_qsl_rcvd = 'Y')"; | ||||
| 		} | ||||
| 		return $sql; | ||||
| 	} | ||||
|   | ||||
| } | ||||
|  |  | |||
|  | @ -855,7 +855,7 @@ function getLookupResult() { | |||
| <?php } ?>
 | ||||
| 
 | ||||
| 
 | ||||
| <?php if ($this->uri->segment(1) == "search") { ?>
 | ||||
| 
 | ||||
| <script type="text/javascript"> | ||||
|   $(function () { | ||||
|      $('[data-toggle="tooltip"]').tooltip() | ||||
|  | @ -892,9 +892,34 @@ function getLookupResult() { | |||
|     }); | ||||
|   }); | ||||
| </script> | ||||
| 
 | ||||
| <?php if ($this->uri->segment(1) == "search") { ?>
 | ||||
| <script type="text/javascript"> | ||||
| i=0; | ||||
| 
 | ||||
| function findduplicates(){ | ||||
|     event.preventDefault(); | ||||
|     $('#partial_view').load(base_url+"index.php/logbook/search_duplicates/"+$("#station_id").val(), function() { | ||||
|         $('.qsolist').DataTable({ | ||||
|             "pageLength": 25, | ||||
|             responsive: false, | ||||
|             ordering: false, | ||||
|             "scrollY":        "500px", | ||||
|             "scrollCollapse": true, | ||||
|             "paging":         false, | ||||
|             "scrollX": true, | ||||
|             dom: 'Bfrtip', | ||||
|             buttons: [ | ||||
|                 'csv' | ||||
|             ] | ||||
|         }); | ||||
|         // change color of csv-button if dark mode is chosen
 | ||||
|         if (isDarkModeTheme()) { | ||||
|             $(".buttons-csv").css("color", "white"); | ||||
|         } | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| function searchButtonPress(){ | ||||
|     event.preventDefault() | ||||
|     if ($('#callsign').val()) { | ||||
|  |  | |||
|  | @ -0,0 +1,43 @@ | |||
| <div class="container search"> | ||||
| 
 | ||||
| 	<h1> | ||||
| 		Search | ||||
| 		<small class="text-muted">Ready to find a QSO?</small> | ||||
| 	</h1> | ||||
| 
 | ||||
| 	<div class="card text-center"> | ||||
| 	  <div class="card-header"> | ||||
| 	    <ul class="nav nav-tabs card-header-tabs"> | ||||
| 	      <li class="nav-item"> | ||||
| 	        <a class="nav-link" href="<?php echo site_url('search'); ?>">Search</a> | ||||
| 	      </li> | ||||
| 	      <li class="nav-item"> | ||||
| 	        <a class="nav-link" href="<?php echo site_url('search/filter'); ?>">Advanced Search</a> | ||||
| 	      </li> | ||||
| 		  <li class="nav-item"> | ||||
| 	        <a class="nav-link active" href="<?php echo site_url('search/duplicates'); ?>">Duplicate QSOs</a> | ||||
| 	      </li> | ||||
| 	    </ul> | ||||
| 	  </div> | ||||
| 	  <div class="card-body"> | ||||
| 	  	<form method="post" action="" id="search_box" name="test"> | ||||
| 		  <div class="form-group row"> | ||||
| 		    <label for="callsign" class="col-sm-2 col-form-label">Station location:</label> | ||||
| 		    <select id="station_id" name="station_profile" class="custom-select col-sm-3 mb-3 mr-sm-3"> | ||||
| 					<option value="All">All</option> | ||||
|                     <?php foreach ($station_profile->result() as $station) { ?>
 | ||||
|                     <option value="<?php echo $station->station_id; ?>">Callsign: <?php echo $station->station_callsign; ?> (<?php echo $station->station_profile_name; ?>)</option>
 | ||||
|                     <?php } ?>
 | ||||
|                     </select> | ||||
| 		    <div class="col-sm-2"> | ||||
| 		    	<button onclick="findduplicates();" class="btn btn-outline-success my-2 my-sm-0" type="submit"><i class="fas fa-search"></i> Search</button> | ||||
| 		    </div> | ||||
| 		  </div> | ||||
| 		</form> | ||||
| 
 | ||||
| 		<div id="partial_view"></div> | ||||
| 
 | ||||
| 	  </div> | ||||
| 	</div> | ||||
| 
 | ||||
| </div> | ||||
|  | @ -0,0 +1,50 @@ | |||
| <?php | ||||
| if ($qsos->result() != NULL) { | ||||
| 	Echo 'The following QSOs were found on the same band, mode, date and time difference 30 minutes:'; | ||||
| 	echo '<table style="width:100%" class="qsolist table-sm table-bordered table-hover table-striped table-condensed"> | ||||
| 	<thead> | ||||
| 	<tr> | ||||
| 	<th style=\'text-align: center\'>Occurrence</th> | ||||
| 	<th style=\'text-align: center\'>'.$this->lang->line('gen_hamradio_callsign').'</th> | ||||
| 	<th style=\'text-align: center\'>Min date</th> | ||||
| 	<th style=\'text-align: center\'>Min time</th> | ||||
| 	<th style=\'text-align: center\'>Max date</th> | ||||
| 	<th style=\'text-align: center\'>Max time</th> | ||||
| 	<th style=\'text-align: center\'>' . $this->lang->line('gen_hamradio_mode') . '</th> | ||||
| 	<th style=\'text-align: center\'>' . $this->lang->line('gen_hamradio_band') . '</th> | ||||
| 	<th style=\'text-align: center\'>' . $this->lang->line('gen_hamradio_station') . '</th> | ||||
| 	</tr> | ||||
| 	</thead><tbody>'; | ||||
| 
 | ||||
| 	// Get Date format
 | ||||
| 	if($this->session->userdata('user_date_format')) { | ||||
| 		// If Logged in and session exists
 | ||||
| 		$custom_date_format = $this->session->userdata('user_date_format'); | ||||
| 	} else { | ||||
| 		// Get Default date format from /config/cloudlog.php
 | ||||
| 		$custom_date_format = $this->config->item('qso_date_format'); | ||||
| 	} | ||||
| 
 | ||||
| 	$i = 0; | ||||
| 	foreach ($qsos->result() as $qso) { | ||||
| 		echo '<tr>'; | ||||
| 		echo '<td style=\'text-align: center\'>' . $qso->occurence . '</td>'; | ||||
| 		echo '<td style=\'text-align: center\'><form id="searchcall_'.$i.'" method="POST" action="'.site_url('search'). '"><input type="hidden" value="'. strtoupper($qso->COL_CALL) .'" name="callsign"><a href="javascript:$(\'#searchcall_'.$i++.'\').submit()">' . $qso->COL_CALL . '</a></form></td>'; | ||||
| 		echo '<td style=\'text-align: center\'>'; $timestamp = strtotime($qso->Mintime); echo date($custom_date_format, $timestamp); echo '</td>'; | ||||
| 		echo '<td style=\'text-align: center\'>'; $timestamp = strtotime($qso->Mintime); echo date('H:i', $timestamp); echo '</td>'; | ||||
| 		echo '<td style=\'text-align: center\'>'; $timestamp = strtotime($qso->Maxtime); echo date($custom_date_format, $timestamp); echo '</td>'; | ||||
| 		echo '<td style=\'text-align: center\'>'; $timestamp = strtotime($qso->Maxtime); echo date('H:i', $timestamp); echo '</td>'; | ||||
| 		echo '<td style=\'text-align: center\'>'; echo $qso->COL_SUBMODE==null?$qso->COL_MODE:$qso->COL_SUBMODE; echo '</td>'; | ||||
| 		echo '<td style=\'text-align: center\'>'; if($qso->COL_SAT_NAME != null) { echo $qso->COL_SAT_NAME; } else { echo strtolower($qso->COL_BAND); }; echo '</td>'; | ||||
| 		echo '<td style=\'text-align: center\'><span class="badge badge-light">' . $qso->station_callsign . '</span></td>'; | ||||
| 		echo '</tr>'; | ||||
| 	} | ||||
| 
 | ||||
| 	echo '</tbody></table>'; | ||||
| 	?>
 | ||||
| 
 | ||||
| 	<?php | ||||
| } else { | ||||
| 	echo '<div class="alert alert-danger"><a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>No duplicate QSO\'s were found.</div>'; | ||||
| } | ||||
| ?>
 | ||||
|  | @ -21,6 +21,9 @@ | |||
| 	      </li> | ||||
| 	      <li class="nav-item"> | ||||
| 	        <a class="nav-link active" href="<?php echo site_url('search/filter'); ?>">Advanced Search</a> | ||||
| 	      </li> | ||||
| 		  <li class="nav-item"> | ||||
| 	        <a class="nav-link" href="<?php echo site_url('search/duplicates'); ?>">Duplicate QSOs</a> | ||||
| 	      </li> | ||||
| 	    </ul> | ||||
| 	  </div> | ||||
|  |  | |||
|  | @ -13,6 +13,9 @@ | |||
| 	      </li> | ||||
| 	      <li class="nav-item"> | ||||
| 	        <a class="nav-link" href="<?php echo site_url('search/filter'); ?>">Advanced Search</a> | ||||
| 	      </li> | ||||
| 		  <li class="nav-item"> | ||||
| 	        <a class="nav-link" href="<?php echo site_url('search/duplicates'); ?>">Duplicate QSOs</a> | ||||
| 	      </li> | ||||
| 	    </ul> | ||||
| 	  </div> | ||||
|  |  | |||
|  | @ -68,6 +68,24 @@ | |||
|             </div> | ||||
|         </div> | ||||
| 
 | ||||
|         <div class="form-group row"> | ||||
|                 <div class="col-md-1 control-label">Confirmation</div> | ||||
|                 <div class="col-md-10"> | ||||
|                     <div class="form-check-inline"> | ||||
|                         <input class="form-check-input" type="checkbox" name="qsl" value="1" id="qsl" <?php if ($this->input->post('qsl'))  echo ' checked="checked"'; ?> >
 | ||||
|                         <label class="form-check-label" for="qsl">QSL</label> | ||||
|                     </div> | ||||
|                     <div class="form-check-inline"> | ||||
|                         <input class="form-check-input" type="checkbox" name="lotw" value="1" id="lotw" <?php if ($this->input->post('lotw')) echo ' checked="checked"'; ?> >
 | ||||
|                         <label class="form-check-label" for="lotw">LoTW</label> | ||||
|                     </div> | ||||
|                     <div class="form-check-inline"> | ||||
|                         <input class="form-check-input" type="checkbox" name="eqsl" value="1" id="eqsl" <?php if ($this->input->post('eqsl')) echo ' checked="checked"'; ?> >
 | ||||
|                         <label class="form-check-label" for="eqsl">eQSL</label> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
| 
 | ||||
|             <div class="form-group row"> | ||||
|                 <label class="col-md-1 control-label" for="button1id"></label> | ||||
|                 <div class="col-md-10"> | ||||
|  |  | |||
|  | @ -298,7 +298,7 @@ | |||
|                     <?php if(($this->config->item('use_auth') && ($this->session->userdata('user_type') >= 2)) || $this->config->item('use_auth') === FALSE) { ?>
 | ||||
|                         <br> | ||||
|                             <div style="display: inline-block;"><p class="editButton"><a class="btn btn-primary" href="<?php echo site_url('qso/edit'); ?>/<?php echo $row->COL_PRIMARY_KEY; ?>" href="javascript:;"><i class="fas fa-edit"></i><?php echo $this->lang->line('qso_btn_edit_qso'); ?></a></p></div>
 | ||||
|                             <div style="display: inline-block;"><form method="POST" action="<?php echo site_url('search'); ?>"><input type="hidden" value="<?php echo strtoupper($row->COL_CALL); ?>" name="callsign"><button class="btn btn-primary" type="submit"><i class="fas fa-eye"></i> More QSOs</button><form></div> | ||||
|                             <div style="display: inline-block;"><form method="POST" action="<?php echo site_url('search'); ?>"><input type="hidden" value="<?php echo strtoupper($row->COL_CALL); ?>" name="callsign"><button class="btn btn-primary" type="submit"><i class="fas fa-eye"></i> More QSOs</button></form></div> | ||||
|                     <?php } ?>
 | ||||
| 
 | ||||
|                     <?php | ||||
|  |  | |||
|  | @ -189,6 +189,8 @@ $("#callsign").keyup(function () { | |||
| 			highlight(call.toUpperCase()); | ||||
| 		}); | ||||
| 		checkIfWorkedBefore(); | ||||
| 		var qTable = $('.qsotable').DataTable(); | ||||
| 		qTable.search(call).draw(); | ||||
| 	} | ||||
| 	else if (call.length <= 2) { | ||||
| 		$('.callsign-suggestions').text(""); | ||||
|  | @ -226,6 +228,9 @@ function reset_log_fields() { | |||
| 	$("#callsign").focus(); | ||||
| 	setRst($("#mode").val()); | ||||
| 	$('#callsign_info').text(""); | ||||
| 
 | ||||
| 	var qTable = $('.qsotable').DataTable(); | ||||
| 	qTable.search('').draw(); | ||||
| } | ||||
| 
 | ||||
| RegExp.escape = function (text) { | ||||
|  | @ -396,6 +401,9 @@ function logQso() { | |||
| 				localStorage.setItem("gridsquarereceived", $("#exch_gridsquare_r").val()); | ||||
| 				localStorage.setItem("gridsquaresent", $("#exch_gridsquare_s").val()); | ||||
| 				localStorage.setItem("copytodok", $('#copyexchangetodok').is(":checked")); | ||||
| 
 | ||||
| 				var qTable = $('.qsotable').DataTable(); | ||||
| 				qTable.search('').draw(); | ||||
| 			} | ||||
| 		}); | ||||
| 	} | ||||
|  |  | |||
|  | @ -566,5 +566,17 @@ | |||
|             } | ||||
|          ] | ||||
|       } | ||||
|    }, | ||||
|    "GREENCUBE":{ | ||||
|       "Modes":{ | ||||
|          "V":[ | ||||
|             { | ||||
|                "Uplink_Mode":"PKT", | ||||
|                "Uplink_Freq":"435310000", | ||||
|                "Downlink_Mode":"PKT", | ||||
|                "Downlink_Freq":"435310000" | ||||
|             } | ||||
|          ] | ||||
|       } | ||||
|    } | ||||
| } | ||||
|  |  | |||
		正在加载…
	
		在新工单中引用