public function create() { if ($this->createdGrid) { throw new InvalidStateException('Grid is still created.'); } $this->createdGrid = $this->grid->create(); return $this; }
public function __construct(ApplicationManager $applicationManager) { $app = $applicationManager->getApplication(); //todo: move to component $grid = new DataGrid('test'); $data = [['id' => '1', 'action' => '0', 'group_id' => '1', 'name' => 'Peter', 'surname' => NULL, 'email' => '*****@*****.**', 'last_login' => '2014-09-01 06:27:32', 'amount' => '1561.456542', 'avatar' => 'avatar/01.png', 'sort' => '100', 'timestamp' => '1418255325'], ['id' => '2', 'action' => '1', 'group_id' => '2', 'name' => 'John', 'surname' => 'Doe', 'email' => '*****@*****.**', 'last_login' => '2014-09-09 13:37:32', 'amount' => '15220.654', 'avatar' => 'avatar/02.png', 'sort' => '160', 'timestamp' => '1418255330'], ['id' => '3', 'action' => '1', 'group_id' => '2', 'name' => 'Claude', 'surname' => 'Graves', 'email' => '*****@*****.**', 'last_login' => '2014-09-02 14:17:32', 'amount' => '9876.465498', 'avatar' => 'avatar/03.png', 'sort' => '180', 'timestamp' => '1418255311'], ['id' => '4', 'action' => '0', 'group_id' => '3', 'name' => 'Stuart', 'surname' => 'Norman', 'email' => '*****@*****.**', 'last_login' => '2014-09-09 18:39:18', 'amount' => '98766.2131', 'avatar' => 'avatar/04.png', 'sort' => '120', 'timestamp' => '1418255328'], ['id' => '5', 'action' => '1', 'group_id' => '1', 'name' => 'Kathy', 'surname' => 'Arnold', 'email' => '*****@*****.**', 'last_login' => '2014-09-07 10:24:07', 'amount' => '456.987', 'avatar' => 'avatar/05.png', 'sort' => '140', 'timestamp' => '1418155313'], ['id' => '6', 'action' => '0', 'group_id' => '3', 'name' => 'Jan', 'surname' => 'Wilson', 'email' => '*****@*****.**', 'last_login' => '2014-09-03 13:15:22', 'amount' => '123', 'avatar' => 'avatar/06.png', 'sort' => '150', 'timestamp' => '1418255318'], ['id' => '7', 'action' => '0', 'group_id' => '1', 'name' => 'Alberta', 'surname' => 'Erickson', 'email' => '*****@*****.**', 'last_login' => '2014-08-06 13:37:17', 'amount' => '98753.654', 'avatar' => 'avatar/07.png', 'sort' => '110', 'timestamp' => '1418255327'], ['id' => '8', 'action' => '1', 'group_id' => '3', 'name' => 'Ada', 'surname' => 'Wells', 'email' => '*****@*****.**', 'last_login' => '2014-08-12 11:25:16', 'amount' => '852.3654', 'avatar' => 'avatar/08.png', 'sort' => '70', 'timestamp' => '1418255332'], ['id' => '9', 'action' => '0', 'group_id' => '2', 'name' => 'Ethel', 'surname' => 'Figueroa', 'email' => '*****@*****.**', 'last_login' => '2014-09-05 10:23:26', 'amount' => '45695.986', 'avatar' => 'avatar/09.png', 'sort' => '20', 'timestamp' => '1418255305'], ['id' => '10', 'action' => '1', 'group_id' => '3', 'name' => 'Ian', 'surname' => 'Goodwin', 'email' => '*****@*****.**', 'last_login' => '2014-09-04 12:26:19', 'amount' => '1236.9852', 'avatar' => 'avatar/10.png', 'sort' => '130', 'timestamp' => '1418255331'], ['id' => '11', 'action' => '1', 'group_id' => '2', 'name' => 'Francis', 'surname' => 'Hayes', 'email' => '*****@*****.**', 'last_login' => '2014-09-03 10:16:17', 'amount' => '5498.345', 'avatar' => 'avatar/11.png', 'sort' => '0', 'timestamp' => '1418255293'], ['id' => '12', 'action' => '0', 'group_id' => '1', 'name' => 'Erma', 'surname' => 'Burns', 'email' => '*****@*****.**', 'last_login' => '2014-07-02 15:42:15', 'amount' => '63287.9852', 'avatar' => 'avatar/12.png', 'sort' => '60', 'timestamp' => '1418255316'], ['id' => '13', 'action' => '1', 'group_id' => '3', 'name' => 'Kristina', 'surname' => 'Jenkins', 'email' => '*****@*****.**', 'last_login' => '2014-08-20 14:39:43', 'amount' => '74523.96549', 'avatar' => 'avatar/13.png', 'sort' => '40', 'timestamp' => '1418255334'], ['id' => '14', 'action' => '0', 'group_id' => '3', 'name' => 'Virgil', 'surname' => 'Hunt', 'email' => '*****@*****.**', 'last_login' => '2014-08-12 16:09:38', 'amount' => '65654.6549', 'avatar' => 'avatar/14.png', 'sort' => '30', 'timestamp' => '1418255276'], ['id' => '15', 'action' => '1', 'group_id' => '1', 'name' => 'Max', 'surname' => 'Martin', 'email' => '*****@*****.**', 'last_login' => '2014-09-01 12:14:20', 'amount' => '541236.5495', 'avatar' => 'avatar/15.png', 'sort' => '170', 'timestamp' => '1418255317'], ['id' => '16', 'action' => '1', 'group_id' => '2', 'name' => 'Melody', 'surname' => 'Manning', 'email' => '*****@*****.**', 'last_login' => '2014-09-02 12:26:20', 'amount' => '9871.216', 'avatar' => 'avatar/16.png', 'sort' => '50', 'timestamp' => '1418255281'], ['id' => '17', 'action' => '1', 'group_id' => '3', 'name' => 'Catherine', 'surname' => 'Todd', 'email' => '*****@*****.**', 'last_login' => '2014-06-11 15:14:39', 'amount' => '100.2', 'avatar' => 'avatar/17.png', 'sort' => '10', 'timestamp' => '1418255313'], ['id' => '18', 'action' => '0', 'group_id' => '1', 'name' => 'Douglas', 'surname' => 'Stanley', 'email' => '*****@*****.**', 'last_login' => '2014-04-16 15:22:18', 'amount' => '900', 'avatar' => 'avatar/18.png', 'sort' => '90', 'timestamp' => '1418255332'], ['id' => '19', 'action' => '0', 'group_id' => '3', 'name' => 'Patti', 'surname' => 'Diaz', 'email' => '*****@*****.**', 'last_login' => '2014-09-11 12:17:16', 'amount' => '1500', 'avatar' => 'avatar/19.png', 'sort' => '80', 'timestamp' => '1418255275'], ['id' => '20', 'action' => '0', 'group_id' => '3', 'name' => 'John', 'surname' => 'Petterson', 'email' => '*****@*****.**', 'last_login' => '2014-10-10 10:10:10', 'amount' => '2500', 'avatar' => 'avatar/20.png', 'sort' => '190', 'timestamp' => '1418255275']]; //create relations $groups = [['id' => '2', 'name' => 'Group 2', 'type' => 'first'], ['id' => '1', 'name' => 'Group 1', 'type' => 'second'], ['id' => '3', 'name' => 'Group 3', 'type' => 'first']]; // create source $source = new \Mesour\DataGrid\Sources\ArrayGridSource('users', 'id', $data, ['group' => $groups]); $groupStructure = $source->addTableToStructure('group', 'id'); $groupStructure->addNumber('id'); $groupStructure->addText('name'); $groupStructure->addEnum('type')->addValue('first')->addValue('second'); $dataStrucutre = $source->getDataStructure(); $source->joinField('group', 'group_id', 'name', 'group_name'); $dataStrucutre->addDate('last_login'); $dataStrucutre->addDate('timestamp'); $dataStrucutre->addManyToOne('group', 'group', 'group_id', '{name} ({type})'); $grid->setSource($source); $app->addComponent($grid); $wrapper = $grid->getWrapperPrototype(); $wrapper->class('my-class'); // TRUE = append $wrapper->class('my-next-class', true); $grid->enablePager(8); $grid->enableFilter(); $selection = $grid->enableRowSelection(); $selectionLinks = $selection->getLinks(); $selectionLinks->addHeader('Active'); $selectionLinks->addLink('Active')->onCall[] = function () { dump('ActivateSelected', func_get_args()); }; $selectionLinks->addLink('Unactive')->setAjax(false)->onCall[] = function () { dump('InactivateSelected', func_get_args()); }; $selectionLinks->addDivider(); $selectionLinks->addLink('Delete')->setConfirm('Really delete all selected users?')->onCall[] = function () { dump('DeleteSelected', func_get_args()); }; $grid->enableSortable('sort'); $grid->enableEditable(); $grid->enableExport(__DIR__ . '/../../../../storage/framework/cache'); $status = $grid->addStatus('action', 'S'); $status->addButton('active')->setStatus(1, 'Active', 'All active')->setIcon('check-circle-o')->setType('success')->setAttribute('href', $status->link('/toActive', ['id' => '{id}'])); $status->addButton('unactive')->setStatus(0, 'Unactive', 'All unactive')->setIcon('times-circle-o')->setType('danger')->setAttribute('href', $status->link('/toUnactive', ['id' => '{id}'])); $grid->addImage('avatar', 'Avatar')->setPreviewPath('preview', __DIR__ . '/../../../../public', __DIR__ . '/../../../../public/')->setMaxHeight(60)->setMaxWidth(60); $grid->addText('name', 'Name'); $grid->addText('email', 'E-mail'); $grid->addText('group', 'Group'); $grid->addNumber('amount', 'Amount')->setUnit('CZK'); $grid->addDate('last_login', 'Last login')->setFormat('Y-m-d - H:i:s'); $container = $grid->addContainer('test_container', 'Actions'); $button = $container->addButton('test_button'); $button->setIcon('pencil')->setType('primary')->setAttribute('title', 'Edit')->setAttribute('href', $button->link('edit!', ['id' => '{id}'])); $dropDown = $container->addDropDown('test_drop_down')->setPullRight()->setAttribute('class', 'dropdown'); $dropDown->addHeader('Test header'); $first = $dropDown->addButton(); $first->setText('First button')->setAttribute('href', $dropDown->link('/someAction', ['id' => '{id}'])); $dropDown->addDivider(); $dropDown->addHeader('Test header 2'); $dropDown->addButton()->setText('Second button')->setConfirm('Test confirm :-)')->setAttribute('href', $dropDown->link('/someAction', ['id' => '{id}'])); $dropDown->addButton()->setText('Third button')->setAttribute('href', $dropDown->link('/someAction', ['id' => '{id}'])); $mainButton = $dropDown->getMainButton(); $mainButton->setText('Actions')->setType('danger'); $this->templateVars['grid'] = $grid->create(); }