realreport 1.8.2 → 1.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /*
2
- RealReport v1.8.2
2
+ RealReport v1.8.4
3
3
  Copyright (C) 2013-2024 WooriTech Inc.
4
4
  All Rights Reserved.
5
5
  */
@@ -1,7 +1,7 @@
1
1
  /// <reference types="pdfkit" />
2
2
  /**
3
- * RealReport v1.8.2
4
- * commit f5c709b
3
+ * RealReport v1.8.4
4
+ * commit 4cbf910
5
5
 
6
6
  * Copyright (C) 2013-2024 WooriTech Inc.
7
7
  https://real-report.com
@@ -9,10 +9,10 @@
9
9
  */
10
10
 
11
11
  /**
12
- * RealReport Core v1.8.2
12
+ * RealReport Core v1.8.4
13
13
  * Copyright (C) 2013-2024 WooriTech Inc.
14
14
  * All Rights Reserved.
15
- * commit a4993ff60cea5ad3357ab5abd502b4ad774a15c0
15
+ * commit 40d5438857ce09d15cfc240c2056d7d8ebee963f
16
16
  */
17
17
  type ConfigObject$1 = {
18
18
  [key: string]: any;
@@ -630,7 +630,6 @@ declare abstract class VisualContainer$1 extends EventAware$1 implements VisualT
630
630
  private _offsetY;
631
631
  private _rootElement;
632
632
  private _feedbackElement;
633
- private _printRoot;
634
633
  private _eventHandlers;
635
634
  private _eventNodes;
636
635
  private _contextMenu;
@@ -1074,6 +1073,7 @@ declare enum PropCategory {
1074
1073
  BAND = "band",
1075
1074
  BAND_GROUP = "band group",
1076
1075
  BAND_CELL = "band cell",
1076
+ SUB_BAND = "sub band",
1077
1077
  FIELD = "field",
1078
1078
  COLUMN = "column",
1079
1079
  ROW = "row",
@@ -2406,6 +2406,9 @@ declare abstract class DataBand extends ReportGroupItem {
2406
2406
  static readonly PROP_DATA_BAND_NO_SPLIT = "noSplit";
2407
2407
  static readonly PROP_DATA_BAND_SORT_FIELD = "sortField";
2408
2408
  static readonly PROP_DATA_BAND_SORT_DIRECTION = "sortDirection";
2409
+ static readonly PROP_DATA_BAND_MASTER_BAND_NAME = "masterBandName";
2410
+ static readonly PROP_DATA_BAND_MASTER_BAND_KEY_FIELDS = "masterBandKeyFields";
2411
+ static readonly PROP_DATA_BAND_SUB_BAND_KEY_FIELDS = "subBandKeyFields";
2409
2412
  static readonly PROPINFOS: IPropInfo[];
2410
2413
  private _sectionCount;
2411
2414
  private _sectionLayout;
@@ -2427,10 +2430,15 @@ declare abstract class DataBand extends ReportGroupItem {
2427
2430
  private _noSplit;
2428
2431
  private _sortField;
2429
2432
  private _sortDirection;
2433
+ private _masterBandName;
2434
+ private _masterBandKeyFields;
2435
+ private _subBandKeyFields;
2430
2436
  private _detail;
2431
2437
  private _master;
2432
2438
  private _keyFlds;
2433
2439
  private _masterFlds;
2440
+ private _subBandKeyFieldValues;
2441
+ private _subBandMasterKeyFieldValues;
2434
2442
  pageNo: number;
2435
2443
  prevHead: boolean;
2436
2444
  prevIndex: number;
@@ -2438,6 +2446,7 @@ declare abstract class DataBand extends ReportGroupItem {
2438
2446
  detailRows: number;
2439
2447
  masterValues: any;
2440
2448
  isNextPagePrintRow: boolean;
2449
+ hasSubBand: boolean;
2441
2450
  _pr: number;
2442
2451
  _currentPrintRow: number;
2443
2452
  private _dataObj;
@@ -2601,6 +2610,12 @@ declare abstract class DataBand extends ReportGroupItem {
2601
2610
  set sortField(value: string);
2602
2611
  get sortDirection(): DataDirection;
2603
2612
  set sortDirection(value: DataDirection);
2613
+ get masterBandName(): string;
2614
+ set masterBandName(value: string);
2615
+ get masterBandKeyFields(): string;
2616
+ set masterBandKeyFields(value: string);
2617
+ get subBandKeyFields(): string;
2618
+ set subBandKeyFields(value: string);
2604
2619
  /**
2605
2620
  * summary runtime
2606
2621
  */
@@ -2614,14 +2629,24 @@ declare abstract class DataBand extends ReportGroupItem {
2614
2629
  */
2615
2630
  get currentPrintRow(): number;
2616
2631
  set currentPrintRow(value: number);
2632
+ /**
2633
+ * band, master detail key values
2634
+ */
2635
+ get masterFlds(): string[];
2636
+ get keyFlds(): string[];
2637
+ get subBandMasterKeyFieldValues(): string[];
2638
+ get subBandKeyFieldValues(): string[];
2617
2639
  prepareIndices(ctx: PrintContext): void;
2618
2640
  protected abstract _doPrepareIndices(ctx: PrintContext): void;
2619
2641
  getColPoints(w: number, x?: number): number[];
2620
2642
  getColWidth(w: number): number;
2621
2643
  getValues(dataView: BandDataView, row: number, fields: string[]): any[];
2644
+ getNextSubBandDetailRows(dataView: BandDataView, from: number): number[];
2622
2645
  protected _selectRow(dataView: BandDataView, row: number, idx: number): boolean;
2646
+ protected _selectSubBandRow(dataView: BandDataView, row: number, idx: number): boolean;
2623
2647
  abstract getNextDetailRows(dataView: BandDataView, from?: number): number[];
2624
2648
  protected _getNextDetailRows(dataView: BandDataView, from: number): number[];
2649
+ protected _getNextSubBandDetailRows(dataView: BandDataView, from: number): number[];
2625
2650
  getRowsPerPage(): {
2626
2651
  rowsPerPage: number;
2627
2652
  breakRowsPerPage: boolean;
@@ -2637,6 +2662,7 @@ declare abstract class DataBand extends ReportGroupItem {
2637
2662
  getMin(field: string, count: number, rows?: number[]): number;
2638
2663
  getMax(field: string, count: number, rows?: number[]): number;
2639
2664
  getAvg(field: string, count: number, rows?: number[]): number;
2665
+ getPropDomain(prop: IPropInfo): any[];
2640
2666
  abstract containsInSection(item: ReportItem): boolean;
2641
2667
  get designLevel(): number;
2642
2668
  get dataDominant(): boolean;
@@ -3365,9 +3391,35 @@ declare class ReportElement extends VisualElement$1 {
3365
3391
  protected _doPrint(doc: Document, ctx: PrintContext): void;
3366
3392
  }
3367
3393
 
3394
+ /**
3395
+ */
3396
+ declare class BandCollectionElement extends ReportGroupItemElement<DataBandCollection> {
3397
+ constructor(doc: Document, model: DataBandCollection);
3398
+ protected _doDispose(): void;
3399
+ get debugLabel(): string;
3400
+ protected _getCssSelector(): string;
3401
+ protected _needDesignBox(): boolean;
3402
+ protected _initDom(doc: Document, dom: HTMLElement): void;
3403
+ protected _doMeasure(ctx: PrintContext, dom: HTMLElement, hintWidth: number, hintHeight: number): Size$1;
3404
+ protected _doAfterMeasure(ctx: PrintContext, dom: HTMLElement, hintWidth: number, hintHeight: number, sz: Size$1): void;
3405
+ protected _doLayoutContent(ctx: PrintContext): void;
3406
+ }
3407
+
3368
3408
  /** @internal */
3369
3409
  declare abstract class ReportItemElement<T extends ReportItem> extends ReportElement {
3370
3410
  static readonly FOLDED_HEIGHT = 22;
3411
+ /**
3412
+ * 리포트 아이템 표시 여부 확인하기
3413
+ *
3414
+ * - 디자인 시점: `model.printable`
3415
+ * - 프리뷰 시점: `visibleCallback(ctx, model, row, printValue)` (콜백 실행 오류 시, `model.printable`)
3416
+ *
3417
+ * @param context 출력 컨텍스트
3418
+ * @param model 리포트 아이템 모델
3419
+ * @param printValue 미리보기 시, 리포트 아이템에 적용할 value 값 (디자인 시점에서는 사용 안됨)
3420
+ * @returns 리포트 아이템 표시 여부
3421
+ */
3422
+ static isReportItemPrintable(context: PrintContext, model: ReportItem, printValue: unknown): boolean;
3371
3423
  protected _designView: HTMLDivElement;
3372
3424
  protected _bindMarker: HTMLSpanElement;
3373
3425
  private _a;
@@ -3416,6 +3468,7 @@ declare abstract class ReportItemElement<T extends ReportItem> extends ReportEle
3416
3468
  findElementOf(dom: HTMLElement): ReportItemElement<ReportItem>;
3417
3469
  getPrintValue(ctx: PrintContext, m: ReportItem, defaultValue?: any): any;
3418
3470
  getPrintLinkValue(ctx: PrintContext, m: ReportItem): any;
3471
+ private $_getContextDataIndexValue;
3419
3472
  protected _doModelChanged(oldModel: T): void;
3420
3473
  protected _setX(dom: HTMLElement, x: number): void;
3421
3474
  protected _setY(dom: HTMLElement, y: number): void;
@@ -3497,12 +3550,134 @@ declare abstract class ReportGroupItemElement<T extends ReportGroupItem> extends
3497
3550
  protected _doPrint(doc: Document, ctx: PrintContext): void;
3498
3551
  }
3499
3552
  type ReportGroupItemView = ReportGroupItemElement<ReportGroupItem>;
3553
+ declare abstract class BandElement<T extends DataBand> extends ReportGroupItemElement<T> {
3554
+ static readonly END_ROW_MESSAGE_CLASS = "rr-end-row-message";
3555
+ static readonly END_ROW_CLASS = "rr-end-row";
3556
+ abstract get rowView(): ReportGroupItemView;
3557
+ private _needFooterView;
3558
+ get needFooterView(): boolean;
3559
+ set needFooterView(value: boolean);
3560
+ abstract getLines(): ReportItemView[];
3561
+ abstract printRow(ctx: PrintContext, row: number): any;
3562
+ getSibling(item: ReportItemView, delta: number): ReportItemView;
3563
+ abstract addMasterRow(page: HTMLDivElement, headerView: any, rowView: any, x: number, y: number): number;
3564
+ abstract prepareAsync(doc: Document, ctx: PrintContext, width: number, subRows: number[], masterRow: number): BandPrintInfo<any>;
3565
+ abstract prepareSubBand(doc: Document, ctx: PrintContext, width: number, dataRows: number[]): BandPrintInfo<any>;
3566
+ protected _prepareDetail(doc: Document, ctx: PrintContext, band: DataBand, details: DataBandCollection, detailViews: BandCollectionElement, r: number, rows: BandPrintRow[], width: number): void;
3567
+ protected _getNext(item: ReportItemView): ReportItemView;
3568
+ protected _getPrev(item: ReportItemView): ReportItemView;
3569
+ }
3570
+
3571
+ /**
3572
+ * @internal
3573
+ * Table element의 child가 아니다.
3574
+ * Td cell에 표시되는 element의 부모 conatiner 역할을 한다.
3575
+ */
3576
+ declare class TableCellElementBase extends ReportGroupItemElement<TableCellItem> {
3577
+ static readonly STYLE = "rr-table-cell";
3578
+ private _table;
3579
+ private _row;
3580
+ private _col;
3581
+ constructor(doc: Document, table: TableElement<TableBase>, model: TableCellItem, name: string);
3582
+ protected _doDispose(): void;
3583
+ get table(): TableElement<TableBase>;
3584
+ get container(): VisualContainer$1;
3585
+ get debugLabel(): string;
3586
+ get designable(): boolean;
3587
+ get navigable(): boolean;
3588
+ get navigableParent(): ReportGroupItemView;
3589
+ protected _getCssSelector(): string;
3590
+ protected _needContentBox(): boolean;
3591
+ protected _initDom(doc: Document, dom: HTMLElement): void;
3592
+ protected _prepareChild(child: ReportItemView): void;
3593
+ protected _doLayoutContent(ctx: PrintContext): void;
3594
+ }
3500
3595
  interface ITable {
3501
3596
  colCount: number;
3502
3597
  columns: TableColumnCollectionBase<ReportGroupItem, TableColumnBase>;
3503
3598
  getColumn(index: number): TableColumnBase;
3504
3599
  getColPoints(): number[];
3505
3600
  }
3601
+ /** @internal */
3602
+ declare abstract class TableElement<T extends TableBase> extends ReportGroupItemElement<T> {
3603
+ static setTableStyle(table: HTMLTableElement, fill?: boolean): void;
3604
+ static getTable(elt: VisualElement$1): TableElement<any>;
3605
+ private _masterView;
3606
+ private _table;
3607
+ private _colgroup;
3608
+ private _tbody;
3609
+ private _tcells;
3610
+ private _ecells;
3611
+ private _spans;
3612
+ private _colPts;
3613
+ private _cellWidths;
3614
+ private _rowHeights;
3615
+ constructor(doc: Document, model: T, name: string);
3616
+ protected _doDispose(): void;
3617
+ get rowCount(): number;
3618
+ get cellCount(): number;
3619
+ get cellViews(): TableCellElementBase[];
3620
+ get hasCells(): boolean;
3621
+ /**
3622
+ * designer에서 호출한다.
3623
+ */
3624
+ getColPoints(): number[];
3625
+ getColWidth(col: number): number;
3626
+ getRowPoints(): number[];
3627
+ getRowRect(row: number, count?: number): IRect;
3628
+ getColRect(col: number, count?: number): IRect;
3629
+ get blockable(): boolean;
3630
+ get debugLabel(): string;
3631
+ protected _needContentBox(): boolean;
3632
+ getCellOf(target: Element, deep: boolean): TableCell$1;
3633
+ findChildAt(x: number, y: number, hitTesting: boolean): VisualElement$1;
3634
+ findChildOf(dom: HTMLElement): VisualElement$1;
3635
+ findElement(modelName: string): ReportItemElement<ReportItem>;
3636
+ findElementOf(dom: HTMLElement): ReportItemElement<ReportItem>;
3637
+ getElementOf(model: ReportItem): ReportElement;
3638
+ setCellDoms(to: HTMLTableRowElement, from: HTMLTableRowElement): void;
3639
+ unsetCellDoms(to: HTMLTableRowElement, from: HTMLTableRowElement): void;
3640
+ replaceCellDoms(to: HTMLTableRowElement, from: HTMLTableRowElement): void;
3641
+ protected _setTableStyles(table: HTMLTableElement): void;
3642
+ protected _createDom(doc: Document): HTMLElement;
3643
+ protected _doModelChanged(oldModel: TableBase): void;
3644
+ $_refreshRowCells(ctx: PrintContext, hintWidth: number, hintHeight: number, force?: boolean): void;
3645
+ protected _isEmpty(): boolean;
3646
+ protected _doMeasure(ctx: PrintContext, dom: HTMLElement, hintWidth: number, hintHeight: number): Size$1;
3647
+ protected _doLayoutContent(ctx: PrintContext): void;
3648
+ protected abstract _createCellElement(doc: Document, cell: TableCellItem): TableCellElementBase;
3649
+ clear(): boolean;
3650
+ protected _buildItems(ctx: PrintContext, report: ReportView, model: T): void;
3651
+ protected _prepareCellStyles(ctx: PrintContext, table: TableBase, row: number, col: number, td: HTMLTableCellElement): void;
3652
+ protected _prepareChild(child: ReportElement): void;
3653
+ /**
3654
+ * 테이블 내에서 첫번째 item.
3655
+ */
3656
+ getFirst(): ReportItemView;
3657
+ getLast(): ReportItemView;
3658
+ protected _getPrev(item: ReportItemView): ReportItemView;
3659
+ protected _getNext(item: ReportItemView): ReportItemView;
3660
+ getUpper(item: ReportItemView): ReportItemView;
3661
+ getLower(item: ReportItemView): ReportItemView;
3662
+ get $_trows(): HTMLCollectionOf<HTMLTableRowElement>;
3663
+ get $_trowsCopy(): HTMLTableRowElement[];
3664
+ $_cloneRow(tr: HTMLTableRowElement): HTMLTableRowElement;
3665
+ $_td(row: number, col: number): HTMLTableCellElement;
3666
+ private $_cellChanged;
3667
+ private $_prepareTable;
3668
+ protected _setRowStyles(tr: HTMLTableRowElement, row: number): void;
3669
+ private $_prepareColGroup;
3670
+ private $_prepareTableRow;
3671
+ private $_prepareTableRowCells;
3672
+ private $_calcCellWidths;
3673
+ private $_measureCellWidths;
3674
+ private $_calcRowHeights;
3675
+ private $_measureRowHeights;
3676
+ getCellBoundingRect(col: number, row: number, width: number, height: number): IRect;
3677
+ private $_layoutViewInCell;
3678
+ protected _findCell(model: TableCellItem): TableCellElementBase;
3679
+ createColGroup(doc: Document, width: number): HTMLTableColElement;
3680
+ }
3506
3681
 
3507
3682
  declare class CrosstabFieldHeader extends ReportItem {
3508
3683
  static readonly PROP_SUFFIX = "suffix";
@@ -4335,6 +4510,7 @@ declare abstract class ChartAxisCollection<T extends ChartItem, C = unknown> ext
4335
4510
  get count(): number;
4336
4511
  get items(): ChartAxis<T, C>[];
4337
4512
  get visibleCount(): number;
4513
+ abstract getChartConfig(context: PrintContext): C[];
4338
4514
  abstract getSaveLabel(): string;
4339
4515
  defaultInit(): void;
4340
4516
  load(loader: IReportLoader, source: ReportSource): void;
@@ -4506,7 +4682,7 @@ declare abstract class RCAxis<C = RCAxisConfig> extends ChartAxis<RealChartItem,
4506
4682
  }
4507
4683
  declare abstract class RCAxisCollection extends ChartAxisCollection<RealChartItem, RCAxisConfig> {
4508
4684
  abstract get direction(): RCAxisDirection;
4509
- getConfig(context: PrintContext): RCAxisConfig[];
4685
+ getChartConfig(context: PrintContext): RCAxisConfig[];
4510
4686
  }
4511
4687
  declare class RCXAxisCollection extends RCAxisCollection {
4512
4688
  get outlineLabel(): string;
@@ -4539,6 +4715,7 @@ declare abstract class ChartSeriesCollection$1<T extends ChartItem, C = unknown>
4539
4715
  get count(): number;
4540
4716
  get items(): ChartSeries$1<T, C>[];
4541
4717
  get visibleCount(): number;
4718
+ abstract getChartConfig(context: PrintContext): C[];
4542
4719
  getSaveLabel(): string;
4543
4720
  defaultInit(): void;
4544
4721
  load(loader: IReportLoader, source: ReportSource): void;
@@ -4588,6 +4765,7 @@ declare abstract class ChartSeries$1<T extends ChartItem, C = unknown> extends C
4588
4765
  set index(value: number);
4589
4766
  get designVisible(): boolean;
4590
4767
  set designVisible(value: boolean);
4768
+ hasSeriesData(context: PrintContext): boolean;
4591
4769
  protected getVisible(context: PrintContext): boolean;
4592
4770
  protected getSeriesData(context: PrintContext): number[];
4593
4771
  get displayPath(): string;
@@ -4625,7 +4803,7 @@ declare abstract class RCSeries<C = RCSeriesConfig> extends ChartSeries$1<RealCh
4625
4803
  protected _doSave(target: ReportTarget): void;
4626
4804
  }
4627
4805
  declare class RCSeriesCollection extends ChartSeriesCollection$1<RealChartItem, RCSeriesConfig> {
4628
- getConfig(context: PrintContext): RCSeriesConfig[];
4806
+ getChartConfig(context: PrintContext): RCSeriesConfig[];
4629
4807
  protected _createSeries(loader: IReportLoader, src: ReportSource): RCSeries;
4630
4808
  protected _seriesChanged(): void;
4631
4809
  }
@@ -4841,10 +5019,30 @@ declare enum ReportItemType {
4841
5019
  * Report Item들에 대한 정보를 한곳에 모아서 등록해놓고 용이하게 꺼내쓰기 위해 작성
4842
5020
  */
4843
5021
  declare class ReportItemRegistry extends Base$1 {
5022
+ private readonly _masterBandItemTypes;
4844
5023
  private _reportItemFlatMap;
4845
5024
  constructor();
4846
- add(type: ReportItemType, item: ReportItem): void;
5025
+ add(item: ReportItem): void;
5026
+ remove(item: ReportItem | ReportPageItem): void;
4847
5027
  getItemCount(type: ReportItemType): number;
5028
+ /**
5029
+ * 가장 최상위에 있는 밴드의 이름들을 반환해주기 위해 작성
5030
+ * @returns 가장 최상위 위치에 있는 밴드의 이름들을 모아서 반환
5031
+ */
5032
+ getRootBandItemNames(): string[];
5033
+ getSubBandsByMasterName(masterName: string): DataBand[];
5034
+ getItemType(item: ReportItem): ReportItemType | undefined;
5035
+ private $_removeChildItems;
5036
+ }
5037
+
5038
+ declare class SubBandPage extends ReportPage {
5039
+ constructor(report: Report, name?: string);
5040
+ static readonly $_ctor: string;
5041
+ get outlineLabel(): string;
5042
+ protected _addSectionModel(): void;
5043
+ protected _doLoad(loader: IReportLoader, src: any): void;
5044
+ protected _ignoreItems(): boolean;
5045
+ protected _doSave(target: object): void;
4848
5046
  }
4849
5047
 
4850
5048
  declare enum PaperSize {
@@ -5111,9 +5309,11 @@ declare class Report extends EventAware$1 implements IEditCommandStackOwner, IPr
5111
5309
  save(pageOnly?: boolean): object;
5112
5310
  getPage(index: number): ReportPage;
5113
5311
  addPage(): ReportPage;
5312
+ addSubBandPage(): SubBandPage;
5114
5313
  removePage(index: number): boolean;
5115
5314
  movePage(index: number, newIndex: number): void;
5116
5315
  internalAddPage(page?: ReportPage): ReportPage;
5316
+ internalAddSubBandPage(page?: SubBandPage): SubBandPage;
5117
5317
  internalRemovePage(page: ReportPage): boolean;
5118
5318
  internalMovePage(index: number, newIndex: number): void;
5119
5319
  getMaxPageCount(): number;
@@ -5250,8 +5450,12 @@ declare class Report extends EventAware$1 implements IEditCommandStackOwner, IPr
5250
5450
  protected _createReportInfo(report: Report): ReportInfo;
5251
5451
  protected _createReportLoader(): IReportLoader;
5252
5452
  protected _createReportPage(report: Report): ReportPage;
5453
+ protected _createSubBandPage(report: Report): SubBandPage;
5454
+ private $_loadPages;
5253
5455
  private $_addPage;
5456
+ private $_addSubBandPage;
5254
5457
  private $_refreshInvalids;
5458
+ private $_refereshPages;
5255
5459
  private $_resetPages;
5256
5460
  protected onPageItemAdded(source: IEventAware, item: ReportPageItem, index: number, silent: boolean): void;
5257
5461
  protected onPageItemsAdded(source: IEventAware, items: ReportPageItem[], index: number): void;
@@ -5274,6 +5478,7 @@ declare class Report extends EventAware$1 implements IEditCommandStackOwner, IPr
5274
5478
  * 1. band는 body의 최상위 항목으로만 추가될 수 있다. 즉, 다른 항목의 자식이 될 수 없다.
5275
5479
  */
5276
5480
  declare class ReportPage extends ReportGroupItem implements IEventAware {
5481
+ static readonly PROP_PAGE_TYPE = "type";
5277
5482
  static readonly PROP_ORIENTATION = "orientation";
5278
5483
  static readonly PROP_MARGIN_LEFT = "marginLeft";
5279
5484
  static readonly PROP_MARGIN_RIGHT = "marginRight";
@@ -5287,6 +5492,7 @@ declare class ReportPage extends ReportGroupItem implements IEventAware {
5287
5492
  static readonly COLLECTION_CHANGED = "onPageCollectionChanged";
5288
5493
  static readonly $_ctor: string;
5289
5494
  static readonly PROPINFOS: IPropInfo[];
5495
+ private _type;
5290
5496
  private _orientation;
5291
5497
  private _marginLeft;
5292
5498
  private _marginRight;
@@ -5318,40 +5524,63 @@ declare class ReportPage extends ReportGroupItem implements IEventAware {
5318
5524
  * report
5319
5525
  */
5320
5526
  get report(): Report;
5527
+ /**
5528
+ * pageIndex
5529
+ */
5530
+ get pageIndex(): number;
5531
+ set pageIndex(index: number);
5321
5532
  /**
5322
5533
  * reportHeader
5323
5534
  */
5324
5535
  get reportHeader(): ReportHeader;
5536
+ set reportHeader(section: ReportHeader);
5325
5537
  /**
5326
5538
  * reportFooter
5327
5539
  */
5328
5540
  get reportFooter(): ReportFooter;
5541
+ set reportFooter(section: ReportFooter);
5329
5542
  /**
5330
5543
  * pageHeader
5331
5544
  */
5332
5545
  get pageHeader(): PageHeader;
5546
+ set pageHeader(section: PageHeader);
5333
5547
  /**
5334
5548
  * pageFooter
5335
5549
  */
5336
5550
  get pageFooter(): PageFooter;
5551
+ set pageFooter(section: PageFooter);
5337
5552
  /**
5338
5553
  * body
5339
5554
  */
5340
5555
  get body(): PageBody;
5556
+ set body(section: PageBody);
5341
5557
  get backContainer(): PageItemContainer;
5558
+ set backContainer(section: PageItemContainer);
5342
5559
  /**
5343
5560
  * backItems
5344
5561
  */
5345
5562
  get backItems(): ReportItem[];
5346
5563
  get frontContainer(): PageItemContainer;
5564
+ set frontContainer(section: PageItemContainer);
5347
5565
  /**
5348
5566
  * frontItems
5349
5567
  */
5350
5568
  get frontItems(): ReportItem[];
5569
+ /**
5570
+ * sections
5571
+ */
5572
+ get sections(): ReportGroupItem[];
5573
+ set sections(groupItems: ReportGroupItem[]);
5351
5574
  /**
5352
5575
  * loading
5353
5576
  */
5354
5577
  get loading(): boolean;
5578
+ set loading(value: boolean);
5579
+ /**
5580
+ * type
5581
+ */
5582
+ get type(): ReportPageType;
5583
+ set type(type: ReportPageType);
5355
5584
  /**
5356
5585
  * orientation
5357
5586
  */
@@ -5401,6 +5630,7 @@ declare class ReportPage extends ReportGroupItem implements IEventAware {
5401
5630
  item: ReportItem;
5402
5631
  reason: string;
5403
5632
  }[]): void;
5633
+ protected _addSectionModel(): void;
5404
5634
  protected _createPageBody(): PageBody;
5405
5635
  protected _createReportFooter(): ReportFooter;
5406
5636
  /**
@@ -5752,6 +5982,33 @@ declare class PageBodyElement extends ReportElement {
5752
5982
  protected _doLayoutContent(ctx: PrintContext): void;
5753
5983
  layoutFloating(ctx: PrintContext): void;
5754
5984
  private $_prepareAsync;
5985
+ /**
5986
+ * Normal Band일 경우 사용
5987
+ */
5988
+ private $_prepareBandElement;
5989
+ /**
5990
+ * TODO: BandElement 쪽으로 로직을 옮기는게 좋아보임.
5991
+ * SubBandElement 연결되어있다면 해당 내용으로 준비
5992
+ */
5993
+ private $_prepareSubBandElement;
5994
+ /**
5995
+ * 아래처럼 데이터 예시로 생성되는 PrintRows 모양 예시
5996
+ * masterData: [{ key: 1, key: 2, key: 3, key: 4}]
5997
+ * subData: [{ key:1, name: a }, {key: 1, name: b}, {key: 4, name: a}]
5998
+ * [
5999
+ * {
6000
+ * masterBandPrintRows: [0],
6001
+ * subBandPrintInfos: [{ subBandElement: BandElement, subBandPrintRows: [0, 1] }]
6002
+ * },
6003
+ * {
6004
+ * masterBandPrintRows: [1, 2, 3],
6005
+ * subBandPrintInfos: [{ subBandElement: BandElement, subBandPrintRows: [2] }]
6006
+ * }
6007
+ * ]
6008
+ */
6009
+ private $_createSubBandPrintRows;
6010
+ private $_createSubBandPrintLines;
6011
+ private $_isLastChild;
5755
6012
  }
5756
6013
 
5757
6014
  /** @internal */
@@ -5854,6 +6111,7 @@ declare class PageView extends LayerElement$1 {
5854
6111
  getUpper(elt: ReportItemView): ReportItemView;
5855
6112
  getLower(elt: ReportItemView): ReportItemView;
5856
6113
  itemOfDom(dom: Element): ReportItem;
6114
+ setSectionEnabled(options: PageViewOptions): void;
5857
6115
  protected _getCssSelector(): string;
5858
6116
  protected _createPageHeaderElement(doc: Document): PageHeaderElement;
5859
6117
  protected _createPageFooterElement(doc: Document): PageFooterElement;
@@ -6168,6 +6426,41 @@ declare class HtmlItemElement extends ReportItemElement<HtmlItem> {
6168
6426
  private $_validateHtmlTags;
6169
6427
  }
6170
6428
 
6429
+ /**
6430
+ * Report Item Element들에 대한 정보를 한곳에 모아서 등록해놓고 용이하게 꺼내쓰기 위해 작성
6431
+ */
6432
+ declare class ReportItemElementMap extends Base$1 {
6433
+ private _reportItemElements;
6434
+ constructor();
6435
+ add<T extends ReportItem>(itemElement: ReportItemElement<T>): void;
6436
+ getItemElementByModel<T extends ReportItem>(model: ReportItem): ReportItemElement<T> | undefined;
6437
+ getBandElementByModel<T extends DataBand>(model: DataBand): BandElement<T> | undefined;
6438
+ }
6439
+ declare class TableBandGroupSectionElement<T extends TableBandRowGroupSection> extends TableElement<T> {
6440
+ constructor(doc: Document, model: T, name: string);
6441
+ applyGroupStyles(tr: HTMLTableRowElement): void;
6442
+ protected _needDesignBox(): boolean;
6443
+ protected _createCellElement(doc: Document, cell: TableCellItem): TableCellElementBase;
6444
+ protected _doMeasure(ctx: PrintContext, dom: HTMLElement, hintWidth: number, hintHeight: number): Size$1;
6445
+ protected _doAfterMeasure(ctx: PrintContext, dom: HTMLElement, hintWidth: number, hintHeight: number, sz: Size$1): void;
6446
+ }
6447
+ interface ITableGroupPrintInfo extends IGroupPrintInfo {
6448
+ view: TableBandGroupSectionElement<TableBandRowGroupHeader | TableBandRowGroupFooter>;
6449
+ }
6450
+ type TableBandPrintRow = BandPrintRow | ITableGroupPrintInfo;
6451
+
6452
+ declare class SimpleBandGroupSectionElement<T extends SimpleBandRowGroupSection> extends StackContainerElement<T> {
6453
+ constructor(doc: Document, model: T, name: string);
6454
+ applyGroupStyles(elt: HTMLElement): void;
6455
+ protected _needDesignBox(): boolean;
6456
+ protected _doMeasure(ctx: PrintContext, dom: HTMLElement, hintWidth: number, hintHeight: number): Size$1;
6457
+ protected _doAfterMeasure(ctx: PrintContext, dom: HTMLElement, hintWidth: number, hintHeight: number, sz: Size$1): void;
6458
+ }
6459
+ interface ISimpleGroupPrintInfo extends IGroupPrintInfo {
6460
+ view: SimpleBandGroupSectionElement<SimpleBandRowGroupHeader | SimpleBandRowGroupFooter>;
6461
+ }
6462
+ type SimpleBandPrintRow = BandPrintRow | ISimpleGroupPrintInfo;
6463
+
6171
6464
  interface AsyncLoadable {
6172
6465
  loadAsync(ctx: PrintContext): Promise<void>;
6173
6466
  }
@@ -6230,6 +6523,7 @@ declare class PrintContext extends Base$1 {
6230
6523
  contextElements: {
6231
6524
  [hash: string]: TextItemElementBase<any>;
6232
6525
  };
6526
+ private _reportItemElementMap;
6233
6527
  private _asyncLoadableElements;
6234
6528
  constructor(printing?: boolean, compositePrinting?: boolean);
6235
6529
  /**
@@ -6298,6 +6592,7 @@ declare class PrintContext extends Base$1 {
6298
6592
  * compositePage index.
6299
6593
  */
6300
6594
  get compositePage(): number;
6595
+ get reportItemElementMap(): ReportItemElementMap;
6301
6596
  preparePrint(report?: Report): void;
6302
6597
  preparePage(page: number, allPage: number): void;
6303
6598
  setDetailPage(count: number, page: number): void;
@@ -6332,6 +6627,7 @@ declare class PrintContext extends Base$1 {
6332
6627
  * @param itemElement 로드가 필요한 reportItemElement
6333
6628
  */
6334
6629
  addAsyncLoadableElement(itemElement: AsyncLoadable): void;
6630
+ addReportItemElement(itemElement: ReportItemElement<any>): void;
6335
6631
  /**
6336
6632
  * 로드가 필요한 Elements에 대한 비동기 처리
6337
6633
  */
@@ -6349,6 +6645,11 @@ declare class EndRowMarker {
6349
6645
  maxCount: number;
6350
6646
  constructor(count: number, maxCount: number);
6351
6647
  }
6648
+ interface IGroupPrintInfo {
6649
+ row: number;
6650
+ rowType: string;
6651
+ group: IBandRowGroup;
6652
+ }
6352
6653
  type BandPrintRow = number | BandFooterPrintInfo | BandPrintInfo<any> | EndRowMarker;
6353
6654
  declare abstract class BandPrintInfo<T extends ReportItem> {
6354
6655
  band: T;
@@ -6382,6 +6683,10 @@ declare abstract class BandPrintInfo<T extends ReportItem> {
6382
6683
  isBand(row: any): row is BandPrintInfo<any>;
6383
6684
  isGroupHeader(row: any): boolean;
6384
6685
  isGroupFooter(row: any): boolean;
6686
+ /**
6687
+ * 밴드아이템 출력중 가장 마지막 행이 포함되어서 출력중인지 판단
6688
+ */
6689
+ isLastRowIncluded(lastRow: number, rows: TableBandPrintRow[] | SimpleBandPrintRow[]): boolean;
6385
6690
  protected _setX(dom: HTMLElement, x: number): void;
6386
6691
  protected _setY(dom: HTMLElement, y: number): void;
6387
6692
  protected _setPos(dom: HTMLElement, x: number, y: number): void;
@@ -6416,7 +6721,10 @@ declare abstract class BandPrintInfo<T extends ReportItem> {
6416
6721
  protected _resetRowIndex(row: BandPrintInfo<SimpleBand | TableBand>): void;
6417
6722
  protected _prepareDetailBandPrintNext(ctx: PrintContext, band: DataBand, row: BandPrintInfo<SimpleBand | TableBand>, rows: BandPrintRow[], rowsPerPage: number): void;
6418
6723
  }
6419
- type PrintLine = HTMLElement | BandPrintInfo<any> | ReportFooterPrintInfo | PageBreaker;
6724
+ type PrintLine = {
6725
+ line: HTMLElement | BandPrintInfo<any> | ReportFooterPrintInfo | PageBreaker;
6726
+ pageIndex: number;
6727
+ };
6420
6728
 
6421
6729
  interface ISelectionSource {
6422
6730
  selectItem: ReportPageItem;
@@ -8107,6 +8415,10 @@ declare enum ReportType {
8107
8415
  REPORT = "report",
8108
8416
  EMAIL = "email"
8109
8417
  }
8418
+ declare enum ReportPageType {
8419
+ REPORT = "report",
8420
+ SUB_BAND = "subBand"
8421
+ }
8110
8422
  declare enum BoxItemsAlign {
8111
8423
  START = "start",
8112
8424
  MIDDLE = "middle",
@@ -8277,6 +8589,10 @@ declare class PrintContainer extends VisualContainer$1 {
8277
8589
  private $_buildOutput;
8278
8590
  private $_buildNoPagingOutput;
8279
8591
  private $_setFrontBackLayer;
8592
+ /**
8593
+ * 서브 밴드 페이지들은 다른 페이지들에 연결해서 사용되기 때문에 우선적으로 뷰를 준비한다.
8594
+ */
8595
+ private $_prepareSubPageViews;
8280
8596
  /**
8281
8597
  * unitpost 한장 요약 HTML 요청으로 singlePage 별도 메서드로 분리
8282
8598
  */