feat: clean up and optimize FCP filter and highlighting logic
This commit is contained in:
@@ -2524,11 +2524,9 @@ $pagination_entity_name = "Vorbestellungen";
|
||||
fcpData.sort((a, b) => {
|
||||
if (a.id === "") return -1;
|
||||
if (b.id === "") return 1;
|
||||
// Sort by preorder_count descending
|
||||
if ((b.preorder_count || 0) !== (a.preorder_count || 0)) {
|
||||
return (b.preorder_count || 0) - (a.preorder_count || 0);
|
||||
}
|
||||
// Fallback to name-based numeric/alpha sort
|
||||
const aN = a.id.replace(/\D/g, ""), bN = b.id.replace(/\D/g, "");
|
||||
return aN && bN ? parseInt(aN, 10) - parseInt(bN, 10) : a.id.localeCompare(b.id);
|
||||
});
|
||||
|
||||
@@ -1452,11 +1452,11 @@ class PreorderController extends mfBaseController {
|
||||
if (empty($fcps)) return [];
|
||||
|
||||
$filter = $this->request->filter ?? [];
|
||||
// We want to count preorders matching ALL other filters, but ignoring the current FCP filter
|
||||
if (isset($filter['fcp'])) {
|
||||
unset($filter['fcp']);
|
||||
}
|
||||
|
||||
$filter = $this->getPreparedFilter($filter);
|
||||
$statsMap = PreorderModel::countActiveGroupedByFcp($filter);
|
||||
|
||||
$result = array_map(
|
||||
@@ -1466,7 +1466,7 @@ class PreorderController extends mfBaseController {
|
||||
"text" => $fcp->name ?? null,
|
||||
'lat' => $fcp->gps_lat ?? null,
|
||||
'lng' => $fcp->gps_long ?? null,
|
||||
'preorder_count' => $statsMap[$fcp->id] ?? 0
|
||||
'preorder_count' => $statsMap[$fcp->name] ?? 0
|
||||
],
|
||||
$fcps
|
||||
);
|
||||
|
||||
@@ -498,19 +498,20 @@ class PreorderModel
|
||||
|
||||
$db = FronkDB::singleton();
|
||||
$where = self::getSqlFilter($filter);
|
||||
$sql = "SELECT adb_hausnummer.fcp_id, COUNT(*) as cnt FROM `" . FRONKDB_DBNAME . "`.Preorder tt_preorder
|
||||
$sql = "SELECT hn.rimo_fcp_name, COUNT(*) as cnt FROM `" . FRONKDB_DBNAME . "`.Preorder tt_preorder
|
||||
LEFT JOIN `" . FRONKDB_DBNAME . "`.Preorderstatus tt_preorderstatus ON (tt_preorder.status_id = tt_preorderstatus.id)
|
||||
LEFT JOIN `" . ADDRESSDB_DBNAME . "`.view_hausnummer as adb_hausnummer ON (tt_preorder.adb_hausnummer_id = adb_hausnummer.hausnummer_id)
|
||||
LEFT JOIN `" . ADDRESSDB_DBNAME . "`.Hausnummer as hn ON (adb_hausnummer.hausnummer_id = hn.id)
|
||||
LEFT JOIN `" . ADDRESSDB_DBNAME . "`.Wohneinheit as adb_wohneinheit ON (tt_preorder.adb_wohneinheit_id = adb_wohneinheit.id)
|
||||
WHERE $where AND adb_hausnummer.fcp_id IS NOT NULL
|
||||
GROUP BY adb_hausnummer.fcp_id
|
||||
WHERE $where AND hn.rimo_fcp_name IS NOT NULL
|
||||
GROUP BY hn.rimo_fcp_name
|
||||
";
|
||||
|
||||
$res = $db->query($sql);
|
||||
$counts = [];
|
||||
if ($db->num_rows($res)) {
|
||||
while ($row = $db->fetch_object($res)) {
|
||||
$counts[$row->fcp_id] = (int)$row->cnt;
|
||||
$counts[$row->rimo_fcp_name] = (int)$row->cnt;
|
||||
}
|
||||
}
|
||||
return $counts;
|
||||
|
||||
Reference in New Issue
Block a user