This commit is contained in:
2026-05-07 21:04:27 +02:00
parent 6f3a63af12
commit fb6a0c7968
13 changed files with 101 additions and 48 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 KiB

View File

@@ -1,7 +1,7 @@
.fiche_header_simple_wp {
display: grid;
justify-content: center;
padding-bottom: 100px;
padding-bottom: 60px;
@media (min-width: 0px) and (max-width: 600px) {

View File

@@ -8,9 +8,9 @@
.rounded-card-list {
display: flex;
flex-wrap: wrap;
gap: var(--gap-cards);
gap: 13px;
justify-content: flex-start;
margin-left: 30px;
margin-left: 13px;
}
@media (max-width: 572px) {
.rounded-card-list {
@@ -60,7 +60,7 @@
@media (min-width: 1100px) {
.rounded-card-list > .rounded-card {
max-width: 300px;
max-width: 270px;
flex: 1 1 300px;
}
}

View File

@@ -7,7 +7,7 @@
Professionnels
<ul class="header_nav_topbar_submenu">
<li class="header_nav_topbar_submenu_item"><NuxtLink to="/professionnels/programmer-orchestre">Programmer l'Orchestre</NuxtLink></li>
<li class="header_nav_topbar_submenu_item"><NuxtLink to="/professionnels/studio">Le studio et les espaces</NuxtLink></li>
<li class="header_nav_topbar_submenu_item"><NuxtLink to="/professionnels/studio">Le Studio et les espaces</NuxtLink></li>
<li class="header_nav_topbar_submenu_item"><NuxtLink to="/professionnels/parc">Louer des instruments</NuxtLink></li>
<!-- <li class="header_nav_topbar_submenu_item"><NuxtLink to="/professionnels/recrutement">Recrutement / Concours</NuxtLink></li> -->
<!-- <li class="header_nav_topbar_submenu_item"><NuxtLink to="/professionnels/candidats">Espace candidats</NuxtLink></li> -->

View File

@@ -24,12 +24,41 @@ export function useStrapi(endpoint, options = {}) {
return query.toString()
})
const { data, pending, error, refresh } = useFetch(
() => `${endpoint}?${queryString.value}`,
const fetchAll = computed(() => Boolean(unref(options.fetchAll)))
const asyncDataKey = computed(() => `${endpoint}:${queryString.value}:fetchAll=${fetchAll.value}`)
const { data, pending, error, refresh } = useAsyncData(
asyncDataKey,
async () => {
const baseUrl = `${endpoint}?${queryString.value}`
if (!fetchAll.value) {
return await $fetch(baseUrl)
}
const firstPage = await $fetch(addPageParam(baseUrl, 1))
const pageCount = Number(firstPage?.meta?.pagination?.pageCount || 1)
if (pageCount <= 1) {
return firstPage
}
const otherPages = await Promise.all(
Array.from({ length: pageCount - 1 }, (_, index) => $fetch(addPageParam(baseUrl, index + 2)))
)
return {
...firstPage,
data: [
...(Array.isArray(firstPage?.data) ? firstPage.data : []),
...otherPages.flatMap((page) => (Array.isArray(page?.data) ? page.data : [])),
],
}
},
{
server: true,
key: () => `${endpoint}:${queryString.value}`,
watch: [queryString],
watch: [queryString, fetchAll],
}
)
@@ -58,6 +87,11 @@ export function useStrapi(endpoint, options = {}) {
}
}
function addPageParam(url, page) {
const separator = url.includes("?") ? "&" : "?"
return `${url}${separator}pagination[page]=${page}`
}
function appendPopulate(query, populate, prefix = "populate") {
Object.entries(populate).forEach(([key, value]) => {
if (value === true) {

View File

@@ -3,7 +3,7 @@
<div>
<PageSection tone="jaune" content-size="default">
<SectionTitle tone="invert" pad="md">
LA SAISON 2025/2026 POUR LES JEUNES
LA SAISON POUR LES JEUNES
</SectionTitle>
</PageSection>
<PageSection padded_size="md" content-size="default" class="remonter_concert_list">
@@ -34,9 +34,42 @@
import { onMounted } from "vue"
import { formatDateLong } from "@/utils/dateFormat.js"
const runtimeConfig = useRuntimeConfig()
const saisonCourante = String(runtimeConfig.public.saison || "").trim()
const saisonPrecedente = String(runtimeConfig.public.saisonmoins1 || "").trim()
// PRISE EN COMPTE DE LA DOUBLE SAISON ENTRE L'ANNONCE DE LA NOUVELLE SAISON ET LA FIN DE LA SAISON EN COURS
// de janvier à août inclus, saisonmoins1 est ajoutée au filtre via $or
// de septembre à décembre, seule runtimeConfig.public.saison est utilisée
const inclureSaisonPrecedente = new Date().getMonth() <= 7
const saisonFilter = inclureSaisonPrecedente && saisonPrecedente
? {
$or: [
{
saison_concert: {
nom_saison: {
$eq: saisonCourante,
},
},
},
{
saison_concert: {
nom_saison: {
$eq: saisonPrecedente,
},
},
},
],
}
: {
saison_concert: {
nom_saison: {
$eq: saisonCourante,
},
},
}
const { concerts, refresh } = useConcerts({
locale: "fr-FR",
pageSize: 200,
populate: {
saison_concert: true,
genre_concert: true,
@@ -55,13 +88,7 @@
},
filters: {
$and: [
{
saison_concert: {
nom_saison: {
$eq: String(runtimeConfig.public.saison),
},
},
},
saisonFilter,
{
$or: [
{

View File

@@ -183,7 +183,7 @@
import DsMedia from '@root/design-system/primitives/DsMedia.vue'
import DsButton from '@root/design-system/primitives/DsButton.vue'
import DsButtonArrow from '@root/design-system/primitives/DsButtonArrow.vue'
import orchestre_img from '@/assets/img/illustrations/orchestre_1.jpg'
import orchestre_img from '@/assets/img/illustrations/orchestre_3.jpg'
import ppt_img from '@/assets/img/illustrations/map_idf.jpg'
import DsCard from '@root/design-system/components/DsCard.vue'

View File

@@ -658,7 +658,8 @@
{
locale: "fr-FR",
populate: populateInstruments,
pageSize: 500,
pageSize: 100,
fetchAll: true,
}
)
@@ -685,7 +686,14 @@
groups.get(categoryName).instruments_list.push(instrument)
}
return Array.from(groups.values())
return Array.from(groups.values()).map((category) => ({
...category,
instruments_list: category.instruments_list.sort((a, b) =>
String(a.instrument_nom || "").localeCompare(String(b.instrument_nom || ""), "fr", {
sensitivity: "base",
})
),
}))
})
const openedInstrumentDescriptions = ref({})

View File

@@ -311,7 +311,7 @@
:key="categorie.id"
class="space-y-4"
>
<div class="flex items-center justify-between mb-8">
<div class="flex items-center mb-8">
<div class="flex items-center gap-4">
<h3 v-if="categorie.nom_categorie" class="text-2xl font-bold tracking-tight">
{{ categorie.nom_categorie }}
@@ -556,9 +556,12 @@
}
function formatKoToMo(sizeInKo) {
if (typeof sizeInKo !== "number") return ""
const size = Number(sizeInKo)
return `${(sizeInKo / 1024).toFixed(1)} Mo`
if (!Number.isFinite(size)) return ""
if (size < 1024) return `${Math.round(size)} Ko`
return `${(size / 1024).toFixed(1)} Mo`
}
function getInitials(fullName) {

View File

@@ -474,31 +474,11 @@
<PageSection tone="" content-size="default" padded_size="md">
<SectionContent class="fiche_description strapi-blocks">
<div>
<div class="mb-8"><iframe src="https://maps.google.com/maps?width=781&amp;height=538&amp;hl=en&amp;q=1,%20rue%20du%20Capitaine%20Alfred-Dreyfus%20Alfortvillle+(Parc%20instrumental)&amp;t=&amp;z=14&amp;ie=UTF8&amp;iwloc=B&amp;output=embed" width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe></div>
<div class="mb-8"><iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d70672.55028389905!2d2.3463168575299274!3d48.83180674769099!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47e6730f74558a15%3A0xc9a8bbf42df731e5!2sOrchestre%20national%20d'%C3%8Ele-de-France!5e0!3m2!1sfr!2sfr!4v1678109834196!5m2!1sfr!2sfr" width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe></div>
<div>
<h1>Comment venir ?</h1>
<h2>Accès par la route</h2>
<h3>Depuis Paris</h3>
<ul>
<li>À la Porte de Bercy, prendre A4 direction Metz/Nancy</li>
<li>Quitter lA4 à la première sortie, direction Maisons-Alfort, Alfortville</li>
<li>Serrer sur la droite et après le pont de Charenton, prendre à droite direction Ivry, Alfortville</li>
<li>Continuer tout droit, au quatrième feu, prendre à gauche direction Choisy-le-Roi (ne pas traverser le pont dIvry)</li>
<li>Longer la Seine sur plus d1 kilomètre</li>
<li>Après la station service Total, prendre la première rue à gauche : la rue Jules-Guesdes. Au bout de cette rue, prendre à droite dans la rue Victor-Hugo, puis, au rond-point, tourner immédiatement à droite dans la rue du 14-juillet. Prendre la première à droite, rue Lafayette, puis la première à gauche : cest la rue des Écoles</li>
<li>La Maison de lOrchestre se trouve à 100 mètres sur la droite</li>
</ul>
<h3>Depuis lA86 (entre Créteil et Versailles)</h3>
<ul>
<li>Sortir de lA86, direction AlfortvilleVitry-sur-Seine</li>
<li>Serrer sur la droite et suivre indication Alfortville</li>
<li>Au deuxième feu, prendre en face et longer la Seine (qui se trouve sur votre droite)</li>
<li>Au niveau du Centre Leclerc, prendre à droite direction Alfortville et passer le pont de Vitry sur la file de gauche, pour tourner à gauche après le pont</li>
<li>Longer les quais de Seine, au 2e feu à droite prendre la rue du 14-juillet qui vous amènera directement à la rue des Écoles</li>
<li>Prendre à gauche, la Maison de lOrchestre se trouve à 100 mètres sur la droite</li>
</ul>
<h2>Accès par les transports en commun</h2>
<h3>RER ligne D</h3>
<h2>RER ligne D</h2>
<ul>
<li>Descendre station Maisons-Alfort, Alfortville et sortir côté Alfortville</li>
<li>Prendre à droite en sortant de la gare : avenue Malleret-Joinville sur 500 mètres environ</li>
@@ -506,7 +486,7 @@
<li>Arrivé sur la place Jean-Jaurès (rond-point), continuer en face (entre magasin de téléphonie et Crédit Lyonnais) : rue Victor-Hugo. Tourner dans la première rue à gauche : rue des Écoles</li>
<li>À environ 150 mètres sur la droite se trouve le bâtiment de lOrchestre</li>
</ul>
<h3>Métro ligne 8</h3>
<h2>Métro ligne 8</h2>
<ul>
<li>Descendre station École vétérinaire de Maisons-Alfort</li>
<li>Prendre le bus 103 en sortant du métro. Descendre à la station Mairie dAlfortville</li>
@@ -530,7 +510,7 @@
nom="Maria Birioukova"
poste="Responsable des productions et du personnel artistique "
numero="06 77 11 24 74"
mail="lmaria.birioukova@orchestre-ile.com"
mail="maria.birioukova@orchestre-ile.com"
adresse="19 rue des Écoles 94140 Alfortvillle"
/>
</PageSection>