import { RangeLegendItem } from './legend.models'; import { NumericUnit } from './unit.models'; export interface ViewModel { factSheets: FactSheetViewModel[]; } export interface FactSheetViewModel { type: string; bgColor: string; color: string; fieldMetaData?: FieldMetaData; sections?: FactSheetViewModelSection[]; } export interface FactSheetViewModelSection { subsections: FactSheetViewModelSubsection[]; } export interface FactSheetViewModelSubsection { label: string; helpText?: string; template: FactSheetViewModelTemplateType; templateOptions?: TemplateOptions; weight?: number; disabled?: boolean; } export declare type TemplateOptions = TemplateOptionsBase | TemplateOptionsRelation; export interface TemplateOptionsRelation extends TemplateOptionsBase { relationName: string; /** * Optional list of tags for filtering which new & existing Fact Sheets are permitted for this relation. * For now only implemented on front-end for Survey. */ tagFilter?: string[]; relationGroupedBy?: RelationGroupedBy; } export interface RelationGroupedBy { factSheetType: string; enablingRelation: string; groupingRelation: string; } export interface TemplateOptionsBase { layout?: Layout; } export interface Layout { fields: Field[]; } export interface Field { name: string; type: T; /** * default value false */ readonly?: boolean; size?: number; options?: unknown; } export declare type ViewModelFieldType = 'text' | 'number' | 'externalId' | 'textarea' | 'multipleSelect' | 'status' | 'costs' | 'lifecycle' | 'location' | 'date' | 'percentage' | 'acl' | 'scope'; export declare type FactSheetViewModelTemplateType = 'fields' | 'relation' | 'projectStatus' | 'properties' | 'relationDiagram' | 'factSheetFilter' | 'webcomponent' | 'aiAgentInstances'; export declare type FieldMetaData = FactSheetViewDefinition | RelationFactSheetViewDefintion; export declare type RelationFactSheetViewDefintion = Record; export declare type FactSheetViewDefinition = Record; export declare type FieldViewDefinition = FieldViewValuesDefinition | FieldViewRangeDefinition; export interface FieldViewValuesDefinition { values: Record; } export interface FieldViewRangeDefinition { min?: { bgColor: string; }; max?: { bgColor: string; }; unit?: NumericUnit; } export interface FieldValueViewDefinition { bgColor?: string; color?: string; icon?: string; }