mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
refactor: вынести четыре диалога настроек в модули (#592)
Шаг 0 эпика #591. Видимых изменений нет — это подготовка: оба ядра стояли в трёх строках от жёсткого потолка, а разметка диалогов была крупнейшей перемещаемой частью редакторского рантайма. Перенос механический и проверяемый. Тела всех четырёх методов уехали побайтово: тип `this` объявлен параметром функции, поэтому ни одна строка разметки, ни один обработчик и ни один якорь мутанта не переписаны, а в классе остались однострочные делегаты. Сверка при подготовке коммита: 43 617, 16 795, 10 590 и 6 719 символов совпали посимвольно с оригиналом. src/editors/marker-dialog.ts диалог устройства на плане src/editors/space-settings-dialog.ts диалог пространства src/editors/general-settings-dialog.ts общие настройки src/editors/room-settings-dialog.ts настройки комнаты Имена файлов пространства и комнаты уточнены против ТЗ: рядом уже живёт `src/space-dialog.ts` с логикой того же диалога, и два `space-dialog.ts` в одном дереве путали бы обоих — и человека, и grep. Попутно из рантайма уехали два словаря ярлыков режима отображения (их единственный потребитель — диалог устройства) и границы шага сетки: последние теперь объявлены в модуле, который рисует поле, а кламп записи импортирует их оттуда. Направление импорта то же, что у самой функции рисования, цикла нет. `_radarSetup` стал публичным: диалог устройства обращается к контроллеру из своего модуля, а остальной класс и так живёт на `public _x`. Потолок ядра опущен 14100 → 12810 — ровно на 1290 вынесенных строк, запас над фактом прежний. Незафиксированный выигрыш ядро отыграло бы первой же правкой. Сборщик логического исходника для контрактных тестов (`test/houseplan-source.mjs`) научен подставлять тело вынесенной функции вместо делегата: шесть тестов, читающих разметку, продолжают видеть ровно то же, что и до переноса, — иначе их пришлось бы переучивать на новые пути в тот самый момент, когда они должны доказать, что перенос ничего не изменил. Issue: #592 User-Visible: no
This commit is contained in:
@@ -105,10 +105,16 @@ test('source and display transitions are immutable and preserve unrelated fields
|
||||
});
|
||||
|
||||
test('#456 Copy is an edit-settings action and is absent from onboarding', () => {
|
||||
const runtime = readFileSync(new URL('../src/houseplan-editor-runtime.ts', import.meta.url), 'utf8');
|
||||
// #592: разметка диалога пространства уехала в свой модуль целиком и
|
||||
// побайтово. Утверждения прежние — сменился только файл, в котором они
|
||||
// ищутся; регулярки намеренно оставлены дословными, чтобы перенос не смог
|
||||
// проскочить под видом «поправили тест».
|
||||
const dialog = readFileSync(
|
||||
new URL('../src/editors/space-settings-dialog.ts', import.meta.url), 'utf8',
|
||||
);
|
||||
const onboarding = readFileSync(new URL('../src/houseplan-onboarding-runtime.ts', import.meta.url), 'utf8');
|
||||
assert.match(runtime, /d\.mode === 'edit'[\s\S]*openSpaceCopyDialog\(this\.host\)/);
|
||||
assert.match(runtime, /<div class="dialog-action-group">[\s\S]*btn\.copy/);
|
||||
assert.doesNotMatch(runtime, /dialog-action-danger[\s\S]{0,300}btn\.copy/);
|
||||
assert.match(dialog, /d\.mode === 'edit'[\s\S]*openSpaceCopyDialog\(this\.host\)/);
|
||||
assert.match(dialog, /<div class="dialog-action-group">[\s\S]*btn\.copy/);
|
||||
assert.doesNotMatch(dialog, /dialog-action-danger[\s\S]{0,300}btn\.copy/);
|
||||
assert.doesNotMatch(onboarding, /btn\.copy|openSpaceCopyDialog|space\.copy_/);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user