Integrate information about next passes into sat timers

这个提交包含在:
phl0 2023-10-18 20:01:36 +02:00
父节点 f026b8518f
当前提交 a9ec7818cb
找不到此签名对应的密钥
GPG 密钥 ID: 48EA1E640798CA9A
共有 5 个文件被更改,包括 77 次插入17 次删除

查看文件

@ -10,15 +10,38 @@ class Sattimers extends CI_Controller {
}
public function index() {
$this->load->model('stations');
$footerData = [];
$footerData['scripts'] = [
'assets/js/sections/sattimers.js?'
];
$url = 'https://www.df2et.de/tevel/api.php';
$url = 'https://www.df2et.de/tevel/api2.php?grid='.strtoupper($this->stations->find_gridsquare());
$json = file_get_contents($url);
$data['activations'] = json_decode($json, true)['data'];
$data['gridsquare'] = strtoupper($this->stations->find_gridsquare());
$data['page_title'] = "Satellite Timers";
$CI =& get_instance();
if($CI->session->userdata('user_date_format')) {
$data['custom_date_format'] = $CI->session->userdata('user_date_format');
} else {
$data['custom_date_format'] = $CI->config->item('qso_date_format');
}
switch ($data['custom_date_format']) {
case "d/m/y": $data['custom_date_format'] = 'DD/MM/YY'; break;
case "d/m/Y": $data['custom_date_format'] = 'DD/MM/YYYY'; break;
case "m/d/y": $data['custom_date_format'] = 'MM/DD/YY'; break;
case "m/d/Y": $data['custom_date_format'] = 'MM/DD/YYYY'; break;
case "d.m.Y": $data['custom_date_format'] = 'DD.MM.YYYY'; break;
case "y/m/d": $data['custom_date_format'] = 'YY/MM/DD'; break;
case "Y-m-d": $data['custom_date_format'] = 'YYYY-MM-DD'; break;
case "M d, Y": $data['custom_date_format'] = 'MMM DD, YYYY'; break;
case "M d, y": $data['custom_date_format'] = 'MMM DD, YY'; break;
default: $data['custom_date_format'] = 'DD/MM/YYYY';
}
$this->load->view('interface_assets/header', $data);
$this->load->view('/sattimers/index', $data);
$this->load->view('interface_assets/footer', $footerData);

查看文件

@ -85,7 +85,7 @@ function load_was_map() {
<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" || $this->uri->segment(1) == "hrdlog" ||$this->uri->segment(1) == "webadif") { ?>
<?php if ($this->uri->segment(1) == "adif" || $this->uri->segment(1) == "qrz" || $this->uri->segment(1) == "hrdlog" || $this->uri->segment(1) == "webadif" || $this->uri->segment(1) == "sattimers") { ?>
<!-- Javascript used for ADIF Import and Export Areas -->
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/moment.min.js"></script>
<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/tempusdominus-bootstrap-4.min.js"></script>

查看文件

@ -1,8 +1,11 @@
<script type="text/javascript">
var custom_date_format = "<?php echo $custom_date_format ?>";
</script>
<div class="container">
<div class="table-responsive">
<h2>Satellite Timers</h2>
<p>This data is from <a target="_blank" href="https://www.df2et.de/tevel/">https://www.df2et.de/tevel/</a></p>
<p>This data is from <a target="_blank" href="https://www.df2et.de/tevel/">https://www.df2et.de/tevel/</a> calculated for current station location grid <?php echo strtoupper($gridsquare);?>.</p>
<script type="text/javascript">
let dateArray = [];
dateArray.push(0);
@ -23,18 +26,30 @@
<tr>
<th>Satellite</th>
<th colspan="2">Status</th>
<th>Time-Out</th>
<th></td>
<th>Time(d)-Out</th>
<th>AOS</th>
<th>LOS</th>
<th>AOS Azimuth</th>
<th>LOS Azimuth</th>
<th>Max Elevation</th>
<th>Duration</th>
<th></th>
</tr>
</thead>
<tbody>
<?php $i = 1; ?>
<?php foreach ($activations as $activation) : ?>
<tr>
<tr id="line">
<td><span><?php echo $activation['sat']; ?></span></td>
<td><span class="emoji" id="emoji<?php echo $i; ?>">n/a</span></td>
<td><span id="tevel<?php echo $i; ?>Timer"></span></td>
<td><span class="timeout" id="tevel<?php echo $i; ?>Timeout">...</span></td>
<td><span id="tevel<?php echo $i; ?>Timeout">...</span></td>
<td><span id="tevel<?php echo $i; ?>AosTime"><?php echo date('H:i:s', $activation['aos_time']); ?></span></td>
<td><span id="tevel<?php echo $i; ?>LosTime"><?php echo date('H:i:s', $activation['los_time']); ?></span></td>
<td><span id="tevel<?php echo $i; ?>Aos"><?php echo $activation['aos']; ?>°</span></td>
<td><span id="tevel<?php echo $i; ?>Los"><?php echo $activation['los']; ?>°</span></td>
<td><span id="tevel<?php echo $i; ?>MaxEl"><?php echo $activation['max_elev']; ?>°</span></td>
<td><span id="tevel<?php echo $i; ?>Duration"><?php echo $activation['duration_min']; ?>°</span></td>
<td>
<?php
if (strpos($activation['sat'], 'TEVEL') !== false) {
@ -45,6 +60,8 @@
echo "<a href=\"https://x.com/Diwata2PH?s=20\" target=\"_blank\">Info</a>";
} else if (strpos($activation['sat'], 'CAS-3H') !== false) {
echo "<a href=\"https://www.amsat.org/two-way-satellites/lilacsat-2-cas-3h/\" target=\"_blank\">Info</a>";
} else if (strpos($activation['sat'], 'LEDSAT') !== false) {
echo "<a href=\"https://www.esa.int/Education/CubeSats_-_Fly_Your_Satellite/Connect_and_communicate_with_a_satellite_via_the_LEDSAT_Digipeater_Challenge\" target=\"_blank\">Info</a>";
}
?>
</td>

查看文件

@ -1,32 +1,26 @@
.title {
text-align: center;
font-family: sans-serif;
color: #bbb;
}
.active {
font-family: sans-serif;
color: #3fb618;
margin-bottom: 10px;
}
.timedout {
font-family: sans-serif;
color: #f00;
}
.nonfunctional {
font-family: sans-serif;
color: #555;
}
.timeout {
font-family: sans-serif;
color: #bbb;
}
.expired {
font-family: sans-serif;
color: #555;
}

查看文件

@ -7,7 +7,21 @@ function update(i) {
element.classList.add("nonfunctional");
element = document.getElementById("emoji"+i);
element.innerHTML = "&#x1F480;";
} else {
element = document.getElementById("tevel"+i+"Timeout");
element.className = "expired";
element = document.getElementById("tevel"+i+"AosTime");
element.className = "expired";
element = document.getElementById("tevel"+i+"LosTime");
element.className = "expired";
element = document.getElementById("tevel"+i+"Aos");
element.className = "expired";
element = document.getElementById("tevel"+i+"Los");
element.className = "expired";
element = document.getElementById("tevel"+i+"MaxEl");
element.className = "expired";
element = document.getElementById("tevel"+i+"Duration");
element.className = "expired";
} else {
var distance = parseInt(dateArray[i]) - new Date(now.getTime());
var satDate = new Date(parseInt(dateArray[i]));
@ -26,7 +40,19 @@ function update(i) {
element.innerHTML = "&#x274C;";
element = document.getElementById("tevel"+i+"Timeout");
element.className = "expired";
element.innerHTML = "(timed-out: "+satDate.toLocaleDateString()+" "+satDate.toLocaleTimeString()+")";
element.innerHTML = moment(satDate).format(custom_date_format)+" "+satDate.getUTCHours().toString().padStart(2, '0')+":"+satDate.getUTCMinutes().toString().padStart(2, '0');
element = document.getElementById("tevel"+i+"AosTime");
element.className = "expired";
element = document.getElementById("tevel"+i+"LosTime");
element.className = "expired";
element = document.getElementById("tevel"+i+"Aos");
element.className = "expired";
element = document.getElementById("tevel"+i+"Los");
element.className = "expired";
element = document.getElementById("tevel"+i+"MaxEl");
element.className = "expired";
element = document.getElementById("tevel"+i+"Duration");
element.className = "expired";
} else {
var element = document.getElementById("tevel"+i+"Timer");
element.innerHTML = days + "d " + hours + "h " + minutes.toString().padStart(2, '0') + "m " + seconds.toString().padStart(2, '0') + "s";
@ -34,12 +60,12 @@ function update(i) {
element = document.getElementById("emoji"+i);
element.innerHTML = "&#x2705;";
element = document.getElementById("tevel"+i+"Timeout");
element.innerHTML = "(until: "+satDate.toLocaleDateString()+" "+satDate.toLocaleTimeString()+")";
element.innerHTML = moment(satDate).format(custom_date_format)+" "+satDate.getUTCHours().toString().padStart(2, '0')+":"+satDate.getUTCMinutes().toString().padStart(2, '0');
}
}
}
for (let i=1; i<=12; i++) {
for (let i=1; i<=13; i++) {
var x = setInterval(function() {
update(i);
}, 1000);