<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.appian.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SAIL to mimic grid column definition in interface designer</title><link>https://community.appian.com/discussions/f/user-interface/33961/sail-to-mimic-grid-column-definition-in-interface-designer</link><description>My use case is to have the ability to add, remove and reorder items in a list similar to what we see for defining the columns in a grid in interface designer. 
 
 
 
 Is something like this possible using SAIL? I would think so, but having a hard time</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: SAIL to mimic grid column definition in interface designer</title><link>https://community.appian.com/thread/129139?ContentTypeID=1</link><pubDate>Wed, 07 Feb 2024 16:51:03 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:c57d3d29-f071-4c85-83af-043a0edad6f0</guid><dc:creator>Abhay Dalsaniya</dc:creator><description>&lt;p&gt;If it is available,&amp;nbsp;will help building the&amp;nbsp;competitive&amp;nbsp;UIs.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAIL to mimic grid column definition in interface designer</title><link>https://community.appian.com/thread/129071?ContentTypeID=1</link><pubDate>Wed, 07 Feb 2024 07:15:20 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:6e7c1a09-4b0b-4968-ae39-5bfb09a06ebc</guid><dc:creator>Stefan Helzle</dc:creator><description>&lt;p&gt;Is that something we really need?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAIL to mimic grid column definition in interface designer</title><link>https://community.appian.com/thread/129068?ContentTypeID=1</link><pubDate>Wed, 07 Feb 2024 06:16:07 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:627820ce-1bbc-4a1f-ae2e-b21c1db1e6fa</guid><dc:creator>Konduru Chaitanya</dc:creator><description>&lt;p&gt;&lt;a href="/members/dylanf3612"&gt;dylanfulmer&lt;/a&gt;&amp;nbsp; If the answer has helped you please verify the answers that were helpful and mark the thread as closed.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAIL to mimic grid column definition in interface designer</title><link>https://community.appian.com/thread/129044?ContentTypeID=1</link><pubDate>Tue, 06 Feb 2024 19:25:32 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:262700ef-395c-4431-b825-6baed9eea6ff</guid><dc:creator>Abhay Dalsaniya</dc:creator><description>&lt;p&gt;Any idea when Appian will start supporting pop-ups and drag and drop ability.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAIL to mimic grid column definition in interface designer</title><link>https://community.appian.com/thread/128982?ContentTypeID=1</link><pubDate>Tue, 06 Feb 2024 07:22:35 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:d17680a7-01e0-46f2-bee0-7bea9c7275dc</guid><dc:creator>Stefan Helzle</dc:creator><description>&lt;p&gt;Find examples in the documentation.&lt;/p&gt;
