← 목록
기타 2026-05-19 4KB 읽기 4분

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개 모듈 구현:

  1. CrownyConditionalFormat (#38)
- iconSet(sheet, range, iconSetName, thresholds) — 신호등/화살표/별/표정 7종 아이콘세트 - colorScale(sheet, range, minColor, maxColor, midColor) — 3색 색조스케일 - dataBar(sheet, range, posColor, negColor) — 음수 지원 데이터막대 - showDialog(sheet) — 설정 다이얼로그 (유형 전환 UI)

  1. CrownyExtraCharts (#39)
- histogram(sheet, dataRange, binCount) — 빈 자동계산, SVG 수평막대 표시 - waterfall(sheet, labelRange, valueRange) — 누적 증감 SVG 폭포수 차트 (음수=빨강, 양수=초록) - showDialog(sheet) — 삽입 다이얼로그

  1. CrownyDataTable (#40)
- singleVar(sheet, inputCell, formula, values, outR, outC) — 단일 변수 가정 분석 - twoVar(sheet, rowInputCell, colInputCell, formula, rowVals, colVals, outR, outC) — 이중 변수 2D 테이블 - showDialog(sheet) — 생성 다이얼로그 (단일/이중 전환)

  1. CrownyNameManager (#45)
- define(name, range) — 이름 정의 (한글 이름 지원, 정규식 검증) - resolve(name) — 이름→범위 반환 - delete(name) — 이름 삭제 - resolveInFormula(formula) — 수식 내 이름 자동 치환 - showDialog(sheet) — 이름 관리자 다이얼로그 (목록/추가/삭제) - CrownyFormula.evaluate에 이름 치환 자동 패치 (래핑)

  1. 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 방식 사용)
  • 히스토그램/워터폴: 새 창 팝업 방식 — 시트 내 임베드 필요 시 추가 작업 필요