|
|
@ -3,11 +3,7 @@ import { useEffect, useRef, useState } from 'preact/hooks'
|
|
|
|
import _ from 'lodash'
|
|
|
|
import _ from 'lodash'
|
|
|
|
import { differenceInMinutes, startOfDay } from 'date-fns'
|
|
|
|
import { differenceInMinutes, startOfDay } from 'date-fns'
|
|
|
|
|
|
|
|
|
|
|
|
import {
|
|
|
|
import { WEEK_DAYS_SHORT, prettyCourseName, usePersistentState } from '../../utils.jsx'
|
|
|
|
WEEK_DAYS_SHORT,
|
|
|
|
|
|
|
|
prettyCourseName,
|
|
|
|
|
|
|
|
usePersistentState,
|
|
|
|
|
|
|
|
} from '../../utils.jsx'
|
|
|
|
|
|
|
|
import { layoutEvents, layoutIntervals } from '../../interval-layout.js'
|
|
|
|
import { layoutEvents, layoutIntervals } from '../../interval-layout.js'
|
|
|
|
import { Popup } from '../Popup.jsx'
|
|
|
|
import { Popup } from '../Popup.jsx'
|
|
|
|
import { Icon } from '../Icon.jsx'
|
|
|
|
import { Icon } from '../Icon.jsx'
|
|
|
@ -17,28 +13,23 @@ const TransposePopup = ({ onClose }) => {
|
|
|
|
<Popup
|
|
|
|
<Popup
|
|
|
|
title={
|
|
|
|
title={
|
|
|
|
<>
|
|
|
|
<>
|
|
|
|
<Icon name="info" /> Attenzione! La tabella è stata
|
|
|
|
<Icon name="info" /> Attenzione! La tabella è stata trasposta!
|
|
|
|
trasposta!
|
|
|
|
|
|
|
|
</>
|
|
|
|
</>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
onClose={onClose}
|
|
|
|
onClose={onClose}
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<p>
|
|
|
|
<p>A grande richiesta popolare abbiamo trasposto la tabella dell'orario!</p>
|
|
|
|
A grande richiesta popolare abbiamo trasposto la tabella
|
|
|
|
|
|
|
|
dell'orario!
|
|
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
<p>
|
|
|
|
Assicurati quindi di leggerla correttamente (dall'alto verso il
|
|
|
|
Assicurati quindi di leggerla correttamente (dall'alto verso il basso
|
|
|
|
basso invece che da sinistra verso destra).
|
|
|
|
invece che da sinistra verso destra).
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
<p>
|
|
|
|
Se preferisci utilizzare la versione vecchia, puoi utilizzare il
|
|
|
|
Se preferisci utilizzare la versione vecchia, puoi utilizzare il pulsante
|
|
|
|
pulsante Trasponi{' '}
|
|
|
|
Trasponi <Icon name="switch_left" style="transform: rotate(-45deg)" />{' '}
|
|
|
|
<Icon name="switch_left" style="transform: rotate(-45deg)" />{' '}
|
|
|
|
nell'origine della tabella per trasporla. Questa scelta verrà salvata nei
|
|
|
|
nell'origine della tabella per trasporla. Questa scelta verrà
|
|
|
|
cookie e verrà ricordata in futuro
|
|
|
|
salvata nei cookie e verrà ricordata in futuro
|
|
|
|
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
</Popup>
|
|
|
|
</Popup>
|
|
|
|
)
|
|
|
|
)
|
|
|
@ -49,8 +40,8 @@ const NoCourseWarning = () => {
|
|
|
|
<div class="warning">
|
|
|
|
<div class="warning">
|
|
|
|
<p>Non hai ancora selezionato nessun corso.</p>
|
|
|
|
<p>Non hai ancora selezionato nessun corso.</p>
|
|
|
|
<p>
|
|
|
|
<p>
|
|
|
|
Clicca sui corsi nelle altre visuali per selezionarli e
|
|
|
|
Clicca sui corsi nelle altre visuali per selezionarli e visualizzarli
|
|
|
|
visualizzarli nell'orario
|
|
|
|
nell'orario
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
)
|
|
|
|
)
|
|
|
@ -75,13 +66,10 @@ const Layout = ({ layout, day, colors }) => {
|
|
|
|
style={{
|
|
|
|
style={{
|
|
|
|
'--block-size': block.end - block.start,
|
|
|
|
'--block-size': block.end - block.start,
|
|
|
|
'--size': event.end - event.start,
|
|
|
|
'--size': event.end - event.start,
|
|
|
|
'--relative-start':
|
|
|
|
'--relative-start': event.start - block.start,
|
|
|
|
event.start - block.start,
|
|
|
|
|
|
|
|
'--index': event.index,
|
|
|
|
'--index': event.index,
|
|
|
|
'--of': block.layers,
|
|
|
|
'--of': block.layers,
|
|
|
|
'--color': `var(--event-${
|
|
|
|
'--color': `var(--event-${colors[event.id]})`,
|
|
|
|
colors[event.id]
|
|
|
|
|
|
|
|
})`,
|
|
|
|
|
|
|
|
}}
|
|
|
|
}}
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<div class="event">
|
|
|
|
<div class="event">
|
|
|
@ -118,16 +106,11 @@ const ScheduleGrid = ({
|
|
|
|
class="small"
|
|
|
|
class="small"
|
|
|
|
onClick={() =>
|
|
|
|
onClick={() =>
|
|
|
|
setOrientation(
|
|
|
|
setOrientation(
|
|
|
|
orientation === 'original'
|
|
|
|
orientation === 'original' ? 'transposed' : 'original'
|
|
|
|
? 'transposed'
|
|
|
|
|
|
|
|
: 'original'
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<Icon
|
|
|
|
<Icon name="switch_left" style="transform: rotate(-45deg)" />
|
|
|
|
name="switch_left"
|
|
|
|
|
|
|
|
style="transform: rotate(-45deg)"
|
|
|
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
</button>
|
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{[1, 2, 3, 4, 5].map(n => (
|
|
|
|
{[1, 2, 3, 4, 5].map(n => (
|
|
|
@ -215,20 +198,9 @@ export const Schedule = ({ timetables, selection }) => {
|
|
|
|
'transpose_info',
|
|
|
|
'transpose_info',
|
|
|
|
'false'
|
|
|
|
'false'
|
|
|
|
)
|
|
|
|
)
|
|
|
|
const [orientation, setOrientation] = usePersistentState(
|
|
|
|
const [orientation, setOrientation] = usePersistentState('orientation', 'original')
|
|
|
|
'orientation',
|
|
|
|
|
|
|
|
'original'
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const colorList = [
|
|
|
|
const colorList = ['red', 'purple', 'blue', 'yellow', 'green', 'orange', 'lightblue']
|
|
|
|
'red',
|
|
|
|
|
|
|
|
'purple',
|
|
|
|
|
|
|
|
'blue',
|
|
|
|
|
|
|
|
'yellow',
|
|
|
|
|
|
|
|
'green',
|
|
|
|
|
|
|
|
'orange',
|
|
|
|
|
|
|
|
'lightblue',
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const allEvents = timetables['tutti']
|
|
|
|
const allEvents = timetables['tutti']
|
|
|
|
const selectionSet = new Set(selection)
|
|
|
|
const selectionSet = new Set(selection)
|
|
|
|