65 lines
2.4 KiB
Markdown
65 lines
2.4 KiB
Markdown
# UI Schedule Fix — 2026-04-25
|
||
|
||
## Задача
|
||
Три правки в UI расписания (schedule.js, schedule.html, main.py).
|
||
|
||
## Правки
|
||
|
||
### 1. duration_eff — единицы (main.py, строка 554–555)
|
||
**Проблема:** `fa_flight_time` из FR24 — секунды, `duration_min` из Яндекса — минуты. Смешивались без конвертации.
|
||
|
||
**Было:**
|
||
```python
|
||
"duration_eff": r.get("fa_flight_time") or r.get("duration_min"),
|
||
```
|
||
|
||
**Стало:**
|
||
```python
|
||
# fa_flight_time — секунды (FR24), duration_min — минуты (Яндекс)
|
||
"duration_eff": (lambda fa_ft: (int(fa_ft) // 60 if fa_ft else None) or r.get("duration_min"))(r.get("fa_flight_time")),
|
||
```
|
||
|
||
---
|
||
|
||
### 2. Колонки фактического времени (schedule.js + schedule.html)
|
||
**Проблема:** Было 2 колонки «Взлёт факт» и «Посадка факт», показывались обе независимо от направления рейса.
|
||
|
||
**Стало:** 1 колонка «Фактическое» — для вылетов `actual_takeoff`, для прилётов `actual_landed`.
|
||
|
||
**schedule.js (renderTable):**
|
||
```js
|
||
const actTime = f.direction === "departure" ? f.actual_takeoff : f.actual_landed;
|
||
const actDelay = f.direction === "departure" ? f.delay_takeoff_min : f.delay_landed_min;
|
||
const actCell = actTime
|
||
? `<span class="act-time">${fmtTime(actTime)}</span> ${delayCell(actDelay)}`
|
||
: "—";
|
||
```
|
||
|
||
**schedule.html:** Убрана колонка «Посадка факт», «Взлёт факт» → «Фактическое».
|
||
|
||
**Обновлено:** все `colspan="13"` → `colspan="12"` (schedule.js × 3, schedule.html × 1).
|
||
|
||
---
|
||
|
||
### 3. ВПП по направлению рейса (schedule.js)
|
||
**Проблема:** Показывалось `runway_takeoff→runway_landed` вне зависимости от типа рейса.
|
||
|
||
**Стало:** только один runway по направлению.
|
||
|
||
**renderTable и renderCards:**
|
||
```js
|
||
const runway = f.direction === "departure"
|
||
? (f.runway_takeoff || "—")
|
||
: (f.runway_landed || "—");
|
||
```
|
||
|
||
---
|
||
|
||
## Деплой
|
||
- Файлы загружены на VM: `/home/fr24/projects/fr24/frontend/`
|
||
- `docker cp` в контейнер `fr24-api`
|
||
- `docker restart fr24-api` — успешно
|
||
|
||
## Статус
|
||
✅ Все три правки применены и задеплоены.
|