import dayjs from 'dayjs'
import React from 'react'
import { RecursiveArray, Text, TouchableOpacity, View, ViewStyle } from 'react-native'
import { EventRenderer, ICalendarEvent } from '../src/interfaces'
import { formatStartEnd } from '../src/utils'
const eventNotes = (
Phone number: 555-123-4567
Arrive 15 minutes early
)
export let events: ICalendarEvent<{ color?: string }>[] = [
{
title: 'Watch Boxing',
start: dayjs().set('hour', 0).set('minute', 0).set('second', 0).toDate(),
end: dayjs().set('hour', 1).set('minute', 30).toDate(),
},
{
title: 'Meeting',
start: dayjs().set('hour', 10).set('minute', 0).toDate(),
end: dayjs().set('hour', 10).set('minute', 30).toDate(),
},
{
title: 'Coffee break',
start: dayjs().set('hour', 14).set('minute', 30).toDate(),
end: dayjs().set('hour', 15).set('minute', 30).toDate(),
},
{
title: 'with color prop',
start: dayjs().set('hour', 16).set('minute', 0).toDate(),
end: dayjs().set('hour', 18).set('minute', 30).toDate(),
color: 'purple',
},
{
title: 'Repair my car',
start: dayjs().add(1, 'day').set('hour', 7).set('minute', 45).toDate(),
end: dayjs().add(1, 'day').set('hour', 13).set('minute', 30).toDate(),
},
{
title: 'Meet Realtor',
start: dayjs().add(1, 'day').set('hour', 8).set('minute', 25).toDate(),
end: dayjs().add(1, 'day').set('hour', 9).set('minute', 55).toDate(),
},
{
title: 'Laundry',
start: dayjs().add(1, 'day').set('hour', 8).set('minute', 25).toDate(),
end: dayjs().add(1, 'day').set('hour', 11).set('minute', 0).toDate(),
},
{
title: "Doctor's appointment",
start: dayjs().set('hour', 13).set('minute', 0).toDate(),
end: dayjs().set('hour', 14).set('minute', 15).toDate(),
children: eventNotes,
},
]
//events.push(...events);
let day = 1
function incrementDayFromInterval(min: number, max: number) {
// min and max included
//return Math.floor(Math.random() * (max - min + 1) + min);
day++
if (day > max) {
day = min
}
//console.log("day", day);
return day
}
function randomIntFromInterval(min: number, max: number) {
// min and max included
return Math.floor(Math.random() * (max - min + 1) + min)
}
console.time('start creating')
for (let i = 0; i < 50000; i++) {
const day = incrementDayFromInterval(1, 30)
const hour = randomIntFromInterval(1, 23)
const startDate = dayjs()
.set('day', day)
.set('month', 0)
.set('hour', hour)
.set('minute', 0)
.toDate()
events.push({
title: startDate.toString(),
start: startDate,
end: dayjs()
.set('day', day)
.set('month', 0)
.set('hour', hour + 1)
.set('minute', 30)
.toDate(),
})
}
for (let i = 0; i < 50000; i++) {
const day = incrementDayFromInterval(1, 30)
const hour = randomIntFromInterval(1, 23)
const startDate = dayjs()
.set('day', day)
.set('month', 1)
.set('hour', hour)
.set('minute', 0)
.toDate()
events.push({
title: startDate.toString(),
start: startDate,
end: dayjs()
.set('day', day)
.set('month', 1)
.set('hour', hour + 1)
.set('minute', 30)
.toDate(),
})
}
console.timeEnd('start creating')
//console.log("events", events.length);
// console.log("events", events);
/*events = events.map(evt => {
const day = randomIntFromInterval(1, 10);
evt.start.setDate(day)
evt.end.setDate(day);
evt.title = evt.start.toString() + evt.title;
console.log("evt", evt);
return evt;
});*/
export const spanningEvents: ICalendarEvent<{ color?: string }>[] = [
{
title: 'Watch Boxing',
start: dayjs().subtract(1, 'week').set('hour', 14).set('minute', 30).toDate(),
end: dayjs().subtract(1, 'week').set('hour', 15).set('minute', 30).toDate(),
},
{
title: 'Laundry',
start: dayjs().subtract(1, 'week').set('hour', 1).set('minute', 30).toDate(),
end: dayjs().subtract(1, 'week').set('hour', 2).set('minute', 30).toDate(),
},
{
title: 'Meeting',
start: dayjs().subtract(1, 'week').set('hour', 10).set('minute', 0).toDate(),
end: dayjs().add(1, 'week').set('hour', 10).set('minute', 30).toDate(),
},
{
title: 'Coffee break',
start: dayjs().set('hour', 14).set('minute', 30).toDate(),
end: dayjs().add(1, 'week').set('hour', 15).set('minute', 30).toDate(),
},
{
title: 'Repair my car',
start: dayjs().add(1, 'day').set('hour', 7).set('minute', 45).toDate(),
end: dayjs().add(4, 'day').set('hour', 13).set('minute', 30).toDate(),
},
]
export interface MyCustomEventType {
color?: string
}
export const customEventRenderer: EventRenderer = (
event,
touchableOpacityProps,
) => {
return (
),
{
backgroundColor: 'white',
borderWidth: 1,
borderColor: 'lightgrey',
borderLeftColor: event.color ? event.color : 'green',
borderLeftWidth: 10,
borderStyle: 'solid',
borderRadius: 6,
alignItems: 'center',
justifyContent: 'center',
},
]}
>
{dayjs(event.end).diff(event.start, 'minute') < 32 ? (
{event.title},
{dayjs(event.start).format('HH:mm')}
) : (
<>
{event.title}
{formatStartEnd(event.start, event.end, 'HH:mm')}
{event.children && event.children}
>
)}
)
}