29 Commits

Author SHA1 Message Date
Andrey Epifancev
78227b46c0 AURORA-1980: переименование программы и проекта
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 22:32:42 +04:00
Andrey Epifancev
1aec5d2c2d AURORA-1978: удаление пустой программы и проекта на форме 4
«Удалить строку» на строке программы (GROUP) или проекта (ITEM) ничего не
делала: у этих строк нет line_id, окно подтверждения не открывалось, а
события program_deleted / project_deleted, которые сервер уже поддерживает,
фронт не отправлял.

- getDeleteTarget: по выделенной строке выбирает программу, проект или
  строку бюджета; для непустых программы/проекта сразу показывает причину.
- RealtimeContext: deleteProgram / deleteProject и обработка ответов.
- useRealtimeData: строка убирается из дерева, пересчёт ROOT/GROUP из
  ответа сопоставляется по section_code / program_id / project_id
  (alignNodeRows), а не по sort_order — сервер нумерует строки заново, и у
  листа без строк бюджета нет ROOT (найдено при проверке на стенде).
- Окно подтверждения называет удаляемую программу/проект.
- getWsErrorMessage срезает префикс "<class 'asyncpg...'>: " — иначе отказ
  сервера (программа с проектами у устаревшего клиента) показывался с ним.

Refs #303

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 20:02:41 +04:00
Andrey Epifancev
ba167c0e48 Merge remote-tracking branch 'origin/test' into feat/284-aurora-1891-cell-click-keyboard-edit
# Conflicts:
#	web/src/components/RealtimeTable/Cell/Cell/Cell.jsx
#	web/src/components/RealtimeTable/RealtimeTable.jsx
#	web/src/components/RealtimeTable/SettingPanel/SettingPanel.jsx
#	web/src/components/RealtimeTable/TableHead/TableHead.jsx
#	web/src/components/RealtimeTable/tableColumns.jsx
2026-11-02 22:04:44 +04:00
aep
5fe1264064 Merge pull request 'AURORA-1894: красная рамка у ошибки ячейки, тост без Server error:undefined' (#277) from feat/275-aurora-1894-error-border-toast into test 2026-11-02 20:34:38 +03:00
Andrey Epifancev
8558670b46 feat(table): редактирование одним кликом и с клавиатуры, без лишних записей в аудит (AURORA-1891)
- processColumns (tableColumns.jsx): enableEditing для каждой листовой колонки
  через isCellEditable (PR #281), а не только для vsp_dropdown — MRT больше не
  открывает редактор (даже disabled) на нередактируемой ячейке, сервер не берёт
  блокировку, коллеги не видят 🔒.
- Одиночный клик по редактируемой, не заблокированной ячейке открывает
  редактор (muiTableBodyCellProps.onClick, RealtimeTable.jsx); клик по
  нередактируемой/занятой ячейке, как раньше, выделяет строку. Удалён мёртвый
  onClick/handleClick из Cell.jsx.
- Клавиатура на выделенной ячейке: Enter/F2 — открыть редактор; Delete/Backspace
  — открыть с пустым значением; печатный символ — открыть и подставить его
  вместо текущего значения (хранится в state RealtimeTable, читается через
  table.options.meta.getEditorInitialInput).
- EditCell.jsx/VspDropdownEditCell.jsx: Esc — отмена без cell_updated; Tab/
  Shift+Tab и Enter — сохранить и перейти к следующей/предыдущей редактируемой
  ячейке через table.options.meta.openNextEditableCell → utils/cellNavigation.js
  (чистые findNextEditableColumnId/findNextEditableRowId по
  getOrderedVisibleColumns и table.getRowModel().flatRows).
- utils/formulaUtils.js: isSameCellValue — handleSave не шлёт cell_updated,
  если значение не изменилось (число/строка, «1 500,0», пусто/null); формула
  всегда считается изменённой.
- Фокус: setTimeout(50) → requestAnimationFrame; после закрытия редактора
  фокус возвращается в <td> ячейки.

Тесты: utils/cellNavigation.test.js, utils/formulaUtils.test.js (новые,
15 тестов). node --test src/components/RealtimeTable/utils/*.test.js:
85 тестов, 84 passed, 1 известный pre-existing fail (columnLayoutUtils.test.js,
нет node_modules в этом worktree, см. PR #281/#283).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-11-01 16:14:02 +04:00
Andrey Epifancev
c7c679851d fix(realtime): пустая правка уходит как value: null, а не без ключа (AURORA-1848)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 12:14:49 +04:00
Andrey Epifancev
83cb364a9e fix(realtime): красная рамка у ошибки ячейки, тост без Server error:undefined (AURORA-1894)
Cell.jsx: порядок спреда стилей — base → editable/not-editable → locked →
invalid (INVALID_STYLES последним), чтобы красная рамка 2px не перетиралась
EDITABLE_STYLES у вводимых ячеек с ошибкой.

utils/wsErrorUtils.js: getWsErrorMessage(error) — строка возвращается как
есть, объект берёт message || detail, известные технические префиксы
(computed_field:, role_not_allowed:, window_closed:, org_not_assigned)
заменяются понятным текстом, прочее отдаётся без "Server error:".

RealtimeContext.js: toast.error(getWsErrorMessage(data.error)) вместо
`Server error:${data.error.message}` || '', которое всегда давало undefined
для ошибок-строк (|| не срабатывает на непустой строке).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-11-01 12:10:16 +04:00
PotapovaA
15ac95f7d7 добавила колонки + переехала на @babel/traverse@^7.28.5 2026-09-24 15:10:52 +03:00
PotapovaA
d9511ae7c5 fix 2026-08-19 18:38:54 +03:00
PotapovaA
d347023211 fix 2026-08-19 18:26:29 +03:00
PotapovaA
911962135e Merge branch 'test' into vsp-choose-form2-2 2026-08-12 18:48:48 +03:00
PotapovaA
5634a16143 add column of stage for table 2026-08-10 18:43:05 +03:00
PotapovaA
72f2c67bdc исправления от линтера 2026-08-06 17:44:49 +03:00
e0c8c57fc2 vsp-choose-form2-2: выбор ВСП на фронте 2026-08-06 17:14:21 +03:00
PotapovaA
8c978b4e33 добавлене программ, проектов в 4 форме 2026-07-28 16:03:52 +03:00
PotapovaA
d257c3f1c1 add-row 2026-07-27 17:12:37 +03:00
PotapovaA
27e79a3df5 добавила line_id_code в cell_updated 2026-07-14 13:51:42 +03:00
PotapovaA
019b93092c fix-websocket 2026-07-02 17:45:00 +03:00
PotapovaA
40c373b5ed projects 2026-07-02 15:35:44 +03:00
PotapovaA
8c88acab49 модалка для выбора всп 2026-06-26 17:48:22 +03:00
PotapovaA
0686b3ae8a нащвания форм + измененые формы 2026-06-22 20:33:55 +03:00
PotapovaA
c8165e8ca9 блокировка ячейки веб сокеты 2026-06-22 18:35:16 +03:00
PotapovaA
aa18a8e19c web сокеты для начала/конца редактирования ячейки 2026-06-22 17:16:29 +03:00
75fa232bc6 test-stand-fix: секреты для теста больше не нужно костылить, нужный урл для вебсокетов в контуре 2026-06-19 14:44:47 +03:00
PotapovaA
fcece07c64 удаление строки 2026-05-29 13:51:47 +03:00
PotapovaA
99e7a445cf добавление строки 2026-05-29 11:23:25 +03:00
PotapovaA
52de655149 ws для ячеек 2026-05-28 12:12:16 +03:00
PotapovaA
079e719f71 ws - в процессе 2026-05-27 16:21:04 +03:00
PotapovaA
93881c7194 ws 2026-05-26 19:06:01 +03:00