stimulsoft-reports-js-angular
Version:
Stimulsoft Reports.JS is a reporting tool for Angular
147 lines (138 loc) • 5.42 kB
JavaScript
import * as i0 from "@angular/core";
import { EventEmitter } from "@angular/core";
import { } from "./stimulsoft.reports.engine.mjs";
import { } from "./stimulsoft.reports.chart.mjs";
import { } from "./stimulsoft.reports.export.mjs";
import { } from "./stimulsoft.reports.import.xlsx.mjs";
import { } from "./stimulsoft.reports.maps.mjs";
import { } from "./stimulsoft.viewer.mjs";
import { } from "./stimulsoft.designer.mjs";
import { Stimulsoft } from "./stimulsoft.blockly.editor.mjs";
export { Stimulsoft }
export class Designer {
#designer;
#parentRef;
#createDesigner() {
this.#designer = new Stimulsoft.Designer.StiDesigner(this.options, this.id, false);
this.#designer.renderHtml(this.#parentRef.nativeElement);
this.#bindEvents();
this.#designer.visible = this.visible;
}
#bindEvents() {
if (this.#designer) {
this.#designer.onPrepareVariables = (args) => this.onPrepareVariables.emit(args);
this.#designer.onBeginProcessData = (args) => this.onBeginProcessData.emit(args);
this.#designer.onEndProcessData = (args) => this.onEndProcessData.emit(args);
this.#designer.onCreateReport = (args) => this.onCreateReport.emit(args);
this.#designer.onCloseReport = (args) => this.onCloseReport.emit(args);
this.#designer.onOpenReport = (args) => {
args.preventDefault = false;
this.onOpenReport.emit(args);
}
this.#designer.onOpenedReport = (args) => this.onOpenedReport.emit(args);
this.#designer.onSaveReport = (args) => {
args.preventDefault = false;
this.onSaveReport.emit(args);
}
this.#designer.onSaveAsReport = (args) => this.onSaveAsReport.emit(args);
this.#designer.onPreviewReport = (args) => this.onPreviewReport.emit(args);
this.#designer.onExit = (args) => this.onExit.emit(args);
this.#designer.onAssignedReport = (args) => {
this.onAssignedReport.emit(args);
this.reportChange.emit(args.report);
}
}
}
ngAfterViewInit() {
this.#createDesigner();
this.#designer.report = this.report;
}
ngOnChanges(changes) {
for (let propName in changes) {
switch (propName) {
case "options": {
if (this.#designer) {
this.#createDesigner();
this.#designer.report = this.report;
}
break;
}
case "report": {
if (this.#designer)
this.#designer.report = changes[propName].currentValue;
break;
}
case "visible": {
if (this.#designer)
this.#designer.visible = changes[propName].currentValue;
break;
}
case "id": {
if (this.#designer) {
this.#createDesigner();
this.#designer.report = this.report;
}
break;
}
}
}
}
ngOnDestroy() {
if (this.#designer != null)
this.#designer.dispose();
}
report = undefined;
reportChange = new EventEmitter();
visible = true;
options = undefined;
id = undefined;
onPrepareVariables = new EventEmitter();
onBeginProcessData = new EventEmitter();
onEndProcessData = new EventEmitter();
onCreateReport = new EventEmitter();
onCloseReport = new EventEmitter();
onOpenReport = new EventEmitter();
onOpenedReport = new EventEmitter();
onSaveReport = new EventEmitter();
onSaveAsReport = new EventEmitter();
onPreviewReport = new EventEmitter();
onExit = new EventEmitter();
onAssignedReport = new EventEmitter();
static ɵfac = i0.ɵɵngDeclareFactory({
minVersion: "12.0.0", version: "19.0.0", ngImport: i0,
type: Designer,
deps: [],
target: i0.ɵɵFactoryTarget.Component
});
static ɵcmp = i0.ɵɵngDeclareComponent({
minVersion: "12.0.0", version: "19.0.0", ngImport: i0,
type: Designer,
isStandalone: true,
selector: "sti-designer",
inputs: {
report: "report",
visible: "visible",
options: "options",
id: "id"
},
outputs: {
reportChange: "reportChange",
onPrepareVariables: "onPrepareVariables",
onBeginProcessData: "onBeginProcessData",
onEndProcessData: "onEndProcessData",
onCreateReport: "onCreateReport",
onCloseReport: "onCloseReport",
onOpenReport: "onOpenReport",
onOpenedReport: "onOpenedReport",
onSaveReport: "onSaveReport",
onSaveAsReport: "onSaveAsReport",
onPreviewReport: "onPreviewReport",
onExit: "onExit",
onAssignedReport: "onAssignedReport"
},
viewQueries: [{ propertyName: "#parentRef", first: true, predicate: ["parentRef"], descendants: true }],
usesOnChanges: true,
template: `<div #parentRef></div>`,
isInline: true
});
}