123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373 |
- /**********************************************************************************
- * modular_ibsheet7.js
- *
- * Udapsoft Modular 프레임워크와 IBSheet7간 연계를 위한 부분이 포함되어 있는 스크립트 파일
- * 시스템별로 통신방식 확장,전처리,후처리등 공통 기능 추가를 위해 이 파일을 기반으로 확장할수 있다.
- *
- * @author 김선엽(sunyoupk@udapsoft.co.kr)
- **********************************************************************************/
- Modular.view.IBSheet7 = function () {
- };
- Modular.view.IBSheet7.Constants = {
- //Request Param Key : Client Type
- CLIENT_TYPE : "modular.web.clientType",
-
- //Request Param Key : IBSheet Command Type (search or save)
- COMMAND_TYPE : "modular.web.ibsheet7.command",
-
- //Request Param Key : IBSheet Id
- SHEET_ID : "modular.web.ibsheet7.id",
- //Request Param Key : IBSheet 레코드 컬럼 순서
- RECORD_SET_COLUMNS : "modular.web.ibsheet7.columns",
-
- //Request Param Key : IBSheet 확장 프로퍼티
- EXTEND_PROPS : "modular.web.ibsheet7.extend",
-
- //Request Param Key : 현재 페이지 정보
- CURRENT_PAGE : "modular.condition.currentPage",
-
- //Request Param Key : 페이지당 건수 사이즈
- VOLUME_PER_PAGE : "modular.condition.volumePerPage",
- //MultiSheet Param 구분자
- MULTI_SHEET_PARAM_SEP : "^"
- };
- /**
- * IBSheet7 데이터를 조회하는 함수
- *
- * @param sheet sheet 객체
- * @param url 로직을 처리하기위한 서버 URL
- * @param form 파라미터들을 가지고 있는 form 객체
- * @param onePageRow 페이지당 데이터 건수
- * @param extendProperties 확장 파라미터 문자열(ex. key1=value1,key2=value2...)
- */
- Modular.view.IBSheet7.doSearch = function (sheet, url, form, onePageRow, extendProperties) {
- var params = {};
- //Modular 연계용 필수 파라미터 설정
- params[Modular.view.IBSheet7.Constants.CLIENT_TYPE] = "IBSHEET7";
- params[Modular.view.IBSheet7.Constants.COMMAND_TYPE] = "search";
- params[Modular.view.IBSheet7.Constants.SHEET_ID] = sheet.id;
-
- //Modular 연계용 컬럼 바인드 변수 설정
- var columnOrder = Modular.view.IBSheet7.getColumnStr(sheet);
- params[Modular.view.IBSheet7.Constants.RECORD_SET_COLUMNS] = columnOrder;
-
- params[Modular.view.IBSheet7.Constants.CURRENT_PAGE] = 1;
- params[Modular.view.IBSheet7.Constants.VOLUME_PER_PAGE] = onePageRow;
-
- //Modular 연계용 확장 파라미터 설정
- if(extendProperties) {
- params[Modular.view.IBSheet7.Constants.EXTEND_PROPS] = extendProperties;
- }
-
- if(form) {
- Modular.view.Form.bindSearchParameters(form);
- jQuery(form).find(":input").each(function () {
- var target = jQuery(this);
- if (target.attr("name")) {
- params[target.attr("name")] = target.val();
- }
- });
- }
- params = jQuery.param(params);
-
- sheet.Redraw = false;
- sheet.DoSearch(url, params);
-
- // var sXml = sheet.GetSearchData(url, params);
- // alert(sXml);
- // sheet.LoadSearchData(sXml);
-
- sheet.Redraw = true;
- };
- /**
- * IBSheet7 데이터를 조회하는 함수
- *
- * @param sheet sheet 객체
- * @param url 로직을 처리하기위한 서버 URL
- * @param form 파라미터들을 가지고 있는 form 객체
- * @param onePageRow 페이지당 데이터 건수
- * @param extendProperties 확장 파라미터 문Modular자열(ex. key1=value1,key2=value2...)
- */
- Modular.view.IBSheet7.doSearchPaging = function (sheet, url, form, onePageRow, extendProperties) {
- var isAppend = false; //스크롤 페이징의 경우 데이터가 계속 append된다.
-
- var params = {};
- //Modular 연계용 필수 파라미터 설정
- params[Modular.view.IBSheet7.Constants.CLIENT_TYPE] = "IBSHEET7";
- params[Modular.view.IBSheet7.Constants.COMMAND_TYPE] = "search";
- params[Modular.view.IBSheet7.Constants.SHEET_ID] = sheet.id;
-
- //Modular 연계용 컬럼 바인드 변수 설정
- var columnOrder = Modular.view.IBSheet7.getColumnStr(sheet);
- params[Modular.view.IBSheet7.Constants.RECORD_SET_COLUMNS] = columnOrder;
-
- params[Modular.view.IBSheet7.Constants.VOLUME_PER_PAGE] = onePageRow;
-
- //Modular 연계용 확장 파라미터 설정
- if(extendProperties) {
- params[Modular.view.IBSheet7.Constants.EXTEND_PROPS] = extendProperties;
- }
-
- if(form) {
- Modular.view.Form.bindSearchParameters(form);
- jQuery(form).find(":input").each(function () {
- var target = jQuery(this);
- if (target.attr("name")) {
- params[target.attr("name")] = target.val();
- }
- });
- }
-
- params = jQuery.param(params);
-
- var info = {"PageParam":Modular.view.IBSheet7.Constants.CURRENT_PAGE,"Param":params};
-
- sheet.Redraw = false;
- sheet.DoSearchPaging(url, info);
- sheet.Redraw = true;
- };
- /**
- * 복수의 IBSheet7 데이터를 일괄 조회하는 함수
- *
- * @param sheetArray sheet 객체 배열
- * @param url 로직을 처리하기위한 서버 URL
- * @param form 파라미터들을 가지고 있는 form 객체
- * @param onePageRow 페이지당 데이터 건수
- * @param extendProperties 확장 파라미터 문자열(ex. key1=value1,key2=value2...)
- */
- Modular.view.IBSheet7.doMultiSearch = function (sheetArray, url, form, onePageRow, extendProperties) {
- //TODO sheetArray가 Array타입인지 체크 필요
-
- var params = {};
- //Modular 연계용 필수 파라미터 설정
- params[Modular.view.IBSheet7.Constants.CLIENT_TYPE] = "IBSHEET7";
- params[Modular.view.IBSheet7.Constants.COMMAND_TYPE] = "multiSearch";
-
- var sheetIds = "";
- jQuery.each(sheetArray, function(n, sheet) {
- sheetIds = sheetIds + sheet.id + Modular.view.IBSheet7.Constants.MULTI_SHEET_PARAM_SEP;
- params[sheet.id + "." + Modular.view.IBSheet7.Constants.RECORD_SET_COLUMNS] = Modular.view.IBSheet7.getColumnStr(sheet);
- });
- params[Modular.view.IBSheet7.Constants.SHEET_ID] = sheetIds;
-
- //Modular 연계용 페이징 변수 설정
- params[Modular.view.IBSheet7.Constants.VOLUME_PER_PAGE] = onePageRow;
-
- //Modular 연계용 확장 파라미터 설정
- if(extendProperties) {
- params[Modular.view.IBSheet7.Constants.EXTEND_PROPS] = extendProperties;
- }
-
- if(form) {
- Modular.view.Form.bindSearchParameters(form);
- jQuery(form).find(":input").each(function () {
- var target = jQuery(this);
- if (target.attr("name")) {
- params[target.attr("name")] = target.val();
- }
- });
- }
-
- params = jQuery.param(params);
-
- var sXml = sheetArray[0].GetSearchData(url, params);
- var arrXml = Modular.view.IBSheet7.parseSearchXml(sXml);
- jQuery.each(sheetArray, function(n, sheet) {
- sheet.LoadSearchData(arrXml[n]);
- });
- };
- /**
- * IBSheet 데이터를 저장하는 함수
- *
- * @param sheet sheet 객체
- * @param url 로직을 처리하기위한 서버 URL
- * @param form 파라미터들을 가지고 있는 form 객체
- * @param ajax 직접 호출 여부(기본값 false)
- * @return (Boolean) 저장 성공 여부
- */
- Modular.view.IBSheet7.doSave = function (sheet, url, form, sString, ajaxCall) {
- var sheetArray = new Array(sheet);
- return Modular.view.IBSheet7.doMultiSave(sheetArray, url, form, sString, ajaxCall);
- };
- /**
- * 복수의 IBSheet 데이터를 일괄 저장하는 함수
- *
- * @param sheetArray sheet 객체 배열
- * @param url 로직을 처리하기위한 서버 URL
- * @param form 파라미터들을 가지고 있는 form 객체
- * @param ajax 직접 호출 여부(기본값 false)
- */
- Modular.view.IBSheet7.doMultiSave = function (sheetArray, url, form, sString, ajaxCall) {
- if (ajaxCall == null || ajaxCall == 'undefined') {
- ajaxCall = false;
- }
-
- if(sString == null || sString == 'undefined'){
- sString = false;
- }
-
- var params = {};
- //Modular 연계용 필수 파라미터 설정
- params[Modular.view.IBSheet7.Constants.CLIENT_TYPE] = "IBSHEET7";
- params[Modular.view.IBSheet7.Constants.COMMAND_TYPE] = "multiSave";
-
- var sheetIds = "";
- jQuery.each(sheetArray, function(n, sheet) {
- sheetIds = sheetIds + sheet.id + Modular.view.IBSheet7.Constants.MULTI_SHEET_PARAM_SEP;
- params[ sheet.id + "." + Modular.view.IBSheet7.Constants.RECORD_SET_COLUMNS] = Modular.view.IBSheet7.getColumnStr(sheet);
- });
- params[Modular.view.IBSheet7.Constants.SHEET_ID] = sheetIds;
- //일반 form 파라미터 가 있는 경우 파라미터 추가
- if(form) {
- Modular.view.Form.bindSearchParameters(form);
- jQuery(form).find(":input").each(function () {
- var target = jQuery(this);
-
- //input type이 radio 인 경우 체크된 값만 넘어가도록 수정
- //2013-08-22 김선엽 추가
- //radio는 동일 이름으로 작성되기 때문에 한번만 체크하는 기능으로 개선 필요함
-
- if (target.attr("type") == "radio") {
- if (target.attr("name")) {
- params[target.attr("name")] = jQuery('input[name='+target.attr("name")+']:radio:checked').val();
- }
- } else {
-
- if (target.attr("name")) {
- params[target.attr("name")] = target.val();
- }
- }
- });
- }
-
- //Sheet 저장 파라미터 설정
- var sheetParamString = "";
- var sheetData = "";
- jQuery.each(sheetArray, function(n, sheet) {
- if (sString) {
- sheetData = sheet.GetSaveString(true);
- } else {
- sheetData = sheet.GetSaveString();
- }
- var tempStr = sheetData.split("&");
- jQuery.each(tempStr, function(n, paramValue) {
- sheetParamString += sheet.id + "." + paramValue + "&";
- });
- });
-
- // keyField 체크 오류 시 return
- // 2012-10-15 JSH 추가
- if (sheetData == "KeyFieldError") return false;
-
- var paramString = jQuery.param(params) + "&" + sheetParamString;
-
- if(ajaxCall) {
- //IBSheet API를 통하지 않고 직접 Ajax 방식으로 요청하는 경우
- Modular.view.IBSheet7.doAjaxSave(url, paramString);
- }
- else {
- var sXml = sheetArray[0].GetSaveData(url, paramString);
-
- //alert(sheetArray[0].id+" , "+sheetArray[0].GetSaveString());
-
- var arrXml = Modular.view.IBSheet7.parseSaveXml(sXml);
-
- if(jQuery.isArray(arrXml)) {
- jQuery.each(sheetArray, function(n, sheet) {
- sheet.LoadSaveData(arrXml[n]);
- });
- return true;
- }
- else {
- return false;
- }
- }
- };
- /**
- * 해당 Sheet에 지정된 컬럼 이름을 ,로 구분되는 단일 문자열로 반환
- * ex) sStatus,userId,userName
- */
- Modular.view.IBSheet7.getColumnStr = function(sheet) {
- var columnStr = "";
- for(var i=0; i<=sheet.LastCol(); i++) {
- columnStr = columnStr + sheet.ColSaveName(i)+",";
- }
- if( columnStr.endsWith(",") ) {
- columnStr = columnStr.substring(0, columnStr.length -1);
- }
- return columnStr;
- };
- /**
- * 멀티 조회의 경우 SHEET별로 XML를 분리해서 반환해줌
- * @param sXml 조회 결과 XML
- * @return Array 조회 결과 XML Array
- */
- Modular.view.IBSheet7.parseSearchXml = function(sXml) {
- var arrXml = new Array();
- for(i=0; sXml.indexOf("<SHEET>") >= 0; i++ ) {
- var stIdx = sXml.indexOf("<SHEET>");
- var endIdx = sXml.indexOf("</SHEET>")+8;
- arrXml[i] = sXml.substring(stIdx, endIdx);
- sXml = sXml.substring(endIdx);
- }
-
- return arrXml;
- };
- /**
- * 멀티 저장의 경우 SHEET별로 XML를 분리해서 반환해줌
- * @param sXml 저장 결과 XML
- * @return Array 저장 결과 XML Array
- */
- Modular.view.IBSheet7.parseSaveXml = function(sXml) {
- var arrXml = new Array();
- for(i=0; sXml.indexOf("<SHEET>") >= 0; i++ ) {
- var stIdx = sXml.indexOf("<SHEET>");
- var endIdx = sXml.indexOf("</SHEET>")+8;
- arrXml[i] = sXml.substring(stIdx, endIdx);
- sXml = sXml.substring(endIdx);
- }
-
- return arrXml;
- };
- /**
- * 저장시 IBSHEET API를 거치지 않고 직접 Ajax통신을 통해
- * 서비스를 호출하고 json 형태로 응답을 받게됨.
- * (하위 구현으로 재구현 가능)
- * @param url 서비스 url
- * @return paramString 저장 파라미터
- */
- Modular.view.IBSheet7.doAjaxSave = function(url, paramString) {
- jQuery.ajax({
- async: false,
- type: "POST",
- url: url,
- data: paramString,
- dataType: "json",
- success: function(data) {
- // alert message
- if (data.message != undefined) {
- alert(data.message);
- }
- }
- });
- };
|