feat(tgu-ops-ui): display request polygons on 2D map
Добавлен слой заявок (КНС) на 2D карту ТГУ: - requestApi.ts — загрузка заявок постранично через GET /v1/requests/map с прогресс-коллбэком; автоматически собирает все страницы - wktParser.ts — парсинг WKT POLYGON/MULTIPOLYGON в массив координат - drawRequests.ts — Canvas-рендеринг полигонов заявок - Tgu2DMapLayers.ts — buildTgu2DMapScene строит MapPolygon[] из RequestMapItem[] - Tgu2DMapTab.tsx — состояние requestsState, кнопка «Загрузить», фильтры по дате - Tgu2DMapSidebar.tsx — панель слоя заявок: счётчик, ошибки, truncated-предупреждение - requestTypes.ts — RequestMapItem, RequestMapPage модели - Поддержка выбора заявки на карте (mapSelectionTypes, mapTypes) - nginx.conf, vite.config.ts — проксирование /v1 на pcp-request-service в dev Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -978,3 +978,84 @@
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
/* ── Requests filter panel ─────────────────────────────── */
|
||||
|
||||
.tgu-button--sm {
|
||||
min-height: 1.75rem;
|
||||
padding: 0.28rem 0.55rem;
|
||||
font-size: 0.78rem;
|
||||
}
|
||||
|
||||
.tgu-alert--compact {
|
||||
padding: 0.42rem 0.58rem;
|
||||
font-size: 0.76rem;
|
||||
}
|
||||
|
||||
.tgu-map-requests-filter {
|
||||
display: grid;
|
||||
gap: 0.55rem;
|
||||
}
|
||||
|
||||
.tgu-map-requests-filter .tgu-field {
|
||||
grid-template-columns: 2rem minmax(0, 1fr);
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.tgu-map-requests-filter .tgu-field input {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.tgu-map-requests-filter__actions {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.35rem;
|
||||
}
|
||||
|
||||
.tgu-map-requests-filter__status {
|
||||
color: var(--text-dim);
|
||||
font-size: 0.75rem;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.tgu-map-requests-filter__truncated {
|
||||
color: #ffe0a3;
|
||||
}
|
||||
|
||||
.tgu-map-requests-legend {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.45rem 0.8rem;
|
||||
padding-top: 0.2rem;
|
||||
color: var(--text-dim);
|
||||
font-size: 0.74rem;
|
||||
}
|
||||
|
||||
.tgu-map-requests-legend span {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 0.38rem;
|
||||
}
|
||||
|
||||
.tgu-map-requests-legend i {
|
||||
display: inline-block;
|
||||
width: 1.1rem;
|
||||
height: 0.42rem;
|
||||
border-radius: 3px;
|
||||
border: 1.5px dashed;
|
||||
}
|
||||
|
||||
.req-optics {
|
||||
background: rgba(255, 160, 64, 0.25);
|
||||
border-color: rgba(255, 160, 64, 0.85);
|
||||
}
|
||||
|
||||
.req-rsa {
|
||||
background: rgba(64, 175, 255, 0.25);
|
||||
border-color: rgba(64, 175, 255, 0.85);
|
||||
}
|
||||
|
||||
.req-combined {
|
||||
background: rgba(192, 128, 255, 0.25);
|
||||
border-color: rgba(192, 128, 255, 0.85);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user