touchstudy-core 0.1.168 → 0.1.169
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 +1713 -226
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +1722 -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,22 @@ 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 = "교사에서 교사들에게";
|
1512
1535
|
var lang_ko = {
|
1513
1536
|
problem_solving: problem_solving,
|
1514
1537
|
my_story: my_story,
|
@@ -2490,6 +2513,12 @@ var lang_ko = {
|
|
2490
2513
|
reload_page: reload_page,
|
2491
2514
|
last_attendance_date: last_attendance_date,
|
2492
2515
|
less_than_a_day: less_than_a_day,
|
2516
|
+
less_than_a_min: less_than_a_min,
|
2517
|
+
just_now: just_now,
|
2518
|
+
n_mins_ago: n_mins_ago,
|
2519
|
+
n_hours_ago: n_hours_ago,
|
2520
|
+
one_min_ago: one_min_ago,
|
2521
|
+
one_hour_ago: one_hour_ago,
|
2493
2522
|
n_days_ago: n_days_ago,
|
2494
2523
|
n_months_ago: n_months_ago,
|
2495
2524
|
n_years_ago: n_years_ago,
|
@@ -2654,7 +2683,23 @@ var lang_ko = {
|
|
2654
2683
|
next_status: next_status,
|
2655
2684
|
arrival_time: arrival_time,
|
2656
2685
|
current_arrival_time: current_arrival_time,
|
2657
|
-
uppdate_attendance: uppdate_attendance
|
2686
|
+
uppdate_attendance: uppdate_attendance,
|
2687
|
+
you_have_n_unread_messages: you_have_n_unread_messages,
|
2688
|
+
receivers: receivers,
|
2689
|
+
total_receivers: total_receivers,
|
2690
|
+
sender: sender,
|
2691
|
+
manage_notes: manage_notes,
|
2692
|
+
notes: notes,
|
2693
|
+
new_note: new_note,
|
2694
|
+
mark_as_read: mark_as_read,
|
2695
|
+
view_notes: view_notes,
|
2696
|
+
admin_n: admin_n,
|
2697
|
+
teacher_n: teacher_n,
|
2698
|
+
sent_a_memo: sent_a_memo,
|
2699
|
+
admin_to_admin: admin_to_admin,
|
2700
|
+
teacher_to_admin: teacher_to_admin,
|
2701
|
+
admin_to_teachers: admin_to_teachers,
|
2702
|
+
teacher_to_teachers: teacher_to_teachers
|
2658
2703
|
};
|
2659
2704
|
|
2660
2705
|
var problem_solving$1 = "Problem Solving";
|
@@ -3653,6 +3698,12 @@ var please_reload_this_page_to_continue_using_this_tab_or_close_it$1 = "Please r
|
|
3653
3698
|
var reload_page$1 = "Reload page";
|
3654
3699
|
var last_attendance_date$1 = "Last attendance date";
|
3655
3700
|
var less_than_a_day$1 = "Less than a day";
|
3701
|
+
var less_than_a_min$1 = "Less than a minute";
|
3702
|
+
var just_now$1 = "Just now";
|
3703
|
+
var n_mins_ago$1 = "{{min}} minutes ago";
|
3704
|
+
var n_hours_ago$1 = "{{hour}} hours ago";
|
3705
|
+
var one_min_ago$1 = "one minute ago";
|
3706
|
+
var one_hour_ago$1 = "one hour ago";
|
3656
3707
|
var n_days_ago$1 = "{{day}} days ago";
|
3657
3708
|
var n_months_ago$1 = "{{month}} months ago";
|
3658
3709
|
var n_years_ago$1 = "{{year}} years ago";
|
@@ -3823,6 +3874,22 @@ var next_status$1 = "Next status";
|
|
3823
3874
|
var arrival_time$1 = "Arrival time";
|
3824
3875
|
var current_arrival_time$1 = "Current arrival time";
|
3825
3876
|
var uppdate_attendance$1 = "Update attendance";
|
3877
|
+
var you_have_n_unread_messages$1 = "You have {{ n }} unread message(s)";
|
3878
|
+
var receivers$1 = "Receivers";
|
3879
|
+
var total_receivers$1 = "Total receivers";
|
3880
|
+
var sender$1 = "Sender";
|
3881
|
+
var manage_notes$1 = "Manage notes";
|
3882
|
+
var notes$1 = "Notes";
|
3883
|
+
var new_note$1 = "New note";
|
3884
|
+
var mark_as_read$1 = "Mark as read";
|
3885
|
+
var view_notes$1 = "View notes";
|
3886
|
+
var admin_n$1 = "Admin {{admin}}";
|
3887
|
+
var teacher_n$1 = "Teacher {{teacher}}";
|
3888
|
+
var sent_a_memo$1 = "sent a memo";
|
3889
|
+
var admin_to_admin$1 = "Admin to admin";
|
3890
|
+
var teacher_to_admin$1 = "Teacher to admin";
|
3891
|
+
var admin_to_teachers$1 = "Admin to teachers";
|
3892
|
+
var teacher_to_teachers$1 = "Teacher to teachers";
|
3826
3893
|
var lang_en = {
|
3827
3894
|
problem_solving: problem_solving$1,
|
3828
3895
|
my_story: my_story$1,
|
@@ -4805,6 +4872,12 @@ var lang_en = {
|
|
4805
4872
|
reload_page: reload_page$1,
|
4806
4873
|
last_attendance_date: last_attendance_date$1,
|
4807
4874
|
less_than_a_day: less_than_a_day$1,
|
4875
|
+
less_than_a_min: less_than_a_min$1,
|
4876
|
+
just_now: just_now$1,
|
4877
|
+
n_mins_ago: n_mins_ago$1,
|
4878
|
+
n_hours_ago: n_hours_ago$1,
|
4879
|
+
one_min_ago: one_min_ago$1,
|
4880
|
+
one_hour_ago: one_hour_ago$1,
|
4808
4881
|
n_days_ago: n_days_ago$1,
|
4809
4882
|
n_months_ago: n_months_ago$1,
|
4810
4883
|
n_years_ago: n_years_ago$1,
|
@@ -4970,7 +5043,23 @@ var lang_en = {
|
|
4970
5043
|
next_status: next_status$1,
|
4971
5044
|
arrival_time: arrival_time$1,
|
4972
5045
|
current_arrival_time: current_arrival_time$1,
|
4973
|
-
uppdate_attendance: uppdate_attendance$1
|
5046
|
+
uppdate_attendance: uppdate_attendance$1,
|
5047
|
+
you_have_n_unread_messages: you_have_n_unread_messages$1,
|
5048
|
+
receivers: receivers$1,
|
5049
|
+
total_receivers: total_receivers$1,
|
5050
|
+
sender: sender$1,
|
5051
|
+
manage_notes: manage_notes$1,
|
5052
|
+
notes: notes$1,
|
5053
|
+
new_note: new_note$1,
|
5054
|
+
mark_as_read: mark_as_read$1,
|
5055
|
+
view_notes: view_notes$1,
|
5056
|
+
admin_n: admin_n$1,
|
5057
|
+
teacher_n: teacher_n$1,
|
5058
|
+
sent_a_memo: sent_a_memo$1,
|
5059
|
+
admin_to_admin: admin_to_admin$1,
|
5060
|
+
teacher_to_admin: teacher_to_admin$1,
|
5061
|
+
admin_to_teachers: admin_to_teachers$1,
|
5062
|
+
teacher_to_teachers: teacher_to_teachers$1
|
4974
5063
|
};
|
4975
5064
|
|
4976
5065
|
i18n__default.use(reactI18next.initReactI18next).init({
|
@@ -6134,8 +6223,12 @@ var NoteSortColumn;
|
|
6134
6223
|
NoteSortColumn["Question"] = "Question";
|
6135
6224
|
})(NoteSortColumn || (NoteSortColumn = {}));
|
6136
6225
|
(function (NoteType) {
|
6137
|
-
NoteType[NoteType["
|
6138
|
-
NoteType[NoteType["
|
6226
|
+
NoteType[NoteType["ToAcademy"] = 0] = "ToAcademy";
|
6227
|
+
NoteType[NoteType["ToStudent"] = 1] = "ToStudent";
|
6228
|
+
NoteType[NoteType["AdminToAllAdmin"] = 2] = "AdminToAllAdmin";
|
6229
|
+
NoteType[NoteType["AdminToAllTeacher"] = 3] = "AdminToAllTeacher";
|
6230
|
+
NoteType[NoteType["TeacherToAllAdmin"] = 4] = "TeacherToAllAdmin";
|
6231
|
+
NoteType[NoteType["TeacherToTeachers"] = 5] = "TeacherToTeachers";
|
6139
6232
|
})(exports.NoteType || (exports.NoteType = {}));
|
6140
6233
|
|
6141
6234
|
var SchoolType;
|
@@ -6305,16 +6398,35 @@ var pushTo = function pushTo(history, data, isReplace) {
|
|
6305
6398
|
});
|
6306
6399
|
};
|
6307
6400
|
|
6308
|
-
var timAgo = function timAgo(date, t) {
|
6309
|
-
if (date === DATE_MIN_VALUE || date === DATE_TIME_MIN_VALUE) return '';
|
6401
|
+
var timAgo = function timAgo(date, t, day) {
|
6402
|
+
if (!date || date === DATE_MIN_VALUE || date === DATE_TIME_MIN_VALUE) return '';
|
6310
6403
|
var time = moment.utc(date).local();
|
6404
|
+
var years = moment().diff(time, 'years');
|
6405
|
+
if (years >= 1) return years >= 2 ? t('n_years_ago', {
|
6406
|
+
year: years
|
6407
|
+
}) : t("one_year_ago");
|
6408
|
+
var months = moment().diff(time, 'months');
|
6409
|
+
if (months >= 1) return months >= 2 ? t('n_months_ago', {
|
6410
|
+
month: months
|
6411
|
+
}) : t("one_month_ago");
|
6311
6412
|
var days = moment().diff(time, 'days');
|
6312
|
-
if (days
|
6313
|
-
|
6314
|
-
|
6315
|
-
|
6316
|
-
|
6317
|
-
|
6413
|
+
if (days < 1 && !day) return t('less_than_a_day');
|
6414
|
+
if (days < 1 && day) {
|
6415
|
+
var hours = moment().diff(time, 'hours');
|
6416
|
+
if (hours >= 1) return hours >= 2 ? t('n_hours_ago', {
|
6417
|
+
hour: hours
|
6418
|
+
}) : t("one_hour_ago");
|
6419
|
+
var mins = moment().diff(time, 'minutes');
|
6420
|
+
if (mins >= 1) return mins >= 2 ? t('n_mins_ago', {
|
6421
|
+
min: mins
|
6422
|
+
}) : t("one_min_ago");
|
6423
|
+
var secs = moment().diff(time, 'seconds');
|
6424
|
+
if (secs > 10) return t('less_than_a_min');
|
6425
|
+
return t("just_now");
|
6426
|
+
}
|
6427
|
+
return days >= 2 ? t('n_days_ago', {
|
6428
|
+
day: days
|
6429
|
+
}) : t("one_day_ago");
|
6318
6430
|
};
|
6319
6431
|
|
6320
6432
|
var toISOString = (function (time) {
|
@@ -6904,7 +7016,10 @@ var useLanguage = function useLanguage(history, init) {
|
|
6904
7016
|
};
|
6905
7017
|
};
|
6906
7018
|
|
6907
|
-
var useList = function useList(fetchData, defaultQuery) {
|
7019
|
+
var useList = function useList(fetchData, defaultQuery, showLoading) {
|
7020
|
+
if (showLoading === void 0) {
|
7021
|
+
showLoading = true;
|
7022
|
+
}
|
6908
7023
|
var dispatch = reactRedux.useDispatch();
|
6909
7024
|
var _useState = React.useState(defaultQuery),
|
6910
7025
|
filter = _useState[0],
|
@@ -6918,6 +7033,9 @@ var useList = function useList(fetchData, defaultQuery) {
|
|
6918
7033
|
var _useState4 = React.useState(),
|
6919
7034
|
selectedItem = _useState4[0],
|
6920
7035
|
setSelectedItem = _useState4[1];
|
7036
|
+
var _useState5 = React.useState(false),
|
7037
|
+
isLoading = _useState5[0],
|
7038
|
+
setIsLoading = _useState5[1];
|
6921
7039
|
var textSearchRef = React.useRef(null);
|
6922
7040
|
var isFirstLoadRef = React.useRef(true);
|
6923
7041
|
var _useTranslation = reactI18next.useTranslation(),
|
@@ -6931,11 +7049,13 @@ var useList = function useList(fetchData, defaultQuery) {
|
|
6931
7049
|
}
|
6932
7050
|
try {
|
6933
7051
|
var _temp2 = function _temp2() {
|
6934
|
-
isLoading && dispatch(setLoading(false));
|
7052
|
+
isLoading && showLoading && dispatch(setLoading(false));
|
7053
|
+
setIsLoading(false);
|
6935
7054
|
};
|
6936
7055
|
if (!fetchData) return Promise.resolve();
|
6937
7056
|
if (isFirstLoadRef.current) isFirstLoadRef.current = false;
|
6938
|
-
isLoading && dispatch(setLoading(true));
|
7057
|
+
isLoading && showLoading && dispatch(setLoading(true));
|
7058
|
+
setIsLoading(true);
|
6939
7059
|
var _temp = _catch(function () {
|
6940
7060
|
return Promise.resolve(fetchData(filter)).then(function (res) {
|
6941
7061
|
var _res$data$items = res.data.items,
|
@@ -6960,10 +7080,6 @@ var useList = function useList(fetchData, defaultQuery) {
|
|
6960
7080
|
};
|
6961
7081
|
var handleSort = function handleSort(sortColumnName) {
|
6962
7082
|
var sortColumnDirection = exports.OrderType.ASC;
|
6963
|
-
console.log({
|
6964
|
-
sortColumnName: typeof sortColumnName,
|
6965
|
-
filter: typeof filter.sortColumnName
|
6966
|
-
});
|
6967
7083
|
if (filter.sortColumnName == sortColumnName && filter.sortColumnDirection === exports.OrderType.ASC) sortColumnDirection = exports.OrderType.DESC;
|
6968
7084
|
setFilter(_extends({}, filter, {
|
6969
7085
|
sortColumnName: sortColumnName,
|
@@ -6996,6 +7112,7 @@ var useList = function useList(fetchData, defaultQuery) {
|
|
6996
7112
|
getData(isFirstLoadRef.current);
|
6997
7113
|
}, [JSON.stringify(filter)]);
|
6998
7114
|
return {
|
7115
|
+
isLoading: isLoading,
|
6999
7116
|
filter: filter,
|
7000
7117
|
textSearchRef: textSearchRef,
|
7001
7118
|
paging: paging,
|
@@ -7098,36 +7215,26 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl,
|
|
7098
7215
|
}
|
7099
7216
|
var isAcademy = !!academyDomain || isLearningSpace;
|
7100
7217
|
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
|
-
});
|
7218
|
+
try {
|
7219
|
+
return Promise.resolve(isAcademy ? apiLoginGoogle(data, isLearningSpace) : apiLoginGoogleSuperAdmin(data)).then(function (loginResponse) {
|
7220
|
+
var result = loginResponse.data;
|
7221
|
+
var _temp = function () {
|
7222
|
+
if (loginResponse.status === 204 && academyDomain) {
|
7223
|
+
localStorage.removeItem(ACADEMY_DOMAIN);
|
7224
|
+
localStorage.removeItem(LEARNING_SPACE);
|
7225
|
+
return Promise.resolve(apiLoginGoogleSuperAdmin(data)).then(function (_apiLoginGoogleSuperA) {
|
7226
|
+
loginResponse = _apiLoginGoogleSuperA;
|
7227
|
+
result = loginResponse.data;
|
7228
|
+
});
|
7229
|
+
}
|
7230
|
+
}();
|
7231
|
+
return _temp && _temp.then ? _temp.then(function () {
|
7232
|
+
return result;
|
7233
|
+
}) : result;
|
7234
|
+
});
|
7235
|
+
} catch (e) {
|
7236
|
+
return Promise.reject(e);
|
7237
|
+
}
|
7131
7238
|
}, isStudent, isLogout)).then(function () {});
|
7132
7239
|
} catch (e) {
|
7133
7240
|
return Promise.reject(e);
|
@@ -7140,21 +7247,14 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl,
|
|
7140
7247
|
try {
|
7141
7248
|
var isStudent = data.role === exports.Role.Student;
|
7142
7249
|
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
|
-
});
|
7250
|
+
try {
|
7251
|
+
return Promise.resolve(!isLearningSpace && !domain ? apiLoginSuperAdminWithAccessToken(data) : apiLoginWithAccessToken(data, isLearningSpace, domain)).then(function (loginResponse) {
|
7252
|
+
var result = loginResponse.data;
|
7253
|
+
return result;
|
7254
|
+
});
|
7255
|
+
} catch (e) {
|
7256
|
+
return Promise.reject(e);
|
7257
|
+
}
|
7158
7258
|
}, isStudent, isLogout, superAdminRedirectPath)).then(function () {});
|
7159
7259
|
} catch (e) {
|
7160
7260
|
return Promise.reject(e);
|
@@ -7165,13 +7265,13 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl,
|
|
7165
7265
|
isLogout = true;
|
7166
7266
|
}
|
7167
7267
|
try {
|
7168
|
-
var
|
7268
|
+
var _temp3 = function _temp3(_result) {
|
7169
7269
|
if (_exit) return _result;
|
7170
7270
|
dispatch(setLoading(false));
|
7171
7271
|
};
|
7172
7272
|
var _exit = false;
|
7173
7273
|
dispatch(setLoading(true));
|
7174
|
-
var
|
7274
|
+
var _temp2 = _catch(function () {
|
7175
7275
|
return Promise.resolve(apiLogin()).then(function (loginResponse) {
|
7176
7276
|
var isFirstLogin = loginResponse.isFirstLogin,
|
7177
7277
|
token = loginResponse.token,
|
@@ -7195,7 +7295,7 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl,
|
|
7195
7295
|
alert(getErrorMessage(t, error));
|
7196
7296
|
isLogout && handleSignOut();
|
7197
7297
|
});
|
7198
|
-
return Promise.resolve(
|
7298
|
+
return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2));
|
7199
7299
|
} catch (e) {
|
7200
7300
|
return Promise.reject(e);
|
7201
7301
|
}
|
@@ -8002,7 +8102,8 @@ var getStudentsApi = function getStudentsApi(textSearch) {
|
|
8002
8102
|
return api.get("" + STUDENT_URL, {
|
8003
8103
|
params: {
|
8004
8104
|
textSearch: textSearch,
|
8005
|
-
roles: [exports.Role.Admin]
|
8105
|
+
roles: [exports.Role.Admin],
|
8106
|
+
pageSize: 100
|
8006
8107
|
}
|
8007
8108
|
});
|
8008
8109
|
};
|
@@ -8013,7 +8114,10 @@ var StudentSelector = function StudentSelector(_ref) {
|
|
8013
8114
|
externalStudentIds = _ref.externalStudentIds,
|
8014
8115
|
_ref$disabled = _ref.disabled,
|
8015
8116
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
8016
|
-
title = _ref.title
|
8117
|
+
title = _ref.title,
|
8118
|
+
_ref$isMulti = _ref.isMulti,
|
8119
|
+
isMulti = _ref$isMulti === void 0 ? true : _ref$isMulti,
|
8120
|
+
minSearchLength = _ref.minSearchLength;
|
8017
8121
|
var _useState = React.useState([]),
|
8018
8122
|
students = _useState[0],
|
8019
8123
|
setStudents = _useState[1];
|
@@ -8048,7 +8152,7 @@ var StudentSelector = function StudentSelector(_ref) {
|
|
8048
8152
|
}, [searchString]);
|
8049
8153
|
React.useEffect(function () {
|
8050
8154
|
timeout && timeout.current && clearTimeout(timeout.current);
|
8051
|
-
if (!searchString || searchString.trim().length <
|
8155
|
+
if (minSearchLength && (!searchString || searchString.trim().length < minSearchLength)) {
|
8052
8156
|
setStudents([]);
|
8053
8157
|
} else {
|
8054
8158
|
timeout.current = setTimeout(loadData, 300);
|
@@ -8074,8 +8178,8 @@ var StudentSelector = function StudentSelector(_ref) {
|
|
8074
8178
|
},
|
8075
8179
|
isDisabled: disabled,
|
8076
8180
|
isLoading: isLoading,
|
8077
|
-
placeholder: t('placeholder_student_selector'),
|
8078
|
-
isMulti:
|
8181
|
+
placeholder: t(minSearchLength ? 'placeholder_student_selector' : 'select_placeholder'),
|
8182
|
+
isMulti: isMulti,
|
8079
8183
|
value: value,
|
8080
8184
|
onChange: onChange
|
8081
8185
|
}));
|
@@ -14162,7 +14266,7 @@ var DrawerHeader = function DrawerHeader(_ref) {
|
|
14162
14266
|
fontSize: "13px",
|
14163
14267
|
fontWeight: 500
|
14164
14268
|
}
|
14165
|
-
}, student.schoolName), React__default.createElement(material.Typography, {
|
14269
|
+
}, student.schoolName), !!student.grade && React__default.createElement(material.Typography, {
|
14166
14270
|
sx: {
|
14167
14271
|
color: grey[500],
|
14168
14272
|
fontSize: "13px",
|
@@ -15470,6 +15574,9 @@ var getNotesApi = function getNotesApi(query) {
|
|
15470
15574
|
params: query
|
15471
15575
|
});
|
15472
15576
|
};
|
15577
|
+
var getNoteByIdApi = function getNoteByIdApi(id) {
|
15578
|
+
return api.get(NOTES_URL + "/" + id);
|
15579
|
+
};
|
15473
15580
|
var createNoteApi = function createNoteApi(note) {
|
15474
15581
|
return api.post("" + NOTES_URL, note);
|
15475
15582
|
};
|
@@ -15478,6 +15585,9 @@ var updateNoteApi = function updateNoteApi(id, content) {
|
|
15478
15585
|
content: content
|
15479
15586
|
});
|
15480
15587
|
};
|
15588
|
+
var updateNoteDataApi = function updateNoteDataApi(id, data) {
|
15589
|
+
return api.put(NOTES_URL + "/" + id, data);
|
15590
|
+
};
|
15481
15591
|
var deleteNoteApi = function deleteNoteApi(id) {
|
15482
15592
|
return api["delete"](NOTES_URL + "/" + id);
|
15483
15593
|
};
|
@@ -15752,6 +15862,121 @@ var NotesContainer = function NotesContainer(_ref) {
|
|
15752
15862
|
});
|
15753
15863
|
};
|
15754
15864
|
|
15865
|
+
var getNoteType = function getNoteType(t, type) {
|
15866
|
+
switch (type) {
|
15867
|
+
case exports.NoteType.ToAcademy:
|
15868
|
+
return t("academy");
|
15869
|
+
case exports.NoteType.ToStudent:
|
15870
|
+
return t("student_parents");
|
15871
|
+
case exports.NoteType.AdminToAllAdmin:
|
15872
|
+
return t("admin_to_admin");
|
15873
|
+
case exports.NoteType.AdminToAllTeacher:
|
15874
|
+
return t("admin_to_teachers");
|
15875
|
+
case exports.NoteType.TeacherToAllAdmin:
|
15876
|
+
return t("teacher_to_admin");
|
15877
|
+
case exports.NoteType.TeacherToTeachers:
|
15878
|
+
return t("teacher_to_teachers");
|
15879
|
+
default:
|
15880
|
+
return "";
|
15881
|
+
}
|
15882
|
+
};
|
15883
|
+
|
15884
|
+
var NoteItemList = function NoteItemList(_ref) {
|
15885
|
+
var _data$reciever, _data$reciever2, _data$recievers;
|
15886
|
+
var data = _ref.data,
|
15887
|
+
index = _ref.index,
|
15888
|
+
role = _ref.role,
|
15889
|
+
calcOrderNumber = _ref.calcOrderNumber,
|
15890
|
+
onDelete = _ref.onDelete,
|
15891
|
+
onUpdate = _ref.onUpdate,
|
15892
|
+
onView = _ref.onView;
|
15893
|
+
var isAdminUser = reactRedux.useSelector(function (state) {
|
15894
|
+
var _state$common, _state$common$user, _state$common$user$ro;
|
15895
|
+
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);
|
15896
|
+
});
|
15897
|
+
var userId = reactRedux.useSelector(function (state) {
|
15898
|
+
var _state$common2, _state$common2$user;
|
15899
|
+
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;
|
15900
|
+
});
|
15901
|
+
var _useTranslation = reactI18next.useTranslation(),
|
15902
|
+
t = _useTranslation.t;
|
15903
|
+
var isAdmin = role === exports.Role.Admin;
|
15904
|
+
var order = calcOrderNumber(index);
|
15905
|
+
var createdAt = utcToLocalTime(data.createdAt, t("date_time_format"));
|
15906
|
+
var handleDelete = function handleDelete() {
|
15907
|
+
onDelete(data);
|
15908
|
+
};
|
15909
|
+
var handleUpdate = function handleUpdate() {
|
15910
|
+
onUpdate(data);
|
15911
|
+
};
|
15912
|
+
var handleView = function handleView() {
|
15913
|
+
onView(data);
|
15914
|
+
};
|
15915
|
+
var disabled = !data.isOwned && (!isAdminUser || data.type == undefined || data.type == exports.NoteType.TeacherToAllAdmin || data.type == exports.NoteType.TeacherToTeachers);
|
15916
|
+
React.useEffect(function () {
|
15917
|
+
if (window.MathJax) {
|
15918
|
+
var _window$MathJax;
|
15919
|
+
(_window$MathJax = window.MathJax) === null || _window$MathJax === void 0 ? void 0 : _window$MathJax.typeset();
|
15920
|
+
}
|
15921
|
+
}, [data.content]);
|
15922
|
+
var noteType = data.type === undefined ? "" : getNoteType(t, data.type);
|
15923
|
+
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, {
|
15924
|
+
color: green[700],
|
15925
|
+
fontWeight: 600
|
15926
|
+
}, t("admin")) : React__default.createElement(React.Fragment, null, React__default.createElement(material.Typography, {
|
15927
|
+
color: green[700],
|
15928
|
+
fontWeight: 600
|
15929
|
+
}, data.sender.fullName, data.sender.id === userId && React__default.createElement(material.Typography, {
|
15930
|
+
display: "inline-block",
|
15931
|
+
color: colors.grey[600],
|
15932
|
+
fontWeight: 600
|
15933
|
+
}, "(", " " + 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, {
|
15934
|
+
color: colors.blue[700],
|
15935
|
+
fontWeight: 600
|
15936
|
+
}, (_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, {
|
15937
|
+
direction: "column"
|
15938
|
+
}, (_data$recievers = data.recievers) === null || _data$recievers === void 0 ? void 0 : _data$recievers.slice(0, 2).map(function (i) {
|
15939
|
+
return React__default.createElement(material.Typography, null, i.fullName, " - ", i.email);
|
15940
|
+
}), 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, {
|
15941
|
+
sx: {
|
15942
|
+
display: "-webkit-box",
|
15943
|
+
lineClamp: 3,
|
15944
|
+
WebkitLineClamp: 3,
|
15945
|
+
WebkitBoxOrient: "vertical",
|
15946
|
+
boxOrient: "vertical",
|
15947
|
+
overflow: "hidden"
|
15948
|
+
},
|
15949
|
+
dangerouslySetInnerHTML: {
|
15950
|
+
__html: data.content
|
15951
|
+
}
|
15952
|
+
})), React__default.createElement(TableCell, {
|
15953
|
+
className: "text-nowrap"
|
15954
|
+
}, noteType), React__default.createElement(TableCell, null, createdAt), React__default.createElement(TableCell, null, React__default.createElement("div", {
|
15955
|
+
className: "d-flex"
|
15956
|
+
}, React__default.createElement(material.Box, null, React__default.createElement(material.IconButton, {
|
15957
|
+
color: "default",
|
15958
|
+
className: "bg-primary text-white me-1",
|
15959
|
+
onClick: handleView
|
15960
|
+
}, React__default.createElement(fa.FaEye, {
|
15961
|
+
size: 12
|
15962
|
+
}))), React__default.createElement(material.Box, null, React__default.createElement(material.IconButton, {
|
15963
|
+
color: "default",
|
15964
|
+
className: styles$5["action-btn"] + " " + (disabled ? "bg-secondary" : "bg-warning") + " text-white me-2",
|
15965
|
+
onClick: handleUpdate,
|
15966
|
+
disabled: disabled
|
15967
|
+
}, React__default.createElement(hi.HiOutlinePencilAlt, {
|
15968
|
+
className: styles$5["action-btn--pencil"],
|
15969
|
+
size: 12
|
15970
|
+
}))), React__default.createElement(material.Box, null, React__default.createElement(material.IconButton, {
|
15971
|
+
onClick: handleDelete,
|
15972
|
+
color: "default",
|
15973
|
+
className: styles$5["action-btn"] + " " + (disabled ? "bg-secondary" : "bg-danger") + " text-white",
|
15974
|
+
disabled: disabled
|
15975
|
+
}, React__default.createElement(fa6.FaTrashCan, {
|
15976
|
+
size: 12
|
15977
|
+
}))))));
|
15978
|
+
};
|
15979
|
+
|
15755
15980
|
var NoteContent = function NoteContent(_ref) {
|
15756
15981
|
var content = _ref.content;
|
15757
15982
|
React.useEffect(function () {
|
@@ -15773,7 +15998,7 @@ var NoteContent = function NoteContent(_ref) {
|
|
15773
15998
|
};
|
15774
15999
|
|
15775
16000
|
var NoteDrawer = function NoteDrawer(props) {
|
15776
|
-
var _BRIEF_GRADE_OPTIONS$,
|
16001
|
+
var _BRIEF_GRADE_OPTIONS$, _note$content;
|
15777
16002
|
var anchor = props.anchor,
|
15778
16003
|
open = props.open,
|
15779
16004
|
student = props.student,
|
@@ -15781,7 +16006,8 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15781
16006
|
data = props.data,
|
15782
16007
|
width = props.width,
|
15783
16008
|
_props$showStudentInf = props.showStudentInfo,
|
15784
|
-
showStudentInfo = _props$showStudentInf === void 0 ? true : _props$showStudentInf
|
16009
|
+
showStudentInfo = _props$showStudentInf === void 0 ? true : _props$showStudentInf,
|
16010
|
+
id = props.id;
|
15785
16011
|
var _useTranslation = reactI18next.useTranslation(),
|
15786
16012
|
t = _useTranslation.t;
|
15787
16013
|
var academy = reactRedux.useSelector(function (state) {
|
@@ -15792,6 +16018,46 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15792
16018
|
var _state$common2;
|
15793
16019
|
return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.language;
|
15794
16020
|
});
|
16021
|
+
var _useState = React.useState(false),
|
16022
|
+
loading = _useState[0],
|
16023
|
+
setLoading = _useState[1];
|
16024
|
+
var _useState2 = React.useState(),
|
16025
|
+
noteData = _useState2[0],
|
16026
|
+
setNoteData = _useState2[1];
|
16027
|
+
React.useEffect(function () {
|
16028
|
+
var getNoteById = function getNoteById() {
|
16029
|
+
try {
|
16030
|
+
var _temp2 = function _temp2() {
|
16031
|
+
setLoading(false);
|
16032
|
+
};
|
16033
|
+
if (!id) return Promise.resolve();
|
16034
|
+
setLoading(true);
|
16035
|
+
var _temp = _catch(function () {
|
16036
|
+
return Promise.resolve(getNoteByIdApi(+id)).then(function (res) {
|
16037
|
+
setNoteData(res.data);
|
16038
|
+
});
|
16039
|
+
}, function (error) {
|
16040
|
+
reactToastify.toast.error(getErrorMessage(t, error));
|
16041
|
+
});
|
16042
|
+
return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
|
16043
|
+
} catch (e) {
|
16044
|
+
return Promise.reject(e);
|
16045
|
+
}
|
16046
|
+
};
|
16047
|
+
getNoteById();
|
16048
|
+
}, [id]);
|
16049
|
+
var note = data != null ? data : noteData;
|
16050
|
+
var user = React.useMemo(function () {
|
16051
|
+
if (student) return student;
|
16052
|
+
if (!note) return null;
|
16053
|
+
switch (note.type) {
|
16054
|
+
case exports.NoteType.ToAcademy:
|
16055
|
+
case exports.NoteType.ToStudent:
|
16056
|
+
return note.reciever;
|
16057
|
+
default:
|
16058
|
+
return note.sender;
|
16059
|
+
}
|
16060
|
+
}, [JSON.stringify(note), JSON.stringify(student)]);
|
15795
16061
|
return React__default.createElement(material.Drawer, {
|
15796
16062
|
anchor: anchor,
|
15797
16063
|
open: open,
|
@@ -15818,11 +16084,11 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15818
16084
|
onClick: onClose
|
15819
16085
|
}, React__default.createElement(io5.IoClose, {
|
15820
16086
|
size: 32
|
15821
|
-
}))), showStudentInfo && React__default.createElement(material.Box, {
|
16087
|
+
}))), 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
16088
|
sx: {
|
15823
16089
|
padding: "16px 40px"
|
15824
16090
|
}
|
15825
|
-
}, !
|
16091
|
+
}, !user || loading ? React__default.createElement(material.Stack, {
|
15826
16092
|
direction: "row",
|
15827
16093
|
gap: 3
|
15828
16094
|
}, React__default.createElement(material.Skeleton, {
|
@@ -15857,7 +16123,7 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15857
16123
|
color: green[500],
|
15858
16124
|
lineHeight: "22px"
|
15859
16125
|
}
|
15860
|
-
},
|
16126
|
+
}, user.fullName), React__default.createElement(material.Stack, {
|
15861
16127
|
direction: "row",
|
15862
16128
|
alignItems: "center",
|
15863
16129
|
gap: 1
|
@@ -15867,17 +16133,29 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15867
16133
|
fontSize: "13px",
|
15868
16134
|
fontWeight: 500
|
15869
16135
|
}
|
15870
|
-
},
|
16136
|
+
}, user.schoolName), !!user.grade && React__default.createElement(material.Typography, {
|
15871
16137
|
sx: {
|
15872
16138
|
color: grey[500],
|
15873
16139
|
fontSize: "13px",
|
15874
16140
|
fontWeight: 500
|
15875
16141
|
}
|
15876
16142
|
}, t(function (label) {
|
15877
|
-
return label ? t(label) : formatGrade(
|
16143
|
+
return label ? t(label) : formatGrade(user.grade, t, language);
|
15878
16144
|
}((_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, {
|
16145
|
+
return o.value === Number(user.grade);
|
16146
|
+
})) === null || _BRIEF_GRADE_OPTIONS$ === void 0 ? void 0 : _BRIEF_GRADE_OPTIONS$.label))))))), !note && !loading && React__default.createElement(material.Stack, {
|
16147
|
+
padding: "40px 24px 0",
|
16148
|
+
gap: "16px"
|
16149
|
+
}, React__default.createElement(material.Typography, {
|
16150
|
+
className: "text-muted"
|
16151
|
+
}, t("no_data"))), loading && React__default.createElement(material.Stack, {
|
16152
|
+
padding: "40px 24px 0",
|
16153
|
+
gap: "16px",
|
16154
|
+
justifyContent: "center"
|
16155
|
+
}, React__default.createElement(material.CircularProgress, {
|
16156
|
+
size: 40,
|
16157
|
+
color: "primary"
|
16158
|
+
})), note && !loading && React__default.createElement(material.Stack, {
|
15881
16159
|
padding: "40px 24px 0",
|
15882
16160
|
gap: "16px"
|
15883
16161
|
}, React__default.createElement(material.Stack, {
|
@@ -15890,7 +16168,7 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15890
16168
|
fontWeight: "700",
|
15891
16169
|
color: "#414E62"
|
15892
16170
|
}
|
15893
|
-
},
|
16171
|
+
}, note === null || note === void 0 ? void 0 : note.fullName)), React__default.createElement(material.Stack, {
|
15894
16172
|
display: "flex",
|
15895
16173
|
justifyContent: "end"
|
15896
16174
|
}, React__default.createElement(material.Typography, {
|
@@ -15900,7 +16178,7 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15900
16178
|
color: "#97A1AF",
|
15901
16179
|
textAlign: "end"
|
15902
16180
|
}
|
15903
|
-
}, utcToLocalTime(
|
16181
|
+
}, utcToLocalTime(note === null || note === void 0 ? void 0 : note.createdAt, t("date_format"))), React__default.createElement(material.Typography, {
|
15904
16182
|
sx: {
|
15905
16183
|
fontSize: "12px",
|
15906
16184
|
fontWeight: "500",
|
@@ -15908,11 +16186,808 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15908
16186
|
textAlign: "end"
|
15909
16187
|
}
|
15910
16188
|
}, academy === null || academy === void 0 ? void 0 : academy.name))), React__default.createElement(NoteContent, {
|
15911
|
-
content: (
|
16189
|
+
content: (_note$content = note === null || note === void 0 ? void 0 : note.content) != null ? _note$content : ""
|
16190
|
+
})));
|
16191
|
+
};
|
16192
|
+
|
16193
|
+
var TEACHER_URL = BASE_URL + "/api/teacher";
|
16194
|
+
var getTeacherListApi = function getTeacherListApi(query) {
|
16195
|
+
return api.get("" + TEACHER_URL, {
|
16196
|
+
params: query
|
16197
|
+
});
|
16198
|
+
};
|
16199
|
+
|
16200
|
+
var TeacherSelector$1 = function TeacherSelector(_ref) {
|
16201
|
+
var value = _ref.value,
|
16202
|
+
onChange = _ref.onChange,
|
16203
|
+
placeholder = _ref.placeholder,
|
16204
|
+
externalTeacherIds = _ref.externalTeacherIds,
|
16205
|
+
title = _ref.title,
|
16206
|
+
isMultiple = _ref.isMultiple,
|
16207
|
+
_ref$isClearable = _ref.isClearable,
|
16208
|
+
isClearable = _ref$isClearable === void 0 ? true : _ref$isClearable,
|
16209
|
+
useUserId = _ref.useUserId,
|
16210
|
+
exceptMe = _ref.exceptMe,
|
16211
|
+
isDisabled = _ref.isDisabled;
|
16212
|
+
var _useState = React.useState([]),
|
16213
|
+
teachers = _useState[0],
|
16214
|
+
setTeachers = _useState[1];
|
16215
|
+
var _useState2 = React.useState(""),
|
16216
|
+
searchString = _useState2[0],
|
16217
|
+
setSearchString = _useState2[1];
|
16218
|
+
var _useState3 = React.useState(false),
|
16219
|
+
isLoading = _useState3[0],
|
16220
|
+
setLoading = _useState3[1];
|
16221
|
+
var _useTranslation = reactI18next.useTranslation(),
|
16222
|
+
t = _useTranslation.t;
|
16223
|
+
var debounceSearch = React.useCallback(_$8.debounce(function (value) {
|
16224
|
+
loadData(value);
|
16225
|
+
}, 500), []);
|
16226
|
+
var handleChangeSearchText = function handleChangeSearchText(value) {
|
16227
|
+
setSearchString(value.trim());
|
16228
|
+
debounceSearch(value.trim());
|
16229
|
+
};
|
16230
|
+
var loadData = function loadData(textSearch) {
|
16231
|
+
try {
|
16232
|
+
var _temp2 = function _temp2() {
|
16233
|
+
setLoading(false);
|
16234
|
+
};
|
16235
|
+
setLoading(true);
|
16236
|
+
var _temp = _catch(function () {
|
16237
|
+
return Promise.resolve(getTeacherListApi({
|
16238
|
+
textSearch: textSearch,
|
16239
|
+
pageSize: 100,
|
16240
|
+
currentPage: 1,
|
16241
|
+
exceptMe: exceptMe,
|
16242
|
+
sortColumnDirection: exports.OrderType.DESC,
|
16243
|
+
sortColumnName: "User.UserProfile.FullName"
|
16244
|
+
})).then(function (res) {
|
16245
|
+
var _res$data$items = res.data.items,
|
16246
|
+
items = _res$data$items === void 0 ? [] : _res$data$items;
|
16247
|
+
setTeachers(items);
|
16248
|
+
});
|
16249
|
+
}, function (err) {
|
16250
|
+
reactToastify.toast.error(getErrorMessage(t, err));
|
16251
|
+
});
|
16252
|
+
return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
|
16253
|
+
} catch (e) {
|
16254
|
+
return Promise.reject(e);
|
16255
|
+
}
|
16256
|
+
};
|
16257
|
+
React.useEffect(function () {
|
16258
|
+
loadData();
|
16259
|
+
}, []);
|
16260
|
+
var options = teachers.filter(function (teacher) {
|
16261
|
+
return !externalTeacherIds || externalTeacherIds && !externalTeacherIds.includes(teacher.id);
|
16262
|
+
}).map(function (teacher) {
|
16263
|
+
return {
|
16264
|
+
label: teacher.teacherName + " - " + teacher.teacherEmail,
|
16265
|
+
value: useUserId ? teacher.teacherUserId : teacher.id
|
16266
|
+
};
|
16267
|
+
});
|
16268
|
+
return React__default.createElement(material.FormGroup, {
|
16269
|
+
className: "" + styles["filter-item"]
|
16270
|
+
}, !!title && React__default.createElement("label", {
|
16271
|
+
className: "" + styles["title-form"]
|
16272
|
+
}, title), React__default.createElement(CustomSelectOption, {
|
16273
|
+
options: options,
|
16274
|
+
onInputChange: function onInputChange(inputValue) {
|
16275
|
+
return handleChangeSearchText(inputValue);
|
16276
|
+
},
|
16277
|
+
isLoading: isLoading,
|
16278
|
+
placeholder: placeholder || t('select_placeholder'),
|
16279
|
+
isMulti: isMultiple,
|
16280
|
+
value: value,
|
16281
|
+
inputValue: searchString,
|
16282
|
+
onChange: onChange,
|
16283
|
+
isClearable: isClearable,
|
16284
|
+
isDisabled: isDisabled
|
16285
|
+
}));
|
16286
|
+
};
|
16287
|
+
|
16288
|
+
var schema$3 = yup.object().shape({
|
16289
|
+
content: yup.string().trim().required(),
|
16290
|
+
studentId: yup.number().when("type", {
|
16291
|
+
is: function is(type) {
|
16292
|
+
return type == exports.NoteType.ToAcademy || type == exports.NoteType.ToStudent;
|
16293
|
+
},
|
16294
|
+
then: function then(schema) {
|
16295
|
+
return schema.required("student_required");
|
16296
|
+
},
|
16297
|
+
otherwise: function otherwise(schema) {
|
16298
|
+
return schema.notRequired();
|
16299
|
+
}
|
16300
|
+
}),
|
16301
|
+
userIds: yup.array().of(yup.number()).when("type", {
|
16302
|
+
is: function is(type) {
|
16303
|
+
return type == exports.NoteType.TeacherToTeachers;
|
16304
|
+
},
|
16305
|
+
then: function then(schema) {
|
16306
|
+
return schema.required("teachers_required");
|
16307
|
+
},
|
16308
|
+
otherwise: function otherwise(schema) {
|
16309
|
+
return schema.notRequired();
|
16310
|
+
}
|
16311
|
+
}),
|
16312
|
+
type: yup.number()
|
16313
|
+
});
|
16314
|
+
var GeneralNoteDialog = function GeneralNoteDialog(_ref) {
|
16315
|
+
var _selectedNote$recieve, _selectedNote$recieve2, _selectedNote$recieve3;
|
16316
|
+
var open = _ref.open,
|
16317
|
+
type = _ref.type,
|
16318
|
+
selectedNote = _ref.selectedNote,
|
16319
|
+
value = _ref.value,
|
16320
|
+
onClose = _ref.onClose,
|
16321
|
+
onSaveNote = _ref.onSaveNote;
|
16322
|
+
var _useTranslation = reactI18next.useTranslation(),
|
16323
|
+
t = _useTranslation.t;
|
16324
|
+
var handleSaveNote = function handleSaveNote(val) {
|
16325
|
+
onSaveNote(val);
|
16326
|
+
};
|
16327
|
+
var tip = React.useMemo(function () {
|
16328
|
+
if (type === undefined) return "";
|
16329
|
+
switch (type) {
|
16330
|
+
case exports.NoteType.ToAcademy:
|
16331
|
+
return "academy";
|
16332
|
+
case exports.NoteType.ToStudent:
|
16333
|
+
return "student_parents";
|
16334
|
+
case exports.NoteType.AdminToAllAdmin:
|
16335
|
+
case exports.NoteType.AdminToAllTeacher:
|
16336
|
+
case exports.NoteType.TeacherToAllAdmin:
|
16337
|
+
return "admin";
|
16338
|
+
case exports.NoteType.TeacherToTeachers:
|
16339
|
+
return "teacher";
|
16340
|
+
default:
|
16341
|
+
return "";
|
16342
|
+
}
|
16343
|
+
}, [type]);
|
16344
|
+
return React__default.createElement(material.Dialog, {
|
16345
|
+
onClose: onClose,
|
16346
|
+
open: open,
|
16347
|
+
maxWidth: "md",
|
16348
|
+
scroll: "body",
|
16349
|
+
fullWidth: true,
|
16350
|
+
disableEnforceFocus: true,
|
16351
|
+
disableAutoFocus: true
|
16352
|
+
}, React__default.createElement(DialogTitle, {
|
16353
|
+
id: "customized-dialog-title"
|
16354
|
+
}, React__default.createElement(Typography, {
|
16355
|
+
fontWeight: 700,
|
16356
|
+
fontSize: "16px",
|
16357
|
+
lineHeight: "19.09px",
|
16358
|
+
color: "#202B37"
|
16359
|
+
}, t(type === exports.NoteType.ToAcademy || type === exports.NoteType.ToStudent ? selectedNote ? "edit_student_note" : "student_note_taking" : "note"), tip ? " " + t(tip) : "")), React__default.createElement(IconButton, {
|
16360
|
+
"aria-label": "close",
|
16361
|
+
sx: {
|
16362
|
+
position: "absolute",
|
16363
|
+
right: 8,
|
16364
|
+
top: 8,
|
16365
|
+
color: function color(theme) {
|
16366
|
+
return theme.palette.grey[500];
|
16367
|
+
}
|
16368
|
+
},
|
16369
|
+
onClick: onClose
|
16370
|
+
}, React__default.createElement(iconCloseDialog, null)), React__default.createElement(formik.Formik, {
|
16371
|
+
initialValues: {
|
16372
|
+
content: value ? value.content : (selectedNote === null || selectedNote === void 0 ? void 0 : selectedNote.content) || "",
|
16373
|
+
type: type,
|
16374
|
+
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,
|
16375
|
+
student: value ? value.student : selectedNote !== null && selectedNote !== void 0 && selectedNote.reciever ? {
|
16376
|
+
label: selectedNote.reciever.fullName,
|
16377
|
+
value: selectedNote.reciever.id
|
16378
|
+
} : undefined,
|
16379
|
+
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) {
|
16380
|
+
return i.id;
|
16381
|
+
}),
|
16382
|
+
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) {
|
16383
|
+
return {
|
16384
|
+
label: i.fullName,
|
16385
|
+
value: i.id
|
16386
|
+
};
|
16387
|
+
})
|
16388
|
+
},
|
16389
|
+
validationSchema: schema$3,
|
16390
|
+
enableReinitialize: true,
|
16391
|
+
onSubmit: handleSaveNote
|
16392
|
+
}, function (_ref2) {
|
16393
|
+
var _selectedNote$recieve4;
|
16394
|
+
var values = _ref2.values,
|
16395
|
+
errors = _ref2.errors,
|
16396
|
+
setFieldValue = _ref2.setFieldValue;
|
16397
|
+
return React__default.createElement(formik.Form, null, React__default.createElement(DialogContent, {
|
16398
|
+
sx: {
|
16399
|
+
padding: 0,
|
16400
|
+
overflowY: "auto"
|
16401
|
+
}
|
16402
|
+
}, React__default.createElement(material.Box, {
|
16403
|
+
display: "flex",
|
16404
|
+
flexDirection: "column",
|
16405
|
+
gap: "8px",
|
16406
|
+
padding: "24px 24px 40px 24px"
|
16407
|
+
}, (type === exports.NoteType.ToAcademy || type === exports.NoteType.ToStudent) && React__default.createElement(material.Stack, null, React__default.createElement("label", {
|
16408
|
+
htmlFor: "student",
|
16409
|
+
className: styles["form-label"] + " " + styles$5["form-label-dialog"]
|
16410
|
+
}, t("student_name")), selectedNote ? React__default.createElement(Typography, {
|
16411
|
+
sx: {
|
16412
|
+
fontWeight: 700,
|
16413
|
+
fontSize: "14px",
|
16414
|
+
color: "rgba(61, 198, 116, 1)"
|
16415
|
+
}
|
16416
|
+
}, (_selectedNote$recieve4 = selectedNote.reciever) === null || _selectedNote$recieve4 === void 0 ? void 0 : _selectedNote$recieve4.fullName) : React__default.createElement(formik.Field, {
|
16417
|
+
id: "student",
|
16418
|
+
style: {
|
16419
|
+
width: "100%"
|
16420
|
+
},
|
16421
|
+
name: "student",
|
16422
|
+
className: styles["form-control"],
|
16423
|
+
render: function render(_ref3) {
|
16424
|
+
var field = _ref3.field;
|
16425
|
+
return React__default.createElement(StudentSelector, {
|
16426
|
+
value: field.value,
|
16427
|
+
onChange: function onChange(val) {
|
16428
|
+
setFieldValue("studentId", val === null || val === void 0 ? void 0 : val.value);
|
16429
|
+
setFieldValue("student", val);
|
16430
|
+
},
|
16431
|
+
isMulti: false
|
16432
|
+
});
|
16433
|
+
}
|
16434
|
+
}), !!errors.studentId && React__default.createElement(Typography, {
|
16435
|
+
fontWeight: 500,
|
16436
|
+
fontSize: "10px",
|
16437
|
+
lineHeight: "11.93px",
|
16438
|
+
mt: 1,
|
16439
|
+
color: "#F34B4B"
|
16440
|
+
}, errors.studentId)), (type === exports.NoteType.AdminToAllAdmin || type === exports.NoteType.AdminToAllTeacher) && React__default.createElement(material.FormControl, {
|
16441
|
+
className: "w-100"
|
16442
|
+
}, React__default.createElement(material.FormLabel, {
|
16443
|
+
className: "fw-medium",
|
16444
|
+
id: "type"
|
16445
|
+
}, t("receivers")), React__default.createElement(material.RadioGroup, {
|
16446
|
+
className: "flex-row flex-wrap"
|
16447
|
+
}, React__default.createElement(material.FormControlLabel, {
|
16448
|
+
control: React__default.createElement(material.Radio, {
|
16449
|
+
checked: values.type === exports.NoteType.AdminToAllAdmin || values.type === exports.NoteType.TeacherToAllAdmin,
|
16450
|
+
onChange: function onChange(_) {
|
16451
|
+
return setFieldValue("type", exports.NoteType.AdminToAllAdmin);
|
16452
|
+
}
|
16453
|
+
}),
|
16454
|
+
label: t("admin")
|
16455
|
+
}), React__default.createElement(material.FormControlLabel, {
|
16456
|
+
control: React__default.createElement(material.Radio, {
|
16457
|
+
checked: values.type === exports.NoteType.AdminToAllTeacher,
|
16458
|
+
onChange: function onChange(_) {
|
16459
|
+
return setFieldValue("type", exports.NoteType.AdminToAllTeacher);
|
16460
|
+
}
|
16461
|
+
}),
|
16462
|
+
label: t("teacher")
|
16463
|
+
}))), type === exports.NoteType.TeacherToTeachers && React__default.createElement(material.Stack, null, React__default.createElement("label", {
|
16464
|
+
htmlFor: "teachers",
|
16465
|
+
className: styles["form-label"] + " " + styles$5["form-label-dialog"]
|
16466
|
+
}, t("teachers")), React__default.createElement(formik.Field, {
|
16467
|
+
id: "users",
|
16468
|
+
style: {
|
16469
|
+
width: "100%"
|
16470
|
+
},
|
16471
|
+
name: "users",
|
16472
|
+
className: styles["form-control"],
|
16473
|
+
render: function render(_ref4) {
|
16474
|
+
var field = _ref4.field;
|
16475
|
+
return React__default.createElement(TeacherSelector$1, {
|
16476
|
+
value: field.value,
|
16477
|
+
onChange: function onChange(val) {
|
16478
|
+
var _val$map, _val$map2;
|
16479
|
+
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) {
|
16480
|
+
return i.value;
|
16481
|
+
})) != null ? _val$map : []);
|
16482
|
+
setFieldValue("users", val != null ? val : []);
|
16483
|
+
},
|
16484
|
+
isDisabled: !!selectedNote,
|
16485
|
+
exceptMe: true,
|
16486
|
+
isMultiple: true,
|
16487
|
+
useUserId: true
|
16488
|
+
});
|
16489
|
+
}
|
16490
|
+
}), !!errors.userIds && React__default.createElement(Typography, {
|
16491
|
+
fontWeight: 500,
|
16492
|
+
fontSize: "10px",
|
16493
|
+
lineHeight: "11.93px",
|
16494
|
+
mt: 1,
|
16495
|
+
color: "#F34B4B"
|
16496
|
+
}, errors.userIds)), React__default.createElement(material.Stack, null, React__default.createElement("label", {
|
16497
|
+
htmlFor: "content-question",
|
16498
|
+
className: styles["form-label"] + " " + styles$5["form-label-dialog"]
|
16499
|
+
}, t("incorrect_answer_note_contents")), React__default.createElement(material.Box, {
|
16500
|
+
position: "relative",
|
16501
|
+
display: "flex",
|
16502
|
+
flexDirection: "row",
|
16503
|
+
alignItems: "center"
|
16504
|
+
}, React__default.createElement(formik.Field, {
|
16505
|
+
id: "content-question",
|
16506
|
+
style: {
|
16507
|
+
width: "100%"
|
16508
|
+
},
|
16509
|
+
name: "content",
|
16510
|
+
placeholder: t("the_problem_is_difficult"),
|
16511
|
+
className: styles["form-control"],
|
16512
|
+
render: function render(_ref5) {
|
16513
|
+
var field = _ref5.field;
|
16514
|
+
return React__default.createElement(NoteTinyEditor, {
|
16515
|
+
initValue: field.value,
|
16516
|
+
onChange: function onChange(text) {
|
16517
|
+
return setFieldValue("content", text);
|
16518
|
+
}
|
16519
|
+
});
|
16520
|
+
}
|
16521
|
+
})), !!errors.content && React__default.createElement(Typography, {
|
16522
|
+
fontWeight: 500,
|
16523
|
+
fontSize: "10px",
|
16524
|
+
lineHeight: "11.93px",
|
16525
|
+
mt: 1,
|
16526
|
+
color: "#F34B4B"
|
16527
|
+
}, errors.content), React__default.createElement(material.Box, {
|
16528
|
+
marginBottom: "4px"
|
16529
|
+
})))), React__default.createElement(DialogActions, {
|
16530
|
+
sx: {
|
16531
|
+
display: "flex",
|
16532
|
+
justifyContent: "space-between",
|
16533
|
+
alignItems: "center",
|
16534
|
+
padding: "12px",
|
16535
|
+
borderTop: "1px solid #CED2DA"
|
16536
|
+
}
|
16537
|
+
}, React__default.createElement(MButton, {
|
16538
|
+
className: styles$5["btn-cancel"],
|
16539
|
+
onClick: onClose
|
16540
|
+
}, React__default.createElement(Typography, {
|
16541
|
+
sx: {
|
16542
|
+
color: styles.dark + " !important"
|
16543
|
+
},
|
16544
|
+
fontWeight: 700,
|
16545
|
+
fontSize: "14px",
|
16546
|
+
lineHeight: "16.71px"
|
16547
|
+
}, t("cancel"))), React__default.createElement(MButton, {
|
16548
|
+
variant: "contained",
|
16549
|
+
sx: {
|
16550
|
+
bgcolor: styles.dark
|
16551
|
+
},
|
16552
|
+
className: styles$5["btn-register"],
|
16553
|
+
type: "submit"
|
16554
|
+
}, React__default.createElement(Typography, {
|
16555
|
+
fontWeight: 700,
|
16556
|
+
fontSize: "14px",
|
16557
|
+
lineHeight: "16.71px",
|
16558
|
+
color: "#FFFFFF"
|
16559
|
+
}, t("registration")))));
|
16560
|
+
}));
|
16561
|
+
};
|
16562
|
+
|
16563
|
+
var NoteList = function NoteList(_ref) {
|
16564
|
+
var defaultFilter = _ref.defaultFilter,
|
16565
|
+
role = _ref.role,
|
16566
|
+
headers = _ref.headers,
|
16567
|
+
isAdmin = _ref.isAdmin;
|
16568
|
+
var _useTranslation = reactI18next.useTranslation(),
|
16569
|
+
t = _useTranslation.t;
|
16570
|
+
var _useList = useList(function (filter) {
|
16571
|
+
return getNotesApi(filter);
|
16572
|
+
}, defaultFilter, false),
|
16573
|
+
isLoading = _useList.isLoading,
|
16574
|
+
filter = _useList.filter,
|
16575
|
+
textSearchRef = _useList.textSearchRef,
|
16576
|
+
paging = _useList.paging,
|
16577
|
+
data = _useList.data,
|
16578
|
+
selectedItem = _useList.selectedItem,
|
16579
|
+
handleSort = _useList.handleSort,
|
16580
|
+
handleChangeSearchText = _useList.handleChangeSearchText,
|
16581
|
+
handleChangePage = _useList.handleChangePage,
|
16582
|
+
calcOrderNumber = _useList.calcOrderNumber,
|
16583
|
+
handleChangeSelectedItem = _useList.handleChangeSelectedItem,
|
16584
|
+
getData = _useList.getData;
|
16585
|
+
var dispatch = reactRedux.useDispatch();
|
16586
|
+
var _useState = React.useState(false),
|
16587
|
+
openNoteViewDrawer = _useState[0],
|
16588
|
+
setOpenNoteViewDrawer = _useState[1];
|
16589
|
+
var _useState2 = React.useState(),
|
16590
|
+
openNoteDialog = _useState2[0],
|
16591
|
+
setOpenNoteDialog = _useState2[1];
|
16592
|
+
var _useState3 = React.useState(),
|
16593
|
+
noteRequest = _useState3[0],
|
16594
|
+
setNoteRequest = _useState3[1];
|
16595
|
+
var _useState4 = React.useState(false),
|
16596
|
+
openConfirmNote = _useState4[0],
|
16597
|
+
setOpenConfirmNote = _useState4[1];
|
16598
|
+
var _useState5 = React.useState(false),
|
16599
|
+
openDeleteNoteDialog = _useState5[0],
|
16600
|
+
setOpenDeleteNoteDialog = _useState5[1];
|
16601
|
+
var handleOpenCreateNoteDialog = function handleOpenCreateNoteDialog() {
|
16602
|
+
var _defaultFilter$types;
|
16603
|
+
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) {
|
16604
|
+
setOpenNoteDialog(isAdmin ? exports.NoteType.AdminToAllAdmin : exports.NoteType.TeacherToAllAdmin);
|
16605
|
+
}
|
16606
|
+
};
|
16607
|
+
var handleCloseDeleteDialog = function handleCloseDeleteDialog() {
|
16608
|
+
setOpenDeleteNoteDialog(false);
|
16609
|
+
};
|
16610
|
+
var handleOpenDeleteNoteDialog = function handleOpenDeleteNoteDialog(note) {
|
16611
|
+
handleChangeSelectedItem(note);
|
16612
|
+
setOpenDeleteNoteDialog(true);
|
16613
|
+
};
|
16614
|
+
var handleOpenNoteDrawer = function handleOpenNoteDrawer(note) {
|
16615
|
+
setOpenNoteViewDrawer(true);
|
16616
|
+
handleChangeSelectedItem(note);
|
16617
|
+
};
|
16618
|
+
var handleCloseNoteDrawer = function handleCloseNoteDrawer() {
|
16619
|
+
setOpenNoteViewDrawer(false);
|
16620
|
+
handleChangeSelectedItem(undefined);
|
16621
|
+
};
|
16622
|
+
var handleCloseConfirmStudentNoteDialog = function handleCloseConfirmStudentNoteDialog() {
|
16623
|
+
setOpenConfirmNote(false);
|
16624
|
+
};
|
16625
|
+
var handleOpenNoteDialog = function handleOpenNoteDialog(note) {
|
16626
|
+
handleChangeSelectedItem(note);
|
16627
|
+
setOpenNoteDialog(note.type);
|
16628
|
+
};
|
16629
|
+
var handleCloseNoteDialog = function handleCloseNoteDialog() {
|
16630
|
+
handleChangeSelectedItem(undefined);
|
16631
|
+
setOpenNoteDialog(undefined);
|
16632
|
+
setNoteRequest(undefined);
|
16633
|
+
};
|
16634
|
+
var handleOpenConfirmStudentNoteDialog = function handleOpenConfirmStudentNoteDialog(note) {
|
16635
|
+
setNoteRequest(note);
|
16636
|
+
setOpenConfirmNote(true);
|
16637
|
+
};
|
16638
|
+
var handleSaveNote = function handleSaveNote(noteRequest) {
|
16639
|
+
try {
|
16640
|
+
var _temp4 = function _temp4() {
|
16641
|
+
dispatch(setLoading(false));
|
16642
|
+
};
|
16643
|
+
if (openNoteDialog === undefined) return Promise.resolve();
|
16644
|
+
if (noteRequest.content.trim().length === 0) return Promise.resolve();
|
16645
|
+
dispatch(setLoading(true));
|
16646
|
+
var _temp3 = _catch(function () {
|
16647
|
+
function _temp2() {
|
16648
|
+
getData();
|
16649
|
+
reset();
|
16650
|
+
}
|
16651
|
+
var _temp = function () {
|
16652
|
+
if (selectedItem) {
|
16653
|
+
return Promise.resolve(updateNoteDataApi(selectedItem.id, noteRequest)).then(function () {
|
16654
|
+
reactToastify.toast.success(t("update_note_successfully"));
|
16655
|
+
});
|
16656
|
+
} else {
|
16657
|
+
return Promise.resolve(createNoteApi(noteRequest)).then(function () {
|
16658
|
+
reactToastify.toast.success(t("create_note_successfully"));
|
16659
|
+
});
|
16660
|
+
}
|
16661
|
+
}();
|
16662
|
+
return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
|
16663
|
+
}, function (error) {
|
16664
|
+
reactToastify.toast.error(getErrorMessage(t, error));
|
16665
|
+
});
|
16666
|
+
return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
|
16667
|
+
} catch (e) {
|
16668
|
+
return Promise.reject(e);
|
16669
|
+
}
|
16670
|
+
};
|
16671
|
+
var handleDeleteNote = function handleDeleteNote() {
|
16672
|
+
try {
|
16673
|
+
var _temp6 = function _temp6() {
|
16674
|
+
dispatch(setLoading(false));
|
16675
|
+
};
|
16676
|
+
if (!(selectedItem !== null && selectedItem !== void 0 && selectedItem.id)) return Promise.resolve();
|
16677
|
+
dispatch(setLoading(true));
|
16678
|
+
var _temp5 = _catch(function () {
|
16679
|
+
return Promise.resolve(deleteNoteApi(selectedItem.id)).then(function () {
|
16680
|
+
reactToastify.toast.success(t("delete_note_successfully"));
|
16681
|
+
getData();
|
16682
|
+
reset();
|
16683
|
+
});
|
16684
|
+
}, function (error) {
|
16685
|
+
reactToastify.toast.error(getErrorMessage(t, error));
|
16686
|
+
});
|
16687
|
+
return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5));
|
16688
|
+
} catch (e) {
|
16689
|
+
return Promise.reject(e);
|
16690
|
+
}
|
16691
|
+
};
|
16692
|
+
var reset = function reset() {
|
16693
|
+
handleCloseNoteDialog();
|
16694
|
+
setOpenDeleteNoteDialog(false);
|
16695
|
+
setOpenConfirmNote(false);
|
16696
|
+
setNoteRequest(undefined);
|
16697
|
+
};
|
16698
|
+
var handleSaveNoteDialog = openNoteDialog === exports.NoteType.ToStudent && !(selectedItem !== null && selectedItem !== void 0 && selectedItem.id) ? handleOpenConfirmStudentNoteDialog : handleSaveNote;
|
16699
|
+
var handleSaveStudentNote = function handleSaveStudentNote() {
|
16700
|
+
if (!noteRequest) return;
|
16701
|
+
handleSaveNote(noteRequest);
|
16702
|
+
};
|
16703
|
+
return React__default.createElement(material.Box, {
|
16704
|
+
width: "100%"
|
16705
|
+
}, React__default.createElement(material.Grid, {
|
16706
|
+
container: true
|
16707
|
+
}, React__default.createElement(material.Grid, {
|
16708
|
+
item: true,
|
16709
|
+
xs: 6,
|
16710
|
+
className: "d-flex mb-3"
|
16711
|
+
}, React__default.createElement(SearchInput, {
|
16712
|
+
placeholder: t("search_for"),
|
16713
|
+
textSearchRef: textSearchRef,
|
16714
|
+
onChange: handleChangeSearchText
|
16715
|
+
})), React__default.createElement(material.Grid, {
|
16716
|
+
item: true,
|
16717
|
+
xs: 6,
|
16718
|
+
className: "d-flex justify-content-end align-items-center"
|
16719
|
+
}, React__default.createElement(material.Button, {
|
16720
|
+
variant: "contained",
|
16721
|
+
sx: {
|
16722
|
+
bgcolor: green[700]
|
16723
|
+
},
|
16724
|
+
startIcon: React__default.createElement(fa.FaPlus, {
|
16725
|
+
size: 12
|
16726
|
+
}),
|
16727
|
+
onClick: handleOpenCreateNoteDialog
|
16728
|
+
}, t("new_note"))), React__default.createElement(material.Grid, {
|
16729
|
+
item: true,
|
16730
|
+
xs: 12
|
16731
|
+
}, 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) {
|
16732
|
+
return React__default.createElement(material.TableCell, {
|
16733
|
+
key: index,
|
16734
|
+
onClick: !!i.sortKey ? function () {
|
16735
|
+
return handleSort(i.sortKey);
|
16736
|
+
} : undefined,
|
16737
|
+
className: "" + (!!i.sortKey && "pointer")
|
16738
|
+
}, React__default.createElement("div", {
|
16739
|
+
className: "d-flex justify-content-between align-items-center text-nowrap"
|
16740
|
+
}, t(i.title), !!i.sortKey && React__default.createElement(SortIcon, {
|
16741
|
+
isAscending: filter.sortColumnName !== i.sortKey ? undefined : filter.sortColumnDirection === exports.OrderType.ASC
|
16742
|
+
})));
|
16743
|
+
}))), React__default.createElement(material.TableBody, null, React__default.createElement(ListView, {
|
16744
|
+
data: data,
|
16745
|
+
render: function render(item, index) {
|
16746
|
+
return React__default.createElement(NoteItemList, {
|
16747
|
+
key: index,
|
16748
|
+
data: item,
|
16749
|
+
calcOrderNumber: calcOrderNumber,
|
16750
|
+
index: index,
|
16751
|
+
role: role,
|
16752
|
+
onDelete: handleOpenDeleteNoteDialog,
|
16753
|
+
onUpdate: handleOpenNoteDialog,
|
16754
|
+
onView: handleOpenNoteDrawer
|
16755
|
+
});
|
16756
|
+
}
|
16757
|
+
}), !data.length && !isLoading && React__default.createElement(material.TableRow, null, React__default.createElement(material.TableCell, {
|
16758
|
+
colSpan: 12,
|
16759
|
+
className: "text-center text-muted"
|
16760
|
+
}, t("no_data"))), isLoading && React__default.createElement(material.TableRow, null, React__default.createElement(material.TableCell, {
|
16761
|
+
colSpan: 12
|
16762
|
+
}, React__default.createElement(material.Stack, {
|
16763
|
+
justifyContent: "center",
|
16764
|
+
alignItems: "center",
|
16765
|
+
width: "100%"
|
16766
|
+
}, React__default.createElement(material.CircularProgress, {
|
16767
|
+
size: 24
|
16768
|
+
}))))))), React__default.createElement("div", {
|
16769
|
+
className: "d-flex justify-content-end mt-3"
|
16770
|
+
}, !!paging.totalPages && React__default.createElement(material.Pagination, {
|
16771
|
+
count: paging.totalPages,
|
16772
|
+
page: paging.page,
|
16773
|
+
onChange: handleChangePage
|
16774
|
+
})))), React__default.createElement(NoteDrawer, {
|
16775
|
+
open: !!openNoteViewDrawer,
|
16776
|
+
data: selectedItem,
|
16777
|
+
student: selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.reciever,
|
16778
|
+
width: "80dvw",
|
16779
|
+
onClose: handleCloseNoteDrawer,
|
16780
|
+
anchor: "right"
|
16781
|
+
}), React__default.createElement(GeneralNoteDialog, {
|
16782
|
+
open: openNoteDialog !== undefined,
|
16783
|
+
type: openNoteDialog,
|
16784
|
+
onClose: handleCloseNoteDialog,
|
16785
|
+
onSaveNote: handleSaveNoteDialog,
|
16786
|
+
selectedNote: selectedItem,
|
16787
|
+
value: noteRequest
|
16788
|
+
}), React__default.createElement(ConfirmDialog, {
|
16789
|
+
open: openConfirmNote,
|
16790
|
+
toggle: handleCloseConfirmStudentNoteDialog,
|
16791
|
+
onConfirm: handleSaveStudentNote,
|
16792
|
+
text: t("are_you_sure_to_create_student_parent_note")
|
16793
|
+
}), React__default.createElement(ConfirmDeleteDialog, {
|
16794
|
+
open: openDeleteNoteDialog,
|
16795
|
+
toggle: handleCloseDeleteDialog,
|
16796
|
+
onConfirm: handleDeleteNote,
|
16797
|
+
text: t("are_you_sure_you_want_to_delete_the_note"),
|
16798
|
+
title: t("delete_note"),
|
16799
|
+
okText: t("delete_note"),
|
16800
|
+
cancelText: t("cancel")
|
16801
|
+
}));
|
16802
|
+
};
|
16803
|
+
|
16804
|
+
var NotetabPanel = function NotetabPanel(_ref) {
|
16805
|
+
var children = _ref.children,
|
16806
|
+
value = _ref.value,
|
16807
|
+
index = _ref.index;
|
16808
|
+
return React__default.createElement("div", {
|
16809
|
+
role: "tabpanel",
|
16810
|
+
hidden: value !== index,
|
16811
|
+
id: "tabpanel-" + index,
|
16812
|
+
"aria-labelledby": "tab-" + index
|
16813
|
+
}, value === index && React__default.createElement(material.Box, {
|
16814
|
+
sx: {
|
16815
|
+
p: 2
|
16816
|
+
}
|
16817
|
+
}, React__default.createElement(material.Typography, null, children)));
|
16818
|
+
};
|
16819
|
+
|
16820
|
+
var NOTE_STUDENT_HEADERS = [{
|
16821
|
+
title: "#"
|
16822
|
+
}, {
|
16823
|
+
title: "sender",
|
16824
|
+
sortKey: "User.UserProfile.FullName"
|
16825
|
+
}, {
|
16826
|
+
title: "student",
|
16827
|
+
sortKey: "Student.UserProfile.FullName"
|
16828
|
+
}, {
|
16829
|
+
title: "content"
|
16830
|
+
}, {
|
16831
|
+
title: "type"
|
16832
|
+
}, {
|
16833
|
+
title: "created_at",
|
16834
|
+
sortKey: "CreatedAt"
|
16835
|
+
}, {
|
16836
|
+
title: "actions"
|
16837
|
+
}];
|
16838
|
+
var NOTE_TEACHER_HEADERS = [{
|
16839
|
+
title: "#"
|
16840
|
+
}, {
|
16841
|
+
title: "sender",
|
16842
|
+
sortKey: "User.UserProfile.FullName"
|
16843
|
+
}, {
|
16844
|
+
title: "receivers"
|
16845
|
+
}, {
|
16846
|
+
title: "content"
|
16847
|
+
}, {
|
16848
|
+
title: "type"
|
16849
|
+
}, {
|
16850
|
+
title: "created_at",
|
16851
|
+
sortKey: "CreatedAt"
|
16852
|
+
}, {
|
16853
|
+
title: "actions"
|
16854
|
+
}];
|
16855
|
+
var NOTE_ADMIN_HEADERS = [{
|
16856
|
+
title: "#"
|
16857
|
+
}, {
|
16858
|
+
title: "sender",
|
16859
|
+
sortKey: "User.UserProfile.FullName"
|
16860
|
+
}, {
|
16861
|
+
title: "receivers"
|
16862
|
+
}, {
|
16863
|
+
title: "content"
|
16864
|
+
}, {
|
16865
|
+
title: "type"
|
16866
|
+
}, {
|
16867
|
+
title: "created_at",
|
16868
|
+
sortKey: "CreatedAt"
|
16869
|
+
}, {
|
16870
|
+
title: "actions"
|
16871
|
+
}];
|
16872
|
+
var ACADEMY_NOTE_FILTER = {
|
16873
|
+
currentPage: 1,
|
16874
|
+
pageSize: 12,
|
16875
|
+
sortColumnDirection: exports.OrderType.DESC,
|
16876
|
+
sortColumnName: NoteSortColumn.CreatedAt,
|
16877
|
+
types: [exports.NoteType.ToAcademy]
|
16878
|
+
};
|
16879
|
+
var STUDENT_PARENTS_NOTE_FILTER = {
|
16880
|
+
currentPage: 1,
|
16881
|
+
pageSize: 12,
|
16882
|
+
sortColumnDirection: exports.OrderType.DESC,
|
16883
|
+
sortColumnName: NoteSortColumn.CreatedAt,
|
16884
|
+
types: [exports.NoteType.ToStudent]
|
16885
|
+
};
|
16886
|
+
var ADMIN_TEACHER_NOTE_FILTER = {
|
16887
|
+
currentPage: 1,
|
16888
|
+
pageSize: 12,
|
16889
|
+
sortColumnDirection: exports.OrderType.DESC,
|
16890
|
+
sortColumnName: NoteSortColumn.CreatedAt,
|
16891
|
+
types: [exports.NoteType.TeacherToAllAdmin, exports.NoteType.AdminToAllTeacher]
|
16892
|
+
};
|
16893
|
+
var ADMIN_NOTE_FILTER = {
|
16894
|
+
currentPage: 1,
|
16895
|
+
pageSize: 12,
|
16896
|
+
sortColumnDirection: exports.OrderType.DESC,
|
16897
|
+
sortColumnName: NoteSortColumn.CreatedAt,
|
16898
|
+
types: [exports.NoteType.TeacherToAllAdmin, exports.NoteType.AdminToAllTeacher, exports.NoteType.AdminToAllAdmin]
|
16899
|
+
};
|
16900
|
+
var TEACHER_NOTE_FILTER = {
|
16901
|
+
currentPage: 1,
|
16902
|
+
pageSize: 12,
|
16903
|
+
sortColumnDirection: exports.OrderType.DESC,
|
16904
|
+
sortColumnName: NoteSortColumn.CreatedAt,
|
16905
|
+
types: [exports.NoteType.TeacherToTeachers]
|
16906
|
+
};
|
16907
|
+
|
16908
|
+
var NoteTabs = function NoteTabs(_ref) {
|
16909
|
+
var role = _ref.role;
|
16910
|
+
var roles = reactRedux.useSelector(function (state) {
|
16911
|
+
var _state$common$user$ro, _state$common, _state$common$user;
|
16912
|
+
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 : [];
|
16913
|
+
});
|
16914
|
+
var isAdminUser = roles.includes(exports.Role.Admin);
|
16915
|
+
var isAdmin = roles.includes(exports.Role.Admin);
|
16916
|
+
var _useState = React.useState(0),
|
16917
|
+
value = _useState[0],
|
16918
|
+
setValue = _useState[1];
|
16919
|
+
var handleChange = function handleChange(_event, newValue) {
|
16920
|
+
setValue(newValue);
|
16921
|
+
};
|
16922
|
+
return React__default.createElement(material.Box, {
|
16923
|
+
sx: {
|
16924
|
+
width: "100%"
|
16925
|
+
}
|
16926
|
+
}, React__default.createElement(material.Tabs, {
|
16927
|
+
value: value,
|
16928
|
+
onChange: handleChange,
|
16929
|
+
sx: {
|
16930
|
+
"& .MuiTab-root": {
|
16931
|
+
color: grey[500],
|
16932
|
+
fontSize: "1rem"
|
16933
|
+
},
|
16934
|
+
"& .Mui-selected": {
|
16935
|
+
color: green[700] + "!important"
|
16936
|
+
},
|
16937
|
+
"& .MuiTabs-indicator": {
|
16938
|
+
backgroundColor: green[700]
|
16939
|
+
}
|
16940
|
+
}
|
16941
|
+
}, React__default.createElement(material.Tab, Object.assign({
|
16942
|
+
label: i18n.t("academy")
|
16943
|
+
}, a11yProps$1(0))), React__default.createElement(material.Tab, Object.assign({
|
16944
|
+
label: i18n.t("student_parents")
|
16945
|
+
}, a11yProps$1(1))), React__default.createElement(material.Tab, Object.assign({
|
16946
|
+
label: i18n.t("admin")
|
16947
|
+
}, a11yProps$1(2))), !isAdmin && !isAdminUser && React__default.createElement(material.Tab, Object.assign({
|
16948
|
+
label: i18n.t("teacher")
|
16949
|
+
}, a11yProps$1(3)))), React__default.createElement(NotetabPanel, {
|
16950
|
+
value: value,
|
16951
|
+
index: 0
|
16952
|
+
}, React__default.createElement(NoteList, {
|
16953
|
+
role: role,
|
16954
|
+
isAdmin: isAdmin,
|
16955
|
+
defaultFilter: ACADEMY_NOTE_FILTER,
|
16956
|
+
headers: NOTE_STUDENT_HEADERS
|
16957
|
+
})), React__default.createElement(NotetabPanel, {
|
16958
|
+
value: value,
|
16959
|
+
index: 1
|
16960
|
+
}, React__default.createElement(NoteList, {
|
16961
|
+
role: role,
|
16962
|
+
isAdmin: isAdmin,
|
16963
|
+
defaultFilter: STUDENT_PARENTS_NOTE_FILTER,
|
16964
|
+
headers: NOTE_STUDENT_HEADERS
|
16965
|
+
})), React__default.createElement(NotetabPanel, {
|
16966
|
+
value: value,
|
16967
|
+
index: 2
|
16968
|
+
}, React__default.createElement(NoteList, {
|
16969
|
+
role: role,
|
16970
|
+
isAdmin: isAdmin,
|
16971
|
+
defaultFilter: isAdmin ? ADMIN_NOTE_FILTER : ADMIN_TEACHER_NOTE_FILTER,
|
16972
|
+
headers: NOTE_ADMIN_HEADERS
|
16973
|
+
})), !isAdmin && !isAdminUser && React__default.createElement(NotetabPanel, {
|
16974
|
+
value: value,
|
16975
|
+
index: 3
|
16976
|
+
}, React__default.createElement(NoteList, {
|
16977
|
+
role: role,
|
16978
|
+
isAdmin: isAdmin,
|
16979
|
+
defaultFilter: TEACHER_NOTE_FILTER,
|
16980
|
+
headers: NOTE_TEACHER_HEADERS
|
15912
16981
|
})));
|
15913
16982
|
};
|
16983
|
+
function a11yProps$1(index) {
|
16984
|
+
return {
|
16985
|
+
id: "tab-" + index,
|
16986
|
+
"aria-controls": "tabpanel-" + index
|
16987
|
+
};
|
16988
|
+
}
|
15914
16989
|
|
15915
|
-
var useVirtualList = function useVirtualList(
|
16990
|
+
var useVirtualList = function useVirtualList(defaultFilter, getItemsApi) {
|
15916
16991
|
var _useTranslation = reactI18next.useTranslation(),
|
15917
16992
|
t = _useTranslation.t;
|
15918
16993
|
var _useState = React.useState([]),
|
@@ -15926,7 +17001,7 @@ var useVirtualList = function useVirtualList(studentId, defaultFilter, getItemsA
|
|
15926
17001
|
setSelectedItem = _useState3[1];
|
15927
17002
|
var _useState4 = React.useState(false),
|
15928
17003
|
isLoading = _useState4[0],
|
15929
|
-
|
17004
|
+
setLoading = _useState4[1];
|
15930
17005
|
var _useState5 = React.useState(),
|
15931
17006
|
filter = _useState5[0],
|
15932
17007
|
setFilter = _useState5[1];
|
@@ -15936,18 +17011,16 @@ var useVirtualList = function useVirtualList(studentId, defaultFilter, getItemsA
|
|
15936
17011
|
var getItems = function getItems() {
|
15937
17012
|
try {
|
15938
17013
|
var _temp2 = function _temp2() {
|
15939
|
-
|
17014
|
+
setLoading(false);
|
15940
17015
|
};
|
15941
17016
|
if (isLoading) return Promise.resolve();
|
15942
17017
|
if (!filter || !filter.currentPage) {
|
15943
17018
|
setItems([]);
|
15944
17019
|
return Promise.resolve();
|
15945
17020
|
}
|
15946
|
-
|
17021
|
+
setLoading(true);
|
15947
17022
|
var _temp = _catch(function () {
|
15948
|
-
return Promise.resolve(getItemsApi(
|
15949
|
-
studentId: studentId
|
15950
|
-
}))).then(function (res) {
|
17023
|
+
return Promise.resolve(getItemsApi(filter)).then(function (res) {
|
15951
17024
|
var responseData = res.data;
|
15952
17025
|
setTotalPages((responseData === null || responseData === void 0 ? void 0 : responseData.totalPages) || 0);
|
15953
17026
|
var responseItems = (responseData === null || responseData === void 0 ? void 0 : responseData.items) || [];
|
@@ -15986,23 +17059,25 @@ var useVirtualList = function useVirtualList(studentId, defaultFilter, getItemsA
|
|
15986
17059
|
});
|
15987
17060
|
setItems(results);
|
15988
17061
|
};
|
15989
|
-
var handleItemRemoved = function handleItemRemoved(
|
15990
|
-
|
15991
|
-
|
15992
|
-
|
15993
|
-
|
17062
|
+
var handleItemRemoved = function handleItemRemoved(_item) {
|
17063
|
+
getItems();
|
17064
|
+
};
|
17065
|
+
var handleChangeFilter = function handleChangeFilter(newFilter) {
|
17066
|
+
setFilter(newFilter);
|
15994
17067
|
};
|
15995
17068
|
React.useEffect(function () {
|
15996
17069
|
setFilter(defaultFilter);
|
15997
17070
|
}, [JSON.stringify(defaultFilter)]);
|
15998
17071
|
React.useEffect(function () {
|
15999
17072
|
getItems();
|
16000
|
-
}, [JSON.stringify(filter)]);
|
17073
|
+
}, [JSON.stringify(filter), getItemsApi]);
|
16001
17074
|
return {
|
16002
17075
|
t: t,
|
17076
|
+
filter: filter,
|
16003
17077
|
selectedItem: selectedItem,
|
16004
17078
|
items: items,
|
16005
17079
|
isLoading: isLoading,
|
17080
|
+
handleChangeFilter: handleChangeFilter,
|
16006
17081
|
setItems: setItems,
|
16007
17082
|
handleChangeSelectedItem: handleChangeSelectedItem,
|
16008
17083
|
handleLoadMore: handleLoadMore,
|
@@ -16054,8 +17129,9 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16054
17129
|
var _useState6 = React.useState(),
|
16055
17130
|
noteIdContextMenu = _useState6[0],
|
16056
17131
|
setNoteIdContextMenu = _useState6[1];
|
16057
|
-
var _useVirtualList = useVirtualList(
|
16058
|
-
|
17132
|
+
var _useVirtualList = useVirtualList(_extends({}, DEFAULT_NOTE_FILTER, {
|
17133
|
+
types: [exports.NoteType.ToAcademy],
|
17134
|
+
studentId: studentId
|
16059
17135
|
}), getNotesApi$1),
|
16060
17136
|
academyNotes = _useVirtualList.items,
|
16061
17137
|
isLoadingAcademyNotes = _useVirtualList.isLoading,
|
@@ -16065,8 +17141,9 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16065
17141
|
handleItemAddedAcademyNote = _useVirtualList.handleItemAdded,
|
16066
17142
|
handleItemUpdatedAcademyNote = _useVirtualList.handleItemUpdated,
|
16067
17143
|
handleChangeSelectedItem = _useVirtualList.handleChangeSelectedItem;
|
16068
|
-
var _useVirtualList2 = useVirtualList(
|
16069
|
-
|
17144
|
+
var _useVirtualList2 = useVirtualList(_extends({}, DEFAULT_NOTE_FILTER, {
|
17145
|
+
types: [exports.NoteType.ToStudent],
|
17146
|
+
studentId: studentId
|
16070
17147
|
}), getNotesApi$1),
|
16071
17148
|
studentNotes = _useVirtualList2.items,
|
16072
17149
|
isLoadingStudentNotes = _useVirtualList2.isLoading,
|
@@ -16083,11 +17160,11 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16083
17160
|
};
|
16084
17161
|
var handleOpenCreateAcademyNoteDialog = function handleOpenCreateAcademyNoteDialog() {
|
16085
17162
|
handleCloseTooltip();
|
16086
|
-
setOpenNoteDialog(exports.NoteType.
|
17163
|
+
setOpenNoteDialog(exports.NoteType.ToAcademy);
|
16087
17164
|
};
|
16088
17165
|
var handleOpenCreateStudentNoteDialog = function handleOpenCreateStudentNoteDialog() {
|
16089
17166
|
handleCloseTooltip();
|
16090
|
-
setOpenNoteDialog(exports.NoteType.
|
17167
|
+
setOpenNoteDialog(exports.NoteType.ToStudent);
|
16091
17168
|
};
|
16092
17169
|
var handleCloseTooltip = function handleCloseTooltip() {
|
16093
17170
|
setNoteIdContextMenu(0);
|
@@ -16138,7 +17215,7 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16138
17215
|
var _temp = function () {
|
16139
17216
|
if (selectedItem) {
|
16140
17217
|
return Promise.resolve(updateNoteApi$1(selectedItem.id, data.content)).then(function (res) {
|
16141
|
-
if (selectedItem.type === exports.NoteType.
|
17218
|
+
if (selectedItem.type === exports.NoteType.ToStudent) handleItemUpdatedStudentNote(res.data);else handleItemUpdatedAcademyNote(res.data);
|
16142
17219
|
reactToastify.toast.success(t("update_note_successfully"));
|
16143
17220
|
});
|
16144
17221
|
} else {
|
@@ -16146,7 +17223,7 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16146
17223
|
return Promise.resolve(createNoteApi$1(_extends({}, data, {
|
16147
17224
|
type: openNoteDialog
|
16148
17225
|
}))).then(function (res) {
|
16149
|
-
if (res.data.type === exports.NoteType.
|
17226
|
+
if (res.data.type === exports.NoteType.ToStudent) handleItemAddedStudentNote(res.data);else handleItemAddedAcademyNote(res.data);
|
16150
17227
|
reactToastify.toast.success(t("create_note_successfully"));
|
16151
17228
|
});
|
16152
17229
|
}
|
@@ -16179,7 +17256,7 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16179
17256
|
var _temp5 = _catch(function () {
|
16180
17257
|
return Promise.resolve(deleteNoteApi$1(selectedItem.id)).then(function () {
|
16181
17258
|
reactToastify.toast.success(t("delete_note_successfully"));
|
16182
|
-
if (selectedItem.type === exports.NoteType.
|
17259
|
+
if (selectedItem.type === exports.NoteType.ToStudent) handleItemRemovedStudentNote(selectedItem);else handleItemRemovedAcademyNote(selectedItem);
|
16183
17260
|
reset();
|
16184
17261
|
});
|
16185
17262
|
}, function (error) {
|
@@ -16201,14 +17278,12 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16201
17278
|
handleSaveNote(studentNoteContent);
|
16202
17279
|
};
|
16203
17280
|
var noteDialogProps = {
|
16204
|
-
open: openNoteDialog === exports.NoteType.
|
17281
|
+
open: openNoteDialog === exports.NoteType.ToStudent && !openConfirmNote || openNoteDialog === exports.NoteType.ToAcademy,
|
16205
17282
|
selectedNote: selectedItem,
|
16206
|
-
tip: " (" + t(openNoteDialog === exports.NoteType.
|
17283
|
+
tip: " (" + t(openNoteDialog === exports.NoteType.ToStudent ? "student_parents" : "academy") + ")",
|
16207
17284
|
value: studentNoteContent,
|
16208
17285
|
onClose: handleCloseNoteDialog,
|
16209
|
-
onSaveNote: openNoteDialog === exports.NoteType.
|
16210
|
-
return handleSaveNote(content);
|
16211
|
-
}
|
17286
|
+
onSaveNote: openNoteDialog === exports.NoteType.ToStudent && !(selectedItem !== null && selectedItem !== void 0 && selectedItem.id) ? handleOpenConfirmStudentNoteDialog : handleSaveNote
|
16212
17287
|
};
|
16213
17288
|
return {
|
16214
17289
|
openConfirmNote: openConfirmNote,
|
@@ -16475,11 +17550,11 @@ var DrawerInfoTab = function DrawerInfoTab(_ref) {
|
|
16475
17550
|
}
|
16476
17551
|
}, data ? React__default.createElement(material.Typography, {
|
16477
17552
|
sx: contentStyle
|
16478
|
-
}, t(function (label) {
|
17553
|
+
}, !!data.grade ? t(function (label) {
|
16479
17554
|
return label ? t(label) : formatGrade(data.grade, t, language);
|
16480
17555
|
}((_BRIEF_GRADE_OPTIONS$ = BRIEF_GRADE_OPTIONS.find(function (o) {
|
16481
17556
|
return o.value === Number(data.grade);
|
16482
|
-
})) === null || _BRIEF_GRADE_OPTIONS$ === void 0 ? void 0 : _BRIEF_GRADE_OPTIONS$.label))) : React__default.createElement(material.Skeleton, {
|
17557
|
+
})) === null || _BRIEF_GRADE_OPTIONS$ === void 0 ? void 0 : _BRIEF_GRADE_OPTIONS$.label)) : "") : React__default.createElement(material.Skeleton, {
|
16483
17558
|
variant: "text",
|
16484
17559
|
width: 20,
|
16485
17560
|
sx: contentStyle
|
@@ -16672,7 +17747,7 @@ var ExamResultItem = function ExamResultItem(_ref) {
|
|
16672
17747
|
}, (_data$teacher = data.teacher) === null || _data$teacher === void 0 ? void 0 : _data$teacher.fullName))))));
|
16673
17748
|
};
|
16674
17749
|
|
16675
|
-
var
|
17750
|
+
var ExamResultList = function ExamResultList(_ref) {
|
16676
17751
|
var studentId = _ref.studentId,
|
16677
17752
|
data = _ref.data,
|
16678
17753
|
isLoading = _ref.isLoading,
|
@@ -22026,7 +23101,7 @@ var ExamResultDrawer = function ExamResultDrawer(_ref) {
|
|
22026
23101
|
fontSize: "13px",
|
22027
23102
|
fontWeight: 500
|
22028
23103
|
}
|
22029
|
-
}, student.schoolName), React__default.createElement(material.Typography, {
|
23104
|
+
}, student.schoolName), !!student.grade && React__default.createElement(material.Typography, {
|
22030
23105
|
sx: {
|
22031
23106
|
color: grey[500],
|
22032
23107
|
fontSize: "13px",
|
@@ -22064,7 +23139,9 @@ var DrawerExamResultTab = function DrawerExamResultTab(_ref) {
|
|
22064
23139
|
value = _ref.value,
|
22065
23140
|
studentId = _ref.studentId,
|
22066
23141
|
onViewQA = _ref.onViewQA;
|
22067
|
-
var _useVirtualList = useVirtualList(
|
23142
|
+
var _useVirtualList = useVirtualList(_extends({}, EXAM_SESSION_DEFAULT_FILTER, {
|
23143
|
+
studentId: studentId
|
23144
|
+
}), getExamSessionListApi),
|
22068
23145
|
items = _useVirtualList.items,
|
22069
23146
|
selectedItem = _useVirtualList.selectedItem,
|
22070
23147
|
isLoading = _useVirtualList.isLoading,
|
@@ -22081,7 +23158,7 @@ var DrawerExamResultTab = function DrawerExamResultTab(_ref) {
|
|
22081
23158
|
p: 3,
|
22082
23159
|
height: "100%"
|
22083
23160
|
}
|
22084
|
-
}, React__default.createElement(
|
23161
|
+
}, React__default.createElement(ExamResultList, {
|
22085
23162
|
data: items,
|
22086
23163
|
isLoading: isLoading,
|
22087
23164
|
onLoadMore: handleLoadMore,
|
@@ -24830,7 +25907,9 @@ var DrawerTextbookResultTab = function DrawerTextbookResultTab(_ref) {
|
|
24830
25907
|
selectedTab = _ref.selectedTab,
|
24831
25908
|
value = _ref.value,
|
24832
25909
|
onViewQA = _ref.onViewQA;
|
24833
|
-
var _useVirtualList = useVirtualList(
|
25910
|
+
var _useVirtualList = useVirtualList(_extends({}, TEXTBOOK_DEFAULT_FILTER, {
|
25911
|
+
studentId: studentId
|
25912
|
+
}), getTextbookListApi),
|
24834
25913
|
items = _useVirtualList.items,
|
24835
25914
|
selectedItem = _useVirtualList.selectedItem,
|
24836
25915
|
isLoading = _useVirtualList.isLoading,
|
@@ -25228,9 +26307,10 @@ var useDrawerAttendanceTab = function useDrawerAttendanceTab(studentId, onUpdate
|
|
25228
26307
|
var pusher = concurrentConnectionPusher === null || concurrentConnectionPusher === void 0 ? void 0 : concurrentConnectionPusher.pusher;
|
25229
26308
|
var channelName = React.useRef();
|
25230
26309
|
var channel = React.useRef();
|
25231
|
-
var
|
25232
|
-
|
25233
|
-
|
26310
|
+
var handleGetAttendanceByStudentId = React.useCallback(function (query) {
|
26311
|
+
return getAttendanceByStudentIdApi(studentId, query);
|
26312
|
+
}, [studentId]);
|
26313
|
+
var _useVirtualList = useVirtualList(ATTENDANCE_COURSE_DEFAULT_FILTER, handleGetAttendanceByStudentId),
|
25234
26314
|
items = _useVirtualList.items,
|
25235
26315
|
isLoading = _useVirtualList.isLoading,
|
25236
26316
|
handleLoadMore = _useVirtualList.handleLoadMore,
|
@@ -26316,9 +27396,9 @@ var useLessonClassList = function useLessonClassList(courseId) {
|
|
26316
27396
|
};
|
26317
27397
|
};
|
26318
27398
|
|
26319
|
-
var TEACHER_URL = BASE_URL + "/api/teacher";
|
26320
|
-
var getTeacherListApi = function getTeacherListApi(query) {
|
26321
|
-
return api.get("" + TEACHER_URL, {
|
27399
|
+
var TEACHER_URL$1 = BASE_URL + "/api/teacher";
|
27400
|
+
var getTeacherListApi$1 = function getTeacherListApi(query) {
|
27401
|
+
return api.get("" + TEACHER_URL$1, {
|
26322
27402
|
params: query
|
26323
27403
|
});
|
26324
27404
|
};
|
@@ -26339,7 +27419,7 @@ var useTeacherList = function useTeacherList() {
|
|
26339
27419
|
var getListTeacher = function getListTeacher() {
|
26340
27420
|
try {
|
26341
27421
|
var _temp = _catch(function () {
|
26342
|
-
return Promise.resolve(getTeacherListApi(teacherFilter)).then(function (res) {
|
27422
|
+
return Promise.resolve(getTeacherListApi$1(teacherFilter)).then(function (res) {
|
26343
27423
|
var _res$data;
|
26344
27424
|
setTeachers(((_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.items) || []);
|
26345
27425
|
});
|
@@ -26409,11 +27489,6 @@ var useClassDetail = function useClassDetail(_ref) {
|
|
26409
27489
|
var isSelected = function isSelected(id) {
|
26410
27490
|
return selected.indexOf(id) !== -1;
|
26411
27491
|
};
|
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
27492
|
var _useStudentClassList = useStudentClassList(classId),
|
26418
27493
|
getStudents = _useStudentClassList.getStudents,
|
26419
27494
|
studentListProps = _objectWithoutPropertiesLoose(_useStudentClassList, _excluded$b);
|
@@ -26803,12 +27878,6 @@ var useClassDetail = function useClassDetail(_ref) {
|
|
26803
27878
|
React.useEffect(function () {
|
26804
27879
|
document.title = t("study_peak") + " | " + t(PAGE_TITLE$4);
|
26805
27880
|
}, [t]);
|
26806
|
-
React.useEffect(function () {
|
26807
|
-
if (!isReadyRegisterPusher && registerPusherRef.current) {
|
26808
|
-
dispatch(setReadyRegisterPusher(true));
|
26809
|
-
registerPusherRef.current = false;
|
26810
|
-
}
|
26811
|
-
}, [isReadyRegisterPusher]);
|
26812
27881
|
return {
|
26813
27882
|
classId: classId,
|
26814
27883
|
schema: schema,
|
@@ -28473,11 +29542,6 @@ var useUserList = function useUserList(role) {
|
|
28473
29542
|
setOpenDeleteUserCsv = _useState10[1];
|
28474
29543
|
var inputFileRef = React.useRef(null);
|
28475
29544
|
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
29545
|
var handleChangeSelectedStudent = function handleChangeSelectedStudent(student) {
|
28482
29546
|
var _student$roles, _student$roles2;
|
28483
29547
|
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 +29853,6 @@ var useUserList = function useUserList(role) {
|
|
28789
29853
|
var userHeaders = USER_HEADERS.filter(function (i) {
|
28790
29854
|
return i.roles.includes(role);
|
28791
29855
|
});
|
28792
|
-
React.useEffect(function () {
|
28793
|
-
if (!isReadyRegisterPusher && registerPusherRef.current) {
|
28794
|
-
dispatch(setReadyRegisterPusher(true));
|
28795
|
-
registerPusherRef.current = false;
|
28796
|
-
}
|
28797
|
-
}, [isReadyRegisterPusher]);
|
28798
29856
|
return {
|
28799
29857
|
userDetail: userDetail,
|
28800
29858
|
userHeaders: userHeaders,
|
@@ -30726,9 +31784,9 @@ var TextbookSortBy$1;
|
|
30726
31784
|
var TeacherSortBy$1;
|
30727
31785
|
(function (TeacherSortBy) {
|
30728
31786
|
TeacherSortBy["CreatedAt"] = "CreatedAt";
|
30729
|
-
TeacherSortBy["Name"] = "UserProfile.FullName";
|
30730
|
-
TeacherSortBy["Email"] = "Email";
|
30731
|
-
TeacherSortBy["PhoneNumber"] = "UserProfile.PhoneNumber";
|
31787
|
+
TeacherSortBy["Name"] = "User.UserProfile.FullName";
|
31788
|
+
TeacherSortBy["Email"] = "User.Email";
|
31789
|
+
TeacherSortBy["PhoneNumber"] = "User.UserProfile.PhoneNumber";
|
30732
31790
|
})(TeacherSortBy$1 || (TeacherSortBy$1 = {}));
|
30733
31791
|
var ExamType$1;
|
30734
31792
|
(function (ExamType) {
|
@@ -32495,9 +33553,9 @@ var ShareToTeacherDialog = function ShareToTeacherDialog(_ref) {
|
|
32495
33553
|
}, t("cancel")))));
|
32496
33554
|
};
|
32497
33555
|
|
32498
|
-
var TEACHER_URL$
|
32499
|
-
var getTeacherListApi$
|
32500
|
-
return api.get("" + TEACHER_URL$
|
33556
|
+
var TEACHER_URL$2 = BASE_URL + "/api/teacher";
|
33557
|
+
var getTeacherListApi$2 = function getTeacherListApi(query) {
|
33558
|
+
return api.get("" + TEACHER_URL$2, {
|
32501
33559
|
params: query
|
32502
33560
|
});
|
32503
33561
|
};
|
@@ -32508,7 +33566,7 @@ var useTextbookShare = function useTextbookShare(props) {
|
|
32508
33566
|
role = props.role,
|
32509
33567
|
isSuperAdmin = props.isSuperAdmin;
|
32510
33568
|
var _useList = useList(!isSuperAdmin ? function (search) {
|
32511
|
-
return getTeacherListApi$
|
33569
|
+
return getTeacherListApi$2(search);
|
32512
33570
|
} : null, DefaultTeacherQuery),
|
32513
33571
|
filterShare = _useList.filter,
|
32514
33572
|
textSearchShareRef = _useList.textSearchRef,
|
@@ -37539,17 +38597,17 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
|
|
37539
38597
|
sx: {
|
37540
38598
|
color: inforErrors && submitCount ? error.main + "!important" : "gray"
|
37541
38599
|
}
|
37542
|
-
}, a11yProps$
|
38600
|
+
}, a11yProps$2(0))), React__default.createElement(material.Tab, Object.assign({
|
37543
38601
|
label: i18n.t("textbook.contents"),
|
37544
38602
|
sx: {
|
37545
38603
|
color: contentsErrors && submitCount ? error.main + "!important" : "gray"
|
37546
38604
|
}
|
37547
|
-
}, a11yProps$
|
38605
|
+
}, 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
38606
|
label: i18n.t("textbook.owners"),
|
37549
38607
|
sx: {
|
37550
38608
|
color: textbookOwnersErrors && submitCount ? error.main + "!important" : "gray"
|
37551
38609
|
}
|
37552
|
-
}, a11yProps$
|
38610
|
+
}, a11yProps$2(2))))), React__default.createElement(CustomTextbookTab, {
|
37553
38611
|
value: selected,
|
37554
38612
|
index: 0
|
37555
38613
|
}, React__default.createElement(TextbookInfoTab, Object.assign({}, formikProps, {
|
@@ -37571,7 +38629,7 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
|
|
37571
38629
|
disabled: ownersDisabled
|
37572
38630
|
}))))));
|
37573
38631
|
};
|
37574
|
-
var a11yProps$
|
38632
|
+
var a11yProps$2 = function a11yProps(index) {
|
37575
38633
|
return {
|
37576
38634
|
id: "textbook-tab-" + index,
|
37577
38635
|
"aria-controls": "textbook-tabpanel-" + index
|
@@ -37968,6 +39026,448 @@ var PreparedTextbookList = function PreparedTextbookList(_ref) {
|
|
37968
39026
|
}));
|
37969
39027
|
};
|
37970
39028
|
|
39029
|
+
var AnnouncementEvent;
|
39030
|
+
(function (AnnouncementEvent) {
|
39031
|
+
AnnouncementEvent["ReceivedNewNote"] = "ReceivedNewNote";
|
39032
|
+
AnnouncementEvent["UpdatedNote"] = "UpdatedNote";
|
39033
|
+
AnnouncementEvent["DeletedNote"] = "DeletedNote";
|
39034
|
+
})(AnnouncementEvent || (AnnouncementEvent = {}));
|
39035
|
+
(function (AnnouncementType) {
|
39036
|
+
AnnouncementType["ReceivedNewNote"] = "ReceivedNewNote";
|
39037
|
+
})(exports.AnnouncementType || (exports.AnnouncementType = {}));
|
39038
|
+
|
39039
|
+
var stringToColor = function stringToColor(string) {
|
39040
|
+
var hash = 0;
|
39041
|
+
var i;
|
39042
|
+
for (i = 0; i < string.length; i += 1) {
|
39043
|
+
hash = string.charCodeAt(i) + ((hash << 5) - hash);
|
39044
|
+
}
|
39045
|
+
var color = "#";
|
39046
|
+
for (i = 0; i < 3; i += 1) {
|
39047
|
+
var value = hash >> i * 8 & 0xff;
|
39048
|
+
color += ("00" + value.toString(16)).slice(-2);
|
39049
|
+
}
|
39050
|
+
return color;
|
39051
|
+
};
|
39052
|
+
var stringAvatar = function stringAvatar(name) {
|
39053
|
+
var _name$split$0$, _name$split$, _name$split$1$, _name$split$2;
|
39054
|
+
return {
|
39055
|
+
sx: {
|
39056
|
+
bgcolor: stringToColor(name)
|
39057
|
+
},
|
39058
|
+
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$ : "")
|
39059
|
+
};
|
39060
|
+
};
|
39061
|
+
var convertAnnouncementData = function convertAnnouncementData(t, role, announcement) {
|
39062
|
+
var isTeacherSite = role === exports.Role.Teacher;
|
39063
|
+
var data = announcement.data;
|
39064
|
+
switch (announcement.type) {
|
39065
|
+
case exports.AnnouncementType.ReceivedNewNote:
|
39066
|
+
var extraData = data.data;
|
39067
|
+
var contents = extraData.split("|");
|
39068
|
+
var noteType = contents[0];
|
39069
|
+
var content = contents.slice(1).join("|");
|
39070
|
+
var isAdmin = noteType === exports.NoteType[exports.NoteType.AdminToAllTeacher] || noteType === exports.NoteType[exports.NoteType.AdminToAllAdmin];
|
39071
|
+
return {
|
39072
|
+
content: content,
|
39073
|
+
name: isAdmin ? isTeacherSite ? t("admin") : t("admin_n", {
|
39074
|
+
admin: data.senderFullName
|
39075
|
+
}) : t("teacher_n", {
|
39076
|
+
teacher: data.senderFullName
|
39077
|
+
}),
|
39078
|
+
image: isAdmin && isTeacherSite ? undefined : data.senderAvatar,
|
39079
|
+
action: t("sent_a_memo")
|
39080
|
+
};
|
39081
|
+
default:
|
39082
|
+
return {
|
39083
|
+
name: data.senderFullName,
|
39084
|
+
image: data.senderAvatar,
|
39085
|
+
content: data.data,
|
39086
|
+
action: ""
|
39087
|
+
};
|
39088
|
+
}
|
39089
|
+
};
|
39090
|
+
|
39091
|
+
var AnnouncementItem = function AnnouncementItem(_ref) {
|
39092
|
+
var data = _ref.data,
|
39093
|
+
role = _ref.role,
|
39094
|
+
renderLink = _ref.renderLink,
|
39095
|
+
onLoad = _ref.onLoad;
|
39096
|
+
var _useTranslation = reactI18next.useTranslation(),
|
39097
|
+
t = _useTranslation.t;
|
39098
|
+
React.useEffect(function () {
|
39099
|
+
onLoad();
|
39100
|
+
}, []);
|
39101
|
+
var announcementData = convertAnnouncementData(t, role, data);
|
39102
|
+
return React__default.createElement(React.Fragment, null, renderLink(React__default.createElement(material.ListItemButton, {
|
39103
|
+
sx: _extends({
|
39104
|
+
py: 1.5,
|
39105
|
+
px: 2.5,
|
39106
|
+
mt: "1px"
|
39107
|
+
}, !data.isRead && {
|
39108
|
+
bgcolor: "action.selected"
|
39109
|
+
})
|
39110
|
+
}, React__default.createElement(material.Stack, {
|
39111
|
+
direction: "row",
|
39112
|
+
gap: 1,
|
39113
|
+
justifyContent: "space-between",
|
39114
|
+
width: "100%"
|
39115
|
+
}, React__default.createElement(material.Stack, {
|
39116
|
+
direction: "row",
|
39117
|
+
gap: 1
|
39118
|
+
}, React__default.createElement(material.ListItemAvatar, null, React__default.createElement(material.Avatar, Object.assign({}, stringAvatar(announcementData.name), {
|
39119
|
+
src: announcementData.image
|
39120
|
+
}))), React__default.createElement(material.ListItemText, {
|
39121
|
+
sx: {
|
39122
|
+
marginBlock: 0
|
39123
|
+
},
|
39124
|
+
primary: React__default.createElement(material.Typography, null, React__default.createElement(material.Typography, {
|
39125
|
+
fontWeight: 600,
|
39126
|
+
display: "inline-block"
|
39127
|
+
}, announcementData.name), announcementData.action && React__default.createElement(material.Typography, {
|
39128
|
+
display: "inline-block",
|
39129
|
+
px: "4px"
|
39130
|
+
}, announcementData.action + ":"), React__default.createElement(material.Typography, {
|
39131
|
+
display: "inline-block",
|
39132
|
+
sx: {
|
39133
|
+
display: "-webkit-box",
|
39134
|
+
lineClamp: 2,
|
39135
|
+
WebkitLineClamp: 2,
|
39136
|
+
WebkitBoxOrient: "vertical",
|
39137
|
+
boxOrient: "vertical",
|
39138
|
+
overflow: "hidden"
|
39139
|
+
},
|
39140
|
+
dangerouslySetInnerHTML: {
|
39141
|
+
__html: announcementData.content || ""
|
39142
|
+
}
|
39143
|
+
})),
|
39144
|
+
secondary: React__default.createElement(material.Typography, {
|
39145
|
+
variant: "caption",
|
39146
|
+
sx: {
|
39147
|
+
mt: 0.5,
|
39148
|
+
display: "flex",
|
39149
|
+
alignItems: "center",
|
39150
|
+
color: "text.disabled"
|
39151
|
+
}
|
39152
|
+
}, React__default.createElement(material.Box, {
|
39153
|
+
sx: {
|
39154
|
+
marginRight: "8px"
|
39155
|
+
}
|
39156
|
+
}, React__default.createElement(fa6.FaClockRotateLeft, {
|
39157
|
+
size: 12
|
39158
|
+
})), timAgo(data.createdAt, t, true))
|
39159
|
+
})))), data));
|
39160
|
+
};
|
39161
|
+
|
39162
|
+
var AnnouncementList = function AnnouncementList(_ref) {
|
39163
|
+
var role = _ref.role,
|
39164
|
+
items = _ref.items,
|
39165
|
+
isLoading = _ref.isLoading,
|
39166
|
+
onLoadMore = _ref.onLoadMore,
|
39167
|
+
renderLink = _ref.renderLink;
|
39168
|
+
return React__default.createElement(VirtualListView, {
|
39169
|
+
data: items,
|
39170
|
+
loading: isLoading,
|
39171
|
+
listHeight: 0,
|
39172
|
+
containerProps: {
|
39173
|
+
sx: {
|
39174
|
+
height: "100%"
|
39175
|
+
}
|
39176
|
+
},
|
39177
|
+
renderItem: function renderItem(item, index, measure) {
|
39178
|
+
return React__default.createElement(AnnouncementItem, {
|
39179
|
+
role: role,
|
39180
|
+
key: index,
|
39181
|
+
data: item,
|
39182
|
+
renderLink: renderLink,
|
39183
|
+
onLoad: measure
|
39184
|
+
});
|
39185
|
+
},
|
39186
|
+
onLoadMore: onLoadMore
|
39187
|
+
});
|
39188
|
+
};
|
39189
|
+
|
39190
|
+
var DEFAULT_ANNOUNCEMENT_FILTER = {
|
39191
|
+
currentPage: 1,
|
39192
|
+
pageSize: 10,
|
39193
|
+
sortColumnDirection: exports.OrderType.DESC,
|
39194
|
+
sortColumnName: "CreatedAt"
|
39195
|
+
};
|
39196
|
+
var ANNOUNCEMENT_CHANNEL = "ANNOUNCEMENT_A{academy}_U{userId}_CHANNEL";
|
39197
|
+
|
39198
|
+
var ANNOUNCEMENT_URL = BASE_URL + "/api/announcements";
|
39199
|
+
var getAnnouncementListApi = function getAnnouncementListApi(query) {
|
39200
|
+
return api.get("" + ANNOUNCEMENT_URL, {
|
39201
|
+
params: query
|
39202
|
+
});
|
39203
|
+
};
|
39204
|
+
var getTotalNumberUnreadAnnouncementsApi = function getTotalNumberUnreadAnnouncementsApi() {
|
39205
|
+
return api.get(ANNOUNCEMENT_URL + "/unread");
|
39206
|
+
};
|
39207
|
+
var markAsReadAnnouncementsApi = function markAsReadAnnouncementsApi() {
|
39208
|
+
return api.post(ANNOUNCEMENT_URL + "/mark-as-read");
|
39209
|
+
};
|
39210
|
+
var markAsReadAnnouncementByIdApi = function markAsReadAnnouncementByIdApi(id) {
|
39211
|
+
return api.post(ANNOUNCEMENT_URL + "/" + id + "/mark-as-read");
|
39212
|
+
};
|
39213
|
+
|
39214
|
+
var AnnouncementContainer = function AnnouncementContainer(_ref) {
|
39215
|
+
var role = _ref.role,
|
39216
|
+
renderLink = _ref.renderLink,
|
39217
|
+
renderViewNoteLink = _ref.renderViewNoteLink;
|
39218
|
+
var _useTranslation = reactI18next.useTranslation(),
|
39219
|
+
t = _useTranslation.t;
|
39220
|
+
var dispatch = reactRedux.useDispatch();
|
39221
|
+
var user = reactRedux.useSelector(function (state) {
|
39222
|
+
var _state$common;
|
39223
|
+
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
|
39224
|
+
});
|
39225
|
+
var academyDomain = user === null || user === void 0 ? void 0 : user.academyDomain;
|
39226
|
+
var concurrentConnectionPusher = reactRedux.useSelector(function (state) {
|
39227
|
+
var _state$common2;
|
39228
|
+
return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.concurrentConnectionPusher;
|
39229
|
+
});
|
39230
|
+
var totalUnreadMessages = reactRedux.useSelector(function (state) {
|
39231
|
+
var _state$common3;
|
39232
|
+
return state === null || state === void 0 ? void 0 : (_state$common3 = state.common) === null || _state$common3 === void 0 ? void 0 : _state$common3.totalUnreadMessages;
|
39233
|
+
});
|
39234
|
+
var pusher = concurrentConnectionPusher === null || concurrentConnectionPusher === void 0 ? void 0 : concurrentConnectionPusher.pusher;
|
39235
|
+
var channel = React.useRef();
|
39236
|
+
var channelName = React.useRef();
|
39237
|
+
var _useState = React.useState(false),
|
39238
|
+
openPopover = _useState[0],
|
39239
|
+
setOpenPopover = _useState[1];
|
39240
|
+
var anchorEl = React.useRef(null);
|
39241
|
+
var handleOpenPopover = function handleOpenPopover() {
|
39242
|
+
setOpenPopover(true);
|
39243
|
+
};
|
39244
|
+
var handleClosePopover = function handleClosePopover() {
|
39245
|
+
setOpenPopover(false);
|
39246
|
+
};
|
39247
|
+
var _useVirtualList = useVirtualList({}, getAnnouncementListApi),
|
39248
|
+
filter = _useVirtualList.filter,
|
39249
|
+
items = _useVirtualList.items,
|
39250
|
+
isLoading = _useVirtualList.isLoading,
|
39251
|
+
handleLoadMore = _useVirtualList.handleLoadMore,
|
39252
|
+
handleItemAdded = _useVirtualList.handleItemAdded,
|
39253
|
+
setItems = _useVirtualList.setItems,
|
39254
|
+
handleChangeFilter = _useVirtualList.handleChangeFilter,
|
39255
|
+
getItems = _useVirtualList.getItems;
|
39256
|
+
var handleNewAnnouncement = function handleNewAnnouncement(data) {
|
39257
|
+
try {
|
39258
|
+
var announcement = JSON.parse(data);
|
39259
|
+
openPopover && handleItemAdded(announcement);
|
39260
|
+
} catch (error) {
|
39261
|
+
console.log(error);
|
39262
|
+
}
|
39263
|
+
dispatch(setTotalUnreadMessages(totalUnreadMessages + 1));
|
39264
|
+
};
|
39265
|
+
var handleDeletedAnnouncement = function handleDeletedAnnouncement(_data) {
|
39266
|
+
openPopover && getItems();
|
39267
|
+
handleGetTotalUnread();
|
39268
|
+
};
|
39269
|
+
var handleUpdatedAnnouncement = function handleUpdatedAnnouncement(data) {
|
39270
|
+
try {
|
39271
|
+
var announcement = JSON.parse(data);
|
39272
|
+
openPopover && setItems(function (state) {
|
39273
|
+
return state.map(function (i) {
|
39274
|
+
if (i.id !== announcement.id) return i;
|
39275
|
+
return _extends({}, i, {
|
39276
|
+
data: _extends({}, i.data, {
|
39277
|
+
data: announcement.data.data
|
39278
|
+
})
|
39279
|
+
});
|
39280
|
+
});
|
39281
|
+
});
|
39282
|
+
} catch (error) {
|
39283
|
+
console.log(error);
|
39284
|
+
}
|
39285
|
+
};
|
39286
|
+
var handleMarkAsRead = function handleMarkAsRead() {
|
39287
|
+
try {
|
39288
|
+
var _temp2 = function _temp2() {
|
39289
|
+
dispatch(setLoading(false));
|
39290
|
+
};
|
39291
|
+
dispatch(setLoading(true));
|
39292
|
+
var _temp = _catch(function () {
|
39293
|
+
return Promise.resolve(markAsReadAnnouncementsApi()).then(function () {
|
39294
|
+
setItems(function (state) {
|
39295
|
+
return state.map(function (i) {
|
39296
|
+
return _extends({}, i, {
|
39297
|
+
isRead: true
|
39298
|
+
});
|
39299
|
+
});
|
39300
|
+
});
|
39301
|
+
dispatch(setTotalUnreadMessages(0));
|
39302
|
+
});
|
39303
|
+
}, function (error) {
|
39304
|
+
reactToastify.toast.error(getErrorMessage(t, error));
|
39305
|
+
});
|
39306
|
+
return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
|
39307
|
+
} catch (e) {
|
39308
|
+
return Promise.reject(e);
|
39309
|
+
}
|
39310
|
+
};
|
39311
|
+
var handleMarkAsReadById = function handleMarkAsReadById(id, loading) {
|
39312
|
+
try {
|
39313
|
+
var _temp4 = function _temp4() {
|
39314
|
+
loading && dispatch(setLoading(false));
|
39315
|
+
};
|
39316
|
+
loading && dispatch(setLoading(true));
|
39317
|
+
var _temp3 = _catch(function () {
|
39318
|
+
return Promise.resolve(markAsReadAnnouncementByIdApi(id)).then(function () {
|
39319
|
+
setItems(function (state) {
|
39320
|
+
return state.map(function (i) {
|
39321
|
+
return _extends({}, i, {
|
39322
|
+
isRead: i.id === id ? true : i.isRead
|
39323
|
+
});
|
39324
|
+
});
|
39325
|
+
});
|
39326
|
+
dispatch(setTotalUnreadMessages(Math.max(0, totalUnreadMessages - 1)));
|
39327
|
+
});
|
39328
|
+
}, function (error) {
|
39329
|
+
reactToastify.toast.error(getErrorMessage(t, error));
|
39330
|
+
});
|
39331
|
+
return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
|
39332
|
+
} catch (e) {
|
39333
|
+
return Promise.reject(e);
|
39334
|
+
}
|
39335
|
+
};
|
39336
|
+
var handleCloseAndMarkRead = function handleCloseAndMarkRead(data) {
|
39337
|
+
handleClosePopover();
|
39338
|
+
if (!data.isRead) handleMarkAsReadById(data.id);
|
39339
|
+
};
|
39340
|
+
var renderNotiLink = function renderNotiLink(children, data) {
|
39341
|
+
return renderLink(children, data, function () {
|
39342
|
+
return handleCloseAndMarkRead(data);
|
39343
|
+
});
|
39344
|
+
};
|
39345
|
+
var cleanupPusher = function cleanupPusher() {
|
39346
|
+
channel.current && channel.current.unbind(AnnouncementEvent.ReceivedNewNote, handleNewAnnouncement);
|
39347
|
+
channel.current && channel.current.unbind(AnnouncementEvent.UpdatedNote, handleUpdatedAnnouncement);
|
39348
|
+
channel.current && channel.current.unbind(AnnouncementEvent.DeletedNote, handleDeletedAnnouncement);
|
39349
|
+
channelName.current && pusher && pusher.unsubscribe(channelName.current);
|
39350
|
+
};
|
39351
|
+
React.useEffect(function () {
|
39352
|
+
if (concurrentConnectionPusher !== null && concurrentConnectionPusher !== void 0 && concurrentConnectionPusher.academyDomain && academyDomain && user !== null && user !== void 0 && user.id) {
|
39353
|
+
var normalizedAcademyDomain = academyDomain.trim().toUpperCase();
|
39354
|
+
channelName.current = ANNOUNCEMENT_CHANNEL.replace("{academy}", normalizedAcademyDomain).replace("{userId}", user.id);
|
39355
|
+
channel.current = pusher.subscribe(channelName.current);
|
39356
|
+
channel.current.bind(AnnouncementEvent.ReceivedNewNote, handleNewAnnouncement);
|
39357
|
+
channel.current.bind(AnnouncementEvent.UpdatedNote, handleUpdatedAnnouncement);
|
39358
|
+
channel.current.bind(AnnouncementEvent.DeletedNote, handleDeletedAnnouncement);
|
39359
|
+
}
|
39360
|
+
return cleanupPusher;
|
39361
|
+
}, [academyDomain, user === null || user === void 0 ? void 0 : user.id, concurrentConnectionPusher === null || concurrentConnectionPusher === void 0 ? void 0 : concurrentConnectionPusher.academyDomain, totalUnreadMessages, openPopover, JSON.stringify(filter)]);
|
39362
|
+
var handleGetTotalUnread = function handleGetTotalUnread() {
|
39363
|
+
try {
|
39364
|
+
var _temp5 = _catch(function () {
|
39365
|
+
return Promise.resolve(getTotalNumberUnreadAnnouncementsApi()).then(function (res) {
|
39366
|
+
dispatch(setTotalUnreadMessages(res.data));
|
39367
|
+
});
|
39368
|
+
}, function (error) {
|
39369
|
+
console.log({
|
39370
|
+
error: error
|
39371
|
+
});
|
39372
|
+
});
|
39373
|
+
return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(function () {}) : void 0);
|
39374
|
+
} catch (e) {
|
39375
|
+
return Promise.reject(e);
|
39376
|
+
}
|
39377
|
+
};
|
39378
|
+
React.useEffect(function () {
|
39379
|
+
if (academyDomain && user !== null && user !== void 0 && user.id) handleGetTotalUnread();
|
39380
|
+
}, [academyDomain, user === null || user === void 0 ? void 0 : user.id]);
|
39381
|
+
React.useEffect(function () {
|
39382
|
+
handleChangeFilter(openPopover ? DEFAULT_ANNOUNCEMENT_FILTER : {});
|
39383
|
+
}, [openPopover]);
|
39384
|
+
return React__default.createElement(material.Box, null, React__default.createElement(material.IconButton, {
|
39385
|
+
ref: anchorEl,
|
39386
|
+
className: "ms-2",
|
39387
|
+
onClick: handleOpenPopover
|
39388
|
+
}, React__default.createElement(material.Badge, {
|
39389
|
+
badgeContent: totalUnreadMessages,
|
39390
|
+
max: 9,
|
39391
|
+
color: "error"
|
39392
|
+
}, React__default.createElement(fa.FaBell, {
|
39393
|
+
size: 20,
|
39394
|
+
color: colors.blue[500]
|
39395
|
+
}))), React__default.createElement(material.Popover, {
|
39396
|
+
open: openPopover,
|
39397
|
+
anchorEl: anchorEl.current,
|
39398
|
+
onClose: handleClosePopover,
|
39399
|
+
anchorOrigin: {
|
39400
|
+
vertical: "bottom",
|
39401
|
+
horizontal: "right"
|
39402
|
+
},
|
39403
|
+
slotProps: {
|
39404
|
+
paper: {
|
39405
|
+
sx: {
|
39406
|
+
width: 360
|
39407
|
+
}
|
39408
|
+
}
|
39409
|
+
}
|
39410
|
+
}, React__default.createElement(material.Stack, {
|
39411
|
+
height: "100%",
|
39412
|
+
direction: "column"
|
39413
|
+
}, React__default.createElement(material.Stack, {
|
39414
|
+
direction: "row",
|
39415
|
+
justifyContent: "space-between",
|
39416
|
+
gap: 2,
|
39417
|
+
sx: {
|
39418
|
+
py: 2,
|
39419
|
+
px: 2.5
|
39420
|
+
}
|
39421
|
+
}, React__default.createElement(material.Box, {
|
39422
|
+
sx: {
|
39423
|
+
flexGrow: 1
|
39424
|
+
}
|
39425
|
+
}, React__default.createElement(material.Typography, {
|
39426
|
+
variant: "subtitle1"
|
39427
|
+
}, t("notifications")), totalUnreadMessages > 0 && React__default.createElement(material.Typography, {
|
39428
|
+
variant: "body2",
|
39429
|
+
sx: {
|
39430
|
+
color: "text.secondary"
|
39431
|
+
}
|
39432
|
+
}, t("you_have_n_unread_messages", {
|
39433
|
+
n: totalUnreadMessages
|
39434
|
+
})), renderViewNoteLink && React__default.createElement(material.Box, null, renderViewNoteLink(React__default.createElement(material.Typography, {
|
39435
|
+
sx: {
|
39436
|
+
fontWeight: 600,
|
39437
|
+
color: grey[600],
|
39438
|
+
fontSize: "14px",
|
39439
|
+
"&:hover": {
|
39440
|
+
textDecoration: "underline",
|
39441
|
+
color: green[700]
|
39442
|
+
}
|
39443
|
+
}
|
39444
|
+
}, t("view_notes")), handleClosePopover))), totalUnreadMessages > 0 && React__default.createElement(material.Stack, {
|
39445
|
+
direction: "column"
|
39446
|
+
}, React__default.createElement(material.Tooltip, {
|
39447
|
+
title: t("mark_as_read")
|
39448
|
+
}, React__default.createElement(material.IconButton, {
|
39449
|
+
color: "primary",
|
39450
|
+
onClick: handleMarkAsRead
|
39451
|
+
}, React__default.createElement(bs.BsCheckAll, null))))), React__default.createElement(material.Divider, {
|
39452
|
+
component: "div"
|
39453
|
+
}), React__default.createElement(material.Stack, {
|
39454
|
+
direction: "column",
|
39455
|
+
sx: {
|
39456
|
+
height: {
|
39457
|
+
xs: 280,
|
39458
|
+
sm: 400
|
39459
|
+
},
|
39460
|
+
py: 2
|
39461
|
+
}
|
39462
|
+
}, React__default.createElement(AnnouncementList, {
|
39463
|
+
role: role,
|
39464
|
+
items: items,
|
39465
|
+
isLoading: isLoading,
|
39466
|
+
onLoadMore: handleLoadMore,
|
39467
|
+
renderLink: renderNotiLink
|
39468
|
+
})))));
|
39469
|
+
};
|
39470
|
+
|
37971
39471
|
var MenuItemCustom = material.styled(MenuItem)(function () {
|
37972
39472
|
return {
|
37973
39473
|
'&.Mui-selected': {
|
@@ -38694,17 +40194,19 @@ var Header = function Header(_ref) {
|
|
38694
40194
|
role = _ref.role,
|
38695
40195
|
history = _ref.history,
|
38696
40196
|
link = _ref.link,
|
38697
|
-
onSignOut = _ref.onSignOut
|
40197
|
+
onSignOut = _ref.onSignOut,
|
40198
|
+
renderNotificationLink = _ref.renderNotificationLink,
|
40199
|
+
renderViewNoteLink = _ref.renderViewNoteLink;
|
38698
40200
|
var Link = link;
|
38699
40201
|
var _useTranslation = reactI18next.useTranslation(),
|
38700
40202
|
t = _useTranslation.t;
|
38701
40203
|
var theme = material.useTheme();
|
38702
|
-
var param = window.location.pathname;
|
38703
40204
|
var language = reactRedux.useSelector(function (state) {
|
38704
40205
|
var _state$common;
|
38705
40206
|
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.language;
|
38706
40207
|
});
|
38707
|
-
var isTeacherSide =
|
40208
|
+
var isTeacherSide = role === exports.Role.Teacher;
|
40209
|
+
var isStudentSide = role === exports.Role.Student;
|
38708
40210
|
var isLargerThanXL = material.useMediaQuery(theme.breakpoints.up("xl"));
|
38709
40211
|
var academyDomain = reactRedux.useSelector(function (state) {
|
38710
40212
|
var _state$common2, _state$common2$user;
|
@@ -38715,6 +40217,7 @@ var Header = function Header(_ref) {
|
|
38715
40217
|
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
40218
|
});
|
38717
40219
|
var isAcademy = isLearningSpace || academyDomain;
|
40220
|
+
var showAnnouncement = !isStudentSide && isAcademy;
|
38718
40221
|
var logo = React.useMemo(function () {
|
38719
40222
|
if (isTeacherSide) {
|
38720
40223
|
return language === exports.Language.en ? React__default.createElement(teacherFullLogoEn, null) : React__default.createElement(teacherFullLogoKo, null);
|
@@ -38808,7 +40311,11 @@ var Header = function Header(_ref) {
|
|
38808
40311
|
}, React__default.createElement(singleLogo, null))), React__default.createElement(material.Stack, {
|
38809
40312
|
className: "me-2",
|
38810
40313
|
display: "none"
|
38811
|
-
}, React__default.createElement(TheLanguageDropdown, null))
|
40314
|
+
}, React__default.createElement(TheLanguageDropdown, null)), showAnnouncement && renderNotificationLink && React__default.createElement(AnnouncementContainer, {
|
40315
|
+
role: role,
|
40316
|
+
renderLink: renderNotificationLink,
|
40317
|
+
renderViewNoteLink: renderViewNoteLink
|
40318
|
+
})));
|
38812
40319
|
};
|
38813
40320
|
var HeaderLink = function HeaderLink(_ref3) {
|
38814
40321
|
var data = _ref3.data,
|
@@ -38822,7 +40329,7 @@ var HeaderLink = function HeaderLink(_ref3) {
|
|
38822
40329
|
return React__default.createElement(React.Fragment, null, render(data, isActive));
|
38823
40330
|
};
|
38824
40331
|
|
38825
|
-
var useLayoutContext = function useLayoutContext(role,
|
40332
|
+
var useLayoutContext = function useLayoutContext(role, showLoadingAcademy, domain) {
|
38826
40333
|
var _currentPusher$connec2;
|
38827
40334
|
if (showLoadingAcademy === void 0) {
|
38828
40335
|
showLoadingAcademy = true;
|
@@ -38836,13 +40343,9 @@ var useLayoutContext = function useLayoutContext(role, pusherRegisterUrls, showL
|
|
38836
40343
|
var _state$common;
|
38837
40344
|
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
|
38838
40345
|
});
|
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
40346
|
var concurrentConnectionPusher = reactRedux.useSelector(function (state) {
|
38844
|
-
var _state$
|
38845
|
-
return state === null || state === void 0 ? void 0 : (_state$
|
40347
|
+
var _state$common2;
|
40348
|
+
return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.concurrentConnectionPusher;
|
38846
40349
|
});
|
38847
40350
|
var currentPusher = concurrentConnectionPusher === null || concurrentConnectionPusher === void 0 ? void 0 : concurrentConnectionPusher.pusher;
|
38848
40351
|
var roles = (user === null || user === void 0 ? void 0 : user.roles) || [];
|
@@ -38923,53 +40426,36 @@ var useLayoutContext = function useLayoutContext(role, pusherRegisterUrls, showL
|
|
38923
40426
|
}
|
38924
40427
|
};
|
38925
40428
|
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
|
-
}));
|
40429
|
+
var _currentPusher$connec;
|
40430
|
+
if ((!academyDomain || !(user !== null && user !== void 0 && user.id)) && role !== exports.Role.Student) return;
|
40431
|
+
if (academyDomain !== (concurrentConnectionPusher === null || concurrentConnectionPusher === void 0 ? void 0 : concurrentConnectionPusher.academyDomain) || !academyDomain && !(concurrentConnectionPusher !== null && concurrentConnectionPusher !== void 0 && concurrentConnectionPusher.academyDomain) && !concurrentConnectionPusher.isRegistered) {
|
40432
|
+
var _headers;
|
40433
|
+
if (currentPusher) {
|
40434
|
+
currentPusher.disconnect();
|
38969
40435
|
}
|
38970
|
-
|
40436
|
+
var token = getAccessToken();
|
40437
|
+
var pusher = new Pusher$1(PUSHER_CONFIG.key, {
|
40438
|
+
cluster: PUSHER_CONFIG.cluster,
|
40439
|
+
authEndpoint: (academyDomain ? BASE_URL : SUPER_ADMIN_BASE_URL) + "/api/auth/pusher",
|
40440
|
+
auth: {
|
40441
|
+
params: {},
|
40442
|
+
headers: (_headers = {
|
40443
|
+
Authorization: "Bearer " + token
|
40444
|
+
}, _headers[AcademyHeaders] = academyDomain, _headers)
|
40445
|
+
}
|
40446
|
+
});
|
40447
|
+
dispatch(setConcurrentConnectionPusher({
|
40448
|
+
pusher: pusher,
|
40449
|
+
academyDomain: academyDomain,
|
40450
|
+
isRegistered: true
|
40451
|
+
}));
|
40452
|
+
} else if ((currentPusher === null || currentPusher === void 0 ? void 0 : (_currentPusher$connec = currentPusher.connection) === null || _currentPusher$connec === void 0 ? void 0 : _currentPusher$connec.state) === "disconnected") {
|
40453
|
+
currentPusher.connect();
|
38971
40454
|
}
|
38972
|
-
|
40455
|
+
return function () {
|
40456
|
+
currentPusher === null || currentPusher === void 0 ? void 0 : currentPusher.disconnect();
|
40457
|
+
};
|
40458
|
+
}, [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
40459
|
React.useEffect(function () {
|
38974
40460
|
!(user !== null && user !== void 0 && user.id) && loadInfo();
|
38975
40461
|
}, [user === null || user === void 0 ? void 0 : user.id]);
|
@@ -38995,14 +40481,12 @@ var useLayoutContext = function useLayoutContext(role, pusherRegisterUrls, showL
|
|
38995
40481
|
var LayoutContext = function LayoutContext(_ref) {
|
38996
40482
|
var children = _ref.children,
|
38997
40483
|
role = _ref.role,
|
38998
|
-
_ref$pusherRegisterUr = _ref.pusherRegisterUrls,
|
38999
|
-
pusherRegisterUrls = _ref$pusherRegisterUr === void 0 ? [] : _ref$pusherRegisterUr,
|
39000
40484
|
showLoadingAcademy = _ref.showLoadingAcademy;
|
39001
40485
|
var user = reactRedux.useSelector(function (state) {
|
39002
40486
|
var _state$common;
|
39003
40487
|
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
|
39004
40488
|
});
|
39005
|
-
useLayoutContext(role,
|
40489
|
+
useLayoutContext(role, showLoadingAcademy);
|
39006
40490
|
if (!(user !== null && user !== void 0 && user.email)) return React__default.createElement(LoadingComponent, {
|
39007
40491
|
isLoading: true
|
39008
40492
|
});else return React__default.createElement(React.Fragment, null, children);
|
@@ -39111,6 +40595,7 @@ exports.AcademyHeaders = AcademyHeaders;
|
|
39111
40595
|
exports.AcademyList = AcademyList;
|
39112
40596
|
exports.AcceptNoAcademy = AcceptNoAcademy;
|
39113
40597
|
exports.ActionButtons = ActionButtons;
|
40598
|
+
exports.AnnouncementContainer = AnnouncementContainer;
|
39114
40599
|
exports.AnswerCountSelector = AnswerCountSelector;
|
39115
40600
|
exports.ArticleCategorySelector = ArticleCategorySelector;
|
39116
40601
|
exports.ArticleDialog = ArticleDialog;
|
@@ -39168,6 +40653,8 @@ exports.MathTinyEditor = MathTinyEditor;
|
|
39168
40653
|
exports.NewNoteButton = NewNoteButton;
|
39169
40654
|
exports.NoAcademyHeaders = NoAcademyHeaders;
|
39170
40655
|
exports.NotFound = NotFound;
|
40656
|
+
exports.NoteDrawer = NoteDrawer;
|
40657
|
+
exports.NoteTabs = NoteTabs;
|
39171
40658
|
exports.NotesContainer = NotesContainer;
|
39172
40659
|
exports.NotificationDetail = NotificationDetail;
|
39173
40660
|
exports.NotificationList = NotificationList;
|
@@ -39248,7 +40735,7 @@ exports.setConcurrentConnectionPusher = setConcurrentConnectionPusher;
|
|
39248
40735
|
exports.setLanguage = setLanguage;
|
39249
40736
|
exports.setLoading = setLoading;
|
39250
40737
|
exports.setReFetchUserAcademies = setReFetchUserAcademies;
|
39251
|
-
exports.
|
40738
|
+
exports.setTotalUnreadMessages = setTotalUnreadMessages;
|
39252
40739
|
exports.setUser = setUser;
|
39253
40740
|
exports.store = store;
|
39254
40741
|
exports.timAgo = timAgo;
|