CrownyDoc 스프레드시트 확장 — MEDIUM 5개 완료
개요
benchmark-weaknesses.json의 스프레드시트 MEDIUM 약점 5개(#38, #39, #40, #45, #46)를 구현했다.
무엇을 했는지
실제 ID 내용 (예상과 달랐음)
- #38: 조건부 서식 아이콘세트 없음 (medium)
- #39: 히스토그램/워터폴 차트 없음 (medium, large effort)
- #40: 데이터 테이블(민감도 분석) 없음 (medium, large effort)
- #45: 이름 정의(Named Range) 없음 (medium)
- #46: 배열 수식 없음 (medium, large effort)
신규 파일
/Users/ef/CrownyDoc/한선씨/정적/sheet-extras.js — 4개 모듈 구현:
CrownyConditionalFormat(#38)
iconSet(sheet, range, iconSetName, thresholds) — 신호등/화살표/별/표정 7종 아이콘세트
- colorScale(sheet, range, minColor, maxColor, midColor) — 3색 색조스케일
- dataBar(sheet, range, posColor, negColor) — 음수 지원 데이터막대
- showDialog(sheet) — 설정 다이얼로그 (유형 전환 UI)CrownyExtraCharts(#39)
histogram(sheet, dataRange, binCount) — 빈 자동계산, SVG 수평막대 표시
- waterfall(sheet, labelRange, valueRange) — 누적 증감 SVG 폭포수 차트 (음수=빨강, 양수=초록)
- showDialog(sheet) — 삽입 다이얼로그CrownyDataTable(#40)
singleVar(sheet, inputCell, formula, values, outR, outC) — 단일 변수 가정 분석
- twoVar(sheet, rowInputCell, colInputCell, formula, rowVals, colVals, outR, outC) — 이중 변수 2D 테이블
- showDialog(sheet) — 생성 다이얼로그 (단일/이중 전환)CrownyNameManager(#45)
define(name, range) — 이름 정의 (한글 이름 지원, 정규식 검증)
- resolve(name) — 이름→범위 반환
- delete(name) — 이름 삭제
- resolveInFormula(formula) — 수식 내 이름 자동 치환
- showDialog(sheet) — 이름 관리자 다이얼로그 (목록/추가/삭제)
- CrownyFormula.evaluate에 이름 치환 자동 패치 (래핑)CrownyArrayFormula(#46)
enter(sheet, formula, anchorR, anchorC) — 배열 수식 입력 (범위×범위 연산)
- _evaluateArray(formula, sheet) — A1:A5 OP B1:B5 패턴 파싱·계산
- Ctrl+Shift+Enter 키보드 단축키 자동 바인딩
- 배열 수식 셀 표시: {=A1:A5*B1:B5}/Users/ef/CrownyDoc/한선씨/시트/시트확장.한선 — 한선씨 동반 파일:
- 모든 모듈의 한선씨 대응 구현 (아이콘선택, 히스토그램빈계산, 워터폴누적, 단일/이중변수테이블, 이름관리, 배열연산)
- 메인 함수에서 각 기능 테스트
수정 파일
/Users/ef/CrownyDoc/한선씨/정적/index.html
- sheet-toolbar.js 다음에
<script src='/static/sheet-extras.js'>추가
/Users/ef/CrownyDoc/benchmark-weaknesses.json
- #38, #39, #40, #45, #46 status: "todo" → "done"
결과
- 스프레드시트: 21/30 완료 (70%)
- 전체: 57/100 완료 (57%)
- 남은 스프레드시트 todo: #37(매크로), #41(스파크라인), #47(XLOOKUP), #48(LAMBDA), #49(동적배열), #51(시나리오), #52(목표값찾기), #54(인쇄영역), #55(입력드롭다운)
잔여 이슈
- 배열 수식: 범위×범위 기본 사칙연산만 지원. 중첩 함수 내 배열 연산 미지원
- 데이터 테이블: 원래 값 복원 시 _render() 호출 — 대용량 시트에서 성능 영향 가능
- 이름 관리자: 맵 반복자 없어
resolveInFormula에서 순회 제한 (현재 Object.keys 방식 사용) - 히스토그램/워터폴: 새 창 팝업 방식 — 시트 내 임베드 필요 시 추가 작업 필요