sapp-common-package-test-final 1.0.10 → 1.0.12
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/dist/components/SAPPCalendar/LMSWeeklyCalendar/LMSWeeklyCalendar.d.ts +15 -0
- package/dist/components/SAPPCalendar/LMSWeeklyCalendar/LMSWeeklyCell.d.ts +12 -0
- package/dist/components/SAPPCalendar/LMSWeeklyCalendar/LMSWeeklyEvent.d.ts +9 -0
- package/dist/components/SAPPCalendar/WeeklyCalendar/LMSWeeklyCalendar.d.ts +15 -0
- package/dist/constants/index.d.ts +38 -0
- package/dist/index.css +30 -11
- package/dist/index.js +269 -246
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +270 -247
- package/dist/index.modern.js.map +1 -1
- package/dist/types/index.d.ts +3 -1
- package/dist/utils/index.d.ts +2 -1
- package/package.json +1 -1
package/dist/index.modern.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import dayjs from 'dayjs';
|
2
2
|
import React, { useState, useEffect, useMemo } from 'react';
|
3
|
-
import { DatePicker,
|
3
|
+
import { DatePicker, Select, Calendar, Tooltip, Table } from 'antd';
|
4
4
|
import clsx$1, { clsx } from 'clsx';
|
5
5
|
import isBetween from 'dayjs/plugin/isBetween';
|
6
6
|
|
@@ -56,7 +56,6 @@ var useEffectAfterMounted = function useEffectAfterMounted(callback, dependencie
|
|
56
56
|
}, dependencies);
|
57
57
|
};
|
58
58
|
|
59
|
-
var HOURS_PER_DAY = 24;
|
60
59
|
var MINUTES_PER_HOUR = 60;
|
61
60
|
var TIME_FORMAT = 'HH:mm';
|
62
61
|
var DAYS_OF_WEEK;
|
@@ -69,6 +68,37 @@ var DAYS_OF_WEEK;
|
|
69
68
|
DAYS_OF_WEEK["Saturday"] = "Saturday";
|
70
69
|
DAYS_OF_WEEK["Sunday"] = "Sunday";
|
71
70
|
})(DAYS_OF_WEEK || (DAYS_OF_WEEK = {}));
|
71
|
+
var DAYS_OF_WEEK_SHORTEN;
|
72
|
+
(function (DAYS_OF_WEEK_SHORTEN) {
|
73
|
+
DAYS_OF_WEEK_SHORTEN["Monday"] = "Mon";
|
74
|
+
DAYS_OF_WEEK_SHORTEN["Tuesday"] = "Tue";
|
75
|
+
DAYS_OF_WEEK_SHORTEN["Wednesday"] = "Wed";
|
76
|
+
DAYS_OF_WEEK_SHORTEN["Thursday"] = "Thur";
|
77
|
+
DAYS_OF_WEEK_SHORTEN["Friday"] = "Fri";
|
78
|
+
DAYS_OF_WEEK_SHORTEN["Saturday"] = "Sat";
|
79
|
+
DAYS_OF_WEEK_SHORTEN["Sunday"] = "Sun";
|
80
|
+
})(DAYS_OF_WEEK_SHORTEN || (DAYS_OF_WEEK_SHORTEN = {}));
|
81
|
+
var HOUR_OF_DAY;
|
82
|
+
(function (HOUR_OF_DAY) {
|
83
|
+
HOUR_OF_DAY["07:00"] = "07:00";
|
84
|
+
HOUR_OF_DAY["08:00"] = "08:00";
|
85
|
+
HOUR_OF_DAY["09:00"] = "09:00";
|
86
|
+
HOUR_OF_DAY["10:00"] = "10:00";
|
87
|
+
HOUR_OF_DAY["11:00"] = "11:00";
|
88
|
+
HOUR_OF_DAY["12:00"] = "12:00";
|
89
|
+
HOUR_OF_DAY["13:00"] = "13:00";
|
90
|
+
HOUR_OF_DAY["14:00"] = "14:00";
|
91
|
+
HOUR_OF_DAY["15:00"] = "15:00";
|
92
|
+
HOUR_OF_DAY["16:00"] = "16:00";
|
93
|
+
HOUR_OF_DAY["17:00"] = "17:00";
|
94
|
+
HOUR_OF_DAY["18:00"] = "18:00";
|
95
|
+
HOUR_OF_DAY["19:00"] = "19:00";
|
96
|
+
HOUR_OF_DAY["20:00"] = "20:00";
|
97
|
+
HOUR_OF_DAY["21:00"] = "21:00";
|
98
|
+
HOUR_OF_DAY["22:00"] = "22:00";
|
99
|
+
HOUR_OF_DAY["23:00"] = "23:00";
|
100
|
+
HOUR_OF_DAY["24:00"] = "24:00";
|
101
|
+
})(HOUR_OF_DAY || (HOUR_OF_DAY = {}));
|
72
102
|
var EVENT_TYPES;
|
73
103
|
(function (EVENT_TYPES) {
|
74
104
|
EVENT_TYPES["TEACHING"] = "TEACHING";
|
@@ -80,6 +110,16 @@ var FORMAT_DATE_CARLENDA = {
|
|
80
110
|
MONTH_AND_WEEK: 'MMMM, YYYY',
|
81
111
|
DATE: 'MMMM DD, YYYY'
|
82
112
|
};
|
113
|
+
var LEARNING_MODE;
|
114
|
+
(function (LEARNING_MODE) {
|
115
|
+
LEARNING_MODE["ONLINE"] = "ONLINE";
|
116
|
+
LEARNING_MODE["LIVE_ONLINE"] = "LIVE_ONLINE";
|
117
|
+
LEARNING_MODE["OFFLINE"] = "OFFLINE";
|
118
|
+
LEARNING_MODE["CASE_STUDY"] = "CASE_STUDY";
|
119
|
+
LEARNING_MODE["HOLIDAY"] = "HOLIDAY";
|
120
|
+
LEARNING_MODE["OVERDUE"] = "OVERDUE";
|
121
|
+
LEARNING_MODE["TEST"] = "TEST";
|
122
|
+
})(LEARNING_MODE || (LEARNING_MODE = {}));
|
83
123
|
|
84
124
|
var _convertType;
|
85
125
|
var customDateFormat = function customDateFormat(value, formatStr) {
|
@@ -87,6 +127,7 @@ var customDateFormat = function customDateFormat(value, formatStr) {
|
|
87
127
|
};
|
88
128
|
var convertType = (_convertType = {}, _convertType[EVENT_TYPES.TEACHING] = 'info', _convertType[EVENT_TYPES.BUSY] = 'error', _convertType[EVENT_TYPES.TIME_OFF] = 'warning', _convertType[EVENT_TYPES.OTHER] = 'success', _convertType);
|
89
129
|
var daysOfWeekKeys = Object.values(DAYS_OF_WEEK);
|
130
|
+
var hoursOfDayKeys = Object.values(HOUR_OF_DAY);
|
90
131
|
var calculateNormOfWeek = function calculateNormOfWeek(norms, events, startDate, endDate) {
|
91
132
|
var norm = norms.find(function (norm) {
|
92
133
|
return startDate.isBetween(norm.startDate, norm.endDate, 'day', '[]') && endDate.isBetween(norm.startDate, norm.endDate, 'day', '[]');
|
@@ -366,7 +407,7 @@ var HiddenEyeIcon = function HiddenEyeIcon() {
|
|
366
407
|
}));
|
367
408
|
};
|
368
409
|
|
369
|
-
var styles = {"flex":"_2hGgU","transform":"_3-Pu9","cursor-pointer":"_2Mcv6","rounded-none":"_3EfQZ","border-gray-4":"_3-NVJ","bg-button":"_3-gs3","bg-info/10":"_2ENMR","bg-white":"_rF-HF","!text-error":"_3mBZd","text-black":"_Irb_H","text-gray-600":"_1pL5w","text-info":"_NLvfI","text-secondary-text":"_H-zEU","filter":"_p0OEu","sapp-calendar":"_18t93","btn":"_1oiD_","icon":"_-E7rn","btn-default":"_3WrnL","btn-primary":"_2-qBL","event-info":"_xYqjb","event-warning":"_1oq3N","event-success":"_1hTMm","event-error":"_1hEJk","event-default":"_8FWXy","sapp-calendar__container":"_102cL","header-calendar":"_3Yvs5","header-calendar__nav":"_18m93","header-calendar__date-picker":"_2GTYD","header-calendar__title":"_35LQ0","header-calendar__controls":"_FqVqb","header-calendar__divider":"_3kHog","monthly-calendar":"_2NDGW","weekly-calendar":"_1QrJs","monthly-calendar__title":"_3Tsy4","monthly-calendar__title-active":"_1Dyjm","weekly-norm__cell":"_sGK9m","weekly-norm__value":"_1Jsb-","monthly-calendar__cell":"_2hVZ4","monthly-calendar__cell--active":"_1uenJ","calendar-tooltip":"_2Uo1f","monthly-event__title":"_2gsg7","monthly-event__date":"_2GtPn","weekly-calendar__title":"_5WuQ8","weekly-calendar__cell":"_3lPkV","weekly-event":"_hnHem","weekly-event__title":"_21a0T","weekly-event__date":"_PiKmX","weekly-event--collapse":"_1pvXT","btn-lms-default":"_1GA3p","text-lms-primary":"_1gLzS","select-mode":"_12I9I","ant-select-dropdown-placement-bottomLeft":"_1ZvuX"};
|
410
|
+
var styles = {"flex":"_2hGgU","transform":"_3-Pu9","cursor-pointer":"_2Mcv6","rounded-none":"_3EfQZ","border-gray-4":"_3-NVJ","bg-button":"_3-gs3","bg-info/10":"_2ENMR","bg-white":"_rF-HF","!text-error":"_3mBZd","text-black":"_Irb_H","text-gray-600":"_1pL5w","text-info":"_NLvfI","text-secondary-text":"_H-zEU","filter":"_p0OEu","sapp-calendar":"_18t93","btn":"_1oiD_","icon":"_-E7rn","btn-default":"_3WrnL","btn-primary":"_2-qBL","event-info":"_xYqjb","event-warning":"_1oq3N","event-success":"_1hTMm","event-error":"_1hEJk","event-default":"_8FWXy","sapp-calendar__container":"_102cL","header-calendar":"_3Yvs5","header-calendar__nav":"_18m93","header-calendar__date-picker":"_2GTYD","header-calendar__title":"_35LQ0","header-calendar__controls":"_FqVqb","header-calendar__divider":"_3kHog","monthly-calendar":"_2NDGW","weekly-calendar":"_1QrJs","monthly-calendar__title":"_3Tsy4","monthly-calendar__title-active":"_1Dyjm","weekly-norm__cell":"_sGK9m","weekly-norm__value":"_1Jsb-","monthly-calendar__cell":"_2hVZ4","monthly-calendar__cell--active":"_1uenJ","calendar-tooltip":"_2Uo1f","monthly-event__title":"_2gsg7","monthly-event__date":"_2GtPn","weekly-calendar__title":"_5WuQ8","weekly-calendar__cell":"_3lPkV","weekly-event":"_hnHem","weekly-event__title":"_21a0T","weekly-event__date":"_PiKmX","weekly-event--collapse":"_1pvXT","btn-lms-default":"_1GA3p","text-lms-primary":"_1gLzS","select-mode":"_12I9I","ant-select-dropdown-placement-bottomLeft":"_1ZvuX","header-calendar_filter":"_1fd_Y","lms-calendar__tablet":"_1sVO3"};
|
370
411
|
|
371
412
|
var Button = function Button(_ref) {
|
372
413
|
var _ref$type = _ref.type,
|
@@ -454,234 +495,6 @@ var HeaderCalendar = function HeaderCalendar(_ref) {
|
|
454
495
|
}, "Week")));
|
455
496
|
};
|
456
497
|
|
457
|
-
var CustomTooltip = function CustomTooltip(_ref) {
|
458
|
-
var title = _ref.title,
|
459
|
-
children = _ref.children,
|
460
|
-
_ref$placement = _ref.placement,
|
461
|
-
placement = _ref$placement === void 0 ? 'top' : _ref$placement;
|
462
|
-
return React.createElement(Tooltip, {
|
463
|
-
color: '#ffffff',
|
464
|
-
title: React.createElement("div", {
|
465
|
-
className: styles['text-gray-600']
|
466
|
-
}, title),
|
467
|
-
placement: placement
|
468
|
-
}, React.createElement("div", null, children));
|
469
|
-
};
|
470
|
-
|
471
|
-
var _getIconEvent;
|
472
|
-
var calculateBoxSize = function calculateBoxSize(startTime, endTime, isAllDay) {
|
473
|
-
if (isAllDay) {
|
474
|
-
return {
|
475
|
-
top: 10,
|
476
|
-
height: 50
|
477
|
-
};
|
478
|
-
}
|
479
|
-
var minutes = dayjs(startTime).minute();
|
480
|
-
var diffMinutes = dayjs(endTime).diff(startTime, 'minute', true);
|
481
|
-
return {
|
482
|
-
top: Math.floor(minutes / MINUTES_PER_HOUR * 100),
|
483
|
-
height: Math.floor(diffMinutes / MINUTES_PER_HOUR * 100)
|
484
|
-
};
|
485
|
-
};
|
486
|
-
var getIconEvent = (_getIconEvent = {}, _getIconEvent[EVENT_TYPES.TEACHING] = React.createElement(Book, null), _getIconEvent[EVENT_TYPES.BUSY] = React.createElement(CalendarDelete, null), _getIconEvent[EVENT_TYPES.TIME_OFF] = React.createElement(Star, null), _getIconEvent[EVENT_TYPES.OTHER] = React.createElement(CalendarAccept, null), _getIconEvent);
|
487
|
-
var MIN_HEIGHT_HIDE_DETAILS = 140;
|
488
|
-
var MIN_HEIGHT_HIDE_ALL = 105;
|
489
|
-
var WeeklyEvent = function WeeklyEvent(_ref) {
|
490
|
-
var event = _ref.event,
|
491
|
-
onOpenDetail = _ref.onOpenDetail,
|
492
|
-
onEventDetail = _ref.onEventDetail;
|
493
|
-
var _calculateBoxSize = calculateBoxSize(event.startDate, event.endDate, event.isAllDay),
|
494
|
-
top = _calculateBoxSize.top,
|
495
|
-
height = _calculateBoxSize.height;
|
496
|
-
var formattedDate = customDateFormat(event.startDate, TIME_FORMAT) + ' - ' + customDateFormat(event.endDate, TIME_FORMAT);
|
497
|
-
return React.createElement("div", {
|
498
|
-
className: styles["event-" + convertType[event.type]],
|
499
|
-
onClick: function onClick() {
|
500
|
-
onOpenDetail(dayjs(event.startDate).toDate(), [event]);
|
501
|
-
onEventDetail && onEventDetail(event);
|
502
|
-
},
|
503
|
-
style: {
|
504
|
-
top: top + "%",
|
505
|
-
height: height + "%",
|
506
|
-
zIndex: event.type === EVENT_TYPES.BUSY ? 2 : 1
|
507
|
-
}
|
508
|
-
}, React.createElement("div", {
|
509
|
-
className: clsx$1(styles['weekly-event'], height <= MIN_HEIGHT_HIDE_ALL && styles['weekly-event--collapse'])
|
510
|
-
}, React.createElement("div", {
|
511
|
-
className: styles.flex
|
512
|
-
}, getIconEvent[event.type]), React.createElement("div", {
|
513
|
-
className: clsx$1(height <= MIN_HEIGHT_HIDE_DETAILS && styles['weekly-event--collapse'])
|
514
|
-
}, React.createElement("div", {
|
515
|
-
className: styles['weekly-event__title']
|
516
|
-
}, React.createElement(CustomTooltip, {
|
517
|
-
title: event.title
|
518
|
-
}, event.title)), React.createElement("div", {
|
519
|
-
className: styles['weekly-event__date']
|
520
|
-
}, React.createElement(CustomTooltip, {
|
521
|
-
title: formattedDate
|
522
|
-
}, formattedDate)))));
|
523
|
-
};
|
524
|
-
|
525
|
-
var WeeklyCell = function WeeklyCell(_ref) {
|
526
|
-
var events = _ref.events,
|
527
|
-
date = _ref.date,
|
528
|
-
onOpenDetail = _ref.onOpenDetail,
|
529
|
-
onOpenCreate = _ref.onOpenCreate,
|
530
|
-
onEventDetail = _ref.onEventDetail;
|
531
|
-
var isToday = dayjs().isSame(date, 'day');
|
532
|
-
var handleOpenCreateModal = function handleOpenCreateModal(e) {
|
533
|
-
if (e.target !== e.currentTarget) return;
|
534
|
-
onOpenCreate(dayjs(date).toDate());
|
535
|
-
};
|
536
|
-
events.sort(function (a, b) {
|
537
|
-
return a.type === EVENT_TYPES.BUSY && b.type !== EVENT_TYPES.BUSY ? 1 : -1;
|
538
|
-
});
|
539
|
-
var renderWeeklyEvent = useMemo(function () {
|
540
|
-
var isAllDay = events.some(function (item) {
|
541
|
-
return item.isAllDay;
|
542
|
-
});
|
543
|
-
if (isAllDay && events.length > 1) {
|
544
|
-
return React.createElement(React.Fragment, null, React.createElement(WeeklyEvent, {
|
545
|
-
event: events[0],
|
546
|
-
onOpenDetail: onOpenDetail,
|
547
|
-
onEventDetail: onEventDetail
|
548
|
-
}), React.createElement("div", {
|
549
|
-
className: styles['see-more']
|
550
|
-
}, React.createElement(CustomTooltip, {
|
551
|
-
placement: 'bottom',
|
552
|
-
title: React.createElement("div", {
|
553
|
-
className: styles['calendar-tooltip']
|
554
|
-
}, events.slice(1, events.length).map(function (event, index) {
|
555
|
-
return React.createElement(WeeklyEvent, {
|
556
|
-
event: event,
|
557
|
-
onOpenDetail: onOpenDetail,
|
558
|
-
onEventDetail: onEventDetail,
|
559
|
-
key: index + 1
|
560
|
-
});
|
561
|
-
}))
|
562
|
-
}, "+", Math.max(events.length - 1, 0), " More")));
|
563
|
-
}
|
564
|
-
return events.map(function (event, index) {
|
565
|
-
return React.createElement(WeeklyEvent, {
|
566
|
-
key: index,
|
567
|
-
event: event,
|
568
|
-
onOpenDetail: onOpenDetail,
|
569
|
-
onEventDetail: onEventDetail
|
570
|
-
});
|
571
|
-
});
|
572
|
-
}, [events]);
|
573
|
-
return React.createElement("div", {
|
574
|
-
className: styles['weekly-calendar__cell'] + " " + (isToday ? styles['bg-info/10'] : styles['bg-white']),
|
575
|
-
onClick: handleOpenCreateModal
|
576
|
-
}, renderWeeklyEvent);
|
577
|
-
};
|
578
|
-
|
579
|
-
dayjs.extend(isBetween);
|
580
|
-
var getEventAllDay = function getEventAllDay(events, targetDate) {
|
581
|
-
return daysOfWeekKeys.reduce(function (acc, day, index) {
|
582
|
-
var currentDate = targetDate.add(index, 'day');
|
583
|
-
acc[day] = {
|
584
|
-
events: events.reduce(function (filteredEvents, event) {
|
585
|
-
if (dayjs(event.startDate).isSame(currentDate.startOf('day')) && checkIsAllday(dayjs(event.startDate), dayjs(event.endDate))) {
|
586
|
-
filteredEvents.push(_extends({}, event, {
|
587
|
-
isAllDay: true
|
588
|
-
}));
|
589
|
-
}
|
590
|
-
return filteredEvents;
|
591
|
-
}, []),
|
592
|
-
date: currentDate
|
593
|
-
};
|
594
|
-
return acc;
|
595
|
-
}, {});
|
596
|
-
};
|
597
|
-
var getEventsOfDay = function getEventsOfDay(events, targetHour) {
|
598
|
-
return daysOfWeekKeys.reduce(function (acc, day, index) {
|
599
|
-
var currentDate = targetHour.add(index, 'day');
|
600
|
-
acc[day] = {
|
601
|
-
events: events.filter(function (event) {
|
602
|
-
return dayjs(event.startDate).isSame(currentDate, 'hour') && !checkIsAllday(dayjs(event.startDate), dayjs(event.endDate));
|
603
|
-
}),
|
604
|
-
date: currentDate
|
605
|
-
};
|
606
|
-
return acc;
|
607
|
-
}, {});
|
608
|
-
};
|
609
|
-
var WeeklyCalendar = function WeeklyCalendar(_ref) {
|
610
|
-
var startDate = _ref.startDate,
|
611
|
-
endDate = _ref.endDate,
|
612
|
-
events = _ref.events,
|
613
|
-
norms = _ref.norms,
|
614
|
-
showWeeklyNorm = _ref.showWeeklyNorm,
|
615
|
-
onOpenDetail = _ref.onOpenDetail,
|
616
|
-
onOpenCreate = _ref.onOpenCreate,
|
617
|
-
onEventDetail = _ref.onEventDetail,
|
618
|
-
loading = _ref.loading;
|
619
|
-
var getTableColumns = function getTableColumns() {
|
620
|
-
var _calculateNormOfWeek = calculateNormOfWeek(norms, events, startDate, endDate),
|
621
|
-
normOfWeek = _calculateNormOfWeek.normOfWeek,
|
622
|
-
totalNorm = _calculateNormOfWeek.totalNorm;
|
623
|
-
var hourColumn = {
|
624
|
-
title: React.createElement("div", {
|
625
|
-
className: styles['weekly-calendar__title']
|
626
|
-
}, showWeeklyNorm && React.createElement(React.Fragment, null, React.createElement("div", null, "Weekly Norm"), React.createElement("div", {
|
627
|
-
className: clsx$1(normOfWeek > totalNorm && styles['!text-error'])
|
628
|
-
}, normOfWeek + "/" + totalNorm))),
|
629
|
-
dataIndex: 'hour',
|
630
|
-
key: 'hour',
|
631
|
-
width: 1,
|
632
|
-
render: function render(value) {
|
633
|
-
return React.createElement("div", null, value);
|
634
|
-
}
|
635
|
-
};
|
636
|
-
var dayColumns = Object.values(DAYS_OF_WEEK).map(function (day, index) {
|
637
|
-
return {
|
638
|
-
title: React.createElement("div", {
|
639
|
-
className: styles['weekly-calendar__title']
|
640
|
-
}, React.createElement("div", null, day.slice(0, 3)), React.createElement("div", null, dayjs(startDate).add(index, 'day').format('DD/MM'))),
|
641
|
-
dataIndex: day,
|
642
|
-
key: day,
|
643
|
-
render: function render(value) {
|
644
|
-
return React.createElement(WeeklyCell, {
|
645
|
-
key: index,
|
646
|
-
events: value.events,
|
647
|
-
date: value.date,
|
648
|
-
onOpenDetail: onOpenDetail,
|
649
|
-
onOpenCreate: onOpenCreate,
|
650
|
-
onEventDetail: onEventDetail
|
651
|
-
});
|
652
|
-
}
|
653
|
-
};
|
654
|
-
});
|
655
|
-
return [hourColumn].concat(dayColumns);
|
656
|
-
};
|
657
|
-
var getTableData = function getTableData() {
|
658
|
-
var data = [];
|
659
|
-
data.push(_extends({
|
660
|
-
id: -1,
|
661
|
-
hour: 'All day'
|
662
|
-
}, getEventAllDay(events, startDate)));
|
663
|
-
for (var i = 0; i < HOURS_PER_DAY; i++) {
|
664
|
-
var targetHour = dayjs(startDate).add(i, 'hour');
|
665
|
-
data.push(_extends({
|
666
|
-
id: i,
|
667
|
-
hour: targetHour.format('HH:mm')
|
668
|
-
}, getEventsOfDay(events, targetHour)));
|
669
|
-
}
|
670
|
-
return data;
|
671
|
-
};
|
672
|
-
return React.createElement(Table, {
|
673
|
-
rowKey: function rowKey(record) {
|
674
|
-
return record.id;
|
675
|
-
},
|
676
|
-
columns: getTableColumns(),
|
677
|
-
dataSource: getTableData(),
|
678
|
-
pagination: false,
|
679
|
-
rowHoverable: false,
|
680
|
-
className: styles['weekly-calendar'],
|
681
|
-
loading: loading
|
682
|
-
});
|
683
|
-
};
|
684
|
-
|
685
498
|
var SelectBox = function SelectBox(_ref) {
|
686
499
|
var value = _ref.value,
|
687
500
|
options = _ref.options,
|
@@ -725,6 +538,8 @@ var LMSHeaderCalendar = function LMSHeaderCalendar(_ref) {
|
|
725
538
|
};
|
726
539
|
return React.createElement("div", {
|
727
540
|
className: styles['header-calendar']
|
541
|
+
}, React.createElement("div", {
|
542
|
+
className: styles['header-calendar_filter']
|
728
543
|
}, React.createElement("div", {
|
729
544
|
className: clsx$1('cursor-pointer', filter.isOpen && styles['text-lms-primary']),
|
730
545
|
onClick: toggleTurnOnFilter
|
@@ -752,7 +567,7 @@ var LMSHeaderCalendar = function LMSHeaderCalendar(_ref) {
|
|
752
567
|
onClick: function onClick() {
|
753
568
|
return handleChangeDate(currentDate.add(1, calendarMode));
|
754
569
|
}
|
755
|
-
})), showTeacherName && React.createElement("div", {
|
570
|
+
}))), showTeacherName && React.createElement("div", {
|
756
571
|
className: styles['header-calendar__title']
|
757
572
|
}, title), React.createElement("div", {
|
758
573
|
className: styles['header-calendar__controls']
|
@@ -779,46 +594,45 @@ var FilterCalendar = function FilterCalendar(_ref) {
|
|
779
594
|
var filter = _ref.filter,
|
780
595
|
setFilter = _ref.setFilter,
|
781
596
|
courses = _ref.courses;
|
782
|
-
console.log('course:', courses);
|
783
597
|
var noteFilter = useMemo(function () {
|
784
598
|
return [{
|
785
599
|
title: 'Online',
|
786
600
|
icon: React.createElement("div", {
|
787
601
|
className: styles$1['calendar-filter_note_blue']
|
788
602
|
}),
|
789
|
-
value:
|
603
|
+
value: LEARNING_MODE.ONLINE
|
790
604
|
}, {
|
791
605
|
title: 'Live Online',
|
792
606
|
icon: React.createElement("div", {
|
793
607
|
className: styles$1['calendar-filter_note_pureple']
|
794
608
|
}),
|
795
|
-
value:
|
609
|
+
value: LEARNING_MODE.LIVE_ONLINE
|
796
610
|
}, {
|
797
611
|
title: 'Offline',
|
798
612
|
icon: React.createElement("div", {
|
799
613
|
className: styles$1['calendar-filter_note_green']
|
800
614
|
}),
|
801
|
-
value:
|
615
|
+
value: LEARNING_MODE.OFFLINE
|
802
616
|
}, {
|
803
617
|
title: 'Case Study',
|
804
618
|
icon: React.createElement(GoldStarIcon, null),
|
805
|
-
value:
|
619
|
+
value: LEARNING_MODE.CASE_STUDY
|
806
620
|
}, {
|
807
621
|
title: 'Test',
|
808
622
|
icon: React.createElement(BookIcon, null),
|
809
|
-
value:
|
623
|
+
value: LEARNING_MODE.TEST
|
810
624
|
}, {
|
811
625
|
title: 'Holiday',
|
812
626
|
icon: React.createElement("div", {
|
813
627
|
className: styles$1['calendar-filter_note_yellow']
|
814
628
|
}),
|
815
|
-
value:
|
629
|
+
value: LEARNING_MODE.HOLIDAY
|
816
630
|
}, {
|
817
631
|
title: 'Overdue',
|
818
632
|
icon: React.createElement("div", {
|
819
633
|
className: styles$1['calendar-filter_note_red']
|
820
634
|
}),
|
821
|
-
value:
|
635
|
+
value: LEARNING_MODE.OVERDUE
|
822
636
|
}];
|
823
637
|
}, []);
|
824
638
|
var handleFilter = function handleFilter(type, value) {
|
@@ -902,6 +716,20 @@ var FilterCalendar = function FilterCalendar(_ref) {
|
|
902
716
|
}))));
|
903
717
|
};
|
904
718
|
|
719
|
+
var CustomTooltip = function CustomTooltip(_ref) {
|
720
|
+
var title = _ref.title,
|
721
|
+
children = _ref.children,
|
722
|
+
_ref$placement = _ref.placement,
|
723
|
+
placement = _ref$placement === void 0 ? 'top' : _ref$placement;
|
724
|
+
return React.createElement(Tooltip, {
|
725
|
+
color: '#ffffff',
|
726
|
+
title: React.createElement("div", {
|
727
|
+
className: styles['text-gray-600']
|
728
|
+
}, title),
|
729
|
+
placement: placement
|
730
|
+
}, React.createElement("div", null, children));
|
731
|
+
};
|
732
|
+
|
905
733
|
var MonthlyEvent = function MonthlyEvent(_ref) {
|
906
734
|
var event = _ref.event,
|
907
735
|
isSameMonth = _ref.isSameMonth,
|
@@ -1075,8 +903,204 @@ var MonthlyCalendar = function MonthlyCalendar(_ref) {
|
|
1075
903
|
});
|
1076
904
|
};
|
1077
905
|
|
906
|
+
var _getIconEvent;
|
907
|
+
var getIconEvent = (_getIconEvent = {}, _getIconEvent[EVENT_TYPES.TEACHING] = React.createElement(Book, null), _getIconEvent[EVENT_TYPES.BUSY] = React.createElement(CalendarDelete, null), _getIconEvent[EVENT_TYPES.TIME_OFF] = React.createElement(Star, null), _getIconEvent[EVENT_TYPES.OTHER] = React.createElement(CalendarAccept, null), _getIconEvent);
|
908
|
+
var calculateBoxSize = function calculateBoxSize(startTime, endTime) {
|
909
|
+
var minutes = dayjs(startTime).minute();
|
910
|
+
var diffMinutes = dayjs(endTime).diff(startTime, 'hour', true);
|
911
|
+
return {
|
912
|
+
width: diffMinutes || 1,
|
913
|
+
left: Math.floor(minutes / MINUTES_PER_HOUR * 100)
|
914
|
+
};
|
915
|
+
};
|
916
|
+
var LMSWeeklyEvent = function LMSWeeklyEvent(_ref) {
|
917
|
+
var event = _ref.event,
|
918
|
+
onOpenDetail = _ref.onOpenDetail,
|
919
|
+
onEventDetail = _ref.onEventDetail;
|
920
|
+
var formattedDate = customDateFormat(event.startDate, TIME_FORMAT) + ' - ' + customDateFormat(event.endDate, TIME_FORMAT);
|
921
|
+
var _calculateBoxSize = calculateBoxSize(event.startDate, event.endDate),
|
922
|
+
width = _calculateBoxSize.width,
|
923
|
+
left = _calculateBoxSize.left;
|
924
|
+
return React.createElement("div", {
|
925
|
+
className: styles["event-" + convertType[event.type]],
|
926
|
+
onClick: function onClick() {
|
927
|
+
onOpenDetail(dayjs(event.startDate).toDate(), [event]);
|
928
|
+
onEventDetail && onEventDetail(event);
|
929
|
+
},
|
930
|
+
style: {
|
931
|
+
top: "0%",
|
932
|
+
height: "100%",
|
933
|
+
width: width * 100 + '%',
|
934
|
+
left: left + '%',
|
935
|
+
zIndex: event.type === EVENT_TYPES.BUSY ? 2 : 1
|
936
|
+
}
|
937
|
+
}, React.createElement("div", {
|
938
|
+
className: clsx$1(styles['weekly-event'])
|
939
|
+
}, React.createElement("div", {
|
940
|
+
className: clsx$1(styles['weekly-event--collapse'])
|
941
|
+
}, React.createElement("div", {
|
942
|
+
className: styles.flex
|
943
|
+
}, getIconEvent[event.type]), React.createElement("div", {
|
944
|
+
className: styles['weekly-event__title']
|
945
|
+
}, React.createElement(CustomTooltip, {
|
946
|
+
title: event.title
|
947
|
+
}, event.title))), React.createElement("div", {
|
948
|
+
className: styles['weekly-event__date']
|
949
|
+
}, React.createElement(CustomTooltip, {
|
950
|
+
title: formattedDate
|
951
|
+
}, formattedDate))));
|
952
|
+
};
|
953
|
+
|
954
|
+
var LMSWeeklyCell = function LMSWeeklyCell(_ref) {
|
955
|
+
var _events;
|
956
|
+
var events = _ref.events,
|
957
|
+
date = _ref.date,
|
958
|
+
onOpenDetail = _ref.onOpenDetail,
|
959
|
+
onOpenCreate = _ref.onOpenCreate,
|
960
|
+
onEventDetail = _ref.onEventDetail;
|
961
|
+
var isToday = dayjs().isSame(date, 'day');
|
962
|
+
var handleOpenCreateModal = function handleOpenCreateModal(e) {
|
963
|
+
if (e.target !== e.currentTarget) return;
|
964
|
+
onOpenCreate(dayjs(date).toDate());
|
965
|
+
};
|
966
|
+
events = (_events = events) === null || _events === void 0 ? void 0 : _events.sort(function (a, b) {
|
967
|
+
return a.type === EVENT_TYPES.BUSY && b.type !== EVENT_TYPES.BUSY ? 1 : -1;
|
968
|
+
});
|
969
|
+
var renderWeeklyEvent = useMemo(function () {
|
970
|
+
var _events2, _events3, _events4;
|
971
|
+
var isAllDay = (_events2 = events) === null || _events2 === void 0 ? void 0 : _events2.some(function (item) {
|
972
|
+
return item.isAllDay;
|
973
|
+
});
|
974
|
+
if (isAllDay && ((_events3 = events) === null || _events3 === void 0 ? void 0 : _events3.length) > 1) {
|
975
|
+
return React.createElement(React.Fragment, null, React.createElement(LMSWeeklyEvent, {
|
976
|
+
event: events[0],
|
977
|
+
onOpenDetail: onOpenDetail,
|
978
|
+
onEventDetail: onEventDetail
|
979
|
+
}), React.createElement("div", {
|
980
|
+
className: styles['see-more']
|
981
|
+
}, React.createElement(CustomTooltip, {
|
982
|
+
placement: 'bottom',
|
983
|
+
title: React.createElement("div", {
|
984
|
+
className: styles['calendar-tooltip']
|
985
|
+
}, events.slice(1, events.length).map(function (event, index) {
|
986
|
+
return React.createElement(LMSWeeklyEvent, {
|
987
|
+
event: event,
|
988
|
+
onOpenDetail: onOpenDetail,
|
989
|
+
onEventDetail: onEventDetail,
|
990
|
+
key: index + 1
|
991
|
+
});
|
992
|
+
}))
|
993
|
+
}, "+", Math.max(events.length - 1, 0), " More")));
|
994
|
+
}
|
995
|
+
return (_events4 = events) === null || _events4 === void 0 ? void 0 : _events4.map(function (event, index) {
|
996
|
+
return React.createElement(LMSWeeklyEvent, {
|
997
|
+
key: index,
|
998
|
+
event: event,
|
999
|
+
onOpenDetail: onOpenDetail,
|
1000
|
+
onEventDetail: onEventDetail
|
1001
|
+
});
|
1002
|
+
});
|
1003
|
+
}, [events]);
|
1004
|
+
return React.createElement("div", {
|
1005
|
+
className: styles['weekly-calendar__cell'] + " " + (isToday ? styles['bg-info/10'] : styles['bg-white']),
|
1006
|
+
onClick: handleOpenCreateModal
|
1007
|
+
}, renderWeeklyEvent);
|
1008
|
+
};
|
1009
|
+
|
1010
|
+
dayjs.extend(isBetween);
|
1011
|
+
var LMSWeeklyCalendar = function LMSWeeklyCalendar(_ref) {
|
1012
|
+
var startDate = _ref.startDate,
|
1013
|
+
events = _ref.events,
|
1014
|
+
onOpenDetail = _ref.onOpenDetail,
|
1015
|
+
onOpenCreate = _ref.onOpenCreate,
|
1016
|
+
onEventDetail = _ref.onEventDetail,
|
1017
|
+
loading = _ref.loading;
|
1018
|
+
var getEventsOfHour = function getEventsOfHour(events, targetHour) {
|
1019
|
+
return hoursOfDayKeys.reduce(function (acc, hour) {
|
1020
|
+
acc[hour] = {
|
1021
|
+
events: events.filter(function (event) {
|
1022
|
+
return dayjs(event.startDate).isSame(dayjs(targetHour.format('YYYY-MM-DD') + "T" + hour + ":00"), 'hour') && !checkIsAllday(dayjs(event.startDate), dayjs(event.endDate));
|
1023
|
+
}),
|
1024
|
+
date: dayjs(targetHour.format('YYYY-MM-DD') + "T" + hour)
|
1025
|
+
};
|
1026
|
+
return acc;
|
1027
|
+
}, {});
|
1028
|
+
};
|
1029
|
+
var getTableColumns = function getTableColumns() {
|
1030
|
+
var hourColumn = {
|
1031
|
+
title: React.createElement("div", {
|
1032
|
+
className: styles['weekly-calendar__title']
|
1033
|
+
}),
|
1034
|
+
dataIndex: 'hour',
|
1035
|
+
key: 'hour',
|
1036
|
+
width: 1,
|
1037
|
+
render: function render(value) {
|
1038
|
+
return React.createElement("div", null, value);
|
1039
|
+
}
|
1040
|
+
};
|
1041
|
+
var hours = Array.from({
|
1042
|
+
length: 17
|
1043
|
+
}, function (_, i) {
|
1044
|
+
return 7 + i;
|
1045
|
+
});
|
1046
|
+
var timeColums = hours.map(function (time, index) {
|
1047
|
+
return {
|
1048
|
+
title: React.createElement("div", {
|
1049
|
+
className: styles['weekly-calendar__title']
|
1050
|
+
}, time % 2 !== 0 ? React.createElement("div", {
|
1051
|
+
style: {
|
1052
|
+
textAlign: 'start'
|
1053
|
+
}
|
1054
|
+
}, time < 10 ? '0' + time + ':00' : time + ':00') : React.createElement("div", {
|
1055
|
+
style: {
|
1056
|
+
minWidth: '35px'
|
1057
|
+
}
|
1058
|
+
})),
|
1059
|
+
dataIndex: "" + (time < 10 ? '0' + time + ':00' : time + ':00'),
|
1060
|
+
key: "" + (time < 10 ? '0' + time + ':00' : time + ':00'),
|
1061
|
+
render: function render(value) {
|
1062
|
+
return React.createElement(LMSWeeklyCell, {
|
1063
|
+
key: index,
|
1064
|
+
events: value === null || value === void 0 ? void 0 : value.events,
|
1065
|
+
date: value === null || value === void 0 ? void 0 : value.date,
|
1066
|
+
onOpenDetail: onOpenDetail,
|
1067
|
+
onOpenCreate: onOpenCreate,
|
1068
|
+
onEventDetail: onEventDetail
|
1069
|
+
});
|
1070
|
+
}
|
1071
|
+
};
|
1072
|
+
});
|
1073
|
+
return [hourColumn].concat(timeColums);
|
1074
|
+
};
|
1075
|
+
var getTableData = function getTableData() {
|
1076
|
+
var data = [];
|
1077
|
+
for (var i = 0; i < 7; i++) {
|
1078
|
+
var targetHour = dayjs(startDate).add(i, 'day');
|
1079
|
+
data.push(_extends({
|
1080
|
+
id: i,
|
1081
|
+
hour: React.createElement("div", null, React.createElement("div", {
|
1082
|
+
className: styles['lms-calendar__tablet']
|
1083
|
+
}, Object.values(DAYS_OF_WEEK_SHORTEN)[i]), React.createElement("div", {
|
1084
|
+
className: styles['lms-calendar__tablet']
|
1085
|
+
}, dayjs(startDate).add(i, 'day').format('DD')))
|
1086
|
+
}, getEventsOfHour(events, targetHour)));
|
1087
|
+
}
|
1088
|
+
return data;
|
1089
|
+
};
|
1090
|
+
return React.createElement(Table, {
|
1091
|
+
rowKey: function rowKey(record) {
|
1092
|
+
return record.id;
|
1093
|
+
},
|
1094
|
+
columns: getTableColumns(),
|
1095
|
+
dataSource: getTableData(),
|
1096
|
+
pagination: false,
|
1097
|
+
rowHoverable: false,
|
1098
|
+
className: styles['weekly-calendar'],
|
1099
|
+
loading: loading
|
1100
|
+
});
|
1101
|
+
};
|
1102
|
+
|
1078
1103
|
var SAPPCalendar = function SAPPCalendar(_ref) {
|
1079
|
-
var _courses$map;
|
1080
1104
|
var teacherName = _ref.teacherName,
|
1081
1105
|
events = _ref.events,
|
1082
1106
|
_ref$norms = _ref.norms,
|
@@ -1097,15 +1121,15 @@ var SAPPCalendar = function SAPPCalendar(_ref) {
|
|
1097
1121
|
var _useState = useState(dayjs()),
|
1098
1122
|
currentDate = _useState[0],
|
1099
1123
|
setCurrentDate = _useState[1];
|
1100
|
-
var _useState2 = useState('
|
1124
|
+
var _useState2 = useState('week'),
|
1101
1125
|
calendarMode = _useState2[0],
|
1102
1126
|
setCalendarMode = _useState2[1];
|
1103
1127
|
var _useState3 = useState({
|
1104
1128
|
isOpen: false,
|
1105
|
-
type:
|
1106
|
-
courseId:
|
1129
|
+
type: Object.values(LEARNING_MODE),
|
1130
|
+
courseId: courses !== null && courses !== void 0 && courses.length ? courses === null || courses === void 0 ? void 0 : courses.map(function (item) {
|
1107
1131
|
return item.id;
|
1108
|
-
})
|
1132
|
+
}) : []
|
1109
1133
|
}),
|
1110
1134
|
filter = _useState3[0],
|
1111
1135
|
setFilter = _useState3[1];
|
@@ -1176,12 +1200,11 @@ var SAPPCalendar = function SAPPCalendar(_ref) {
|
|
1176
1200
|
onOpenCreate: onOpenCreate,
|
1177
1201
|
onEventDetail: onEventDetail,
|
1178
1202
|
loading: loading
|
1179
|
-
}), calendarMode === 'week' && React.createElement(
|
1203
|
+
}), calendarMode === 'week' && React.createElement(LMSWeeklyCalendar, {
|
1180
1204
|
startDate: startDate,
|
1181
1205
|
endDate: endDate,
|
1182
1206
|
events: splittedEvents,
|
1183
1207
|
norms: norms,
|
1184
|
-
showWeeklyNorm: showWeeklyNorm,
|
1185
1208
|
onOpenDetail: onOpenDetail,
|
1186
1209
|
onOpenCreate: onOpenCreate,
|
1187
1210
|
onEventDetail: onEventDetail,
|