Merge branch 'dev' of https://github.com/magicbug/Cloudlog into dev
这个提交包含在:
当前提交
aec2bd3cd8
共有 23 个文件被更改,包括 659 次插入 和 128 次删除
|
|
@ -21,7 +21,7 @@ $config['migration_enabled'] = TRUE;
|
|||
| be upgraded / downgraded to.
|
||||
|
|
||||
*/
|
||||
$config['migration_version'] = 113;
|
||||
$config['migration_version'] = 114;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -0,0 +1,59 @@
|
|||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class Continents extends CI_Controller {
|
||||
|
||||
public function index()
|
||||
{
|
||||
$this->load->model('user_model');
|
||||
$this->load->model('bands');
|
||||
$this->load->model('logbookadvanced_model');
|
||||
|
||||
$data['bands'] = $this->bands->get_worked_bands();
|
||||
$data['modes'] = $this->logbookadvanced_model->get_modes();
|
||||
|
||||
if(!$this->user_model->authorize($this->config->item('auth_mode'))) {
|
||||
if($this->user_model->validate_session()) {
|
||||
$this->user_model->clear_session();
|
||||
show_error('Access denied<p>Click <a href="'.site_url('user/login').'">here</a> to log in as another user', 403);
|
||||
} else {
|
||||
redirect('user/login');
|
||||
}
|
||||
}
|
||||
// Render User Interface
|
||||
|
||||
// Set Page Title
|
||||
$data['page_title'] = "Continents";
|
||||
|
||||
// Load Views
|
||||
$this->load->view('interface_assets/header', $data);
|
||||
$this->load->view('continents/index');
|
||||
$this->load->view('interface_assets/footer');
|
||||
}
|
||||
|
||||
|
||||
public function get_continents() {
|
||||
|
||||
$searchCriteria = array(
|
||||
'mode' => xss_clean($this->input->post('mode')),
|
||||
'band' => xss_clean($this->input->post('band')),
|
||||
);
|
||||
|
||||
$this->load->model('logbook_model');
|
||||
|
||||
$continentsstats = array();
|
||||
|
||||
$total_continents = $this->logbook_model->total_continents($searchCriteria);
|
||||
$i = 0;
|
||||
|
||||
if ($total_continents) {
|
||||
foreach($total_continents->result() as $qso_numbers) {
|
||||
$continentsstats[$i]['cont'] = $qso_numbers->COL_CONT;
|
||||
$continentsstats[$i++]['count'] = $qso_numbers->count;
|
||||
}
|
||||
}
|
||||
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode($continentsstats);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -36,7 +36,7 @@ class Lookup extends CI_Controller {
|
|||
$this->load->model('lookup_model');
|
||||
$this->load->model('bands');
|
||||
|
||||
$data['bands'] = $this->bands->get_worked_bands();
|
||||
$data['bands'] = $this->bands->get_worked_bands(xss_clean($this->input->post('type')));
|
||||
|
||||
$data['type'] = xss_clean($this->input->post('type'));
|
||||
$data['dxcc'] = xss_clean($this->input->post('dxcc'));
|
||||
|
|
|
|||
|
|
@ -104,6 +104,7 @@ class Statistics extends CI_Controller {
|
|||
$modestats[$i++]['total'] = $this->logbook_model->total_fm();
|
||||
$modestats[$i]['mode'] = 'digi';
|
||||
$modestats[$i]['total'] = $this->logbook_model->total_digi();
|
||||
usort($modestats, fn($a, $b) => $b['total'] <=> $a['total']);
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
|
|
|
|||
|
|
@ -32,8 +32,8 @@ class Timeline extends CI_Controller {
|
|||
$mode = 'All';
|
||||
}
|
||||
|
||||
if ($this->input->post('awardradio') != NULL) {
|
||||
$award = $this->input->post('awardradio');
|
||||
if ($this->input->post('award') != NULL) {
|
||||
$award = $this->input->post('award');
|
||||
}
|
||||
else {
|
||||
$award = 'dxcc';
|
||||
|
|
@ -77,13 +77,14 @@ class Timeline extends CI_Controller {
|
|||
|
||||
public function details() {
|
||||
$this->load->model('logbook_model');
|
||||
$this->load->model('timeline_model');
|
||||
|
||||
$querystring = str_replace('"', "", $this->input->post("Querystring"));
|
||||
|
||||
$band = str_replace('"', "", $this->input->post("Band"));
|
||||
$mode = str_replace('"', "", $this->input->post("Mode"));
|
||||
$type = str_replace('"', "", $this->input->post("Type"));
|
||||
$data['results'] = $this->logbook_model->timeline_qso_details($querystring, $band, $mode, $type);
|
||||
$data['results'] = $this->timeline_model->timeline_qso_details($querystring, $band, $mode, $type);
|
||||
|
||||
|
||||
switch($type) {
|
||||
|
|
@ -100,6 +101,9 @@ class Timeline extends CI_Controller {
|
|||
case 'waz' : $data['page_title'] = "Log View - WAZ";
|
||||
$data['filter'] = "CQ zone ". $querystring;
|
||||
break;
|
||||
case 'vucc' : $data['page_title'] = "Log View - VUCC";
|
||||
$data['filter'] = "Gridsquare ". $querystring;
|
||||
break;
|
||||
}
|
||||
|
||||
if ($band != "All") {
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ $lang['general_word_datetime'] = 'Дата/Время';
|
|||
$lang['general_word_none'] = '-';
|
||||
$lang['general_word_name'] = 'Имя';
|
||||
$lang['general_word_location'] = 'QTH';
|
||||
$lang['general_word_comment'] = 'Коммент.';
|
||||
$lang['general_word_comment'] = 'Комментарий';
|
||||
$lang['general_word_general'] = 'Общее';
|
||||
$lang['general_word_satellite'] = 'Спутник';
|
||||
$lang['general_word_satellite_short'] = 'Спутн.';
|
||||
|
|
@ -97,15 +97,18 @@ $lang['gen_hamradio_logbook'] = 'Журнал';
|
|||
|
||||
$lang['gen_hamradio_cq_zone'] = 'CQ Zone';
|
||||
$lang['gen_hamradio_dxcc'] = 'DXCC';
|
||||
$lang['gen_hamradio_continent'] = 'Континент';
|
||||
$lang['gen_hamradio_usa_state'] = 'Штат США';
|
||||
$lang['gen_hamradio_county_reference'] = 'Графство США';
|
||||
$lang['gen_hamradio_iota_reference'] = 'IOTA справочник';
|
||||
$lang['gen_hamradio_sota_reference'] = 'SOTA Справочник';
|
||||
$lang['gen_hamradio_wwff_reference'] = 'WWFF справочник';
|
||||
$lang['gen_hamradio_pota_reference'] = 'POTA справочник';
|
||||
$lang['gen_hamradio_dok'] = 'DOK';
|
||||
$lang['gen_hamradio_state'] = 'Штат';
|
||||
$lang['gen_hamradio_iota'] = 'IOTA';
|
||||
$lang['gen_hamradio_sota'] = 'SOTA';
|
||||
$lang['gen_hamradio_pota'] = 'POTA';
|
||||
$lang['gen_hamradio_gridsquare'] = 'Квадрат';
|
||||
$lang['gen_hamradio_operator'] = 'Оператор';
|
||||
|
||||
|
|
@ -125,3 +128,11 @@ $lang['gen_this_qso_was_confirmed_on'] = 'Это QSO было подтвержд
|
|||
$lang['error_no_logbook_found'] = 'Журнал не найден. Вам необходимо опрелелить журнал в разделе Журналы станций! Тут:';
|
||||
|
||||
$lang['copy_to_clipboard'] = 'Скопировать в буфер обмена';
|
||||
|
||||
$lang['africa'] = 'Африка';
|
||||
$lang['antarctica'] = 'Антарктика';
|
||||
$lang['asia'] = 'Азия';
|
||||
$lang['europe'] = 'Европа';
|
||||
$lang['northamerica'] = 'Северная Америка';
|
||||
$lang['oceania'] = 'Океания';
|
||||
$lang['southamerica'] = 'Южная Америка';
|
||||
|
|
|
|||
|
|
@ -4,15 +4,15 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
|||
|
||||
$lang['lotw_short'] = 'LoTW';
|
||||
$lang['lotw_title'] = 'Logbook of the World';
|
||||
$lang['lotw_title_available_cert'] = 'Available Certificates';
|
||||
$lang['lotw_title_information'] = 'Information';
|
||||
$lang['lotw_title_upload_p12_cert'] = 'Upload Logbook of the World .p12 Certificate';
|
||||
$lang['lotw_title_export_p12_file_instruction'] = 'Export .p12 File Instructions';
|
||||
$lang['lotw_title_adif_import'] = 'ADIF Import';
|
||||
$lang['lotw_title_adif_import_options'] = 'Import Options';
|
||||
$lang['lotw_title_available_cert'] = 'Имеющиеся сертификаты';
|
||||
$lang['lotw_title_information'] = 'Информация';
|
||||
$lang['lotw_title_upload_p12_cert'] = 'Загрузка Logbook of the World .p12 сертификата';
|
||||
$lang['lotw_title_export_p12_file_instruction'] = 'Инструкции по экспорту .p12 файла';
|
||||
$lang['lotw_title_adif_import'] = 'Импорт ADIF';
|
||||
$lang['lotw_title_adif_import_options'] = 'Опции импорта';
|
||||
|
||||
$lang['lotw_beta_warning'] = 'Please be aware that LoTW Sync is BETA, see wiki for help.';
|
||||
$lang['lotw_no_certs_uploaded'] = 'Вам необходимо загрузить сертификат LoTW в формате p12 для использования этих функций.';
|
||||
$lang['lotw_beta_warning'] = 'Обратите внимание, что синхронизация с LoTW пока в статусе бета, подробнее в wiki.';
|
||||
$lang['lotw_no_certs_uploaded'] = 'Вам необходимо загрузить сертификат LoTW в формате p12 для использования этих функций.';
|
||||
|
||||
$lang['lotw_date_created'] = 'Дата создания';
|
||||
$lang['lotw_date_expires'] = 'Дата окончания срока действия';
|
||||
|
|
@ -22,6 +22,7 @@ $lang['lotw_status'] = 'Статус';
|
|||
$lang['lotw_options'] = 'Опции';
|
||||
$lang['lotw_valid'] = 'Действует';
|
||||
$lang['lotw_expired'] = 'Истёк';
|
||||
$lang['lotw_expiring'] = 'Истекает';
|
||||
$lang['lotw_not_synced'] = 'Не синхронизирован';
|
||||
|
||||
$lang['lotw_certificate_dxcc'] = 'Сертификат DXCC';
|
||||
|
|
@ -51,3 +52,7 @@ $lang['lotw_p12_export_step_three'] = 'Кликните "Сохранить Се
|
|||
$lang['lotw_p12_export_step_four'] = 'Загрузите полученный файл ниже.';
|
||||
|
||||
$lang['lotw_confirmed'] = 'Это QSO подтверждено на LoTW';
|
||||
|
||||
// LotW Expiry
|
||||
$lang['lotw_cert_expiring'] = 'Как минимум, один из ваших сертификатов LoTW скоро истечёт!';
|
||||
$lang['lotw_cert_expired'] = 'Один из ваших сертификатов LoTW истёк!';
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
|
||||
// Create migration that makes the submode column in the logbook table an index
|
||||
class Migration_Create_index_for_colsubmode extends CI_Migration {
|
||||
|
||||
public function up() {
|
||||
$this->db->query("ALTER TABLE `".$this->config->item('table_name')."` ADD INDEX (`COL_SUBMODE`)");
|
||||
}
|
||||
|
||||
public function down() {
|
||||
$this->db->query("ALTER TABLE `".$this->config->item('table_name')."` DROP INDEX (`COL_SUBMODE`)");
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -175,8 +175,8 @@ class Logbook_model extends CI_Model {
|
|||
'COL_TX_PWR' => $tx_power,
|
||||
'COL_STX' => $stx,
|
||||
'COL_SRX' => $srx,
|
||||
'COL_STX_STRING' => strtoupper(trim($stx_string)),
|
||||
'COL_SRX_STRING' => strtoupper(trim($srx_string)),
|
||||
'COL_STX_STRING' => $stx_string == null ? '' : strtoupper(trim($stx_string)),
|
||||
'COL_SRX_STRING' => $srx_string == null ? '' : strtoupper(trim($srx_string)),
|
||||
'COL_CONTEST_ID' => $contestid,
|
||||
'COL_NR_BURSTS' => null,
|
||||
'COL_NR_PINGS' => null,
|
||||
|
|
@ -399,38 +399,6 @@ class Logbook_model extends CI_Model {
|
|||
return $this->db->query($sql);
|
||||
}
|
||||
|
||||
public function timeline_qso_details($querystring, $band, $mode, $type){
|
||||
$CI =& get_instance();
|
||||
$CI->load->model('logbooks_model');
|
||||
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
|
||||
|
||||
$this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
if ($mode != 'All') {
|
||||
$this->db->where('col_mode', $mode);
|
||||
}
|
||||
|
||||
$this->db->where_in('station_profile.station_id', $logbooks_locations_array);
|
||||
|
||||
switch($type) {
|
||||
case 'dxcc': $this->db->where('COL_DXCC', $querystring); break;
|
||||
case 'was': $this->db->where('COL_STATE', $querystring); break;
|
||||
case 'iota': $this->db->where('COL_IOTA', $querystring); break;
|
||||
case 'waz': $this->db->where('COL_CQZ', $querystring); break;
|
||||
}
|
||||
|
||||
return $this->db->get($this->config->item('table_name'));
|
||||
}
|
||||
|
||||
public function activator_details($call, $band, $leogeo){
|
||||
$CI =& get_instance();
|
||||
$CI->load->model('logbooks_model');
|
||||
|
|
@ -1624,12 +1592,52 @@ class Logbook_model extends CI_Model {
|
|||
$this->db->where_in('station_id', $logbooks_locations_array);
|
||||
$this->db->where('COL_SAT_NAME is not null');
|
||||
$this->db->where('COL_SAT_NAME !=', '');
|
||||
$this->db->order_by('count DESC');
|
||||
$this->db->group_by('COL_SAT_NAME');
|
||||
$query = $this->db->get($this->config->item('table_name'));
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
/* Return total number of QSOs per continent */
|
||||
function total_continents($searchCriteria) {
|
||||
|
||||
$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;
|
||||
}
|
||||
|
||||
$this->db->select('COL_CONT, COUNT( * ) as count', FALSE);
|
||||
$this->db->where_in('station_id', $logbooks_locations_array);
|
||||
$this->db->where('COL_CONT is not null');
|
||||
$this->db->where('COL_CONT !=', '');
|
||||
|
||||
if ($searchCriteria['mode'] !== '') {
|
||||
$this->db->group_start();
|
||||
$this->db->where('COL_MODE', $searchCriteria['mode']);
|
||||
$this->db->or_where('COL_SUBMODE', $searchCriteria['mode']);
|
||||
$this->db->group_end();
|
||||
}
|
||||
|
||||
if ($searchCriteria['band'] !== '') {
|
||||
if($searchCriteria['band'] != "SAT") {
|
||||
$this->db->where('COL_BAND', $searchCriteria['band']);
|
||||
$this->db->where('COL_PROP_MODE != "SAT"');
|
||||
} else {
|
||||
$this->db->where('COL_PROP_MODE', 'SAT');
|
||||
}
|
||||
}
|
||||
|
||||
$this->db->order_by('count DESC');
|
||||
$this->db->group_by('COL_CONT');
|
||||
$query = $this->db->get($this->config->item('table_name'));
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
/* Return total number of CW QSOs */
|
||||
function total_cw() {
|
||||
|
||||
|
|
|
|||
|
|
@ -211,7 +211,10 @@ class Logbookadvanced_model extends CI_Model {
|
|||
if ($mode->col_submode == null || $mode->col_submode == "") {
|
||||
array_push($modes, $mode->col_mode);
|
||||
} else {
|
||||
array_push($modes, $mode->col_submode);
|
||||
// Make sure we don't add LSB or USB as submodes in the array list
|
||||
if ($mode->col_mode != "SSB") {
|
||||
array_push($modes, $mode->col_submode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -19,13 +19,17 @@ class Lookup_model extends CI_Model{
|
|||
// Populating array with worked band/mode combinations
|
||||
$worked = $this->getQueryData($queryinfo, 'worked');
|
||||
foreach ($worked as $w) {
|
||||
$resultArray[$w->col_mode][$w->col_band] = 'W';
|
||||
if(in_array($w->col_band, $queryinfo['bands'])) {
|
||||
$resultArray[$w->col_mode][$w->col_band] = 'W';
|
||||
}
|
||||
}
|
||||
|
||||
// Populating array with confirmed band/mode combinations
|
||||
$confirmed = $this->getQueryData($queryinfo, 'confirmed');
|
||||
foreach ($confirmed as $c) {
|
||||
$resultArray[$c->col_mode][$c->col_band] = 'C';
|
||||
if(in_array($c->col_band, $queryinfo['bands'])) {
|
||||
$resultArray[$c->col_mode][$c->col_band] = 'C';
|
||||
}
|
||||
}
|
||||
|
||||
return $resultArray;
|
||||
|
|
@ -48,8 +52,8 @@ class Lookup_model extends CI_Model{
|
|||
switch ($queryinfo['type']) {
|
||||
case 'dxcc': $sqlquerytypestring .= " and col_dxcc = " . $queryinfo['dxcc']; break;
|
||||
case 'iota': $sqlquerytypestring .= " and col_iota = '" . $queryinfo['iota'] . "'"; break;
|
||||
case 'grid': $sqlquerytypestring .= " and (col_gridsquare like '%" . $fixedgrid . "%' or col_vucc_grids like '%" . $fixedgrid . "%')" ; break;
|
||||
case 'cqz': $sqlquerytypestring .= " and col_cqz = " . $queryinfo['cqz']; break;
|
||||
case 'vucc': $sqlquerytypestring .= " and (col_gridsquare like '%" . $fixedgrid . "%' or col_vucc_grids like '%" . $fixedgrid . "%')" ; break;
|
||||
case 'cq': $sqlquerytypestring .= " and col_cqz = " . $queryinfo['cqz']; break;
|
||||
case 'was': $sqlquerytypestring .= " and col_state = '" . $queryinfo['was'] . "' and COL_DXCC in ('291', '6', '110')";; break;
|
||||
case 'sota': $sqlquerytypestring .= " and col_sota_ref = '" . $queryinfo['sota'] . "'"; break;
|
||||
case 'wwff': $sqlquerytypestring .= " and col_sig = 'WWFF' and col_sig_info = '" . $queryinfo['wwff'] . "'"; break;
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ class Timeline_model extends CI_Model
|
|||
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;
|
||||
case 'vucc': $result = $this->get_timeline_vucc($band, $mode, $location_list, $qsl, $lotw, $eqsl); break;
|
||||
}
|
||||
|
||||
return $result;
|
||||
|
|
@ -178,5 +179,159 @@ class Timeline_model extends CI_Model
|
|||
}
|
||||
return $sql;
|
||||
}
|
||||
|
||||
public function get_timeline_vucc3($band, $mode, $location_list, $qsl, $lotw, $eqsl) {
|
||||
// $sql = "select min(date(COL_TIME_ON)) date, col_gridsquare from "
|
||||
$sql = "select min(date(COL_TIME_ON)) date, upper(substring(col_gridsquare, 1, 4)) gridsquare from "
|
||||
.$this->config->item('table_name'). " thcv
|
||||
where station_id in (" . $location_list . ")";
|
||||
|
||||
if ($band != 'All') {
|
||||
if ($band == 'SAT') {
|
||||
$sql .= " and col_prop_mode ='" . $band . "'";
|
||||
}
|
||||
else {
|
||||
$sql .= " and col_prop_mode !='SAT'";
|
||||
$sql .= " and col_band ='" . $band . "'";
|
||||
}
|
||||
}
|
||||
|
||||
if ($mode != 'All') {
|
||||
$sql .= " and col_mode ='" . $mode . "'";
|
||||
}
|
||||
|
||||
$sql .= $this->addQslToQuery($qsl, $lotw, $eqsl);
|
||||
|
||||
$sql .= " and col_gridsquare <> '' group by upper(substring(col_gridsquare, 1, 4))
|
||||
order by date desc";
|
||||
|
||||
$query = $this->db->query($sql);
|
||||
$this->vucc_shit($band, $mode, $location_list, $qsl, $lotw, $eqsl);
|
||||
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function timeline_qso_details($querystring, $band, $mode, $type){
|
||||
$CI =& get_instance();
|
||||
$CI->load->model('logbooks_model');
|
||||
$logbooks_locations_array = $CI->logbooks_model->list_logbook_relationships($this->session->userdata('active_station_logbook'));
|
||||
|
||||
$this->db->join('station_profile', 'station_profile.station_id = '.$this->config->item('table_name').'.station_id');
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
if ($mode != 'All') {
|
||||
$this->db->where('col_mode', $mode);
|
||||
}
|
||||
|
||||
$this->db->where_in('station_profile.station_id', $logbooks_locations_array);
|
||||
|
||||
switch($type) {
|
||||
case 'dxcc': $this->db->where('COL_DXCC', $querystring); break;
|
||||
case 'was': $this->db->where('COL_STATE', $querystring); break;
|
||||
case 'iota': $this->db->where('COL_IOTA', $querystring); break;
|
||||
case 'waz': $this->db->where('COL_CQZ', $querystring); break;
|
||||
case 'vucc': $this->db->group_start(); $this->db->like('COL_GRIDSQUARE', $querystring); $this->db->or_like('COL_VUCC_GRIDS',$querystring); $this->db->group_end();break;
|
||||
}
|
||||
|
||||
return $this->db->get($this->config->item('table_name'));
|
||||
}
|
||||
|
||||
public function get_timeline_vucc($band, $mode, $location_list, $qsl, $lotw, $eqsl) {
|
||||
$timeline = array();
|
||||
|
||||
$col_gridsquare = $this->get_gridsquare($band, $mode, $location_list, $qsl, $lotw, $eqsl);
|
||||
|
||||
foreach ($col_gridsquare as $grid) {
|
||||
$timeline[] = array(
|
||||
'gridsquare' => $grid->gridsquare,
|
||||
'date' => $grid->date);
|
||||
}
|
||||
|
||||
$col_vucc_grids = $this->get_vucc_grids($band, $mode, $location_list, $qsl, $lotw, $eqsl);
|
||||
|
||||
foreach ($col_vucc_grids as $gridSplit) {
|
||||
$grids = explode(",", $gridSplit->gridsquare);
|
||||
foreach($grids as $key) {
|
||||
$grid_four = strtoupper(substr(trim($key),0,4));
|
||||
if (!array_search($grid_four, array_column($timeline, 'gridsquare'))) {
|
||||
$timeline[] = array(
|
||||
'gridsquare' => $grid_four,
|
||||
'date' => $gridSplit->date);
|
||||
}
|
||||
}
|
||||
}
|
||||
usort($timeline, function($a, $b) {
|
||||
return $b['date'] <=> $a['date'];
|
||||
});
|
||||
|
||||
return $timeline;
|
||||
}
|
||||
|
||||
public function get_gridsquare($band, $mode, $location_list, $qsl, $lotw, $eqsl) {
|
||||
// $sql = "select min(date(COL_TIME_ON)) date, col_gridsquare from "
|
||||
$sql = "select min(date(COL_TIME_ON)) date, upper(substring(col_gridsquare, 1, 4)) gridsquare from "
|
||||
.$this->config->item('table_name'). " thcv
|
||||
where station_id in (" . $location_list . ")";
|
||||
|
||||
if ($band != 'All') {
|
||||
if ($band == 'SAT') {
|
||||
$sql .= " and col_prop_mode ='" . $band . "'";
|
||||
}
|
||||
else {
|
||||
$sql .= " and col_prop_mode !='SAT'";
|
||||
$sql .= " and col_band ='" . $band . "'";
|
||||
}
|
||||
}
|
||||
|
||||
if ($mode != 'All') {
|
||||
$sql .= " and col_mode ='" . $mode . "'";
|
||||
}
|
||||
|
||||
$sql .= $this->addQslToQuery($qsl, $lotw, $eqsl);
|
||||
|
||||
$sql .= " and col_gridsquare <> '' group by upper(substring(col_gridsquare, 1, 4))
|
||||
order by date desc";
|
||||
|
||||
$query = $this->db->query($sql);
|
||||
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
public function get_vucc_grids($band, $mode, $location_list, $qsl, $lotw, $eqsl) {
|
||||
// $sql = "select min(date(COL_TIME_ON)) date, col_gridsquare from "
|
||||
$sql = "select date(COL_TIME_ON) date, upper(col_vucc_grids) gridsquare from "
|
||||
.$this->config->item('table_name'). " thcv
|
||||
where station_id in (" . $location_list . ")";
|
||||
|
||||
if ($band != 'All') {
|
||||
if ($band == 'SAT') {
|
||||
$sql .= " and col_prop_mode ='" . $band . "'";
|
||||
}
|
||||
else {
|
||||
$sql .= " and col_prop_mode !='SAT'";
|
||||
$sql .= " and col_band ='" . $band . "'";
|
||||
}
|
||||
}
|
||||
|
||||
if ($mode != 'All') {
|
||||
$sql .= " and col_mode ='" . $mode . "'";
|
||||
}
|
||||
|
||||
$sql .= $this->addQslToQuery($qsl, $lotw, $eqsl);
|
||||
|
||||
$sql .= " and col_vucc_grids <> ''";
|
||||
|
||||
$query = $this->db->query($sql);
|
||||
|
||||
return $query->result();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
<style>
|
||||
#continentChart {
|
||||
margin: 0 auto;
|
||||
}
|
||||
</style>
|
||||
<div class="container statistics">
|
||||
|
||||
<h2>
|
||||
<?php echo $page_title; ?>
|
||||
</h2>
|
||||
|
||||
<br>
|
||||
<div hidden class="tabs">
|
||||
<ul class="nav nav-tabs" id="myTab" role="tablist">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" id="continents-tab" data-toggle="tab" href="#continents" role="tab"
|
||||
aria-controls="continents" aria-selected="true">No of QSOs</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="tab-content" id="myTabContent">
|
||||
|
||||
<div class="tab-pane fade active show" id="continents" role="tabpanel" aria-labelledby="continents-tab">
|
||||
<br />
|
||||
<form id="searchForm" name="searchForm" action="<?php echo base_url()."index.php/continents/get_continents";?>" method="post">
|
||||
<div class="form-row">
|
||||
|
||||
<div class="form-group col-lg-2">
|
||||
<label class="form-label" for="band">Band</label>
|
||||
<select id="band" name="band" class="form-control form-control-sm">
|
||||
<option value="">All</option>
|
||||
<?php foreach($bands as $band){ ?>
|
||||
<option value="<?php echo htmlentities($band);?>"><?php echo htmlspecialchars($band);?> </option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group col-lg-2">
|
||||
<label class="form-label" for="mode">Mode</label>
|
||||
<select id="mode" name="mode" class="form-control form-control-sm">
|
||||
<option value="">All</option>
|
||||
<?php foreach($modes as $modeId => $mode){ ?>
|
||||
<option value="<?php echo htmlspecialchars($mode);?>"><?php echo htmlspecialchars($mode);?></option>
|
||||
<?php } ?>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group col-lg-2 col-md-3 col-sm-3 col-xl-21">
|
||||
<label> </label><br>
|
||||
<button type="submit" class="btn btn-sm btn-primary" id="searchButton">Search</button>
|
||||
<button type="reset" class="btn btn-sm btn-danger" id="resetButton">Reset</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div style="display: flex;" id="continentContainer">
|
||||
<div style="flex: 1;"><canvas id="continentChart" width="500" height="500"></canvas></div>
|
||||
<div style="flex: 1;" id="continentTable">
|
||||
|
||||
<table style="width:100%" class="continentstable table table-sm table-bordered table-hover table-striped table-condensed text-center">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>Continent</th>
|
||||
<th># of QSO's worked</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -64,6 +64,12 @@ function load_was_map() {
|
|||
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/sections/statistics.js"></script>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($this->uri->segment(1) == "continents") { ?>
|
||||
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/chart.js"></script>
|
||||
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/chartjs-plugin-piechart-outlabels.js"></script>
|
||||
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/sections/continents.js"></script>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($this->uri->segment(1) == "adif" || $this->uri->segment(1) == "qrz") { ?>
|
||||
<!-- Javascript used for ADIF Import and Export Areas -->
|
||||
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/moment.min.js"></script>
|
||||
|
|
|
|||
|
|
@ -110,6 +110,8 @@
|
|||
<a class="dropdown-item" href="<?php echo site_url('timeplotter');?>" title="View time when worked"><i class="fas fa-chart-area"></i> Timeplotter</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="<?php echo site_url('map/custom');?>" title="Custom Maps of QSOs"><i class="fas fa-globe-europe"></i> Custom Maps</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="<?php echo site_url('continents');?>" title="Continents"><i class="fas fa-globe-europe"></i> Continents</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<form method="post" class="form-inline">
|
||||
<select id="quicklookuptype" name="type" class="form-control custom-select">
|
||||
<option value="cqz">CQ Zone</option>
|
||||
<option value="cq">CQ Zone</option>
|
||||
<option value="dxcc">DXCC</option>
|
||||
<option value="grid">Gridsquare</option>
|
||||
<option value="vucc">Gridsquare</option>
|
||||
<option value="iota">IOTA</option>
|
||||
<option value="sota">SOTA</option>
|
||||
<option value="was">US State</option>
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@ foreach ($result as $mode => $value) {
|
|||
switch($type) {
|
||||
case 'dxcc': $linkinfo = '<a href=\'javascript:displayContacts("'.str_replace("&", "%26", $dxcc).'","' . $key . '","' . $mode . '","DXCC2")\'>' . $val . '</a>'; break;
|
||||
case 'iota': $linkinfo = '<a href=\'javascript:displayContacts("'.str_replace("&", "%26", $iota).'","' . $key . '","' . $mode . '","IOTA")\'>' . $val . '</a>'; break;
|
||||
case 'grid': $linkinfo = '<a href=\'javascript:displayContacts("'.str_replace("&", "%26", $grid).'","' . $key . '","' . $mode . '","VUCC")\'>' . $val . '</a>'; break;
|
||||
case 'cqz': $linkinfo = '<a href=\'javascript:displayContacts("'.str_replace("&", "%26", $cqz).'","' . $key . '","' . $mode . '","CQZone")\'>' . $val . '</a>'; break;
|
||||
case 'vucc': $linkinfo = '<a href=\'javascript:displayContacts("'.str_replace("&", "%26", $grid).'","' . $key . '","' . $mode . '","VUCC")\'>' . $val . '</a>'; break;
|
||||
case 'cq': $linkinfo = '<a href=\'javascript:displayContacts("'.str_replace("&", "%26", $cqz).'","' . $key . '","' . $mode . '","CQZone")\'>' . $val . '</a>'; break;
|
||||
case 'was': $linkinfo = '<a href=\'javascript:displayContacts("'.str_replace("&", "%26", $was).'","' . $key . '","' . $mode . '","WAS")\'>' . $val . '</a>'; break;
|
||||
case 'sota': $linkinfo = '<a href=\'javascript:displayContacts("'.str_replace("&", "%26", $sota).'","' . $key . '","' . $mode . '","SOTA")\'>' . $val . '</a>'; break;
|
||||
case 'wwff': $linkinfo = '<a href=\'javascript:displayContacts("'.str_replace("&", "%26", $wwff).'","' . $key . '","' . $mode . '","WWFF")\'>' . $val . '</a>'; break;
|
||||
|
|
|
|||
|
|
@ -38,39 +38,18 @@
|
|||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
|
||||
<label class="col-md-1 control-label" for="radio">Award</label>
|
||||
<div class="col-md-3">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="awardradio" id="dxcc" value="dxcc" <?php if ($this->input->post('awardradio') == 'dxcc' || $this->input->method() !== 'post') echo ' checked'?>>
|
||||
<label class="form-check-label" for="dxcc">
|
||||
DX Century Club (DXCC)
|
||||
</label>
|
||||
<label class="col-md-1 control-label" for="award">Award</label>
|
||||
<div class="col-md-3">
|
||||
<select id="award" name="award" class="form-control custom-select">
|
||||
<option value="dxcc" <?php if ($this->input->post('award') == "dxcc") echo ' selected'; ?> >DX Century Club (DXCC)</option>
|
||||
<option value="was" <?php if ($this->input->post('award') == "was") echo ' selected'; ?> >Worked All States (WAS)</option>
|
||||
<option value="iota" <?php if ($this->input->post('award') == "iota") echo ' selected'; ?> >Islands On The Air (IOTA)</option>
|
||||
<option value="waz" <?php if ($this->input->post('award') == "waz") echo ' selected'; ?> >Worked All Zones (WAZ)</option>
|
||||
<option value="vucc" <?php if ($this->input->post('award') == "vucc") echo ' selected'; ?> >VHF / UHF Century Club (VUCC)</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="awardradio" id="was" value="was" <?php if ($this->input->post('awardradio') == 'was') echo ' checked'?>>
|
||||
<label class="form-check-label" for="was">
|
||||
Worked All States (WAS)
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="awardradio" id="iota" value="iota" <?php if ($this->input->post('awardradio') == 'iota') echo ' checked'?>>
|
||||
<label class="form-check-label" for="iota">
|
||||
Islands On The Air (IOTA)
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="awardradio" id="waz" value="waz" <?php if ($this->input->post('awardradio') == 'waz') echo ' checked'?>>
|
||||
<label class="form-check-label" for="waz">
|
||||
Worked All Zones (WAZ)
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<div class="col-md-1 control-label">Confirmation</div>
|
||||
<div class="col-md-10">
|
||||
<div class="col-md-3">
|
||||
<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>
|
||||
|
|
@ -109,11 +88,12 @@
|
|||
<?php
|
||||
|
||||
if ($timeline_array) {
|
||||
switch ($this->input->post('awardradio')) {
|
||||
case 'dxcc': $result = write_dxcc_timeline($timeline_array, $custom_date_format, $bandselect, $modeselect, $this->input->post('awardradio')); break;
|
||||
case 'was': $result = write_was_timeline($timeline_array, $custom_date_format, $bandselect, $modeselect, $this->input->post('awardradio')); break;
|
||||
case 'iota': $result = write_iota_timeline($timeline_array, $custom_date_format, $bandselect, $modeselect, $this->input->post('awardradio')); break;
|
||||
case 'waz': $result = write_waz_timeline($timeline_array, $custom_date_format, $bandselect, $modeselect, $this->input->post('awardradio')); break;
|
||||
switch ($this->input->post('award')) {
|
||||
case 'dxcc': $result = write_dxcc_timeline($timeline_array, $custom_date_format, $bandselect, $modeselect, $this->input->post('award')); break;
|
||||
case 'was': $result = write_was_timeline($timeline_array, $custom_date_format, $bandselect, $modeselect, $this->input->post('award')); break;
|
||||
case 'iota': $result = write_iota_timeline($timeline_array, $custom_date_format, $bandselect, $modeselect, $this->input->post('award')); break;
|
||||
case 'waz': $result = write_waz_timeline($timeline_array, $custom_date_format, $bandselect, $modeselect, $this->input->post('award')); break;
|
||||
case 'vucc': $result = write_vucc_timeline($timeline_array, $custom_date_format, $bandselect, $modeselect, $this->input->post('award')); break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
@ -236,3 +216,28 @@ function write_waz_timeline($timeline_array, $custom_date_format, $bandselect, $
|
|||
}
|
||||
echo '</tfoot></table></div>';
|
||||
}
|
||||
|
||||
function write_vucc_timeline($timeline_array, $custom_date_format, $bandselect, $modeselect, $award) {
|
||||
$i = count($timeline_array);
|
||||
echo '<table style="width:100%" class="table table-sm timelinetable table-bordered table-hover table-striped table-condensed text-center">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>#</td>
|
||||
<td>Date</td>
|
||||
<td>Gridsquare</td>
|
||||
<td>Show QSOs</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>';
|
||||
|
||||
foreach ($timeline_array as $line) {
|
||||
$date_as_timestamp = strtotime($line['date']);
|
||||
echo '<tr>
|
||||
<td>' . $i-- . '</td>
|
||||
<td>' . date($custom_date_format, $date_as_timestamp) . '</td>
|
||||
<td>' . $line['gridsquare'] . '</td>
|
||||
<td><a href=javascript:displayTimelineContacts("' . $line['gridsquare'] . '","'. $bandselect . '","'. $modeselect . '","' . $award .'")>Show</a></td>
|
||||
</tr>';
|
||||
}
|
||||
echo '</tfoot></table></div>';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,39 @@
|
|||
<div id="container" class="container mx-auto pt-5" style="max-width:400px">
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<div class="text-center">
|
||||
<h3><i class="fa fa-lock fa-4x"></i></h3>
|
||||
<h2 class="text-center">Forgot Password?</h2>
|
||||
<p>You can reset your password here.</p>
|
||||
<div class="panel-body">
|
||||
|
||||
<style>
|
||||
html,
|
||||
body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding-top: 40px;
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
|
||||
.form-forgot {
|
||||
width: 100%;
|
||||
max-width: 430px;
|
||||
padding: 15px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
input[type="email"] {
|
||||
margin-bottom: -1px;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<main class="form-forgot">
|
||||
<img src="<?php echo base_url()?>/CloudLog_logo.png" class="mx-auto d-block" alt="" style="width:100px;height:100px;">
|
||||
<div class="my-2 bg-body rounded-0 shadow-sm card mb-2 shadow-sm">
|
||||
<div class="card-body">
|
||||
<div class="text-center">
|
||||
<h3 class="text-center">Forgot Password? <i class="fa fa-lock"></i></h3>
|
||||
<p>You can reset your password here.</p>
|
||||
<div class="panel-body">
|
||||
|
||||
<?php if(validation_errors() != ''): ?>
|
||||
<div class="alert alert-danger" role="alert">
|
||||
<?php echo validation_errors(); ?>
|
||||
|
|
@ -16,23 +41,20 @@
|
|||
<?php endif; ?>
|
||||
|
||||
<form id="register-form" role="form" autocomplete="off" class="form" method="post" action="<?php echo site_url('user/forgot_password'); ?>">
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon"><i class="glyphicon glyphicon-envelope color-blue"></i></span>
|
||||
<input id="email" name="email" placeholder="email address" class="form-control" type="email">
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon"><i class="glyphicon glyphicon-envelope color-blue"></i></span>
|
||||
<input id="email" name="email" placeholder="email address" class="form-control" type="email">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input name="recover-submit" class="btn btn-lg btn-primary btn-block" value="Reset Password" type="submit">
|
||||
</div>
|
||||
|
||||
<input type="hidden" class="hide" name="token" id="token" value="">
|
||||
<div class="form-group">
|
||||
<input name="recover-submit" class="w-100 btn btn-primary btn-block" value="Reset Password" type="submit">
|
||||
</div>
|
||||
<input type="hidden" class="hide" name="token" id="token" value="">
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
|
@ -1,14 +1,17 @@
|
|||
<div class="container">
|
||||
|
||||
<br>
|
||||
<?php if($this->session->flashdata('notice')) { ?>
|
||||
<div id="message" >
|
||||
<?php echo $this->session->flashdata('notice'); ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<h2><?php echo $page_title; ?></h2>
|
||||
|
||||
<?php if($this->session->flashdata('notice')) { ?>
|
||||
<!-- Display Message -->
|
||||
<div class="alert alert-info" role="alert">
|
||||
<?php echo $this->session->flashdata('notice'); ?>
|
||||
</div>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
User List
|
||||
|
|
|
|||
|
|
@ -375,13 +375,13 @@ function spawnLookupModal() {
|
|||
$('#quicklookupcqz').hide();
|
||||
$('#quicklookupwas').hide();
|
||||
$('#quicklookuptext').hide();
|
||||
} else if (type == "grid" || type == "sota" || type == "wwff") {
|
||||
} else if (type == "vucc" || type == "sota" || type == "wwff") {
|
||||
$('#quicklookuptext').show();
|
||||
$('#quicklookupiota').hide();
|
||||
$('#quicklookupdxcc').hide();
|
||||
$('#quicklookupcqz').hide();
|
||||
$('#quicklookupwas').hide();
|
||||
} else if (type == "cqz") {
|
||||
} else if (type == "cq") {
|
||||
$('#quicklookupcqz').show();
|
||||
$('#quicklookupiota').hide();
|
||||
$('#quicklookupdxcc').hide();
|
||||
|
|
|
|||
157
assets/js/sections/continents.js
普通文件
157
assets/js/sections/continents.js
普通文件
|
|
@ -0,0 +1,157 @@
|
|||
$(document).ready(function () {
|
||||
// Needed for continentstable header fix, will be squished without
|
||||
$("a[href='#continents']").on('shown.bs.tab', function(e) {
|
||||
$(".continentstable").DataTable().columns.adjust();
|
||||
});
|
||||
|
||||
$('#searchForm').submit(function (e) {
|
||||
$('#searchButton').prop("disabled", true);
|
||||
|
||||
$.ajax({
|
||||
url: this.action,
|
||||
type: 'post',
|
||||
data: {
|
||||
mode: this.mode.value,
|
||||
band: this.band.value,
|
||||
},
|
||||
dataType: 'json',
|
||||
success: function (data) {
|
||||
$('#searchButton').prop("disabled", false);
|
||||
totalContinentQsos(data);
|
||||
},
|
||||
error: function (data) {
|
||||
$('#searchButton').prop("disabled", false);
|
||||
BootstrapDialog.alert({
|
||||
title: 'ERROR',
|
||||
message: 'An error ocurred while making the request',
|
||||
type: BootstrapDialog.TYPE_DANGER,
|
||||
closable: false,
|
||||
draggable: false,
|
||||
callback: function (result) {
|
||||
}
|
||||
});
|
||||
},
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#searchForm').submit();
|
||||
});
|
||||
|
||||
function totalContinentQsos(data) {
|
||||
// using this to change color of legend and label according to background color
|
||||
var color = ifDarkModeThemeReturn('white', 'grey');
|
||||
|
||||
if (data.length > 0) {
|
||||
$('.continentstable > tbody').empty();
|
||||
$('.tabs').removeAttr('hidden');
|
||||
|
||||
var labels = [];
|
||||
var dataQso = [];
|
||||
var totalQso = Number(0);
|
||||
|
||||
var $myTable = $('.continentstable');
|
||||
var i = 1;
|
||||
|
||||
// building the rows in the table
|
||||
var rowElements = data.map(function (row) {
|
||||
|
||||
var $row = $('<tr></tr>');
|
||||
|
||||
var $iterator = $('<td></td>').html(i++);
|
||||
var $type = $('<td></td>').html(row.cont);
|
||||
var $content = $('<td></td>').html(row.count);
|
||||
|
||||
$row.append($iterator, $type, $content);
|
||||
|
||||
return $row;
|
||||
});
|
||||
|
||||
// finally inserting the rows
|
||||
$myTable.append(rowElements);
|
||||
|
||||
$.each(data, function () {
|
||||
labels.push(this.cont);
|
||||
dataQso.push(this.count);
|
||||
totalQso = Number(totalQso) + Number(this.count);
|
||||
});
|
||||
|
||||
const COLORS = ["#3366cc", "#dc3912", "#ff9900", "#109618", "#990099", "#0099c6", "#dd4477", "#66aa00", "#b82e2e", "#316395", "#994499"]
|
||||
|
||||
let chartStatus = Chart.getChart("continentChart"); // <canvas> id
|
||||
if (chartStatus != undefined) {
|
||||
chartStatus.destroy();
|
||||
}
|
||||
|
||||
var ctx = document.getElementById("continentChart").getContext('2d');
|
||||
var myChart = new Chart(ctx, {
|
||||
plugins: [ChartPieChartOutlabels],
|
||||
type: 'doughnut',
|
||||
data: {
|
||||
labels: labels,
|
||||
datasets: [{
|
||||
borderColor: 'rgba(54, 162, 235, 1)',
|
||||
label: 'Number of QSO\'s worked',
|
||||
data: dataQso,
|
||||
backgroundColor: ["#3366cc", "#dc3912", "#ff9900", "#109618", "#990099", "#0099c6", "#dd4477", "#66aa00", "#b82e2e", "#316395", "#994499"],
|
||||
borderWidth: 1,
|
||||
labels: labels,
|
||||
}]
|
||||
},
|
||||
|
||||
options: {
|
||||
layout: {
|
||||
padding: 100
|
||||
},
|
||||
title: {
|
||||
fontColor: color,
|
||||
fullSize: true,
|
||||
},
|
||||
responsive: false,
|
||||
maintainAspectRatio: true,
|
||||
plugins: {
|
||||
legend: {
|
||||
display: false,
|
||||
labels: {
|
||||
boxWidth: 15,
|
||||
color: color,
|
||||
font: {
|
||||
size: 14,
|
||||
}
|
||||
},
|
||||
position: 'right',
|
||||
align: "middle"
|
||||
},
|
||||
outlabels: {
|
||||
backgroundColor: COLORS,
|
||||
borderColor: COLORS,
|
||||
borderRadius: 2, // Border radius of Label
|
||||
borderWidth: 2, // Thickness of border
|
||||
color: 'white',
|
||||
stretch: 10,
|
||||
padding: 0,
|
||||
font: {
|
||||
resizable: true,
|
||||
minSize: 12,
|
||||
maxSize: 25,
|
||||
family: Chart.defaults.font.family,
|
||||
size: Chart.defaults.font.size,
|
||||
style: Chart.defaults.font.style,
|
||||
lineHeight: Chart.defaults.font.lineHeight,
|
||||
},
|
||||
zoomOutPercentage: 100,
|
||||
textAlign: 'start',
|
||||
backgroundColor: COLORS,
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// using this to change color of csv-button if dark mode is chosen
|
||||
var background = $('body').css("background-color");
|
||||
|
||||
if (background != ('rgb(255, 255, 255)')) {
|
||||
$(".buttons-csv").css("color", "white");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -408,7 +408,6 @@ $("#callsign").focusout(function() {
|
|||
if(result.dxcc.entity != undefined) {
|
||||
$('#country').val(convert_case(result.dxcc.entity));
|
||||
$('#callsign_info').text(convert_case(result.dxcc.entity));
|
||||
getDxccResult(result.dxcc.adif, convert_case(result.dxcc.entity));
|
||||
|
||||
if($("#sat_name" ).val() != "") {
|
||||
//logbook/jsonlookupgrid/io77/SAT/0/0
|
||||
|
|
@ -452,6 +451,8 @@ $("#callsign").focusout(function() {
|
|||
}
|
||||
|
||||
changebadge(result.dxcc.entity);
|
||||
|
||||
getDxccResult(result.dxcc.adif, convert_case(result.dxcc.entity));
|
||||
}
|
||||
|
||||
if(result.lotw_member == "active") {
|
||||
|
|
|
|||
正在加载…
在新工单中引用