PropertyEventMethod찾아보기
$p - 5.0_5.5283A.20250313.190345

기본 유틸리티 객체인 'WebSquare' 객체에서 사용 빈도가 높은 API를 축약하여 기능을 제공하는 API (예를 들어 '$p.dateAdd' 는 'WebSquare.date.dateAdd' 와 동일한 기능임).
'WebSquare' 객체와 '$w' 객체는 전역 Scope에서 동작하는 반면, $p 객체에서 제공하는 대부분의 API는 호출한 화면의 Scope를 기반으로 동작함.
만약 Scope가 적용되지 않는 API가 있을 경우 설명부에 Scope가 적용되지 않음을 안내하고 있음.

Type

engine

Property Summary

Event Summary

Method Summary

$( )
현재 Scope안에서 jQuery Selector를 인자로 받아 jQuery 객체를 반환함
ajax( options )
XHR(XMLHttpRequest)을 구현한 함수
clearInterval( key , force )
'$p.setInterval'로 등록된 Interval 객체를 해제 함
clearTimeout( key , force )
'$p.setTimeout'로 등록된 Timeout 객체를 해제 함
closePopup( id )
'$p.openPopup' 또는 '$p.createPopup'로 오픈 된 팝업중에 지정한 아이디에 해당하는 팝업을 닫아줌
createSubmission( submissionObj )
동적으로 서브미션을 생성
dateAdd( day , offset , type )
날짜 및 시간(day)에 지정된 수(offset)만큼 형식(type)에 맞추어 더해줌
dateDiff( startDate , endDate )
두 날짜 사이의 차이를 반환
deleteSubmission( submissionId )
지정한 submissionId에 해당하는 서브미션을 삭제
download( actionUrl , requestData , sendMethod , isXHR )
다운로드 모듈이 구현된 서버의 URL을 호출하여 화면에서 다운로드할 수 있는 인터페이스를 제공해주는 기능 (서버의 다운로드 모듈은 따로 제공하지 않음)
dynamicCreate( id , tagName , options , parent )
동적으로 웹스퀘어 객체(컴포넌트)를 생성
executeParallel( submission , processMsg , resolveCallback , rejectCallback , id )
워크플로우를 생성하지 않고 기존 서브미션들을 Parallel하게 순서를 보장하여 처리하고자 할때 사용
executeSerial( submission , processMsg , resolveCallback , rejectCallback , id )
워크플로우를 생성하지 않고 기존 서브미션들을 Serial하게 순서를 보장하여 처리하고자 할때 사용
executeSubmission( submissionId , requestData , obj )
submissionId에 해당하는 서브미션을 실행
executeWhilst( submission , condFn , maxRepeat , processMsg , resolveCallback , rejectCallback , id )
워크플로우를 생성하지 않고 특정 서브미션을 반복적으로 호출하고자 할때 사용
executeWorkflow( workflow )
정의된 워크플로우를 아이디로 실행하거나, 워크플로우 객체를 직접 정의하여 실행함
getAllBASE64Parameter( )
Query 문자열로 전달된 모든 매개변수들을 Base64 디코딩하여 JSON 형식으로 반환
getAllParameter( )
GET 방식으로 넘어 온 매개변수 전체를 JSON 형태로 반환
getAllPopupList( id )
현재 열려있는 모든 팝업 객체를 반환 (Scope 및 팝업 유형에 관계없이 열려있는 모든 팝업 객체를 전부 반환)
getAllPopupWindowList( bMain )
현재 열려있는 모든 팝업 객체의 Window 객체를 반환
getBASE64Parameter( param )
Base64로 인코딩된 GET 방식의 매개변수(param)를 Base64로 디코딩하여 반환
getComponentById( id )
아이디에 해당하는 웹스퀘어 컴포넌트를 찾아 반환
getCurrentServerDate( pattern )
서버(WAS)의 현재 시간을 지정한 pattern 형태로 반환 (pattern 값은 Java의 SimpleDateFormat의 패턴을 지정할 수 있으며, pattern을 지정하지 않으면 'yyyyMMdd'로 지정)
getEventTarget( comp )
컴포넌트의 기본적인 정보를 JSON 객체로 반환 (이벤트 핸들러의 this도 포함)
getFormattedDate( dateObj , pattern )
dateObj(자바스크립트 Date 객체)를 지정한 pattern 형식의 문자열로 반환
getFrame( )
호출되는 자신을 감싸고 있는 WFrame 객체를 반환 (전역 스크립트에서 이 함수를 호출하면 null을 반환)
getFrameId( )
자신을 감싸고 있는 WFrame 객체의 아이디를 반환 (전역 스크립트에서 이 함수를 호출하면 null을 반환)
getIntervalKeyList( )
'$p.setInterval'로 등록된 Interval 객체들의 키 값을 배열로 반환
getMaxMinYear( )
'Websquare Configure"의 client.config.xml 편집모드에서 'Overview' 탭의 'date'의 설정값 'maxYear', 'minYear'을 JSON 형식으로 반환
getMetaValue( key )
Source의 Head 영역에 정의한 Meta 정보의 키에 해당하는 값을 반환
getParameter( param )
GET방식으로 넘어 온 매개변수 또는 openPopup() 함수의 dataObject에 정의한 값을 반환
getPopupParam( )
openPopup() 함수를 이용하여 팝업을 만들때 dataObject 속성에 정의한 값을 문자열으로 반환
getPopupUrl( )
팝업 화면에서 호출되어지는 함수이며, 현재의 팝업 화면의 URL을 반환 ('$p.openPopup' 함수를 호출할 때, 'options.type'값이 'wframePopup'으로 지정되어야 사용할 수 있음)
getPopupWindow( id )
openPopup() 함수에 정의한 아이디로 검색하여 해당 팝업 화면의 Window를 반환
getPopupWindowList( useFrameModal , scope , bMain )
$p와 동일한 Scope를 가진 wframePopup 및 iframePopup 객체의 Window를 반환
getRunningWorkflow( workflowID )
workflowID와 아이디가 동일한 실행 중인 워크플로우 객체를 반환
getRunningWorkflowID( )
실행 중인 워크플로우의 실행 시점의 아이디를 반환
getRuntimeId( id )
실행 시점의 컴포넌트 아이디를 반환
getStringByteSize( str )
문자열의 Byte 크기를 반환
getSubmission( submissionId )
submissionId에 해당하는 서브미션 객체를 반환
getSubmissionList( options )
현재 Scope(이 함수를 호출한 화면)내의 모든 서브미션 객체를 반환
getTimeoutKeyList( )
일정 시간이 지난 후에 함수를 실행하기 위해서 '$p.setTimeout'로 등록된 Timeout 객체의 키 값을 배열로 반환
getWorkflow( id )
아이디에 해당하는 워크플로우 객체를 반환
hideModal( )
최상위 화면을 감싼 Modal Layer를 숨김
hideProcessMessage( )
작업진행 메시지인 Process Message Layer를 숨김 (Process Message Layer는 submission, ajax, excel download 등과 같은 기능이 실행 중 일 때 표시됨)
isPopup( isClosest )
현재 화면의 팝업 여부를 반환 (isClosest를 true로 지정하면 상위(부모) 프레임을 거슬러 올라가면서 팝업 여부를 체크)
isRunningWorkflow( workflowID )
실행 중인 워크플로우가 있는지를 반환 (workflowID가 전달된 경우 해당 아이디의 워크플로우 실행 여부를 반환)
isWFramePopup( isClosest )
현재 화면이 WFrame 유형의 팝업인지의 여부를 반환
js( scriptUrl , callback )
여러 개의 외부 자바스크립트 파일(이하 JS)을 로드할 때 JS별 순서 보장이 필요한 경우 사용
jsAsync( pathArr , options )
$p.js의 기능을 확장한 API로 업무 공통 파일 또는 외부 JS를 동적으로 로드 할 때 사용함 (scope기능 및 async await 기능을 지원함)
loadGlobalCommon( infoArray )
동적으로 globalCommon 로드
loadPageCommon( infoArray )
동적으로 pageCommon 로드
log( msg )
웹스퀘어를 통해 로그를 출력
main( )
현재 화면이 속한 Window를 기준으로 최상위 페이지의 Scope 객체를 반환
openPopup( url , options , params , target )
팝업을 생성하여 띄워줌
parent( )
호출한 화면의 부모 페이지의 Scope 객체를 반환
parseDate( dateStr , format )
포맷이 적용된 날짜 문자열 객체를 반환 (자바스크립트의 Date 객체)
reinitialize( )
현재 페이지 새로고침 (현재 페이지 : $p.reinitialize를 실행한 화면)
rejectWorkflow( reject , workflowID )
실행중인 워크플로우를 Reject (workflowID 가 전달된 경우 해당 워크플로우가 실행중인 경우에만 Reject 시킴)
setDisabled( obj )
obj의 설정에 따라 컴포넌트의 비활성화를 적용하거나 해제함
setDomain( domain )
'document.domain'의 값을 지정
setInterval( func , options )
주기적으로 함수를 실행하기 위해서 Interval 객체로 등록 함 (이 기능은 자바스크립트의 setInterval 기능을 확장하여 제공)
setTimeout( func , options )
일정 시간이 지난 후에 함수를 실행하기 위해서 Timeout 객체로 등록 함 (이 기능은 자바스크립트의 setTimeout 기능을 확장하여 제공)
showModal( excludeComponentIdArr )
최상위 화면에 Modal Layer를 표시하여 모든 컴포넌트를 비활성화
showProcessMessage( processMsg )
작업진행 메시지인 Process Message Layer를 표시 (Process Message Layer는 submission, ajax, excel download 등과 같은 기능이 실행 중 일 때 표시됨)
top( )
최상위 페이지의 Scope 객체를 반환
toTimestampString( dateObj )
dateObj(자바스크립트의 Date 객체)를 전달받아 'yyyy-mm-dd hh:mm:ss.fffffffff' 형식이 적용된 문자열을 반환 (자바의 'java.sql.Timestamp'와 동일한 형식)
updateServerTime( )
비동기 통신으로 서버(WAS)의 현재 시간을 'yyyyMMddHHmmssSSS'형식의 문자열로 응답받아 '$p.getCurrentServerDate'에서 사용하는 기준 시간을 업데이트하고, 응답 데이터(현재 시간)를 프로미스(Promise) 객체로 반환
updateSuffix( options )
서버에 위치한 '[컨텍스트]/websquare/suffix.txt'파일을 비동기 통신으로 호출하여, 웹스퀘어 엔진의 'suffix' 설정 값을 파일에 작성된 문자열로 업데이트 함
url( w2xPath , options )
화면 전환 시 웹스퀘어 화면(w2xPath에 해당하는)의 경로만 전달하여 페이지를 이동할 수 있게 해주는 함수
URLEncoder( str )
str에 지정된 문자열을 'application/x-www-form-urlencoded' MIME 형식의 문자열로 반환
watermark( str )
현재 화면에 워터마크를 추가 (이 기능은 HTML Canvas가 지원되는 브라우저에서만 제공됨)

Property Detail

Event Detail

Method Detail

