Files
arara_oarmp/db/processed/planejamento_insp_grande.html
Cesa-V a34ed6b340 Migra C1 de Set Covering para Set Partitioning e documenta limitacoes (v0.10)
- C1 alterado: z[nid] <= 1 -> z[nid] == 1 para todas as missoes; toda missao
  deve ser coberta por exatamente 1 aeronave (sem missoes descobertas).
- n_missoes padrao reduzido de 50 para 20 (n_evam de 5 para 4): garante
  factibilidade do MIP com Set Partitioning no envelope de 4 aeronaves.
- Time limit padrao do solver CBC fixado em 120 s (era ilimitado): evita
  travamento ao tentar provar infeasibility.
- Corrigido display "Not Solved": status de L1 preservado quando PuLP
  redefine mdl.status apos setObjective() em L2.
- f0_cenario_insp_grande.json revisado: apenas 2803 com f0=595h em INSP 2A
  (F_max=600h, downtime=4 dias); demais matriculas com f0=0.
- Gerado planejamento_insp_grande.html: Gantt exibe INSP 2A visivelmente;
  20/20 missoes cobertas; CBC Optimal em < 15 s.
- changelog.md e LOG.md atualizados com limitacoes detalhadas para
  contribuidores: escopo validado, bugs de display, riscos numericos do
  big-M com LRT < 5h e comportamento de 2811 ociosa.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 11:09:24 -03:00

