feat: Frontpage date tweaks (#582)

* Only the daySummary part (timetable info) should use date for next day or next week.
* Restructured test-data
* Add test for parsing Microsoft special date json format
This commit is contained in:
Andreas Eriksson 2021-12-05 00:12:20 +01:00 committed by GitHub
parent 7c017e460b
commit 66e7811b83
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 1710 additions and 24 deletions

View File

@ -21,6 +21,7 @@ import React, { useEffect } from 'react'
import { TouchableOpacity, useColorScheme, View } from 'react-native'
import { useTranslation } from '../hooks/useTranslation'
import { Colors, Layout, Sizing } from '../styles'
import { getMeaningfulStartingDate } from '../utils/calendarHelpers'
import { studentName } from '../utils/peopleHelpers'
import { DaySummary } from './daySummary.component'
import { AlertIcon, RightArrowIcon } from './icon.component'
@ -109,10 +110,6 @@ export const ChildListItem = ({
return moment(inputDate).fromNow()
}
const capitalizeFirstLetter = (string) => {
return string.charAt(0).toUpperCase() + string.slice(1)
}
const getClassName = () => {
// hack: we can find the class name (ex. 8C) from the classmates.
// let's pick the first one and select theirs class
@ -148,7 +145,7 @@ export const ChildListItem = ({
const className = getClassName()
const styles = useStyleSheet(themeStyles)
const isDarkMode = useColorScheme() === 'dark'
const meaningfulStartingDate = getMeaningfulStartingDate(currentDate)
return (
<TouchableOpacity
onPress={() => navigation.navigate('Child', { child, color })}
@ -172,12 +169,8 @@ export const ChildListItem = ({
/>
</View>
</View>
{moment().weekday() !== currentDate.weekday() ? (
<Text category="c2" style={styles.weekday}>
{capitalizeFirstLetter(currentDate.format('dddd'))}
</Text>
) : null}
<DaySummary child={child} date={currentDate} />
<DaySummary child={child} date={meaningfulStartingDate} />
{scheduleAndCalendarThisWeek.slice(0, 3).map((calendarItem, i) => (
<Text category="p1" key={i}>
@ -288,8 +281,4 @@ const themeStyles = StyleService.create({
marginBottom: 0,
},
noNewNewsItemsText: {},
weekday: {
marginBottom: -5,
padding: 0,
},
})

View File

@ -26,7 +26,6 @@ import { Colors, Layout as LayoutStyle, Sizing, Typography } from '../styles'
import { translate } from '../utils/translation'
import { ChildListItem } from './childListItem.component'
import { SettingsIcon, RefreshIcon } from './icon.component'
import { getMeaningfulStartingDate } from '../utils/calendarHelpers'
const colors = ['primary', 'success', 'info', 'warning', 'danger']
@ -81,8 +80,6 @@ export const Children = () => {
})
}, [navigation, reloadChildren])
const currentDate = getMeaningfulStartingDate()
// We need to skip safe area view here, due to the reason that it's adding a white border
// when this view is actually lightgrey. Taking the padding top value from the use inset hook.
return status === 'loaded' ? (
@ -107,7 +104,6 @@ export const Children = () => {
<ChildListItem
child={child}
color={colors[index % colors.length]}
currentDate={currentDate}
updated={updatedAt}
key={child.id}
/>

View File

@ -12,6 +12,10 @@ interface DaySummaryProps {
date?: Moment
}
const capitalizeFirstLetter = (string) => {
return string.charAt(0).toUpperCase() + string.slice(1)
}
export const DaySummary = ({
child,
date: currentDate = moment(),
@ -38,6 +42,11 @@ export const DaySummary = ({
return (
<View>
{moment().weekday() !== currentDate.weekday() ? (
<Text category="c2" style={styles.weekday}>
{capitalizeFirstLetter(currentDate.format('dddd'))}
</Text>
) : null}
<View style={styles.summary}>
<View style={styles.part}>
<View>
@ -89,4 +98,8 @@ const themedStyles = StyleService.create({
heading: {
marginBottom: -10,
},
weekday: {
marginBottom: -10,
padding: 0,
},
})

View File

@ -9,6 +9,14 @@ const saturdayEvening = moment('2021-12-04T19:20:26+0100')
const sundayEvening = moment('2021-12-05T19:20:26+0100')
const mondayEvening = moment('2021-12-06T19:20:26+0100')
describe('getMeaningfulStartingDate should not touch inputdate', () => {
const origDate = moment()
const origDateClone = origDate.clone()
getMeaningfulStartingDate(origDate)
expect(origDate).toEqual(origDateClone)
})
describe('getMeaningfulStartingDate on weekends', () => {
it('should give next monday if on friday evening', () => {
const startDate = getMeaningfulStartingDate(fridayEvening)

View File

@ -2,16 +2,17 @@ import moment from 'moment'
export const getMeaningfulStartingDate = (date = moment()) => {
const originalDate = date.clone()
let returnDate = date.clone()
// are we on the evening?
if (date.hour() > 17) date = date.add('1', 'day')
if (date.hour() > 17) returnDate.add('1', 'day')
// are we on the weekend
if (date.isoWeekday() > 5) {
date = date.add(5, 'days').startOf('isoWeek')
date
if (returnDate.isoWeekday() > 5) {
returnDate = returnDate.add(5, 'days').startOf('isoWeek')
returnDate
.hour(originalDate.hour())
.minute(originalDate.minute())
.second(originalDate.second())
}
return date
return returnDate
}

View File

@ -0,0 +1,29 @@
import { EtjanstChild, Skola24Child } from "@skolplattformen/api"
export const children = (): EtjanstChild[] => [
{
name: 'Shanel Nilsson (elev)',
id: '39b59e-bf4b9f-f68ac25321-977218-bf0',
sdsId: '8e81a06-53f55fb-d1b93-f0e5b357ad0b7caaf1d36',
status: 'F;GR',
schoolId: '9e58434-8800-da59547-614bf0e-e09c015',
},
{
name: 'Alan Nilsson (elev)',
id: 'eea96a-a3e045-caab589391-ed7d17-029',
sdsId: 'bc2d341-8d970cc-69526-43501c082aaa870d9fe99',
status: 'GR',
schoolId: '8e6b13b-3116-e66c39b-a4c3fa5-a1d72d9',
},
]
export const skola24Children = (): Skola24Child[] => [
{
firstName: 'Shanel',
lastName: 'Jonsson Nilsson',
personGuid: 'abc123',
schoolGuid: 'def456',
schoolID: 'Superskolan',
timetableID: 'jkl012',
unitGuid: 'mno345'
},
]

View File

@ -0,0 +1,448 @@
import { Child, Classmate } from '@skolplattformen/api';
import { children } from './children'
export const classmates = (child: Child): Classmate[] => classmatesData.get(child.id) ?? []
const [child1, child2] = children()
const classmatesData = new Map<string, Classmate[]>([
[
child1.id, [
{
sisId: 'd004a-98d965a-45174-d2894ca2-f74ebcb',
firstname: 'Darion',
lastname: 'Gustafsson',
guardians: [
{
email: 'Mike_Svensson@example.net',
firstname: 'Tad',
lastname: 'Eriksson',
mobile: '07074791613',
address: 'Martinvägen 50',
},
],
className: '2B',
},
{
sisId: '54075-284de06-5664c-750b7b13-520fb61',
firstname: 'Brock',
lastname: 'Andersson',
guardians: [
{
email: 'Brad56@example.org',
firstname: 'Camren',
lastname: 'Eriksson',
mobile: '07075129297',
address: undefined,
},
],
className: '2B',
},
{
sisId: 'c1fc7-285f95d-c0f37-ea48a297-281e985',
firstname: 'Eloy',
lastname: 'Karlsson',
guardians: [
{
email: 'Samara.Larsson@example.net',
firstname: 'Ike',
lastname: 'Gustafsson',
mobile: '07077667407',
address: undefined,
},
],
className: '2B',
},
{
sisId: '212e9-8a2609c-b29c1-97a32bd8-5f84645',
firstname: 'Kristina',
lastname: 'Eriksson',
guardians: [
{
email: 'Doug57@example.com',
firstname: 'Rollin',
lastname: 'Olsson',
mobile: '07071720107',
address: 'Höckertsvägen 2',
},
],
className: '2B',
},
{
sisId: '01d21-ebc6f8b-526f8-7cfba0ab-26b9956',
firstname: 'Cydney',
lastname: 'Larsson',
guardians: [
{
email: 'Davon6@example.org',
firstname: 'Oleta',
lastname: 'Svensson',
mobile: '07079762186',
address: undefined,
},
],
className: '2B',
},
{
sisId: 'a45bb-8a481af-0ad12-7bd1fa4c-1eed4b1',
firstname: 'Berneice',
lastname: 'Persson',
guardians: [
{
email: 'Milford_Johansson72@example.com',
firstname: 'Arely',
lastname: 'Johansson',
mobile: '07071926019',
address: 'Roslinvägen 36',
},
],
className: '2B',
},
{
sisId: '32f31-039fbed-9060b-2d857c46-e47177d',
firstname: 'Emory',
lastname: 'Svensson',
guardians: [
{
email: 'Alfredo_Nilsson96@example.org',
firstname: 'Dolores',
lastname: 'Andersson',
mobile: '070752561937',
address: 'Börjesonsvägen 6',
},
],
className: '2B',
},
{
sisId: 'c9d0a-28c371d-e7be2-9781386b-6841eb0',
firstname: 'Maryjane',
lastname: 'Eriksson',
guardians: [
{
email: 'Eula_Olsson@example.net',
firstname: 'Wendy',
lastname: 'Andersson',
mobile: '07078513037',
address: undefined,
},
{
email: 'Lesley_Persson45@example.org',
firstname: 'Erich',
lastname: 'Persson',
mobile: '070788191316',
address: undefined,
},
],
className: '2B',
},
{
sisId: 'e0f51-3fbd0be-5a8c3-ded7bbed-1d655d5',
firstname: 'Rosendo',
lastname: 'Eriksson',
guardians: [
{
email: 'Mitchell.Gustafsson84@example.org',
firstname: 'Mariam',
lastname: 'Johansson',
mobile: '07074537423',
address: 'Molinvägen 29',
},
{
email: 'Rachelle_Olsson@example.net',
firstname: 'Shaniya',
lastname: 'Persson',
mobile: '070765878480',
address: 'Molinvägen 29',
},
],
className: '2B',
},
{
sisId: '298c2-46a24d4-548b9-3d1f90ee-4fae0ab',
firstname: 'Sammy',
lastname: 'Persson',
guardians: [
{
email: 'Gloria_Svensson@example.com',
firstname: 'Simeon',
lastname: 'Olsson',
mobile: '070753525610',
address: 'Börjesonsvägen 43',
},
],
className: '2B',
},
{
sisId: 'e7628-09352ea-b5d19-1af845b7-63b3e08',
firstname: 'Abraham',
lastname: 'Svensson',
guardians: [
{
email: 'Erica_Johansson40@example.net',
firstname: 'Carlotta',
lastname: 'Nilsson',
mobile: '070737951712',
address: 'Aroseniusvägen 27',
},
{
email: 'Malcolm_Gustafsson55@example.org',
firstname: 'Ramon',
lastname: 'Persson',
mobile: '07070395626',
address: 'Aroseniusvägen 27',
},
],
className: '2B',
},
{
sisId: 'ae315-4696438-b3db6-8f0a5b39-74e34bd',
firstname: 'Devante',
lastname: 'Olsson',
guardians: [
{
email: 'Alf.Johansson39@example.com',
firstname: 'Schuyler',
lastname: 'Gustafsson',
mobile: '07070724289',
address: undefined,
},
],
className: '2B',
},
{
sisId: '0d812-350f1d5-323aa-d5d93cdd-406e337',
firstname: 'Tyrell',
lastname: 'Eriksson',
guardians: [
{
email: 'Brennon.Svensson@example.com',
firstname: 'Belle',
lastname: 'Nilsson',
mobile: '07070137347',
address: undefined,
},
],
className: '2B',
},
]],
[
child2.id, [
{
sisId: '9ee9e-312233c-0df98-05fa5a65-a3787ec',
firstname: 'Raphael',
lastname: 'Olsson',
guardians: [
{
email: 'Johan99@example.com',
firstname: 'Alessandra',
lastname: 'Svensson',
mobile: '070767120463',
address: 'Franklandsvägen 34',
},
],
className: '8C',
},
{
sisId: 'd3a4b-16b53de-63c22-56d1ad24-4a64a2d',
firstname: 'Fanny',
lastname: 'Karlsson',
guardians: [
{
email: 'Bernadette.Eriksson@example.org',
firstname: 'Bernadette',
lastname: 'Karlsson',
mobile: '070759877956',
address: undefined,
},
{
email: 'Candice29@example.net',
firstname: 'Kelley',
lastname: 'Gustafsson',
mobile: '070748592035',
address: undefined,
},
],
className: '8C',
},
{
sisId: '42bde-8fabd1c-7a00e-28aea88a-8481bac',
firstname: 'Jamie',
lastname: 'Persson',
guardians: [
{
email: 'Louisa82@example.net',
firstname: 'Mose',
lastname: 'Larsson',
mobile: '07076548362',
address: undefined,
},
],
className: '8C',
},
{
sisId: 'dad49-74308c8-83612-5eb7f3a5-e1c4047',
firstname: 'Iris',
lastname: 'Eriksson',
guardians: [
{
email: 'Vaughn90@example.net',
firstname: 'Ezra',
lastname: 'Andersson',
mobile: '07078700165',
address: 'Björnsonsgatan 251 D Lgh 1503',
},
{
email: 'Stephany_Svensson22@example.net',
firstname: 'Mia',
lastname: 'Larsson',
mobile: '070761752378',
address: 'Björnsonsgatan 251 D Lgh 1503',
},
],
className: '8C',
},
{
sisId: 'b3425-ada6d70-d3acc-a49a12a6-8b3afdc',
firstname: 'Evans',
lastname: 'Nilsson',
guardians: [
{
email: 'Terry_Svensson@example.com',
firstname: 'Christop',
lastname: 'Olsson',
mobile: '070767660094',
address: undefined,
},
{
email: 'Johanna_Svensson30@example.org',
firstname: 'Madisen',
lastname: 'Johansson',
mobile: '07072269029',
address: undefined,
},
],
className: '8C',
},
{
sisId: '67471-6c03979-9ef6e-bb2827c4-96d00d5',
firstname: 'Evy',
lastname: 'Larsson',
guardians: [
{
email: 'Serenity.Gustafsson@example.net',
firstname: 'Toni',
lastname: 'Larsson',
mobile: '07075211567',
address: 'Roslinvägen 48',
},
],
className: '8C',
},
{
sisId: 'f4040-516c4ed-34555-fd525183-6a2f666',
firstname: 'Maximillia',
lastname: 'Karlsson',
guardians: [
{
email: 'Faustino.Andersson@example.com',
firstname: 'Eriberto',
lastname: 'Nilsson',
mobile: '07076024039',
address: 'Beckombergavägen 213 Lgh 1304',
},
],
className: '8C',
},
{
sisId: 'a9494-75d8ca7-a5fd4-977eca3c-40edbc1',
firstname: 'Pia',
lastname: 'Karlsson',
guardians: [
{
email: 'Arthur.Karlsson4@example.org',
firstname: 'Eldred',
lastname: 'Svensson',
mobile: '07077609534',
address: 'Börjesonsvägen 6',
},
],
className: '8C',
},
{
sisId: '42a6d-3eaf407-fed01-4a9538de-b822503',
firstname: 'Logan',
lastname: 'Larsson',
guardians: [
{
email: 'Blake4@example.org',
firstname: 'Jan',
lastname: 'Karlsson',
mobile: '070728715653',
address: 'Bällstavägen 162',
},
],
className: '8C',
},
{
sisId: '9077d-c323c8d-d0d29-5690abfb-d348317',
firstname: 'Torun',
lastname: 'Eriksson',
guardians: [
{
email: 'Blanca98@example.net',
firstname: 'Dallin',
lastname: 'Eriksson',
mobile: '070766214425',
address: 'Molinvägen 1',
},
],
className: '8C',
},
{
sisId: '31c68-5b86667-0701d-6b7e2471-89e6df9',
firstname: 'Izabella',
lastname: 'Johansson',
guardians: [
{
email: 'Elouise_Johansson25@example.org',
firstname: 'Jerrold',
lastname: 'Nilsson',
mobile: '07073789274',
address: 'Stobaeusvägen 11',
},
],
className: '8C',
},
{
sisId: '1bb69-5f1c3a6-f0ea8-e1dbb608-2756a52',
firstname: 'Ella',
lastname: 'Persson',
guardians: [
{
email: 'Shayna.Olsson54@example.net',
firstname: 'Onie',
lastname: 'Nilsson',
mobile: '07076957797',
address: undefined,
},
],
className: '8C',
},
{
sisId: '348a7-2d0eccc-02981-a02ccb03-cb2a8f2',
firstname: 'Jaylen',
lastname: 'Larsson',
guardians: [
{
email: 'Aileen_Andersson@example.net',
firstname: 'Tess',
lastname: 'Karlsson',
mobile: '070715315590',
address: 'Peringskiöldsvägen 64',
},
],
className: '8C',
}
],
]
])

View File

@ -0,0 +1,509 @@
import { fourDaysAgo, oneDayAgo, oneWeekAgo } from './dates';
/* eslint-disable max-len */
import {
CalendarItem,
Child,
Notification,
ScheduleItem,
User,
} from '@skolplattformen/api';
import { oneDayForward, oneWeekForward, twoDaysForward } from './dates';
const data: any = {
'39b59e-bf4b9f-f68ac25321-977218-bf0': {
calendar: [
{
title: 'Terminslut',
id: 73,
description: null,
location: null,
startDate: '2020-12-18',
endDate: '2020-12-18',
allDay: true,
},
{
title: 'Terminen börjar',
id: 74,
description: null,
location: null,
startDate: '2021-01-12',
endDate: '2021-01-12',
allDay: true,
},
{
title: 'APT - fritids stänger 15:45',
id: 75,
description: null,
location: null,
startDate: '2021-01-21',
endDate: '2021-01-21',
allDay: true,
},
{
title: 'Utvecklingsamtal',
id: 76,
description: null,
location: null,
startDate: '2021-02-04',
endDate: '2021-02-04',
allDay: true,
},
{
title: 'Vänliga veckan',
id: 77,
description: null,
location: null,
startDate: '2021-02-08',
endDate: '2021-02-12',
allDay: true,
},
{
title: 'Utvecklingsamtal',
id: 79,
description: null,
location: null,
startDate: '2021-02-09',
endDate: '2021-02-09',
allDay: true,
},
{
title: 'Trygghetsdag',
id: 78,
description: null,
location: null,
startDate: '2021-02-12',
endDate: '2021-02-12',
allDay: true,
},
{
title: 'APT fritids stänger 15:45',
id: 80,
description: null,
location: null,
startDate: '2021-02-25',
endDate: '2021-02-25',
allDay: true,
},
{
title: 'Sportlov',
id: 81,
description: null,
location: null,
startDate: '2021-03-01',
endDate: '2021-03-05',
allDay: true,
},
{
title: 'Studiedag',
id: 82,
description: null,
location: null,
startDate: oneWeekForward.startOf('day').toISODate(),
endDate: oneWeekForward.endOf('day').toISODate(),
allDay: true,
},
{
title: 'APT - fritids stänger 15:45',
id: 83,
description: null,
location: null,
startDate: '2021-04-01',
endDate: '2021-04-01',
allDay: true,
},
{
title: 'Långfredag',
id: 84,
description: null,
location: null,
startDate: '2021-04-02',
endDate: '2021-04-02',
allDay: true,
},
{
title: 'Påsklov',
id: 85,
description: null,
location: null,
startDate: '2021-04-05',
endDate: '2021-04-09',
allDay: true,
},
{
title: 'Föräldraråd',
id: 86,
description: null,
location: null,
startDate: '2021-04-20',
endDate: '2021-04-20',
allDay: true,
},
{
title: 'Prao åk 8',
id: 97,
description: null,
location: null,
startDate: '2021-04-26',
endDate: '2021-05-12',
allDay: true,
},
{
title: 'Kristi Himmelfärd',
id: 87,
description: null,
location: null,
startDate: '2021-05-13',
endDate: '2021-05-13',
allDay: true,
},
{
title: 'Lov',
id: 88,
description: null,
location: null,
startDate: '2021-05-14',
endDate: '2021-05-14',
allDay: true,
},
{
title: 'APT Fritids stänger 15:45',
id: 90,
description: null,
location: null,
startDate: '2021-05-20',
endDate: '2021-05-20',
allDay: true,
},
{
title: 'Läsårsslut',
id: 91,
description:
"<html><head><style>\r\np.MsoNormal, li.MsoNormal, div.MsoNormal {\nmargin:0cm;\nmargin-bottom:.0001pt;\nfont-size:11.0pt;\nfont-family:'Calibri',sans-serif;\n}\n\na:link, span.MsoHyperlink {\ncolor:#0563C1;\ntext-decoration:underline;\n}\n\nspan.MsoHyperlinkFollowed {\ncolor:#954F72;\ntext-decoration:underline;\n}\n\nspan.E-postmall17 {\nfont-family:'Calibri',sans-serif;\ncolor:windowtext;\n}\n\n.MsoChpDefault {\nfont-family:'Calibri',sans-serif;\n}\n\ndiv.WordSection1 {\n}\n\r\n</style></head><body lang='SV' link='#0563C1' vlink='#954F72' style=''><div class='WordSection1'><p class='MsoNormal'>&#160;</p></div></body></html>",
location: null,
startDate: '2021-06-11',
endDate: '2021-06-11',
allDay: true,
},
{
title: 'Fritids stängt',
id: 92,
description:
"<html><head><style>\r\np.MsoNormal, li.MsoNormal, div.MsoNormal {\nmargin:0cm;\nmargin-bottom:.0001pt;\nfont-size:11.0pt;\nfont-family:'Calibri',sans-serif;\n}\n\na:link, span.MsoHyperlink {\ncolor:#0563C1;\ntext-decoration:underline;\n}\n\nspan.MsoHyperlinkFollowed {\ncolor:#954F72;\ntext-decoration:underline;\n}\n\nspan.E-postmall17 {\nfont-family:'Calibri',sans-serif;\ncolor:windowtext;\n}\n\n.MsoChpDefault {\nfont-family:'Calibri',sans-serif;\n}\n\ndiv.WordSection1 {\n}\n\r\n</style></head><body lang='SV' link='#0563C1' vlink='#954F72' style=''><div class='WordSection1'><p class='MsoNormal'>&#160;</p></div></body></html>",
location: null,
startDate: '2021-06-14',
endDate: '2021-06-14',
allDay: true,
},
],
schedule: [
{
title: 'Läsläxan tillbaka',
description: 'Ta med boken tillbaka till skolan',
location: '',
allDayEvent: false,
startDate: oneDayForward.startOf('day').toISO(),
endDate: oneDayForward.endOf('day').toISO(),
oneDayEvent: true
} as ScheduleItem
],
notifications: [
{
id: 'bfe19b-766db3-b38d99d321-bbed3d-506',
sender: 'Planering och Bedömning',
dateCreated: oneDayAgo.minus({months: 6}).toISO(),
dateModified: fourDaysAgo.toISO(),
message: 'Ett nytt inlägg i en lärlogg har skapats.',
url:
'https://www.breakit.se/artikel/21423/har-ar-it-bolaget-bakom-haveriet-pa-skolplattformen',
category: 'Lärlogg',
type: 'avisering',
},
{
id: '9025f9-a1e685-d7c4668f09-e14bc5-0ab',
sender: 'Elevdokumentation',
dateCreated: '2020-12-10T14:31:29.966Z',
message:
'Nu kan du ta del av ditt barns dokumentation av utvecklingssamtal',
url:
'https://www.breakit.se/artikel/21404/kodaren-slog-larm-nu-akutstoppas-skolplattformen-i-stockholm',
category: null,
type: 'webnotify',
},
{
id: 'a24061-1c9a4e-83dc479d7c-f44fe9-376',
sender: 'Planering och Bedömning',
dateCreated: '2020-06-10T12:18:00.000Z',
message: 'Nu finns det en bedömning att titta på.',
url:
'https://www.svt.se/nyheter/lokalt/stockholm/skolplattformen-i-stockholm-beratta-om-era-erfarenheter',
category: 'Bedömning',
type: 'avisering',
},
{
id: '79d65c-1f8240-35c94296ec-9f4bdc-cea',
sender: 'Planering och Bedömning',
dateCreated: '2020-03-24T14:28:00.000Z',
message: 'Nu finns det en bedömning att titta på.',
url:
'https://www.breakit.se/artikel/18120/skolplattformen-kostade-700-miljoner-strid-med-entreprenor-om-varumarket',
category: 'Bedömning',
type: 'avisering',
},
{
id: '9c5b7b-52c16d-b9fc2e8248-e4de76-279',
sender: 'Planering och Bedömning',
dateCreated: '2020-03-24T13:48:00.000Z',
message: 'Nu finns det en bedömning att titta på.',
url:
'https://www.mitti.se/nyheter/forskolans-tur-att-fa-kritiserade-skolplattformen-app/lmsau!5338007/',
category: 'Bedömning',
type: 'avisering',
},
],
},
'eea96a-a3e045-caab589391-ed7d17-029': {
calendar: [
{
title: 'Terminslut',
id: 73,
description: null,
location: null,
startDate: '2020-12-18',
endDate: '2020-12-18',
allDay: true,
},
{
title: 'Terminen börjar',
id: 74,
description: null,
location: null,
startDate: '2021-01-12',
endDate: '2021-01-12',
allDay: true,
},
{
title: 'APT - fritids stänger 15:45',
id: 75,
description: null,
location: null,
startDate: oneWeekForward.startOf('day').toISODate(),
endDate: oneWeekForward.endOf('day').toISODate(),
allDay: true,
},
{
title: 'Utvecklingsamtal',
id: 76,
description: null,
location: null,
startDate: '2021-02-04',
endDate: '2021-02-04',
allDay: true,
},
{
title: 'Vänliga veckan',
id: 77,
description: null,
location: null,
startDate: '2021-02-08',
endDate: '2021-02-12',
allDay: true,
},
{
title: 'Utvecklingsamtal',
id: 79,
description: null,
location: null,
startDate: '2021-02-09',
endDate: '2021-02-09',
allDay: true,
},
{
title: 'Trygghetsdag',
id: 78,
description: null,
location: null,
startDate: '2021-02-12',
endDate: '2021-02-12',
allDay: true,
},
{
title: 'APT fritids stänger 15:45',
id: 80,
description: null,
location: null,
startDate: '2021-02-25',
endDate: '2021-02-25',
allDay: true,
},
{
title: 'Sportlov',
id: 81,
description: null,
location: null,
startDate: '2021-03-01',
endDate: '2021-03-05',
allDay: true,
},
{
title: 'Studiedag',
id: 82,
description: null,
location: null,
startDate: '2021-03-22',
endDate: '2021-03-22',
allDay: true,
},
{
title: 'APT - fritids stänger 15:45',
id: 83,
description: null,
location: null,
startDate: '2021-04-01',
endDate: '2021-04-01',
allDay: true,
},
{
title: 'Långfredag',
id: 84,
description: null,
location: null,
startDate: '2021-04-02',
endDate: '2021-04-02',
allDay: true,
},
{
title: 'Påsklov',
id: 85,
description: null,
location: null,
startDate: '2021-04-05',
endDate: '2021-04-09',
allDay: true,
},
{
title: 'Föräldraråd',
id: 86,
description: null,
location: null,
startDate: '2021-04-20',
endDate: '2021-04-20',
allDay: true,
},
{
title: 'Prao åk 8',
id: 97,
description: null,
location: null,
startDate: '2021-04-26',
endDate: '2021-05-12',
allDay: true,
},
{
title: 'Kristi Himmelfärd',
id: 87,
description: null,
location: null,
startDate: '2021-05-13',
endDate: '2021-05-13',
allDay: true,
},
{
title: 'Lov',
id: 88,
description: null,
location: null,
startDate: '2021-05-14',
endDate: '2021-05-14',
allDay: true,
},
{
title: 'APT Fritids stänger 15:45',
id: 90,
description: null,
location: null,
startDate: '2021-05-20',
endDate: '2021-05-20',
allDay: true,
},
],
schedule: [
{
title: 'Läxförhör franska',
description: 'Läxförhör, glosor samt verben!',
location: 'Klassrummet',
allDayEvent: false,
startDate: twoDaysForward.startOf('day').toISO(),
endDate: twoDaysForward.endOf('day').toISO(),
oneDayEvent: false
} as ScheduleItem
],
notifications: [
{
id: 'e1b5bc-597fa8-5511794939-3614e1-615',
sender: 'Planering och Bedömning',
dateCreated: fourDaysAgo.toISO(),
dateModified: fourDaysAgo.toISO(),
message: 'Ett nytt inlägg i en lärlogg har skapats.',
url:
'https://www.mitti.se/nyheter/rekorddyr-skolplattform-kostar-258-miljoner-till/lmsao!5381301/',
category: 'Lärlogg',
messageType: 'avisering',
},
{
id: '7dbc20-bfa1ac-e20171b865-82c1f7-f3c',
sender: 'Planering och Bedömning',
dateCreated: '2020-12-01T12:43:00.000Z',
message: 'Ett nytt inlägg i en lärlogg har skapats.',
url:
'https://computersweden.idg.se/2.2683/1.722561/lacka-skolplattformen-datainspektionen',
category: 'Lärlogg',
messageType: 'avisering',
},
{
id: 'a6829b-ecf912-b71582e8fb-b6dc14-f60',
sender: 'Planering och Bedömning',
dateCreated: '2020-11-24T13:34:00.000Z',
message: 'Ett nytt inlägg i en lärlogg har skapats.',
url: 'https://www.dagensarena.se/redaktionen/en-systemkramare-ger-upp/',
category: 'Lärlogg',
messageType: 'avisering',
},
{
id: '3cedb4-767d24-8ccd6ac3ac-c05cb7-a3a',
sender: 'Planering och Bedömning',
dateCreated: '2020-11-16T13:24:00.000Z',
message: 'Ett nytt inlägg i en lärlogg har skapats.',
url:
'https://www.breakit.se/artikel/27075/skolplattformen-kostade-1-miljard-att-bygga-nu-tvingas-stockholm-bota',
category: 'Lärlogg',
messageType: 'avisering',
},
{
id: '6ace13-5f99da-d1d50ac7a6-4a6108-d8e',
sender: 'Planering och Bedömning',
dateCreated: '2020-11-12T13:27:00.000Z',
message: 'Ett nytt inlägg i en lärlogg har skapats.',
url:
'https://www.nyteknik.se/sakerhet/ygeman-om-datalackan-i-skolplattformen-det-ar-upprorande-6968853',
category: 'Lärlogg',
messageType: 'avisering',
},
],
},
}
export const user = (): User => ({
personalNumber: '195001182046', // Test personal number from Skatteverket
firstName: 'Namn',
lastName: 'Namnsson',
isAuthenticated: true
})
export const calendar = (child: Child): CalendarItem[] =>
data[child.id].calendar
export const schedule = (child: Child): ScheduleItem[] =>
data[child.id].schedule
export const notifications = (child: Child): Notification[] =>
data[child.id].notifications

View File

@ -0,0 +1,14 @@
import { DateTime } from "luxon"
export const getDate = () => DateTime.now()
export const oneDayAgo = getDate().minus({days: 1})
export const twoDaysAgo = getDate().minus({days: 2})
export const fourDaysAgo = getDate().minus({days: 4})
export const oneWeekAgo = getDate().minus({weeks: 1})
export const oneDayForward = getDate().plus({days: 1})
export const twoDaysForward = getDate().plus({days: 2})
export const fourDaysForward = getDate().plus({days: 4})
export const oneWeekForward = getDate().plus({weeks: 1})
export const week = getDate().weekNumber.toString()

View File

@ -0,0 +1,6 @@
export * from './data'
export * from './children'
export * from './menu'
export * from './classmates'
export * from './timetable'
export * from './news'

View File

@ -0,0 +1,64 @@
import { Child, MenuItem } from '@skolplattformen/api'
import { DateTime } from 'luxon'
import { children } from './children'
export const menu = (child: Child): MenuItem[] => menuData.get(child.id) ?? []
const getDate = () => DateTime.now()
const week = getDate().weekNumber.toString()
const [child1, child2] = children()
const menuData = new Map<string, MenuItem[]>([
[
child1.id,
[
{
title: 'Måndag - Vecka ' + week,
description: 'Kebabgryta ris<br/>Ratatouille med kikärter',
},
{
title: 'Tisdag - Vecka ' + week,
description: 'Ost-broccolisås pasta Fusilli',
},
{
title: 'Onsdag - Vecka ' + week,
description: 'Köttbullar potatis gräddsås lingon<br/>Falafel',
},
{
title: 'Torsdag - Vecka ' + week,
description:
'Prinskorv potatis rödbetssallad +<br/>Inlagd och senapssill',
},
{
title: 'Fredag - Vecka ' + week,
description:
'Avslutning Varmkorv bröd ketchup senap<br/>( F-3 i matsalen från 10:30 )',
},
],
],
[child2.id,
[
{
title: "Måndag - Vecka " + week,
description: "Thailändsk kycklinggryta med kokosmjölk, rödcurry och jasminris<br/>Thailänsk grönsaksgryta med kokosmjölk, rödcurry och jasminris"
},
{
title: "Tisdag - Vecka " + week,
description: "Örtomlett med potatis , medelhavsost och olivtapenad"
},
{
title: "Onsdag - Vecka " + week,
description: "Spagetti med rökt kalkon , grädde, dijon och persilja<br/>Spagetti med rostade bönor , grädde , dijon och persilja"
},
{
title: "Torsdag - Vecka " + week,
description: "Panerad flundra med dansk remoulad och koktåotatis<br/>morot och linsbiff med danska remoulad och koktpotatis"
},
{
title: "Fredag - Vecka " + week,
description: "Texaschili på högrev med picklad rödlök och bulgur<br/>Texaschili på svartabönor picklad rödlök och bulgur"
}
],
]
])

View File

@ -0,0 +1,143 @@
import { children } from './children'
import { Child, NewsItem } from '@skolplattformen/api'
import * as dates from './dates'
export const news = (child: Child): NewsItem[] => newsData.get(child.id) ?? []
const [child1, child2] = children()
const newsData = new Map<string, NewsItem[]>([
[child1.id, [
{
id: 'asdfasdfasdfw',
author: 'Vaktmästare Persson',
header: 'Brandsläckare!',
intro: 'Idag hade vi en incident med en brandsläckare.',
body:
'## Information om brandsläckarincidenten\n\nHej, idag vid lunchtid utlöste en elev av misstag en pulverbrandsläckare i kapprummet. En del pulver yrde runt i rummet och under saneringen fick eleverna i angränsande klassrum vara i aulan istället för klassrummet.\n\nFlera elever var på plats i hallen när detta inträffade men utrymdes kort därefter. Pulvret är INTE hälsovådligt men kan ge upphov till halsirritation vid inandning.\n\nJag har pratat med berörda elever om det inträffade och uppmanat dem att ta hem kläder och tillhörigheter som fanns i kapprummet eftersom de troligen blivit dammiga. Vi rekommenderar att ni tvättar eller vädrar dessa.',
imageUrl: '6607f9b923edb6f85aa4417bab43c0f8.jpg',
fullImageUrl:
'https://cdn.breakit.se/assets/article/6607f9b923edb6f85aa4417bab43c0f8.jpg?d=980x500',
imageAltText: 'Nyhetsbild. Bildtext ej tillgänglig.',
published: dates.twoDaysAgo.toISO(),
modified: dates.twoDaysAgo.plus({ hours: 1 }).toISO(),
},
{
id: 'asdfabbuasdfs',
author: 'Ada L.',
header: 'Bygg din egen app',
intro: 'Denna vecka bygger vi appar!',
body:
'## Appar med öppen data \n\nDenna vecka har vi förmånen att få besök av några föräldrar som visar hur vi enkelt kan skapa appar som visar information ifrån öppna datakällor.\n\nEn fantastisk möjlighet att lära oss hur digitalisering skapar nya möjligheter i såväl skolan som arbetslivet.',
imageUrl: '6607f9b923edb6f85aa4417bab43c0f8.jpg',
fullImageUrl:
'https://live.staticflickr.com/4063/4369776892_5cd42d27ba.jpg',
imageAltText: 'Nyhetsbild. Bildtext ej tillgänglig.',
published: dates.oneWeekAgo.toISO(),
modified: dates.oneWeekAgo.toISO(),
},
{
id: 'asdfasdfasdfs',
author: 'Magister Svensson',
header: 'Läxor vecka 6.',
intro: 'Alla elever måste göra sina läxor!',
body:
'## Läxor vecka 6 \n\nFöljande läxor är obligatoriska:\n\n- Antikens historia\n- Svenska stormaktstiden\n- Statistik A\n- Flerdimensionell analys, del 1',
imageUrl: '6607f9b923edb6f85aa4417bab43c0f8.jpg',
fullImageUrl:
'https://www.mitti.se/_internal/cimg!0/ejf8efxee735ymm8tm40q3hhkl36sdt.jpeg',
imageAltText: 'Nyhetsbild. Bildtext ej tillgänglig.',
published: dates.oneWeekAgo.toISO(),
modified: dates.oneWeekAgo.minus({ hours: 3 }).toISO(),
},
]
],
[child2.id, [
{
id: 'asdfasdfasdfa',
author: 'Rektor Gustavsson',
header: 'Välkommen till skolan!',
intro:
'Hej alla barn och föräldrar och välkomna till Storskolan! Här kommer en del information som kan vara bra att känna till inför första dagen.',
body:
'## Information till föräldrar \n\nSkolan börjar kl 08.00 och slutar 18.00. Kommer man sent eller blir sjuk så ska det anmälas via Skolplattformen. Se till så att dina barn har ätit frukost. Frukt är nyttigt! \n\n## Information till barn\n\nLek är tillåtet på rasterna men enbart på skolgården. Medtag ej egna leksaker. Tvätta händerna.',
imageUrl: '6607f9b923edb6f85aa4417bab43c0f8.jpg',
fullImageUrl:
'https://timbro.se/app/uploads/2020/10/broman-skolplattformen-1280x752.jpg',
imageAltText: 'Nyhetsbild. Bildtext ej tillgänglig.',
published: dates.oneWeekAgo.toISO(),
modified: dates.oneWeekAgo.toISO(),
},
{
id: 'asdfabbuasdfs',
author: 'Ada L.',
header: 'App, App, App',
intro: 'Denna vecka bygger vi appar!',
body:
'## Appar med öppen data \n\nDenna vecka har vi förmånen att få besök av några föräldrar som visar hur vi enkelt kan skapa appar som visar information ifrån öppna datakällor.\n\nEn fantastisk möjlighet att lära oss hur digitalisering skapar nya möjligheter i såväl skolan som arbetslivet.',
imageUrl: '6607f9b923edb6f85aa4417bab43c0f8.jpg',
fullImageUrl:
'https://live.staticflickr.com/4063/4369776892_5cd42d27ba.jpg',
imageAltText: 'Nyhetsbild. Bildtext ej tillgänglig.',
published: dates.fourDaysAgo.toISO(),
modified: dates.fourDaysAgo.plus({minutes: 45}).toISO(),
},
{
id: 'asdfasdfasdfs',
author: 'Magister Svensson',
header: 'Läxor i veckan',
intro: 'Alla elever måste göra sina läxor!',
body:
'## Läxor vecka 6 \n\nFöljande läxor är obligatoriska:\n\n- Antikens historia\n- Svenska stormaktstiden\n- Statistik A\n- Flerdimensionell analys, del 1',
imageUrl: '6607f9b923edb6f85aa4417bab43c0f8.jpg',
fullImageUrl:
'https://www.mitti.se/_internal/cimg!0/ejf8efxee735ymm8tm40q3hhkl36sdt.jpeg',
imageAltText: 'Nyhetsbild. Bildtext ej tillgänglig.',
published: dates.oneWeekAgo.toISO(),
modified: dates.oneWeekAgo.toISO(),
},
{
id: 'asdfasdfasdfd',
author: 'Information från Förskoleklass',
header: 'Vinteraktiviteter',
intro:
'Vi kommer efter att förskoleklassen är slut arrangera olika vinteraktiviteter genom fridtidsverksamheten.',
body:
'## Vänligen ta med hjälm, skridskor eller stjärtlapp.\n\n ![Bild](https://images.unsplash.com/photo-1495377701095-00261b767581?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=988&q=80)\n\n Alla barn måste ha hjälm på sig samt varma kläder. Vi kommer åka i backen bakom skolbyggnaden samt använda isen som spolats vid Mullsjöskolan. Personal kommer finnas på plats samt att vi erbjuda varm dryck, frukt och lek för de barn som ej har hjälm eller lämpligt åkdon.',
imageUrl: '6607f9b923edb6f85aa4417bab43c0f8.jpg',
fullImageUrl: 'https://unsplash.com/photos/yB_aiAWkm40',
imageAltText: 'Nyhetsbild. Bildtext ej tillgänglig.',
published: dates.oneWeekAgo.minus({weeks: 2}).toISO(),
modified: dates.oneWeekAgo.minus({weeks: 1}).toISO(),
},
{
id: 'asdfasdfasdfdsa',
author: 'Köket',
header: 'Ekologisk vecka i matsalen',
intro: 'Ekologiska veckan i matsalen vecka 11',
body:
'## Vi kommer ha tema jorden i matsalen och servera ekologisk mat från hela världen med tema jorden. Detta för att belysa att man kan använda alla delar av råvaorna. Det kommer erbjudas rätter från alla världsdelar som är producerat för jordens bästa. Smaklig spis hälsar Gunnel i köket med personal.',
imageUrl: '6607f9b923edb6f85aa4417bab43c0f8.jpg',
fullImageUrl: 'https://unsplash.com/photos/7K17MvT8qBg',
imageAltText: 'Nyhetsbild. Bildtext ej tillgänglig.',
published: dates.oneWeekAgo.minus({weeks: 3}).toISO(),
modified: dates.oneWeekAgo.minus({days: 2}).toISO(),
},
{
id: 'asdfasdfasdfbvdsa',
author: 'Vaktmästaren',
header: 'Klotter i korridoren (igen)',
intro:
'Ännu en gång har vi råka ut för skadegörelse i korridorerna vid åk 5',
body:
'## Tyvärr har flera elever klottat på skåp och väggar vid åk5 skåpen. Detta är helt oacceptablet beteende och kostar skolan stora belopp att åtgärda. Vi ber alla föräldrar prata med sina barn om klotter samt att det var väldigt grovt spårkbruk. Personalen på skolan kommer att hålla extra uppsikt och vi har även pratat med en del av de inblandade eleverna i denna skadegörelse.\n\nPersonalen har även börjat forska på vad vissa av de skrivna orden betyder och Eva-Britt är förfasad över språkbruket samt vad de innebär. Bernt kommer att påbörja saneringen och återställningen av skadegörelsen samt vakta korridorerna nogrannare för att säkerställa att detta ej kommer ske igen.\n\n Klotter\n\nUPPDATERING: Det som är skrivet om Sara är inte sant! ',
imageUrl: '6607f9b923edb6f85aa4417bab43c0f8.jpg',
fullImageUrl: 'https://unsplash.com/photos/SkbEZ16VywM',
imageAltText: 'Nyhetsbild. Bildtext ej tillgänglig.',
published: dates.oneWeekAgo.minus({weeks: 4}).toISO(),
modified: dates.oneWeekAgo.minus({weeks: 2}).toISO(),
},
]
]
])

View File

@ -0,0 +1,465 @@
import { Skola24Child, TimetableEntry } from "@skolplattformen/api"
export const timetable = (child: Skola24Child): TimetableEntry[] => {
if (!child.personGuid || !child.unitGuid) return []
return [
{
id: 'N2FjMDc1NjYtZmM2Yy0wZDQyLTY3M2YtZWI5NGNiZDA3ZGU4',
code: 'Lunch',
name: 'Lunch',
category: '',
blockName: '',
dayOfWeek: 1,
location: 'Ö5',
teacher: '',
timeEnd: '12:05:00',
timeStart: '11:40:00',
dateStart: '2021-04-12T11:40:00.000+02:00',
dateEnd: '2021-04-12T12:05:00.000+02:00',
},
{
id: 'ZTQ1NWE0N2EtNzAwOS0wZTAzLTQ1ZDYtNTA1NWI4Y2JhNDYw',
code: 'BL',
name: 'Bild',
category: '',
blockName: '',
dayOfWeek: 1,
location: '221',
teacher: 'KUr',
timeEnd: '11:35:00',
timeStart: '09:40:00',
dateStart: '2021-04-12T09:40:00.000+02:00',
dateEnd: '2021-04-12T11:35:00.000+02:00',
},
{
id: 'YjAxODRmY2QtNTJjZS0wMDJlLTYxOGItYmFlNTVlNDgzZmVk',
code: 'NO',
name: 'Naturorienterande ämnen',
category: '',
comment: 'a)',
blockName: '',
dayOfWeek: 1,
location: '307',
teacher: 'TBo',
timeEnd: '13:30:00',
timeStart: '12:30:00',
dateStart: '2021-04-12T12:30:00.000+02:00',
dateEnd: '2021-04-12T13:30:00.000+02:00',
},
{
id: 'MWRiZGI1NzgtYWIzNy0wYzMwLTVkMmEtMWFjNWRkMTRmOTdh',
code: 'IDH',
name: 'Idrott & hälsa',
category: '',
blockName: '',
dayOfWeek: 1,
location: '215',
teacher: 'HAl',
timeEnd: '15:45:00',
timeStart: '14:40:00',
dateStart: '2021-04-12T14:40:00.000+02:00',
dateEnd: '2021-04-12T15:45:00.000+02:00',
},
{
id: 'MmZkZTZiMzMtMjdjMS0wZGIzLTUzYWYtZTg0Zjc1NDRlNzQw',
code: 'M2FR',
name: 'Franska',
category: 'Moderna språk, språkval',
blockName: '',
dayOfWeek: 1,
location: '304',
teacher: 'DNi',
timeEnd: '14:25:00',
timeStart: '13:40:00',
dateStart: '2021-04-12T13:40:00.000+02:00',
dateEnd: '2021-04-12T14:25:00.000+02:00',
},
{
id: 'MzAxMzU3MWItZGM1Ny0wOGVhLTVkZjUtOGFkMGIyYTY2OTAx',
code: 'SO',
name: 'Samhällsorienterande ämnen',
category: '',
blockName: '',
dayOfWeek: 1,
location: '303',
teacher: 'HRr',
timeEnd: '09:25:00',
timeStart: '08:15:00',
dateStart: '2021-04-12T08:15:00.000+02:00',
dateEnd: '2021-04-12T09:25:00.000+02:00',
},
{
id: 'NDY3MDY1MmYtOTIzYi0wZmQ0LTVlZGEtNGVhZDRkOTExNTgz',
code: 'M2FR',
name: 'Franska',
category: 'Moderna språk, språkval',
blockName: '',
dayOfWeek: 2,
location: '302,Fjärr asd asdasd asdad aasdds',
teacher: 'DNi',
timeEnd: '09:50:00',
timeStart: '09:05:00',
dateStart: '2021-04-13T09:05:00.000+02:00',
dateEnd: '2021-04-13T09:50:00.000+02:00',
},
{
id: 'NmE4OTU1NmItYzM0ZS0wYTI1LTYzM2QtYzBiN2M4OTVmYTQ3',
code: 'EN',
name: 'Engelska',
category: '',
blockName: '',
dayOfWeek: 2,
location: 'Fjärr',
teacher: 'TPe',
timeEnd: '13:15:00',
timeStart: '12:30:00',
dateStart: '2021-04-13T12:30:00.000+02:00',
dateEnd: '2021-04-13T13:15:00.000+02:00',
},
{
id: 'NDAxODRjOTctMmE5ZC0wMzdjLTY2NDMtODhlODEzOTQ3YTJh',
code: 'Lunch',
name: 'Lunch',
category: '',
blockName: '',
dayOfWeek: 2,
location: 'Fjärr',
teacher: '',
timeEnd: '12:05:00',
timeStart: '11:40:00',
dateStart: '2021-04-13T11:40:00.000+02:00',
dateEnd: '2021-04-13T12:05:00.000+02:00',
},
{
id: 'ZTc4YTcyZTUtMDc0NS0wNDE0LTVjODctYjY0MzQ2MGM3MDll',
code: 'MA',
name: 'Matematik',
category: '',
blockName: '',
dayOfWeek: 2,
location: 'Fjärr',
teacher: 'CBr',
timeEnd: '11:20:00',
timeStart: '10:00:00',
dateStart: '2021-04-13T10:00:00.000+02:00',
dateEnd: '2021-04-13T11:20:00.000+02:00',
},
{
id: 'MjRkMWE4YTItYTk5ZC0wYTFmLTVhMDgtMThiMmNhZDc1ZDUz',
code: 'MU',
name: 'Musik',
category: '',
blockName: '',
dayOfWeek: 2,
location: 'Fjärr',
teacher: 'KBj',
timeEnd: '14:15:00',
timeStart: '13:30:00',
dateStart: '2021-04-13T13:30:00.000+02:00',
dateEnd: '2021-04-13T14:15:00.000+02:00',
},
{
id: 'NTU4ZTc4ZTctNDQyMy0wMjVkLTRiYzktZGUwYmFmYzk2YTlj',
code: 'EN',
name: 'Engelska',
category: '',
blockName: '',
dayOfWeek: 3,
location: '303',
teacher: 'TPe',
timeEnd: '09:55:00',
timeStart: '09:10:00',
dateStart: '2021-04-14T09:10:00.000+02:00',
dateEnd: '2021-04-14T09:55:00.000+02:00',
},
{
id: 'NDUyNjIxODItYzFiOC0wOTFjLTYwODYtZDllZjZjN2QyYzA3',
code: 'SV',
name: 'Svenska',
category: '',
comment: 'a)',
blockName: '',
dayOfWeek: 3,
location: '303',
teacher: 'JCa',
timeEnd: '14:45:00',
timeStart: '14:00:00',
dateStart: '2021-04-14T14:00:00.000+02:00',
dateEnd: '2021-04-14T14:45:00.000+02:00',
},
{
id: 'NDdkMGI0ZjItMjkxMC0wYWI1LTQ0YWMtNDY3NTdkZTE2Njg3',
code: 'SO',
name: 'Engelska',
category: 'Samhällsorienterande ämnen',
blockName: '',
dayOfWeek: 3,
location: '303',
teacher: 'HRr',
timeEnd: '11:00:00',
timeStart: '10:05:00',
dateStart: '2021-04-14T10:05:00.000+02:00',
dateEnd: '2021-04-14T11:00:00.000+02:00',
},
{
id: 'ZTI2ZDgyNWUtM2ZlOS0wZDVmLTY5NTctNGYzZThjMTMxOTdh',
code: 'NO',
name: 'Naturorienterande ämnen',
category: '',
comment: 'a)',
blockName: '',
dayOfWeek: 3,
location: '307',
teacher: 'TBo',
timeEnd: '13:50:00',
timeStart: '12:50:00',
dateStart: '2021-04-14T12:50:00.000+02:00',
dateEnd: '2021-04-14T13:50:00.000+02:00',
},
{
id: 'NzMxNjczNGMtMmZmZi0wM2YzLTU0ZjMtODdjOTAwYzIwNTUw',
code: 'Lunch',
name: 'Lunch',
category: '',
blockName: '',
dayOfWeek: 3,
location: 'Ö5',
teacher: '',
timeEnd: '12:40:00',
timeStart: '12:15:00',
dateStart: '2021-04-14T12:15:00.000+02:00',
dateEnd: '2021-04-14T12:40:00.000+02:00',
},
{
id: 'MWRkZjhlZTktNTBmMC0wZjNhLTQ1OTgtMWJkOWM3MjI2NWQ4',
code: 'SV',
name: 'Svenska',
category: '',
blockName: '',
dayOfWeek: 3,
location: '303',
teacher: 'JCa',
timeEnd: '12:05:00',
timeStart: '11:20:00',
dateStart: '2021-04-14T11:20:00.000+02:00',
dateEnd: '2021-04-14T12:05:00.000+02:00',
},
{
id: 'NzM2Mjc2ZTYtY2JlYy0wOTc1LTU1ZGYtNjMwZjhjZWVjNjgy',
code: 'MA',
name: 'Matematik',
category: '',
comment: 'a)',
blockName: '',
dayOfWeek: 3,
location: '307',
teacher: 'CBr',
timeEnd: '15:45:00',
timeStart: '15:00:00',
dateStart: '2021-04-14T15:00:00.000+02:00',
dateEnd: '2021-04-14T15:45:00.000+02:00',
},
{
id: 'YWNlZmEzZjYtM2EwNC0wYWY3LTU1N2MtMDBlMTA4MDQzMzRl',
code: 'MU',
name: 'Musik',
category: '',
blockName: '',
dayOfWeek: 3,
location: '504',
teacher: 'KBj',
timeEnd: '09:00:00',
timeStart: '08:15:00',
dateStart: '2021-04-14T08:15:00.000+02:00',
dateEnd: '2021-04-14T09:00:00.000+02:00',
},
{
id: 'NDc4MThmMDYtYmYxYi0wZDBkLTdhNmItZGVjMjY3OWY3MmYz',
code: 'IDH',
name: 'Idrott & Hälsa',
category: '',
blockName: '',
dayOfWeek: 4,
location: 'Fjärr',
teacher: 'AKö,CSv,HAl',
timeEnd: '15:45:00',
timeStart: '14:35:00',
dateStart: '2021-04-15T14:35:00.000+02:00',
dateEnd: '2021-04-15T15:45:00.000+02:00',
},
{
id: 'ZjQyZjNkOWItYWMzZi0wYWRhLTQ3YzItNTZiNTJkOTRmY2Iy',
code: 'M2FR',
name: 'Franska',
category: 'Moderna språk, språkval',
blockName: '',
dayOfWeek: 4,
location: 'Fjärr',
teacher: 'DNi',
timeEnd: '11:55:00',
timeStart: '11:10:00',
dateStart: '2021-04-15T11:10:00.000+02:00',
dateEnd: '2021-04-15T11:55:00.000+02:00',
},
{
id: 'YzQ2NWZlOWMtYzM3ZC0wYzBlLTQzNTQtODMyYmU3ODcxMDQ3',
code: 'MTID',
name: 'Mentorstid',
category: 'Diverse',
comment: 'Arbetslagsråd 6C',
blockName: '',
dayOfWeek: 4,
location: 'Fjärr',
teacher: 'JCa,CBr',
timeEnd: '10:00:00',
timeStart: '09:15:00',
dateStart: '2021-04-15T09:15:00.000+02:00',
dateEnd: '2021-04-15T10:00:00.000+02:00',
},
{
id: 'YzMwMGY0YzAtNjhjNi0wYzY0LTU1MjctODg2MWQ4ZTRmZTI2',
code: 'MU',
name: 'Musik',
category: '',
blockName: '',
dayOfWeek: 4,
location: 'Fjärr',
teacher: 'KBj',
timeEnd: '10:55:00',
timeStart: '10:10:00',
dateStart: '2021-04-15T10:10:00.000+02:00',
dateEnd: '2021-04-15T10:55:00.000+02:00',
},
{
id: 'ZDNlNTFhMGUtYWFlYy0wOGI0LTVlMGItOTc0MzFiZmIwODcx',
code: 'Lunch',
name: 'Lunch',
category: 'Diverse',
blockName: '',
dayOfWeek: 4,
location: 'Fjärr',
teacher: '',
timeEnd: '12:25:00',
timeStart: '12:00:00',
dateStart: '2021-04-15T12:00:00.000+02:00',
dateEnd: '2021-04-15T12:25:00.000+02:00',
},
{
id: 'MDRiZWMyODMtNjEwZC0wZDYwLTRlOWItYTY1MjAwZTc0YTZm',
code: 'SO',
name: 'Samhällsorienterande ämnen',
category: '',
blockName: '',
dayOfWeek: 4,
location: 'Fjärr',
teacher: 'HRr',
timeEnd: '13:10:00',
timeStart: '12:35:00',
dateStart: '2021-04-15T12:35:00.000+02:00',
dateEnd: '2021-04-15T13:10:00.000+02:00',
},
{
id: 'YTA0ZTA2NTktYTU5MS0wMTFmLTVlYWYtNWM1MTgxNDJlMDcy',
code: 'EN',
name: 'Engelska',
category: '',
comment: 'a)',
blockName: '',
dayOfWeek: 4,
location: 'Fjärr',
teacher: 'TPe',
timeEnd: '14:20:00',
timeStart: '13:35:00',
dateStart: '2021-04-15T13:35:00.000+02:00',
dateEnd: '2021-04-15T14:20:00.000+02:00',
},
{
id: 'OGJhN2MxYTYtMDQ4NS0wNWNhLTUwZWEtZDQ5YzQyMzFhYzc5',
code: 'Lunch',
name: 'Lunch',
category: 'Diverse',
blockName: '',
dayOfWeek: 5,
location: 'Ö5',
teacher: '',
timeEnd: '12:05:00',
timeStart: '11:40:00',
dateStart: '2021-04-16T11:40:00.000+02:00',
dateEnd: '2021-04-16T12:05:00.000+02:00',
},
{
id: 'ZmUwMGEwM2QtNTExMy0wODliLTY1ZGEtODM0YmRjNjc1NDIw',
code: 'MA',
name: 'Matematik',
category: '',
comment: 'a)',
blockName: '',
dayOfWeek: 5,
location: '303',
teacher: 'CBr',
timeEnd: '14:00:00',
timeStart: '13:15:00',
dateStart: '2021-04-16T13:15:00.000+02:00',
dateEnd: '2021-04-16T14:00:00.000+02:00',
},
{
id: 'Y2IwYjYzZDEtODAxYi0wMTNjLTRjNDMtMDFlODgzMmY4MWEy',
code: 'MU',
name: 'Musik',
category: '',
comment: 'a)',
blockName: '',
dayOfWeek: 5,
location: '510',
teacher: 'KBj',
timeEnd: '13:05:00',
timeStart: '12:20:00',
dateStart: '2021-04-16T12:20:00.000+02:00',
dateEnd: '2021-04-16T13:05:00.000+02:00',
},
{
id: 'N2JkMGFiOTYtMjI5OC0wMjZiLTc3OGEtN2JkN2Q4MDZkNTEy',
code: 'SL',
name: 'Slöjd',
category: '',
comment: 'tmtx)',
blockName: '',
dayOfWeek: 5,
location: '860',
teacher: 'EAl',
timeEnd: '15:10:00',
timeStart: '14:10:00',
dateStart: '2021-04-16T14:10:00.000+02:00',
dateEnd: '2021-04-16T15:10:00.000+02:00',
},
{
id: 'NzkxMjE3MDctMWExNS0wN2RmLTQwMzQtNTEyZTczZjQyZTUw',
code: 'SV',
name: 'Svenska',
category: '',
blockName: '',
dayOfWeek: 5,
location: '303',
teacher: 'JCa',
timeEnd: '10:35:00',
timeStart: '09:20:00',
dateStart: '2021-04-16T09:20:00.000+02:00',
dateEnd: '2021-04-16T10:35:00.000+02:00',
},
{
id: 'ZTU1ZDQxNzQtN2Q3Yy0wMDMxLTY2ZmYtZmIyNGM5MjM3ZTRj',
code: 'MA',
name: 'Matematik',
category: '',
blockName: '',
dayOfWeek: 5,
location: '303',
teacher: 'CBr',
timeEnd: '11:35:00',
timeStart: '10:40:00',
dateStart: '2021-04-16T10:40:00.000+02:00',
dateEnd: '2021-04-16T11:35:00.000+02:00',
}
]
}

View File

@ -9,6 +9,7 @@ test.each([
['15 oktober 2020 11:34', '2020-10-15T09:34:00.000Z'],
['2020-12-18T15:59:46.34', '2020-12-18T14:59:46.340Z'],
['2020-12-18T15:59:46.340Z', '2020-12-18T15:59:46.340Z'],
['/Date(1637935089877)/', '2021-11-26T13:58:09.877Z'],
['This is an invalid date', undefined],
])('handles date parsing of %s', (input, expected) => {
expect(parseDate(input)).toEqual(expected)