Package com.smartgwt.client.docs

# Interface XmlCriteriaShorthand

public interface XmlCriteriaShorthand
All rules described in this topic are applied any time a property is of type `AdvancedCriteria` (in both Component XML and JavaScript component creation) and any API declares an `AdvancedCriteria` param.

A shorthand format for `AdvancedCriteria` is supported for simple criteria where the outer criterion is assumed to be an "and" operator:

      <!-- Simple format -->
      <criteria fieldName="restrictAge" operator="equals" value="true"/>

This is equivalent to:

      <!-- Normal format -->
      <criteria _constructor="AdvancedCriteria operator="and">
        <criteria>
          <criterion fieldName="restrictAge" operator="equals" value="true"/>
        </criteria>
      </criteria>

Additionally these defaults are used allowing to simplify AdvancedCriteria declaration:

operator="and" default is used if criteria is present at the same level
operator="equals" default is used if fieldName is present at the same level
value="true" default is used if operator="equals" default was applied

So, shorthand format above could be simplified even more, for example to `conditionally enable a form button`:

      <!-- Simple format -->
      <enableWhen fieldName="CustomerGrid.anySelected"/>

Full equivalent:

      <!-- Normal format -->
      <enableWhen _constructor="AdvancedCriteria operator="and">
        <criteria>
          <criterion fieldName="CustomerGrid.anySelected" operator="equals" value="true"/>
        </criteria>
      </enableWhen>

Another example shows all defaults usage, significantly shortening AdvancedCriteria declaration for boolean dynamic property (see full setup in Boolean Dynamic Properties example):

      <!-- Simple format -->
      <trueWhen>
          <criteria fieldName="settingsForm/values/exportFieldWidths" />
          <criteria fieldName="settingsForm/values/exportAs" operator="inSet" >
              <value>xls</value>
              <value>ooxml</value>
          </criteria>
      </trueWhen>

Full equivalent:

      <!-- Normal format -->
      <trueWhen>
          <AdvancedCriteria operator="and">
              <criteria>
                  <criterion fieldName="settingsForm/values/exportFieldWidths" operator="equals" value="true"/>
                  <criterion fieldName="settingsForm/values/exportAs" operator="inSet" >
                      <value>xls</value>
                      <value>ooxml</value>
                  </criterion>
              </criteria>
          </AdvancedCriteria>
      </trueWhen>

JS example:

      // Simple format
      {fieldName: "restrictAge"}

      // Normal format
      {
        _constructor: "AdvancedCriteria",
        operator: "and",
        criteria: [
          {fieldName: "restrictAge", operator: "equals", value: true}
        ]
      }