devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
69 lines (68 loc) • 2.75 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (designer\widgets\bandEditors.js)
* Version: 24.2.6
* Build date: Mar 18, 2025
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* License: https://www.devexpress.com/Support/EULAs/universal.xml
*/
import { Editor, ObjectProperties } from '@devexpress/analytics-core/analytics-widgets';
import * as ko from 'knockout';
import { pageBreakValues, pageBreakWithoutAfterValues, printAcrossBands } from '../bands/metadata/bandsMetadata';
import { sortFields } from '../bands/metadata/xrDetailBandMetaData';
import { groupFields } from '../bands/metadata/xrGroupBandMetaData';
import { DetailReportBand } from '../bands/xrDetailReportBand';
export class BandEditorBase extends Editor {
constructor() {
super(...arguments);
this.generateValue = (bands) => {
if (!this.bands) {
this.bands = bands(this.filter, this.noneNeaded);
}
return this.bands;
};
this.bands = null;
}
}
export class RunningBandEditor extends BandEditorBase {
constructor() {
super(...arguments);
this.filter = (item) => {
return item.controlType === 'GroupHeaderBand' || item.controlType === 'DetailReportBand';
};
this.noneNeaded = true;
}
}
export class BandsEditor extends BandEditorBase {
constructor() {
super(...arguments);
this.filter = (item) => {
return !(item instanceof DetailReportBand);
};
this.noneNeaded = false;
}
}
export class SortingBandEditor extends BandEditorBase {
constructor(info, level, parentDisabled, textToSearch) {
super(info, level, parentDisabled, textToSearch);
this.filter = (item) => {
return item.controlType === 'GroupHeaderBand' || item.controlType === 'DetailBand';
};
this.noneNeaded = true;
const value = ko.computed(() => { return this.value() || {}; });
this._disposables.push(value);
this.viewmodel = new ObjectProperties(value, { editors: [sortFields, groupFields] }, level + 1, this._get('disabled', 'wrapped'), false, textToSearch);
this._disposables.push(this.viewmodel);
}
}
export class PageBreakBandEditor extends Editor {
constructor(info, level, parentDisabled, textToSearch) {
super(info, level, parentDisabled, textToSearch);
this._disposables.push(this.values = ko.pureComputed(() => {
const model = this._get('_model');
if (model && model[printAcrossBands.propertyName] && !!model[printAcrossBands.propertyName]())
return pageBreakWithoutAfterValues;
else
return pageBreakValues;
}));
}
}