3
0
Fork 0
mirror of https://github.com/farmOS/farmOS.git synced 2024-02-23 11:37:38 +01:00

Refactor bundle filtering logic to take exposed type filter into account.

This commit is contained in:
Michael Stenta 2021-04-08 08:07:55 -04:00
parent 4f8583593a
commit a415eb0714

View file

@ -80,24 +80,39 @@ function farm_ui_map_views_pre_render(ViewExecutable $view) {
}
}
// If this is the page_type display, only map this asset type.
// Get exposed filters.
$exposed_filters = $view->getExposedInput();
// Determine if we are filtering by bundle.
// This may happen via contextual filter on the "page_type" display, or via
// the exposed "type" filter.
$bundle_filters = [];
if ($view->current_display == 'page_type' && !empty($view->args[0])) {
$bundle_filters[] = $view->args[0];
}
elseif (!empty($exposed_filters['type'])) {
foreach ($exposed_filters['type'] as $bundle) {
$bundle_filter[] = $bundle;
}
}
// Don't use a separate group for cluster layers.
// Filter by bundle, if desired.
if (!empty($bundle_filters)) {
$filtered_bundles = [];
foreach ($bundle_filters as $bundle) {
$filtered_bundles[$bundle] = $asset_bundles[$bundle];
}
}
// If we are filtering by bundle, don't use a separate group for cluster
// layers.
if (!empty($bundle_filters)) {
$cluster_group = $layer_group;
$bundle = $view->args[0];
$filtered_bundles = [
$bundle => $asset_bundles[$bundle],
];
}
// Add an asset type map layer for each filtered bundle.
foreach ($filtered_bundles as $bundle => $bundle_info) {
// Get exposed filters.
$exposed_filters = $view->getExposedInput();
// Add a cluster layer for all asset types.
$asset_layers['cluster']['cluster_' . $bundle] = [
'group' => $cluster_group,