devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
42 lines (41 loc) • 1.66 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (designer\widgets\fieldsComboboxEditor.js)
* Version: 25.2.3
* Build date: Dec 15, 2025
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* License: https://www.devexpress.com/Support/EULAs/universal.xml
*/
import { DxDeferred } from '@devexpress/analytics-core/analytics-internal-native';
import { FieldListEditor } from '@devexpress/analytics-core/analytics-widgets';
import * as ko from 'knockout';
export class FieldsComboboxEditor extends FieldListEditor {
constructor() {
super(...arguments);
this.wrappedValues = null;
}
_createItem(displayNameProvider, item) {
const deferred = new DxDeferred();
displayNameProvider.getDisplayNameByPath(this.path(), item).done((result) => {
deferred.resolve({ value: item, displayValue: result });
}).fail(() => {
deferred.resolve({ value: item, displayValue: item });
});
return deferred;
}
_updateValues(values, displayNameProvider) {
this.wrappedValues(values);
DxDeferred.when(values.map(x => this._createItem(displayNameProvider, x.value))).done((results) => {
this.wrappedValues(results);
});
}
wrapValues(displayNameProvider) {
if (!this.wrappedValues) {
this.wrappedValues = ko.observableArray();
this.addDisposable(this.subscribeProperty('values', (newVal) => {
this._updateValues(newVal, displayNameProvider());
}));
this._updateValues(this._get('values'), displayNameProvider());
}
return this.wrappedValues;
}
}