DataTable
Extends:
DataTable component enables fetching data using predefined function and showing tabular data in a simple manner.
Features
- data pagination
 - selectable rows
 - expandable rows
 - data sorting by columns
 
Access
Stage.Basic.DataTable
Usage
DataTable with pagination

this.props = {
     fetchData: ...
     data: {
         items: [
             {
                 id: ...,
                 blueprint_id: ...,
                 created_at: ...,
                 isSelected: ...
             }
             ...
         ],
         total: ...
     },
     onSelectDeployment: ...
}
<DataTable fetchData={this.props.fetchData}
           totalSize={this.props.data.total}
           pageSize={this.props.widget.configuration.pageSize}
           selectable={true}
           className="deploymentTable">
     <DataTable.Column label="Name" name="id" width="25%"/>
     <DataTable.Column label="Blueprint" name="blueprint_id" width="50%"/>
     <DataTable.Column label="Created" name="created_at" width="25%"/>
     {
         this.props.data.items.map((item)=>{
             return (
                 <DataTable.Row key={item.id} selected={item.isSelected} onClick={()=>this.props.onSelectDeployment(item)}>
                     <DataTable.Data><a className='deploymentName' href="javascript:void(0)">{item.id}</a></DataTable.Data>
                     <DataTable.Data>{item.blueprint_id}</DataTable.Data>
                     <DataTable.Data>{item.created_at}</DataTable.Data>
                 </DataTable.Row>
             );
         })
     }
</DataTable>
DataTable with action bar

<DataTable fetchData={this.props.fetchGridData}
     totalSize={this.props.data.total}
     pageSize={this.props.widget.configuration.pageSize}
     sortColumn={this.props.widget.configuration.sortColumn}
     sortAscending={this.props.widget.configuration.sortAscending}
     selectable={true}>
     <DataTable.Column label="Name" name="id" width="30%"/>
     <DataTable.Column label="Created" name="created_at" width="15%"/>
     <DataTable.Column label="Updated" name="updated_at" width="15%"/>
     <DataTable.Column label="Creator" name='created_by' width="15%"/>
     <DataTable.Column label="# Deployments" width="15%"/>
     <DataTable.Column width="10%"/>
     {
         this.props.data.items.map((item)=>{
             return (
                 <DataTable.Row key={item.id} selected={item.isSelected} onClick={()=>this.props.onSelectBlueprint(item)}>
                     <DataTable.Data>{item.created_at}</DataTable.Data>
                     <DataTable.Data>{item.updated_at}</DataTable.Data>
                     <DataTable.Data>{item.created_by}</DataTable.Data>
                     <DataTable.Data><div className="ui green horizontal label">{item.depCount}</div></DataTable.Data>
                     <DataTable.Data className="center aligned rowActions">
                         <i className="rocket icon link bordered" title="Create deployment" onClick={(event)=>{event.stopPropagation();this.props.onCreateDeployment(item)}}></i>
                         <i className="trash icon link bordered" title="Delete blueprint" onClick={(event)=>{event.stopPropagation();this.props.onDeleteBlueprint(item)}}></i>
                     </DataTable.Data>
                 </DataTable.Row>
             );
         })
     }
     <DataTable.Action>
         <UploadModal widget={this.props.widget} data={this.props.data} toolbox={this.props.toolbox}/>
     </DataTable.Action>
 </DataTable>
DataTable with expandable row and without pagination

