devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
874 lines • 96.1 kB
JavaScript
/**
* 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