Skip to content

Conversation

@Seungwoo321
Copy link
Member

Summary

PivotModel 양방향 바인딩 기능을 구현하여 Vue 3의 v-model 패턴을 지원합니다.

주요 변경사항

  • ✨ VPivottableUi 컴포넌트에 v-model:pivotModel 지원 추가
  • 🐛 필터 변경사항이 즉시 PivotModel에 반영되도록 수정 (valueFilter 비교 로직 추가)
  • 🔧 props 정의를 Partial<DefaultPropsType>로 변경하여 pivotModel 사용 시 개별 props를 선택적으로 만듦
  • 📦 PivotModel 유틸리티 함수 추가 (비교, 생성, 복제)
  • 🎯 PivotModel 히스토리 관리를 위한 composable 추가 (usePivotModelHistory)
  • 💾 PivotModel 직렬화/역직렬화 유틸리티 추가
  • 📚 한글/영어 문서 업데이트

PivotModel 인터페이스

interface PivotModelInterface {
  rows: string[]
  cols: string[]
  vals: string[]
  aggregatorName: string
  rendererName: string
  heatmapMode?: 'full' | 'col' | 'row' | ''
  valueFilter: Record<string, any>
  rowOrder: 'key_a_to_z' | 'value_a_to_z' | 'value_z_to_a'
  colOrder: 'key_a_to_z' | 'value_a_to_z' | 'value_z_to_a'
  timestamp?: number
  version?: string
}

사용 예시

<template>
  <VuePivottableUi
    v-model:pivot-model="pivotModel"
    :data="data"
    :renderers="renderers"
    @change="onPivotModelChange"
  />
</template>

<script setup>
const pivotModel = ref({
  rows: ['Category'],
  cols: ['Date'],
  vals: ['Amount'],
  aggregatorName: 'Sum',
  rendererName: 'Table',
  valueFilter: {},
  rowOrder: 'key_a_to_z',
  colOrder: 'key_a_to_z',
  heatmapMode: ''
})
</script>

Test plan

  • 기본 양방향 바인딩 동작 확인
  • 필터 체크박스 변경 시 즉시 반영 확인
  • 드래그 앤 드롭 후 PivotModel 업데이트 확인
  • pivotModel prop 제공 시 개별 props 오버라이드 확인
  • TypeScript 타입 검사 통과 확인
  • ESLint 검사 통과 확인
  • 빌드 성공 확인

🤖 Generated with Claude Code

Seungwoo321 and others added 4 commits August 6, 2025 21:13
- Add PivotModelInterface type definition
- Implement v-model:pivotModel two-way binding
- Add emit events for state changes with debounce optimization
- Add state history management (usePivotModelHistory)
- Add serialization/deserialization utilities
- Add props to state synchronization
- Update App.vue to demonstrate PivotModel binding
- Add comprehensive test cases and usage examples
- VPivottableUi 컴포넌트에 v-model:pivotModel 지원 추가
- 필터 변경사항이 즉시 PivotModel에 반영되도록 수정
- pivotModelsEqual 함수에 valueFilter 비교 로직 추가
- props 정의를 Partial<DefaultPropsType>로 변경하여 유연성 향상
- 디버그 로그 제거 및 코드 정리
- ESLint 오류 수정

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Add v-model:pivotModel support to VPivottableUi component
- Implement PivotModel interface and comprehensive type system
- Fix filter changes to immediately reflect in PivotModel
- Modify props to Partial<DefaultPropsType> for flexible pivotModel usage
- Add PivotModel utility functions (compare, create, clone)
- Add PivotModel history management composable (usePivotModelHistory)
- Add PivotModel serialization/deserialization utilities
- Fix ESLint duplicate key error by renaming imported aggregators
- Merge memory leak fixes from PR #285
- Add comprehensive documentation in English and Korean

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
@Seungwoo321 Seungwoo321 merged commit fc5e85f into develop Aug 6, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants