mirror of
https://github.com/LukeHagar/developer.sailpoint.com.git
synced 2025-12-09 12:27:47 +00:00
Agenda and Path changes
This commit is contained in:
191
src/pages/developerdays/agenda.js
Normal file
191
src/pages/developerdays/agenda.js
Normal file
@@ -0,0 +1,191 @@
|
|||||||
|
import React, {useEffect, useState} from 'react';
|
||||||
|
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
||||||
|
import Layout from '@theme/Layout';
|
||||||
|
import {getAgenda, getSpeaker} from '../../services/StreamService';
|
||||||
|
import {flushSync} from 'react-dom';
|
||||||
|
|
||||||
|
export default function Stream() {
|
||||||
|
const {siteConfig} = useDocusaurusContext();
|
||||||
|
const [agenda, setAgenda] = useState({
|
||||||
|
day1: [],
|
||||||
|
day2: [],
|
||||||
|
day3: [],
|
||||||
|
});
|
||||||
|
const [speakers, setSpeakers] = useState([]);
|
||||||
|
const [filterSelection, setFilterSelection] = React.useState('IDN');
|
||||||
|
const [loading, setLoading] = useState(true);
|
||||||
|
|
||||||
|
const dates = {
|
||||||
|
day1: new Date('2023-03-07').toLocaleDateString([], {dateStyle: 'full'}),
|
||||||
|
day2: new Date('2023-03-08').toLocaleDateString([], {dateStyle: 'full'}),
|
||||||
|
day3: new Date('2023-03-09').toLocaleDateString([], {dateStyle: 'full'}),
|
||||||
|
};
|
||||||
|
|
||||||
|
function formatSpeaker(id) {
|
||||||
|
return speakers?.filter((spkr) => spkr.id === id)[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
function diff_minutes(dt2, dt1) {
|
||||||
|
var diff = (dt2.getTime() - dt1.getTime()) / 1000;
|
||||||
|
diff /= 60;
|
||||||
|
return Math.abs(Math.round(diff));
|
||||||
|
}
|
||||||
|
|
||||||
|
const sessionFilter = (obj) => {
|
||||||
|
if (obj.hidden === true) return false;
|
||||||
|
return obj.stage === filterSelection;
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(async () => {
|
||||||
|
const tempAgenda = await getAgenda();
|
||||||
|
const tempSpeakers = await getSpeaker();
|
||||||
|
setAgenda(tempAgenda);
|
||||||
|
setSpeakers(tempSpeakers);
|
||||||
|
console.log(tempAgenda);
|
||||||
|
console.log(tempSpeakers);
|
||||||
|
setLoading(false);
|
||||||
|
console.log('Done Loading');
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Layout>
|
||||||
|
<main>
|
||||||
|
<div className="p-2 lg:px-28">
|
||||||
|
<p className="text-3xl text-center">Agenda</p>
|
||||||
|
<div className="flex flex-row gap-2 justify-center">
|
||||||
|
<button
|
||||||
|
className={`rounded p-2 hover:scale-[.90] w-[50px] border-2 ${
|
||||||
|
filterSelection === 'IDN'
|
||||||
|
? 'border-[#cc27b0] bg-[#cc27b0] text-white'
|
||||||
|
: 'border-slate-600'
|
||||||
|
}`}
|
||||||
|
onClick={() => setFilterSelection('IDN')}>
|
||||||
|
IDN
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
className={`rounded p-2 hover:scale-[.90] w-[50px] border-2 ${
|
||||||
|
filterSelection === 'IIQ'
|
||||||
|
? 'border-[#cc27b0] bg-[#cc27b0] text-white'
|
||||||
|
: 'border-slate-600'
|
||||||
|
}`}
|
||||||
|
onClick={() => setFilterSelection('IIQ')}>
|
||||||
|
IIQ
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
{loading && (
|
||||||
|
<>
|
||||||
|
<div className="flex flex-row justify-center">
|
||||||
|
<p className="text-center">Loading...</p>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
{!loading && (
|
||||||
|
<>
|
||||||
|
{['Day 1', 'Day 2', 'Day 3'].map((label) => {
|
||||||
|
const day = label.replace(' ', '').toLowerCase();
|
||||||
|
const sessions = agenda[day]?.filter(sessionFilter);
|
||||||
|
|
||||||
|
if (sessions.length > 0)
|
||||||
|
return (
|
||||||
|
<div key={day} className="p-2 flex flex-col ">
|
||||||
|
<p className="text-center">
|
||||||
|
{label} - {dates[day]}
|
||||||
|
</p>
|
||||||
|
<div className="flex flex-col gap-2">
|
||||||
|
{sessions.map((session) => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<div className="flex flex-row gap-4">
|
||||||
|
<div className="hidden lg:flex flex-col justify-center">
|
||||||
|
<p className="whitespace-nowrap">
|
||||||
|
{new Date(
|
||||||
|
session?.startTime,
|
||||||
|
).toLocaleTimeString([], {
|
||||||
|
hour: '2-digit',
|
||||||
|
minute: '2-digit',
|
||||||
|
timeZoneName: 'short',
|
||||||
|
})}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
key={session.title}
|
||||||
|
className="flex flex-col bg-[#0033a1] border-l-8 text-white border-[#54c0e8] rounded-lg p-4 grow hover:scale-[1.04] transform-gpu transition-all">
|
||||||
|
<div className="flex flex-col">
|
||||||
|
<div className="lg:hidden">
|
||||||
|
<p className="whitespace-nowrap">
|
||||||
|
{new Date(
|
||||||
|
session?.startTime,
|
||||||
|
).toLocaleTimeString([], {
|
||||||
|
hour: '2-digit',
|
||||||
|
minute: '2-digit',
|
||||||
|
timeZoneName: 'short',
|
||||||
|
})}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-row">
|
||||||
|
<div className="flex flex-col grow">
|
||||||
|
<div className="flex flex-row gap-2">
|
||||||
|
<p className="!m-0 text-2xl">
|
||||||
|
{session?.topic}
|
||||||
|
</p>
|
||||||
|
{/* <p className="!m-0 text-gray-200/50 my-auto">
|
||||||
|
- {session?.stage}
|
||||||
|
</p> */}
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col">
|
||||||
|
{session?.speakers?.map((spkr) => {
|
||||||
|
const speaker = formatSpeaker(spkr);
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
key={spkr}
|
||||||
|
className="flex flex-row gap-2 text-slate-300/50">
|
||||||
|
{/* <img
|
||||||
|
className="w-16 h-16 rounded-full"
|
||||||
|
src={speaker?.image}
|
||||||
|
/> */}
|
||||||
|
|
||||||
|
<p className="my-auto text-xl">
|
||||||
|
{speaker?.name} -{' '}
|
||||||
|
{speaker?.title}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="hidden lg:flex flex-col justify-center font-medium pr-8">
|
||||||
|
<p className="!m-0 text-center">
|
||||||
|
{diff_minutes(
|
||||||
|
new Date(session?.endTime),
|
||||||
|
new Date(session?.startTime),
|
||||||
|
)}
|
||||||
|
</p>
|
||||||
|
<p className="!m-0">min</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="lg:hidden">
|
||||||
|
<p className="!m-0">
|
||||||
|
{diff_minutes(
|
||||||
|
new Date(session?.endTime),
|
||||||
|
new Date(session?.startTime),
|
||||||
|
)}{' '}
|
||||||
|
min
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</Layout>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -26,7 +26,7 @@ export default function Home() {
|
|||||||
image={'/homepage/person-head.png'}
|
image={'/homepage/person-head.png'}
|
||||||
buttonText={'Explore our platform'}
|
buttonText={'Explore our platform'}
|
||||||
/>
|
/>
|
||||||
<HomepageTrainingGuides></HomepageTrainingGuides>
|
<HomepageTrainingGuides />
|
||||||
<HomepageBasics
|
<HomepageBasics
|
||||||
description={
|
description={
|
||||||
'The SailPoint Developer Forums are a great place to find solutions to common development problems.'
|
'The SailPoint Developer Forums are a great place to find solutions to common development problems.'
|
||||||
@@ -36,7 +36,7 @@ export default function Home() {
|
|||||||
image={'/homepage/discuss.png'}
|
image={'/homepage/discuss.png'}
|
||||||
buttonText={'Join the Discussion'}
|
buttonText={'Join the Discussion'}
|
||||||
/>
|
/>
|
||||||
<HomepageDiscuss></HomepageDiscuss>
|
<HomepageDiscuss />
|
||||||
<HomepageBasics
|
<HomepageBasics
|
||||||
description={
|
description={
|
||||||
"The Developer Relations team is responsible for creating a better developer experience on our platform. Click on someone to reach out to them, or <a href='https://developer.sailpoint.com/discuss/new-message?groupname=developer_relations/'>contact our team directly</a>."
|
"The Developer Relations team is responsible for creating a better developer experience on our platform. Click on someone to reach out to them, or <a href='https://developer.sailpoint.com/discuss/new-message?groupname=developer_relations/'>contact our team directly</a>."
|
||||||
@@ -45,7 +45,7 @@ export default function Home() {
|
|||||||
image={'/homepage/team.png'}
|
image={'/homepage/team.png'}
|
||||||
buttonText={''}
|
buttonText={''}
|
||||||
/>
|
/>
|
||||||
<HomepageTeam></HomepageTeam>
|
<HomepageTeam />
|
||||||
</main>
|
</main>
|
||||||
</Layout>
|
</Layout>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ module.exports = {
|
|||||||
corePlugins: {
|
corePlugins: {
|
||||||
preflight: true,
|
preflight: true,
|
||||||
},
|
},
|
||||||
content: ['./src/pages/*.js', './src/components/stream/**/*.js'],
|
content: ['./src/pages/**/*.js', './src/components/stream/**/*.js'],
|
||||||
theme: {
|
theme: {
|
||||||
extend: {},
|
extend: {},
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user