Integrate information about next passes into sat timers
这个提交包含在:
		
							父节点
							
								
									f026b8518f
								
							
						
					
					
						当前提交
						a9ec7818cb
					
				
					共有  5 个文件被更改,包括 77 次插入 和 17 次删除
				
			
		|  | @ -10,15 +10,38 @@ class Sattimers extends CI_Controller { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|     public function index() { |     public function index() { | ||||||
|  |         $this->load->model('stations'); | ||||||
|         $footerData = []; |         $footerData = []; | ||||||
|         $footerData['scripts'] = [ |         $footerData['scripts'] = [ | ||||||
|            'assets/js/sections/sattimers.js?' |            '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); |         $json = file_get_contents($url); | ||||||
|         $data['activations'] = json_decode($json, true)['data']; |         $data['activations'] = json_decode($json, true)['data']; | ||||||
|  |         $data['gridsquare'] = strtoupper($this->stations->find_gridsquare()); | ||||||
| 
 | 
 | ||||||
|         $data['page_title'] = "Satellite Timers"; |         $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('interface_assets/header', $data); | ||||||
|         $this->load->view('/sattimers/index', $data); |         $this->load->view('/sattimers/index', $data); | ||||||
|         $this->load->view('interface_assets/footer', $footerData); |         $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> |     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/sections/continents.js"></script> | ||||||
| <?php } ?>
 | <?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 --> |     <!-- 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/moment.min.js"></script> | ||||||
|     <script type="text/javascript" src="<?php echo base_url(); ?>assets/js/tempusdominus-bootstrap-4.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="container"> | ||||||
| <div class="table-responsive"> | <div class="table-responsive"> | ||||||
| 
 | 
 | ||||||
|     <h2>Satellite Timers</h2> |     <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"> |     <script type="text/javascript"> | ||||||
|         let dateArray = []; |         let dateArray = []; | ||||||
|         dateArray.push(0); |         dateArray.push(0); | ||||||
|  | @ -23,18 +26,30 @@ | ||||||
|             <tr> |             <tr> | ||||||
|                 <th>Satellite</th> |                 <th>Satellite</th> | ||||||
|                 <th colspan="2">Status</th> |                 <th colspan="2">Status</th> | ||||||
|                 <th>Time-Out</th> |                 <th>Time(d)-Out</th> | ||||||
|                 <th></td> |                 <th>AOS</th> | ||||||
|  |                 <th>LOS</th> | ||||||
|  |                 <th>AOS Azimuth</th> | ||||||
|  |                 <th>LOS Azimuth</th> | ||||||
|  |                 <th>Max Elevation</th> | ||||||
|  |                 <th>Duration</th> | ||||||
|  |                 <th></th> | ||||||
|             </tr> |             </tr> | ||||||
|         </thead> |         </thead> | ||||||
|         <tbody> |         <tbody> | ||||||
|             <?php $i = 1; ?>
 |             <?php $i = 1; ?>
 | ||||||
|             <?php foreach ($activations as $activation) : ?>
 |             <?php foreach ($activations as $activation) : ?>
 | ||||||
|                 <tr> |                 <tr id="line"> | ||||||
|                 <td><span><?php echo $activation['sat']; ?></span></td>
 |                 <td><span><?php echo $activation['sat']; ?></span></td>
 | ||||||
|                 <td><span class="emoji" id="emoji<?php echo $i; ?>">n/a</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 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> |                 <td> | ||||||
|                 <?php |                 <?php | ||||||
|                    if (strpos($activation['sat'], 'TEVEL') !== false) { |                    if (strpos($activation['sat'], 'TEVEL') !== false) { | ||||||
|  | @ -45,6 +60,8 @@ | ||||||
|                       echo "<a href=\"https://x.com/Diwata2PH?s=20\" target=\"_blank\">Info</a>"; |                       echo "<a href=\"https://x.com/Diwata2PH?s=20\" target=\"_blank\">Info</a>"; | ||||||
|                    } else if (strpos($activation['sat'], 'CAS-3H') !== false) { |                    } 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>"; |                       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> |                 </td> | ||||||
|  |  | ||||||
|  | @ -1,32 +1,26 @@ | ||||||
| .title { | .title { | ||||||
|    text-align: center; |    text-align: center; | ||||||
|    font-family: sans-serif; |  | ||||||
|    color: #bbb; |    color: #bbb; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .active { | .active { | ||||||
|    font-family: sans-serif; |  | ||||||
|    color: #3fb618; |    color: #3fb618; | ||||||
|    margin-bottom: 10px; |    margin-bottom: 10px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .timedout { | .timedout { | ||||||
|    font-family: sans-serif; |  | ||||||
|    color: #f00; |    color: #f00; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .nonfunctional { | .nonfunctional { | ||||||
|    font-family: sans-serif; |  | ||||||
|    color: #555; |    color: #555; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .timeout { | .timeout { | ||||||
|    font-family: sans-serif; |  | ||||||
|    color: #bbb; |    color: #bbb; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .expired { | .expired { | ||||||
|    font-family: sans-serif; |  | ||||||
|    color: #555; |    color: #555; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -7,6 +7,20 @@ function update(i) { | ||||||
|     element.classList.add("nonfunctional"); |     element.classList.add("nonfunctional"); | ||||||
|     element = document.getElementById("emoji"+i); |     element = document.getElementById("emoji"+i); | ||||||
|     element.innerHTML = "💀"; |     element.innerHTML = "💀"; | ||||||
|  |     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 { | } else { | ||||||
| 
 | 
 | ||||||
|      var distance = parseInt(dateArray[i]) - new Date(now.getTime()); |      var distance = parseInt(dateArray[i]) - new Date(now.getTime()); | ||||||
|  | @ -26,7 +40,19 @@ function update(i) { | ||||||
|        element.innerHTML = "❌"; |        element.innerHTML = "❌"; | ||||||
|        element = document.getElementById("tevel"+i+"Timeout"); |        element = document.getElementById("tevel"+i+"Timeout"); | ||||||
|        element.className = "expired"; |        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 { |      } else { | ||||||
|        var element = document.getElementById("tevel"+i+"Timer"); |        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"; |        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 = document.getElementById("emoji"+i); | ||||||
|        element.innerHTML = "✅"; |        element.innerHTML = "✅"; | ||||||
|        element = document.getElementById("tevel"+i+"Timeout"); |        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() { |       var x = setInterval(function() { | ||||||
|                update(i); |                update(i); | ||||||
|             }, 1000); |             }, 1000); | ||||||
|  |  | ||||||
		正在加载…
	
		在新工单中引用