소스 정리

main
이범준 3 months ago
parent 04d62deb47
commit e9411747fa

@ -1,65 +1,103 @@
/**************************************************************************
* 엘리먼트 doctx탐지 이벤트 실행(실행 메소드이름 필수) class Detect {
**************************************************************************/
function detectElementEvent(){ static help(){
if(arguments.length < 1){ console.log("elementEvent(메소드명,메소드변수1,2,3,...) : "
console.log('메소드 이름은 필수 입니다.'); +"HTML요소의 doctx를 탐지하고, 문서 내의 DatasetControl인스턴스나 PageObject객체를 탐색하여 메소드명이 일치하는 메소드를 실행합니다.");
return;
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 methodName = arguments[0];
let sp = methodName.split("."); static helpStringForInference(str){
if(sp.length > 3){ return "HTML요소의 doctx를 탐지하고, 문서 내의 DatasetControl인스턴스나 PageObject객체를 탐색 한 후 "+str+"에 대한 메소드명을 추론하여 메소드를 실행합니다.";
console.log('depth가 너무 깁니다.');
return;
} }
var args = Array.prototype.slice.call(arguments); static elementEvent(){
args.shift(); if(arguments.length < 1){
console.log('메소드 이름은 필수 입니다.');
return;
}
let methodName = arguments[0];
let sp = methodName.split(".");
if(sp.length > 3){
console.log('depth가 너무 깁니다.');
return;
}
let element = event.target; var args = Array.prototype.slice.call(arguments);
args.shift();
let doctx; let element = event.target;
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를 키로 갖는 객체가 있으면 let doctx;
if((window.pageObject !== undefined) && (pageObject[doctx] !== undefined)){ if(element.hasAttribute("data-ref-doctx")){
let curPO = pageObject[doctx]; doctx = element.getAttribute("data-ref-doctx");
} else {
doctx = element.detectDoctx();
element.setAttribute("data-ref-doctx", doctx);
}
//STEP 1 : "pageObject전역객체.doctx명"에서 찾는다. //pageObject 전역객체가 있고, pageObject 내부에 doctx를 키로 갖는 객체가 있으면
if(sp.length == 1){ if((window.pageObject !== undefined) && (pageObject[doctx] !== undefined)){
if(curPO[methodName] !== undefined && curPO[methodName] instanceof Function){ let curPO = pageObject[doctx];
curPO[methodName].apply(curPO, args); //실행
return; //STEP 1 : "pageObject전역객체.doctx명"에서 찾는다.
} if(sp.length == 1){
} else if(sp.length == 2){ if(curPO[methodName] !== undefined && curPO[methodName] instanceof Function){
if(curPO[sp[0]] !== undefined curPO[methodName].apply(curPO, args); //실행
&& curPO[sp[0]][sp[1]] !== undefined return;
&& curPO[sp[0]][sp[1]] instanceof Function){ }
curPO[sp[0]][sp[1]].apply(curPO[sp[0]], args); //실행 } else if(sp.length == 2){
return; 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 //STEP 2 : "pageObject전역객체.doctx명.ctrl또는control"에서 찾는다.
&& curPO[sp[0]][sp[1]] !== undefined if(sp.length == 1){
&& curPO[sp[0]][sp[1]][sp[2]] !== undefined let findedCtrl = null;
&& curPO[sp[0]][sp[1]][sp[2]] instanceof Function){ if(curPO["ctrl"] !== undefined){
curPO[sp[0]][sp[1]][sp[2]].apply(curPO[sp[0]][sp[1]], args); //실행 findedCtrl = curPO["ctrl"];
return; } 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){ if(sp.length == 1){
let findedCtrl = null; let findedCtrl = null;
if(curPO["ctrl"] !== undefined){ for(var member in window){
findedCtrl = curPO["ctrl"]; if(window[member] instanceof DatasetControl){
} else if(curPO["control"] !== undefined){ if(window[member].doctx == "[data-doctx='"+doctx+"']"){
findedCtrl = curPO["control"]; findedCtrl = window[member];
}
}
} }
if(findedCtrl != null){ if(findedCtrl != null){
if(findedCtrl[methodName] !== undefined && findedCtrl[methodName] instanceof Function){ if(findedCtrl[methodName] !== undefined && findedCtrl[methodName] instanceof Function){
@ -68,176 +106,174 @@ function detectElementEvent(){
} }
} }
} }
}
//STEP 3 : doctx를 갖는 DatasetControl 전역객체에서 찾는다. console.log('메소드를 찾을 수 없습니다.');
if(sp.length == 1){ return;
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;
}
}
} }
console.log('메소드를 찾을 수 없습니다.'); /**************************************************************************
return; * 검색버튼 클릭 이벤트 탐지 실행
} **************************************************************************/
static listSearch(){
let inference = [
"Data_Open", //델파이(클린파킹)
"search", //DatasetControl
"searchList", "fnSearch", "fnSearchList"
];
/************************************************************************** var args = Array.prototype.slice.call(arguments);
* 검색버튼 클릭 이벤트 탐지 실행 Detect.byInference(inference, args);
**************************************************************************/ }
function detectListSearch(){
let inference = [
"Data_Open", //델파이(클린파킹)
"search", //DatasetControl
"searchList", "fnSearch", "fnSearchList"
];
var args = Array.prototype.slice.call(arguments);
detectByInference(inference, args);
}
/************************************************************************** /**************************************************************************
* 엑셀버튼 클릭 이벤트 탐지 실행 * 엑셀버튼 클릭 이벤트 탐지 실행
**************************************************************************/ **************************************************************************/
function detectExcelDown(){ static excelDown(){
let inference = [ let inference = [
"fnExcel", "fnExcelDown", "excelDown" "fnExcel", "fnExcelDown", "excelDown"
]; ];
var args = Array.prototype.slice.call(arguments); var args = Array.prototype.slice.call(arguments);
detectByInference(inference, args); Detect.byInference(inference, args);
} }
/************************************************************************** /**************************************************************************
* 초기화버튼 클릭 이벤트 탐지 실행 * 초기화버튼 클릭 이벤트 탐지 실행
**************************************************************************/ **************************************************************************/
function detectInit(){ static init(){
let inference = [ let inference = [
"fnInit", "fnReset" "fnInit", "fnReset"
]; ];
var args = Array.prototype.slice.call(arguments); var args = Array.prototype.slice.call(arguments);
detectByInference(inference, args); Detect.byInference(inference, args);
} }
/************************************************************************** /**************************************************************************
* 그리드 클릭 이벤트탐지 실행 * 그리드 클릭 이벤트탐지 실행
**************************************************************************/ **************************************************************************/
function detectGridClick(){ static gridClick(){
let inference = [ let inference = [
"setCurrent", //DatasetControl "setCurrent", //DatasetControl
"clickList", "fnClickList" "clickList", "fnClickList"
]; ];
var args = Array.prototype.slice.call(arguments); var args = Array.prototype.slice.call(arguments);
detectByInference(inference, args); Detect.byInference(inference, args);
} }
/************************************************************************** /**************************************************************************
* 그리드 더블클릭 이벤트탐지 실행 * 그리드 더블클릭 이벤트탐지 실행
**************************************************************************/ **************************************************************************/
function detectGridDoubleClick(){ static gridDoubleClick(){
let inference = [ let inference = [
"getInfo", //DatasetControl "getInfo", //DatasetControl
"dblclickList", "fnDblclickList" "dblclickList", "fnDblclickList"
]; ];
var args = Array.prototype.slice.call(arguments); var args = Array.prototype.slice.call(arguments);
detectByInference(inference, args); Detect.byInference(inference, args);
} }
/************************************************************************** /**************************************************************************
* 그리드 체크박스 체크 이벤트탐지 실행 * 그리드 체크박스 체크 이벤트탐지 실행
**************************************************************************/ **************************************************************************/
function detectGridCheck(){ static gridCheck(){
let inference = [ let inference = [
"select", //DatasetControl "select", //DatasetControl
"checkList", "fnCheckList" "checkList", "fnCheckList"
]; ];
var args = Array.prototype.slice.call(arguments); var args = Array.prototype.slice.call(arguments);
detectByInference(inference, args); Detect.byInference(inference, args);
} }
/************************************************************************** /**************************************************************************
* 정보 입력화면 호출 버튼 클릭 이벤트탐지 실행 * 정보 입력화면 호출 버튼 클릭 이벤트탐지 실행
**************************************************************************/ **************************************************************************/
function detectOpenNew(){ static openNew(){
let inference = [ let inference = [
"newInfo", "getInfo", //DatasetControl "newInfo", "getInfo", //DatasetControl
"fnCreate" "fnCreate"
]; ];
var args = Array.prototype.slice.call(arguments); var args = Array.prototype.slice.call(arguments);
detectByInference(inference, args); Detect.byInference(inference, args);
} }
/************************************************************************** /**************************************************************************
* 저장 버튼 클릭 이벤트탐지 실행 * 저장 버튼 클릭 이벤트탐지 실행
**************************************************************************/ **************************************************************************/
function detectSave(){ static save(){
let inference = [ let inference = [
"save", //DatasetControl "save", //DatasetControl
"fnSave" "fnSave"
]; ];
var args = Array.prototype.slice.call(arguments); var args = Array.prototype.slice.call(arguments);
detectByInference(inference, args); Detect.byInference(inference, args);
} }
/************************************************************************** /**************************************************************************
* 삭제 버튼 클릭 이벤트탐지 실행 * 삭제 버튼 클릭 이벤트탐지 실행
**************************************************************************/ **************************************************************************/
function detectRemove(){ static remove(){
let inference = [ let inference = [
"remove", //DatasetControl "remove", //DatasetControl
"fnDelete", "fnRemove" "fnDelete", "fnRemove"
]; ];
var args = Array.prototype.slice.call(arguments); var args = Array.prototype.slice.call(arguments);
detectByInference(inference, args); Detect.byInference(inference, args);
} }
/**************************************************************************
* 이벤트 추론
**************************************************************************/
static byInference(inference, args){
/************************************************************************** let element = event.target;
* 이벤트 추론
**************************************************************************/
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);
}
let doctx; //pageObject 전역객체가 있고, pageObject 내부에 doctx를 키로 갖는 객체가 있으면
if(element.hasAttribute("data-ref-doctx")){ if((window.pageObject !== undefined) && (pageObject[doctx] !== undefined)){
doctx = element.getAttribute("data-ref-doctx"); let curPO = pageObject[doctx];
} else {
doctx = element.detectDoctx();
element.setAttribute("data-ref-doctx", doctx);
}
//pageObject 전역객체가 있고, pageObject 내부에 doctx를 키로 갖는 객체가 있으면 //STEP 1 : "pageObject전역객체.doctx명"에서 찾는다.
if((window.pageObject !== undefined) && (pageObject[doctx] !== undefined)){ for(let keyword of inference){
let curPO = pageObject[doctx]; if(curPO.hasOwnProperty(keyword)){
if(curPO[keyword] instanceof Function){
curPO[keyword].apply(curPO, args);
return;
}
}
}
//STEP 1 : "pageObject전역객체.doctx명"에서 찾는다. //STEP 2 : "pageObject전역객체.doctx명.ctrl또는control"에서 찾는다.
for(let keyword of inference){ let findedCtrl = null;
if(curPO.hasOwnProperty(keyword)){ if(curPO["ctrl"] !== undefined){
if(curPO[keyword] instanceof Function){ findedCtrl = curPO["ctrl"];
curPO[keyword].apply(curPO, args); } else if(curPO["control"] !== undefined){
return; 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; let findedCtrl = null;
if(curPO["ctrl"] !== undefined){ for(var member in window){
findedCtrl = curPO["ctrl"]; if(window[member] instanceof DatasetControl){
} else if(curPO["control"] !== undefined){ if(window[member].doctx == "[data-doctx='"+doctx+"']"){
findedCtrl = curPO["control"]; findedCtrl = window[member];
}
}
} }
if(findedCtrl != null){ if(findedCtrl != null){
for(let keyword of inference){ for(let keyword of inference){
@ -247,26 +283,8 @@ function detectByInference(inference, args){
} }
} }
} }
}
//STEP 3 : doctx를 갖는 DatasetControl 전역객체에서 찾는다. console.log('메소드를 찾을 수 없습니다.');
let findedCtrl = null; return;
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;
} }

@ -163,6 +163,40 @@ $.fn.set = function(value) {
} }
const Apply = { 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 : { fromDataset : {
gridCheckbox : function(dataset, tbody, colIndex, checkedArr){ gridCheckbox : function(dataset, tbody, colIndex, checkedArr){
@ -243,41 +277,8 @@ const Apply = {
...data.byKeys ...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);
}
});
});
}
} }
}; };
//메뉴얼 다운로드 //메뉴얼 다운로드

Loading…
Cancel
Save