Class RowDependentFieldsCommonMeta<T extends org.cxbox.api.data.dto.DataResponseDTO>

java.lang.Object
org.cxbox.api.data.dto.rowmeta.FieldsDTO
org.cxbox.core.dto.rowmeta.RowDependentFieldsCommonMeta<T>
All Implemented Interfaces:
Iterable<org.cxbox.api.data.dto.rowmeta.FieldDTO>
Direct Known Subclasses:
RowDependentFieldsDictionaryDeprecatedMeta

public class RowDependentFieldsCommonMeta<T extends org.cxbox.api.data.dto.DataResponseDTO> extends org.cxbox.api.data.dto.rowmeta.FieldsDTO
  • Field Details

    • objectMapper

      @Qualifier("cxboxObjectMapper") protected final com.fasterxml.jackson.databind.ObjectMapper objectMapper
  • Constructor Details

    • RowDependentFieldsCommonMeta

      public RowDependentFieldsCommonMeta(@Qualifier("cxboxObjectMapper") com.fasterxml.jackson.databind.ObjectMapper objectMapper)
  • Method Details

    • get

      public org.cxbox.api.data.dto.rowmeta.FieldDTO get(DtoField<? super T,?> field)
    • getCurrentValue

      @NonNull public <F> @NonNull Optional<F> getCurrentValue(@NonNull @NonNull DtoField<? super T,F> field)

      Type Parameters:
      F - field type
      Parameters:
      field - field ref
      Returns:
      currentValue of field. Optional.empty() if value is null or field is not present.
    • addConcreteValue

      public final void addConcreteValue(DtoField<? super T,?> field, org.cxbox.api.data.dictionary.SimpleDictionary dictDTO)
      Adds a value to an existing list of selectable values
      Parameters:
      field - widget field with type dictionary
      dictDTO - DTO with dictionary value
    • setRequired

      @SafeVarargs public final void setRequired(DtoField<? super T,?>... fields)
    • setNotRequired

      @SafeVarargs public final void setNotRequired(DtoField<? super T,?>... fields)
    • required

      @SafeVarargs public final void required(boolean required, DtoField<? super T,?>... fields)
    • setHidden

      @SafeVarargs public final void setHidden(DtoField<? super T,?>... fields)
    • setNotHidden

      @SafeVarargs public final void setNotHidden(DtoField<? super T,?>... fields)
    • hidden

      @SafeVarargs public final void hidden(boolean required, DtoField<? super T,?>... fields)
    • disableFields

      public final void disableFields()
    • setDisabled

      @SafeVarargs public final void setDisabled(DtoField<? super T,?>... fields)
    • setEnabled

      @SafeVarargs public final void setEnabled(DtoField<? super T,?>... fields)
    • disable

      public final void disable(boolean disabled, DtoField<? super T,?>... fields)
    • setDisabled

      public void setDisabled(List<String> fields)
    • setConcreteValues

      public final void setConcreteValues(DtoField<? super T,?> field, Collection<org.cxbox.api.data.dictionary.SimpleDictionary> dictDtoList)
    • setDrilldown

      public final void setDrilldown(DtoField<? super T,?> field, DrillDownTypeSpecifier drillDownType, String drillDown)
    • setDrilldownWithFilter

      public final void setDrilldownWithFilter(DtoField<? super T,?> field, DrillDownTypeSpecifier drillDownType, String drillDown, Consumer<FC> fc)
      Sets drill-down functionality with filter capabilities for a specific field.

      This method configures a drill-down URL with optional filtering parameters for a DTO field. It retrieves the PlatformDrilldownService to generate URL filter parameters and applies them to the field's drill-down configuration.

      
       Example:
       		fields.setDrilldownWithFilter(
       				MyDTO_.value,
       				DrillDownType.INNER,
       				"screen/myscreen/view/myview",
       				fc -> fc
       			 // add with default builder
      				.add(RestController.myBc, MyDefaultDTO.class, fb -> fb
      					.dictionaryEnum(MyDefaultDTO_.status, getStatusFilterValues(id))
      					.multiValue(MyDefaultDTO_.multivalueField, myMultivalueField))
       			// add with custom filter builders
      				.add(RestController.myBc, MyDefaultDTO.class,
      				  new TypeToken<MyCustomFilterBuilder<MyCustomDTO>>() {
      
      				  },
      				  fb -> fb
      				   .dictionaryEnum(MyDTO_.status, getStatusFilterValues(id))
      				   .multiValue(MyDTO_.multivalueField, myMultivalueFilterField)
      				   .myCustomFields(MyDTO_.customField, myCustomFieldFilterValue
       		);
       
      Parameters:
      field - the DTO field to configure drill-down for. Can be null, in which case no configuration will be applied
      drillDownType - the type specifier that defines the drill-down behavior
      drillDown - the base drill-down URL string
      fc - a consumer that accepts and configures the filter configuration object. This allows customization of filtering parameters that will be appended to the drill-down URL
    • setDrilldowns

      public final void setDrilldowns(List<FieldDrillDown> drillDowns)
    • setCurrentValue

      public final <V> void setCurrentValue(DtoField<? super T,V> field, V value)
    • setPlaceholder

      public final void setPlaceholder(DtoField<? super T,?> field, String placeholder)
    • isFieldChangedNow

      public <V> boolean isFieldChangedNow(RowDependentFieldsMeta<T> fields, DtoField<? super T,V> field)
      Сhecks whether the specified field was modified by the user in the UI (Frontend) during the current iteration.
      Parameters:
      fields - Current state of field metadata.
      field - DTO field to check
      Returns:
      boolean. true – If the field was changed in the UI during the current iteration. false – If the field remains unchanged.

      This method differs from isFieldChanged in that it specifically checks whether the field was changed right now, during the current client-side action. It does this by checking the changedNowParam tag.

      In contrast, isFieldChanged checks for any change to the field, based on the data tag, which accumulates all changes over time (especially during force active), and may include fields that were changed earlier not necessarily in the current iteration.