utils_ezworks_revalidate-all-row.js

/**
 * @typedef {Object} RevalidateAllRowOptions
 * @property {boolean} [onlyUpdateRow=false]
 */

/**
 * EzValidator의 데이터셋 유효성 검사를 초기화합니다.
 * 모든 행에 대해 oncolumnchanged 이벤트를 발생시켜 유효성 검사를 다시 수행합니다.
 *
 * @function revalidateAllRow
 * @param {Object} validator
 * EzValidator 인스턴스
 * @param {RevalidateAllRowOptions} options
 * @returns {boolean}
 * 초기화 성공 여부. validator가 없거나 dataset이 없으면 false를 반환합니다.
 * @memberof $f
 * @example
 * $f.revalidateAllRow(this.mainValidator);
 *
 * // 수정된 행만 재검증
 * $f.revalidateAllRow(this.mainValidator, { onlyUpdateRow: true });
 *
 */
export function revalidateAllRow(validator, options = {}) {
    const { onlyUpdateRow = false } = options;
    if (!validator || !validator.dataset) {
        return false;
    }

    /**
     * @type {nexacro.Dataset}
     */
    const ds = validator.dataset;

    // 행을 돌면서 초기화
    for (let i = 0; i < ds.rowcount; i++) {
        if (onlyUpdateRow && ds.getRowType(i) === 1) {
            continue;
        }
        validator.oncolumnchanged(ds, { row: i });
    }

    return true;
}