touchstudy-core 0.1.168 → 0.1.170
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/Selectors/StudentSelector.d.ts +3 -1
- package/dist/components/Selectors/TeacherSelector.d.ts +15 -0
- package/dist/containers/Announcements/apiClients/announcementService.d.ts +5 -0
- package/dist/containers/Announcements/components/AnnouncementItem.d.ts +11 -0
- package/dist/containers/Announcements/configs/constants.d.ts +3 -0
- package/dist/containers/Announcements/configs/enums.d.ts +8 -0
- package/dist/containers/Announcements/configs/fns.d.ts +10 -0
- package/dist/containers/Announcements/configs/types.d.ts +24 -0
- package/dist/containers/Announcements/configs/utils.d.ts +3 -0
- package/dist/containers/Announcements/index.d.ts +5 -0
- package/dist/containers/Announcements/views/AnnouncementContainer.d.ts +10 -0
- package/dist/containers/Announcements/views/AnnouncementList.d.ts +12 -0
- package/dist/containers/Notes/components/GeneralNoteDialog.d.ts +4 -0
- package/dist/containers/Notes/components/NoteItemList.d.ts +14 -0
- package/dist/containers/Notes/components/NotetabPanel.d.ts +8 -0
- package/dist/containers/Notes/components/TeacherAdminNoteDialog.d.ts +4 -0
- package/dist/containers/Notes/configs/constants.d.ts +27 -0
- package/dist/containers/Notes/configs/enums.d.ts +6 -2
- package/dist/containers/Notes/configs/fns.d.ts +2 -0
- package/dist/containers/Notes/configs/interfaces.d.ts +10 -1
- package/dist/containers/Notes/configs/types.d.ts +1 -1
- package/dist/containers/Notes/index.d.ts +4 -2
- package/dist/containers/Notes/views/NoteList.d.ts +11 -0
- package/dist/containers/Notes/views/NoteTabs.d.ts +7 -0
- package/dist/containers/StudentInfoDrawer/components/Exam/ExamResultList.d.ts +4 -0
- package/dist/containers/StudentInfoDrawer/components/Note/NoteDrawer.d.ts +3 -2
- package/dist/containers/StudentInfoDrawer/configs/types.d.ts +2 -2
- package/dist/containers/StudentInfoDrawer/index.d.ts +2 -1
- package/dist/containers/Textbooks/configs/types.d.ts +3 -3
- package/dist/containers/index.d.ts +1 -0
- package/dist/index.js +1733 -226
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +1742 -237
- package/dist/index.modern.js.map +1 -1
- package/dist/layouts/Header.d.ts +3 -0
- package/dist/layouts/LayoutContext.d.ts +0 -1
- package/dist/redux/commons/action.d.ts +1 -1
- package/dist/services/noteService.d.ts +2 -0
- package/dist/services/teacherService.d.ts +5 -0
- package/dist/utils/functions/timeAgo.d.ts +1 -1
- package/dist/utils/hooks/useLayoutContext.d.ts +1 -1
- package/dist/utils/hooks/useList.d.ts +2 -1
- package/dist/utils/hooks/useVirtualList.d.ts +4 -2
- package/dist/utils/types/note.d.ts +17 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
@@ -57,19 +57,20 @@ var LocalizationProvider = require('@mui/x-date-pickers/LocalizationProvider');
|
|
57
57
|
var DatePicker = require('@mui/x-date-pickers/DatePicker');
|
58
58
|
var fa6 = require('react-icons/fa6');
|
59
59
|
var cg = require('react-icons/cg');
|
60
|
+
var hi = require('react-icons/hi');
|
61
|
+
var TableCell = _interopDefault(require('@mui/material/TableCell'));
|
62
|
+
var TableRow = _interopDefault(require('@mui/material/TableRow'));
|
60
63
|
var html2pdf = _interopDefault(require('html2pdf.js'));
|
61
64
|
var Slider = _interopDefault(require('react-slick'));
|
62
65
|
var gr = require('react-icons/gr');
|
63
|
-
var hi = require('react-icons/hi');
|
64
66
|
var Table = _interopDefault(require('@mui/material/Table'));
|
65
67
|
var TableBody = _interopDefault(require('@mui/material/TableBody'));
|
66
|
-
var TableCell = _interopDefault(require('@mui/material/TableCell'));
|
67
68
|
var TableHead = _interopDefault(require('@mui/material/TableHead'));
|
68
|
-
var TableRow = _interopDefault(require('@mui/material/TableRow'));
|
69
69
|
var reactHookForm = require('react-hook-form');
|
70
70
|
var yup$1 = require('@hookform/resolvers/yup');
|
71
71
|
var pi = require('react-icons/pi');
|
72
72
|
var Container = _interopDefault(require('@mui/material/Container'));
|
73
|
+
var bs = require('react-icons/bs');
|
73
74
|
var Popover = _interopDefault(require('@mui/material/Popover'));
|
74
75
|
var MenuItem = _interopDefault(require('@mui/material/MenuItem'));
|
75
76
|
var go = require('react-icons/go');
|
@@ -278,7 +279,7 @@ var setLanguage = toolkit.createAction("common/setLanguage");
|
|
278
279
|
var reset = toolkit.createAction("common/reset");
|
279
280
|
var setReFetchUserAcademies = toolkit.createAction("common/setReFetchUserAcademies");
|
280
281
|
var setConcurrentConnectionPusher = toolkit.createAction("common/setConcurrentConnectionPusher");
|
281
|
-
var
|
282
|
+
var setTotalUnreadMessages = toolkit.createAction("common/setTotalUnreadMessages");
|
282
283
|
|
283
284
|
var initialState = {
|
284
285
|
isLoading: false,
|
@@ -288,8 +289,8 @@ var initialState = {
|
|
288
289
|
},
|
289
290
|
user: null,
|
290
291
|
academy: null,
|
292
|
+
totalUnreadMessages: 0,
|
291
293
|
isReFetchUserAcademies: false,
|
292
|
-
isReadyRegisterPusher: false,
|
293
294
|
concurrentConnectionPusher: {
|
294
295
|
pusher: null,
|
295
296
|
academyDomain: "",
|
@@ -315,8 +316,8 @@ var commonReducer = toolkit.createReducer(initialState, function (builder) {
|
|
315
316
|
state.concurrentConnectionPusher.pusher = action.payload.pusher;
|
316
317
|
state.concurrentConnectionPusher.academyDomain = action.payload.academyDomain;
|
317
318
|
state.concurrentConnectionPusher.isRegistered = action.payload.isRegistered;
|
318
|
-
}).addCase(
|
319
|
-
state.
|
319
|
+
}).addCase(setTotalUnreadMessages, function (state, action) {
|
320
|
+
state.totalUnreadMessages = action.payload;
|
320
321
|
});
|
321
322
|
});
|
322
323
|
|
@@ -1340,6 +1341,12 @@ var please_reload_this_page_to_continue_using_this_tab_or_close_it = "이 탭을
|
|
1340
1341
|
var reload_page = "페이지 새로고침";
|
1341
1342
|
var last_attendance_date = "마지막 출석일자";
|
1342
1343
|
var less_than_a_day = "하루 미만";
|
1344
|
+
var less_than_a_min = "1분 미만";
|
1345
|
+
var just_now = "방금 전";
|
1346
|
+
var n_mins_ago = "{{min}}분 전";
|
1347
|
+
var n_hours_ago = "{{hour}}시간 전";
|
1348
|
+
var one_min_ago = "1분 전";
|
1349
|
+
var one_hour_ago = "1시간 전";
|
1343
1350
|
var n_days_ago = "{{day}}일 전";
|
1344
1351
|
var n_months_ago = "{{month}}개월 전";
|
1345
1352
|
var n_years_ago = "{{year}}년 전";
|
@@ -1509,6 +1516,24 @@ var next_status = "다음 상태";
|
|
1509
1516
|
var arrival_time = "도착 시간";
|
1510
1517
|
var current_arrival_time = "현재 도착 시간";
|
1511
1518
|
var uppdate_attendance = "출석 현황 수정";
|
1519
|
+
var you_have_n_unread_messages = "읽지 않은 메시지가 {{ n }}개 있습니다";
|
1520
|
+
var receivers = "수신자";
|
1521
|
+
var total_receivers = "총 수신자";
|
1522
|
+
var sender = "보내는 사람";
|
1523
|
+
var manage_notes = "메모 관리";
|
1524
|
+
var notes = "노트";
|
1525
|
+
var new_note = "새 노트";
|
1526
|
+
var mark_as_read = "읽은 것으로 표시";
|
1527
|
+
var view_notes = "노트 보기";
|
1528
|
+
var admin_n = "{{admin}} 관리자";
|
1529
|
+
var teacher_n = "{{teacher}} 교사";
|
1530
|
+
var sent_a_memo = "메모를 보냈습니다";
|
1531
|
+
var admin_to_admin = "관리자에서 관리자에게";
|
1532
|
+
var teacher_to_admin = "교사에서 관리자에게";
|
1533
|
+
var admin_to_teachers = "관리자에서 교사들에게";
|
1534
|
+
var teacher_to_teachers = "교사에서 교사들에게";
|
1535
|
+
var student_required = "학생은 필수입니다";
|
1536
|
+
var teachers_required = "교사가 필요합니다";
|
1512
1537
|
var lang_ko = {
|
1513
1538
|
problem_solving: problem_solving,
|
1514
1539
|
my_story: my_story,
|
@@ -2490,6 +2515,12 @@ var lang_ko = {
|
|
2490
2515
|
reload_page: reload_page,
|
2491
2516
|
last_attendance_date: last_attendance_date,
|
2492
2517
|
less_than_a_day: less_than_a_day,
|
2518
|
+
less_than_a_min: less_than_a_min,
|
2519
|
+
just_now: just_now,
|
2520
|
+
n_mins_ago: n_mins_ago,
|
2521
|
+
n_hours_ago: n_hours_ago,
|
2522
|
+
one_min_ago: one_min_ago,
|
2523
|
+
one_hour_ago: one_hour_ago,
|
2493
2524
|
n_days_ago: n_days_ago,
|
2494
2525
|
n_months_ago: n_months_ago,
|
2495
2526
|
n_years_ago: n_years_ago,
|
@@ -2654,7 +2685,25 @@ var lang_ko = {
|
|
2654
2685
|
next_status: next_status,
|
2655
2686
|
arrival_time: arrival_time,
|
2656
2687
|
current_arrival_time: current_arrival_time,
|
2657
|
-
uppdate_attendance: uppdate_attendance
|
2688
|
+
uppdate_attendance: uppdate_attendance,
|
2689
|
+
you_have_n_unread_messages: you_have_n_unread_messages,
|
2690
|
+
receivers: receivers,
|
2691
|
+
total_receivers: total_receivers,
|
2692
|
+
sender: sender,
|
2693
|
+
manage_notes: manage_notes,
|
2694
|
+
notes: notes,
|
2695
|
+
new_note: new_note,
|
2696
|
+
mark_as_read: mark_as_read,
|
2697
|
+
view_notes: view_notes,
|
2698
|
+
admin_n: admin_n,
|
2699
|
+
teacher_n: teacher_n,
|
2700
|
+
sent_a_memo: sent_a_memo,
|
2701
|
+
admin_to_admin: admin_to_admin,
|
2702
|
+
teacher_to_admin: teacher_to_admin,
|
2703
|
+
admin_to_teachers: admin_to_teachers,
|
2704
|
+
teacher_to_teachers: teacher_to_teachers,
|
2705
|
+
student_required: student_required,
|
2706
|
+
teachers_required: teachers_required
|
2658
2707
|
};
|
2659
2708
|
|
2660
2709
|
var problem_solving$1 = "Problem Solving";
|
@@ -3653,6 +3702,12 @@ var please_reload_this_page_to_continue_using_this_tab_or_close_it$1 = "Please r
|
|
3653
3702
|
var reload_page$1 = "Reload page";
|
3654
3703
|
var last_attendance_date$1 = "Last attendance date";
|
3655
3704
|
var less_than_a_day$1 = "Less than a day";
|
3705
|
+
var less_than_a_min$1 = "Less than a minute";
|
3706
|
+
var just_now$1 = "Just now";
|
3707
|
+
var n_mins_ago$1 = "{{min}} minutes ago";
|
3708
|
+
var n_hours_ago$1 = "{{hour}} hours ago";
|
3709
|
+
var one_min_ago$1 = "one minute ago";
|
3710
|
+
var one_hour_ago$1 = "one hour ago";
|
3656
3711
|
var n_days_ago$1 = "{{day}} days ago";
|
3657
3712
|
var n_months_ago$1 = "{{month}} months ago";
|
3658
3713
|
var n_years_ago$1 = "{{year}} years ago";
|
@@ -3823,6 +3878,24 @@ var next_status$1 = "Next status";
|
|
3823
3878
|
var arrival_time$1 = "Arrival time";
|
3824
3879
|
var current_arrival_time$1 = "Current arrival time";
|
3825
3880
|
var uppdate_attendance$1 = "Update attendance";
|
3881
|
+
var you_have_n_unread_messages$1 = "You have {{ n }} unread message(s)";
|
3882
|
+
var receivers$1 = "Receivers";
|
3883
|
+
var total_receivers$1 = "Total receivers";
|
3884
|
+
var sender$1 = "Sender";
|
3885
|
+
var manage_notes$1 = "Manage notes";
|
3886
|
+
var notes$1 = "Notes";
|
3887
|
+
var new_note$1 = "New note";
|
3888
|
+
var mark_as_read$1 = "Mark as read";
|
3889
|
+
var view_notes$1 = "View notes";
|
3890
|
+
var admin_n$1 = "Admin {{admin}}";
|
3891
|
+
var teacher_n$1 = "Teacher {{teacher}}";
|
3892
|
+
var sent_a_memo$1 = "sent a memo";
|
3893
|
+
var admin_to_admin$1 = "Admin to admin";
|
3894
|
+
var teacher_to_admin$1 = "Teacher to admin";
|
3895
|
+
var admin_to_teachers$1 = "Admin to teachers";
|
3896
|
+
var teacher_to_teachers$1 = "Teacher to teachers";
|
3897
|
+
var student_required$1 = "Student is required";
|
3898
|
+
var teachers_required$1 = "Teachers are required";
|
3826
3899
|
var lang_en = {
|
3827
3900
|
problem_solving: problem_solving$1,
|
3828
3901
|
my_story: my_story$1,
|
@@ -4805,6 +4878,12 @@ var lang_en = {
|
|
4805
4878
|
reload_page: reload_page$1,
|
4806
4879
|
last_attendance_date: last_attendance_date$1,
|
4807
4880
|
less_than_a_day: less_than_a_day$1,
|
4881
|
+
less_than_a_min: less_than_a_min$1,
|
4882
|
+
just_now: just_now$1,
|
4883
|
+
n_mins_ago: n_mins_ago$1,
|
4884
|
+
n_hours_ago: n_hours_ago$1,
|
4885
|
+
one_min_ago: one_min_ago$1,
|
4886
|
+
one_hour_ago: one_hour_ago$1,
|
4808
4887
|
n_days_ago: n_days_ago$1,
|
4809
4888
|
n_months_ago: n_months_ago$1,
|
4810
4889
|
n_years_ago: n_years_ago$1,
|
@@ -4970,7 +5049,25 @@ var lang_en = {
|
|
4970
5049
|
next_status: next_status$1,
|
4971
5050
|
arrival_time: arrival_time$1,
|
4972
5051
|
current_arrival_time: current_arrival_time$1,
|
4973
|
-
uppdate_attendance: uppdate_attendance$1
|
5052
|
+
uppdate_attendance: uppdate_attendance$1,
|
5053
|
+
you_have_n_unread_messages: you_have_n_unread_messages$1,
|
5054
|
+
receivers: receivers$1,
|
5055
|
+
total_receivers: total_receivers$1,
|
5056
|
+
sender: sender$1,
|
5057
|
+
manage_notes: manage_notes$1,
|
5058
|
+
notes: notes$1,
|
5059
|
+
new_note: new_note$1,
|
5060
|
+
mark_as_read: mark_as_read$1,
|
5061
|
+
view_notes: view_notes$1,
|
5062
|
+
admin_n: admin_n$1,
|
5063
|
+
teacher_n: teacher_n$1,
|
5064
|
+
sent_a_memo: sent_a_memo$1,
|
5065
|
+
admin_to_admin: admin_to_admin$1,
|
5066
|
+
teacher_to_admin: teacher_to_admin$1,
|
5067
|
+
admin_to_teachers: admin_to_teachers$1,
|
5068
|
+
teacher_to_teachers: teacher_to_teachers$1,
|
5069
|
+
student_required: student_required$1,
|
5070
|
+
teachers_required: teachers_required$1
|
4974
5071
|
};
|
4975
5072
|
|
4976
5073
|
i18n__default.use(reactI18next.initReactI18next).init({
|
@@ -6134,8 +6231,12 @@ var NoteSortColumn;
|
|
6134
6231
|
NoteSortColumn["Question"] = "Question";
|
6135
6232
|
})(NoteSortColumn || (NoteSortColumn = {}));
|
6136
6233
|
(function (NoteType) {
|
6137
|
-
NoteType[NoteType["
|
6138
|
-
NoteType[NoteType["
|
6234
|
+
NoteType[NoteType["ToAcademy"] = 0] = "ToAcademy";
|
6235
|
+
NoteType[NoteType["ToStudent"] = 1] = "ToStudent";
|
6236
|
+
NoteType[NoteType["AdminToAllAdmin"] = 2] = "AdminToAllAdmin";
|
6237
|
+
NoteType[NoteType["AdminToAllTeacher"] = 3] = "AdminToAllTeacher";
|
6238
|
+
NoteType[NoteType["TeacherToAllAdmin"] = 4] = "TeacherToAllAdmin";
|
6239
|
+
NoteType[NoteType["TeacherToTeachers"] = 5] = "TeacherToTeachers";
|
6139
6240
|
})(exports.NoteType || (exports.NoteType = {}));
|
6140
6241
|
|
6141
6242
|
var SchoolType;
|
@@ -6305,16 +6406,35 @@ var pushTo = function pushTo(history, data, isReplace) {
|
|
6305
6406
|
});
|
6306
6407
|
};
|
6307
6408
|
|
6308
|
-
var timAgo = function timAgo(date, t) {
|
6309
|
-
if (date === DATE_MIN_VALUE || date === DATE_TIME_MIN_VALUE) return '';
|
6409
|
+
var timAgo = function timAgo(date, t, day) {
|
6410
|
+
if (!date || date === DATE_MIN_VALUE || date === DATE_TIME_MIN_VALUE) return '';
|
6310
6411
|
var time = moment.utc(date).local();
|
6412
|
+
var years = moment().diff(time, 'years');
|
6413
|
+
if (years >= 1) return years >= 2 ? t('n_years_ago', {
|
6414
|
+
year: years
|
6415
|
+
}) : t("one_year_ago");
|
6416
|
+
var months = moment().diff(time, 'months');
|
6417
|
+
if (months >= 1) return months >= 2 ? t('n_months_ago', {
|
6418
|
+
month: months
|
6419
|
+
}) : t("one_month_ago");
|
6311
6420
|
var days = moment().diff(time, 'days');
|
6312
|
-
if (days
|
6313
|
-
|
6314
|
-
|
6315
|
-
|
6316
|
-
|
6317
|
-
|
6421
|
+
if (days < 1 && !day) return t('less_than_a_day');
|
6422
|
+
if (days < 1 && day) {
|
6423
|
+
var hours = moment().diff(time, 'hours');
|
6424
|
+
if (hours >= 1) return hours >= 2 ? t('n_hours_ago', {
|
6425
|
+
hour: hours
|
6426
|
+
}) : t("one_hour_ago");
|
6427
|
+
var mins = moment().diff(time, 'minutes');
|
6428
|
+
if (mins >= 1) return mins >= 2 ? t('n_mins_ago', {
|
6429
|
+
min: mins
|
6430
|
+
}) : t("one_min_ago");
|
6431
|
+
var secs = moment().diff(time, 'seconds');
|
6432
|
+
if (secs > 10) return t('less_than_a_min');
|
6433
|
+
return t("just_now");
|
6434
|
+
}
|
6435
|
+
return days >= 2 ? t('n_days_ago', {
|
6436
|
+
day: days
|
6437
|
+
}) : t("one_day_ago");
|
6318
6438
|
};
|
6319
6439
|
|
6320
6440
|
var toISOString = (function (time) {
|
@@ -6904,7 +7024,10 @@ var useLanguage = function useLanguage(history, init) {
|
|
6904
7024
|
};
|
6905
7025
|
};
|
6906
7026
|
|
6907
|
-
var useList = function useList(fetchData, defaultQuery) {
|
7027
|
+
var useList = function useList(fetchData, defaultQuery, showLoading) {
|
7028
|
+
if (showLoading === void 0) {
|
7029
|
+
showLoading = true;
|
7030
|
+
}
|
6908
7031
|
var dispatch = reactRedux.useDispatch();
|
6909
7032
|
var _useState = React.useState(defaultQuery),
|
6910
7033
|
filter = _useState[0],
|
@@ -6918,6 +7041,9 @@ var useList = function useList(fetchData, defaultQuery) {
|
|
6918
7041
|
var _useState4 = React.useState(),
|
6919
7042
|
selectedItem = _useState4[0],
|
6920
7043
|
setSelectedItem = _useState4[1];
|
7044
|
+
var _useState5 = React.useState(false),
|
7045
|
+
isLoading = _useState5[0],
|
7046
|
+
setIsLoading = _useState5[1];
|
6921
7047
|
var textSearchRef = React.useRef(null);
|
6922
7048
|
var isFirstLoadRef = React.useRef(true);
|
6923
7049
|
var _useTranslation = reactI18next.useTranslation(),
|
@@ -6931,11 +7057,13 @@ var useList = function useList(fetchData, defaultQuery) {
|
|
6931
7057
|
}
|
6932
7058
|
try {
|
6933
7059
|
var _temp2 = function _temp2() {
|
6934
|
-
isLoading && dispatch(setLoading(false));
|
7060
|
+
isLoading && showLoading && dispatch(setLoading(false));
|
7061
|
+
setIsLoading(false);
|
6935
7062
|
};
|
6936
7063
|
if (!fetchData) return Promise.resolve();
|
6937
7064
|
if (isFirstLoadRef.current) isFirstLoadRef.current = false;
|
6938
|
-
isLoading && dispatch(setLoading(true));
|
7065
|
+
isLoading && showLoading && dispatch(setLoading(true));
|
7066
|
+
setIsLoading(true);
|
6939
7067
|
var _temp = _catch(function () {
|
6940
7068
|
return Promise.resolve(fetchData(filter)).then(function (res) {
|
6941
7069
|
var _res$data$items = res.data.items,
|
@@ -6960,10 +7088,6 @@ var useList = function useList(fetchData, defaultQuery) {
|
|
6960
7088
|
};
|
6961
7089
|
var handleSort = function handleSort(sortColumnName) {
|
6962
7090
|
var sortColumnDirection = exports.OrderType.ASC;
|
6963
|
-
console.log({
|
6964
|
-
sortColumnName: typeof sortColumnName,
|
6965
|
-
filter: typeof filter.sortColumnName
|
6966
|
-
});
|
6967
7091
|
if (filter.sortColumnName == sortColumnName && filter.sortColumnDirection === exports.OrderType.ASC) sortColumnDirection = exports.OrderType.DESC;
|
6968
7092
|
setFilter(_extends({}, filter, {
|
6969
7093
|
sortColumnName: sortColumnName,
|
@@ -6996,6 +7120,7 @@ var useList = function useList(fetchData, defaultQuery) {
|
|
6996
7120
|
getData(isFirstLoadRef.current);
|
6997
7121
|
}, [JSON.stringify(filter)]);
|
6998
7122
|
return {
|
7123
|
+
isLoading: isLoading,
|
6999
7124
|
filter: filter,
|
7000
7125
|
textSearchRef: textSearchRef,
|
7001
7126
|
paging: paging,
|
@@ -7098,36 +7223,26 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl,
|
|
7098
7223
|
}
|
7099
7224
|
var isAcademy = !!academyDomain || isLearningSpace;
|
7100
7225
|
return Promise.resolve(handleLogin(function () {
|
7101
|
-
|
7102
|
-
|
7103
|
-
var
|
7104
|
-
|
7105
|
-
|
7106
|
-
|
7107
|
-
|
7108
|
-
|
7109
|
-
|
7110
|
-
|
7111
|
-
|
7112
|
-
|
7113
|
-
|
7114
|
-
|
7115
|
-
|
7116
|
-
|
7117
|
-
|
7118
|
-
|
7119
|
-
|
7120
|
-
|
7121
|
-
}, function (error) {
|
7122
|
-
!!academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
|
7123
|
-
localStorage.removeItem(LEARNING_SPACE);
|
7124
|
-
reject(error);
|
7125
|
-
});
|
7126
|
-
return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(function () {}) : void 0);
|
7127
|
-
} catch (e) {
|
7128
|
-
return Promise.reject(e);
|
7129
|
-
}
|
7130
|
-
});
|
7226
|
+
try {
|
7227
|
+
return Promise.resolve(isAcademy ? apiLoginGoogle(data, isLearningSpace) : apiLoginGoogleSuperAdmin(data)).then(function (loginResponse) {
|
7228
|
+
var result = loginResponse.data;
|
7229
|
+
var _temp = function () {
|
7230
|
+
if (loginResponse.status === 204 && academyDomain) {
|
7231
|
+
localStorage.removeItem(ACADEMY_DOMAIN);
|
7232
|
+
localStorage.removeItem(LEARNING_SPACE);
|
7233
|
+
return Promise.resolve(apiLoginGoogleSuperAdmin(data)).then(function (_apiLoginGoogleSuperA) {
|
7234
|
+
loginResponse = _apiLoginGoogleSuperA;
|
7235
|
+
result = loginResponse.data;
|
7236
|
+
});
|
7237
|
+
}
|
7238
|
+
}();
|
7239
|
+
return _temp && _temp.then ? _temp.then(function () {
|
7240
|
+
return result;
|
7241
|
+
}) : result;
|
7242
|
+
});
|
7243
|
+
} catch (e) {
|
7244
|
+
return Promise.reject(e);
|
7245
|
+
}
|
7131
7246
|
}, isStudent, isLogout)).then(function () {});
|
7132
7247
|
} catch (e) {
|
7133
7248
|
return Promise.reject(e);
|
@@ -7140,21 +7255,14 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl,
|
|
7140
7255
|
try {
|
7141
7256
|
var isStudent = data.role === exports.Role.Student;
|
7142
7257
|
return Promise.resolve(handleLogin(function () {
|
7143
|
-
|
7144
|
-
|
7145
|
-
var
|
7146
|
-
|
7147
|
-
|
7148
|
-
|
7149
|
-
|
7150
|
-
|
7151
|
-
reject(error);
|
7152
|
-
});
|
7153
|
-
return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
|
7154
|
-
} catch (e) {
|
7155
|
-
return Promise.reject(e);
|
7156
|
-
}
|
7157
|
-
});
|
7258
|
+
try {
|
7259
|
+
return Promise.resolve(!isLearningSpace && !domain ? apiLoginSuperAdminWithAccessToken(data) : apiLoginWithAccessToken(data, isLearningSpace, domain)).then(function (loginResponse) {
|
7260
|
+
var result = loginResponse.data;
|
7261
|
+
return result;
|
7262
|
+
});
|
7263
|
+
} catch (e) {
|
7264
|
+
return Promise.reject(e);
|
7265
|
+
}
|
7158
7266
|
}, isStudent, isLogout, superAdminRedirectPath)).then(function () {});
|
7159
7267
|
} catch (e) {
|
7160
7268
|
return Promise.reject(e);
|
@@ -7165,13 +7273,13 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl,
|
|
7165
7273
|
isLogout = true;
|
7166
7274
|
}
|
7167
7275
|
try {
|
7168
|
-
var
|
7276
|
+
var _temp3 = function _temp3(_result) {
|
7169
7277
|
if (_exit) return _result;
|
7170
7278
|
dispatch(setLoading(false));
|
7171
7279
|
};
|
7172
7280
|
var _exit = false;
|
7173
7281
|
dispatch(setLoading(true));
|
7174
|
-
var
|
7282
|
+
var _temp2 = _catch(function () {
|
7175
7283
|
return Promise.resolve(apiLogin()).then(function (loginResponse) {
|
7176
7284
|
var isFirstLogin = loginResponse.isFirstLogin,
|
7177
7285
|
token = loginResponse.token,
|
@@ -7195,7 +7303,7 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl,
|
|
7195
7303
|
alert(getErrorMessage(t, error));
|
7196
7304
|
isLogout && handleSignOut();
|
7197
7305
|
});
|
7198
|
-
return Promise.resolve(
|
7306
|
+
return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2));
|
7199
7307
|
} catch (e) {
|
7200
7308
|
return Promise.reject(e);
|
7201
7309
|
}
|
@@ -8002,7 +8110,8 @@ var getStudentsApi = function getStudentsApi(textSearch) {
|
|
8002
8110
|
return api.get("" + STUDENT_URL, {
|
8003
8111
|
params: {
|
8004
8112
|
textSearch: textSearch,
|
8005
|
-
roles: [exports.Role.Admin]
|
8113
|
+
roles: [exports.Role.Admin],
|
8114
|
+
pageSize: 100
|
8006
8115
|
}
|
8007
8116
|
});
|
8008
8117
|
};
|
@@ -8013,7 +8122,10 @@ var StudentSelector = function StudentSelector(_ref) {
|
|
8013
8122
|
externalStudentIds = _ref.externalStudentIds,
|
8014
8123
|
_ref$disabled = _ref.disabled,
|
8015
8124
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
8016
|
-
title = _ref.title
|
8125
|
+
title = _ref.title,
|
8126
|
+
_ref$isMulti = _ref.isMulti,
|
8127
|
+
isMulti = _ref$isMulti === void 0 ? true : _ref$isMulti,
|
8128
|
+
minSearchLength = _ref.minSearchLength;
|
8017
8129
|
var _useState = React.useState([]),
|
8018
8130
|
students = _useState[0],
|
8019
8131
|
setStudents = _useState[1];
|
@@ -8048,7 +8160,7 @@ var StudentSelector = function StudentSelector(_ref) {
|
|
8048
8160
|
}, [searchString]);
|
8049
8161
|
React.useEffect(function () {
|
8050
8162
|
timeout && timeout.current && clearTimeout(timeout.current);
|
8051
|
-
if (!searchString || searchString.trim().length <
|
8163
|
+
if (minSearchLength && (!searchString || searchString.trim().length < minSearchLength)) {
|
8052
8164
|
setStudents([]);
|
8053
8165
|
} else {
|
8054
8166
|
timeout.current = setTimeout(loadData, 300);
|
@@ -8074,8 +8186,8 @@ var StudentSelector = function StudentSelector(_ref) {
|
|
8074
8186
|
},
|
8075
8187
|
isDisabled: disabled,
|
8076
8188
|
isLoading: isLoading,
|
8077
|
-
placeholder: t('placeholder_student_selector'),
|
8078
|
-
isMulti:
|
8189
|
+
placeholder: t(minSearchLength ? 'placeholder_student_selector' : 'select_placeholder'),
|
8190
|
+
isMulti: isMulti,
|
8079
8191
|
value: value,
|
8080
8192
|
onChange: onChange
|
8081
8193
|
}));
|
@@ -14162,7 +14274,7 @@ var DrawerHeader = function DrawerHeader(_ref) {
|
|
14162
14274
|
fontSize: "13px",
|
14163
14275
|
fontWeight: 500
|
14164
14276
|
}
|
14165
|
-
}, student.schoolName), React__default.createElement(material.Typography, {
|
14277
|
+
}, student.schoolName), !!student.grade && React__default.createElement(material.Typography, {
|
14166
14278
|
sx: {
|
14167
14279
|
color: grey[500],
|
14168
14280
|
fontSize: "13px",
|
@@ -15470,6 +15582,9 @@ var getNotesApi = function getNotesApi(query) {
|
|
15470
15582
|
params: query
|
15471
15583
|
});
|
15472
15584
|
};
|
15585
|
+
var getNoteByIdApi = function getNoteByIdApi(id) {
|
15586
|
+
return api.get(NOTES_URL + "/" + id);
|
15587
|
+
};
|
15473
15588
|
var createNoteApi = function createNoteApi(note) {
|
15474
15589
|
return api.post("" + NOTES_URL, note);
|
15475
15590
|
};
|
@@ -15478,6 +15593,9 @@ var updateNoteApi = function updateNoteApi(id, content) {
|
|
15478
15593
|
content: content
|
15479
15594
|
});
|
15480
15595
|
};
|
15596
|
+
var updateNoteDataApi = function updateNoteDataApi(id, data) {
|
15597
|
+
return api.put(NOTES_URL + "/" + id, data);
|
15598
|
+
};
|
15481
15599
|
var deleteNoteApi = function deleteNoteApi(id) {
|
15482
15600
|
return api["delete"](NOTES_URL + "/" + id);
|
15483
15601
|
};
|
@@ -15752,6 +15870,121 @@ var NotesContainer = function NotesContainer(_ref) {
|
|
15752
15870
|
});
|
15753
15871
|
};
|
15754
15872
|
|
15873
|
+
var getNoteType = function getNoteType(t, type) {
|
15874
|
+
switch (type) {
|
15875
|
+
case exports.NoteType.ToAcademy:
|
15876
|
+
return t("academy");
|
15877
|
+
case exports.NoteType.ToStudent:
|
15878
|
+
return t("student_parents");
|
15879
|
+
case exports.NoteType.AdminToAllAdmin:
|
15880
|
+
return t("admin_to_admin");
|
15881
|
+
case exports.NoteType.AdminToAllTeacher:
|
15882
|
+
return t("admin_to_teachers");
|
15883
|
+
case exports.NoteType.TeacherToAllAdmin:
|
15884
|
+
return t("teacher_to_admin");
|
15885
|
+
case exports.NoteType.TeacherToTeachers:
|
15886
|
+
return t("teacher_to_teachers");
|
15887
|
+
default:
|
15888
|
+
return "";
|
15889
|
+
}
|
15890
|
+
};
|
15891
|
+
|
15892
|
+
var NoteItemList = function NoteItemList(_ref) {
|
15893
|
+
var _data$reciever, _data$reciever2, _data$recievers;
|
15894
|
+
var data = _ref.data,
|
15895
|
+
index = _ref.index,
|
15896
|
+
role = _ref.role,
|
15897
|
+
calcOrderNumber = _ref.calcOrderNumber,
|
15898
|
+
onDelete = _ref.onDelete,
|
15899
|
+
onUpdate = _ref.onUpdate,
|
15900
|
+
onView = _ref.onView;
|
15901
|
+
var isAdminUser = reactRedux.useSelector(function (state) {
|
15902
|
+
var _state$common, _state$common$user, _state$common$user$ro;
|
15903
|
+
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : (_state$common$user = _state$common.user) === null || _state$common$user === void 0 ? void 0 : (_state$common$user$ro = _state$common$user.roles) === null || _state$common$user$ro === void 0 ? void 0 : _state$common$user$ro.includes(exports.Role.Admin);
|
15904
|
+
});
|
15905
|
+
var userId = reactRedux.useSelector(function (state) {
|
15906
|
+
var _state$common2, _state$common2$user;
|
15907
|
+
return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : (_state$common2$user = _state$common2.user) === null || _state$common2$user === void 0 ? void 0 : _state$common2$user.id;
|
15908
|
+
});
|
15909
|
+
var _useTranslation = reactI18next.useTranslation(),
|
15910
|
+
t = _useTranslation.t;
|
15911
|
+
var isAdmin = role === exports.Role.Admin;
|
15912
|
+
var order = calcOrderNumber(index);
|
15913
|
+
var createdAt = utcToLocalTime(data.createdAt, t("date_time_format"));
|
15914
|
+
var handleDelete = function handleDelete() {
|
15915
|
+
onDelete(data);
|
15916
|
+
};
|
15917
|
+
var handleUpdate = function handleUpdate() {
|
15918
|
+
onUpdate(data);
|
15919
|
+
};
|
15920
|
+
var handleView = function handleView() {
|
15921
|
+
onView(data);
|
15922
|
+
};
|
15923
|
+
var disabled = !data.isOwned && (!isAdminUser || data.type == undefined || data.type == exports.NoteType.TeacherToAllAdmin || data.type == exports.NoteType.TeacherToTeachers);
|
15924
|
+
React.useEffect(function () {
|
15925
|
+
if (window.MathJax) {
|
15926
|
+
var _window$MathJax;
|
15927
|
+
(_window$MathJax = window.MathJax) === null || _window$MathJax === void 0 ? void 0 : _window$MathJax.typeset();
|
15928
|
+
}
|
15929
|
+
}, [data.content]);
|
15930
|
+
var noteType = data.type === undefined ? "" : getNoteType(t, data.type);
|
15931
|
+
return React__default.createElement(TableRow, null, React__default.createElement(TableCell, null, order), React__default.createElement(TableCell, null, data.type === exports.NoteType.AdminToAllTeacher && !isAdmin && !isAdminUser ? React__default.createElement(material.Typography, {
|
15932
|
+
color: green[700],
|
15933
|
+
fontWeight: 600
|
15934
|
+
}, t("admin")) : React__default.createElement(React.Fragment, null, React__default.createElement(material.Typography, {
|
15935
|
+
color: green[700],
|
15936
|
+
fontWeight: 600
|
15937
|
+
}, data.sender.fullName, data.sender.id === userId && React__default.createElement(material.Typography, {
|
15938
|
+
display: "inline-block",
|
15939
|
+
color: colors.grey[600],
|
15940
|
+
fontWeight: 600
|
15941
|
+
}, "(", " " + t("me"), ")")), React__default.createElement(material.Typography, null, data.sender.email))), data.type === exports.NoteType.ToAcademy || data.type === exports.NoteType.ToStudent ? React__default.createElement(TableCell, null, React__default.createElement(material.Typography, {
|
15942
|
+
color: colors.blue[700],
|
15943
|
+
fontWeight: 600
|
15944
|
+
}, (_data$reciever = data.reciever) === null || _data$reciever === void 0 ? void 0 : _data$reciever.fullName), React__default.createElement(material.Typography, null, (_data$reciever2 = data.reciever) === null || _data$reciever2 === void 0 ? void 0 : _data$reciever2.email)) : data.type === exports.NoteType.TeacherToTeachers ? React__default.createElement(TableCell, null, React__default.createElement(material.Stack, {
|
15945
|
+
direction: "column"
|
15946
|
+
}, (_data$recievers = data.recievers) === null || _data$recievers === void 0 ? void 0 : _data$recievers.slice(0, 2).map(function (i) {
|
15947
|
+
return React__default.createElement(material.Typography, null, i.fullName, " - ", i.email);
|
15948
|
+
}), data.recievers && data.recievers.length > 2 && React__default.createElement(material.Typography, null, "(+", data.recievers.length - 2, ")"))) : React__default.createElement(TableCell, null, React__default.createElement(material.Typography, null, t(data.type === exports.NoteType.AdminToAllTeacher ? "teachers" : "admin"))), React__default.createElement(TableCell, null, React__default.createElement(material.Box, {
|
15949
|
+
sx: {
|
15950
|
+
display: "-webkit-box",
|
15951
|
+
lineClamp: 3,
|
15952
|
+
WebkitLineClamp: 3,
|
15953
|
+
WebkitBoxOrient: "vertical",
|
15954
|
+
boxOrient: "vertical",
|
15955
|
+
overflow: "hidden"
|
15956
|
+
},
|
15957
|
+
dangerouslySetInnerHTML: {
|
15958
|
+
__html: data.content
|
15959
|
+
}
|
15960
|
+
})), React__default.createElement(TableCell, {
|
15961
|
+
className: "text-nowrap"
|
15962
|
+
}, noteType), React__default.createElement(TableCell, null, createdAt), React__default.createElement(TableCell, null, React__default.createElement("div", {
|
15963
|
+
className: "d-flex"
|
15964
|
+
}, React__default.createElement(material.Box, null, React__default.createElement(material.IconButton, {
|
15965
|
+
color: "default",
|
15966
|
+
className: "bg-primary text-white me-1",
|
15967
|
+
onClick: handleView
|
15968
|
+
}, React__default.createElement(fa.FaEye, {
|
15969
|
+
size: 12
|
15970
|
+
}))), React__default.createElement(material.Box, null, React__default.createElement(material.IconButton, {
|
15971
|
+
color: "default",
|
15972
|
+
className: styles$5["action-btn"] + " " + (disabled ? "bg-secondary" : "bg-warning") + " text-white me-2",
|
15973
|
+
onClick: handleUpdate,
|
15974
|
+
disabled: disabled
|
15975
|
+
}, React__default.createElement(hi.HiOutlinePencilAlt, {
|
15976
|
+
className: styles$5["action-btn--pencil"],
|
15977
|
+
size: 12
|
15978
|
+
}))), React__default.createElement(material.Box, null, React__default.createElement(material.IconButton, {
|
15979
|
+
onClick: handleDelete,
|
15980
|
+
color: "default",
|
15981
|
+
className: styles$5["action-btn"] + " " + (disabled ? "bg-secondary" : "bg-danger") + " text-white",
|
15982
|
+
disabled: disabled
|
15983
|
+
}, React__default.createElement(fa6.FaTrashCan, {
|
15984
|
+
size: 12
|
15985
|
+
}))))));
|
15986
|
+
};
|
15987
|
+
|
15755
15988
|
var NoteContent = function NoteContent(_ref) {
|
15756
15989
|
var content = _ref.content;
|
15757
15990
|
React.useEffect(function () {
|
@@ -15773,7 +16006,7 @@ var NoteContent = function NoteContent(_ref) {
|
|
15773
16006
|
};
|
15774
16007
|
|
15775
16008
|
var NoteDrawer = function NoteDrawer(props) {
|
15776
|
-
var _BRIEF_GRADE_OPTIONS$,
|
16009
|
+
var _BRIEF_GRADE_OPTIONS$, _note$content;
|
15777
16010
|
var anchor = props.anchor,
|
15778
16011
|
open = props.open,
|
15779
16012
|
student = props.student,
|
@@ -15781,7 +16014,8 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15781
16014
|
data = props.data,
|
15782
16015
|
width = props.width,
|
15783
16016
|
_props$showStudentInf = props.showStudentInfo,
|
15784
|
-
showStudentInfo = _props$showStudentInf === void 0 ? true : _props$showStudentInf
|
16017
|
+
showStudentInfo = _props$showStudentInf === void 0 ? true : _props$showStudentInf,
|
16018
|
+
id = props.id;
|
15785
16019
|
var _useTranslation = reactI18next.useTranslation(),
|
15786
16020
|
t = _useTranslation.t;
|
15787
16021
|
var academy = reactRedux.useSelector(function (state) {
|
@@ -15792,6 +16026,46 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15792
16026
|
var _state$common2;
|
15793
16027
|
return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.language;
|
15794
16028
|
});
|
16029
|
+
var _useState = React.useState(false),
|
16030
|
+
loading = _useState[0],
|
16031
|
+
setLoading = _useState[1];
|
16032
|
+
var _useState2 = React.useState(),
|
16033
|
+
noteData = _useState2[0],
|
16034
|
+
setNoteData = _useState2[1];
|
16035
|
+
React.useEffect(function () {
|
16036
|
+
var getNoteById = function getNoteById() {
|
16037
|
+
try {
|
16038
|
+
var _temp2 = function _temp2() {
|
16039
|
+
setLoading(false);
|
16040
|
+
};
|
16041
|
+
if (!id) return Promise.resolve();
|
16042
|
+
setLoading(true);
|
16043
|
+
var _temp = _catch(function () {
|
16044
|
+
return Promise.resolve(getNoteByIdApi(+id)).then(function (res) {
|
16045
|
+
setNoteData(res.data);
|
16046
|
+
});
|
16047
|
+
}, function (error) {
|
16048
|
+
reactToastify.toast.error(getErrorMessage(t, error));
|
16049
|
+
});
|
16050
|
+
return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
|
16051
|
+
} catch (e) {
|
16052
|
+
return Promise.reject(e);
|
16053
|
+
}
|
16054
|
+
};
|
16055
|
+
getNoteById();
|
16056
|
+
}, [id]);
|
16057
|
+
var note = data != null ? data : noteData;
|
16058
|
+
var user = React.useMemo(function () {
|
16059
|
+
if (student) return student;
|
16060
|
+
if (!note) return null;
|
16061
|
+
switch (note.type) {
|
16062
|
+
case exports.NoteType.ToAcademy:
|
16063
|
+
case exports.NoteType.ToStudent:
|
16064
|
+
return note.reciever;
|
16065
|
+
default:
|
16066
|
+
return note.sender;
|
16067
|
+
}
|
16068
|
+
}, [JSON.stringify(note), JSON.stringify(student)]);
|
15795
16069
|
return React__default.createElement(material.Drawer, {
|
15796
16070
|
anchor: anchor,
|
15797
16071
|
open: open,
|
@@ -15818,11 +16092,11 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15818
16092
|
onClick: onClose
|
15819
16093
|
}, React__default.createElement(io5.IoClose, {
|
15820
16094
|
size: 32
|
15821
|
-
}))), showStudentInfo && React__default.createElement(material.Box, {
|
16095
|
+
}))), showStudentInfo && ((note === null || note === void 0 ? void 0 : note.type) === exports.NoteType.ToAcademy || (note === null || note === void 0 ? void 0 : note.type) === exports.NoteType.ToStudent) && React__default.createElement(material.Box, {
|
15822
16096
|
sx: {
|
15823
16097
|
padding: "16px 40px"
|
15824
16098
|
}
|
15825
|
-
}, !
|
16099
|
+
}, !user || loading ? React__default.createElement(material.Stack, {
|
15826
16100
|
direction: "row",
|
15827
16101
|
gap: 3
|
15828
16102
|
}, React__default.createElement(material.Skeleton, {
|
@@ -15857,7 +16131,7 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15857
16131
|
color: green[500],
|
15858
16132
|
lineHeight: "22px"
|
15859
16133
|
}
|
15860
|
-
},
|
16134
|
+
}, user.fullName), React__default.createElement(material.Stack, {
|
15861
16135
|
direction: "row",
|
15862
16136
|
alignItems: "center",
|
15863
16137
|
gap: 1
|
@@ -15867,17 +16141,29 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15867
16141
|
fontSize: "13px",
|
15868
16142
|
fontWeight: 500
|
15869
16143
|
}
|
15870
|
-
},
|
16144
|
+
}, user.schoolName), !!user.grade && React__default.createElement(material.Typography, {
|
15871
16145
|
sx: {
|
15872
16146
|
color: grey[500],
|
15873
16147
|
fontSize: "13px",
|
15874
16148
|
fontWeight: 500
|
15875
16149
|
}
|
15876
16150
|
}, t(function (label) {
|
15877
|
-
return label ? t(label) : formatGrade(
|
16151
|
+
return label ? t(label) : formatGrade(user.grade, t, language);
|
15878
16152
|
}((_BRIEF_GRADE_OPTIONS$ = BRIEF_GRADE_OPTIONS.find(function (o) {
|
15879
|
-
return o.value === Number(
|
15880
|
-
})) === null || _BRIEF_GRADE_OPTIONS$ === void 0 ? void 0 : _BRIEF_GRADE_OPTIONS$.label))))))), React__default.createElement(material.Stack, {
|
16153
|
+
return o.value === Number(user.grade);
|
16154
|
+
})) === null || _BRIEF_GRADE_OPTIONS$ === void 0 ? void 0 : _BRIEF_GRADE_OPTIONS$.label))))))), !note && !loading && React__default.createElement(material.Stack, {
|
16155
|
+
padding: "40px 24px 0",
|
16156
|
+
gap: "16px"
|
16157
|
+
}, React__default.createElement(material.Typography, {
|
16158
|
+
className: "text-muted"
|
16159
|
+
}, t("no_data"))), loading && React__default.createElement(material.Stack, {
|
16160
|
+
padding: "40px 24px 0",
|
16161
|
+
gap: "16px",
|
16162
|
+
justifyContent: "center"
|
16163
|
+
}, React__default.createElement(material.CircularProgress, {
|
16164
|
+
size: 40,
|
16165
|
+
color: "primary"
|
16166
|
+
})), note && !loading && React__default.createElement(material.Stack, {
|
15881
16167
|
padding: "40px 24px 0",
|
15882
16168
|
gap: "16px"
|
15883
16169
|
}, React__default.createElement(material.Stack, {
|
@@ -15890,7 +16176,7 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15890
16176
|
fontWeight: "700",
|
15891
16177
|
color: "#414E62"
|
15892
16178
|
}
|
15893
|
-
},
|
16179
|
+
}, note === null || note === void 0 ? void 0 : note.fullName)), React__default.createElement(material.Stack, {
|
15894
16180
|
display: "flex",
|
15895
16181
|
justifyContent: "end"
|
15896
16182
|
}, React__default.createElement(material.Typography, {
|
@@ -15900,7 +16186,7 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15900
16186
|
color: "#97A1AF",
|
15901
16187
|
textAlign: "end"
|
15902
16188
|
}
|
15903
|
-
}, utcToLocalTime(
|
16189
|
+
}, utcToLocalTime(note === null || note === void 0 ? void 0 : note.createdAt, t("date_format"))), React__default.createElement(material.Typography, {
|
15904
16190
|
sx: {
|
15905
16191
|
fontSize: "12px",
|
15906
16192
|
fontWeight: "500",
|
@@ -15908,11 +16194,819 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15908
16194
|
textAlign: "end"
|
15909
16195
|
}
|
15910
16196
|
}, academy === null || academy === void 0 ? void 0 : academy.name))), React__default.createElement(NoteContent, {
|
15911
|
-
content: (
|
16197
|
+
content: (_note$content = note === null || note === void 0 ? void 0 : note.content) != null ? _note$content : ""
|
16198
|
+
})));
|
16199
|
+
};
|
16200
|
+
|
16201
|
+
var TEACHER_URL = BASE_URL + "/api/teacher";
|
16202
|
+
var getTeacherListApi = function getTeacherListApi(query) {
|
16203
|
+
return api.get("" + TEACHER_URL, {
|
16204
|
+
params: query
|
16205
|
+
});
|
16206
|
+
};
|
16207
|
+
|
16208
|
+
var TeacherSelector$1 = function TeacherSelector(_ref) {
|
16209
|
+
var value = _ref.value,
|
16210
|
+
onChange = _ref.onChange,
|
16211
|
+
placeholder = _ref.placeholder,
|
16212
|
+
externalTeacherIds = _ref.externalTeacherIds,
|
16213
|
+
title = _ref.title,
|
16214
|
+
isMultiple = _ref.isMultiple,
|
16215
|
+
_ref$isClearable = _ref.isClearable,
|
16216
|
+
isClearable = _ref$isClearable === void 0 ? true : _ref$isClearable,
|
16217
|
+
useUserId = _ref.useUserId,
|
16218
|
+
exceptMe = _ref.exceptMe,
|
16219
|
+
isDisabled = _ref.isDisabled;
|
16220
|
+
var _useState = React.useState([]),
|
16221
|
+
teachers = _useState[0],
|
16222
|
+
setTeachers = _useState[1];
|
16223
|
+
var _useState2 = React.useState(""),
|
16224
|
+
searchString = _useState2[0],
|
16225
|
+
setSearchString = _useState2[1];
|
16226
|
+
var _useState3 = React.useState(false),
|
16227
|
+
isLoading = _useState3[0],
|
16228
|
+
setLoading = _useState3[1];
|
16229
|
+
var _useTranslation = reactI18next.useTranslation(),
|
16230
|
+
t = _useTranslation.t;
|
16231
|
+
var debounceSearch = React.useCallback(_$8.debounce(function (value) {
|
16232
|
+
loadData(value);
|
16233
|
+
}, 500), []);
|
16234
|
+
var handleChangeSearchText = function handleChangeSearchText(value) {
|
16235
|
+
setSearchString(value.trim());
|
16236
|
+
debounceSearch(value.trim());
|
16237
|
+
};
|
16238
|
+
var loadData = function loadData(textSearch) {
|
16239
|
+
try {
|
16240
|
+
var _temp2 = function _temp2() {
|
16241
|
+
setLoading(false);
|
16242
|
+
};
|
16243
|
+
setLoading(true);
|
16244
|
+
var _temp = _catch(function () {
|
16245
|
+
return Promise.resolve(getTeacherListApi({
|
16246
|
+
textSearch: textSearch,
|
16247
|
+
pageSize: 100,
|
16248
|
+
currentPage: 1,
|
16249
|
+
exceptMe: exceptMe,
|
16250
|
+
sortColumnDirection: exports.OrderType.DESC,
|
16251
|
+
sortColumnName: "User.UserProfile.FullName"
|
16252
|
+
})).then(function (res) {
|
16253
|
+
var _res$data$items = res.data.items,
|
16254
|
+
items = _res$data$items === void 0 ? [] : _res$data$items;
|
16255
|
+
setTeachers(items);
|
16256
|
+
});
|
16257
|
+
}, function (err) {
|
16258
|
+
reactToastify.toast.error(getErrorMessage(t, err));
|
16259
|
+
});
|
16260
|
+
return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
|
16261
|
+
} catch (e) {
|
16262
|
+
return Promise.reject(e);
|
16263
|
+
}
|
16264
|
+
};
|
16265
|
+
React.useEffect(function () {
|
16266
|
+
loadData();
|
16267
|
+
}, []);
|
16268
|
+
var options = teachers.filter(function (teacher) {
|
16269
|
+
return !externalTeacherIds || externalTeacherIds && !externalTeacherIds.includes(teacher.id);
|
16270
|
+
}).map(function (teacher) {
|
16271
|
+
return {
|
16272
|
+
label: teacher.teacherName + " - " + teacher.teacherEmail,
|
16273
|
+
value: useUserId ? teacher.teacherUserId : teacher.id
|
16274
|
+
};
|
16275
|
+
});
|
16276
|
+
return React__default.createElement(material.FormGroup, {
|
16277
|
+
className: "" + styles["filter-item"]
|
16278
|
+
}, !!title && React__default.createElement("label", {
|
16279
|
+
className: "" + styles["title-form"]
|
16280
|
+
}, title), React__default.createElement(CustomSelectOption, {
|
16281
|
+
options: options,
|
16282
|
+
onInputChange: function onInputChange(inputValue) {
|
16283
|
+
return handleChangeSearchText(inputValue);
|
16284
|
+
},
|
16285
|
+
isLoading: isLoading,
|
16286
|
+
placeholder: placeholder || t('select_placeholder'),
|
16287
|
+
isMulti: isMultiple,
|
16288
|
+
value: value,
|
16289
|
+
inputValue: searchString,
|
16290
|
+
onChange: onChange,
|
16291
|
+
isClearable: isClearable,
|
16292
|
+
isDisabled: isDisabled
|
16293
|
+
}));
|
16294
|
+
};
|
16295
|
+
|
16296
|
+
var schema$3 = yup.object().shape({
|
16297
|
+
content: yup.string().trim().required(),
|
16298
|
+
studentId: yup.number().when("type", {
|
16299
|
+
is: function is(type) {
|
16300
|
+
return type == exports.NoteType.ToAcademy || type == exports.NoteType.ToStudent;
|
16301
|
+
},
|
16302
|
+
then: function then(schema) {
|
16303
|
+
return schema.required("student_required");
|
16304
|
+
},
|
16305
|
+
otherwise: function otherwise(schema) {
|
16306
|
+
return schema.notRequired();
|
16307
|
+
}
|
16308
|
+
}),
|
16309
|
+
userIds: yup.array().of(yup.number()).when("type", {
|
16310
|
+
is: function is(type) {
|
16311
|
+
return type == exports.NoteType.TeacherToTeachers;
|
16312
|
+
},
|
16313
|
+
then: function then(schema) {
|
16314
|
+
return schema.required("teachers_required");
|
16315
|
+
},
|
16316
|
+
otherwise: function otherwise(schema) {
|
16317
|
+
return schema.notRequired();
|
16318
|
+
}
|
16319
|
+
}),
|
16320
|
+
type: yup.number()
|
16321
|
+
});
|
16322
|
+
var GeneralNoteDialog = function GeneralNoteDialog(_ref) {
|
16323
|
+
var _selectedNote$recieve, _selectedNote$recieve2, _selectedNote$recieve3;
|
16324
|
+
var open = _ref.open,
|
16325
|
+
type = _ref.type,
|
16326
|
+
selectedNote = _ref.selectedNote,
|
16327
|
+
value = _ref.value,
|
16328
|
+
onClose = _ref.onClose,
|
16329
|
+
onSaveNote = _ref.onSaveNote;
|
16330
|
+
var _useTranslation = reactI18next.useTranslation(),
|
16331
|
+
t = _useTranslation.t;
|
16332
|
+
var handleSaveNote = function handleSaveNote(val) {
|
16333
|
+
onSaveNote(val);
|
16334
|
+
};
|
16335
|
+
var tip = React.useMemo(function () {
|
16336
|
+
if (type === undefined) return "";
|
16337
|
+
switch (type) {
|
16338
|
+
case exports.NoteType.ToAcademy:
|
16339
|
+
return "academy";
|
16340
|
+
case exports.NoteType.ToStudent:
|
16341
|
+
return "student_parents";
|
16342
|
+
case exports.NoteType.AdminToAllAdmin:
|
16343
|
+
case exports.NoteType.AdminToAllTeacher:
|
16344
|
+
case exports.NoteType.TeacherToAllAdmin:
|
16345
|
+
return "admin";
|
16346
|
+
case exports.NoteType.TeacherToTeachers:
|
16347
|
+
return "teacher";
|
16348
|
+
default:
|
16349
|
+
return "";
|
16350
|
+
}
|
16351
|
+
}, [type]);
|
16352
|
+
return React__default.createElement(material.Dialog, {
|
16353
|
+
onClose: onClose,
|
16354
|
+
open: open,
|
16355
|
+
maxWidth: "md",
|
16356
|
+
scroll: "body",
|
16357
|
+
fullWidth: true,
|
16358
|
+
disableEnforceFocus: true,
|
16359
|
+
disableAutoFocus: true
|
16360
|
+
}, React__default.createElement(DialogTitle, {
|
16361
|
+
id: "customized-dialog-title"
|
16362
|
+
}, React__default.createElement(Typography, {
|
16363
|
+
fontWeight: 700,
|
16364
|
+
fontSize: "16px",
|
16365
|
+
lineHeight: "19.09px",
|
16366
|
+
color: "#202B37"
|
16367
|
+
}, t(type === exports.NoteType.ToAcademy || type === exports.NoteType.ToStudent ? selectedNote ? "edit_student_note" : "student_note_taking" : "note"), tip ? " " + t(tip) : "")), React__default.createElement(IconButton, {
|
16368
|
+
"aria-label": "close",
|
16369
|
+
sx: {
|
16370
|
+
position: "absolute",
|
16371
|
+
right: 8,
|
16372
|
+
top: 8,
|
16373
|
+
color: function color(theme) {
|
16374
|
+
return theme.palette.grey[500];
|
16375
|
+
}
|
16376
|
+
},
|
16377
|
+
onClick: onClose
|
16378
|
+
}, React__default.createElement(iconCloseDialog, null)), React__default.createElement(formik.Formik, {
|
16379
|
+
initialValues: {
|
16380
|
+
content: value ? value.content : (selectedNote === null || selectedNote === void 0 ? void 0 : selectedNote.content) || "",
|
16381
|
+
type: type,
|
16382
|
+
studentId: value ? value.studentId : selectedNote === null || selectedNote === void 0 ? void 0 : (_selectedNote$recieve = selectedNote.reciever) === null || _selectedNote$recieve === void 0 ? void 0 : _selectedNote$recieve.id,
|
16383
|
+
student: value ? value.student : selectedNote !== null && selectedNote !== void 0 && selectedNote.reciever ? {
|
16384
|
+
label: selectedNote.reciever.fullName,
|
16385
|
+
value: selectedNote.reciever.id
|
16386
|
+
} : undefined,
|
16387
|
+
userIds: value ? value.userIds : selectedNote === null || selectedNote === void 0 ? void 0 : (_selectedNote$recieve2 = selectedNote.recievers) === null || _selectedNote$recieve2 === void 0 ? void 0 : _selectedNote$recieve2.map(function (i) {
|
16388
|
+
return i.id;
|
16389
|
+
}),
|
16390
|
+
users: value ? value.users : selectedNote === null || selectedNote === void 0 ? void 0 : (_selectedNote$recieve3 = selectedNote.recievers) === null || _selectedNote$recieve3 === void 0 ? void 0 : _selectedNote$recieve3.map(function (i) {
|
16391
|
+
return {
|
16392
|
+
label: i.fullName,
|
16393
|
+
value: i.id
|
16394
|
+
};
|
16395
|
+
})
|
16396
|
+
},
|
16397
|
+
validationSchema: schema$3,
|
16398
|
+
enableReinitialize: true,
|
16399
|
+
onSubmit: handleSaveNote
|
16400
|
+
}, function (_ref2) {
|
16401
|
+
var _selectedNote$recieve4;
|
16402
|
+
var values = _ref2.values,
|
16403
|
+
errors = _ref2.errors,
|
16404
|
+
setFieldValue = _ref2.setFieldValue;
|
16405
|
+
return React__default.createElement(formik.Form, null, React__default.createElement(DialogContent, {
|
16406
|
+
sx: {
|
16407
|
+
padding: 0,
|
16408
|
+
overflowY: "auto"
|
16409
|
+
}
|
16410
|
+
}, React__default.createElement(material.Box, {
|
16411
|
+
display: "flex",
|
16412
|
+
flexDirection: "column",
|
16413
|
+
gap: "8px",
|
16414
|
+
padding: "24px 24px 40px 24px"
|
16415
|
+
}, (type === exports.NoteType.ToAcademy || type === exports.NoteType.ToStudent) && React__default.createElement(material.Stack, null, React__default.createElement("label", {
|
16416
|
+
htmlFor: "student",
|
16417
|
+
className: styles["form-label"] + " " + styles$5["form-label-dialog"]
|
16418
|
+
}, t("student_name")), selectedNote ? React__default.createElement(Typography, {
|
16419
|
+
sx: {
|
16420
|
+
fontWeight: 700,
|
16421
|
+
fontSize: "14px",
|
16422
|
+
color: "rgba(61, 198, 116, 1)"
|
16423
|
+
}
|
16424
|
+
}, (_selectedNote$recieve4 = selectedNote.reciever) === null || _selectedNote$recieve4 === void 0 ? void 0 : _selectedNote$recieve4.fullName) : React__default.createElement(formik.Field, {
|
16425
|
+
id: "student",
|
16426
|
+
style: {
|
16427
|
+
width: "100%"
|
16428
|
+
},
|
16429
|
+
name: "student",
|
16430
|
+
className: styles["form-control"],
|
16431
|
+
render: function render(_ref3) {
|
16432
|
+
var field = _ref3.field;
|
16433
|
+
return React__default.createElement(StudentSelector, {
|
16434
|
+
value: field.value,
|
16435
|
+
onChange: function (val) {
|
16436
|
+
try {
|
16437
|
+
return Promise.resolve(setFieldValue("studentId", val === null || val === void 0 ? void 0 : val.value)).then(function () {
|
16438
|
+
return Promise.resolve(setFieldValue("student", val)).then(function () {});
|
16439
|
+
});
|
16440
|
+
} catch (e) {
|
16441
|
+
return Promise.reject(e);
|
16442
|
+
}
|
16443
|
+
},
|
16444
|
+
isMulti: false
|
16445
|
+
});
|
16446
|
+
}
|
16447
|
+
}), !!errors.studentId && React__default.createElement(Typography, {
|
16448
|
+
fontWeight: 500,
|
16449
|
+
fontSize: "10px",
|
16450
|
+
lineHeight: "11.93px",
|
16451
|
+
mt: 1,
|
16452
|
+
color: "#F34B4B"
|
16453
|
+
}, t(errors.studentId))), (type === exports.NoteType.AdminToAllAdmin || type === exports.NoteType.AdminToAllTeacher) && React__default.createElement(material.FormControl, {
|
16454
|
+
className: "w-100"
|
16455
|
+
}, React__default.createElement(material.FormLabel, {
|
16456
|
+
className: "fw-medium",
|
16457
|
+
id: "type"
|
16458
|
+
}, t("receivers")), React__default.createElement(material.RadioGroup, {
|
16459
|
+
className: "flex-row flex-wrap"
|
16460
|
+
}, React__default.createElement(material.FormControlLabel, {
|
16461
|
+
control: React__default.createElement(material.Radio, {
|
16462
|
+
checked: values.type === exports.NoteType.AdminToAllAdmin || values.type === exports.NoteType.TeacherToAllAdmin,
|
16463
|
+
onChange: function onChange(_) {
|
16464
|
+
return setFieldValue("type", exports.NoteType.AdminToAllAdmin);
|
16465
|
+
}
|
16466
|
+
}),
|
16467
|
+
label: t("admin")
|
16468
|
+
}), React__default.createElement(material.FormControlLabel, {
|
16469
|
+
control: React__default.createElement(material.Radio, {
|
16470
|
+
checked: values.type === exports.NoteType.AdminToAllTeacher,
|
16471
|
+
onChange: function onChange(_) {
|
16472
|
+
return setFieldValue("type", exports.NoteType.AdminToAllTeacher);
|
16473
|
+
}
|
16474
|
+
}),
|
16475
|
+
label: t("teacher")
|
16476
|
+
}))), type === exports.NoteType.TeacherToTeachers && React__default.createElement(material.Stack, null, React__default.createElement("label", {
|
16477
|
+
htmlFor: "teachers",
|
16478
|
+
className: styles["form-label"] + " " + styles$5["form-label-dialog"]
|
16479
|
+
}, t("teachers")), React__default.createElement(formik.Field, {
|
16480
|
+
id: "users",
|
16481
|
+
style: {
|
16482
|
+
width: "100%"
|
16483
|
+
},
|
16484
|
+
name: "users",
|
16485
|
+
className: styles["form-control"],
|
16486
|
+
render: function render(_ref4) {
|
16487
|
+
var field = _ref4.field;
|
16488
|
+
return React__default.createElement(TeacherSelector$1, {
|
16489
|
+
value: field.value,
|
16490
|
+
onChange: function (val) {
|
16491
|
+
try {
|
16492
|
+
var _val$map, _val$map2;
|
16493
|
+
return Promise.resolve(setFieldValue("userIds", (_val$map = val === null || val === void 0 ? void 0 : (_val$map2 = val.map) === null || _val$map2 === void 0 ? void 0 : _val$map2.call(val, function (i) {
|
16494
|
+
return i.value;
|
16495
|
+
})) != null ? _val$map : [])).then(function () {
|
16496
|
+
return Promise.resolve(setFieldValue("users", val != null ? val : [])).then(function () {});
|
16497
|
+
});
|
16498
|
+
} catch (e) {
|
16499
|
+
return Promise.reject(e);
|
16500
|
+
}
|
16501
|
+
},
|
16502
|
+
isDisabled: !!selectedNote,
|
16503
|
+
exceptMe: true,
|
16504
|
+
isMultiple: true,
|
16505
|
+
useUserId: true
|
16506
|
+
});
|
16507
|
+
}
|
16508
|
+
}), !!errors.userIds && React__default.createElement(Typography, {
|
16509
|
+
fontWeight: 500,
|
16510
|
+
fontSize: "10px",
|
16511
|
+
lineHeight: "11.93px",
|
16512
|
+
mt: 1,
|
16513
|
+
color: "#F34B4B"
|
16514
|
+
}, t(errors.userIds))), React__default.createElement(material.Stack, null, React__default.createElement("label", {
|
16515
|
+
htmlFor: "content-question",
|
16516
|
+
className: styles["form-label"] + " " + styles$5["form-label-dialog"]
|
16517
|
+
}, t("incorrect_answer_note_contents")), React__default.createElement(material.Box, {
|
16518
|
+
position: "relative",
|
16519
|
+
display: "flex",
|
16520
|
+
flexDirection: "row",
|
16521
|
+
alignItems: "center"
|
16522
|
+
}, React__default.createElement(formik.Field, {
|
16523
|
+
id: "content-question",
|
16524
|
+
style: {
|
16525
|
+
width: "100%"
|
16526
|
+
},
|
16527
|
+
name: "content",
|
16528
|
+
placeholder: t("the_problem_is_difficult"),
|
16529
|
+
className: styles["form-control"],
|
16530
|
+
render: function render(_ref5) {
|
16531
|
+
var field = _ref5.field;
|
16532
|
+
return React__default.createElement(NoteTinyEditor, {
|
16533
|
+
initValue: field.value,
|
16534
|
+
onChange: function onChange(text) {
|
16535
|
+
return setFieldValue("content", text);
|
16536
|
+
}
|
16537
|
+
});
|
16538
|
+
}
|
16539
|
+
})), !!errors.content && React__default.createElement(Typography, {
|
16540
|
+
fontWeight: 500,
|
16541
|
+
fontSize: "10px",
|
16542
|
+
lineHeight: "11.93px",
|
16543
|
+
mt: 1,
|
16544
|
+
color: "#F34B4B"
|
16545
|
+
}, t(errors.content)), React__default.createElement(material.Box, {
|
16546
|
+
marginBottom: "4px"
|
16547
|
+
})))), React__default.createElement(DialogActions, {
|
16548
|
+
sx: {
|
16549
|
+
display: "flex",
|
16550
|
+
justifyContent: "space-between",
|
16551
|
+
alignItems: "center",
|
16552
|
+
padding: "12px",
|
16553
|
+
borderTop: "1px solid #CED2DA"
|
16554
|
+
}
|
16555
|
+
}, React__default.createElement(MButton, {
|
16556
|
+
className: styles$5["btn-cancel"],
|
16557
|
+
onClick: onClose
|
16558
|
+
}, React__default.createElement(Typography, {
|
16559
|
+
sx: {
|
16560
|
+
color: styles.dark + " !important"
|
16561
|
+
},
|
16562
|
+
fontWeight: 700,
|
16563
|
+
fontSize: "14px",
|
16564
|
+
lineHeight: "16.71px"
|
16565
|
+
}, t("cancel"))), React__default.createElement(MButton, {
|
16566
|
+
variant: "contained",
|
16567
|
+
sx: {
|
16568
|
+
bgcolor: styles.dark
|
16569
|
+
},
|
16570
|
+
className: styles$5["btn-register"],
|
16571
|
+
type: "submit"
|
16572
|
+
}, React__default.createElement(Typography, {
|
16573
|
+
fontWeight: 700,
|
16574
|
+
fontSize: "14px",
|
16575
|
+
lineHeight: "16.71px",
|
16576
|
+
color: "#FFFFFF"
|
16577
|
+
}, t("registration")))));
|
16578
|
+
}));
|
16579
|
+
};
|
16580
|
+
|
16581
|
+
var NoteList = function NoteList(_ref) {
|
16582
|
+
var defaultFilter = _ref.defaultFilter,
|
16583
|
+
role = _ref.role,
|
16584
|
+
headers = _ref.headers,
|
16585
|
+
isAdmin = _ref.isAdmin;
|
16586
|
+
var _useTranslation = reactI18next.useTranslation(),
|
16587
|
+
t = _useTranslation.t;
|
16588
|
+
var _useList = useList(function (filter) {
|
16589
|
+
return getNotesApi(filter);
|
16590
|
+
}, defaultFilter, false),
|
16591
|
+
isLoading = _useList.isLoading,
|
16592
|
+
filter = _useList.filter,
|
16593
|
+
textSearchRef = _useList.textSearchRef,
|
16594
|
+
paging = _useList.paging,
|
16595
|
+
data = _useList.data,
|
16596
|
+
selectedItem = _useList.selectedItem,
|
16597
|
+
handleSort = _useList.handleSort,
|
16598
|
+
handleChangeSearchText = _useList.handleChangeSearchText,
|
16599
|
+
handleChangePage = _useList.handleChangePage,
|
16600
|
+
calcOrderNumber = _useList.calcOrderNumber,
|
16601
|
+
handleChangeSelectedItem = _useList.handleChangeSelectedItem,
|
16602
|
+
getData = _useList.getData;
|
16603
|
+
var dispatch = reactRedux.useDispatch();
|
16604
|
+
var _useState = React.useState(false),
|
16605
|
+
openNoteViewDrawer = _useState[0],
|
16606
|
+
setOpenNoteViewDrawer = _useState[1];
|
16607
|
+
var _useState2 = React.useState(),
|
16608
|
+
openNoteDialog = _useState2[0],
|
16609
|
+
setOpenNoteDialog = _useState2[1];
|
16610
|
+
var _useState3 = React.useState(),
|
16611
|
+
noteRequest = _useState3[0],
|
16612
|
+
setNoteRequest = _useState3[1];
|
16613
|
+
var _useState4 = React.useState(false),
|
16614
|
+
openConfirmNote = _useState4[0],
|
16615
|
+
setOpenConfirmNote = _useState4[1];
|
16616
|
+
var _useState5 = React.useState(false),
|
16617
|
+
openDeleteNoteDialog = _useState5[0],
|
16618
|
+
setOpenDeleteNoteDialog = _useState5[1];
|
16619
|
+
var handleOpenCreateNoteDialog = function handleOpenCreateNoteDialog() {
|
16620
|
+
var _defaultFilter$types;
|
16621
|
+
if (((_defaultFilter$types = defaultFilter.types) === null || _defaultFilter$types === void 0 ? void 0 : _defaultFilter$types.length) === 1) setOpenNoteDialog(defaultFilter.types[0]);else if (defaultFilter.types && defaultFilter.types.length > 1) {
|
16622
|
+
setOpenNoteDialog(isAdmin ? exports.NoteType.AdminToAllAdmin : exports.NoteType.TeacherToAllAdmin);
|
16623
|
+
}
|
16624
|
+
};
|
16625
|
+
var handleCloseDeleteDialog = function handleCloseDeleteDialog() {
|
16626
|
+
setOpenDeleteNoteDialog(false);
|
16627
|
+
};
|
16628
|
+
var handleOpenDeleteNoteDialog = function handleOpenDeleteNoteDialog(note) {
|
16629
|
+
handleChangeSelectedItem(note);
|
16630
|
+
setOpenDeleteNoteDialog(true);
|
16631
|
+
};
|
16632
|
+
var handleOpenNoteDrawer = function handleOpenNoteDrawer(note) {
|
16633
|
+
setOpenNoteViewDrawer(true);
|
16634
|
+
handleChangeSelectedItem(note);
|
16635
|
+
};
|
16636
|
+
var handleCloseNoteDrawer = function handleCloseNoteDrawer() {
|
16637
|
+
setOpenNoteViewDrawer(false);
|
16638
|
+
handleChangeSelectedItem(undefined);
|
16639
|
+
};
|
16640
|
+
var handleCloseConfirmStudentNoteDialog = function handleCloseConfirmStudentNoteDialog() {
|
16641
|
+
setOpenConfirmNote(false);
|
16642
|
+
};
|
16643
|
+
var handleOpenNoteDialog = function handleOpenNoteDialog(note) {
|
16644
|
+
handleChangeSelectedItem(note);
|
16645
|
+
setOpenNoteDialog(note.type);
|
16646
|
+
};
|
16647
|
+
var handleCloseNoteDialog = function handleCloseNoteDialog() {
|
16648
|
+
handleChangeSelectedItem(undefined);
|
16649
|
+
setOpenNoteDialog(undefined);
|
16650
|
+
setNoteRequest(undefined);
|
16651
|
+
};
|
16652
|
+
var handleOpenConfirmStudentNoteDialog = function handleOpenConfirmStudentNoteDialog(note) {
|
16653
|
+
setNoteRequest(note);
|
16654
|
+
setOpenConfirmNote(true);
|
16655
|
+
};
|
16656
|
+
var handleSaveNote = function handleSaveNote(noteRequest) {
|
16657
|
+
try {
|
16658
|
+
var _temp4 = function _temp4() {
|
16659
|
+
dispatch(setLoading(false));
|
16660
|
+
};
|
16661
|
+
if (openNoteDialog === undefined) return Promise.resolve();
|
16662
|
+
if (noteRequest.content.trim().length === 0) return Promise.resolve();
|
16663
|
+
dispatch(setLoading(true));
|
16664
|
+
var _temp3 = _catch(function () {
|
16665
|
+
function _temp2() {
|
16666
|
+
getData();
|
16667
|
+
reset();
|
16668
|
+
}
|
16669
|
+
var _temp = function () {
|
16670
|
+
if (selectedItem) {
|
16671
|
+
return Promise.resolve(updateNoteDataApi(selectedItem.id, noteRequest)).then(function () {
|
16672
|
+
reactToastify.toast.success(t("update_note_successfully"));
|
16673
|
+
});
|
16674
|
+
} else {
|
16675
|
+
return Promise.resolve(createNoteApi(noteRequest)).then(function () {
|
16676
|
+
reactToastify.toast.success(t("create_note_successfully"));
|
16677
|
+
});
|
16678
|
+
}
|
16679
|
+
}();
|
16680
|
+
return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
|
16681
|
+
}, function (error) {
|
16682
|
+
reactToastify.toast.error(getErrorMessage(t, error));
|
16683
|
+
});
|
16684
|
+
return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
|
16685
|
+
} catch (e) {
|
16686
|
+
return Promise.reject(e);
|
16687
|
+
}
|
16688
|
+
};
|
16689
|
+
var handleDeleteNote = function handleDeleteNote() {
|
16690
|
+
try {
|
16691
|
+
var _temp6 = function _temp6() {
|
16692
|
+
dispatch(setLoading(false));
|
16693
|
+
};
|
16694
|
+
if (!(selectedItem !== null && selectedItem !== void 0 && selectedItem.id)) return Promise.resolve();
|
16695
|
+
dispatch(setLoading(true));
|
16696
|
+
var _temp5 = _catch(function () {
|
16697
|
+
return Promise.resolve(deleteNoteApi(selectedItem.id)).then(function () {
|
16698
|
+
reactToastify.toast.success(t("delete_note_successfully"));
|
16699
|
+
getData();
|
16700
|
+
reset();
|
16701
|
+
});
|
16702
|
+
}, function (error) {
|
16703
|
+
reactToastify.toast.error(getErrorMessage(t, error));
|
16704
|
+
});
|
16705
|
+
return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5));
|
16706
|
+
} catch (e) {
|
16707
|
+
return Promise.reject(e);
|
16708
|
+
}
|
16709
|
+
};
|
16710
|
+
var reset = function reset() {
|
16711
|
+
handleCloseNoteDialog();
|
16712
|
+
setOpenDeleteNoteDialog(false);
|
16713
|
+
setOpenConfirmNote(false);
|
16714
|
+
setNoteRequest(undefined);
|
16715
|
+
};
|
16716
|
+
var handleSaveNoteDialog = openNoteDialog === exports.NoteType.ToStudent && !(selectedItem !== null && selectedItem !== void 0 && selectedItem.id) ? handleOpenConfirmStudentNoteDialog : handleSaveNote;
|
16717
|
+
var handleSaveStudentNote = function handleSaveStudentNote() {
|
16718
|
+
if (!noteRequest) return;
|
16719
|
+
handleSaveNote(noteRequest);
|
16720
|
+
};
|
16721
|
+
return React__default.createElement(material.Box, {
|
16722
|
+
width: "100%"
|
16723
|
+
}, React__default.createElement(material.Grid, {
|
16724
|
+
container: true
|
16725
|
+
}, React__default.createElement(material.Grid, {
|
16726
|
+
item: true,
|
16727
|
+
xs: 6,
|
16728
|
+
className: "d-flex mb-3"
|
16729
|
+
}, React__default.createElement(SearchInput, {
|
16730
|
+
placeholder: t("search_for"),
|
16731
|
+
textSearchRef: textSearchRef,
|
16732
|
+
onChange: handleChangeSearchText
|
16733
|
+
})), React__default.createElement(material.Grid, {
|
16734
|
+
item: true,
|
16735
|
+
xs: 6,
|
16736
|
+
className: "d-flex justify-content-end align-items-center"
|
16737
|
+
}, React__default.createElement(material.Button, {
|
16738
|
+
variant: "contained",
|
16739
|
+
sx: {
|
16740
|
+
bgcolor: green[700]
|
16741
|
+
},
|
16742
|
+
startIcon: React__default.createElement(fa.FaPlus, {
|
16743
|
+
size: 12
|
16744
|
+
}),
|
16745
|
+
onClick: handleOpenCreateNoteDialog
|
16746
|
+
}, t("new_note"))), React__default.createElement(material.Grid, {
|
16747
|
+
item: true,
|
16748
|
+
xs: 12
|
16749
|
+
}, React__default.createElement(material.TableContainer, null, React__default.createElement(material.Table, null, React__default.createElement(material.TableHead, null, React__default.createElement(material.TableRow, null, headers.map(function (i, index) {
|
16750
|
+
return React__default.createElement(material.TableCell, {
|
16751
|
+
key: index,
|
16752
|
+
onClick: !!i.sortKey ? function () {
|
16753
|
+
return handleSort(i.sortKey);
|
16754
|
+
} : undefined,
|
16755
|
+
className: "" + (!!i.sortKey && "pointer")
|
16756
|
+
}, React__default.createElement("div", {
|
16757
|
+
className: "d-flex justify-content-between align-items-center text-nowrap"
|
16758
|
+
}, t(i.title), !!i.sortKey && React__default.createElement(SortIcon, {
|
16759
|
+
isAscending: filter.sortColumnName !== i.sortKey ? undefined : filter.sortColumnDirection === exports.OrderType.ASC
|
16760
|
+
})));
|
16761
|
+
}))), React__default.createElement(material.TableBody, null, React__default.createElement(ListView, {
|
16762
|
+
data: data,
|
16763
|
+
render: function render(item, index) {
|
16764
|
+
return React__default.createElement(NoteItemList, {
|
16765
|
+
key: index,
|
16766
|
+
data: item,
|
16767
|
+
calcOrderNumber: calcOrderNumber,
|
16768
|
+
index: index,
|
16769
|
+
role: role,
|
16770
|
+
onDelete: handleOpenDeleteNoteDialog,
|
16771
|
+
onUpdate: handleOpenNoteDialog,
|
16772
|
+
onView: handleOpenNoteDrawer
|
16773
|
+
});
|
16774
|
+
}
|
16775
|
+
}), !data.length && !isLoading && React__default.createElement(material.TableRow, null, React__default.createElement(material.TableCell, {
|
16776
|
+
colSpan: 12,
|
16777
|
+
className: "text-center text-muted"
|
16778
|
+
}, t("no_data"))), isLoading && React__default.createElement(material.TableRow, null, React__default.createElement(material.TableCell, {
|
16779
|
+
colSpan: 12
|
16780
|
+
}, React__default.createElement(material.Stack, {
|
16781
|
+
justifyContent: "center",
|
16782
|
+
alignItems: "center",
|
16783
|
+
width: "100%"
|
16784
|
+
}, React__default.createElement(material.CircularProgress, {
|
16785
|
+
size: 24
|
16786
|
+
}))))))), React__default.createElement("div", {
|
16787
|
+
className: "d-flex justify-content-end mt-3"
|
16788
|
+
}, !!paging.totalPages && React__default.createElement(material.Pagination, {
|
16789
|
+
count: paging.totalPages,
|
16790
|
+
page: paging.page,
|
16791
|
+
onChange: handleChangePage
|
16792
|
+
})))), React__default.createElement(NoteDrawer, {
|
16793
|
+
open: !!openNoteViewDrawer,
|
16794
|
+
data: selectedItem,
|
16795
|
+
student: selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.reciever,
|
16796
|
+
width: "80dvw",
|
16797
|
+
onClose: handleCloseNoteDrawer,
|
16798
|
+
anchor: "right"
|
16799
|
+
}), React__default.createElement(GeneralNoteDialog, {
|
16800
|
+
open: openNoteDialog !== undefined,
|
16801
|
+
type: openNoteDialog,
|
16802
|
+
onClose: handleCloseNoteDialog,
|
16803
|
+
onSaveNote: handleSaveNoteDialog,
|
16804
|
+
selectedNote: selectedItem,
|
16805
|
+
value: noteRequest
|
16806
|
+
}), React__default.createElement(ConfirmDialog, {
|
16807
|
+
open: openConfirmNote,
|
16808
|
+
toggle: handleCloseConfirmStudentNoteDialog,
|
16809
|
+
onConfirm: handleSaveStudentNote,
|
16810
|
+
text: t("are_you_sure_to_create_student_parent_note"),
|
16811
|
+
zIndex: 1300
|
16812
|
+
}), React__default.createElement(ConfirmDeleteDialog, {
|
16813
|
+
open: openDeleteNoteDialog,
|
16814
|
+
toggle: handleCloseDeleteDialog,
|
16815
|
+
onConfirm: handleDeleteNote,
|
16816
|
+
text: t("are_you_sure_you_want_to_delete_the_note"),
|
16817
|
+
title: t("delete_note"),
|
16818
|
+
okText: t("delete_note"),
|
16819
|
+
cancelText: t("cancel")
|
16820
|
+
}));
|
16821
|
+
};
|
16822
|
+
|
16823
|
+
var NotetabPanel = function NotetabPanel(_ref) {
|
16824
|
+
var children = _ref.children,
|
16825
|
+
value = _ref.value,
|
16826
|
+
index = _ref.index;
|
16827
|
+
return React__default.createElement("div", {
|
16828
|
+
role: "tabpanel",
|
16829
|
+
hidden: value !== index,
|
16830
|
+
id: "tabpanel-" + index,
|
16831
|
+
"aria-labelledby": "tab-" + index
|
16832
|
+
}, value === index && React__default.createElement(material.Box, {
|
16833
|
+
sx: {
|
16834
|
+
p: 2
|
16835
|
+
}
|
16836
|
+
}, React__default.createElement(material.Typography, null, children)));
|
16837
|
+
};
|
16838
|
+
|
16839
|
+
var NOTE_STUDENT_HEADERS = [{
|
16840
|
+
title: "#"
|
16841
|
+
}, {
|
16842
|
+
title: "sender",
|
16843
|
+
sortKey: "User.UserProfile.FullName"
|
16844
|
+
}, {
|
16845
|
+
title: "student",
|
16846
|
+
sortKey: "Student.UserProfile.FullName"
|
16847
|
+
}, {
|
16848
|
+
title: "content"
|
16849
|
+
}, {
|
16850
|
+
title: "type"
|
16851
|
+
}, {
|
16852
|
+
title: "created_at",
|
16853
|
+
sortKey: "CreatedAt"
|
16854
|
+
}, {
|
16855
|
+
title: "actions"
|
16856
|
+
}];
|
16857
|
+
var NOTE_TEACHER_HEADERS = [{
|
16858
|
+
title: "#"
|
16859
|
+
}, {
|
16860
|
+
title: "sender",
|
16861
|
+
sortKey: "User.UserProfile.FullName"
|
16862
|
+
}, {
|
16863
|
+
title: "receivers"
|
16864
|
+
}, {
|
16865
|
+
title: "content"
|
16866
|
+
}, {
|
16867
|
+
title: "type"
|
16868
|
+
}, {
|
16869
|
+
title: "created_at",
|
16870
|
+
sortKey: "CreatedAt"
|
16871
|
+
}, {
|
16872
|
+
title: "actions"
|
16873
|
+
}];
|
16874
|
+
var NOTE_ADMIN_HEADERS = [{
|
16875
|
+
title: "#"
|
16876
|
+
}, {
|
16877
|
+
title: "sender",
|
16878
|
+
sortKey: "User.UserProfile.FullName"
|
16879
|
+
}, {
|
16880
|
+
title: "receivers"
|
16881
|
+
}, {
|
16882
|
+
title: "content"
|
16883
|
+
}, {
|
16884
|
+
title: "type"
|
16885
|
+
}, {
|
16886
|
+
title: "created_at",
|
16887
|
+
sortKey: "CreatedAt"
|
16888
|
+
}, {
|
16889
|
+
title: "actions"
|
16890
|
+
}];
|
16891
|
+
var ACADEMY_NOTE_FILTER = {
|
16892
|
+
currentPage: 1,
|
16893
|
+
pageSize: 12,
|
16894
|
+
sortColumnDirection: exports.OrderType.DESC,
|
16895
|
+
sortColumnName: NoteSortColumn.CreatedAt,
|
16896
|
+
types: [exports.NoteType.ToAcademy]
|
16897
|
+
};
|
16898
|
+
var STUDENT_PARENTS_NOTE_FILTER = {
|
16899
|
+
currentPage: 1,
|
16900
|
+
pageSize: 12,
|
16901
|
+
sortColumnDirection: exports.OrderType.DESC,
|
16902
|
+
sortColumnName: NoteSortColumn.CreatedAt,
|
16903
|
+
types: [exports.NoteType.ToStudent]
|
16904
|
+
};
|
16905
|
+
var ADMIN_TEACHER_NOTE_FILTER = {
|
16906
|
+
currentPage: 1,
|
16907
|
+
pageSize: 12,
|
16908
|
+
sortColumnDirection: exports.OrderType.DESC,
|
16909
|
+
sortColumnName: NoteSortColumn.CreatedAt,
|
16910
|
+
types: [exports.NoteType.TeacherToAllAdmin, exports.NoteType.AdminToAllTeacher]
|
16911
|
+
};
|
16912
|
+
var ADMIN_NOTE_FILTER = {
|
16913
|
+
currentPage: 1,
|
16914
|
+
pageSize: 12,
|
16915
|
+
sortColumnDirection: exports.OrderType.DESC,
|
16916
|
+
sortColumnName: NoteSortColumn.CreatedAt,
|
16917
|
+
types: [exports.NoteType.TeacherToAllAdmin, exports.NoteType.AdminToAllTeacher, exports.NoteType.AdminToAllAdmin]
|
16918
|
+
};
|
16919
|
+
var TEACHER_NOTE_FILTER = {
|
16920
|
+
currentPage: 1,
|
16921
|
+
pageSize: 12,
|
16922
|
+
sortColumnDirection: exports.OrderType.DESC,
|
16923
|
+
sortColumnName: NoteSortColumn.CreatedAt,
|
16924
|
+
types: [exports.NoteType.TeacherToTeachers]
|
16925
|
+
};
|
16926
|
+
|
16927
|
+
var NoteTabs = function NoteTabs(_ref) {
|
16928
|
+
var role = _ref.role;
|
16929
|
+
var roles = reactRedux.useSelector(function (state) {
|
16930
|
+
var _state$common$user$ro, _state$common, _state$common$user;
|
16931
|
+
return (_state$common$user$ro = state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : (_state$common$user = _state$common.user) === null || _state$common$user === void 0 ? void 0 : _state$common$user.roles) != null ? _state$common$user$ro : [];
|
16932
|
+
});
|
16933
|
+
var isAdminUser = roles.includes(exports.Role.Admin);
|
16934
|
+
var isAdmin = roles.includes(exports.Role.Admin);
|
16935
|
+
var _useState = React.useState(0),
|
16936
|
+
value = _useState[0],
|
16937
|
+
setValue = _useState[1];
|
16938
|
+
var handleChange = function handleChange(_event, newValue) {
|
16939
|
+
setValue(newValue);
|
16940
|
+
};
|
16941
|
+
return React__default.createElement(material.Box, {
|
16942
|
+
sx: {
|
16943
|
+
width: "100%"
|
16944
|
+
}
|
16945
|
+
}, React__default.createElement(material.Tabs, {
|
16946
|
+
value: value,
|
16947
|
+
onChange: handleChange,
|
16948
|
+
sx: {
|
16949
|
+
"& .MuiTab-root": {
|
16950
|
+
color: grey[500],
|
16951
|
+
fontSize: "1rem"
|
16952
|
+
},
|
16953
|
+
"& .Mui-selected": {
|
16954
|
+
color: green[700] + "!important"
|
16955
|
+
},
|
16956
|
+
"& .MuiTabs-indicator": {
|
16957
|
+
backgroundColor: green[700]
|
16958
|
+
}
|
16959
|
+
}
|
16960
|
+
}, React__default.createElement(material.Tab, Object.assign({
|
16961
|
+
label: i18n.t("academy")
|
16962
|
+
}, a11yProps$1(0))), React__default.createElement(material.Tab, Object.assign({
|
16963
|
+
label: i18n.t("student_parents")
|
16964
|
+
}, a11yProps$1(1))), React__default.createElement(material.Tab, Object.assign({
|
16965
|
+
label: i18n.t("admin")
|
16966
|
+
}, a11yProps$1(2))), !isAdmin && !isAdminUser && React__default.createElement(material.Tab, Object.assign({
|
16967
|
+
label: i18n.t("teacher")
|
16968
|
+
}, a11yProps$1(3)))), React__default.createElement(NotetabPanel, {
|
16969
|
+
value: value,
|
16970
|
+
index: 0
|
16971
|
+
}, React__default.createElement(NoteList, {
|
16972
|
+
role: role,
|
16973
|
+
isAdmin: isAdmin,
|
16974
|
+
defaultFilter: ACADEMY_NOTE_FILTER,
|
16975
|
+
headers: NOTE_STUDENT_HEADERS
|
16976
|
+
})), React__default.createElement(NotetabPanel, {
|
16977
|
+
value: value,
|
16978
|
+
index: 1
|
16979
|
+
}, React__default.createElement(NoteList, {
|
16980
|
+
role: role,
|
16981
|
+
isAdmin: isAdmin,
|
16982
|
+
defaultFilter: STUDENT_PARENTS_NOTE_FILTER,
|
16983
|
+
headers: NOTE_STUDENT_HEADERS
|
16984
|
+
})), React__default.createElement(NotetabPanel, {
|
16985
|
+
value: value,
|
16986
|
+
index: 2
|
16987
|
+
}, React__default.createElement(NoteList, {
|
16988
|
+
role: role,
|
16989
|
+
isAdmin: isAdmin,
|
16990
|
+
defaultFilter: isAdmin ? ADMIN_NOTE_FILTER : ADMIN_TEACHER_NOTE_FILTER,
|
16991
|
+
headers: NOTE_ADMIN_HEADERS
|
16992
|
+
})), !isAdmin && !isAdminUser && React__default.createElement(NotetabPanel, {
|
16993
|
+
value: value,
|
16994
|
+
index: 3
|
16995
|
+
}, React__default.createElement(NoteList, {
|
16996
|
+
role: role,
|
16997
|
+
isAdmin: isAdmin,
|
16998
|
+
defaultFilter: TEACHER_NOTE_FILTER,
|
16999
|
+
headers: NOTE_TEACHER_HEADERS
|
15912
17000
|
})));
|
15913
17001
|
};
|
17002
|
+
function a11yProps$1(index) {
|
17003
|
+
return {
|
17004
|
+
id: "tab-" + index,
|
17005
|
+
"aria-controls": "tabpanel-" + index
|
17006
|
+
};
|
17007
|
+
}
|
15914
17008
|
|
15915
|
-
var useVirtualList = function useVirtualList(
|
17009
|
+
var useVirtualList = function useVirtualList(defaultFilter, getItemsApi) {
|
15916
17010
|
var _useTranslation = reactI18next.useTranslation(),
|
15917
17011
|
t = _useTranslation.t;
|
15918
17012
|
var _useState = React.useState([]),
|
@@ -15926,7 +17020,7 @@ var useVirtualList = function useVirtualList(studentId, defaultFilter, getItemsA
|
|
15926
17020
|
setSelectedItem = _useState3[1];
|
15927
17021
|
var _useState4 = React.useState(false),
|
15928
17022
|
isLoading = _useState4[0],
|
15929
|
-
|
17023
|
+
setLoading = _useState4[1];
|
15930
17024
|
var _useState5 = React.useState(),
|
15931
17025
|
filter = _useState5[0],
|
15932
17026
|
setFilter = _useState5[1];
|
@@ -15936,18 +17030,16 @@ var useVirtualList = function useVirtualList(studentId, defaultFilter, getItemsA
|
|
15936
17030
|
var getItems = function getItems() {
|
15937
17031
|
try {
|
15938
17032
|
var _temp2 = function _temp2() {
|
15939
|
-
|
17033
|
+
setLoading(false);
|
15940
17034
|
};
|
15941
17035
|
if (isLoading) return Promise.resolve();
|
15942
17036
|
if (!filter || !filter.currentPage) {
|
15943
17037
|
setItems([]);
|
15944
17038
|
return Promise.resolve();
|
15945
17039
|
}
|
15946
|
-
|
17040
|
+
setLoading(true);
|
15947
17041
|
var _temp = _catch(function () {
|
15948
|
-
return Promise.resolve(getItemsApi(
|
15949
|
-
studentId: studentId
|
15950
|
-
}))).then(function (res) {
|
17042
|
+
return Promise.resolve(getItemsApi(filter)).then(function (res) {
|
15951
17043
|
var responseData = res.data;
|
15952
17044
|
setTotalPages((responseData === null || responseData === void 0 ? void 0 : responseData.totalPages) || 0);
|
15953
17045
|
var responseItems = (responseData === null || responseData === void 0 ? void 0 : responseData.items) || [];
|
@@ -15986,23 +17078,25 @@ var useVirtualList = function useVirtualList(studentId, defaultFilter, getItemsA
|
|
15986
17078
|
});
|
15987
17079
|
setItems(results);
|
15988
17080
|
};
|
15989
|
-
var handleItemRemoved = function handleItemRemoved(
|
15990
|
-
|
15991
|
-
|
15992
|
-
|
15993
|
-
|
17081
|
+
var handleItemRemoved = function handleItemRemoved(_item) {
|
17082
|
+
getItems();
|
17083
|
+
};
|
17084
|
+
var handleChangeFilter = function handleChangeFilter(newFilter) {
|
17085
|
+
setFilter(newFilter);
|
15994
17086
|
};
|
15995
17087
|
React.useEffect(function () {
|
15996
17088
|
setFilter(defaultFilter);
|
15997
17089
|
}, [JSON.stringify(defaultFilter)]);
|
15998
17090
|
React.useEffect(function () {
|
15999
17091
|
getItems();
|
16000
|
-
}, [JSON.stringify(filter)]);
|
17092
|
+
}, [JSON.stringify(filter), getItemsApi]);
|
16001
17093
|
return {
|
16002
17094
|
t: t,
|
17095
|
+
filter: filter,
|
16003
17096
|
selectedItem: selectedItem,
|
16004
17097
|
items: items,
|
16005
17098
|
isLoading: isLoading,
|
17099
|
+
handleChangeFilter: handleChangeFilter,
|
16006
17100
|
setItems: setItems,
|
16007
17101
|
handleChangeSelectedItem: handleChangeSelectedItem,
|
16008
17102
|
handleLoadMore: handleLoadMore,
|
@@ -16054,8 +17148,9 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16054
17148
|
var _useState6 = React.useState(),
|
16055
17149
|
noteIdContextMenu = _useState6[0],
|
16056
17150
|
setNoteIdContextMenu = _useState6[1];
|
16057
|
-
var _useVirtualList = useVirtualList(
|
16058
|
-
|
17151
|
+
var _useVirtualList = useVirtualList(_extends({}, DEFAULT_NOTE_FILTER, {
|
17152
|
+
types: [exports.NoteType.ToAcademy],
|
17153
|
+
studentId: studentId
|
16059
17154
|
}), getNotesApi$1),
|
16060
17155
|
academyNotes = _useVirtualList.items,
|
16061
17156
|
isLoadingAcademyNotes = _useVirtualList.isLoading,
|
@@ -16065,8 +17160,9 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16065
17160
|
handleItemAddedAcademyNote = _useVirtualList.handleItemAdded,
|
16066
17161
|
handleItemUpdatedAcademyNote = _useVirtualList.handleItemUpdated,
|
16067
17162
|
handleChangeSelectedItem = _useVirtualList.handleChangeSelectedItem;
|
16068
|
-
var _useVirtualList2 = useVirtualList(
|
16069
|
-
|
17163
|
+
var _useVirtualList2 = useVirtualList(_extends({}, DEFAULT_NOTE_FILTER, {
|
17164
|
+
types: [exports.NoteType.ToStudent],
|
17165
|
+
studentId: studentId
|
16070
17166
|
}), getNotesApi$1),
|
16071
17167
|
studentNotes = _useVirtualList2.items,
|
16072
17168
|
isLoadingStudentNotes = _useVirtualList2.isLoading,
|
@@ -16083,11 +17179,11 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16083
17179
|
};
|
16084
17180
|
var handleOpenCreateAcademyNoteDialog = function handleOpenCreateAcademyNoteDialog() {
|
16085
17181
|
handleCloseTooltip();
|
16086
|
-
setOpenNoteDialog(exports.NoteType.
|
17182
|
+
setOpenNoteDialog(exports.NoteType.ToAcademy);
|
16087
17183
|
};
|
16088
17184
|
var handleOpenCreateStudentNoteDialog = function handleOpenCreateStudentNoteDialog() {
|
16089
17185
|
handleCloseTooltip();
|
16090
|
-
setOpenNoteDialog(exports.NoteType.
|
17186
|
+
setOpenNoteDialog(exports.NoteType.ToStudent);
|
16091
17187
|
};
|
16092
17188
|
var handleCloseTooltip = function handleCloseTooltip() {
|
16093
17189
|
setNoteIdContextMenu(0);
|
@@ -16138,7 +17234,7 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16138
17234
|
var _temp = function () {
|
16139
17235
|
if (selectedItem) {
|
16140
17236
|
return Promise.resolve(updateNoteApi$1(selectedItem.id, data.content)).then(function (res) {
|
16141
|
-
if (selectedItem.type === exports.NoteType.
|
17237
|
+
if (selectedItem.type === exports.NoteType.ToStudent) handleItemUpdatedStudentNote(res.data);else handleItemUpdatedAcademyNote(res.data);
|
16142
17238
|
reactToastify.toast.success(t("update_note_successfully"));
|
16143
17239
|
});
|
16144
17240
|
} else {
|
@@ -16146,7 +17242,7 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16146
17242
|
return Promise.resolve(createNoteApi$1(_extends({}, data, {
|
16147
17243
|
type: openNoteDialog
|
16148
17244
|
}))).then(function (res) {
|
16149
|
-
if (res.data.type === exports.NoteType.
|
17245
|
+
if (res.data.type === exports.NoteType.ToStudent) handleItemAddedStudentNote(res.data);else handleItemAddedAcademyNote(res.data);
|
16150
17246
|
reactToastify.toast.success(t("create_note_successfully"));
|
16151
17247
|
});
|
16152
17248
|
}
|
@@ -16179,7 +17275,7 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16179
17275
|
var _temp5 = _catch(function () {
|
16180
17276
|
return Promise.resolve(deleteNoteApi$1(selectedItem.id)).then(function () {
|
16181
17277
|
reactToastify.toast.success(t("delete_note_successfully"));
|
16182
|
-
if (selectedItem.type === exports.NoteType.
|
17278
|
+
if (selectedItem.type === exports.NoteType.ToStudent) handleItemRemovedStudentNote(selectedItem);else handleItemRemovedAcademyNote(selectedItem);
|
16183
17279
|
reset();
|
16184
17280
|
});
|
16185
17281
|
}, function (error) {
|
@@ -16201,14 +17297,12 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16201
17297
|
handleSaveNote(studentNoteContent);
|
16202
17298
|
};
|
16203
17299
|
var noteDialogProps = {
|
16204
|
-
open: openNoteDialog === exports.NoteType.
|
17300
|
+
open: openNoteDialog === exports.NoteType.ToStudent && !openConfirmNote || openNoteDialog === exports.NoteType.ToAcademy,
|
16205
17301
|
selectedNote: selectedItem,
|
16206
|
-
tip: " (" + t(openNoteDialog === exports.NoteType.
|
17302
|
+
tip: " (" + t(openNoteDialog === exports.NoteType.ToStudent ? "student_parents" : "academy") + ")",
|
16207
17303
|
value: studentNoteContent,
|
16208
17304
|
onClose: handleCloseNoteDialog,
|
16209
|
-
onSaveNote: openNoteDialog === exports.NoteType.
|
16210
|
-
return handleSaveNote(content);
|
16211
|
-
}
|
17305
|
+
onSaveNote: openNoteDialog === exports.NoteType.ToStudent && !(selectedItem !== null && selectedItem !== void 0 && selectedItem.id) ? handleOpenConfirmStudentNoteDialog : handleSaveNote
|
16212
17306
|
};
|
16213
17307
|
return {
|
16214
17308
|
openConfirmNote: openConfirmNote,
|
@@ -16475,11 +17569,11 @@ var DrawerInfoTab = function DrawerInfoTab(_ref) {
|
|
16475
17569
|
}
|
16476
17570
|
}, data ? React__default.createElement(material.Typography, {
|
16477
17571
|
sx: contentStyle
|
16478
|
-
}, t(function (label) {
|
17572
|
+
}, !!data.grade ? t(function (label) {
|
16479
17573
|
return label ? t(label) : formatGrade(data.grade, t, language);
|
16480
17574
|
}((_BRIEF_GRADE_OPTIONS$ = BRIEF_GRADE_OPTIONS.find(function (o) {
|
16481
17575
|
return o.value === Number(data.grade);
|
16482
|
-
})) === null || _BRIEF_GRADE_OPTIONS$ === void 0 ? void 0 : _BRIEF_GRADE_OPTIONS$.label))) : React__default.createElement(material.Skeleton, {
|
17576
|
+
})) === null || _BRIEF_GRADE_OPTIONS$ === void 0 ? void 0 : _BRIEF_GRADE_OPTIONS$.label)) : "") : React__default.createElement(material.Skeleton, {
|
16483
17577
|
variant: "text",
|
16484
17578
|
width: 20,
|
16485
17579
|
sx: contentStyle
|
@@ -16672,7 +17766,7 @@ var ExamResultItem = function ExamResultItem(_ref) {
|
|
16672
17766
|
}, (_data$teacher = data.teacher) === null || _data$teacher === void 0 ? void 0 : _data$teacher.fullName))))));
|
16673
17767
|
};
|
16674
17768
|
|
16675
|
-
var
|
17769
|
+
var ExamResultList = function ExamResultList(_ref) {
|
16676
17770
|
var studentId = _ref.studentId,
|
16677
17771
|
data = _ref.data,
|
16678
17772
|
isLoading = _ref.isLoading,
|
@@ -22026,7 +23120,7 @@ var ExamResultDrawer = function ExamResultDrawer(_ref) {
|
|
22026
23120
|
fontSize: "13px",
|
22027
23121
|
fontWeight: 500
|
22028
23122
|
}
|
22029
|
-
}, student.schoolName), React__default.createElement(material.Typography, {
|
23123
|
+
}, student.schoolName), !!student.grade && React__default.createElement(material.Typography, {
|
22030
23124
|
sx: {
|
22031
23125
|
color: grey[500],
|
22032
23126
|
fontSize: "13px",
|
@@ -22064,7 +23158,9 @@ var DrawerExamResultTab = function DrawerExamResultTab(_ref) {
|
|
22064
23158
|
value = _ref.value,
|
22065
23159
|
studentId = _ref.studentId,
|
22066
23160
|
onViewQA = _ref.onViewQA;
|
22067
|
-
var _useVirtualList = useVirtualList(
|
23161
|
+
var _useVirtualList = useVirtualList(_extends({}, EXAM_SESSION_DEFAULT_FILTER, {
|
23162
|
+
studentId: studentId
|
23163
|
+
}), getExamSessionListApi),
|
22068
23164
|
items = _useVirtualList.items,
|
22069
23165
|
selectedItem = _useVirtualList.selectedItem,
|
22070
23166
|
isLoading = _useVirtualList.isLoading,
|
@@ -22081,7 +23177,7 @@ var DrawerExamResultTab = function DrawerExamResultTab(_ref) {
|
|
22081
23177
|
p: 3,
|
22082
23178
|
height: "100%"
|
22083
23179
|
}
|
22084
|
-
}, React__default.createElement(
|
23180
|
+
}, React__default.createElement(ExamResultList, {
|
22085
23181
|
data: items,
|
22086
23182
|
isLoading: isLoading,
|
22087
23183
|
onLoadMore: handleLoadMore,
|
@@ -24830,7 +25926,9 @@ var DrawerTextbookResultTab = function DrawerTextbookResultTab(_ref) {
|
|
24830
25926
|
selectedTab = _ref.selectedTab,
|
24831
25927
|
value = _ref.value,
|
24832
25928
|
onViewQA = _ref.onViewQA;
|
24833
|
-
var _useVirtualList = useVirtualList(
|
25929
|
+
var _useVirtualList = useVirtualList(_extends({}, TEXTBOOK_DEFAULT_FILTER, {
|
25930
|
+
studentId: studentId
|
25931
|
+
}), getTextbookListApi),
|
24834
25932
|
items = _useVirtualList.items,
|
24835
25933
|
selectedItem = _useVirtualList.selectedItem,
|
24836
25934
|
isLoading = _useVirtualList.isLoading,
|
@@ -25228,9 +26326,10 @@ var useDrawerAttendanceTab = function useDrawerAttendanceTab(studentId, onUpdate
|
|
25228
26326
|
var pusher = concurrentConnectionPusher === null || concurrentConnectionPusher === void 0 ? void 0 : concurrentConnectionPusher.pusher;
|
25229
26327
|
var channelName = React.useRef();
|
25230
26328
|
var channel = React.useRef();
|
25231
|
-
var
|
25232
|
-
|
25233
|
-
|
26329
|
+
var handleGetAttendanceByStudentId = React.useCallback(function (query) {
|
26330
|
+
return getAttendanceByStudentIdApi(studentId, query);
|
26331
|
+
}, [studentId]);
|
26332
|
+
var _useVirtualList = useVirtualList(ATTENDANCE_COURSE_DEFAULT_FILTER, handleGetAttendanceByStudentId),
|
25234
26333
|
items = _useVirtualList.items,
|
25235
26334
|
isLoading = _useVirtualList.isLoading,
|
25236
26335
|
handleLoadMore = _useVirtualList.handleLoadMore,
|
@@ -26316,9 +27415,9 @@ var useLessonClassList = function useLessonClassList(courseId) {
|
|
26316
27415
|
};
|
26317
27416
|
};
|
26318
27417
|
|
26319
|
-
var TEACHER_URL = BASE_URL + "/api/teacher";
|
26320
|
-
var getTeacherListApi = function getTeacherListApi(query) {
|
26321
|
-
return api.get("" + TEACHER_URL, {
|
27418
|
+
var TEACHER_URL$1 = BASE_URL + "/api/teacher";
|
27419
|
+
var getTeacherListApi$1 = function getTeacherListApi(query) {
|
27420
|
+
return api.get("" + TEACHER_URL$1, {
|
26322
27421
|
params: query
|
26323
27422
|
});
|
26324
27423
|
};
|
@@ -26339,7 +27438,7 @@ var useTeacherList = function useTeacherList() {
|
|
26339
27438
|
var getListTeacher = function getListTeacher() {
|
26340
27439
|
try {
|
26341
27440
|
var _temp = _catch(function () {
|
26342
|
-
return Promise.resolve(getTeacherListApi(teacherFilter)).then(function (res) {
|
27441
|
+
return Promise.resolve(getTeacherListApi$1(teacherFilter)).then(function (res) {
|
26343
27442
|
var _res$data;
|
26344
27443
|
setTeachers(((_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.items) || []);
|
26345
27444
|
});
|
@@ -26409,11 +27508,6 @@ var useClassDetail = function useClassDetail(_ref) {
|
|
26409
27508
|
var isSelected = function isSelected(id) {
|
26410
27509
|
return selected.indexOf(id) !== -1;
|
26411
27510
|
};
|
26412
|
-
var registerPusherRef = React.useRef(true);
|
26413
|
-
var isReadyRegisterPusher = reactRedux.useSelector(function (state) {
|
26414
|
-
var _state$common2;
|
26415
|
-
return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.isReadyRegisterPusher;
|
26416
|
-
});
|
26417
27511
|
var _useStudentClassList = useStudentClassList(classId),
|
26418
27512
|
getStudents = _useStudentClassList.getStudents,
|
26419
27513
|
studentListProps = _objectWithoutPropertiesLoose(_useStudentClassList, _excluded$b);
|
@@ -26803,12 +27897,6 @@ var useClassDetail = function useClassDetail(_ref) {
|
|
26803
27897
|
React.useEffect(function () {
|
26804
27898
|
document.title = t("study_peak") + " | " + t(PAGE_TITLE$4);
|
26805
27899
|
}, [t]);
|
26806
|
-
React.useEffect(function () {
|
26807
|
-
if (!isReadyRegisterPusher && registerPusherRef.current) {
|
26808
|
-
dispatch(setReadyRegisterPusher(true));
|
26809
|
-
registerPusherRef.current = false;
|
26810
|
-
}
|
26811
|
-
}, [isReadyRegisterPusher]);
|
26812
27900
|
return {
|
26813
27901
|
classId: classId,
|
26814
27902
|
schema: schema,
|
@@ -28473,11 +29561,6 @@ var useUserList = function useUserList(role) {
|
|
28473
29561
|
setOpenDeleteUserCsv = _useState10[1];
|
28474
29562
|
var inputFileRef = React.useRef(null);
|
28475
29563
|
var firstLoadRef = React.useRef(true);
|
28476
|
-
var registerPusherRef = React.useRef(true);
|
28477
|
-
var isReadyRegisterPusher = reactRedux.useSelector(function (state) {
|
28478
|
-
var _state$common;
|
28479
|
-
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.isReadyRegisterPusher;
|
28480
|
-
});
|
28481
29564
|
var handleChangeSelectedStudent = function handleChangeSelectedStudent(student) {
|
28482
29565
|
var _student$roles, _student$roles2;
|
28483
29566
|
var isStudent = ((_student$roles = student.roles) === null || _student$roles === void 0 ? void 0 : _student$roles.includes(exports.Role.Student)) && ((_student$roles2 = student.roles) === null || _student$roles2 === void 0 ? void 0 : _student$roles2.length) === 1;
|
@@ -28789,12 +29872,6 @@ var useUserList = function useUserList(role) {
|
|
28789
29872
|
var userHeaders = USER_HEADERS.filter(function (i) {
|
28790
29873
|
return i.roles.includes(role);
|
28791
29874
|
});
|
28792
|
-
React.useEffect(function () {
|
28793
|
-
if (!isReadyRegisterPusher && registerPusherRef.current) {
|
28794
|
-
dispatch(setReadyRegisterPusher(true));
|
28795
|
-
registerPusherRef.current = false;
|
28796
|
-
}
|
28797
|
-
}, [isReadyRegisterPusher]);
|
28798
29875
|
return {
|
28799
29876
|
userDetail: userDetail,
|
28800
29877
|
userHeaders: userHeaders,
|
@@ -30726,9 +31803,9 @@ var TextbookSortBy$1;
|
|
30726
31803
|
var TeacherSortBy$1;
|
30727
31804
|
(function (TeacherSortBy) {
|
30728
31805
|
TeacherSortBy["CreatedAt"] = "CreatedAt";
|
30729
|
-
TeacherSortBy["Name"] = "UserProfile.FullName";
|
30730
|
-
TeacherSortBy["Email"] = "Email";
|
30731
|
-
TeacherSortBy["PhoneNumber"] = "UserProfile.PhoneNumber";
|
31806
|
+
TeacherSortBy["Name"] = "User.UserProfile.FullName";
|
31807
|
+
TeacherSortBy["Email"] = "User.Email";
|
31808
|
+
TeacherSortBy["PhoneNumber"] = "User.UserProfile.PhoneNumber";
|
30732
31809
|
})(TeacherSortBy$1 || (TeacherSortBy$1 = {}));
|
30733
31810
|
var ExamType$1;
|
30734
31811
|
(function (ExamType) {
|
@@ -32495,9 +33572,9 @@ var ShareToTeacherDialog = function ShareToTeacherDialog(_ref) {
|
|
32495
33572
|
}, t("cancel")))));
|
32496
33573
|
};
|
32497
33574
|
|
32498
|
-
var TEACHER_URL$
|
32499
|
-
var getTeacherListApi$
|
32500
|
-
return api.get("" + TEACHER_URL$
|
33575
|
+
var TEACHER_URL$2 = BASE_URL + "/api/teacher";
|
33576
|
+
var getTeacherListApi$2 = function getTeacherListApi(query) {
|
33577
|
+
return api.get("" + TEACHER_URL$2, {
|
32501
33578
|
params: query
|
32502
33579
|
});
|
32503
33580
|
};
|
@@ -32508,7 +33585,7 @@ var useTextbookShare = function useTextbookShare(props) {
|
|
32508
33585
|
role = props.role,
|
32509
33586
|
isSuperAdmin = props.isSuperAdmin;
|
32510
33587
|
var _useList = useList(!isSuperAdmin ? function (search) {
|
32511
|
-
return getTeacherListApi$
|
33588
|
+
return getTeacherListApi$2(search);
|
32512
33589
|
} : null, DefaultTeacherQuery),
|
32513
33590
|
filterShare = _useList.filter,
|
32514
33591
|
textSearchShareRef = _useList.textSearchRef,
|
@@ -37539,17 +38616,17 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
|
|
37539
38616
|
sx: {
|
37540
38617
|
color: inforErrors && submitCount ? error.main + "!important" : "gray"
|
37541
38618
|
}
|
37542
|
-
}, a11yProps$
|
38619
|
+
}, a11yProps$2(0))), React__default.createElement(material.Tab, Object.assign({
|
37543
38620
|
label: i18n.t("textbook.contents"),
|
37544
38621
|
sx: {
|
37545
38622
|
color: contentsErrors && submitCount ? error.main + "!important" : "gray"
|
37546
38623
|
}
|
37547
|
-
}, a11yProps$
|
38624
|
+
}, a11yProps$2(1))), !(values !== null && values !== void 0 && values.isPublic) && (!isSuperAdmin || textbookId) && (!textbookId && !isAdmin || (values === null || values === void 0 ? void 0 : values.isShared)) && React__default.createElement(material.Tab, Object.assign({
|
37548
38625
|
label: i18n.t("textbook.owners"),
|
37549
38626
|
sx: {
|
37550
38627
|
color: textbookOwnersErrors && submitCount ? error.main + "!important" : "gray"
|
37551
38628
|
}
|
37552
|
-
}, a11yProps$
|
38629
|
+
}, a11yProps$2(2))))), React__default.createElement(CustomTextbookTab, {
|
37553
38630
|
value: selected,
|
37554
38631
|
index: 0
|
37555
38632
|
}, React__default.createElement(TextbookInfoTab, Object.assign({}, formikProps, {
|
@@ -37571,7 +38648,7 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
|
|
37571
38648
|
disabled: ownersDisabled
|
37572
38649
|
}))))));
|
37573
38650
|
};
|
37574
|
-
var a11yProps$
|
38651
|
+
var a11yProps$2 = function a11yProps(index) {
|
37575
38652
|
return {
|
37576
38653
|
id: "textbook-tab-" + index,
|
37577
38654
|
"aria-controls": "textbook-tabpanel-" + index
|
@@ -37968,6 +39045,449 @@ var PreparedTextbookList = function PreparedTextbookList(_ref) {
|
|
37968
39045
|
}));
|
37969
39046
|
};
|
37970
39047
|
|
39048
|
+
var AnnouncementEvent;
|
39049
|
+
(function (AnnouncementEvent) {
|
39050
|
+
AnnouncementEvent["ReceivedNewNote"] = "ReceivedNewNote";
|
39051
|
+
AnnouncementEvent["UpdatedNote"] = "UpdatedNote";
|
39052
|
+
AnnouncementEvent["DeletedNote"] = "DeletedNote";
|
39053
|
+
})(AnnouncementEvent || (AnnouncementEvent = {}));
|
39054
|
+
(function (AnnouncementType) {
|
39055
|
+
AnnouncementType["ReceivedNewNote"] = "ReceivedNewNote";
|
39056
|
+
})(exports.AnnouncementType || (exports.AnnouncementType = {}));
|
39057
|
+
|
39058
|
+
var stringToColor = function stringToColor(string) {
|
39059
|
+
var hash = 0;
|
39060
|
+
var i;
|
39061
|
+
for (i = 0; i < string.length; i += 1) {
|
39062
|
+
hash = string.charCodeAt(i) + ((hash << 5) - hash);
|
39063
|
+
}
|
39064
|
+
var color = "#";
|
39065
|
+
for (i = 0; i < 3; i += 1) {
|
39066
|
+
var value = hash >> i * 8 & 0xff;
|
39067
|
+
color += ("00" + value.toString(16)).slice(-2);
|
39068
|
+
}
|
39069
|
+
return color;
|
39070
|
+
};
|
39071
|
+
var stringAvatar = function stringAvatar(name) {
|
39072
|
+
var _name$split$0$, _name$split$, _name$split$1$, _name$split$2;
|
39073
|
+
return {
|
39074
|
+
sx: {
|
39075
|
+
bgcolor: stringToColor(name)
|
39076
|
+
},
|
39077
|
+
children: "" + ((_name$split$0$ = (_name$split$ = name.split(" ")[0]) === null || _name$split$ === void 0 ? void 0 : _name$split$[0]) != null ? _name$split$0$ : "") + ((_name$split$1$ = (_name$split$2 = name.split(" ")[1]) === null || _name$split$2 === void 0 ? void 0 : _name$split$2[0]) != null ? _name$split$1$ : "")
|
39078
|
+
};
|
39079
|
+
};
|
39080
|
+
var convertAnnouncementData = function convertAnnouncementData(t, role, announcement) {
|
39081
|
+
var isTeacherSite = role === exports.Role.Teacher;
|
39082
|
+
var data = announcement.data;
|
39083
|
+
switch (announcement.type) {
|
39084
|
+
case exports.AnnouncementType.ReceivedNewNote:
|
39085
|
+
var extraData = data.data;
|
39086
|
+
var contents = extraData.split("|");
|
39087
|
+
var noteType = contents[0];
|
39088
|
+
var content = contents.slice(1).join("|");
|
39089
|
+
var isAdmin = noteType === exports.NoteType[exports.NoteType.AdminToAllTeacher] || noteType === exports.NoteType[exports.NoteType.AdminToAllAdmin];
|
39090
|
+
return {
|
39091
|
+
content: content,
|
39092
|
+
name: isAdmin ? isTeacherSite ? t("admin") : t("admin_n", {
|
39093
|
+
admin: data.senderFullName
|
39094
|
+
}) : t("teacher_n", {
|
39095
|
+
teacher: data.senderFullName
|
39096
|
+
}),
|
39097
|
+
image: isAdmin && isTeacherSite ? undefined : data.senderAvatar,
|
39098
|
+
action: t("sent_a_memo")
|
39099
|
+
};
|
39100
|
+
default:
|
39101
|
+
return {
|
39102
|
+
name: data.senderFullName,
|
39103
|
+
image: data.senderAvatar,
|
39104
|
+
content: data.data,
|
39105
|
+
action: ""
|
39106
|
+
};
|
39107
|
+
}
|
39108
|
+
};
|
39109
|
+
|
39110
|
+
var AnnouncementItem = function AnnouncementItem(_ref) {
|
39111
|
+
var data = _ref.data,
|
39112
|
+
role = _ref.role,
|
39113
|
+
renderLink = _ref.renderLink,
|
39114
|
+
onLoad = _ref.onLoad;
|
39115
|
+
var _useTranslation = reactI18next.useTranslation(),
|
39116
|
+
t = _useTranslation.t;
|
39117
|
+
React.useEffect(function () {
|
39118
|
+
onLoad();
|
39119
|
+
}, []);
|
39120
|
+
var announcementData = convertAnnouncementData(t, role, data);
|
39121
|
+
return React__default.createElement(React.Fragment, null, renderLink(React__default.createElement(material.ListItemButton, {
|
39122
|
+
sx: _extends({
|
39123
|
+
py: 1.5,
|
39124
|
+
px: 2.5,
|
39125
|
+
mt: "1px"
|
39126
|
+
}, !data.isRead && {
|
39127
|
+
bgcolor: "action.selected"
|
39128
|
+
})
|
39129
|
+
}, React__default.createElement(material.Stack, {
|
39130
|
+
direction: "row",
|
39131
|
+
gap: 1,
|
39132
|
+
justifyContent: "space-between",
|
39133
|
+
width: "100%"
|
39134
|
+
}, React__default.createElement(material.Stack, {
|
39135
|
+
direction: "row",
|
39136
|
+
gap: 1
|
39137
|
+
}, React__default.createElement(material.ListItemAvatar, null, React__default.createElement(material.Avatar, Object.assign({}, stringAvatar(announcementData.name), {
|
39138
|
+
src: announcementData.image
|
39139
|
+
}))), React__default.createElement(material.ListItemText, {
|
39140
|
+
sx: {
|
39141
|
+
marginBlock: 0
|
39142
|
+
},
|
39143
|
+
primary: React__default.createElement(material.Box, null, React__default.createElement(material.Typography, {
|
39144
|
+
fontWeight: 600,
|
39145
|
+
display: "inline-block"
|
39146
|
+
}, announcementData.name), announcementData.action && React__default.createElement(material.Typography, {
|
39147
|
+
display: "inline-block",
|
39148
|
+
px: "4px"
|
39149
|
+
}, announcementData.action + ":"), React__default.createElement(material.Box, {
|
39150
|
+
display: "inline-block"
|
39151
|
+
}, React__default.createElement(material.Box, {
|
39152
|
+
sx: {
|
39153
|
+
display: "-webkit-box",
|
39154
|
+
lineClamp: 2,
|
39155
|
+
WebkitLineClamp: 2,
|
39156
|
+
WebkitBoxOrient: "vertical",
|
39157
|
+
boxOrient: "vertical",
|
39158
|
+
overflow: "hidden"
|
39159
|
+
},
|
39160
|
+
dangerouslySetInnerHTML: {
|
39161
|
+
__html: announcementData.content || ""
|
39162
|
+
}
|
39163
|
+
}))),
|
39164
|
+
secondary: React__default.createElement(material.Typography, {
|
39165
|
+
variant: "caption",
|
39166
|
+
sx: {
|
39167
|
+
mt: 0.5,
|
39168
|
+
display: "flex",
|
39169
|
+
alignItems: "center",
|
39170
|
+
color: "text.disabled"
|
39171
|
+
}
|
39172
|
+
}, React__default.createElement(material.Box, {
|
39173
|
+
sx: {
|
39174
|
+
marginRight: "8px"
|
39175
|
+
}
|
39176
|
+
}, React__default.createElement(fa6.FaClockRotateLeft, {
|
39177
|
+
size: 12
|
39178
|
+
})), timAgo(data.createdAt, t, true))
|
39179
|
+
})))), data));
|
39180
|
+
};
|
39181
|
+
|
39182
|
+
var AnnouncementList = function AnnouncementList(_ref) {
|
39183
|
+
var role = _ref.role,
|
39184
|
+
items = _ref.items,
|
39185
|
+
isLoading = _ref.isLoading,
|
39186
|
+
onLoadMore = _ref.onLoadMore,
|
39187
|
+
renderLink = _ref.renderLink;
|
39188
|
+
return React__default.createElement(VirtualListView, {
|
39189
|
+
data: items,
|
39190
|
+
loading: isLoading,
|
39191
|
+
listHeight: 0,
|
39192
|
+
containerProps: {
|
39193
|
+
sx: {
|
39194
|
+
height: "100%"
|
39195
|
+
}
|
39196
|
+
},
|
39197
|
+
renderItem: function renderItem(item, index, measure) {
|
39198
|
+
return React__default.createElement(AnnouncementItem, {
|
39199
|
+
role: role,
|
39200
|
+
key: index,
|
39201
|
+
data: item,
|
39202
|
+
renderLink: renderLink,
|
39203
|
+
onLoad: measure
|
39204
|
+
});
|
39205
|
+
},
|
39206
|
+
onLoadMore: onLoadMore
|
39207
|
+
});
|
39208
|
+
};
|
39209
|
+
|
39210
|
+
var DEFAULT_ANNOUNCEMENT_FILTER = {
|
39211
|
+
currentPage: 1,
|
39212
|
+
pageSize: 10,
|
39213
|
+
sortColumnDirection: exports.OrderType.DESC,
|
39214
|
+
sortColumnName: "CreatedAt"
|
39215
|
+
};
|
39216
|
+
var ANNOUNCEMENT_CHANNEL = "ANNOUNCEMENT_A{academy}_U{userId}_CHANNEL";
|
39217
|
+
|
39218
|
+
var ANNOUNCEMENT_URL = BASE_URL + "/api/announcements";
|
39219
|
+
var getAnnouncementListApi = function getAnnouncementListApi(query) {
|
39220
|
+
return api.get("" + ANNOUNCEMENT_URL, {
|
39221
|
+
params: query
|
39222
|
+
});
|
39223
|
+
};
|
39224
|
+
var getTotalNumberUnreadAnnouncementsApi = function getTotalNumberUnreadAnnouncementsApi() {
|
39225
|
+
return api.get(ANNOUNCEMENT_URL + "/unread");
|
39226
|
+
};
|
39227
|
+
var markAsReadAnnouncementsApi = function markAsReadAnnouncementsApi() {
|
39228
|
+
return api.post(ANNOUNCEMENT_URL + "/mark-as-read");
|
39229
|
+
};
|
39230
|
+
var markAsReadAnnouncementByIdApi = function markAsReadAnnouncementByIdApi(id) {
|
39231
|
+
return api.post(ANNOUNCEMENT_URL + "/" + id + "/mark-as-read");
|
39232
|
+
};
|
39233
|
+
|
39234
|
+
var AnnouncementContainer = function AnnouncementContainer(_ref) {
|
39235
|
+
var role = _ref.role,
|
39236
|
+
renderLink = _ref.renderLink,
|
39237
|
+
renderViewNoteLink = _ref.renderViewNoteLink;
|
39238
|
+
var _useTranslation = reactI18next.useTranslation(),
|
39239
|
+
t = _useTranslation.t;
|
39240
|
+
var dispatch = reactRedux.useDispatch();
|
39241
|
+
var user = reactRedux.useSelector(function (state) {
|
39242
|
+
var _state$common;
|
39243
|
+
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
|
39244
|
+
});
|
39245
|
+
var academyDomain = user === null || user === void 0 ? void 0 : user.academyDomain;
|
39246
|
+
var concurrentConnectionPusher = reactRedux.useSelector(function (state) {
|
39247
|
+
var _state$common2;
|
39248
|
+
return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.concurrentConnectionPusher;
|
39249
|
+
});
|
39250
|
+
var totalUnreadMessages = reactRedux.useSelector(function (state) {
|
39251
|
+
var _state$common3;
|
39252
|
+
return state === null || state === void 0 ? void 0 : (_state$common3 = state.common) === null || _state$common3 === void 0 ? void 0 : _state$common3.totalUnreadMessages;
|
39253
|
+
});
|
39254
|
+
var pusher = concurrentConnectionPusher === null || concurrentConnectionPusher === void 0 ? void 0 : concurrentConnectionPusher.pusher;
|
39255
|
+
var channel = React.useRef();
|
39256
|
+
var channelName = React.useRef();
|
39257
|
+
var _useState = React.useState(false),
|
39258
|
+
openPopover = _useState[0],
|
39259
|
+
setOpenPopover = _useState[1];
|
39260
|
+
var anchorEl = React.useRef(null);
|
39261
|
+
var handleOpenPopover = function handleOpenPopover() {
|
39262
|
+
setOpenPopover(true);
|
39263
|
+
};
|
39264
|
+
var handleClosePopover = function handleClosePopover() {
|
39265
|
+
setOpenPopover(false);
|
39266
|
+
};
|
39267
|
+
var _useVirtualList = useVirtualList({}, getAnnouncementListApi),
|
39268
|
+
filter = _useVirtualList.filter,
|
39269
|
+
items = _useVirtualList.items,
|
39270
|
+
isLoading = _useVirtualList.isLoading,
|
39271
|
+
handleLoadMore = _useVirtualList.handleLoadMore,
|
39272
|
+
handleItemAdded = _useVirtualList.handleItemAdded,
|
39273
|
+
setItems = _useVirtualList.setItems,
|
39274
|
+
handleChangeFilter = _useVirtualList.handleChangeFilter,
|
39275
|
+
getItems = _useVirtualList.getItems;
|
39276
|
+
var handleNewAnnouncement = function handleNewAnnouncement(data) {
|
39277
|
+
try {
|
39278
|
+
var announcement = JSON.parse(data);
|
39279
|
+
openPopover && handleItemAdded(announcement);
|
39280
|
+
} catch (error) {
|
39281
|
+
console.log(error);
|
39282
|
+
}
|
39283
|
+
dispatch(setTotalUnreadMessages(totalUnreadMessages + 1));
|
39284
|
+
};
|
39285
|
+
var handleDeletedAnnouncement = function handleDeletedAnnouncement(_data) {
|
39286
|
+
openPopover && getItems();
|
39287
|
+
handleGetTotalUnread();
|
39288
|
+
};
|
39289
|
+
var handleUpdatedAnnouncement = function handleUpdatedAnnouncement(data) {
|
39290
|
+
try {
|
39291
|
+
var announcement = JSON.parse(data);
|
39292
|
+
openPopover && setItems(function (state) {
|
39293
|
+
return state.map(function (i) {
|
39294
|
+
if (i.id !== announcement.id) return i;
|
39295
|
+
return _extends({}, i, {
|
39296
|
+
data: _extends({}, i.data, {
|
39297
|
+
data: announcement.data.data
|
39298
|
+
})
|
39299
|
+
});
|
39300
|
+
});
|
39301
|
+
});
|
39302
|
+
} catch (error) {
|
39303
|
+
console.log(error);
|
39304
|
+
}
|
39305
|
+
};
|
39306
|
+
var handleMarkAsRead = function handleMarkAsRead() {
|
39307
|
+
try {
|
39308
|
+
var _temp2 = function _temp2() {
|
39309
|
+
dispatch(setLoading(false));
|
39310
|
+
};
|
39311
|
+
dispatch(setLoading(true));
|
39312
|
+
var _temp = _catch(function () {
|
39313
|
+
return Promise.resolve(markAsReadAnnouncementsApi()).then(function () {
|
39314
|
+
setItems(function (state) {
|
39315
|
+
return state.map(function (i) {
|
39316
|
+
return _extends({}, i, {
|
39317
|
+
isRead: true
|
39318
|
+
});
|
39319
|
+
});
|
39320
|
+
});
|
39321
|
+
dispatch(setTotalUnreadMessages(0));
|
39322
|
+
});
|
39323
|
+
}, function (error) {
|
39324
|
+
reactToastify.toast.error(getErrorMessage(t, error));
|
39325
|
+
});
|
39326
|
+
return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
|
39327
|
+
} catch (e) {
|
39328
|
+
return Promise.reject(e);
|
39329
|
+
}
|
39330
|
+
};
|
39331
|
+
var handleMarkAsReadById = function handleMarkAsReadById(id, loading) {
|
39332
|
+
try {
|
39333
|
+
var _temp4 = function _temp4() {
|
39334
|
+
loading && dispatch(setLoading(false));
|
39335
|
+
};
|
39336
|
+
loading && dispatch(setLoading(true));
|
39337
|
+
var _temp3 = _catch(function () {
|
39338
|
+
return Promise.resolve(markAsReadAnnouncementByIdApi(id)).then(function () {
|
39339
|
+
setItems(function (state) {
|
39340
|
+
return state.map(function (i) {
|
39341
|
+
return _extends({}, i, {
|
39342
|
+
isRead: i.id === id ? true : i.isRead
|
39343
|
+
});
|
39344
|
+
});
|
39345
|
+
});
|
39346
|
+
dispatch(setTotalUnreadMessages(Math.max(0, totalUnreadMessages - 1)));
|
39347
|
+
});
|
39348
|
+
}, function (error) {
|
39349
|
+
reactToastify.toast.error(getErrorMessage(t, error));
|
39350
|
+
});
|
39351
|
+
return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
|
39352
|
+
} catch (e) {
|
39353
|
+
return Promise.reject(e);
|
39354
|
+
}
|
39355
|
+
};
|
39356
|
+
var handleCloseAndMarkRead = function handleCloseAndMarkRead(data) {
|
39357
|
+
handleClosePopover();
|
39358
|
+
if (!data.isRead) handleMarkAsReadById(data.id);
|
39359
|
+
};
|
39360
|
+
var renderNotiLink = function renderNotiLink(children, data) {
|
39361
|
+
return renderLink(children, data, function () {
|
39362
|
+
return handleCloseAndMarkRead(data);
|
39363
|
+
});
|
39364
|
+
};
|
39365
|
+
var cleanupPusher = function cleanupPusher() {
|
39366
|
+
channel.current && channel.current.unbind(AnnouncementEvent.ReceivedNewNote, handleNewAnnouncement);
|
39367
|
+
channel.current && channel.current.unbind(AnnouncementEvent.UpdatedNote, handleUpdatedAnnouncement);
|
39368
|
+
channel.current && channel.current.unbind(AnnouncementEvent.DeletedNote, handleDeletedAnnouncement);
|
39369
|
+
channelName.current && pusher && pusher.unsubscribe(channelName.current);
|
39370
|
+
};
|
39371
|
+
React.useEffect(function () {
|
39372
|
+
if (concurrentConnectionPusher !== null && concurrentConnectionPusher !== void 0 && concurrentConnectionPusher.academyDomain && academyDomain && user !== null && user !== void 0 && user.id) {
|
39373
|
+
var normalizedAcademyDomain = academyDomain.trim().toUpperCase();
|
39374
|
+
channelName.current = ANNOUNCEMENT_CHANNEL.replace("{academy}", normalizedAcademyDomain).replace("{userId}", user.id);
|
39375
|
+
channel.current = pusher.subscribe(channelName.current);
|
39376
|
+
channel.current.bind(AnnouncementEvent.ReceivedNewNote, handleNewAnnouncement);
|
39377
|
+
channel.current.bind(AnnouncementEvent.UpdatedNote, handleUpdatedAnnouncement);
|
39378
|
+
channel.current.bind(AnnouncementEvent.DeletedNote, handleDeletedAnnouncement);
|
39379
|
+
}
|
39380
|
+
return cleanupPusher;
|
39381
|
+
}, [academyDomain, user === null || user === void 0 ? void 0 : user.id, concurrentConnectionPusher === null || concurrentConnectionPusher === void 0 ? void 0 : concurrentConnectionPusher.academyDomain, totalUnreadMessages, openPopover, JSON.stringify(filter)]);
|
39382
|
+
var handleGetTotalUnread = function handleGetTotalUnread() {
|
39383
|
+
try {
|
39384
|
+
var _temp5 = _catch(function () {
|
39385
|
+
return Promise.resolve(getTotalNumberUnreadAnnouncementsApi()).then(function (res) {
|
39386
|
+
dispatch(setTotalUnreadMessages(res.data));
|
39387
|
+
});
|
39388
|
+
}, function (error) {
|
39389
|
+
console.log({
|
39390
|
+
error: error
|
39391
|
+
});
|
39392
|
+
});
|
39393
|
+
return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(function () {}) : void 0);
|
39394
|
+
} catch (e) {
|
39395
|
+
return Promise.reject(e);
|
39396
|
+
}
|
39397
|
+
};
|
39398
|
+
React.useEffect(function () {
|
39399
|
+
if (academyDomain && user !== null && user !== void 0 && user.id) handleGetTotalUnread();
|
39400
|
+
}, [academyDomain, user === null || user === void 0 ? void 0 : user.id]);
|
39401
|
+
React.useEffect(function () {
|
39402
|
+
handleChangeFilter(openPopover ? DEFAULT_ANNOUNCEMENT_FILTER : {});
|
39403
|
+
}, [openPopover]);
|
39404
|
+
return React__default.createElement(material.Box, null, React__default.createElement(material.IconButton, {
|
39405
|
+
ref: anchorEl,
|
39406
|
+
className: "ms-2",
|
39407
|
+
onClick: handleOpenPopover
|
39408
|
+
}, React__default.createElement(material.Badge, {
|
39409
|
+
badgeContent: totalUnreadMessages,
|
39410
|
+
max: 9,
|
39411
|
+
color: "error"
|
39412
|
+
}, React__default.createElement(fa.FaBell, {
|
39413
|
+
size: 20,
|
39414
|
+
color: colors.blue[500]
|
39415
|
+
}))), React__default.createElement(material.Popover, {
|
39416
|
+
open: openPopover,
|
39417
|
+
anchorEl: anchorEl.current,
|
39418
|
+
onClose: handleClosePopover,
|
39419
|
+
anchorOrigin: {
|
39420
|
+
vertical: "bottom",
|
39421
|
+
horizontal: "right"
|
39422
|
+
},
|
39423
|
+
slotProps: {
|
39424
|
+
paper: {
|
39425
|
+
sx: {
|
39426
|
+
width: 360
|
39427
|
+
}
|
39428
|
+
}
|
39429
|
+
}
|
39430
|
+
}, React__default.createElement(material.Stack, {
|
39431
|
+
height: "100%",
|
39432
|
+
direction: "column"
|
39433
|
+
}, React__default.createElement(material.Stack, {
|
39434
|
+
direction: "row",
|
39435
|
+
justifyContent: "space-between",
|
39436
|
+
gap: 2,
|
39437
|
+
sx: {
|
39438
|
+
py: 2,
|
39439
|
+
px: 2.5
|
39440
|
+
}
|
39441
|
+
}, React__default.createElement(material.Box, {
|
39442
|
+
sx: {
|
39443
|
+
flexGrow: 1
|
39444
|
+
}
|
39445
|
+
}, React__default.createElement(material.Typography, {
|
39446
|
+
variant: "subtitle1"
|
39447
|
+
}, t("notifications")), totalUnreadMessages > 0 && React__default.createElement(material.Typography, {
|
39448
|
+
variant: "body2",
|
39449
|
+
sx: {
|
39450
|
+
color: "text.secondary"
|
39451
|
+
}
|
39452
|
+
}, t("you_have_n_unread_messages", {
|
39453
|
+
n: totalUnreadMessages
|
39454
|
+
})), renderViewNoteLink && React__default.createElement(material.Box, null, renderViewNoteLink(React__default.createElement(material.Typography, {
|
39455
|
+
sx: {
|
39456
|
+
fontWeight: 600,
|
39457
|
+
color: grey[600],
|
39458
|
+
fontSize: "14px",
|
39459
|
+
"&:hover": {
|
39460
|
+
textDecoration: "underline",
|
39461
|
+
color: green[700]
|
39462
|
+
}
|
39463
|
+
}
|
39464
|
+
}, t("view_notes")), handleClosePopover))), totalUnreadMessages > 0 && React__default.createElement(material.Stack, {
|
39465
|
+
direction: "column"
|
39466
|
+
}, React__default.createElement(material.Tooltip, {
|
39467
|
+
title: t("mark_as_read")
|
39468
|
+
}, React__default.createElement(material.IconButton, {
|
39469
|
+
color: "primary",
|
39470
|
+
onClick: handleMarkAsRead
|
39471
|
+
}, React__default.createElement(bs.BsCheckAll, null))))), React__default.createElement(material.Divider, {
|
39472
|
+
component: "div"
|
39473
|
+
}), React__default.createElement(material.Stack, {
|
39474
|
+
direction: "column",
|
39475
|
+
sx: {
|
39476
|
+
height: {
|
39477
|
+
xs: 280,
|
39478
|
+
sm: 400
|
39479
|
+
},
|
39480
|
+
py: 2
|
39481
|
+
}
|
39482
|
+
}, React__default.createElement(AnnouncementList, {
|
39483
|
+
role: role,
|
39484
|
+
items: items,
|
39485
|
+
isLoading: isLoading,
|
39486
|
+
onLoadMore: handleLoadMore,
|
39487
|
+
renderLink: renderNotiLink
|
39488
|
+
})))));
|
39489
|
+
};
|
39490
|
+
|
37971
39491
|
var MenuItemCustom = material.styled(MenuItem)(function () {
|
37972
39492
|
return {
|
37973
39493
|
'&.Mui-selected': {
|
@@ -38694,17 +40214,19 @@ var Header = function Header(_ref) {
|
|
38694
40214
|
role = _ref.role,
|
38695
40215
|
history = _ref.history,
|
38696
40216
|
link = _ref.link,
|
38697
|
-
onSignOut = _ref.onSignOut
|
40217
|
+
onSignOut = _ref.onSignOut,
|
40218
|
+
renderNotificationLink = _ref.renderNotificationLink,
|
40219
|
+
renderViewNoteLink = _ref.renderViewNoteLink;
|
38698
40220
|
var Link = link;
|
38699
40221
|
var _useTranslation = reactI18next.useTranslation(),
|
38700
40222
|
t = _useTranslation.t;
|
38701
40223
|
var theme = material.useTheme();
|
38702
|
-
var param = window.location.pathname;
|
38703
40224
|
var language = reactRedux.useSelector(function (state) {
|
38704
40225
|
var _state$common;
|
38705
40226
|
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.language;
|
38706
40227
|
});
|
38707
|
-
var isTeacherSide =
|
40228
|
+
var isTeacherSide = role === exports.Role.Teacher;
|
40229
|
+
var isStudentSide = role === exports.Role.Student;
|
38708
40230
|
var isLargerThanXL = material.useMediaQuery(theme.breakpoints.up("xl"));
|
38709
40231
|
var academyDomain = reactRedux.useSelector(function (state) {
|
38710
40232
|
var _state$common2, _state$common2$user;
|
@@ -38715,6 +40237,7 @@ var Header = function Header(_ref) {
|
|
38715
40237
|
return state === null || state === void 0 ? void 0 : (_state$common3 = state.common) === null || _state$common3 === void 0 ? void 0 : (_state$common3$user = _state$common3.user) === null || _state$common3$user === void 0 ? void 0 : _state$common3$user.isLearningSpace;
|
38716
40238
|
});
|
38717
40239
|
var isAcademy = isLearningSpace || academyDomain;
|
40240
|
+
var showAnnouncement = !isStudentSide && isAcademy;
|
38718
40241
|
var logo = React.useMemo(function () {
|
38719
40242
|
if (isTeacherSide) {
|
38720
40243
|
return language === exports.Language.en ? React__default.createElement(teacherFullLogoEn, null) : React__default.createElement(teacherFullLogoKo, null);
|
@@ -38808,7 +40331,11 @@ var Header = function Header(_ref) {
|
|
38808
40331
|
}, React__default.createElement(singleLogo, null))), React__default.createElement(material.Stack, {
|
38809
40332
|
className: "me-2",
|
38810
40333
|
display: "none"
|
38811
|
-
}, React__default.createElement(TheLanguageDropdown, null))
|
40334
|
+
}, React__default.createElement(TheLanguageDropdown, null)), showAnnouncement && renderNotificationLink && React__default.createElement(AnnouncementContainer, {
|
40335
|
+
role: role,
|
40336
|
+
renderLink: renderNotificationLink,
|
40337
|
+
renderViewNoteLink: renderViewNoteLink
|
40338
|
+
})));
|
38812
40339
|
};
|
38813
40340
|
var HeaderLink = function HeaderLink(_ref3) {
|
38814
40341
|
var data = _ref3.data,
|
@@ -38822,7 +40349,7 @@ var HeaderLink = function HeaderLink(_ref3) {
|
|
38822
40349
|
return React__default.createElement(React.Fragment, null, render(data, isActive));
|
38823
40350
|
};
|
38824
40351
|
|
38825
|
-
var useLayoutContext = function useLayoutContext(role,
|
40352
|
+
var useLayoutContext = function useLayoutContext(role, showLoadingAcademy, domain) {
|
38826
40353
|
var _currentPusher$connec2;
|
38827
40354
|
if (showLoadingAcademy === void 0) {
|
38828
40355
|
showLoadingAcademy = true;
|
@@ -38836,13 +40363,9 @@ var useLayoutContext = function useLayoutContext(role, pusherRegisterUrls, showL
|
|
38836
40363
|
var _state$common;
|
38837
40364
|
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
|
38838
40365
|
});
|
38839
|
-
var isReadyRegisterPusher = reactRedux.useSelector(function (state) {
|
38840
|
-
var _state$common2;
|
38841
|
-
return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.isReadyRegisterPusher;
|
38842
|
-
});
|
38843
40366
|
var concurrentConnectionPusher = reactRedux.useSelector(function (state) {
|
38844
|
-
var _state$
|
38845
|
-
return state === null || state === void 0 ? void 0 : (_state$
|
40367
|
+
var _state$common2;
|
40368
|
+
return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.concurrentConnectionPusher;
|
38846
40369
|
});
|
38847
40370
|
var currentPusher = concurrentConnectionPusher === null || concurrentConnectionPusher === void 0 ? void 0 : concurrentConnectionPusher.pusher;
|
38848
40371
|
var roles = (user === null || user === void 0 ? void 0 : user.roles) || [];
|
@@ -38923,53 +40446,36 @@ var useLayoutContext = function useLayoutContext(role, pusherRegisterUrls, showL
|
|
38923
40446
|
}
|
38924
40447
|
};
|
38925
40448
|
var registerPusher = React.useCallback(function () {
|
38926
|
-
|
38927
|
-
if (
|
38928
|
-
|
38929
|
-
|
38930
|
-
|
38931
|
-
|
38932
|
-
currentPusher.disconnect();
|
38933
|
-
}
|
38934
|
-
var token = getAccessToken();
|
38935
|
-
var pusher = new Pusher$1(PUSHER_CONFIG.key, {
|
38936
|
-
cluster: PUSHER_CONFIG.cluster,
|
38937
|
-
authEndpoint: (academyDomain ? BASE_URL : SUPER_ADMIN_BASE_URL) + "/api/auth/pusher",
|
38938
|
-
auth: {
|
38939
|
-
params: {},
|
38940
|
-
headers: (_headers = {
|
38941
|
-
Authorization: "Bearer " + token
|
38942
|
-
}, _headers[AcademyHeaders] = academyDomain, _headers)
|
38943
|
-
}
|
38944
|
-
});
|
38945
|
-
dispatch(setConcurrentConnectionPusher({
|
38946
|
-
pusher: pusher,
|
38947
|
-
academyDomain: academyDomain,
|
38948
|
-
isRegistered: true
|
38949
|
-
}));
|
38950
|
-
} else if ((currentPusher === null || currentPusher === void 0 ? void 0 : (_currentPusher$connec = currentPusher.connection) === null || _currentPusher$connec === void 0 ? void 0 : _currentPusher$connec.state) === "disconnected") {
|
38951
|
-
currentPusher.connect();
|
38952
|
-
}
|
38953
|
-
if (!isReadyRegisterPusher && !!currentPusher) {
|
38954
|
-
currentPusher.connection.state !== "disconnected" && currentPusher.disconnect();
|
38955
|
-
dispatch(setConcurrentConnectionPusher({
|
38956
|
-
pusher: null,
|
38957
|
-
academyDomain: "",
|
38958
|
-
isRegistered: false
|
38959
|
-
}));
|
38960
|
-
}
|
38961
|
-
} else {
|
38962
|
-
if (!!currentPusher) {
|
38963
|
-
currentPusher.connection.state !== "disconnected" && currentPusher.disconnect();
|
38964
|
-
dispatch(setConcurrentConnectionPusher({
|
38965
|
-
pusher: null,
|
38966
|
-
academyDomain: "",
|
38967
|
-
isRegistered: false
|
38968
|
-
}));
|
40449
|
+
var _currentPusher$connec;
|
40450
|
+
if ((!academyDomain || !(user !== null && user !== void 0 && user.id)) && role !== exports.Role.Student) return;
|
40451
|
+
if (academyDomain !== (concurrentConnectionPusher === null || concurrentConnectionPusher === void 0 ? void 0 : concurrentConnectionPusher.academyDomain) || !academyDomain && !(concurrentConnectionPusher !== null && concurrentConnectionPusher !== void 0 && concurrentConnectionPusher.academyDomain) && !concurrentConnectionPusher.isRegistered) {
|
40452
|
+
var _headers;
|
40453
|
+
if (currentPusher) {
|
40454
|
+
currentPusher.disconnect();
|
38969
40455
|
}
|
38970
|
-
|
40456
|
+
var token = getAccessToken();
|
40457
|
+
var pusher = new Pusher$1(PUSHER_CONFIG.key, {
|
40458
|
+
cluster: PUSHER_CONFIG.cluster,
|
40459
|
+
authEndpoint: (academyDomain ? BASE_URL : SUPER_ADMIN_BASE_URL) + "/api/auth/pusher",
|
40460
|
+
auth: {
|
40461
|
+
params: {},
|
40462
|
+
headers: (_headers = {
|
40463
|
+
Authorization: "Bearer " + token
|
40464
|
+
}, _headers[AcademyHeaders] = academyDomain, _headers)
|
40465
|
+
}
|
40466
|
+
});
|
40467
|
+
dispatch(setConcurrentConnectionPusher({
|
40468
|
+
pusher: pusher,
|
40469
|
+
academyDomain: academyDomain,
|
40470
|
+
isRegistered: true
|
40471
|
+
}));
|
40472
|
+
} else if ((currentPusher === null || currentPusher === void 0 ? void 0 : (_currentPusher$connec = currentPusher.connection) === null || _currentPusher$connec === void 0 ? void 0 : _currentPusher$connec.state) === "disconnected") {
|
40473
|
+
currentPusher.connect();
|
38971
40474
|
}
|
38972
|
-
|
40475
|
+
return function () {
|
40476
|
+
currentPusher === null || currentPusher === void 0 ? void 0 : currentPusher.disconnect();
|
40477
|
+
};
|
40478
|
+
}, [user === null || user === void 0 ? void 0 : user.id, academyDomain, currentPusher === null || currentPusher === void 0 ? void 0 : (_currentPusher$connec2 = currentPusher.connection) === null || _currentPusher$connec2 === void 0 ? void 0 : _currentPusher$connec2.state, role]);
|
38973
40479
|
React.useEffect(function () {
|
38974
40480
|
!(user !== null && user !== void 0 && user.id) && loadInfo();
|
38975
40481
|
}, [user === null || user === void 0 ? void 0 : user.id]);
|
@@ -38995,14 +40501,12 @@ var useLayoutContext = function useLayoutContext(role, pusherRegisterUrls, showL
|
|
38995
40501
|
var LayoutContext = function LayoutContext(_ref) {
|
38996
40502
|
var children = _ref.children,
|
38997
40503
|
role = _ref.role,
|
38998
|
-
_ref$pusherRegisterUr = _ref.pusherRegisterUrls,
|
38999
|
-
pusherRegisterUrls = _ref$pusherRegisterUr === void 0 ? [] : _ref$pusherRegisterUr,
|
39000
40504
|
showLoadingAcademy = _ref.showLoadingAcademy;
|
39001
40505
|
var user = reactRedux.useSelector(function (state) {
|
39002
40506
|
var _state$common;
|
39003
40507
|
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
|
39004
40508
|
});
|
39005
|
-
useLayoutContext(role,
|
40509
|
+
useLayoutContext(role, showLoadingAcademy);
|
39006
40510
|
if (!(user !== null && user !== void 0 && user.email)) return React__default.createElement(LoadingComponent, {
|
39007
40511
|
isLoading: true
|
39008
40512
|
});else return React__default.createElement(React.Fragment, null, children);
|
@@ -39111,6 +40615,7 @@ exports.AcademyHeaders = AcademyHeaders;
|
|
39111
40615
|
exports.AcademyList = AcademyList;
|
39112
40616
|
exports.AcceptNoAcademy = AcceptNoAcademy;
|
39113
40617
|
exports.ActionButtons = ActionButtons;
|
40618
|
+
exports.AnnouncementContainer = AnnouncementContainer;
|
39114
40619
|
exports.AnswerCountSelector = AnswerCountSelector;
|
39115
40620
|
exports.ArticleCategorySelector = ArticleCategorySelector;
|
39116
40621
|
exports.ArticleDialog = ArticleDialog;
|
@@ -39168,6 +40673,8 @@ exports.MathTinyEditor = MathTinyEditor;
|
|
39168
40673
|
exports.NewNoteButton = NewNoteButton;
|
39169
40674
|
exports.NoAcademyHeaders = NoAcademyHeaders;
|
39170
40675
|
exports.NotFound = NotFound;
|
40676
|
+
exports.NoteDrawer = NoteDrawer;
|
40677
|
+
exports.NoteTabs = NoteTabs;
|
39171
40678
|
exports.NotesContainer = NotesContainer;
|
39172
40679
|
exports.NotificationDetail = NotificationDetail;
|
39173
40680
|
exports.NotificationList = NotificationList;
|
@@ -39248,7 +40755,7 @@ exports.setConcurrentConnectionPusher = setConcurrentConnectionPusher;
|
|
39248
40755
|
exports.setLanguage = setLanguage;
|
39249
40756
|
exports.setLoading = setLoading;
|
39250
40757
|
exports.setReFetchUserAcademies = setReFetchUserAcademies;
|
39251
|
-
exports.
|
40758
|
+
exports.setTotalUnreadMessages = setTotalUnreadMessages;
|
39252
40759
|
exports.setUser = setUser;
|
39253
40760
|
exports.store = store;
|
39254
40761
|
exports.timAgo = timAgo;
|