feat(import): input template download with three sheets (spec 2.3 step 4)
- buildTemplateWorkbook: 교각 · IP · 받침 sheets with the headers the parser reads; value cells left empty so no blank-name rows raise E05 - dialog button 입력 템플릿 다운로드 (.xlsx) - tests: sheet order, parser recognition, write-and-read round trip Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0b7ae1ef3f
commit
6319cccb8e
4 files changed
+67
No files matched your search
@@ -5,6 +5,7 @@ import * as XLSX from 'xlsx';
|
||||
import { parseWorkbook, type SheetReport } from './core/parseWorkbook';
|
||||
import { buildPier, type PierModel } from './core/geometry';
|
||||
import { NOT_IMPLEMENTED_RULES, validateInput, validatePier } from './core/validate';
|
||||
import { buildTemplateWorkbook } from './core/template';
|
||||
import type { Issue, PierInput, PierType } from './core/types';
|
||||
import { buildPierScene, viewPosition, type PartName, type PierScene, type ViewKind } from './view/scene';
|
||||
|
||||
@@ -520,6 +521,9 @@ $<HTMLButtonElement>('regen').addEventListener('click', regenerateChecked);
|
||||
$<HTMLInputElement>('project-name').addEventListener('input', updateApply);
|
||||
|
||||
$<HTMLButtonElement>('pick-file').addEventListener('click', () => $<HTMLInputElement>('file').click());
|
||||
$<HTMLButtonElement>('download-template').addEventListener('click', () => {
|
||||
XLSX.writeFile(buildTemplateWorkbook(), '교각입력템플릿.xlsx');
|
||||
});
|
||||
$<HTMLInputElement>('file').addEventListener('change', async (ev) => {
|
||||
const file = (ev.target as HTMLInputElement).files?.[0];
|
||||
if (!file) return;
|
||||
|
||||
Reference in new issue
Block a user