devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
109 lines (108 loc) • 4.88 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (designer\internal\fieldlist\_parametersViewModel.js)
* Version: 25.1.3
* Build date: Jun 26, 2025
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* License: https://www.devexpress.com/Support/EULAs/universal.xml
*/
import { findFirstItemMatchesCondition, localizeNoneString } from '@devexpress/analytics-core/analytics-internal';
import { Disposable, getLocalization } from '@devexpress/analytics-core/analytics-utils';
import { Parameter } from '../../dataObjects/parameters/parameter';
import { EditParametersDialog } from '../../tools/dialogs/editParametersDialog';
import { AddParameterDialog } from '../../tools/dialogs/parametersDialogs';
export class ParametersViewModel extends Disposable {
constructor(report) {
super();
this._parameterEditingSettings = report.parameterHelper._parameterEditingSettings;
this.parameters = report.parameters;
this.remove = (parameter) => {
this.parameters.splice(this.parameters.indexOf(parameter), 1);
report.parameterHelper.removeParameterModel(parameter);
};
this.add = () => {
this._addParametersDialog.show();
};
this.edit = (parameter) => {
this._editParametersDialog.show(parameter);
};
this._disposables.push(this._addParametersDialog = new AddParameterDialog(report), this._editParametersDialog = new EditParametersDialog(report));
this.addAction = {
clickAction: () => {
return this.add();
},
imageClassName: 'dxrd-image-add',
imageTemplateName: 'dxrd-svg-operations-add',
text: 'Add parameter',
displayText: () => getLocalization('Add parameter', 'AnalyticsCoreStringId.FieldListActions_AddParameter'),
};
this.removeAction = {
clickAction: (item) => {
this.remove(item.data);
},
imageClassName: 'dxrd-image-recycle-bin',
imageTemplateName: 'dxrd-svg-operations-recycle_bin',
text: 'Remove parameter',
displayText: () => getLocalization('Remove parameter', 'ASPxReportsStringId.ReportDesigner_FieldListActions_RemoveParameter'),
};
this.editAction = {
clickAction: (item) => {
if (item.data instanceof Parameter) {
this.edit(item.data);
}
else if (item.hasItems) {
this.edit(item.items[0].data);
}
else {
this.edit(undefined);
}
},
imageClassName: 'dxrd-image-edit',
imageTemplateName: 'dxrd-svg-operations-edit',
text: 'Edit parameter',
displayText: () => getLocalization('Edit parameter', 'ASPxReportsStringId.ReportDesigner_FieldListActions_EditParameter'),
canAddItems: true
};
}
getActions(context) {
const result = [];
if (context.path.indexOf(Parameter.ParametersRefString) === 0) {
if (context.pathParts.length === 1) {
result.push(this.editAction);
if (this._parameterEditingSettings.allowEditParameterCollection) {
result.push(this.addAction);
}
}
else if (context.pathParts.length === 2) {
result.push(this.editAction);
if (!context.data['canRemove']) {
return result;
}
if (this._parameterEditingSettings.allowEditParameterCollection) {
result.push(this.removeAction);
}
}
}
return result;
}
beforeItemsFilled(request, items) {
if (request.ref !== Parameter.ParametersRefString)
return false;
items.push.apply(items, request.fullPath === Parameter.ParametersRefString ? this.parameters.slice(0) : []);
this.parameters().forEach(parameter => {
if (parameter.isList && parameter.parameterName() === request.path) {
items.push.apply(items, parameter.getRangeParameters());
}
});
return true;
}
afterItemsFilled(request, items) {
if (!request.fullPath) {
const parameters = findFirstItemMatchesCondition(items, item => item.specifics === 'parameters');
if (parameters)
parameters.displayName = getLocalization('Parameters', 'DevExpress.XtraReports.UI.XtraReport.Parameters');
const noneDataSource = !request.fullPath && findFirstItemMatchesCondition(items, item => item.specifics === 'none');
if (noneDataSource)
noneDataSource.displayName = localizeNoneString('none');
}
}
}