forEach를 활용한 여러 데이터 한번에 다운로드 받기(w/ downloadAfterSubmit)

다중 선택 데이터 다운로드 가이드

목적

테이블에서 선택한 여러 행의 데이터를 개별 파일로 다운로드하는 방법 안내

예제 YAML

menus:
- path: pages/library
  name: 도서관 대출 현황
pages:
- path: pages/library
  title: 도서관 대출 현황
  subtitle: 학과별 도서 대출 현황 및 상세 내역
  blocks:
    - type: query
      resource: sqlWith
      sqlWith:
      - name: departmentList
        resource: sampledb
        query: >
          SELECT deptName
          FROM libraryDepartment
          WHERE isActive = 1
            AND isDeleted = 0
      - name: borrowCount  
        resource: sampledb
        query: >
          SELECT deptName, borrowId
          FROM libraryBorrow
          WHERE isDeleted = 0
            AND status = '대출중'
      sqlType: select
      sql: >
        SELECT departmentList.deptName AS `학과명`
            , COUNT(borrowCount.borrowId) AS `대출 도서 수`
        FROM departmentList, borrowCount
        WHERE departmentList.deptName = borrowCount.deptName
        GROUP BY departmentList.deptName
      selectOptions: 
        enabled: true
      showDownload: false
      actions:
      - label: 대출내역 다운로드
        button:
          type: success
        placement: right top
        single: false
        type: query
        resource: sampledb
        sqlType: select
        sql: >
          SELECT borrowDate AS `대출일`
              , deptName AS `학과명`
              , status AS `상태`
              , borrowId AS `대출번호`
              , bookId AS `도서ID`
              , isbn AS `ISBN`
              , bookTitle AS `도서명`
              , author AS `저자`
              , publisher AS `출판사`
              , studentId AS `학번`
              , studentName AS `학생명`
              , studentContact AS `연락처`
              , dueDate AS `반납예정일`
              , returnDate AS `반납일`
              , overdueDays AS `연체일수`
              , fineAmount AS `연체료`
          FROM libraryBorrow
          WHERE deptName = :deptName
            AND isDeleted = 0
            AND status = '대출중'
        params:
        - key: deptName
          valueFromSelectedRows: 학과명
          hidden: true
        downloadAfterSubmit: true
        responseFn: |
          console.log(rows)
        forEach: true
        filename: "도서대출현황_{{deptName}}"

핵심 기능 설명

1. 다중 선택 설정

selectOptions:
  enabled: true  # 행 선택 활성화

2. forEach 다운로드 및 파일명 설정

forEach: true  # 선택된 각 행마다 개별 처리
downloadAfterSubmit: true  # 처리 후 자동 다운로드
filename: "도서대출현황_{{deptName}}"  # 동적 파일명

3. 파라미터 매핑

params:
- key: deptName  # SQL 쿼리의 파라미터
  valueFromSelectedRows: 학과명  # 선택된 행의 '학과명' 컬럼값

동작 방식

  1. 사용자가 테이블에서 여러 행 선택
  2. 다운로드 버튼 클릭
  3. 선택된 각 행에 대해:
    • SQL 쿼리 실행
    • 결과를 개별 파일로 다운로드
    • 파일명에 선택된 행의 값 포함

이를 통해 여러 조건의 데이터를 한 번의 클릭으로 개별 파일로 다운로드할 수 있습니다.

관련하여 도움이 필요하신 경우 문의주시기 바랍니다.
감사합니다.