touchstudy-core 0.1.31 → 0.1.33

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.
@@ -9,7 +9,7 @@ import { useDispatch, useSelector } from 'react-redux';
9
9
  import axios from 'axios';
10
10
  import { useTranslation, initReactI18next } from 'react-i18next';
11
11
  export { I18nextProvider, useTranslation } from 'react-i18next';
12
- import { Grid, Dialog, DialogTitle, IconButton, DialogContent, TextField, DialogActions, Button, Box, Typography, Pagination, styled, Tooltip, tooltipClasses, Stack, ClickAwayListener, CircularProgress, FormControl, RadioGroup, FormControlLabel, Radio, FormGroup, FormLabel, InputLabel, Container, Table, TableBody, TableRow, TableCell, TableHead, Paper, InputBase } from '@mui/material';
12
+ import { Grid, Dialog, DialogTitle, IconButton, DialogContent, TextField, DialogActions, Button, Box, Typography, Pagination, styled, Tooltip, tooltipClasses, Stack, ClickAwayListener, useMediaQuery, CircularProgress, FormControl, RadioGroup, FormControlLabel, Radio, FormGroup, FormLabel, InputLabel, Container, Table, TableBody, TableRow, TableCell, TableHead, Paper, InputBase } from '@mui/material';
13
13
  import { gapi } from 'gapi-script';
14
14
  import Pusher from 'pusher-js';
15
15
  import { IoClose, IoCloseOutline, IoSearch } from 'react-icons/io5';
@@ -136,7 +136,7 @@ function _objectWithoutPropertiesLoose(source, excluded) {
136
136
  return target;
137
137
  }
138
138
 
139
- var stylesGlobal = {"btn-login-google":"_2HqmH","block-login":"_wWIyO","box-login":"_38Lo1","dropdown-menu":"_1krbH","header-avatar":"_RQaHE","dropdown-menu-flag":"_XK8oS","dropdown-content":"_3ys4W","dropdown-change":"_ToOW_","item-address":"_3sQlR","item-logout":"_3bqSM","title-address":"_1jgSI","img-avatar":"_35Ttz","item-contact":"_1wc7o","content-text":"_3S4f2","dropdown-content-language":"_3ajui","dropdown-item-language":"_3Y_y4","dropdown-item-language-active":"_CzNMi","dropdown-academy":"_3CMVp","image-academy":"_2ibYC","academy-btn":"_1JMRU","switch-icon":"_N4FNf","dropdown-content-academy":"_31Dr0","dropdown-academy-item":"_3bjcz","noGutters":"_31ZQk","custom-col-2":"_3yXyK","custom-col-3":"_1RsJQ","custom-col-5":"_L42CP","custom-col-10":"_2u6eL","custom-row":"_8x7OP","custom-col":"_1JmTh","custom-col-4":"_3HO1e","custom-col-8":"_Oy31M","custom-col-12":"_3aUKo","custom-container":"_39LRs","form-label":"__Ut-u","form-control":"_2k4dX","btn-outline-primary":"_2PWdX","sort-icons":"_mQvLF","active":"_3oAH-","form-select":"_3W3aw"};
139
+ var styleGlobal = {"btn-login-google":"_2HqmH","block-login":"_wWIyO","box-login":"_38Lo1","dropdown-menu":"_1krbH","header-avatar":"_RQaHE","dropdown-menu-flag":"_XK8oS","dropdown-content":"_3ys4W","dropdown-change":"_ToOW_","item-address":"_3sQlR","item-logout":"_3bqSM","title-address":"_1jgSI","img-avatar":"_35Ttz","item-contact":"_1wc7o","content-text":"_3S4f2","dropdown-content-language":"_3ajui","dropdown-item-language":"_3Y_y4","dropdown-item-language-active":"_CzNMi","dropdown-academy":"_3CMVp","image-academy":"_2ibYC","academy-btn":"_1JMRU","switch-icon":"_N4FNf","dropdown-content-academy":"_31Dr0","dropdown-academy-item":"_3bjcz","noGutters":"_31ZQk","custom-col-2":"_3yXyK","custom-col-3":"_1RsJQ","custom-col-5":"_L42CP","custom-col-10":"_2u6eL","custom-row":"_8x7OP","custom-col":"_1JmTh","custom-col-4":"_3HO1e","custom-col-8":"_Oy31M","custom-col-12":"_3aUKo","custom-container":"_39LRs","form-label":"__Ut-u","form-control":"_2k4dX","btn-outline-primary":"_2PWdX","sort-icons":"_mQvLF","active":"_3oAH-","form-select":"_3W3aw","truncate":"_3NJzN"};
140
140
 
141
141
  var AuthenticationMessage;
