Grid — iOS
GridViewController · GridViewControllerV1 · GridHelpers · GridModels
Equivalente Android: GridFragment
Lista filtrável de viagens. Versão V1 consome /v1/grid_data; versão legada mantida para fallback.
Arquivos
grid/ ├── GridViewController.swift · versão legacy ├── GridViewControllerV1.swift · versão v1 ├── GridHelpers.swift · status → cor, formatação ├── GridModels.swift · Codable das linhas ├── FilterPopupViewController.swift · filtros (status, motorista, datas) ├── cell/ · UITableViewCell customizadas └── details/ · drill-down de uma viagem
Filtros
| Filtro | Comportamento |
|---|---|
| Status | Mapeado via GridHelpers (cor + label). |
| Motorista / Veículo | Combo abre FilterPopupViewController. |
| Datas | Range picker, aplicado client-side e via query string. |
| Placa | Busca via PlateMatcher — trata formato antigo ↔ Mercosul como equivalente (ex.: MSM2020 ↔ MSM2A20). Ver Histórico. |
Detalhe da Viagem — Pontos autorizados e áreas de risco
No drill-down (details/), o DetailGridViewController renderiza sobre o mapa (MapKit) os pontos autorizados e as áreas de risco da viagem — mesma feature das telas de Motorista e Gestor, e paridade com o Android.
| Elemento | Como é desenhado |
|---|---|
| Áreas de risco | MKPolygon vermelho acumulado em riskAreaPolygonsById (itens type_return == "risk_area"). |
| Pontos autorizados | StopPointAnnotation em stopPointAnnotationsById; pino azul com caixa para type_return == "delivery". |
Endpoint em STAGING:
GET /v1/trip/{tripId}/rotogram — data[] { points, apolice_rules.risk_points, deliveries }. Base stopPointsBase = http://nginx.surubim.monisat.online/v1; pendente troca para produção https://api.monisystem.com/v1. Contrato completo em Mapa (iOS).Endpoints
GET
/v1/grid_dataLinhas do grid com paginação e filtros. Resposta deve ser desempacotada do wrapper
data.GET
/v1/tripDetalhes ao abrir uma linha.
GET
/v1/trip/{tripId}/rotogramDetalhe da viagem: pontos autorizados + áreas de risco + entregas. Base em STAGING (
http://nginx.surubim.monisat.online/v1).