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.modern.js
CHANGED
@@ -13,10 +13,10 @@ export { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';
|
|
13
13
|
import { DemoContainer } from '@mui/x-date-pickers/internals/demo';
|
14
14
|
export { DemoContainer } from '@mui/x-date-pickers/internals/demo';
|
15
15
|
import React__default, { useState, useEffect, Fragment as Fragment$1, useRef, useCallback, useMemo, memo, createElement } from 'react';
|
16
|
-
import { useTheme, Container, Typography, Stack, List, ListItem, FormGroup, FormControlLabel, Checkbox, Button, Box, Dialog, DialogTitle, IconButton, DialogContent, TextField, DialogActions, useMediaQuery, styled, FormLabel, Pagination, Paper, InputBase, Tooltip, tooltipClasses, Grid, ClickAwayListener, CircularProgress, InputAdornment, Card as Card$1, Avatar, Table, TableHead, TableRow, TableCell, TableBody, Divider, Skeleton, Tabs, Tab, Drawer, tableCellClasses, Accordion, AccordionSummary, AccordionDetails,
|
16
|
+
import { useTheme, Container, Typography, Stack, List, ListItem, FormGroup, FormControlLabel, Checkbox, Button, Box, Dialog, DialogTitle, IconButton, DialogContent, TextField, DialogActions, useMediaQuery, styled, FormLabel, Pagination, Paper, InputBase, Tooltip, tooltipClasses, Grid, ClickAwayListener, CircularProgress, InputAdornment, Card as Card$1, Avatar, Table, TableHead, TableRow, TableCell, TableBody, Divider, Skeleton, Tabs, Tab, Drawer, FormControl, RadioGroup, Radio, TableContainer, tableCellClasses, Accordion, AccordionSummary, AccordionDetails, Switch, InputLabel, Chip, ListItemButton, ListItemAvatar, ListItemText, Badge, Popover, CardMedia as CardMedia$1, MenuList } from '@mui/material';
|
17
17
|
import moment from 'moment';
|
18
18
|
export { default as moment } from 'moment';
|
19
|
-
import { FaSave, FaCaretDown, FaTimes, FaTrash, FaSortUp, FaSortDown, FaPlusCircle, FaCalendar, FaUser, FaBookOpen,
|
19
|
+
import { FaSave, FaCaretDown, FaTimes, FaTrash, FaSortUp, FaSortDown, FaPlusCircle, FaEye, FaPlus, FaCalendar, FaUser, FaBookOpen, FaUpload, FaPencilAlt, FaCheckCircle, FaShare, FaExchangeAlt, FaBell } from 'react-icons/fa';
|
20
20
|
import { IoMdArrowBack, IoMdSync, IoIosAlert, IoIosArrowDown, IoIosSearch, IoIosArrowUp, IoIosAdd, IoMdAdd } from 'react-icons/io';
|
21
21
|
import { IoClose, IoSearch, IoCloseOutline, IoTime, IoChevronUp, IoChevronDown, IoChatbubbleEllipsesSharp, IoPrint, IoCheckmarkCircle, IoChevronUpOutline, IoChevronDownOutline, IoReceiptSharp, IoBook, IoWarning, IoCalendarClear, IoPerson, IoInformationCircle, IoTrash, IoAddCircle, IoCloseCircle, IoLogOut } from 'react-icons/io5';
|
22
22
|
import MButton from '@mui/material/Button';
|
@@ -46,7 +46,7 @@ import CardActions from '@mui/material/CardActions';
|
|
46
46
|
import CardContent from '@mui/material/CardContent';
|
47
47
|
import CardMedia from '@mui/material/CardMedia';
|
48
48
|
import { object, string, number, date as date$2, array, mixed } from 'yup';
|
49
|
-
import { blue, yellow as yellow$1 } from '@mui/material/colors';
|
49
|
+
import { blue, grey as grey$1, yellow as yellow$1 } from '@mui/material/colors';
|
50
50
|
import { GoogleReCaptcha, GoogleReCaptchaProvider } from 'react-google-recaptcha-v3';
|
51
51
|
import { MdVisibilityOff, MdVisibility, MdAutorenew, MdMoreHoriz, MdDownload, MdExpandMore } from 'react-icons/md';
|
52
52
|
import { gapi } from 'gapi-script';
|
@@ -58,22 +58,23 @@ import Paper$1 from '@mui/material/Paper';
|
|
58
58
|
import Box$1 from '@mui/material/Box';
|
59
59
|
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
|
60
60
|
import { DatePicker } from '@mui/x-date-pickers/DatePicker';
|
61
|
-
import { FaCirclePlus, FaTrashCan, FaEye, FaRotateRight, FaPencil } from 'react-icons/fa6';
|
61
|
+
import { FaCirclePlus, FaTrashCan, FaEye as FaEye$1, FaRotateRight, FaPencil, FaClockRotateLeft } from 'react-icons/fa6';
|
62
62
|
import { CgArrowsExchange } from 'react-icons/cg';
|
63
|
+
import { HiOutlinePencilAlt } from 'react-icons/hi';
|
64
|
+
import TableCell$1 from '@mui/material/TableCell';
|
65
|
+
import TableRow$1 from '@mui/material/TableRow';
|
63
66
|
import html2pdf from 'html2pdf.js';
|
64
67
|
import Slider from 'react-slick';
|
65
68
|
import { GrNext, GrPrevious } from 'react-icons/gr';
|
66
|
-
import { HiOutlinePencilAlt } from 'react-icons/hi';
|
67
69
|
import Table$1 from '@mui/material/Table';
|
68
70
|
import TableBody$1 from '@mui/material/TableBody';
|
69
|
-
import TableCell$1 from '@mui/material/TableCell';
|
70
71
|
import TableHead$1 from '@mui/material/TableHead';
|
71
|
-
import TableRow$1 from '@mui/material/TableRow';
|
72
72
|
import { useForm } from 'react-hook-form';
|
73
73
|
import { yupResolver } from '@hookform/resolvers/yup';
|
74
74
|
import { PiDotsNineLight } from 'react-icons/pi';
|
75
75
|
import Container$1 from '@mui/material/Container';
|
76
|
-
import
|
76
|
+
import { BsCheckAll } from 'react-icons/bs';
|
77
|
+
import Popover$1 from '@mui/material/Popover';
|
77
78
|
import MenuItem from '@mui/material/MenuItem';
|
78
79
|
import { GoArrowSwitch } from 'react-icons/go';
|
79
80
|
import Pusher$1 from 'pusher-js';
|
@@ -282,7 +283,7 @@ var setLanguage = createAction("common/setLanguage");
|
|
282
283
|
var reset = createAction("common/reset");
|
283
284
|
var setReFetchUserAcademies = createAction("common/setReFetchUserAcademies");
|
284
285
|
var setConcurrentConnectionPusher = createAction("common/setConcurrentConnectionPusher");
|
285
|
-
var
|
286
|
+
var setTotalUnreadMessages = createAction("common/setTotalUnreadMessages");
|
286
287
|
|
287
288
|
var initialState = {
|
288
289
|
isLoading: false,
|
@@ -292,8 +293,8 @@ var initialState = {
|
|
292
293
|
},
|
293
294
|
user: null,
|
294
295
|
academy: null,
|
296
|
+
totalUnreadMessages: 0,
|
295
297
|
isReFetchUserAcademies: false,
|
296
|
-
isReadyRegisterPusher: false,
|
297
298
|
concurrentConnectionPusher: {
|
298
299
|
pusher: null,
|
299
300
|
academyDomain: "",
|
@@ -319,8 +320,8 @@ var commonReducer = createReducer(initialState, function (builder) {
|
|
319
320
|
state.concurrentConnectionPusher.pusher = action.payload.pusher;
|
320
321
|
state.concurrentConnectionPusher.academyDomain = action.payload.academyDomain;
|
321
322
|
state.concurrentConnectionPusher.isRegistered = action.payload.isRegistered;
|
322
|
-
}).addCase(
|
323
|
-
state.
|
323
|
+
}).addCase(setTotalUnreadMessages, function (state, action) {
|
324
|
+
state.totalUnreadMessages = action.payload;
|
324
325
|
});
|
325
326
|
});
|
326
327
|
|
@@ -1344,6 +1345,12 @@ var please_reload_this_page_to_continue_using_this_tab_or_close_it = "이 탭을
|
|
1344
1345
|
var reload_page = "페이지 새로고침";
|
1345
1346
|
var last_attendance_date = "마지막 출석일자";
|
1346
1347
|
var less_than_a_day = "하루 미만";
|
1348
|
+
var less_than_a_min = "1분 미만";
|
1349
|
+
var just_now = "방금 전";
|
1350
|
+
var n_mins_ago = "{{min}}분 전";
|
1351
|
+
var n_hours_ago = "{{hour}}시간 전";
|
1352
|
+
var one_min_ago = "1분 전";
|
1353
|
+
var one_hour_ago = "1시간 전";
|
1347
1354
|
var n_days_ago = "{{day}}일 전";
|
1348
1355
|
var n_months_ago = "{{month}}개월 전";
|
1349
1356
|
var n_years_ago = "{{year}}년 전";
|
@@ -1513,6 +1520,22 @@ var next_status = "다음 상태";
|
|
1513
1520
|
var arrival_time = "도착 시간";
|
1514
1521
|
var current_arrival_time = "현재 도착 시간";
|
1515
1522
|
var uppdate_attendance = "출석 현황 수정";
|
1523
|
+
var you_have_n_unread_messages = "읽지 않은 메시지가 {{ n }}개 있습니다";
|
1524
|
+
var receivers = "수신자";
|
1525
|
+
var total_receivers = "총 수신자";
|
1526
|
+
var sender = "보내는 사람";
|
1527
|
+
var manage_notes = "메모 관리";
|
1528
|
+
var notes = "노트";
|
1529
|
+
var new_note = "새 노트";
|
1530
|
+
var mark_as_read = "읽은 것으로 표시";
|
1531
|
+
var view_notes = "노트 보기";
|
1532
|
+
var admin_n = "{{admin}} 관리자";
|
1533
|
+
var teacher_n = "{{teacher}} 교사";
|
1534
|
+
var sent_a_memo = "메모를 보냈습니다";
|
1535
|
+
var admin_to_admin = "관리자에서 관리자에게";
|
1536
|
+
var teacher_to_admin = "교사에서 관리자에게";
|
1537
|
+
var admin_to_teachers = "관리자에서 교사들에게";
|
1538
|
+
var teacher_to_teachers = "교사에서 교사들에게";
|
1516
1539
|
var lang_ko = {
|
1517
1540
|
problem_solving: problem_solving,
|
1518
1541
|
my_story: my_story,
|
@@ -2494,6 +2517,12 @@ var lang_ko = {
|
|
2494
2517
|
reload_page: reload_page,
|
2495
2518
|
last_attendance_date: last_attendance_date,
|
2496
2519
|
less_than_a_day: less_than_a_day,
|
2520
|
+
less_than_a_min: less_than_a_min,
|
2521
|
+
just_now: just_now,
|
2522
|
+
n_mins_ago: n_mins_ago,
|
2523
|
+
n_hours_ago: n_hours_ago,
|
2524
|
+
one_min_ago: one_min_ago,
|
2525
|
+
one_hour_ago: one_hour_ago,
|
2497
2526
|
n_days_ago: n_days_ago,
|
2498
2527
|
n_months_ago: n_months_ago,
|
2499
2528
|
n_years_ago: n_years_ago,
|
@@ -2658,7 +2687,23 @@ var lang_ko = {
|
|
2658
2687
|
next_status: next_status,
|
2659
2688
|
arrival_time: arrival_time,
|
2660
2689
|
current_arrival_time: current_arrival_time,
|
2661
|
-
uppdate_attendance: uppdate_attendance
|
2690
|
+
uppdate_attendance: uppdate_attendance,
|
2691
|
+
you_have_n_unread_messages: you_have_n_unread_messages,
|
2692
|
+
receivers: receivers,
|
2693
|
+
total_receivers: total_receivers,
|
2694
|
+
sender: sender,
|
2695
|
+
manage_notes: manage_notes,
|
2696
|
+
notes: notes,
|
2697
|
+
new_note: new_note,
|
2698
|
+
mark_as_read: mark_as_read,
|
2699
|
+
view_notes: view_notes,
|
2700
|
+
admin_n: admin_n,
|
2701
|
+
teacher_n: teacher_n,
|
2702
|
+
sent_a_memo: sent_a_memo,
|
2703
|
+
admin_to_admin: admin_to_admin,
|
2704
|
+
teacher_to_admin: teacher_to_admin,
|
2705
|
+
admin_to_teachers: admin_to_teachers,
|
2706
|
+
teacher_to_teachers: teacher_to_teachers
|
2662
2707
|
};
|
2663
2708
|
|
2664
2709
|
var problem_solving$1 = "Problem Solving";
|
@@ -3657,6 +3702,12 @@ var please_reload_this_page_to_continue_using_this_tab_or_close_it$1 = "Please r
|
|
3657
3702
|
var reload_page$1 = "Reload page";
|
3658
3703
|
var last_attendance_date$1 = "Last attendance date";
|
3659
3704
|
var less_than_a_day$1 = "Less than a day";
|
3705
|
+
var less_than_a_min$1 = "Less than a minute";
|
3706
|
+
var just_now$1 = "Just now";
|
3707
|
+
var n_mins_ago$1 = "{{min}} minutes ago";
|
3708
|
+
var n_hours_ago$1 = "{{hour}} hours ago";
|
3709
|
+
var one_min_ago$1 = "one minute ago";
|
3710
|
+
var one_hour_ago$1 = "one hour ago";
|
3660
3711
|
var n_days_ago$1 = "{{day}} days ago";
|
3661
3712
|
var n_months_ago$1 = "{{month}} months ago";
|
3662
3713
|
var n_years_ago$1 = "{{year}} years ago";
|
@@ -3827,6 +3878,22 @@ var next_status$1 = "Next status";
|
|
3827
3878
|
var arrival_time$1 = "Arrival time";
|
3828
3879
|
var current_arrival_time$1 = "Current arrival time";
|
3829
3880
|
var uppdate_attendance$1 = "Update attendance";
|
3881
|
+
var you_have_n_unread_messages$1 = "You have {{ n }} unread message(s)";
|
3882
|
+
var receivers$1 = "Receivers";
|
3883
|
+
var total_receivers$1 = "Total receivers";
|
3884
|
+
var sender$1 = "Sender";
|
3885
|
+
var manage_notes$1 = "Manage notes";
|
3886
|
+
var notes$1 = "Notes";
|
3887
|
+
var new_note$1 = "New note";
|
3888
|
+
var mark_as_read$1 = "Mark as read";
|
3889
|
+
var view_notes$1 = "View notes";
|
3890
|
+
var admin_n$1 = "Admin {{admin}}";
|
3891
|
+
var teacher_n$1 = "Teacher {{teacher}}";
|
3892
|
+
var sent_a_memo$1 = "sent a memo";
|
3893
|
+
var admin_to_admin$1 = "Admin to admin";
|
3894
|
+
var teacher_to_admin$1 = "Teacher to admin";
|
3895
|
+
var admin_to_teachers$1 = "Admin to teachers";
|
3896
|
+
var teacher_to_teachers$1 = "Teacher to teachers";
|
3830
3897
|
var lang_en = {
|
3831
3898
|
problem_solving: problem_solving$1,
|
3832
3899
|
my_story: my_story$1,
|
@@ -4809,6 +4876,12 @@ var lang_en = {
|
|
4809
4876
|
reload_page: reload_page$1,
|
4810
4877
|
last_attendance_date: last_attendance_date$1,
|
4811
4878
|
less_than_a_day: less_than_a_day$1,
|
4879
|
+
less_than_a_min: less_than_a_min$1,
|
4880
|
+
just_now: just_now$1,
|
4881
|
+
n_mins_ago: n_mins_ago$1,
|
4882
|
+
n_hours_ago: n_hours_ago$1,
|
4883
|
+
one_min_ago: one_min_ago$1,
|
4884
|
+
one_hour_ago: one_hour_ago$1,
|
4812
4885
|
n_days_ago: n_days_ago$1,
|
4813
4886
|
n_months_ago: n_months_ago$1,
|
4814
4887
|
n_years_ago: n_years_ago$1,
|
@@ -4974,7 +5047,23 @@ var lang_en = {
|
|
4974
5047
|
next_status: next_status$1,
|
4975
5048
|
arrival_time: arrival_time$1,
|
4976
5049
|
current_arrival_time: current_arrival_time$1,
|
4977
|
-
uppdate_attendance: uppdate_attendance$1
|
5050
|
+
uppdate_attendance: uppdate_attendance$1,
|
5051
|
+
you_have_n_unread_messages: you_have_n_unread_messages$1,
|
5052
|
+
receivers: receivers$1,
|
5053
|
+
total_receivers: total_receivers$1,
|
5054
|
+
sender: sender$1,
|
5055
|
+
manage_notes: manage_notes$1,
|
5056
|
+
notes: notes$1,
|
5057
|
+
new_note: new_note$1,
|
5058
|
+
mark_as_read: mark_as_read$1,
|
5059
|
+
view_notes: view_notes$1,
|
5060
|
+
admin_n: admin_n$1,
|
5061
|
+
teacher_n: teacher_n$1,
|
5062
|
+
sent_a_memo: sent_a_memo$1,
|
5063
|
+
admin_to_admin: admin_to_admin$1,
|
5064
|
+
teacher_to_admin: teacher_to_admin$1,
|
5065
|
+
admin_to_teachers: admin_to_teachers$1,
|
5066
|
+
teacher_to_teachers: teacher_to_teachers$1
|
4978
5067
|
};
|
4979
5068
|
|
4980
5069
|
i18n.use(initReactI18next).init({
|
@@ -6148,8 +6237,12 @@ var NoteSortColumn;
|
|
6148
6237
|
})(NoteSortColumn || (NoteSortColumn = {}));
|
6149
6238
|
var NoteType;
|
6150
6239
|
(function (NoteType) {
|
6151
|
-
NoteType[NoteType["
|
6152
|
-
NoteType[NoteType["
|
6240
|
+
NoteType[NoteType["ToAcademy"] = 0] = "ToAcademy";
|
6241
|
+
NoteType[NoteType["ToStudent"] = 1] = "ToStudent";
|
6242
|
+
NoteType[NoteType["AdminToAllAdmin"] = 2] = "AdminToAllAdmin";
|
6243
|
+
NoteType[NoteType["AdminToAllTeacher"] = 3] = "AdminToAllTeacher";
|
6244
|
+
NoteType[NoteType["TeacherToAllAdmin"] = 4] = "TeacherToAllAdmin";
|
6245
|
+
NoteType[NoteType["TeacherToTeachers"] = 5] = "TeacherToTeachers";
|
6153
6246
|
})(NoteType || (NoteType = {}));
|
6154
6247
|
|
6155
6248
|
var SchoolType;
|
@@ -6321,16 +6414,35 @@ var pushTo = function pushTo(history, data, isReplace) {
|
|
6321
6414
|
});
|
6322
6415
|
};
|
6323
6416
|
|
6324
|
-
var timAgo = function timAgo(date, t) {
|
6325
|
-
if (date === DATE_MIN_VALUE || date === DATE_TIME_MIN_VALUE) return '';
|
6417
|
+
var timAgo = function timAgo(date, t, day) {
|
6418
|
+
if (!date || date === DATE_MIN_VALUE || date === DATE_TIME_MIN_VALUE) return '';
|
6326
6419
|
var time = moment.utc(date).local();
|
6420
|
+
var years = moment().diff(time, 'years');
|
6421
|
+
if (years >= 1) return years >= 2 ? t('n_years_ago', {
|
6422
|
+
year: years
|
6423
|
+
}) : t("one_year_ago");
|
6424
|
+
var months = moment().diff(time, 'months');
|
6425
|
+
if (months >= 1) return months >= 2 ? t('n_months_ago', {
|
6426
|
+
month: months
|
6427
|
+
}) : t("one_month_ago");
|
6327
6428
|
var days = moment().diff(time, 'days');
|
6328
|
-
if (days
|
6329
|
-
|
6330
|
-
|
6331
|
-
|
6332
|
-
|
6333
|
-
|
6429
|
+
if (days < 1 && !day) return t('less_than_a_day');
|
6430
|
+
if (days < 1 && day) {
|
6431
|
+
var hours = moment().diff(time, 'hours');
|
6432
|
+
if (hours >= 1) return hours >= 2 ? t('n_hours_ago', {
|
6433
|
+
hour: hours
|
6434
|
+
}) : t("one_hour_ago");
|
6435
|
+
var mins = moment().diff(time, 'minutes');
|
6436
|
+
if (mins >= 1) return mins >= 2 ? t('n_mins_ago', {
|
6437
|
+
min: mins
|
6438
|
+
}) : t("one_min_ago");
|
6439
|
+
var secs = moment().diff(time, 'seconds');
|
6440
|
+
if (secs > 10) return t('less_than_a_min');
|
6441
|
+
return t("just_now");
|
6442
|
+
}
|
6443
|
+
return days >= 2 ? t('n_days_ago', {
|
6444
|
+
day: days
|
6445
|
+
}) : t("one_day_ago");
|
6334
6446
|
};
|
6335
6447
|
|
6336
6448
|
var toISOString = (function (time) {
|
@@ -6920,7 +7032,10 @@ var useLanguage = function useLanguage(history, init) {
|
|
6920
7032
|
};
|
6921
7033
|
};
|
6922
7034
|
|
6923
|
-
var useList = function useList(fetchData, defaultQuery) {
|
7035
|
+
var useList = function useList(fetchData, defaultQuery, showLoading) {
|
7036
|
+
if (showLoading === void 0) {
|
7037
|
+
showLoading = true;
|
7038
|
+
}
|
6924
7039
|
var dispatch = useDispatch();
|
6925
7040
|
var _useState = useState(defaultQuery),
|
6926
7041
|
filter = _useState[0],
|
@@ -6934,6 +7049,9 @@ var useList = function useList(fetchData, defaultQuery) {
|
|
6934
7049
|
var _useState4 = useState(),
|
6935
7050
|
selectedItem = _useState4[0],
|
6936
7051
|
setSelectedItem = _useState4[1];
|
7052
|
+
var _useState5 = useState(false),
|
7053
|
+
isLoading = _useState5[0],
|
7054
|
+
setIsLoading = _useState5[1];
|
6937
7055
|
var textSearchRef = useRef(null);
|
6938
7056
|
var isFirstLoadRef = useRef(true);
|
6939
7057
|
var _useTranslation = useTranslation(),
|
@@ -6947,11 +7065,13 @@ var useList = function useList(fetchData, defaultQuery) {
|
|
6947
7065
|
}
|
6948
7066
|
try {
|
6949
7067
|
var _temp2 = function _temp2() {
|
6950
|
-
isLoading && dispatch(setLoading(false));
|
7068
|
+
isLoading && showLoading && dispatch(setLoading(false));
|
7069
|
+
setIsLoading(false);
|
6951
7070
|
};
|
6952
7071
|
if (!fetchData) return Promise.resolve();
|
6953
7072
|
if (isFirstLoadRef.current) isFirstLoadRef.current = false;
|
6954
|
-
isLoading && dispatch(setLoading(true));
|
7073
|
+
isLoading && showLoading && dispatch(setLoading(true));
|
7074
|
+
setIsLoading(true);
|
6955
7075
|
var _temp = _catch(function () {
|
6956
7076
|
return Promise.resolve(fetchData(filter)).then(function (res) {
|
6957
7077
|
var _res$data$items = res.data.items,
|
@@ -6976,10 +7096,6 @@ var useList = function useList(fetchData, defaultQuery) {
|
|
6976
7096
|
};
|
6977
7097
|
var handleSort = function handleSort(sortColumnName) {
|
6978
7098
|
var sortColumnDirection = OrderType.ASC;
|
6979
|
-
console.log({
|
6980
|
-
sortColumnName: typeof sortColumnName,
|
6981
|
-
filter: typeof filter.sortColumnName
|
6982
|
-
});
|
6983
7099
|
if (filter.sortColumnName == sortColumnName && filter.sortColumnDirection === OrderType.ASC) sortColumnDirection = OrderType.DESC;
|
6984
7100
|
setFilter(_extends({}, filter, {
|
6985
7101
|
sortColumnName: sortColumnName,
|
@@ -7012,6 +7128,7 @@ var useList = function useList(fetchData, defaultQuery) {
|
|
7012
7128
|
getData(isFirstLoadRef.current);
|
7013
7129
|
}, [JSON.stringify(filter)]);
|
7014
7130
|
return {
|
7131
|
+
isLoading: isLoading,
|
7015
7132
|
filter: filter,
|
7016
7133
|
textSearchRef: textSearchRef,
|
7017
7134
|
paging: paging,
|
@@ -7114,36 +7231,26 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl,
|
|
7114
7231
|
}
|
7115
7232
|
var isAcademy = !!academyDomain || isLearningSpace;
|
7116
7233
|
return Promise.resolve(handleLogin(function () {
|
7117
|
-
|
7118
|
-
|
7119
|
-
var
|
7120
|
-
|
7121
|
-
|
7122
|
-
|
7123
|
-
|
7124
|
-
|
7125
|
-
|
7126
|
-
|
7127
|
-
|
7128
|
-
|
7129
|
-
|
7130
|
-
|
7131
|
-
|
7132
|
-
|
7133
|
-
|
7134
|
-
|
7135
|
-
|
7136
|
-
|
7137
|
-
}, function (error) {
|
7138
|
-
!!academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
|
7139
|
-
localStorage.removeItem(LEARNING_SPACE);
|
7140
|
-
reject(error);
|
7141
|
-
});
|
7142
|
-
return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(function () {}) : void 0);
|
7143
|
-
} catch (e) {
|
7144
|
-
return Promise.reject(e);
|
7145
|
-
}
|
7146
|
-
});
|
7234
|
+
try {
|
7235
|
+
return Promise.resolve(isAcademy ? apiLoginGoogle(data, isLearningSpace) : apiLoginGoogleSuperAdmin(data)).then(function (loginResponse) {
|
7236
|
+
var result = loginResponse.data;
|
7237
|
+
var _temp = function () {
|
7238
|
+
if (loginResponse.status === 204 && academyDomain) {
|
7239
|
+
localStorage.removeItem(ACADEMY_DOMAIN);
|
7240
|
+
localStorage.removeItem(LEARNING_SPACE);
|
7241
|
+
return Promise.resolve(apiLoginGoogleSuperAdmin(data)).then(function (_apiLoginGoogleSuperA) {
|
7242
|
+
loginResponse = _apiLoginGoogleSuperA;
|
7243
|
+
result = loginResponse.data;
|
7244
|
+
});
|
7245
|
+
}
|
7246
|
+
}();
|
7247
|
+
return _temp && _temp.then ? _temp.then(function () {
|
7248
|
+
return result;
|
7249
|
+
}) : result;
|
7250
|
+
});
|
7251
|
+
} catch (e) {
|
7252
|
+
return Promise.reject(e);
|
7253
|
+
}
|
7147
7254
|
}, isStudent, isLogout)).then(function () {});
|
7148
7255
|
} catch (e) {
|
7149
7256
|
return Promise.reject(e);
|
@@ -7156,21 +7263,14 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl,
|
|
7156
7263
|
try {
|
7157
7264
|
var isStudent = data.role === Role.Student;
|
7158
7265
|
return Promise.resolve(handleLogin(function () {
|
7159
|
-
|
7160
|
-
|
7161
|
-
var
|
7162
|
-
|
7163
|
-
|
7164
|
-
|
7165
|
-
|
7166
|
-
|
7167
|
-
reject(error);
|
7168
|
-
});
|
7169
|
-
return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
|
7170
|
-
} catch (e) {
|
7171
|
-
return Promise.reject(e);
|
7172
|
-
}
|
7173
|
-
});
|
7266
|
+
try {
|
7267
|
+
return Promise.resolve(!isLearningSpace && !domain ? apiLoginSuperAdminWithAccessToken(data) : apiLoginWithAccessToken(data, isLearningSpace, domain)).then(function (loginResponse) {
|
7268
|
+
var result = loginResponse.data;
|
7269
|
+
return result;
|
7270
|
+
});
|
7271
|
+
} catch (e) {
|
7272
|
+
return Promise.reject(e);
|
7273
|
+
}
|
7174
7274
|
}, isStudent, isLogout, superAdminRedirectPath)).then(function () {});
|
7175
7275
|
} catch (e) {
|
7176
7276
|
return Promise.reject(e);
|
@@ -7181,13 +7281,13 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl,
|
|
7181
7281
|
isLogout = true;
|
7182
7282
|
}
|
7183
7283
|
try {
|
7184
|
-
var
|
7284
|
+
var _temp3 = function _temp3(_result) {
|
7185
7285
|
if (_exit) return _result;
|
7186
7286
|
dispatch(setLoading(false));
|
7187
7287
|
};
|
7188
7288
|
var _exit = false;
|
7189
7289
|
dispatch(setLoading(true));
|
7190
|
-
var
|
7290
|
+
var _temp2 = _catch(function () {
|
7191
7291
|
return Promise.resolve(apiLogin()).then(function (loginResponse) {
|
7192
7292
|
var isFirstLogin = loginResponse.isFirstLogin,
|
7193
7293
|
token = loginResponse.token,
|
@@ -7211,7 +7311,7 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl,
|
|
7211
7311
|
alert(getErrorMessage(t, error));
|
7212
7312
|
isLogout && handleSignOut();
|
7213
7313
|
});
|
7214
|
-
return Promise.resolve(
|
7314
|
+
return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2));
|
7215
7315
|
} catch (e) {
|
7216
7316
|
return Promise.reject(e);
|
7217
7317
|
}
|
@@ -8020,7 +8120,8 @@ var getStudentsApi = function getStudentsApi(textSearch) {
|
|
8020
8120
|
return api.get("" + STUDENT_URL, {
|
8021
8121
|
params: {
|
8022
8122
|
textSearch: textSearch,
|
8023
|
-
roles: [Role.Admin]
|
8123
|
+
roles: [Role.Admin],
|
8124
|
+
pageSize: 100
|
8024
8125
|
}
|
8025
8126
|
});
|
8026
8127
|
};
|
@@ -8031,7 +8132,10 @@ var StudentSelector = function StudentSelector(_ref) {
|
|
8031
8132
|
externalStudentIds = _ref.externalStudentIds,
|
8032
8133
|
_ref$disabled = _ref.disabled,
|
8033
8134
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
8034
|
-
title = _ref.title
|
8135
|
+
title = _ref.title,
|
8136
|
+
_ref$isMulti = _ref.isMulti,
|
8137
|
+
isMulti = _ref$isMulti === void 0 ? true : _ref$isMulti,
|
8138
|
+
minSearchLength = _ref.minSearchLength;
|
8035
8139
|
var _useState = useState([]),
|
8036
8140
|
students = _useState[0],
|
8037
8141
|
setStudents = _useState[1];
|
@@ -8066,7 +8170,7 @@ var StudentSelector = function StudentSelector(_ref) {
|
|
8066
8170
|
}, [searchString]);
|
8067
8171
|
useEffect(function () {
|
8068
8172
|
timeout && timeout.current && clearTimeout(timeout.current);
|
8069
|
-
if (!searchString || searchString.trim().length <
|
8173
|
+
if (minSearchLength && (!searchString || searchString.trim().length < minSearchLength)) {
|
8070
8174
|
setStudents([]);
|
8071
8175
|
} else {
|
8072
8176
|
timeout.current = setTimeout(loadData, 300);
|
@@ -8092,8 +8196,8 @@ var StudentSelector = function StudentSelector(_ref) {
|
|
8092
8196
|
},
|
8093
8197
|
isDisabled: disabled,
|
8094
8198
|
isLoading: isLoading,
|
8095
|
-
placeholder: t('placeholder_student_selector'),
|
8096
|
-
isMulti:
|
8199
|
+
placeholder: t(minSearchLength ? 'placeholder_student_selector' : 'select_placeholder'),
|
8200
|
+
isMulti: isMulti,
|
8097
8201
|
value: value,
|
8098
8202
|
onChange: onChange
|
8099
8203
|
}));
|
@@ -14180,7 +14284,7 @@ var DrawerHeader = function DrawerHeader(_ref) {
|
|
14180
14284
|
fontSize: "13px",
|
14181
14285
|
fontWeight: 500
|
14182
14286
|
}
|
14183
|
-
}, student.schoolName), React__default.createElement(Typography, {
|
14287
|
+
}, student.schoolName), !!student.grade && React__default.createElement(Typography, {
|
14184
14288
|
sx: {
|
14185
14289
|
color: grey[500],
|
14186
14290
|
fontSize: "13px",
|
@@ -15488,6 +15592,9 @@ var getNotesApi = function getNotesApi(query) {
|
|
15488
15592
|
params: query
|
15489
15593
|
});
|
15490
15594
|
};
|
15595
|
+
var getNoteByIdApi = function getNoteByIdApi(id) {
|
15596
|
+
return api.get(NOTES_URL + "/" + id);
|
15597
|
+
};
|
15491
15598
|
var createNoteApi = function createNoteApi(note) {
|
15492
15599
|
return api.post("" + NOTES_URL, note);
|
15493
15600
|
};
|
@@ -15496,6 +15603,9 @@ var updateNoteApi = function updateNoteApi(id, content) {
|
|
15496
15603
|
content: content
|
15497
15604
|
});
|
15498
15605
|
};
|
15606
|
+
var updateNoteDataApi = function updateNoteDataApi(id, data) {
|
15607
|
+
return api.put(NOTES_URL + "/" + id, data);
|
15608
|
+
};
|
15499
15609
|
var deleteNoteApi = function deleteNoteApi(id) {
|
15500
15610
|
return api["delete"](NOTES_URL + "/" + id);
|
15501
15611
|
};
|
@@ -15770,6 +15880,121 @@ var NotesContainer = function NotesContainer(_ref) {
|
|
15770
15880
|
});
|
15771
15881
|
};
|
15772
15882
|
|
15883
|
+
var getNoteType = function getNoteType(t, type) {
|
15884
|
+
switch (type) {
|
15885
|
+
case NoteType.ToAcademy:
|
15886
|
+
return t("academy");
|
15887
|
+
case NoteType.ToStudent:
|
15888
|
+
return t("student_parents");
|
15889
|
+
case NoteType.AdminToAllAdmin:
|
15890
|
+
return t("admin_to_admin");
|
15891
|
+
case NoteType.AdminToAllTeacher:
|
15892
|
+
return t("admin_to_teachers");
|
15893
|
+
case NoteType.TeacherToAllAdmin:
|
15894
|
+
return t("teacher_to_admin");
|
15895
|
+
case NoteType.TeacherToTeachers:
|
15896
|
+
return t("teacher_to_teachers");
|
15897
|
+
default:
|
15898
|
+
return "";
|
15899
|
+
}
|
15900
|
+
};
|
15901
|
+
|
15902
|
+
var NoteItemList = function NoteItemList(_ref) {
|
15903
|
+
var _data$reciever, _data$reciever2, _data$recievers;
|
15904
|
+
var data = _ref.data,
|
15905
|
+
index = _ref.index,
|
15906
|
+
role = _ref.role,
|
15907
|
+
calcOrderNumber = _ref.calcOrderNumber,
|
15908
|
+
onDelete = _ref.onDelete,
|
15909
|
+
onUpdate = _ref.onUpdate,
|
15910
|
+
onView = _ref.onView;
|
15911
|
+
var isAdminUser = useSelector(function (state) {
|
15912
|
+
var _state$common, _state$common$user, _state$common$user$ro;
|
15913
|
+
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(Role.Admin);
|
15914
|
+
});
|
15915
|
+
var userId = useSelector(function (state) {
|
15916
|
+
var _state$common2, _state$common2$user;
|
15917
|
+
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;
|
15918
|
+
});
|
15919
|
+
var _useTranslation = useTranslation(),
|
15920
|
+
t = _useTranslation.t;
|
15921
|
+
var isAdmin = role === Role.Admin;
|
15922
|
+
var order = calcOrderNumber(index);
|
15923
|
+
var createdAt = utcToLocalTime(data.createdAt, t("date_time_format"));
|
15924
|
+
var handleDelete = function handleDelete() {
|
15925
|
+
onDelete(data);
|
15926
|
+
};
|
15927
|
+
var handleUpdate = function handleUpdate() {
|
15928
|
+
onUpdate(data);
|
15929
|
+
};
|
15930
|
+
var handleView = function handleView() {
|
15931
|
+
onView(data);
|
15932
|
+
};
|
15933
|
+
var disabled = !data.isOwned && (!isAdminUser || data.type == undefined || data.type == NoteType.TeacherToAllAdmin || data.type == NoteType.TeacherToTeachers);
|
15934
|
+
useEffect(function () {
|
15935
|
+
if (window.MathJax) {
|
15936
|
+
var _window$MathJax;
|
15937
|
+
(_window$MathJax = window.MathJax) === null || _window$MathJax === void 0 ? void 0 : _window$MathJax.typeset();
|
15938
|
+
}
|
15939
|
+
}, [data.content]);
|
15940
|
+
var noteType = data.type === undefined ? "" : getNoteType(t, data.type);
|
15941
|
+
return React__default.createElement(TableRow$1, null, React__default.createElement(TableCell$1, null, order), React__default.createElement(TableCell$1, null, data.type === NoteType.AdminToAllTeacher && !isAdmin && !isAdminUser ? React__default.createElement(Typography, {
|
15942
|
+
color: green[700],
|
15943
|
+
fontWeight: 600
|
15944
|
+
}, t("admin")) : React__default.createElement(Fragment$1, null, React__default.createElement(Typography, {
|
15945
|
+
color: green[700],
|
15946
|
+
fontWeight: 600
|
15947
|
+
}, data.sender.fullName, data.sender.id === userId && React__default.createElement(Typography, {
|
15948
|
+
display: "inline-block",
|
15949
|
+
color: grey$1[600],
|
15950
|
+
fontWeight: 600
|
15951
|
+
}, "(", " " + t("me"), ")")), React__default.createElement(Typography, null, data.sender.email))), data.type === NoteType.ToAcademy || data.type === NoteType.ToStudent ? React__default.createElement(TableCell$1, null, React__default.createElement(Typography, {
|
15952
|
+
color: blue[700],
|
15953
|
+
fontWeight: 600
|
15954
|
+
}, (_data$reciever = data.reciever) === null || _data$reciever === void 0 ? void 0 : _data$reciever.fullName), React__default.createElement(Typography, null, (_data$reciever2 = data.reciever) === null || _data$reciever2 === void 0 ? void 0 : _data$reciever2.email)) : data.type === NoteType.TeacherToTeachers ? React__default.createElement(TableCell$1, null, React__default.createElement(Stack, {
|
15955
|
+
direction: "column"
|
15956
|
+
}, (_data$recievers = data.recievers) === null || _data$recievers === void 0 ? void 0 : _data$recievers.slice(0, 2).map(function (i) {
|
15957
|
+
return React__default.createElement(Typography, null, i.fullName, " - ", i.email);
|
15958
|
+
}), data.recievers && data.recievers.length > 2 && React__default.createElement(Typography, null, "(+", data.recievers.length - 2, ")"))) : React__default.createElement(TableCell$1, null, React__default.createElement(Typography, null, t(data.type === NoteType.AdminToAllTeacher ? "teachers" : "admin"))), React__default.createElement(TableCell$1, null, React__default.createElement(Box, {
|
15959
|
+
sx: {
|
15960
|
+
display: "-webkit-box",
|
15961
|
+
lineClamp: 3,
|
15962
|
+
WebkitLineClamp: 3,
|
15963
|
+
WebkitBoxOrient: "vertical",
|
15964
|
+
boxOrient: "vertical",
|
15965
|
+
overflow: "hidden"
|
15966
|
+
},
|
15967
|
+
dangerouslySetInnerHTML: {
|
15968
|
+
__html: data.content
|
15969
|
+
}
|
15970
|
+
})), React__default.createElement(TableCell$1, {
|
15971
|
+
className: "text-nowrap"
|
15972
|
+
}, noteType), React__default.createElement(TableCell$1, null, createdAt), React__default.createElement(TableCell$1, null, React__default.createElement("div", {
|
15973
|
+
className: "d-flex"
|
15974
|
+
}, React__default.createElement(Box, null, React__default.createElement(IconButton, {
|
15975
|
+
color: "default",
|
15976
|
+
className: "bg-primary text-white me-1",
|
15977
|
+
onClick: handleView
|
15978
|
+
}, React__default.createElement(FaEye, {
|
15979
|
+
size: 12
|
15980
|
+
}))), React__default.createElement(Box, null, React__default.createElement(IconButton, {
|
15981
|
+
color: "default",
|
15982
|
+
className: styles$5["action-btn"] + " " + (disabled ? "bg-secondary" : "bg-warning") + " text-white me-2",
|
15983
|
+
onClick: handleUpdate,
|
15984
|
+
disabled: disabled
|
15985
|
+
}, React__default.createElement(HiOutlinePencilAlt, {
|
15986
|
+
className: styles$5["action-btn--pencil"],
|
15987
|
+
size: 12
|
15988
|
+
}))), React__default.createElement(Box, null, React__default.createElement(IconButton, {
|
15989
|
+
onClick: handleDelete,
|
15990
|
+
color: "default",
|
15991
|
+
className: styles$5["action-btn"] + " " + (disabled ? "bg-secondary" : "bg-danger") + " text-white",
|
15992
|
+
disabled: disabled
|
15993
|
+
}, React__default.createElement(FaTrashCan, {
|
15994
|
+
size: 12
|
15995
|
+
}))))));
|
15996
|
+
};
|
15997
|
+
|
15773
15998
|
var NoteContent = function NoteContent(_ref) {
|
15774
15999
|
var content = _ref.content;
|
15775
16000
|
useEffect(function () {
|
@@ -15791,7 +16016,7 @@ var NoteContent = function NoteContent(_ref) {
|
|
15791
16016
|
};
|
15792
16017
|
|
15793
16018
|
var NoteDrawer = function NoteDrawer(props) {
|
15794
|
-
var _BRIEF_GRADE_OPTIONS$,
|
16019
|
+
var _BRIEF_GRADE_OPTIONS$, _note$content;
|
15795
16020
|
var anchor = props.anchor,
|
15796
16021
|
open = props.open,
|
15797
16022
|
student = props.student,
|
@@ -15799,7 +16024,8 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15799
16024
|
data = props.data,
|
15800
16025
|
width = props.width,
|
15801
16026
|
_props$showStudentInf = props.showStudentInfo,
|
15802
|
-
showStudentInfo = _props$showStudentInf === void 0 ? true : _props$showStudentInf
|
16027
|
+
showStudentInfo = _props$showStudentInf === void 0 ? true : _props$showStudentInf,
|
16028
|
+
id = props.id;
|
15803
16029
|
var _useTranslation = useTranslation(),
|
15804
16030
|
t = _useTranslation.t;
|
15805
16031
|
var academy = useSelector(function (state) {
|
@@ -15810,6 +16036,46 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15810
16036
|
var _state$common2;
|
15811
16037
|
return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.language;
|
15812
16038
|
});
|
16039
|
+
var _useState = useState(false),
|
16040
|
+
loading = _useState[0],
|
16041
|
+
setLoading = _useState[1];
|
16042
|
+
var _useState2 = useState(),
|
16043
|
+
noteData = _useState2[0],
|
16044
|
+
setNoteData = _useState2[1];
|
16045
|
+
useEffect(function () {
|
16046
|
+
var getNoteById = function getNoteById() {
|
16047
|
+
try {
|
16048
|
+
var _temp2 = function _temp2() {
|
16049
|
+
setLoading(false);
|
16050
|
+
};
|
16051
|
+
if (!id) return Promise.resolve();
|
16052
|
+
setLoading(true);
|
16053
|
+
var _temp = _catch(function () {
|
16054
|
+
return Promise.resolve(getNoteByIdApi(+id)).then(function (res) {
|
16055
|
+
setNoteData(res.data);
|
16056
|
+
});
|
16057
|
+
}, function (error) {
|
16058
|
+
toast.error(getErrorMessage(t, error));
|
16059
|
+
});
|
16060
|
+
return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
|
16061
|
+
} catch (e) {
|
16062
|
+
return Promise.reject(e);
|
16063
|
+
}
|
16064
|
+
};
|
16065
|
+
getNoteById();
|
16066
|
+
}, [id]);
|
16067
|
+
var note = data != null ? data : noteData;
|
16068
|
+
var user = useMemo(function () {
|
16069
|
+
if (student) return student;
|
16070
|
+
if (!note) return null;
|
16071
|
+
switch (note.type) {
|
16072
|
+
case NoteType.ToAcademy:
|
16073
|
+
case NoteType.ToStudent:
|
16074
|
+
return note.reciever;
|
16075
|
+
default:
|
16076
|
+
return note.sender;
|
16077
|
+
}
|
16078
|
+
}, [JSON.stringify(note), JSON.stringify(student)]);
|
15813
16079
|
return React__default.createElement(Drawer, {
|
15814
16080
|
anchor: anchor,
|
15815
16081
|
open: open,
|
@@ -15836,11 +16102,11 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15836
16102
|
onClick: onClose
|
15837
16103
|
}, React__default.createElement(IoClose, {
|
15838
16104
|
size: 32
|
15839
|
-
}))), showStudentInfo && React__default.createElement(Box, {
|
16105
|
+
}))), showStudentInfo && ((note === null || note === void 0 ? void 0 : note.type) === NoteType.ToAcademy || (note === null || note === void 0 ? void 0 : note.type) === NoteType.ToStudent) && React__default.createElement(Box, {
|
15840
16106
|
sx: {
|
15841
16107
|
padding: "16px 40px"
|
15842
16108
|
}
|
15843
|
-
}, !
|
16109
|
+
}, !user || loading ? React__default.createElement(Stack, {
|
15844
16110
|
direction: "row",
|
15845
16111
|
gap: 3
|
15846
16112
|
}, React__default.createElement(Skeleton, {
|
@@ -15875,7 +16141,7 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15875
16141
|
color: green[500],
|
15876
16142
|
lineHeight: "22px"
|
15877
16143
|
}
|
15878
|
-
},
|
16144
|
+
}, user.fullName), React__default.createElement(Stack, {
|
15879
16145
|
direction: "row",
|
15880
16146
|
alignItems: "center",
|
15881
16147
|
gap: 1
|
@@ -15885,17 +16151,29 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15885
16151
|
fontSize: "13px",
|
15886
16152
|
fontWeight: 500
|
15887
16153
|
}
|
15888
|
-
},
|
16154
|
+
}, user.schoolName), !!user.grade && React__default.createElement(Typography, {
|
15889
16155
|
sx: {
|
15890
16156
|
color: grey[500],
|
15891
16157
|
fontSize: "13px",
|
15892
16158
|
fontWeight: 500
|
15893
16159
|
}
|
15894
16160
|
}, t(function (label) {
|
15895
|
-
return label ? t(label) : formatGrade(
|
16161
|
+
return label ? t(label) : formatGrade(user.grade, t, language);
|
15896
16162
|
}((_BRIEF_GRADE_OPTIONS$ = BRIEF_GRADE_OPTIONS.find(function (o) {
|
15897
|
-
return o.value === Number(
|
15898
|
-
})) === null || _BRIEF_GRADE_OPTIONS$ === void 0 ? void 0 : _BRIEF_GRADE_OPTIONS$.label))))))), React__default.createElement(Stack, {
|
16163
|
+
return o.value === Number(user.grade);
|
16164
|
+
})) === null || _BRIEF_GRADE_OPTIONS$ === void 0 ? void 0 : _BRIEF_GRADE_OPTIONS$.label))))))), !note && !loading && React__default.createElement(Stack, {
|
16165
|
+
padding: "40px 24px 0",
|
16166
|
+
gap: "16px"
|
16167
|
+
}, React__default.createElement(Typography, {
|
16168
|
+
className: "text-muted"
|
16169
|
+
}, t("no_data"))), loading && React__default.createElement(Stack, {
|
16170
|
+
padding: "40px 24px 0",
|
16171
|
+
gap: "16px",
|
16172
|
+
justifyContent: "center"
|
16173
|
+
}, React__default.createElement(CircularProgress, {
|
16174
|
+
size: 40,
|
16175
|
+
color: "primary"
|
16176
|
+
})), note && !loading && React__default.createElement(Stack, {
|
15899
16177
|
padding: "40px 24px 0",
|
15900
16178
|
gap: "16px"
|
15901
16179
|
}, React__default.createElement(Stack, {
|
@@ -15908,7 +16186,7 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15908
16186
|
fontWeight: "700",
|
15909
16187
|
color: "#414E62"
|
15910
16188
|
}
|
15911
|
-
},
|
16189
|
+
}, note === null || note === void 0 ? void 0 : note.fullName)), React__default.createElement(Stack, {
|
15912
16190
|
display: "flex",
|
15913
16191
|
justifyContent: "end"
|
15914
16192
|
}, React__default.createElement(Typography, {
|
@@ -15918,7 +16196,7 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15918
16196
|
color: "#97A1AF",
|
15919
16197
|
textAlign: "end"
|
15920
16198
|
}
|
15921
|
-
}, utcToLocalTime(
|
16199
|
+
}, utcToLocalTime(note === null || note === void 0 ? void 0 : note.createdAt, t("date_format"))), React__default.createElement(Typography, {
|
15922
16200
|
sx: {
|
15923
16201
|
fontSize: "12px",
|
15924
16202
|
fontWeight: "500",
|
@@ -15926,11 +16204,808 @@ var NoteDrawer = function NoteDrawer(props) {
|
|
15926
16204
|
textAlign: "end"
|
15927
16205
|
}
|
15928
16206
|
}, academy === null || academy === void 0 ? void 0 : academy.name))), React__default.createElement(NoteContent, {
|
15929
|
-
content: (
|
16207
|
+
content: (_note$content = note === null || note === void 0 ? void 0 : note.content) != null ? _note$content : ""
|
15930
16208
|
})));
|
15931
16209
|
};
|
15932
16210
|
|
15933
|
-
var
|
16211
|
+
var TEACHER_URL = BASE_URL + "/api/teacher";
|
16212
|
+
var getTeacherListApi = function getTeacherListApi(query) {
|
16213
|
+
return api.get("" + TEACHER_URL, {
|
16214
|
+
params: query
|
16215
|
+
});
|
16216
|
+
};
|
16217
|
+
|
16218
|
+
var TeacherSelector$1 = function TeacherSelector(_ref) {
|
16219
|
+
var value = _ref.value,
|
16220
|
+
onChange = _ref.onChange,
|
16221
|
+
placeholder = _ref.placeholder,
|
16222
|
+
externalTeacherIds = _ref.externalTeacherIds,
|
16223
|
+
title = _ref.title,
|
16224
|
+
isMultiple = _ref.isMultiple,
|
16225
|
+
_ref$isClearable = _ref.isClearable,
|
16226
|
+
isClearable = _ref$isClearable === void 0 ? true : _ref$isClearable,
|
16227
|
+
useUserId = _ref.useUserId,
|
16228
|
+
exceptMe = _ref.exceptMe,
|
16229
|
+
isDisabled = _ref.isDisabled;
|
16230
|
+
var _useState = useState([]),
|
16231
|
+
teachers = _useState[0],
|
16232
|
+
setTeachers = _useState[1];
|
16233
|
+
var _useState2 = useState(""),
|
16234
|
+
searchString = _useState2[0],
|
16235
|
+
setSearchString = _useState2[1];
|
16236
|
+
var _useState3 = useState(false),
|
16237
|
+
isLoading = _useState3[0],
|
16238
|
+
setLoading = _useState3[1];
|
16239
|
+
var _useTranslation = useTranslation(),
|
16240
|
+
t = _useTranslation.t;
|
16241
|
+
var debounceSearch = useCallback(_$8.debounce(function (value) {
|
16242
|
+
loadData(value);
|
16243
|
+
}, 500), []);
|
16244
|
+
var handleChangeSearchText = function handleChangeSearchText(value) {
|
16245
|
+
setSearchString(value.trim());
|
16246
|
+
debounceSearch(value.trim());
|
16247
|
+
};
|
16248
|
+
var loadData = function loadData(textSearch) {
|
16249
|
+
try {
|
16250
|
+
var _temp2 = function _temp2() {
|
16251
|
+
setLoading(false);
|
16252
|
+
};
|
16253
|
+
setLoading(true);
|
16254
|
+
var _temp = _catch(function () {
|
16255
|
+
return Promise.resolve(getTeacherListApi({
|
16256
|
+
textSearch: textSearch,
|
16257
|
+
pageSize: 100,
|
16258
|
+
currentPage: 1,
|
16259
|
+
exceptMe: exceptMe,
|
16260
|
+
sortColumnDirection: OrderType.DESC,
|
16261
|
+
sortColumnName: "User.UserProfile.FullName"
|
16262
|
+
})).then(function (res) {
|
16263
|
+
var _res$data$items = res.data.items,
|
16264
|
+
items = _res$data$items === void 0 ? [] : _res$data$items;
|
16265
|
+
setTeachers(items);
|
16266
|
+
});
|
16267
|
+
}, function (err) {
|
16268
|
+
toast.error(getErrorMessage(t, err));
|
16269
|
+
});
|
16270
|
+
return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
|
16271
|
+
} catch (e) {
|
16272
|
+
return Promise.reject(e);
|
16273
|
+
}
|
16274
|
+
};
|
16275
|
+
useEffect(function () {
|
16276
|
+
loadData();
|
16277
|
+
}, []);
|
16278
|
+
var options = teachers.filter(function (teacher) {
|
16279
|
+
return !externalTeacherIds || externalTeacherIds && !externalTeacherIds.includes(teacher.id);
|
16280
|
+
}).map(function (teacher) {
|
16281
|
+
return {
|
16282
|
+
label: teacher.teacherName + " - " + teacher.teacherEmail,
|
16283
|
+
value: useUserId ? teacher.teacherUserId : teacher.id
|
16284
|
+
};
|
16285
|
+
});
|
16286
|
+
return React__default.createElement(FormGroup, {
|
16287
|
+
className: "" + styles["filter-item"]
|
16288
|
+
}, !!title && React__default.createElement("label", {
|
16289
|
+
className: "" + styles["title-form"]
|
16290
|
+
}, title), React__default.createElement(CustomSelectOption, {
|
16291
|
+
options: options,
|
16292
|
+
onInputChange: function onInputChange(inputValue) {
|
16293
|
+
return handleChangeSearchText(inputValue);
|
16294
|
+
},
|
16295
|
+
isLoading: isLoading,
|
16296
|
+
placeholder: placeholder || t('select_placeholder'),
|
16297
|
+
isMulti: isMultiple,
|
16298
|
+
value: value,
|
16299
|
+
inputValue: searchString,
|
16300
|
+
onChange: onChange,
|
16301
|
+
isClearable: isClearable,
|
16302
|
+
isDisabled: isDisabled
|
16303
|
+
}));
|
16304
|
+
};
|
16305
|
+
|
16306
|
+
var schema$3 = object().shape({
|
16307
|
+
content: string().trim().required(),
|
16308
|
+
studentId: number().when("type", {
|
16309
|
+
is: function is(type) {
|
16310
|
+
return type == NoteType.ToAcademy || type == NoteType.ToStudent;
|
16311
|
+
},
|
16312
|
+
then: function then(schema) {
|
16313
|
+
return schema.required("student_required");
|
16314
|
+
},
|
16315
|
+
otherwise: function otherwise(schema) {
|
16316
|
+
return schema.notRequired();
|
16317
|
+
}
|
16318
|
+
}),
|
16319
|
+
userIds: array().of(number()).when("type", {
|
16320
|
+
is: function is(type) {
|
16321
|
+
return type == NoteType.TeacherToTeachers;
|
16322
|
+
},
|
16323
|
+
then: function then(schema) {
|
16324
|
+
return schema.required("teachers_required");
|
16325
|
+
},
|
16326
|
+
otherwise: function otherwise(schema) {
|
16327
|
+
return schema.notRequired();
|
16328
|
+
}
|
16329
|
+
}),
|
16330
|
+
type: number()
|
16331
|
+
});
|
16332
|
+
var GeneralNoteDialog = function GeneralNoteDialog(_ref) {
|
16333
|
+
var _selectedNote$recieve, _selectedNote$recieve2, _selectedNote$recieve3;
|
16334
|
+
var open = _ref.open,
|
16335
|
+
type = _ref.type,
|
16336
|
+
selectedNote = _ref.selectedNote,
|
16337
|
+
value = _ref.value,
|
16338
|
+
onClose = _ref.onClose,
|
16339
|
+
onSaveNote = _ref.onSaveNote;
|
16340
|
+
var _useTranslation = useTranslation(),
|
16341
|
+
t = _useTranslation.t;
|
16342
|
+
var handleSaveNote = function handleSaveNote(val) {
|
16343
|
+
onSaveNote(val);
|
16344
|
+
};
|
16345
|
+
var tip = useMemo(function () {
|
16346
|
+
if (type === undefined) return "";
|
16347
|
+
switch (type) {
|
16348
|
+
case NoteType.ToAcademy:
|
16349
|
+
return "academy";
|
16350
|
+
case NoteType.ToStudent:
|
16351
|
+
return "student_parents";
|
16352
|
+
case NoteType.AdminToAllAdmin:
|
16353
|
+
case NoteType.AdminToAllTeacher:
|
16354
|
+
case NoteType.TeacherToAllAdmin:
|
16355
|
+
return "admin";
|
16356
|
+
case NoteType.TeacherToTeachers:
|
16357
|
+
return "teacher";
|
16358
|
+
default:
|
16359
|
+
return "";
|
16360
|
+
}
|
16361
|
+
}, [type]);
|
16362
|
+
return React__default.createElement(Dialog, {
|
16363
|
+
onClose: onClose,
|
16364
|
+
open: open,
|
16365
|
+
maxWidth: "md",
|
16366
|
+
scroll: "body",
|
16367
|
+
fullWidth: true,
|
16368
|
+
disableEnforceFocus: true,
|
16369
|
+
disableAutoFocus: true
|
16370
|
+
}, React__default.createElement(DialogTitle$1, {
|
16371
|
+
id: "customized-dialog-title"
|
16372
|
+
}, React__default.createElement(Typography$1, {
|
16373
|
+
fontWeight: 700,
|
16374
|
+
fontSize: "16px",
|
16375
|
+
lineHeight: "19.09px",
|
16376
|
+
color: "#202B37"
|
16377
|
+
}, t(type === NoteType.ToAcademy || type === NoteType.ToStudent ? selectedNote ? "edit_student_note" : "student_note_taking" : "note"), tip ? " " + t(tip) : "")), React__default.createElement(IconButton$1, {
|
16378
|
+
"aria-label": "close",
|
16379
|
+
sx: {
|
16380
|
+
position: "absolute",
|
16381
|
+
right: 8,
|
16382
|
+
top: 8,
|
16383
|
+
color: function color(theme) {
|
16384
|
+
return theme.palette.grey[500];
|
16385
|
+
}
|
16386
|
+
},
|
16387
|
+
onClick: onClose
|
16388
|
+
}, React__default.createElement(iconCloseDialog, null)), React__default.createElement(Formik, {
|
16389
|
+
initialValues: {
|
16390
|
+
content: value ? value.content : (selectedNote === null || selectedNote === void 0 ? void 0 : selectedNote.content) || "",
|
16391
|
+
type: type,
|
16392
|
+
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,
|
16393
|
+
student: value ? value.student : selectedNote !== null && selectedNote !== void 0 && selectedNote.reciever ? {
|
16394
|
+
label: selectedNote.reciever.fullName,
|
16395
|
+
value: selectedNote.reciever.id
|
16396
|
+
} : undefined,
|
16397
|
+
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) {
|
16398
|
+
return i.id;
|
16399
|
+
}),
|
16400
|
+
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) {
|
16401
|
+
return {
|
16402
|
+
label: i.fullName,
|
16403
|
+
value: i.id
|
16404
|
+
};
|
16405
|
+
})
|
16406
|
+
},
|
16407
|
+
validationSchema: schema$3,
|
16408
|
+
enableReinitialize: true,
|
16409
|
+
onSubmit: handleSaveNote
|
16410
|
+
}, function (_ref2) {
|
16411
|
+
var _selectedNote$recieve4;
|
16412
|
+
var values = _ref2.values,
|
16413
|
+
errors = _ref2.errors,
|
16414
|
+
setFieldValue = _ref2.setFieldValue;
|
16415
|
+
return React__default.createElement(Form, null, React__default.createElement(DialogContent$1, {
|
16416
|
+
sx: {
|
16417
|
+
padding: 0,
|
16418
|
+
overflowY: "auto"
|
16419
|
+
}
|
16420
|
+
}, React__default.createElement(Box, {
|
16421
|
+
display: "flex",
|
16422
|
+
flexDirection: "column",
|
16423
|
+
gap: "8px",
|
16424
|
+
padding: "24px 24px 40px 24px"
|
16425
|
+
}, (type === NoteType.ToAcademy || type === NoteType.ToStudent) && React__default.createElement(Stack, null, React__default.createElement("label", {
|
16426
|
+
htmlFor: "student",
|
16427
|
+
className: styles["form-label"] + " " + styles$5["form-label-dialog"]
|
16428
|
+
}, t("student_name")), selectedNote ? React__default.createElement(Typography$1, {
|
16429
|
+
sx: {
|
16430
|
+
fontWeight: 700,
|
16431
|
+
fontSize: "14px",
|
16432
|
+
color: "rgba(61, 198, 116, 1)"
|
16433
|
+
}
|
16434
|
+
}, (_selectedNote$recieve4 = selectedNote.reciever) === null || _selectedNote$recieve4 === void 0 ? void 0 : _selectedNote$recieve4.fullName) : React__default.createElement(Field, {
|
16435
|
+
id: "student",
|
16436
|
+
style: {
|
16437
|
+
width: "100%"
|
16438
|
+
},
|
16439
|
+
name: "student",
|
16440
|
+
className: styles["form-control"],
|
16441
|
+
render: function render(_ref3) {
|
16442
|
+
var field = _ref3.field;
|
16443
|
+
return React__default.createElement(StudentSelector, {
|
16444
|
+
value: field.value,
|
16445
|
+
onChange: function onChange(val) {
|
16446
|
+
setFieldValue("studentId", val === null || val === void 0 ? void 0 : val.value);
|
16447
|
+
setFieldValue("student", val);
|
16448
|
+
},
|
16449
|
+
isMulti: false
|
16450
|
+
});
|
16451
|
+
}
|
16452
|
+
}), !!errors.studentId && React__default.createElement(Typography$1, {
|
16453
|
+
fontWeight: 500,
|
16454
|
+
fontSize: "10px",
|
16455
|
+
lineHeight: "11.93px",
|
16456
|
+
mt: 1,
|
16457
|
+
color: "#F34B4B"
|
16458
|
+
}, errors.studentId)), (type === NoteType.AdminToAllAdmin || type === NoteType.AdminToAllTeacher) && React__default.createElement(FormControl, {
|
16459
|
+
className: "w-100"
|
16460
|
+
}, React__default.createElement(FormLabel, {
|
16461
|
+
className: "fw-medium",
|
16462
|
+
id: "type"
|
16463
|
+
}, t("receivers")), React__default.createElement(RadioGroup, {
|
16464
|
+
className: "flex-row flex-wrap"
|
16465
|
+
}, React__default.createElement(FormControlLabel, {
|
16466
|
+
control: React__default.createElement(Radio, {
|
16467
|
+
checked: values.type === NoteType.AdminToAllAdmin || values.type === NoteType.TeacherToAllAdmin,
|
16468
|
+
onChange: function onChange(_) {
|
16469
|
+
return setFieldValue("type", NoteType.AdminToAllAdmin);
|
16470
|
+
}
|
16471
|
+
}),
|
16472
|
+
label: t("admin")
|
16473
|
+
}), React__default.createElement(FormControlLabel, {
|
16474
|
+
control: React__default.createElement(Radio, {
|
16475
|
+
checked: values.type === NoteType.AdminToAllTeacher,
|
16476
|
+
onChange: function onChange(_) {
|
16477
|
+
return setFieldValue("type", NoteType.AdminToAllTeacher);
|
16478
|
+
}
|
16479
|
+
}),
|
16480
|
+
label: t("teacher")
|
16481
|
+
}))), type === NoteType.TeacherToTeachers && React__default.createElement(Stack, null, React__default.createElement("label", {
|
16482
|
+
htmlFor: "teachers",
|
16483
|
+
className: styles["form-label"] + " " + styles$5["form-label-dialog"]
|
16484
|
+
}, t("teachers")), React__default.createElement(Field, {
|
16485
|
+
id: "users",
|
16486
|
+
style: {
|
16487
|
+
width: "100%"
|
16488
|
+
},
|
16489
|
+
name: "users",
|
16490
|
+
className: styles["form-control"],
|
16491
|
+
render: function render(_ref4) {
|
16492
|
+
var field = _ref4.field;
|
16493
|
+
return React__default.createElement(TeacherSelector$1, {
|
16494
|
+
value: field.value,
|
16495
|
+
onChange: function onChange(val) {
|
16496
|
+
var _val$map, _val$map2;
|
16497
|
+
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) {
|
16498
|
+
return i.value;
|
16499
|
+
})) != null ? _val$map : []);
|
16500
|
+
setFieldValue("users", val != null ? val : []);
|
16501
|
+
},
|
16502
|
+
isDisabled: !!selectedNote,
|
16503
|
+
exceptMe: true,
|
16504
|
+
isMultiple: true,
|
16505
|
+
useUserId: true
|
16506
|
+
});
|
16507
|
+
}
|
16508
|
+
}), !!errors.userIds && React__default.createElement(Typography$1, {
|
16509
|
+
fontWeight: 500,
|
16510
|
+
fontSize: "10px",
|
16511
|
+
lineHeight: "11.93px",
|
16512
|
+
mt: 1,
|
16513
|
+
color: "#F34B4B"
|
16514
|
+
}, errors.userIds)), React__default.createElement(Stack, null, React__default.createElement("label", {
|
16515
|
+
htmlFor: "content-question",
|
16516
|
+
className: styles["form-label"] + " " + styles$5["form-label-dialog"]
|
16517
|
+
}, t("incorrect_answer_note_contents")), React__default.createElement(Box, {
|
16518
|
+
position: "relative",
|
16519
|
+
display: "flex",
|
16520
|
+
flexDirection: "row",
|
16521
|
+
alignItems: "center"
|
16522
|
+
}, React__default.createElement(Field, {
|
16523
|
+
id: "content-question",
|
16524
|
+
style: {
|
16525
|
+
width: "100%"
|
16526
|
+
},
|
16527
|
+
name: "content",
|
16528
|
+
placeholder: t("the_problem_is_difficult"),
|
16529
|
+
className: styles["form-control"],
|
16530
|
+
render: function render(_ref5) {
|
16531
|
+
var field = _ref5.field;
|
16532
|
+
return React__default.createElement(NoteTinyEditor, {
|
16533
|
+
initValue: field.value,
|
16534
|
+
onChange: function onChange(text) {
|
16535
|
+
return setFieldValue("content", text);
|
16536
|
+
}
|
16537
|
+
});
|
16538
|
+
}
|
16539
|
+
})), !!errors.content && React__default.createElement(Typography$1, {
|
16540
|
+
fontWeight: 500,
|
16541
|
+
fontSize: "10px",
|
16542
|
+
lineHeight: "11.93px",
|
16543
|
+
mt: 1,
|
16544
|
+
color: "#F34B4B"
|
16545
|
+
}, errors.content), React__default.createElement(Box, {
|
16546
|
+
marginBottom: "4px"
|
16547
|
+
})))), React__default.createElement(DialogActions$1, {
|
16548
|
+
sx: {
|
16549
|
+
display: "flex",
|
16550
|
+
justifyContent: "space-between",
|
16551
|
+
alignItems: "center",
|
16552
|
+
padding: "12px",
|
16553
|
+
borderTop: "1px solid #CED2DA"
|
16554
|
+
}
|
16555
|
+
}, React__default.createElement(MButton, {
|
16556
|
+
className: styles$5["btn-cancel"],
|
16557
|
+
onClick: onClose
|
16558
|
+
}, React__default.createElement(Typography$1, {
|
16559
|
+
sx: {
|
16560
|
+
color: styles.dark + " !important"
|
16561
|
+
},
|
16562
|
+
fontWeight: 700,
|
16563
|
+
fontSize: "14px",
|
16564
|
+
lineHeight: "16.71px"
|
16565
|
+
}, t("cancel"))), React__default.createElement(MButton, {
|
16566
|
+
variant: "contained",
|
16567
|
+
sx: {
|
16568
|
+
bgcolor: styles.dark
|
16569
|
+
},
|
16570
|
+
className: styles$5["btn-register"],
|
16571
|
+
type: "submit"
|
16572
|
+
}, React__default.createElement(Typography$1, {
|
16573
|
+
fontWeight: 700,
|
16574
|
+
fontSize: "14px",
|
16575
|
+
lineHeight: "16.71px",
|
16576
|
+
color: "#FFFFFF"
|
16577
|
+
}, t("registration")))));
|
16578
|
+
}));
|
16579
|
+
};
|
16580
|
+
|
16581
|
+
var NoteList = function NoteList(_ref) {
|
16582
|
+
var defaultFilter = _ref.defaultFilter,
|
16583
|
+
role = _ref.role,
|
16584
|
+
headers = _ref.headers,
|
16585
|
+
isAdmin = _ref.isAdmin;
|
16586
|
+
var _useTranslation = useTranslation(),
|
16587
|
+
t = _useTranslation.t;
|
16588
|
+
var _useList = useList(function (filter) {
|
16589
|
+
return getNotesApi(filter);
|
16590
|
+
}, defaultFilter, false),
|
16591
|
+
isLoading = _useList.isLoading,
|
16592
|
+
filter = _useList.filter,
|
16593
|
+
textSearchRef = _useList.textSearchRef,
|
16594
|
+
paging = _useList.paging,
|
16595
|
+
data = _useList.data,
|
16596
|
+
selectedItem = _useList.selectedItem,
|
16597
|
+
handleSort = _useList.handleSort,
|
16598
|
+
handleChangeSearchText = _useList.handleChangeSearchText,
|
16599
|
+
handleChangePage = _useList.handleChangePage,
|
16600
|
+
calcOrderNumber = _useList.calcOrderNumber,
|
16601
|
+
handleChangeSelectedItem = _useList.handleChangeSelectedItem,
|
16602
|
+
getData = _useList.getData;
|
16603
|
+
var dispatch = useDispatch();
|
16604
|
+
var _useState = useState(false),
|
16605
|
+
openNoteViewDrawer = _useState[0],
|
16606
|
+
setOpenNoteViewDrawer = _useState[1];
|
16607
|
+
var _useState2 = useState(),
|
16608
|
+
openNoteDialog = _useState2[0],
|
16609
|
+
setOpenNoteDialog = _useState2[1];
|
16610
|
+
var _useState3 = useState(),
|
16611
|
+
noteRequest = _useState3[0],
|
16612
|
+
setNoteRequest = _useState3[1];
|
16613
|
+
var _useState4 = useState(false),
|
16614
|
+
openConfirmNote = _useState4[0],
|
16615
|
+
setOpenConfirmNote = _useState4[1];
|
16616
|
+
var _useState5 = useState(false),
|
16617
|
+
openDeleteNoteDialog = _useState5[0],
|
16618
|
+
setOpenDeleteNoteDialog = _useState5[1];
|
16619
|
+
var handleOpenCreateNoteDialog = function handleOpenCreateNoteDialog() {
|
16620
|
+
var _defaultFilter$types;
|
16621
|
+
if (((_defaultFilter$types = defaultFilter.types) === null || _defaultFilter$types === void 0 ? void 0 : _defaultFilter$types.length) === 1) setOpenNoteDialog(defaultFilter.types[0]);else if (defaultFilter.types && defaultFilter.types.length > 1) {
|
16622
|
+
setOpenNoteDialog(isAdmin ? NoteType.AdminToAllAdmin : NoteType.TeacherToAllAdmin);
|
16623
|
+
}
|
16624
|
+
};
|
16625
|
+
var handleCloseDeleteDialog = function handleCloseDeleteDialog() {
|
16626
|
+
setOpenDeleteNoteDialog(false);
|
16627
|
+
};
|
16628
|
+
var handleOpenDeleteNoteDialog = function handleOpenDeleteNoteDialog(note) {
|
16629
|
+
handleChangeSelectedItem(note);
|
16630
|
+
setOpenDeleteNoteDialog(true);
|
16631
|
+
};
|
16632
|
+
var handleOpenNoteDrawer = function handleOpenNoteDrawer(note) {
|
16633
|
+
setOpenNoteViewDrawer(true);
|
16634
|
+
handleChangeSelectedItem(note);
|
16635
|
+
};
|
16636
|
+
var handleCloseNoteDrawer = function handleCloseNoteDrawer() {
|
16637
|
+
setOpenNoteViewDrawer(false);
|
16638
|
+
handleChangeSelectedItem(undefined);
|
16639
|
+
};
|
16640
|
+
var handleCloseConfirmStudentNoteDialog = function handleCloseConfirmStudentNoteDialog() {
|
16641
|
+
setOpenConfirmNote(false);
|
16642
|
+
};
|
16643
|
+
var handleOpenNoteDialog = function handleOpenNoteDialog(note) {
|
16644
|
+
handleChangeSelectedItem(note);
|
16645
|
+
setOpenNoteDialog(note.type);
|
16646
|
+
};
|
16647
|
+
var handleCloseNoteDialog = function handleCloseNoteDialog() {
|
16648
|
+
handleChangeSelectedItem(undefined);
|
16649
|
+
setOpenNoteDialog(undefined);
|
16650
|
+
setNoteRequest(undefined);
|
16651
|
+
};
|
16652
|
+
var handleOpenConfirmStudentNoteDialog = function handleOpenConfirmStudentNoteDialog(note) {
|
16653
|
+
setNoteRequest(note);
|
16654
|
+
setOpenConfirmNote(true);
|
16655
|
+
};
|
16656
|
+
var handleSaveNote = function handleSaveNote(noteRequest) {
|
16657
|
+
try {
|
16658
|
+
var _temp4 = function _temp4() {
|
16659
|
+
dispatch(setLoading(false));
|
16660
|
+
};
|
16661
|
+
if (openNoteDialog === undefined) return Promise.resolve();
|
16662
|
+
if (noteRequest.content.trim().length === 0) return Promise.resolve();
|
16663
|
+
dispatch(setLoading(true));
|
16664
|
+
var _temp3 = _catch(function () {
|
16665
|
+
function _temp2() {
|
16666
|
+
getData();
|
16667
|
+
reset();
|
16668
|
+
}
|
16669
|
+
var _temp = function () {
|
16670
|
+
if (selectedItem) {
|
16671
|
+
return Promise.resolve(updateNoteDataApi(selectedItem.id, noteRequest)).then(function () {
|
16672
|
+
toast.success(t("update_note_successfully"));
|
16673
|
+
});
|
16674
|
+
} else {
|
16675
|
+
return Promise.resolve(createNoteApi(noteRequest)).then(function () {
|
16676
|
+
toast.success(t("create_note_successfully"));
|
16677
|
+
});
|
16678
|
+
}
|
16679
|
+
}();
|
16680
|
+
return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
|
16681
|
+
}, function (error) {
|
16682
|
+
toast.error(getErrorMessage(t, error));
|
16683
|
+
});
|
16684
|
+
return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
|
16685
|
+
} catch (e) {
|
16686
|
+
return Promise.reject(e);
|
16687
|
+
}
|
16688
|
+
};
|
16689
|
+
var handleDeleteNote = function handleDeleteNote() {
|
16690
|
+
try {
|
16691
|
+
var _temp6 = function _temp6() {
|
16692
|
+
dispatch(setLoading(false));
|
16693
|
+
};
|
16694
|
+
if (!(selectedItem !== null && selectedItem !== void 0 && selectedItem.id)) return Promise.resolve();
|
16695
|
+
dispatch(setLoading(true));
|
16696
|
+
var _temp5 = _catch(function () {
|
16697
|
+
return Promise.resolve(deleteNoteApi(selectedItem.id)).then(function () {
|
16698
|
+
toast.success(t("delete_note_successfully"));
|
16699
|
+
getData();
|
16700
|
+
reset();
|
16701
|
+
});
|
16702
|
+
}, function (error) {
|
16703
|
+
toast.error(getErrorMessage(t, error));
|
16704
|
+
});
|
16705
|
+
return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5));
|
16706
|
+
} catch (e) {
|
16707
|
+
return Promise.reject(e);
|
16708
|
+
}
|
16709
|
+
};
|
16710
|
+
var reset = function reset() {
|
16711
|
+
handleCloseNoteDialog();
|
16712
|
+
setOpenDeleteNoteDialog(false);
|
16713
|
+
setOpenConfirmNote(false);
|
16714
|
+
setNoteRequest(undefined);
|
16715
|
+
};
|
16716
|
+
var handleSaveNoteDialog = openNoteDialog === NoteType.ToStudent && !(selectedItem !== null && selectedItem !== void 0 && selectedItem.id) ? handleOpenConfirmStudentNoteDialog : handleSaveNote;
|
16717
|
+
var handleSaveStudentNote = function handleSaveStudentNote() {
|
16718
|
+
if (!noteRequest) return;
|
16719
|
+
handleSaveNote(noteRequest);
|
16720
|
+
};
|
16721
|
+
return React__default.createElement(Box, {
|
16722
|
+
width: "100%"
|
16723
|
+
}, React__default.createElement(Grid, {
|
16724
|
+
container: true
|
16725
|
+
}, React__default.createElement(Grid, {
|
16726
|
+
item: true,
|
16727
|
+
xs: 6,
|
16728
|
+
className: "d-flex mb-3"
|
16729
|
+
}, React__default.createElement(SearchInput, {
|
16730
|
+
placeholder: t("search_for"),
|
16731
|
+
textSearchRef: textSearchRef,
|
16732
|
+
onChange: handleChangeSearchText
|
16733
|
+
})), React__default.createElement(Grid, {
|
16734
|
+
item: true,
|
16735
|
+
xs: 6,
|
16736
|
+
className: "d-flex justify-content-end align-items-center"
|
16737
|
+
}, React__default.createElement(Button, {
|
16738
|
+
variant: "contained",
|
16739
|
+
sx: {
|
16740
|
+
bgcolor: green[700]
|
16741
|
+
},
|
16742
|
+
startIcon: React__default.createElement(FaPlus, {
|
16743
|
+
size: 12
|
16744
|
+
}),
|
16745
|
+
onClick: handleOpenCreateNoteDialog
|
16746
|
+
}, t("new_note"))), React__default.createElement(Grid, {
|
16747
|
+
item: true,
|
16748
|
+
xs: 12
|
16749
|
+
}, React__default.createElement(TableContainer, null, React__default.createElement(Table, null, React__default.createElement(TableHead, null, React__default.createElement(TableRow, null, headers.map(function (i, index) {
|
16750
|
+
return React__default.createElement(TableCell, {
|
16751
|
+
key: index,
|
16752
|
+
onClick: !!i.sortKey ? function () {
|
16753
|
+
return handleSort(i.sortKey);
|
16754
|
+
} : undefined,
|
16755
|
+
className: "" + (!!i.sortKey && "pointer")
|
16756
|
+
}, React__default.createElement("div", {
|
16757
|
+
className: "d-flex justify-content-between align-items-center text-nowrap"
|
16758
|
+
}, t(i.title), !!i.sortKey && React__default.createElement(SortIcon, {
|
16759
|
+
isAscending: filter.sortColumnName !== i.sortKey ? undefined : filter.sortColumnDirection === OrderType.ASC
|
16760
|
+
})));
|
16761
|
+
}))), React__default.createElement(TableBody, null, React__default.createElement(ListView, {
|
16762
|
+
data: data,
|
16763
|
+
render: function render(item, index) {
|
16764
|
+
return React__default.createElement(NoteItemList, {
|
16765
|
+
key: index,
|
16766
|
+
data: item,
|
16767
|
+
calcOrderNumber: calcOrderNumber,
|
16768
|
+
index: index,
|
16769
|
+
role: role,
|
16770
|
+
onDelete: handleOpenDeleteNoteDialog,
|
16771
|
+
onUpdate: handleOpenNoteDialog,
|
16772
|
+
onView: handleOpenNoteDrawer
|
16773
|
+
});
|
16774
|
+
}
|
16775
|
+
}), !data.length && !isLoading && React__default.createElement(TableRow, null, React__default.createElement(TableCell, {
|
16776
|
+
colSpan: 12,
|
16777
|
+
className: "text-center text-muted"
|
16778
|
+
}, t("no_data"))), isLoading && React__default.createElement(TableRow, null, React__default.createElement(TableCell, {
|
16779
|
+
colSpan: 12
|
16780
|
+
}, React__default.createElement(Stack, {
|
16781
|
+
justifyContent: "center",
|
16782
|
+
alignItems: "center",
|
16783
|
+
width: "100%"
|
16784
|
+
}, React__default.createElement(CircularProgress, {
|
16785
|
+
size: 24
|
16786
|
+
}))))))), React__default.createElement("div", {
|
16787
|
+
className: "d-flex justify-content-end mt-3"
|
16788
|
+
}, !!paging.totalPages && React__default.createElement(Pagination, {
|
16789
|
+
count: paging.totalPages,
|
16790
|
+
page: paging.page,
|
16791
|
+
onChange: handleChangePage
|
16792
|
+
})))), React__default.createElement(NoteDrawer, {
|
16793
|
+
open: !!openNoteViewDrawer,
|
16794
|
+
data: selectedItem,
|
16795
|
+
student: selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.reciever,
|
16796
|
+
width: "80dvw",
|
16797
|
+
onClose: handleCloseNoteDrawer,
|
16798
|
+
anchor: "right"
|
16799
|
+
}), React__default.createElement(GeneralNoteDialog, {
|
16800
|
+
open: openNoteDialog !== undefined,
|
16801
|
+
type: openNoteDialog,
|
16802
|
+
onClose: handleCloseNoteDialog,
|
16803
|
+
onSaveNote: handleSaveNoteDialog,
|
16804
|
+
selectedNote: selectedItem,
|
16805
|
+
value: noteRequest
|
16806
|
+
}), React__default.createElement(ConfirmDialog, {
|
16807
|
+
open: openConfirmNote,
|
16808
|
+
toggle: handleCloseConfirmStudentNoteDialog,
|
16809
|
+
onConfirm: handleSaveStudentNote,
|
16810
|
+
text: t("are_you_sure_to_create_student_parent_note")
|
16811
|
+
}), React__default.createElement(ConfirmDeleteDialog, {
|
16812
|
+
open: openDeleteNoteDialog,
|
16813
|
+
toggle: handleCloseDeleteDialog,
|
16814
|
+
onConfirm: handleDeleteNote,
|
16815
|
+
text: t("are_you_sure_you_want_to_delete_the_note"),
|
16816
|
+
title: t("delete_note"),
|
16817
|
+
okText: t("delete_note"),
|
16818
|
+
cancelText: t("cancel")
|
16819
|
+
}));
|
16820
|
+
};
|
16821
|
+
|
16822
|
+
var NotetabPanel = function NotetabPanel(_ref) {
|
16823
|
+
var children = _ref.children,
|
16824
|
+
value = _ref.value,
|
16825
|
+
index = _ref.index;
|
16826
|
+
return React__default.createElement("div", {
|
16827
|
+
role: "tabpanel",
|
16828
|
+
hidden: value !== index,
|
16829
|
+
id: "tabpanel-" + index,
|
16830
|
+
"aria-labelledby": "tab-" + index
|
16831
|
+
}, value === index && React__default.createElement(Box, {
|
16832
|
+
sx: {
|
16833
|
+
p: 2
|
16834
|
+
}
|
16835
|
+
}, React__default.createElement(Typography, null, children)));
|
16836
|
+
};
|
16837
|
+
|
16838
|
+
var NOTE_STUDENT_HEADERS = [{
|
16839
|
+
title: "#"
|
16840
|
+
}, {
|
16841
|
+
title: "sender",
|
16842
|
+
sortKey: "User.UserProfile.FullName"
|
16843
|
+
}, {
|
16844
|
+
title: "student",
|
16845
|
+
sortKey: "Student.UserProfile.FullName"
|
16846
|
+
}, {
|
16847
|
+
title: "content"
|
16848
|
+
}, {
|
16849
|
+
title: "type"
|
16850
|
+
}, {
|
16851
|
+
title: "created_at",
|
16852
|
+
sortKey: "CreatedAt"
|
16853
|
+
}, {
|
16854
|
+
title: "actions"
|
16855
|
+
}];
|
16856
|
+
var NOTE_TEACHER_HEADERS = [{
|
16857
|
+
title: "#"
|
16858
|
+
}, {
|
16859
|
+
title: "sender",
|
16860
|
+
sortKey: "User.UserProfile.FullName"
|
16861
|
+
}, {
|
16862
|
+
title: "receivers"
|
16863
|
+
}, {
|
16864
|
+
title: "content"
|
16865
|
+
}, {
|
16866
|
+
title: "type"
|
16867
|
+
}, {
|
16868
|
+
title: "created_at",
|
16869
|
+
sortKey: "CreatedAt"
|
16870
|
+
}, {
|
16871
|
+
title: "actions"
|
16872
|
+
}];
|
16873
|
+
var NOTE_ADMIN_HEADERS = [{
|
16874
|
+
title: "#"
|
16875
|
+
}, {
|
16876
|
+
title: "sender",
|
16877
|
+
sortKey: "User.UserProfile.FullName"
|
16878
|
+
}, {
|
16879
|
+
title: "receivers"
|
16880
|
+
}, {
|
16881
|
+
title: "content"
|
16882
|
+
}, {
|
16883
|
+
title: "type"
|
16884
|
+
}, {
|
16885
|
+
title: "created_at",
|
16886
|
+
sortKey: "CreatedAt"
|
16887
|
+
}, {
|
16888
|
+
title: "actions"
|
16889
|
+
}];
|
16890
|
+
var ACADEMY_NOTE_FILTER = {
|
16891
|
+
currentPage: 1,
|
16892
|
+
pageSize: 12,
|
16893
|
+
sortColumnDirection: OrderType.DESC,
|
16894
|
+
sortColumnName: NoteSortColumn.CreatedAt,
|
16895
|
+
types: [NoteType.ToAcademy]
|
16896
|
+
};
|
16897
|
+
var STUDENT_PARENTS_NOTE_FILTER = {
|
16898
|
+
currentPage: 1,
|
16899
|
+
pageSize: 12,
|
16900
|
+
sortColumnDirection: OrderType.DESC,
|
16901
|
+
sortColumnName: NoteSortColumn.CreatedAt,
|
16902
|
+
types: [NoteType.ToStudent]
|
16903
|
+
};
|
16904
|
+
var ADMIN_TEACHER_NOTE_FILTER = {
|
16905
|
+
currentPage: 1,
|
16906
|
+
pageSize: 12,
|
16907
|
+
sortColumnDirection: OrderType.DESC,
|
16908
|
+
sortColumnName: NoteSortColumn.CreatedAt,
|
16909
|
+
types: [NoteType.TeacherToAllAdmin, NoteType.AdminToAllTeacher]
|
16910
|
+
};
|
16911
|
+
var ADMIN_NOTE_FILTER = {
|
16912
|
+
currentPage: 1,
|
16913
|
+
pageSize: 12,
|
16914
|
+
sortColumnDirection: OrderType.DESC,
|
16915
|
+
sortColumnName: NoteSortColumn.CreatedAt,
|
16916
|
+
types: [NoteType.TeacherToAllAdmin, NoteType.AdminToAllTeacher, NoteType.AdminToAllAdmin]
|
16917
|
+
};
|
16918
|
+
var TEACHER_NOTE_FILTER = {
|
16919
|
+
currentPage: 1,
|
16920
|
+
pageSize: 12,
|
16921
|
+
sortColumnDirection: OrderType.DESC,
|
16922
|
+
sortColumnName: NoteSortColumn.CreatedAt,
|
16923
|
+
types: [NoteType.TeacherToTeachers]
|
16924
|
+
};
|
16925
|
+
|
16926
|
+
var NoteTabs = function NoteTabs(_ref) {
|
16927
|
+
var role = _ref.role;
|
16928
|
+
var roles = useSelector(function (state) {
|
16929
|
+
var _state$common$user$ro, _state$common, _state$common$user;
|
16930
|
+
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 : [];
|
16931
|
+
});
|
16932
|
+
var isAdminUser = roles.includes(Role.Admin);
|
16933
|
+
var isAdmin = roles.includes(Role.Admin);
|
16934
|
+
var _useState = useState(0),
|
16935
|
+
value = _useState[0],
|
16936
|
+
setValue = _useState[1];
|
16937
|
+
var handleChange = function handleChange(_event, newValue) {
|
16938
|
+
setValue(newValue);
|
16939
|
+
};
|
16940
|
+
return React__default.createElement(Box, {
|
16941
|
+
sx: {
|
16942
|
+
width: "100%"
|
16943
|
+
}
|
16944
|
+
}, React__default.createElement(Tabs, {
|
16945
|
+
value: value,
|
16946
|
+
onChange: handleChange,
|
16947
|
+
sx: {
|
16948
|
+
"& .MuiTab-root": {
|
16949
|
+
color: grey[500],
|
16950
|
+
fontSize: "1rem"
|
16951
|
+
},
|
16952
|
+
"& .Mui-selected": {
|
16953
|
+
color: green[700] + "!important"
|
16954
|
+
},
|
16955
|
+
"& .MuiTabs-indicator": {
|
16956
|
+
backgroundColor: green[700]
|
16957
|
+
}
|
16958
|
+
}
|
16959
|
+
}, React__default.createElement(Tab, Object.assign({
|
16960
|
+
label: t$1("academy")
|
16961
|
+
}, a11yProps$1(0))), React__default.createElement(Tab, Object.assign({
|
16962
|
+
label: t$1("student_parents")
|
16963
|
+
}, a11yProps$1(1))), React__default.createElement(Tab, Object.assign({
|
16964
|
+
label: t$1("admin")
|
16965
|
+
}, a11yProps$1(2))), !isAdmin && !isAdminUser && React__default.createElement(Tab, Object.assign({
|
16966
|
+
label: t$1("teacher")
|
16967
|
+
}, a11yProps$1(3)))), React__default.createElement(NotetabPanel, {
|
16968
|
+
value: value,
|
16969
|
+
index: 0
|
16970
|
+
}, React__default.createElement(NoteList, {
|
16971
|
+
role: role,
|
16972
|
+
isAdmin: isAdmin,
|
16973
|
+
defaultFilter: ACADEMY_NOTE_FILTER,
|
16974
|
+
headers: NOTE_STUDENT_HEADERS
|
16975
|
+
})), React__default.createElement(NotetabPanel, {
|
16976
|
+
value: value,
|
16977
|
+
index: 1
|
16978
|
+
}, React__default.createElement(NoteList, {
|
16979
|
+
role: role,
|
16980
|
+
isAdmin: isAdmin,
|
16981
|
+
defaultFilter: STUDENT_PARENTS_NOTE_FILTER,
|
16982
|
+
headers: NOTE_STUDENT_HEADERS
|
16983
|
+
})), React__default.createElement(NotetabPanel, {
|
16984
|
+
value: value,
|
16985
|
+
index: 2
|
16986
|
+
}, React__default.createElement(NoteList, {
|
16987
|
+
role: role,
|
16988
|
+
isAdmin: isAdmin,
|
16989
|
+
defaultFilter: isAdmin ? ADMIN_NOTE_FILTER : ADMIN_TEACHER_NOTE_FILTER,
|
16990
|
+
headers: NOTE_ADMIN_HEADERS
|
16991
|
+
})), !isAdmin && !isAdminUser && React__default.createElement(NotetabPanel, {
|
16992
|
+
value: value,
|
16993
|
+
index: 3
|
16994
|
+
}, React__default.createElement(NoteList, {
|
16995
|
+
role: role,
|
16996
|
+
isAdmin: isAdmin,
|
16997
|
+
defaultFilter: TEACHER_NOTE_FILTER,
|
16998
|
+
headers: NOTE_TEACHER_HEADERS
|
16999
|
+
})));
|
17000
|
+
};
|
17001
|
+
function a11yProps$1(index) {
|
17002
|
+
return {
|
17003
|
+
id: "tab-" + index,
|
17004
|
+
"aria-controls": "tabpanel-" + index
|
17005
|
+
};
|
17006
|
+
}
|
17007
|
+
|
17008
|
+
var useVirtualList = function useVirtualList(defaultFilter, getItemsApi) {
|
15934
17009
|
var _useTranslation = useTranslation(),
|
15935
17010
|
t = _useTranslation.t;
|
15936
17011
|
var _useState = useState([]),
|
@@ -15944,7 +17019,7 @@ var useVirtualList = function useVirtualList(studentId, defaultFilter, getItemsA
|
|
15944
17019
|
setSelectedItem = _useState3[1];
|
15945
17020
|
var _useState4 = useState(false),
|
15946
17021
|
isLoading = _useState4[0],
|
15947
|
-
|
17022
|
+
setLoading = _useState4[1];
|
15948
17023
|
var _useState5 = useState(),
|
15949
17024
|
filter = _useState5[0],
|
15950
17025
|
setFilter = _useState5[1];
|
@@ -15954,18 +17029,16 @@ var useVirtualList = function useVirtualList(studentId, defaultFilter, getItemsA
|
|
15954
17029
|
var getItems = function getItems() {
|
15955
17030
|
try {
|
15956
17031
|
var _temp2 = function _temp2() {
|
15957
|
-
|
17032
|
+
setLoading(false);
|
15958
17033
|
};
|
15959
17034
|
if (isLoading) return Promise.resolve();
|
15960
17035
|
if (!filter || !filter.currentPage) {
|
15961
17036
|
setItems([]);
|
15962
17037
|
return Promise.resolve();
|
15963
17038
|
}
|
15964
|
-
|
17039
|
+
setLoading(true);
|
15965
17040
|
var _temp = _catch(function () {
|
15966
|
-
return Promise.resolve(getItemsApi(
|
15967
|
-
studentId: studentId
|
15968
|
-
}))).then(function (res) {
|
17041
|
+
return Promise.resolve(getItemsApi(filter)).then(function (res) {
|
15969
17042
|
var responseData = res.data;
|
15970
17043
|
setTotalPages((responseData === null || responseData === void 0 ? void 0 : responseData.totalPages) || 0);
|
15971
17044
|
var responseItems = (responseData === null || responseData === void 0 ? void 0 : responseData.items) || [];
|
@@ -16004,23 +17077,25 @@ var useVirtualList = function useVirtualList(studentId, defaultFilter, getItemsA
|
|
16004
17077
|
});
|
16005
17078
|
setItems(results);
|
16006
17079
|
};
|
16007
|
-
var handleItemRemoved = function handleItemRemoved(
|
16008
|
-
|
16009
|
-
|
16010
|
-
|
16011
|
-
|
17080
|
+
var handleItemRemoved = function handleItemRemoved(_item) {
|
17081
|
+
getItems();
|
17082
|
+
};
|
17083
|
+
var handleChangeFilter = function handleChangeFilter(newFilter) {
|
17084
|
+
setFilter(newFilter);
|
16012
17085
|
};
|
16013
17086
|
useEffect(function () {
|
16014
17087
|
setFilter(defaultFilter);
|
16015
17088
|
}, [JSON.stringify(defaultFilter)]);
|
16016
17089
|
useEffect(function () {
|
16017
17090
|
getItems();
|
16018
|
-
}, [JSON.stringify(filter)]);
|
17091
|
+
}, [JSON.stringify(filter), getItemsApi]);
|
16019
17092
|
return {
|
16020
17093
|
t: t,
|
17094
|
+
filter: filter,
|
16021
17095
|
selectedItem: selectedItem,
|
16022
17096
|
items: items,
|
16023
17097
|
isLoading: isLoading,
|
17098
|
+
handleChangeFilter: handleChangeFilter,
|
16024
17099
|
setItems: setItems,
|
16025
17100
|
handleChangeSelectedItem: handleChangeSelectedItem,
|
16026
17101
|
handleLoadMore: handleLoadMore,
|
@@ -16072,8 +17147,9 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16072
17147
|
var _useState6 = useState(),
|
16073
17148
|
noteIdContextMenu = _useState6[0],
|
16074
17149
|
setNoteIdContextMenu = _useState6[1];
|
16075
|
-
var _useVirtualList = useVirtualList(
|
16076
|
-
|
17150
|
+
var _useVirtualList = useVirtualList(_extends({}, DEFAULT_NOTE_FILTER, {
|
17151
|
+
types: [NoteType.ToAcademy],
|
17152
|
+
studentId: studentId
|
16077
17153
|
}), getNotesApi$1),
|
16078
17154
|
academyNotes = _useVirtualList.items,
|
16079
17155
|
isLoadingAcademyNotes = _useVirtualList.isLoading,
|
@@ -16083,8 +17159,9 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16083
17159
|
handleItemAddedAcademyNote = _useVirtualList.handleItemAdded,
|
16084
17160
|
handleItemUpdatedAcademyNote = _useVirtualList.handleItemUpdated,
|
16085
17161
|
handleChangeSelectedItem = _useVirtualList.handleChangeSelectedItem;
|
16086
|
-
var _useVirtualList2 = useVirtualList(
|
16087
|
-
|
17162
|
+
var _useVirtualList2 = useVirtualList(_extends({}, DEFAULT_NOTE_FILTER, {
|
17163
|
+
types: [NoteType.ToStudent],
|
17164
|
+
studentId: studentId
|
16088
17165
|
}), getNotesApi$1),
|
16089
17166
|
studentNotes = _useVirtualList2.items,
|
16090
17167
|
isLoadingStudentNotes = _useVirtualList2.isLoading,
|
@@ -16101,11 +17178,11 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16101
17178
|
};
|
16102
17179
|
var handleOpenCreateAcademyNoteDialog = function handleOpenCreateAcademyNoteDialog() {
|
16103
17180
|
handleCloseTooltip();
|
16104
|
-
setOpenNoteDialog(NoteType.
|
17181
|
+
setOpenNoteDialog(NoteType.ToAcademy);
|
16105
17182
|
};
|
16106
17183
|
var handleOpenCreateStudentNoteDialog = function handleOpenCreateStudentNoteDialog() {
|
16107
17184
|
handleCloseTooltip();
|
16108
|
-
setOpenNoteDialog(NoteType.
|
17185
|
+
setOpenNoteDialog(NoteType.ToStudent);
|
16109
17186
|
};
|
16110
17187
|
var handleCloseTooltip = function handleCloseTooltip() {
|
16111
17188
|
setNoteIdContextMenu(0);
|
@@ -16156,7 +17233,7 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16156
17233
|
var _temp = function () {
|
16157
17234
|
if (selectedItem) {
|
16158
17235
|
return Promise.resolve(updateNoteApi$1(selectedItem.id, data.content)).then(function (res) {
|
16159
|
-
if (selectedItem.type === NoteType.
|
17236
|
+
if (selectedItem.type === NoteType.ToStudent) handleItemUpdatedStudentNote(res.data);else handleItemUpdatedAcademyNote(res.data);
|
16160
17237
|
toast.success(t("update_note_successfully"));
|
16161
17238
|
});
|
16162
17239
|
} else {
|
@@ -16164,7 +17241,7 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16164
17241
|
return Promise.resolve(createNoteApi$1(_extends({}, data, {
|
16165
17242
|
type: openNoteDialog
|
16166
17243
|
}))).then(function (res) {
|
16167
|
-
if (res.data.type === NoteType.
|
17244
|
+
if (res.data.type === NoteType.ToStudent) handleItemAddedStudentNote(res.data);else handleItemAddedAcademyNote(res.data);
|
16168
17245
|
toast.success(t("create_note_successfully"));
|
16169
17246
|
});
|
16170
17247
|
}
|
@@ -16197,7 +17274,7 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16197
17274
|
var _temp5 = _catch(function () {
|
16198
17275
|
return Promise.resolve(deleteNoteApi$1(selectedItem.id)).then(function () {
|
16199
17276
|
toast.success(t("delete_note_successfully"));
|
16200
|
-
if (selectedItem.type === NoteType.
|
17277
|
+
if (selectedItem.type === NoteType.ToStudent) handleItemRemovedStudentNote(selectedItem);else handleItemRemovedAcademyNote(selectedItem);
|
16201
17278
|
reset();
|
16202
17279
|
});
|
16203
17280
|
}, function (error) {
|
@@ -16219,14 +17296,12 @@ var useDrawerNoteTab = function useDrawerNoteTab(props) {
|
|
16219
17296
|
handleSaveNote(studentNoteContent);
|
16220
17297
|
};
|
16221
17298
|
var noteDialogProps = {
|
16222
|
-
open: openNoteDialog === NoteType.
|
17299
|
+
open: openNoteDialog === NoteType.ToStudent && !openConfirmNote || openNoteDialog === NoteType.ToAcademy,
|
16223
17300
|
selectedNote: selectedItem,
|
16224
|
-
tip: " (" + t(openNoteDialog === NoteType.
|
17301
|
+
tip: " (" + t(openNoteDialog === NoteType.ToStudent ? "student_parents" : "academy") + ")",
|
16225
17302
|
value: studentNoteContent,
|
16226
17303
|
onClose: handleCloseNoteDialog,
|
16227
|
-
onSaveNote: openNoteDialog === NoteType.
|
16228
|
-
return handleSaveNote(content);
|
16229
|
-
}
|
17304
|
+
onSaveNote: openNoteDialog === NoteType.ToStudent && !(selectedItem !== null && selectedItem !== void 0 && selectedItem.id) ? handleOpenConfirmStudentNoteDialog : handleSaveNote
|
16230
17305
|
};
|
16231
17306
|
return {
|
16232
17307
|
openConfirmNote: openConfirmNote,
|
@@ -16493,11 +17568,11 @@ var DrawerInfoTab = function DrawerInfoTab(_ref) {
|
|
16493
17568
|
}
|
16494
17569
|
}, data ? React__default.createElement(Typography, {
|
16495
17570
|
sx: contentStyle
|
16496
|
-
}, t(function (label) {
|
17571
|
+
}, !!data.grade ? t(function (label) {
|
16497
17572
|
return label ? t(label) : formatGrade(data.grade, t, language);
|
16498
17573
|
}((_BRIEF_GRADE_OPTIONS$ = BRIEF_GRADE_OPTIONS.find(function (o) {
|
16499
17574
|
return o.value === Number(data.grade);
|
16500
|
-
})) === null || _BRIEF_GRADE_OPTIONS$ === void 0 ? void 0 : _BRIEF_GRADE_OPTIONS$.label))) : React__default.createElement(Skeleton, {
|
17575
|
+
})) === null || _BRIEF_GRADE_OPTIONS$ === void 0 ? void 0 : _BRIEF_GRADE_OPTIONS$.label)) : "") : React__default.createElement(Skeleton, {
|
16501
17576
|
variant: "text",
|
16502
17577
|
width: 20,
|
16503
17578
|
sx: contentStyle
|
@@ -16690,7 +17765,7 @@ var ExamResultItem = function ExamResultItem(_ref) {
|
|
16690
17765
|
}, (_data$teacher = data.teacher) === null || _data$teacher === void 0 ? void 0 : _data$teacher.fullName))))));
|
16691
17766
|
};
|
16692
17767
|
|
16693
|
-
var
|
17768
|
+
var ExamResultList = function ExamResultList(_ref) {
|
16694
17769
|
var studentId = _ref.studentId,
|
16695
17770
|
data = _ref.data,
|
16696
17771
|
isLoading = _ref.isLoading,
|
@@ -22044,7 +23119,7 @@ var ExamResultDrawer = function ExamResultDrawer(_ref) {
|
|
22044
23119
|
fontSize: "13px",
|
22045
23120
|
fontWeight: 500
|
22046
23121
|
}
|
22047
|
-
}, student.schoolName), React__default.createElement(Typography, {
|
23122
|
+
}, student.schoolName), !!student.grade && React__default.createElement(Typography, {
|
22048
23123
|
sx: {
|
22049
23124
|
color: grey[500],
|
22050
23125
|
fontSize: "13px",
|
@@ -22082,7 +23157,9 @@ var DrawerExamResultTab = function DrawerExamResultTab(_ref) {
|
|
22082
23157
|
value = _ref.value,
|
22083
23158
|
studentId = _ref.studentId,
|
22084
23159
|
onViewQA = _ref.onViewQA;
|
22085
|
-
var _useVirtualList = useVirtualList(
|
23160
|
+
var _useVirtualList = useVirtualList(_extends({}, EXAM_SESSION_DEFAULT_FILTER, {
|
23161
|
+
studentId: studentId
|
23162
|
+
}), getExamSessionListApi),
|
22086
23163
|
items = _useVirtualList.items,
|
22087
23164
|
selectedItem = _useVirtualList.selectedItem,
|
22088
23165
|
isLoading = _useVirtualList.isLoading,
|
@@ -22099,7 +23176,7 @@ var DrawerExamResultTab = function DrawerExamResultTab(_ref) {
|
|
22099
23176
|
p: 3,
|
22100
23177
|
height: "100%"
|
22101
23178
|
}
|
22102
|
-
}, React__default.createElement(
|
23179
|
+
}, React__default.createElement(ExamResultList, {
|
22103
23180
|
data: items,
|
22104
23181
|
isLoading: isLoading,
|
22105
23182
|
onLoadMore: handleLoadMore,
|
@@ -24848,7 +25925,9 @@ var DrawerTextbookResultTab = function DrawerTextbookResultTab(_ref) {
|
|
24848
25925
|
selectedTab = _ref.selectedTab,
|
24849
25926
|
value = _ref.value,
|
24850
25927
|
onViewQA = _ref.onViewQA;
|
24851
|
-
var _useVirtualList = useVirtualList(
|
25928
|
+
var _useVirtualList = useVirtualList(_extends({}, TEXTBOOK_DEFAULT_FILTER, {
|
25929
|
+
studentId: studentId
|
25930
|
+
}), getTextbookListApi),
|
24852
25931
|
items = _useVirtualList.items,
|
24853
25932
|
selectedItem = _useVirtualList.selectedItem,
|
24854
25933
|
isLoading = _useVirtualList.isLoading,
|
@@ -25246,9 +26325,10 @@ var useDrawerAttendanceTab = function useDrawerAttendanceTab(studentId, onUpdate
|
|
25246
26325
|
var pusher = concurrentConnectionPusher === null || concurrentConnectionPusher === void 0 ? void 0 : concurrentConnectionPusher.pusher;
|
25247
26326
|
var channelName = useRef();
|
25248
26327
|
var channel = useRef();
|
25249
|
-
var
|
25250
|
-
|
25251
|
-
|
26328
|
+
var handleGetAttendanceByStudentId = useCallback(function (query) {
|
26329
|
+
return getAttendanceByStudentIdApi(studentId, query);
|
26330
|
+
}, [studentId]);
|
26331
|
+
var _useVirtualList = useVirtualList(ATTENDANCE_COURSE_DEFAULT_FILTER, handleGetAttendanceByStudentId),
|
25252
26332
|
items = _useVirtualList.items,
|
25253
26333
|
isLoading = _useVirtualList.isLoading,
|
25254
26334
|
handleLoadMore = _useVirtualList.handleLoadMore,
|
@@ -26334,9 +27414,9 @@ var useLessonClassList = function useLessonClassList(courseId) {
|
|
26334
27414
|
};
|
26335
27415
|
};
|
26336
27416
|
|
26337
|
-
var TEACHER_URL = BASE_URL + "/api/teacher";
|
26338
|
-
var getTeacherListApi = function getTeacherListApi(query) {
|
26339
|
-
return api.get("" + TEACHER_URL, {
|
27417
|
+
var TEACHER_URL$1 = BASE_URL + "/api/teacher";
|
27418
|
+
var getTeacherListApi$1 = function getTeacherListApi(query) {
|
27419
|
+
return api.get("" + TEACHER_URL$1, {
|
26340
27420
|
params: query
|
26341
27421
|
});
|
26342
27422
|
};
|
@@ -26357,7 +27437,7 @@ var useTeacherList = function useTeacherList() {
|
|
26357
27437
|
var getListTeacher = function getListTeacher() {
|
26358
27438
|
try {
|
26359
27439
|
var _temp = _catch(function () {
|
26360
|
-
return Promise.resolve(getTeacherListApi(teacherFilter)).then(function (res) {
|
27440
|
+
return Promise.resolve(getTeacherListApi$1(teacherFilter)).then(function (res) {
|
26361
27441
|
var _res$data;
|
26362
27442
|
setTeachers(((_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.items) || []);
|
26363
27443
|
});
|
@@ -26427,11 +27507,6 @@ var useClassDetail = function useClassDetail(_ref) {
|
|
26427
27507
|
var isSelected = function isSelected(id) {
|
26428
27508
|
return selected.indexOf(id) !== -1;
|
26429
27509
|
};
|
26430
|
-
var registerPusherRef = useRef(true);
|
26431
|
-
var isReadyRegisterPusher = useSelector(function (state) {
|
26432
|
-
var _state$common2;
|
26433
|
-
return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.isReadyRegisterPusher;
|
26434
|
-
});
|
26435
27510
|
var _useStudentClassList = useStudentClassList(classId),
|
26436
27511
|
getStudents = _useStudentClassList.getStudents,
|
26437
27512
|
studentListProps = _objectWithoutPropertiesLoose(_useStudentClassList, _excluded$b);
|
@@ -26821,12 +27896,6 @@ var useClassDetail = function useClassDetail(_ref) {
|
|
26821
27896
|
useEffect(function () {
|
26822
27897
|
document.title = t("study_peak") + " | " + t(PAGE_TITLE$4);
|
26823
27898
|
}, [t]);
|
26824
|
-
useEffect(function () {
|
26825
|
-
if (!isReadyRegisterPusher && registerPusherRef.current) {
|
26826
|
-
dispatch(setReadyRegisterPusher(true));
|
26827
|
-
registerPusherRef.current = false;
|
26828
|
-
}
|
26829
|
-
}, [isReadyRegisterPusher]);
|
26830
27899
|
return {
|
26831
27900
|
classId: classId,
|
26832
27901
|
schema: schema,
|
@@ -27644,7 +28713,7 @@ var ClassList = function ClassList(_ref) {
|
|
27644
28713
|
onClick: function onClick() {
|
27645
28714
|
return handleUpdateClass(i);
|
27646
28715
|
}
|
27647
|
-
}, React__default.createElement(FaEye, {
|
28716
|
+
}, React__default.createElement(FaEye$1, {
|
27648
28717
|
size: 12
|
27649
28718
|
}))));
|
27650
28719
|
}), !classList.length && React__default.createElement(TableRow$1, null, React__default.createElement(TableCell$1, {
|
@@ -28491,11 +29560,6 @@ var useUserList = function useUserList(role) {
|
|
28491
29560
|
setOpenDeleteUserCsv = _useState10[1];
|
28492
29561
|
var inputFileRef = useRef(null);
|
28493
29562
|
var firstLoadRef = useRef(true);
|
28494
|
-
var registerPusherRef = useRef(true);
|
28495
|
-
var isReadyRegisterPusher = useSelector(function (state) {
|
28496
|
-
var _state$common;
|
28497
|
-
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.isReadyRegisterPusher;
|
28498
|
-
});
|
28499
29563
|
var handleChangeSelectedStudent = function handleChangeSelectedStudent(student) {
|
28500
29564
|
var _student$roles, _student$roles2;
|
28501
29565
|
var isStudent = ((_student$roles = student.roles) === null || _student$roles === void 0 ? void 0 : _student$roles.includes(Role.Student)) && ((_student$roles2 = student.roles) === null || _student$roles2 === void 0 ? void 0 : _student$roles2.length) === 1;
|
@@ -28807,12 +29871,6 @@ var useUserList = function useUserList(role) {
|
|
28807
29871
|
var userHeaders = USER_HEADERS.filter(function (i) {
|
28808
29872
|
return i.roles.includes(role);
|
28809
29873
|
});
|
28810
|
-
useEffect(function () {
|
28811
|
-
if (!isReadyRegisterPusher && registerPusherRef.current) {
|
28812
|
-
dispatch(setReadyRegisterPusher(true));
|
28813
|
-
registerPusherRef.current = false;
|
28814
|
-
}
|
28815
|
-
}, [isReadyRegisterPusher]);
|
28816
29874
|
return {
|
28817
29875
|
userDetail: userDetail,
|
28818
29876
|
userHeaders: userHeaders,
|
@@ -29089,7 +30147,7 @@ var UserRow = function UserRow(_ref) {
|
|
29089
30147
|
color: "default",
|
29090
30148
|
className: "bg-primary text-white me-1",
|
29091
30149
|
onClick: handleViewOrUpdate
|
29092
|
-
}, React__default.createElement(FaEye
|
30150
|
+
}, React__default.createElement(FaEye, {
|
29093
30151
|
size: 12
|
29094
30152
|
})), (isAdmin || isSuperAdmin) && React__default.createElement(IconButton, {
|
29095
30153
|
onClick: handleDelete,
|
@@ -30744,9 +31802,9 @@ var TextbookSortBy$1;
|
|
30744
31802
|
var TeacherSortBy$1;
|
30745
31803
|
(function (TeacherSortBy) {
|
30746
31804
|
TeacherSortBy["CreatedAt"] = "CreatedAt";
|
30747
|
-
TeacherSortBy["Name"] = "UserProfile.FullName";
|
30748
|
-
TeacherSortBy["Email"] = "Email";
|
30749
|
-
TeacherSortBy["PhoneNumber"] = "UserProfile.PhoneNumber";
|
31805
|
+
TeacherSortBy["Name"] = "User.UserProfile.FullName";
|
31806
|
+
TeacherSortBy["Email"] = "User.Email";
|
31807
|
+
TeacherSortBy["PhoneNumber"] = "User.UserProfile.PhoneNumber";
|
30750
31808
|
})(TeacherSortBy$1 || (TeacherSortBy$1 = {}));
|
30751
31809
|
var ExamType$1;
|
30752
31810
|
(function (ExamType) {
|
@@ -32513,9 +33571,9 @@ var ShareToTeacherDialog = function ShareToTeacherDialog(_ref) {
|
|
32513
33571
|
}, t("cancel")))));
|
32514
33572
|
};
|
32515
33573
|
|
32516
|
-
var TEACHER_URL$
|
32517
|
-
var getTeacherListApi$
|
32518
|
-
return api.get("" + TEACHER_URL$
|
33574
|
+
var TEACHER_URL$2 = BASE_URL + "/api/teacher";
|
33575
|
+
var getTeacherListApi$2 = function getTeacherListApi(query) {
|
33576
|
+
return api.get("" + TEACHER_URL$2, {
|
32519
33577
|
params: query
|
32520
33578
|
});
|
32521
33579
|
};
|
@@ -32526,7 +33584,7 @@ var useTextbookShare = function useTextbookShare(props) {
|
|
32526
33584
|
role = props.role,
|
32527
33585
|
isSuperAdmin = props.isSuperAdmin;
|
32528
33586
|
var _useList = useList(!isSuperAdmin ? function (search) {
|
32529
|
-
return getTeacherListApi$
|
33587
|
+
return getTeacherListApi$2(search);
|
32530
33588
|
} : null, DefaultTeacherQuery),
|
32531
33589
|
filterShare = _useList.filter,
|
32532
33590
|
textSearchShareRef = _useList.textSearchRef,
|
@@ -32825,7 +33883,7 @@ var TextbookRow = function TextbookRow(_ref) {
|
|
32825
33883
|
color: "default",
|
32826
33884
|
className: "bg-primary text-white",
|
32827
33885
|
onClick: handleViewTextbook
|
32828
|
-
}, React__default.createElement(FaEye
|
33886
|
+
}, React__default.createElement(FaEye, {
|
32829
33887
|
size: 12
|
32830
33888
|
})), onAcademy && React__default.createElement(IconButton, {
|
32831
33889
|
disabled: !isSharable,
|
@@ -33686,7 +34744,7 @@ var NotificationList = function NotificationList(_ref) {
|
|
33686
34744
|
onClick: function onClick() {
|
33687
34745
|
return handleUpdateNotification(i);
|
33688
34746
|
}
|
33689
|
-
}, !isAdmin && (isTeacherAdmin || !i.isOwned) ? React__default.createElement(FaEye
|
34747
|
+
}, !isAdmin && (isTeacherAdmin || !i.isOwned) ? React__default.createElement(FaEye, {
|
33690
34748
|
size: 12
|
33691
34749
|
}) : React__default.createElement(HiOutlinePencilAlt, {
|
33692
34750
|
size: 12
|
@@ -37557,17 +38615,17 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
|
|
37557
38615
|
sx: {
|
37558
38616
|
color: inforErrors && submitCount ? error.main + "!important" : "gray"
|
37559
38617
|
}
|
37560
|
-
}, a11yProps$
|
38618
|
+
}, a11yProps$2(0))), React__default.createElement(Tab, Object.assign({
|
37561
38619
|
label: t$1("textbook.contents"),
|
37562
38620
|
sx: {
|
37563
38621
|
color: contentsErrors && submitCount ? error.main + "!important" : "gray"
|
37564
38622
|
}
|
37565
|
-
}, a11yProps$
|
38623
|
+
}, 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(Tab, Object.assign({
|
37566
38624
|
label: t$1("textbook.owners"),
|
37567
38625
|
sx: {
|
37568
38626
|
color: textbookOwnersErrors && submitCount ? error.main + "!important" : "gray"
|
37569
38627
|
}
|
37570
|
-
}, a11yProps$
|
38628
|
+
}, a11yProps$2(2))))), React__default.createElement(CustomTextbookTab, {
|
37571
38629
|
value: selected,
|
37572
38630
|
index: 0
|
37573
38631
|
}, React__default.createElement(TextbookInfoTab, Object.assign({}, formikProps, {
|
@@ -37589,7 +38647,7 @@ var PreparedTextbookForm = function PreparedTextbookForm(_ref) {
|
|
37589
38647
|
disabled: ownersDisabled
|
37590
38648
|
}))))));
|
37591
38649
|
};
|
37592
|
-
var a11yProps$
|
38650
|
+
var a11yProps$2 = function a11yProps(index) {
|
37593
38651
|
return {
|
37594
38652
|
id: "textbook-tab-" + index,
|
37595
38653
|
"aria-controls": "textbook-tabpanel-" + index
|
@@ -37986,6 +39044,449 @@ var PreparedTextbookList = function PreparedTextbookList(_ref) {
|
|
37986
39044
|
}));
|
37987
39045
|
};
|
37988
39046
|
|
39047
|
+
var AnnouncementEvent;
|
39048
|
+
(function (AnnouncementEvent) {
|
39049
|
+
AnnouncementEvent["ReceivedNewNote"] = "ReceivedNewNote";
|
39050
|
+
AnnouncementEvent["UpdatedNote"] = "UpdatedNote";
|
39051
|
+
AnnouncementEvent["DeletedNote"] = "DeletedNote";
|
39052
|
+
})(AnnouncementEvent || (AnnouncementEvent = {}));
|
39053
|
+
var AnnouncementType;
|
39054
|
+
(function (AnnouncementType) {
|
39055
|
+
AnnouncementType["ReceivedNewNote"] = "ReceivedNewNote";
|
39056
|
+
})(AnnouncementType || (AnnouncementType = {}));
|
39057
|
+
|
39058
|
+
var stringToColor = function stringToColor(string) {
|
39059
|
+
var hash = 0;
|
39060
|
+
var i;
|
39061
|
+
for (i = 0; i < string.length; i += 1) {
|
39062
|
+
hash = string.charCodeAt(i) + ((hash << 5) - hash);
|
39063
|
+
}
|
39064
|
+
var color = "#";
|
39065
|
+
for (i = 0; i < 3; i += 1) {
|
39066
|
+
var value = hash >> i * 8 & 0xff;
|
39067
|
+
color += ("00" + value.toString(16)).slice(-2);
|
39068
|
+
}
|
39069
|
+
return color;
|
39070
|
+
};
|
39071
|
+
var stringAvatar = function stringAvatar(name) {
|
39072
|
+
var _name$split$0$, _name$split$, _name$split$1$, _name$split$2;
|
39073
|
+
return {
|
39074
|
+
sx: {
|
39075
|
+
bgcolor: stringToColor(name)
|
39076
|
+
},
|
39077
|
+
children: "" + ((_name$split$0$ = (_name$split$ = name.split(" ")[0]) === null || _name$split$ === void 0 ? void 0 : _name$split$[0]) != null ? _name$split$0$ : "") + ((_name$split$1$ = (_name$split$2 = name.split(" ")[1]) === null || _name$split$2 === void 0 ? void 0 : _name$split$2[0]) != null ? _name$split$1$ : "")
|
39078
|
+
};
|
39079
|
+
};
|
39080
|
+
var convertAnnouncementData = function convertAnnouncementData(t, role, announcement) {
|
39081
|
+
var isTeacherSite = role === Role.Teacher;
|
39082
|
+
var data = announcement.data;
|
39083
|
+
switch (announcement.type) {
|
39084
|
+
case AnnouncementType.ReceivedNewNote:
|
39085
|
+
var extraData = data.data;
|
39086
|
+
var contents = extraData.split("|");
|
39087
|
+
var noteType = contents[0];
|
39088
|
+
var content = contents.slice(1).join("|");
|
39089
|
+
var isAdmin = noteType === NoteType[NoteType.AdminToAllTeacher] || noteType === NoteType[NoteType.AdminToAllAdmin];
|
39090
|
+
return {
|
39091
|
+
content: content,
|
39092
|
+
name: isAdmin ? isTeacherSite ? t("admin") : t("admin_n", {
|
39093
|
+
admin: data.senderFullName
|
39094
|
+
}) : t("teacher_n", {
|
39095
|
+
teacher: data.senderFullName
|
39096
|
+
}),
|
39097
|
+
image: isAdmin && isTeacherSite ? undefined : data.senderAvatar,
|
39098
|
+
action: t("sent_a_memo")
|
39099
|
+
};
|
39100
|
+
default:
|
39101
|
+
return {
|
39102
|
+
name: data.senderFullName,
|
39103
|
+
image: data.senderAvatar,
|
39104
|
+
content: data.data,
|
39105
|
+
action: ""
|
39106
|
+
};
|
39107
|
+
}
|
39108
|
+
};
|
39109
|
+
|
39110
|
+
var AnnouncementItem = function AnnouncementItem(_ref) {
|
39111
|
+
var data = _ref.data,
|
39112
|
+
role = _ref.role,
|
39113
|
+
renderLink = _ref.renderLink,
|
39114
|
+
onLoad = _ref.onLoad;
|
39115
|
+
var _useTranslation = useTranslation(),
|
39116
|
+
t = _useTranslation.t;
|
39117
|
+
useEffect(function () {
|
39118
|
+
onLoad();
|
39119
|
+
}, []);
|
39120
|
+
var announcementData = convertAnnouncementData(t, role, data);
|
39121
|
+
return React__default.createElement(Fragment$1, null, renderLink(React__default.createElement(ListItemButton, {
|
39122
|
+
sx: _extends({
|
39123
|
+
py: 1.5,
|
39124
|
+
px: 2.5,
|
39125
|
+
mt: "1px"
|
39126
|
+
}, !data.isRead && {
|
39127
|
+
bgcolor: "action.selected"
|
39128
|
+
})
|
39129
|
+
}, React__default.createElement(Stack, {
|
39130
|
+
direction: "row",
|
39131
|
+
gap: 1,
|
39132
|
+
justifyContent: "space-between",
|
39133
|
+
width: "100%"
|
39134
|
+
}, React__default.createElement(Stack, {
|
39135
|
+
direction: "row",
|
39136
|
+
gap: 1
|
39137
|
+
}, React__default.createElement(ListItemAvatar, null, React__default.createElement(Avatar, Object.assign({}, stringAvatar(announcementData.name), {
|
39138
|
+
src: announcementData.image
|
39139
|
+
}))), React__default.createElement(ListItemText, {
|
39140
|
+
sx: {
|
39141
|
+
marginBlock: 0
|
39142
|
+
},
|
39143
|
+
primary: React__default.createElement(Typography, null, React__default.createElement(Typography, {
|
39144
|
+
fontWeight: 600,
|
39145
|
+
display: "inline-block"
|
39146
|
+
}, announcementData.name), announcementData.action && React__default.createElement(Typography, {
|
39147
|
+
display: "inline-block",
|
39148
|
+
px: "4px"
|
39149
|
+
}, announcementData.action + ":"), React__default.createElement(Typography, {
|
39150
|
+
display: "inline-block",
|
39151
|
+
sx: {
|
39152
|
+
display: "-webkit-box",
|
39153
|
+
lineClamp: 2,
|
39154
|
+
WebkitLineClamp: 2,
|
39155
|
+
WebkitBoxOrient: "vertical",
|
39156
|
+
boxOrient: "vertical",
|
39157
|
+
overflow: "hidden"
|
39158
|
+
},
|
39159
|
+
dangerouslySetInnerHTML: {
|
39160
|
+
__html: announcementData.content || ""
|
39161
|
+
}
|
39162
|
+
})),
|
39163
|
+
secondary: React__default.createElement(Typography, {
|
39164
|
+
variant: "caption",
|
39165
|
+
sx: {
|
39166
|
+
mt: 0.5,
|
39167
|
+
display: "flex",
|
39168
|
+
alignItems: "center",
|
39169
|
+
color: "text.disabled"
|
39170
|
+
}
|
39171
|
+
}, React__default.createElement(Box, {
|
39172
|
+
sx: {
|
39173
|
+
marginRight: "8px"
|
39174
|
+
}
|
39175
|
+
}, React__default.createElement(FaClockRotateLeft, {
|
39176
|
+
size: 12
|
39177
|
+
})), timAgo(data.createdAt, t, true))
|
39178
|
+
})))), data));
|
39179
|
+
};
|
39180
|
+
|
39181
|
+
var AnnouncementList = function AnnouncementList(_ref) {
|
39182
|
+
var role = _ref.role,
|
39183
|
+
items = _ref.items,
|
39184
|
+
isLoading = _ref.isLoading,
|
39185
|
+
onLoadMore = _ref.onLoadMore,
|
39186
|
+
renderLink = _ref.renderLink;
|
39187
|
+
return React__default.createElement(VirtualListView, {
|
39188
|
+
data: items,
|
39189
|
+
loading: isLoading,
|
39190
|
+
listHeight: 0,
|
39191
|
+
containerProps: {
|
39192
|
+
sx: {
|
39193
|
+
height: "100%"
|
39194
|
+
}
|
39195
|
+
},
|
39196
|
+
renderItem: function renderItem(item, index, measure) {
|
39197
|
+
return React__default.createElement(AnnouncementItem, {
|
39198
|
+
role: role,
|
39199
|
+
key: index,
|
39200
|
+
data: item,
|
39201
|
+
renderLink: renderLink,
|
39202
|
+
onLoad: measure
|
39203
|
+
});
|
39204
|
+
},
|
39205
|
+
onLoadMore: onLoadMore
|
39206
|
+
});
|
39207
|
+
};
|
39208
|
+
|
39209
|
+
var DEFAULT_ANNOUNCEMENT_FILTER = {
|
39210
|
+
currentPage: 1,
|
39211
|
+
pageSize: 10,
|
39212
|
+
sortColumnDirection: OrderType.DESC,
|
39213
|
+
sortColumnName: "CreatedAt"
|
39214
|
+
};
|
39215
|
+
var ANNOUNCEMENT_CHANNEL = "ANNOUNCEMENT_A{academy}_U{userId}_CHANNEL";
|
39216
|
+
|
39217
|
+
var ANNOUNCEMENT_URL = BASE_URL + "/api/announcements";
|
39218
|
+
var getAnnouncementListApi = function getAnnouncementListApi(query) {
|
39219
|
+
return api.get("" + ANNOUNCEMENT_URL, {
|
39220
|
+
params: query
|
39221
|
+
});
|
39222
|
+
};
|
39223
|
+
var getTotalNumberUnreadAnnouncementsApi = function getTotalNumberUnreadAnnouncementsApi() {
|
39224
|
+
return api.get(ANNOUNCEMENT_URL + "/unread");
|
39225
|
+
};
|
39226
|
+
var markAsReadAnnouncementsApi = function markAsReadAnnouncementsApi() {
|
39227
|
+
return api.post(ANNOUNCEMENT_URL + "/mark-as-read");
|
39228
|
+
};
|
39229
|
+
var markAsReadAnnouncementByIdApi = function markAsReadAnnouncementByIdApi(id) {
|
39230
|
+
return api.post(ANNOUNCEMENT_URL + "/" + id + "/mark-as-read");
|
39231
|
+
};
|
39232
|
+
|
39233
|
+
var AnnouncementContainer = function AnnouncementContainer(_ref) {
|
39234
|
+
var role = _ref.role,
|
39235
|
+
renderLink = _ref.renderLink,
|
39236
|
+
renderViewNoteLink = _ref.renderViewNoteLink;
|
39237
|
+
var _useTranslation = useTranslation(),
|
39238
|
+
t = _useTranslation.t;
|
39239
|
+
var dispatch = useDispatch();
|
39240
|
+
var user = useSelector(function (state) {
|
39241
|
+
var _state$common;
|
39242
|
+
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
|
39243
|
+
});
|
39244
|
+
var academyDomain = user === null || user === void 0 ? void 0 : user.academyDomain;
|
39245
|
+
var concurrentConnectionPusher = useSelector(function (state) {
|
39246
|
+
var _state$common2;
|
39247
|
+
return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.concurrentConnectionPusher;
|
39248
|
+
});
|
39249
|
+
var totalUnreadMessages = useSelector(function (state) {
|
39250
|
+
var _state$common3;
|
39251
|
+
return state === null || state === void 0 ? void 0 : (_state$common3 = state.common) === null || _state$common3 === void 0 ? void 0 : _state$common3.totalUnreadMessages;
|
39252
|
+
});
|
39253
|
+
var pusher = concurrentConnectionPusher === null || concurrentConnectionPusher === void 0 ? void 0 : concurrentConnectionPusher.pusher;
|
39254
|
+
var channel = useRef();
|
39255
|
+
var channelName = useRef();
|
39256
|
+
var _useState = useState(false),
|
39257
|
+
openPopover = _useState[0],
|
39258
|
+
setOpenPopover = _useState[1];
|
39259
|
+
var anchorEl = useRef(null);
|
39260
|
+
var handleOpenPopover = function handleOpenPopover() {
|
39261
|
+
setOpenPopover(true);
|
39262
|
+
};
|
39263
|
+
var handleClosePopover = function handleClosePopover() {
|
39264
|
+
setOpenPopover(false);
|
39265
|
+
};
|
39266
|
+
var _useVirtualList = useVirtualList({}, getAnnouncementListApi),
|
39267
|
+
filter = _useVirtualList.filter,
|
39268
|
+
items = _useVirtualList.items,
|
39269
|
+
isLoading = _useVirtualList.isLoading,
|
39270
|
+
handleLoadMore = _useVirtualList.handleLoadMore,
|
39271
|
+
handleItemAdded = _useVirtualList.handleItemAdded,
|
39272
|
+
setItems = _useVirtualList.setItems,
|
39273
|
+
handleChangeFilter = _useVirtualList.handleChangeFilter,
|
39274
|
+
getItems = _useVirtualList.getItems;
|
39275
|
+
var handleNewAnnouncement = function handleNewAnnouncement(data) {
|
39276
|
+
try {
|
39277
|
+
var announcement = JSON.parse(data);
|
39278
|
+
openPopover && handleItemAdded(announcement);
|
39279
|
+
} catch (error) {
|
39280
|
+
console.log(error);
|
39281
|
+
}
|
39282
|
+
dispatch(setTotalUnreadMessages(totalUnreadMessages + 1));
|
39283
|
+
};
|
39284
|
+
var handleDeletedAnnouncement = function handleDeletedAnnouncement(_data) {
|
39285
|
+
openPopover && getItems();
|
39286
|
+
handleGetTotalUnread();
|
39287
|
+
};
|
39288
|
+
var handleUpdatedAnnouncement = function handleUpdatedAnnouncement(data) {
|
39289
|
+
try {
|
39290
|
+
var announcement = JSON.parse(data);
|
39291
|
+
openPopover && setItems(function (state) {
|
39292
|
+
return state.map(function (i) {
|
39293
|
+
if (i.id !== announcement.id) return i;
|
39294
|
+
return _extends({}, i, {
|
39295
|
+
data: _extends({}, i.data, {
|
39296
|
+
data: announcement.data.data
|
39297
|
+
})
|
39298
|
+
});
|
39299
|
+
});
|
39300
|
+
});
|
39301
|
+
} catch (error) {
|
39302
|
+
console.log(error);
|
39303
|
+
}
|
39304
|
+
};
|
39305
|
+
var handleMarkAsRead = function handleMarkAsRead() {
|
39306
|
+
try {
|
39307
|
+
var _temp2 = function _temp2() {
|
39308
|
+
dispatch(setLoading(false));
|
39309
|
+
};
|
39310
|
+
dispatch(setLoading(true));
|
39311
|
+
var _temp = _catch(function () {
|
39312
|
+
return Promise.resolve(markAsReadAnnouncementsApi()).then(function () {
|
39313
|
+
setItems(function (state) {
|
39314
|
+
return state.map(function (i) {
|
39315
|
+
return _extends({}, i, {
|
39316
|
+
isRead: true
|
39317
|
+
});
|
39318
|
+
});
|
39319
|
+
});
|
39320
|
+
dispatch(setTotalUnreadMessages(0));
|
39321
|
+
});
|
39322
|
+
}, function (error) {
|
39323
|
+
toast.error(getErrorMessage(t, error));
|
39324
|
+
});
|
39325
|
+
return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
|
39326
|
+
} catch (e) {
|
39327
|
+
return Promise.reject(e);
|
39328
|
+
}
|
39329
|
+
};
|
39330
|
+
var handleMarkAsReadById = function handleMarkAsReadById(id, loading) {
|
39331
|
+
try {
|
39332
|
+
var _temp4 = function _temp4() {
|
39333
|
+
loading && dispatch(setLoading(false));
|
39334
|
+
};
|
39335
|
+
loading && dispatch(setLoading(true));
|
39336
|
+
var _temp3 = _catch(function () {
|
39337
|
+
return Promise.resolve(markAsReadAnnouncementByIdApi(id)).then(function () {
|
39338
|
+
setItems(function (state) {
|
39339
|
+
return state.map(function (i) {
|
39340
|
+
return _extends({}, i, {
|
39341
|
+
isRead: i.id === id ? true : i.isRead
|
39342
|
+
});
|
39343
|
+
});
|
39344
|
+
});
|
39345
|
+
dispatch(setTotalUnreadMessages(Math.max(0, totalUnreadMessages - 1)));
|
39346
|
+
});
|
39347
|
+
}, function (error) {
|
39348
|
+
toast.error(getErrorMessage(t, error));
|
39349
|
+
});
|
39350
|
+
return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
|
39351
|
+
} catch (e) {
|
39352
|
+
return Promise.reject(e);
|
39353
|
+
}
|
39354
|
+
};
|
39355
|
+
var handleCloseAndMarkRead = function handleCloseAndMarkRead(data) {
|
39356
|
+
handleClosePopover();
|
39357
|
+
if (!data.isRead) handleMarkAsReadById(data.id);
|
39358
|
+
};
|
39359
|
+
var renderNotiLink = function renderNotiLink(children, data) {
|
39360
|
+
return renderLink(children, data, function () {
|
39361
|
+
return handleCloseAndMarkRead(data);
|
39362
|
+
});
|
39363
|
+
};
|
39364
|
+
var cleanupPusher = function cleanupPusher() {
|
39365
|
+
channel.current && channel.current.unbind(AnnouncementEvent.ReceivedNewNote, handleNewAnnouncement);
|
39366
|
+
channel.current && channel.current.unbind(AnnouncementEvent.UpdatedNote, handleUpdatedAnnouncement);
|
39367
|
+
channel.current && channel.current.unbind(AnnouncementEvent.DeletedNote, handleDeletedAnnouncement);
|
39368
|
+
channelName.current && pusher && pusher.unsubscribe(channelName.current);
|
39369
|
+
};
|
39370
|
+
useEffect(function () {
|
39371
|
+
if (concurrentConnectionPusher !== null && concurrentConnectionPusher !== void 0 && concurrentConnectionPusher.academyDomain && academyDomain && user !== null && user !== void 0 && user.id) {
|
39372
|
+
var normalizedAcademyDomain = academyDomain.trim().toUpperCase();
|
39373
|
+
channelName.current = ANNOUNCEMENT_CHANNEL.replace("{academy}", normalizedAcademyDomain).replace("{userId}", user.id);
|
39374
|
+
channel.current = pusher.subscribe(channelName.current);
|
39375
|
+
channel.current.bind(AnnouncementEvent.ReceivedNewNote, handleNewAnnouncement);
|
39376
|
+
channel.current.bind(AnnouncementEvent.UpdatedNote, handleUpdatedAnnouncement);
|
39377
|
+
channel.current.bind(AnnouncementEvent.DeletedNote, handleDeletedAnnouncement);
|
39378
|
+
}
|
39379
|
+
return cleanupPusher;
|
39380
|
+
}, [academyDomain, user === null || user === void 0 ? void 0 : user.id, concurrentConnectionPusher === null || concurrentConnectionPusher === void 0 ? void 0 : concurrentConnectionPusher.academyDomain, totalUnreadMessages, openPopover, JSON.stringify(filter)]);
|
39381
|
+
var handleGetTotalUnread = function handleGetTotalUnread() {
|
39382
|
+
try {
|
39383
|
+
var _temp5 = _catch(function () {
|
39384
|
+
return Promise.resolve(getTotalNumberUnreadAnnouncementsApi()).then(function (res) {
|
39385
|
+
dispatch(setTotalUnreadMessages(res.data));
|
39386
|
+
});
|
39387
|
+
}, function (error) {
|
39388
|
+
console.log({
|
39389
|
+
error: error
|
39390
|
+
});
|
39391
|
+
});
|
39392
|
+
return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(function () {}) : void 0);
|
39393
|
+
} catch (e) {
|
39394
|
+
return Promise.reject(e);
|
39395
|
+
}
|
39396
|
+
};
|
39397
|
+
useEffect(function () {
|
39398
|
+
if (academyDomain && user !== null && user !== void 0 && user.id) handleGetTotalUnread();
|
39399
|
+
}, [academyDomain, user === null || user === void 0 ? void 0 : user.id]);
|
39400
|
+
useEffect(function () {
|
39401
|
+
handleChangeFilter(openPopover ? DEFAULT_ANNOUNCEMENT_FILTER : {});
|
39402
|
+
}, [openPopover]);
|
39403
|
+
return React__default.createElement(Box, null, React__default.createElement(IconButton, {
|
39404
|
+
ref: anchorEl,
|
39405
|
+
className: "ms-2",
|
39406
|
+
onClick: handleOpenPopover
|
39407
|
+
}, React__default.createElement(Badge, {
|
39408
|
+
badgeContent: totalUnreadMessages,
|
39409
|
+
max: 9,
|
39410
|
+
color: "error"
|
39411
|
+
}, React__default.createElement(FaBell, {
|
39412
|
+
size: 20,
|
39413
|
+
color: blue[500]
|
39414
|
+
}))), React__default.createElement(Popover, {
|
39415
|
+
open: openPopover,
|
39416
|
+
anchorEl: anchorEl.current,
|
39417
|
+
onClose: handleClosePopover,
|
39418
|
+
anchorOrigin: {
|
39419
|
+
vertical: "bottom",
|
39420
|
+
horizontal: "right"
|
39421
|
+
},
|
39422
|
+
slotProps: {
|
39423
|
+
paper: {
|
39424
|
+
sx: {
|
39425
|
+
width: 360
|
39426
|
+
}
|
39427
|
+
}
|
39428
|
+
}
|
39429
|
+
}, React__default.createElement(Stack, {
|
39430
|
+
height: "100%",
|
39431
|
+
direction: "column"
|
39432
|
+
}, React__default.createElement(Stack, {
|
39433
|
+
direction: "row",
|
39434
|
+
justifyContent: "space-between",
|
39435
|
+
gap: 2,
|
39436
|
+
sx: {
|
39437
|
+
py: 2,
|
39438
|
+
px: 2.5
|
39439
|
+
}
|
39440
|
+
}, React__default.createElement(Box, {
|
39441
|
+
sx: {
|
39442
|
+
flexGrow: 1
|
39443
|
+
}
|
39444
|
+
}, React__default.createElement(Typography, {
|
39445
|
+
variant: "subtitle1"
|
39446
|
+
}, t("notifications")), totalUnreadMessages > 0 && React__default.createElement(Typography, {
|
39447
|
+
variant: "body2",
|
39448
|
+
sx: {
|
39449
|
+
color: "text.secondary"
|
39450
|
+
}
|
39451
|
+
}, t("you_have_n_unread_messages", {
|
39452
|
+
n: totalUnreadMessages
|
39453
|
+
})), renderViewNoteLink && React__default.createElement(Box, null, renderViewNoteLink(React__default.createElement(Typography, {
|
39454
|
+
sx: {
|
39455
|
+
fontWeight: 600,
|
39456
|
+
color: grey[600],
|
39457
|
+
fontSize: "14px",
|
39458
|
+
"&:hover": {
|
39459
|
+
textDecoration: "underline",
|
39460
|
+
color: green[700]
|
39461
|
+
}
|
39462
|
+
}
|
39463
|
+
}, t("view_notes")), handleClosePopover))), totalUnreadMessages > 0 && React__default.createElement(Stack, {
|
39464
|
+
direction: "column"
|
39465
|
+
}, React__default.createElement(Tooltip, {
|
39466
|
+
title: t("mark_as_read")
|
39467
|
+
}, React__default.createElement(IconButton, {
|
39468
|
+
color: "primary",
|
39469
|
+
onClick: handleMarkAsRead
|
39470
|
+
}, React__default.createElement(BsCheckAll, null))))), React__default.createElement(Divider, {
|
39471
|
+
component: "div"
|
39472
|
+
}), React__default.createElement(Stack, {
|
39473
|
+
direction: "column",
|
39474
|
+
sx: {
|
39475
|
+
height: {
|
39476
|
+
xs: 280,
|
39477
|
+
sm: 400
|
39478
|
+
},
|
39479
|
+
py: 2
|
39480
|
+
}
|
39481
|
+
}, React__default.createElement(AnnouncementList, {
|
39482
|
+
role: role,
|
39483
|
+
items: items,
|
39484
|
+
isLoading: isLoading,
|
39485
|
+
onLoadMore: handleLoadMore,
|
39486
|
+
renderLink: renderNotiLink
|
39487
|
+
})))));
|
39488
|
+
};
|
39489
|
+
|
37989
39490
|
var MenuItemCustom = styled(MenuItem)(function () {
|
37990
39491
|
return {
|
37991
39492
|
'&.Mui-selected': {
|
@@ -38133,7 +39634,7 @@ var TheAcademyDropdown = function TheAcademyDropdown(_ref) {
|
|
38133
39634
|
}, React__default.createElement(GoArrowSwitch, {
|
38134
39635
|
size: 14,
|
38135
39636
|
color: styles.gray_900
|
38136
|
-
})))))), (isSuperAdmin || !isAdmin || isTeacherSite) && React__default.createElement(Popover, {
|
39637
|
+
})))))), (isSuperAdmin || !isAdmin || isTeacherSite) && React__default.createElement(Popover$1, {
|
38137
39638
|
open: !!open,
|
38138
39639
|
anchorEl: open,
|
38139
39640
|
onClose: handleClose,
|
@@ -38337,7 +39838,7 @@ var TheLanguageDropdown = function TheLanguageDropdown() {
|
|
38337
39838
|
}, React__default.createElement("img", {
|
38338
39839
|
src: currentLanguage === null || currentLanguage === void 0 ? void 0 : currentLanguage.image,
|
38339
39840
|
alt: currentLanguage === null || currentLanguage === void 0 ? void 0 : currentLanguage.name
|
38340
|
-
})), React__default.createElement(Popover, {
|
39841
|
+
})), React__default.createElement(Popover$1, {
|
38341
39842
|
open: !!open,
|
38342
39843
|
anchorEl: open,
|
38343
39844
|
onClose: handleClose,
|
@@ -38712,17 +40213,19 @@ var Header = function Header(_ref) {
|
|
38712
40213
|
role = _ref.role,
|
38713
40214
|
history = _ref.history,
|
38714
40215
|
link = _ref.link,
|
38715
|
-
onSignOut = _ref.onSignOut
|
40216
|
+
onSignOut = _ref.onSignOut,
|
40217
|
+
renderNotificationLink = _ref.renderNotificationLink,
|
40218
|
+
renderViewNoteLink = _ref.renderViewNoteLink;
|
38716
40219
|
var Link = link;
|
38717
40220
|
var _useTranslation = useTranslation(),
|
38718
40221
|
t = _useTranslation.t;
|
38719
40222
|
var theme = useTheme();
|
38720
|
-
var param = window.location.pathname;
|
38721
40223
|
var language = useSelector(function (state) {
|
38722
40224
|
var _state$common;
|
38723
40225
|
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.language;
|
38724
40226
|
});
|
38725
|
-
var isTeacherSide =
|
40227
|
+
var isTeacherSide = role === Role.Teacher;
|
40228
|
+
var isStudentSide = role === Role.Student;
|
38726
40229
|
var isLargerThanXL = useMediaQuery(theme.breakpoints.up("xl"));
|
38727
40230
|
var academyDomain = useSelector(function (state) {
|
38728
40231
|
var _state$common2, _state$common2$user;
|
@@ -38733,6 +40236,7 @@ var Header = function Header(_ref) {
|
|
38733
40236
|
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;
|
38734
40237
|
});
|
38735
40238
|
var isAcademy = isLearningSpace || academyDomain;
|
40239
|
+
var showAnnouncement = !isStudentSide && isAcademy;
|
38736
40240
|
var logo = useMemo(function () {
|
38737
40241
|
if (isTeacherSide) {
|
38738
40242
|
return language === Language.en ? React__default.createElement(teacherFullLogoEn, null) : React__default.createElement(teacherFullLogoKo, null);
|
@@ -38826,7 +40330,11 @@ var Header = function Header(_ref) {
|
|
38826
40330
|
}, React__default.createElement(singleLogo, null))), React__default.createElement(Stack, {
|
38827
40331
|
className: "me-2",
|
38828
40332
|
display: "none"
|
38829
|
-
}, React__default.createElement(TheLanguageDropdown, null))
|
40333
|
+
}, React__default.createElement(TheLanguageDropdown, null)), showAnnouncement && renderNotificationLink && React__default.createElement(AnnouncementContainer, {
|
40334
|
+
role: role,
|
40335
|
+
renderLink: renderNotificationLink,
|
40336
|
+
renderViewNoteLink: renderViewNoteLink
|
40337
|
+
})));
|
38830
40338
|
};
|
38831
40339
|
var HeaderLink = function HeaderLink(_ref3) {
|
38832
40340
|
var data = _ref3.data,
|
@@ -38840,7 +40348,7 @@ var HeaderLink = function HeaderLink(_ref3) {
|
|
38840
40348
|
return React__default.createElement(Fragment$1, null, render(data, isActive));
|
38841
40349
|
};
|
38842
40350
|
|
38843
|
-
var useLayoutContext = function useLayoutContext(role,
|
40351
|
+
var useLayoutContext = function useLayoutContext(role, showLoadingAcademy, domain) {
|
38844
40352
|
var _currentPusher$connec2;
|
38845
40353
|
if (showLoadingAcademy === void 0) {
|
38846
40354
|
showLoadingAcademy = true;
|
@@ -38854,13 +40362,9 @@ var useLayoutContext = function useLayoutContext(role, pusherRegisterUrls, showL
|
|
38854
40362
|
var _state$common;
|
38855
40363
|
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
|
38856
40364
|
});
|
38857
|
-
var isReadyRegisterPusher = useSelector(function (state) {
|
38858
|
-
var _state$common2;
|
38859
|
-
return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.isReadyRegisterPusher;
|
38860
|
-
});
|
38861
40365
|
var concurrentConnectionPusher = useSelector(function (state) {
|
38862
|
-
var _state$
|
38863
|
-
return state === null || state === void 0 ? void 0 : (_state$
|
40366
|
+
var _state$common2;
|
40367
|
+
return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.concurrentConnectionPusher;
|
38864
40368
|
});
|
38865
40369
|
var currentPusher = concurrentConnectionPusher === null || concurrentConnectionPusher === void 0 ? void 0 : concurrentConnectionPusher.pusher;
|
38866
40370
|
var roles = (user === null || user === void 0 ? void 0 : user.roles) || [];
|
@@ -38941,53 +40445,36 @@ var useLayoutContext = function useLayoutContext(role, pusherRegisterUrls, showL
|
|
38941
40445
|
}
|
38942
40446
|
};
|
38943
40447
|
var registerPusher = useCallback(function () {
|
38944
|
-
|
38945
|
-
if (
|
38946
|
-
|
38947
|
-
|
38948
|
-
|
38949
|
-
|
38950
|
-
currentPusher.disconnect();
|
38951
|
-
}
|
38952
|
-
var token = getAccessToken();
|
38953
|
-
var pusher = new Pusher$1(PUSHER_CONFIG.key, {
|
38954
|
-
cluster: PUSHER_CONFIG.cluster,
|
38955
|
-
authEndpoint: (academyDomain ? BASE_URL : SUPER_ADMIN_BASE_URL) + "/api/auth/pusher",
|
38956
|
-
auth: {
|
38957
|
-
params: {},
|
38958
|
-
headers: (_headers = {
|
38959
|
-
Authorization: "Bearer " + token
|
38960
|
-
}, _headers[AcademyHeaders] = academyDomain, _headers)
|
38961
|
-
}
|
38962
|
-
});
|
38963
|
-
dispatch(setConcurrentConnectionPusher({
|
38964
|
-
pusher: pusher,
|
38965
|
-
academyDomain: academyDomain,
|
38966
|
-
isRegistered: true
|
38967
|
-
}));
|
38968
|
-
} else if ((currentPusher === null || currentPusher === void 0 ? void 0 : (_currentPusher$connec = currentPusher.connection) === null || _currentPusher$connec === void 0 ? void 0 : _currentPusher$connec.state) === "disconnected") {
|
38969
|
-
currentPusher.connect();
|
38970
|
-
}
|
38971
|
-
if (!isReadyRegisterPusher && !!currentPusher) {
|
38972
|
-
currentPusher.connection.state !== "disconnected" && currentPusher.disconnect();
|
38973
|
-
dispatch(setConcurrentConnectionPusher({
|
38974
|
-
pusher: null,
|
38975
|
-
academyDomain: "",
|
38976
|
-
isRegistered: false
|
38977
|
-
}));
|
38978
|
-
}
|
38979
|
-
} else {
|
38980
|
-
if (!!currentPusher) {
|
38981
|
-
currentPusher.connection.state !== "disconnected" && currentPusher.disconnect();
|
38982
|
-
dispatch(setConcurrentConnectionPusher({
|
38983
|
-
pusher: null,
|
38984
|
-
academyDomain: "",
|
38985
|
-
isRegistered: false
|
38986
|
-
}));
|
40448
|
+
var _currentPusher$connec;
|
40449
|
+
if ((!academyDomain || !(user !== null && user !== void 0 && user.id)) && role !== Role.Student) return;
|
40450
|
+
if (academyDomain !== (concurrentConnectionPusher === null || concurrentConnectionPusher === void 0 ? void 0 : concurrentConnectionPusher.academyDomain) || !academyDomain && !(concurrentConnectionPusher !== null && concurrentConnectionPusher !== void 0 && concurrentConnectionPusher.academyDomain) && !concurrentConnectionPusher.isRegistered) {
|
40451
|
+
var _headers;
|
40452
|
+
if (currentPusher) {
|
40453
|
+
currentPusher.disconnect();
|
38987
40454
|
}
|
38988
|
-
|
40455
|
+
var token = getAccessToken();
|
40456
|
+
var pusher = new Pusher$1(PUSHER_CONFIG.key, {
|
40457
|
+
cluster: PUSHER_CONFIG.cluster,
|
40458
|
+
authEndpoint: (academyDomain ? BASE_URL : SUPER_ADMIN_BASE_URL) + "/api/auth/pusher",
|
40459
|
+
auth: {
|
40460
|
+
params: {},
|
40461
|
+
headers: (_headers = {
|
40462
|
+
Authorization: "Bearer " + token
|
40463
|
+
}, _headers[AcademyHeaders] = academyDomain, _headers)
|
40464
|
+
}
|
40465
|
+
});
|
40466
|
+
dispatch(setConcurrentConnectionPusher({
|
40467
|
+
pusher: pusher,
|
40468
|
+
academyDomain: academyDomain,
|
40469
|
+
isRegistered: true
|
40470
|
+
}));
|
40471
|
+
} else if ((currentPusher === null || currentPusher === void 0 ? void 0 : (_currentPusher$connec = currentPusher.connection) === null || _currentPusher$connec === void 0 ? void 0 : _currentPusher$connec.state) === "disconnected") {
|
40472
|
+
currentPusher.connect();
|
38989
40473
|
}
|
38990
|
-
|
40474
|
+
return function () {
|
40475
|
+
currentPusher === null || currentPusher === void 0 ? void 0 : currentPusher.disconnect();
|
40476
|
+
};
|
40477
|
+
}, [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]);
|
38991
40478
|
useEffect(function () {
|
38992
40479
|
!(user !== null && user !== void 0 && user.id) && loadInfo();
|
38993
40480
|
}, [user === null || user === void 0 ? void 0 : user.id]);
|
@@ -39013,18 +40500,16 @@ var useLayoutContext = function useLayoutContext(role, pusherRegisterUrls, showL
|
|
39013
40500
|
var LayoutContext = function LayoutContext(_ref) {
|
39014
40501
|
var children = _ref.children,
|
39015
40502
|
role = _ref.role,
|
39016
|
-
_ref$pusherRegisterUr = _ref.pusherRegisterUrls,
|
39017
|
-
pusherRegisterUrls = _ref$pusherRegisterUr === void 0 ? [] : _ref$pusherRegisterUr,
|
39018
40503
|
showLoadingAcademy = _ref.showLoadingAcademy;
|
39019
40504
|
var user = useSelector(function (state) {
|
39020
40505
|
var _state$common;
|
39021
40506
|
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
|
39022
40507
|
});
|
39023
|
-
useLayoutContext(role,
|
40508
|
+
useLayoutContext(role, showLoadingAcademy);
|
39024
40509
|
if (!(user !== null && user !== void 0 && user.email)) return React__default.createElement(LoadingComponent, {
|
39025
40510
|
isLoading: true
|
39026
40511
|
});else return React__default.createElement(Fragment$1, null, children);
|
39027
40512
|
};
|
39028
40513
|
|
39029
|
-
export { ACADEMY_DOMAIN, ACCESS_TOKEN, AcademyHeaders, AcademyList, AcceptNoAcademy, ActionButtons, AnswerCountSelector, ArticleCategorySelector, ArticleDialog, ArticleGroupView, AttendanceFormDialog, BASE_URL, BRIEF_GRADE_OPTIONS, _ChapterBox as ChapterBox, ChatContainer, types as ChatTypes, ClassDetail, ClassList, ClassNoteDialog, ClassSelector, CommonCreateNewQuestionDialog, CommonDialog, ConfirmDeleteDialog, ConfirmDialog, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, DEFAULT_NOTE_FILTER, DEFAULT_PAGING_RESPONSE, DefaultErrorMessage, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, ExamDetailView, ExamEvent, ExamNoteDialog, ExamResultV2, ExamStatus, GOOGLE_CLIENT_ID, GOOGLE_RECAPTCHA_ID, GOOGLE_RECAPTCHA_KEY, GOOGLE_RECAPTCHA_SECRET, GRADE_OPTIONS, Header, InputText, LANGUAGE, LEARNING_SPACE, Language, LanguageHeaders, LayoutContext, LessonTooltip, ListView, Loading, LoadingComponent, Login, LoginQRCode, LoginWithEmail, SignIn as LoginWithPassword, MathJaxContainer, MathTinyEditor, NewNoteButton, NoAcademyHeaders, NotFound, NoteType, NotesContainer, NotificationDetail, NotificationList, OrderBy, OrderType, PRE_REDIRECT_URL, PUSHER_CONFIG, PassCodeCheck, PassCodeDialog, PreparedItem, PreparedTextbookList, PreparedTextbookView, PreparedType, PrintContainerClassName, PrintContentClassName, PrintExamResultView, PrintExamView2, PrintHeaderClassName, PrintTitleClassName, QRCodeConfirmation, QuestionAnswerType, QuestionCountSelector, REDIRECT_URL, RELEASE_DATE, RecentUserAction, RecentUserActionNames, RecentUserActionSortBy, ReleaseAlert, Role, SUPER_ADMIN_BASE_URL, SchoolType$1 as SchoolType, ScoreSelector, SearchInput, ShareToTeacherDialog, StudentInfoDrawer, StudentSelector, SubjectSelector, TextbookActionButtons, TextbookViewDetail as TextbookDetail, TextbookDrawer, TextbookEditorType, TextbookList, TheAcademyDropdown, TheLanguageDropdown, TinyEditor, UserList, UserSortColumn, VirtualListView, VirtualTableView, api, apiUpload, canAccess as canAccessRoute, convertHHMMSStoSeconds, createRecentUserActionListApi, diffFromNow, ellipsisText, encodeParams, formatDataMyAnswer, formatDateTime, formatPhoneNumber, formatRole, formatTextbookDataMyAnswer, formatTime, formatTimeSecond, getAcademyDomain, getAccessToken, getErrorMessage, getLanguage, getLearningSpace, getLocalDayOfWeek, getOrdinalSuffix, getRecentUserActionListApi, getRedirectUrl, getRemainTime, getRole, getUtcDayOfWeek, i18n, includePathname, isLocalHost, isTextType, minutesToTimeSpan, pushTo, reset, setAcademies, setAcademy, setAlert, setConcurrentConnectionPusher, setLanguage, setLoading, setReFetchUserAcademies,
|
40514
|
+
export { ACADEMY_DOMAIN, ACCESS_TOKEN, AcademyHeaders, AcademyList, AcceptNoAcademy, ActionButtons, AnnouncementContainer, AnnouncementType, AnswerCountSelector, ArticleCategorySelector, ArticleDialog, ArticleGroupView, AttendanceFormDialog, BASE_URL, BRIEF_GRADE_OPTIONS, _ChapterBox as ChapterBox, ChatContainer, types as ChatTypes, ClassDetail, ClassList, ClassNoteDialog, ClassSelector, CommonCreateNewQuestionDialog, CommonDialog, ConfirmDeleteDialog, ConfirmDialog, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, DEFAULT_NOTE_FILTER, DEFAULT_PAGING_RESPONSE, DefaultErrorMessage, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, ExamDetailView, ExamEvent, ExamNoteDialog, ExamResultV2, ExamStatus, GOOGLE_CLIENT_ID, GOOGLE_RECAPTCHA_ID, GOOGLE_RECAPTCHA_KEY, GOOGLE_RECAPTCHA_SECRET, GRADE_OPTIONS, Header, InputText, LANGUAGE, LEARNING_SPACE, Language, LanguageHeaders, LayoutContext, LessonTooltip, ListView, Loading, LoadingComponent, Login, LoginQRCode, LoginWithEmail, SignIn as LoginWithPassword, MathJaxContainer, MathTinyEditor, NewNoteButton, NoAcademyHeaders, NotFound, NoteDrawer, NoteTabs, NoteType, NotesContainer, NotificationDetail, NotificationList, OrderBy, OrderType, PRE_REDIRECT_URL, PUSHER_CONFIG, PassCodeCheck, PassCodeDialog, PreparedItem, PreparedTextbookList, PreparedTextbookView, PreparedType, PrintContainerClassName, PrintContentClassName, PrintExamResultView, PrintExamView2, PrintHeaderClassName, PrintTitleClassName, QRCodeConfirmation, QuestionAnswerType, QuestionCountSelector, REDIRECT_URL, RELEASE_DATE, RecentUserAction, RecentUserActionNames, RecentUserActionSortBy, ReleaseAlert, Role, SUPER_ADMIN_BASE_URL, SchoolType$1 as SchoolType, ScoreSelector, SearchInput, ShareToTeacherDialog, StudentInfoDrawer, StudentSelector, SubjectSelector, TextbookActionButtons, TextbookViewDetail as TextbookDetail, TextbookDrawer, TextbookEditorType, TextbookList, TheAcademyDropdown, TheLanguageDropdown, TinyEditor, UserList, UserSortColumn, VirtualListView, VirtualTableView, api, apiUpload, canAccess as canAccessRoute, convertHHMMSStoSeconds, createRecentUserActionListApi, diffFromNow, ellipsisText, encodeParams, formatDataMyAnswer, formatDateTime, formatPhoneNumber, formatRole, formatTextbookDataMyAnswer, formatTime, formatTimeSecond, getAcademyDomain, getAccessToken, getErrorMessage, getLanguage, getLearningSpace, getLocalDayOfWeek, getOrdinalSuffix, getRecentUserActionListApi, getRedirectUrl, getRemainTime, getRole, getUtcDayOfWeek, i18n, includePathname, isLocalHost, isTextType, minutesToTimeSpan, pushTo, reset, setAcademies, setAcademy, setAlert, setConcurrentConnectionPusher, setLanguage, setLoading, setReFetchUserAcademies, setTotalUnreadMessages, setUser, store, timAgo, timeSpanToLocalMoment, toISOString, toLocalTime, totalSolveTimeCategories, totalTextbookSolveTimeCategories, useAutoAcademyDomain, useChatContainer, useCountDownTimer, useGoogleSignOut, useKeyboardVisible, useLanguage, useList, useLoadMore, useLogin, useNotes, usePusherConversation, useSwitchAcademy, useVirtualizeList, utcToLocalTime };
|
39030
40515
|
//# sourceMappingURL=index.modern.js.map
|