Validation on Grid Plus

Hi All,

I am using gridPlusLayout , i want to know how can we put validation on columnConfigs.

1.Like if want to put validation for null or empty.

2. the second concern is when i am editing a field after made changes it save data into separate variable, but every time when we load grid it by default creates a null empty row and add that row also in save data variable. so when i am saving that record  in record type it thorw error because a null type or row is also adding into save data variable. 

It works fine when we manually remove that data from grid but when we don't remove that causes error. So how to handle this situation.

  Discussion posts and replies are publicly visible

Parents Reply Children
  • a!localVariables(
      local!changeData: {},
      local!deletedData:{},
      local!structureType:  {"rooftop", "micro"},
      local!region: {"bc"},
      local!coverageType:  {"macro","micro"},
      local!uniqueStructuretype: union(
        local!structureType,
        local!structureType
      ),
      local!uniqueRegion: union(local!region, local!region),
      local!uniqueCoverageType: union(local!coverageType, local!coverageType),
      local!isDisable: false,
      local!gridData: rule!MTFT_getTftData(),
      local!record: a!forEach(
        items: local!changeData,
        expression: cast(
          'recordType!{a335f9cf-6867-4270-aed4-53c7bdcc9404}MTFT Default Rules',
          fv!item
        )
      ),
       
      local!deafultGridData:local!gridData,
      
        
    
      a!formLayout(
        contents: {
          a!sectionLayout(
            label: "Manage Forecast Date Rules",
            labelIcon: "user-edit",
            contents: {
              a!columnsLayout(
              
                columns: {
                  a!columnLayout(
                    
                    contents: a!boxLayout(
                    label: "Instructions",
                    contents: {
                      a!cardLayout(
                        contents: {
                          a!sideBySideLayout(
                            items: {
                              a!sideBySideItem(
                                item: a!richTextDisplayField(
                                  labelPosition: "COLLAPSED",
                                  value: {
                                    a!richTextIcon(
                                      icon: "info-circle",
                                      color: "#555",
                                      size: "MEDIUM"
                                    )
                                  }
                                ),
                                width: "MINIMIZE"
                              ),
                              a!sideBySideItem(
                                /* Replace this rich text with your information message */
                                item: a!richTextDisplayField(
                                  labelPosition: "COLLAPSED",
                                  value: {
                                    cons!MTFT_FORECAST_DATE_RULES_INSTRUCTIONS[1]
                                  }
                                )
                              )
                            },
                            alignVertical: "MIDDLE"
                          )
                        },
                        style: "STANDARD",
                        marginBelow: "STANDARD",
                        accessibilityText: "Information message"
                      ),
                      a!cardLayout(
                        contents: {
                          a!sideBySideLayout(
                            items: {
                              a!sideBySideItem(
                                item: a!richTextDisplayField(
                                  labelPosition: "COLLAPSED",
                                  value: {
                                    a!richTextIcon(
                                      icon: "info-circle",
                                      color: "#555",
                                      size: "MEDIUM"
                                    )
                                  }
                                ),
                                width: "MINIMIZE"
                              ),
                              a!sideBySideItem(
                                /* Replace this rich text with your information message */
                                item: a!richTextDisplayField(
                                  labelPosition: "COLLAPSED",
                                  value: {
                                    cons!MTFT_FORECAST_DATE_RULES_INSTRUCTIONS[2]
                                  }
                                )
                              )
                            },
                            alignVertical: "MIDDLE"
                          )
                        },
                        style: "STANDARD",
                        marginBelow: "STANDARD",
                        accessibilityText: "Information message"
                      )
                    },
                    style: "#FFFFFF",
                    shape: "ROUNDED",
                    isCollapsible: true,
                    isInitiallyCollapsed: true,
                    marginBelow: "STANDARD"
                  )
                  ),
                  a!columnLayout(contents:   a!buttonLayout(
                    primaryButtons: a!buttonWidget(
                      label: "Save",
                      value: true,
                      saveInto: {
    
                        a!save(ri!tftRules['recordType!{a335f9cf-6867-4270-aed4-53c7bdcc9404}MTFT Default Rules.fields.{4372a136-1961-4168-842f-60543664d9b9}createdBy'], loggedInUser()),
                        a!save(ri!tftRules['recordType!{a335f9cf-6867-4270-aed4-53c7bdcc9404}MTFT Default Rules.fields.{87abe090-0ef4-4efd-8d62-59b8f07e98de}createdDate'], now()),
                        a!save(ri!tftRules['recordType!{a335f9cf-6867-4270-aed4-53c7bdcc9404}MTFT Default Rules.fields.{c4ea5ff1-bb01-48a3-a9af-9003cd1e0efc}isDeleted'], false),
                        
    
                        a!startProcess(
                          processModel: cons!MTFT_MANAGE_FORECAST_DATE_RULES_PM,
                          processParameters: { TFTRules: ri!tftRules, cancel: ri!cancel },
    
                        ),
    
                      },
                      submit: true,
                      style: "SOLID",
                      disabled: if(local!isDisable, false, true),
                      validate: false()
    
                    ),
    
    
                  ))
                  
                }
              ),
             
             
              
            }
          ),
          gridPlusLayout(
            label: " ",
            labelPosition: "ABOVE",
            validations: {},
            height: "AUTO",
            rowsValue: rule!MTFT_getTftData(),
            rowsSaveInto: {
              ri!tftRules
            
            },
            primaryKeyFieldName: tostring('recordType!{a335f9cf-6867-4270-aed4-53c7bdcc9404}MTFT Default Rules.fields.{32565a2f-3b42-4ea7-b017-1f042bff8df1}idRule'),
            columnConfigs: {
              textcolconfig(
                field: "idRule",
                title: "Rule",
                linkConfig: Null,
                relationshipName: null,
                validator: null,
                readOnly: true,
                colWidth: 10
              ),
              dropdowncolconfig(
                field: tostring('recordType!{a335f9cf-6867-4270-aed4-53c7bdcc9404}MTFT Default Rules.fields.{3d15dc17-a294-4c02-aee1-087a2fca5a14}structureType'),
                source: local!uniqueStructuretype,
                strict: true,
                filter: true,
                title: "Structure Type",
                relationshipName: null,
                validator: null,
                /*validator(*/
                  /*name: "Structure type should not be empty ",*/
    /*             */
                  /*operator:"isNotNullOrEmpty",*/
                  /*value: null*/
                /*),*/
                readOnly: false,
                colWidth: 250
              ),
              dropdowncolconfig(
                field: "coverageType",
                source: local!uniqueCoverageType,
                strict: true,
                filter: true,
                title: "Coverage Type",
                relationshipName: null,
                validator: null,
                readOnly: false,
                colWidth: 250
              ),
              dropdowncolconfig(
                field: "region",
                source: local!uniqueRegion,
                strict: true,
                filter: true,
                title: "Region",
                relationshipName: null,
                validator: null,
                readOnly: false,
                colWidth: 250
              ),
              textcolconfig(
                field: "pmGoConstruction",
                title: "PMGo Construction",
                linkConfig: Null,
                relationshipName: null,
                validator: null,
                readOnly: false,
                colWidth: 300
              ),
              textcolconfig(
                field: "materialRequired",
                title: "Material Required",
                linkConfig: Null,
                relationshipName: null,
                validator:  null,
    
                readOnly: false,
                colWidth: 300
              ),
              textcolconfig(
                field: tostring('recordType!{a335f9cf-6867-4270-aed4-53c7bdcc9404}MTFT Default Rules.fields.{cdf0e62d-2b2a-44a4-a973-fb165bdc031a}constructionStart'),
                title: "Construction  Start",
                linkConfig: Null,
                relationshipName: null,
                validator: null,
                readOnly: false,
                colWidth: 300
              ),
              textcolconfig(
                field: "constructionEnd",
                title: "Construction End",
                linkConfig: Null,
                relationshipName: null,
                validator: null,
                readOnly: false,
                colWidth: 300
              ),
              textcolconfig(
                field: "atpReady",
                title: "ATP Ready",
                linkConfig: Null,
                relationshipName: null,
                validator: null,
                readOnly: false,
                colWidth: 300
              ),
              textcolconfig(
                field: "atpComplete",
                title: "ATP Complete",
                linkConfig: Null,
                relationshipName: null,
                validator: null,
                readOnly: false,
                colWidth: 300
              ),
              textcolconfig(
                field: "forecastedOnAir",
                title: "Site OnAir",
                linkConfig: Null,
                relationshipName: null,
                validator: null,
                readOnly: false,
                colWidth: 300
              )
            },
            changeDataValue: local!changeData,
            changeDataSaveInto: {
              local!changeData,
              a!save(local!isDisable, true)
              
            },
            deleteDataValue: local!deletedData ,
            deleteDataSaveInto: local!deletedData,
            readOnly: null,
            rowHeaders: true,
            hiddenFields: null,
            showPrimaryKey: false
          )
        },
        
      )
      
    )