UNPKG

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
/** * 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; } }