feat(tgu-ui): выбор полосы слотов мышью «от первого к последнему»
Замена авто-чипа «полоса ×N» на ручной жест. Полоса переопределена:
один КА + один крен (ε) + подряд по времени; виток в границу не входит.
- slotStrips.ts: groupStrips → { idByKey, membersOf }; группировка по КА →
кластеры по крену (ROLL_EPSILON=0.5) → деление по каденции (CADENCE_GAP_FACTOR=1.5)
- slotSelection.ts: selectStripRange вместо toggleStripSelection
- TguSlotsTab.tsx: клик по строке = якорь + выбор; Shift+клик тянет полосу
между якорем и строкой; выход за полосу запрещён + подсказка; рельс полосы якоря
- tgu-planning.css: убраны стили чипа/hover; user-select:none на строках
- тесты обновлены (125 зелёных), tsc/build чисто
This commit is contained in:
@@ -1305,49 +1305,22 @@
|
||||
background: rgba(104, 195, 189, 0.36);
|
||||
}
|
||||
|
||||
/* Ячейка «КА»: номер КА + чип выбора полосы рядом. */
|
||||
.tgu-slots-sat {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 0.4rem;
|
||||
/* Строки таблицы — поверхность жеста выбора полосы (клик + Shift+клик), поэтому гасим выделение
|
||||
текста, чтобы Shift+клик не подсвечивал текст между строками. */
|
||||
.tgu-slots-table tbody {
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
/* Чип «полоса ×N» — выбрать всю полосу (слоты одного крена подряд) одним кликом.
|
||||
Нейтральный по умолчанию; .is-on — когда вся полоса уже выбрана. */
|
||||
.tgu-slots-strip-chip {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: 0.02rem 0.4rem;
|
||||
border-radius: 999px;
|
||||
border: 1px solid var(--line);
|
||||
background: #101214;
|
||||
color: var(--text-muted);
|
||||
font-size: 0.68rem;
|
||||
line-height: 1.4;
|
||||
cursor: pointer;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.tgu-slots-strip-chip:hover {
|
||||
border-color: var(--accent);
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.tgu-slots-strip-chip.is-on {
|
||||
border-color: rgba(104, 195, 189, 0.58);
|
||||
background: rgba(104, 195, 189, 0.16);
|
||||
color: var(--accent-strong);
|
||||
}
|
||||
|
||||
/* Рельс полосы (сортировка «время», члены идут подряд): приглушённая цветная полоса слева,
|
||||
оттенок детерминирован StripId (--strip-hue) — соседние полосы визуально различаются.
|
||||
У активной строки рельс перекрывается акцентным (is-active), это норма. */
|
||||
/* Рельс полосы текущего якоря: приглушённая цветная полоса слева у всех членов полосы, в которой
|
||||
стоит якорь жеста «полоса от первого к последнему». Оттенок детерминирован PolosaId (--strip-hue).
|
||||
Так оператор видит границу полосы — что выделит Shift+клик и за что выйти нельзя. У активной
|
||||
строки рельс перекрывается акцентным (is-active), это норма. */
|
||||
.tgu-slots-table tbody tr.tgu-slots-row--strip {
|
||||
box-shadow: inset 3px 0 0 hsl(var(--strip-hue, 0) 45% 55% / 0.55);
|
||||
}
|
||||
|
||||
/* Подсветка всех членов полосы под курсором (актуально в «крен»/«вклад», где они не подряд). */
|
||||
.tgu-slots-table tbody tr.is-strip-hover {
|
||||
/* Строка-якорь полосы (первый клик жеста) — чуть заметнее остальных членов полосы. */
|
||||
.tgu-slots-table tbody tr.is-strip-anchor {
|
||||
background: rgba(104, 195, 189, 0.12);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user