sapp-common-package-test-final 1.0.9 → 1.0.11
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 +29 -0
- package/dist/index.css +25 -9
- package/dist/index.js +262 -244
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +263 -245
- 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,27 @@ 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 HOUR_OF_DAY;
|
72
|
+
(function (HOUR_OF_DAY) {
|
73
|
+
HOUR_OF_DAY["07:00"] = "07:00";
|
74
|
+
HOUR_OF_DAY["08:00"] = "08:00";
|
75
|
+
HOUR_OF_DAY["09:00"] = "09:00";
|
76
|
+
HOUR_OF_DAY["10:00"] = "10:00";
|
77
|
+
HOUR_OF_DAY["11:00"] = "11:00";
|
78
|
+
HOUR_OF_DAY["12:00"] = "12:00";
|
79
|
+
HOUR_OF_DAY["13:00"] = "13:00";
|
80
|
+
HOUR_OF_DAY["14:00"] = "14:00";
|
81
|
+
HOUR_OF_DAY["15:00"] = "15:00";
|
82
|
+
HOUR_OF_DAY["16:00"] = "16:00";
|
83
|
+
HOUR_OF_DAY["17:00"] = "17:00";
|
84
|
+
HOUR_OF_DAY["18:00"] = "18:00";
|
85
|
+
HOUR_OF_DAY["19:00"] = "19:00";
|
86
|
+
HOUR_OF_DAY["20:00"] = "20:00";
|
87
|
+
HOUR_OF_DAY["21:00"] = "21:00";
|
88
|
+
HOUR_OF_DAY["22:00"] = "22:00";
|
89
|
+
HOUR_OF_DAY["23:00"] = "23:00";
|
90
|
+
HOUR_OF_DAY["24:00"] = "24:00";
|
91
|
+
})(HOUR_OF_DAY || (HOUR_OF_DAY = {}));
|
72
92
|
var EVENT_TYPES;
|
73
93
|
(function (EVENT_TYPES) {
|
74
94
|
EVENT_TYPES["TEACHING"] = "TEACHING";
|
@@ -80,6 +100,16 @@ var FORMAT_DATE_CARLENDA = {
|
|
80
100
|
MONTH_AND_WEEK: 'MMMM, YYYY',
|
81
101
|
DATE: 'MMMM DD, YYYY'
|
82
102
|
};
|
103
|
+
var LEARNING_MODE;
|
104
|
+
(function (LEARNING_MODE) {
|
105
|
+
LEARNING_MODE["ONLINE"] = "ONLINE";
|
106
|
+
LEARNING_MODE["LIVE_ONLINE"] = "LIVE_ONLINE";
|
107
|
+
LEARNING_MODE["OFFLINE"] = "OFFLINE";
|
108
|
+
LEARNING_MODE["CASE_STUDY"] = "CASE_STUDY";
|
109
|
+
LEARNING_MODE["HOLIDAY"] = "HOLIDAY";
|
110
|
+
LEARNING_MODE["OVERDUE"] = "OVERDUE";
|
111
|
+
LEARNING_MODE["TEST"] = "TEST";
|
112
|
+
})(LEARNING_MODE || (LEARNING_MODE = {}));
|
83
113
|
|
84
114
|
var _convertType;
|
85
115
|
var customDateFormat = function customDateFormat(value, formatStr) {
|
@@ -87,6 +117,7 @@ var customDateFormat = function customDateFormat(value, formatStr) {
|
|
87
117
|
};
|
88
118
|
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
119
|
var daysOfWeekKeys = Object.values(DAYS_OF_WEEK);
|
120
|
+
var hoursOfDayKeys = Object.values(HOUR_OF_DAY);
|
90
121
|
var calculateNormOfWeek = function calculateNormOfWeek(norms, events, startDate, endDate) {
|
91
122
|
var norm = norms.find(function (norm) {
|
92
123
|
return startDate.isBetween(norm.startDate, norm.endDate, 'day', '[]') && endDate.isBetween(norm.startDate, norm.endDate, 'day', '[]');
|
@@ -366,7 +397,7 @@ var HiddenEyeIcon = function HiddenEyeIcon() {
|
|
366
397
|
}));
|
367
398
|
};
|
368
399
|
|
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"};
|
400
|
+
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
401
|
|
371
402
|
var Button = function Button(_ref) {
|
372
403
|
var _ref$type = _ref.type,
|
@@ -454,234 +485,6 @@ var HeaderCalendar = function HeaderCalendar(_ref) {
|
|
454
485
|
}, "Week")));
|
455
486
|
};
|
456
487
|
|
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
488
|
var SelectBox = function SelectBox(_ref) {
|
686
489
|
var value = _ref.value,
|
687
490
|
options = _ref.options,
|
@@ -725,6 +528,8 @@ var LMSHeaderCalendar = function LMSHeaderCalendar(_ref) {
|
|
725
528
|
};
|
726
529
|
return React.createElement("div", {
|
727
530
|
className: styles['header-calendar']
|
531
|
+
}, React.createElement("div", {
|
532
|
+
className: styles['header-calendar_filter']
|
728
533
|
}, React.createElement("div", {
|
729
534
|
className: clsx$1('cursor-pointer', filter.isOpen && styles['text-lms-primary']),
|
730
535
|
onClick: toggleTurnOnFilter
|
@@ -752,7 +557,7 @@ var LMSHeaderCalendar = function LMSHeaderCalendar(_ref) {
|
|
752
557
|
onClick: function onClick() {
|
753
558
|
return handleChangeDate(currentDate.add(1, calendarMode));
|
754
559
|
}
|
755
|
-
})), showTeacherName && React.createElement("div", {
|
560
|
+
}))), showTeacherName && React.createElement("div", {
|
756
561
|
className: styles['header-calendar__title']
|
757
562
|
}, title), React.createElement("div", {
|
758
563
|
className: styles['header-calendar__controls']
|
@@ -785,39 +590,39 @@ var FilterCalendar = function FilterCalendar(_ref) {
|
|
785
590
|
icon: React.createElement("div", {
|
786
591
|
className: styles$1['calendar-filter_note_blue']
|
787
592
|
}),
|
788
|
-
value:
|
593
|
+
value: LEARNING_MODE.ONLINE
|
789
594
|
}, {
|
790
595
|
title: 'Live Online',
|
791
596
|
icon: React.createElement("div", {
|
792
597
|
className: styles$1['calendar-filter_note_pureple']
|
793
598
|
}),
|
794
|
-
value:
|
599
|
+
value: LEARNING_MODE.LIVE_ONLINE
|
795
600
|
}, {
|
796
601
|
title: 'Offline',
|
797
602
|
icon: React.createElement("div", {
|
798
603
|
className: styles$1['calendar-filter_note_green']
|
799
604
|
}),
|
800
|
-
value:
|
605
|
+
value: LEARNING_MODE.OFFLINE
|
801
606
|
}, {
|
802
607
|
title: 'Case Study',
|
803
608
|
icon: React.createElement(GoldStarIcon, null),
|
804
|
-
value:
|
609
|
+
value: LEARNING_MODE.CASE_STUDY
|
805
610
|
}, {
|
806
611
|
title: 'Test',
|
807
612
|
icon: React.createElement(BookIcon, null),
|
808
|
-
value:
|
613
|
+
value: LEARNING_MODE.TEST
|
809
614
|
}, {
|
810
615
|
title: 'Holiday',
|
811
616
|
icon: React.createElement("div", {
|
812
617
|
className: styles$1['calendar-filter_note_yellow']
|
813
618
|
}),
|
814
|
-
value:
|
619
|
+
value: LEARNING_MODE.HOLIDAY
|
815
620
|
}, {
|
816
621
|
title: 'Overdue',
|
817
622
|
icon: React.createElement("div", {
|
818
623
|
className: styles$1['calendar-filter_note_red']
|
819
624
|
}),
|
820
|
-
value:
|
625
|
+
value: LEARNING_MODE.OVERDUE
|
821
626
|
}];
|
822
627
|
}, []);
|
823
628
|
var handleFilter = function handleFilter(type, value) {
|
@@ -901,6 +706,20 @@ var FilterCalendar = function FilterCalendar(_ref) {
|
|
901
706
|
}))));
|
902
707
|
};
|
903
708
|
|
709
|
+
var CustomTooltip = function CustomTooltip(_ref) {
|
710
|
+
var title = _ref.title,
|
711
|
+
children = _ref.children,
|
712
|
+
_ref$placement = _ref.placement,
|
713
|
+
placement = _ref$placement === void 0 ? 'top' : _ref$placement;
|
714
|
+
return React.createElement(Tooltip, {
|
715
|
+
color: '#ffffff',
|
716
|
+
title: React.createElement("div", {
|
717
|
+
className: styles['text-gray-600']
|
718
|
+
}, title),
|
719
|
+
placement: placement
|
720
|
+
}, React.createElement("div", null, children));
|
721
|
+
};
|
722
|
+
|
904
723
|
var MonthlyEvent = function MonthlyEvent(_ref) {
|
905
724
|
var event = _ref.event,
|
906
725
|
isSameMonth = _ref.isSameMonth,
|
@@ -1074,6 +893,203 @@ var MonthlyCalendar = function MonthlyCalendar(_ref) {
|
|
1074
893
|
});
|
1075
894
|
};
|
1076
895
|
|
896
|
+
var _getIconEvent;
|
897
|
+
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);
|
898
|
+
var calculateBoxSize = function calculateBoxSize(startTime, endTime) {
|
899
|
+
var minutes = dayjs(startTime).minute();
|
900
|
+
var diffMinutes = dayjs(endTime).diff(startTime, 'hour', true);
|
901
|
+
return {
|
902
|
+
width: diffMinutes || 1,
|
903
|
+
left: Math.floor(minutes / MINUTES_PER_HOUR * 100)
|
904
|
+
};
|
905
|
+
};
|
906
|
+
var LMSWeeklyEvent = function LMSWeeklyEvent(_ref) {
|
907
|
+
var event = _ref.event,
|
908
|
+
onOpenDetail = _ref.onOpenDetail,
|
909
|
+
onEventDetail = _ref.onEventDetail;
|
910
|
+
var formattedDate = customDateFormat(event.startDate, TIME_FORMAT) + ' - ' + customDateFormat(event.endDate, TIME_FORMAT);
|
911
|
+
var _calculateBoxSize = calculateBoxSize(event.startDate, event.endDate),
|
912
|
+
width = _calculateBoxSize.width,
|
913
|
+
left = _calculateBoxSize.left;
|
914
|
+
return React.createElement("div", {
|
915
|
+
className: styles["event-" + convertType[event.type]],
|
916
|
+
onClick: function onClick() {
|
917
|
+
onOpenDetail(dayjs(event.startDate).toDate(), [event]);
|
918
|
+
onEventDetail && onEventDetail(event);
|
919
|
+
},
|
920
|
+
style: {
|
921
|
+
top: "0%",
|
922
|
+
height: "100%",
|
923
|
+
width: width * 100 + '%',
|
924
|
+
left: left + '%',
|
925
|
+
zIndex: event.type === EVENT_TYPES.BUSY ? 2 : 1
|
926
|
+
}
|
927
|
+
}, React.createElement("div", {
|
928
|
+
className: clsx$1(styles['weekly-event'])
|
929
|
+
}, React.createElement("div", {
|
930
|
+
className: clsx$1(styles['weekly-event--collapse'])
|
931
|
+
}, React.createElement("div", {
|
932
|
+
className: styles.flex
|
933
|
+
}, getIconEvent[event.type]), React.createElement("div", {
|
934
|
+
className: styles['weekly-event__title']
|
935
|
+
}, React.createElement(CustomTooltip, {
|
936
|
+
title: event.title
|
937
|
+
}, event.title))), React.createElement("div", {
|
938
|
+
className: styles['weekly-event__date']
|
939
|
+
}, React.createElement(CustomTooltip, {
|
940
|
+
title: formattedDate
|
941
|
+
}, formattedDate))));
|
942
|
+
};
|
943
|
+
|
944
|
+
var LMSWeeklyCell = function LMSWeeklyCell(_ref) {
|
945
|
+
var _events;
|
946
|
+
var events = _ref.events,
|
947
|
+
date = _ref.date,
|
948
|
+
onOpenDetail = _ref.onOpenDetail,
|
949
|
+
onOpenCreate = _ref.onOpenCreate,
|
950
|
+
onEventDetail = _ref.onEventDetail;
|
951
|
+
var isToday = dayjs().isSame(date, 'day');
|
952
|
+
var handleOpenCreateModal = function handleOpenCreateModal(e) {
|
953
|
+
if (e.target !== e.currentTarget) return;
|
954
|
+
onOpenCreate(dayjs(date).toDate());
|
955
|
+
};
|
956
|
+
events = (_events = events) === null || _events === void 0 ? void 0 : _events.sort(function (a, b) {
|
957
|
+
return a.type === EVENT_TYPES.BUSY && b.type !== EVENT_TYPES.BUSY ? 1 : -1;
|
958
|
+
});
|
959
|
+
var renderWeeklyEvent = useMemo(function () {
|
960
|
+
var _events2, _events3, _events4;
|
961
|
+
var isAllDay = (_events2 = events) === null || _events2 === void 0 ? void 0 : _events2.some(function (item) {
|
962
|
+
return item.isAllDay;
|
963
|
+
});
|
964
|
+
if (isAllDay && ((_events3 = events) === null || _events3 === void 0 ? void 0 : _events3.length) > 1) {
|
965
|
+
return React.createElement(React.Fragment, null, React.createElement(LMSWeeklyEvent, {
|
966
|
+
event: events[0],
|
967
|
+
onOpenDetail: onOpenDetail,
|
968
|
+
onEventDetail: onEventDetail
|
969
|
+
}), React.createElement("div", {
|
970
|
+
className: styles['see-more']
|
971
|
+
}, React.createElement(CustomTooltip, {
|
972
|
+
placement: 'bottom',
|
973
|
+
title: React.createElement("div", {
|
974
|
+
className: styles['calendar-tooltip']
|
975
|
+
}, events.slice(1, events.length).map(function (event, index) {
|
976
|
+
return React.createElement(LMSWeeklyEvent, {
|
977
|
+
event: event,
|
978
|
+
onOpenDetail: onOpenDetail,
|
979
|
+
onEventDetail: onEventDetail,
|
980
|
+
key: index + 1
|
981
|
+
});
|
982
|
+
}))
|
983
|
+
}, "+", Math.max(events.length - 1, 0), " More")));
|
984
|
+
}
|
985
|
+
return (_events4 = events) === null || _events4 === void 0 ? void 0 : _events4.map(function (event, index) {
|
986
|
+
return React.createElement(LMSWeeklyEvent, {
|
987
|
+
key: index,
|
988
|
+
event: event,
|
989
|
+
onOpenDetail: onOpenDetail,
|
990
|
+
onEventDetail: onEventDetail
|
991
|
+
});
|
992
|
+
});
|
993
|
+
}, [events]);
|
994
|
+
return React.createElement("div", {
|
995
|
+
className: styles['weekly-calendar__cell'] + " " + (isToday ? styles['bg-info/10'] : styles['bg-white']),
|
996
|
+
onClick: handleOpenCreateModal
|
997
|
+
}, renderWeeklyEvent);
|
998
|
+
};
|
999
|
+
|
1000
|
+
dayjs.extend(isBetween);
|
1001
|
+
var LMSWeeklyCalendar = function LMSWeeklyCalendar(_ref) {
|
1002
|
+
var startDate = _ref.startDate,
|
1003
|
+
events = _ref.events,
|
1004
|
+
onOpenDetail = _ref.onOpenDetail,
|
1005
|
+
onOpenCreate = _ref.onOpenCreate,
|
1006
|
+
onEventDetail = _ref.onEventDetail,
|
1007
|
+
loading = _ref.loading;
|
1008
|
+
var getEventsOfHour = function getEventsOfHour(events, targetHour) {
|
1009
|
+
return hoursOfDayKeys.reduce(function (acc, hour) {
|
1010
|
+
acc[hour] = {
|
1011
|
+
events: events.filter(function (event) {
|
1012
|
+
return dayjs(event.startDate).isSame(dayjs(targetHour.format('YYYY-MM-DD') + "T" + hour + ":00"), 'hour') && !checkIsAllday(dayjs(event.startDate), dayjs(event.endDate));
|
1013
|
+
}),
|
1014
|
+
date: dayjs(targetHour.format('YYYY-MM-DD') + "T" + hour)
|
1015
|
+
};
|
1016
|
+
return acc;
|
1017
|
+
}, {});
|
1018
|
+
};
|
1019
|
+
var getTableColumns = function getTableColumns() {
|
1020
|
+
var hourColumn = {
|
1021
|
+
title: React.createElement("div", {
|
1022
|
+
className: styles['weekly-calendar__title']
|
1023
|
+
}),
|
1024
|
+
dataIndex: 'hour',
|
1025
|
+
key: 'hour',
|
1026
|
+
width: 1,
|
1027
|
+
render: function render(value) {
|
1028
|
+
return React.createElement("div", null, value);
|
1029
|
+
}
|
1030
|
+
};
|
1031
|
+
var hours = Array.from({
|
1032
|
+
length: 17
|
1033
|
+
}, function (_, i) {
|
1034
|
+
return 7 + i;
|
1035
|
+
});
|
1036
|
+
var timeColums = hours.map(function (time, index) {
|
1037
|
+
return {
|
1038
|
+
title: React.createElement("div", {
|
1039
|
+
className: styles['weekly-calendar__title']
|
1040
|
+
}, time % 2 !== 0 ? React.createElement("div", {
|
1041
|
+
style: {
|
1042
|
+
textAlign: 'start'
|
1043
|
+
}
|
1044
|
+
}, time < 10 ? '0' + time + ':00' : time + ':00') : React.createElement("div", {
|
1045
|
+
style: {
|
1046
|
+
minWidth: '35px'
|
1047
|
+
}
|
1048
|
+
})),
|
1049
|
+
dataIndex: "" + (time < 10 ? '0' + time + ':00' : time + ':00'),
|
1050
|
+
key: "" + (time < 10 ? '0' + time + ':00' : time + ':00'),
|
1051
|
+
render: function render(value) {
|
1052
|
+
return React.createElement(LMSWeeklyCell, {
|
1053
|
+
key: index,
|
1054
|
+
events: value === null || value === void 0 ? void 0 : value.events,
|
1055
|
+
date: value === null || value === void 0 ? void 0 : value.date,
|
1056
|
+
onOpenDetail: onOpenDetail,
|
1057
|
+
onOpenCreate: onOpenCreate,
|
1058
|
+
onEventDetail: onEventDetail
|
1059
|
+
});
|
1060
|
+
}
|
1061
|
+
};
|
1062
|
+
});
|
1063
|
+
return [hourColumn].concat(timeColums);
|
1064
|
+
};
|
1065
|
+
var getTableData = function getTableData() {
|
1066
|
+
var data = [];
|
1067
|
+
for (var i = 0; i < 7; i++) {
|
1068
|
+
var targetHour = dayjs(startDate).add(i, 'day');
|
1069
|
+
data.push(_extends({
|
1070
|
+
id: i,
|
1071
|
+
hour: React.createElement("div", null, React.createElement("div", {
|
1072
|
+
className: styles['lms-calendar__tablet']
|
1073
|
+
}, Object.values(DAYS_OF_WEEK)[i]), React.createElement("div", {
|
1074
|
+
className: styles['lms-calendar__tablet']
|
1075
|
+
}, dayjs(startDate).add(i, 'day').format('DD')))
|
1076
|
+
}, getEventsOfHour(events, targetHour)));
|
1077
|
+
}
|
1078
|
+
return data;
|
1079
|
+
};
|
1080
|
+
return React.createElement(Table, {
|
1081
|
+
rowKey: function rowKey(record) {
|
1082
|
+
return record.id;
|
1083
|
+
},
|
1084
|
+
columns: getTableColumns(),
|
1085
|
+
dataSource: getTableData(),
|
1086
|
+
pagination: false,
|
1087
|
+
rowHoverable: false,
|
1088
|
+
className: styles['weekly-calendar'],
|
1089
|
+
loading: loading
|
1090
|
+
});
|
1091
|
+
};
|
1092
|
+
|
1077
1093
|
var SAPPCalendar = function SAPPCalendar(_ref) {
|
1078
1094
|
var teacherName = _ref.teacherName,
|
1079
1095
|
events = _ref.events,
|
@@ -1095,13 +1111,15 @@ var SAPPCalendar = function SAPPCalendar(_ref) {
|
|
1095
1111
|
var _useState = useState(dayjs()),
|
1096
1112
|
currentDate = _useState[0],
|
1097
1113
|
setCurrentDate = _useState[1];
|
1098
|
-
var _useState2 = useState('
|
1114
|
+
var _useState2 = useState('week'),
|
1099
1115
|
calendarMode = _useState2[0],
|
1100
1116
|
setCalendarMode = _useState2[1];
|
1101
1117
|
var _useState3 = useState({
|
1102
1118
|
isOpen: false,
|
1103
|
-
type:
|
1104
|
-
courseId:
|
1119
|
+
type: Object.values(LEARNING_MODE),
|
1120
|
+
courseId: courses !== null && courses !== void 0 && courses.length ? courses === null || courses === void 0 ? void 0 : courses.map(function (item) {
|
1121
|
+
return item.id;
|
1122
|
+
}) : []
|
1105
1123
|
}),
|
1106
1124
|
filter = _useState3[0],
|
1107
1125
|
setFilter = _useState3[1];
|
@@ -1131,11 +1149,12 @@ var SAPPCalendar = function SAPPCalendar(_ref) {
|
|
1131
1149
|
useEffectAfterMounted(function () {
|
1132
1150
|
onRefetchAPI(startDate.toDate(), endDate.toDate());
|
1133
1151
|
}, [startDate, endDate]);
|
1152
|
+
console.log('course:', courses);
|
1134
1153
|
useEffect(function () {
|
1135
1154
|
if (type === 'filter') {
|
1136
1155
|
onFilter && onFilter(filter);
|
1137
1156
|
}
|
1138
|
-
}, [
|
1157
|
+
}, [filter]);
|
1139
1158
|
return React.createElement("div", {
|
1140
1159
|
className: styles['sapp-calendar']
|
1141
1160
|
}, filter.isOpen && React.createElement(FilterCalendar, {
|
@@ -1171,12 +1190,11 @@ var SAPPCalendar = function SAPPCalendar(_ref) {
|
|
1171
1190
|
onOpenCreate: onOpenCreate,
|
1172
1191
|
onEventDetail: onEventDetail,
|
1173
1192
|
loading: loading
|
1174
|
-
}), calendarMode === 'week' && React.createElement(
|
1193
|
+
}), calendarMode === 'week' && React.createElement(LMSWeeklyCalendar, {
|
1175
1194
|
startDate: startDate,
|
1176
1195
|
endDate: endDate,
|
1177
1196
|
events: splittedEvents,
|
1178
1197
|
norms: norms,
|
1179
|
-
showWeeklyNorm: showWeeklyNorm,
|
1180
1198
|
onOpenDetail: onOpenDetail,
|
1181
1199
|
onOpenCreate: onOpenCreate,
|
1182
1200
|
onEventDetail: onEventDetail,
|