페이지 트리
메타 데이터의 끝으로 건너뛰기
메타 데이터의 시작으로 이동


(전구) 학습목표

스크립트를 사용하여 대시보드 객체를 생성한 후, 서버를 경유해서 대시보드를 Export 할 수 있습니다.



1. 대시보드 Export 객체 생성

스크립트를 사용하여 대시보드 객체를 생성할 수 있습니다.


컨트롤 생성

  1. 대시보드 Export를 사용하기 위한 버튼 컨트롤을 생성합니다.
    - UI BOT > BUTTON > BUTTON



  2. 생성한 버튼 컨트롤의 속성을 변경합니다.
    - Name : BTN_EXPORT_SEV
    - Text : 대시보드 Export (서버용)
    - Style > Type : Custom
    - BoxStyle : MGT_BUTTON_EX




컨트롤에 클릭 이벤트 연결 

  1. [편집 그룹 > Script Editor]를 클릭하여 스크립트 에디터 창을 활성화합니다.



  2. 변수를 선언하고 Matrix.getObject(Name)을 사용하여 컨트롤을 연결합니다.

    Discription

    (전구) 사용된 JScript

    Script
    var CH_DAYS = Matrix.getObject("CH_DAYS");
    var CH_RECENT_VISIT = Matrix.getObject("CH_RECENT_VISIT");
    var CH_VISIT_AGE = Matrix.getObject("CH_VISIT_AGE");
    var CH_VISIT_GENDER = Matrix.getObject("CH_VISIT_GENDER");
    var OL_RECENT_VISIT = Matrix.getObject("OL_RECENT_VISIT");
    var DG_INT = Matrix.getObject("VS_INTEREST");
    var VS_FileName = Matrix.getObject("VS_FileName");
    var VS_Golf_Place = Matrix.getObject("VS_GOLF_PLACE");		
    var VS_DATE = Matrix.getObject("VS_DATE").Value;

    (전구) getObject API

    AUD플랫폼의 자체 API로 해당 이름을 가진 컨트롤을 반환합니다.

    [Control]getObject

    인자설명
    name컨트롤 이름


  3. 버튼을 클릭했을 때, 이벤트를 활성화하기 위해 [OnButtonClick] 이벤트를 호출합니다.



  4. [OnButtonClick] 이벤트를 호출했을 때, 대시보드의 컴포넌트를 받아서 Export 할 객체를 생성합니다.

    Discription

    (전구)사용된 JScript

    Script
    /**************************************
     * 버튼 컨트롤이 클릭되는 시점에 발생합니다.
     * * arguments :  
     *		 string	Id (Readonly:False) : 컨트롤이름 
     *		 string	Text (Readonly:False) : 라벨 값 
    **************************************/
     var OnButtonClick  = function(sender, args){
     	
    	//Export 컴포넌트 생성
     	var WORKBOOK = {
    				"FontName": "맑은 고딕"      //Export할 파일의 폰트
    				, "FontSize" : 11	      //Export할 파일의 폰트 사이즈
    				, "FontColor" : "Black"   //Export할 파일의 폰트 색상
    				, "WorkSheets": [         
    					{
    						"Name":"Sheet1"   //Export할 파일 시트(엑셀 Export시)
    						, "DisplayGridlines":"false"  //Export할 파일 시트 가이드 라인 표시 여부
    						,"Ranges": [      //Export할 파일 문자열에 대한 위치 지정
    						{"Range":"B1","Value": "보고서 명 : " + Matrix.GetReportInfo().NAME}
    						, {"Range":"B2","Value": "■ 기준일 : " + VS_DATE}
    						, {"Range":"B3","Value": "■ 골프장 :" + VS_Golf_Place.Text}
    						, {"Range":"B5" ,"Value": "골프장 방문자 분석"}
    						, {"Range":"B7","Value": "요일별/시간대별 방문자 수"}
    						, {"Range":"J7","Value": "최근 6개월 간 방문자 수"}
    						, {"Range":"B25","Value": "방문자 연령대 분석"}
    						, {"Range":"G25","Value": "방문자 성비 분석"}
    						, {"Range":"M25","Value": "방문자 관심사 리스트"}
    						]
    						, "Controls": [   //Export할 컴포넌트
    						{ "Name": DG_INT.Name, "Range": "M26"}  //List-Grid 컴포넌트
    						, { "Name": CH_DAYS.Name, "Range": "B8:I22", "ImageExport": true }            //Chart 컴포넌트
    						, { "Name": CH_RECENT_VISIT.Name, "Range": "M8:Q23", "ImageExport": true }    //Chart 컴포넌트
    						, { "Name": CH_VISIT_AGE.Name, "Range": "B26:F35", "ImageExport": true }      //Chart 컴포넌트
    						, { "Name": CH_VISIT_GENDER.Name, "Range": "G25:L35" , "ImageExport": true }  //Chart 컴포넌트
    						, { "Name": OL_RECENT_VISIT.Name, "Range": "J8"}  //Olap-Grid 컴포넌트
    						]  
    						
    					}
    				]
    	};
     
    };

    (전구) 대시보드 객체 생성 Tip

    대시보드로 내보낼 파일을 스크립트로 제작할 때, 주의해야 할 점들이 있습니다.

    - 모든 컴포넌트가 WORKBOOK에 생성되는 것은 아닙니다(List-Grid, Olap-Grid, Chart, Image 컴포넌트 가능)

    => 캘린더 값이나 라벨 값 등 컴포넌트 상의 문자 정보가 필요한 경우는 변수로 받거나 직접 타이핑하여 Range 객체 안에 넣어줍니다.

    => 문자 정보는 Range. 컴포넌트 정보는 Control에 입력합니다.

    - 컴포넌트에 따라 객체에 넣는 조건이 다릅니다.

    컴포넌트범위예시
    ImageExport
    List-Grid특정 셀
    B2
    false
    Olap-Grid특정 셀
    D3
    false
    Chart셀 범위
    B26:F35
    true 
    Image셀 범위
    M8:Q23
    true 

    - DataGrid, OlapGrid의 페이징 혹은 스크롤 사용 시, Export 된 파일에서는 구현이 불가능하기 때문에 대시보드 상에 뿌려진 모든 데이터가 출력됩니다.

    => DataGrid, OlapGrid 아래에 다른 컴포넌트가 있을 시, 데이터의 로우를 계산하여 그 범위 아래에 나타내는 식으로 제작하여야 합니다.

    Ex)



