소스 정리

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

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

@ -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