arm-core/web/src/utils/chessMatrixMode.ts
Andrey Epifancev d3c4d35dca Шахматка: при выборе одной стороны Дт/Кт не шлём запрос (ревью #207)
- режим запроса вынесен в utils/chessMatrixMode (all / manual / half) с тестами;
  при «одна сторона» запрос матрицы не уходит, индикатор загрузки снимается;
- подсказка по спеке intercompany-matrix-ui: один текст в таблице и у фильтров,
  у фильтров — только в состоянии «одна сторона»;
- высота шахматки: min-height только для состояния подсказки, обёртка снова auto
  (в обычном режиме «Итого» сразу под строками);
- откат pairs?.length в shouldWarnCounterPairs (маскировал старый API);
- вернули комментарий про сумму, лишний columns || [] и дубль CSS убраны;
  опечатка CataloguGroupTabsI.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-29 21:38:40 +04:00

17 lines
1.0 KiB
TypeScript
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.

/**
* Режим запроса шахматки по фильтрам счетов:
* - `all` — фильтры пусты, берём полную матрицу;
* - `manual` — выбраны и Дт, и Кт, считаем по выбранным счетам;
* - `half` — выбрана только одна сторона: запрос не шлём, показываем подсказку.
*/
export type ChessMatrixMode = 'all' | 'manual' | 'half';
/** Текст для состояния «выбрана одна сторона» — в таблице и у фильтров один и тот же (openspec intercompany-matrix-ui). */
export const CHESS_HALF_FILTER_HINT = 'Для расчёта по счетам выберите счета и в Дт, и в Кт';
export const chessMatrixMode = (debit: readonly string[], credit: readonly string[]): ChessMatrixMode => {
if (debit.length > 0 && credit.length > 0) return 'manual';
if (debit.length === 0 && credit.length === 0) return 'all';
return 'half';
};