|
| 1 | +import { set_route_classes } from './utils.js'; |
| 2 | +import { cache } from './app.js'; |
| 3 | + |
| 4 | +export function update_delay_panel() { |
| 5 | + const delay_filter_el = document.querySelector('#delay_type_filter'); |
| 6 | + const delay_filter = delay_filter_el.value; |
| 7 | + const vehicle_filter_el = document.querySelector('#delay_vehicle_type_filter'); |
| 8 | + const vehicle_filter = vehicle_filter_el.value; |
| 9 | + |
| 10 | + const now_hh_mm = (new Date()).toLocaleTimeString('bg-BG', { hour: '2-digit', minute: '2-digit' }).split(':').map(Number); |
| 11 | + const now_mins = (now_hh_mm[0] * 60 + now_hh_mm[1]) % (24 * 60); |
| 12 | + const delays = Array.from(cache) |
| 13 | + .filter(([key, v]) => !v.hidden) |
| 14 | + .map(([key, v]) => ({ |
| 15 | + route: v.route_ref, |
| 16 | + delay: v.delay, |
| 17 | + inv_number: v.inv_number, |
| 18 | + type: v.type, |
| 19 | + delay: now_mins - v.scheduled_time, |
| 20 | + cgm_id: key, |
| 21 | + })) |
| 22 | + .filter((v) => vehicle_filter == 'all' || v.type == vehicle_filter) |
| 23 | + .filter((v) => delay_filter == 'all' || delay_filter == 'early' && v.delay < -1 || delay_filter == 'ontime' && -1 <= v.delay && v.delay <= 3 || delay_filter == 'late' && 3 < v.delay); |
| 24 | + delays.sort((a, b) => b.delay - a.delay); |
| 25 | + |
| 26 | + const delay_table = document.querySelector('#delay_table'); |
| 27 | + delay_table.innerHTML = ''; |
| 28 | + for(const delay of delays) { |
| 29 | + const tr = document.createElement('tr'); |
| 30 | + const span = document.createElement('span'); |
| 31 | + set_route_classes(span, delay.type, delay.route); |
| 32 | + span.classList.add('text-nowrap'); |
| 33 | + tr.innerHTML = ` |
| 34 | + <td>${span.outerHTML}</td> |
| 35 | + <td><button class="btn btn-sm btn-outline-primary" onclick="zoom_to_vehicle('${delay.cgm_id}')">${delay.inv_number}</button></td> |
| 36 | + <td class="${-1 <= delay.delay && delay.delay <= 3 ? 'text-success' : 'text-danger'} ${delay.delay >= 10 ? 'fw-bold' : ''}">${delay.delay > 0 ? '+' : ''}${delay.delay} мин</td> |
| 37 | + `; |
| 38 | + delay_table.appendChild(tr); |
| 39 | + } |
| 40 | +} |
| 41 | +window.update_delay_panel = update_delay_panel; |
0 commit comments