소스 정리

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

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

@ -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);
}
});
});
}
}
};
//메뉴얼 다운로드

Loading…
Cancel
Save