2. 대시보드 Export


Export API 연결 

  1. 생성한 객체를 사용하여 Export를 실행하는 스크립트를 작성하고 [저장] 버튼을 클릭하여 스크립트를 저장합니다.

    Discription

    (전구)사용된 JScript

    Script
    /**************************************
     * 버튼 컨트롤이 클릭되는 시점에 발생합니다.
     * * arguments :  
     *		 string	Id (Readonly:False) : 컨트롤이름 
     *		 string	Text (Readonly:False) : 라벨 값 
    **************************************/
     var OnButtonClick  = function(sender, args){
     	
    	//Export 컴포넌트 생성
     	var WORKBOOK = {
    				"FontName": "맑은 고딕"      //Export할 파일의 폰트
    				, "FontSize" : 11	      //Export할 파일의 폰트 사이즈
    				, "FontColor" : "Black"   //Export할 파일의 폰트 색상
    				, "WorkSheets": [         
    					{
    						"Name":"Sheet1"   //Export할 파일 시트(엑셀 Export시)
    						, "DisplayGridlines":"false"  //Export할 파일 시트 가이드 라인 표시 여부
    						,"Ranges": [      //Export할 파일 문자열에 대한 위치 지정
    						{"Range":"B1","Value": "보고서 명 : " + Matrix.GetReportInfo().NAME}
    						, {"Range":"B2","Value": "■ 기준일 : " + VS_DATE}
    						, {"Range":"B3","Value": "■ 골프장 :" + VS_Golf_Place.Text}
    						, {"Range":"B5" ,"Value": "골프장 방문자 분석"}
    						, {"Range":"B7","Value": "요일별/시간대별 방문자 수"}
    						, {"Range":"J7","Value": "최근 6개월 간 방문자 수"}
    						, {"Range":"B25","Value": "방문자 연령대 분석"}
    						, {"Range":"G25","Value": "방문자 성비 분석"}
    						, {"Range":"M25","Value": "방문자 관심사 리스트"}
    						]
    						, "Controls": [   //Export할 컴포넌트
    						{ "Name": DG_INT.Name, "Range": "M26"}  //List-Grid 컴포넌트
    						, { "Name": CH_DAYS.Name, "Range": "B8:I22", "ImageExport": true }            //Chart 컴포넌트
    						, { "Name": CH_RECENT_VISIT.Name, "Range": "M8:Q23", "ImageExport": true }    //Chart 컴포넌트
    						, { "Name": CH_VISIT_AGE.Name, "Range": "B26:F35", "ImageExport": true }      //Chart 컴포넌트
    						, { "Name": CH_VISIT_GENDER.Name, "Range": "G25:L35" , "ImageExport": true }  //Chart 컴포넌트
    						, { "Name": OL_RECENT_VISIT.Name, "Range": "J8"}  //Olap-Grid 컴포넌트
    						]  
    						
    					}
    				]
    	};
     
      if(args.Id == "BTN_EXPORT_SEV"){	
    		Matrix.ExcelExportServiceCall(WORKBOOK ,null ,function(e){
    										if(e.Success == false){
    											alert("export fail" + e.Message);
    											return;			
    										}
    							
    										var row = e.DataSet.GetTable(0).GetRow(0);
    										var folderName = row.GetValue("FolderName");
    										var fileName = row.GetValue("FileName");
    										Matrix.AddGlobalParams("VS_FileName" ,fileName, 1 );
    										
    										
    										Matrix.DownloadFile(folderName + "/"
    															, fileName
    															, VS_Golf_Place.Text + "_방문자분석.xlsx", false, null);
    			
    		});	
    	}
    	
     };

    (전구) ExcelExportServiceCall API

    AUD플랫폼의 자체 API로 Json 형태의 데이터를 이용해 데이터 엑셀 내보내기 서비스를 호출합니다.(처리 완료 후 OnServiceCallBack 이벤트가 발생합니다.)

    [void]ExcelExportServiceCall :

    ExcelExportServiceCall([object] json ,[object[{Key,Value}]] params ,[function] callBack)

    인자설명
    json데이터 엑셀 내보내기 JSON 객체
    params파라미터(parameters) e.g.: [{'Key':'VS_CODE','Value':'100'},{'Key':'VS_NAME', 'Value':'JAMES'}]
    callBackCallBack함수

    (전구) DownloadFile API

    AUD플랫폼의 자체 API로 서버에 저장된 파일을 다운로드 하는 API입니다.

    [void]DownloadFile :

    DownloadFile([string] path ,[string] fileName ,[string] newFileName ,[boolean] isDelete)

    인자설명
    path다운로드 파일 경로
    fileName다운로드 파일명
    newFileName새로운 파일명
    isDelete파일 삭제 여부


    - ExcelExportServiceCall API에 생성한 WORKBOOK 객체를 집어넣어 Excel 파일을 생성하고 서버에 저장한 뒤, DownloadFile API를 사용하여 로컬에 파일을 다운로드 합니다.

  2. [실행] 버튼을 클릭하고 클릭 이벤트를 연결한 버튼을 클릭합니다.



  3. Export가 정상적으로 작동하는지 확인합니다.

    Discription

    (전구) 참고사항

    - 대시보드를 전체 이미지화해서 내보내는 것이 아니기 때문에 로컬용으로 내보낸 대시보드처럼 전체 이미지로 출력되지 않습니다.
    - 내보내기 된 컴포넌트는 원본 크기를 벗어나지는 못합니다.
    - 차트나 이미지는 원본 비율에 맞춰서 출력합니다.
    - WORKBOOK 객체가 만들어지는 시점이 중요합니다.

         => WORKBOOK 객체가 만들어지는 시점이 다를시 조회조건에 따라 변경된 차트가 반영이 안될 수 있습니다.



