mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-17 08:15:16 +03:00
feat(web-test): распознавание колонок-картинок в readTable
readTable теперь отдаёт картиночные ячейки как 'pic:<N>' (есть иконка) или '' (нет): N — индекс кадра спрайта, кодирующий состояние. Присутствие читается как truthy, разные иконки различаются по индексу. Безымянные картиночные колонки (напр. индикатор присоединённых файлов) больше не выпадают — именуются по title-тултипу, fallback '(picture)'. - dom/grid.mjs: helper picInfo (парсинг gx из pictureCollection url, исключение декоративных иконок дерева/групп); ветка пустого заголовка добавляет картиночные колонки; resolveCol резолвит колонку по тексту И по title (клик по картиночной колонке). - click-cell.mjs: fail-fast при попытке отбора строки по 'pic:N' — понятная ошибка вместо row_not_found (картинки read/assert-only). - SKILL.md: компактный раздел про картиночные колонки. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
// web-test table/click-cell v1.2 — click a cell in a form grid by (row, column).
|
||||
// web-test table/click-cell v1.3 — click a cell in a form grid by (row, column).
|
||||
// Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
//
|
||||
// Routed from core/click.mjs when the user calls clickElement({row, column}) and
|
||||
@@ -47,6 +47,17 @@ const FOCUS_WAIT_MS = 150;
|
||||
export async function clickGridCell(target, ctx) {
|
||||
const { formNum, gridSelector, gridName, modifier, dblclick, scroll } = ctx;
|
||||
|
||||
// Guard: a 'pic:N' filter value is a readTable picture token, not real cell text.
|
||||
// Picture cells render an icon (no text), so they can't select a row — fail fast
|
||||
// with guidance instead of a confusing 'row_not_found'.
|
||||
if (target?.row && typeof target.row === 'object') {
|
||||
for (const [k, v] of Object.entries(target.row)) {
|
||||
if (typeof v === 'string' && /^pic:\d+$/.test(v.trim())) {
|
||||
throw new Error(`clickElement: "${v}" is a readTable picture value (column "${k}"), not selectable text — it can't be used as a row filter. Filter by a text column (e.g. name/number) instead.`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 1. Try to find the cell in current DOM window.
|
||||
let cell = await page.evaluate(findGridCellScript(formNum, gridSelector, target));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user