You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

286 lines
8.1 KiB
JavaScript

/**
* 화면 초기 로딩
* @lastUpdate 2016.08.28
* @author InswaveSystems
* @since 2016.08.28
*/
scwin.initMainLoad = function() {
$p.top().scwin.commonCodeList = [];
wfm_side.getWindow().scwin.fn_getInitData();
//scwin.openMenu("메인","/cm/common/main.xml","MAIN");
};
/**
* TabControl의 모든 메뉴 닫기 버튼 이벤트
* @lastUpdate 2016.08.28
* @author InswaveSystems
* @since 2016.08.28
*/
scwin.btn_CloseAll_onclick = function() {
var cnt = tac_layout.getTabCount();
for (var i = cnt; i > 0; i--) {
tac_layout.deleteTab(i);
}
};
/**
* WindowContainer의 닫기 이벤트
* @lastUpdate 2016.08.28
* @param <String> windowTitle
* @author InswaveSystems
* @since 2016.08.28
* @example
*/
scwin.closeAction = function(windowTitle) {
if (windowTitle == "메인") {
return false;
}
return true;
};
/**
* 메뉴를 open할 때 관련된 기능들을 경우에 따라 처리해준다.
* @lastUpdate 2016.08.28
* @param <String> menuNm 메뉴 명
* @param <String> menuUrl 메뉴 URL
* @param <String> menuCode 메뉴 코드
* @param <String> skipType Tree Node 선택 여부 ("Tree" || null)
* @author InswaveSystems
* @since 2016.08.28
* @example
* scwin.setMenuRelation("인사조회", "/tmp/tmp01.xml", "010001");
* scwin.setMenuRelation("인사조회", "/tmp/tmp01.xml", "010001", "Tree");
*/
scwin.setMenuRelation = function(menuNm, menuUrl, menuCode, skipType) {
scwin.openMenu(menuNm, menuUrl, menuCode);
scwin.addHistory(menuNm, menuUrl, menuCode);
wfm_side.getWindow().gen_history.removeClass("hide");
scwin.historyResize();
//treeview에서 클릭한 경우는 find를 하지 않는다.
if (!skipType || skipType !== "Tree") {
wfm_side.getWindow().trv_menu.findNodeByValue(menuCode, true);
}
}
/**
* 파라메터를 참조하여 화면을 연다.
* 메뉴를 최근 작업 항목에 추가하거나 메뉴 트리를 선택하게 하려면 scwin.setMenuRelation를 사용한다.
* @lastUpdate 2018.04.10
* @param <String> menuNm 메뉴명 - 단위화면에서 해당 값으로 title을 설정한다.
* @param <String> url 화면 파일 경로
* @param <String> menuCode 메뉴코드 - DB에 저장되어있는 메뉴 코드
* @author InswaveSystems
* @since 2016.08.28
* @example
* scwin.openMenu("인사조회","/tmp/tmp01.xml","010001");
*/
scwin.openMenu = function(menuNm, url, menuCode, paramObj, menuType) {
// client에서 url 숨기기 메뉴일 경우에는 새 창으로 띄우기 적용
if (url == "/") {
var url = document.location.href + "/";
window.open(url, "", "width=1200, height=700, left=450, top=100");
} else {
menuCode = menuCode || "";
var layout = scwin.getLayoutId();
var tmpUrl;
var menuCodeParm = menuCode;
var frameMode; // "wframe", "iframe"
var favStatus;
var data;
if (url.indexOf("/") !== 0) {
url = "/" + url;
}
url = gcm.CONTEXT_PATH + url;
//즐겨찾기가 추가 여부 확인하여 flag 붙임.
if (scwin.hasFavCode(menuCode) == 0) {
favStatus = "F";
} else {
favStatus = "T";
}
if ((typeof paramObj !== "undefined") && (paramObj !== null)) {
data = paramObj;
} else {
data = {};
}
data.menuNm = menuNm;
data.menuCode = menuCode;
data.favStatus = favStatus;
data.menuType = menuType;
if (layout == "T") {
var tabObj = { closable : true, //탭 닫기 기능 제공
openAction : "select", // exist 는 기존 탭을 갱신, new 는 항상 새로, select는 동일 id 가 존재하면 선택, last: 기존 tab을 마지막 tab으로 이동후 선택
label : menuNm };
// TabControl에서 iframe와 wframe을 혼용해서 오픈하려고 하면 아래의 코드를 이용해서 동작시킨다.
/*
scwin.iframeMenuCd = ["010202", "030101", "030102", "030103", "030104", "030105", "030106", "030107", "030108"];
var frameMode = "wframePreload";
for (var i = 0; i < scwin.iframeMenuCd.length; i++) {
if (scwin.iframeMenuCd[i] == menuCode) {
frameMode = "iframe";
break;
}
}
*/
if (com.getFrameMode() === "wframe") {
frameMode = "wframePreload";
} else {
frameMode = "iframe";
}
var contObj = {
frameMode : frameMode,
scope : true,
src : url,
alwaysDraw : false,
title : menuNm,
dataObject : {
type : "json",
name : "param",
data : data
}
};
tac_layout.addTab(menuCode, tabObj, contObj);
// tabObj의 openAction의 last값의 동작 특이 사항으로 선택이 되지 않은 경우 선택하는 로직 추가
if (tac_layout.getSelectedTabID() !== menuCode) {
var tabIndex = tac_layout.getTabIndex(menuCode);
if (tabIndex) {
tac_layout.setSelectedTabIndex(tabIndex);
}
}
} else if (layout == "M") {
if (com.getFrameMode() === "wframe") {
frameMode = "wframe";
} else {
frameMode = "iframe";
}
var options = {
dataObject : {
type : "json",
name : "param",
data : data
}
}
wdc_main.createWindow(menuNm, null, url, menuNm, menuCode, "existWindow", null, null, null, null, frameMode);
}
}
};
/**
* header menu 생성
*/
scwin.setHeaderMenu = function() {
wfm_header.getWindow().scwin.setGenerator(); //메뉴 생성
wfm_header.getWindow().scwin.setMenuCss(); //메뉴 css 적용
}
scwin.getLayoutId = function() {
if (typeof $p.top().$p.getComponentById("tac_layout") === "object") {
return "T";
} else if (typeof $p.top().$p.getComponentById("wdc_main") === "object") {
return "M";
}
return null;
};
/**
* 즐겨찾기 리스트에서 menuCode가 추가되어있는지 확인후 개수 반환.
* 없으면 == 0, 있으면 > 0
* @lastUpdate 2016.08.24
* @param <String> menuCode
* @returns <int> 존재 개수
* @author InswaveSystems
* @since 2016.08.24
* @example
* case 1. scwin.hasFavCode("030001"); return : 0 <br/>
* case 2. scwin.hasFavCode("030001"); return : 1
*/
scwin.hasFavCode = function(menuCode) {
return (wfm_side.getWindow().dlt_fav.getMatchedIndex("MENU_CD", menuCode, true)).length;
}
/**
* 최근 작업내용을 추가한다.
*
* @date 2016.07.19
* @param 메뉴 명
* @example
* scwin.addHistory(label);
*/
scwin.addHistory = function(menuNm, url, menuCode) {
// 맨 마지막에 열린 화면과 동일한 화면을 다시 오픈하는 경우에는 최근작업목록에 저장하지 않도록 반환한다.
if (wfm_side.getWindow().gen_history.getLength() >= 1) {
var lastMenuCode = wfm_side.getWindow().gen_history.getChild(0, "btn_History").getUserData("tmpMenuInfo").split("|")[0];
if (menuCode === lastMenuCode) {
return;
}
}
wfm_side.getWindow().gen_history.insertChild(0);
var curObj = wfm_side.getWindow().gen_history.getChild(0, "btn_History");
var tmpHH = $p.getFormattedDate(new Date(), "yyyy-MM-dd HH:mm");
curObj.setValue(menuNm);
curObj.setTitle("[" + tmpHH + "] " + menuNm);
curObj.setUserData("tmpMenuInfo", menuCode + "|" + url);
};
scwin.historyResize = function() {
var listHeight = wfm_side.getWindow().gen_history.getSize("height");
var swhInBoxId = wfm_side.getWindow().swh_lnbbox.getID();
$("#" + swhInBoxId + " .w2switch_case").animate({ "bottom" : listHeight + 44 }, 700);
$(".box_history").animate({ "height" : listHeight + 24 }, 700);
}
scwin.getMenuNavigation = function(menuCode, rsStr) {
var naviStr;
if (rsStr) {
naviStr = rsStr;
} else {
naviStr = "";
}
var menuJSON = wfm_side.getWindow().dlt_menu.getMatchedJSON("MENU_CD", menuCode, true)[0];
naviStr += menuJSON.MENU_NM + "%|%" + menuCode + "%|%";
if (menuJSON) {
if (menuJSON.PARENT_MENU_CD != "000000000") {
return this.getMenuNavigation(menuJSON.PARENT_MENU_CD, naviStr);
}
}
return naviStr;
};
scwin.setResultMessage = function(resultData) {
if (typeof wfm_footer !== "undefined") {
var messageObj = wfm_footer.getWindow().spn_message;
var curCode = messageObj.getUserData("tmpStatusCode");
if (curCode) {
messageObj.removeClass(curCode);
}
if (resultData.statusCode) {
messageObj.addClass(resultData.statusCode);
}
messageObj.setUserData("tmpStatusCode", resultData.statusCode);
messageObj.setValue(resultData.message);
wfm_footer.getWindow().grp_message.setUserData("message", resultData);
wfm_footer.getWindow().scwin.spn_message_onclick();
}
}