UNPKG

devexpress-reporting

Version:

DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.

758 lines (757 loc) 33.7 kB
/** * DevExpress HTML/JS Reporting (designer\utils\_registerControls.js) * Version: 25.2.3 * Build date: Dec 15, 2025 * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * License: https://www.devexpress.com/Support/EULAs/universal.xml */ import { getLocalization } from '@devexpress/analytics-core/analytics-utils'; import { bandSerializationInfo, popularPropertiesReportFooter, popularPropertiesReportHeader, reportFooterBandSerializationInfo, reportHeaderBandSerializationInfo } from '../bands/metadata/xrBandMetaData'; import { detailBandSerializationInfo, generalBandPopularProperties, popularPropertiesDetail, subBandSerializationInfo } from '../bands/metadata/xrDetailBandMetaData'; import { detailReportBandSerializationInfo, popularPropertiesDetailReport } from '../bands/metadata/xrDetailReportBandMetaData'; import { groupFooterBandSerializationInfo, groupHeaderBandSerializationInfo, popularPropertiesGroupFooter, popularPropertiesGroupHeader } from '../bands/metadata/xrGroupBandMetaData'; import { pageBandSerializationInfo, pageBandSerializationInfoPageHeader, popularPropertiesPageFooter, popularPropertiesPageHeader } from '../bands/metadata/xrPageBandMetaData'; import { popularPropertiesVerticalHeaderBand, popularPropertiesVerticalTotalBand, verticalHeaderBandSerializationInfo, verticalTotalBandSerializationInfo } from '../bands/metadata/xrVerticalBandMetaData'; import { popularPropertiesVerticalDetailBand, verticalDetailBandSerializationInfo } from '../bands/metadata/xrVerticalDetailBandMetaData'; import { BandSurface, BandViewModel } from '../bands/xrBand'; import { DetailBand, DetailBandSurface } from '../bands/xrDetailBand'; import { DetailReportBand, DetailReportBandSurface } from '../bands/xrDetailReportBand'; import { GroupHeaderBand } from '../bands/xrGroupBand'; import { GroupFooterBand } from '../bands/xrGroupBand'; import { BottomMarginBand, BottomMarginSurface, TopMarginBand } from '../bands/xrMarginBands'; import { PageFooterSurface } from '../bands/xrPageBand'; import { SubBandSurface, SubBandViewModel } from '../bands/xrSubband'; import { VerticalBandSurface, VerticalBandViewModel } from '../bands/xrVerticalBand'; import { VerticalDetailBandViewModel } from '../bands/xrVerticalDetailBand'; import { getNearestBand } from '../controls/getNearestBand'; import { cellserializtionInfo, popularPropertiesCrossTabCell } from '../controls/metadata/crosstab/xrCrossTabCell'; import { pivotGridFieldSerializationsInfo, popularPropertiesPivotGridField } from '../controls/metadata/pivotgrid/pivotgridfield'; import { unknownSerializationsInfo } from '../controls/metadata/properties/metadataGroups'; import { commonBandScripts } from '../controls/metadata/properties/scriptMetadata'; import { barcodeSerializationsInfo, popularPropertiesBarCode } from '../controls/metadata/xrBarcode'; import { characterCombSerializationsInfo } from '../controls/metadata/xrCharactercomb'; import { xrChartSerializationInfo } from '../controls/metadata/xrChart'; import { checkboxSerializationsInfo, popularPropertiesCheckBox } from '../controls/metadata/xrCheckbox'; import { xrControlSerializationsInfo, panelSerializationsInfo } from '../controls/metadata/xrControl'; import { crossBandBoxControlSerializationsInfo, crossBandLineControlSerializationsInfo, popularPropertiesCrossLine } from '../controls/metadata/xrCrossband'; import { crossTabSerializationInfo } from '../controls/metadata/xrCrossTab'; import { popularPropertiesGauge, xrGaugeSerializationInfo } from '../controls/metadata/xrGauge'; import { lineSerializationsInfo, popularPropertiesLine } from '../controls/metadata/xrLine'; import { pageBreakSerializationsInfo } from '../controls/metadata/xrPagebreak'; import { pageInfoSerializationsInfo, popularPropertiesPageInfo } from '../controls/metadata/xrPageinfo'; import { pdfContentSerializationInfo, popularPropertiesPdfContent } from '../controls/metadata/xrPdfContent'; import { pdfSignatureInfo } from '../controls/metadata/xrPdfSignature'; import { pictureBoxSerializationsInfo, popularPropertiesPicture } from '../controls/metadata/xrPicturebox'; import { pivotGridSerializationsInfo } from '../controls/metadata/xrPivotgrid'; import { popularPropertiesReport, reportSerializationInfo } from '../controls/metadata/xrReport'; import { popularPropertiesRichText, richTextSerializationsInfo } from '../controls/metadata/xrRichText'; import { popularPropertiesShape, shapeSerializationsInfo } from '../controls/metadata/xrShape'; import { popularPropertiesSparkline, sparklineSerializationsInfo } from '../controls/metadata/xrSparkline'; import { subreportSerializationsInfo } from '../controls/metadata/xrSubreport'; import { popularPropertiesTable, tableSerializationsInfo } from '../controls/metadata/xrTable'; import { popularPropertiesTableCell, tableCellSerializationsInfo } from '../controls/metadata/xrTableCell'; import { tocSerializationsInfo } from '../controls/metadata/xrTableOfContents'; import { tableRowSerializationsInfo } from '../controls/metadata/xrTableRow'; import { labelSerializationsInfo, popularPropertiesLabel } from '../controls/metadata/xrTextControl'; import { popularPropertiesZipCode, zipCodeSerializationInfo } from '../controls/metadata/xrZipcode'; import { PivotGridFieldSurface, PivotGridFieldViewModel } from '../controls/pivotgrid/pivotgridfield'; import { getRichEditSurface } from '../controls/richEdit'; import { SubreportViewModel } from '../controls/subreportViewModel'; import { ControlsFactory } from '../controls/utils/controlsFactory'; import { isHeaderOrFooterBandType } from '../controls/utils/_headOrFooterBandType'; import { getExistTableOfContents } from '../controls/utils/_tocUtils'; import { XRBarCodeViewModel } from '../controls/xrBarcode'; import { XRCharacterComb, XRCharacterCombSurface } from '../controls/xrCharactercomb'; import { XRChartSurface, XRChartViewModel } from '../controls/xrChart'; import { XRCheckBoxSurface, XRCheckBoxViewModel } from '../controls/xrCheckbox'; import { XRControlSurface, XRControlViewModel } from '../controls/xrControl'; import { XRCrossBandControlViewModel, XRCrossBandSurface } from '../controls/xrCrossband'; import { XRCrossTabSurface, XRCrossTabViewModel } from '../controls/xrCrossTab'; import { XRCellsurface, XRCrossTabCellViewModel } from '../controls/xrCrossTabCell'; import { XRGaugeViewModel } from '../controls/xrGauge'; import { XRLineSurface } from '../controls/xrLine'; import { XRPageBreakSurface } from '../controls/xrPagebreak'; import { XRPageInfoSurface, XRPageInfoViewModel } from '../controls/xrPageinfo'; import { XRPdfContentSurface, XRPdfContentViewModel } from '../controls/xrPdfContent'; import { XRPdfSignatureModel, XRPdfSignatureSurface } from '../controls/xrPdfSignature'; import { XRPictureBoxSurface, XRPictureBoxViewModel } from '../controls/xrPicturebox'; import { XRPivotGridSurface, XRPivotGridViewModel } from '../controls/xrPivotgrid'; import { ReportSurface } from '../controls/xrReport'; import { XRRichViewModel } from '../controls/xrRichText'; import { XRShapeControlSurface, XRShapeViewModel } from '../controls/xrShape'; import { XRSparkLineSurface, XRSparklineViewModel } from '../controls/xrSparkline'; import { XRSubreportSurface, XRSubreportViewModel } from '../controls/xrSubreport'; import { XRTableControlViewModel, XRTableSurface } from '../controls/xrTable'; import { XRTableCellSurface, XRTableCellViewModel } from '../controls/xrTableCell'; import { XRTableOfContentsSurface, XRTableOfContentsViewModel } from '../controls/xrTableOfContents'; import { XRTableRowSurface, XRTableRowViewModel } from '../controls/xrTableRow'; import { XRTextControlSurfaceBase } from '../controls/xrTextControl'; import { XRZipCodeSurface } from '../controls/xrZipcode'; import { UnknownViewModel } from '../controls/_xrTodoControl'; import { XRUnknownControlSurface } from '../controls/xrUnknownControl'; import { DefaultCrossTabControlEnum } from '../internal/_defaultCrossTabControl'; import { controlsFactory, DefaultCrossTabControl } from './settings'; import { _isMarginBand, _isPageBand, _isReorderBand } from './utils'; import { defaultTextPadding } from '../controls/metadata/properties/metadata'; const canPasteInBand = (dropTarget) => { const model = dropTarget.getControlModel(); return model instanceof BandViewModel; }; export function registerControls(fieldListProvider) { controlsFactory(new ControlsFactory(fieldListProvider)); controlsFactory().registerControl('Unknown', { info: unknownSerializationsInfo, type: UnknownViewModel, defaultVal: { '@SizeF': '100,23' }, nonToolboxItem: true, surfaceType: XRControlSurface }); controlsFactory().registerControl('XRLabel', { info: labelSerializationsInfo, toolboxIndex: 0, defaultVal: { '@Padding': defaultTextPadding, '@Multiline': 'true', '@SizeF': '100,23' }, group: 'common', defaultBindingName: 'Text', surfaceType: XRTextControlSurfaceBase, type: XRControlViewModel, popularProperties: popularPropertiesLabel, displayName: getLocalization('Label', 'DevExpress.XtraReports.UI.XRLabel') }); controlsFactory().registerControl('XRCheckBox', { info: checkboxSerializationsInfo, toolboxIndex: 1, group: 'common', type: XRCheckBoxViewModel, surfaceType: XRCheckBoxSurface, defaultVal: { '@SizeF': '100,23', '@Padding': defaultTextPadding }, defaultBindingName: 'CheckBoxState', popularProperties: popularPropertiesCheckBox, displayName: getLocalization('Check Box', 'DevExpress.XtraReports.UI.XRCheckBox') }); controlsFactory().registerControl('XRRichText', { info: richTextSerializationsInfo, toolboxIndex: 2, group: 'common', defaultVal: { '@SizeF': '100,23', '@Padding': defaultTextPadding }, surfaceType: getRichEditSurface()(), type: XRRichViewModel, defaultBindingName: 'Rtf', popularProperties: popularPropertiesRichText, displayName: getLocalization('Rich Text', 'DevExpress.XtraReports.UI.XRRichText') }); controlsFactory().registerControl('XRPictureBox', { info: pictureBoxSerializationsInfo, toolboxIndex: 3, group: 'common', defaultVal: { '@SizeF': '100,100', '@Sizing': 'ZoomImage', }, type: XRPictureBoxViewModel, surfaceType: XRPictureBoxSurface, defaultBindingName: 'ImageSource', popularProperties: popularPropertiesPicture, displayName: getLocalization('Picture Box', 'DevExpress.XtraReports.UI.XRPictureBox') }); controlsFactory().registerControl('XRPanel', { info: panelSerializationsInfo, toolboxIndex: 4, group: 'common', defaultVal: { '@SizeF': '300,75' }, surfaceType: XRControlSurface, type: XRControlViewModel, isContainer: true, displayName: getLocalization('Panel', 'DevExpress.XtraReports.UI.XRPanel') }); controlsFactory().registerControl('XRTable', { info: tableSerializationsInfo, group: 'common', type: XRTableControlViewModel, toolboxIndex: 5, defaultVal: { '@SizeF': '300,25', '@Padding': defaultTextPadding, 'Rows': { 'Item1': { '@ControlType': 'XRTableRow', '@Weight': '1', 'Cells': { 'Item1': { '@ControlType': 'XRTableCell', '@Weight': '1', '@Multiline': 'true' }, 'Item2': { '@ControlType': 'XRTableCell', '@Weight': '1', '@Multiline': 'true' }, 'Item3': { '@ControlType': 'XRTableCell', '@Weight': '1', '@Multiline': 'true' } } } } }, surfaceType: XRTableSurface, popularProperties: popularPropertiesTable, isContainer: true, isPasteDeny: true, canDrop: (dropTarget) => dropTarget.getControlModel().controlType !== 'XRTableRow', displayName: getLocalization('Table', 'DevExpress.XtraReports.UI.XRTable') }); controlsFactory().registerControl('XRCharacterComb', { info: characterCombSerializationsInfo, toolboxIndex: 6, group: 'common', defaultVal: { '@SizeF': '200,80', '@Multiline': 'true' }, defaultBindingName: 'Text', surfaceType: XRCharacterCombSurface, type: XRCharacterComb, popularProperties: popularPropertiesLabel, displayName: getLocalization('Character Comb', 'DevExpress.XtraReports.UI.XRCharacterComb') }); controlsFactory().registerControl('XRLine', { info: lineSerializationsInfo, group: 'graphics', toolboxIndex: 7, type: XRControlViewModel, surfaceType: XRLineSurface, defaultVal: { '@SizeF': '100,23', }, popularProperties: popularPropertiesLine, displayName: getLocalization('Line', 'DevExpress.XtraReports.UI.XRLine') }); controlsFactory().registerControl('XRShape', { info: shapeSerializationsInfo, toolboxIndex: 8, group: 'graphics', defaultVal: { '@SizeF': '100,100' }, defaultBindingName: 'Tag', type: XRShapeViewModel, surfaceType: XRShapeControlSurface, popularProperties: popularPropertiesShape, displayName: getLocalization('Shape', 'DevExpress.XtraReports.UI.XRShape') }); controlsFactory().registerControl('XRBarCode', { info: barcodeSerializationsInfo, toolboxIndex: 9, group: 'graphics', defaultVal: { '@SizeF': '200,75', '@Padding': '10,10,0,0,100', 'Symbology': { '@Name': 'Code128' }, '@Text': '' }, defaultBindingName: 'Text', surfaceType: XRUnknownControlSurface, type: XRBarCodeViewModel, popularProperties: popularPropertiesBarCode, displayName: getLocalization('Bar Code', 'DevExpress.XtraReports.UI.XRBarCode') }); controlsFactory().registerControl('XRZipCode', { info: zipCodeSerializationInfo, type: XRControlViewModel, nonToolboxItem: true, group: 'graphics', surfaceType: XRZipCodeSurface, toolboxIndex: 10, defaultVal: { '@SizeF': '100,23' }, popularProperties: popularPropertiesZipCode, displayName: getLocalization('Zip Code', 'DevExpress.XtraReports.UI.XRZipCode') }); controlsFactory().registerControl('XRChart', { info: xrChartSerializationInfo, group: 'complex', toolboxIndex: 11, defaultVal: { '@SizeF': '400,300', 'Chart': { 'Diagram': { '@TypeNameSerializable': 'XYDiagram', 'AxisY': { '@VisibleInPanesSerializable': '-1' }, 'AxisX': { '@VisibleInPanesSerializable': '-1' } }, 'DataContainer': {} } }, defaultBindingName: 'Tag', type: XRChartViewModel, surfaceType: XRChartSurface, popularProperties: ['dataSource', 'dataMember', 'controlParameters'], displayName: getLocalization('Chart', 'DevExpress.XtraReports.UI.XRChart') }); controlsFactory().registerControl('XRGauge', { info: xrGaugeSerializationInfo, surfaceType: XRUnknownControlSurface, type: XRGaugeViewModel, group: 'complex', toolboxIndex: 12, defaultVal: { '@SizeF': '220,120' }, defaultBindingName: 'Tag', popularProperties: popularPropertiesGauge, displayName: getLocalization('Gauge', 'DevExpress.XtraReports.UI.XRGauge') }); controlsFactory().registerControl('XRSparkline', { info: sparklineSerializationsInfo, toolboxIndex: 13, group: 'complex', defaultVal: { '@SizeF': '150,80', 'View': { '@Type': 'Line' }, }, surfaceType: XRSparkLineSurface, defaultBindingName: 'Tag', type: XRSparklineViewModel, popularProperties: popularPropertiesSparkline, displayName: getLocalization('Sparkline', 'DevExpress.XtraReports.UI.XRSparkline') }); controlsFactory().registerControl('XRPivotGrid', { info: pivotGridSerializationsInfo, toolboxIndex: 14, group: 'complex', defaultVal: { '@ControlType': 'XRPivotGrid', '@SizeF': '250,120', 'OptionsChartDataSource': {}, 'Prefilter': {}, 'OptionsPrint': { '@FilterSeparatorBarPadding': '3', '@UsePrintAppearance': 'true', '@PrintFilterHeaders': 'False' }, 'OptionsView': {} }, canPaste: canPasteInBand, defaultBindingName: 'Tag', type: XRPivotGridViewModel, surfaceType: XRPivotGridSurface, nonToolboxItem: DefaultCrossTabControl() == DefaultCrossTabControlEnum.XRCrossTab, popularProperties: ['dataSource', 'dataMember'], displayName: getLocalization('Pivot Grid', 'DevExpress.XtraReports.UI.XRPivotGrid') }); controlsFactory().registerControl('XRCrossTab', { info: crossTabSerializationInfo, toolboxIndex: 14, type: XRCrossTabViewModel, group: 'complex', defaultVal: { '@ControlType': 'XRCrossTab', '@SizeF': '200,50', 'ColumnDefinitions': { 'Item1': {}, 'Item2': {} }, 'RowDefinitions': { 'Item1': {}, 'Item2': {} }, 'Cells': { 'Item1': { '@ControlType': 'XRCrossTabCell', '@ColumnIndex': '0', '@RowIndex': '0', '@Text': null }, 'Item2': { '@ControlType': 'XRCrossTabCell', '@ColumnIndex': '1', '@RowIndex': '1', '@Text': null }, 'Item3': { '@ControlType': 'XRCrossTabCell', '@ColumnIndex': '1', '@RowIndex': '0', '@Text': null }, 'Item4': { '@ControlType': 'XRCrossTabCell', '@ColumnIndex': '0', '@RowIndex': '1', '@Text': null } } }, surfaceType: XRCrossTabSurface, displayName: getLocalization('Cross Tab', 'DevExpress.XtraReports.UI.XRCrossTab'), nonToolboxItem: DefaultCrossTabControl() == DefaultCrossTabControlEnum.XRPivotGrid, popularProperties: ['dataSource', 'dataMember', 'layoutOptions', 'printOptions', 'controlParameters', 'filterString'] }); controlsFactory().registerControl('XRCrossTabCell', { info: cellserializtionInfo, type: XRCrossTabCellViewModel, popularProperties: popularPropertiesCrossTabCell, nonToolboxItem: true, isDeleteDeny: true, group: 'complex', defaultVal: { '@ControlType': 'XRCrossTabCell', '@Text': '', '@TextFormatString': '' }, surfaceType: XRCellsurface, displayName: getLocalization('Cross Tab Cell', 'DevExpress.XtraReports.UI.CrossTab.XRCrossTabCell') }); controlsFactory().registerControl('XRSubreport', { info: subreportSerializationsInfo, toolboxIndex: 15, group: 'complex', defaultVal: { '@SizeF': '100,23', 'ReportSource': SubreportViewModel.defaultReport }, surfaceType: XRSubreportSurface, type: XRSubreportViewModel, canPaste: canPasteInBand, popularProperties: ['name', 'reportSourceUrl'], displayName: getLocalization('Sub-Report', 'DevExpress.XtraReports.UI.XRSubreport') }); controlsFactory().registerControl('XRPdfContent', { info: pdfContentSerializationInfo, toolboxIndex: 16, group: 'complex', defaultVal: { '@HeightF': '23', '@SizeF': '0, 23' }, defaultBindingName: 'SourceUrl', surfaceType: XRPdfContentSurface, type: XRPdfContentViewModel, popularProperties: popularPropertiesPdfContent, displayName: getLocalization('PDF Content', 'DevExpress.XtraReports.UI.XRPdfContent'), canDrop: (dropTarget, dragFrom) => { const bandModel = getNearestBand(dropTarget.getControlModel()); return bandModel && !_isMarginBand(bandModel) && !_isPageBand(bandModel); }, canPaste: canPasteInBand }); controlsFactory().registerControl('XRPdfSignature', { info: pdfSignatureInfo, type: XRPdfSignatureModel, toolboxIndex: 17, group: 'complex', defaultVal: { '@SizeF': '200,100', 'SignatureOptions': { '@DisplayDocumentSignature': 'false' } }, surfaceType: XRPdfSignatureSurface, popularProperties: ['signatureOptions'], displayName: getLocalization('PDF Signature', 'DevExpress.XtraReports.UI.XRPdfSignature') }); controlsFactory().registerControl('XRTableOfContents', { toolboxIndex: 18, info: tocSerializationsInfo, group: 'misc', surfaceType: XRTableOfContentsSurface, type: XRTableOfContentsViewModel, defaultVal: { '@ControlType': 'XRTableOfContents', 'LevelTitle': { '@Text': 'Title', '@Height': '23', '@Padding': '0,0,0,0,100' }, 'LevelDefault': { '@Height': '23', '@Padding': '0,0,0,0,100' } }, canDrop: (dropTarget, dragFrom) => { const bandModel = getNearestBand(dropTarget.getControlModel()); if (!bandModel) return false; if (!dragFrom) { const reportModel = bandModel.root; return reportModel.canAddToC(); } else if (isHeaderOrFooterBandType(bandModel)) { const toc = getExistTableOfContents(bandModel); return !toc || toc === dragFrom; } return false; }, displayName: getLocalization('Table of Contents', 'DevExpress.XtraReports.UI.XRTableOfContents') }); controlsFactory().registerControl('XRPageInfo', { info: pageInfoSerializationsInfo, type: XRPageInfoViewModel, surfaceType: XRPageInfoSurface, toolboxIndex: 19, group: 'misc', defaultVal: { '@SizeF': '100,23', '@Padding': defaultTextPadding }, popularProperties: popularPropertiesPageInfo, displayName: getLocalization('Page Info', 'DevExpress.XtraReports.UI.XRPageInfo') }); controlsFactory().registerControl('XRPageBreak', { info: pageBreakSerializationsInfo, type: XRControlViewModel, surfaceType: XRPageBreakSurface, toolboxIndex: 20, group: 'misc', defaultVal: { '@SizeF': '30,2' }, canPaste: canPasteInBand, displayName: getLocalization('Page Break', 'DevExpress.XtraReports.UI.XRPageBreak') }); controlsFactory().registerControl('XRCrossBandLine', { info: crossBandLineControlSerializationsInfo, type: XRCrossBandControlViewModel, toolboxIndex: 21, group: 'misc', defaultVal: { '@WidthF': '9.38', '@StartPointFloat': '0,0', '@EndPointFloat': '0,50' }, size: '9.38, 50', surfaceType: XRCrossBandSurface, popularProperties: popularPropertiesCrossLine, displayName: getLocalization('Cross-band Line', 'DevExpress.XtraReports.UI.XRCrossBandLine') }); controlsFactory().registerControl('XRCrossBandBox', { info: crossBandBoxControlSerializationsInfo, type: XRCrossBandControlViewModel, toolboxIndex: 22, group: 'misc', defaultVal: { '@WidthF': '50', '@StartPointFloat': '0,0', '@EndPointFloat': '0,50' }, size: '50,50', popularProperties: ['borderColor', 'visible', 'canPublishOptions', 'borders'], surfaceType: XRCrossBandSurface, displayName: getLocalization('Cross-band Box', 'DevExpress.XtraReports.UI.XRCrossBandBox') }); controlsFactory().registerControl('DevExpress.XtraReports.UI.XtraReport', { info: reportSerializationInfo, nonToolboxItem: true, surfaceType: ReportSurface, popularProperties: popularPropertiesReport, isCopyDeny: true, isDeleteDeny: true, displayName: getLocalization('Report', 'DevExpress.XtraReports.UI.XtraReport') }); controlsFactory().registerControl('TopMarginBand', { info: bandSerializationInfo.concat(commonBandScripts), type: TopMarginBand, nonToolboxItem: true, surfaceType: BandSurface, isContainer: true, isCopyDeny: true, isDeleteDeny: true, displayName: getLocalization('Top Margin', 'DevExpress.XtraReports.UI.TopMarginBand') }); controlsFactory().registerControl('BottomMarginBand', { info: bandSerializationInfo.concat(commonBandScripts), type: BottomMarginBand, nonToolboxItem: true, surfaceType: BottomMarginSurface, isContainer: true, isCopyDeny: true, isDeleteDeny: true, displayName: getLocalization('Bottom Margin', 'DevExpress.XtraReports.UI.BottomMarginBand') }); controlsFactory().registerControl('DetailReportBand', { info: detailReportBandSerializationInfo, type: DetailReportBand, nonToolboxItem: true, surfaceType: DetailReportBandSurface, popularProperties: popularPropertiesDetailReport, isContainer: true, isCopyDeny: true, canDrop: (dropTarget, draggableModel) => { const dropTargetModel = dropTarget.getControlModel(); return (dropTargetModel.controlType === 'DevExpress.XtraReports.UI.XtraReport' || dropTargetModel.controlType === 'DetailReportBand'); }, displayName: getLocalization('Detail Report', 'DevExpress.XtraReports.UI.DetailReportBand') }); controlsFactory().registerControl('DetailBand', { info: detailBandSerializationInfo, type: DetailBand, nonToolboxItem: true, surfaceType: DetailBandSurface, popularProperties: popularPropertiesDetail, isContainer: true, isCopyDeny: true, isDeleteDeny: true, displayName: getLocalization('Detail', 'DevExpress.XtraReports.UI.DetailBand') }); controlsFactory().registerControl('SubBand', { info: subBandSerializationInfo, type: SubBandViewModel, nonToolboxItem: true, surfaceType: SubBandSurface, popularProperties: generalBandPopularProperties, isContainer: true, isCopyDeny: true, canDrop: (dropTarget, draggableModel) => { const dropTargetModel = dropTarget.getControlModel(); return draggableModel.parentModel() === dropTargetModel.parentModel() && dropTargetModel.controlType === 'SubBand'; }, displayName: getLocalization('Sub-Band', 'DevExpress.XtraReports.UI.SubBand') }); controlsFactory().registerControl('GroupHeaderBand', { info: groupHeaderBandSerializationInfo, type: GroupHeaderBand, nonToolboxItem: true, surfaceType: BandSurface, popularProperties: popularPropertiesGroupHeader, isContainer: true, isCopyDeny: true, canDrop: _isReorderBand, displayName: getLocalization('Group Header', 'DevExpress.XtraReports.UI.GroupHeaderBand') }); controlsFactory().registerControl('GroupFooterBand', { info: groupFooterBandSerializationInfo, type: GroupFooterBand, nonToolboxItem: true, surfaceType: BandSurface, popularProperties: popularPropertiesGroupFooter, isContainer: true, isCopyDeny: true, canDrop: _isReorderBand, displayName: getLocalization('Group Footer', 'DevExpress.XtraReports.UI.GroupFooterBand') }); controlsFactory().registerControl('PageHeaderBand', { info: pageBandSerializationInfoPageHeader, type: BandViewModel, nonToolboxItem: true, surfaceType: BandSurface, popularProperties: popularPropertiesPageHeader, isContainer: true, isCopyDeny: true, displayName: getLocalization('Page Header', 'DevExpress.XtraReports.UI.PageHeaderBand') }); controlsFactory().registerControl('PageFooterBand', { info: pageBandSerializationInfo, type: BandViewModel, nonToolboxItem: true, surfaceType: PageFooterSurface, popularProperties: popularPropertiesPageFooter, isContainer: true, isCopyDeny: true, displayName: getLocalization('Page Footer', 'DevExpress.XtraReports.UI.PageFooterBand') }); controlsFactory().registerControl('ReportHeaderBand', { info: reportHeaderBandSerializationInfo, type: BandViewModel, nonToolboxItem: true, surfaceType: BandSurface, popularProperties: popularPropertiesReportHeader, isContainer: true, isCopyDeny: true, displayName: getLocalization('Report Header', 'DevExpress.XtraReports.UI.ReportHeaderBand') }); controlsFactory().registerControl('ReportFooterBand', { info: reportFooterBandSerializationInfo, type: BandViewModel, nonToolboxItem: true, popularProperties: popularPropertiesReportFooter, surfaceType: BandSurface, isContainer: true, isCopyDeny: true, displayName: getLocalization('Report Footer', 'DevExpress.XtraReports.UI.ReportFooterBand') }); controlsFactory().registerControl('VerticalHeaderBand', { info: verticalHeaderBandSerializationInfo, type: VerticalBandViewModel, nonToolboxItem: true, popularProperties: popularPropertiesVerticalHeaderBand, surfaceType: VerticalBandSurface, isContainer: true, isCopyDeny: true }); controlsFactory().registerControl('VerticalDetailBand', { info: verticalDetailBandSerializationInfo, type: VerticalDetailBandViewModel, nonToolboxItem: true, popularProperties: popularPropertiesVerticalDetailBand, surfaceType: VerticalBandSurface, isContainer: true, isCopyDeny: true, isDeleteDeny: true }); controlsFactory().registerControl('VerticalTotalBand', { info: verticalTotalBandSerializationInfo, type: VerticalBandViewModel, nonToolboxItem: true, popularProperties: popularPropertiesVerticalTotalBand, surfaceType: VerticalBandSurface, isContainer: true, isCopyDeny: true }); controlsFactory().registerControl('PivotGridField', { info: pivotGridFieldSerializationsInfo, type: PivotGridFieldViewModel, surfaceType: PivotGridFieldSurface, nonToolboxItem: true, popularProperties: popularPropertiesPivotGridField, displayName: 'PivotGridField' }); controlsFactory().registerControl('XRTableRow', { info: tableRowSerializationsInfo, type: XRTableRowViewModel, defaultVal: { '@HeightF': '25', '@Weight': '20' }, nonToolboxItem: true, surfaceType: XRTableRowSurface, isContainer: true, isCopyDeny: true, isPasteDeny: true, canDrop: (dropTarget) => dropTarget.getControlModel().controlType === 'XRTable', displayName: getLocalization('Table Row', 'DevExpress.XtraReports.UI.XRTableRow') }); controlsFactory().registerControl('XRTableCell', { info: tableCellSerializationsInfo, type: XRTableCellViewModel, defaultVal: { '@Weight': '1', '@WidthF': '100', '@Multiline': 'true' }, nonToolboxItem: true, surfaceType: XRTableCellSurface, popularProperties: popularPropertiesTableCell, isContainer: true, defaultBindingName: 'Text', isCopyDeny: true, canDrop: (dropTarget) => dropTarget.getControlModel().controlType === 'XRTableRow', displayName: getLocalization('Table Cell', 'DevExpress.XtraReports.UI.XRTableCell') }); controlsFactory().registerControl('XRControl', { isToolboxItem: false, info: xrControlSerializationsInfo, defaultVal: { '@Padding': defaultTextPadding, '@SizeF': '100,23' }, surfaceType: XRUnknownControlSurface, type: XRControlViewModel, popularProperties: [], displayName: 'XRControl' }); }