Map filters: conditional visibility + initial display handling
This commit is contained in:
@@ -19,6 +19,12 @@ class EventMapController extends AbstractFrontendModuleController
|
||||
private const MAP_STYLE_URL = 'https://maps.mummert.media/metadaten/world-light.json';
|
||||
private const DEFAULT_CENTER_MODE = 'markers';
|
||||
private const DEFAULT_EVENT_COLOR = '#BC5067';
|
||||
private const DEFAULT_INITIAL_DISPLAY = 'random';
|
||||
|
||||
/**
|
||||
* @var list<string>
|
||||
*/
|
||||
private const ALLOWED_INITIAL_DISPLAYS = ['random', 'events', 'organization_tag'];
|
||||
|
||||
public function __construct(
|
||||
private readonly MapModuleDataProvider $mapModuleDataProvider,
|
||||
@@ -38,6 +44,8 @@ class EventMapController extends AbstractFrontendModuleController
|
||||
array_map('intval', StringUtil::deserialize($model->organizationTypeTags ?? null, true)),
|
||||
static fn (int $tagId): bool => $tagId > 0,
|
||||
)));
|
||||
$initialDisplay = (string) ($model->mapInitialDisplay ?? self::DEFAULT_INITIAL_DISPLAY);
|
||||
$initialOrganizationTagId = (int) ($model->mapInitialOrganizationTagId ?? 0);
|
||||
$centerMode = (string) ($model->mapCenterMode ?? self::DEFAULT_CENTER_MODE);
|
||||
$eventColor = $this->normalizeHexColor((string) ($model->mapEventColor ?? self::DEFAULT_EVENT_COLOR));
|
||||
$organizationColor = $this->normalizeHexColor((string) ($model->mapOrganizationColor ?? $eventColor), $eventColor);
|
||||
@@ -46,14 +54,26 @@ class EventMapController extends AbstractFrontendModuleController
|
||||
$centerMode = self::DEFAULT_CENTER_MODE;
|
||||
}
|
||||
|
||||
if (!in_array($initialDisplay, self::ALLOWED_INITIAL_DISPLAYS, true)) {
|
||||
$initialDisplay = self::DEFAULT_INITIAL_DISPLAY;
|
||||
}
|
||||
|
||||
if ($initialOrganizationTagId < 0) {
|
||||
$initialOrganizationTagId = 0;
|
||||
}
|
||||
|
||||
$template->set('mapContainerId', $containerId);
|
||||
$template->set('mapDataElementId', $dataElementId);
|
||||
$template->set('mapFilterWrapperId', $filterWrapperId);
|
||||
$template->set('mapFilterGroupId', $filterGroupId);
|
||||
$template->set('mapStyleUrl', self::MAP_STYLE_URL);
|
||||
$template->set('mapShowOrganizations', $showOrganizations);
|
||||
$template->set('mapShowEvents', $showEvents);
|
||||
$template->set('mapCenterMode', $centerMode);
|
||||
$template->set('mapEventColor', $eventColor);
|
||||
$template->set('mapOrganizationColor', $organizationColor);
|
||||
$template->set('mapInitialDisplay', $initialDisplay);
|
||||
$template->set('mapInitialTagId', $initialOrganizationTagId);
|
||||
$template->set('mapCenterLat', trim((string) ($model->mapCenterLat ?? '')));
|
||||
$template->set('mapCenterLng', trim((string) ($model->mapCenterLng ?? '')));
|
||||
$template->set('mapCenterZoom', (int) ($model->mapCenterZoom ?? 12));
|
||||
|
||||
Reference in New Issue
Block a user