Testing.cshtml 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450
  1. 
  2. @{
  3. ViewBag.Title = "Learning";
  4. Layout = "~/Views/Shared/_LayoutLearning.cshtml";
  5. }
  6. @using NEducation.NEduService;
  7. @using NEducation.Code;
  8. @using NEducation.Content.Texts;
  9. @using NEducation.Controllers;
  10. @model NEducation.Models.VocabularyModel
  11. <link href="~/Content/assets/css/learning-complete.css" rel="stylesheet" type="text/css" />
  12. <link type="text/css" rel="stylesheet" href="~/Content/assets/css/animate.css" />
  13. <link href="~/Content/assets/css/kontext.css" rel="stylesheet" type="text/css" />
  14. <link href="~/Content/assets/css/testing.css" rel="stylesheet" type="text/css" />
  15. @*<link rel="stylesheet" href="~/Content/assets/css/learning-listening.css" />*@
  16. @*<link href="~/Content/assets/css/learning-flashcard.css" rel="stylesheet" type="text/css" />*@
  17. <link href="~/Content/assets/css/animate.css" rel="stylesheet" type="text/css" />
  18. <input type='hidden' id='hidden-userid' value='477879' />
  19. <input type='hidden' id='hidden-topicid' value='97' />
  20. <input type='hidden' id='hidden-parent' value='95' />
  21. <input type='hidden' id='hidden-parent-name' value='Voca' />
  22. <input type='hidden' id='hidden-topic-name' value='TestingResult' />
  23. <input type="hidden" id="back-link" value="/Voca/Lesson" msg="Bạn chắn chắn muốn thoát? Quá trình làm bài sẽ không được lưu." name="">
  24. @{
  25. //var listCorrect = question.answerTrue.Split(',');
  26. }
  27. <script type="text/javascript">
  28. $(document).ready(function () {
  29. $('.button-review, .button-learning-continue, .button-learning-relearn').click(function () {
  30. var isReview = $(this).attr('is_review');
  31. if (isReview == undefined || isReview != 1) {
  32. if ($(this).hasClass('button-learning-relearn')) {
  33. $('#learning-modal .learning-modal-btn a.learning-modal-btn-learning').text('@Lang.Relearn');
  34. $('#learning-modal .learning-modal-btn a.learning-modal-btn-testing').html('@Lang.Retest');
  35. } else {
  36. $('#learning-modal .learning-modal-btn a.learning-modal-btn-learning').text('Học tiếp');
  37. $('#learning-modal .learning-modal-btn a.learning-modal-btn-testing').text('Kiểm tra');
  38. }
  39. if ($(this).hasClass('button-learning-continue')) {
  40. var text = $(this).attr('text');
  41. if (text != undefined) {
  42. $('#learning-modal .learning-modal-btn a.learning-modal-btn-learning').text(text);
  43. }
  44. }
  45. $('#learning-modal .learning-modal-btn a.learning-modal-btn-result').css('display', 'none');
  46. } else {
  47. $('#learning-modal .learning-modal-btn a.learning-modal-btn-result').css('display', 'block');
  48. var resultLink = $(this).attr('result_link');
  49. $('#learning-modal .learning-modal-btn a.learning-modal-btn-result').attr('href', resultLink);
  50. $('#learning-modal .learning-modal-btn a.learning-modal-btn-learning').text('@Lang.Relearn');
  51. $('#learning-modal .learning-modal-btn a.learning-modal-btn-testing').html('@Lang.Retest');
  52. }
  53. var isTesting = $(this).attr('is_testing');
  54. if (isTesting != undefined && isTesting == 1) {
  55. $('#learning-modal .learning-modal-btn a.learning-modal-btn-learning').css('display', 'none');
  56. } else {
  57. $('#learning-modal .learning-modal-btn a.learning-modal-btn-learning').css('display', 'block');
  58. }
  59. var isUnknow = $(this).attr('is_unknow');
  60. var isFinish = $(this).attr('is_finish');
  61. var topic = $(this).attr('topic');
  62. var parent = $(this).attr('parent');
  63. $('#learning-modal-info').attr('is_unknow', isUnknow);
  64. $('#learning-modal-info').attr('is_finish', isFinish);
  65. $('#learning-modal-info').attr('is_review', isReview);
  66. $('#learning-modal-info').attr('topic', topic);
  67. $('#learning-modal-info').attr('parent', parent);
  68. $('#learning-modal').modal();
  69. if (isFinish == 1 && isUnknow == 0) {
  70. $('.learning-modal-btn-unknow').css('display', 'none');
  71. $('#learning-modal-btn-unknow-content').css('display', 'none');
  72. } else {
  73. $('.learning-modal-btn-unknow').css('display', 'block');
  74. if (isFinish == 0) {
  75. var unknowContent = $('#learning-modal-btn-unknow-content').attr('unfinish');
  76. } else {
  77. var unknowContent = $('#learning-modal-btn-unknow-content').attr('unknow');
  78. }
  79. $('.learning-modal-btn-unknow').text(unknowContent);
  80. }
  81. //testing link
  82. //var testingLink = $('.learning-modal-btn-testing').attr('link');
  83. //$('.learning-modal-btn-testing').attr('href', testingLink + '/' + topic + '-' + parent);
  84. });
  85. $('.button-learning-now').click(function () {
  86. var isReview = 0;
  87. var isUnknow = $(this).attr('is_unknow');
  88. var isFinish = $(this).attr('is_finish');
  89. if (isFinish == undefined) {
  90. isFinish = 1;
  91. }
  92. var topic = $(this).attr('topic');
  93. var parent = $(this).attr('parent');
  94. $('#learning-modal-info').attr('is_unknow', isUnknow);
  95. $('#learning-modal-info').attr('is_finish', isFinish);
  96. $('#learning-modal-info').attr('is_review', isReview);
  97. $('#learning-modal-info').attr('topic', topic);
  98. $('#learning-modal-info').attr('parent', parent);
  99. if (isFinish == 1 && isUnknow == 0) {
  100. $('.learning-modal-btn-unknow').css('display', 'none');
  101. $('#learning-modal-btn-unknow-content').css('display', 'none');
  102. } else {
  103. $('.learning-modal-btn-unknow').css('display', 'block');
  104. if (isFinish == 1) {
  105. var unknowContent = $('#learning-modal-btn-unknow-content').attr('unknow');
  106. } else {
  107. var unknowContent = $('#learning-modal-btn-unknow-content').attr('unfinish');
  108. }
  109. $('.learning-modal-btn-unknow').text(unknowContent);
  110. }
  111. $('#learning-question-modal').modal();
  112. });
  113. $('.button-learning').click(function () {
  114. var topic = $(this).attr('topic');
  115. var parent = $(this).attr('parent');
  116. $('#learning-modal-info').attr('topic', topic);
  117. $('#learning-modal-info').attr('parent', parent);
  118. var isUnknow = $(this).attr('is_unknow');
  119. var isFinish = $(this).attr('is_finish');
  120. if (isUnknow != undefined) {
  121. $('#learning-modal-info').attr('is_unknow', isUnknow);
  122. } else {
  123. isUnknow = 0;
  124. }
  125. if (isFinish != undefined) {
  126. $('#learning-modal-info').attr('is_finish', isFinish);
  127. } else {
  128. isFinish = 1;
  129. }
  130. if (isFinish == 1 && isUnknow == 0) {
  131. $('.learning-modal-btn-unknow').css('display', 'none');
  132. $('#learning-modal-btn-unknow-content').css('display', 'none');
  133. } else {
  134. $('.learning-modal-btn-unknow').css('display', 'block');
  135. if (isFinish == 1) {
  136. var unknowContent = $('#learning-modal-btn-unknow-content').attr('unknow');
  137. } else {
  138. var unknowContent = $('#learning-modal-btn-unknow-content').attr('unfinish');
  139. }
  140. $('.learning-modal-btn-unknow').text(unknowContent);
  141. }
  142. });
  143. });
  144. </script>
  145. <input type="hidden" name="" id="learning-modal-info" is_unknow="0" is_finish="1" is_review="0" topic="0" parent="0" />
  146. <script type="text/javascript">
  147. $(document).ready(function () {
  148. $('#learning-question-modal a').click(function () {
  149. var link = $(this).attr('link');
  150. var topic = $('#learning-modal-info').attr('topic');
  151. var parent = $('#learning-modal-info').attr('parent');
  152. var url = link + '/' + topic + '-' + parent;
  153. $('#learning-modal-form').attr('action', url);
  154. $('.learning-modal-btn-unknow').attr('href', (url + '-unknow'));
  155. $('.learning-modal-btn-all').attr('href', url);
  156. });
  157. });
  158. </script>
  159. <script type="text/javascript">
  160. $(document).ready(function () {
  161. $('.learning-modal-btn-choosing').click(function () {
  162. var topic = $('#learning-modal-info').attr('topic');
  163. var parent = $('#learning-modal-info').attr('parent');
  164. $.ajax({
  165. url: urlConfig("choose-learn-words"),
  166. data: {
  167. topic: topic,
  168. parent: parent
  169. },
  170. type: "POST"
  171. }).success(function (data) {
  172. if (data[0] != 0) {
  173. $('#modal-choose-word .choose-word-content-cover').html(data);
  174. $('#modal-choose-word').modal();
  175. }
  176. });
  177. });
  178. });
  179. </script>
  180. <script type="text/javascript">
  181. $(document).on('click', '.choose-word-title .choose-all .choose-word-check', function () {
  182. if ($(this).hasClass('word-checked')) {
  183. $(this).removeClass('word-checked');
  184. $('.choose-word-content .word-item .item-check input[type="checkbox"]').prop('checked', false);
  185. } else {
  186. $(this).addClass('word-checked');
  187. $('.choose-word-content .word-item .item-check input[type="checkbox"]').prop('checked', true);
  188. }
  189. $('.choose-word-content .word-item .item-check input[type="checkbox"]').trigger('change');
  190. });
  191. $(document).on('change', '.choose-word-content .word-item .item-check input[type="checkbox"]', function () {
  192. var total = $(".choose-word-content .word-item .item-check input[type='checkbox']").length;
  193. var totalCheck = $(".choose-word-content .word-item .item-check input[type='checkbox']:checked").length;
  194. if (total == totalCheck) {
  195. $(".choose-word-title .choose-all .choose-word-check").addClass('word-checked');
  196. } else {
  197. $(".choose-word-title .choose-all .choose-word-check").removeClass('word-checked');
  198. }
  199. $(".choose-word-title .number").text(totalCheck < 10 ? '0' + totalCheck : totalCheck);
  200. });
  201. </script>
  202. <!--******** AUDIO MAIN ******** -->
  203. <audio id="learning-main-audio">
  204. <source class="src" src="" type="audio/mpeg">
  205. </audio>
  206. <div class="testing-container">
  207. <!-- Process -->
  208. <div class="testing-process">
  209. <span class="testing-process-bar learning-main-process-value"></span>
  210. </div>
  211. <div class="testing-container-cover">
  212. <div class="testing-body">
  213. <div class="testing-body-cover" total="@Model.questions.Count">
  214. <div class="testing-countdown" id="testing-countdown">
  215. <span class="testing-countdown-number">15</span>
  216. <svg>
  217. <circle class="circle-shadow" r="16" cx="17" cy="17"></circle>
  218. <circle class="circle" r="16" cx="17" cy="17" stroke="url(#gradientPercent)" style="stroke-dashoffset: -101px;"></circle>
  219. <linearGradient id="gradientPercent" gradientUnits="userSpaceOnUse" x1="0" y1="0" x2="0" y2="34">
  220. <stop offset="0" style="stop-color:#F88600"></stop>
  221. <stop offset="0.5" style="stop-color:#FFB500"></stop>
  222. <stop offset="1" style="stop-color:#FAD300"></stop>
  223. </linearGradient>
  224. </svg>
  225. </div><!--pronounce - sound => word -->
  226. @for (int i = 0; i < Model.questions.Count; i++)
  227. {
  228. Question question = Model.questions[i];
  229. // multi choice
  230. var listCorrect = question.answerTrue.Split(',');
  231. <div class="testing-exercise @(@i == 0 ? " exercise-current" : "")" index="@i" questionId="@question.id" typeQuestion="guessing"
  232. correctAnswer="@question.answerTrue" time="15" type="4">
  233. <div class="testing-exercise-flashcard">
  234. <div class="flash-card-viewport">
  235. <div class="flash-card-box" id="learning-theory-box-@i" index="@i">
  236. <figure class="slide jbs-current">
  237. <div class="testing-exercise-content">
  238. <p class="testing-exercise-title">
  239. @*@NEducation.Content.Texts.Lang.QuestionBegin*@
  240. @question.description
  241. </p>
  242. <div class="testing-exercise-quesiton">
  243. @{ if (question.contentType == NEducation.Controllers.UtilsController.GetContentType.AUDIO_FILE ||
  244. question.contentType == NEducation.Controllers.UtilsController.GetContentType.AUDIO_LINK)
  245. {
  246. <div class="learning-theory-flashcard question-definition">
  247. <a class="card-content-sound main-sound-play" href="javascript:void(0)"
  248. sound_url="@(question.content)"></a>
  249. </div>
  250. }
  251. else if (question.contentType == UtilsController.GetContentType.VIDEO_LINK)
  252. {
  253. <iframe class="iframe-testing-video" width="100%" height="77%" src="@question.content" autoplay=false frameborder="0" allowfullscreen style="border-radius:10px;"></iframe>
  254. @*<video class="iframe-testing-video" src="https://www.youtube.com/embed/C6JyS88eUBA" style="width:100%; height:77%; border-radius:10px; padding:0 30% 0 30%" controls></video>*@
  255. @*<iframe class="iframe-testing-video" width="100%" height="77%" src="@question.content" frameborder="0" allowfullscreen></iframe>*@
  256. @*<div class="embed-responsive embed-responsive-4by3">
  257. <video id="iframe-testing-video" src="@question.content" style="width:100%; height:29%; border-radius:10px;" controls></video>
  258. </div>*@
  259. @*<video id="iframe-testing-video" width="100%" height="70%">
  260. <source src="@question.content" type="video/mp4">
  261. </video>*@
  262. @*<video class="iframe-testing-video" width="100%" height="77%" src="https://www.youtube.com/embed/C6JyS88eUBA" controls>
  263. <source src="https://www.youtube.com/embed/C6JyS88eUBA" type="video/mp4">
  264. </video>*@
  265. }
  266. else if (question.contentType == UtilsController.GetContentType.VIDEO_FILE)
  267. {
  268. <video class="iframe-testing-video" width="100%" height="77%" src="@question.content" controls>
  269. @*<source src="@question.content" type="video/mp4">*@
  270. </video>
  271. @*<iframe class="iframe-testing-video" width="100%" height="77%" src="@question.content" autoplay=false frameborder="0" allowfullscreen style="border-radius:10px;"></iframe>*@
  272. }
  273. else if (question.contentType == UtilsController.GetContentType.TEXT_TYPE)
  274. {
  275. <p class="question-definition">@question.content</p>
  276. }
  277. else if (question.contentType == UtilsController.GetContentType.PICTURE_FILE)
  278. {
  279. <img style="width:100%;height:75%;padding:0 30% 0 30%" src="@question.content" />
  280. }
  281. }
  282. </div>
  283. </div>
  284. </figure>
  285. <figure class="slide jbs-current">
  286. <div class="testing-exercise-result" img_url="" synset="400518641" word="1103">
  287. <div class="testing-exercise-result-cover">
  288. <div class="result-img">
  289. <img alt="img" src="@question.iconPath" />
  290. </div>
  291. <div class="result-content">
  292. <p class="result-content-label">
  293. @Lang.RightAnswer:
  294. @*Đáp án:*@
  295. </p>
  296. @for (int j = 0; j < listCorrect.Length; j++)
  297. {
  298. var correctAnswer = listCorrect[j] == "1" ? question.answer1 :
  299. listCorrect[j] == "2" ? question.answer2 :
  300. listCorrect[j] == "3" ? question.answer3 : question.answer4;
  301. <p class="result-content-text-main">
  302. @correctAnswer <span class="result-content-type">n</span>
  303. </p>
  304. }
  305. @*<p class="result-content-text-main">
  306. @question.answer1 <span class="result-content-type">n</span>
  307. </p>*@
  308. @*<p class="result-content-phonetic">/əˈkaʊntnt/</p>
  309. <p class="result-content-definition-vi">kế toán viên</p>
  310. <a class="result-content-sound main-sound-play" href="javascript:void(0)"
  311. sound_url="~/Content/assets/sounds/cg44dbx4srwzhlezrjskqaubkg25k2as3qjconqqk2q.mp3"></a>*@
  312. </div>
  313. </div>
  314. </div>
  315. </figure>
  316. </div>
  317. </div>
  318. </div>
  319. <div class="testing-exercise-answer ">
  320. <div class="answer-cover">
  321. <a class="answer-guessing" href="javascript:void(0)" val="1">
  322. <span class="guessing-text">@question.answer1</span>
  323. </a>
  324. <a class="answer-guessing" href="javascript:void(0)" val="2">
  325. <span class="guessing-text">@question.answer2</span>
  326. </a>
  327. <a class="answer-guessing" href="javascript:void(0)" val="3">
  328. <span class="guessing-text">@question.answer3</span>
  329. </a>
  330. <a class="answer-guessing" href="javascript:void(0)" val="4" hideanswer="@question.answer4">
  331. <span class="guessing-text">@question.answer4</span>
  332. </a>
  333. </div>
  334. </div>
  335. <input type='hidden' id='hidden-userid' value='477879' />
  336. </div>
  337. }
  338. </div>
  339. </div>
  340. <style>
  341. @@media (max-width: 768px) {
  342. .testing-exercise-answer .answer-cover {
  343. width: 100%;
  344. }
  345. }
  346. </style>
  347. </div>
  348. </div>
  349. <!--******** AUDIO MAIN ******** -->
  350. <audio id="learning-main-audio">
  351. <source class="src" src="" type="audio/mpeg">
  352. </audio>
  353. <audio id="audio-answer-right">
  354. <source class="src" src="~/Content/assets/sounds/right_answer.mp3" type="audio/mpeg">
  355. </audio>
  356. <audio id="audio-answer-wrong">
  357. <source class="src" src="~/Content/assets/sounds/wrong_answer.mp3" type="audio/mpeg">
  358. </audio>
  359. <audio id="normal-time-sound">
  360. <source class="src" src="~/Content/assets/sounds/second_tick.mp3" type="audio/mpeg">
  361. </audio>
  362. <audio id="warning-time-sound">
  363. <source class="src" src="~/Content/assets/sounds/clock_tick.mp3" type="audio/mpeg">
  364. </audio>
  365. <script type="text/javascript" src="~/Content/assets/js/voca/box-slider.jquery.js"></script>
  366. <script type="text/javascript" src="~/Content/assets/js/voca/box-slider-fx-scroll-3d.js"></script>
  367. <script type="text/javascript" src="~/Content/assets/js/voca/kontext.js"></script>
  368. <script type="text/javascript" src="~/Content/assets/js/voca/learning-main.js"></script>
  369. <script type="text/javascript" src="~/Content/assets/js/voca/testing.js"></script>
  370. <!-- Modal -->
  371. <div class="modal fade" id="modal-pin-word" tabindex="-1"></div>
  372. <script>
  373. runCountdown();
  374. updateProcess();
  375. </script>