@asd20/ui 3.2.880 → 3.2.881
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -106,7 +106,7 @@ import mapFilesToListItems from '../../../helpers/mapFilesToListItems'
|
|
|
106
106
|
import globalPropMixinFactory from '../../../mixins/globalPropMixinFactory.js'
|
|
107
107
|
|
|
108
108
|
export default {
|
|
109
|
-
name: '
|
|
109
|
+
name: 'Asd20SiteSearch',
|
|
110
110
|
|
|
111
111
|
mixins: [
|
|
112
112
|
globalPropMixinFactory(
|
|
@@ -48,6 +48,33 @@
|
|
|
48
48
|
"calendarFormat": "ical",
|
|
49
49
|
"calendarColor": "#213f94"
|
|
50
50
|
},
|
|
51
|
+
{
|
|
52
|
+
"@search.score": 1,
|
|
53
|
+
"id": null,
|
|
54
|
+
"uid": "MDQwMDAwMDA4MjAwRTAwMDc0QzVCNzEwMUE4MkUwMDgwMDAwMDAwMERFRTE5NzcxNThBQ0RBMDEwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDBFOEVBMjc5NkM0MDI3RjRGODFFNzY1QzQ0M0VGMDA0Mw==",
|
|
55
|
+
"type": "event",
|
|
56
|
+
"summary": "Winter Break - Break",
|
|
57
|
+
"description": "",
|
|
58
|
+
"location": "AAHS",
|
|
59
|
+
"start": "2022-12-25T17:00:00Z",
|
|
60
|
+
"end": "2022-12-25T17:30:00Z",
|
|
61
|
+
"dtstamp": "2022-12-25T17:00:00Z",
|
|
62
|
+
"class": "",
|
|
63
|
+
"priority": "",
|
|
64
|
+
"transparency": "",
|
|
65
|
+
"status": "",
|
|
66
|
+
"sequence": "",
|
|
67
|
+
"url": null,
|
|
68
|
+
"calendarId": "a0c92470-27a0-11ec-a6e3-c76d885e64a4",
|
|
69
|
+
"calendarName": "Choir",
|
|
70
|
+
"calendarOrganizationId": "bb6e9cd6-da25-9e6f-5e8d-072b9a7df4f0",
|
|
71
|
+
"calendarOrganizationTitle": "Air Academy High School",
|
|
72
|
+
"calendarCategories": [],
|
|
73
|
+
"calendarKeywords": [],
|
|
74
|
+
"calendarUrl": "https://outlook.office365.com/owa/calendar/6a1a45f079b7416f8b301747cd731778@asd20.org/93eb354f1a6b446bb533e2f40613f8a310360980508845501669/calendar.ics",
|
|
75
|
+
"calendarFormat": "ical",
|
|
76
|
+
"calendarColor": "#eb28c7"
|
|
77
|
+
},
|
|
51
78
|
{
|
|
52
79
|
"@search.score": 1,
|
|
53
80
|
"id": null,
|
|
@@ -14,65 +14,65 @@ import isSameDay from 'date-fns/is_same_day'
|
|
|
14
14
|
export default function expandEvents(events) {
|
|
15
15
|
return events
|
|
16
16
|
.reduce((a, event) => {
|
|
17
|
-
//
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
// Parse the event start and end times
|
|
18
|
+
const start = parse(event.start)
|
|
19
|
+
const end = event.end ? parse(event.end) : start
|
|
20
|
+
|
|
21
|
+
const diffTime = Math.abs(end.getTime() - start.getTime())
|
|
21
22
|
const diffHours = Math.ceil(diffTime / (1000 * 60 * 60))
|
|
22
23
|
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))
|
|
23
|
-
const multiDay = !isSameDay(
|
|
24
|
+
const multiDay = !isSameDay(start, end)
|
|
24
25
|
const allDay = !event.end || (diffHours > 23 && diffHours < 25)
|
|
25
26
|
const endTimeUndetermined = event.end && event.end === event.start
|
|
26
27
|
|
|
27
28
|
if (multiDay && !allDay) {
|
|
29
|
+
// Expand multi-day events
|
|
28
30
|
for (let d = 0; d < diffDays; d++) {
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
end: event.end ? event.end : null,
|
|
37
|
-
originalStart: event.start,
|
|
38
|
-
allDay: parse(event.start).getHours() === 0,
|
|
39
|
-
endTimeUndetermined,
|
|
40
|
-
multiDay,
|
|
41
|
-
weekday: format(parse(newStart), 'dddd'),
|
|
42
|
-
day: format(parse(newStart), 'DD'),
|
|
43
|
-
number: format(parse(newStart), 'D'),
|
|
44
|
-
month: format(parse(newStart), 'MMMM'),
|
|
45
|
-
year: format(parse(newStart), 'YYYY'),
|
|
46
|
-
})
|
|
47
|
-
)
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
} else {
|
|
51
|
-
a.push(
|
|
52
|
-
Object.assign({}, event, {
|
|
53
|
-
start: event.start,
|
|
54
|
-
end: event.end ? event.end : null,
|
|
55
|
-
originalStart: null,
|
|
56
|
-
allDay,
|
|
31
|
+
const newStart = addDays(start, d)
|
|
32
|
+
a.push({
|
|
33
|
+
...event,
|
|
34
|
+
start: newStart,
|
|
35
|
+
end: end,
|
|
36
|
+
originalStart: start,
|
|
37
|
+
allDay: start.getHours() === 0,
|
|
57
38
|
endTimeUndetermined,
|
|
58
39
|
multiDay,
|
|
59
|
-
weekday: format(
|
|
60
|
-
day: format(
|
|
61
|
-
number: format(
|
|
62
|
-
month: format(
|
|
63
|
-
year: format(
|
|
40
|
+
weekday: format(newStart, 'dddd'),
|
|
41
|
+
day: format(newStart, 'DD'),
|
|
42
|
+
number: format(newStart, 'D'),
|
|
43
|
+
month: format(newStart, 'MMMM'),
|
|
44
|
+
year: format(newStart, 'YYYY'),
|
|
64
45
|
})
|
|
65
|
-
|
|
46
|
+
}
|
|
47
|
+
} else {
|
|
48
|
+
// Add single-day events
|
|
49
|
+
a.push({
|
|
50
|
+
...event,
|
|
51
|
+
start: start,
|
|
52
|
+
end: end,
|
|
53
|
+
originalStart: null,
|
|
54
|
+
allDay,
|
|
55
|
+
endTimeUndetermined,
|
|
56
|
+
multiDay,
|
|
57
|
+
weekday: format(start, 'dddd'),
|
|
58
|
+
day: format(start, 'DD'),
|
|
59
|
+
number: format(start, 'D'),
|
|
60
|
+
month: format(start, 'MMMM'),
|
|
61
|
+
year: format(start, 'YYYY'),
|
|
62
|
+
})
|
|
66
63
|
}
|
|
67
64
|
return a
|
|
68
65
|
}, [])
|
|
69
66
|
.reduce((a, e) => {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
).length > 0
|
|
67
|
+
// Remove duplicates
|
|
68
|
+
const hasDuplicate = a.some(
|
|
69
|
+
ae => ae.summary === e.summary && ae.start.getTime() === e.start.getTime() && ae.end.getTime() === e.end.getTime()
|
|
70
|
+
)
|
|
75
71
|
if (!hasDuplicate) a.push(e)
|
|
76
72
|
return a
|
|
77
73
|
}, [])
|
|
74
|
+
.sort((a, b) => {
|
|
75
|
+
// Sort events by start date
|
|
76
|
+
return a.start.getTime() - b.start.getTime()
|
|
77
|
+
})
|
|
78
78
|
}
|