UNPKG

devexpress-reporting

Version:

DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.

78 lines (77 loc) 3.42 kB
/** * DevExpress HTML/JS Reporting (designer\widgets\pivotGridCriteriaEditor.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 { DxDeferred, find, getFullPath } from '@devexpress/analytics-core/analytics-internal'; import { PathRequest } from '@devexpress/analytics-core/analytics-utils'; import { Editor } from '@devexpress/analytics-core/analytics-widgets'; import * as ko from 'knockout'; import { Parameter } from '../dataObjects/parameters/parameter'; export class PivotGridCriteriaEditor extends Editor { _createItemsProvider(fieldListProvider) { return { getItems: (pathRequest) => { const model = this._get('_model', 'peek'); if (!model || pathRequest.fullPath.indexOf(Parameter.ParametersRefString) === 0) return new DxDeferred().resolve().promise(); const pivot = model['parent']; const result = new DxDeferred(); const fullPath = new PathRequest(getFullPath(pivot.getPath(''), pivot.dataMember())); ko.unwrap(fieldListProvider).getItems(fullPath).done((dataSourceItems) => { const items = [], fields = pivot.fields(); for (let i = 0; i < fields.length; i++) { const field = fields[i]; if (field.area() === 'DataArea') { continue; } const dataMemberInfo = dataSourceItems.filter((item) => { return item.name === field.fieldName(); })[0]; items.push({ displayName: field.getDisplayName(), isList: false, name: field.name(), specifics: dataMemberInfo && dataMemberInfo.specifics.toLowerCase() || 'integer' }); } result.resolve(items); }); return result.promise(); } }; } _getFieldName(name, isRealName = false) { const model = this._get('_model', 'peek'); if (!model) return new DxDeferred().resolve().promise(); const pivot = model['parent']; const field = find(pivot.fields.peek(), f => (isRealName ? (f.getDisplayName() || name) : f.name()) === name); const def = new DxDeferred(); if (!field) def.reject(); else def.resolve(isRealName ? field.name() : field.getDisplayName()); return def.promise(); } _createDisplayNameProvider() { return { getDisplayNameByPath: (path, name) => { return this._getFieldName(name); }, getRealName: (path, name) => { return this._getFieldName(name, true); } }; } constructor(info, level, parentDisabled, textToSearch) { super(info, level, parentDisabled, textToSearch); } wrapModel(fieldListProvider) { if (!this.itemsProvider) { this.itemsProvider = this._createItemsProvider(fieldListProvider); this.displayNameProvider = this._createDisplayNameProvider(); } return this; } }