how do i store values into rule inputs if the length of list is Dynamic

Hi Team,

I am Self Learning appian and now creating  interfaces, i want  a requirement to create Repetitive Section Layout based on input integer value

Scenario is let a integer input vale named Number of clients count.

 now i have collect the first Name, last Name and some other fields of clients, i created a CDT for those client data and created a Rule input as the interface is as shown below, when the number of client value is empty , we are displaying only one section layout as default.

When i entered 2 as number of client, i got 2 section layouts

how since i use for loop to display the recursive section layout, when i enter the details of first client , its is copied into second layout also

i tried using indexing , but i faced problem when i am inserting data into fields.

How do store Values into list type rule input in this situation.

please help me, Thanks in advance I am attaching code for review. let me know if I made any mistakes

{
  a!cardLayout(
    contents: {
      a!columnsLayout(
        columns: {
          a!columnLayout(
            contents: {
              a!integerField(
                label: "No.of Clients:",
                labelPosition: "ABOVE",
                value: ri!NumberOfClients,
                saveInto: ri!NumberOfClients,
                refreshAfter: "UNFOCUS",
                validations: {}
              )
            }
          ),
          a!columnLayout(contents: {}),
          a!columnLayout(contents: {})
        }
      )
    },
    height: "AUTO",
    style: "TRANSPARENT",
    marginBelow: "STANDARD"
  ),
  a!columnsLayout(
    columns: {
      a!columnLayout(contents: {}),
      a!columnLayout(contents: {}),
      a!columnLayout(contents: {})
    }
  ),
  a!forEach(
    items: if(isnull(ri!NumberOfClients),1,1+enumerate(ri!NumberOfClients)),
    expression: {
      a!sectionLayout(
        label: "Client Data" & fv!index,
        contents: a!cardLayout(
          contents: {
            a!sectionLayout(
              contents: {
                a!columnsLayout(
                  columns: {
                    a!columnLayout(contents: {}),
                    a!columnLayout(contents: {}),
                    a!columnLayout(contents: {})
                  }
                ),
                a!columnsLayout(
                  columns: {
                    a!columnLayout(
                      contents: {
                        a!richTextDisplayField(
                          labelPosition: "COLLAPSED",
                          value: {
                            a!richTextItem(
                              text: { "Personal Details" },
                              size: "MEDIUM_PLUS",
                              style: { "STRONG" }
                            )
                          }
                        )
                      }
                    )
                  }
                )
              }
            ),
            a!columnsLayout(
              columns: {
                a!columnLayout(
                  contents: {
                    a!textField(
                      label: "FirstName:",
                      labelPosition: "JUSTIFIED",
                      value:if(a!isNullOrEmpty(ri!ClientData),null,ri!ClientData.firstName),
                      saveInto: ri!ClientData.firstName,
                      refreshAfter: "UNFOCUS",
                      validations: {}
                    ),
                    a!integerField(
                      label: "Phone Number:",
                      labelPosition: "JUSTIFIED",
                      value:if(a!isNullOrEmpty(ri!ClientData),null, ri!ClientData[fv!index].phoneNumber),
                      saveInto: { ri!ClientData[fv!index].phoneNumber,  },
                      refreshAfter: "UNFOCUS",
                      validations: {}
                    )
                  }
                ),
                a!columnLayout(
                  contents: {
                    a!textField(
                      label: "LastName:",
                      labelPosition: "JUSTIFIED",
                      value: if(a!isNullOrEmpty(ri!ClientData),null,ri!ClientData[fv!index].lastName),
                      saveInto: ri!ClientData[fv!index].lastName,
                      refreshAfter: "UNFOCUS",
                      validations: {}
                    ),
                    a!textField(
                      label: "SSN:",
                      labelPosition: "JUSTIFIED",
                      value: if(a!isNullOrEmpty(ri!ClientData),null, ri!ClientData[fv!index].ssn),
                      saveInto: ri!ClientData[fv!index].ssn,
                      refreshAfter: "UNFOCUS",
                      validations: {}
                    )
                  }
                ),
                a!columnLayout(
                  contents: {
                    a!dateField(
                      label: "Date of Birth:",
                      labelPosition: "JUSTIFIED",
                      value: if(a!isNullOrEmpty(ri!ClientData),null,ri!ClientData[fv!index].dob),
                      saveInto: ri!ClientData[fv!index].dob,
                      validations: {}
                    ),
                    a!textField(
                      label: "Gender:",
                      labelPosition: "JUSTIFIED",
                      value: if(a!isNullOrEmpty(ri!ClientData),null,ri!ClientData[fv!index].gender),
                      saveInto: ri!ClientData[fv!index].gender,
                      refreshAfter: "UNFOCUS",
                      validations: {}
                    )
                  }
                )
              }
            ),
            a!sectionLayout(
              label: "",
              contents: {
                a!richTextDisplayField(
                  labelPosition: "COLLAPSED",
                  value: {
                    a!richTextItem(
                      text: { "Address Details" },
                      size: "MEDIUM_PLUS",
                      style: { "STRONG" }
                    )
                  }
                ),
                a!columnsLayout(
                  columns: {
                    a!columnLayout(
                      contents: {
                        a!textField(
                          label: "AddressLine1:",
                          labelPosition: "JUSTIFIED",
                          value: if(a!isNullOrEmpty(ri!ClientData),null,ri!ClientData[fv!index].addressLine1),
                          saveInto: ri!ClientData[fv!index].addressLine1,
                          refreshAfter: "UNFOCUS",
                          validations: {}
                        ),
                        a!textField(
                          label: "ZipCode:",
                          labelPosition: "JUSTIFIED",
                          value: if(a!isNullOrEmpty(ri!ClientData),null,ri!ClientData[fv!index].zipcode),
                          saveInto: ri!ClientData[fv!index].zipcode,
                          refreshAfter: "UNFOCUS",
                          validations: {}
                        )
                      }
                    ),
                    a!columnLayout(
                      contents: {
                        a!textField(
                          label: "AddressLine2:",
                          labelPosition: "JUSTIFIED",
                          value: if(a!isNullOrEmpty(ri!ClientData),null,ri!ClientData[fv!index].addressLine2),
                          saveInto: ri!ClientData[fv!index].addressLine2,
                          refreshAfter: "UNFOCUS",
                          validations: {}
                        ),
                        a!textField(
                          label: "State:",
                          labelPosition: "JUSTIFIED",
                          value:  if(a!isNullOrEmpty(ri!ClientData),null,ri!ClientData[fv!index].state),
                          saveInto: ri!ClientData[fv!index].state,
                          refreshAfter: "UNFOCUS",
                          validations: {}
                        )
                      }
                    ),
                    a!columnLayout(
                      contents: {
                        a!textField(
                          label: "City:",
                          labelPosition: "JUSTIFIED",
                          value: if(a!isNullOrEmpty(ri!ClientData),null,ri!ClientData[fv!index].city),
                          saveInto: ri!ClientData[fv!index].city,
                          refreshAfter: "UNFOCUS",
                          validations: {}
                        ),
                        a!textField(
                          label: "Country:",
                          labelPosition: "JUSTIFIED",
                          value: if(a!isNullOrEmpty(ri!ClientData),null,ri!ClientData[fv!index].country),
                          saveInto: ri!ClientData[fv!index].country,
                          refreshAfter: "UNFOCUS",
                          validations: {}
                        )
                      }
                    )
                  }
                )
              }
            )
          }
        )
      )
    }
  ),

}

  Discussion posts and replies are publicly visible

