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.
@@ -1,6 +1,6 @@
1
1
  import dayjs from 'dayjs';
2
2
  import React, { useState, useEffect, useMemo } from 'react';
3
- import { DatePicker, Tooltip, Table, Select, Calendar } from 'antd';
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: 'ONLINE'
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: 'LIVE_ONLINE'
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: 'OFFLINE'
615
+ value: LEARNING_MODE.OFFLINE
802
616
  }, {
803
617
  title: 'Case Study',
804
618
  icon: React.createElement(GoldStarIcon, null),
805
- value: 'CASE_STUDY'
619
+ value: LEARNING_MODE.CASE_STUDY
806
620
  }, {
807
621
  title: 'Test',
808
622
  icon: React.createElement(BookIcon, null),
809
- value: 'TEST'
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: 'HOLIDAY'
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: 'OVERDUE'
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('month'),
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: ['ONLINE', 'LIVE_ONLINE', 'OFFLINE', 'CASE_STUDY', 'TEST', 'HOLIDAY', 'OVERDUE'],
1106
- courseId: (_courses$map = courses === null || courses === void 0 ? void 0 : courses.map(function (item) {
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
- })) != null ? _courses$map : []
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(WeeklyCalendar, {
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,