Skip to content

Commit

Permalink
32 schedule (#33)
Browse files Browse the repository at this point in the history
Co-authored-by: axelcasareale <[email protected]>
Co-authored-by: Andrea Petrucci <[email protected]>
  • Loading branch information
3 people authored Nov 20, 2024
1 parent 0552699 commit 7ada9c1
Show file tree
Hide file tree
Showing 8 changed files with 216 additions and 31 deletions.
22 changes: 21 additions & 1 deletion public/locales/en/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
{
"name": "Schedule",
"component": "schedule",
"enabled": "false",
"enabled": "true",
"url": "/schedule"
},
{
Expand Down Expand Up @@ -391,6 +391,26 @@
}
]
},
"schedule": {
"herotitle": "Schedule",
"days": [
{
"date": "27th January 2025",
"location": "Balexert Geneva",
"planning-pic": "/schedule_pics/27.01.25.png"
},
{
"date": "28th January 2025",
"location": "Balexert Geneva",
"planning-pic": "/schedule_pics/28.01.25.png"
},
{
"date": "29th January 2025",
"location": "EHL Lausanne",
"planning-pic": "/schedule_pics/29.01.25.png"
}
]
},
"speakers": {
"hero": {
"title": "Our Guest Speakers"
Expand Down
78 changes: 49 additions & 29 deletions public/locales/fr/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
{
"name": "Programme",
"component": "schedule",
"enabled": "false",
"enabled": "true",
"url": "/schedule"
},
{
Expand Down Expand Up @@ -391,48 +391,68 @@
}
]
},
"schedule": {
"herotitle": "Programme",
"days": [
{
"date": "27 Janvier 2025",
"location": "Balexert Genève",
"planning-pic": "/schedule_pics/27.01.25.png"
},
{
"date": "28 Janvier 2025",
"location": "Balexert Genève",
"planning-pic": "/schedule_pics/28.01.25.png"
},
{
"date": "29 Janvier 2025",
"location": "EHL Lausanne",
"planning-pic": "/schedule_pics/29.01.25.png"
}
]
},
"speakers": {
"hero": {
"title": "Nos Conférenciers Invités"
},
"invitedSpeakers": {
"sectionTitle": "Intervenants Invités",
"speakers": [
{
"name": "Olivier Naef, HES-SO",
"bio": "Olivier Naef est responsable du domaine Ingénierie et Architecture de la HES-SO, comptant 6 hautes écoles, 19 filières Bachelor et 4 filières Master, pour environ 4'200 étudiantes et étudiants. Il est membre de la Conférence spécialisée des domaines techniques, architecture et Life Sciences (FTAL).",
"title": "L’intelligence artificielle : un enjeu sociétal et technologique",
"para": "",
"photo": "/speaker_pics/olivier-naef.jpg"
},
{
"name": "Jérôme Koller, La Mobilière",
"bio": "Jérôme Koller est responsable de la stratégie d'entreprise et du portefeuille de projets à La Mobilière et membre du comité directeur élargi. Il supervise la gestion stratégique et financière de l’organisation agile de la Mobilière, et conduit les efforts de transformation et de digitalisation de 1300 employés. Fortement engagé dans la création de valeur via l'IA, il a précédemment dirigé une équipe de 25 data scientists en tant que responsable des données et de l'analytique, où il a introduit l'IA jusqu'à l'interface client.",
"title": "La Mobilière ou La MobiliAIre ? L’IA démocratisée sans complexe.",
"para": "",
"photo": "/speaker_pics/jerome-koller.jpg"
},
{
"name": "Giorgio Pauletto, SIG",
"bio": "Giorgio Pauletto est Directeur prospective, stratégie et innovation aux Services Industriels de Genève (SIG), une entreprise publique autonome dans les énergies renouvelables et l’environnement. Il est docteur en économie, statistiques et méthodes quantitatives de l'Université de Genève et a été chercheur à Stanford et Yale.",
"title": "L'intelligence artificielle sauvera-t-elle la planète ou l'épuisera-t-elle ?",
"para": "L’intelligence artificielle ouvre des perspectives prometteuses pour optimiser notre consommation d’énergie et soutenir la transition écologique. Mais son propre impact environnemental, lié à une forte consommation de ressources, soulève des questions. Est-elle vraiment une solution durable ou va-t-elle devenir un nouveau fardeau pour notre planète ?",
"photo": "/speaker_pics/giorgio-pauletto.png"
},
{
"name": "Olivier Naef, HES-SO",
"bio": "Olivier Naef est responsable du domaine Ingénierie et Architecture de la HES-SO, comptant 6 hautes écoles, 19 filières Bachelor et 4 filières Master, pour environ 4'200 étudiantes et étudiants. Il est membre de la Conférence spécialisée des domaines techniques, architecture et Life Sciences (FTAL).",
"title": "L’intelligence artificielle : un enjeu sociétal et technologique",
"para": "",
"photo": "/speaker_pics/olivier-naef.jpg"
},
{
"name": "Jérôme Koller, La Mobilière",
"bio": "Jérôme Koller est responsable de la stratégie d'entreprise et du portefeuille de projets à La Mobilière et membre du comité directeur élargi. Il supervise la gestion stratégique et financière de l’organisation agile de la Mobilière, et conduit les efforts de transformation et de digitalisation de 1300 employés. Fortement engagé dans la création de valeur via l'IA, il a précédemment dirigé une équipe de 25 data scientists en tant que responsable des données et de l'analytique, où il a introduit l'IA jusqu'à l'interface client.",
"title": "La Mobilière ou La MobiliAIre ? L’IA démocratisée sans complexe.",
"para": "",
"photo": "/speaker_pics/jerome-koller.jpg"
},
{
"name": "Giorgio Pauletto, SIG",
"bio": "Giorgio Pauletto est Directeur prospective, stratégie et innovation aux Services Industriels de Genève (SIG), une entreprise publique autonome dans les énergies renouvelables et l’environnement. Il est docteur en économie, statistiques et méthodes quantitatives de l'Université de Genève et a été chercheur à Stanford et Yale.",
"title": "L'intelligence artificielle sauvera-t-elle la planète ou l'épuisera-t-elle ?",
"para": "L’intelligence artificielle ouvre des perspectives prometteuses pour optimiser notre consommation d’énergie et soutenir la transition écologique. Mais son propre impact environnemental, lié à une forte consommation de ressources, soulève des questions. Est-elle vraiment une solution durable ou va-t-elle devenir un nouveau fardeau pour notre planète ?",
"photo": "/speaker_pics/giorgio-pauletto.png"
},
{
"name": "Jan Kerschgens, Innovaud",
"bio": "Jan Kerschgens est actuellement responsable de l’initiative d’intelligence artificielle pour le Canton de Vaud, basée à Innovaud. Auparavant, il a travaillé dans des centres de recherche de l’EPFL dédiés à l’intelligence artificielle et à la robotique, ainsi qu’au sein du Pôle de recherche national suisse en robotique et dans le secteur privé.",
"title": "L’intelligence artificielle dans le Canton de Vaud",
"para": "",
"photo": "/speaker_pics/jan-kerschgens.jpg"
},
{
"name": "Sandro Saitta, viadata",
"bio": "Sandro Saitta is passionate about helping companies become data-driven. He has worked across various industries to promote data usage and is currently a Data & AI advisor at viadata, a company specializing in executive advising and corporate training. He holds a Ph.D. in EPFL.",
"title": "AI for SME - How to get started and overcome key challenges?",
"para": "In today's digital landscape, Artificial Intelligence (AI) is a powerful tool for SMEs seeking innovation and growth. This presentation demystifies AI, cutting through the hype. By exploring fundamental concepts, we clarify what AI can and can't do. We’ll guide SMEs on how to initiate AI projects through both top-down and bottom-up approaches, using frameworks like the impact-feasibility matrix and the data initiative canvas. Additionally, we address key challenges in AI adoption, discussing various dimensions such as data quality, people skills, change management and offering actionable tips to overcome them.",
"photo": "/speaker_pics/sandro-saitta.png"
}
{
"name": "Sandro Saitta, viadata",
"bio": "Sandro Saitta is passionate about helping companies become data-driven. He has worked across various industries to promote data usage and is currently a Data & AI advisor at viadata, a company specializing in executive advising and corporate training. He holds a Ph.D. in EPFL.",
"title": "AI for SME - How to get started and overcome key challenges?",
"para": "In today's digital landscape, Artificial Intelligence (AI) is a powerful tool for SMEs seeking innovation and growth. This presentation demystifies AI, cutting through the hype. By exploring fundamental concepts, we clarify what AI can and can't do. We’ll guide SMEs on how to initiate AI projects through both top-down and bottom-up approaches, using frameworks like the impact-feasibility matrix and the data initiative canvas. Additionally, we address key challenges in AI adoption, discussing various dimensions such as data quality, people skills, change management and offering actionable tips to overcome them.",
"photo": "/speaker_pics/sandro-saitta.png"
}
]
},
"moderatorsAndPanelists": {
Expand Down
Binary file added public/schedule_pics/27.01.25.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/schedule_pics/28.01.25.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/schedule_pics/29.01.25.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import React, { useCallback } from 'react';
import { useTranslation } from 'react-i18next';
import { BrowserRouter as Router, Route, Routes } from "react-router-dom";
import { useSelector } from 'react-redux';
import Schedule from "./pages/Schedule";

function App() {
const {t} = useTranslation();
Expand All @@ -35,6 +36,7 @@ function App() {
home: Home,
contact: Contact,
speakers: Speakers,
schedule: Schedule,
workshops: Workshops,
partners: Partners,
};
Expand Down
2 changes: 1 addition & 1 deletion src/pages/Contact/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ const Contact: React.FC = () => {
</List>
</Box>
</Paper>
<Footer></Footer>
<Footer/>
</Container>
);
};
Expand Down
143 changes: 143 additions & 0 deletions src/pages/Schedule/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
import Footer from 'components/Footer/footer';
import React from 'react';
import {
Container,
Typography,
Box,
Card,
CardMedia,
CardContent,
Divider,
} from '@mui/material';
import { useTranslation } from "react-i18next";
import { useSelector } from "react-redux";

// Interfaces
interface DaySchedule {
date: string;
location: string;
"planning-pic": string;
}

interface YearData {
year: string;
schedule: {
herotitle: string;
days: DaySchedule[];
};
}

const Schedule: React.FC = () => {
const {t} = useTranslation();

// Récupération de l'année sélectionnée dans le store Redux
const year = useSelector((state: any) => state.year.value);
const years: YearData[] = t("years", {returnObjects: true});

// Fonction pour trouver l'index de l'année sélectionnée
const selectedYearIndex = (yearToFind: string) => {
const index = years.findIndex((yearObj) => yearObj.year === yearToFind);
return index !== -1 ? index : 0;
};

const selectedYear = selectedYearIndex(year);

// Récupération des informations dynamiques
const heroTitle = t(`years.${selectedYear}.schedule.herotitle`);
const schedule = t(`years.${selectedYear}.schedule.days`, {
returnObjects: true,
}) as DaySchedule[];

return (
<Container maxWidth="xl">
{/* Hero Section */}
<Box
sx={{
backgroundImage: 'url("/hero-image.jpg")',
backgroundSize: 'cover',
backgroundPosition: 'center',
height: '500px',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
mb: 5,
borderRadius: 2,
boxShadow: 3,
position: 'relative',
color: '#fff',
textShadow: '2px 2px 4px rgba(0,0,0,0.6)',
}}
>
<Typography variant="h2" sx={{fontWeight: 'bold'}}>
{heroTitle}
</Typography>
{/* HES-SO Logo in Bottom Right Corner */}
<Box
component="img"
src="hes-so.png"
alt="HES-SO Logo"
sx={{
position: 'absolute',
bottom: '10px',
right: '10px',
width: '120px', // Adjust size as needed
opacity: 0.7, // Transparent effect
}}
/>
</Box>

{/* Schedule Cards */}
{schedule.map((day, index) => (
<Box
key={index}
sx={{
mb: 4,
display: 'flex',
justifyContent: 'center',
flexDirection: 'column',
alignItems: 'center',
}}
>
<Card
sx={{
width: '100%',
padding: '20px',
boxShadow: 4,
borderRadius: 2,
overflow: 'hidden', // Assure que les images restent bien encadrées
}}
>
<CardMedia
component="img"
image={day["planning-pic"]}
alt={`Schedule for ${day.date}`}
sx={{
objectFit: 'contain', // Garde l'image centrée et visible
}}
/>
<CardContent
sx={{
textAlign: 'center', // Centrer le texte
padding: '20px 40px', // Plus d'espace pour respirer
}}
>
<Typography variant="h5" component="div" sx={{fontWeight: 'bold', my: 1}}>
{day.date}
</Typography>
<Typography variant="subtitle1" color="textSecondary">
{day.location}
</Typography>
</CardContent>
</Card>
{index < schedule.length - 1 && (
<Divider variant={"fullWidth"} sx={{width: '100%', height: '6px', borderRadius: '3px', backgroundColor: 'primary.main', mt: 4}}/>
)}
</Box>
))}

<Footer/>
</Container>
);
};

export default Schedule;

0 comments on commit 7ada9c1

Please sign in to comment.