Added remote filtering
This commit is contained in:
parent
9d541410c4
commit
94c0fd7c42
|
|
@ -27,6 +27,22 @@ export default class extends Controller {
|
||||||
ajaxResponse: (url, params, response) => response,
|
ajaxResponse: (url, params, response) => response,
|
||||||
paginationDataSent: { page: "page", size: "size" },
|
paginationDataSent: { page: "page", size: "size" },
|
||||||
paginationDataReceived: { last_page: "last_page" },
|
paginationDataReceived: { last_page: "last_page" },
|
||||||
|
filterMode: "remote",
|
||||||
|
|
||||||
|
ajaxURLGenerator: function(url, config, params) {
|
||||||
|
let queryParams = new URLSearchParams();
|
||||||
|
queryParams.append('page', params.page || 1);
|
||||||
|
queryParams.append('size', params.size || 10);
|
||||||
|
|
||||||
|
// Add filters
|
||||||
|
if (params.filter) {
|
||||||
|
params.filter.forEach(filter => {
|
||||||
|
queryParams.append(`filter[${filter.field}]`, filter.value);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return `${url}?${queryParams.toString()}`;
|
||||||
|
},
|
||||||
|
|
||||||
ajaxSorting: true,
|
ajaxSorting: true,
|
||||||
ajaxFiltering: true,
|
ajaxFiltering: true,
|
||||||
|
|
|
||||||
|
|
@ -273,8 +273,7 @@ class OrganizationController extends AbstractController
|
||||||
$page = max(1, (int)$request->query->get('page', 1));
|
$page = max(1, (int)$request->query->get('page', 1));
|
||||||
$size = max(1, (int)$request->query->get('size', 10));
|
$size = max(1, (int)$request->query->get('size', 10));
|
||||||
|
|
||||||
// $sorters = $request->query->all('sorters');
|
$filters = $request->query->all('filter');
|
||||||
// $filters = $request->query->all('filters');
|
|
||||||
|
|
||||||
|
|
||||||
$user = $this->userService->getUserByIdentifier($this->getUser()->getUserIdentifier());
|
$user = $this->userService->getUserByIdentifier($this->getUser()->getUserIdentifier());
|
||||||
|
|
@ -282,25 +281,14 @@ class OrganizationController extends AbstractController
|
||||||
$qb = $this->organizationsRepository->createQueryBuilder('o')
|
$qb = $this->organizationsRepository->createQueryBuilder('o')
|
||||||
->where('o.isDeleted = :del')->setParameter('del', false);
|
->where('o.isDeleted = :del')->setParameter('del', false);
|
||||||
|
|
||||||
// // Example: apply filters (basic equals/like)
|
if (!empty($filters['name'])) {
|
||||||
// foreach ($filters as $f) {
|
$qb->andWhere('o.name LIKE :name')
|
||||||
// if (!isset($f['field'], $f['type'])) { continue; }
|
->setParameter('name', '%' . $filters['name'] . '%');
|
||||||
// $param = 'p_' . $f['field'];
|
}
|
||||||
// if ($f['type'] === 'like' || $f['type'] === 'contains') {
|
if (!empty($filters['email'])) {
|
||||||
// $qb->andWhere("LOWER(o.{$f['field']}) LIKE :$param")
|
$qb->andWhere('o.email LIKE :email')
|
||||||
// ->setParameter($param, '%' . mb_strtolower((string)$f['value']) . '%');
|
->setParameter('email', '%' . $filters['email'] . '%');
|
||||||
// } elseif ($f['type'] === '=') {
|
}
|
||||||
// $qb->andWhere("o.{$f['field']} = :$param")
|
|
||||||
// ->setParameter($param, $f['value']);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// // Example: apply sorters
|
|
||||||
// foreach ($sorters as $s) {
|
|
||||||
// if (!isset($s['field'], $s['dir'])) { continue; }
|
|
||||||
// $dir = strtolower($s['dir']) === 'desc' ? 'DESC' : 'ASC';
|
|
||||||
// $qb->addOrderBy('o.' . $s['field'], $dir);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Count total
|
// Count total
|
||||||
$countQb = clone $qb;
|
$countQb = clone $qb;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue