up demo by what

This commit is contained in:
Tykayn 2025-10-10 17:56:50 +02:00 committed by tykayn
parent 26bfe4ae36
commit 2238380e80
7 changed files with 43 additions and 13 deletions

View file

@ -61,13 +61,13 @@ export class Home implements OnInit, OnDestroy {
// Propriétés pour les filtres
searchText = '';
selectedWhatFilter = 'culture';
selectedWhatFilter = '';
availableWhatTypes: string[] = [];
theme = signal<string | null>(null);
subthemes: Array<{ key: string, label: string, emoji: string }> = [];
activeSubtheme = signal<string | null>(null);
// Option bbox
useBboxFilter = false;
useBboxFilter = true;
currentBbox: { minLng: number, minLat: number, maxLng: number, maxLat: number } | null = null;
// Debounce pour la recherche
private searchDebounceTimer: any = null;
@ -130,7 +130,7 @@ export class Home implements OnInit, OnDestroy {
};
if (overrides.what) {
params.what = overrides.what;
} else if (this.selectedWhatFilter) {
} else if (this.selectedWhatFilter && this.selectedWhatFilter !== '') {
params.what = this.selectedWhatFilter;
}
@ -207,6 +207,11 @@ export class Home implements OnInit, OnDestroy {
this.theme.set(t || null);
this.buildSubthemes();
});
// Ajouter les catégories principales
whatTypes.add('culture');
whatTypes.add('traffic');
this.availableWhatTypes = Array.from(whatTypes).sort();
}
@ -244,9 +249,15 @@ export class Home implements OnInit, OnDestroy {
// Filtre par type d'événement
if (this.selectedWhatFilter) {
filtered = filtered.filter(feature =>
feature?.properties?.what === this.selectedWhatFilter
);
filtered = filtered.filter(feature => {
const what = feature?.properties?.what || '';
// Si c'est une catégorie (culture, traffic), filtrer par préfixe
if (this.selectedWhatFilter === 'culture' || this.selectedWhatFilter === 'traffic') {
return what.startsWith(this.selectedWhatFilter + '.');
}
// Sinon, correspondance exacte
return what === this.selectedWhatFilter;
});
}
this.filteredFeatures = filtered;

View file

@ -126,7 +126,7 @@ class DemoResource:
# Fetch events from the API
try:
response = requests.get('/event?limit=1000')
response = requests.get('/event?limit=5000')
if response.status_code == 200 and response.text:
events_data = response.json()
else:

View file

@ -10,6 +10,11 @@
color: #666;
font-size: 0.9em;
}
.event-details {
color: #888;
font-style: italic;
margin-left: 5px;
}
</style>
{% endblock %}
@ -39,7 +44,14 @@
<ul>
{% for event in events_by_what[what_type]|sort(attribute='label') %}
<li>
<a href="/event/{{ event.id }}">{{ event.label or 'Unnamed Event' }}</a>
{% set event_name = event.name or event.title or event.short_description or event.label or 'Unnamed Event' %}
<a href="/event/{{ event.id }}">{{ event_name }}</a>
{% if event.label and event.label != event_name %}
<small class="event-details">({{ event.label }})</small>
{% endif %}
{% if event.short_description and event.short_description != event_name and event.short_description != event.label %}
<small class="event-details">- {{ event.short_description }}</small>
{% endif %}
<small>
[<a href="https://www.openstreetmap.org/?mlat={{ event.coordinates[1] }}&mlon={{ event.coordinates[0] }}&zoom=15">map</a>]
</small>

View file

@ -1,6 +1,6 @@
{% extends "layout.html" %}
{% block title %}Événement {{ properties.label|default(id) }} - OpenEventDatabase{% endblock %}
{% block title %}Événement {{ properties.name or properties.title or properties.short_description or properties.label or id }} - OpenEventDatabase{% endblock %}
{% block css %}
<style>
@ -126,7 +126,14 @@
{% block header %}
<div class="event-header">
<h1 class="event-title">{{ properties.label|default('Événement sans titre') }}</h1>
{% set event_title = properties.name or properties.title or properties.short_description or properties.label or 'Événement sans titre' %}
<h1 class="event-title">{{ event_title }}</h1>
{% if properties.label and properties.label != event_title %}
<p class="event-subtitle">{{ properties.label }}</p>
{% endif %}
{% if properties.short_description and properties.short_description != event_title and properties.short_description != properties.label %}
<p class="event-subtitle">{{ properties.short_description }}</p>
{% endif %}
<p class="event-subtitle">ID: {{ id }}</p>
<div class="nav-links">
<a href="/demo"><i class="fas fa-home"></i> Accueil</a>

View file

@ -440,7 +440,7 @@
</td>
<td>
<div class="event-title">
<a href="/demo/by_id/${props.id}">${props.label || 'Événement sans titre'}</a>
<a href="/demo/by_id/${props.id}">${props.name || props.title || props.short_description || props.label || 'Événement sans titre'}</a>
</div>
</td>
<td>

View file

@ -136,7 +136,7 @@
// Get event properties
const properties = event.properties;
const coordinates = event.geometry.coordinates;
const label = properties.label || 'Unnamed Event';
const label = properties.name || properties.title || properties.short_description || properties.label || 'Unnamed Event';
const what = properties.what || 'unknown';
const timestamp = event.timestamp ? new Date(event.timestamp) : new Date();
const formattedDate = timestamp.toLocaleString();

View file

@ -352,7 +352,7 @@ class QualityAssuranceResource(BaseEvent):
# Add events
for event in problematic_events:
properties = event.get('properties', {})
event_title = properties.get('label', properties.get('name', f'Événement #{event["id"]}'))
event_title = properties.get('name') or properties.get('title') or properties.get('short_description') or properties.get('label') or f'Événement #{event["id"]}'
event_what = properties.get('what', 'Non spécifié')
# Get severity classes for the card