import { FormArray, FormBuilder, FormGroup } from '@angular/forms'; import { ID } from '../core'; export interface CustomFieldConfigurationFilterSetting { id: ID; value_changes_by: string; value_by: string; compare_by_values: { compare_by: string; value: string; compare: '==' | '>' | '<' | '>=' | '<=' | '!='; }[]; sub_type_reference_name: string; } export interface CustomFieldConfiguration { id: ID; reference_type: string; sub_type_definitions: CustomFieldSubTypeDefinition[]; group_specifications: CustomFieldAttributeGroupSpecification[]; filter_settings: CustomFieldConfigurationFilterSetting[]; } export interface CustomFieldSubTypeDefinition extends TemplateCustomAttributeGroupField { id: ID; sub_type_reference_name: string; } export interface TemplateCustomAttributeGroupField { id: ID; label: string; field_type: CustomFieldType; field_relation: CustomFieldRelation; is_required: boolean; placeholder: string; order_value: number; is_multi_select: boolean; count_cols: number; css_class: string; params: CustomFieldRelationParam[]; } export interface CustomFieldType { id: ID; field_type: string; field_type_name: string; field_relations: CustomFieldRelation[]; } export interface CustomFieldRelation { id: ID; relation_name: string; table_name: string; data_route: string; details_data_route: string; data_route_variables: any[]; display_by: string; display_by_array: any[]; concat_with: string; is_multi_selectable: boolean; relation_keys: any[]; data_array: string; data_array_parsed?: any[]; module_id: string; origin_type: string; params: CustomFieldRelationParam[]; } export interface CustomFieldRelationParam { id: ID; param_name: string; param: string; value_by: string; param_type: 'QUERY' | 'ROUTE'; } export interface AttributeGroup { id: ID; attribute_group: CustomFieldAttributeGroupSpecification; group_fields: AttributeGroupField[]; } export interface AttributeGroupField { id: ID; attribute_field: CustomFieldAttributeGroupSpecificationField; display_value?: string; field_value: string; foreign_id: ID; is_required: boolean; tags?: string[]; params?: { param: string; value: string; }[]; } export interface CustomFieldAttributeGroupSpecification { id: ID; group_name: string; order_value: number; fields: CustomFieldAttributeGroupSpecificationField[]; } export interface CustomFieldAttributeGroupSpecificationField extends TemplateCustomAttributeGroupField { id: ID; field_settings: CustomFieldAttributeGroupSpecificationFieldSetting[]; tags: CustomFieldTag[]; } export interface CustomFieldTag { id: ID; tag: string; tag_name: string; } export interface CustomFieldAttributeGroupSpecificationFieldSetting { id: ID; sub_type_definition: CustomFieldSubTypeDefinition; field_value: string; foreign_id: string; } export interface CustomFieldConfigurationFilter { key: string; value?: string; values?: string[]; } export declare class CustomFieldsHelper { static filterCustomFieldConfiguration(customFieldConfiguration: CustomFieldConfiguration, filters: CustomFieldConfigurationFilter[]): { group_specifications: CustomFieldAttributeGroupSpecification[]; id: ID; reference_type: string; sub_type_definitions: CustomFieldSubTypeDefinition[]; filter_settings: CustomFieldConfigurationFilterSetting[]; }; static filterCustomFieldAttributeGroupSpecifications(customFieldAttributeGroupSpecifications: CustomFieldAttributeGroupSpecification[], filters: CustomFieldConfigurationFilter[]): CustomFieldAttributeGroupSpecification[]; static filterCustomFieldAttributeGroupSpecificationFields(customFieldAttributeGroupSpecificationFields: CustomFieldAttributeGroupSpecificationField[], filters: CustomFieldConfigurationFilter[]): CustomFieldAttributeGroupSpecificationField[]; static mapCustomFieldConfigurationToAttributeGroups(customFieldConfiguration: CustomFieldConfiguration, defaultId: ID): AttributeGroup[]; static mapCustomFieldConfigurationFieldToAttributeGroupField(customFieldAttributeGroupSpecificationField: CustomFieldAttributeGroupSpecificationField, defaultId: ID): AttributeGroupField; static recalculateAttributeGroupsForObject(_fb: FormBuilder, attributeGroupsForm: FormArray, customFieldConfiguration: CustomFieldConfiguration, mainObject: any, defaultId: ID): void; static recalculateAttributeGroupsForFormGroup(_fb: FormBuilder, attributeGroupsForm: FormArray, customFieldConfiguration: CustomFieldConfiguration, formGroup: FormGroup, defaultId: ID, filters?: CustomFieldConfigurationFilter[]): void; static checkCompareBy(filterValueBy: CustomFieldConfigurationFilterSetting, controlValue: any): boolean; static recalculateAttributeGroups(_fb: FormBuilder, attributeGroupsForm: FormArray, customFieldConfiguration: CustomFieldConfiguration, filters: CustomFieldConfigurationFilter[], mainObject: any, defaultId: ID): void; static recalculateAttributeGroupsHelper(oldAttributeGroups: AttributeGroup[], customFieldConfiguration: CustomFieldConfiguration, filters: CustomFieldConfigurationFilter[], defaultId: ID): AttributeGroup[]; static addAttributeGroup(_fb: FormBuilder, attributeGroupsForm: FormArray, attributeGroup: AttributeGroup, mainObject: any, defaultId: ID): void; static initAttributeGroup(_fb: FormBuilder, attributeGroup: AttributeGroup, mainObject: any, defaultId: ID): FormGroup; static addAttributeGroupField(_fb: FormBuilder, attributeGroupFieldsForm: FormArray, attributeGroupField: AttributeGroupField, mainObject: any): void; static initAttributeGroupField(_fb: FormBuilder, attributeGroupField: AttributeGroupField, mainObject: any): FormGroup; static getCustomFieldWithTag(attributeGroups: AttributeGroup[], searchTag: string): string; }