From e9411747fab3466ebe11fe16d071da5f8c7794e2 Mon Sep 17 00:00:00 2001 From: leebj Date: Tue, 20 Aug 2024 10:08:34 +0900 Subject: [PATCH] =?UTF-8?q?=EC=86=8C=EC=8A=A4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../webapp/resources/js/fims/cmmn/detect.js | 464 +++++++++--------- .../resources/js/fims/cmmn/fims-cmmnUtil.js | 69 +-- 2 files changed, 276 insertions(+), 257 deletions(-) diff --git a/src/main/webapp/resources/js/fims/cmmn/detect.js b/src/main/webapp/resources/js/fims/cmmn/detect.js index 87a0099f..51365f81 100644 --- a/src/main/webapp/resources/js/fims/cmmn/detect.js +++ b/src/main/webapp/resources/js/fims/cmmn/detect.js @@ -1,65 +1,103 @@ -/************************************************************************** -* 엘리먼트 doctx탐지 및 이벤트 실행(실행 메소드이름 필수) -**************************************************************************/ -function detectElementEvent(){ - if(arguments.length < 1){ - console.log('메소드 이름은 필수 입니다.'); - return; - } - let methodName = arguments[0]; - let sp = methodName.split("."); - if(sp.length > 3){ - console.log('depth가 너무 깁니다.'); - return; - } - - var args = Array.prototype.slice.call(arguments); - args.shift(); + +class Detect { - let element = event.target; + static help(){ + console.log("elementEvent(메소드명,메소드변수1,2,3,...) : " + +"HTML요소의 doctx를 탐지하고, 문서 내의 DatasetControl인스턴스나 PageObject객체를 탐색하여 메소드명이 일치하는 메소드를 실행합니다."); + + console.log("listSearch(메소드변수1,2,3,...) : " + Detect.helpStringForInference("검색버튼 클릭 이벤트")); + console.log("excelDown(메소드변수1,2,3,...) : " + Detect.helpStringForInference("엑셀다운로드버튼 클릭 이벤트")); + console.log("init(메소드변수1,2,3,...) : " + Detect.helpStringForInference("초기화버튼 클릭 이벤트")); + console.log("gridClick(메소드변수1,2,3,...) : " + Detect.helpStringForInference("그리드 클릭 이벤트")); + console.log("gridDoubleClick(메소드변수1,2,3,...) : " + Detect.helpStringForInference("그리드 더블클릭 이벤트")); + console.log("gridCheck(메소드변수1,2,3,...) : " + Detect.helpStringForInference("그리드 체크박스 체크 이벤트")); + console.log("openNew(메소드변수1,2,3,...) : " + Detect.helpStringForInference("새 정보 입력화면 호출 버튼 클릭 이벤트")); + console.log("save(메소드변수1,2,3,...) : " + Detect.helpStringForInference("저장 버튼 클릭 이벤트")); + console.log("remove(메소드변수1,2,3,...) : " + Detect.helpStringForInference("삭제 버튼 클릭 이벤트")); + } - let doctx; - if(element.hasAttribute("data-ref-doctx")){ - doctx = element.getAttribute("data-ref-doctx"); - } else { - doctx = element.detectDoctx(); - element.setAttribute("data-ref-doctx", doctx); + static helpStringForInference(str){ + return "HTML요소의 doctx를 탐지하고, 문서 내의 DatasetControl인스턴스나 PageObject객체를 탐색 한 후 "+str+"에 대한 메소드명을 추론하여 메소드를 실행합니다."; } - //pageObject 전역객체가 있고, pageObject 내부에 doctx를 키로 갖는 객체가 있으면 - if((window.pageObject !== undefined) && (pageObject[doctx] !== undefined)){ - let curPO = pageObject[doctx]; + static elementEvent(){ + if(arguments.length < 1){ + console.log('메소드 이름은 필수 입니다.'); + return; + } + let methodName = arguments[0]; + let sp = methodName.split("."); + if(sp.length > 3){ + console.log('depth가 너무 깁니다.'); + return; + } - //STEP 1 : "pageObject전역객체.doctx명"에서 찾는다. - if(sp.length == 1){ - if(curPO[methodName] !== undefined && curPO[methodName] instanceof Function){ - curPO[methodName].apply(curPO, args); //실행 - return; - } - } else if(sp.length == 2){ - if(curPO[sp[0]] !== undefined - && curPO[sp[0]][sp[1]] !== undefined - && curPO[sp[0]][sp[1]] instanceof Function){ - curPO[sp[0]][sp[1]].apply(curPO[sp[0]], args); //실행 - return; + var args = Array.prototype.slice.call(arguments); + args.shift(); + + let element = event.target; + + let doctx; + if(element.hasAttribute("data-ref-doctx")){ + doctx = element.getAttribute("data-ref-doctx"); + } else { + doctx = element.detectDoctx(); + element.setAttribute("data-ref-doctx", doctx); + } + + //pageObject 전역객체가 있고, pageObject 내부에 doctx를 키로 갖는 객체가 있으면 + if((window.pageObject !== undefined) && (pageObject[doctx] !== undefined)){ + let curPO = pageObject[doctx]; + + //STEP 1 : "pageObject전역객체.doctx명"에서 찾는다. + if(sp.length == 1){ + if(curPO[methodName] !== undefined && curPO[methodName] instanceof Function){ + curPO[methodName].apply(curPO, args); //실행 + return; + } + } else if(sp.length == 2){ + if(curPO[sp[0]] !== undefined + && curPO[sp[0]][sp[1]] !== undefined + && curPO[sp[0]][sp[1]] instanceof Function){ + curPO[sp[0]][sp[1]].apply(curPO[sp[0]], args); //실행 + return; + } + } else if(sp.length == 3){ + if(curPO[sp[0]] !== undefined + && curPO[sp[0]][sp[1]] !== undefined + && curPO[sp[0]][sp[1]][sp[2]] !== undefined + && curPO[sp[0]][sp[1]][sp[2]] instanceof Function){ + curPO[sp[0]][sp[1]][sp[2]].apply(curPO[sp[0]][sp[1]], args); //실행 + return; + } } - } else if(sp.length == 3){ - if(curPO[sp[0]] !== undefined - && curPO[sp[0]][sp[1]] !== undefined - && curPO[sp[0]][sp[1]][sp[2]] !== undefined - && curPO[sp[0]][sp[1]][sp[2]] instanceof Function){ - curPO[sp[0]][sp[1]][sp[2]].apply(curPO[sp[0]][sp[1]], args); //실행 - return; + + //STEP 2 : "pageObject전역객체.doctx명.ctrl또는control"에서 찾는다. + if(sp.length == 1){ + let findedCtrl = null; + if(curPO["ctrl"] !== undefined){ + findedCtrl = curPO["ctrl"]; + } else if(curPO["control"] !== undefined){ + findedCtrl = curPO["control"]; + } + if(findedCtrl != null){ + if(findedCtrl[methodName] !== undefined && findedCtrl[methodName] instanceof Function){ + findedCtrl[methodName].apply(findedCtrl, args); //실행 + return; + } + } } } - //STEP 2 : "pageObject전역객체.doctx명.ctrl또는control"에서 찾는다. + //STEP 3 : doctx를 갖는 DatasetControl 전역객체에서 찾는다. if(sp.length == 1){ let findedCtrl = null; - if(curPO["ctrl"] !== undefined){ - findedCtrl = curPO["ctrl"]; - } else if(curPO["control"] !== undefined){ - findedCtrl = curPO["control"]; + for(var member in window){ + if(window[member] instanceof DatasetControl){ + if(window[member].doctx == "[data-doctx='"+doctx+"']"){ + findedCtrl = window[member]; + } + } } if(findedCtrl != null){ if(findedCtrl[methodName] !== undefined && findedCtrl[methodName] instanceof Function){ @@ -68,176 +106,174 @@ function detectElementEvent(){ } } } + + console.log('메소드를 찾을 수 없습니다.'); + return; } - //STEP 3 : doctx를 갖는 DatasetControl 전역객체에서 찾는다. - if(sp.length == 1){ - let findedCtrl = null; - for(var member in window){ - if(window[member] instanceof DatasetControl){ - if(window[member].doctx == "[data-doctx='"+doctx+"']"){ - findedCtrl = window[member]; - } - } - } - if(findedCtrl != null){ - if(findedCtrl[methodName] !== undefined && findedCtrl[methodName] instanceof Function){ - findedCtrl[methodName].apply(findedCtrl, args); //실행 - return; - } - } + /************************************************************************** + * 검색버튼 클릭 이벤트 탐지 및 실행 + **************************************************************************/ + static listSearch(){ + let inference = [ + "Data_Open", //델파이(클린파킹) + "search", //DatasetControl + "searchList", "fnSearch", "fnSearchList" + ]; + + var args = Array.prototype.slice.call(arguments); + Detect.byInference(inference, args); } - console.log('메소드를 찾을 수 없습니다.'); - return; -} - - -/************************************************************************** -* 검색버튼 클릭 이벤트 탐지 및 실행 -**************************************************************************/ -function detectListSearch(){ - let inference = [ - "Data_Open", //델파이(클린파킹) - "search", //DatasetControl - "searchList", "fnSearch", "fnSearchList" - ]; - - var args = Array.prototype.slice.call(arguments); - detectByInference(inference, args); -} - -/************************************************************************** -* 엑셀버튼 클릭 이벤트 탐지 및 실행 -**************************************************************************/ -function detectExcelDown(){ - let inference = [ - "fnExcel", "fnExcelDown", "excelDown" - ]; - var args = Array.prototype.slice.call(arguments); - detectByInference(inference, args); -} - -/************************************************************************** -* 초기화버튼 클릭 이벤트 탐지 및 실행 -**************************************************************************/ -function detectInit(){ - let inference = [ - "fnInit", "fnReset" - ]; - var args = Array.prototype.slice.call(arguments); - detectByInference(inference, args); -} - -/************************************************************************** -* 그리드 클릭 이벤트탐지 및 실행 -**************************************************************************/ -function detectGridClick(){ - let inference = [ - "setCurrent", //DatasetControl - "clickList", "fnClickList" - ]; - var args = Array.prototype.slice.call(arguments); - detectByInference(inference, args); -} + /************************************************************************** + * 엑셀버튼 클릭 이벤트 탐지 및 실행 + **************************************************************************/ + static excelDown(){ + let inference = [ + "fnExcel", "fnExcelDown", "excelDown" + ]; + var args = Array.prototype.slice.call(arguments); + Detect.byInference(inference, args); + } -/************************************************************************** -* 그리드 더블클릭 이벤트탐지 및 실행 -**************************************************************************/ -function detectGridDoubleClick(){ - let inference = [ - "getInfo", //DatasetControl - "dblclickList", "fnDblclickList" - ]; - var args = Array.prototype.slice.call(arguments); - detectByInference(inference, args); -} + /************************************************************************** + * 초기화버튼 클릭 이벤트 탐지 및 실행 + **************************************************************************/ + static init(){ + let inference = [ + "fnInit", "fnReset" + ]; + var args = Array.prototype.slice.call(arguments); + Detect.byInference(inference, args); + } -/************************************************************************** -* 그리드 체크박스 체크 이벤트탐지 및 실행 -**************************************************************************/ -function detectGridCheck(){ - let inference = [ - "select", //DatasetControl - "checkList", "fnCheckList" - ]; - var args = Array.prototype.slice.call(arguments); - detectByInference(inference, args); -} + /************************************************************************** + * 그리드 클릭 이벤트탐지 및 실행 + **************************************************************************/ + static gridClick(){ + let inference = [ + "setCurrent", //DatasetControl + "clickList", "fnClickList" + ]; + var args = Array.prototype.slice.call(arguments); + Detect.byInference(inference, args); + } + /************************************************************************** + * 그리드 더블클릭 이벤트탐지 및 실행 + **************************************************************************/ + static gridDoubleClick(){ + let inference = [ + "getInfo", //DatasetControl + "dblclickList", "fnDblclickList" + ]; + var args = Array.prototype.slice.call(arguments); + Detect.byInference(inference, args); + } -/************************************************************************** -* 새 정보 입력화면 호출 버튼 클릭 이벤트탐지 및 실행 -**************************************************************************/ -function detectOpenNew(){ - let inference = [ - "newInfo", "getInfo", //DatasetControl - "fnCreate" - ]; - var args = Array.prototype.slice.call(arguments); - detectByInference(inference, args); -} + /************************************************************************** + * 그리드 체크박스 체크 이벤트탐지 및 실행 + **************************************************************************/ + static gridCheck(){ + let inference = [ + "select", //DatasetControl + "checkList", "fnCheckList" + ]; + var args = Array.prototype.slice.call(arguments); + Detect.byInference(inference, args); + } -/************************************************************************** -* 저장 버튼 클릭 이벤트탐지 및 실행 -**************************************************************************/ -function detectSave(){ - let inference = [ - "save", //DatasetControl - "fnSave" - ]; - var args = Array.prototype.slice.call(arguments); - detectByInference(inference, args); -} -/************************************************************************** -* 삭제 버튼 클릭 이벤트탐지 및 실행 -**************************************************************************/ -function detectRemove(){ - let inference = [ - "remove", //DatasetControl - "fnDelete", "fnRemove" - ]; - var args = Array.prototype.slice.call(arguments); - detectByInference(inference, args); -} + /************************************************************************** + * 새 정보 입력화면 호출 버튼 클릭 이벤트탐지 및 실행 + **************************************************************************/ + static openNew(){ + let inference = [ + "newInfo", "getInfo", //DatasetControl + "fnCreate" + ]; + var args = Array.prototype.slice.call(arguments); + Detect.byInference(inference, args); + } + /************************************************************************** + * 저장 버튼 클릭 이벤트탐지 및 실행 + **************************************************************************/ + static save(){ + let inference = [ + "save", //DatasetControl + "fnSave" + ]; + var args = Array.prototype.slice.call(arguments); + Detect.byInference(inference, args); + } -/************************************************************************** -* 이벤트 추론 -**************************************************************************/ -function detectByInference(inference, args){ - - let element = event.target; - - let doctx; - if(element.hasAttribute("data-ref-doctx")){ - doctx = element.getAttribute("data-ref-doctx"); - } else { - doctx = element.detectDoctx(); - element.setAttribute("data-ref-doctx", doctx); + /************************************************************************** + * 삭제 버튼 클릭 이벤트탐지 및 실행 + **************************************************************************/ + static remove(){ + let inference = [ + "remove", //DatasetControl + "fnDelete", "fnRemove" + ]; + var args = Array.prototype.slice.call(arguments); + Detect.byInference(inference, args); } - //pageObject 전역객체가 있고, pageObject 내부에 doctx를 키로 갖는 객체가 있으면 - if((window.pageObject !== undefined) && (pageObject[doctx] !== undefined)){ - let curPO = pageObject[doctx]; + /************************************************************************** + * 이벤트 추론 + **************************************************************************/ + static byInference(inference, args){ - //STEP 1 : "pageObject전역객체.doctx명"에서 찾는다. - for(let keyword of inference){ - if(curPO.hasOwnProperty(keyword)){ - if(curPO[keyword] instanceof Function){ - curPO[keyword].apply(curPO, args); - return; + let element = event.target; + + let doctx; + if(element.hasAttribute("data-ref-doctx")){ + doctx = element.getAttribute("data-ref-doctx"); + } else { + doctx = element.detectDoctx(); + element.setAttribute("data-ref-doctx", doctx); + } + + //pageObject 전역객체가 있고, pageObject 내부에 doctx를 키로 갖는 객체가 있으면 + if((window.pageObject !== undefined) && (pageObject[doctx] !== undefined)){ + let curPO = pageObject[doctx]; + + //STEP 1 : "pageObject전역객체.doctx명"에서 찾는다. + for(let keyword of inference){ + if(curPO.hasOwnProperty(keyword)){ + if(curPO[keyword] instanceof Function){ + curPO[keyword].apply(curPO, args); + return; + } + } + } + + //STEP 2 : "pageObject전역객체.doctx명.ctrl또는control"에서 찾는다. + let findedCtrl = null; + if(curPO["ctrl"] !== undefined){ + findedCtrl = curPO["ctrl"]; + } else if(curPO["control"] !== undefined){ + findedCtrl = curPO["control"]; + } + if(findedCtrl != null){ + for(let keyword of inference){ + if(findedCtrl[keyword] !== undefined && findedCtrl[keyword] instanceof Function){ + findedCtrl[keyword].apply(findedCtrl, args); + return; + } } } } - //STEP 2 : "pageObject전역객체.doctx명.ctrl또는control"에서 찾는다. + //STEP 3 : doctx를 갖는 DatasetControl 전역객체에서 찾는다. let findedCtrl = null; - if(curPO["ctrl"] !== undefined){ - findedCtrl = curPO["ctrl"]; - } else if(curPO["control"] !== undefined){ - findedCtrl = curPO["control"]; + for(var member in window){ + if(window[member] instanceof DatasetControl){ + if(window[member].doctx == "[data-doctx='"+doctx+"']"){ + findedCtrl = window[member]; + } + } } if(findedCtrl != null){ for(let keyword of inference){ @@ -247,26 +283,8 @@ function detectByInference(inference, args){ } } } + + console.log('메소드를 찾을 수 없습니다.'); + return; } - - //STEP 3 : doctx를 갖는 DatasetControl 전역객체에서 찾는다. - let findedCtrl = null; - for(var member in window){ - if(window[member] instanceof DatasetControl){ - if(window[member].doctx == "[data-doctx='"+doctx+"']"){ - findedCtrl = window[member]; - } - } - } - if(findedCtrl != null){ - for(let keyword of inference){ - if(findedCtrl[keyword] !== undefined && findedCtrl[keyword] instanceof Function){ - findedCtrl[keyword].apply(findedCtrl, args); - return; - } - } - } - - console.log('메소드를 찾을 수 없습니다.'); - return; -} +} \ No newline at end of file diff --git a/src/main/webapp/resources/js/fims/cmmn/fims-cmmnUtil.js b/src/main/webapp/resources/js/fims/cmmn/fims-cmmnUtil.js index b2ca5ffb..35a5eb80 100644 --- a/src/main/webapp/resources/js/fims/cmmn/fims-cmmnUtil.js +++ b/src/main/webapp/resources/js/fims/cmmn/fims-cmmnUtil.js @@ -163,6 +163,40 @@ $.fn.set = function(value) { } const Apply = { + fromDatasetControl : { + load : async function(control, pageNum){ + return new Promise((resolve, reject) => { + control.query.pageNum = pageNum; + if (!control.query.pageNum){ + control.query.pageNum = 1; + } + ajax.get({ + url:control.urls.load, + data:control.query, + success:(resp) => { + resolve(resp); + } + }); + }); + }, + reload : async function(control){ + return new Promise((resolve, reject) => { + var orgnQuery = Object.assign({}, control.query); + control.query.fetchSize = control.defaultFetchSize * control.query.pageNum; + control.query.pageNum = 1; + + ajax.get({ + url:control.urls.load, + data:control.query, + success:(resp) => { + control.query.pageNum = orgnQuery.pageNum; + control.query.fetchSize = orgnQuery.fetchSize; + resolve(resp); + } + }); + }); + } + }, fromDataset : { gridCheckbox : function(dataset, tbody, colIndex, checkedArr){ @@ -243,41 +277,8 @@ const Apply = { ...data.byKeys }; } - }, - fromDatasetControl : { - load : async function(control, pageNum){ - return new Promise((resolve, reject) => { - control.query.pageNum = pageNum; - if (!control.query.pageNum){ - control.query.pageNum = 1; - } - ajax.get({ - url:control.urls.load, - data:control.query, - success:(resp) => { - resolve(resp); - } - }); - }); - }, - reload : async function(control){ - return new Promise((resolve, reject) => { - var orgnQuery = Object.assign({}, control.query); - control.query.fetchSize = control.defaultFetchSize * control.query.pageNum; - control.query.pageNum = 1; - - ajax.get({ - url:control.urls.load, - data:control.query, - success:(resp) => { - control.query.pageNum = orgnQuery.pageNum; - control.query.fetchSize = orgnQuery.fetchSize; - resolve(resp); - } - }); - }); - } } + }; //메뉴얼 다운로드