142
142
  (function (AuthenticationMessage) {
@@ -463,18 +463,18 @@ var BlockLogin = function BlockLogin(_ref) {
463
463
  var handleSubmit = formikProps.handleSubmit;
464
464
  return React.createElement(Grid, {
465
465
  container: true,
466
- className: "" + stylesGlobal["box-login"]
466
+ className: "" + styleGlobal["box-login"]
467
467
  }, React.createElement(Grid, {
468
468
  item: true,
469
469
  className: "p-0 d-flex justify-content-center"
470
470
  }, React.createElement("form", {
471
- className: "" + stylesGlobal["block-login"],
471
+ className: "" + styleGlobal["block-login"],
472
472
  onSubmit: handleSubmit
473
473
  }, React.createElement("div", {
474
- className: "" + stylesGlobal["block-form"]
474
+ className: "" + styleGlobal["block-form"]
475
475
  }, React.createElement("img", {
476
476
  src: "/images/logo.jpeg",
477
- className: "" + stylesGlobal["img-login-rectangle"]
477
+ className: "" + styleGlobal["img-login-rectangle"]
478
478
  }), React.createElement("div", {
479
479
  className: "p-0 mt-1 mb-4"
480
480
  }, React.createElement(GoogleLogin, {
@@ -483,7 +483,7 @@ var BlockLogin = function BlockLogin(_ref) {
483
483
  onSuccess: onSuccessGoogle,
484
484
  onFailure: onFailureGoogle,
485
485
  cookiePolicy: "single_host_origin",
486
- className: "" + stylesGlobal["btn-login-google"],
486
+ className: "" + styleGlobal["btn-login-google"],
487
487
  isSignedIn: true
488
488
  }))))));
489
489
  });
@@ -547,7 +547,7 @@ var Login = function Login(_ref) {
547
547
  var _useLogin = useLogin$1(onNavigate),
548
548
  defaultInfo = _useLogin.defaultInfo;
549
549
  return React.createElement("div", {
550
- className: stylesGlobal["login"] + " container-fluid font-family-lato"
550
+ className: styleGlobal["login"] + " container-fluid font-family-lato"
551
551
  }, React.createElement(Grid, {
552
552
  container: true,
553
553
  spacing: 3,
@@ -1356,6 +1356,7 @@ var duration = "시험 시간";
1356
1356
  var answer_count = "답변 수";
1357
1357
  var question_count = "문제 갯수";
1358
1358
  var category = "문항 카테고리";
1359
+ var _category = "카테고리";
1359
1360
  var save_and_exit = "저장 및 종료";
1360
1361
  var update_exam = "시험 업데이트";
1361
1362
  var create_exam = "새 시험 만들기";
@@ -1572,6 +1573,12 @@ var my_classes_calendar = "내 수업 캘린더";
1572
1573
  var enter_exam_code = "시험 코드 입력";
1573
1574
  var my_score = "내 점수";
1574
1575
  var exam_date = "시험 날짜";
1576
+ var my_problem_solving_order = "내 순서";
1577
+ var top_rankings_problem_solving_order = "상위권 학생의 순서";
1578
+ var comparison_of_top_rankings_and_problem_solving_order = "상위권과 문제 푸는 순서 비교";
1579
+ var my_answers = "내 해답";
1580
+ var request_for_consultation = "상담요청";
1581
+ var ask_a_question_with_a_problem = "문제로 질문하기";
1575
1582
  var lang_ko = {
1576
1583
  problem_solving: problem_solving,
1577
1584
  my_story: my_story,
@@ -1642,6 +1649,7 @@ var lang_ko = {
1642
1649
  answer_count: answer_count,
1643
1650
  question_count: question_count,
1644
1651
  category: category,
1652
+ _category: _category,
1645
1653
  save_and_exit: save_and_exit,
1646
1654
  update_exam: update_exam,
1647
1655
  create_exam: create_exam,
@@ -1854,7 +1862,13 @@ var lang_ko = {
1854
1862
  my_classes_calendar: my_classes_calendar,
1855
1863
  enter_exam_code: enter_exam_code,
1856
1864
  my_score: my_score,
1857
- exam_date: exam_date
1865
+ exam_date: exam_date,
1866
+ my_problem_solving_order: my_problem_solving_order,
1867
+ top_rankings_problem_solving_order: top_rankings_problem_solving_order,
1868
+ comparison_of_top_rankings_and_problem_solving_order: comparison_of_top_rankings_and_problem_solving_order,
1869
+ my_answers: my_answers,
1870
+ request_for_consultation: request_for_consultation,
1871
+ ask_a_question_with_a_problem: ask_a_question_with_a_problem
1858
1872
  };
1859
1873
 
1860
1874
  var problem_solving$1 = "Problem Solving";
@@ -1946,6 +1960,7 @@ var update_question_success = "Question is updated successfully";
1946
1960
  var number_of_answers = "Number of answers";
1947
1961
  var correct_answers = "Correct answers";
1948
1962
  var category$1 = "Category";
1963
+ var _category$1 = "Category";
1949
1964
  var score = "Score";
1950
1965
  var enter_title$1 = "Enter title";
1951
1966
  var enter_score = "Enter score";
@@ -2175,6 +2190,12 @@ var my_classes_calendar$1 = "My classes calendar";
2175
2190
  var enter_exam_code$1 = "Enter exam code";
2176
2191
  var my_score$1 = "My score";
2177
2192
  var exam_date$1 = "Exam date";
2193
+ var my_problem_solving_order$1 = "My problem solving order";
2194
+ var top_rankings_problem_solving_order$1 = "Top rankings problem solving order";
2195
+ var comparison_of_top_rankings_and_problem_solving_order$1 = "Comparison of top rankings and problem-solving order";
2196
+ var my_answers$1 = "My answers";
2197
+ var request_for_consultation$1 = "Request for consultation";
2198
+ var ask_a_question_with_a_problem$1 = "Ask a question with a problem";
2178
2199
  var lang_en = {
2179
2200
  problem_solving: problem_solving$1,
2180
2201
  my_story: my_story$1,
@@ -2268,6 +2289,7 @@ var lang_en = {
2268
2289
  number_of_answers: number_of_answers,
2269
2290
  correct_answers: correct_answers,
2270
2291
  category: category$1,
2292
+ _category: _category$1,
2271
2293
  score: score,
2272
2294
  enter_title: enter_title$1,
2273
2295
  enter_score: enter_score,
@@ -2492,7 +2514,13 @@ var lang_en = {
2492
2514
  my_classes_calendar: my_classes_calendar$1,
2493
2515
  enter_exam_code: enter_exam_code$1,
2494
2516
  my_score: my_score$1,
2495
- exam_date: exam_date$1
2517
+ exam_date: exam_date$1,
2518
+ my_problem_solving_order: my_problem_solving_order$1,
2519
+ top_rankings_problem_solving_order: top_rankings_problem_solving_order$1,
2520
+ comparison_of_top_rankings_and_problem_solving_order: comparison_of_top_rankings_and_problem_solving_order$1,
2521
+ my_answers: my_answers$1,
2522
+ request_for_consultation: request_for_consultation$1,
2523
+ ask_a_question_with_a_problem: ask_a_question_with_a_problem$1
2496
2524
  };
2497
2525
 
2498
2526
  i18n.use(initReactI18next).init({
@@ -2807,10 +2835,10 @@ var TheAcademyDropdown = function TheAcademyDropdown(_ref) {
2807
2835
  };
2808
2836
  return React.createElement(Fragment$1, null, React.createElement(Button, {
2809
2837
  onClick: handleOpen,
2810
- className: "" + stylesGlobal["academy-btn"],
2838
+ className: "" + styleGlobal["academy-btn"],
2811
2839
  sx: _extends({}, popoverStyle)
2812
2840
  }, React.createElement("div", {
2813
- className: "" + stylesGlobal["image-academy"]
2841
+ className: "" + styleGlobal["image-academy"]
2814
2842
  }, selectedAcademy !== null && selectedAcademy !== void 0 && selectedAcademy.image ? React.createElement("img", {
2815
2843
  src: selectedAcademy === null || selectedAcademy === void 0 ? void 0 : selectedAcademy.image,
2816
2844
  alt: selectedAcademy === null || selectedAcademy === void 0 ? void 0 : selectedAcademy.name
@@ -2823,7 +2851,7 @@ var TheAcademyDropdown = function TheAcademyDropdown(_ref) {
2823
2851
  minWidth: 150
2824
2852
  }
2825
2853
  }, (selectedAcademy === null || selectedAcademy === void 0 ? void 0 : selectedAcademy.name) || t(role === Role.Admin ? "switch_academy_admin" : "switch_academy")), React.createElement("div", {
2826
- className: "" + stylesGlobal["switch-icon"]
2854
+ className: "" + styleGlobal["switch-icon"]
2827
2855
  }, React.createElement(GoArrowSwitch, {
2828
2856
  size: 14
2829
2857
  }))), (isSuperAdmin || !isAdmin) && React.createElement(Popover, {
@@ -2865,7 +2893,7 @@ var TheAcademyDropdown = function TheAcademyDropdown(_ref) {
2865
2893
  fontWeight: 600
2866
2894
  }
2867
2895
  }, React.createElement("div", {
2868
- className: "" + stylesGlobal["image-academy"]
2896
+ className: "" + styleGlobal["image-academy"]
2869
2897
  }, option.image ? React.createElement(Box$1, {
2870
2898
  component: "img",
2871
2899
  alt: option.name,
@@ -3910,6 +3938,36 @@ var iconChecked = function iconChecked(_ref) {
3910
3938
  }));
3911
3939
  };
3912
3940
 
3941
+ var ellipsisText = function ellipsisText(text, maxLength) {
3942
+ return text.length > maxLength ? text.slice(0, maxLength) + " ..." : text;
3943
+ };
3944
+ var formatDataMyAnswer = function formatDataMyAnswer(inputData, categories) {
3945
+ var uniqueCategories = new Set();
3946
+ var filterCategories = categories.filter(function (category) {
3947
+ if (!uniqueCategories.has(category.name)) {
3948
+ uniqueCategories.add(category.name);
3949
+ return true;
3950
+ }
3951
+ return false;
3952
+ });
3953
+ var questionsByCategory = filterCategories.map(function (category) {
3954
+ return {
3955
+ category: category,
3956
+ questions: inputData.questions.filter(function (question) {
3957
+ return question.category.name === category.name;
3958
+ })
3959
+ };
3960
+ });
3961
+ return questionsByCategory;
3962
+ };
3963
+ var formatTimeSecond = function formatTimeSecond(duration, t) {
3964
+ duration = Math.round(duration);
3965
+ return "" + (duration < 60 ? "" + duration + t("seconds") : t("mins_mins_seconds_seconds", {
3966
+ mins: Math.floor(duration / 60),
3967
+ seconds: duration % 60
3968
+ }));
3969
+ };
3970
+
3913
3971
  var ChatHeader = function ChatHeader(_ref) {
3914
3972
  var fullName = _ref.fullName,
3915
3973
  examTitle = _ref.examTitle,
@@ -3930,6 +3988,7 @@ var ChatHeader = function ChatHeader(_ref) {
3930
3988
  handleConfirm = _useDialog.handleConfirm;
3931
3989
  var _useTranslation = useTranslation(),
3932
3990
  t = _useTranslation.t;
3991
+ var isTabletUp = useMediaQuery('(min-width:900px)');
3933
3992
  var isStudent = roles === null || roles === void 0 ? void 0 : roles.includes(Roles$1.Student);
3934
3993
  var filterDurationExam = useMemo(function () {
3935
3994
  if (!durationExam) return;
@@ -3958,7 +4017,7 @@ var ChatHeader = function ChatHeader(_ref) {
3958
4017
  alignItems: "center",
3959
4018
  flexDirection: "row",
3960
4019
  gap: "8px"
3961
- }, React.createElement(iconPersonNoActive, null), React.createElement(Typography, {
4020
+ }, React.createElement(iconPersonNoActive, null), isTabletUp && React.createElement(Typography, {
3962
4021
  fontWeight: 500,
3963
4022
  fontSize: "14px",
3964
4023
  lineHeight: "16.71px",
@@ -3968,7 +4027,7 @@ var ChatHeader = function ChatHeader(_ref) {
3968
4027
  fontSize: "14px",
3969
4028
  lineHeight: "16.71px",
3970
4029
  color: "#5458D5"
3971
- }, teacherName)), !!examTitle && React.createElement(Box, {
4030
+ }, ellipsisText(teacherName || "", 15))), !!examTitle && React.createElement(Box, {
3972
4031
  display: "flex",
3973
4032
  alignItems: "start",
3974
4033
  color: "#5458D5",
@@ -3978,7 +4037,7 @@ var ChatHeader = function ChatHeader(_ref) {
3978
4037
  fontWeight: 600,
3979
4038
  fontSize: "12px",
3980
4039
  lineHeight: "14.32px"
3981
- }, examTitle), React.createElement(Box, {
4040
+ }, ellipsisText(examTitle, 15)), React.createElement(Box, {
3982
4041
  display: "flex",
3983
4042
  flexDirection: "row",
3984
4043
  gap: "4px"
@@ -6557,9 +6616,9 @@ var SubjectSelector = function SubjectSelector(_ref) {
6557
6616
  !minimumTextSearchLength && defaultValueAtFirst && options.length && onChange(options[0], subjects[0]);
6558
6617
  }, [JSON.stringify(options), JSON.stringify(subjects), defaultValueAtFirst, minimumTextSearchLength]);
6559
6618
  return React.createElement(FormGroup, {
6560
- className: "" + stylesGlobal["filter-item"]
6619
+ className: "" + styleGlobal["filter-item"]
6561
6620
  }, !!title && React.createElement("label", {
6562
- className: "" + stylesGlobal["title-form"]
6621
+ className: "" + styleGlobal["title-form"]
6563
6622
  }, title), React.createElement(CustomSelectOption, {
6564
6623
  options: options,
6565
6624
  inputValue: searchString,
@@ -7028,12 +7087,12 @@ var SortIcon = function SortIcon(_ref) {
7028
7087
  var isAscending = _ref.isAscending,
7029
7088
  onClick = _ref.onClick;
7030
7089
  return React.createElement("div", {
7031
- className: "d-flex flex-column " + stylesGlobal["sort-icons"],
7090
+ className: "d-flex flex-column " + styleGlobal["sort-icons"],
7032
7091
  onClick: onClick
7033
7092
  }, React.createElement(FaSortUp, {
7034
- className: isAscending === true ? stylesGlobal["active"] : ""
7093
+ className: isAscending === true ? styleGlobal["active"] : ""
7035
7094
  }), React.createElement(FaSortDown, {
7036
- className: isAscending === false ? stylesGlobal["active"] : ""
7095
+ className: isAscending === false ? styleGlobal["active"] : ""
7037
7096
  }));
7038
7097
  };
7039
7098
 
@@ -7536,17 +7595,17 @@ var ExamDetailView = function ExamDetailView(_ref) {
7536
7595
  return React.createElement(Grid, {
7537
7596
  container: true,
7538
7597
  spacing: 3,
7539
- className: className + " " + stylesGlobal["custom-row"]
7598
+ className: className + " " + styleGlobal["custom-row"]
7540
7599
  }, React.createElement(Grid, {
7541
7600
  item: true,
7542
7601
  xs: 5,
7543
7602
  className: 'mb-2'
7544
7603
  }, React.createElement("label", {
7545
- className: stylesGlobal["form-label"] + " " + styles$1["question-label"],
7604
+ className: styleGlobal["form-label"] + " " + styles$1["question-label"],
7546
7605
  htmlFor: "title"
7547
7606
  }, t("title")), React.createElement("input", {
7548
7607
  disabled: isDisabled,
7549
- className: "" + stylesGlobal["form-control"],
7608
+ className: "" + styleGlobal["form-control"],
7550
7609
  value: exam.title,
7551
7610
  id: "title",
7552
7611
  placeholder: t("enter_title"),
@@ -7556,7 +7615,7 @@ var ExamDetailView = function ExamDetailView(_ref) {
7556
7615
  xs: 3,
7557
7616
  className: 'mb-2'
7558
7617
  }, React.createElement("label", {
7559
- className: stylesGlobal["form-label"] + " " + styles$1["question-label"],
7618
+ className: styleGlobal["form-label"] + " " + styles$1["question-label"],
7560
7619
  htmlFor: "duration"
7561
7620
  }, t("duration")), React.createElement(CustomSelect, {
7562
7621
  inputId: "duration",
@@ -7569,7 +7628,7 @@ var ExamDetailView = function ExamDetailView(_ref) {
7569
7628
  xs: 3,
7570
7629
  className: 'mb-2'
7571
7630
  }, React.createElement("label", {
7572
- className: stylesGlobal["form-label"] + " " + styles$1["question-label"],
7631
+ className: styleGlobal["form-label"] + " " + styles$1["question-label"],
7573
7632
  htmlFor: "duration"
7574
7633
  }, t("subject"), " ", selectedSubject === null || selectedSubject === void 0 ? void 0 : selectedSubject.name), React.createElement(CustomSelect, {
7575
7634
  inputId: "subject",
@@ -7600,7 +7659,7 @@ var ExamDetailView = function ExamDetailView(_ref) {
7600
7659
  xs: 12
7601
7660
  }, React.createElement("button", {
7602
7661
  disabled: isDisabled,
7603
- className: stylesGlobal["btn-outline-primary"] + " w-100 d-flex justify-content-center align-items-center " + styles$1["question-btn"] + " mt-3",
7662
+ className: styleGlobal["btn-outline-primary"] + " w-100 d-flex justify-content-center align-items-center " + styles$1["question-btn"] + " mt-3",
7604
7663
  onClick: handleAddArticle
7605
7664
  }, React.createElement(FaPlusCircle, {
7606
7665
  className: "me-2"
@@ -8526,10 +8585,15 @@ var useExamResult = function useExamResult(searchParam, navigate, examSessionId,
8526
8585
  enabled: true,
8527
8586
  hideEmptySeries: true,
8528
8587
  y: {
8529
- formatter: function formatter(value, _ref) {
8588
+ formatter: function formatter(val, _ref) {
8530
8589
  var dataPointIndex = _ref.dataPointIndex;
8531
8590
  if (dataPointIndex > 0) {
8532
- return value != null ? "\uBB38\uC81C " + (timelyOrderQuestion[dataChartIndex] ? timelyOrderQuestion[dataChartIndex].questions.length - value + 1 : value) + "\uBC88" : "데이터 없음";
8591
+ var _timelyOrderQuestion$, _questions$length, _questions;
8592
+ var questions = ((_timelyOrderQuestion$ = timelyOrderQuestion[dataChartIndex]) === null || _timelyOrderQuestion$ === void 0 ? void 0 : _timelyOrderQuestion$.questions) || null;
8593
+ var questionLength = (_questions$length = questions === null || questions === void 0 ? void 0 : questions.length) != null ? _questions$length : 0;
8594
+ return val != null ? t("problem_number_question", {
8595
+ number: questions !== null ? ((_questions = questions[questionLength - val]) === null || _questions === void 0 ? void 0 : _questions.questionOrder) + 1 : val
8596
+ }) : t("no_data");
8533
8597
  }
8534
8598
  return null;
8535
8599
  }
@@ -8537,7 +8601,7 @@ var useExamResult = function useExamResult(searchParam, navigate, examSessionId,
8537
8601
  },
8538
8602
  legend: {
8539
8603
  show: true,
8540
- fontSize: '12px',
8604
+ fontSize: "12px",
8541
8605
  fontWeight: 600,
8542
8606
  markers: {
8543
8607
  width: 16,
@@ -8561,11 +8625,11 @@ var useExamResult = function useExamResult(searchParam, navigate, examSessionId,
8561
8625
  }), ["."]),
8562
8626
  axisBorder: {
8563
8627
  show: true,
8564
- color: '#E4E7EC'
8628
+ color: "#E4E7EC"
8565
8629
  },
8566
8630
  labels: {
8567
8631
  style: {
8568
- fontSize: '10px'
8632
+ fontSize: "10px"
8569
8633
  }
8570
8634
  }
8571
8635
  },
@@ -8587,25 +8651,30 @@ var useExamResult = function useExamResult(searchParam, navigate, examSessionId,
8587
8651
  max: timelyOrderQuestion[dataChartIndex] ? timelyOrderQuestion[dataChartIndex].questions.length + 1 : 1,
8588
8652
  axisBorder: {
8589
8653
  show: true,
8590
- color: '#E4E7EC'
8654
+ color: "#E4E7EC"
8591
8655
  },
8592
8656
  labels: {
8593
8657
  formatter: function formatter(val) {
8594
- return val != null ? "\uBB38\uC81C " + (timelyOrderQuestion[dataChartIndex] ? timelyOrderQuestion[dataChartIndex].questions.length - val + 1 : val) + "\uBC88" : "데이터 없음";
8658
+ var _timelyOrderQuestion$2, _questions$length2, _questions2;
8659
+ var questions = ((_timelyOrderQuestion$2 = timelyOrderQuestion[dataChartIndex]) === null || _timelyOrderQuestion$2 === void 0 ? void 0 : _timelyOrderQuestion$2.questions) || null;
8660
+ var questionLength = (_questions$length2 = questions === null || questions === void 0 ? void 0 : questions.length) != null ? _questions$length2 : 0;
8661
+ return val != null ? t("problem_number_question", {
8662
+ number: questions !== null ? ((_questions2 = questions[questionLength - val]) === null || _questions2 === void 0 ? void 0 : _questions2.questionOrder) + 1 : val
8663
+ }) : t("no_data");
8595
8664
  },
8596
8665
  style: {
8597
- fontSize: '10px'
8666
+ fontSize: "10px"
8598
8667
  }
8599
8668
  }
8600
8669
  }
8601
8670
  };
8602
- }, [JSON.stringify(timelyOrderQuestion[dataChartIndex]), language]);
8671
+ }, [JSON.stringify(timelyOrderQuestion), dataChartIndex, language]);
8603
8672
  var series = useMemo(function () {
8604
8673
  if (!timelyOrderQuestion.length || timelyOrderQuestion.length < dataChartIndex + 1 || dataChartIndex < 0) return [{
8605
- name: "내 순서",
8674
+ name: t("my_problem_solving_order"),
8606
8675
  data: []
8607
8676
  }, {
8608
- name: "상위권 학생의 순서",
8677
+ name: t("top_rankings_problem_solving_order"),
8609
8678
  data: []
8610
8679
  }];
8611
8680
  var data = timelyOrderQuestion[dataChartIndex];
@@ -8619,23 +8688,23 @@ var useExamResult = function useExamResult(searchParam, navigate, examSessionId,
8619
8688
  });
8620
8689
  });
8621
8690
  var mySeriesData = [null].concat(questionsData.sort(function (a, b) {
8622
- return a.answerOrder > b.answerOrder ? 1 : b.answerOrder > a.answerOrder ? -1 : 0;
8691
+ return b.answerOrder === 0 ? -1 : a.answerOrder > b.answerOrder ? 1 : b.answerOrder > a.answerOrder ? -1 : 0;
8623
8692
  }).map(function (item) {
8624
- return data.questions.length - item.questionOrder;
8693
+ return item.answerOrder === 0 ? null : data.questions.length - item.questionOrder;
8625
8694
  }), [null]);
8626
8695
  var topSeriesData = [null].concat(questionsData.sort(function (a, b) {
8627
- return a.topAnswerOrder > b.topAnswerOrder ? 1 : b.topAnswerOrder > a.topAnswerOrder ? -1 : 0;
8696
+ return b.topAnswerOrder === 0 ? -1 : a.topAnswerOrder > b.topAnswerOrder ? 1 : b.topAnswerOrder > a.topAnswerOrder ? -1 : 0;
8628
8697
  }).map(function (item) {
8629
- return item.topAnswerOrder == null ? null : data.questions.length - item.questionOrder;
8698
+ return item.topAnswerOrder === 0 ? null : data.questions.length - item.questionOrder;
8630
8699
  }), [null]);
8631
8700
  return [{
8632
- name: "내 순서",
8701
+ name: t("my_problem_solving_order"),
8633
8702
  data: mySeriesData
8634
8703
  }, {
8635
- name: "상위권 학생의 순서",
8704
+ name: t("top_rankings_problem_solving_order"),
8636
8705
  data: topSeriesData
8637
8706
  }];
8638
- }, [JSON.stringify(timelyOrderQuestion), dataChartIndex]);
8707
+ }, [JSON.stringify(timelyOrderQuestion), dataChartIndex, language]);
8639
8708
  var handleExportPdf = function handleExportPdf() {
8640
8709
  try {
8641
8710
  var canvas = document.querySelector("#canvas");
@@ -9794,33 +9863,6 @@ var ReactApexChart = unwrapExports(reactApexcharts_min);
9794
9863
 
9795
9864
  var styles$2 = {"titleBox":"_1dveO","title":"_mxRxf","point":"_2fD-F","buttonGroup":"_2DGl3","btnFeedback":"_xGW1x","btnTerminate":"_3mLu2","myanswer":"_eDBpS","titleMyAnswer1":"_2fMq3","titleMyAnswer2":"_3gEYh","contentMyAnswer":"_2K_sx","myAnswerItem":"_2qiLh","time":"_6TCOK","timeCol":"_hmseC","answer-response":"_3GfJt","answer-response-0":"_3ut64","answer-response-1":"_2VtpD","answer-response-2":"_58lQU","answer-response-3":"_1ucMY","answer-response-4":"_1qkxy","answerCorrect":"_2jIeT","answerIncorrect":"_to2v0","answerNograss":"_1JSte","answerEasy":"_2_uTU","answerDiscrimination":"_1DBoA","answerTrap":"_1q3tD","answerNoTime":"_3iItu","questionOrder":"_1fNkS","myTimeLabel":"_1Z_F3","myPoolTime":"_4KwG0","topTimeLabel":"_245H-","topTime":"_3tZqw","meanTimeLabel":"_PlPLY","meanTime":"_12a7R","compareChart":"_3MW16","prevChart":"_1fNkb","chart":"_3K4oY","nextChart":"_3YKBp","titleChart":"_13BVP","compareGrass":"_1_fJu","titleCompareGrass":"_o1txm","tableCompareGrass":"_bT5nf","thcolumn1":"_3Umg0","tdcolumn1":"_3dRMF","tdcolumn3":"_2tcBP","classification":"_1AFeb","wrapperProblem":"_oTqG7","titleProblem":"_35eIx","titleProblemClose":"_3t4HO","titleTrickyProblem":"_1-oxK","wrongQuestions":"_2dpMR","question":"_1lSOX","assignedQuestions":"_1ONUt","wrapperContent":"_nPoR0","content":"_2zmZn","contentColumn1":"_334SY","span1":"_3Lf-U","span2":"_ZpMot","contentColumn2":"_16P3l","duration":"_1kT28","topDuration":"_1fVRi","overallCorrectRate":"_3jLGe","answer":"_VsZ0K","contentVulnerable":"_QxKMy","wrappContentProblem":"_nnqpW","contentProblem":"_3Z1nV","labelProblem":"_36Xpx","name":"_3ZJQW","percent":"_2J3MK","slider":"_1MPdO","track":"_3CV_y","noData":"__g-ff","loading":"_3j485","table-responsive":"_2O6RX","form-label":"_1RYOQ","form-control":"_3VRVT","form-label-dialog":"_3oCSh","btn-cancel":"_3USKq","btn-register":"_3y_iD","pdfBtnBox":"_3xZHo","pdfBtn":"_1DtWq","form-select":"_1a_vw"};
9796
9865
 
9797
- var formatDataMyAnswer = function formatDataMyAnswer(inputData, categories) {
9798
- var uniqueCategories = new Set();
9799
- var filterCategories = categories.filter(function (category) {
9800
- if (!uniqueCategories.has(category.name)) {
9801
- uniqueCategories.add(category.name);
9802
- return true;
9803
- }
9804
- return false;
9805
- });
9806
- var questionsByCategory = filterCategories.map(function (category) {
9807
- return {
9808
- category: category,
9809
- questions: inputData.questions.filter(function (question) {
9810
- return question.category.name === category.name;
9811
- })
9812
- };
9813
- });
9814
- return questionsByCategory;
9815
- };
9816
- var formatTimeSecond = function formatTimeSecond(duration, t) {
9817
- duration = Math.round(duration);
9818
- return "" + (duration < 60 ? "" + duration + t("seconds") : t("mins_mins_seconds_seconds", {
9819
- mins: Math.floor(duration / 60),
9820
- seconds: duration % 60
9821
- }));
9822
- };
9823
-
9824
9866
  var iconStarQuestion = function iconStarQuestion(_ref) {
9825
9867
  var _ref$width = _ref.width,
9826
9868
  width = _ref$width === void 0 ? "15" : _ref$width,
@@ -10110,7 +10152,7 @@ function CreateNewQuestionDialog(_ref) {
10110
10152
  padding: "24px 24px 40px 24px"
10111
10153
  }, React.createElement(Stack, null, React.createElement("label", {
10112
10154
  htmlFor: "questions",
10113
- className: stylesGlobal['form-label'] + " " + styles$2['form-label-dialog']
10155
+ className: styleGlobal['form-label'] + " " + styles$2['form-label-dialog']
10114
10156
  }, "\uC9C8\uBB38\uD560 \uBB38\uC81C"), React.createElement(Field, {
10115
10157
  as: "select",
10116
10158
  id: "questions",
@@ -10118,7 +10160,7 @@ function CreateNewQuestionDialog(_ref) {
10118
10160
  style: {
10119
10161
  width: "100%"
10120
10162
  },
10121
- className: "" + stylesGlobal['form-select']
10163
+ className: "" + styleGlobal['form-select']
10122
10164
  }, questions === null || questions === void 0 ? void 0 : questions.map(function (question) {
10123
10165
  return React.createElement("option", {
10124
10166
  value: question === null || question === void 0 ? void 0 : question.id
@@ -10127,7 +10169,7 @@ function CreateNewQuestionDialog(_ref) {
10127
10169
  }));
10128
10170
  }))), React.createElement(Stack, null, React.createElement("label", {
10129
10171
  htmlFor: "content-question",
10130
- className: stylesGlobal['form-label'] + " " + styles$2['form-label-dialog']
10172
+ className: styleGlobal['form-label'] + " " + styles$2['form-label-dialog']
10131
10173
  }, "\uC9C8\uBB38 \uB0B4\uC6A9"), React.createElement(Box, {
10132
10174
  position: 'relative',
10133
10175
  display: 'flex',
@@ -10140,7 +10182,7 @@ function CreateNewQuestionDialog(_ref) {
10140
10182
  },
10141
10183
  name: "content",
10142
10184
  placeholder: "\uBB38\uC81C\uAC00 \uC5B4\uB824\uC6CC\uC694",
10143
- className: stylesGlobal['form-control']
10185
+ className: styleGlobal['form-control']
10144
10186
  }), (errors === null || errors === void 0 ? void 0 : errors.content) && React.createElement(Box, {
10145
10187
  position: 'absolute',
10146
10188
  right: 0,
@@ -10210,9 +10252,9 @@ function MyAnswer(_ref) {
10210
10252
  bgcolor: "#F9FAFB",
10211
10253
  flexDirection: "row",
10212
10254
  padding: "12px",
10213
- className: styles$2["myAnswerItem"] + " " + stylesGlobal["noGutters"]
10255
+ className: styles$2["myAnswerItem"] + " " + styleGlobal["noGutters"]
10214
10256
  }, React.createElement("div", {
10215
- className: stylesGlobal["custom-col-2"],
10257
+ className: styleGlobal["custom-col-2"],
10216
10258
  style: {
10217
10259
  display: "flex",
10218
10260
  gap: "4px"
@@ -10224,7 +10266,7 @@ function MyAnswer(_ref) {
10224
10266
  color: "#97A1AF"
10225
10267
  }
10226
10268
  }, "\uBB38\uC81C \uBC88\uD638")), React.createElement("div", {
10227
- className: stylesGlobal["custom-col-2"],
10269
+ className: styleGlobal["custom-col-2"],
10228
10270
  style: {
10229
10271
  display: "flex",
10230
10272
  gap: "4px"
@@ -10236,7 +10278,7 @@ function MyAnswer(_ref) {
10236
10278
  color: "#97A1AF"
10237
10279
  }
10238
10280
  }, "\uC815\uB2F5")), React.createElement("div", {
10239
- className: stylesGlobal["custom-col-2"],
10281
+ className: styleGlobal["custom-col-2"],
10240
10282
  style: {
10241
10283
  display: "flex",
10242
10284
  gap: "4px"
@@ -10248,7 +10290,7 @@ function MyAnswer(_ref) {
10248
10290
  color: "#97A1AF"
10249
10291
  }
10250
10292
  }, "\uD480\uC774 \uC2DC\uAC04")), React.createElement("div", {
10251
- className: stylesGlobal["custom-col-2"],
10293
+ className: styleGlobal["custom-col-2"],
10252
10294
  style: {
10253
10295
  display: "flex",
10254
10296
  alignItems: "center",
@@ -10261,7 +10303,7 @@ function MyAnswer(_ref) {
10261
10303
  color: "#97A1AF"
10262
10304
  }
10263
10305
  }, "\uC0C1\uC704\uAD8C \uBE44\uAD50")), React.createElement("div", {
10264
- className: stylesGlobal["custom-col-2"],
10306
+ className: styleGlobal["custom-col-2"],
10265
10307
  style: {
10266
10308
  display: "flex",
10267
10309
  alignItems: "center",
@@ -10296,9 +10338,9 @@ function MyAnswer(_ref) {
10296
10338
  } : {},
10297
10339
  key: question.id
10298
10340
  }, React.createElement("div", {
10299
- className: styles$2["myAnswerItem"] + " " + stylesGlobal["noGutters"]
10341
+ className: styles$2["myAnswerItem"] + " " + styleGlobal["noGutters"]
10300
10342
  }, React.createElement("div", {
10301
- className: stylesGlobal["custom-col-2"],
10343
+ className: styleGlobal["custom-col-2"],
10302
10344
  style: {
10303
10345
  display: "flex",
10304
10346
  alignItems: "center",
@@ -10308,7 +10350,7 @@ function MyAnswer(_ref) {
10308
10350
  }, question.isStar ? React.createElement(iconStarQuestion, null) : React.createElement(iconNoStarQuestion, null), React.createElement("span", {
10309
10351
  className: styles$2["questionOrder"]
10310
10352
  }, question.questionOrder + 1, "\uBC88")), React.createElement("div", {
10311
- className: stylesGlobal["custom-col-2"],
10353
+ className: styleGlobal["custom-col-2"],
10312
10354
  style: {
10313
10355
  display: "flex",
10314
10356
  alignItems: "center",
@@ -10321,7 +10363,7 @@ function MyAnswer(_ref) {
10321
10363
  }, "\uC624\uB2F5")), question.selectedAnswers === "" && React.createElement(Fragment$1, null, React.createElement(iconNoGrass, null), React.createElement("span", {
10322
10364
  className: styles$2["answerNograss"]
10323
10365
  }, "\uD480\uC774 \uC5C6\uC74C"))), React.createElement("div", {
10324
- className: stylesGlobal["custom-col-2"],
10366
+ className: styleGlobal["custom-col-2"],
10325
10367
  style: {
10326
10368
  display: "flex",
10327
10369
  alignItems: "center"
@@ -10337,7 +10379,7 @@ function MyAnswer(_ref) {
10337
10379
  },
10338
10380
  className: styles$2["answerNoTime"]
10339
10381
  }, "\uC2DC\uAC04 \uC5C6\uC74C")), React.createElement("div", {
10340
- className: stylesGlobal["custom-col-2"],
10382
+ className: styleGlobal["custom-col-2"],
10341
10383
  style: {
10342
10384
  display: "flex",
10343
10385
  alignItems: "center"
@@ -10354,7 +10396,7 @@ function MyAnswer(_ref) {
10354
10396
  },
10355
10397
  className: styles$2["answerNoTime"]
10356
10398
  }, "-")), React.createElement("div", {
10357
- className: stylesGlobal["custom-col-2"],
10399
+ className: styleGlobal["custom-col-2"],
10358
10400
  style: {
10359
10401
  display: "flex",
10360
10402
  alignItems: "center"
@@ -10370,7 +10412,7 @@ function MyAnswer(_ref) {
10370
10412
  },
10371
10413
  className: styles$2["answerNoTime"]
10372
10414
  }, "\uC2DC\uAC04 \uC5C6\uC74C")), isStudent && React.createElement("div", {
10373
- className: stylesGlobal["custom-col-2"],
10415
+ className: styleGlobal["custom-col-2"],
10374
10416
  style: {
10375
10417
  display: "flex",
10376
10418
  alignItems: "center",
@@ -10894,7 +10936,7 @@ function CreateNewQuestionDialog$1(_ref) {
10894
10936
  var errors = _ref2.errors;
10895
10937
  return React.createElement(Form, null, React.createElement("label", {
10896
10938
  htmlFor: "content-question",
10897
- className: stylesGlobal['form-label'] + " " + styles$2['form-label-dialog']
10939
+ className: styleGlobal['form-label'] + " " + styles$2['form-label-dialog']
10898
10940
  }, "\uC9C8\uBB38 \uB0B4\uC6A9"), React.createElement(Box, {
10899
10941
  position: 'relative',
10900
10942
  display: 'flex',
@@ -10907,7 +10949,7 @@ function CreateNewQuestionDialog$1(_ref) {
10907
10949
  },
10908
10950
  name: "content",
10909
10951
  placeholder: "\uBB38\uC81C\uAC00 \uC5B4\uB824\uC6CC\uC694",
10910
- className: stylesGlobal['form-control']
10952
+ className: styleGlobal['form-control']
10911
10953
  }), (errors === null || errors === void 0 ? void 0 : errors.content) && React.createElement(Box, {
10912
10954
  position: 'absolute',
10913
10955
  right: 0,
@@ -11142,6 +11184,7 @@ var ExamResultV2 = function ExamResultV2(_ref) {
11142
11184
  var label = _ref2.label,
11143
11185
  value = _ref2.value;
11144
11186
  return React.createElement(Button, {
11187
+ className: styleGlobal["truncate"],
11145
11188
  disableTouchRipple: true,
11146
11189
  sx: {
11147
11190
  fontSize: "14px",
@@ -11161,7 +11204,7 @@ var ExamResultV2 = function ExamResultV2(_ref) {
11161
11204
  }, React.createElement("div", {
11162
11205
  className: styles$2["pdfBtnBox"]
11163
11206
  }, React.createElement("button", {
11164
- className: styles$2["pdfBtn"],
11207
+ className: styles$2["pdfBtn"] + " " + styleGlobal["truncate"],
11165
11208
  onClick: handleExportPdf
11166
11209
  }, React.createElement(iconPrintFill, null), React.createElement("p", null, t("print"))))))), React.createElement(Grid, {
11167
11210
  item: true,