목차

Data Grid

유용한 DataGrid들

SlickGrid - Old SlickGrid SlickGrid Homepage angular datatable ExcelJS Js-Xlsx Canvas-DataGrid

axui-datagrid

출처 : React datagrid component제작기 (with ES6,TypeScript,React)

https://github.com/jsdevkr/datagrid

필수기능

사용자가 데이터 그리드를 통해 얻고자하는 경험이 결국 '엑셀'과 비슷하므로 데이터그리드는 상당히 많은 기능을 제고하고 있다. 그 기능이 워낙 방대해서 딱히 표준은 없지만 최소 다음 10가지 정도의 기능을 만족해야 DataGrid로서 가치가 있다고 생각한다.

사람들은 MS사의 엑셀에 매우 익숙해져 있고 이와 비슷한 경험을 웹에서 하고 싶어 하므로 빠른 로딩, 부드러운 스크롤링, 풍부한 기능을 모두 담으면서도 동시에 컴포넌트를 사용하는 개발자들이 쉽고 간편하게 사용할 수 있도록 인터페이스를 설계해야 한다. 따라서 요구사항 수집 및 분석, 설계단계에서부터 많은 고민을 시작할 수 밖에 없다.

DOM 엘리먼트 구조설계

처음

설계1단계

두번째

설계2단계

Scroll-container와 scroll

scroll-container와 scroll

scrollTop(ST)와 scrollBarTop(BT)

scrollTop(ST)와 scrollBarTop(BT) scrollTop(ST)와 scrollBarTop(BT)를 구하기 위해서는 약간의 수학지식이 필요하다. scrollContainerHeight(SCH), scrollHeight(SH)와 scrollBarContainerHeight(BCH), scrollBarHeight(BH)의 비율이 ST와 BT의 비율과 동일하다는 원리를 이용하면 된다.

ST : SH - SCH = BT : BH - BCH
BT = ST * (BH - BCH) / (SH - SCH)
ST = (SH - SCH) * BT / (BH - BCH)
 

프로젝트폴더구성

프로젝트 루트 폴더의 구성
src 컴포넌트 소스 폴더
dev 테스트와 샘플사이트 개발용 폴더
dist npm배포를 위한 폴더
docs axui-datagrid.axisj.com서비스를 위한 폴더
src 컴포넌트 소스 폴더
@types
assets
axui-datagrid
components
examples
pages
routes
styles