3. Export 가능한 파일 유형

대시보드를 여러 파일의 유형으로 Export 할 수 있습니다.


Export 파일 유형

API파일 확장자설명

ExcelExportServiceCall

xlsx데이터 엑셀 내보내기 서비스를 호출합니다.
WordExportServiceCalldocxWord 형식으로 다운로드합니다.
HMLExportServiceCallhml한글(HML) 형식으로 다운로드합니다.
HTMLExportServiceCallhtml웹(HTML) 형식으로 다운로드합니다.
XLSExportServiceCallxlsExcel 2003 형식으로 다운로드합니다.
PDFExportServiceCallpdf

PDF3 형식으로 다운로드합니다.

Discription

(전구) 주의사항

API를 변경해서 사용 시 새로운 파일명을 부여할 때, 그 API에 맞는 확장자명을 붙여주어야 합니다.

Ex)

Script
if(args.Id == "BTN_EXPORT_SEV"){	
		Matrix.WordExportServiceCall(WORKBOOK ,null ,function(e){
										if(e.Success == false){
											alert("export fail" + e.Message);  //에러 발생시 에러 반환
											return;			
										}

										var row = e.DataSet.GetTable(0).GetRow(0);   //API 사용시 보내는 정보
										var folderName = row.GetValue("FolderName"); //저장되는 폴더 이름 
										var fileName = row.GetValue("FileName");     //저장되는 파일 이름

										Matrix.DownloadFile(folderName + "/"         //파일 다운로드 API
															, fileName
															, VS_Golf_Place.Text + "_방문자분석.docx", false, null);
			
		});	
};

(전구) 참고사항

ExcelExportServiceCall 대신 다른 API를 사용 시, 컴포넌트 위치를 다시 설정해주어야 하는데 셀 주소값을 가지고 있는 Excel과는 다르게 위치를 지정하는 것이 매우 어렵고 많은 수작업이 요구됩니다.


버전 날짜 댓글
현재 버전 (v. 2) 2024-11-27 14:03 guide:
[2024.11.27] 이미지 깨짐 현상 수정, 목차 매크로 변경
v. 1 2023-09-22 15:32 guide

  • 레이블 없음