core_ez-foundation-config.jsdoc.js

/**
 * EzFoundation 유틸리티 함수에 대한 전역 설정 객체
 *
 * @typedef EzFoundationConfig
 * @property {string} [hCmbYySqlId]
 * 연도 조회 쿼리 아이디
 * @property {string} [hCmbSmrSqlId]
 * 학기 조회 쿼리 아이디
 * @property {string} [hCmbOrgSqlId]
 * 학과 조회 쿼리 아이디
 * @property {string} [hCmbMngtDpmjSqlId]
 * 관리학과 조회 쿼리 아이디
 * @property {HCmbSmrAliasConfig[]} [hCmbSmrAlias]
 * 학사 콤보의 커스텀 학기 타입을 정의할 수 있습니다.
 * @property {HCmbSmrTypeConfig[]} [hCmbSmrType]
 * 학사 콤보의 학기 타입 (특정 학기반 보여주는 필터링)
 * @property {HCmbTargetComponentName} [hCmbTargetComponentName]
 * 학사콤보 대상 컴포넌트의 정규식
 * @property {HCmbSmrOffsetRule[]} [hCmbSmrOffsetRule]
 * 학사 콤보의 학기 오프셋 규칙을 정의할 수 있습니다.
 * @example
 * // f_config.xjs
 * nexacro.EzFoundation.hCmbYySqlId = hCmb.s01;
 * nexacro.EzFoundation.hCmbSmrSqlId = hCmb.s02;
 * nexacro.EzFoundation.hCmbOrgSqlId = hCmb.s03;
 * nexacro.EzFoundation.hCmbSmrAlias = [
 *     {
 *         id: "custom",
 *         aliases: [
 *             {
 *                 smrCd: "12340010",
 *                 smrNm: "전기",
 *             },
 *             {
 *                 smrCd: "12340020",
 *                 smrNm: "후기",
 *             },
 *         ],
 *         condition: (context) => {
 *             return true;
 *         },
 *     },
 * ];
 * nexacro.EzFoundation.hCmbSmrType = [
 *     {
 *         // 정규 학기
 *         id: "R",
 *         condition: (ctx) =>
 *             ctx.component.id === "cmb_grduSmr" ||
 *             ctx.gridBindColId === "GRDU_SMR",
 *         filter: (ctx) => ctx.rowData["SUPLMT_INFO_3"] === "1",
 *     },
 *     {
 *         // 계절 학기
 *         id: "S",
 *         condition: (ctx) => false,
 *         filter: (ctx) => ctx.rowData["SUPLMT_INFO_4"] === "1",
 *     },
 * ];
 * nexacro.EzFoundation.hCmbTargetComponentName = {
 *     yyCompNm: /^spn_(?:grdu)?[yY]y$/,
 *     smrCompNm: /^cmb_(?:grdu)?[sS]mr$/,
 *     fcltCompNm: /^cmb_fcltDvcd$/,
 *     univCompNm: /^cmb_univCd$/,
 *     dpmjCompNm: /^cmb_dpmjCd$/,
 *     majrCompNm: /^cmb_majrCd$/,
 *     detMajrCompNm: /^cmb_detMajrCd$/,
 *     smrColNm: ["SMR", "GRDU_SMR"],
 *     fcltColNm: "FCLT_DVCD",
 *     univColNm: "UNIV_CD",
 *     dpmjColNm: "DPMJ_CD",
 *     majrColNm: "MAJR_CD",
 *     detMajrColNm: "DET_MAJR_CD",
 * };
 * nexacro.EzFoundation.hCmbSmrOffsetRule = [
 *     {
 *         condition: (ctx) => true,
 *         offset: 1,
 *     },
 * ];
 *
 */

/**
 * 학기 별칭을 지정하기 위한 설정 객체
 *
 * @typedef HCmbSmrAliasConfig
 * @property {string} id
 * 학기 타입을 구분하고자 하는 코드
 * @property {HCmbSmrAliasItem[]} aliases
 * 학기 별칭 목록
 * @property {HCmbSmrConditionFunc} condition
 * 자동 선택 시 판별 함수
 */

