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