Id Name Status Birthday Birthday 2 Age
-
-
87 Fisher Price Bingo Man 26. 1. 1930 26. 1. 1930 94
712 Beautiful Transvestite Machine 10. 2. 1930 10. 2. 1930 94
727 Arrogant Addax 3. 4. 1930 3. 4. 1930 94
968 Disney Night Conflict 11. 4. 1930 11. 4. 1930 94
714 Cute Cormorant 23. 4. 1930 23. 4. 1930 94
680 Amateur Yoga Crisis 2. 5. 1930 2. 5. 1930 94
980 Curious Capybara 5. 5. 1930 5. 5. 1930 93
726 The Great Katana Starring Mickey Mouse 14. 5. 1930 14. 5. 1930 93
504 Final Fantasy Dodgeball in the Salad Kingdom 18. 5. 1930 18. 5. 1930 93
700 Yucky Yacare 2. 6. 1930 2. 6. 1930 93
390 Radical Zamboni Agent 3. 6. 1930 3. 6. 1930 93
978 All-Star Bible Kid 24. 6. 1930 24. 6. 1930 93
763 Doubtful Deer 7. 7. 1930 7. 7. 1930 93
181 Underwater Donkey Princess 11. 7. 1930 11. 7. 1930 93
925 Tame Tern 1. 9. 1930 1. 9. 1930 93
751 Perfect Piranha 27. 9. 1930 27. 9. 1930 93
650 Jittery Jay 14. 10. 1930 14. 10. 1930 93
313 Ashamed Albatross 7. 1. 1931 7. 1. 1931 93
570 Paranoid College Fiesta 17. 1. 1931 17. 1. 1931 93
951 Final Sunshine Dash 8. 2. 1931 8. 2. 1931 93
( Items: 1 - 20 from 1000 )
  See the code below 👇 or see GitHub
public function createComponentGrid(): DataGrid
{
	$grid = new DataGrid();

	$grid->setDataSource($this->dibiConnection->select('*')->from('users'));

	$grid->setItemsPerPageList([20, 50, 100], true);

	$grid->addColumnText('id', 'Id')
		->setFilterText()
		->setExactSearch();

	$grid->addColumnText('name', 'Name')
		->setFilterText();

	$grid->addColumnStatus('status', 'Status')
		->setFilterSelect([
			'' => 'All',
			'active' => 'Active',
			'inactive' => 'Inactive',
			'deleted' => 'Deleted',
		]);

	$grid->addColumnDateTime('birth_date', 'Birthday')
		->setFormat('j. n. Y')
		->setSortable()
		->setFilterDate();

	$grid->addColumnDateTime('birth_date_2', 'Birthday 2', 'birth_date')
		->setFormat('j. n. Y')
		->setSortable()
		->setFilterDateRange();

	$grid->addColumnNumber('age', 'Age')
		->setRenderer(function (Row $row): int {
			return $row['birth_date']->diff(new DateTime())->y;
		})
		->setFilterRange()
		->setCondition(function (Fluent $fluent, ArrayHash $values): void {
			if ((bool) $values['from']) {
				$fluent->where('(YEAR(CURDATE()) - YEAR(birth_date)) >= ?', $values['from']);
			}

			if ((bool) $values['to']) {
				$fluent->where('(YEAR(CURDATE()) - YEAR(birth_date)) <= ?', $values['to']);
			}
		});

	// $grid->setOuterFilterRendering();

	return $grid;
}