|
|
|
|
@ -5,68 +5,84 @@ import { ToolOverlay } from './components/CourseVisibility.jsx'
|
|
|
|
|
|
|
|
|
|
import { EventsView } from './components/EventsView.jsx'
|
|
|
|
|
import { HamburgerMenu } from './components/HamburgerMenu.jsx'
|
|
|
|
|
import { Icon } from './components/Icon.jsx'
|
|
|
|
|
import { Popup } from './components/Popup.jsx'
|
|
|
|
|
import { Toolbar } from './components/Toolbar.jsx'
|
|
|
|
|
|
|
|
|
|
window._ = _
|
|
|
|
|
window.dataBuffer = {}
|
|
|
|
|
// window._ = _
|
|
|
|
|
// window.dataBuffer = {}
|
|
|
|
|
|
|
|
|
|
const CALENDAR_IDS = {
|
|
|
|
|
'anno-1': '6308cfcb1df5cb026699ce32',
|
|
|
|
|
'anno-2': '6308e2dc09352a0208fefdd9',
|
|
|
|
|
'anno-3': '6308e42a1df5cb026699ced4',
|
|
|
|
|
'magistrale': '6308e8ea0c34e703bb1f7e85',
|
|
|
|
|
'anno-1': ['6308cfcb1df5cb026699ce32'],
|
|
|
|
|
'anno-2': ['6308e2dc09352a0208fefdd9'],
|
|
|
|
|
'anno-3': ['6308e42a1df5cb026699ced4'],
|
|
|
|
|
'magistrale': ['6308e8ea0c34e703bb1f7e85'],
|
|
|
|
|
'tutti': [
|
|
|
|
|
'6308cfcb1df5cb026699ce32',
|
|
|
|
|
'6308e2dc09352a0208fefdd9',
|
|
|
|
|
'6308e42a1df5cb026699ced4',
|
|
|
|
|
'6308e8ea0c34e703bb1f7e85',
|
|
|
|
|
],
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function loadEventi(ids) {
|
|
|
|
|
const calendari = await Promise.all(
|
|
|
|
|
ids.map(async id => {
|
|
|
|
|
// Almost directly copy-pasted from Chrome Dev Tools
|
|
|
|
|
const req = await fetch(
|
|
|
|
|
'https://apache.prod.up.cineca.it/api/Impegni/getImpegniCalendarioPubblico',
|
|
|
|
|
{
|
|
|
|
|
headers: {
|
|
|
|
|
'content-type': 'application/json;charset=UTF-8',
|
|
|
|
|
'sec-fetch-dest': 'empty',
|
|
|
|
|
'sec-fetch-mode': 'cors',
|
|
|
|
|
'sec-fetch-site': 'same-site',
|
|
|
|
|
},
|
|
|
|
|
body: JSON.stringify({
|
|
|
|
|
mostraImpegniAnnullati: true,
|
|
|
|
|
mostraIndisponibilitaTotali: false,
|
|
|
|
|
linkCalendarioId: id,
|
|
|
|
|
clienteId: '628de8b9b63679f193b87046',
|
|
|
|
|
pianificazioneTemplate: false,
|
|
|
|
|
dataInizio: '2022-10-02T22:00:00.000Z',
|
|
|
|
|
dataFine: '2022-10-07T22:00:00.000Z',
|
|
|
|
|
}),
|
|
|
|
|
method: 'POST',
|
|
|
|
|
mode: 'cors',
|
|
|
|
|
credentials: 'omit',
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
return await req.json()
|
|
|
|
|
})
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
console.log(calendari)
|
|
|
|
|
|
|
|
|
|
if (ids.length === 1) {
|
|
|
|
|
return calendari[0]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return _.uniqBy(_.concat(...calendari), 'id')
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const App = ({}) => {
|
|
|
|
|
const [source, setSource] = useState('magistrale')
|
|
|
|
|
|
|
|
|
|
const [eventi, setEventi] = useState([])
|
|
|
|
|
|
|
|
|
|
const [selectedCourses, setSelectedCourses] = useState([])
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
setSelectedCourses([])
|
|
|
|
|
}, [source])
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
// Directly copy-pasted from chrome Dev Tools
|
|
|
|
|
const request = fetch(
|
|
|
|
|
'https://apache.prod.up.cineca.it/api/Impegni/getImpegniCalendarioPubblico',
|
|
|
|
|
{
|
|
|
|
|
headers: {
|
|
|
|
|
'content-type': 'application/json;charset=UTF-8',
|
|
|
|
|
'sec-fetch-dest': 'empty',
|
|
|
|
|
'sec-fetch-mode': 'cors',
|
|
|
|
|
'sec-fetch-site': 'same-site',
|
|
|
|
|
},
|
|
|
|
|
body: JSON.stringify({
|
|
|
|
|
mostraImpegniAnnullati: true,
|
|
|
|
|
mostraIndisponibilitaTotali: false,
|
|
|
|
|
linkCalendarioId: CALENDAR_IDS[source],
|
|
|
|
|
clienteId: '628de8b9b63679f193b87046',
|
|
|
|
|
pianificazioneTemplate: false,
|
|
|
|
|
dataInizio: '2022-10-02T22:00:00.000Z',
|
|
|
|
|
dataFine: '2022-10-07T22:00:00.000Z',
|
|
|
|
|
}),
|
|
|
|
|
method: 'POST',
|
|
|
|
|
mode: 'cors',
|
|
|
|
|
credentials: 'omit',
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// const request = fetch('/data.json')
|
|
|
|
|
|
|
|
|
|
console.time('loading eventi')
|
|
|
|
|
|
|
|
|
|
request
|
|
|
|
|
.then(res => res.json())
|
|
|
|
|
.then(data => {
|
|
|
|
|
console.timeEnd('loading eventi')
|
|
|
|
|
window.dataBuffer[source] = data
|
|
|
|
|
setEventi(data)
|
|
|
|
|
})
|
|
|
|
|
useEffect(async () => {
|
|
|
|
|
const eventi = await loadEventi(CALENDAR_IDS[source])
|
|
|
|
|
// window.dataBuffer[source] = eventi
|
|
|
|
|
setEventi(eventi)
|
|
|
|
|
}, [source])
|
|
|
|
|
|
|
|
|
|
const [helpVisible, setHelpVisible] = useState(false)
|
|
|
|
|
|
|
|
|
|
const [mode, setMode] = useState('course')
|
|
|
|
|
|
|
|
|
|
const [hideOtherCourses, setHideOtherCourses] = useState(false)
|
|
|
|
|
@ -76,7 +92,7 @@ const App = ({}) => {
|
|
|
|
|
setHideOtherCourses(false)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const [showMobileMenu, setShowMobileMenu] = useState(true)
|
|
|
|
|
const [showMobileMenu, setShowMobileMenu] = useState(false)
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<>
|
|
|
|
|
@ -87,6 +103,7 @@ const App = ({}) => {
|
|
|
|
|
source,
|
|
|
|
|
setSource,
|
|
|
|
|
onShowMenu: () => setShowMobileMenu(true),
|
|
|
|
|
onHelp: () => setHelpVisible(true),
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
<EventsView
|
|
|
|
|
@ -120,11 +137,93 @@ const App = ({}) => {
|
|
|
|
|
)}
|
|
|
|
|
{showMobileMenu && (
|
|
|
|
|
<HamburgerMenu
|
|
|
|
|
onClose={() => {
|
|
|
|
|
setShowMobileMenu(false)
|
|
|
|
|
{...{
|
|
|
|
|
mode,
|
|
|
|
|
setMode,
|
|
|
|
|
source,
|
|
|
|
|
setSource,
|
|
|
|
|
onClose: () => {
|
|
|
|
|
setShowMobileMenu(false)
|
|
|
|
|
},
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
|
|
|
|
{helpVisible && (
|
|
|
|
|
<Popup
|
|
|
|
|
title={
|
|
|
|
|
<>
|
|
|
|
|
<Icon name="info" /> Aiuto
|
|
|
|
|
</>
|
|
|
|
|
}
|
|
|
|
|
onClose={() => setHelpVisible(false)}
|
|
|
|
|
>
|
|
|
|
|
<h1>Titolo</h1>
|
|
|
|
|
<p>
|
|
|
|
|
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Similique eum
|
|
|
|
|
pariatur amet. Laborum quos repudiandae corrupti, exercitationem cum labore
|
|
|
|
|
doloribus.
|
|
|
|
|
</p>
|
|
|
|
|
<p>
|
|
|
|
|
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Similique eum
|
|
|
|
|
pariatur amet. Laborum quos repudiandae corrupti, exercitationem cum labore
|
|
|
|
|
doloribus.
|
|
|
|
|
</p>
|
|
|
|
|
<p>
|
|
|
|
|
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Similique eum
|
|
|
|
|
pariatur amet. Laborum quos repudiandae corrupti, exercitationem cum labore
|
|
|
|
|
doloribus.
|
|
|
|
|
</p>
|
|
|
|
|
<h2>Sottotitolo</h2>
|
|
|
|
|
<p>
|
|
|
|
|
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Similique eum
|
|
|
|
|
pariatur amet. Laborum quos repudiandae corrupti, exercitationem cum labore
|
|
|
|
|
doloribus.
|
|
|
|
|
</p>
|
|
|
|
|
<p>
|
|
|
|
|
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Similique eum
|
|
|
|
|
pariatur amet. Laborum quos repudiandae corrupti, exercitationem cum labore
|
|
|
|
|
doloribus.
|
|
|
|
|
</p>
|
|
|
|
|
<p>
|
|
|
|
|
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Similique eum
|
|
|
|
|
pariatur amet. Laborum quos repudiandae corrupti, exercitationem cum labore
|
|
|
|
|
doloribus.
|
|
|
|
|
</p>
|
|
|
|
|
<h2>Sottotitolo</h2>
|
|
|
|
|
<p>
|
|
|
|
|
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Similique eum
|
|
|
|
|
pariatur amet. Laborum quos repudiandae corrupti, exercitationem cum labore
|
|
|
|
|
doloribus.
|
|
|
|
|
</p>
|
|
|
|
|
<p>
|
|
|
|
|
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Similique eum
|
|
|
|
|
pariatur amet. Laborum quos repudiandae corrupti, exercitationem cum labore
|
|
|
|
|
doloribus.
|
|
|
|
|
</p>
|
|
|
|
|
<h3>Sottosottotitolo</h3>
|
|
|
|
|
<p>
|
|
|
|
|
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Similique eum
|
|
|
|
|
pariatur amet. Laborum quos repudiandae corrupti, exercitationem cum labore
|
|
|
|
|
doloribus.
|
|
|
|
|
</p>
|
|
|
|
|
<p>
|
|
|
|
|
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Similique eum
|
|
|
|
|
pariatur amet. Laborum quos repudiandae corrupti, exercitationem cum labore
|
|
|
|
|
doloribus.
|
|
|
|
|
</p>
|
|
|
|
|
<h3>Sottosottotitolo</h3>
|
|
|
|
|
<p>
|
|
|
|
|
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Similique eum
|
|
|
|
|
pariatur amet. Laborum quos repudiandae corrupti, exercitationem cum labore
|
|
|
|
|
doloribus.
|
|
|
|
|
</p>
|
|
|
|
|
<p>
|
|
|
|
|
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Similique eum
|
|
|
|
|
pariatur amet. Laborum quos repudiandae corrupti, exercitationem cum labore
|
|
|
|
|
doloribus.
|
|
|
|
|
</p>
|
|
|
|
|
</Popup>
|
|
|
|
|
)}
|
|
|
|
|
</>
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|