devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
64 lines (63 loc) • 2.9 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (designer\widgets\nameEditor.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 { formatUnicorn, isFunction } from '@devexpress/analytics-core/analytics-internal';
import { getLocalization } from '@devexpress/analytics-core/analytics-utils';
import { Editor } from '@devexpress/analytics-core/analytics-widgets';
import { requiredValidationRules } from '@devexpress/analytics-core/analytics-widgets-internal';
import { createViewModelGenerator } from '@devexpress/analytics-core/analytics-serializer-native';
import * as ko from 'knockout';
import { WatermarkModel } from '../controls/properties/watermark';
export class NameEditor extends Editor {
createViewModel() {
return createViewModelGenerator(super.createViewModel())
.generateProperty('generateRules', (controls) => this.generateRules(controls))
.getViewModel();
}
constructor(info, level, parentDisabled, textToSearch) {
super(info, level, parentDisabled, textToSearch);
this.currentValidationRules = ko.observable(super._getEditorValidationRules());
}
_getEditorValidationRules() {
return this.currentValidationRules();
}
_filterControls(controls) {
return controls.filter(x => !(x instanceof WatermarkModel));
}
generateRules(allControls) {
const self = this;
if (self._get('disabled'))
return [];
const notUniqueMessageTemplate = getLocalization('{0} is not unique', 'ASPxReportsStringId.ReportDesigner_NameUniqueError');
const validationMessage = formatUnicorn(notUniqueMessageTemplate, ko.unwrap(self.displayName));
this.currentValidationRules([
{
type: 'custom',
message: validationMessage,
validationCallback: (options) => {
if (options.value == null)
return false;
const model = self._get('_model');
const controls = this._filterControls(allControls());
return controls.filter(x => {
if (ko.unwrap(x.name).toLowerCase() !== options.value.toLowerCase())
return false;
if (!model || x === model)
return false;
const same = model['isSame'];
if (same && isFunction(same) && same(x))
return false;
return true;
}).length === 0;
}
},
...super._getEditorValidationRules(),
...requiredValidationRules
]);
return this.currentValidationRules();
}
}