$( )
현재 Scope안에서 jQuery Selector를 인자로 받아 jQuery 객체를 반환함
샘플과 같이 아이디 Selector로 찾아진 객체의 Method를 바로 실행이 가능
(웹스퀘어 객체로 사용하려면 .wq()를 붙여서 사용해야 함)
Return
typedescription
ObjectjQuery 객체
Sample
// 스크립트가 실행된 페이지의 아이디가 'grp_Group1'인 객체를 찾아 grp_Group1.invoke("setDisabled", "true");를 실행
$p.$("#grp_Group1").wq("invoke", "setDisabled", "true");
ajax( options )
XHR(XMLHttpRequest)을 구현한 함수
서브미션에 비해 자유도가 높고, 요청/응답 데이터가 문자열로 되어있어 자바스크립트로 구현된 암/복호화 모듈을 연동하기 쉬움
Parameter
nametyperequireddescription
optionsJSONY통신을 위한 정보
<String:Y> options.action : 호출 주소 <String:N> options.mode : [default: asynchronous,synchronous] 통신 모드 <String:Y> options.mediatype : [default: application/xml, application/x-www-form-urlencoded, application/json, text/json, text/xml] 데이터 타입 <String:N> options.method : [default: POST, GET, PUT, DELETE] HTTP Method <String:N> options.requestData : 본문 <JSON:N> options.requestHeader : RequestHeader에 지정할 키와 값 <Number:N> options.timeout : 호출 후 Timeout 시간(단위: millisecond) [지정 시간 내 응답이 오지 않는 경우 Error Callback 함수가 실행] <Function:N> options.beforeAjax : 호출 전 실행되는 함수 [이 함수의 Return 값이 false이면 ajax를 호출하지 않음] <Function:N> options.success : 통신이 성공한 경우 실행되는 콜백 함수 <Function:N> options.error : 통신이 실패한 경우 실행되는 콜백 함수
Sample
//ajax 호출 본문 예시 var options = {}; options.action = "_data/$p.ajax.json"; options.mode = "asynchronous"; options.mediatype = "text/json"; options.method = "POST"; options.requestData = '{ "name" : "WebSquare" , "version" : "5.0" }'; options.requestHeader = {insUserData:"C0001"}; options.success = scwin.callback_ajax; //정의 된 function 객체 options.error = function( e ){ //functoin을 직접 정의한 경우 //e.errorType - 오류 유형 문자열 //e.requestBody - Request Data 문자열 //e.resourceUri - 통신 URI 문자열 //e.responseBody - Response Data 문자열 //e.responseHeaders - Response Headers 내용 반환 //e.responseReasonPhrase - Response Status Text 반환 //e.responseStatusCode - Response Status Code 숫자형 값 //응답 객체를 console에 출력 //console.log(e); }; $p.ajax(options); //ajax API의 options.success에 지정한 function 예시 scwin.callback_ajax = function(e) { //e는 통신 후 응답 정보가 담긴 JSON입니다. //e.resourceUri - 통신 URI 문자열 //e.responseHeaders - Response Headers가 담긴 XML 형식의 문자열 //e.responseStatusCode - Response Status Code 숫자형 값 //e.responseReasonPhrase - Response Status 문자열 //e.responseText - Response Data 원본 문자열 //e.responseJSON - Response Content Type이 'JSON' 형식인 경우 응답 문자열을 JSON 형식으로 Parse한 결과 값 //e.responseBody - Response Content Type이 'XML' 형식인 경우 응답 문자열을 XML 형식으로 Parse한 결과 값 //응답 객체를 console에 출력 //console.log(e); };
clearInterval( key , force )
'$p.setInterval'로 등록된 Interval 객체를 해제 함
Parameter
nametyperequireddescription
keyStringY해제할 Interval 객체의 키 값 ($p.setInterval API 호출 시 options.key에 지정한 값)
forceBooleanN[defulat:false, true] 해제할 Interval 객체를 해제하기 전에 등록된 함수를 마지막으로 한 번 실행할 것인지에 대한 여부
Sample
//$p.setInterval로 생성 시 options.key 값이 "interval1"로 지정된 객체를 해제 $p.clearInterval("interval1");
clearTimeout( key , force )
'$p.setTimeout'로 등록된 Timeout 객체를 해제 함
Parameter
nametyperequireddescription
keyStringY해제할 Timeout 객체의 키 값 ($p.setTimeout API 호출 시 options.key에 지정한 값)
forceBooleanN[defulat:false, true] 해제할 Timeout 객체를 해제하기 전에 등록된 함수를 마지막으로 한 번 실행할 것인지에 대한 여부
Sample
//'$p.setTimeout' 호출 시 options.key의 값이 "timer1"로 지정된 객체를 해제 $p.clearTimeout("timer1");
closePopup( id )
'$p.openPopup' 또는 '$p.createPopup'로 오픈 된 팝업중에 지정한 아이디에 해당하는 팝업을 닫아줌
Parameter
nametyperequireddescription
idStringY팝업 아이디
Sample
//id가 'popup1'인 팝업을 닫아 줌 $p.closePopup("popup1");
createSubmission( submissionObj )
동적으로 서브미션을 생성
Parameter
nametyperequireddescription
submissionObjJSONY생성할 서브미션 객체의 속성
<String:Y> submissionObj.id : 서브미션 아이디 <String:N> submissionObj.ref : 서버로 보낼 요청(Request) 데이터컬렉션의 조건 표현식 (조건문 형식은 $p.data.get에 전달하는 인자와 같음) <String:N> submissionObj.target : 서버로부터 받은 응답(Response) 데이터가 위치할 데이터컬렉션의 조건 표현식 (조건문 형식은 $p.data.set에 전달하는 인자와 같음) <String:N> submissionObj.action : 통신할 서버 URL(브라우저 보안 정책으로 crossDomain은 지원하지 않음) <String:N> submissionObj.method : [default: post, get, urlencoded-post] HTTP Method (get : 파라미터를 url에 붙이는 방식 (HTML과 동일). post : 파라미터를 body 구간에 담는 방식 (HTML과 동일). urlencoded-post : urlencoded-post.) <String:N> submissionObj.mediatype : [default: application/xml, text/xml, application/json, application/x-www-form-urlencoded] 데이터 타입 (application/x-www-form-urlencoded : 웹 form 방식(HTML방식). application/json : JSON 방식. application/xml : XML 방식, text/xml : xml방식 (두 개 차이는 http://stackoverflow.com/questions/4832357 참조)) <String:N> submissionObj.encoding : [default: utf-8, euc-kr, utf-16] 서버 인코딩 타입 <String:N> submissionObj.processMsg : 서브미션 통신 중 보여줄 메시지 ("$blank"로 지정하면 Config에 메시지가 지정되어 있어도 메시지 창이 노출되지 않음) <String:N> submissionObj.localeRef : 클라이언트 다국어 적용시 processMsg 대신에 화면에 출력하는 텍스트의 키 <Function:N> submissionObj.errorHandler : 서브미션 오류 발생 시 실행할 함수 <Function:N> submissionObj.submitHandler : 서브미션 요청 전 실행할 함수 (서브미션의 'submit' 이벤트 핸들러) <Function:N> submissionObj.submitDoneHandler : Response Status 코드 값이 정상 일 경우 실행할 함수 (서브미션의 'submit-done' 이벤트 핸들러) <Function:N> submissionObj.submitErrorHandler : Response Status 코드가 오류(200 미만 300 이상)인 경우 실행할 함수 (서브미션의 'submit-error' 이벤트 핸들러) <Function:N> submissionObj.submitTimeoutHandler : 서브미션의 'submit-timeout' 이벤트 핸들러 <Function|String:N> submissionObj.customHandler : 서브미션 호출 시 실행할 함수 (통신 모듈을 직접 구현할 때 사용) <Boolean:N> submissionObj.abortTrigger : [default:false, true] 서브미션을 도중에 취소할 수 있는 기능을 제공하는 버튼을 사용할지에 대한 여부 ('true' 지정 시 processMsg에 취소 버튼이 노출) <Object:N> submissionObj.requestHeader : 서브미션 호출 시 requestHeader에 추가할 키, 값을 JSON 형식으로 지정(ex : requestHeader = {"userKey": "userValue", "userKey2": "v2"})
Sample
var submissionObj = {}; submissionObj.id = "submission_dynamic"; //데이터리스트 dlt_commonGrp 중 modified에 해당하는 데이터 및 dlt_commonCode 데이터 전체를 JSON형식으로 서버에 전달 ($p.data.get(ref)의 결과를 서버에 전달하는 것과 같음) submissionObj.ref = 'data:json,[{"id":"dlt_commonGrp","action":"modified"},"dlt_commonCode"]'; //응답 데이터 중 dlt_zipCode 데이터를 찾아 데이터 리스트 dlt_zipCode에 추가하고 dma_search_excel에 해당하는 데이터를 찾아 데이터 리스트 dma_search_excel의 데이터를 교체함 submissionObj.target = 'data:json,[{"id":"dlt_zipCode","action":"append"},"dma_search_excel"]'; submissionObj.action = "/data/sampleData.json"; submissionObj.method = "post"; submissionObj.mediatype = "application/json"; submissionObj.encoding = "UTF-8"; submissionObj.processMsg = "loading"; //정의된 객체를 지정한 예시 submissionObj.submitDoneHandler = scwin.handler_submitdone; //함수를 직접 정의한 예시 submissionObj.submitErrorHandler = function (e) { //console.log(e); //e.id : <String> 서브미션 객체의 아이디 //e.errorType : <String> target-error 로 고정값 반환 //e.resourceUri : <String> 통신 URI 반환 //e.responseHeaders : <String> Response Headers 내용 반환 //e.responseHeadersJSON : <String> Response Headers의 키, 값을 가진 JSON //e.responseStatusCode : <String> Response Status Code 반환 //e.responseReasonPhrase : <String> Response Status Text 반환 //e.responseBody : <String> Response Data 문자열 //e.requestBody : <String> Request Data 문자열 //e.abort : <String> 통신이 중단(abort)된 경우 'true' 반환 }; //서브미션 생성 $p.createSubmission(submissionObj); //submissionObj.submitDoneHandler에 지정한 function 예시 scwin.handler_submitdone = function (e) { //console.log(e); //e.id : <String> 서브미션 객체의 아이디 //e.resourceUri : <String> 통신 URI //e.responseHeaders : <String> Response Headers의 키, 값을 가진 XML 문자열 //e.responseHeadersJSON : <String> Response Headers의 키, 값을 가진 JSON //e.responseStatusCode : <Number> Response Status Code //e.responseReasonPhrase : <String> Response Status Text //e.responseText : <String> Response Data 원본 //e.responseJSON : <Object> (Response Content-Type이 'JSON' 인 경우 제공)JSON으로 변환된 응답 데이터 //e.responseBody : <Object> (Response Content-Type이 'XML' 인 경우 제공)XML로 변환된 응답 데이터 //e.requestBody : <String> 요청 데이터 문자열 };
dateAdd( day , offset , type )
날짜 및 시간(day)에 지정된 수(offset)만큼 형식(type)에 맞추어 더해줌 type에서 설정한 값[day,month,hour,minute,time]에 따라서 증가되는 대상이 달라짐 (형식은 아래와 같음) day : yyyyMMdd month : yyyyMM hour : yyyMMddHH minute : yyyyMMddHHmm
Parameter
nametyperequireddescription
dayStringY지정 날짜와 시간
offsetNumberY날짜에 더할 숫자
typeStringY증가된 값이 적용될 형식 (day, month, hour, minute)
Return
typedescription
String지정된 수 만큼 더하거나 뺀 날짜
Sample
var tmpDate = $p.dateAdd("20120102", -7, "day"); //tmpDate : 20111226 var addTimeDateD = $p.dateAdd( "20120102", 7, "day" ); //addDate : 20120109 var addTimeDateM = $p.dateAdd( "201201", 7, "month" ); //addDate : 201208 var addTimeDateH = $p.dateAdd( "2012010213", 7, "hour" ); //addDate : 2012010220 var addTimeDatem = $p.dateAdd( "201201021310", 7, "minute" ); //addDate : 201201021317
dateDiff( startDate , endDate )
두 날짜 사이의 차이를 반환
Parameter
nametyperequireddescription
startDateStringY시작 날짜
endDateStringY끝 날짜
Return
typedescription
Number두 날짜의 차이
Sample
var numResult1 = $p.dateDiff("19450815", "19450816"); //반환 값 예시) 1 var numResult2 = $p.dateDiff("20120120", "20120210"); //반환 값 예시) 21 var numResult3 = $p.dateDiff("20120210", "20120120"); //반환 값 예시) -21
deleteSubmission( submissionId )
지정한 submissionId에 해당하는 서브미션을 삭제
Parameter
nametyperequireddescription
submissionIdStringY서브미션 아이디
Sample
// "submission1"에 해당하는 서브미션 삭제 $p.deleteSubmission("submission1");
download( actionUrl , requestData , sendMethod , isXHR )
다운로드 모듈이 구현된 서버의 URL을 호출하여 화면에서 다운로드할 수 있는 인터페이스를 제공해주는 기능 (서버의 다운로드 모듈은 따로 제공하지 않음)
기본적인 방식은 내부에 IFrame을 생성하고 'form-submit'으로 서버에 전송
sendMethod(GET, POST)와 isXHR(XMLHttpRequest 여부) 설정에 따른 전송 차이는 브라우저의 개발자 도구의 네트워크(Network)를 통해 더욱 정확하게 확인이 가능함
Parameter
nametyperequireddescription
actionUrlStringY파일 다운로드 기능이 구현되어있는 URL (HTML Form의 속성 'action'에 할당됨)
requestDataStringN서버에 전송할 문자열
요청 매개변수의 'xmlValue'에 할당되어 서버에 전송 됨 값을 지정하지 않으면(undefined인 경우) 'xmlValue'에 값이 할당되지 않음 값을 지정한 경우 서버에서 request.getParameter("xmlValue");로 값을 추출할 수 있음
sendMethodStringN[default: POST, GET] 전송 방식 (HTML Form의 속성 'method'에 할당됨)
isXHRBooleanN서버와의 통신을 XHR 방식으로 적용할지의 여부
설정 값이 'true'이고 requestData가 지정된 경우에는 'Request Content-Type'의 값이 'text/plain'으로 설정되며, 서버에서는 Request 본문에서 데이터를 추출해야 함
Sample
// 예시1) actionUrl만 지정한 경우 $p.download('/download.do'); // 예시2) Form 데이터의 'xmlValue'에 문자열 'K00001'이 할당됨 $p.download('/download.do', 'K00001'); // 예시3) Query 문자열의 'xmlValue'에 문자열 'K00001'이 할당됨 $p.download('/download.do', 'K00001', 'get'); // 예시4) Form 데이터의 'xmlValue'에 JSON형식의 문자열을 전달하는 경우 $p.download('/download.do', '{"key":"K00001", "fileName":"/resource/exam_download1.jpg"}'); // 예시5) 4 번째 인자(isXHR)을 true로 지정 $p.download('/jsp/exam_download_xhr.jsp', '{"key":"K00001", "fileName":"/resource/exam_download1.jpg"}', "post", true); // 예시6) Query 문자열과 Form 데이터를 함께 전송하는 경우 $p.download('/download.do?user=U00001', 'K00001'); // 예시7) sendMethod를 'get' 지정하면 URL에 정의한 Query 문자열은 무시되며, xmlValue가 할당됨 $p.download('/download.do?user=U00001', 'K00001', 'get');
dynamicCreate( id , tagName , options , parent )
동적으로 웹스퀘어 객체(컴포넌트)를 생성
Parameter
nametyperequireddescription
idStringY컴포넌트의 아이디
tagNameStringY컴포넌트명 (각 컴포넌트의 함수 'getPluginName'로 확인할 수 있음)
optionsObjectY컴포넌트의 생성 옵션
parentObjectY컴포넌트를 추가할 대상 컴포넌트 객체 (지정된 객체가 없으면 HTML 요소의 'body'에 추가됨)
Return
typedescription
Object생성된 컴포넌트 객체
Sample
// (선행 작업) // API를 호출하는 화면에 Group 컴포넌트(이하 Group)를 생성하고, Group의 아이디를 'grp_target'으로 지정 // 예시 1) Group 'grp_target'의 자식 요소로 컴포넌트 Group 생성하기 var cmpResult = $p.dynamicCreate( "grp_dynamic", "group", { style: "background-color:#B0E0E6; height:30px; margin-bottom:6px;" }, grp_target ); // 예시 2-1) Group 'grp_target'의 자식 요소로 InputBox 생성하기 var cmpResult2 = $p.dynamicCreate( "ibx_dynamic", "input", { style: "width:200px; height:24px; margin-right:6px;", placeholder: "Please enter your name.", className: "cm_form" //컴포넌트의 속성 'class'에 'cm_form'을 지정 }, grp_target ); // 예시 2-2) 생성된 Input 컴포넌트에 'setValue' 함수로 값 할당하기 cmpResult2.setValue("WebSquare"); // 예시 3-1) Group 'grp_target'의 자식 요소로 Trigger 생성하기 var cmpResult3 = $p.dynamicCreate( "btn_dynamic", "trigger", { style: "min-width:80px; height:24px; margin-right:6px; padding:0px 6px;", className: "cm_form" //컴포넌트의 속성 'class'에 'cm_form'을 지정 }, grp_target ); // 예시 3-2) 생성된 Trigger 컴포넌트에 'value'에 값을 지정하고, 'onclick' 이벤트 연결하기 cmpResult3.setValue("setValue"); cmpResult3.bind("onclick", scwin.btn_dynamic_onclick); //정의된 함수 객체 지정 // 예시 4-1) Group 'grp_target'의 자식 요소로 Selectbox 생성하기 var cmpResult4 = $p.dynamicCreate( "sbx_dynamic", "selectbox", { style: "width:120px; height:24px; margin-right:6px; padding:0px 6px;", className: "cm_form", //컴포넌트의 속성 'class'에 'cm_form'을 지정 chooseOption : "true" }, grp_target ); // 예시 4-2) 생성된 Selectbox의 함수 'setNodeSet'를 호출하여 항목 목록과 DataList 연결하기 cmpResult4.setNodeSet("data:dlt_code", "lable", "code"); // 예시 5) 컴포넌트 'Group' 생성하기 - 부모를 지정하지 않은 경우 var cmpResult5 = $p.dynamicCreate( "grp_dynamic_no_parent", "group", { style: "background-color:#B22222; height:30px; margin-bottom:6px;" } ); // 예시 5 - 실행 결과) 부모가 지정되지 않은 경우에는 HTML 요소의 'body'에 추가 됨
executeParallel( submission , processMsg , resolveCallback , rejectCallback , id )
워크플로우를 생성하지 않고 기존 서브미션들을 Parallel하게 순서를 보장하여 처리하고자 할때 사용
submission1 call -> submission2 call -> submission1 callback -> submission2 callback
Parameter
nametyperequireddescription
submissionArrayY서브미션 아이디 배열 (예시 : ["submission1", "submission2", "submission3"])
processMsgStringN작업메시지
resolveCallbackFunctionN성공에 대한 콜백 함수
rejectCallbackFunctionN실패에 대한 콜백 함수
idStringN아이디
Sample
$p.executeParallel( ["submission1", "submission2", "submission3"],"processMsg", final_callback, reject_callback, id); //submission1, submission2, submission3 call // -> submission1 callback -> submission2 callback -> submission3 callback -> final_callback or reject_callback
executeSerial( submission , processMsg , resolveCallback , rejectCallback , id )
워크플로우를 생성하지 않고 기존 서브미션들을 Serial하게 순서를 보장하여 처리하고자 할때 사용
submission1 call -> submission1 callback -> submission2 call -> submission2 callback
Parameter
nametyperequireddescription
submissionArrayY서브미션 아이디 배열 (예시 : ["submission1", "submission2", "submission3"])
processMsgStringN작업메시지
resolveCallbackFunctionN성공에 대한 콜백 함수
rejectCallbackFunctionN실패에 대한 콜백 함수
idStringN아이디
Sample
$p.executeSerial( ["submission1", "submission2", "submission3"], "processMsg",final_callback, reject_callback); //submission1 call/callback -> submission2 call/callback -> submission3 call/callback -> final_callback or reject_callback
executeSubmission( submissionId , requestData , obj )
submissionId에 해당하는 서브미션을 실행
Parameter
nametyperequireddescription
submissionIdStringY실행할 서브미션의 아이디
requestDataObjectN요청 데이터 (서브미션에 정의한 속성 'ref'는 무시)
objObject|ArrayN전송 중 비활성화할 컴포넌트 (여러 개의 컴포넌트를 지정할 경우 배열로 지정)
Sample
//예시 1) 서브미션 'sbm_exam1'을 실행 $p.executeSubmission("sbm_exam1"); //예시 2) 2번째 인자 'requestData' 할당하기 //요청 데이터에 '{ "TYPE": "U00001" }'를 지정 (서브미션에 정의된 속성 'ref'는 무시 됨) $p.executeSubmission( "sbm_exam1", { "TYPE": "U00001" } ); //예시 3) 3번째 인자 'obj' 할당하기 //웹스퀘어 컴포넌트 grp_form를 응답이 오기 전까지 비활성화 (컴포넌트의 아이디 문자열이 아닌 객체를 지정해야 함) $p.executeSubmission( "sbm_exam1", null, grp_form ); //예시 4) 3번째 인자 'obj' 할당하기 - 여러 개의 컴포넌트 지정 //웹스퀘어 컴포넌트 btn_send, btn_reset를 응답이 오기 전까지 비활성화 (컴포넌트의 아이디 문자열이 아닌 객체를 지정해야 함) $p.executeSubmission( "sbm_exam1", null, [btn_send, btn_reset] );
executeWhilst( submission , condFn , maxRepeat , processMsg , resolveCallback , rejectCallback , id )
워크플로우를 생성하지 않고 특정 서브미션을 반복적으로 호출하고자 할때 사용
Parameter
nametyperequireddescription
submissionStringY서브미션 아이디
condFnFunctionY실행여부를 체크하는 사전 함수
maxRepeatIntY최대실행 회수 (Conditon으로만 체크가능한 경우에는 무한루프에 대한 제어용으로도 사용가능)
processMsgStringN작업메시지
resolveCallbackFunctionN성공에 대한 콜백 함수
rejectCallbackFunctionN실패에 대한 콜백 함수
idStringN아이디
Sample
$p.executeWhilst( "submission1", cond_check, 100, "processMsg",final_callback, reject_callback, id); //submission 을 cond_check sucess 이고 100회 미만 까지 반복 호출/콜백 수행 // -> final_callback or reject_callback
executeWorkflow( workflow )
정의된 워크플로우를 아이디로 실행하거나, 워크플로우 객체를 직접 정의하여 실행함
Parameter
nametyperequireddescription
workflowString|ObjectY워크플로우의 아이디 또는 워크플로우 객체
Sample
//예시 1) 정의된 워크플로우의 아이디가 'wf_exam1'인 경우 $p.executeWorkflow("wf_exam1"); //예시 2) 워크플로우 객체를 인자로 사용하는 경우 //워크플로우 객체의 속성은 아래와 같음 //workflowObj.id : <String:Y> 워크플로우의 아이디 //workflowObj.processMsg : <String:N> 워크플로우의 통신 중 보여줄 메시지 (문자열 '$blank'을 지정하면 메시지창이 활성화되지 않음) //workflowObj.resolveCallback : <String||function:N> 모든 단계가 정상 처리된 후 실행할 함수를 지정 //workflowObj.rejectCallback : <String||function:N> 단계 진행 중 응답 값 오류 또는 오류 발생 시 실행할 함수를 지정 //workflowObj.step : <String:Y> 실행 단계가 담긴 배열 //workflowObj.step[i].type : <String:Y> [submit, submitDone, 함수] 실행 단계 유형 //- submit : 서브미션 실행. 'step.action'에 서브미션의 아이디를 지정 ('step.pre'를 지정할 수 있음) //- submitDone : 서브미션 응답 후 실행하며, 서브미션에 등록 된 이벤트 핸들러 submitDone 또는 submitError가 실행 됨 ('step.action'에 서브미션의 아이디를 지정, 'step.post'를 지정할 수 있음) //- function : function 실행. 'step.action'에 함수명 또는 함수 객체를 지정 //workflowObj.step[i].action: <String:Y> 실행 대상 ('stpe.type'의 값에 따라 지정할 수 있는 유형이 구분 됨) //- 'stpe.type'의 값이 'submit' 또는 'submitDone'이면 서브미션의 아이디를 지정 //- 'stpe.type'의 값이 'function'이면 함수명 또는 함수 객체를 지정 //workflowObj.step[i].pre : <String||function:N> 'stpe.type'의 값이 'submit' 일 때 지정할 수 있으며, 서브미션 실행 전 호출할 함수명 또는 함수 객체를 지정 (함수의 반환 값이 true가 아니면 서브미션이 실행되지 않음 (전체 reject 시 workflowObj.reject(msg)을 호출)) //workflowObj.step[i].post : <String||function:N> 'stpe.type'의 값이 'submitDone' 일 때 지정할 수 있음 (서브미션의 'submit-done' 이벤트 이후 실행 됨) let workflowObj = {}; workflowObj.id = "wf_exam2"; workflowObj.processMsg = "workflow 실행 중입니다."; workflowObj.step = [ { "type": "submit", "action": "sbm_exam1", "pre": "scwin.sbm_exam1_wf_pre" }, { "type": "function", "action": "scwin.wf_function1" }, { "type": "submit", "action": "sbm_exam2" }, { "type": "submitDone", "action": "sbm_exam1", "post": "scwin.sbm_exam1_wf_post" }, { "type": "submitDone", "action": "sbm_exam2"}, { "type": "submit", "action": "sbm_exam3" }, { "type": "function", "action": "scwin.wf_function2" }, { "type": "submitDone", "action": "sbm_exam3" } ]; workflowObj.resolveCallback = function (wObj) { //함수를 직접 정의. console.log("# workflow resolveCallback"); console.log(wObj); }; workflowObj.rejectCallback = scwin.comm_wf_rejectCallback; //정의된 함수를 지정 $p.executeWorkflow(workflowObj); //step.pre에 지정한 함수의 반환값이 true이고 응답이 모두 정상인 경우 실행 순서는 다음과 같음 //1. scwin.sbm_exam1_wf_pre //2. sbm_exam1_submit //3. sbm_exam1 실행 //4. scwin.wf_function1 //5. sbm_exam2_submit //6. sbm_exam2 실행 //7. sbm_exam1_submitdone //8. scwin.sbm_exam1_wf_post //9. sbm_exam2_submitdone //10. sbm_exam3_submit //11. sbm_exam3 실행 //12. scwin.wf_function2 //13. sbm_exam3_submitdone //14. workflow resolveCallback //stpe의 pre 함수 정의 예시 scwin.sbm_exam1_wf_pre = function (submissionId, workflowObj) { //console.log("# scwin.sbm_exam1_wf_pre"); //console.log(submissionId); //console.log(workflowObj); //workflow를 reject(중단) 하고자 할 때 다음과 같이 호출 함 //workflowObj.reject(); return true; //true를 반환하지 않으면 서브미션의 실행이 중단 됨 }; //stpe의 post 함수 정의 예시 scwin.sbm_exam1_wf_post = function (submissionObj, workflowObj) { //console.log("# scwin.sbm_exam1_wf_post"); //console.log(submissionObj); //console.log(workflowObj); //workflow를 reject(중단) 하고자 할 때 다음과 같이 호출 함 //workflowObj.reject(); };
getAllBASE64Parameter( )
Query 문자열로 전달된 모든 매개변수들을 Base64 디코딩하여 JSON 형식으로 반환
Return
typedescription
JSONBase64 디코딩된 매개변수들
Sample
var geBase64tParam = $p.getAllBASE64Parameter();
getAllParameter( )
GET 방식으로 넘어 온 매개변수 전체를 JSON 형태로 반환
Return
typedescription
JSONGET 방식으로 넘어 온 매개변수들
Sample
var getParam = $p.getAllParameter();
getAllPopupList( id )
현재 열려있는 모든 팝업 객체를 반환 (Scope 및 팝업 유형에 관계없이 열려있는 모든 팝업 객체를 전부 반환)
Parameter
nametyperequireddescription
idStringY팝업의 아이디
Return
typedescription
Array열려있는 모든 팝업 객체들의 배열
Sample
var popList = $p.getAllPopupList(); for (var i = popList.length - 1; i >= 0; i-- ) { $p.closePopup(popList[i].id); // 열려있는 모든 팝업을 닫음 (닫을 때마다 popList가 제거되므로 배열을 역순으로 돌아야 함) }
getAllPopupWindowList( bMain )
현재 열려있는 모든 팝업 객체의 Window 객체를 반환
Parameter
nametyperequireddescription
bMainBooleanNiframePopup 또는 browserPopup일 때 반환된 Window의 $p.main()을 실행한 결과를 반환할지에 대한 여부
Return
typedescription
Array열려있는 모든 팝업 객체들의 Window 객체들의 배열
Sample
var popWinList = $p.getAllPopupWindowList(true); for (var i = 0; i < popWinList.length; i++ ) { popWinList.scwin.test(); // 열려있는 모든 팝업의 scwin.test 함수를 호출하는 예제 }
getBASE64Parameter( param )
Base64로 인코딩된 GET 방식의 매개변수(param)를 Base64로 디코딩하여 반환
Parameter
nametyperequireddescription
paramStringNURL에서 지정된 매개변수
Return
typedescription
StringParameter 문자열
Sample
$p.getBASE64Parameter("name");
getComponentById( id )
아이디에 해당하는 웹스퀘어 컴포넌트를 찾아 반환
Scope가 true인 다중 WFrame 구조에서는 $p의 Scope에 해당하는 화면(보통은 이 함수를 호출한 화면)에 있는 객체의 원래 아이디를 기준으로 반환함
Parameter
nametyperequireddescription
idStringY컴포넌트의 아이디
Return
typedescription
Object아이디에 해당하는 컴포넌트 객체
Sample
//예시) 함수를 호출한 화면의 InputBox 컴포넌트의 아이디가 'ibx_name'로 지정된 경우 var cptIbxName = $p.getComponentById("ibx_name"); //반환된 컴포넌트의 setValue() 함수를 호출 cptIbxName.setValue("WebSquare");
getCurrentServerDate( pattern )
서버(WAS)의 현재 시간을 지정한 pattern 형태로 반환 (pattern 값은 Java의 SimpleDateFormat의 패턴을 지정할 수 있으며, pattern을 지정하지 않으면 'yyyyMMdd'로 지정) (참고 사항) 서버 시간은 비동기로 'serverTime.wq'를 호출 서버의 과부하를 줄이기 위해 일정 주기로 서버 시간을 가져와 클라이언트에서 흐른 시간을 더한 후 반환 서버에 시간을 요청하는 주기는 'Websquare Configure"의 client.config.xml 편집모드에서 'Overview' 탭의 'date -> autoupdateinterval'에 설정한 값 (단위: Second)이며 기본 값은 3600(1시간) 시간 계산은 (서버에서 가져온 시간) + (서버에서 가져온 이후부터 이 API를 호출할 때까지 클라이언트에서 흐른 시간)의 합으로 계산 클라이언트(브라우저)에서는 1초마다 시간 조작(임의 변경) 여부를 체크하며, 조작으로 판단될 경우 즉시 서버 시간을 갱신
Parameter
nametyperequireddescription
patternStringN[default:yyyyMMdd] 날짜 표현식(Java의 SimpleDateFormat의 패턴)
Return
typedescription
String서버 날짜(시간) 문자열
Sample
//(패턴 설명) //y Year 1996; 96 //M Month in year 07 //d Day in month 10 //H Hour in day (0-23) 0 //m Minute in hour 30 //s Second in minute 55 //S Millisecond 978 //예시 1) var dateStr = $p.getCurrentServerDate(); //yyyyMMdd //반환 값 예시) 20111225 //예시 2) var dateStr = $p.getCurrentServerDate("yyyy-MM-dd HH:mm:ss"); //반환 값 예시) 2014-11-07 15:49:10:080
getEventTarget( comp )
컴포넌트의 기본적인 정보를 JSON 객체로 반환 (이벤트 핸들러의 this도 포함)
Parameter
nametyperequireddescription
compObjectY컴포넌트 객체
Return
typedescription
Objectcomp의 정보(아이디, pluginName, realId)를 갖는 JSON 객체
Sample
//예시) Trigger 컴포넌트의 아이디가 'btn_send'이고 onclick 이벤트 핸들러로 'scwin.btn_send_onclick'가 지정된 경우 scwin.btn_send_onclick = function(e) { var jsonInfo = $p.getEventTarget(this); //반환 값 예시) //{ // "pluginName": "trigger", // "id": "btn_send", // "realId": "mf_btn_send" //} };
getFormattedDate( dateObj , pattern )
dateObj(자바스크립트 Date 객체)를 지정한 pattern 형식의 문자열로 반환
pattern이 지정되지 않으면 자바스크립트 Date 객체의 'getTime()'을 호출하여 문자열로 반환 (Java의 System.currentTimeMillis API와 유사)
Parameter
nametyperequireddescription
dateObjDateObjectY자바스크립트의 Date 객체
patternStringN날짜(시간) 표현식
Return
typedescription
String지정된 pattern으로 변환된 날짜(시간) 문자열
Sample
//(패턴 설명) //y Year 1996; 96 //M Month in year 07 //d Day in month 10 //H Hour in day (0-23) 0 //m Minute in hour 30 //s Second in minute 55 //S Millisecond 978 //예시 1) 날짜 형식을 지정하지 않은 경우 var strResult = $p.getFormattedDate(new Date()); //반환 값 예시) 1682587497661 //예시 2) 날짜 형식을 'yyyy-MM-dd'로 지정 var strResult = $p.getFormattedDate(new Date(), "yyyy-MM-dd"); //반환 값 예시) 2014-04-27 //예시 2) 날짜 형식을 'yyyy-MM-dd HH:mm:ss'로 지정 var strResult = $p.getFormattedDate(new Date(), "yyyy-MM-dd HH:mm:ss"); //반환 값 예시) 2014-04-27 18:26:19
getFrame( )
호출되는 자신을 감싸고 있는 WFrame 객체를 반환 (전역 스크립트에서 이 함수를 호출하면 null을 반환)
Return
typedescription
ObjectWFrame 객체
Sample
//예시) 'main.xml' 페이지에 구성된 WFrame 컴포넌트의 'src' 속성에 지정된 페이지에서 '$p.getFrame'를 호출하는 예시 //('main.xml' 소스 본문 예시) //속성 id, src, userData1이 지정되어 있음 //<w2:wframe id="wfm_exam1" src="sub.xml" userData1="example"></w2:wframe> //('sub.xml' 스크립트 예시) //sub.xml을 감싸고 있는 WFrame 객체를 반환 var cmtFrame = $p.getFrame(); //WFrame의 아이디를 반환 var strId = cmtFrame.getOriginalID(); //반환 값 예시) 'wfm_exam1' //WFrame의 속성 'userData1'의 값을 반환 var strUserData = cmtFrame.getUserData('userData1'); //반환 값 예시) 'example'
getFrameId( )
자신을 감싸고 있는 WFrame 객체의 아이디를 반환 (전역 스크립트에서 이 함수를 호출하면 null을 반환)
Return
typedescription
StringWFrame 객체의 아이디
Sample
// ('main.xml' 소스 본문 예시) // 속성 id, src, userData1이 지정되어 있음 // <w2:wframe id="wfm_exam1" src="sub.xml" userData1="example"></w2:wframe> // ('sub.xml' 스크립트 예시) // sub.xml을 감싸고 있는 WFrame 객체의 실행 시점 아이디를 반환 var strFrameId = $p.getFrameId(); // 반환 값 예시) 'mf_wfm_exam1' // 실행 시점에 동적으로 생성된 아이디이기 때문에 일치하지 않을 수 있음 // sub.xml을 감싸고 있는 WFrame 객체를 반환 var cmtFrame = $p.getComponentById($p.getFrameId()); // WFrame의 아이디를 반환 - 화면에 정의된 아이디 var strOriginalID = cmtFrame.getOriginalID(); // 반환 값 예시) 'wfm_exam1' // WFrame의 속성 'userData1'의 값을 반환 var strUserData = cmtFrame.getUserData('userData1'); // 반환 값 예시) 'example'
getIntervalKeyList( )
'$p.setInterval'로 등록된 Interval 객체들의 키 값을 배열로 반환
이 함수는 'Page Scope'가 적용되지 않음
Return
typedescription
ArrayInterval 객체들의 키 값의 배열
Sample
var IntervalKeyList = $p.getIntervalKeyList(); for (var i = 0; i < IntervalKeyList.length; i++) { $p.clearInterval(IntervalKeyList[i]); } // 등록된 타이머를 전부 제거
getMaxMinYear( )
'Websquare Configure"의 client.config.xml 편집모드에서 'Overview' 탭의 'date'의 설정값 'maxYear', 'minYear'을 JSON 형식으로 반환 (참고 사항) maxYear 경로 : 'Websquare Configure'의 client.config.xml 편집모드에서 'Overview' 탭의 'date -> maxYear'의 값 //설정값이 1000 ~ 9999 사이의 값이 아닌 경우 '2099'가 반환 minYear 경로 : 'Websquare Configure'의 client.config.xml 편집모드에서 'Overview' 탭의 'date -> minYear'의 값 //설정값이 1000 ~ 9999 사이의 값이 아닌 경우 '1901'이 반환 ('minYear'의 값이 'maxYear'의 값 보다 크면 두 값을 교환함)
Return
typedescription
JSONJSON 형식의 값으로 'Websquare Configure'의 client.config.xml 편집모드에서 'Overview' 탭의 'date'의 설정값 'maxYear', 'minYear' (각 항목의 최댓값과 최솟값이 있으며 두 값의 정합성을 체크함)
<Number> maxYear [default:2099] 'Websquare Configure'의 client.config.xml 편집모드에서 'Overview' 탭의 'date -> maxYear'의 값 <Number> minYear [default:1901] 'Websquare Configure'의 client.config.xml 편집모드에서 'Overview' 탭의 'date -> minYear'의 값
Sample
// 예시 1) Websquare Config에 Date 설정의 'maxYear'와 'minYear' 값을 지정하지 않은 경우 var jsnResult1 = $p.getMaxMinYear(); // 반환 값 예시) {"maxYear":2099,"minYear":1920} // 예시 2) Websquare Config에 Date 설정의 'maxYear'와 'minYear' 값을 아래와 같이 지정한 경우 // (config.js 설정 예시) // { // "WebSquare": { // "date": { // "maxYear": { "@value": "2100" }, // "minYear": { "@value": "1920" } // } // } // } var jsnResult2 = $p.getMaxMinYear(); // 반환 값 예시) {"maxYear":2100,"minYear":1920} // 예시 3) Websquare Config에 Date 설정의 'maxYear'의 값이 'minYear' 값보다 작은 경우 // (config.js 설정 예시) // { // "WebSquare": { // "date": { // "maxYear": { "@value": "2000" }, // "minYear": { "@value": "2300" } // } // } // } var jsnResult3 = $p.getMaxMinYear(); // 반환 값 예시) {"maxYear":2300,"minYear":2000}
getMetaValue( key )
Source의 Head 영역에 정의한 Meta 정보의 키에 해당하는 값을 반환
Parameter
nametyperequireddescription
keyStringYMeta정보의 키
Return
typedescription
StringMeta정보의 키에 해당되는 값
getParameter( param )
GET방식으로 넘어 온 매개변수 또는 openPopup() 함수의 dataObject에 정의한 값을 반환
GET방식의 경우 한글 매개변수는 WebSquare.text.URLEncoder로 값을 인코딩해야 한글이 깨지지 않음
Parameter
nametyperequireddescription
paramStringY값을 가져올 URL에서 지정된 Param 또는 openPopup API에 정의한 dataObject의 name에 정의한 값
Return
typedescription
String|JSONURL에 정의한 Param 문자열 또는 openPopup에 정의 한 dataObject (매개변수가 존재하지 않는 경우에는 ""이 반환)
Sample
//URL : http://localhost:8080/websquare/websquare.html?w2xPath=/test.xml&&userID=1234 var tmpUserID = $p.getParameter("userID"); //반환 값 예시 ) "1234" //$p.openPopup의 dataObject 속성을 아래와 같이 지정한 경우 //dataObject : { type : "json", data : {name:"WebSquare",version:"5.0"}, name : "rowObj" } var popRowObj = $p.getParameter("rowObj"); //반환 값 예시 ) {name:"WebSquare",version:"5.0"} //type : JSON 객체
getPopupParam( )
openPopup() 함수를 이용하여 팝업을 만들때 dataObject 속성에 정의한 값을 문자열으로 반환
dataObject 속성과 XML 속성이 둘다 정의 된 경우 dataObject의 값만 반환
dataObject 속성을 이용한 경우 $p.getParameter("dataObject의 name에 할당한 값") 함수를 이용하길 권장함
Return
typedescription
String팝업을 만들때 dataObject 속성에 정의한 값
Sample
//openPopup() 함수의 dataObject 속성을 아래와 같이 정의한 경우 //dataObejct : {type:"json" , name:"tmpData" , data:{"test":"WebSquare"}} var dataStr = $p.getPopupParam(); //반환 값 예시 ) {"test":"WebSquare"}
getPopupUrl( )
팝업 화면에서 호출되어지는 함수이며, 현재의 팝업 화면의 URL을 반환 ('$p.openPopup' 함수를 호출할 때, 'options.type'값이 'wframePopup'으로 지정되어야 사용할 수 있음)
Return
typedescription
String현재 팝업 화면의 URL
Sample
// (팝업 호출 예시) 팝업 화면 유형 값은 "wframePopup"로 지정되어야 함 var options = { type: "wframePopup", id: "popup_exam1", popupName: "sample popup" }; $p.openPopup("/api_sample/$p.getPopupUrlP01.xml", options); // (팝업 화면에서 '$p.getPopupUrl' 호출 예시) var strResult = $p.getPopupUrl(); // 반환 값 예시) '/api_sample/$p.getPopupUrlP01.xml'
getPopupWindow( id )
openPopup() 함수에 정의한 아이디로 검색하여 해당 팝업 화면의 Window를 반환
Parameter
nametyperequireddescription
idStringY팝업 화면의 아이디
Return
typedescription
Object해당 팝업 화면의 Window 객체
Sample
//팝업 화면의 아이디가 popup1인 경우의 Window 객체 반환 var popWinObj = $p.getPopupWindow("popup1"); //자식창 선언 예)scwin.tmpVal = "tmpVal"; //팝업 화면에 tmpVal로 선언 된 전역 변수 접근시 var popTmpVal = popWinObj.scwin.tmpVal; //팝업 화면에 input1의 아이디를 가진 컴포넌트의 값 가져오기 var popInputVal = popWinObj.input1.getValue();
getPopupWindowList( useFrameModal , scope , bMain )
$p와 동일한 Scope를 가진 wframePopup 및 iframePopup 객체의 Window를 반환
Scope 또는 팝업 화면의 유형과 관계없이 모든 팝업 화면에 접근하려면 getAllPopupList() 또는 getAllPopupWindowList() 함수를 호출해야 함
Parameter
nametyperequireddescription
useFrameModalBooleanNFrameModal 기능을 사용하는 팝업 화면을 가져올 때 사용
scopeStringN팝업 화면을 가져올 Scope를 지정 (값이 없으면 호출한 화면의 Scope를 자동으로 가져옴)
bMainBooleanNiframePopup 또는 browserPopup일 때 반환된 Window의 $p.main()을 실행한 결과를 반환할 지에 대한 여부
Return
typedescription
ArrayWindow 목록
Sample
// $p와 동일한 Scope를 가진 팝업 화면의 Window 객체들 var popWinObj = $p.getPopupWindowList();
getRunningWorkflow( workflowID )
workflowID와 아이디가 동일한 실행 중인 워크플로우 객체를 반환
workflowID를 지정하지 않았고 여러 개의 워크플로우가 실행 중일 경우, 가장 먼저 호출된 워크플로우가 반환됨
Parameter
nametyperequireddescription
workflowIDStringN워크플로우 아이디
Return
typedescription
Object실행 중인 워크플로우 객체 (반환될 객체가 없으면 null이 반환)
Sample
// 예시 1) 실행 중인 워크플로우의 아이디가 'wf_exam1'인 경우 var objWorkflow = $p.getRunningWorkflow("wf_exam1"); // 실행 중인 워크플로우를 'reject'할 경우 objWorkflow.reject();
getRunningWorkflowID( )
실행 중인 워크플로우의 실행 시점의 아이디를 반환
여러 개의 워크플로우가 실행 중일 경우, 가장 먼저 호출된 워크플로우의 아이디가 반환됨
Return
typedescription
String실행 중인 워크플로우 실행 시점의 아이디 (반환될 객체가 없으면 null이 반환)
Sample
// 예시 1) 실행 중인 첫 번째 워크플로우의 아이디가 'wf_exam1'인 경우 var strWorkflowID = $p.getRunningWorkflowID(); // 반환 값 예시 1) //실행 중인 워크플로우의 실행 시점의 아이디로 반환 값이 다를 수 있음 // 'mf_wfm_exam1_wrk_exam1'
getRuntimeId( id )
실행 시점의 컴포넌트 아이디를 반환
WFrame의 Scope 기능을 사용하면, 각 화면의 컴포넌트 아이디는 실행 시점에 고유 아이디로 변경됨
WFrame에 구성된 컴포넌트의 아이디 생성 규칙은 'WFrame의 아이디' + '_' + '컴포넌트 아이디' 형식임
Parameter
nametyperequireddescription
idStringY화면에 정의한 컴포넌트 아이디
Return
typedescription
String실행 시점의 컴포넌트 아이디
Sample
// 다음의 예시는 'Websquare Configure"의 client.config.xml 편집모드에서 'Overview' 탭의 'stricMode -> scope variable'의 값이 'mf'로 정의된 경우 임 (이 설정은 기본 값 임) // 화면 구성은 다음과 같음 // 'main.xml'과 'sub.xml'에 Input 컴포넌트가 구성되어 있고, 각각의 아이디는 동일하게 'ibx_exam1'으로 정의되어 있음 // 'main.xml'에는 WFrame 컴포넌트가 구성되어 있으며, 속성 'src'의 값은 'sub.xml'로 지정되어 있음 // (main.xml UI 구성 예시) // <w2:input id='ibx_exam1'/> // <w2:wframe id='wfm_exam1' src='sub.xml'/> // (sub.xml UI 구성 예시) // <w2:input id='ibx_exam1'/> // (main.xml 스크립트 예시) var strId = $p.getRuntimeId("ibx_exam1"); // 반환 값 예시) 'mf_ibx_exam1' // (sub.xml 스크립트 예시) var strId = $p.getRuntimeId("ibx_exam1"); // 반환 값 예시) 'mf_wfm_exam1_ibx_exam1'
getStringByteSize( str )
문자열의 Byte 크기를 반환
'Websquare Configure'의 client.config.xml 편집모드에서 'Overview' 탭의 'encoding -> byteCheckEncoding'의 값이 'euc-kr'이면 한글은 2Byte로, 'utf-8'이면 3Byte로 계산됨
Parameter
nametyperequireddescription
strStringY문자열
Return
typedescription
NumberByte 크기
Sample
var numStrSize = $p.getStringByteSize("web123+"); // 반환 값 예시) 7 // (설정값이 'euc-kr'인 경우) var numStrSize = $p.getStringByteSize("한글✚"); // 반환 값 예시) 6 // (설정값이 'utf-8'인 경우) var numStrSize = $p.getStringByteSize("한글✚"); // 반환 값 예시) 9
getSubmission( submissionId )
submissionId에 해당하는 서브미션 객체를 반환
Parameter
nametyperequireddescription
submissionIdStringY서브미션의 아이디
Return
typedescription
Object서브미션 객체 (반환될 객체가 없으면 null이 반환)
Sample
// (소스 예시) // <xf:submission id="sbm_exam1" ref="data:json,dlt_exam1" target="data:json,dlt_result" action="_data/largeData.json" method="post" // mediatype="application/json" encoding="UTF-8" mode="asynchronous" // ev:submit="scwin.sbm_exam1_submit" ev:submitdone="scwin.sbm_exam1_submitdone" ev:submiterror="scwin.sbm_exam1_submiterror" > // </xf:submission> // 서브미션 객체 반환 var objSubmission = $p.getSubmission( "submission1" ); // 속성 'action'의 설정값 확인 var strAction = objSubmission.action; // 반환 값 예시) '_data/largeData.json' // 서브미션의 속성 'ref' 변경 objSubmission.ref = "data:json,dlt_reqInfo";
getSubmissionList( options )
현재 Scope(이 함수를 호출한 화면)내의 모든 서브미션 객체를 반환
전체 화면 대상의 모든 서브미션 객체를 반환하려면 options 속성의 "all" 값을 true로 전달함 (단 iframePopup 또는 browserPopup과 같이 Window객체가 다른 화면은 대상에서 제외)
Parameter
nametyperequireddescription
optionsJSONNReturn 정보를 변경할 때 사용하는 Option
<String:N> options.returnType : [default: obj, json, id] Return 형식을 지정 ("json"으로 설정한 경우 JSON array 형식으로, "id"로 설정한 경우 String array 형식으로 값이 반환) <Boolean:N> options.all : [defalut: false, true] 전체 화면을 대상으로 할지 여부 (iframe, browserPopup 제외)
Return
typedescription
Array서브미션 객체 배열
Sample
// (화면 예시) main.xml 아래에 wframe1.xml과 wframe2.xml이 있고 각 화면에 submission1, submission2가 정의된 경우 wframe1.xml에서 $p.getSubmissionList();를 실행하면 wframe1.xml에 있는 submission1, submission2 객체가 배열로 반환 main.xml에서 $p.getSubmissionList({"returnType": "json", {"all" : true});를 실행하면 실행 결과는 아래와 같음 // {"mf":["submission1","submission2"], "mf_wframe1":["submission1","submission2"], "mf_wframe2":["submission1","submission2"]}
getTimeoutKeyList( )
일정 시간이 지난 후에 함수를 실행하기 위해서 '$p.setTimeout'로 등록된 Timeout 객체의 키 값을 배열로 반환
이 함수는 'Page Scope'가 적용되지 않음
Return
typedescription
ArrayTimeout 객체의 키 값의 배열
Sample
// Timeout 등록 예시 $p.setTimeout( function () { console.log("setTimeout"); }, { key: "exam_timeout1", delay: 3000 } ); var arrKeyList = $p.getTimeoutKeyList(); // 반환 값 예시) ['exam_timeout1'] // 등록된 Timeout 객체 해제 arrKeyList.forEach(function (argKey) { $p.clearTimeout(argKey); // timeout 객체 제거 });
getWorkflow( id )
아이디에 해당하는 워크플로우 객체를 반환
동적으로 생성된 워크플로우 객체는 워크플로우가 실행 중일 때만 반환됨
Parameter
nametyperequireddescription
idStringY워크플로우 아이디
Return
typedescription
Object워크플로우 객체
Sample
// 등록된 워크플로우의 아이디가 'wf_exam1'인 경우 var objWorkflow = $p.getWorkflow("wf_exam1"); // 실행 중인 워크플로우를 'reject'할 경우 objWorkflow.reject();
hideModal( )
최상위 화면을 감싼 Modal Layer를 숨김 (관련 속성) $p.showModal()
Sample
$p.hideModal();
hideProcessMessage( )
작업진행 메시지인 Process Message Layer를 숨김 (Process Message Layer는 submission, ajax, excel download 등과 같은 기능이 실행 중 일 때 표시됨) (관련 속성) $p.showProcessMessage()
Sample
$p.hideProcessMessage();
isPopup( isClosest )
현재 화면의 팝업 여부를 반환 (isClosest를 true로 지정하면 상위(부모) 프레임을 거슬러 올라가면서 팝업 여부를 체크)
Parameter
nametyperequireddescription
isClosestBooleanN[default: false, true] 상위(부모) 프레임을 거슬러 올라가면서 팝업 여부를 체크할지의 여부
Return
typedescription
Boolean팝업 여부
Sample
// 예시 1) 현재 화면의 팝업 여부 확인 var ispopup1 = $p.isPopup(); // 반환 값 예시 1-1 : 현재 화면이 팝업인 경우) true // 반환 값 예시 1-2 : 현재 화면이 팝업이 아닌 경우) false // 예시 2) 상위 화면(현재 화면 포함)의 팝업 여부 확인 var ispopup2 = $p.isPopup(true); // 반환 값 예시 2-1 : 현재 화면이 팝업인 경우) true // 반환 값 예시 2-2 : 현재 화면이 팝업이 아닌 경우) false
isRunningWorkflow( workflowID )
실행 중인 워크플로우가 있는지를 반환 (workflowID가 전달된 경우 해당 아이디의 워크플로우 실행 여부를 반환)
Parameter
nametyperequireddescription
workflowIDStringN워크플로우 아이디
Return
typedescription
Boolean실행 여부
Sample
// 예시 1) 실행 중인 워크플로우가 있는지의 여부 var isRun1 = $p.isRunningWorkflow(); // 반환 값 예시 1-1) true //실행 중인 워크플로우가 있는 경우 // 반환 값 예시 1-2) false //실행 중인 워크플로우가 없는 경우 // 예시 2) 아이디가 'wrk_exam1'인 워크플로우가 실행 중인 지의 여부 var isRun2 = $p.isRunningWorkflow("wrk_exam1"); // 반환 값 예시 2-1) true //실행 중인 경우 // 반환 값 예시 2-2) false //실행 중이 아니거나 정의된 워크플로우가 없는 경우
isWFramePopup( isClosest )
현재 화면이 WFrame 유형의 팝업인지의 여부를 반환 (참고 사항) WFrame 유형의 팝업이란, '$p.openPopup'로 팝업을 실행 시 options의 'type' 속성 값이 'wframePopup'으로 지정된 경우를 말함
Parameter
nametyperequireddescription
isClosestBooleanN[default: false, true] 함수를 호출한 화면이 'wframePopup' 팝업 안에 WFrame으로 구성된 경우, 최상위 프레임까지 체크할지의 여부
Return
typedescription
Boolean'wframe' 유형의 팝업 인지의 여부
Sample
// (화면 구성 예시) // main.xml : 팝업을 호출하는 화면. '$p.openPopup' 함수로 'popup.xml' 화면을 팝업 // popup.xml : 팝업 화면. 화면에 WFrame이 구성되어 있고 'src'로 'popup_wframe.xml'이 지정 // popup_wframe.xml : 팝업 화면에서 WFrame의 컨텐츠로 구성된 화면 //***************************** // 화면별 스크립트 실행 예시 - 팝업의 유형이 'wframePopup'인 경우 //***************************** // (main.xml) var isWFramePopup1 = $p.isWFramePopup(); // 반환 값 예시) false $p.openPopup("popup.xml", { "type": "wframePopup" }); // 팝업 호출 // (popup.xml) var isWFramePopup2 = $p.isWFramePopup(); // 반환 값 예시) true var isWFramePopup3 = $p.isWFramePopup(true); // 반환 값 예시) true // (popup_wframe.xml) var isWFramePopup4 = $p.isWFramePopup(); // 반환 값 예시) false var isWFramePopup5 = $p.isWFramePopup(true); // 반환 값 예시) true //***************************** // 화면별 스크립트 실행 예시 - 팝업의 유형이 'wframePopup'이 아닌 경우 //***************************** // (main.xml) var isWFramePopup1 = $p.isWFramePopup(); // 반환 값 예시) false $p.openPopup("popup.xml", { "type": "iframePopup" }); // 또는 { "type": "browserPopup" } // (popup.xml) var isWFramePopup2 = $p.isWFramePopup(); // 반환 값 예시) false var isWFramePopup3 = $p.isWFramePopup(true); // 반환 값 예시) false // (popup_wframe.xml) var isWFramePopup4 = $p.isWFramePopup(); // 반환 값 예시) false var isWFramePopup5 = $p.isWFramePopup(true); // 반환 값 예시) false
js( scriptUrl , callback )
여러 개의 외부 자바스크립트 파일(이하 JS)을 로드할 때 JS별 순서 보장이 필요한 경우 사용
scriptUrl에 선언된 JS 로딩은 비동기로 진행하고, 실행은 순서대로 함
scriptUrl의 수는 정해져 있지 않으며 마지막 인자의 유형이 함수이면, 모든 로딩이 완료된 후 지정된 해당 함수를 실행
Parameter
nametyperequireddescription
scriptUrlStringY자바스크립트 파일 URL (최소 하나 이상의 파일 URL을 개수 만큼 지정할 수 있음)
callbackFunctionN자바스크립트 파일들이 모두 실행된 이후 실행할 함수
Sample
// 파일 로딩 순서(비동기로 진행) : '/js/exam1.js' -> '/js/exam2.js' // 스크립트의 실행 순서 : '/js/exam1.js' -> '/js/exam2.js' -> 'callback Function' $p.js( "/js/exam1.js", "/js/exam2.js", function () { // 콜백 로직 구성. } );
jsAsync( pathArr , options )
$p.js의 기능을 확장한 API로 업무 공통 파일 또는 외부 JS를 동적으로 로드 할 때 사용함 (scope기능 및 async await 기능을 지원함) JS 로딩은 비동기로 진행하고, 실행은 순서대로 됨 $p.jsAsync를 호출한 페이지의 scope가 적용됨 ($p.jsAsync를 호출한 페이지의 scwin이나 컴포넌트 객체에 직접 접근이 가능함) 이 함수는 async 함수로 JS로딩이 끝난 이후에 대해 처리를 하려면 await $p.jsAsync() 과 같이 await 키워드를 붙이거나 $p.jsAsync().then()으로 처리함 기본적으로 캐시 기능이 적용됨 (한 번 로드한 js는 함수 형태로 전역에 저장하며, 같은 url이 요청될 경우 네트워크 요청 없이 전역에 저장했던 함수를 scope만 바꿔서 다시 실행함)
Parameter
nametyperequireddescription
pathArrArrayY자바스크립트 파일 URL이 담긴 배열
optionsJSONN세부 설정
<Boolean:N> options.noCache : 캐시 기능을 사용하지 않으려면 true로 설정함 (기본 동작은 캐시기능 사용임) <String:N> options.scopeVariable : scope 기능을 적용할 객체를 지정함 (여러 객체를 지정하려면 구분자 ","를 사용, 기본값은 "scwin"임) <Boolean:N> options.wpack : js를 가져올 때 _wpack_경로에서 가져올지에 대한 여부를 설정함 (w-pack에서 js를 치환하는 기능을 적용한 경우 이 옵견값을 true로 지정함)
Return
typedescription
ObjectPromise 객체
Sample
// 업무 공통 모듈 module_scwin.js, module_scvar.js 및 외부 JS인 lib.js를 동적으로 로드하는 예제 var pathArr = ["/page/ui/module/module_scwin.js", "/page/ui/module/module_scvar.js", "/cm/js/lib.js"]; var options = {"noCache":false,"scopeVariable":{"scwin,scvar"}}; // 캐시 기능 사용. scope 적용 객체를 scwin 및 scvar로 지정 await $p.jsAsync(pathArr, options); scwin.module1(param); scvar.module2(param2); lib.test(param3);
loadGlobalCommon( infoArray )
동적으로 globalCommon 로드
Parameter
nametyperequireddescription
infoArrayArrayYJSON 객체를 담은 배열
<Object:Y> infoObj globalCommon 정보를 담은 JSON 객체 <String:Y> infoObj.src globalCommon 파일 경로 <String:Y> infoObj.name globalCommon 참조할 때 사용할 이름 <Boolean:N> infoObj.reload 이미 같은 이름으로 globalCommon 또는 msaCommon이 로딩되어 있을 때 다시 로딩할지에 대한 여부. 기본값은 false.
Return
typedescription
PromiseArray 내의 모든 pageCommon 로딩이 완료되면 resolve되는 Promise 객체 반환. 내부적으로 Promise.allSettled를 사용.
Sample
// Promise.then 예제 scwin.trigger_page1_onclick = function() { var jsonArr = [{ "src": "/path/common/util.xml", "name": "$c.util", "reload": "true" // $c.util이 이미 로딩되어 있는 경우 다시 로딩한다. },{ "src": "/path/common/data.xml", "name": "$c.data" "reload": "false" // $c.data가 이미 로딩되어있으면 로딩하지 않고 기존의 $c.data를 유지한다. (기본값 false) },{ "src": "/path/common/date.xml", "name": "$c.date" },{ "src": "/path/common/str.xml", "name": "$c.str" }]; $p.loadGlobalCommon(jsonArr).then(function(resolve,reject){ var dataTest = $c.data.getMatchedJSON(dataList1, [ { columnId : "col1", operator : "==", value : "0"}, { columnId : "col2", operator : "==", value : "1", logical : "||" } ]); var dateTest = $c.date.addHour("2024042511", 10); var strTest = $c.str.lpad("24", 4, "0"); textarea1.setValue("$c.data test\n" + JSON.stringify(dataTest, undefined, 4)); textarea2.setValue("$c.date test\n" + dateTest); textarea3.setValue("$c.str test\n" + strTest); }).catch(function(err){ console.error(err); }); } // async await 예제 scwin.trigger_page1_onclick = async function() { try { var jsonArr = [{ "src": "/path/common/util.xml", "name": "$c.util", "reload": "true" // $c.util이 이미 로딩되어 있는 경우 다시 로딩한다. },{ "src": "/path/common/data.xml", "name": "$c.data", "reload": "false" // $c.data가 이미 로딩되어있으면 로딩하지 않고 기존의 $c.data를 유지한다. (기본값 false) },{ "src": "/path/common/date.xml", "name": "$c.date" },{ "src": "/path/common/str.xml", "name": "$c.str" }]; await $p.loadGlobalCommon(jsonArr); var dataTest = $c.data.getMatchedJSON(dataList1, [ { columnId : "col1", operator : "==", value : "0"}, { columnId : "col2", operator : "==", value : "1", logical : "||" } ]); var dateTest = $c.date.addHour("2024042511", 10); var strTest = $c.str.lpad("24", 4, "0"); textarea1.setValue("$c.data test\n" + JSON.stringify(dataTest, undefined, 4)); textarea2.setValue("$c.date test\n" + dateTest); textarea3.setValue("$c.str test\n" + strTest); } catch(err) { console.error(err); } }
loadPageCommon( infoArray )
동적으로 pageCommon 로드
Parameter
nametyperequireddescription
infoArrayArrayYJSON 객체를 담은 배열
<Object:Y> infoObj pageCommon 정보를 담은 JSON 객체 <String:Y> infoObj.src pageCommon 파일 경로 <String:Y> infoObj.id pageCommon을 참조할 때 사용할 이름
Return
typedescription
PromiseArray 내의 모든 pageCommon 로딩이 완료되면 resolve되는 Promise 객체 반환. 내부적으로 Promise.allSettled를 사용.
Sample
// Promise.then 예제 scwin.trigger_page1_onclick = function() { var jsonArr = [{ "src": "/path/common/commonA.xml", "id": "common1" },{ "src": "/path/common/commonB.xml", "id": "common2" },{ "src": "/path/common/commonC.xml", "id": "common3" }]; $p.loadPageCommon(jsonArr).then(function(resolve,reject){ common1.test("AAA"); common2.test("BBB"); common3.test("CCC"); }).catch(function(err){ console.error(err); }); } // async await 예제 scwin.trigger_page2_onclick = async function() { try { var jsonArr = [{ "src": "/path/common/commonA.xml", "id": "common1" },{ "src": "/path/common/commonB.xml", "id": "common2" },{ "src": "/path/common/commonC.xml", "id": "common3" }]; await $p.loadPageCommon(jsonArr); common1.test("XxX"); common2.test("YyY"); common3.test("ZzZ"); } catch(err) { console.error(err); } }
log( msg )
웹스퀘어를 통해 로그를 출력 (로그 확인법) 방법 1) 웹스퀘어 로그 뷰어 웹스퀘어 화면이 실행된 브라우저에서 'Ctrl'키를 누른 상태에서 마우스 오른쪽 버튼을 클릭하면 화면에 컨텍스트 메뉴가 노출됨 컨텍스트 메뉴에서 '로그 보기' 메뉴를 클릭하면 로그 뷰어가 팝업됨 주의할 점은 '웹스퀘어 로그 뷰어'가 HTML 태그 'textarea'로 구현되었기 때문에, 출력 대상이 객체 유형일 경우 '[object Object]'와 같은 문자열로 출력되거나 오류가 발생할 수 있음 [default: use, block] 이 방법을 사용하려면 'Websquare Configure"의 client.config.xml 편집모드에서 'Dev' 탭의 'debug -> debugMenu'의 값을 'use'로 지정해야 함 (block : debugMenu를 사용하지 않음) 방법 2) 브라우저 개발자 도구의 콘솔(Console) 브라우저에서 제공하는 개발자 도구의 콘솔에서 로그를 확인할 수 있음 [default: false, true] 이 방법을 사용하려면 'Websquare Configure"의 client.config.xml 편집모드에서 'Dev' 탭의 'debug -> console'의 값을 'true'로 지정해야 함
Parameter
nametyperequireddescription
msgStringY출력 할 메시지
Sample
$p.log('Log Test');
main( )
현재 화면이 속한 Window를 기준으로 최상위 페이지의 Scope 객체를 반환
반환 받은 Scope 객체를 통해 최상위 화면에 구성된 'scwin' 객체 및 컴포넌트에 접근할 수 있음
현재 화면이 팝업인 경우, 유형이 'iframePopup', 'browserPopup'이면 팝업 화면이 별도의 Window 객체에 생성되므로 팝업의 최상위 페이지의 Scope 객체를 반환
Return
typedescription
ObjectScope 객체
Sample
// 예시 1) 최상위 페이지에 구성된 InputBox 컴포넌트의 아이디가 'ibx_exam1'일 때 컴포넌트의 'setValue' 함수를 호출하는 예시 $p.main().ibx_exam1.setValue("Example"); // 예시 2) 최상위 페이지의 'scwin.getTopPageInfo' 함수를 호출하는 예시 $p.main().scwin.getTopPageInfo();
openPopup( url , options , params , target )
팝업을 생성하여 띄워줌
Parameter
nametyperequireddescription
urlStringY팝업의 URL (보통 웹스퀘어 화면 파일의 경로를 지정)
optionsObjectY팝업 생성을 위한 선택 사항
<String:N> options.id : [default: ppo1] 팝업의 아이디 <String:N> options.type : [default: 'browserPopup', 'iframePopup', 'wframePopup'] 팝업의 유형(브라우저에 랜더링되는 형태에 따라 구분) browserPopup : 프로세스가 분리되어 독립적으로 새로운 창(Window)으로 생성되는 팝업으로 부모 화면에 제약을 받지 않고 팝업 위치를 자유롭게 움직일 수 있음 ("window.open"함수를 사용) iframePopup : 팝업을 호출한 화면에 IFrame으로 생성되는 팝업. 부모 화면에 종속됨 wframePopup : 팝업을 호출한 화면에 WFrame으로 생성되는 팝업. 부모 화면에 종속됨 <String:N> options.width : [default: 500px] 팝업의 Width(너비) 값 <String:N> options.height : [default: 500px] 팝업의 Height(높이) 값 <String:N> options.top : [default: 100px] 팝업의 Top 위치 값 (위치 계산은 "options.type"의 설정 값이 "iframePopup" 또는 "wframePopup"인 경우에는 브라우저를 기준으로 하며, "browserPopup"인 경우에는 모니터를 기준으로 함) <String:N> options.left : [default: 100px] 팝업의 Left 위치 값 (위치 계산은 "options.type"의 설정 값이 "iframePopup" 또는 "wframePopup"인 경우에는 브라우저를 기준으로 하며, "browserPopup"인 경우에는 모니터를 기준으로 함) <String:N> options.popupName : [default: WebSquarePopup] 팝업 객체의 이름 (팝업 프레임의 상단 표시줄에 표시되며, "options.type"의 설정 값이 "browserPopup"일 때, "document.title"에 할당됨) <Boolean:N> options.modal : [default: false, true] 부모 Window의 제어 할지의 여부 (false 지정 시 부모 Window의 제어가 가능) <String:N> options.frameModal : [default: "", "top", "parent", "frame", "frame의 아이디"] Modal을 표시해줄 프레임("프레임의 아이디"인 경우 WFrame, TabControl, WindowContainer의 아이디)을 지정 <Boolean:N> options.useModalStack : [default: false, true] 마지막으로 생성된 팝업만 활성화할지의 여부 ("options.modal"이 true로 지정된 경우에만 동작함) <String:N> options.style : [default: ""] 팝업의 스타일. 값이 지정되면 "options.left", "options.top", "options.width", "options.height"는 적용되지 않습니다. <Object:N> options.dataObject : 팝업에 전달한 데이터의 정보를 담은 JSON(type, data, name 으로 구성) 객체 ("$p.getParameter"함수로 name에 지정한 값을 사용함 (예시) { type: ["xml","string","json","array"], data: "데이터로 type에 지정한 유형에 맞게 할당" , name :"ParamName"} <Boolean:N> options.resizable : [default: false, true] 팝업의 크기 조절 여부 ("iframePopup" 또는 "wframePopup"일 때 지원) <Boolean:N> options.useMaximize : [default: true, false] 팝업의 상단 타이틀 바 영역을 더블 클릭했을 때 팝업 창을 최대화할지의 여부 ("iframePopup" 또는 "wframePopup"일 때 지원) <Boolean:N> options.useModalDisable : [default: false, true] 부모창의 컴포넌트들의 비활성화(disabled) 적용 여부 ("options.modal"이 true이고 "options.useModalStack"이 "false"로 지정된 경우. "iframePopup" 또는 "wframePopup"일 때 지원) <String:N> options.closeAction : [default: ""] 팝업의 닫기 버튼을 클릭했을 때 실행할 함수명(지정한 함수에서 반환값을 true로 작성해야 팝업이 닫힘. "iframePopup" 또는 "wframePopup"일 때 지원. 매개변수로 팝업의 실행 시점 아이디, 닫기 버튼의 클릭 여부등을 확인할 수 있음) (설정 예시) scwin.popup_closeAction = function (argRuntimeID, argJsnInfo) { //argRuntimeID : 팝업의 실행 시점 아이디 //argJsnInfo : 팝업의 부가 정보를 담은 JSON 객체 //argJsnInfo.isCloseButtonClick : [true, false] 팝업의 닫기 버튼을 클릭해서 호출되었는지의 여부 return true; //팝업을 닫음 }; <String:N> options.className : [default: ""] 팝업의 최상위 "div" 요소의 "class" 속성에 할당 (팝업 별로 디자인을 적용할 때 사용. "iframePopup" 또는 "wframePopup"일 때 지원) <Boolean:N> options.useControl : [default: false, true] 팝업의 상단 타이틀 영역에 기능 버튼 "최소화", "최대화", "닫기"를 표시할지의 여부 ("iframePopup" 또는 "wframePopup"일 때 지원) <Object:N> options.controls : [default: { minimize: true, maximize: true, close: true }] "options.useControl"의 설정 값이 true이 일 때, 팝업 상단 타이틀 영역에 기능버튼 "최소화", "최대화", "닫기"의 표시 여부를 지정 ("iframePopup" 또는 "wframePopup"일 때 지원) (설정 예시) { // 기능 버튼 "최소화", "닫기"를 표시 minimize: true, maximize: false, close: true } <Object:N> options.foldSize : [default: { width: 500 }] 팝업 창이 최소화되었을 때의 팝업 창의 너비 ("options.useControl"이 true이고 "options.controls.minimize"가 true일 때 지원. 보통 "options.width"의 설정 값과 동일하게 지정. "iframePopup" 또는 "wframePopup"일 때 지원) (설정예시) { width: 200 } // 팝업이 최소화 되었을 때 팝업의 너비를 "200px"로 표시 <Boolean:N> options.useATagBtn : [default: false, true] 팝업 상단의 버튼 "닫기"를 브라우저에 "a"태그로 랜더링할지의 여부 (설정 값이 false인 경우 "div"태그로 생성. "iframePopup" 또는 "wframePopup"일 때 지원) <Boolean:N> options.disableCloseButton : [default: false, true] 팝업 상단의 버튼 "닫기"를 비활성화할지의 여부 ("iframePopup" 또는 "wframePopup"일 때 지원) <Boolean:N> options.alwaysOnTop : [default: true, false] 여러 개의 팝업 위치가 겹칠 경우 팝업 창을 클릭하면 클릭한 팝업을 상위로 표시할지 여부. 이 기능은 "options.type"의 설정 값이 "iframePopup" 또는 "wframePopup"일 때 지원됨 <String:N> options.popupUrl : [default: "popup.html"] 웹스퀘어 화면을 팝업 창으로 띄우기 위한 페이지 URL ("browserPopup"일 때 지원) <Boolean:N> options.windowDragMove : [default: false, true] 마우스 드래그로 팝업 위치를 이동시킬 때, 팝업창이 마우스 위치와 동일하게 움직일지의 여부 (false인 경우, 마우스를 드래그하는 동안 팝업은 움직이지 않고 외각 라인만 마우스 위치에 따라 이동하다가 마우스 드롭 시 팝업이 해당 위치로 이동. "iframePopup" 또는 "wframePopup"일 때 지원) <String:N> options.windowMoveType : [default: "restrict"] 팝업 드래그시 영역밖으로 나갈때 동작 속성을 지정 ("restrict"은 영역 밖으로 나가지 않도록 영역 안쪽으로 이동, "overflow"은 마우스 포인터 영역 밖으로 나간 시점 위치 그래도 고정) <String:N> options.minVisibleWindowPixel : [default: 0] windowMoveType="overflow"설정 후 팝업 드래그시 영역 안에 보여질 최소한의 팝업 크기 <Boolean:N> options.processMsgFrame : [default: false, true] "ProcessMessage" 레이어를 팝업 화면에만 제한적으로 표시할 지의 여부 ("wframePopup"일 때 지원) <Boolean:N> options.fixPosition : [default: false, true] 팝업의 위치를 고정할지의 여부 ("iframePopup" 또는 "wframePopup"일 때 지원) <Boolean:N> options.status : [default: false, true] 상태바 출력 유무 (자바스크립트의 "window.open"의 팝업 옵션 "status"에 "yes" 또는 "no"로 할당되며 브라우저 지원 여부에 따라 동작이 다를 수 있음. "browserPopup"일 때 지원) <Boolean:N> options.menubar : [default: false, true] 상단 메뉴바 출력 유무 (자바스크립트의 "window.open"의 팝업 옵션 "menubar"에 "yes" 또는 "no"로 할당되며 브라우저 지원 여부에 따라 동작이 다를 수 있음. "browserPopup"일 때 지원) <Boolean:N> options.scrollbars : [default: false, true] 스크롤 출력 유무 (자바스크립트의 "window.open"의 팝업 옵션 "scrollbar"에 "yes" 또는 "no"로 할당되며 브라우저 지원 여부에 따라 동작이 다를 수 있음. "browserPopup"일 때 지원) <String:N> options.srcData : [deprecated][default: null] 속성 "options.dataObject"로 대체 ("WebSquare 2.0" 에서 사용하던 속성으로 팝업에 전달할 InstanceNode의 xPath를 지정함. "iframePopup" 또는 "browserPopup"일 때 지원됨) <String:N> options.destData : [deprecated][default: null] 속성 "options.dataObject"로 대체 ("WebSquare 2.0" 호환 속성으로 "options.srcData"에 지정한 InstanceNode를 할당할 팝업의 InstanceNode의 xPath를 지정함. "iframePopup" 또는 "browserPopup"일 때 지원됨)
paramsObjectN[deprecated] 사용되지 않는 매개변수 (target을 사용할 경우 null로 입력)
targetObjectN[default: window] Window객체
Sample
// 팝업 화면에 데이터를 전달 (dataObject를 통해 전달 가능) var jsnPopupData = { "type" : "json", // 데이터 유형. "json"을 권장 "name" : "exam_param", // 데이터를 가져오기 위한 파라미터 이름으로 팝업 화면에서 $p.getParameter("exam_param")로 추출할 수 있음 "data" : { "Personal Info" : { "Name": "Lee", "Age": 50, "Married" : false}, "Region": "Seoul" } // 실제 전달할 데이터 }; // 팝업 생성 옵션 지정 var options = { id : "exam_popup", type : "wframePopup", width: "230px", height: "250px", top: "130px", left: "200px", popupName : "팝업 예제", modal : true, closeAction : "scwin.popup_closeAction", // [선택] 팝업의 닫기 버튼을 클릭했을 때 실행할 함수명 dataObject : jsnPopupData }; // 팝업 생성 $p.openPopup("/sub_popup.xml", options); // 팝업 생성 옵션의 closeAction 함수 정의 예시 scwin.popup_closeAction = function (argRuntimeID, argJsnInfo) { // argRuntimeID : 팝업의 실행 시점 아이디 // argJsnInfo : 팝업의 부가 정보를 담은 JSON 객체 // argJsnInfo.isCloseButtonClick : [true, false] 팝업의 닫기 버튼을 클릭해서 호출되었는지의 여부 return true; //팝업 닫기 (반환 값이 true인 경우만 팝업이 닫힘) }; // 팝업창에서 전달받은 데이터를 반환받기 var jsnParamData = $p.getParameter("exam_param"); // 반환 값 예시) // { // "Personal Info" : { "Name": "Lee", "Age": 50, "Married" : false}, // "Region": "Seoul" // };
parent( )
호출한 화면의 부모 페이지의 Scope 객체를 반환
팝업 유형이 'iframePopup', 'browserPopup'일 때, 팝업 화면은 별도의 Window 객체에 생성되므로 이 경우 해당 함수를 호출하면, 팝업을 호출한 화면의 최상위 페이지의 Scope 객체가 반환됨 (주의 사항) 호출하는 화면이 WFrame의 'scpoe' 속성이 'true'로 지정되지 않은 화면이라면 부모 화면의 최상위 페이지의 Scope 객체가 반환됨 ('Websquare Configure"의 client.config.xml 편집모드에서 '컴포넌트' 탭의 'WFrame -> scope'의 값은 'true'임)
Return
typedescription
Object전역 Window객체 또는 WFrame의 Scope 객체
Sample
// 예시 1) 부모 페이지에 구성된 InputBox 컴포넌트의 아이디가 'ibx_exam1'일 때 컴포넌트의 'setValue' 함수를 호출하는 예시 $p.parent().ibx_exam1.setValue("Example"); // 예시 2) 부모 페이지의 'scwin.getTopPageInfo' 함수를 호출하는 예시 $p.parent().scwin.getTopPageInfo();
parseDate( dateStr , format )
포맷이 적용된 날짜 문자열 객체를 반환 (자바스크립트의 Date 객체)
dateStr에서 숫자만 추출하여 format을 바탕으로 Date 객체를 생성
Parameter
nametyperequireddescription
dateStrStringY날짜 문자열
formatStringN[default: yyyyMMdd] 날짜 포맷 (구분 기호(Delimiter)는 포함할 수 없음)
Return
typedescription
Date자바스크립트의 Date 객체
Sample
// 예시 1) var objDate1 = $p.parseDate("20120101"); // 반환 값 예시) Sun Jan 01 2012 00:00:00 GMT+0900 (KST) // 예시 2) var objDate2 = $p.parseDate("2012-01-01"); // 반환 값 예시) Sun Jan 01 2012 00:00:00 GMT+0900 (KST) // 예시 3) var objDate3 = $p.parseDate("2012-01-01", "yyyyMMdd"); // 반환 값 예시) Sun Jan 01 2012 00:00:00 GMT+0900 (KST) // 예시 4) var objDate4 = $p.parseDate("01222013112430", "MMddyyyyHHmmss"); // 반환 값 예시) Tue Jan 22 2013 11:24:30 GMT+0900 (KST) // 예시 5) 두 번째 인자(format)에 구분 기호(delimiter)를 포함할 수 없음 (이 경우 null이 반환됨) var objDate5 = $p.parseDate("2012-01-01", "yyyy-MM-dd"); // 반환 값 예시) null
reinitialize( )
현재 페이지 새로고침 (현재 페이지 : $p.reinitialize를 실행한 화면)
Sample
// main.xml 안에 wframe1.xml이 있는 경우 $p.$reinitialize(); // main.xml에서 실행 시 전체 화면이 새로고침되며, wframe1.xml에서 실행 시 wframe1 내부만 새로고침
rejectWorkflow( reject , workflowID )
실행중인 워크플로우를 Reject (workflowID 가 전달된 경우 해당 워크플로우가 실행중인 경우에만 Reject 시킴)
Parameter
nametyperequireddescription
rejectStringN사유 메시지
workflowIDStringN워크플로우 아이디
Return
typedescription
ObjectReject 된 워크플로우 객체
Sample
var workflowObj = $p.rejectWorkflow( );
setDisabled( obj )
obj의 설정에 따라 컴포넌트의 비활성화를 적용하거나 해제함
obj의 속성 includeIdList와 excludeIdList가 모두 설정되어 있으면, 먼저 includeIdList가 적용된 후에 excludeIdList가 적용됨
Parameter
nametyperequireddescription
objJSONYDisabled 설정이 담긴 객체
<String:N> obj.componentId :[default: body] 컴포넌트의 아이디 <Boolean:Y> obj.disabled : [default: false, true] 비활성화 적용 여부 <Array<String>:N> obj.excludeIdList : 제외할 컴포넌트의 아이디가 담긴 배열 <Array<String>:N> obj.includeIdList : 허용할 컴포넌트의 아이디가 담긴 배열
Return
typedescription
JSONJSON 데이터
<Array> object.doneComponents 완료한 컴포넌트의 실행 시점 아이디가 담긴 배열 <Array> object.skipComponents 이미 비활성화되어 있어 Skip한 컴포넌트의 실행 시점 아이디가 담긴 배열
Sample
// 예시 1) 전체 화면 비활성화(Disabled) var jsnResult = $p.setDisabled({ "disabled": true }); // 예시 2) 전체 화면 활성화(Enabled) var jsnResult = $p.setDisabled({ "disabled": false }); // 예시 3) 'id'가 'wfm_exam1'인 컴포넌트(자식 컴포넌트 포함)를 비활성화(Disabled) var jsnResult = $p.setDisabled({ "disabled": true, "componentId" : "wfm_exam1" }); // 예시 4) 'id'가 'btn_exam1'인 컴포넌트를 제외한 모든 컴포넌트를 비활성화(Disabled) var jsnResult = $p.setDisabled({ "disabled": true, "excludeIdList": ["btn_exam1"] }); // 예시 5) 'id'가 'btn_exam1'와 'btn_exam2'인 컴포넌트만 비활성화(Disabled) var jsnResult = $p.setDisabled({ "disabled": true, "includeIdList": ["btn_exam1", "btn_exam2"] }); // 반환 값 예시) { "doneComponents": [ "mf_btn_exam2" ], "skipComponents": [ "mf_btn_exam2" ] }
setDomain( domain )
'document.domain'의 값을 지정
일반적으로 IFrame, 팝업의 페이지 주소가 부모(Parent) 또는 오프너(Opener)와 도메인은 같지만 서브 도메인이 다를 경우, '크로스 도메인' 문제로 인해 화면간 데이터 통신을 할 수 없을 때 사용
각 화면의 도메인을 메인 도메인으로 지정하면 '크로스 도메인' 문제를 해결할 수 있음
'크로스 도메인(cross-domain)'이란 호출하는 도메인과 호출받는 도메인이 다른 경우를 의미하며, 서로 다른 도메인에서 자바스크립트로 접근하려 할 때 브라우저에서 보안상의 이유로 접근을 거부하고 '권한이 없습니다.'와 같은 오류 메시지가 출력됨
Parameter
nametyperequireddescription
domainStringY도메인
Sample
// 예시) // 각 화면의 도메인이 다음과 같을 때 // 부모(parent) 또는 오프너(opener)의 도메인 : "www.inswave.com" // IFrame 또는 Popup의 도메인 : "support.inswave.com" // 각 화면에서 다음과 같이 도메인을 맞춤 $p.setDomain("inswave.com");
setInterval( func , options )
주기적으로 함수를 실행하기 위해서 Interval 객체로 등록 함 (이 기능은 자바스크립트의 setInterval 기능을 확장하여 제공)
이 함수는 'Page Scope'가 적용되지 않아 모든 화면에 영향을 미치므로 사용 시 주의가 필요함
Parameter
nametyperequireddescription
funcFunctionY주기적으로 실행할 함수
optionsJSONNInterval 객체의 세부 설정
<String:N> options.key : Interval 객체를 구별하기 위한 아이디 (지정되지 않은 경우 func.toString().slice(0,30)의 결과 값으로 지정) <Number:N> options.delay : 함수의 실행 주기 (기본값은 1ms[millisecond / 1000분의 1초]) <Object:N> options.caller : 함수에서 'this'으로 지정할 객체(웹스퀘어 컴포넌트 포함) <Object:N> options.args : 함수에 전달할 인자 값들이 담긴 배열
Sample
// '$p.setInterval'의 두 번째 인자(options) var options = {}; // Interval의 고유 키를 'exam_interval_01'로 지정 options.key = "exam_interval_01"; // 지정된 함수 실행 주기를 1초로 지정 options.delay = 1000; // 화면에 정의된 컴포넌트 중 아이디가 'btn_exam1'인 객체를 지정. 함수에서 this로 접근할 수 있음 options.caller = btn_exam1; // 지정된 함수에 전달할 인자 값이 담긴 배열 options.args = ["api_example", "C0001"]; $p.setInterval( function (arg1, arg2) { console.log("arguments arg1 : " + arg1); // 출력 예시) arguments arg1 : api_example console.log("arguments arg2 : " + arg2); // 출력 예시) arguments arg2 : C0001 console.log("this.getOriginalID : " + this.getOriginalID()); // 출력 예시) this.getOriginalID : btn_exam1 }, options ); // 함수 인코딩 $p.setInterval( scwin.fn_Interval, options ); // 함수 연결 scwin.fn_Interval = function(arg1, arg2) { console.log("arguments arg1 : " + arg1); console.log("arguments arg2 : " + arg2); };
setTimeout( func , options )
일정 시간이 지난 후에 함수를 실행하기 위해서 Timeout 객체로 등록 함 (이 기능은 자바스크립트의 setTimeout 기능을 확장하여 제공)
이 함수는 'Page Scope'가 적용되지 않아 모든 화면에 영향을 미치므로 사용 시 주의가 필요함
Parameter
nametyperequireddescription
funcFunctionYTimeout 객체가 실행할 함수
optionsJSONNTimeout 객체의 세부 설정
<String:N> options.key : Timeout 객체를 구별하기 위한 아이디 (지정되지 않은 경우 func.toString().slice(0,30)의 결과 값으로 지정) <Number:N> options.delay : 함수의 실행 주기 (기본값은 1ms[millisecond / 1000분의 1초]) <Object:N> options.caller : 함수에서 'this'으로 지정할 객체(웹스퀘어 컴포넌트 포함) <Object:N> options.args : 함수에 전달할 인자 값들이 담긴 배열 <Function:N> options.before_call : Timeout 객체가 실행할 함수의 실행 직전에 실행할 함수 <Function:N> options.callback : Timeout 객체가 실행할 함수의 실행 후에 실행할 함수 (Timeout 객체가 실행한 함수의 Return 값이 전달 됨)
Sample
// '$p.setTimeout'의 두 번째 인자(options) var options = {}; // Timeout의 고유 키를 'exam_timeout_01'로 지정 options.key = "exam_timeout_01"; // 첫 번째 인자(func)의 실행을 1초 후로 지정 options.delay = 1000; // 화면에 정의된 컴포넌트 중 id가 'btn_exam1'인 객체를 지정. 함수에서 this로 접근할 수 있음 options.caller = btn_exam1; // 첫 번째 인자(func)에 전달할 인자 값이 담긴 배열 options.args = ["api_example", "C0001"]; // 첫 번째 인자(func) 실행 직전에 호출되는 함수 options.before_call = function () { console.log("# before_call"); }; // 첫 번째 인자(func) 실행 직후에 호출되는 함수 options.callback = function (arg1) { console.log("# callback"); // 첫 번째 인자(func)에서 'return'한 값을 확인 console.log("arguments arg1 : ", arg1); // 출력 예시) arguments arg1 : { "EXEC": "DONE" } }; $p.setTimeout( function (arg1, arg2) { console.log("arguments arg1 : " + arg1); // 출력 예시) arguments arg1 : api_example console.log("arguments arg2 : " + arg2); // 출력 예시) arguments arg2 : C0001 console.log("this.getOriginalID : " + this.getOriginalID()); // 출력 예시) this.getOriginalID : btn_exam1 // 반환 값은 필수가 아니며, 'options.callback'에 지정한 함수에 전달할 값이 있는 경우에 작성 return { "EXEC": "DONE" }; }, options );
showModal( excludeComponentIdArr )
최상위 화면에 Modal Layer를 표시하여 모든 컴포넌트를 비활성화
excludeComponentIdArr로 전달된 컴포넌트는 비활성화하지 않고 Modal Layer 위로 표시
(excludeComponentIdArr를 통해 전달된 '제외할 컴포넌트'의 경우 스타일 속성 'position' 값을 'relative'로 적용하면 Layer 상위로 표시할 수 있음) (관련 속성) $p.hideModal()
Parameter
nametyperequireddescription
excludeComponentIdArrArrayN제외할 컴포넌트의 실행 시점의 아이디가 담긴 배열
Sample
// 예시 1) 화면에 구성된 컴포넌트를 비활성화하고, Modal Layer를 표시 $p.showModal(); // 예시 2) 화면에 구성된 컴포넌트의 아이디가 "btn_exam1", "btn_exam2"인 컴포넌트를 제외 // 제외된 컴포넌트는 비활성화되지 않고 Modal Layer 위에 표시 // 컴포넌트의 실행 시점 아이디를 반환 받기 위해 컴포넌트의 getID() 함수를 사용 $p.showModal([btn_exam1.getID(), btn_exam2.getID()]);
showProcessMessage( processMsg )
작업진행 메시지인 Process Message Layer를 표시 (Process Message Layer는 submission, ajax, excel download 등과 같은 기능이 실행 중 일 때 표시됨) (관련 속성) $p.hideProcessMessage()
Parameter
nametyperequireddescription
processMsgStringY진행 상태 메시지
Sample
$p.showProcessMessage("처리 중입니다.");
top( )
최상위 페이지의 Scope 객체를 반환
현재 화면이 팝업인 경우, 유형이 'browserPopup'이면 팝업 화면이 별도의 Window 객체에 생성되므로 팝업의 최상위 페이지의 Scope 객체를 반환
Return
typedescription
ObjectScope 객체
toTimestampString( dateObj )
dateObj(자바스크립트의 Date 객체)를 전달받아 'yyyy-mm-dd hh:mm:ss.fffffffff' 형식이 적용된 문자열을 반환 (자바의 'java.sql.Timestamp'와 동일한 형식)
Parameter
nametyperequireddescription
dateObjDateY자바스크립트 Date 객체
Return
typedescription
String'yyyy-mm-dd hh:mm:ss.fffffffff' 형식의 문자열
Sample
var strResult = $p.toTimestampString(new Date()); // 반환 값 예시) 2014-03-11 11:01:47.219000
updateServerTime( )
비동기 통신으로 서버(WAS)의 현재 시간을 'yyyyMMddHHmmssSSS'형식의 문자열로 응답받아 '$p.getCurrentServerDate'에서 사용하는 기준 시간을 업데이트하고, 응답 데이터(현재 시간)를 프로미스(Promise) 객체로 반환
Return
typedescription
Object프로미스 객체 (작업완료(Resolve) 함수에서 서버의 현재 시간을 'yyyyMMddHHmmssSSS'형식의 문자열로 취할 수 있음)
Sample
$p.updateServerTime().then( function (argResolve) { // resolve 로직 // pattern : yyyyMMddHHmmssSSS // argResolve 예시) '20200516073937243' }, function (argReject) { // reject 로직 } );
updateSuffix( options )
서버에 위치한 '[컨텍스트]/websquare/suffix.txt'파일을 비동기 통신으로 호출하여, 웹스퀘어 엔진의 'suffix' 설정 값을 파일에 작성된 문자열로 업데이트 함
'suffix' 설정 값은 웹스퀘어 엔진이 웹스퀘어 리소스를 서버에 요청할 때 URL Query 문자열로 'postFix'에 할당
URL 예시) '/langpack/ko.js?postfix=2023_05'
이러한 URL 패턴을 이용하여 브라우저의 파일 캐시를 제어
'suffix.txt'파일에 작성된 내용이 없으면 'Websquare Configure"의 client.config.xml 편집모드에서 'Resource' 탭의 'engineCache'와 'environment'의 설정에 따라 'postFix'가 할당
Parameter
nametyperequireddescription
optionsJSONNJSON 정보
<String|Function:N> options.callback : Callback 함수명 또는 함수 객체 ('suffix' 설정 값 없데이트 후 호출)
Sample
// 예시 1) 콜백을 함수로 지정하는 경우 var options = {}; options.callback = function () { // 'suffix' 업데이트 후 로직 구성이 필요할 때 }; $p.updateSuffix(options); // 예시 2) 콜백을 함수 명으로 지정하는 경우 var options = {}; options.callback = "scwin.updateSuffix_callback"; $p.updateSuffix(options); // 예시 3) options를 지정하지 않는 경우 $p.updateSuffix();
url( w2xPath , options )
화면 전환 시 웹스퀘어 화면(w2xPath에 해당하는)의 경로만 전달하여 페이지를 이동할 수 있게 해주는 함수
options에 추가 인자를 통해 SPA(Single Page Application)로 페이지를 이동할 수 있음
Parameter
nametyperequireddescription
w2xPathStringYXML 파일의 경로
optionsJSONNSPA에 관련 된 추가 설정
<Boolean:N> options.spa : [default: false, true] w2xPath를 해시로 전달할지 여부 (true인 경우 해시(#)로 전달하며, false인 경우에 서치로 전달함 <Boolean:N> options.forceReload : 페이지 이동 후 브라우저를 강제로 갱신할 것인지에 대한 여부 (spa 페이지 이동시 전역 자원이 쌓여 메모리 누수가 발생할 수 있으며, 브라우저를 중간에 갱신하여 전역 자원을 초기화함으로써 이를 방지할 수 있음) <Boolean:N> options.replaceHistory : 브라우저의 히스토리를 덮어 쓸 것인지에 대한 여부 (true인 경우 내부적으로 location.replace 함수를 호출하며 false인 경우에는 location.assign() 함수를 호출함) <JSON:N> options.param : 페이지 이동 시 추가로 전달할 인자들을 JSON 형태로 전달 (JSON 객체로 전달 할 수 있는 데이터는 문자열 타입만 가능하며, $p.getParameter() 와 $p.getAllParameter() 함수로 꺼내 올 수 있음) <Boolean:N> options.shortURL : URL을 w2xPath에 해당하는 경로만 전달할 것인지 http://... 와 같이 전체 경로를 전달할 것인지에 대한 옵션 (옵션 값을 지정하지 않은 경우 w2xPath의 값이 ".xml"로 끝나면서 "?w2xPath" 또는 "#w2xPath" 문자가 포함되어 있지 않은 경우 true, 그렇지 않을 경우 false로 처리)
Sample
var param1 = { "name":"WebSquare", "ID":"tmpVal1" }; $p.url("/bar.xml", {"spa" : true, "replaceHistory" : true, "param" : param1}); // bar.xml을 SPA로 페이지 이동하면서 name,ID 매개 변수 전달 //bar.xml에서 param1의 값을 꺼내오는 방법 $p.getParameter("name"); //반환 값 예시 ) WebSquare $p.url("/bar.xml", {"spa" : true, "forceReload" : true, "param" : param1}); // bar.xml을 SPA로 이동하면서 브라우저를 재로딩하고 name,ID 매개 변수 전달
URLEncoder( str )
str에 지정된 문자열을 'application/x-www-form-urlencoded' MIME 형식의 문자열로 반환
Parameter
nametyperequireddescription
strStringY문자열
Return
typedescription
Stringapplication/x-www-form-urlencoded MIME 형식 문자열
Sample
var encodeStr = $p.URLEncoder( "문자열" ); //반환 값 예시) "%b9%ae%c0%da%bf%ad"
watermark( str )
현재 화면에 워터마크를 추가 (이 기능은 HTML Canvas가 지원되는 브라우저에서만 제공됨)
워터마크에는 str에 지정한 문자열과 자바스크립트 Date 객체를 이용하여 'yyyy-MM-dd HH:mm:ss'형식으로 날짜와 시간이 포함됨
Parameter
nametyperequireddescription
strStringY워터마크로 출력될 문자열
Return
typedescription
String날짜와 시간이 포함된 문자열
Sample
// 예시) "EXAMPLE" 문자열과 현재 날짜와 시간이 워터마크로 출력 $p.watermark("EXAMPLE");