Type: GridReportViewer
GridReportViewer
ReportViewer에서 상속된 객체로 RealGrid의 GridView (opens in a new tab) 객체를 이용해 리포트 양식을 자동으로 생성해 주는 컴포넌트 입니다.
declare class GridReportViewer extends ReportViewer {
constructor(
container: string | HTMLDivElement,
grid: GridView,
options?: GridReportOptions,
);
/**
* 컨테이너에 미리보기 랜더링
*/
preview(): void;
}
GridReportOptions
GridView를 Report로 생성하는데 필요한 옵션을 지정합니다. 옵션은 GridReportViewer를 생성할때 인자로 넘겨줍니다. 옵션을 인자로 넘기지 않을 경우 기본값을 사용합니다.
interface GridReportOptions extends ReportOptions {
paper?: GridReportPaperOptions; // 종이 영역 설정
title?: GridReportTitle; // 보고서 제목 영역
subTitle?: GridReportTitle; // 보고서 부제목 영역
gridHeader?: GridReportHeader; // 보고서 헤더 영역
pageHeader?: PageHeader; // 보고서에서 반복되서 출력되는 헤더 영역
pageFooter?: PageFooter; // 보고서에서 반복되서 출력되는 푸터 영역
layout: GridReportLayout; // 보고서에 표현되는 리얼그리드 관련 레이아웃 설정
}
GridReportPaperOptions
- 타입: PaperOptions
- 설명: 보고서 출력을 위한 페이퍼 정보
interface GridReportPaperOptions {
orientation: 'portrait' | 'landscape'; // 종이 방향 설정
paperSize: 'A0' | 'A1' | 'A2' | 'A3' | 'A4' | 'A5' | 'A6' | 'A7' | 'A8'; // 종이 용지 설정
marginLeft: number; // px 단위
marginRight: number; // px 단위
marginTop: number; // px 단위
marginBottom: number; // px 단위
}
title
- 타입: TextItem
- 설명: 보고서의 상단에 표시되는 보고서의 제목입니다.
- 출력 영역: Report Header
subTitle
- 타입: TextItem
- 설명: 보고서 제목의 하단에 표시되는 부제목입니다.
- 출력 영역: Report Header
pageHeader
- 타입: TextItem[]
- 설명: 페이지 상단에 페이지 번호등을 표시합니다.
- 출력 영역: Report Header
gridHeader
- 타입: GridReportHeader
- 설명: 페이지 상단에 페이지 번호등을 표시합니다.
- 출력 영역: Report Header
type GridReportHeader {
items: TextItem[]
}
pageFooter
- 타입: TextItem[]
- 설명: 페이지 하단에 페이지 번호등을 표시합니다.
- 출력 영역: Report Footer
layout
- 타입: GridReportLayout
- 설명: 그리드 레이아웃 정보
/**
* 그리드 리포트 레이아웃 정보
*/
export type GridReportLayout = {
/**
* 보고서 생성시 제외할 그리드의 컬럼이름
*/
exclude?: ColumnName[];
/**
* 활성화 할 경우 그리드의 컬럼의 비율에 맞게 리포트 종이영역에서 자동 조정
*/
autoWidth?: boolean;
/**
* 데이터 행의 최소 높이
*/
minRowHeight?: number;
/**
* 그리드 리포트 헤더 영역 전체 설정
*/
header?: GridReportLayoutHeader;
/**
* 로우 인디케이터 영역 설정
*/
rowIndicator?: {
visible: boolean;
header?: {
styles?: CommonStyles;
};
styles?: CommonStyles;
};
/**
* 각 컬럼 레이아웃에 대한 설정
*/
columns?: LayoutColumn[];
/**
* 데이터 행 영역에 대한 셀 스타일 Callback 설정
*/
cellStyleCallback?: (
ctx: PrintContext,
cell: TableCell,
row: number,
value: any,
) => CommonStyles;
};
/**
* 그리드 리포트 헤더 레이아웃 정보
*/
export interface GridReportLayoutHeader {
styles: CommonStyles;
}
type TableCell = {
row: number;
col: number;
fieldName: string;
};
/**
* 레이아웃 기본 스타일
*/
type CommonStyleName =
| 'color'
| 'backgroundColor'
| 'fontSize'
| 'fontWeight'
| 'textAlign'
| 'padding'
| 'paddingLeft'
| 'paddingRight'
| 'paddingTop'
| 'paddingBottom';
type CommonStyles = {
[key in CommonStyleName]?: string | undefined;
};
/**
* 컬럼 이름
*/
type ColumnName = string;
/**
* GridReportLayout.layout.columns 옵션
*/
export type LayoutColumn = {
name: string;
header?: {
styles?: HeaderStyles;
};
styles: ColumnStyles;
};
GridReportViewer layout 옵션 적용 예시
const options = {
layout: {
autoWidth: true,
// 리얼그리드 인디케이터 표시 여부 설정
rowIndicator: {
visible: true,
},
header: {
styles: {
backgroundColor: 'lightblue',
},
},
columns: [
// 리얼그리드 KorNameColumn 컬럼을 리포트로 출력할 때 설정
{
name: 'KorNameColumn',
styles: {
backgroundColor: '#cae8ff',
},
},
{
// 리얼그리드 SeColumn 컬럼을 리포트로 출력할 때 설정
name: 'SeColumn',
styles: {
backgroundColor: '#78bbfa',
},
},
// 리얼그리드 PhoneNumberColumn 컬럼을 리포트로 출력할 때 설정
{
name: 'PhoneNumberColumn',
styles: {
backgroundColor: '#3892f3',
},
},
// 리얼그리드 DateColumn 컬럼을 리포트로 출력할 때 설정
{
name: 'DateColumn',
styles: {
fontWeight: 'bold',
},
},
],
},
};
viewer = new RealReport.GridReportViewer(container, gridView, options);
viewer.preview({ async: true, pageMark: false, noScroll: true });