import { HorizontalAlignment, ScrollMode, SelectAllMode, type SingleMultipleOrNone, } from 'devextreme/common' import { ApplyFilterMode, ColumnChooserMode, ColumnResizeMode, GridsEditMode, GridsEditRefreshMode, NewRowPosition, PagerDisplayMode, SelectionColumnDisplayMode, StartEditAction, StateStoreType, } from 'devextreme/ui/data_grid_types' import { FormItemComponent } from 'devextreme/ui/form' import { AuditedEntityDto } from '../abp' import { EditorType2, RowMode } from '../../views/form/types' //1 export interface SelectListItem { text?: string value?: string selected?: boolean } //2 export interface GridDto { columnFormats: ColumnFormatDto[] gridOptions: GridOptionsDto } // 3 enums export enum DbTypeEnum { AnsiString = 0, Binary = 1, Byte = 2, Boolean = 3, Currency = 4, Date = 5, DateTime = 6, Decimal = 7, Double = 8, Guid = 9, Int16 = 10, Int32 = 11, Int64 = 12, Object = 13, SByte = 14, Single = 15, String = 16, Time = 17, UInt16 = 18, UInt32 = 19, UInt64 = 20, VarNumeric = 21, AnsiStringFixedLength = 22, StringFixedLength = 23, Xml = 25, DateTime2 = 26, DateTimeOffset = 27, } export enum ListFormCustomizationTypeEnum { UserUiFilter = 1, GridState = 2, ServerJoin = 3, ServerWhere = 4, } export enum UiCommandButtonPositionTypeEnum { CommandColumn = 0, Toolbar = 1, } export enum UiLookupDataSourceTypeEnum { StaticData = 1, Query = 2, WebService = 3, } export enum SelectCommandTypeEnum { Table = 1, View = 2, TableValuedFunction = 3, Query = 4, StoredProcedure = 5, } export enum FieldCustomValueTypeEnum { Value = 1, CustomKey = 2, DbQuery = 3, QueryParams = 4, } export enum ColumnValidationTypeListEnum { None = '', Async = 'async', Compare = 'compare', Custom = 'custom', Email = 'email', Numeric = 'numeric', Pattern = 'pattern', Range = 'range', Required = 'required', StringLength = 'stringLength', } export enum ColumnValidationComparisonTypeEnum { 'None' = '', '!=' = '!=', '!==' = '!==', '<' = '<', '<=' = '<=', '==' = '==', '===' = '===', '>' = '>', '>=' = '>=', } export enum ColumnCascadeFilterOperatorEnum { '=' = '=', '<>' = '<>', '<' = '<', '<=' = '<=', '>' = '>', '>=' = '>=', 'contains' = 'contains', 'endswith' = 'endswith', 'isblank' = 'isblank', 'isnotblank' = 'isnotblank', 'notcontains' = 'notcontains', 'startswith' = 'startswith', 'between' = 'between', } export interface FieldsDefaultValueDto { fieldName?: string fieldDbType: DbTypeEnum value?: string customValueType: FieldCustomValueTypeEnum sqlQuery?: string } export enum GridOptionsSortModeEnum { Single = 'single', Multiple = 'multiple', None = 'none', } // 4 rest export interface ColumnCustomizationDto { fixed: boolean fixedPosition?: string allowReordering: boolean } export interface ColumnEditingDto { allowEditing: boolean } export interface ColumnFilterDto { allowFiltering: boolean filterOperations: string[] selectedFilterOperation?: string filterValue?: string } export interface ColumnFormatDto extends AuditedEntityDto { fieldName?: string captionName?: string readOnly: boolean visible: boolean isActive: boolean width: number listOrderNo: number sourceDbType: DbTypeEnum cultureName: string dataType?: string sortIndex: number sortDirection?: string allowSearch: boolean columnCssClass?: string columnCssValue?: string bandName?: string columnFilterJson?: string columnFilterDto: ColumnFilterDto columnHeaderJson?: string columnHeaderDto: ColumnHeaderDto groupingJson?: string columnGroupingDto: ColumnGroupingDto columnCustomizationJson?: string columnCustomizationDto: ColumnCustomizationDto totalSummaryJson?: string columnTotalSummaryDto: ColumnTotalSummaryDto groupSummaryJson?: string columnGroupSummaryDto: ColumnTotalSummaryDto editingJson?: string columnEditingDto: ColumnEditingDto lookupJson?: string lookupDto: LookupDto validationRuleJson?: string validationRuleDto: ValidationRuleDto[] columnStylingJson?: string columnStylingDto: ColumnStylingDto[] permissionJson?: string permissionDto: ListFormFieldPermissionDto canRead: boolean canCreate: boolean canUpdate: boolean canExport: boolean defaultValue: object pivotSettingsJson?: string pivotSettingsDto: ListFormFieldPivotSettingsDto alignment?: HorizontalAlignment format?: string editorOptions?: string } export enum AuthorizationTypeEnum { Deny = 0, Read = 1, Update = 2, Create = 3, Delete = 4, } export interface ColumnGroupingDto { allowGrouping: boolean groupIndex?: number autoExpandGroup: boolean } export interface ColumnHeaderDto { allowHeaderFiltering: boolean allowSearch: boolean dataSource: ColumnsHeaderDataSourceDto[] dataSourceString?: string } export interface ColumnStylingDto { rowType?: ColumnRowTypeListOptions useRow: boolean condition?: ColumnValidationComparisonTypeEnum conditionValue?: string cssStyles?: string cssClassName?: string } export interface ColumnTotalSummaryDto { summaryType?: string valueFormat?: string showInGroupFooter: boolean alignByColumn: boolean displayFormat?: string showInColumn?: string } export interface ColumnsHeaderDataSourceDto { text?: string value: object[] } export interface CommandColumnDto { buttonPosition: UiCommandButtonPositionTypeEnum authName?: string text?: string hint?: string icon?: string url?: string urlTarget?: string dialogName?: string dialogParameters?: string onClick?: string } export interface GridBoxOptionsDto { showClearButton: boolean columns: string[] columnsString?: string height: number width: number selectionMode?: SingleMultipleOrNone filterRowVisible: boolean acceptCustomValue: boolean } export interface TagBoxOptionsDto { showClearButton: boolean showSelectionControls: boolean maxDisplayedTags: number showMultiTagOnly: boolean applyValueMode: string searchEnabled: boolean acceptCustomValue: boolean } export interface FilterPanelDto { visible: boolean texts: FilterPanelTextsDto filterEnabled: boolean customizeText: object } export interface FilterPanelTextsDto { clearFilter: string createFilter: string filterEnabledHint: string } export interface GridColumnOptionDto { showBorders?: boolean showRowLines: boolean showColumnLines: boolean rowAlternationEnabled: boolean allowColumnReordering: boolean allowColumnResizing: boolean columnResizingMode?: ColumnResizeMode columnAutoWidth: boolean rtlEnabled: boolean columnFixingEnabled: boolean columnChooserEnabled: boolean columnChooserMode?: ColumnChooserMode hoverStateEnabled: boolean columnHidingEnabled: boolean focusedRowEnabled: boolean showColumnHeaders: boolean allowFieldDragging: boolean showFieldPanel: boolean showDataFields: boolean showColumnFields: boolean showRowFields: boolean showFilterFields: boolean showChart: boolean chartHeight: number chartCommonSeriesType: | 'area' | 'bar' | 'bubble' | 'candlestick' | 'fullstackedarea' | 'fullstackedbar' | 'fullstackedline' | 'fullstackedspline' | 'fullstackedsplinearea' | 'line' | 'rangearea' | 'rangebar' | 'scatter' | 'spline' | 'splinearea' | 'stackedarea' | 'stackedbar' | 'stackedline' | 'stackedspline' | 'stackedsplinearea' | 'steparea' | 'stepline' | 'stock' } export interface GridEditingDto { mode?: GridsEditMode refreshMode?: GridsEditRefreshMode allowUpdating: boolean allowDeleting: boolean allowAllDeleting: boolean allowAdding: boolean useIcons: boolean confirmDelete: boolean newRowPosition?: NewRowPosition selectTextOnEditStart: boolean startEditAction?: StartEditAction editColumnName?: string popup: GridEditingPopupDto sendOnlyChangedFormValuesUpdate: boolean isTenant: boolean isBranch: boolean isOrganizationUnit: boolean } export interface EditingFormDto { order: number itemType?: string caption?: string colCount: number colSpan: number items?: EditingFormItemDto[] } export interface EditingFormItemDto { order: number dataField: string editorType: FormItemComponent editorType2: EditorType2 colSpan?: number editorOptions?: string isRequired?: boolean gridBoxOptions?: GridBoxOptionsDto tagBoxOptions?: TagBoxOptionsDto } export interface GridEditingPopupDto { title?: string showTitle: boolean width: number height: number fullScreen: boolean hideOnOutsideClick: boolean } export interface GridFilterRowDto { visible: boolean applyFilter?: ApplyFilterMode allowUserUiFilterSave: boolean } export interface GridHeaderFilterDto { visible: boolean allowSearch: boolean height: number searchTimeout: number width: number } export interface GridOptionsDto extends AuditedEntityDto { listFormCode?: string cultureName?: string name?: string keyFieldName?: string title?: string sortMode?: SingleMultipleOrNone pageSize?: number width: number height: number description?: string filterRowJson?: string filterRowDto: GridFilterRowDto headerFilterJson?: string headerFilterDto: GridHeaderFilterDto filterPanelJson?: string filterPanelDto: FilterPanelDto searchPanelJson?: string searchPanelDto: SearchPanelDto groupPanelJson?: string groupPanelDto: GroupPanelDto selectionJson?: string selectionDto: SelectionDto columnOptionJson?: string columnOptionDto: GridColumnOptionDto pagerOptionJson?: string pagerOptionDto: GridPagerOptionDto editingOptionJson?: string editingOptionDto: GridEditingDto editingFormJson?: string editingFormDto: EditingFormDto[] permissionJson?: string permissionDto: PermissionCrudDto commandColumnJson?: string commandColumnDto: CommandColumnDto[] stateStoringJson?: string stateStoringDto: StateStoringDto customJsSourcesJson?: string customJsSources: string[] customStyleSourcesJson?: string customStyleSources: string[] updateServiceAddress?: string insertServiceAddress?: string deleteServiceAddress?: string isTenant: boolean isBranch: boolean isOrganizationUnit: boolean listFormType: string isSubForm: boolean subFormsJson?: string subFormsDto: SubFormDto[] extraFilterJson?: string extraFilterDto: ExtraFilterDto[] } export interface GridOptionsEditDto extends GridOptionsDto, Record { editType: string dataSourceCode?: string keyFieldDbSourceType: any tableName?: string defaultFilter?: string selectCommand?: string selectCommandType: SelectCommandTypeEnum selectFieldsDefaultValueJson?: string selectFieldsDefaultValueDto: FieldsDefaultValueDto[] deleteCommand?: string deleteFieldsDefaultValueJson?: string deleteFieldsDefaultValueDto: FieldsDefaultValueDto[] insertCommand?: string insertFieldsDefaultValueJson?: string insertFieldsDefaultValueDto: FieldsDefaultValueDto[] updateCommand?: string updateFieldsDefaultValueJson?: string updateFieldsDefaultValueDto: FieldsDefaultValueDto[] formFieldsDefaultValueJson?: string formFieldsDefaultValueDto: FieldsDefaultValueDto[] widgetsJson?: string widgetsDto: WidgetEditDto[] extraFilterEditDto: ExtraFilterEditDto[] } export interface GridPagerOptionDto { visible: boolean showPageSizeSelector: boolean showInfo: boolean showNavigationButtons: boolean allowedPageSizes?: string infoText?: string displayMode?: PagerDisplayMode scrollingMode?: ScrollMode | 'virtual' loadPanelEnabled?: boolean | 'auto' loadPanelText?: string } export interface GroupPanelDto { visible: boolean autoExpandAll: boolean } export interface ListFormCustomizationDto extends AuditedEntityDto { listFormCode?: string roleId?: string userId?: string filterName?: string customizationType: ListFormCustomizationTypeEnum customizationData?: string } export interface ListFormCustomizationForUserDto { id?: string listFormCode?: string filterName?: string customizationType: ListFormCustomizationTypeEnum customizationData: string } export interface LookupDto { dataSourceType: UiLookupDataSourceTypeEnum valueExpr?: string displayExpr?: string cascadeRelationField?: string cascadeParentFields?: string cascadeFilterOperator?: ColumnCascadeFilterOperatorEnum cascadeEmptyFields?: string lookupQuery?: string } export interface PermissionCrudDto { c?: string r?: string u?: string d?: string e?: string i?: string } export interface ListFormFieldPermissionDto { deny?: boolean c?: string r?: string u?: string e?: boolean i?: boolean } export interface SearchPanelDto { visible: boolean width: number } export interface SelectionDto { mode?: SingleMultipleOrNone allowSelectAll: boolean selectAllMode?: SelectAllMode showCheckBoxesMode?: SelectionColumnDisplayMode } export interface StateStoringDto { enabled: boolean type?: StateStoreType storageKey?: string savingTimeout: number } export interface ValidationRuleDto { type: ColumnValidationTypeListEnum message?: string ignoreEmptyValue: boolean reevaluate: boolean comparisonType?: ColumnValidationComparisonTypeEnum pattern?: string max: Date | number min: Date | number trim: boolean } export interface SubFormDto { tabTitle: string tabType: SubFormTabTypeEnum code: string relation: SubFormRelationDto[] tabMode: RowMode searchParams: URLSearchParams id?: string } export interface SubFormRelationDto { parentFieldName: string childFieldName: string } export enum DataSourceTypeEnum { Mssql = 1, Postgresql = 2, } export enum SortDirectionEnum { Asc = 'asc', Desc = 'desc', } export enum FixedPositionEnum { Left = 'left', Right = 'right', } export enum SummaryTypeEnum { None = 'none', Count = 'count', Sum = 'sum', Average = 'avg', Minimum = 'min', Maximum = 'max', } export enum SingleMultipleOrNoneEnum { Single = 'single', Multiple = 'multiple', None = 'none', } export enum ColumnRowTypeListOptions { Data = 'data', Detail = 'detail', DetailAdaptive = 'detailAdaptive', Filter = 'filter', Group = 'group', GroupFooter = 'groupFooter', Header = 'header', TotalFooter = 'totalFooter', } export enum SubFormTabTypeEnum { List = 'List', Form = 'Form', Chart = 'Chart', Pivot = 'Pivot', } export enum PlatformEditorTypes { dxTagBox = 'dxTagBox', dxGridBox = 'dxGridBox', } export enum PivotSettingsAreaEnum { Column = 'column', Data = 'data', Filter = 'filter', Row = 'row', } export enum PivotSettingsGroupIntervalEnum { None = '', Day = 'day', DayOfWeek = 'dayOfWeek', Month = 'month', Quarter = 'quarter', Year = 'year', } export interface ListFormFieldPivotSettingsDto { isPivot?: boolean expanded?: boolean sortOrder?: string area?: string format?: string summaryType?: string groupInterval?: string wordWrapEnabled?: boolean } export enum ColumnSortDirectionEnum { 'None' = '', 'Asc' = 'asc', 'Desc' = 'desc', } export interface WidgetGroupDto { colGap?: number colSpan?: number className?: string items: WidgetEditDto[] } export interface WidgetEditDto { colGap: number colSpan: number sqlQuery?: string className?: string title: string value: string valueClassName: string color: string icon: string subTitle: string onClick: string } export interface ExtraFilterDto { fieldName: string caption: string operator: string defaultValue?: string items?: ExtraFilterItemsDto[] } export interface ExtraFilterItemsDto { key: string value: string } export interface ExtraFilterEditDto extends ExtraFilterDto { sqlQuery: string }