Grid - AppDaddy-Software-Solutions-Inc/framework-markup-language GitHub Wiki

<GRID/> : <BOX/>

The <GRID/> widget is an adaptive layout widget made up of one or more grid <ITEM/>'s. Grids dynamically position their child <ITEM/>'s based on available space.

A grid can be either static or dynamic.

Static grids define all their child <ITEM/>'s.

Dynamic grids are created by defining a single prototype <ITEM/> and using the data attribute to tie it to a valid data source. An <ITEM/> is automatically created for each row in the data source using the prototype.

The height (for vertically scrolling grids) and width (for horizontally scrolling grids) is required on the <ITEM/> and must be smaller than the minimum screen size.

Attributes

Name Type Default Description Req
direction string vertical Direction of grid list. Values are "vertical" or "horizontal"
datasource string The id of a valid data source. Used for dynamic grid creation.
scrollshadows bool false Show/Hide scroll shadows

Properties

Name Values Default Description
selected The data element of the selected <ITEM/>. This can be used in data binding using {selected.property} where property is the name of the field in the corresponding record

Methods

Name Description
export() Exports the grids data to a .csv formatted file
select(index) Selects the item at the specified index
deselect(index) Deselects the item at the specified index
clear() deselects any/all selected items
insert(data, index) Inserts a new item at the specified index. If index is not specified, the item is inserted in the first position. New items are created as a copy of the first item (the prototype) using the supplied data. The data value must be a valid json or xml string. This data is automatically added to the data source.
delete(index) Deletes the item at the specified index, fires the ondelete event handler of the item (if specified) and removes the corresponding item from the data source.
move(indexFrom, indexTo) Moves the item at position indexFrom to position indexTo. The associated item in the data source is also moved
forEach(eventString) Executes the event string defined in eventString for each item in the grid.
scroll(pixels) Scrolls the list +/- pixels specified in the direction of the primary axis
scrollTo(id, position) Scrolls to the item with the specified id. The position parameter is optional and can be be either top, bottom, start or end.
Note: This method does not function if the grid contains variable size items in the direction of scrolling

Examples

Example #1 : a simple static grid

img

<FML>
    <GRID>
        <ITEM id="itm"  width="200" height="200">
            <BOX width="192" height="192" center="true" elevation="3" radius="6" color="={itm.selected} ? 'green' : 'white'">
                <TEXT size="48" label="A" />
            </BOX>
        </ITEM>
        <ITEM id="itm" width="200" height="200">
            <BOX width="192" height="192" center="true" elevation="3" radius="6" color="={itm.selected} ? 'green' : 'white'">
                <TEXT size="48" label="B" />
            </BOX>
        </ITEM>
        <ITEM id="itm" width="200" height="200">
            <BOX width="192" height="192" center="true" elevation="3" radius="6" color="={itm.selected} ? 'green' : 'white'">
                <TEXT size="48" label="C" />
            </BOX>
        </ITEM>
        <ITEM id="itm" width="200" height="200">
            <BOX width="192" height="192" center="true" elevation="3" radius="6" color="={itm.selected} ? 'green' : 'white'">
                <TEXT size="48" label="D" />
            </BOX>
        </ITEM>
        <ITEM id="itm" width="200" height="200">
            <BOX width="192" height="192" center="true" elevation="3" radius="6" color="={itm.selected} ? 'green' : 'white'">
                <TEXT size="48" label="E" />
            </BOX>
        </ITEM>
        <ITEM id="itm" width="200" height="200">
            <BOX width="192" height="192" center="true" elevation="3" radius="6" color="={itm.selected} ? 'green' : 'white'">
                <TEXT size="48" label="F" />
            </BOX>
        </ITEM>
        <ITEM id="itm" width="200" height="200">
            <BOX width="192" height="192" center="true" elevation="3" radius="6" color="={itm.selected} ? 'green' : 'white'">
                <TEXT size="48" label="G" />
            </BOX>
        </ITEM>
        <ITEM id="itm" width="200" height="200">
            <BOX width="192" height="192" center="true" elevation="3" radius="6" color="={itm.selected} ? 'green' : 'white'">
                <TEXT size="48" label="H" />
            </BOX>
        </ITEM>
    </GRID>
</FML>

logo See it in Action

Example #2 : a dynamic grid tied to a data source

img

<FML>
  <TESTDATA id="USER"/>
  <BOX color="{THEME.surface},{THEME.surfacevariant}">
    <GRID datasource="USER" direction="vertical">
      <ITEM width="250" height="90" layout="col" center="true" elevation="0.1" radius="3" color="={this.selected} ? 'lightgreen' : {THEME.oninversesurface}" pad="10" margin="5" opacity="0.8">
            <TEXT size="12" label="{data.first} {data.last}" color="{THEME.onsurface}" />
            <TEXT size="12" label=" Age {data.age}" color="{THEME.onsurface}" />
            <TEXT size="12" label="Email: {data.email}" color="lightblue" />            
      </ITEM>
    </GRID>
  </BOX>
</FML>

logo See it in Action

Other Widgets You May Find Useful

⚠️ **GitHub.com Fallback** ⚠️