kit

Conditions builder

Built revision v17.10.0

Phoenix
Topics

Human support

Bring a missing role, layout, or state, or a rendering against the standard, to the session working on kit. Name the package and the entry.

Conditions builder

Bookings to follow up
Match
All
  1. Status
    is
    Unpaid

    Removing the status condition waits until it is checked.

  2. Amount due
    is more than
    500.00
  3. Match
    Any

    Removing this group waits until its conditions are checked.

    1. Room
      is
      Garden room
    2. Hirer
      contains
      school

    Adding to this group waits until its conditions are checked.

Adding waits until these conditions are checked.

Unpaid bookings over £500.00, in the Garden room or with a hirer whose name contains “school”.

Source
<Kit.Phoenix.Roles.ConditionsBuilder.conditions_builder add_state={Kit.Phoenix.ActionState.inert("rule-add", "Adding waits until these conditions are checked.")} id="phoenix-rule" reading={[Kit.Phoenix.Words.text("Unpaid bookings over "), Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "500.00"))), Kit.Phoenix.Words.text(", in the Garden room or with a hirer whose name contains “school”.")]}>
  <:legend>Bookings to follow up</:legend>
  <:match>
    <Kit.Phoenix.Roles.FormGroup.form_group id="phoenix-rule-match">
      <:label>Match</:label>
      <:control_set :let={binding}>
        <Kit.Phoenix.Roles.SegmentedControl.segmented_control binding={binding} name="match" value="all">
          <:option value="all">All</:option>
          <:option value="any">Any</:option>
        </Kit.Phoenix.Roles.SegmentedControl.segmented_control>
      </:control_set>
      <:printed_value>All</:printed_value>
    </Kit.Phoenix.Roles.FormGroup.form_group>
  </:match>
  <Kit.Phoenix.Roles.ConditionsBuilder.condition name="Status" remove_state={Kit.Phoenix.ActionState.inert("rule-remove-status", "Removing the status condition waits until it is checked.")}>
    <:field>
      <Kit.Phoenix.Roles.FormGroup.form_group id="phoenix-rule-1-field" kind={Kit.Phoenix.Roles.FormGroup.Kind.select()} control_value="status" control_rest={%{name: "conditions[0][field]"}}>
        <:label>Condition 1 field</:label>
        <:printed_value>Status</:printed_value>
        <:option value="status">Status</:option>
        <:option value="amount">Amount due</:option>
        <:option value="room">Room</:option>
        <:option value="hirer">Hirer</:option>
      </Kit.Phoenix.Roles.FormGroup.form_group>
    </:field>
    <:operator>
      <Kit.Phoenix.Roles.FormGroup.form_group id="phoenix-rule-1-operator" kind={Kit.Phoenix.Roles.FormGroup.Kind.select()} control_value="is" control_rest={%{name: "conditions[0][operator]"}}>
        <:label>Condition 1 operator</:label>
        <:printed_value>is</:printed_value>
        <:option value="is">is</:option>
        <:option value="is-not">is not</:option>
      </Kit.Phoenix.Roles.FormGroup.form_group>
    </:operator>
    <:value>
      <Kit.Phoenix.Roles.FormGroup.form_group id="phoenix-rule-1-value" kind={Kit.Phoenix.Roles.FormGroup.Kind.select()} control_value="unpaid" control_rest={%{name: "conditions[0][value]"}}>
        <:label>Condition 1 value</:label>
        <:printed_value>Unpaid</:printed_value>
        <:option value="unpaid">Unpaid</:option>
        <:option value="paid">Paid</:option>
        <:option value="cancelled">Cancelled</:option>
      </Kit.Phoenix.Roles.FormGroup.form_group>
    </:value>
  </Kit.Phoenix.Roles.ConditionsBuilder.condition>
  <Kit.Phoenix.Roles.ConditionsBuilder.condition name="Amount due">
    <:field>
      <Kit.Phoenix.Roles.FormGroup.form_group id="phoenix-rule-2-field" kind={Kit.Phoenix.Roles.FormGroup.Kind.select()} control_value="amount" control_rest={%{name: "conditions[1][field]"}}>
        <:label>Condition 2 field</:label>
        <:printed_value>Amount due</:printed_value>
        <:option value="status">Status</:option>
        <:option value="amount">Amount due</:option>
        <:option value="room">Room</:option>
        <:option value="hirer">Hirer</:option>
      </Kit.Phoenix.Roles.FormGroup.form_group>
    </:field>
    <:operator>
      <Kit.Phoenix.Roles.FormGroup.form_group id="phoenix-rule-2-operator" kind={Kit.Phoenix.Roles.FormGroup.Kind.select()} control_value="more" control_rest={%{name: "conditions[1][operator]"}}>
        <:label>Condition 2 operator</:label>
        <:printed_value>is more than</:printed_value>
        <:option value="is">is</:option>
        <:option value="more">is more than</:option>
        <:option value="less">is less than</:option>
      </Kit.Phoenix.Roles.FormGroup.form_group>
    </:operator>
    <:value>
      <Kit.Phoenix.Roles.FormGroup.form_group id="phoenix-rule-2-value" kind={Kit.Phoenix.Roles.FormGroup.Kind.text(:medium)} control_rest={%{name: "conditions[1][value]", value: "500.00", inputmode: "decimal"}}>
        <:label>Condition 2 value</:label>
        <:printed_value>500.00</:printed_value>
      </Kit.Phoenix.Roles.FormGroup.form_group>
    </:value>
  </Kit.Phoenix.Roles.ConditionsBuilder.condition>
  <Kit.Phoenix.Roles.ConditionsBuilder.group add_state={Kit.Phoenix.ActionState.inert("rule-nested-add", "Adding to this group waits until its conditions are checked.")} remove_state={Kit.Phoenix.ActionState.inert("rule-remove-group", "Removing this group waits until its conditions are checked.")}>
    <:match>
      <Kit.Phoenix.Roles.FormGroup.form_group id="phoenix-rule-group-match">
        <:label>Match</:label>
        <:control_set :let={binding}>
          <Kit.Phoenix.Roles.SegmentedControl.segmented_control binding={binding} name="group[match]" value="any">
            <:option value="all">All</:option>
            <:option value="any">Any</:option>
          </Kit.Phoenix.Roles.SegmentedControl.segmented_control>
        </:control_set>
        <:printed_value>Any</:printed_value>
      </Kit.Phoenix.Roles.FormGroup.form_group>
    </:match>
    <Kit.Phoenix.Roles.ConditionsBuilder.condition name="Room">
      <:field>
        <Kit.Phoenix.Roles.FormGroup.form_group id="phoenix-rule-group-1-field" kind={Kit.Phoenix.Roles.FormGroup.Kind.select()} control_value="room" control_rest={%{name: "group[conditions][0][field]"}}>
          <:label>Group condition 1 field</:label>
          <:printed_value>Room</:printed_value>
          <:option value="status">Status</:option>
          <:option value="amount">Amount due</:option>
          <:option value="room">Room</:option>
          <:option value="hirer">Hirer</:option>
        </Kit.Phoenix.Roles.FormGroup.form_group>
      </:field>
      <:operator>
        <Kit.Phoenix.Roles.FormGroup.form_group id="phoenix-rule-group-1-operator" kind={Kit.Phoenix.Roles.FormGroup.Kind.select()} control_value="is" control_rest={%{name: "group[conditions][0][operator]"}}>
          <:label>Group condition 1 operator</:label>
          <:printed_value>is</:printed_value>
          <:option value="is">is</:option>
          <:option value="is-not">is not</:option>
        </Kit.Phoenix.Roles.FormGroup.form_group>
      </:operator>
      <:value>
        <Kit.Phoenix.Roles.FormGroup.form_group id="phoenix-rule-group-1-value" kind={Kit.Phoenix.Roles.FormGroup.Kind.select()} control_value="garden" control_rest={%{name: "group[conditions][0][value]"}}>
          <:label>Group condition 1 value</:label>
          <:printed_value>Garden room</:printed_value>
          <:option value="garden">Garden room</:option>
          <:option value="hall">Main hall</:option>
        </Kit.Phoenix.Roles.FormGroup.form_group>
      </:value>
    </Kit.Phoenix.Roles.ConditionsBuilder.condition>
    <Kit.Phoenix.Roles.ConditionsBuilder.condition name="Hirer">
      <:field>
        <Kit.Phoenix.Roles.FormGroup.form_group id="phoenix-rule-group-2-field" kind={Kit.Phoenix.Roles.FormGroup.Kind.select()} control_value="hirer" control_rest={%{name: "group[conditions][1][field]"}}>
          <:label>Group condition 2 field</:label>
          <:printed_value>Hirer</:printed_value>
          <:option value="status">Status</:option>
          <:option value="amount">Amount due</:option>
          <:option value="room">Room</:option>
          <:option value="hirer">Hirer</:option>
        </Kit.Phoenix.Roles.FormGroup.form_group>
      </:field>
      <:operator>
        <Kit.Phoenix.Roles.FormGroup.form_group id="phoenix-rule-group-2-operator" kind={Kit.Phoenix.Roles.FormGroup.Kind.select()} control_value="contains" control_rest={%{name: "group[conditions][1][operator]"}}>
          <:label>Group condition 2 operator</:label>
          <:printed_value>contains</:printed_value>
          <:option value="is">is</:option>
          <:option value="contains">contains</:option>
        </Kit.Phoenix.Roles.FormGroup.form_group>
      </:operator>
      <:value>
        <Kit.Phoenix.Roles.FormGroup.form_group id="phoenix-rule-group-2-value" kind={Kit.Phoenix.Roles.FormGroup.Kind.text(:medium)} control_rest={%{name: "group[conditions][1][value]", value: "school"}}>
          <:label>Group condition 2 value</:label>
          <:printed_value>school</:printed_value>
        </Kit.Phoenix.Roles.FormGroup.form_group>
      </:value>
    </Kit.Phoenix.Roles.ConditionsBuilder.condition>
  </Kit.Phoenix.Roles.ConditionsBuilder.group>
</Kit.Phoenix.Roles.ConditionsBuilder.conditions_builder>