PHP Classes

PHP Data Grid View: Display data in an editable grid on a Web page

Recommend this page to a friend!
  Info   View files Example   View files View files (105)   DownloadInstall with Composer Download .zip   Reputation   Support forum (1)   Blog    
Ratings Unique User Downloads Download Rankings
Not enough user ratingsTotal: 143 All time: 9,161 This week: 85Up
Version License PHP version Categories
mesour-datagrid 1.0.0Custom (specified...5HTML, PHP 5, Databases, Files and Fol...
Description 

Author

This package can display data in an editable grid on a Web page.

It can take the path of PHP script that can be executed to set a data variable that contains the data to be displayed in data grid using HTML tables.

The class can also render the data grid table with the possibility to display controls that allow editing the grid values, create sub-grids, sorting data dynamically, and export grid data to CSV files for download.

Picture of Matous Nemec
Name: Matous Nemec <contact>
Classes: 8 packages by
Country: Czech Republic Czech Republic
Age: ???
All time rank: 297932 in Czech Republic Czech Republic
Week rank: 420 Up4 in Czech Republic Czech Republic Up
Innovation award
Innovation award
Nominee: 2x

Example

<?php

define
('SRC_DIR', __DIR__ . '/../src/');

require_once
__DIR__ . '/../vendor/autoload.php';

@
mkdir(__DIR__ . '/log');
@
mkdir(__DIR__ . '/temp');

\
Tracy\Debugger::enable(\Tracy\Debugger::DEVELOPMENT, __DIR__ . '/log');
\
Tracy\Debugger::$strictMode = true;

$loader = new Nette\Loaders\RobotLoader;
$loader->addDirectory(__DIR__ . '/../src');
$loader->setCacheStorage(new Nette\Caching\Storages\FileStorage(__DIR__ . '/temp'));
$loader->register();

?>

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"
      integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">

<link rel="stylesheet" href="../node_modules/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css">

<link rel="stylesheet" href="../node_modules/mesour-datagrid/dist/css/mesour.datagrid.min.css">

<style>
    .input-group-btn:last-child > .btn[data-simple-filter] {
        padding: 9px;
    }
</style>

<hr>

<div class="row col-lg-12" style="padding-left: 50px;">
    <h2>Basic functionality</h2>

    <hr>

    <?php

    $time_start
= microtime(true);

   
$sourceFile = 'nette_source';
   
$primaryKey = 'userId';

   
$application = new \Mesour\UI\Application('mesourapp');

   
$application->getConfiguration()
        ->
setTempDir(__DIR__ . '/temp');

   
$application->setRequest($_REQUEST);

   
$application->getUser()->setRoles('registered');

   
$auth = $application->getAuthorizator();

   
$auth->addRole('guest');
   
$auth->addRole('registered', 'guest');

   
$auth->addResource('menu');

   
$auth->allow('guest', 'menu', ['first', 'second']);
   
$auth->allow('registered', 'menu');
   
$auth->deny('registered', 'menu', 'second');

   
$grid = new \Mesour\UI\DataGrid('basicDataGrid', $application);

   
$wrapper = $grid->getWrapperPrototype();

   
$wrapper->class('my-class');

   
// TRUE = append
   
$wrapper->class('my-next-class', true);

   
/** @var \Mesour\DataGrid\Sources\IGridSource $source */
   
$source = require_once __DIR__ . '/sources/' . $sourceFile . '.php';

   
$dataStructure = $source->getDataStructure();

   
$dataStructure->renameColumn('user_addresses', 'addresses');
   
$dataStructure->renameColumn('groups', 'group');
   
$dataStructure->renameColumn('wallets', 'wallet');

   
/** @var \Mesour\Sources\Structures\Columns\ManyToManyColumnStructure $companiesColumn */
   
$companiesColumn = $dataStructure->getColumn('companies');
   
$companiesColumn->setPattern('{name}');

   
/** @var \Mesour\Sources\Structures\Columns\OneToManyColumnStructure $addressesColumn */
   
$addressesColumn = $dataStructure->getColumn('addresses');
   
$addressesColumn->setPattern('{street}, {zip} {city}, {country}');

   
/** @var \Mesour\Sources\Structures\Columns\ManyToOneColumnStructure $groupColumn */
   
$groupColumn = $dataStructure->getColumn('group');
   
$groupColumn->setPattern('{name} ({type})');

   
/** @var \Mesour\Sources\Structures\Columns\OneToOneColumnStructure $walletColumn */
   
$walletColumn = $dataStructure->getColumn('wallet');
   
$walletColumn->setPattern('{amount}');

   
$grid->setSource($source);

   
$pager = $grid->enablePager(8);

   
//$filter = $grid->enableFilter();
   
$filter = $grid->enableSimpleFilter();

   
$selection = $grid->enableRowSelection();

   
$selection = $selection->getLinks();

   
$selection->addHeader('Active');

   
$selection->addLink('Active')// add selection link
   
->onCall[] = function () {
       
dump('ActivateSelected', func_get_args());
    };

   
$selection->addLink('Unactive')
        ->
setAjax(false)// disable AJAX
       
->onCall[] = function () {
       
dump('InactivateSelected', func_get_args());
    };

   
$selection->addDivider();

   
$selection->addLink('Delete')
        ->
setConfirm('Really delete all selected users?')// set confirm text
       
->onCall[] = function () {
       
dump('DeleteSelected', func_get_args());
    };

   
// EDITABLE

   
$editable = $grid->enableEditable();

   
$editableStructure = $editable->getDataStructure();

   
$editableStructure->addOneToOne('wallet', 'Wallet')
        ->
enableCreateNewRow();

   
$editableStructure->addManyToOne('group', 'Groups')
        ->
enableEditCurrentRow()
        ->
enableCreateNewRow()
        ->
setNullable();

   
$editableStructure->addOneToMany('addresses', 'Addresses')
        ->
enableCreateNewRow()
        ->
enableRemoveRow();

   
$editableStructure->addManyToMany('companies', 'Companies')
        ->
enableAttachRow()
        ->
enableCreateNewRow()
        ->
enableRemoveRow();

   
$companyStructure = $editableStructure->getOrCreateElement('companies', 'id');
   
$companyStructure->addText('name', 'Name');
   
$companyStructure->addNumber('reg_num', 'Reg. number');
   
$companyStructure->addBool('verified', 'Verified');

   
$walletStructure = $editableStructure->getOrCreateElement('wallets', 'id');
   
$walletStructure->addNumber('amount', 'Amount')
        ->
setDecimals(2)
        ->
setThousandSeparator('.')
        ->
setDecimalPoint(',');
   
$walletStructure->addEnum('currency', 'Currency')
        ->
addValue('CZK', 'CZK')
        ->
addValue('EUR', 'EUR');

   
$groupsStructure = $editableStructure->getOrCreateElement('groups', 'id');
   
$groupsStructure->addText('name', 'Name');
   
$groupsStructure->addEnum('type', 'Type')
        ->
setNullable()
        ->
addValue('first', 'First')
        ->
addValue('second', 'Second');
   
$groupsStructure->addDate('date', 'Date');
   
$groupsStructure->addNumber('members', 'Members');

   
// / EDITABLE

   
$grid->enableSortable('sort');

   
$status = $grid->addStatus('action', 'S')
        ->
setPermission('menu', 'second');

   
$status->addButton('active')
        ->
setStatus(1, 'Active', 'All active')
        ->
setIcon('check-circle-o')
        ->
setType('success')
        ->
setAttribute('href', '#');

   
$status->addButton('inactive')
        ->
setStatus(0, 'Inactive', 'All inactive')
        ->
setIcon('times-circle-o')
        ->
setType('danger')
        ->
setAttribute('href', '#');

   
$grid->addText('name', 'Name');

   
$grid->addText('email', 'E-mail');

   
$grid->addText('role', 'Role');

   
$grid->addDate('last_login', 'Last login')
        ->
setFormat('Y-m-d');

   
$grid->addText('has_pro', 'Has pro')
        ->
setAttribute('title', 'Has pro')
        ->
setCallback(
            function (\
Mesour\DataGrid\Column\Text $column, $data) {
                if(
$data['has_pro']) {
                    return
'<b style="color:green">Yes</b>';
                }
                return
'<b style="color:red">No</b>';
            }
        );

   
$grid->addText('group', 'Group')
       
//->setFiltering(false)
       
->setAttribute('title', 'Select group');

   
$grid->addText('wallet', 'Wallet')
       
//->setFiltering(false)
       
->setAttribute('title', 'Wallet');

   
$grid->addText('addresses', 'Addresses')
       
//->setFiltering(false)
   
;

   
$grid->addText('companies', 'Companies')
       
//->setFiltering(false)
   
;

   
$grid->addNumber('amount', 'Amount')
        ->
setUnit('CZK');

   
$time_end = microtime(true);
   
$time = $time_end - $time_start;

    echo
"<hr><b>Execution time (before render): " . number_format($time, 3, ',', ' ') . " seconds</b><hr>";

    echo
$grid->render();

   
$time_end = microtime(true);
   
$time = $time_end - $time_start;

    echo
"<hr><b>Execution time (after render): " . number_format($time, 3, ',', ' ') . " seconds</b><hr>";

   
?>
</div>

<hr>

<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>

<!-- Latest compiled and minified JavaScript -->
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="http://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"
        integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS"
        crossorigin="anonymous"></script>

<script src="../node_modules/eonasdan-bootstrap-datetimepicker/node_modules/moment/min/moment.min.js"></script>
<script src="../node_modules/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js"></script>

<script src="../node_modules/mesour-datagrid/dist/js/mesour.datagrid.js"></script>


Details

Mesour DataGrid

Latest Stable Version

Mesour DataGrid is DataGrid for PHP >= 5.5 with options like to inline edit, export to csv, create sub items, sort data using jQuery.ui.nestedSortable and much more.

Install

  • With Composer

    composer require mesour/datagrid

  • Or download source from GitHub

  Files folder image Files  
File Role Description
Files folder imagedocs (1 file, 1 directory)
Files folder imageexamples (4 files, 1 directory)
Files folder imagesrc (1 directory)
Files folder imagetests (3 files, 1 directory)
Accessible without login Plain text file .travis.yml Data Auxiliary data
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file license.md Lic. License text
Accessible without login Plain text file package.json Data Auxiliary data
Accessible without login Plain text file README.md Doc. Documentation
Accessible without login Plain text file ruleset.xml Data Auxiliary data

  Files folder image Files  /  docs  
File Role Description
Files folder imagecolumn (8 files)
  Accessible without login Plain text file localisation.md Data Auxiliary data

  Files folder image Files  /  docs  /  column  
File Role Description
  Accessible without login Plain text file container.md Data Auxiliary data
  Accessible without login Plain text file date.md Data Auxiliary data
  Accessible without login Plain text file image.md Data Auxiliary data
  Accessible without login Plain text file index.md Data Auxiliary data
  Accessible without login Plain text file number.md Data Auxiliary data
  Accessible without login Plain text file status.md Data Auxiliary data
  Accessible without login Plain text file template.md Data Auxiliary data
  Accessible without login Plain text file text.md Data Auxiliary data

  Files folder image Files  /  examples  
File Role Description
Files folder imagesources (3 files)
  Accessible without login Plain text file basic.php Example Example script
  Accessible without login Plain text file editable.php Example Example script
  Accessible without login Plain text file index.php Example Example script
  Accessible without login Plain text file test.latte Data Auxiliary data

  Files folder image Files  /  examples  /  sources  
File Role Description
  Accessible without login Plain text file array_source.php Example Example script
  Plain text file doctrine_source.php Class Class source
  Accessible without login Plain text file nette_source.php Example Example script

  Files folder image Files  /  src  
File Role Description
Files folder imageMesour (2 directories)

  Files folder image Files  /  src  /  Mesour  
File Role Description
Files folder imageDataGrid (7 files, 4 directories)
Files folder imageUI (1 file)

  Files folder image Files  /  src  /  Mesour  /  DataGrid  
File Role Description
Files folder imageColumn (12 files, 3 directories)
Files folder imageExtensions (3 files, 9 directories)
Files folder imageRenderer (3 files)
Files folder imageSources (4 files)
  Plain text file BaseGrid.php Class Class source
  Plain text file Exceptions.php Class Class source
  Plain text file ExtendedGrid.php Class Class source
  Plain text file ExtensionStorage.php Class Class source
  Plain text file SubItemGrid.php Class Class source
  Plain text file TemplateFile.php Class Class source
  Plain text file TemplateFileTrait.php Class Class source

  Files folder image Files  /  src  /  Mesour  /  DataGrid  /  Column  
File Role Description
Files folder imagecore (11 files)
Files folder imageStatus (3 files)
Files folder imageTemplate (1 file)
  Plain text file Container.php Class Class source
  Plain text file Date.php Class Class source
  Plain text file EmptyData.php Class Class source
  Plain text file Image.php Class Class source
  Plain text file Number.php Class Class source
  Plain text file Selection.php Class Class source
  Plain text file Sortable.php Class Class source
  Plain text file Status.php Class Class source
  Plain text file SubItem.php Class Class source
  Plain text file SubItemButton.php Class Class source
  Plain text file Template.php Class Class source
  Plain text file Text.php Class Class source

  Files folder image Files  /  src  /  Mesour  /  DataGrid  /  Column  /  core  
File Role Description
  Plain text file BaseColumn.php Class Class source
  Plain text file Filtering.php Class Class source
  Plain text file IColumn.php Class Class source
  Plain text file IContainer.php Class Class source
  Plain text file IExportable.php Class Class source
  Plain text file IFiltering.php Class Class source
  Plain text file IInlineEdit.php Class Class source
  Plain text file InlineEdit.php Class Class source
  Plain text file IOrdering.php Class Class source
  Plain text file IPrependedColumn.php Class Class source
  Plain text file Ordering.php Class Class source

  Files folder image Files  /  src  /  Mesour  /  DataGrid  /  Column  /  Status  
File Role Description
  Plain text file IStatusItem.php Class Class source
  Plain text file StatusButton.php Class Class source
  Plain text file StatusDropDown.php Class Class source

  Files folder image Files  /  src  /  Mesour  /  DataGrid  /  Column  /  Template  
File Role Description
  Accessible without login Plain text file Template.latte Data Auxiliary data

  Files folder image Files  /  src  /  Mesour  /  DataGrid  /  Extensions  
File Role Description
Files folder imageEditable (2 files)
Files folder imageExport (2 files)
Files folder imageFilter (2 files)
Files folder imageOrdering (2 files)
Files folder imagePager (2 files)
Files folder imageSelection (4 files)
Files folder imageSimpleFilter (2 files)
Files folder imageSortable (2 files)
Files folder imageSubItem (2 files, 1 directory)
  Plain text file Base.php Class Class source
  Plain text file IExtension.php Class Class source
  Plain text file IHasColumn.php Class Class source

  Files folder image Files  /  src  /  Mesour  /  DataGrid  /  Extensions  /  Editable  
File Role Description
  Plain text file EditableExtension.php Class Class source
  Plain text file IEditable.php Class Class source

  Files folder image Files  /  src  /  Mesour  /  DataGrid  /  Extensions  /  Export  
File Role Description
  Plain text file ExportExtension.php Class Class source
  Plain text file IExport.php Class Class source

  Files folder image Files  /  src  /  Mesour  /  DataGrid  /  Extensions  /  Filter  
File Role Description
  Plain text file FilterExtension.php Class Class source
  Plain text file IFilter.php Class Class source

  Files folder image Files  /  src  /  Mesour  /  DataGrid  /  Extensions  /  Ordering  
File Role Description
  Plain text file IOrdering.php Class Class source
  Plain text file OrderingExtension.php Class Class source

  Files folder image Files  /  src  /  Mesour  /  DataGrid  /  Extensions  /  Pager  
File Role Description
  Plain text file IPager.php Class Class source
  Plain text file PagerExtension.php Class Class source

  Files folder image Files  /  src  /  Mesour  /  DataGrid  /  Extensions  /  Selection  
File Role Description
  Plain text file ISelection.php Class Class source
  Plain text file Link.php Class Class source
  Plain text file Links.php Class Class source
  Plain text file SelectionExtension.php Class Class source

  Files folder image Files  /  src  /  Mesour  /  DataGrid  /  Extensions  /  SimpleFilter  
File Role Description
  Plain text file ISimpleFilter.php Class Class source
  Plain text file SimpleFilterExtension.php Class Class source

  Files folder image Files  /  src  /  Mesour  /  DataGrid  /  Extensions  /  Sortable  
File Role Description
  Plain text file ISortable.php Class Class source
  Plain text file SortableExtension.php Class Class source

  Files folder image Files  /  src  /  Mesour  /  DataGrid  /  Extensions  /  SubItem  
File Role Description
Files folder imageItems (6 files)
  Plain text file ISubItem.php Class Class source
  Plain text file SubItemExtension.php Class Class source

  Files folder image Files  /  src  /  Mesour  /  DataGrid  /  Extensions  /  SubItem  /  Items  
File Role Description
  Plain text file CallbackItem.php Class Class source
  Plain text file ComponentItem.php Class Class source
  Plain text file GridItem.php Class Class source
  Plain text file Item.php Class Class source
  Accessible without login Plain text file Template.latte Data Auxiliary data
  Plain text file TemplateItem.php Class Class source

  Files folder image Files  /  src  /  Mesour  /  DataGrid  /  Renderer  
File Role Description
  Plain text file GridListRenderer.php Class Class source
  Plain text file GridRenderer.php Class Class source
  Plain text file IGridRenderer.php Class Class source

  Files folder image Files  /  src  /  Mesour  /  DataGrid  /  Sources  
File Role Description
  Plain text file ArrayGridSource.php Class Class source
  Plain text file DoctrineGridSource.php Class Class source
  Plain text file IGridSource.php Class Class source
  Plain text file NetteDbGridSource.php Class Class source

  Files folder image Files  /  src  /  Mesour  /  UI  
File Role Description
  Plain text file DataGrid.php Class Class source

  Files folder image Files  /  tests  
File Role Description
Files folder imageMesour (1 directory)
  Accessible without login Plain text file bootstrap.php Example Example script
  Accessible without login Plain text file config.php Aux. Auxiliary script
  Accessible without login Plain text file php.ini Data Auxiliary data

  Files folder image Files  /  tests  /  Mesour  
File Role Description
Files folder imageDataGridTests (1 directory)

  Files folder image Files  /  tests  /  Mesour  /  DataGridTests  
File Role Description
Files folder imageSources (7 files, 1 directory)

  Files folder image Files  /  tests  /  Mesour  /  DataGridTests  /  Sources  
File Role Description
Files folder imageoutput (2 files)
  Plain text file ArrayGridSourceTest.phpt Class Class source
  Plain text file BaseArrayGridSourceTest.php Class Class source
  Plain text file BaseDoctrineGridSourceTest.php Class Class source
  Plain text file BaseNetteDbGridSourceTest.php Class Class source
  Plain text file DataSourceChecker.php Class Class source
  Plain text file DoctrineGridSourceTest.phpt Class Class source
  Plain text file NetteDbGridSourceTest.phpt Class Class source

  Files folder image Files  /  tests  /  Mesour  /  DataGridTests  /  Sources  /  output  
File Role Description
  Accessible without login Plain text file ArrayGridSourceTest.actual Data Auxiliary data
  Accessible without login Plain text file ArrayGridSourceTest.expected Data Auxiliary data

 Version Control Unique User Downloads Download Rankings  
 100%
Total:143
This week:0
All time:9,161
This week:85Up
User Comments (1)
It seems very useful for data grid view.
2 years ago (Naveen Gautam)
80%StarStarStarStarStar