/**
 * 학기 별칭 목록
 *
 * @typedef HCmbSmrAliasItem
 * @property {string} smrCd
 * @property {string} smrNm
 */

/**
 * 학기 판별용 함수
 *
 * @callback HCmbSmrConditionFunc
 * @param {Object} context
 * 판별 참조용 데이터
 * @param {nexacro.Form} context.form
 * 학사 콤보가 호출된 폼 객체
 * @param {nexacro.Component} context.component
 * 학기 콤보 컴포넌트
 * @param {boolean} context.isGrid
 * 그리드 여부
 * @param {boolean} context.isCombo
 * 콤보 여부
 * @param {string} context.gridBindColId
 * 대상이 그리드일 경우 학기에 바인딩된 컬럼명
 * @returns {boolean}
 * 판별 결과, true 값 일 시 해당 별칭을 사용함.
 */

/**
 * @typedef HCmbSmrTypeConfig
 * @param {string} id
 * 설정 아이디
 * @param {string | HCmbSmrFailValueFunc} [failValue]
 * 기준 연도/학기와 일치하는 값이 없을 시 선택할 값
 * @param {RemoveRowsByCondtionFunc} filter
 * 행 별 필터 함수
 * @param {HCmbSmrConditionFunc} condition
 * 자동 판별 함수
 */

/**
 * @callback HCmbSmrFailValueFunc
 * @param {Object} context
 * @param {string} context.baseSmr  기준 학기
 */

/**
 * 학사 콤보의 컴포넌트 판별 정규식, 해당 정규식을 만족하는 컴포넌트를 대상으로 선택한다.
 *
 * @typedef HCmbTargetComponentName
 * @property {RegExp} [yyCompNm=/^spn_(?:grdu)?[yY]y$/]
 * 연도 컴포넌트의 명칭 정규식.
 * @property {RegExp} [smrCompNm=/^cmb_(?:grdu)?[sS]mr$/]
 * 학기 컴포넌트의 명칭 정규식.
 * @property {RegExp} [fcltCompNm=/^cmb_fcltDvcd$/]
 * 학부/대학원 구분 컴포넌트의 명칭 정규식.
 * @property {RegExp} [univCompNm=/^cmb_univCd$/]
 * 대학 컴포넌트의 명칭 정규식
 * @property {RegExp} [dpmjCompNm=/^cmb_dpmjCd$/]
 * 학과 컴포넌트의 명칭 정규식
 * @property {RegExp} [majrCompNm=/^cmb_majrCd$/]
 * 전공 컴포넌트의 명칭 정규식
 * @property {RegExp} [detMajrCompNm=/^cmb_detMajrCd$/]
 * 세부 전공 컬럼 명칭
 * @property {string | string[]} [smrColNm=["SMR", "GRDU_SMR"]]
 * 학기 그리드 컬럼 명칭 정규식.
 * @property {string} [fcltGridColNm=FCLT_DVCD]
 * 학부/대학원 구분 그리드 컬럼 명칭
 * @property {string} [univColNm=UNIV_CD]
 * 대학 그리드 컬럼 명칭
 * @property {string} [dpmjColNm=DPMJ_CD]
 * 학과 그리드 컬럼 명칭
 * @property {string} [majrColNm=MAJR_CD]
 * 전공 그리드 컬럼 명칭
 * @property {string} [detMajrColNm=DET_MAJR_CD]
 * 세부 전공 그리드 컬럼 명칭
 */

/**
 * @callback HCmbSmrOffsetRuleConditionFunc
 * @param {Object} context
 * @param {nexacro.Form} context.form
 */

/**
 * @typedef HCmbSmrOffsetRule
 * @property {HCmbSmrOffsetRuleConditionFunc} condition
 * 학기 오프셋 조건
 * @property {number} offset
 * 학기 오프셋 값
 */