sapp-common-package-test-final 1.0.10 → 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.
@@ -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,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']
@@ -779,46 +584,45 @@ var FilterCalendar = function FilterCalendar(_ref) {
779
584
  var filter = _ref.filter,
780
585
  setFilter = _ref.setFilter,
781
586
  courses = _ref.courses;
782
- console.log('course:', courses);
783
587
  var noteFilter = useMemo(function () {
784
588
  return [{
785
589
  title: 'Online',
786
590
  icon: React.createElement("div", {
787
591
  className: styles$1['calendar-filter_note_blue']
788
592
  }),
789
- value: 'ONLINE'
593
+ value: LEARNING_MODE.ONLINE
790
594
  }, {
791
595
  title: 'Live Online',
792
596
  icon: React.createElement("div", {
793
597
  className: styles$1['calendar-filter_note_pureple']
794
598
  }),
795
- value: 'LIVE_ONLINE'
599
+ value: LEARNING_MODE.LIVE_ONLINE
796
600
  }, {
797
601
  title: 'Offline',
798
602
  icon: React.createElement("div", {
799
603
  className: styles$1['calendar-filter_note_green']
800
604
  }),
801
- value: 'OFFLINE'
605
+ value: LEARNING_MODE.OFFLINE
802
606
  }, {
803
607
  title: 'Case Study',
804
608
  icon: React.createElement(GoldStarIcon, null),
805
- value: 'CASE_STUDY'
609
+ value: LEARNING_MODE.CASE_STUDY
806
610
  }, {
807
611
  title: 'Test',
808
612
  icon: React.createElement(BookIcon, null),
809
- value: 'TEST'
613
+ value: LEARNING_MODE.TEST
810
614
  }, {
811
615
  title: 'Holiday',
812
616
  icon: React.createElement("div", {
813
617
  className: styles$1['calendar-filter_note_yellow']
814
618
  }),
815
- value: 'HOLIDAY'
619
+ value: LEARNING_MODE.HOLIDAY
816
620
  }, {
817
621
  title: 'Overdue',
818
622
  icon: React.createElement("div", {
819
623
  className: styles$1['calendar-filter_note_red']
820
624
  }),
821
- value: 'OVERDUE'
625
+ value: LEARNING_MODE.OVERDUE
822
626
  }];
823
627
  }, []);
824
628
  var handleFilter = function handleFilter(type, value) {
@@ -902,6 +706,20 @@ var FilterCalendar = function FilterCalendar(_ref) {
902
706
  }))));
903
707
  };
904
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
+
905
723
  var MonthlyEvent = function MonthlyEvent(_ref) {
906
724
  var event = _ref.event,
907
725
  isSameMonth = _ref.isSameMonth,
@@ -1075,8 +893,204 @@ var MonthlyCalendar = function MonthlyCalendar(_ref) {
1075
893
  });
1076
894
  };
1077
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
+
1078
1093
  var SAPPCalendar = function SAPPCalendar(_ref) {
1079
- var _courses$map;
1080
1094
  var teacherName = _ref.teacherName,
1081
1095
  events = _ref.events,
1082
1096
  _ref$norms = _ref.norms,
@@ -1097,15 +1111,15 @@ var SAPPCalendar = function SAPPCalendar(_ref) {
1097
1111
  var _useState = useState(dayjs()),
1098
1112
  currentDate = _useState[0],
1099
1113
  setCurrentDate = _useState[1];
1100
- var _useState2 = useState('month'),
1114
+ var _useState2 = useState('week'),
1101
1115
  calendarMode = _useState2[0],
1102
1116
  setCalendarMode = _useState2[1];
1103
1117
  var _useState3 = useState({
1104
1118
  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) {
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) {
1107
1121
  return item.id;
1108
- })) != null ? _courses$map : []
1122
+ }) : []
1109
1123
  }),
1110
1124
  filter = _useState3[0],
1111
1125
  setFilter = _useState3[1];
@@ -1176,12 +1190,11 @@ var SAPPCalendar = function SAPPCalendar(_ref) {
1176
1190
  onOpenCreate: onOpenCreate,
1177
1191
  onEventDetail: onEventDetail,
1178
1192
  loading: loading
1179
- }), calendarMode === 'week' && React.createElement(WeeklyCalendar, {
1193
+ }), calendarMode === 'week' && React.createElement(LMSWeeklyCalendar, {
1180
1194
  startDate: startDate,
1181
1195
  endDate: endDate,
1182
1196
  events: splittedEvents,
1183
1197
  norms: norms,
1184
- showWeeklyNorm: showWeeklyNorm,
1185
1198
  onOpenDetail: onOpenDetail,
1186
1199
  onOpenCreate: onOpenCreate,
1187
1200
  onEventDetail: onEventDetail,