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) => {
|
fcpData.sort((a, b) => {
|
||||||
if (a.id === "") return -1;
|
if (a.id === "") return -1;
|
||||||
if (b.id === "") return 1;
|
if (b.id === "") return 1;
|
||||||
// Sort by preorder_count descending
|
|
||||||
if ((b.preorder_count || 0) !== (a.preorder_count || 0)) {
|
if ((b.preorder_count || 0) !== (a.preorder_count || 0)) {
|
||||||
return (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, "");
|
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);
|
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 [];
|
if (empty($fcps)) return [];
|
||||||
|
|
||||||
$filter = $this->request->filter ?? [];
|
$filter = $this->request->filter ?? [];
|
||||||
// We want to count preorders matching ALL other filters, but ignoring the current FCP filter
|
|
||||||
if (isset($filter['fcp'])) {
|
if (isset($filter['fcp'])) {
|
||||||
unset($filter['fcp']);
|
unset($filter['fcp']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$filter = $this->getPreparedFilter($filter);
|
||||||
$statsMap = PreorderModel::countActiveGroupedByFcp($filter);
|
$statsMap = PreorderModel::countActiveGroupedByFcp($filter);
|
||||||
|
|
||||||
$result = array_map(
|
$result = array_map(
|
||||||
@@ -1466,7 +1466,7 @@ class PreorderController extends mfBaseController {
|
|||||||
"text" => $fcp->name ?? null,
|
"text" => $fcp->name ?? null,
|
||||||
'lat' => $fcp->gps_lat ?? null,
|
'lat' => $fcp->gps_lat ?? null,
|
||||||
'lng' => $fcp->gps_long ?? null,
|
'lng' => $fcp->gps_long ?? null,
|
||||||
'preorder_count' => $statsMap[$fcp->id] ?? 0
|
'preorder_count' => $statsMap[$fcp->name] ?? 0
|
||||||
],
|
],
|
||||||
$fcps
|
$fcps
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -498,19 +498,20 @@ class PreorderModel
|
|||||||
|
|
||||||
$db = FronkDB::singleton();
|
$db = FronkDB::singleton();
|
||||||
$where = self::getSqlFilter($filter);
|
$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 `" . 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 . "`.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)
|
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
|
WHERE $where AND hn.rimo_fcp_name IS NOT NULL
|
||||||
GROUP BY adb_hausnummer.fcp_id
|
GROUP BY hn.rimo_fcp_name
|
||||||
";
|
";
|
||||||
|
|
||||||
$res = $db->query($sql);
|
$res = $db->query($sql);
|
||||||
$counts = [];
|
$counts = [];
|
||||||
if ($db->num_rows($res)) {
|
if ($db->num_rows($res)) {
|
||||||
while ($row = $db->fetch_object($res)) {
|
while ($row = $db->fetch_object($res)) {
|
||||||
$counts[$row->fcp_id] = (int)$row->cnt;
|
$counts[$row->rimo_fcp_name] = (int)$row->cnt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $counts;
|
return $counts;
|
||||||
|
|||||||
Reference in New Issue
Block a user