SmartUI::DataTable Class
This is a basic usage of SmartUI's DataTable
class. If you want to know more about the real HTML layout, click here
SmartUI::DataTable($data [, $options = array(), $title = '<h2>DataTable Result Set</h2>']);
Setup
$data = json_decode(file_get_contents(APP_URL."/data/data.json"));
$ui = new SmartUI;
$options = array(
'checkboxes' => true,
'row_details' => '
<div class="alert alert-warning fade in">
<i class="fa-fw fa fa-warning"></i>
<strong>Warning</strong> The ID for {{Name}} is #{{ID}}.
</div>'
);
$dt = $ui->create_datatable($data, $options, '<h2>My Datatable</h2>');
);
Usage
// setup a cell
$dt->cell('Name',
array(
'url' => 'http://myapp.com/?profile={{ID}}' // you get other's cell value using "{{COLUMN_NAME}}"
)
);
$dt->cell('Name', function($row, $value) {
return 'http://myapp.com/?profile='.$row->ID // or use a callback to return "Name" column's custom content
});
// hide a column
$dt->hide('City', true);
// or ...
$dt->hidden(array('City'));
Print HTML!
$dt->print_html();
Print JS!
<script>
<?php
$dt->print_js();
?>
</script>
Property Reference
Below are the list of available properties for the class:
DataTable::cell
array
of specified column name with string
, closure
or array
value
$cell = array(
'COLUMN_NAME' => array(
'icon' => '',
'content' => '',
'color' => '',
'url' => array( // can also be a direct string URL
'href' => '',
'target' => '',
'title' => '',
'attr' => ''
)
)
);
// sample call
$dt->cell(
"Phone" => '{{Name}} - {{Phone}} <span class="label label-success">active</span>'
);
// or..
$dt->cell('Phone', function($row, $value) {
return $row->Name.' - '.$value.' <span class="label label-success">active</span>';
});
DataTable::col
array
of specified column name with string
, closure
or array
value
$col = array(
'COLUMN_NAME' => array( // can also be a closure, but you need to return same array structure. If string, it's default to the 'name' key
'name' => '',
'class' => '',
'attr' => '',
'icon' => '',
'hidden' => false // or true
)
);
// sample call
$dt->col('ID', array(
'name' => 'ID #'
));
// or...
$dt->col('ID', 'ID #');
DataTable::options
array
of options.
$options = array(
"in_widget" => true,
"row_details" => false,
"checkboxes" => false,
"static" => false,
"paginate" => true
);
// sample call
$dt->options('in_widget', true)->options('checkboxes', true);
DataTable::data
array
of object
or array
. This is the main datasource. It's recomended to set this up upon $ui->create_datatable($data);
DataTable::widget
SmartUI::Widget
the main widget container of the table (if $options['in_widget'] == true
). Check out Widget
Class documentation here
DataTable::id
string
of table's id (will create a unique id if not specified)
DataTable::row
array
array of specified row index
with array
, closure
or string
values.
$row = array(2, array(
"hidden" => false,
"checkbox" => true,
"detail" => true,
"class" => "",
"attr" => "",
"content" => true
));
// sample call
$dt->row(2, array(
'checkbox' => false,
'deail' => true
))
// empty a row
$dt->row(3, '');
//hide a row
$dt->row(4, false);
DataTable::hidden
array
of hidden columns
// sample call
$dt->hidden(array('Name', 'Zip'));
DataTable::hide
array
of column names with bool
values
// sample call
$dt->hide('Name', true)->hide('Zip', true)->hide('City', false);
DataTable::js
array
of js custom properties
$js = array(
'properties' => array(),
'oTable' => '', // the oTable var
'custom' => ''
)
// sample call
$dt->js('properties', array(
'fnCreatedRow' => 'function( nRow, aData, iDataIndex ) {
var cell = $("td:eq(7)", nRow);
var city = aData[7];
if ( city == "Abbotsford" || city == "Baranello" ) {
cell.html(city + \' <span class="label label-info">great city</span>\');
}
}'
));
DataTable::sort
array
of specified coumn name to be sorted
$sort = array('COLUMN_NAME', 'asc');
// sample call
$dt->sort('Name', 'asc');