wooritech/리얼그리드

리얼그리드 기반의 Jira 스타일 이슈트래커 개발하기(with 리엑트) : 2. 데이터 관리 및 기본 기능 구현

코딩쉐프 2024. 11. 15. 00:37
728x90

이 섹션에서는 RealGrid를 활용해 이슈 데이터 관리 및 기본 기능을 구현합니다. 데이터 바인딩, 필터링, 정렬, 페이지네이션 기능을 다루며, 이슈 속성에 따라 상태와 우선순위를 관리하는 방법을 포함합니다.


1. RealGrid 데이터 바인딩: 이슈 생성 및 수정

설명:

  • 데이터 바인딩: 데이터를 실시간으로 그리드에 연결하여 표시합니다.
  • 이슈 생성/수정: 사용자가 새로운 이슈를 추가하거나 기존 이슈를 편집할 수 있도록 구성합니다.

예제 코드:

import * as React from "react";
import { useRef } from "react";
import { RGDataField, RGDataColumn, RealGridReact } from "realgrid-react";

const IssueTrackerGrid: React.FC = () => {
    const gridRef = useRef<RealGridReact>(null);

    const rows = [
        { id: 1, title: "API 오류 수정", status: "Open", priority: "High", assignee: "김철수" },
        { id: 2, title: "UI 개선", status: "In Progress", priority: "Medium", assignee: "박영희" },
        { id: 3, title: "문서 업데이트", status: "Closed", priority: "Low", assignee: "이영호" },
    ];

    return (
        <div style={{ width: "100%", height: "550px" }}>
            <RealGridReact ref={gridRef} rows={rows}>
                <RGDataField fieldName="id" dataType="number" />
                <RGDataField fieldName="title" dataType="text" />
                <RGDataField fieldName="status" dataType="text" />
                <RGDataField fieldName="priority" dataType="text" />
                <RGDataField fieldName="assignee" dataType="text" />

                <RGDataColumn name="id" fieldName="id" headerText="ID" width={50} />
                <RGDataColumn name="title" fieldName="title" headerText="제목" width={200} />
                <RGDataColumn name="status" fieldName="status" headerText="상태" width={100} />
                <RGDataColumn name="priority" fieldName="priority" headerText="우선순위" width={100} />
                <RGDataColumn name="assignee" fieldName="assignee" headerText="담당자" width={150} />
            </RealGridReact>
        </div>
    );
};

export default IssueTrackerGrid;

2. 필터링, 정렬, 페이지네이션 기능

설명:

  • 필터링: 사용자가 조건을 선택해 데이터 탐색을 간소화합니다.
  • 정렬: 컬럼별 정렬을 지원하며, 우선순위나 상태 기준으로 데이터를 정렬합니다.
  • 페이지네이션: 대량 데이터를 효율적으로 표시합니다.

필터링 예제:

 
<RGDataColumn 
    name="priority" 
    fieldName="priority" 
    headerText="우선순위" 
    width={100} 
    filterable={true} 
/>

정렬 예제:

 
<RGDataColumn 
    name="status" 
    fieldName="status" 
    headerText="상태" 
    width={100} 
    sortable={true} 
/>

페이지네이션 설정:

import * as RealGrid from "realgrid";
const paginationOptions = {
    usePaging: true,
    pageSize: 10,
};
gridRef.current?.setPagingOptions(paginationOptions);

3. 이슈 속성별 상태 및 우선순위 관리

설명:

  • 상태와 우선순위에 따라 데이터를 시각적으로 구분합니다.
  • 각 상태/우선순위에 색상이나 스타일을 적용하여 가독성을 향상시킵니다.

스타일링 예제:

<RGDataColumn 
    name="priority" 
    fieldName="priority" 
    headerText="우선순위" 
    width={100}
    styles={{
        cellStyleFunction: (data) => {
            if (data.value === "High") return { backgroundColor: "red", color: "white" };
            if (data.value === "Medium") return { backgroundColor: "orange", color: "black" };
            return { backgroundColor: "green", color: "white" };
        },
    }} 
/>

팁 및 권장 사항:

  1. 데이터 검증: rows 데이터를 바인딩하기 전 필드 이름과 데이터 타입을 정확히 맞춰야 합니다.
  2. 성능 최적화: 페이지네이션을 활성화하거나 비동기 데이터 로드를 사용하여 대량 데이터 처리 성능을 개선하세요.
  3. 오류 처리: 필터링이나 정렬이 적용되지 않을 경우, 데이터 필드 설정 및 컬럼 속성을 점검하세요.

참고 자료:

이 코드와 설명을 기반으로 이슈 트래커의 데이터 관리와 기본 기능을 쉽게 구현할 수 있습니다.

728x90