&lt;p&gt;&lt;a id="" href="https://docs.appian.com/suite/help/23.4/recipe-add-edit-and-remove-data-in-an-inline-editable-grid.html"&gt;https://docs.appian.com/suite/help/23.4/recipe-add-edit-and-remove-data-in-an-inline-editable-grid.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The only thing is, that Appian does not support this popup-style.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAIL to mimic grid column definition in interface designer</title><link>https://community.appian.com/thread/128979?ContentTypeID=1</link><pubDate>Tue, 06 Feb 2024 06:11:28 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:9bfdc02c-b4e0-4376-a585-83a0b5c15c34</guid><dc:creator>Konduru Chaitanya</dc:creator><description>&lt;p&gt;Hello&amp;nbsp;&lt;a href="/members/dylanf3612"&gt;dylanfulmer&lt;/a&gt;&amp;nbsp;&lt;br /&gt;I guess, It can be done. You will have to play around with icons and dynamic links.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Below is a code that I have tried and is working fine. You can try updating id according to your requirement and check if it helps. Also ensure you follow best practices. I have missed few as I wrote the below as an example to show that it is doable in Appian.&lt;br /&gt;&lt;br /&gt;But what is the requirement? Displaying data will be a little complicated and you will have to figure out. I cannot do the part for data as I am using map. Are you planning to use this for an editable grid?&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;a!localVariables(
  local!columns: {
    a!map(name: &amp;quot;ID&amp;quot;, index: 1),
    a!map(name: &amp;quot;Name&amp;quot;, index: 2),
    a!map(name: &amp;quot;Age&amp;quot;, index: 3),
    a!map(name: &amp;quot;Gender&amp;quot;, index: 4),

  },
  local!updatedorder: a!refreshVariable(
    value: todatasubset(
      local!columns,
      a!pagingInfo(
        startIndex: 1,
        batchSize: - 1,
        sort: a!sortInfo(field: &amp;quot;index&amp;quot;, ascending: true)
      )
    ).data,
    refreshOnReferencedVarChange: true
  ),
  a!columnsLayout(
    columns: {
      a!columnLayout(
        width: &amp;quot;WIDE_PLUS&amp;quot;,
        contents: {
          a!gridField(
            label: &amp;quot;Read-only Grid&amp;quot;,
            labelPosition: &amp;quot;ABOVE&amp;quot;,
            data: local!updatedorder,
            columns: {
              a!forEach(
                items: local!updatedorder,
                expression: a!gridColumn(label: fv!item.name, value: {})
              )
            },
            validations: {}
          )
        }
      ),
      a!columnLayout(

        contents: {
          a!cardLayout(
            contents: {
              a!forEach(
                items: local!updatedorder,
                expression: a!localVariables(
                  local!isEditable: false,
                  a!cardLayout(
                    shape: &amp;quot;ROUNDED&amp;quot;,
                    showShadow: true(),
                    contents: a!columnsLayout(
                      showDividers: true,
                      columns: {
                        a!columnLayout(
                          contents: if(
                            local!isEditable,
                            a!textField(
                              label: &amp;quot;Column Name &amp;quot;&amp;amp;fv!index,
                              value: fv!item.name,
                              saveInto: {
                                {
                                  local!columns[fv!index].name,
                                }
                              }
                            ),
                            a!richTextDisplayField(
                              label: &amp;quot;Column Name&amp;quot;&amp;amp;fv!index,
                              value: a!richTextItem(
                                text: fv!item.name,
                              )
                            )
                          )
                        ),
                        a!columnLayout(
                          contents: a!richTextDisplayField(
                            value: {
                              a!richTextIcon(
                                icon: &amp;quot;arrow-circle-up&amp;quot;,
                                link: if(
                                  fv!isFirst,
                                  {},
                                  a!dynamicLink(
                                    value: fv!item.index - 1,
                                    saveInto: {
                                      local!columns[fv!index].index,
                                      a!save(
                                        local!columns[fv!index - 1],
                                        a!update(
                                          local!columns[fv!index - 1],
                                          &amp;quot;index&amp;quot;,
                                          tointeger(
                                            index(local!columns.index, fv!index - 1, null)
                                          ) + 1
                                        )
                                      )
                                    }
                                  )
                                )
                              ),
                              char(09),
                              a!richTextIcon(
                                icon: &amp;quot;arrow-circle-down&amp;quot;,
                                link: if(
                                  fv!isLast,
                                  {},
                                  a!dynamicLink(
                                    value: fv!item.index + 1,
                                    saveInto: {
                                      local!columns[fv!index].index,
                                      a!save(
                                        local!columns[fv!index + 1].index,
                                        tointeger(
                                          index(local!columns.index, fv!index + 1, null)
                                        ) - 1
                                      )
                                    }
                                  )
                                )
                              ),
                              char(09),
                              a!richTextIcon(
                                icon: if(local!isEditable, &amp;quot;check-circle&amp;quot;, &amp;quot;pen&amp;quot;),
                                link: a!dynamicLink(value: if(local!isEditable, false, true),saveInto: local!isEditable)
                              ),
                              char(09),
                              a!richTextIcon(
                                icon: &amp;quot;times-circle&amp;quot;,
                                color: &amp;quot;NEGATIVE&amp;quot;,
                                link: a!dynamicLink(
                                  saveInto: a!save(
                                    local!columns,
                                    remove(
                                      local!columns,
                                      fv!index
                                    )
                                  )
                                )
                              )
                            }
                          ),
                        )
                      }
                    )
                  )
                )
              ),
              a!buttonArrayLayout(
                align: &amp;quot;CENTER&amp;quot;,
                buttons: a!buttonWidget(
                  width: &amp;quot;FILL&amp;quot;,
                  label: &amp;quot;Add Column&amp;quot;,
                  icon: &amp;quot;plus-circle&amp;quot;,
                  saveInto: a!save(
                    local!columns,
                    append(
                      local!columns,
                      a!map(
                        name:&amp;quot;Column &amp;quot;&amp;amp;length(local!columns)+1,
                        index:length(local!columns)+1
                      ),
                    )
                  )
                )
              )
            }
          )
        }
      )
    }
  )
)&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:133px;max-width:617px;" alt=" " height="133" src="/resized-image/__size/1234x266/__key/communityserver-discussions-components-files/13/pastedimage1707203294609v1.png" width="617" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>