initial
This commit is contained in:
212
lib/todo/calendar_old.dart
Normal file
212
lib/todo/calendar_old.dart
Normal file
@@ -0,0 +1,212 @@
|
||||
import 'dart:core';
|
||||
|
||||
|
||||
/*class CalendarListPage extends StatefulWidget with NavigationDrawerItem {
|
||||
|
||||
final String title = 'Termine';
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() => CalendarListPageState();
|
||||
}
|
||||
|
||||
class CalendarListPageState extends State<CalendarListPage> {
|
||||
List _selectedDayList = [];
|
||||
Map<DateTime, List<EventModel>> _events = {};
|
||||
CalendarController? _calendarController;
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_calendarController!.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_calendarController = CalendarController();
|
||||
init();
|
||||
}
|
||||
|
||||
void init() async {
|
||||
EventController.getEventListStream().forEach((events) {
|
||||
setState(() {
|
||||
_events = _mapListToCalendarEvents(events);
|
||||
_selectedDayList = events
|
||||
.where((e) =>
|
||||
DateTime(e.schedule.startTime.year, e.schedule.startTime.month, e.schedule.startTime.day) ==
|
||||
DateTime(
|
||||
_calendarController!.selectedDay.year,
|
||||
_calendarController!.selectedDay.month,
|
||||
_calendarController!.selectedDay.day))
|
||||
.toList();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) => SafeArea(
|
||||
bottom: false,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.fromLTRB(UIShapes.paddingSimple,
|
||||
UIShapes.paddingSimple, UIShapes.paddingSimple, 0),
|
||||
child: ListView(
|
||||
primary: true,
|
||||
children: <Widget>[
|
||||
FormattedCalendar(_events, _calendarController!, _onDaySelected),
|
||||
ColumnExtension.builder(
|
||||
itemCount: _selectedDayList.length,
|
||||
itemBuilder: (context, index) =>
|
||||
CalendarListTile(_selectedDayList[index]),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
void _onDaySelected(DateTime dateTime, List list, List list2) {
|
||||
setState(() {
|
||||
_selectedDayList = list.isEmpty ? [] : list;
|
||||
});
|
||||
}
|
||||
|
||||
Map<DateTime, List<EventModel>> _mapListToCalendarEvents(List<EventModel> list) {
|
||||
final map = <DateTime, List<EventModel>>{};
|
||||
DateTime dateKey;
|
||||
int i;
|
||||
int j;
|
||||
for (final e in list) {
|
||||
j = 0;
|
||||
dateKey = e.schedule.startTime;
|
||||
do {
|
||||
if (e.schedule.frequency != Frequency.once && e.schedule.interval != null) {
|
||||
if (e.schedule.frequency == Frequency.days) {
|
||||
dateKey = dateKey.add(Duration(days: e.schedule.interval!));
|
||||
} else if (e.schedule.frequency == Frequency.weeks) {
|
||||
dateKey = dateKey.add(Duration(days: 7 * e.schedule.interval!));
|
||||
} else if (e.schedule.frequency == Frequency.months) {
|
||||
dateKey = dateKey =
|
||||
DateTime(dateKey.year, dateKey.month + e.schedule.interval!, dateKey.day);
|
||||
}
|
||||
if (e.schedule.until != null && e.schedule.until!.isBefore(dateKey)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
i = 0;
|
||||
do {
|
||||
var dateKey2 = dateKey.add(Duration(days: i));
|
||||
dateKey2 = DateTime(dateKey2.year, dateKey2.month, dateKey2.day);
|
||||
if (map.containsKey(dateKey2)) {
|
||||
map[dateKey2]!.add(e);
|
||||
} else {
|
||||
map[dateKey2] = [e];
|
||||
}
|
||||
i++;
|
||||
} while (i < e.schedule.endTime.difference(e.schedule.startTime).inDays);
|
||||
j++;
|
||||
} while (e.schedule.frequency != Frequency.once && e.schedule.interval != null && j < 52);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
class FormattedCalendar extends StatelessWidget {
|
||||
final Map<DateTime, List> _events;
|
||||
final CalendarController _controller;
|
||||
final void Function(DateTime, List, List) _onDaySelected;
|
||||
|
||||
const FormattedCalendar(this._events, this._controller, this._onDaySelected);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final defaultCalendar = TableCalendar(
|
||||
calendarController: CalendarController(),
|
||||
);
|
||||
final calendar = TableCalendar(
|
||||
locale: 'de_DE',
|
||||
availableCalendarFormats: const {
|
||||
CalendarFormat.month: 'Month',
|
||||
},
|
||||
headerStyle: HeaderStyle(
|
||||
centerHeaderTitle: true,
|
||||
titleTextBuilder: (date, locale) =>
|
||||
'${getMonthName(date.month)} ${date.year.toString()}'.toUpperCase(),
|
||||
titleTextStyle: UITheme.theme.textTheme.headline5,
|
||||
),
|
||||
daysOfWeekStyle: DaysOfWeekStyle(
|
||||
weekendStyle: defaultCalendar.daysOfWeekStyle.weekdayStyle,
|
||||
dowTextBuilder: (date, locale) =>
|
||||
getDayName(date.weekday).toUpperCase(),
|
||||
),
|
||||
startingDayOfWeek: StartingDayOfWeek.monday,
|
||||
calendarStyle: CalendarStyle(
|
||||
outsideWeekendStyle: defaultCalendar.calendarStyle.outsideStyle,
|
||||
weekendStyle: defaultCalendar.calendarStyle.weekdayStyle
|
||||
.apply(color: UIColors.grey5),
|
||||
weekdayStyle: defaultCalendar.calendarStyle.weekdayStyle
|
||||
.apply(color: UIColors.grey5),
|
||||
eventDayStyle: defaultCalendar.calendarStyle.weekdayStyle
|
||||
.apply(color: UIColors.grey5,),
|
||||
todayColor: UIColors.grey3,
|
||||
selectedColor: UIColors.grey5,
|
||||
markersColor: Color(0xFFFFD445),
|
||||
),
|
||||
events: _events,
|
||||
calendarController: _controller,
|
||||
onDaySelected: _onDaySelected,
|
||||
);
|
||||
return calendar;
|
||||
}
|
||||
|
||||
static String getMonthName(int month) {
|
||||
switch (month) {
|
||||
case 1:
|
||||
return 'Januar';
|
||||
case 2:
|
||||
return 'Februar';
|
||||
case 3:
|
||||
return 'März';
|
||||
case 4:
|
||||
return 'April';
|
||||
case 5:
|
||||
return 'Mai';
|
||||
case 6:
|
||||
return 'Juni';
|
||||
case 7:
|
||||
return 'July';
|
||||
case 8:
|
||||
return 'August';
|
||||
case 9:
|
||||
return 'September';
|
||||
case 10:
|
||||
return 'Oktober';
|
||||
case 11:
|
||||
return 'November';
|
||||
case 12:
|
||||
return 'Dezember';
|
||||
default:
|
||||
return '?';
|
||||
}
|
||||
}
|
||||
|
||||
static String getDayName(int month) {
|
||||
switch (month) {
|
||||
case 1:
|
||||
return 'Mo';
|
||||
case 2:
|
||||
return 'Di';
|
||||
case 3:
|
||||
return 'Mi';
|
||||
case 4:
|
||||
return 'Do';
|
||||
case 5:
|
||||
return 'Fr';
|
||||
case 6:
|
||||
return 'Sa';
|
||||
case 7:
|
||||
return 'So';
|
||||
default:
|
||||
return '?';
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
Reference in New Issue
Block a user