Compare commits
4 Commits
d3f269452c
...
v1.9.38
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
104942a52b | ||
|
|
c65757ee24 | ||
|
|
6e105fd070 | ||
|
|
a0c4597de0 |
@@ -1,2 +1,2 @@
|
||||
parameters:
|
||||
app.version: '1.9.36'
|
||||
app.version: '1.9.38'
|
||||
|
||||
@@ -58,7 +58,26 @@
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-control">
|
||||
<div class="form-control md:w-52">
|
||||
<label class="label">
|
||||
<span class="label-text text-xs font-semibold uppercase tracking-wide text-base-content/50">Trier par</span>
|
||||
</label>
|
||||
<select v-model="sortOrder" class="select select-bordered w-full">
|
||||
<option value="name-asc">
|
||||
Nom (A → Z)
|
||||
</option>
|
||||
<option value="name-desc">
|
||||
Nom (Z → A)
|
||||
</option>
|
||||
<option value="date-desc">
|
||||
Plus récentes
|
||||
</option>
|
||||
<option value="date-asc">
|
||||
Plus anciennes
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-control md:w-80">
|
||||
<label class="label">
|
||||
<span class="label-text text-xs font-semibold uppercase tracking-wide text-base-content/50">Date de création</span>
|
||||
</label>
|
||||
@@ -66,13 +85,13 @@
|
||||
<input
|
||||
v-model="dateFrom"
|
||||
type="date"
|
||||
class="input input-bordered input-sm"
|
||||
class="input input-bordered w-full"
|
||||
>
|
||||
<span class="text-xs text-base-content/50">à</span>
|
||||
<input
|
||||
v-model="dateTo"
|
||||
type="date"
|
||||
class="input input-bordered input-sm"
|
||||
class="input input-bordered w-full"
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
@@ -295,6 +314,7 @@ const showAddSiteModal = ref(false)
|
||||
const showAddMachineModal = ref(false)
|
||||
const searchTerm = ref('')
|
||||
const selectedSiteFilter = ref('')
|
||||
const sortOrder = ref('name-asc')
|
||||
const dateFrom = ref('')
|
||||
const dateTo = ref('')
|
||||
const collapsedSites = ref([])
|
||||
@@ -318,10 +338,33 @@ const machinesBySiteId = computed(() => {
|
||||
return map
|
||||
})
|
||||
|
||||
const sortMachines = (machineList) => {
|
||||
const list = [...machineList]
|
||||
switch (sortOrder.value) {
|
||||
case 'name-desc':
|
||||
return list.sort((a, b) =>
|
||||
(b.name || '').localeCompare(a.name || '', 'fr', { sensitivity: 'base', numeric: true })
|
||||
)
|
||||
case 'date-desc':
|
||||
return list.sort((a, b) =>
|
||||
new Date(b.createdAt || 0) - new Date(a.createdAt || 0)
|
||||
)
|
||||
case 'date-asc':
|
||||
return list.sort((a, b) =>
|
||||
new Date(a.createdAt || 0) - new Date(b.createdAt || 0)
|
||||
)
|
||||
case 'name-asc':
|
||||
default:
|
||||
return list.sort((a, b) =>
|
||||
(a.name || '').localeCompare(b.name || '', 'fr', { sensitivity: 'base', numeric: true })
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
const sitesWithMachines = computed(() => {
|
||||
return sites.value.map((site) => ({
|
||||
...site,
|
||||
machines: machinesBySiteId.value.get(site.id) || []
|
||||
machines: sortMachines(machinesBySiteId.value.get(site.id) || [])
|
||||
}))
|
||||
})
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ namespace App\Filter;
|
||||
use ApiPlatform\Doctrine\Orm\Filter\AbstractFilter;
|
||||
use ApiPlatform\Doctrine\Orm\Util\QueryNameGeneratorInterface;
|
||||
use ApiPlatform\Metadata\Operation;
|
||||
use App\Entity\ConstructeurTelephone;
|
||||
use Doctrine\ORM\QueryBuilder;
|
||||
|
||||
/**
|
||||
@@ -38,22 +39,27 @@ final class ConstructeurSearchFilter extends AbstractFilter
|
||||
}
|
||||
|
||||
$alias = $queryBuilder->getRootAliases()[0];
|
||||
$telAlias = $queryNameGenerator->generateJoinAlias('telephones');
|
||||
$telAlias = $queryNameGenerator->generateJoinAlias('phoneSearch');
|
||||
$paramName = $queryNameGenerator->generateParameterName('search');
|
||||
$likePattern = '%'.mb_strtolower(trim($value)).'%';
|
||||
|
||||
$em = $queryBuilder->getEntityManager();
|
||||
$phoneSubQuery = $em->createQueryBuilder()
|
||||
->select('1')
|
||||
->from(ConstructeurTelephone::class, $telAlias)
|
||||
->where(sprintf('%1$s.constructeur = %2$s', $telAlias, $alias))
|
||||
->andWhere(sprintf('LOWER(%s.numero) LIKE :%s', $telAlias, $paramName))
|
||||
->getDQL()
|
||||
;
|
||||
|
||||
$queryBuilder
|
||||
->leftJoin(sprintf('%s.telephones', $alias), $telAlias)
|
||||
->andWhere(sprintf(
|
||||
'LOWER(%1$s.name) LIKE :%4$s OR LOWER(%1$s.email) LIKE :%4$s OR LOWER(%2$s.numero) LIKE :%4$s',
|
||||
'LOWER(%1$s.name) LIKE :%2$s OR LOWER(%1$s.email) LIKE :%2$s OR EXISTS (%3$s)',
|
||||
$alias,
|
||||
$telAlias,
|
||||
'',
|
||||
$paramName,
|
||||
$phoneSubQuery,
|
||||
))
|
||||
->setParameter($paramName, $likePattern)
|
||||
;
|
||||
|
||||
$queryBuilder->groupBy(sprintf('%s.id', $alias));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user