Parents Reply Children
  • 0
    Certified Senior Developer
    in reply to vinayj0006

    Looping through ri!NumberOfClients without creating a list of ri!ClientData won't populate the grid view with individual client data.

  • how to create list of ri!ClientData , any inputs how can i do that?

  • +1
    Certified Senior Developer
    in reply to vinayj0006

    I am using ri!ClientData as map type data.(As i don't know the structure of your cdt).

    a!map(
    id:{},
    addressLine1:{},
    zipcode:{},
    addressLine2:{},
    state:{},
    city:{},
    country:{}
    )

    Observe Below Code and try to replicate for yours.

    {
      a!cardLayout(
        contents: {
          a!columnsLayout(
            columns: {
              a!columnLayout(
                contents: {
                  a!integerField(
                    label: "No.of Clients:",
                    labelPosition: "ABOVE",
                    value: ri!NumberOfClients,
                    saveInto:{ ri!NumberOfClients,
                    a!save(
                      ri!ClientData,
                      a!forEach(
                        items: enumerate(ri!NumberOfClients),
                        expression: 
                       a!map(
                         id:fv!index
                       )
                      )
                      )
                      },
                    refreshAfter: "UNFOCUS",
                    validations: {}
                  )
                }
              ),
              a!columnLayout(contents: {}),
              a!columnLayout(contents: {})
            }
          )
        },
        height: "AUTO",
        style: "TRANSPARENT",
        marginBelow: "STANDARD"
      ),
      a!columnsLayout(
        columns: {
          a!columnLayout(contents: {}),
          a!columnLayout(contents: {}),
          a!columnLayout(contents: {})
        }
      ),
      a!forEach(
        items:ri!ClientData,
        expression: {
          a!sectionLayout(
            label: "Client Data" & fv!index,
            contents: a!cardLayout(
              contents: {
                a!sectionLayout(
                  contents: {
                    a!columnsLayout(
                      columns: {
                        a!columnLayout(contents: {}),
                        a!columnLayout(contents: {}),
                        a!columnLayout(contents: {})
                      }
                    ),
                    a!columnsLayout(
                      columns: {
                        a!columnLayout(
                          contents: {
                            a!richTextDisplayField(
                              labelPosition: "COLLAPSED",
                              value: {
                                a!richTextItem(
                                  text: { "Personal Details" },
                                  size: "MEDIUM_PLUS",
                                  style: { "STRONG" }
                                )
                              }
                            )
                          }
                        )
                      }
                    )
                  }
                ),
                a!columnsLayout(
                  columns: {
                    a!columnLayout(
                      contents: {
                        a!textField(
                          label: "FirstName:",
                          labelPosition: "JUSTIFIED",
                          value:if(a!isNullOrEmpty(ri!ClientData[fv!index].firstName),null,ri!ClientData[fv!index].firstName),
                          saveInto: ri!ClientData[fv!index].firstName,
                          refreshAfter: "UNFOCUS",
                          validations: {}
                        ),
                        a!integerField(
                          label: "Phone Number:",
                          labelPosition: "JUSTIFIED",
                          value:if(a!isNullOrEmpty(ri!ClientData[fv!index].phoneNumber),null, ri!ClientData[fv!index].phoneNumber),
                          saveInto: { ri!ClientData[fv!index].phoneNumber,  },
                          refreshAfter: "UNFOCUS",
                          validations: {}
                        )
                      }
                    ),
                    a!columnLayout(
                      contents: {
                        a!textField(
                          label: "LastName:",
                          labelPosition: "JUSTIFIED",
                          value: if(a!isNullOrEmpty(ri!ClientData[fv!index].lastName),null,ri!ClientData[fv!index].lastName),
                          saveInto: ri!ClientData[fv!index].lastName,
                          refreshAfter: "UNFOCUS",
                          validations: {}
                        ),
                        a!textField(
                          label: "SSN:",
                          labelPosition: "JUSTIFIED",
                          value: if(a!isNullOrEmpty(ri!ClientData[fv!index].ssn),null, ri!ClientData[fv!index].ssn),
                          saveInto: ri!ClientData[fv!index].ssn,
                          refreshAfter: "UNFOCUS",
                          validations: {}
                        )
                      }
                    ),
                    a!columnLayout(
                      contents: {
                        a!dateField(
                          label: "Date of Birth:",
                          labelPosition: "JUSTIFIED",
                          value: if(a!isNullOrEmpty(ri!ClientData[fv!index].dob),null,ri!ClientData[fv!index].dob),
                          saveInto: ri!ClientData[fv!index].dob,
                          validations: {}
                        ),
                        a!textField(
                          label: "Gender:",
                          labelPosition: "JUSTIFIED",
                          value: if(a!isNullOrEmpty(ri!ClientData[fv!index].gender),null,ri!ClientData[fv!index].gender),
                          saveInto: ri!ClientData[fv!index].gender,
                          refreshAfter: "UNFOCUS",
                          validations: {}
                        )
                      }
                    )
                  }
                ),
                a!sectionLayout(
                  label: "",
                  contents: {
                    a!richTextDisplayField(
                      labelPosition: "COLLAPSED",
                      value: {
                        a!richTextItem(
                          text: { "Address Details" },
                          size: "MEDIUM_PLUS",
                          style: { "STRONG" }
                        )
                      }
                    ),
                    
                    
                     
                    
                    
                    a!columnsLayout(
                      columns: {
                        a!columnLayout(
                          contents: {
                            a!textField(
                              label: "AddressLine1:",
                              labelPosition: "JUSTIFIED",
                              value: if(a!isNullOrEmpty(ri!ClientData[fv!index].addressLine1),null,ri!ClientData[fv!index].addressLine1),
                              saveInto: ri!ClientData[fv!index].addressLine1,
                              refreshAfter: "UNFOCUS",
                              validations: {}
                            ),
                            a!textField(
                              label: "ZipCode:",
                              labelPosition: "JUSTIFIED",
                              value: if(a!isNullOrEmpty(ri!ClientData[fv!index].zipcode),null,ri!ClientData[fv!index].zipcode),
                              saveInto: ri!ClientData[fv!index].zipcode,
                              refreshAfter: "UNFOCUS",
                              validations: {}
                            )
                          }
                        ),
                        a!columnLayout(
                          contents: {
                            a!textField(
                              label: "AddressLine2:",
                              labelPosition: "JUSTIFIED",
                              value: if(a!isNullOrEmpty(ri!ClientData[fv!index].addressLine2),null,ri!ClientData[fv!index].addressLine2),
                              saveInto: ri!ClientData[fv!index].addressLine2,
                              refreshAfter: "UNFOCUS",
                              validations: {}
                            ),
                            a!textField(
                              label: "State:",
                              labelPosition: "JUSTIFIED",
                              value:  if(a!isNullOrEmpty(ri!ClientData[fv!index].state),null,ri!ClientData[fv!index].state),
                              saveInto: ri!ClientData[fv!index].state,
                              refreshAfter: "UNFOCUS",
                              validations: {}
                            )
                          }
                        ),
                        a!columnLayout(
                          contents: {
                            a!textField(
                              label: "City:",
                              labelPosition: "JUSTIFIED",
                              value: if(a!isNullOrEmpty(ri!ClientData[fv!index].city),null,ri!ClientData[fv!index].city),
                              saveInto: ri!ClientData[fv!index].city,
                              refreshAfter: "UNFOCUS",
                              validations: {}
                            ),
                            a!textField(
                              label: "Country:",
                              labelPosition: "JUSTIFIED",
                              value: if(a!isNullOrEmpty(ri!ClientData[fv!index].city),null,ri!ClientData[fv!index].country),
                              saveInto: ri!ClientData[fv!index].country,
                              refreshAfter: "UNFOCUS",
                              validations: {}
                            )
                          }
                        )
                      }
                    )
                  }
                )
              }
            )
          )
        }
      ),
    
    }