<DataTable selectable={true}>
     <DataTable.Column label="Name" name="id" width="40%"/>
     <DataTable.Column label="Date" name="date" width="30%"/>
     <DataTable.Column width="30%"/>
     <DataTable.Row key="drupal" selected={false} onClick={()=>this.onRowClick(item)}>
         <DataTable.Data><a href="javascript:void(0)">Drupal application</a></DataTable.Data>
         <DataTable.Data>2016-03-04</DataTable.Data>
         <DataTable.Data>description for portal</DataTable.Data>
     </DataTable.Row>
     <DataTable.Row key="wordpress" selected={false} onClick={()=>this.onRowClick(item)}>
         <DataTable.Data><a href="javascript:void(0)">Wordpress blog</a></DataTable.Data>
         <DataTable.Data>2016-01-05</DataTable.Data>
         <DataTable.Data>description for blog</DataTable.Data>
     </DataTable.Row>
     <DataTable.Row key="joomla" selected={false} onClick={()=>this.onRowClick(item)}>
         <DataTable.Data><a href="javascript:void(0)">Joomla website</a></DataTable.Data>
         <DataTable.Data>2015-08-14</DataTable.Data>
         <DataTable.Data>description for website</DataTable.Data>
     </DataTable.Row>
     <DataTable.RowExpandable key="prestashop" expanded={true}>
         <DataTable.Row key="prestashop" selected={true} onClick={()=>this.onRowClick(item)}>
             <DataTable.Data><a href="javascript:void(0)">Prestashop store</a></DataTable.Data>
             <DataTable.Data>2017-01-05</DataTable.Data>
             <DataTable.Data>description for e-commerce solution</DataTable.Data>
         </DataTable.Row>
         <DataTable.DataExpandable>
             additional info when row becomes expanded
         </DataTable.DataExpandable>
     </DataTable.RowExpandable>
</DataTable>
No data available if total size is 0 or noDataAvailable prop is set

<DataTable noDataAvailable={this.props.data.items.length == 0}>
     <DataTable.Column label="Name" name="id" width="25%"/>
     <DataTable.Column label="Blueprint" name="blueprint_id" width="50%"/>
     <DataTable.Column label="Created" name="created_at" width="25%"/>
     {
         this.props.data.items.map((item)=>{
             return (
                 <DataTable.Row key={item.id} selected={item.isSelected} onClick={()=>this.props.onSelectDeployment(item)}>
                     <DataTable.Data><a className='deploymentName' href="javascript:void(0)">{item.id}</a></DataTable.Data>
                     <DataTable.Data>{item.blueprint_id}</DataTable.Data>
                     <DataTable.Data>{item.created_at}</DataTable.Data>
                 </DataTable.Row>
             );
         })
     }
</DataTable>
Show search field

<DataTable searchable>
     ...
</DataTable>
Static Member Summary
| Static Public Members | ||
| public static | 
       Action: * Table action, see TableAction  | 
    |
| public static | 
       Column: * Header column, see TableColumn  | 
    |
| public static | 
       Data: * Data column, see TableDataCell  | 
    |
| public static | 
      
       Expandable data, see TableDataExpandable  | 
    |
| public static | 
       Filter: * Table filter, see TableFilter  | 
    |
| public static | 
       Row: * Data row, see TableRow  | 
    |
| public static | 
      
       Expandable row, see TableRowExpandable  | 
    |
| public static | 
       propTypes: *  | 
    |
Static Public Members
public static propTypes: * source
Properties:
| Name | Type | Attribute | Description | 
| children | object[] | table content  | 
    |
| fetchData | Function | 
  | 
      used to fetch table data  | 
    
| totalSize | number | 
  | 
      total number of rows in table, if not specified pagination will not be set. It is used to calculate pagination pages.  | 
    
| fetchSize | Function | 
  | 
      if total number is unknown size of fetched data can be provided. Pagination pages will be added dynamically until fetchSize is not equal to page size  | 
    
| pageSize | number | 
  | 
      number of displayed rows on page  | 
    
| sortColumn | string | 
  | 
      column name used for data sorting  | 
    
| sortAscending | string | 
  | 
      true for ascending sort, false for descending sort  | 
    
| searchable | boolean | 
  | 
      if true filtering and searching input to be added  | 
    
| selectable | boolean | 
  | 
      if true row can be selected and highlighted  | 
    
| className | string | 
  | 
      name of the style class to be added  | 
    
| noDataAvailable | boolean | 
  | 
      if true no data available message is shown  | 
    
| sizeMultiplier | number | 
  | 
      param related to pagination. List of page sizes is generated as multiplication of basic fixed values [1, 2, 3, 5, 10] by this param  | 
    
  Manual
  Reference
  Source
  
