import { DataType } from "./DataType.js"; export interface UnitMetadata{ name: string; label: string; fields: Array; children?: Array; } export interface ChildDescriptor{ label: string; name: string; links: Array; } export interface ChildLink{ source: string; target: string; } export interface FieldDescriptor { name: string; label: string; dataType: DataType; userInterface?: UserInterface; defaultValue?: any; visible?: boolean; readOnly?: boolean; required?: boolean; standAlone?: boolean; properties?: any; dependencies?: Array; group?: string; order?: number; } export interface FieldDependency { masterFields: Array; type: DependencyType; expression: string; } export interface Filter{ name: string; expression: string; params?: Array; } export interface FilterParam{ name: string dataType: DataType value: any } export interface Sort{ field: string mode: SortMode dataType: DataType } export interface FilterProvider{ getFilter(dataUnit: string): Array | undefined; getKey?: () => string; } export interface SortingProvider{ getSort(dataUnit: string, defaultSorting: Array): Array | undefined; } export enum SortMode{ ASC = "ASC", DESC = "DESC" } export enum DependencyType { SEARCHING = "SEARCHING", REQUIREMENT = "REQUIREMENT", VISIBILITY = "REQUIREMENT" } export enum UserInterface { FILE = "FILE", IMAGE = "IMAGE", DATE = "DATE", DATETIME = "DATETIME", TIME = "TIME", ELAPSEDTIME = "ELAPSEDTIME", CHECKBOX = "CHECKBOX", SWITCH = "SWITCH", OPTIONSELECTOR = "OPTIONSELECTOR", DECIMALNUMBER = "DECIMALNUMBER", INTEGERNUMBER = "INTEGERNUMBER", SEARCH = "SEARCH", SEARCHPLUS = "SEARCHPLUS", SHORTTEXT = "SHORTTEXT", PASSWORD = "PASSWORD", MASKEDTEXT = "MASKEDTEXT", LONGTEXT = "LONGTEXT", HTML = "HTML", MULTISELECTOR = "MULTISELECTOR" } export enum DataUnitTransient { DATA_UNIT_TRANSIENT_PREFIX_NAME = 'transient.' }