utils_dataset_for-each-dataset.js

import { getRowData } from "../../adapters/ezworks/com-api/ds";

/**
 * @callback ForEachDatasetCallback
 * @param {Object}          context          콜백 참조용 데이터
 * @param {nexacro.Dataset} context.dataset  넥사크로 데이터셋 객체
 * @param {number}          context.row      행 번호
 * @param {Object}          context.rowData  row 오브젝트
 */

/**
 * 제공된 데이터셋의 각 행을 순회하며 행 데이터로 콜백 함수를 실행합니다.
 *
 * @function forEachDataset
 * @param {nexacro.NormalDataset}  dataset   - 넥사크로 데이터셋
 * @param {ForEachDatasetCallback} callback  - 각 행마다 실행할 함수입니다. 데이터셋, 현재 행 인덱스,
 *                                           현재 행의 데이터가 담긴
 *                                           객체를 받습니다.
 * @returns {void} 이 메서드는 값을 반환하지 않습니다.
 * @access public
 * @memberof $f
 * @example
 * // Dataset의 각 행을 순회하며 name 컬럼의 값을 콘솔에 출력
 * $f.forEachDataset(this.ds_user, ({ rowData }) => {
 *     trace(rowData["NAME"]);
 * });
 *
 */
export function forEachDataset(dataset, callback) {
    for (let i = 0; i < dataset.rowcount; i++) {
        const rowData = getRowData(dataset, i);
        callback({
            dataset,
            row: i,
            rowData,
        });
    }
}

/**
 * @function datasetForEach
 * @deprecated ForEachDataset을 사용하세요.
 * @see ForEachDataset.
 */
export const datasetForEach = forEachDataset;