touchstudy-core 0.1.27 → 0.1.28

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.
@@ -2145,7 +2145,7 @@ var download$1 = "Download";
2145
2145
  var full_exam$1 = "Full exam";
2146
2146
  var sexual$1 = "Sexual";
2147
2147
  var course$1 = "Course";
2148
- var etc$1 = "etc";
2148
+ var etc$1 = "Etc";
2149
2149
  var consultation_category$1 = "Consultation Category";
2150
2150
  var points$1 = "{{number}} points";
2151
2151
  var number_of_people$1 = "{{ number }} students";
@@ -3838,12 +3838,13 @@ var InputChat = function InputChat(_ref) {
3838
3838
  variant: "outlined",
3839
3839
  component: "label",
3840
3840
  fullWidth: true,
3841
+ disabled: isCompleted,
3841
3842
  sx: {
3842
3843
  display: "flex",
3843
3844
  gap: "8px",
3844
3845
  padding: "12px !important",
3845
- borderColor: "#5458D5",
3846
- borderWidth: isCompleted ? 0 : "1px"
3846
+ borderColor: isCompleted ? "transparent" : "#5458D5",
3847
+ borderWidth: "1px"
3847
3848
  }
3848
3849
  }, React.createElement(iconPlusCircle, null), React.createElement(Typography, {
3849
3850
  fontWeight: 700,
@@ -3885,6 +3886,7 @@ var ChatHeader = function ChatHeader(_ref) {
3885
3886
  examTitle = _ref.examTitle,
3886
3887
  category = _ref.category,
3887
3888
  score = _ref.score,
3889
+ totalScore = _ref.totalScore,
3888
3890
  courseId = _ref.courseId,
3889
3891
  questionOrder = _ref.questionOrder,
3890
3892
  conversationId = _ref.conversationId,
@@ -3937,7 +3939,7 @@ var ChatHeader = function ChatHeader(_ref) {
3937
3939
  fontSize: "14px",
3938
3940
  lineHeight: "16.71px",
3939
3941
  color: "#5458D5"
3940
- }, teacherName)), !category && React.createElement(Box, {
3942
+ }, teacherName)), !!examTitle && React.createElement(Box, {
3941
3943
  display: "flex",
3942
3944
  alignItems: "start",
3943
3945
  color: "#5458D5",
@@ -3962,7 +3964,7 @@ var ChatHeader = function ChatHeader(_ref) {
3962
3964
  sx: {
3963
3965
  color: "#97A1AF"
3964
3966
  }
3965
- }, (!!filterDurationExam.hours() ? filterDurationExam.hours() + " " + t("hour") : "") + " " + (!!filterDurationExam.minutes() ? filterDurationExam.minutes() + " " + t("minute") : "") + " " + (!!filterDurationExam.seconds() ? filterDurationExam.seconds() + " " + t("second") : "")))), !category ? React.createElement(Box, {
3967
+ }, (!!filterDurationExam.hours() ? filterDurationExam.hours() + " " + t("hour") : "") + " " + (!!filterDurationExam.minutes() ? filterDurationExam.minutes() + " " + t("minute") : "") + " " + (!!filterDurationExam.seconds() ? filterDurationExam.seconds() + " " + t("second") : "")))), React.createElement(Box, {
3966
3968
  display: "flex",
3967
3969
  alignItems: "end",
3968
3970
  gap: "6px",
@@ -3991,13 +3993,13 @@ var ChatHeader = function ChatHeader(_ref) {
3991
3993
  lineHeight: "14.32px",
3992
3994
  color: "#CED2DA"
3993
3995
  }, "/", t("points", {
3994
- number: 100
3996
+ number: totalScore
3995
3997
  }))), React.createElement(Typography, {
3996
3998
  fontWeight: 500,
3997
3999
  fontSize: "12px",
3998
4000
  lineHeight: "14.32px",
3999
4001
  color: "#97A1AF"
4000
- }, utcToLocalTime(createdAt, t("date_time_format")))) : React.createElement(Box, {
4002
+ }, utcToLocalTime(createdAt, t("date_time_format"))), !!category && React.createElement(Box, {
4001
4003
  display: "flex",
4002
4004
  alignItems: "end",
4003
4005
  gap: "16px",
@@ -4012,7 +4014,7 @@ var ChatHeader = function ChatHeader(_ref) {
4012
4014
  fontSize: "14px",
4013
4015
  lineHeight: "14.32px",
4014
4016
  color: "#5458D5"
4015
- }, t("" + category)))) : React.createElement(Grid, {
4017
+ }, t("" + category))))) : React.createElement(Grid, {
4016
4018
  item: true,
4017
4019
  xs: 12,
4018
4020
  borderTop: "1px solid #E4E7EC",
@@ -4045,17 +4047,32 @@ var ChatHeader = function ChatHeader(_ref) {
4045
4047
  alignItems: "center",
4046
4048
  gap: "24px",
4047
4049
  color: "#5458D5"
4048
- }, examTitle && React.createElement(Typography, {
4050
+ }, examTitle ? React.createElement(Typography, {
4049
4051
  fontWeight: 600,
4050
4052
  fontSize: "12px",
4051
4053
  lineHeight: "14.32px"
4052
- }, examTitle), React.createElement(Typography, {
4054
+ }, examTitle) : React.createElement(Box, {
4055
+ display: "flex",
4056
+ alignItems: "end",
4057
+ gap: "16px",
4058
+ flexDirection: "row"
4059
+ }, React.createElement(Typography, {
4060
+ fontWeight: 600,
4061
+ fontSize: "11px",
4062
+ lineHeight: "14.32px",
4063
+ color: "#5458D5"
4064
+ }, t("consultation_category")), React.createElement(Typography, {
4065
+ fontWeight: 700,
4066
+ fontSize: "14px",
4067
+ lineHeight: "14.32px",
4068
+ color: "#5458D5"
4069
+ }, t("" + category))), questionOrder != undefined && React.createElement(Typography, {
4053
4070
  fontWeight: 700,
4054
4071
  fontSize: "14px",
4055
4072
  lineHeight: "16.71px"
4056
- }, questionOrder != undefined ? t("problem_number_question", {
4073
+ }, t("problem_number_question", {
4057
4074
  number: questionOrder + 1
4058
- }) : t("class_inquiry"))), !isCompleted ? React.createElement("div", {
4075
+ }))), !isCompleted ? React.createElement("div", {
4059
4076
  onClick: toggleDialog
4060
4077
  }, React.createElement(Box, {
4061
4078
  padding: "8px 12px",
@@ -4592,6 +4609,7 @@ var useChatContainer = function useChatContainer(props) {
4592
4609
  examTitle: selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.examTitle,
4593
4610
  courseId: selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.courseId,
4594
4611
  score: selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.score,
4612
+ totalScore: selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.totalScore,
4595
4613
  questionOrder: selectedConversation === null || selectedConversation === void 0 ? void 0 : (_selectedConversation3 = selectedConversation.question) === null || _selectedConversation3 === void 0 ? void 0 : _selectedConversation3.questionOrder,
4596
4614
  category: selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.category,
4597
4615
  conversationId: selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.id,
@@ -8544,16 +8562,27 @@ var useExamResult = function useExamResult(searchParam, navigate) {
8544
8562
  }];
8545
8563
  }, [JSON.stringify(timelyOrderQuestion), dataChartIndex]);
8546
8564
  var handleExportPdf = function handleExportPdf() {
8547
- var canvas = document.querySelector("#canvas");
8548
- if (!canvas) return;
8549
- html2canvas(canvas).then(function (canvas) {
8565
+ try {
8566
+ var canvas = document.querySelector("#canvas");
8567
+ var headerCanvas = document.querySelector("#header-canvas");
8568
+ if (!canvas || !headerCanvas) return Promise.resolve();
8550
8569
  var doc = new jsPDF();
8551
8570
  var imgWidth = 208;
8552
- var imgHeight = canvas.height * imgWidth / canvas.width;
8553
- var imgData = canvas.toDataURL('image/png');
8554
- doc.addImage(imgData, 'PNG', 0, 0, imgWidth, imgHeight);
8555
- doc.save("download.pdf");
8556
- });
8571
+ var bodyWidth = 202;
8572
+ return Promise.resolve(html2canvas(headerCanvas)).then(function (header) {
8573
+ var imgHeaderHeight = header.height * imgWidth / header.width;
8574
+ var imgHeaderData = header.toDataURL('image/png');
8575
+ doc.addImage(imgHeaderData, 'PNG', 0, 0, imgWidth, imgHeaderHeight);
8576
+ return Promise.resolve(html2canvas(canvas)).then(function (body) {
8577
+ var imgBodyHeight = body.height * bodyWidth / body.width;
8578
+ var imgBodyData = body.toDataURL('image/png');
8579
+ doc.addImage(imgBodyData, 'PNG', 4, imgHeaderHeight, bodyWidth, imgBodyHeight);
8580
+ doc.save("download.pdf");
8581
+ });
8582
+ });
8583
+ } catch (e) {
8584
+ return Promise.reject(e);
8585
+ }
8557
8586
  };
8558
8587
  return {
8559
8588
  series: series,
@@ -9688,7 +9717,7 @@ Object.defineProperty(exports,"__esModule",{value:!0});var _typeof="function"==t
9688
9717
 
9689
9718
  var ReactApexChart = unwrapExports(reactApexcharts_min);
9690
9719
 
9691
- 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","inputRange":"_1PMz8","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"};
9720
+ 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"};
9692
9721
 
9693
9722
  var formatDataMyAnswer = function formatDataMyAnswer(inputData, categories) {
9694
9723
  var uniqueCategories = new Set();
@@ -10688,13 +10717,12 @@ function GradesByTerritory(_ref) {
10688
10717
  }, item.name), React.createElement("div", {
10689
10718
  className: styles$2["percent"]
10690
10719
  }, React.createElement("span", null, item.percentageAmongStudents.toFixed(2), "%"), React.createElement("span", null, item.totalCorrectQuestions, "/", item.totalQuestions, "\uBB38\uC81C"))), React.createElement("div", {
10691
- className: styles$2["inputRange"]
10692
- }, React.createElement("input", {
10693
- min: 0,
10694
- max: 100,
10695
- type: "range",
10696
- value: item.percentageAmongStudents,
10697
- disabled: true
10720
+ className: styles$2["slider"]
10721
+ }, React.createElement("span", {
10722
+ className: styles$2["track"],
10723
+ style: {
10724
+ left: item.percentageAmongStudents + "%"
10725
+ }
10698
10726
  })));
10699
10727
  }), openProblem.problem4 && !data.length && React.createElement("div", {
10700
10728
  className: styles$2["noData"]
@@ -10904,6 +10932,7 @@ var ExamResultV2 = function ExamResultV2(_ref) {
10904
10932
  longTimeSpend = _useExamResult.longTimeSpend,
10905
10933
  effectSize = _useExamResult.effectSize,
10906
10934
  categoryResponses = _useExamResult.categoryResponses,
10935
+ handleExportPdf = _useExamResult.handleExportPdf,
10907
10936
  setOpenProblem = _useExamResult.setOpenProblem,
10908
10937
  handlePrevChart = _useExamResult.handlePrevChart,
10909
10938
  handleNextChart = _useExamResult.handleNextChart;
@@ -10922,7 +10951,8 @@ var ExamResultV2 = function ExamResultV2(_ref) {
10922
10951
  }
10923
10952
  }, React.createElement(Grid, {
10924
10953
  container: true,
10925
- padding: "24px"
10954
+ padding: "24px",
10955
+ id: "header-canvas"
10926
10956
  }, React.createElement(Grid, {
10927
10957
  item: true
10928
10958
  }, resultDatas.courseName && React.createElement(Stack, null, React.createElement(Typography, {
@@ -11010,7 +11040,8 @@ var ExamResultV2 = function ExamResultV2(_ref) {
11010
11040
  }
11011
11041
  }, resultDatas === null || resultDatas === void 0 ? void 0 : resultDatas.teacherName)))))), React.createElement(Grid, {
11012
11042
  container: true,
11013
- padding: "24px"
11043
+ padding: "24px",
11044
+ className: "position-relative overflow-hidden"
11014
11045
  }, React.createElement(Grid, {
11015
11046
  item: true,
11016
11047
  xs: 12
@@ -11046,12 +11077,12 @@ var ExamResultV2 = function ExamResultV2(_ref) {
11046
11077
  })), React.createElement(Stack, {
11047
11078
  padding: '12px 24px',
11048
11079
  alignItems: "end",
11049
- bgcolor: "#F9FAFB",
11050
- borderBottom: '1px solid #E4E7EC'
11080
+ bgcolor: "#F9FAFB"
11051
11081
  }, React.createElement("div", {
11052
11082
  className: styles$2["pdfBtnBox"]
11053
11083
  }, React.createElement("button", {
11054
- className: styles$2["pdfBtn"]
11084
+ className: styles$2["pdfBtn"],
11085
+ onClick: handleExportPdf
11055
11086
  }, React.createElement(iconPrintFill, null), React.createElement("p", null, t("print"))))))), React.createElement(Grid, {
11056
11087
  item: true,
11057
11088
  xs: 12
@@ -11103,6 +11134,71 @@ var ExamResultV2 = function ExamResultV2(_ref) {
11103
11134
  data: categoryResponses,
11104
11135
  openProblem: openProblem,
11105
11136
  changeOpen: setOpenProblem
11137
+ }))), React.createElement(Grid, {
11138
+ item: true,
11139
+ xs: 12,
11140
+ className: "position-absolute",
11141
+ sx: {
11142
+ zIndex: -1,
11143
+ width: "100%"
11144
+ },
11145
+ id: "canvas"
11146
+ }, React.createElement(CustomTabPanel, {
11147
+ value: selected,
11148
+ index: 0
11149
+ }, React.createElement(MyAnswer, {
11150
+ data: resultDatas,
11151
+ categories: categoryResponses,
11152
+ isStudent: isStudent
11153
+ })), React.createElement(CustomTabPanel, {
11154
+ value: selected,
11155
+ index: 1
11156
+ }, React.createElement("div", {
11157
+ className: styles$2["compareChart"]
11158
+ }, React.createElement("div", {
11159
+ className: styles$2["prevChart"] + " " + (dataChartIndex > 0 && "pointer"),
11160
+ onClick: handlePrevChart
11161
+ }, React.createElement(iconBtnPrevChart, null)), React.createElement("div", {
11162
+ className: styles$2["chart"] + " sr-line-chart"
11163
+ }, React.createElement("div", null, React.createElement(ReactApexChart, {
11164
+ height: 389,
11165
+ options: chartOptions,
11166
+ series: series
11167
+ }))), React.createElement("div", {
11168
+ className: styles$2["nextChart"] + " " + (dataChartIndex < timelyOrderQuestion.length - 1 && "pointer"),
11169
+ onClick: handleNextChart
11170
+ }, React.createElement(iconBtnNextChart, null)))), React.createElement(CustomTabPanel, {
11171
+ value: selected,
11172
+ index: 2
11173
+ }, React.createElement(CompareGrass, {
11174
+ effectSize: effectSize
11175
+ })), React.createElement(CustomTabPanel, {
11176
+ value: selected,
11177
+ index: 3
11178
+ }, React.createElement(TrickyProblem, {
11179
+ data: resultDatas,
11180
+ openProblem: _extends({}, openProblem, {
11181
+ problem1: true
11182
+ }),
11183
+ changeOpen: setOpenProblem
11184
+ }), React.createElement(Vulnerable, {
11185
+ data: resultDatas,
11186
+ openProblem: _extends({}, openProblem, {
11187
+ problem3: true
11188
+ }),
11189
+ changeOpen: setOpenProblem
11190
+ }), React.createElement(ProtractedProblem, {
11191
+ data: longTimeSpend,
11192
+ openProblem: _extends({}, openProblem, {
11193
+ problem2: true
11194
+ }),
11195
+ changeOpen: setOpenProblem
11196
+ }), React.createElement(GradesByTerritory, {
11197
+ data: categoryResponses,
11198
+ openProblem: _extends({}, openProblem, {
11199
+ problem4: true
11200
+ }),
11201
+ changeOpen: setOpenProblem
11106
11202
  })))), React.createElement(CreateNewQuestionDialog$1, {
11107
11203
  examSessionId: resultDatas === null || resultDatas === void 0 ? void 0 : resultDatas.examSessionId,
11108
11204
  handleCreateQuestion: handleCreateQuestion,
@@ -11121,13 +11217,6 @@ var getLocalDayOfWeek = function getLocalDayOfWeek(utcDateTime, dayOfWeek) {
11121
11217
  var currentDayOfWeek = moment.utc(utcDateTime).weekday();
11122
11218
  var diff = dayOfWeek - currentDayOfWeek;
11123
11219
  if (diff < 0) diff += 7;
11124
- console.log({
11125
- utcDateTime: utcDateTime,
11126
- dayOfWeek: dayOfWeek,
11127
- currentDayOfWeek: currentDayOfWeek,
11128
- localDayOfWeek: moment.utc(utcDateTime).add(diff, "days").local().weekday(),
11129
- day: moment.utc(utcDateTime).add(diff, "days").local().format("YYYY-MMM-DD HH:mm:ss")
11130
- });
11131
11220
  return moment.utc(utcDateTime).add(diff, "days").local().weekday();
11132
11221
  };
11133
11222
  var getUtcDayOfWeek = function getUtcDayOfWeek(localDateTime, dayOfWeek) {