UNPKG

devexpress-reporting

Version:

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

874 lines 96.1 kB
/** * DevExpress HTML/JS Reporting (designer\tools\generator\_inititalizer.js) * Version: 20.2.13 * Build date: Apr 10, 2023 * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED * License: https://www.devexpress.com/Support/EULAs/universal.xml */ "use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var navigateByReports_1 = require("../navigation/navigateByReports"); var _jsonDataSourceEditor_1 = require("../../actions/_jsonDataSourceEditor"); var _parametersViewModel_1 = require("../../internal/fieldlist/_parametersViewModel"); var _customMergingEngine_1 = require("../../internal/_customMergingEngine"); var xrReport_1 = require("../../controls/xrReport"); var _utils_1 = require("../../internal/_utils"); var _scriptsEditor_1 = require("../../internal/scripting/_scriptsEditor"); var settings_1 = require("../../utils/settings"); var calculatedField_1 = require("../../dataObjects/metadata/calculatedField"); var _dataSourceHelper_1 = require("../../helpers/_dataSourceHelper"); var _fieldListDataSourcesHelper_1 = require("../../internal/fieldlist/_fieldListDataSourcesHelper"); var _reportDataSourceService_1 = require("../../services/_reportDataSourceService"); var _settings_1 = require("./_settings"); var _utils_2 = require("../../../common/utils/_utils"); var _initializer_1 = require("../../../viewer/internal/_initializer"); var types_1 = require("../../../common/types"); var _reportSnapLinesCollector_1 = require("../../internal/dragdrop/_reportSnapLinesCollector"); var _selectionDragDropHandler_1 = require("../../internal/dragdrop/_selectionDragDropHandler"); var _reportToolboxDragDropHandler_1 = require("../../internal/dragdrop/_reportToolboxDragDropHandler"); var _fieldListDragDropHandler_1 = require("../../internal/dragdrop/_fieldListDragDropHandler"); var _reportMenuSettings_1 = require("./_reportMenuSettings"); var _reportDesignerControlsHelper_1 = require("../../helpers/_reportDesignerControlsHelper"); var _dataUtils_1 = require("../../internal/_dataUtils"); var _dataBindingMode_1 = require("../../internal/_dataBindingMode"); var _reportExplorer_1 = require("../../internal/reportExplorer/_reportExplorer"); var _reportExplorerDragDropHandler_1 = require("../../internal/dragdrop/_reportExplorerDragDropHandler"); var _fieldListController_1 = require("../../internal/fieldlist/_fieldListController"); var reportStorageWeb_1 = require("../../services/reportStorageWeb"); var actionId_1 = require("../../actions/actionId"); var _localizationStringId_1 = require("../../internal/_localizationStringId"); var fullscreenReportWizard_1 = require("../../wizard/fullscreenReportWizard"); var _reportWizardService_1 = require("../../services/_reportWizardService"); var _localizationEditor_1 = require("../../localization/_localizationEditor"); var metadata_1 = require("../../../common/metadata"); var chooseAvailableDataSourcePage_1 = require("../../wizard/pages/chooseAvailableDataSourcePage"); var _settings_2 = require("../../internal/_settings"); var xrSubreport_1 = require("../../controls/xrSubreport"); var _reportPreviewService_1 = require("../../services/_reportPreviewService"); var reportElementActions_1 = require("../../actions/reportElementActions"); var elementsGroupActions_1 = require("../../actions/elementsGroupActions"); var reportActions_1 = require("../../actions/reportActions"); var tableRowActions_1 = require("../../actions/tableRowActions"); var tableCellActions_1 = require("../../actions/tableCellActions"); var textElementAction_1 = require("../../actions/textElementAction"); var tableCellGroupActions_1 = require("../../actions/tableCellGroupActions"); var pivotGridActions_1 = require("../../actions/pivotGridActions"); var _copyPasteStrategy_1 = require("../../internal/_copyPasteStrategy"); var _chartUtils_1 = require("../../controls/utils/_chartUtils"); var xrChart_1 = require("../../controls/xrChart"); var xrPivotgrid_1 = require("../../controls/xrPivotgrid"); var reportDesignerElements_1 = require("../../utils/reportDesignerElements"); var _reportConverter_1 = require("../../internal/_reportConverter"); var richEdit_1 = require("../../controls/richEdit"); var _handlerUri_1 = require("../../../chart/_handlerUri"); var _registerControls_1 = require("../../utils/_registerControls"); var xrBand_1 = require("../../bands/xrBand"); var _wizardRunner_1 = require("../../internal/_wizardRunner"); var _localiziblePropertiesAccessibilityProvider_1 = require("../../localization/_localiziblePropertiesAccessibilityProvider"); var analytics_utils_1 = require("@devexpress/analytics-core/analytics-utils"); var ko = require("knockout"); var $ = require("jquery"); var analytics_internal_1 = require("@devexpress/analytics-core/analytics-internal"); var analytics_wizard_1 = require("@devexpress/analytics-core/analytics-wizard"); var analytics_widgets_internal_1 = require("@devexpress/analytics-core/analytics-widgets-internal"); var analytics_widgets_1 = require("@devexpress/analytics-core/analytics-widgets"); var analytics_tools_1 = require("@devexpress/analytics-core/analytics-tools"); var scroll_view_1 = require("devextreme/ui/scroll_view"); var config_1 = require("devextreme/core/config"); var reportWizardStateCreating_1 = require("../../wizard/reportWizardStateCreating"); var pivotgridfield_1 = require("../../controls/pivotgrid/pivotgridfield"); var sortBySummary_1 = require("../../controls/pivotgrid/sortBySummary"); var lookUpValue_1 = require("../../dataObjects/parameters/lookUpValue"); var formattingrules_1 = require("../../controls/metadata/properties/formattingrules"); var styleseditor_1 = require("../../widgets/styleseditor"); var xrTableOfContentsLevel_1 = require("../../controls/xrTableOfContentsLevel"); var customizeLabelPage_1 = require("../../wizard/pages/customizeLabelPage"); var _utils_3 = require("../../../viewer/search/_utils"); var objectItemCreation_1 = require("../../dataObjects/objectItemCreation"); var dataFederation_1 = require("../../dataObjects/dataFederation"); var ReportDesignerInitializer = (function (_super) { __extends(ReportDesignerInitializer, _super); function ReportDesignerInitializer(options) { var _this = _super.call(this) || this; _this.options = options; _this._customMergeEngine = new _customMergingEngine_1.CustomMergingEngine(); _this._updateCallback = null; _this._selection = options.selection || new analytics_internal_1.SurfaceSelection; var serializer = new analytics_utils_1.ModelSerializer(); _this.configurateRtl(options.rtl) .configureReportStorageRegistration(options.reportStorageWebIsRegister, options.allowMDI) .addCallbacks(options.callbacks) .addElement('state', function () { return options.state; }) .addElement('availableDataSources', function () { return (options.availableDataSources || []).map(function (object) { return $.extend({}, object, { data: objectItemCreation_1.createNewObjectItem(object.data, undefined, serializer) }); }); }); var navigation = new navigateByReports_1.NavigateByReports({ allowMDI: _this._allowMDI, callbacks: _this._designerCallbacks, knownEnums: options.knownEnums, reportUrl: options.reportUrl, initOptions: { availableDataSources: options.availableDataSources, state: options.state }, selection: _this._selection }); var undoEngine = ko.computed(function () { return navigation.currentTab() && navigation.currentTab().undoEngine; }); _this._addDisposable(undoEngine); _this._reportcontext = ko.computed({ read: function () { return navigation.currentTab() && navigation.currentTab().context(); }, write: function (newVal) { navigation.currentTab() && navigation.currentTab().context(newVal); } }); var model = ko.computed({ read: function () { return _this._reportcontext() && _this._reportcontext().report; }, write: function (newVal) { if (!_this.isDisposing) navigation.changeContext(newVal); } }); var surface = ko.computed(function () { return _this._reportcontext() && _this._reportcontext().surface; }); var canAddItems = ko.computed(function () { return model() && model().language() === metadata_1.defaultCulture; }); _this._addDisposable(_this._reportcontext); _this._addDisposable(model); _this._addDisposable(surface); _this._addDisposable(canAddItems); _this._addDisposable(canAddItems.subscribe(function (newVal) { _this.buildingModel.toolboxItems && _this.buildingModel.toolboxItems.forEach(function (x) { return x.disabled(!newVal); }); })); _this.initializeContext({ model: model, surface: surface, undoEngine: undoEngine }); _this.mapOnContext(); _this.addElement('canAddItems', function () { return canAddItems; }); _this.addElement('navigateByReports', function () { return navigation; }); _this.addElement('getTabs', function () { return function () { return navigation.tabs(); }; }); _this.addElement('closeTab', function () { return function (tab, force) { if (force === void 0) { force = false; } return navigation.removeTab(tab, force); }; }); _this._addDisposable(_this._reportcontext.subscribe(function (newVal) { if (_this.buildingModel.propertyGrid) { _this.buildingModel.propertyGrid.cleanEditors(); _this.buildingModel.propertyGrid.editorsRendered(!_this.buildingModel.propertyGrid.isSortingByGroups()); } _this.buildingModel.popularProperties && _this.buildingModel.popularProperties.cleanEditors(); })); _this._selection.focused(surface()); _this._addDisposable(surface.subscribe(function (newValue) { if (!newValue) _this._selection.reset(); else _this._selection.focused(newValue); })); var isDefaultLanguage = ko.computed(function () { return _this.buildingModel.model && _this.buildingModel.model() ? _this.buildingModel.model().language() == metadata_1.defaultCulture : false; }); _this._addDisposable(isDefaultLanguage); _this._accessibilityProvider = new _localiziblePropertiesAccessibilityProvider_1.LocaliziblePropertiesAccessibilityProvider(isDefaultLanguage); return _this; } Object.defineProperty(ReportDesignerInitializer.prototype, "reportContext", { get: function () { return this._reportcontext; }, enumerable: true, configurable: true }); Object.defineProperty(ReportDesignerInitializer.prototype, "buildingModel", { get: function () { return _super.prototype.getModel.call(this); }, enumerable: true, configurable: true }); Object.defineProperty(ReportDesignerInitializer.prototype, "_designerCallbacks", { get: function () { return this._callbacks && this._callbacks.designer; }, enumerable: true, configurable: true }); ReportDesignerInitializer.prototype.subscribeIncomeReport = function (report, reportUrl, dataSourceRefs) { var _this = this; this._addDisposable(report.subscribe(function (newValue) { var newModel = new xrReport_1.ReportViewModel(newValue); _utils_1.updateDataSourceRefs(newModel, dataSourceRefs); if (_this.buildingModel.navigateByReports.tabs().length === 0) { _this.buildingModel.navigateByReports.addTab(newModel, reportUrl, function () { return newModel.dispose(); }); } else { _this.buildingModel.model(newModel); } })); return this; }; ReportDesignerInitializer.prototype._addDisposable = function (object) { this._disposables.push(object); }; ReportDesignerInitializer.prototype._tryAddScriptEditor = function (isScriptsDisabled) { var _this = this; isScriptsDisabled = isScriptsDisabled || !analytics_widgets_internal_1.aceAvailable; if (!isScriptsDisabled) { var scriptsEditor = new _scriptsEditor_1.ScriptsEditor(this.buildingModel.model, this.buildingModel.controlsHelper.allControls); this._addDisposable(scriptsEditor.editorVisible.subscribe(function (newValue) { if (newValue) { var focusedControl = _this.buildingModel.selection.focused(); if (focusedControl && focusedControl.getControlModel) { var controlModel = focusedControl.getControlModel(); scriptsEditor.selectedControl(!!controlModel.scripts ? controlModel : controlModel.parentModel()); } var resizeFunction = function () { return setTimeout(function () { scriptsEditor.editorContainer().resize(); }, 1); }; if (!scriptsEditor.editorContainer()) var innerSubscription = scriptsEditor.editorContainer.subscribe(function (newVal) { innerSubscription.dispose(); resizeFunction(); }); else resizeFunction(); } _this.buildingModel.designMode(!newValue); })); this.addElement('scriptsEditor', function () { return scriptsEditor; }); this.addElement('events', function () { return ko.pureComputed(function () { return _this.buildingModel.scriptsEditor.allFunctionNames; }); }); this.addElement('gotoEvent', function () { return function (functionName, eventName, model) { scriptsEditor.editorVisible(true); scriptsEditor.ensureEvent(eventName.substring(2), functionName, model); }; }); return true; } else { var controlTypes = Object.keys(settings_1.controlsFactory().controlsMap); for (var index = 0; index < controlTypes.length; index++) { ['scripts', 'scriptReferencesString', 'scriptLanguage'].forEach(function (propertyDisplayName) { var propertyInfo = settings_1.controlsFactory().getPropertyInfo(controlTypes[index], propertyDisplayName); propertyInfo && (propertyInfo.visible = false); }); } calculatedField_1.calculatedFieldScripts.visible = false; } return false; }; ReportDesignerInitializer.prototype._getControls = function (controls, filter, isNoneItemAdded) { if (isNoneItemAdded === void 0) { isNoneItemAdded = true; } return ko.pureComputed(function () { var result = controls(); if (filter) { result = result.filter(filter); } var allControls = result.map(function (item) { return { displayName: ko.unwrap(item.name), value: item }; }); if (isNoneItemAdded) allControls.splice(0, 0, { displayName: analytics_internal_1.localizeNoneString('(none)'), value: null }); return allControls; }).extend({ throttle: 1 }); }; ReportDesignerInitializer.prototype._createEmptyReportItemsProvider = function () { var reportModel = new xrReport_1.ReportViewModel({}); var parameters = new _parametersViewModel_1.ParametersViewModel(reportModel); var dataSourceHelper = new _dataSourceHelper_1.DataSourceHelper(reportModel.objectStorage, reportModel.dataSourceRefs, undefined); reportModel.dataSourceHelper(dataSourceHelper); var fieldListDataSourceHelper = new _fieldListDataSourcesHelper_1.FieldListDataSourcesHelper(); fieldListDataSourceHelper.updateDataSources(dataSourceHelper, reportModel, parameters.parameters); var wrappedCallback = fieldListDataSourceHelper.wrapFieldsCallback(_reportDataSourceService_1.ReportDataSourceService.fieldListCallback, function () { return undefined; }); return new analytics_internal_1.FieldListProvider(wrappedCallback, fieldListDataSourceHelper.fieldListDataSources, [parameters]); }; ReportDesignerInitializer.prototype.addReportDialogs = function (func) { var _this = this; var settings = new _settings_1.ReportDialogSettings(this._designerCallbacks); func(settings); settings.saveReportDialog && this.addElement('saveReportDialog', function () { return settings.saveReportDialog; }); if (settings.saveReportDialogLight) { this.addElement('saveReportDialogLight', function () { return settings.saveReportDialogLight; }); this.buildingModel.navigateByReports.save = function (tab) { _this.buildingModel.saveReportDialogLight.show(tab); }; } settings.openReportDialog && this.addElement('openReportDialog', function () { return settings.openReportDialog; }); return this; }; ReportDesignerInitializer.prototype.addFlagsAndInitProperties = function (element) { var _this = this; this.addElement('validationMode', function () { return ko.computed({ read: function () { return _this.buildingModel.surface() && _this.buildingModel.surface().validationMode(); }, write: function (newVal) { _this.buildingModel.surface().validationMode(newVal); } }); }); this.addElement('isDirty', function () { return ko.computed({ read: function () { return _this.buildingModel.navigateByReports.currentTab() && _this.buildingModel.navigateByReports.currentTab().isDirty(); }, write: function (newVal) { _this.buildingModel.navigateByReports.currentTab() && _this.buildingModel.navigateByReports.currentTab().isDirty(newVal); } }); }); this.addElement('designMode', function () { return ko.observable(true); }); this.addIsLoading(function () { var isLoading = ko.observable(true); _this.buildingModel.navigateByReports.init(isLoading); return isLoading; }); this.addElement('rootStyle', function () { return 'dxrd-designer dxd-back-primary'; }); this.addElement('selectedPath', function () { return ko.observable(null); }); this.addElement('actionsGroupTitle', function () { return function () { return analytics_utils_1.getLocalization('Actions', 'AnalyticsCoreStringId.Actions'); }; }); this.addElement('updateFont', function () { return function (values) { analytics_widgets_internal_1.availableFonts(__assign({}, analytics_widgets_internal_1.availableFonts(), values)); }; }); this.addElement('sortFont', function () { return function () { var sortedObj = {}; var fonts = analytics_widgets_internal_1.availableFonts.peek(); Object.keys(fonts).sort(function (a, b) { return a.localeCompare(b); }).forEach(function (key) { return sortedObj[key] = fonts[key]; }); analytics_widgets_internal_1.availableFonts(sortedObj); }; }); this.addElement('zoomStep', function () { return ko.observable(0.05); }); this.addElement('surfaceSize', function () { return ko.observable(0); }); if (!element) return this; this.addElement('fullScreen', function () { return _utils_2.createFullscreenComputed(element, _this); }); this.addElement('drawCrossbandContent', function () { return ko.observable(true); }); return this; }; ReportDesignerInitializer.prototype.addPreview = function (options) { var _this = this; _initializer_1.createPreview({ model: { parametersInfo: options.parametersInfo, handlerUri: options.handlerUri, previewVisible: false, rtl: options.rtl, accessibilityCompliant: false }, element: options.element, callbacks: options.callbacks }) .done(function (reportPreviewModel) { _this.addElement('reportPreviewModel', function () { _this._addDisposable(reportPreviewModel.reportPreview.previewVisible.subscribe(function (newValue) { _this.buildingModel.designMode(!newValue); if (!newValue && _this._updateCallback) _this._updateCallback(); })); return reportPreviewModel; }); _this._addDisposable(reportPreviewModel); }); return this; }; ReportDesignerInitializer.prototype.addReportUrls = function (subreports) { this.addElement('reportUrls', function () { return ko.observableArray(types_1.convertMapToKeyValuePair(subreports)); }); return this; }; ReportDesignerInitializer.prototype._wrapActionProvider = function (actionsProvider) { return { getActions: function (context) { return actionsProvider() && actionsProvider().getActions(context) || []; } }; }; ReportDesignerInitializer.prototype.initializeFieldListActionProviders = function (func) { var _this = this; if (func === void 0) { func = function () { var providers = []; if (_this._calculatedFieldsSource) providers.push(_this._wrapActionProvider(_this._calculatedFieldsSource)); if (_this._parameters) providers.push(_this._wrapActionProvider(_this._parameters)); if (_this._dataSourceActionProvider) providers.push(_this._dataSourceActionProvider); if (_this._jsonDataSourceEditor) providers.push(_this._jsonDataSourceEditor); if (_this._sqlDataSourceEditor) providers.push(_this._sqlDataSourceEditor); if (_this._objectDataSourceEditor) providers.push(_this._objectDataSourceEditor); return providers; }; } this.addElement('fieldListActionProviders', func); return this; }; ReportDesignerInitializer.prototype.initializeCalculatedFieldsSource = function () { var _this = this; var calculatedFieldsSource = ko.computed(function () { return _this._reportcontext() && _this._reportcontext().calcFieldsSource; }); this.addElement('calculatedFieldsSource', function () { return calculatedFieldsSource; }); this._calculatedFieldsSource = calculatedFieldsSource; return this; }; ReportDesignerInitializer.prototype.initializeFieldListItemsExtenders = function () { var _this = this; var fieldListItemsExtenders = ko.computed(function () { return _this._reportcontext() && _this._reportcontext().fieldListItemsExtenders; }); this.addElement('fieldListItemsExtenders', function () { return fieldListItemsExtenders; }); return this; }; ReportDesignerInitializer.prototype.initializeParameters = function () { var _this = this; var parameters = ko.computed(function () { return _this._reportcontext() && _this._reportcontext().parameters; }); this.addElement('parameters', function () { return parameters; }); this._parameters = parameters; return this; }; ReportDesignerInitializer.prototype.initializeFieldListProvider = function () { var _this = this; var fieldListProvider = ko.computed(function () { return _this._reportcontext() && _this._reportcontext().fieldListProvider; }); this.addElement('fieldListProvider', function () { return fieldListProvider; }); return this; }; ReportDesignerInitializer.prototype.initializeReportItemsProvider = function () { var _this = this; var reportItemsProvider = ko.computed(function () { return _this._reportcontext() && _this._reportcontext().reportItemsProvider; }); this.addElement('reportItemsProvider', function () { return reportItemsProvider; }); return this; }; ReportDesignerInitializer.prototype.initializeDataBindingsProvider = function () { var _this = this; var dataBindingsProvider = ko.computed(function () { return _this._reportcontext() && _this._reportcontext().dataBindingsProvider; }); this.addElement('dataBindingsProvider', function () { return dataBindingsProvider; }); return this; }; ReportDesignerInitializer.prototype.initializeDisplayNameProvider = function () { var _this = this; var displayNameProvider = ko.computed(function () { return _this._reportcontext() && _this._reportcontext().displayNameProvider; }); this.addElement('displayNameProvider', function () { return displayNameProvider; }); this.addElement('getDisplayNameByPath', function () { return function (path, value) { return displayNameProvider().getDisplayNameByPath(path, value); }; }); return this; }; ReportDesignerInitializer.prototype.initializeExpressionDisplayNameProvider = function () { var _this = this; var expressionDisplayNameProvider = ko.computed(function () { return _this._reportcontext() && _this._reportcontext().expressionDisplayNameProvider; }); this.addElement('expressionDisplayNameProvider', function () { return expressionDisplayNameProvider; }); return this; }; ReportDesignerInitializer.prototype.initializeDataSourceHelper = function () { var _this = this; var dataSourceHelper = ko.computed(function () { return _this._reportcontext() && _this._reportcontext().dataSourceHelper; }); this.addElement('dataSourceHelper', function () { return dataSourceHelper; }); var fieldListDataSourceHelper = ko.computed(function () { return _this._reportcontext() && _this._reportcontext().fieldListDataSourceHelper; }); this.addElement('fieldListDataSources', function () { return ko.computed(function () { return fieldListDataSourceHelper() && fieldListDataSourceHelper().fieldListDataSources(); }); }); this._addDisposable(fieldListDataSourceHelper); return this; }; ReportDesignerInitializer.prototype.addSelection = function (func) { var _this = this; if (func === void 0) { func = function (settings) { settings.selection = _this._selection; var rtl = ko.computed(function () { return _this.buildingModel.surface() && _this.buildingModel.surface().rtl(); }); var snapLinesCollector = new _reportSnapLinesCollector_1.ReportSnapLinesCollector(rtl); _this._addDisposable(rtl); settings.snapHelper = new analytics_internal_1.SnapLinesHelper(_this.buildingModel.surface, analytics_internal_1.SnapLinesHelper.snapTolerance, snapLinesCollector); settings.editableObject = analytics_internal_1.CombinedObject.getEditableObject(settings.selection, _this.buildingModel.undoEngine, function (propertyName, controls, undoEngune) { return _this._customMergeEngine.customMerge(propertyName, controls, undoEngune); }).extend({ throttle: 1 }); settings.addDragDrop(function (dragDropSettings) { dragDropSettings.dragHelperContent = new analytics_internal_1.DragHelperContent(settings.selection); dragDropSettings.dragDropStarted = analytics_internal_1.DragDropHandler.started; dragDropSettings.addDragDropHandler('dragHandler', new _selectionDragDropHandler_1.SelectionDragDropHandler(_this.buildingModel.canAddItems, _this.buildingModel.surface, settings.selection, _this.buildingModel.undoEngine, settings.snapHelper, dragDropSettings.dragHelperContent)); dragDropSettings.addDragDropHandler('toolboxDragHandler', new _reportToolboxDragDropHandler_1.ReportToolboxDragDropHandler(_this.buildingModel.surface, _this._selection, _this.buildingModel.undoEngine, settings.snapHelper, dragDropSettings.dragHelperContent, settings_1.controlsFactory(), _this._designerCallbacks.componentAdded)); dragDropSettings.addDragDropHandler('fieldDragHandler', new _fieldListDragDropHandler_1.FieldListDragDropHandler(_this.buildingModel.canAddItems, _this.buildingModel.surface, _this._selection, _this.buildingModel.undoEngine, settings.snapHelper, dragDropSettings.dragHelperContent, _this.buildingModel.fieldListDataSources, _this._designerCallbacks.componentAdded)); }); settings.addResize(function (resizeSettings) { resizeSettings.handler = { starting: function () { _this.buildingModel.inlineTextEdit.visible() && _this.buildingModel.inlineTextEdit['_showInline'](false); _this.buildingModel['richInlineControl'] && _this.buildingModel['richInlineControl'].visible() && _this.buildingModel['richInlineControl']['_showInline'](false); _this._selection.expectClick = true; _this.buildingModel.undoEngine().start(); }, stopped: function () { _this.buildingModel.undoEngine().end(); setTimeout(function () { _this._selection.expectClick = false; }, 100); }, disabled: analytics_internal_1.DragDropHandler.started, snapHelper: settings.snapHelper }; }); }; } _super.prototype.addSelection.call(this, func); return this; }; ReportDesignerInitializer.prototype.addToolboxItems = function (items) { _super.prototype.addToolboxItems.call(this, items); return this; }; ReportDesignerInitializer.prototype.addControlProperties = function (editors, groups, accessibilityProvider) { _super.prototype.addControlProperties.call(this, editors, groups, undefined, this._accessibilityProvider); return this; }; ReportDesignerInitializer.prototype.addMenu = function (func) { if (func === void 0) { func = function (settings) { return void 0; }; } var settings = new _reportMenuSettings_1.ReportMenuSettings(); func(settings); this._disposables.push(settings); analytics_internal_1.extend(this.getModel(), settings.generate()); return this; }; ReportDesignerInitializer.prototype.addControlsHelper = function (func) { var _this = this; if (func === void 0) { func = function (settings) { var helper = ko.computed(function () { return _this._reportcontext() && _this._reportcontext().controlsHelper; }); _this._addDisposable(helper); var controlHelper = new _reportDesignerControlsHelper_1.ReportDesignerControlsHelper(helper); settings .addControlsHelper(controlHelper) .addControlsStore(); }; } _super.prototype.addControlsHelper.call(this, func); return this; }; ReportDesignerInitializer.prototype.setControlsHelperFilter = function (filter) { this.buildingModel.controlsStore.setFilter(filter); return this; }; ReportDesignerInitializer.prototype._createPropertiesTab = function () { var _this = this; return new analytics_utils_1.TabInfo({ text: 'Properties', template: 'dxrd-propertiestab', model: this.buildingModel.propertyGrid, localizationId: 'AnalyticsCoreStringId.Cmd_Properties', visible: ko.pureComputed(function () { return !!_this.buildingModel.model(); }), disabled: ko.pureComputed(function () { return _this.buildingModel.propertyGrid.focusedItem() instanceof Array; }) }); }; ReportDesignerInitializer.prototype._createExpressionsTab = function (context) { var _this = this; var expressionGridModel = ko.computed(function () { var editableObject = _this.buildingModel.editableObject(); return editableObject && editableObject.expressionObj; }); var expressionGrid = null; this._addDisposable(context.subscribe(function (newVal) { expressionGrid.cleanEditors(); })); expressionGrid = new analytics_widgets_1.ObjectProperties(expressionGridModel); this._addDisposable(expressionGrid); this._addDisposable(expressionGridModel); var expressionTab = new analytics_utils_1.TabInfo({ text: 'Expressions', template: 'dxrd-expressions-tab', model: expressionGrid, localizationId: 'DevExpress.XtraReports.UI.XRControl.Expressions', imageClassName: 'expressions', imageTemplateName: 'dxrd-svg-tabs-expressions', visible: ko.pureComputed(function () { return _this.buildingModel.model() && _this.buildingModel.model()._dataBindingMode() !== _dataBindingMode_1.DataBindingMode.Bindings; }), disabled: ko.pureComputed(function () { return !expressionGridModel(); }) }); this._addDisposable(expressionTab.active.subscribe(function (newVal) { if (newVal && expressionTab.visible()) { _this.buildingModel.controlsStore.setFilter(_utils_1.isControl); } else { _this.buildingModel.controlsStore.setFilter(_utils_1.isNotParameter); } })); return expressionTab; }; ReportDesignerInitializer.prototype._createReportExplorerTab = function () { var _this = this; var reportExplorer = new _reportExplorer_1.ReportExplorerModel(this.buildingModel.model, this.buildingModel.editableObject, function () { _this.buildingModel.tabPanel.selectTab({ model: _this.buildingModel.tabPanel.tabs[0] }); }, new _reportExplorerDragDropHandler_1.ReportExplorerDragDropHandler(this.buildingModel.canAddItems, this.buildingModel.surface, this.buildingModel.selection, this.buildingModel.undoEngine, this.buildingModel.dragHelperContent), this.buildingModel.selection); this._addDisposable(reportExplorer); return new analytics_utils_1.TabInfo({ text: 'Report Explorer', template: 'dxrd-reportexplorerwrapper', model: reportExplorer, localizationId: 'ReportStringId.UD_Title_ReportExplorer', imageClassName: 'reportexplorer', imageTemplateName: 'dxrd-svg-tabs-reportexplorer', visible: ko.pureComputed(function () { return !!_this.buildingModel.model(); }) }); }; ReportDesignerInitializer.prototype._createFieldListTab = function (designerCallbacks) { var _this = this; var treeListOptions = { itemsProvider: this.buildingModel.fieldListProvider, selectedPath: this.buildingModel.selectedPath, treeListController: new _fieldListController_1.FieldListController(this.buildingModel.fieldListActionProviders, analytics_internal_1.createActionWrappingFunction('WrapForFieldList', function (model, handler) { _this.buildingModel.undoEngine().start(); var result = handler(model); _this.buildingModel.undoEngine().end(); if (result && result.name) { _this.buildingModel.selectedPath(model.path + '.' + ko.unwrap(result.name)); } }), this.buildingModel.fieldDragHandler, designerCallbacks.customizeFieldListActions) }, popoverVisible = ko.observable(false), fieldListModel = { treeListOptions: treeListOptions, popoverVisible: popoverVisible, addDataSourceBtnVisible: ko.pureComputed(function () { var dsHelper = ko.unwrap(_this.buildingModel.dataSourceHelper); return dsHelper && dsHelper.availableDataSources && dsHelper.availableDataSources.length > 0; }), showPopover: function () { popoverVisible(true); }, dataSourceListItems: function () { var dsHelper = ko.unwrap(_this.buildingModel.dataSourceHelper); return dsHelper && dsHelper.availableDataSources; }, itemClickAction: function (e) { popoverVisible(false); var data = e.itemData; data.id = analytics_internal_1.guid().replace(/-/g, ''); _dataUtils_1.addDataSourceToReport(ko.unwrap(_this.buildingModel.dataSourceHelper), _this.buildingModel.model(), _this.buildingModel.undoEngine(), _this.buildingModel.fieldListProvider(), data, true); } }; return new analytics_utils_1.TabInfo({ text: 'Fields', template: 'dxrd-fieldlistwrapper', model: fieldListModel, localizationId: 'ReportStringId.UD_Title_FieldList', imageClassName: 'fieldlist', imageTemplateName: 'dxrd-svg-tabs-fieldlist', visible: ko.pureComputed(function () { return !!_this.buildingModel.model(); }) }); }; ReportDesignerInitializer.prototype.addTabPanel = function (panel, addTabInfo) { var _this = this; if (addTabInfo === void 0) { addTabInfo = function () { return [ _this._createPropertiesTab(), _this._createExpressionsTab(_this._reportcontext), _this._createFieldListTab(_this._designerCallbacks), _this._createReportExplorerTab() ]; }; } _super.prototype.addTabPanel.call(this, panel, addTabInfo); var contextSubscription = this._reportcontext.subscribe(function (newVal) { if (!!newVal) { contextSubscription.dispose(); _this.buildingModel.tabPanel.collapsed(false); } }); this._addDisposable(contextSubscription); return this; }; ReportDesignerInitializer.prototype._createActionsStorage = function (actions) { var object = {}; for (var i = actions.length - 1; i > -1; i--) { object[actions[i].id] = actions[i].clickAction; } return object; }; ReportDesignerInitializer.prototype.addOpenReportMethod = function () { var _this = this; this.addElement('openReport', function () { return function (url) { _this.buildingModel.navigateByReports.addTab(null, ko.observable(url)); }; }); return this; }; ReportDesignerInitializer.prototype.addShowPreviewMethod = function () { var _this = this; this.addElement('showPreview', function () { return function () { var reportPreview = _this.buildingModel.reportPreviewModel.reportPreview; reportPreview.previewVisible(true); if (!_this.buildingModel.model()) { var subscription = _this.buildingModel.model.subscribe(function (newVal) { subscription.dispose(); reportPreview.initialize(_reportPreviewService_1.ReportPreviewService.initializePreview(_this.buildingModel.model())); }); } else { reportPreview.initialize(_reportPreviewService_1.ReportPreviewService.initializePreview(_this.buildingModel.model())); } }; }); return this; }; ReportDesignerInitializer.prototype.initializeUIEffects = function (applyBindings, element) { var _this = this; this._addDisposable(this.buildingModel.editableObject.subscribe(function () { var $scrollView = $('.dxrd-designer .dxrd-properties-wrapper').find('.dx-scrollview'); if ($scrollView.length) { var scrollViewInstance = scroll_view_1.default['getInstance']($scrollView.get(0)); scrollViewInstance && scrollViewInstance['scrollTo'] && scrollViewInstance['scrollTo'](0); } })); var updateSurfaceContentSize__ = analytics_internal_1.updateSurfaceContentSize(this.buildingModel.surfaceSize, element, this.rtl); var updateSurfaceContentSizeLocalizationMode__ = _utils_1.updateSurfaceContentSizeLocalizationMode(this.buildingModel.surfaceSize, element, this.rtl); var updateSurfaceContentSize_ = function () { if (_this.buildingModel.localizationMode()) { updateSurfaceContentSizeLocalizationMode__(); } else { updateSurfaceContentSize__(); } var $root = $(element).find('.dxrd-designer').eq(0); var $contentPanel = $root.find('.dxrd-surface-wrapper .dxrd-content-panel-wrapper').eq(0); areaHeight($contentPanel.height()); areaWidth($contentPanel.width()); }; var updateContentSizeTimeout = null; var updateSurfaceContentSize_async = function () { updateContentSizeTimeout && clearTimeout(updateContentSizeTimeout); updateContentSizeTimeout = setTimeout(function () { updateSurfaceContentSize_(); }, 1); }; var reportHeight = ko.computed(function () { if (_this.buildingModel.surface()) { updateSurfaceContentSize_async(); return _this.buildingModel.surface().effectiveHeight(); } }); var reportWidth = ko.computed(function () { if (_this.buildingModel.surface()) { updateSurfaceContentSize_async(); return _this.buildingModel.surface().pageWidth(); } }); var areaHeight = ko.observable(reportHeight()); var areaWidth = ko.observable(reportWidth()); var verticalScrollOffset = ko.observable(0); var horizontalScrollOffset = ko.observable(0); this._addDisposable(ko.computed(function () { var horizontalOffset = 0; var verticalOffset = 0; [0, 0].forEach(function () { verticalOffset = (areaHeight() - horizontalOffset) < reportHeight() ? 20 : 0; horizontalOffset = (areaWidth() - verticalOffset) < reportWidth() ? 20 : 0; }); horizontalScrollOffset(horizontalOffset); verticalScrollOffset(verticalOffset); })); this._updateCallback = function () { if (!_this.buildingModel.reportPreviewModel.reportPreview.previewVisible()) updateSurfaceContentSize_(); }; window.addEventListener('resize', this._updateCallback); this.buildingModel.onViewPortScroll = function (viewPort) { var $viewPort = $(viewPort), $surface = $viewPort.closest('.dxrd-surface'); $surface.find('.dxrd-bands-panel-wrapper').scrollTop($viewPort.scrollTop()); $surface.find('.dxrd-hruler-wrapper').scrollLeft($viewPort.scrollLeft()); }; this.addElement('verticalScrollOffset', function () { return verticalScrollOffset; }); this.addElement('horizontalScrollOffset', function () { return horizontalScrollOffset; }); this._addDisposable(reportHeight); this._addDisposable(reportWidth); this._addDisposable(this.buildingModel.tabPanel.width.subscribe(function () { updateSurfaceContentSize_async(); })); this._addDisposable(this.buildingModel.localizationEditor.width.subscribe(function () { updateSurfaceContentSize_async(); })); this._addDisposable(this.buildingModel.localizationMode.subscribe(function (newVal) { updateSurfaceContentSize_async(); })); this.buildingModel.updateSurfaceSize = function () { updateSurfaceContentSize_(); }; this._addDisposable(this.buildingModel.navigateByReports.height.subscribe(function () { updateSurfaceContentSize_async(); })); if (applyBindings) { this.buildingModel.updateSurfaceSize(); } return this; }; ReportDesignerInitializer.prototype._createNewViaWizardAction = function (reportWizard, designerModel, state) { var _this = this; var menuAction = { id: actionId_1.ActionId.NewReportViaWizard, container: 'menu', text: 'New via Wizard', displayText: function () { return analytics_utils_1.getLocalization('New via Wizard', _localizationStringId_1.StringId.NewViaWizard); }, imageClassName: 'dxrd-image-new-via-wizard', imageTemplateName: 'dxrd-svg-menu-new_via_wizard', disabled: ko.observable(false), selected: ko.observable(false), visible: true, hotKey: { ctrlKey: true, keyCode: 'W'.charCodeAt(0) }, clickAction: function () { return designerModel._wizardRunner.run('NewViaReportWizard'); } }; designerModel._wizardRunner.registerCommand('NewViaReportWizard', function () { if (reportWizard instanceof fullscreenReportWizard_1.FullscreenReportWizard) { menuAction.selected(true); designerModel.appMenuVisible(true); designerModel.isMenuCollapsed(true); reportWizard._onClose && reportWizard._onClose(function () { menuAction.selected(false); designerModel.isMenuCollapsed(false); }); } reportWizard.itemsProvider(_this._createEmptyReportItemsProvider()); reportWizard.initialize(); reportWizard.start(function (reportWizardState) { designerModel.isLoading(true); var deferred = $.Deferred(); var createReport = function (wizardState) { _reportWizardService_1.ReportWizardService.generateReportFromWizardState(wizardState, reportWizard._requestModelType, state(), function (wizardModel) { reportWizard.events.call('beforeFinish', { state: wizardState, wizardModel: wizardModel }); }) .done(function (result) { var newReport = new xrReport_1.ReportViewModel(JSON.parse(result.reportModel)); newReport.dataSourceRefs = result.dataSourceRefs; designerModel.navigateByReports.addTab(newReport, ko.observable('')); designerModel.isDirty(true); designerModel.isLoading(false); deferred.resolve(newReport); }) .fail(function () { deferred.reject(); }); }; if (reportWizardState.jsonDataSourceWizard.jsonSource && reportWizardState.newDataSource) { _reportWizardService_1.ReportWizardService.createNewJsonDataSource(reportWizardState.jsonDataSourceWizard, _jsonDataSourceEditor_1.JsonDataSourceEditor.createJsonDataSourceInfo) .done(function (dataSource) { reportWizardState.dataSource = dataSource; delete reportWizardState.newDataSource; if (designerModel.connections.json().every(function (x) { return x.name !== reportWizardState.jsonDataSourceWizard.newConnectionName; })) { designerModel.connections.json.push({ description: reportWizardState.jsonDataSourceWizard.newConnectionName, name: reportWizardState.jsonDataSourceWizard.newConnectionName }); } createReport(reportWizardState); }).fail(function () { return deferred.reject(); }); } else { createReport(reportWizardState); } return deferred.promise(); }); }, function () { designerModel.appMenuVisible(false); reportWizard.isVisible(false); }); return menuAction; }; ReportDesignerInitializer.prototype._createLocalizationModeAction = function (localizationEditor, report, designerModel) { var menu