1120 lines
78 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="utf-8">
<title>Planejamento de Diagonal de Manutenção</title>
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: 'Segoe UI', Arial, sans-serif; background: #f0f2f5; color: #222; }
header {
background: #1a3a5c; color: white;
padding: 18px 32px;
border-bottom: 4px solid #c8a400;
}
header h1 { font-size: 1.5rem; font-weight: 700; letter-spacing: 0.03em; }
header p { font-size: 0.85rem; opacity: 0.75; margin-top: 4px; }
.container { padding: 24px 32px; max-width: 1600px; margin: 0 auto; }
.section {
background: white; border-radius: 8px;
box-shadow: 0 1px 4px rgba(0,0,0,0.12);
margin-bottom: 28px; overflow: hidden;
}
.section-title {
background: #f7f8fa; border-bottom: 1px solid #e0e0e0;
padding: 12px 20px; font-size: 0.95rem; font-weight: 600;
color: #1a3a5c; text-transform: uppercase; letter-spacing: 0.05em;
}
.section-body { padding: 16px; }
iframe.mapa {
width: 100%; height: 560px; border: none; border-radius: 4px; display: block;
}
</style>
</head>
<body>
<header>
<h1>Planejamento de Diagonal de Manutenção</h1>
<p>Esquadrão Arara · C-105 · OAMRP v3</p>
</header>
<div class="container">
<div class="section">
<div class="section-title">Calendário de Emprego das Aeronaves</div>
<div class="section-body"><div> <script>window.PlotlyConfig = {MathJaxConfig: 'local'};</script>
<script charset="utf-8" src="https://cdn.plot.ly/plotly-3.5.0.min.js" integrity="sha256-fHbNLP+GlIXN+efbQec78UkemUz3NJp7UmfGxC1tNxs=" crossorigin="anonymous"></script> <div id="9bae6b44-6f4b-49a4-bcc3-d06246a70d77" class="plotly-graph-div" style="height:440px; width:100%;"></div> <script> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById("9bae6b44-6f4b-49a4-bcc3-d06246a70d77")) { Plotly.newPlot( "9bae6b44-6f4b-49a4-bcc3-d06246a70d77", [{"marker":{"color":"#d62728","size":12,"symbol":"square"},"mode":"markers","name":"Prio 1","showlegend":true,"x":[null],"y":[null],"type":"scatter"},{"marker":{"color":"#ff7f0e","size":12,"symbol":"square"},"mode":"markers","name":"Prio 2","showlegend":true,"x":[null],"y":[null],"type":"scatter"},{"marker":{"color":"#2ca02c","size":12,"symbol":"square"},"mode":"markers","name":"Prio 3","showlegend":true,"x":[null],"y":[null],"type":"scatter"},{"marker":{"color":"#1f77b4","size":12,"symbol":"square"},"mode":"markers","name":"Prio 4","showlegend":true,"x":[null],"y":[null],"type":"scatter"},{"marker":{"color":"#9467bd","size":12,"symbol":"square"},"mode":"markers","name":"Prio 5","showlegend":true,"x":[null],"y":[null],"type":"scatter"},{"marker":{"color":"#8c564b","size":12,"symbol":"square"},"mode":"markers","name":"Inspe\u00e7\u00e3o","showlegend":true,"x":[null],"y":[null],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2800\u003c\u002fb\u003e \u2014 Miss\u00e3o #1\u003cbr\u003eSBMN \u2192 SBCO\u003cbr\u003eOM: 7 | Prio: 1\u003cbr\u003ePartida: 2025-01-09 02:09Z\u003cbr\u003eChegada: 2025-01-09 07:58Z\u003cbr\u003eDura\u00e7\u00e3o: 5.82h","\u003cb\u003eFAB 2800\u003c\u002fb\u003e \u2014 Miss\u00e3o #1\u003cbr\u003eSBMN \u2192 SBCO\u003cbr\u003eOM: 7 | Prio: 1\u003cbr\u003ePartida: 2025-01-09 02:09Z\u003cbr\u003eChegada: 2025-01-09 07:58Z\u003cbr\u003eDura\u00e7\u00e3o: 5.82h"],"line":{"color":"#d62728","width":64},"mode":"lines","showlegend":false,"x":["2025-01-09T02:09:28.800000+00:00","2025-01-09T07:58:40.800000+00:00"],"y":[0,0],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2800\u003c\u002fb\u003e \u2014 Miss\u00e3o #2\u003cbr\u003eSBCY \u2192 SBMN\u003cbr\u003eOM: 10 | Prio: 3\u003cbr\u003ePartida: 2025-01-11 23:29Z\u003cbr\u003eChegada: 2025-01-12 03:09Z\u003cbr\u003eDura\u00e7\u00e3o: 3.67h","\u003cb\u003eFAB 2800\u003c\u002fb\u003e \u2014 Miss\u00e3o #2\u003cbr\u003eSBCY \u2192 SBMN\u003cbr\u003eOM: 10 | Prio: 3\u003cbr\u003ePartida: 2025-01-11 23:29Z\u003cbr\u003eChegada: 2025-01-12 03:09Z\u003cbr\u003eDura\u00e7\u00e3o: 3.67h"],"line":{"color":"#2ca02c","width":64},"mode":"lines","showlegend":false,"x":["2025-01-11T23:29:27.600000+00:00","2025-01-12T03:09:39.600000+00:00"],"y":[0,0],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2800\u003c\u002fb\u003e \u2014 Miss\u00e3o #3\u003cbr\u003eSWCA \u2192 SBTT\u003cbr\u003eOM: 12 | Prio: 3\u003cbr\u003ePartida: 2025-01-12 14:52Z\u003cbr\u003eChegada: 2025-01-12 16:14Z\u003cbr\u003eDura\u00e7\u00e3o: 1.38h","\u003cb\u003eFAB 2800\u003c\u002fb\u003e \u2014 Miss\u00e3o #3\u003cbr\u003eSWCA \u2192 SBTT\u003cbr\u003eOM: 12 | Prio: 3\u003cbr\u003ePartida: 2025-01-12 14:52Z\u003cbr\u003eChegada: 2025-01-12 16:14Z\u003cbr\u003eDura\u00e7\u00e3o: 1.38h"],"line":{"color":"#2ca02c","width":64},"mode":"lines","showlegend":false,"x":["2025-01-12T14:52:01.200000+00:00","2025-01-12T16:52:01.200000+00:00"],"y":[0,0],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2800\u003c\u002fb\u003e \u2014 Miss\u00e3o #4\u003cbr\u003eSBMN \u2192 SWCA\u003cbr\u003eOM: 19 | Prio: 1\u003cbr\u003ePartida: 2025-01-29 04:57Z\u003cbr\u003eChegada: 2025-01-29 06:36Z\u003cbr\u003eDura\u00e7\u00e3o: 1.65h","\u003cb\u003eFAB 2800\u003c\u002fb\u003e \u2014 Miss\u00e3o #4\u003cbr\u003eSBMN \u2192 SWCA\u003cbr\u003eOM: 19 | Prio: 1\u003cbr\u003ePartida: 2025-01-29 04:57Z\u003cbr\u003eChegada: 2025-01-29 06:36Z\u003cbr\u003eDura\u00e7\u00e3o: 1.65h"],"line":{"color":"#d62728","width":64},"mode":"lines","showlegend":false,"x":["2025-01-29T04:57:54+00:00","2025-01-29T06:57:54+00:00"],"y":[0,0],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2800\u003c\u002fb\u003e \u2014 Miss\u00e3o #5\u003cbr\u003eSWCA \u2192 SBCO\u003cbr\u003eOM: 20 | Prio: 2\u003cbr\u003ePartida: 2025-01-31 03:09Z\u003cbr\u003eChegada: 2025-01-31 08:39Z\u003cbr\u003eDura\u00e7\u00e3o: 5.51h","\u003cb\u003eFAB 2800\u003c\u002fb\u003e \u2014 Miss\u00e3o #5\u003cbr\u003eSWCA \u2192 SBCO\u003cbr\u003eOM: 20 | Prio: 2\u003cbr\u003ePartida: 2025-01-31 03:09Z\u003cbr\u003eChegada: 2025-01-31 08:39Z\u003cbr\u003eDura\u00e7\u00e3o: 5.51h"],"line":{"color":"#ff7f0e","width":64},"mode":"lines","showlegend":false,"x":["2025-01-31T03:09:10.800000+00:00","2025-01-31T08:39:46.800000+00:00"],"y":[0,0],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2800\u003c\u002fb\u003e \u2014 Inspe\u00e7\u00e3o INSP 2A\u003cbr\u003eIn\u00edcio: 2025-01-12 16:14Z\u003cbr\u003eFim: 2025-01-16 16:14Z\u003cbr\u003eDura\u00e7\u00e3o: 96.00h","\u003cb\u003eFAB 2800\u003c\u002fb\u003e \u2014 Inspe\u00e7\u00e3o INSP 2A\u003cbr\u003eIn\u00edcio: 2025-01-12 16:14Z\u003cbr\u003eFim: 2025-01-16 16:14Z\u003cbr\u003eDura\u00e7\u00e3o: 96.00h"],"line":{"color":"#8c564b","width":64},"mode":"lines","showlegend":false,"x":["2025-01-12T16:14:49.200000+00:00","2025-01-16T16:14:49.200000+00:00"],"y":[0,0],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2803\u003c\u002fb\u003e \u2014 Miss\u00e3o #1\u003cbr\u003eSWBC \u2192 SBAN\u003cbr\u003eOM: 6 | Prio: 2\u003cbr\u003ePartida: 2025-01-06 21:08Z\u003cbr\u003eChegada: 2025-01-07 00:56Z\u003cbr\u003eDura\u00e7\u00e3o: 3.80h","\u003cb\u003eFAB 2803\u003c\u002fb\u003e \u2014 Miss\u00e3o #1\u003cbr\u003eSWBC \u2192 SBAN\u003cbr\u003eOM: 6 | Prio: 2\u003cbr\u003ePartida: 2025-01-06 21:08Z\u003cbr\u003eChegada: 2025-01-07 00:56Z\u003cbr\u003eDura\u00e7\u00e3o: 3.80h"],"line":{"color":"#ff7f0e","width":64},"mode":"lines","showlegend":false,"x":["2025-01-06T21:08:24+00:00","2025-01-07T00:56:24+00:00"],"y":[1,1],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2809\u003c\u002fb\u003e \u2014 Miss\u00e3o #1\u003cbr\u003eSBBE \u2192 SBMN\u003cbr\u003eOM: 1 | Prio: 2\u003cbr\u003ePartida: 2025-01-02 07:53Z\u003cbr\u003eChegada: 2025-01-02 11:07Z\u003cbr\u003eDura\u00e7\u00e3o: 3.23h","\u003cb\u003eFAB 2809\u003c\u002fb\u003e \u2014 Miss\u00e3o #1\u003cbr\u003eSBBE \u2192 SBMN\u003cbr\u003eOM: 1 | Prio: 2\u003cbr\u003ePartida: 2025-01-02 07:53Z\u003cbr\u003eChegada: 2025-01-02 11:07Z\u003cbr\u003eDura\u00e7\u00e3o: 3.23h"],"line":{"color":"#ff7f0e","width":64},"mode":"lines","showlegend":false,"x":["2025-01-02T07:53:34.800000+00:00","2025-01-02T11:07:22.800000+00:00"],"y":[2,2],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2809\u003c\u002fb\u003e \u2014 Miss\u00e3o #2\u003cbr\u003eSBPV \u2192 SBOI\u003cbr\u003eOM: 2 | Prio: 3\u003cbr\u003ePartida: 2025-01-03 03:03Z\u003cbr\u003eChegada: 2025-01-03 09:37Z\u003cbr\u003eDura\u00e7\u00e3o: 6.58h","\u003cb\u003eFAB 2809\u003c\u002fb\u003e \u2014 Miss\u00e3o #2\u003cbr\u003eSBPV \u2192 SBOI\u003cbr\u003eOM: 2 | Prio: 3\u003cbr\u003ePartida: 2025-01-03 03:03Z\u003cbr\u003eChegada: 2025-01-03 09:37Z\u003cbr\u003eDura\u00e7\u00e3o: 6.58h"],"line":{"color":"#2ca02c","width":64},"mode":"lines","showlegend":false,"x":["2025-01-03T03:03:10.800000+00:00","2025-01-03T09:37:58.800000+00:00"],"y":[2,2],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2809\u003c\u002fb\u003e \u2014 Miss\u00e3o #3\u003cbr\u003eSBMY \u2192 SBYS\u003cbr\u003eOM: 5 | Prio: 1\u003cbr\u003ePartida: 2025-01-04 19:37Z\u003cbr\u003eChegada: 2025-01-05 01:06Z\u003cbr\u003eDura\u00e7\u00e3o: 5.49h","\u003cb\u003eFAB 2809\u003c\u002fb\u003e \u2014 Miss\u00e3o #3\u003cbr\u003eSBMY \u2192 SBYS\u003cbr\u003eOM: 5 | Prio: 1\u003cbr\u003ePartida: 2025-01-04 19:37Z\u003cbr\u003eChegada: 2025-01-05 01:06Z\u003cbr\u003eDura\u00e7\u00e3o: 5.49h"],"line":{"color":"#d62728","width":64},"mode":"lines","showlegend":false,"x":["2025-01-04T19:37:19.200000+00:00","2025-01-05T01:06:43.200000+00:00"],"y":[2,2],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2809\u003c\u002fb\u003e \u2014 Miss\u00e3o #4\u003cbr\u003eSBPV \u2192 SBMN\u003cbr\u003eOM: 8 | Prio: 2\u003cbr\u003ePartida: 2025-01-09 23:11Z\u003cbr\u003eChegada: 2025-01-10 00:51Z\u003cbr\u003eDura\u00e7\u00e3o: 1.66h","\u003cb\u003eFAB 2809\u003c\u002fb\u003e \u2014 Miss\u00e3o #4\u003cbr\u003eSBPV \u2192 SBMN\u003cbr\u003eOM: 8 | Prio: 2\u003cbr\u003ePartida: 2025-01-09 23:11Z\u003cbr\u003eChegada: 2025-01-10 00:51Z\u003cbr\u003eDura\u00e7\u00e3o: 1.66h"],"line":{"color":"#ff7f0e","width":64},"mode":"lines","showlegend":false,"x":["2025-01-09T23:11:34.800000+00:00","2025-01-10T01:11:34.800000+00:00"],"y":[2,2],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2809\u003c\u002fb\u003e \u2014 Miss\u00e3o #5\u003cbr\u003eSBSN \u2192 SBVH\u003cbr\u003eOM: 11 | Prio: 1\u003cbr\u003ePartida: 2025-01-12 01:26Z\u003cbr\u003eChegada: 2025-01-12 04:15Z\u003cbr\u003eDura\u00e7\u00e3o: 2.82h","\u003cb\u003eFAB 2809\u003c\u002fb\u003e \u2014 Miss\u00e3o #5\u003cbr\u003eSBSN \u2192 SBVH\u003cbr\u003eOM: 11 | Prio: 1\u003cbr\u003ePartida: 2025-01-12 01:26Z\u003cbr\u003eChegada: 2025-01-12 04:15Z\u003cbr\u003eDura\u00e7\u00e3o: 2.82h"],"line":{"color":"#d62728","width":64},"mode":"lines","showlegend":false,"x":["2025-01-12T01:26:24+00:00","2025-01-12T04:15:36+00:00"],"y":[2,2],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2809\u003c\u002fb\u003e \u2014 Miss\u00e3o #6\u003cbr\u003eSBTF \u2192 SBMN\u003cbr\u003eOM: 16 | Prio: 3\u003cbr\u003ePartida: 2025-01-24 15:25Z\u003cbr\u003eChegada: 2025-01-24 16:40Z\u003cbr\u003eDura\u00e7\u00e3o: 1.24h","\u003cb\u003eFAB 2809\u003c\u002fb\u003e \u2014 Miss\u00e3o #6\u003cbr\u003eSBTF \u2192 SBMN\u003cbr\u003eOM: 16 | Prio: 3\u003cbr\u003ePartida: 2025-01-24 15:25Z\u003cbr\u003eChegada: 2025-01-24 16:40Z\u003cbr\u003eDura\u00e7\u00e3o: 1.24h"],"line":{"color":"#2ca02c","width":64},"mode":"lines","showlegend":false,"x":["2025-01-24T15:25:55.200000+00:00","2025-01-24T17:25:55.200000+00:00"],"y":[2,2],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2809\u003c\u002fb\u003e \u2014 Inspe\u00e7\u00e3o INSP 2A\u003cbr\u003eIn\u00edcio: 2025-01-05 01:06Z\u003cbr\u003eFim: 2025-01-09 01:06Z\u003cbr\u003eDura\u00e7\u00e3o: 96.00h","\u003cb\u003eFAB 2809\u003c\u002fb\u003e \u2014 Inspe\u00e7\u00e3o INSP 2A\u003cbr\u003eIn\u00edcio: 2025-01-05 01:06Z\u003cbr\u003eFim: 2025-01-09 01:06Z\u003cbr\u003eDura\u00e7\u00e3o: 96.00h"],"line":{"color":"#8c564b","width":64},"mode":"lines","showlegend":false,"x":["2025-01-05T01:06:43.200000+00:00","2025-01-09T01:06:43.200000+00:00"],"y":[2,2],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2811\u003c\u002fb\u003e \u2014 Miss\u00e3o #1\u003cbr\u003eSBMN \u2192 SBUY\u003cbr\u003eOM: 3 | Prio: 2\u003cbr\u003ePartida: 2025-01-03 09:50Z\u003cbr\u003eChegada: 2025-01-03 16:17Z\u003cbr\u003eDura\u00e7\u00e3o: 6.46h","\u003cb\u003eFAB 2811\u003c\u002fb\u003e \u2014 Miss\u00e3o #1\u003cbr\u003eSBMN \u2192 SBUY\u003cbr\u003eOM: 3 | Prio: 2\u003cbr\u003ePartida: 2025-01-03 09:50Z\u003cbr\u003eChegada: 2025-01-03 16:17Z\u003cbr\u003eDura\u00e7\u00e3o: 6.46h"],"line":{"color":"#ff7f0e","width":64},"mode":"lines","showlegend":false,"x":["2025-01-03T09:50:20.400000+00:00","2025-01-03T16:17:56.400000+00:00"],"y":[3,3],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2811\u003c\u002fb\u003e \u2014 Miss\u00e3o #2\u003cbr\u003eSWCA \u2192 SBMN\u003cbr\u003eOM: 4 | Prio: 3\u003cbr\u003ePartida: 2025-01-04 03:01Z\u003cbr\u003eChegada: 2025-01-04 04:51Z\u003cbr\u003eDura\u00e7\u00e3o: 1.84h","\u003cb\u003eFAB 2811\u003c\u002fb\u003e \u2014 Miss\u00e3o #2\u003cbr\u003eSWCA \u2192 SBMN\u003cbr\u003eOM: 4 | Prio: 3\u003cbr\u003ePartida: 2025-01-04 03:01Z\u003cbr\u003eChegada: 2025-01-04 04:51Z\u003cbr\u003eDura\u00e7\u00e3o: 1.84h"],"line":{"color":"#2ca02c","width":64},"mode":"lines","showlegend":false,"x":["2025-01-04T03:01:19.200000+00:00","2025-01-04T05:01:19.200000+00:00"],"y":[3,3],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2811\u003c\u002fb\u003e \u2014 Miss\u00e3o #3\u003cbr\u003eSBUY \u2192 SBCC\u003cbr\u003eOM: 9 | Prio: 1\u003cbr\u003ePartida: 2025-01-11 12:27Z\u003cbr\u003eChegada: 2025-01-11 17:17Z\u003cbr\u003eDura\u00e7\u00e3o: 4.82h","\u003cb\u003eFAB 2811\u003c\u002fb\u003e \u2014 Miss\u00e3o #3\u003cbr\u003eSBUY \u2192 SBCC\u003cbr\u003eOM: 9 | Prio: 1\u003cbr\u003ePartida: 2025-01-11 12:27Z\u003cbr\u003eChegada: 2025-01-11 17:17Z\u003cbr\u003eDura\u00e7\u00e3o: 4.82h"],"line":{"color":"#d62728","width":64},"mode":"lines","showlegend":false,"x":["2025-01-11T12:27:50.400000+00:00","2025-01-11T17:17:02.400000+00:00"],"y":[3,3],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2811\u003c\u002fb\u003e \u2014 Miss\u00e3o #4\u003cbr\u003eSBUY \u2192 SBMN\u003cbr\u003eOM: 13 | Prio: 3\u003cbr\u003ePartida: 2025-01-15 01:13Z\u003cbr\u003eChegada: 2025-01-15 07:31Z\u003cbr\u003eDura\u00e7\u00e3o: 6.31h","\u003cb\u003eFAB 2811\u003c\u002fb\u003e \u2014 Miss\u00e3o #4\u003cbr\u003eSBUY \u2192 SBMN\u003cbr\u003eOM: 13 | Prio: 3\u003cbr\u003ePartida: 2025-01-15 01:13Z\u003cbr\u003eChegada: 2025-01-15 07:31Z\u003cbr\u003eDura\u00e7\u00e3o: 6.31h"],"line":{"color":"#2ca02c","width":64},"mode":"lines","showlegend":false,"x":["2025-01-15T01:13:04.800000+00:00","2025-01-15T07:31:40.800000+00:00"],"y":[3,3],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2811\u003c\u002fb\u003e \u2014 Miss\u00e3o #5\u003cbr\u003eSBBE \u2192 SBUA\u003cbr\u003eOM: 14 | Prio: 2\u003cbr\u003ePartida: 2025-01-20 05:25Z\u003cbr\u003eChegada: 2025-01-20 10:31Z\u003cbr\u003eDura\u00e7\u00e3o: 5.11h","\u003cb\u003eFAB 2811\u003c\u002fb\u003e \u2014 Miss\u00e3o #5\u003cbr\u003eSBBE \u2192 SBUA\u003cbr\u003eOM: 14 | Prio: 2\u003cbr\u003ePartida: 2025-01-20 05:25Z\u003cbr\u003eChegada: 2025-01-20 10:31Z\u003cbr\u003eDura\u00e7\u00e3o: 5.11h"],"line":{"color":"#ff7f0e","width":64},"mode":"lines","showlegend":false,"x":["2025-01-20T05:25:19.200000+00:00","2025-01-20T10:31:55.200000+00:00"],"y":[3,3],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2811\u003c\u002fb\u003e \u2014 Miss\u00e3o #6\u003cbr\u003eSBBE \u2192 SBTS\u003cbr\u003eOM: 15 | Prio: 4\u003cbr\u003ePartida: 2025-01-21 05:22Z\u003cbr\u003eChegada: 2025-01-21 10:28Z\u003cbr\u003eDura\u00e7\u00e3o: 5.11h","\u003cb\u003eFAB 2811\u003c\u002fb\u003e \u2014 Miss\u00e3o #6\u003cbr\u003eSBBE \u2192 SBTS\u003cbr\u003eOM: 15 | Prio: 4\u003cbr\u003ePartida: 2025-01-21 05:22Z\u003cbr\u003eChegada: 2025-01-21 10:28Z\u003cbr\u003eDura\u00e7\u00e3o: 5.11h"],"line":{"color":"#1f77b4","width":64},"mode":"lines","showlegend":false,"x":["2025-01-21T05:22:01.200000+00:00","2025-01-21T10:28:37.200000+00:00"],"y":[3,3],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2811\u003c\u002fb\u003e \u2014 Miss\u00e3o #7\u003cbr\u003eSWBC \u2192 SBCC\u003cbr\u003eOM: 17 | Prio: 2\u003cbr\u003ePartida: 2025-01-27 03:48Z\u003cbr\u003eChegada: 2025-01-27 07:24Z\u003cbr\u003eDura\u00e7\u00e3o: 3.61h","\u003cb\u003eFAB 2811\u003c\u002fb\u003e \u2014 Miss\u00e3o #7\u003cbr\u003eSWBC \u2192 SBCC\u003cbr\u003eOM: 17 | Prio: 2\u003cbr\u003ePartida: 2025-01-27 03:48Z\u003cbr\u003eChegada: 2025-01-27 07:24Z\u003cbr\u003eDura\u00e7\u00e3o: 3.61h"],"line":{"color":"#ff7f0e","width":64},"mode":"lines","showlegend":false,"x":["2025-01-27T03:48:10.800000+00:00","2025-01-27T07:24:46.800000+00:00"],"y":[3,3],"type":"scatter"},{"hoverinfo":"text","hovertext":["\u003cb\u003eFAB 2811\u003c\u002fb\u003e \u2014 Miss\u00e3o #8\u003cbr\u003eSBMY \u2192 SBPV\u003cbr\u003eOM: 18 | Prio: 2\u003cbr\u003ePartida: 2025-01-28 01:55Z\u003cbr\u003eChegada: 2025-01-28 03:00Z\u003cbr\u003eDura\u00e7\u00e3o: 1.08h","\u003cb\u003eFAB 2811\u003c\u002fb\u003e \u2014 Miss\u00e3o #8\u003cbr\u003eSBMY \u2192 SBPV\u003cbr\u003eOM: 18 | Prio: 2\u003cbr\u003ePartida: 2025-01-28 01:55Z\u003cbr\u003eChegada: 2025-01-28 03:00Z\u003cbr\u003eDura\u00e7\u00e3o: 1.08h"],"line":{"color":"#ff7f0e","width":64},"mode":"lines","showlegend":false,"x":["2025-01-28T01:55:19.200000+00:00","2025-01-28T03:55:19.200000+00:00"],"y":[3,3],"type":"scatter"}], {"template":{"data":{"histogram2dcontour":[{"type":"histogram2dcontour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"choropleth":[{"type":"choropleth","colorbar":{"outlinewidth":0,"ticks":""}}],"histogram2d":[{"type":"histogram2d","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmap":[{"type":"heatmap","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"contourcarpet":[{"type":"contourcarpet","colorbar":{"outlinewidth":0,"ticks":""}}],"contour":[{"type":"contour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"surface":[{"type":"surface","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"mesh3d":[{"type":"mesh3d","colorbar":{"outlinewidth":0,"ticks":""}}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"parcoords":[{"type":"parcoords","line":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolargl":[{"type":"scatterpolargl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"scattergeo":[{"type":"scattergeo","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolar":[{"type":"scatterpolar","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"scattergl":[{"type":"scattergl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatter3d":[{"type":"scatter3d","line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermap":[{"type":"scattermap","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermapbox":[{"type":"scattermapbox","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterternary":[{"type":"scatterternary","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattercarpet":[{"type":"scattercarpet","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}],"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"pie":[{"automargin":true,"type":"pie"}]},"layout":{"autotypenumbers":"strict","colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"hovermode":"closest","hoverlabel":{"align":"left"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"bgcolor":"#E5ECF6","angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"ternary":{"bgcolor":"#E5ECF6","aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]]},"xaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"yaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"geo":{"bgcolor":"white","landcolor":"#E5ECF6","subunitcolor":"white","showland":true,"showlakes":true,"lakecolor":"white"},"title":{"x":0.05},"mapbox":{"style":"light"}}},"shapes":[{"fillcolor":"#f0f0f0","layer":"below","line":{"width":0},"type":"rect","x0":0,"x1":1,"xref":"x domain","y0":-0.45,"y1":0.45,"yref":"y"},{"fillcolor":"white","layer":"below","line":{"width":0},"type":"rect","x0":0,"x1":1,"xref":"x domain","y0":0.55,"y1":1.45,"yref":"y"},{"fillcolor":"#f0f0f0","layer":"below","line":{"width":0},"type":"rect","x0":0,"x1":1,"xref":"x domain","y0":1.55,"y1":2.45,"yref":"y"},{"fillcolor":"white","layer":"below","line":{"width":0},"type":"rect","x0":0,"x1":1,"xref":"x domain","y0":2.55,"y1":3.45,"yref":"y"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-06T00:00:00+00:00","x1":"2025-01-06T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-07T00:00:00+00:00","x1":"2025-01-07T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-08T00:00:00+00:00","x1":"2025-01-08T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-09T00:00:00+00:00","x1":"2025-01-09T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-10T00:00:00+00:00","x1":"2025-01-10T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-11T00:00:00+00:00","x1":"2025-01-11T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-12T00:00:00+00:00","x1":"2025-01-12T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-13T00:00:00+00:00","x1":"2025-01-13T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-14T00:00:00+00:00","x1":"2025-01-14T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-15T00:00:00+00:00","x1":"2025-01-15T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-16T00:00:00+00:00","x1":"2025-01-16T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-17T00:00:00+00:00","x1":"2025-01-17T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-18T00:00:00+00:00","x1":"2025-01-18T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-19T00:00:00+00:00","x1":"2025-01-19T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-20T00:00:00+00:00","x1":"2025-01-20T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-21T00:00:00+00:00","x1":"2025-01-21T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-22T00:00:00+00:00","x1":"2025-01-22T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-23T00:00:00+00:00","x1":"2025-01-23T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-24T00:00:00+00:00","x1":"2025-01-24T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-25T00:00:00+00:00","x1":"2025-01-25T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-26T00:00:00+00:00","x1":"2025-01-26T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-27T00:00:00+00:00","x1":"2025-01-27T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-28T00:00:00+00:00","x1":"2025-01-28T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-29T00:00:00+00:00","x1":"2025-01-29T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-30T00:00:00+00:00","x1":"2025-01-30T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-01-31T00:00:00+00:00","x1":"2025-01-31T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"},{"layer":"above","line":{"color":"#bbbbbb","dash":"dot","width":1},"type":"line","x0":"2025-02-01T00:00:00+00:00","x1":"2025-02-01T00:00:00+00:00","xref":"x","y0":0,"y1":1,"yref":"paper"}],"xaxis":{"title":{"text":"Data \u002f Hora (UTC)"},"type":"date","tickformat":"%d\u002f%m","dtick":86400000,"showgrid":true,"gridcolor":"#dddddd"},"yaxis":{"title":{"text":"Aeronave"},"tickvals":[0,1,2,3],"ticktext":["FAB 2800","FAB 2803","FAB 2809","FAB 2811"],"showgrid":false,"range":[-0.5,3.5]},"legend":{"title":{"text":"Legenda"},"orientation":"v","x":1.01,"y":1,"xanchor":"left"},"margin":{"l":100,"r":160,"t":10,"b":60},"height":440,"plot_bgcolor":"white","paper_bgcolor":"white","hovermode":"closest"}, {"responsive": true} ) }; </script> </div></div>
</div>
<div class="section">
<div class="section-title">Rotas Operacionais</div>
<iframe class="mapa" srcdoc="&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;
&lt;script src=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://code.jquery.com/jquery-3.7.1.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.css&quot;/&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot;/&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css&quot;/&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.2.0/css/all.min.css&quot;/&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css&quot;/&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css&quot;/&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,
initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot; /&gt;
&lt;style&gt;
#map_a5be9d8f4dc1d784e5f7c257e2f79d32 {
position: relative;
width: 100.0%;
height: 100.0%;
left: 0.0%;
top: 0.0%;
}
.leaflet-container { font-size: 1rem; }
&lt;/style&gt;
&lt;style&gt;html, body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
&lt;/style&gt;
&lt;style&gt;#map {
position:absolute;
top:0;
bottom:0;
right:0;
left:0;
}
&lt;/style&gt;
&lt;script&gt;
L_NO_TOUCH = false;
L_DISABLE_3D = false;
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div style=&quot;position:fixed;bottom:30px;left:30px;z-index:1000;background:white;
padding:12px 16px;border-radius:8px;box-shadow:2px 2px 6px rgba(0,0,0,0.3);
font-family:sans-serif;font-size:12px;&quot;&gt;
&lt;b&gt;Esquadrão Arara — OAMRP v3&lt;/b&gt;&lt;br&gt;&lt;br&gt;
&lt;b&gt;Aeronaves:&lt;/b&gt;&lt;br&gt;
&lt;span style=&quot;display:inline-block;width:16px;height:4px;background:#1f77b4;margin-right:6px;vertical-align:middle;&quot;&gt;&lt;/span&gt;FAB 2800&lt;br&gt; &lt;span style=&quot;display:inline-block;width:16px;height:4px;background:#2ca02c;margin-right:6px;vertical-align:middle;&quot;&gt;&lt;/span&gt;FAB 2803&lt;br&gt; &lt;span style=&quot;display:inline-block;width:16px;height:4px;background:#d62728;margin-right:6px;vertical-align:middle;&quot;&gt;&lt;/span&gt;FAB 2809&lt;br&gt; &lt;span style=&quot;display:inline-block;width:16px;height:4px;background:#ff7f0e;margin-right:6px;vertical-align:middle;&quot;&gt;&lt;/span&gt;FAB 2811&lt;br&gt;
&lt;br&gt;&lt;b&gt;Prioridade (preenchimento):&lt;/b&gt;&lt;br&gt;
&lt;span style=&quot;display:inline-block;width:12px;height:12px;border-radius:50%;
background:red;margin-right:6px;&quot;&gt;&lt;/span&gt;Prio 1 (urgente)&lt;br&gt;
&lt;span style=&quot;display:inline-block;width:12px;height:12px;border-radius:50%;
background:orange;margin-right:6px;&quot;&gt;&lt;/span&gt;Prio 2&lt;br&gt;
&lt;span style=&quot;display:inline-block;width:12px;height:12px;border-radius:50%;
background:yellow;margin-right:6px;&quot;&gt;&lt;/span&gt;Prio 3&lt;br&gt;
&lt;span style=&quot;display:inline-block;width:12px;height:12px;border-radius:50%;
background:lightblue;margin-right:6px;&quot;&gt;&lt;/span&gt;Prio 45&lt;br&gt;
&lt;br&gt;
&lt;span style=&quot;border-bottom:2px dashed #aaa;display:inline-block;width:20px;
margin-right:6px;&quot;&gt;&lt;/span&gt;Não cumprida
&lt;/div&gt;
&lt;div class=&quot;folium-map&quot; id=&quot;map_a5be9d8f4dc1d784e5f7c257e2f79d32&quot; &gt;&lt;/div&gt;
&lt;/body&gt;
&lt;script&gt;
var map_a5be9d8f4dc1d784e5f7c257e2f79d32 = L.map(
&quot;map_a5be9d8f4dc1d784e5f7c257e2f79d32&quot;,
{
center: [-3.5, -62.0],
crs: L.CRS.EPSG3857,
...{
&quot;zoom&quot;: 5,
&quot;zoomControl&quot;: true,
&quot;preferCanvas&quot;: false,
}
}
);
var tile_layer_68c0ed0b88e20dc8a6ac61bc067dda4a = L.tileLayer(
&quot;https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png&quot;,
{
&quot;minZoom&quot;: 0,
&quot;maxZoom&quot;: 20,
&quot;maxNativeZoom&quot;: 20,
&quot;noWrap&quot;: false,
&quot;attribution&quot;: &quot;\u0026copy; \u003ca href=\&quot;https://www.openstreetmap.org/copyright\&quot;\u003eOpenStreetMap\u003c/a\u003e contributors \u0026copy; \u003ca href=\&quot;https://carto.com/attributions\&quot;\u003eCARTO\u003c/a\u003e&quot;,
&quot;subdomains&quot;: &quot;abcd&quot;,
&quot;detectRetina&quot;: false,
&quot;tms&quot;: false,
&quot;opacity&quot;: 1,
}
);
tile_layer_68c0ed0b88e20dc8a6ac61bc067dda4a.addTo(map_a5be9d8f4dc1d784e5f7c257e2f79d32);
var feature_group_1f47a23bd7d67a07e1773038f73dd820 = L.featureGroup(
{
}
);
feature_group_1f47a23bd7d67a07e1773038f73dd820.addTo(map_a5be9d8f4dc1d784e5f7c257e2f79d32);
var feature_group_18921e69dcb020208fc0946cb9ecb95d = L.featureGroup(
{
}
);
feature_group_18921e69dcb020208fc0946cb9ecb95d.addTo(map_a5be9d8f4dc1d784e5f7c257e2f79d32);
var feature_group_00c1a6b6831877b5bcd49fd817f4e7f2 = L.featureGroup(
{
}
);
var poly_line_1dc853bf5376f406e6fb056f470645a5 = L.polyline(
[[-1.38, -48.48], [-3.15, -59.99]],
{&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;#d62728&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: false, &quot;fillColor&quot;: &quot;#d62728&quot;, &quot;fillOpacity&quot;: 0.2, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;noClip&quot;: false, &quot;opacity&quot;: 0.8, &quot;smoothFactor&quot;: 1.0, &quot;stroke&quot;: true, &quot;weight&quot;: 2.5}
).addTo(feature_group_00c1a6b6831877b5bcd49fd817f4e7f2);
var popup_f92837ae166afcdfe1800ee1bc6efe65 = L.popup({
&quot;maxWidth&quot;: 250,
});
var html_76874c2dd04d8197ecbd941b42670242 = $(`&lt;div id=&quot;html_76874c2dd04d8197ecbd941b42670242&quot; style=&quot;width: 100.0%; height: 100.0%;&quot;&gt;&lt;b&gt;FAB 2809&lt;/b&gt; — Missão #1&lt;br&gt;SBBE → SBMN&lt;br&gt;OM: 1 | Prio: 2&lt;br&gt;Partida: 2025-01-02 07:53Z&lt;br&gt;Chegada: 2025-01-02 11:07Z&lt;br&gt;Duração: 3.23h&lt;/div&gt;`)[0];
popup_f92837ae166afcdfe1800ee1bc6efe65.setContent(html_76874c2dd04d8197ecbd941b42670242);
poly_line_1dc853bf5376f406e6fb056f470645a5.bindPopup(popup_f92837ae166afcdfe1800ee1bc6efe65)
;
poly_line_1dc853bf5376f406e6fb056f470645a5.bindTooltip(
`&lt;div&gt;
FAB 2809 | SBBE→SBMN | OM 1 | prio 2
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
var circle_marker_351ecca1d49f2ccc974386f2c9eb5a13 = L.circleMarker(
[-1.38, -48.48],
{&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;#d62728&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.9, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 4, &quot;stroke&quot;: true, &quot;weight&quot;: 3}
).addTo(feature_group_00c1a6b6831877b5bcd49fd817f4e7f2);
circle_marker_351ecca1d49f2ccc974386f2c9eb5a13.bindTooltip(
`&lt;div&gt;
SBBE | prio 2
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
var poly_line_e00fc7e2465847f14c71aa148454cd0b = L.polyline(
[[-8.71, -63.9], [-3.15, -59.99]],
{&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;#d62728&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: false, &quot;fillColor&quot;: &quot;#d62728&quot;, &quot;fillOpacity&quot;: 0.2, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;noClip&quot;: false, &quot;opacity&quot;: 0.8, &quot;smoothFactor&quot;: 1.0, &quot;stroke&quot;: true, &quot;weight&quot;: 2.5}
).addTo(feature_group_00c1a6b6831877b5bcd49fd817f4e7f2);
var popup_bc245e7c876dab4b2d500363952e5a7c = L.popup({
&quot;maxWidth&quot;: 250,
});
var html_ad1f8119fb7eb250fff0ef4051276bb1 = $(`&lt;div id=&quot;html_ad1f8119fb7eb250fff0ef4051276bb1&quot; style=&quot;width: 100.0%; height: 100.0%;&quot;&gt;&lt;b&gt;FAB 2809&lt;/b&gt; — Missão #4&lt;br&gt;SBPV → SBMN&lt;br&gt;OM: 8 | Prio: 2&lt;br&gt;Partida: 2025-01-09 23:11Z&lt;br&gt;Chegada: 2025-01-10 00:51Z&lt;br&gt;Duração: 1.66h&lt;/div&gt;`)[0];
popup_bc245e7c876dab4b2d500363952e5a7c.setContent(html_ad1f8119fb7eb250fff0ef4051276bb1);
poly_line_e00fc7e2465847f14c71aa148454cd0b.bindPopup(popup_bc245e7c876dab4b2d500363952e5a7c)
;
poly_line_e00fc7e2465847f14c71aa148454cd0b.bindTooltip(
`&lt;div&gt;
FAB 2809 | SBPV→SBMN | OM 8 | prio 2
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
var circle_marker_5f5adaf2a7bac2b619d8743ef0332a58 = L.circleMarker(
[-8.71, -63.9],
{&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;#d62728&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.9, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 4, &quot;stroke&quot;: true, &quot;weight&quot;: 3}
).addTo(feature_group_00c1a6b6831877b5bcd49fd817f4e7f2);
circle_marker_5f5adaf2a7bac2b619d8743ef0332a58.bindTooltip(
`&lt;div&gt;
SBPV | prio 2
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
feature_group_00c1a6b6831877b5bcd49fd817f4e7f2.addTo(map_a5be9d8f4dc1d784e5f7c257e2f79d32);
var feature_group_ea154e472606a4022f0eb417570525df = L.featureGroup(
{
}
);
var poly_line_aef7eba1e59e4c28bae29c5197881d51 = L.polyline(
[[-1.38, -48.48], [-0.15, -67.05]],
{&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;#ff7f0e&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: false, &quot;fillColor&quot;: &quot;#ff7f0e&quot;, &quot;fillOpacity&quot;: 0.2, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;noClip&quot;: false, &quot;opacity&quot;: 0.8, &quot;smoothFactor&quot;: 1.0, &quot;stroke&quot;: true, &quot;weight&quot;: 2.5}
).addTo(feature_group_ea154e472606a4022f0eb417570525df);
var popup_ccd0debd9e41db828c485eb3c74e1101 = L.popup({
&quot;maxWidth&quot;: 250,
});
var html_2f64f515582da362a5abbd861098a0d3 = $(`&lt;div id=&quot;html_2f64f515582da362a5abbd861098a0d3&quot; style=&quot;width: 100.0%; height: 100.0%;&quot;&gt;&lt;b&gt;FAB 2811&lt;/b&gt; — Missão #5&lt;br&gt;SBBE → SBUA&lt;br&gt;OM: 14 | Prio: 2&lt;br&gt;Partida: 2025-01-20 05:25Z&lt;br&gt;Chegada: 2025-01-20 10:31Z&lt;br&gt;Duração: 5.11h&lt;/div&gt;`)[0];
popup_ccd0debd9e41db828c485eb3c74e1101.setContent(html_2f64f515582da362a5abbd861098a0d3);
poly_line_aef7eba1e59e4c28bae29c5197881d51.bindPopup(popup_ccd0debd9e41db828c485eb3c74e1101)
;
poly_line_aef7eba1e59e4c28bae29c5197881d51.bindTooltip(
`&lt;div&gt;
FAB 2811 | SBBE→SBUA | OM 14 | prio 2
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
var circle_marker_f49d8d5f5f54da7505d5e09d8453b3ed = L.circleMarker(
[-1.38, -48.48],
{&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;#ff7f0e&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.9, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 4, &quot;stroke&quot;: true, &quot;weight&quot;: 3}
).addTo(feature_group_ea154e472606a4022f0eb417570525df);
circle_marker_f49d8d5f5f54da7505d5e09d8453b3ed.bindTooltip(
`&lt;div&gt;
SBBE | prio 2
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
var poly_line_ec3645b32a68a0c27892fef6a43283be = L.polyline(
[[-1.38, -48.48], [-4.25, -69.94]],
{&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;#ff7f0e&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: false, &quot;fillColor&quot;: &quot;#ff7f0e&quot;, &quot;fillOpacity&quot;: 0.2, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;noClip&quot;: false, &quot;opacity&quot;: 0.8, &quot;smoothFactor&quot;: 1.0, &quot;stroke&quot;: true, &quot;weight&quot;: 2.5}
).addTo(feature_group_ea154e472606a4022f0eb417570525df);
var popup_712903827ae2c7493abe42c3183c7463 = L.popup({
&quot;maxWidth&quot;: 250,
});
var html_aba89a5be4c2665a249bef1c34465c84 = $(`&lt;div id=&quot;html_aba89a5be4c2665a249bef1c34465c84&quot; style=&quot;width: 100.0%; height: 100.0%;&quot;&gt;&lt;b&gt;FAB 2811&lt;/b&gt; — Missão #6&lt;br&gt;SBBE → SBTS&lt;br&gt;OM: 15 | Prio: 4&lt;br&gt;Partida: 2025-01-21 05:22Z&lt;br&gt;Chegada: 2025-01-21 10:28Z&lt;br&gt;Duração: 5.11h&lt;/div&gt;`)[0];
popup_712903827ae2c7493abe42c3183c7463.setContent(html_aba89a5be4c2665a249bef1c34465c84);
poly_line_ec3645b32a68a0c27892fef6a43283be.bindPopup(popup_712903827ae2c7493abe42c3183c7463)
;
poly_line_ec3645b32a68a0c27892fef6a43283be.bindTooltip(
`&lt;div&gt;
FAB 2811 | SBBE→SBTS | OM 15 | prio 4
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
var circle_marker_6b0adedf371c6564976546fa49b2b97b = L.circleMarker(
[-1.38, -48.48],
{&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;#ff7f0e&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;lightblue&quot;, &quot;fillOpacity&quot;: 0.9, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 4, &quot;stroke&quot;: true, &quot;weight&quot;: 3}
).addTo(feature_group_ea154e472606a4022f0eb417570525df);
circle_marker_6b0adedf371c6564976546fa49b2b97b.bindTooltip(
`&lt;div&gt;
SBBE | prio 4
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
var poly_line_5932aa1c3db3ba56f8f05ed80f3e2376 = L.polyline(
[[-5.81, -61.28], [-8.71, -63.9]],
{&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;#ff7f0e&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: false, &quot;fillColor&quot;: &quot;#ff7f0e&quot;, &quot;fillOpacity&quot;: 0.2, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;noClip&quot;: false, &quot;opacity&quot;: 0.8, &quot;smoothFactor&quot;: 1.0, &quot;stroke&quot;: true, &quot;weight&quot;: 2.5}
).addTo(feature_group_ea154e472606a4022f0eb417570525df);
var popup_d7051cd8d242a58f7efb05a36dd60d4a = L.popup({
&quot;maxWidth&quot;: 250,
});
var html_847cc54c2fb43874fd0b0dfa31dac59d = $(`&lt;div id=&quot;html_847cc54c2fb43874fd0b0dfa31dac59d&quot; style=&quot;width: 100.0%; height: 100.0%;&quot;&gt;&lt;b&gt;FAB 2811&lt;/b&gt; — Missão #8&lt;br&gt;SBMY → SBPV&lt;br&gt;OM: 18 | Prio: 2&lt;br&gt;Partida: 2025-01-28 01:55Z&lt;br&gt;Chegada: 2025-01-28 03:00Z&lt;br&gt;Duração: 1.08h&lt;/div&gt;`)[0];
popup_d7051cd8d242a58f7efb05a36dd60d4a.setContent(html_847cc54c2fb43874fd0b0dfa31dac59d);
poly_line_5932aa1c3db3ba56f8f05ed80f3e2376.bindPopup(popup_d7051cd8d242a58f7efb05a36dd60d4a)
;
poly_line_5932aa1c3db3ba56f8f05ed80f3e2376.bindTooltip(
`&lt;div&gt;
FAB 2811 | SBMY→SBPV | OM 18 | prio 2
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
var circle_marker_2c0c0317f79ad8926b0a436bfd373454 = L.circleMarker(
[-5.81, -61.28],
{&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;#ff7f0e&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.9, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 4, &quot;stroke&quot;: true, &quot;weight&quot;: 3}
).addTo(feature_group_ea154e472606a4022f0eb417570525df);
circle_marker_2c0c0317f79ad8926b0a436bfd373454.bindTooltip(
`&lt;div&gt;
SBMY | prio 2
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
feature_group_ea154e472606a4022f0eb417570525df.addTo(map_a5be9d8f4dc1d784e5f7c257e2f79d32);
var feature_group_61e372314c676ea5103ec26a04725e1a = L.featureGroup(
{
}
);
feature_group_61e372314c676ea5103ec26a04725e1a.addTo(map_a5be9d8f4dc1d784e5f7c257e2f79d32);
var marker_372dcf9204e8c461d6771f2fa353025b = L.marker(
[-3.15, -59.99],
{
}
).addTo(map_a5be9d8f4dc1d784e5f7c257e2f79d32);
var icon_0e50098521c1ae942b80f135a3b6c9d8 = L.AwesomeMarkers.icon(
{
&quot;markerColor&quot;: &quot;red&quot;,
&quot;iconColor&quot;: &quot;white&quot;,
&quot;icon&quot;: &quot;plane&quot;,
&quot;prefix&quot;: &quot;fa&quot;,
&quot;extraClasses&quot;: &quot;fa-rotate-0&quot;,
}
);
var popup_5430b689ad37e4ff406a8d16e56bc303 = L.popup({
&quot;maxWidth&quot;: 200,
});
var html_8e8bd4326db37f6ec50befeaac46448a = $(`&lt;div id=&quot;html_8e8bd4326db37f6ec50befeaac46448a&quot; style=&quot;width: 100.0%; height: 100.0%;&quot;&gt;&lt;b&gt;SBMN&lt;/b&gt;&lt;br&gt;Manaus / Ponta Pelada (Hub)&lt;/div&gt;`)[0];
popup_5430b689ad37e4ff406a8d16e56bc303.setContent(html_8e8bd4326db37f6ec50befeaac46448a);
marker_372dcf9204e8c461d6771f2fa353025b.bindPopup(popup_5430b689ad37e4ff406a8d16e56bc303)
;
marker_372dcf9204e8c461d6771f2fa353025b.bindTooltip(
`&lt;div&gt;
&lt;b&gt;SBMN&lt;/b&gt;&lt;br&gt;Manaus / Ponta Pelada (Hub)
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
marker_372dcf9204e8c461d6771f2fa353025b.setIcon(icon_0e50098521c1ae942b80f135a3b6c9d8);
var marker_437afb787a6376f00990bc878e71152b = L.marker(
[-1.38, -48.48],
{
}
).addTo(map_a5be9d8f4dc1d784e5f7c257e2f79d32);
var icon_5fbe47bcf0541324aa42fa7f47b133e9 = L.AwesomeMarkers.icon(
{
&quot;markerColor&quot;: &quot;blue&quot;,
&quot;iconColor&quot;: &quot;white&quot;,
&quot;icon&quot;: &quot;plane&quot;,
&quot;prefix&quot;: &quot;fa&quot;,
&quot;extraClasses&quot;: &quot;fa-rotate-0&quot;,
}
);
var popup_40b180b0ac9c68def04045c71f95bd2e = L.popup({
&quot;maxWidth&quot;: 200,
});
var html_c934314628d53756ef4ebb9cec78fc00 = $(`&lt;div id=&quot;html_c934314628d53756ef4ebb9cec78fc00&quot; style=&quot;width: 100.0%; height: 100.0%;&quot;&gt;&lt;b&gt;SBBE&lt;/b&gt;&lt;br&gt;Belém&lt;/div&gt;`)[0];
popup_40b180b0ac9c68def04045c71f95bd2e.setContent(html_c934314628d53756ef4ebb9cec78fc00);
marker_437afb787a6376f00990bc878e71152b.bindPopup(popup_40b180b0ac9c68def04045c71f95bd2e)
;
marker_437afb787a6376f00990bc878e71152b.bindTooltip(
`&lt;div&gt;
&lt;b&gt;SBBE&lt;/b&gt;&lt;br&gt;Belém
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
marker_437afb787a6376f00990bc878e71152b.setIcon(icon_5fbe47bcf0541324aa42fa7f47b133e9);
var marker_bf099c4b38b7e94faddbddbadb3b701e = L.marker(
[2.84, -60.69],
{
}
).addTo(map_a5be9d8f4dc1d784e5f7c257e2f79d32);
var icon_50d59502f7ca503ecc6d22ee950c289c = L.AwesomeMarkers.icon(
{
&quot;markerColor&quot;: &quot;blue&quot;,
&quot;iconColor&quot;: &quot;white&quot;,
&quot;icon&quot;: &quot;plane&quot;,
&quot;prefix&quot;: &quot;fa&quot;,
&quot;extraClasses&quot;: &quot;fa-rotate-0&quot;,
}
);
var popup_2b966be61e4adf383270d57edc448c75 = L.popup({
&quot;maxWidth&quot;: 200,
});
var html_d2cddc05b8c567ab7b75230ffc55fe5a = $(`&lt;div id=&quot;html_d2cddc05b8c567ab7b75230ffc55fe5a&quot; style=&quot;width: 100.0%; height: 100.0%;&quot;&gt;&lt;b&gt;SBBV&lt;/b&gt;&lt;br&gt;Boa Vista&lt;/div&gt;`)[0];
popup_2b966be61e4adf383270d57edc448c75.setContent(html_d2cddc05b8c567ab7b75230ffc55fe5a);
marker_bf099c4b38b7e94faddbddbadb3b701e.bindPopup(popup_2b966be61e4adf383270d57edc448c75)
;
marker_bf099c4b38b7e94faddbddbadb3b701e.bindTooltip(
`&lt;div&gt;
&lt;b&gt;SBBV&lt;/b&gt;&lt;br&gt;Boa Vista
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
marker_bf099c4b38b7e94faddbddbadb3b701e.setIcon(icon_50d59502f7ca503ecc6d22ee950c289c);
var marker_924202add7610f336191ed61efbc28c2 = L.marker(
[-2.42, -54.79],
{
}
).addTo(map_a5be9d8f4dc1d784e5f7c257e2f79d32);
var icon_d209ea01b42b1dc68cf1f0d5c73b4236 = L.AwesomeMarkers.icon(
{
&quot;markerColor&quot;: &quot;blue&quot;,
&quot;iconColor&quot;: &quot;white&quot;,
&quot;icon&quot;: &quot;plane&quot;,
&quot;prefix&quot;: &quot;fa&quot;,
&quot;extraClasses&quot;: &quot;fa-rotate-0&quot;,
}
);
var popup_d5849f05d734cd30d73af9a2135e91a2 = L.popup({
&quot;maxWidth&quot;: 200,
});
var html_fd9669ab27fead48249b174a103aea73 = $(`&lt;div id=&quot;html_fd9669ab27fead48249b174a103aea73&quot; style=&quot;width: 100.0%; height: 100.0%;&quot;&gt;&lt;b&gt;SBSN&lt;/b&gt;&lt;br&gt;Santarém&lt;/div&gt;`)[0];
popup_d5849f05d734cd30d73af9a2135e91a2.setContent(html_fd9669ab27fead48249b174a103aea73);
marker_924202add7610f336191ed61efbc28c2.bindPopup(popup_d5849f05d734cd30d73af9a2135e91a2)
;
marker_924202add7610f336191ed61efbc28c2.bindTooltip(
`&lt;div&gt;
&lt;b&gt;SBSN&lt;/b&gt;&lt;br&gt;Santarém
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
marker_924202add7610f336191ed61efbc28c2.setIcon(icon_d209ea01b42b1dc68cf1f0d5c73b4236);
var marker_daec32e5d812889f45050974c0a30608 = L.marker(
[-8.71, -63.9],
{
}
).addTo(map_a5be9d8f4dc1d784e5f7c257e2f79d32);
var icon_a457ca542a9542ca950610d2f5f683bf = L.AwesomeMarkers.icon(
{
&quot;markerColor&quot;: &quot;blue&quot;,
&quot;iconColor&quot;: &quot;white&quot;,
&quot;icon&quot;: &quot;plane&quot;,
&quot;prefix&quot;: &quot;fa&quot;,
&quot;extraClasses&quot;: &quot;fa-rotate-0&quot;,
}
);
var popup_c76a9c7b068c48ab8869bbfc18af7c03 = L.popup({
&quot;maxWidth&quot;: 200,
});
var html_383b4861dfe9e6c9f9c16bcb49cbf346 = $(`&lt;div id=&quot;html_383b4861dfe9e6c9f9c16bcb49cbf346&quot; style=&quot;width: 100.0%; height: 100.0%;&quot;&gt;&lt;b&gt;SBPV&lt;/b&gt;&lt;br&gt;Porto Velho&lt;/div&gt;`)[0];
popup_c76a9c7b068c48ab8869bbfc18af7c03.setContent(html_383b4861dfe9e6c9f9c16bcb49cbf346);
marker_daec32e5d812889f45050974c0a30608.bindPopup(popup_c76a9c7b068c48ab8869bbfc18af7c03)
;
marker_daec32e5d812889f45050974c0a30608.bindTooltip(
`&lt;div&gt;
&lt;b&gt;SBPV&lt;/b&gt;&lt;br&gt;Porto Velho
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
marker_daec32e5d812889f45050974c0a30608.setIcon(icon_a457ca542a9542ca950610d2f5f683bf);
var marker_41073aa14baee923c4d4fb81d2780017 = L.marker(
[-4.25, -69.94],
{
}
).addTo(map_a5be9d8f4dc1d784e5f7c257e2f79d32);
var icon_2855fd05d0b3cf15ff3e37e852d88af9 = L.AwesomeMarkers.icon(
{
&quot;markerColor&quot;: &quot;blue&quot;,
&quot;iconColor&quot;: &quot;white&quot;,
&quot;icon&quot;: &quot;plane&quot;,
&quot;prefix&quot;: &quot;fa&quot;,
&quot;extraClasses&quot;: &quot;fa-rotate-0&quot;,
}
);
var popup_a402fab5f16315a1bb86e3380cfa94d6 = L.popup({
&quot;maxWidth&quot;: 200,
});
var html_b9a622e3dc72562044e4510f0a7cdd6e = $(`&lt;div id=&quot;html_b9a622e3dc72562044e4510f0a7cdd6e&quot; style=&quot;width: 100.0%; height: 100.0%;&quot;&gt;&lt;b&gt;SBTS&lt;/b&gt;&lt;br&gt;Tabatinga&lt;/div&gt;`)[0];
popup_a402fab5f16315a1bb86e3380cfa94d6.setContent(html_b9a622e3dc72562044e4510f0a7cdd6e);
marker_41073aa14baee923c4d4fb81d2780017.bindPopup(popup_a402fab5f16315a1bb86e3380cfa94d6)
;
marker_41073aa14baee923c4d4fb81d2780017.bindTooltip(
`&lt;div&gt;
&lt;b&gt;SBTS&lt;/b&gt;&lt;br&gt;Tabatinga
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
marker_41073aa14baee923c4d4fb81d2780017.setIcon(icon_2855fd05d0b3cf15ff3e37e852d88af9);
var marker_1347e197d3b900a2651be806efbadae3 = L.marker(
[-3.38, -64.72],
{
}
).addTo(map_a5be9d8f4dc1d784e5f7c257e2f79d32);
var icon_d33fe2b31bd124df209efb3c8bbaaf5b = L.AwesomeMarkers.icon(
{
&quot;markerColor&quot;: &quot;blue&quot;,
&quot;iconColor&quot;: &quot;white&quot;,
&quot;icon&quot;: &quot;plane&quot;,
&quot;prefix&quot;: &quot;fa&quot;,
&quot;extraClasses&quot;: &quot;fa-rotate-0&quot;,
}
);
var popup_10d01d3f428c84a4b8534876ee24013c = L.popup({
&quot;maxWidth&quot;: 200,
});
var html_1420c017526ff2e5992319df8a9db416 = $(`&lt;div id=&quot;html_1420c017526ff2e5992319df8a9db416&quot; style=&quot;width: 100.0%; height: 100.0%;&quot;&gt;&lt;b&gt;SBTT&lt;/b&gt;&lt;br&gt;Tefé&lt;/div&gt;`)[0];
popup_10d01d3f428c84a4b8534876ee24013c.setContent(html_1420c017526ff2e5992319df8a9db416);
marker_1347e197d3b900a2651be806efbadae3.bindPopup(popup_10d01d3f428c84a4b8534876ee24013c)
;
marker_1347e197d3b900a2651be806efbadae3.bindTooltip(
`&lt;div&gt;
&lt;b&gt;SBTT&lt;/b&gt;&lt;br&gt;Tefé
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
marker_1347e197d3b900a2651be806efbadae3.setIcon(icon_d33fe2b31bd124df209efb3c8bbaaf5b);
var marker_249b918d42cf094251143c15dea51503 = L.marker(
[-0.15, -67.05],
{
}
).addTo(map_a5be9d8f4dc1d784e5f7c257e2f79d32);
var icon_d4a83f126eb373fedfdc7399e31741a1 = L.AwesomeMarkers.icon(
{
&quot;markerColor&quot;: &quot;blue&quot;,
&quot;iconColor&quot;: &quot;white&quot;,
&quot;icon&quot;: &quot;plane&quot;,
&quot;prefix&quot;: &quot;fa&quot;,
&quot;extraClasses&quot;: &quot;fa-rotate-0&quot;,
}
);
var popup_056fd5a302d5bd1e1d9e8c970c01fbf3 = L.popup({
&quot;maxWidth&quot;: 200,
});
var html_ba2740a68aca39e8d8327a2926e66e1a = $(`&lt;div id=&quot;html_ba2740a68aca39e8d8327a2926e66e1a&quot; style=&quot;width: 100.0%; height: 100.0%;&quot;&gt;&lt;b&gt;SBUA&lt;/b&gt;&lt;br&gt;São Gabriel da Cachoeira&lt;/div&gt;`)[0];
popup_056fd5a302d5bd1e1d9e8c970c01fbf3.setContent(html_ba2740a68aca39e8d8327a2926e66e1a);
marker_249b918d42cf094251143c15dea51503.bindPopup(popup_056fd5a302d5bd1e1d9e8c970c01fbf3)
;
marker_249b918d42cf094251143c15dea51503.bindTooltip(
`&lt;div&gt;
&lt;b&gt;SBUA&lt;/b&gt;&lt;br&gt;São Gabriel da Cachoeira
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
marker_249b918d42cf094251143c15dea51503.setIcon(icon_d4a83f126eb373fedfdc7399e31741a1);
var marker_be7422071851b896542b7420427842d7 = L.marker(
[-0.98, -62.92],
{
}
).addTo(map_a5be9d8f4dc1d784e5f7c257e2f79d32);
var icon_8c4078498d2fef127200892c2dcea5fa = L.AwesomeMarkers.icon(
{
&quot;markerColor&quot;: &quot;blue&quot;,
&quot;iconColor&quot;: &quot;white&quot;,
&quot;icon&quot;: &quot;plane&quot;,
&quot;prefix&quot;: &quot;fa&quot;,
&quot;extraClasses&quot;: &quot;fa-rotate-0&quot;,
}
);
var popup_00141407372091bd124284b4dd7e6288 = L.popup({
&quot;maxWidth&quot;: 200,
});
var html_48b3a06ff1b071790b71baf99dd04b07 = $(`&lt;div id=&quot;html_48b3a06ff1b071790b71baf99dd04b07&quot; style=&quot;width: 100.0%; height: 100.0%;&quot;&gt;&lt;b&gt;SWBC&lt;/b&gt;&lt;br&gt;Barcelos&lt;/div&gt;`)[0];
popup_00141407372091bd124284b4dd7e6288.setContent(html_48b3a06ff1b071790b71baf99dd04b07);
marker_be7422071851b896542b7420427842d7.bindPopup(popup_00141407372091bd124284b4dd7e6288)
;
marker_be7422071851b896542b7420427842d7.bindTooltip(
`&lt;div&gt;
&lt;b&gt;SWBC&lt;/b&gt;&lt;br&gt;Barcelos
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
marker_be7422071851b896542b7420427842d7.setIcon(icon_8c4078498d2fef127200892c2dcea5fa);
var marker_275da097855075adc560b4d28c9b9d61 = L.marker(
[-5.81, -61.28],
{
}
).addTo(map_a5be9d8f4dc1d784e5f7c257e2f79d32);
var icon_42bf80d915a37bf178b59169c323c665 = L.AwesomeMarkers.icon(
{
&quot;markerColor&quot;: &quot;blue&quot;,
&quot;iconColor&quot;: &quot;white&quot;,
&quot;icon&quot;: &quot;plane&quot;,
&quot;prefix&quot;: &quot;fa&quot;,
&quot;extraClasses&quot;: &quot;fa-rotate-0&quot;,
}
);
var popup_e3d7359a44ddf69b4a3e9cd649414940 = L.popup({
&quot;maxWidth&quot;: 200,
});
var html_cf41c8ffd9861adaa8fac74b21425981 = $(`&lt;div id=&quot;html_cf41c8ffd9861adaa8fac74b21425981&quot; style=&quot;width: 100.0%; height: 100.0%;&quot;&gt;&lt;b&gt;SBMY&lt;/b&gt;&lt;br&gt;Manicoré&lt;/div&gt;`)[0];
popup_e3d7359a44ddf69b4a3e9cd649414940.setContent(html_cf41c8ffd9861adaa8fac74b21425981);
marker_275da097855075adc560b4d28c9b9d61.bindPopup(popup_e3d7359a44ddf69b4a3e9cd649414940)
;
marker_275da097855075adc560b4d28c9b9d61.bindTooltip(
`&lt;div&gt;
&lt;b&gt;SBMY&lt;/b&gt;&lt;br&gt;Manicoré
&lt;/div&gt;`,
{
&quot;sticky&quot;: true,
}
);
marker_275da097855075adc560b4d28c9b9d61.setIcon(icon_42bf80d915a37bf178b59169c323c665);
var layer_control_9d96c679cfa55e618eca79bb06df0431_layers = {
base_layers : {
&quot;cartodbpositron&quot; : tile_layer_68c0ed0b88e20dc8a6ac61bc067dda4a,
},
overlays : {
&quot;FAB 2800&quot; : feature_group_1f47a23bd7d67a07e1773038f73dd820,
&quot;FAB 2803&quot; : feature_group_18921e69dcb020208fc0946cb9ecb95d,
&quot;FAB 2809&quot; : feature_group_00c1a6b6831877b5bcd49fd817f4e7f2,
&quot;FAB 2811&quot; : feature_group_ea154e472606a4022f0eb417570525df,
&quot;N\u00e3o cumpridas&quot; : feature_group_61e372314c676ea5103ec26a04725e1a,
},
};
let layer_control_9d96c679cfa55e618eca79bb06df0431 = L.control.layers(
layer_control_9d96c679cfa55e618eca79bb06df0431_layers.base_layers,
layer_control_9d96c679cfa55e618eca79bb06df0431_layers.overlays,
{
&quot;position&quot;: &quot;topright&quot;,
&quot;collapsed&quot;: false,
&quot;autoZIndex&quot;: true,
}
).addTo(map_a5be9d8f4dc1d784e5f7c257e2f79d32);
&lt;/script&gt;
&lt;/html&gt;"></iframe>
</div>
<div class="section">
<div class="section-title">Planejamento de Voos</div>
<div class="section-body">
<style>
.filtros {
display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 14px; align-items: flex-end;
}
.filtros label { font-size: 0.78rem; color: #555; display: flex; flex-direction: column; gap: 3px; }
.filtros select, .filtros input {
border: 1px solid #ccc; border-radius: 4px; padding: 5px 8px;
font-size: 0.85rem; min-width: 130px; background: white;
}
.filtros button {
padding: 6px 14px; border: none; border-radius: 4px; cursor: pointer;
font-size: 0.85rem; background: #1a3a5c; color: white;
align-self: flex-end;
}
.filtros button:hover { background: #254f80; }
#contador { font-size: 0.82rem; color: #666; margin-bottom: 10px; }
#tabela-voos { width: 100%; border-collapse: collapse; font-size: 0.85rem; }
#tabela-voos thead th {
background: #1a3a5c; color: white; padding: 8px 10px;
text-align: left; white-space: nowrap; cursor: pointer; user-select: none;
}
#tabela-voos thead th:hover { background: #254f80; }
#tabela-voos thead th .sort-icon { margin-left: 4px; opacity: 0.5; }
#tabela-voos tbody tr:nth-child(even) { background: #f7f8fa; }
#tabela-voos tbody tr:hover { background: #e8f0fb; }
#tabela-voos td { padding: 7px 10px; border-bottom: 1px solid #eee; white-space: nowrap; }
.badge {
display: inline-block; padding: 2px 8px; border-radius: 10px;
font-size: 0.75rem; font-weight: 600; text-transform: uppercase;
}
.badge-cumprida { background: #d4edda; color: #155724; }
.badge-nao_cumprida { background: #f8d7da; color: #721c24; }
.badge-inspecao { background: #e2d9f3; color: #4a235a; }
.prio-1 { color: #d62728; font-weight: 700; }
.prio-2 { color: #ff7f0e; font-weight: 700; }
.prio-3 { color: #2ca02c; font-weight: 700; }
</style>
<div class="filtros">
<label>Aeronave
<select id="f-aeronave"><option value="">— Todas —</option><option value="FAB 2800">FAB 2800</option><option value="FAB 2803">FAB 2803</option><option value="FAB 2809">FAB 2809</option><option value="FAB 2811">FAB 2811</option></select>
</label>
<label>Status
<select id="f-status"><option value="">— Todos —</option><option value="cumprida">cumprida</option><option value="nao_cumprida">nao_cumprida</option><option value="inspecao">inspecao</option></select>
</label>
<label>Prioridade
<select id="f-prio"><option value="">— Todas —</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option></select>
</label>
<label>Base (orig/dest)
<select id="f-base"><option value="">— Todas —</option><option value="SBAN">SBAN</option><option value="SBBE">SBBE</option><option value="SBCC">SBCC</option><option value="SBCO">SBCO</option><option value="SBCY">SBCY</option><option value="SBMN">SBMN</option><option value="SBMY">SBMY</option><option value="SBOI">SBOI</option><option value="SBPV">SBPV</option><option value="SBSN">SBSN</option><option value="SBTF">SBTF</option><option value="SBTS">SBTS</option><option value="SBTT">SBTT</option><option value="SBUA">SBUA</option><option value="SBUY">SBUY</option><option value="SBVH">SBVH</option><option value="SBYS">SBYS</option><option value="SWBC">SWBC</option><option value="SWCA">SWCA</option></select>
</label>
<label>Busca (OM, rota…)
<input id="f-texto" type="text" placeholder="ex: SBMN, EVAM…">
</label>
<button onclick="limparFiltros()">Limpar</button>
</div>
<div id="contador"></div>
<table id="tabela-voos">
<thead>
<tr>
<th onclick="ordenar(0)">Aeronave <span class="sort-icon"></span></th>
<th onclick="ordenar(1)">Status <span class="sort-icon"></span></th>
<th onclick="ordenar(2)">#Missão <span class="sort-icon"></span></th>
<th onclick="ordenar(3)">OM <span class="sort-icon"></span></th>
<th onclick="ordenar(4)">Origem <span class="sort-icon"></span></th>
<th onclick="ordenar(5)">Destino <span class="sort-icon"></span></th>
<th onclick="ordenar(6)">Partida (UTC) <span class="sort-icon"></span></th>
<th onclick="ordenar(7)">Chegada (UTC) <span class="sort-icon"></span></th>
<th onclick="ordenar(8)">Duração (h) <span class="sort-icon"></span></th>
<th onclick="ordenar(9)">Prio <span class="sort-icon"></span></th>
</tr>
</thead>
<tbody id="corpo-tabela"></tbody>
</table>
<script>
const DADOS = [{"status": "cumprida", "aeronave": "FAB 2800", "ordem": "1", "om": "7", "orig": "SBMN", "dest": "SBCO", "partida": "2025-01-09 02:09Z", "chegada": "2025-01-09 07:58Z", "dur_h": "5.82", "prioridade": "1"}, {"status": "cumprida", "aeronave": "FAB 2800", "ordem": "2", "om": "10", "orig": "SBCY", "dest": "SBMN", "partida": "2025-01-11 23:29Z", "chegada": "2025-01-12 03:09Z", "dur_h": "3.67", "prioridade": "3"}, {"status": "cumprida", "aeronave": "FAB 2800", "ordem": "3", "om": "12", "orig": "SWCA", "dest": "SBTT", "partida": "2025-01-12 14:52Z", "chegada": "2025-01-12 16:14Z", "dur_h": "1.38", "prioridade": "3"}, {"status": "cumprida", "aeronave": "FAB 2800", "ordem": "4", "om": "19", "orig": "SBMN", "dest": "SWCA", "partida": "2025-01-29 04:57Z", "chegada": "2025-01-29 06:36Z", "dur_h": "1.65", "prioridade": "1"}, {"status": "cumprida", "aeronave": "FAB 2800", "ordem": "5", "om": "20", "orig": "SWCA", "dest": "SBCO", "partida": "2025-01-31 03:09Z", "chegada": "2025-01-31 08:39Z", "dur_h": "5.51", "prioridade": "2"}, {"status": "inspecao", "aeronave": "FAB 2800", "ordem": "", "om": "INSP 2A", "orig": "SBMN", "dest": "SBMN", "partida": "2025-01-12 16:14Z", "chegada": "2025-01-16 16:14Z", "dur_h": "96.00", "prioridade": ""}, {"status": "cumprida", "aeronave": "FAB 2803", "ordem": "1", "om": "6", "orig": "SWBC", "dest": "SBAN", "partida": "2025-01-06 21:08Z", "chegada": "2025-01-07 00:56Z", "dur_h": "3.80", "prioridade": "2"}, {"status": "cumprida", "aeronave": "FAB 2809", "ordem": "1", "om": "1", "orig": "SBBE", "dest": "SBMN", "partida": "2025-01-02 07:53Z", "chegada": "2025-01-02 11:07Z", "dur_h": "3.23", "prioridade": "2"}, {"status": "cumprida", "aeronave": "FAB 2809", "ordem": "2", "om": "2", "orig": "SBPV", "dest": "SBOI", "partida": "2025-01-03 03:03Z", "chegada": "2025-01-03 09:37Z", "dur_h": "6.58", "prioridade": "3"}, {"status": "cumprida", "aeronave": "FAB 2809", "ordem": "3", "om": "5", "orig": "SBMY", "dest": "SBYS", "partida": "2025-01-04 19:37Z", "chegada": "2025-01-05 01:06Z", "dur_h": "5.49", "prioridade": "1"}, {"status": "cumprida", "aeronave": "FAB 2809", "ordem": "4", "om": "8", "orig": "SBPV", "dest": "SBMN", "partida": "2025-01-09 23:11Z", "chegada": "2025-01-10 00:51Z", "dur_h": "1.66", "prioridade": "2"}, {"status": "cumprida", "aeronave": "FAB 2809", "ordem": "5", "om": "11", "orig": "SBSN", "dest": "SBVH", "partida": "2025-01-12 01:26Z", "chegada": "2025-01-12 04:15Z", "dur_h": "2.82", "prioridade": "1"}, {"status": "cumprida", "aeronave": "FAB 2809", "ordem": "6", "om": "16", "orig": "SBTF", "dest": "SBMN", "partida": "2025-01-24 15:25Z", "chegada": "2025-01-24 16:40Z", "dur_h": "1.24", "prioridade": "3"}, {"status": "inspecao", "aeronave": "FAB 2809", "ordem": "", "om": "INSP 2A", "orig": "SBMN", "dest": "SBMN", "partida": "2025-01-05 01:06Z", "chegada": "2025-01-09 01:06Z", "dur_h": "96.00", "prioridade": ""}, {"status": "cumprida", "aeronave": "FAB 2811", "ordem": "1", "om": "3", "orig": "SBMN", "dest": "SBUY", "partida": "2025-01-03 09:50Z", "chegada": "2025-01-03 16:17Z", "dur_h": "6.46", "prioridade": "2"}, {"status": "cumprida", "aeronave": "FAB 2811", "ordem": "2", "om": "4", "orig": "SWCA", "dest": "SBMN", "partida": "2025-01-04 03:01Z", "chegada": "2025-01-04 04:51Z", "dur_h": "1.84", "prioridade": "3"}, {"status": "cumprida", "aeronave": "FAB 2811", "ordem": "3", "om": "9", "orig": "SBUY", "dest": "SBCC", "partida": "2025-01-11 12:27Z", "chegada": "2025-01-11 17:17Z", "dur_h": "4.82", "prioridade": "1"}, {"status": "cumprida", "aeronave": "FAB 2811", "ordem": "4", "om": "13", "orig": "SBUY", "dest": "SBMN", "partida": "2025-01-15 01:13Z", "chegada": "2025-01-15 07:31Z", "dur_h": "6.31", "prioridade": "3"}, {"status": "cumprida", "aeronave": "FAB 2811", "ordem": "5", "om": "14", "orig": "SBBE", "dest": "SBUA", "partida": "2025-01-20 05:25Z", "chegada": "2025-01-20 10:31Z", "dur_h": "5.11", "prioridade": "2"}, {"status": "cumprida", "aeronave": "FAB 2811", "ordem": "6", "om": "15", "orig": "SBBE", "dest": "SBTS", "partida": "2025-01-21 05:22Z", "chegada": "2025-01-21 10:28Z", "dur_h": "5.11", "prioridade": "4"}, {"status": "cumprida", "aeronave": "FAB 2811", "ordem": "7", "om": "17", "orig": "SWBC", "dest": "SBCC", "partida": "2025-01-27 03:48Z", "chegada": "2025-01-27 07:24Z", "dur_h": "3.61", "prioridade": "2"}, {"status": "cumprida", "aeronave": "FAB 2811", "ordem": "8", "om": "18", "orig": "SBMY", "dest": "SBPV", "partida": "2025-01-28 01:55Z", "chegada": "2025-01-28 03:00Z", "dur_h": "1.08", "prioridade": "2"}];
let _colOrdem = -1, _colAsc = true;
function badgeStatus(s) {
const label = {cumprida:'Cumprida', nao_cumprida:'Não cumprida', inspecao:'Inspeção'}[s] || s;
return `<span class="badge badge-${s}">${label}</span>`;
}
function prio(p) {
if (!p) return '';
const cls = ['1','2','3'].includes(p) ? `prio-${p}` : '';
return `<span class="${cls}">${p}</span>`;
}
function linhasFiltradas() {
const fa = document.getElementById('f-aeronave').value;
const fs = document.getElementById('f-status').value;
const fp = document.getElementById('f-prio').value;
const fb = document.getElementById('f-base').value;
const ft = document.getElementById('f-texto').value.toLowerCase();
return DADOS.filter(r => {
if (fa && r.aeronave !== fa) return false;
if (fs && r.status !== fs) return false;
if (fp && r.prioridade !== fp) return false;
if (fb && r.orig !== fb && r.dest !== fb) return false;
if (ft && !JSON.stringify(r).toLowerCase().includes(ft)) return false;
return true;
});
}
function renderizar() {
let rows = linhasFiltradas();
if (_colOrdem >= 0) {
const chaves = ['aeronave','status','ordem','om','orig','dest','partida','chegada','dur_h','prioridade'];
const c = chaves[_colOrdem];
rows = [...rows].sort((a,b) => {
const va = a[c] ?? '', vb = b[c] ?? '';
return _colAsc ? String(va).localeCompare(String(vb), 'pt', {numeric:true})
: String(vb).localeCompare(String(va), 'pt', {numeric:true});
});
}
document.getElementById('contador').textContent =
`${rows.length} registro${rows.length !== 1 ? 's' : ''} exibido${rows.length !== 1 ? 's' : ''} de ${DADOS.length}`;
document.getElementById('corpo-tabela').innerHTML = rows.map(r => `
<tr>
<td>${r.aeronave}</td>
<td>${badgeStatus(r.status)}</td>
<td>${r.ordem}</td>
<td>${r.om}</td>
<td>${r.orig}</td>
<td>${r.dest}</td>
<td>${r.partida}</td>
<td>${r.chegada}</td>
<td>${r.dur_h}</td>
<td>${prio(r.prioridade)}</td>
</tr>`).join('');
}
function ordenar(col) {
if (_colOrdem === col) _colAsc = !_colAsc;
else { _colOrdem = col; _colAsc = true; }
renderizar();
}
function limparFiltros() {
['f-aeronave','f-status','f-prio','f-base'].forEach(id => document.getElementById(id).value = '');
document.getElementById('f-texto').value = '';
renderizar();
}
['f-aeronave','f-status','f-prio','f-base'].forEach(id =>
document.getElementById(id).addEventListener('change', renderizar));
document.getElementById('f-texto').addEventListener('input', renderizar);
renderizar();
</script></div>
</div>
</div>
</body>
</html>