can see the reports for multiple attempts
This commit is contained in:
parent
b2643f1a10
commit
fc8095c263
|
|
@ -1,72 +1,72 @@
|
|||
robots.txt,1761396900570,bfe106a3fb878dc83461c86818bf74fc1bdc7f28538ba613cd3e775516ce8b49
|
||||
manifest.json,1761396900568,a9350a49aaac9fe94d3dd77b8270cc998c04ab97944a606189675022431faa51
|
||||
favicon.svg,1761396900561,a2a4880301751061a600b0bfc5c26fc413aed41e581516c4fa976bcb7fff6663
|
||||
service-worker.js,1762373005221,e89d758535bc28af10a1a7a13a392c0923ac09549348a2afe7bd607dae1c30d5
|
||||
precache-manifest.07407fb0dcc2abd9fbac7665e195a222.js,1762373005221,517c7e806b96b44d6a56289733a0abaccff457063bea65e9f68c7ceb297c25e7
|
||||
index.html,1762373005174,bcf2628dbda59347edbc800af1e25010d928a51f0450671afbcd121e0ed19408
|
||||
static/media/tru-fals-icon.d0b962d8.svg,1762373005146,a1deab7e5db8e8a94a9c5812dcde5f8cbfbe5da790da8500bf106980b9c79c33
|
||||
asset-manifest.json,1762373005222,af38b16faa20b389480ebc6d415830bdb4c0263a0d23f336306b20c235191ec4
|
||||
static/media/questions-icon.3d3c1aaf.svg,1762373005142,197f459a359b00c1c44b6ddd71cbc9160f593d1fe08534e3711e9d72a2956ef1
|
||||
static/media/sub-ques-icon.366b4f1e.svg,1762373005147,8e397611007ec5db7581a4c1bcca006950390ddf652cae209bb3973a645af425
|
||||
static/media/student-engaged.53fb7b0b.svg,1762373005142,5f8e01d1a5efcbdf3aa00ed07de843ab84404a28b672ca91f4d70d89fa8b37cf
|
||||
static/media/practice.f05e6f00.svg,1762373005137,13b094bcbbb8c50906b1ee0ce68305059e99319464dd4147b4c2194dbb460475
|
||||
static/media/translate.610ad011.svg,1762373005147,c06f8a3d0c976b02429ce805d8a4944571ab0128ed2ce49c2d3ca134511ed120
|
||||
static/media/PracticeKiaLogo.a8336af5.svg,1762373005104,1a592518bcfabb2f86669d06ae2fb7b2948bbdbfaf5a80d138ab30f4e482a0f8
|
||||
static/media/performance.88855f12.svg,1762373005138,03fc1b19005084049382091745d3f1f29a447763091ad4a9bc5d097c338671c9
|
||||
static/media/question.0c505ed9.svg,1762373005135,29938066f93476c487414bb7a5dd5227d891c8ab8e115a74a7e7ffccd8d87b36
|
||||
static/media/perf-icon.1597a235.svg,1762373005143,7183482b785de425506f49deb27bba02e906132ac7ce5af01f7da8452ef64f28
|
||||
static/media/practice-icon.bf603115.svg,1762373005142,27b6a729d91914d899f4b3c1f817e26ac58d2ec0be54dc9b93c01f28adcdd00c
|
||||
static/media/mul-cho-icon.b3dc9ea9.svg,1762373005146,e8edbceb0eb49f7629cf0b8edf599f9347acbf0c6d1df2fa6145cbed03f37e1f
|
||||
static/media/OdiSVGlogo.f0834bb1.svg,1762373005103,3ec1cab31a32db378894d796afedaee7c35f8ff99dfb1039b0bb757225a47235
|
||||
static/media/mul-res-icon.8ef3b097.svg,1762373005143,1f0a79350cb5546361ef02af1657ad36efeff833fd7bb61db88a20e127a290b4
|
||||
static/media/locale-icon.b3596424.svg,1762373005142,68618c76952aa4c5f2623bb010514871688960bb3b9edbcda0eab7eb75442054
|
||||
static/media/KaTeX_Typewriter-Regular.b8b8393d.woff2,1762373005134,54a0126379ac9b84c5745f17cd0ac9bf11532ea04c39d387d165a71caf77f8d2
|
||||
static/media/KaTeX_Size4-Regular.61522cd3.woff2,1762373005133,65378bc44e4f908ff3e7d3b5a36f1351cd29dbed446fcf86ebe0655afefe9ea8
|
||||
static/media/quizexam.5545802e.svg,1762373005136,dfc1278bfcd264264a4d0e0e0247c229335abf0573439c5e9829c8607aacd569
|
||||
static/media/KaTeX_Size3-Regular.9108a400.woff2,1762373005134,01dd9815f099722e1f7958ab976d9c0ee81615fa39699daf775fdd8a953ff8b1
|
||||
static/media/KaTeX_Typewriter-Regular.0e046058.woff,1762373005135,82cff08904dbae816ffe38a914d56622c9b677680bba6a629e584a19ffb6e873
|
||||
static/media/KaTeX_Size3-Regular.4de844d4.woff,1762373005130,4398fd91cc5e6b45e4293262c5361ada3a54a24aff0d7a38bc70d3a242f0ef27
|
||||
static/media/KaTeX_Size3-Regular.963af864.ttf,1762373005134,f94a1dddcfc1df9beb0ecfaf0a73c3df96009a8d7e8a098ada1aa3a39e9ca678
|
||||
static/media/KaTeX_Size4-Regular.27a23ee6.ttf,1762373005135,df3392005f1d7a6f9bd8cbc0d1e0f06c147944fdd86e3316fd38d4f55f8e4a9f
|
||||
static/media/KaTeX_Size2-Regular.b0628bfd.woff,1762373005129,e23e150fad1a0531631c97f0170716a09b51211d3ad23c84794647ef603a19de
|
||||
static/media/KaTeX_Size2-Regular.95a1da91.woff2,1762373005127,47c15e4348ddda442adae347550b466a6325266ccf8d7a4793481682b5bdf4f2
|
||||
static/media/KaTeX_Size1-Regular.82ef26dc.woff2,1762373005127,353eb899698a648194c4bfabf250818092ebfdee0f3078346c3acb4194797f48
|
||||
static/media/KaTeX_Size1-Regular.4788ba5b.woff,1762373005127,8e8412c0abbcb89ea321e50ec95b55bfe9d77486c84664fbca5b9b101bab7f3d
|
||||
static/media/KaTeX_Script-Regular.a82fa2a7.woff,1762373005128,84a67d2df883ac10ca688757491e777b64ef90f94ca712cc23b64a8c97de68af
|
||||
static/media/KaTeX_SansSerif-Regular.5f8637ee.woff,1762373005127,d0d8050720c1b4cedb8cfe1feb22dc45fc0382ff62b5504c7fc09e1c24652544
|
||||
static/media/KaTeX_Size1-Regular.0d8d9204.ttf,1762373005127,535e05d118e935a5a1ce5be35dc03a4b20a69ccc5f25210206deaed676c16a64
|
||||
static/media/KaTeX_Script-Regular.a189c37d.ttf,1762373005127,ec985a3df1d229119c660bfaa16e4be32ec7391f09d9c1e220cef2b149745a1a
|
||||
static/media/KaTeX_Script-Regular.1b3161eb.woff2,1762373005127,a5bfd2c095c085b45d10126c94e5cc116a0ea8fd7946a49b54a95da414535890
|
||||
static/media/KaTeX_SansSerif-Regular.3243452e.ttf,1762373005127,89e5632b7b1d0a3b94bcb71efd36838bb407d575f0212a8d3499b3c3c0fcb12c
|
||||
static/media/KaTeX_SansSerif-Italic.e934cbc8.woff2,1762373005123,2a474c036e86d3fcabb4f8d68318ccce7e5e103f27f804e1fd74a1646ed15cae
|
||||
static/media/KaTeX_SansSerif-Italic.ef725de5.woff,1762373005127,9476b240a74b872f7cbe8517997d68df0c375e3d52a58e165f893a7191f54e86
|
||||
static/media/KaTeX_SansSerif-Italic.f60b4a34.ttf,1762373005127,cf5a68a17d022639016a9da976bb6a4ab05e06ccd74ce712db3009adcf34fd32
|
||||
static/media/KaTeX_SansSerif-Bold.ad546b47.woff2,1762373005120,9a2e88c7f50de44ea6842c0dc687cd0fc54cff06a47bf6408cf1eba76e25bb81
|
||||
static/media/KaTeX_SansSerif-Bold.0e897d27.woff,1762373005121,06df349cd9f09f229c964190cea7b3487aefe84f055207793ddf3e83a3db281a
|
||||
static/media/KaTeX_SansSerif-Bold.f2ac7312.ttf,1762373005120,a248317ab48e3dc924f1c87b13a27cc5e6d887272d02b1c1cab72795de2c9591
|
||||
static/media/KaTeX_SansSerif-Regular.1ac3ed6e.woff2,1762373005126,2836d2dafad00dd468d7e2b8f305eeb3af4f434980bc7efb3c696e6968cec09b
|
||||
static/media/KaTeX_Size4-Regular.3045a61f.woff,1762373005135,c397a0db368b7313fdae7297ab0efb8f25f1bc12afc4ce691dabf8e0918017fa
|
||||
static/media/KaTeX_Size2-Regular.1fdda0e5.ttf,1762373005134,1685351b16075c0e5c880bbb9c6a3b4c5161ac3c852cc8a67963a37d7311b2b9
|
||||
static/media/logo.0dd03933.png,1762373005103,b9716ed1f565a052edc1154a207334de81856339e8ca43d5d8f51041f3785085
|
||||
static/media/KaTeX_Typewriter-Regular.6bf42875.ttf,1762373005134,3f8e9a7e1c8f9835a5fdbf303b775991de8d868a7b8ee8eb1f32b0b01ed1b90b
|
||||
static/media/KaTeX_Math-Italic.ed7aea12.woff,1762373005120,7f65f9be10f45caa82382689fe21bf358899ac28002cbd44d3696eea1d6affee
|
||||
static/media/KaTeX_Math-Italic.fe5ed587.ttf,1762373005121,1cf503e99eee1d6931a59f03a2718c879571c4bc878d8c5bb310c057e15fcffa
|
||||
static/media/KaTeX_Fraktur-Regular.f9e6a99f.woff2,1762373005111,30c5ebf8d693d9a6db88068bd72eca6aaab2313d91682e147db6ae4d43efc013
|
||||
static/media/KaTeX_Fraktur-Regular.e435cda5.woff,1762373005112,1ed825d761d10b653432e13606827af1a1621353e75a2bb10c9fdc3f9568cbf2
|
||||
static/media/KaTeX_Fraktur-Bold.796f3797.woff2,1762373005111,440fe396e2bc189c86a666bed548bed61a5482c3afaa04eb41e5b4e977f9accd
|
||||
static/media/KaTeX_Fraktur-Bold.b9d7c449.ttf,1762373005111,05ef840382f3b9a91d6a08c707c5288ed173a0623b5f986c92d03afd59d2972e
|
||||
static/media/KaTeX_Fraktur-Regular.97a699d8.ttf,1762373005111,c84e9b333b1c3dfd0edf947b0166c4436bded08309d47955b99fa4e43177bdaf
|
||||
static/media/KaTeX_Caligraphic-Regular.a25140fb.woff,1762373005104,41d8909c711af0e11e9df1fa5bbd8c14071e22130fbac9b6518e920386152038
|
||||
static/media/KaTeX_Caligraphic-Regular.e6fb499f.ttf,1762373005111,7d6aca5b5f7d749a0fd1f9e4e7449b1b79a347fd08696f5cadc303ea5e3f3f1c
|
||||
static/media/KaTeX_Caligraphic-Bold.de2ba279.woff,1762373005111,4e80ee5909ce3b5b965be5b11b75919d58dc6633d372869dbbbbd13f93dbd662
|
||||
static/media/KaTeX_Fraktur-Bold.40934fc0.woff,1762373005104,8a9c9bd2084df9282df1c63c593dda4c662d2a8111d09956d5bf2c92e6213f4a
|
||||
static/media/KaTeX_Caligraphic-Bold.a9e9b095.woff2,1762373005104,80906c4f0be4d8dccfbb0d3b8cafe79b6ba8bc3200c3c9f060b5616a4d8dec39
|
||||
static/media/KaTeX_Caligraphic-Regular.08d95d99.woff2,1762373005104,d4574df1e20cd3519662aff34dcdfa42339c48bfd9dd675d804723794949a8c8
|
||||
static/media/GrayscalePKLogo.6bb74404.svg,1762373005103,576b38300e49eda6407adce420001e7ad0333cca317eb668aff457c3258dcca2
|
||||
static/media/getFetch.2b2b7da4.cjs,1762373005103,b2d82abee5b8af22b81d67fc20b3feef1eaaf04585dbc24ec755e3304c469096
|
||||
static/media/KaTeX_Caligraphic-Bold.497bf407.ttf,1762373005108,50b8dd982d91b531aaf3009e30dc42e72635d476bd0e3d6fe9ba2bdb5c7a036f
|
||||
static/media/feature-2.36f8d7e2.webp,1762373005104,fc1c038517abf3b731ff3a4675cbaf1a6aa1150ca970762dd0ffc4199b92b75c
|
||||
static/media/exam-icon.10f48851.svg,1762373005142,b766e9975582af716870a844f8deabd4d80e33a47c400d36cee6bc4840062693
|
||||
service-worker.js,1762457770128,ad69cb1c0350a03ad678222d00192749ed6ff25ed003315b5e237ae32768e74f
|
||||
precache-manifest.c9ff8b878ec56029589dbb8855056c09.js,1762457770127,37f2f3562b774bdfc86acb6156e7190a9bf37539fd49faca9ff12307349280eb
|
||||
static/media/tru-fals-icon.d0b962d8.svg,1762457770050,a1deab7e5db8e8a94a9c5812dcde5f8cbfbe5da790da8500bf106980b9c79c33
|
||||
static/media/sub-ques-icon.366b4f1e.svg,1762457770053,8e397611007ec5db7581a4c1bcca006950390ddf652cae209bb3973a645af425
|
||||
static/media/student-engaged.53fb7b0b.svg,1762457770047,5f8e01d1a5efcbdf3aa00ed07de843ab84404a28b672ca91f4d70d89fa8b37cf
|
||||
static/media/translate.610ad011.svg,1762457770053,c06f8a3d0c976b02429ce805d8a4944571ab0128ed2ce49c2d3ca134511ed120
|
||||
asset-manifest.json,1762457770128,b1cc877495546d439e8e8cbd2d1d5c0ea9605a261a30acd1344544bb77a88da3
|
||||
static/media/quizexam.5545802e.svg,1762457770041,dfc1278bfcd264264a4d0e0e0247c229335abf0573439c5e9829c8607aacd569
|
||||
static/media/question.0c505ed9.svg,1762457770041,29938066f93476c487414bb7a5dd5227d891c8ab8e115a74a7e7ffccd8d87b36
|
||||
static/media/practice.f05e6f00.svg,1762457770042,13b094bcbbb8c50906b1ee0ce68305059e99319464dd4147b4c2194dbb460475
|
||||
static/media/PracticeKiaLogo.a8336af5.svg,1762457769998,1a592518bcfabb2f86669d06ae2fb7b2948bbdbfaf5a80d138ab30f4e482a0f8
|
||||
static/media/questions-icon.3d3c1aaf.svg,1762457770047,197f459a359b00c1c44b6ddd71cbc9160f593d1fe08534e3711e9d72a2956ef1
|
||||
static/media/perf-icon.1597a235.svg,1762457770048,7183482b785de425506f49deb27bba02e906132ac7ce5af01f7da8452ef64f28
|
||||
static/media/practice-icon.bf603115.svg,1762457770047,27b6a729d91914d899f4b3c1f817e26ac58d2ec0be54dc9b93c01f28adcdd00c
|
||||
static/media/OdiSVGlogo.f0834bb1.svg,1762457770003,3ec1cab31a32db378894d796afedaee7c35f8ff99dfb1039b0bb757225a47235
|
||||
static/media/mul-res-icon.8ef3b097.svg,1762457770048,1f0a79350cb5546361ef02af1657ad36efeff833fd7bb61db88a20e127a290b4
|
||||
static/media/performance.88855f12.svg,1762457770045,03fc1b19005084049382091745d3f1f29a447763091ad4a9bc5d097c338671c9
|
||||
static/media/locale-icon.b3596424.svg,1762457770046,68618c76952aa4c5f2623bb010514871688960bb3b9edbcda0eab7eb75442054
|
||||
static/media/KaTeX_Typewriter-Regular.b8b8393d.woff2,1762457770037,54a0126379ac9b84c5745f17cd0ac9bf11532ea04c39d387d165a71caf77f8d2
|
||||
static/media/mul-cho-icon.b3dc9ea9.svg,1762457770050,e8edbceb0eb49f7629cf0b8edf599f9347acbf0c6d1df2fa6145cbed03f37e1f
|
||||
static/media/KaTeX_Size4-Regular.61522cd3.woff2,1762457770038,65378bc44e4f908ff3e7d3b5a36f1351cd29dbed446fcf86ebe0655afefe9ea8
|
||||
static/media/KaTeX_Typewriter-Regular.0e046058.woff,1762457770037,82cff08904dbae816ffe38a914d56622c9b677680bba6a629e584a19ffb6e873
|
||||
index.html,1762457770081,6cdb9fbf930842444b429f61fc721f122cf1b751cf77932af30c2f02f98b6c9c
|
||||
static/media/KaTeX_Size3-Regular.9108a400.woff2,1762457770032,01dd9815f099722e1f7958ab976d9c0ee81615fa39699daf775fdd8a953ff8b1
|
||||
static/media/KaTeX_Size3-Regular.963af864.ttf,1762457770034,f94a1dddcfc1df9beb0ecfaf0a73c3df96009a8d7e8a098ada1aa3a39e9ca678
|
||||
static/media/KaTeX_Size3-Regular.4de844d4.woff,1762457770034,4398fd91cc5e6b45e4293262c5361ada3a54a24aff0d7a38bc70d3a242f0ef27
|
||||
static/media/KaTeX_Size2-Regular.95a1da91.woff2,1762457770032,47c15e4348ddda442adae347550b466a6325266ccf8d7a4793481682b5bdf4f2
|
||||
static/media/KaTeX_Size2-Regular.b0628bfd.woff,1762457770034,e23e150fad1a0531631c97f0170716a09b51211d3ad23c84794647ef603a19de
|
||||
static/media/KaTeX_Size2-Regular.1fdda0e5.ttf,1762457770033,1685351b16075c0e5c880bbb9c6a3b4c5161ac3c852cc8a67963a37d7311b2b9
|
||||
static/media/KaTeX_Size1-Regular.82ef26dc.woff2,1762457770030,353eb899698a648194c4bfabf250818092ebfdee0f3078346c3acb4194797f48
|
||||
static/media/KaTeX_Size1-Regular.4788ba5b.woff,1762457770032,8e8412c0abbcb89ea321e50ec95b55bfe9d77486c84664fbca5b9b101bab7f3d
|
||||
static/media/KaTeX_Script-Regular.a82fa2a7.woff,1762457770032,84a67d2df883ac10ca688757491e777b64ef90f94ca712cc23b64a8c97de68af
|
||||
static/media/KaTeX_Script-Regular.a189c37d.ttf,1762457770033,ec985a3df1d229119c660bfaa16e4be32ec7391f09d9c1e220cef2b149745a1a
|
||||
static/media/KaTeX_Size1-Regular.0d8d9204.ttf,1762457770038,535e05d118e935a5a1ce5be35dc03a4b20a69ccc5f25210206deaed676c16a64
|
||||
static/media/KaTeX_Script-Regular.1b3161eb.woff2,1762457770032,a5bfd2c095c085b45d10126c94e5cc116a0ea8fd7946a49b54a95da414535890
|
||||
static/media/KaTeX_SansSerif-Regular.5f8637ee.woff,1762457770024,d0d8050720c1b4cedb8cfe1feb22dc45fc0382ff62b5504c7fc09e1c24652544
|
||||
static/media/KaTeX_Size4-Regular.27a23ee6.ttf,1762457770038,df3392005f1d7a6f9bd8cbc0d1e0f06c147944fdd86e3316fd38d4f55f8e4a9f
|
||||
static/media/KaTeX_SansSerif-Italic.f60b4a34.ttf,1762457770030,cf5a68a17d022639016a9da976bb6a4ab05e06ccd74ce712db3009adcf34fd32
|
||||
static/media/KaTeX_SansSerif-Regular.1ac3ed6e.woff2,1762457770039,2836d2dafad00dd468d7e2b8f305eeb3af4f434980bc7efb3c696e6968cec09b
|
||||
static/media/KaTeX_SansSerif-Regular.3243452e.ttf,1762457770030,89e5632b7b1d0a3b94bcb71efd36838bb407d575f0212a8d3499b3c3c0fcb12c
|
||||
static/media/KaTeX_SansSerif-Bold.ad546b47.woff2,1762457770039,9a2e88c7f50de44ea6842c0dc687cd0fc54cff06a47bf6408cf1eba76e25bb81
|
||||
static/media/KaTeX_SansSerif-Italic.e934cbc8.woff2,1762457770021,2a474c036e86d3fcabb4f8d68318ccce7e5e103f27f804e1fd74a1646ed15cae
|
||||
static/media/KaTeX_SansSerif-Italic.ef725de5.woff,1762457770030,9476b240a74b872f7cbe8517997d68df0c375e3d52a58e165f893a7191f54e86
|
||||
static/media/KaTeX_Size4-Regular.3045a61f.woff,1762457770037,c397a0db368b7313fdae7297ab0efb8f25f1bc12afc4ce691dabf8e0918017fa
|
||||
static/media/KaTeX_SansSerif-Bold.0e897d27.woff,1762457770020,06df349cd9f09f229c964190cea7b3487aefe84f055207793ddf3e83a3db281a
|
||||
static/media/logo.0dd03933.png,1762457770003,b9716ed1f565a052edc1154a207334de81856339e8ca43d5d8f51041f3785085
|
||||
static/media/KaTeX_SansSerif-Bold.f2ac7312.ttf,1762457770029,a248317ab48e3dc924f1c87b13a27cc5e6d887272d02b1c1cab72795de2c9591
|
||||
static/media/KaTeX_Typewriter-Regular.6bf42875.ttf,1762457770039,3f8e9a7e1c8f9835a5fdbf303b775991de8d868a7b8ee8eb1f32b0b01ed1b90b
|
||||
static/media/KaTeX_Math-Italic.ed7aea12.woff,1762457770019,7f65f9be10f45caa82382689fe21bf358899ac28002cbd44d3696eea1d6affee
|
||||
static/media/KaTeX_Math-Italic.fe5ed587.ttf,1762457770019,1cf503e99eee1d6931a59f03a2718c879571c4bc878d8c5bb310c057e15fcffa
|
||||
static/media/KaTeX_Fraktur-Regular.f9e6a99f.woff2,1762457770011,30c5ebf8d693d9a6db88068bd72eca6aaab2313d91682e147db6ae4d43efc013
|
||||
static/media/KaTeX_Fraktur-Regular.e435cda5.woff,1762457770012,1ed825d761d10b653432e13606827af1a1621353e75a2bb10c9fdc3f9568cbf2
|
||||
static/media/KaTeX_Fraktur-Regular.97a699d8.ttf,1762457770012,c84e9b333b1c3dfd0edf947b0166c4436bded08309d47955b99fa4e43177bdaf
|
||||
static/media/KaTeX_Fraktur-Bold.b9d7c449.ttf,1762457770011,05ef840382f3b9a91d6a08c707c5288ed173a0623b5f986c92d03afd59d2972e
|
||||
static/media/KaTeX_Fraktur-Bold.796f3797.woff2,1762457770012,440fe396e2bc189c86a666bed548bed61a5482c3afaa04eb41e5b4e977f9accd
|
||||
static/media/KaTeX_Fraktur-Bold.40934fc0.woff,1762457770005,8a9c9bd2084df9282df1c63c593dda4c662d2a8111d09956d5bf2c92e6213f4a
|
||||
static/media/KaTeX_Caligraphic-Regular.a25140fb.woff,1762457770011,41d8909c711af0e11e9df1fa5bbd8c14071e22130fbac9b6518e920386152038
|
||||
static/media/KaTeX_Caligraphic-Regular.08d95d99.woff2,1762457770004,d4574df1e20cd3519662aff34dcdfa42339c48bfd9dd675d804723794949a8c8
|
||||
static/media/KaTeX_Caligraphic-Regular.e6fb499f.ttf,1762457770011,7d6aca5b5f7d749a0fd1f9e4e7449b1b79a347fd08696f5cadc303ea5e3f3f1c
|
||||
static/media/KaTeX_Caligraphic-Bold.a9e9b095.woff2,1762457770004,80906c4f0be4d8dccfbb0d3b8cafe79b6ba8bc3200c3c9f060b5616a4d8dec39
|
||||
static/media/KaTeX_Caligraphic-Bold.de2ba279.woff,1762457770003,4e80ee5909ce3b5b965be5b11b75919d58dc6633d372869dbbbbd13f93dbd662
|
||||
static/media/GrayscalePKLogo.6bb74404.svg,1762457770003,576b38300e49eda6407adce420001e7ad0333cca317eb668aff457c3258dcca2
|
||||
static/media/KaTeX_Caligraphic-Bold.497bf407.ttf,1762457770003,50b8dd982d91b531aaf3009e30dc42e72635d476bd0e3d6fe9ba2bdb5c7a036f
|
||||
static/media/getFetch.2b2b7da4.cjs,1762457770003,b2d82abee5b8af22b81d67fc20b3feef1eaaf04585dbc24ec755e3304c469096
|
||||
static/media/feature-2.36f8d7e2.webp,1762457770003,fc1c038517abf3b731ff3a4675cbaf1a6aa1150ca970762dd0ffc4199b92b75c
|
||||
static/media/exam-icon.10f48851.svg,1762457770046,b766e9975582af716870a844f8deabd4d80e33a47c400d36cee6bc4840062693
|
||||
assets/images/locale-icon.svg,1761396900579,610498c7ca3b5800d268b1654473f0b1d79de2c6493a7c6982bef90456d35179
|
||||
assets/images/icons/icon-96x96.png,1761396900602,43a8ac4df8945d7a44e3e4911032214f01eaea92267baa31a93e77942b424c73
|
||||
assets/images/icons/icon-72x72.png,1761396900600,a42f1df8ab0a8fe921573976d49158e1a2c52fe430460c869947f221aba30a94
|
||||
|
|
@ -76,52 +76,52 @@ assets/images/icons/icon-192x192.png,1761396900592,ac9fe46fbeb4c54fb3c838b645380
|
|||
assets/images/icons/icon-152x152.png,1761396900590,95a5a117fbd5640f1f1f13c9923398545e3f5b66734ff6c8ce67c942319a8b67
|
||||
assets/images/icons/icon-144x144.png,1761396900588,e42168e0e1abb5bd7811ebe1b5a2183d0ce287bf266c2efd8d97a23d23ca8d00
|
||||
assets/images/icons/icon-128x128.png,1761396900585,45b577c86e7c03fef868bfa3f96810c5b36f31156c32c0d85620d2e6fe1fc85b
|
||||
static/media/delete-icon.da38c0f4.svg,1762373005147,8078772ee88a0588989eec477da1ca949430f3f06efaa9c2db860b74c65f6722
|
||||
static/media/dashboard.8ec7624b.svg,1762373005135,5a5b5d4bf416d414842bd5eac30432b592342a392450e52943f067db4077bec1
|
||||
static/media/classes.3b73dba0.svg,1762373005137,2abfbb7015d5bccb8640fd0614d3782c048672c9543fe17d127db63287ac141d
|
||||
static/media/class-icon.6afd34b5.svg,1762373005142,a2f492c6c9c7b5201773062dfe90c238c12bc00bec097dc06141201f02b9588e
|
||||
static/media/Checkmark.1356376c.svg,1762373005154,aa56f27c8198bcae3236a881a7134cd3b7d3dbb048ec75654e8ce2d4710ce027
|
||||
static/media/batch.3fcff66e.svg,1762373005137,f29038480286f091e3805a43f90ca5a70a13bbcef3076831e0b29b1fcb61d862
|
||||
static/media/batch-icon.bf664771.svg,1762373005142,7519e2a92f436a2f46ef7420d721e24df2837d7fce7fe8c30f4bc12980b3d1a0
|
||||
static/media/KaTeX_Math-Italic.d8b7a801.woff2,1762373005120,463c7b305e898eff5291b63c93cc5cb344035692b6913c1c79073ecbb6243bd4
|
||||
static/media/auth-BG.2835584f.svg,1762373005095,238d3a2ff1aead1c4aaed0e07d23d2c1164f8be0ef2d5fced5c5ade370f3c5bf
|
||||
static/media/KaTeX_Math-BoldItalic.1320454d.woff2,1762373005121,6845d5004e7c212c58d4760856f246a648906e552b0fe06cc1602598c12451c2
|
||||
static/media/KaTeX_Math-BoldItalic.48155e43.woff,1762373005120,85cd1b757a1e147fa60d9a33c097ac463cd361d7d29278acb6f9fa12b1ab1807
|
||||
static/media/add-circle.0011f2bc.svg,1762373005142,d9e5d90e8de1ce16df5720b43ca79543036fcf1a6cd6439a9b15c5a97d269f17
|
||||
static/media/KaTeX_Math-BoldItalic.6589c4f1.ttf,1762373005120,7015e678d3236d50b3fefa9ba69b1473ed3f8e75adee5cace69614afcfc2f5bf
|
||||
static/media/KaTeX_Main-Regular.f8a7f19f.woff2,1762373005120,d9e0bfb38531e96891681155d118070f8026358d2951cb8470c394b91809288d
|
||||
static/media/KaTeX_Main-Italic.65297062.woff2,1762373005127,d85767f0359678f357e48c84e9872f47b139674a79b7b71db0fdbb1317c26d12
|
||||
static/media/KaTeX_Main-Italic.8ffd28f6.woff,1762373005116,96448f48ed2241c86e68c8461f1640b4420784ddafae0187411614145e1b86b7
|
||||
static/media/KaTeX_Main-BoldItalic.d8737343.woff2,1762373005112,c626855b7d035c168c7d791991df8d939103de514bfb4451d79d386573284c72
|
||||
static/media/KaTeX_Main-Regular.f1cdb692.woff,1762373005120,17452652a1119d3bcd8a71406fc8698a686f53c3923cb96e790e6a5d36d08ab1
|
||||
static/media/KaTeX_Main-BoldItalic.5f875f98.woff,1762373005115,70abceb4229394d854d0f09cb4c174bb3044efcb0c914765da73cef487dff695
|
||||
static/media/KaTeX_Main-Italic.39349e0a.ttf,1762373005119,1d8cb78615c1bf0e6382d19209ab3b545f62297a75006719c9fe6a82f4b3b282
|
||||
static/media/KaTeX_Main-BoldItalic.52fb39b0.ttf,1762373005113,2c270214096b727d963e376c50c9372e0696e3807ab3593c99721e98a2350d9a
|
||||
static/media/KaTeX_Main-Bold.a9382e25.woff2,1762373005111,5a85aa329e280b7ebe07d42616135b81a43b3e7699beb03e4f85cb85cc1c42a0
|
||||
static/js/runtime-main.8e38f746.js.map,1762373005222,98b6824dc3f1c6a12430e946a64b8092ff5d05fb96b55ca6d5c4fea01d94a485
|
||||
static/media/KaTeX_Main-Regular.818582da.ttf,1762373005120,303bad6cffa808e8161bca30051b6116e39cd128fad1565f4cfe87d57e54f715
|
||||
static/media/KaTeX_Main-Bold.4cdba646.woff,1762373005111,0a80f97f42c420ce18f49adadd979581ee6c7b2fea155197d564eab7d4a33b94
|
||||
static/media/KaTeX_Main-Bold.8e431f7e.ttf,1762373005112,05a2a07c87d1436ec1339788f266910afda2ef11c2c159b5f9da217e5862678b
|
||||
static/js/runtime-main.8e38f746.js,1762373005155,7abbb5f70c00c663738f8bd45449c09010174c2b33ab79da6c8f810ff5b5fe93
|
||||
static/media/KaTeX_AMS-Regular.66c67820.woff2,1762373005104,d3c3fdcc36a8dd47d2361854708db75facde86716ac4aff340c27a53edb91fa3
|
||||
static/media/feature-1.ea5c34ea.svg,1762373005103,d802659785b69508e521d5543fca40a58cb9076521ffc3e6b006f4786b8079f8
|
||||
static/media/KaTeX_AMS-Regular.10824af7.woff,1762373005111,6c46aa92e4310f9c70a445e7a423691f1704dce1cdc29fdd2e0c83d195fcee10
|
||||
static/media/KaTeX_AMS-Regular.56573229.ttf,1762373005104,c2f8c0a308e057708caa69b82f187cbff35ecda40162ceed7cf66bb958032bba
|
||||
static/media/feature-3.3d5d81e9.svg,1762373005104,ba23393d89776cb78f7a559903baff48be76665abd99bdd4e5ea103c5e5ed88b
|
||||
static/js/4.b1a8909a.chunk.js.map,1762373005223,cc29c410ad87d4a687401e2252b312788aefed8b7f53e786346b2dd60dfb3de3
|
||||
static/js/3.9b1c3a2b.chunk.js.map,1762373005223,5044d0e0862c1cb2f043f63c402ded99e321dc799e6aabd0703bbe596047df77
|
||||
static/js/3.9b1c3a2b.chunk.js,1762373005156,394137fe0adad4357a1abd73710491aa4720ee89c553605e9e076e0f70a24dd8
|
||||
static/js/4.b1a8909a.chunk.js,1762373005156,1b67d9265ad5a6c8ae015e37061ef359ea779782933587de7f991636980039dc
|
||||
static/js/2.d7f87784.chunk.js.LICENSE.txt,1762373005169,9c84bc4d2f8584d32d75e01e0317e22af1e39f5ac5ded3e2e4e34984704c172b
|
||||
static/js/main.be37a9ce.chunk.js,1762373005155,5075f2a479664257e68b2714db5142f1e0ba92399d7e748dc90a40bb549a0ba6
|
||||
static/css/4.629184c9.chunk.css,1762373005156,dfeba86da1256521df7a877a265d56d314f65016837f30878338c2b7fc62a6ab
|
||||
static/css/main.c29fa4f6.chunk.css,1762373005147,9349f33dbede136110272f647bd8fdbe32f644d678e66dbed97764bd296fe4b4
|
||||
static/css/3.6c5a3051.chunk.css,1762373005156,1ae150a22b1d42322775be9055605f93c75188e7081cfbdb206a59fc2f5ab8f1
|
||||
static/css/2.9f1a6119.chunk.css,1762373005155,5b08fdb85c1aaa0cf9acf7c4c35148cabc67c4897f21b89b8734390f584ad0a2
|
||||
static/css/4.629184c9.chunk.css.map,1762373005175,b82aa57e6e357dbb20067334e544e9b30d20ed0d928c13e6c61e1747e6f5a205
|
||||
static/css/3.6c5a3051.chunk.css.map,1762373005174,bcc301c3b3b46c96afc0fc028a6aa3cd299ccda538d7c6cb9ebc87f8de535796
|
||||
static/js/main.be37a9ce.chunk.js.map,1762373005222,a286e93e9215d39651d2917cf092ed80221d819d5d923724221878e003dc655b
|
||||
static/css/2.9f1a6119.chunk.css.map,1762373005174,65fe44874775e5d32c6076f91b40fc5d120cecbf5da0d211d9303dbb56b2e6ec
|
||||
static/css/main.c29fa4f6.chunk.css.map,1762373005174,ead4c6714e4852cf46801e2ff6405efc9a3bfab11d67d89722b7474e24a50c01
|
||||
static/js/2.d7f87784.chunk.js,1762373005158,00bdc2357556fcbc8eff302d487955d66883b1b09609249a775c3441e8f1f21d
|
||||
static/js/2.d7f87784.chunk.js.map,1762373005237,abc8de9d7d1d5e6f2e23a0b9a7c301cc30e6d9df8d3821304eb6fdc71e3000c5
|
||||
static/media/delete-icon.da38c0f4.svg,1762457770053,8078772ee88a0588989eec477da1ca949430f3f06efaa9c2db860b74c65f6722
|
||||
static/media/classes.3b73dba0.svg,1762457770042,2abfbb7015d5bccb8640fd0614d3782c048672c9543fe17d127db63287ac141d
|
||||
static/media/class-icon.6afd34b5.svg,1762457770046,a2f492c6c9c7b5201773062dfe90c238c12bc00bec097dc06141201f02b9588e
|
||||
static/media/Checkmark.1356376c.svg,1762457770061,aa56f27c8198bcae3236a881a7134cd3b7d3dbb048ec75654e8ce2d4710ce027
|
||||
static/media/dashboard.8ec7624b.svg,1762457770039,5a5b5d4bf416d414842bd5eac30432b592342a392450e52943f067db4077bec1
|
||||
static/media/batch.3fcff66e.svg,1762457770042,f29038480286f091e3805a43f90ca5a70a13bbcef3076831e0b29b1fcb61d862
|
||||
static/media/batch-icon.bf664771.svg,1762457770047,7519e2a92f436a2f46ef7420d721e24df2837d7fce7fe8c30f4bc12980b3d1a0
|
||||
static/media/KaTeX_Math-Italic.d8b7a801.woff2,1762457770019,463c7b305e898eff5291b63c93cc5cb344035692b6913c1c79073ecbb6243bd4
|
||||
static/media/auth-BG.2835584f.svg,1762457770003,238d3a2ff1aead1c4aaed0e07d23d2c1164f8be0ef2d5fced5c5ade370f3c5bf
|
||||
static/media/KaTeX_Math-BoldItalic.48155e43.woff,1762457770019,85cd1b757a1e147fa60d9a33c097ac463cd361d7d29278acb6f9fa12b1ab1807
|
||||
static/media/KaTeX_Math-BoldItalic.6589c4f1.ttf,1762457770024,7015e678d3236d50b3fefa9ba69b1473ed3f8e75adee5cace69614afcfc2f5bf
|
||||
static/media/KaTeX_Math-BoldItalic.1320454d.woff2,1762457770019,6845d5004e7c212c58d4760856f246a648906e552b0fe06cc1602598c12451c2
|
||||
static/media/KaTeX_Main-Regular.f8a7f19f.woff2,1762457770019,d9e0bfb38531e96891681155d118070f8026358d2951cb8470c394b91809288d
|
||||
static/media/KaTeX_Main-Italic.65297062.woff2,1762457770019,d85767f0359678f357e48c84e9872f47b139674a79b7b71db0fdbb1317c26d12
|
||||
static/media/KaTeX_Main-Italic.8ffd28f6.woff,1762457770013,96448f48ed2241c86e68c8461f1640b4420784ddafae0187411614145e1b86b7
|
||||
static/media/KaTeX_Main-BoldItalic.d8737343.woff2,1762457770012,c626855b7d035c168c7d791991df8d939103de514bfb4451d79d386573284c72
|
||||
static/media/KaTeX_Main-BoldItalic.5f875f98.woff,1762457770012,70abceb4229394d854d0f09cb4c174bb3044efcb0c914765da73cef487dff695
|
||||
static/media/KaTeX_Main-Regular.f1cdb692.woff,1762457770019,17452652a1119d3bcd8a71406fc8698a686f53c3923cb96e790e6a5d36d08ab1
|
||||
static/media/KaTeX_Main-Italic.39349e0a.ttf,1762457770019,1d8cb78615c1bf0e6382d19209ab3b545f62297a75006719c9fe6a82f4b3b282
|
||||
static/media/KaTeX_Main-Bold.a9382e25.woff2,1762457770011,5a85aa329e280b7ebe07d42616135b81a43b3e7699beb03e4f85cb85cc1c42a0
|
||||
static/media/add-circle.0011f2bc.svg,1762457770046,d9e5d90e8de1ce16df5720b43ca79543036fcf1a6cd6439a9b15c5a97d269f17
|
||||
static/media/KaTeX_Main-Bold.4cdba646.woff,1762457770018,0a80f97f42c420ce18f49adadd979581ee6c7b2fea155197d564eab7d4a33b94
|
||||
static/media/KaTeX_Main-Regular.818582da.ttf,1762457770019,303bad6cffa808e8161bca30051b6116e39cd128fad1565f4cfe87d57e54f715
|
||||
static/media/KaTeX_Main-BoldItalic.52fb39b0.ttf,1762457770013,2c270214096b727d963e376c50c9372e0696e3807ab3593c99721e98a2350d9a
|
||||
static/media/KaTeX_Main-Bold.8e431f7e.ttf,1762457770012,05a2a07c87d1436ec1339788f266910afda2ef11c2c159b5f9da217e5862678b
|
||||
static/js/runtime-main.75b572a4.js.map,1762457770128,2a2cff71cbb0a33a7fc19a62b9ddb29ee62daf34ca4e083ac11f6bd19e79778e
|
||||
static/js/runtime-main.75b572a4.js,1762457770061,c92c4f729dcdb432e2689a779d3de747722d060c62115cd311ede28ea9d53915
|
||||
static/media/KaTeX_AMS-Regular.66c67820.woff2,1762457770003,d3c3fdcc36a8dd47d2361854708db75facde86716ac4aff340c27a53edb91fa3
|
||||
static/media/feature-1.ea5c34ea.svg,1762457770003,d802659785b69508e521d5543fca40a58cb9076521ffc3e6b006f4786b8079f8
|
||||
static/media/KaTeX_AMS-Regular.10824af7.woff,1762457770011,6c46aa92e4310f9c70a445e7a423691f1704dce1cdc29fdd2e0c83d195fcee10
|
||||
static/media/KaTeX_AMS-Regular.56573229.ttf,1762457770003,c2f8c0a308e057708caa69b82f187cbff35ecda40162ceed7cf66bb958032bba
|
||||
static/media/feature-3.3d5d81e9.svg,1762457770003,ba23393d89776cb78f7a559903baff48be76665abd99bdd4e5ea103c5e5ed88b
|
||||
static/js/4.344ddbd2.chunk.js.map,1762457770129,416de382811da86967563487c31d8dac1329a96d212747ed4f17a042d7d6e7a8
|
||||
static/js/4.344ddbd2.chunk.js,1762457770067,cf507701ec829cbb16a2a2973b39b77974eb7f9af7739fcdcf7a98821c104bb4
|
||||
static/js/3.d9765ecd.chunk.js.map,1762457770129,ae1d2413f24257daa6464aa05f2d172465239725339b6a9dc9e4a6b3ea296c11
|
||||
static/js/3.d9765ecd.chunk.js,1762457770062,bdb739d2168ea1e2e2a07bf7923e3a3b6765644a780d52989c2a23282dfe8df1
|
||||
static/js/2.7364070b.chunk.js.LICENSE.txt,1762457770067,9c84bc4d2f8584d32d75e01e0317e22af1e39f5ac5ded3e2e4e34984704c172b
|
||||
static/js/main.357a9655.chunk.js,1762457770053,de152990ce6baee2d3b2b7ef48d227fc1c07329a242a43eab91a4325b0e82870
|
||||
static/css/4.629184c9.chunk.css,1762457770063,dfeba86da1256521df7a877a265d56d314f65016837f30878338c2b7fc62a6ab
|
||||
static/css/3.6c5a3051.chunk.css,1762457770062,1ae150a22b1d42322775be9055605f93c75188e7081cfbdb206a59fc2f5ab8f1
|
||||
static/css/2.9f1a6119.chunk.css,1762457770061,5b08fdb85c1aaa0cf9acf7c4c35148cabc67c4897f21b89b8734390f584ad0a2
|
||||
static/css/main.f9fd7877.chunk.css,1762457770053,5dc175eca442114be3f947909ed2479c6499d01dbcabab1a5061b469276e5956
|
||||
static/css/4.629184c9.chunk.css.map,1762457770083,b82aa57e6e357dbb20067334e544e9b30d20ed0d928c13e6c61e1747e6f5a205
|
||||
static/css/3.6c5a3051.chunk.css.map,1762457770082,bcc301c3b3b46c96afc0fc028a6aa3cd299ccda538d7c6cb9ebc87f8de535796
|
||||
static/css/2.9f1a6119.chunk.css.map,1762457770082,65fe44874775e5d32c6076f91b40fc5d120cecbf5da0d211d9303dbb56b2e6ec
|
||||
static/js/main.357a9655.chunk.js.map,1762457770128,cc52bc1cdf143f97fb998138f7ba63a35feb7928f670dbaed4072d086bd44908
|
||||
static/css/main.f9fd7877.chunk.css.map,1762457770075,af13ec744c4b90787916b4a63000dfcaa2235e5aa03eb9efb8dc93a8df8af444
|
||||
static/js/2.7364070b.chunk.js,1762457770064,df4d5d52ff5bc9a137a634c50e7372514191024cda2de41254c421b4144cb81b
|
||||
static/js/2.7364070b.chunk.js.map,1762457770146,94e8937258a39024064acd20a4e3110a0e78401e5d51226f7b7f861c0d76d5b3
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ const Profile = () => {
|
|||
message.success("Profile picture uploaded successfully!");
|
||||
|
||||
// ✅ Optionally update user's saved image in profile
|
||||
await axios.put(
|
||||
await axios.post(
|
||||
"https://api.practicekea.com/api-student/v1/Users/UpdateMyDetails",
|
||||
{ profile_pic: uploadedUrl },
|
||||
{
|
||||
|
|
@ -169,7 +169,7 @@ const Profile = () => {
|
|||
setLoading(true);
|
||||
|
||||
// ✅ Example backend API endpoint for updating user data
|
||||
const response = await axios.put(
|
||||
const response = await axios.post(
|
||||
`https://api.practicekea.com/api-student/v1/Users/UpdateMyDetails`, // adjust endpoint as per your backend
|
||||
values,
|
||||
{
|
||||
|
|
@ -478,9 +478,46 @@ const Profile = () => {
|
|||
<Form.Item
|
||||
label="State"
|
||||
name="state"
|
||||
rules={[{ required: true, message: "Please enter your state" }]}
|
||||
rules={[{ required: true, message: "Please select your state" }]}
|
||||
>
|
||||
<Input placeholder="Enter state" />
|
||||
<Select placeholder="Select your state">
|
||||
<Option value="AN">Andaman and Nicobar Islands</Option>
|
||||
<Option value="AP">Andhra Pradesh</Option>
|
||||
<Option value="AR">Arunachal Pradesh</Option>
|
||||
<Option value="AS">Assam</Option>
|
||||
<Option value="BR">Bihar</Option>
|
||||
<Option value="CH">Chandigarh</Option>
|
||||
<Option value="CT">Chhattisgarh</Option>
|
||||
<Option value="DN">Dadra and Nagar Haveli and Daman and Diu</Option>
|
||||
<Option value="DL">Delhi</Option>
|
||||
<Option value="GA">Goa</Option>
|
||||
<Option value="GJ">Gujarat</Option>
|
||||
<Option value="HR">Haryana</Option>
|
||||
<Option value="HP">Himachal Pradesh</Option>
|
||||
<Option value="JK">Jammu and Kashmir</Option>
|
||||
<Option value="JH">Jharkhand</Option>
|
||||
<Option value="KA">Karnataka</Option>
|
||||
<Option value="KL">Kerala</Option>
|
||||
<Option value="LA">Ladakh</Option>
|
||||
<Option value="LD">Lakshadweep</Option>
|
||||
<Option value="MP">Madhya Pradesh</Option>
|
||||
<Option value="MH">Maharashtra</Option>
|
||||
<Option value="MN">Manipur</Option>
|
||||
<Option value="ML">Meghalaya</Option>
|
||||
<Option value="MZ">Mizoram</Option>
|
||||
<Option value="NL">Nagaland</Option>
|
||||
<Option value="OR">Odisha</Option>
|
||||
<Option value="PY">Puducherry</Option>
|
||||
<Option value="PB">Punjab</Option>
|
||||
<Option value="RJ">Rajasthan</Option>
|
||||
<Option value="SK">Sikkim</Option>
|
||||
<Option value="TN">Tamil Nadu</Option>
|
||||
<Option value="TS">Telangana</Option>
|
||||
<Option value="TR">Tripura</Option>
|
||||
<Option value="UP">Uttar Pradesh</Option>
|
||||
<Option value="UK">Uttarakhand</Option>
|
||||
<Option value="WB">West Bengal</Option>
|
||||
</Select>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
|
|
|
|||
|
|
@ -246,9 +246,9 @@ class AttemptExam extends React.Component {
|
|||
}
|
||||
|
||||
const duration =
|
||||
question.answer_duration
|
||||
? Math.floor((Date.now() - question.answer_duration) / 1000)
|
||||
: 0;
|
||||
question.answer_duration
|
||||
? Math.floor((Date.now() - question.answer_duration) / 1000)
|
||||
: 0;
|
||||
|
||||
// ✅ Extract selected answer IDs (just numbers)
|
||||
const selectedAnswers = question.options
|
||||
|
|
@ -293,7 +293,7 @@ class AttemptExam extends React.Component {
|
|||
<Redirect
|
||||
to={{
|
||||
pathname: "/report",
|
||||
state: { attempt_id: this.state.attempt_id },
|
||||
state: { attempt_id: this.state.attempt_id, examId: this.state.exam_id },
|
||||
}}
|
||||
/>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ class LiveExams extends React.Component {
|
|||
endDate: end.toLocaleDateString(),
|
||||
daysLeft,
|
||||
attemptStatus: exam.attempt_status,
|
||||
attemptsTaken: exam.attempts_taken,
|
||||
};
|
||||
});
|
||||
|
||||
|
|
@ -238,8 +239,13 @@ class LiveExams extends React.Component {
|
|||
</Button>
|
||||
</Link>
|
||||
|
||||
{item.attemptStatus === "Completed" && (
|
||||
<Link to={{ pathname: "/report", state: { examId: item.id } }}>
|
||||
{item.attemptsTaken > 0 && (
|
||||
<Link
|
||||
to={{
|
||||
pathname: "/report",
|
||||
state: { examId: item.id },
|
||||
}}
|
||||
>
|
||||
<Button>View Report</Button>
|
||||
</Link>
|
||||
)}
|
||||
|
|
@ -363,8 +369,13 @@ class LiveExams extends React.Component {
|
|||
</Button>
|
||||
</Link>
|
||||
|
||||
{item.attemptStatus === "Completed" && (
|
||||
<Link to={{ pathname: "/report", state: { examId: item.id } }}>
|
||||
{item.attemptsTaken > 0 && (
|
||||
<Link
|
||||
to={{
|
||||
pathname: "/report",
|
||||
state: { examId: item.id },
|
||||
}}
|
||||
>
|
||||
<Button>View Report</Button>
|
||||
</Link>
|
||||
)}
|
||||
|
|
|
|||
|
|
@ -1,16 +1,12 @@
|
|||
import React from "react";
|
||||
import {
|
||||
Layout,
|
||||
List,
|
||||
Avatar,
|
||||
Button,
|
||||
Space,
|
||||
Divider,
|
||||
Tabs,
|
||||
Row,
|
||||
Col,
|
||||
Anchor,
|
||||
Menu,
|
||||
Drawer,
|
||||
Radio,
|
||||
Checkbox,
|
||||
|
|
@ -29,11 +25,9 @@ import { authenticationService } from "../../../../_services";
|
|||
import { Siderc } from "../../../Main/Siderc";
|
||||
import { Headerc } from "../../../Main/Headerc";
|
||||
import { selectorService } from "../../../../services/selectorService";
|
||||
// import { Link } from "react-router-dom";
|
||||
import Plot from "react-plotly.js";
|
||||
import { DashboardOutlined, PieChartOutlined } from "@ant-design/icons";
|
||||
import "./Report.css";
|
||||
import { useLocation } from "react-router-dom/cjs/react-router-dom.min";
|
||||
const { Content } = Layout;
|
||||
const { TabPane } = Tabs;
|
||||
|
||||
|
|
@ -46,19 +40,181 @@ class Report extends React.Component {
|
|||
total_count: 0,
|
||||
total_pages: 0,
|
||||
sections: [],
|
||||
attemptIds: [],
|
||||
selectedAttemptId: null,
|
||||
view: {},
|
||||
visible: false,
|
||||
typeDropdown: [],
|
||||
typeDifficulty: [],
|
||||
attempt_id: this.props.location.state?.attempt_id || null,
|
||||
examId: this.props.location.state?.examId || null,
|
||||
};
|
||||
|
||||
componentDidMount() {
|
||||
this.handleLoadReportForExam();
|
||||
}
|
||||
|
||||
componentDidUpdate(prevProps, prevState) {
|
||||
if (prevState.selectedAttemptId !== this.state.selectedAttemptId) {
|
||||
selectorService
|
||||
.loadReport(this.state.selectedAttemptId)
|
||||
.then((data) => {
|
||||
console.log(data);
|
||||
const result = data.result;
|
||||
let sections1 = [];
|
||||
let total_least_mark = 0;
|
||||
let total_max_mark = 0;
|
||||
let totalMarksReceived = 0;
|
||||
let totalMarks = 0;
|
||||
let total_correct_answer = 0;
|
||||
let total_wrong_answer = 0;
|
||||
let total_notAttempted_answer = 0;
|
||||
for (let index = 0; index < result.sections.length; index++) {
|
||||
let section = result.sections[index];
|
||||
let section_correct_answer = 0;
|
||||
let section_wrong_answer = 0;
|
||||
let section_notAttempted_answer = 0;
|
||||
let totalSectionMarks = 0;
|
||||
let easy_correct = 0;
|
||||
let easy_wrong_answer = 0;
|
||||
let easy_notAttempted_answer = 0;
|
||||
let medium_correct = 0;
|
||||
let medium_wrong_answer = 0;
|
||||
let medium_notAttempted_answer = 0;
|
||||
let hard_correct = 0;
|
||||
let hard_wrong_answer = 0;
|
||||
let hard_notAttempted_answer = 0;
|
||||
let total_MCQ = 0,
|
||||
total_MRQ = 0,
|
||||
total_TF = 0;
|
||||
let total_MCQ_correct = 0,
|
||||
total_MCQ_attempt = 0,
|
||||
total_MRQ_correct = 0,
|
||||
total_MRQ_attempt = 0,
|
||||
total_TF_correct = 0,
|
||||
total_TF_attempt = 0;
|
||||
totalMarks = totalMarks + result.sections[index].total_marks;
|
||||
if (total_max_mark < result.sections[index].total_marks) {
|
||||
total_max_mark = result.sections[index].total_marks;
|
||||
}
|
||||
if (total_least_mark > result.sections[index].total_nMarks) {
|
||||
total_least_mark = result.sections[index].total_nMarks;
|
||||
}
|
||||
|
||||
let questions = result.sections[index].questions;
|
||||
for (let index1 = 0; index1 < questions.length; index1++) {
|
||||
if (questions[index1].isCorrect) {
|
||||
total_correct_answer++;
|
||||
section_correct_answer++;
|
||||
totalSectionMarks =
|
||||
totalSectionMarks + questions[index1].correct_marks;
|
||||
if (section.complexity_code === 1) easy_correct++;
|
||||
else if (section.complexity_code === 2) {
|
||||
medium_correct++;
|
||||
} else {
|
||||
hard_correct++;
|
||||
}
|
||||
} else if (questions[index1].isAttempted) {
|
||||
total_wrong_answer++;
|
||||
section_wrong_answer++;
|
||||
totalSectionMarks =
|
||||
totalSectionMarks - questions[index1].wrong_marks;
|
||||
if (section.complexity_code === 1) easy_wrong_answer++;
|
||||
else if (section.complexity_code === 2) {
|
||||
medium_wrong_answer++;
|
||||
} else {
|
||||
hard_wrong_answer++;
|
||||
}
|
||||
} else {
|
||||
total_notAttempted_answer++;
|
||||
section_notAttempted_answer++;
|
||||
if (section.complexity_code === 1) easy_notAttempted_answer++;
|
||||
else if (section.complexity_code === 2) {
|
||||
medium_notAttempted_answer++;
|
||||
} else {
|
||||
hard_notAttempted_answer++;
|
||||
}
|
||||
}
|
||||
if (questions[index1].type_code === "MCQ") {
|
||||
total_MCQ++;
|
||||
if (
|
||||
questions[index1].isAttempted &&
|
||||
questions[index1].isCorrect
|
||||
) {
|
||||
total_MCQ_correct++;
|
||||
total_MCQ_attempt++;
|
||||
} else if (questions[index1].isAttempted) total_MCQ_attempt++;
|
||||
} else if (questions[index1].type_code === "MRQ") {
|
||||
total_MRQ++;
|
||||
if (
|
||||
questions[index1].isAttempted &&
|
||||
questions[index1].isCorrect
|
||||
) {
|
||||
total_MRQ_correct++;
|
||||
total_MRQ_attempt++;
|
||||
} else if (questions[index1].isAttempted) total_MRQ_attempt++;
|
||||
} else {
|
||||
total_TF++;
|
||||
if (
|
||||
questions[index1].isAttempted &&
|
||||
questions[index1].isCorrect
|
||||
) {
|
||||
total_TF_correct++;
|
||||
total_TF_attempt++;
|
||||
} else if (questions[index1].isAttempted) total_TF_attempt++;
|
||||
}
|
||||
}
|
||||
section.total_MCQ_attempt = total_MCQ_attempt;
|
||||
section.total_MRQ_attempt = total_MRQ_attempt;
|
||||
section.total_TF_attempt = total_TF_attempt;
|
||||
section.total_MCQ_correct = total_MCQ_correct;
|
||||
section.total_MRQ_correct = total_MRQ_correct;
|
||||
section.total_TF_correct = total_TF_correct;
|
||||
section.total_correct_answer = section_correct_answer;
|
||||
section.total_wrong_answer = section_wrong_answer;
|
||||
section.total_notAttempted_answer = section_notAttempted_answer;
|
||||
section.totalSectionMarks = totalSectionMarks;
|
||||
section.easy = {
|
||||
total: easy_correct + easy_notAttempted_answer + easy_wrong_answer,
|
||||
correct: easy_correct,
|
||||
wrong: easy_wrong_answer,
|
||||
notAttempted: easy_notAttempted_answer,
|
||||
};
|
||||
section.medium = {
|
||||
total:
|
||||
medium_correct + medium_notAttempted_answer + medium_wrong_answer,
|
||||
correct: medium_correct,
|
||||
wrong: medium_wrong_answer,
|
||||
notAttempted: medium_notAttempted_answer,
|
||||
};
|
||||
section.hard = {
|
||||
total: hard_notAttempted_answer + hard_wrong_answer + hard_correct,
|
||||
correct: hard_correct,
|
||||
wrong: hard_wrong_answer,
|
||||
notAttempted: hard_notAttempted_answer,
|
||||
};
|
||||
totalMarksReceived = totalMarksReceived + totalSectionMarks;
|
||||
section.total_MCQ = total_MCQ;
|
||||
section.total_MRQ = total_MRQ;
|
||||
section.total_TF = total_TF;
|
||||
sections1.push(section);
|
||||
}
|
||||
this.setState({
|
||||
examName: result.exam_name,
|
||||
sections: sections1,
|
||||
totalMarksReceived: totalMarksReceived,
|
||||
totalMarks: totalMarks,
|
||||
total_least_mark: total_least_mark,
|
||||
total_max_mark: total_max_mark,
|
||||
total_correct_answer: total_correct_answer,
|
||||
total_wrong_answer: total_wrong_answer,
|
||||
total_notAttempted_answer: total_notAttempted_answer,
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
handleCancel = (e) => {
|
||||
// console.log(e);
|
||||
this.setState({
|
||||
visible: false,
|
||||
});
|
||||
|
|
@ -69,163 +225,12 @@ class Report extends React.Component {
|
|||
}
|
||||
|
||||
handleLoadReportForExam() {
|
||||
selectorService
|
||||
.loadReport(this.state.attempt_id)
|
||||
.then((data) => {
|
||||
console.log(data);
|
||||
const result = data.result;
|
||||
let sections1 = [];
|
||||
let total_least_mark = 0;
|
||||
let total_max_mark = 0;
|
||||
let totalMarksReceived = 0;
|
||||
let totalMarks = 0;
|
||||
let total_correct_answer = 0;
|
||||
let total_wrong_answer = 0;
|
||||
let total_notAttempted_answer = 0;
|
||||
for (let index = 0; index < result.sections.length; index++) {
|
||||
let section = result.sections[index];
|
||||
let section_correct_answer = 0;
|
||||
let section_wrong_answer = 0;
|
||||
let section_notAttempted_answer = 0;
|
||||
let totalSectionMarks = 0;
|
||||
let easy_correct = 0;
|
||||
let easy_wrong_answer = 0;
|
||||
let easy_notAttempted_answer = 0;
|
||||
let medium_correct = 0;
|
||||
let medium_wrong_answer = 0;
|
||||
let medium_notAttempted_answer = 0;
|
||||
let hard_correct = 0;
|
||||
let hard_wrong_answer = 0;
|
||||
let hard_notAttempted_answer = 0;
|
||||
let total_MCQ = 0,
|
||||
total_MRQ = 0,
|
||||
total_TF = 0;
|
||||
let total_MCQ_correct = 0,
|
||||
total_MCQ_attempt = 0,
|
||||
total_MRQ_correct = 0,
|
||||
total_MRQ_attempt = 0,
|
||||
total_TF_correct = 0,
|
||||
total_TF_attempt = 0;
|
||||
totalMarks = totalMarks + result.sections[index].total_marks;
|
||||
if (total_max_mark < result.sections[index].total_marks) {
|
||||
total_max_mark = result.sections[index].total_marks;
|
||||
}
|
||||
if (total_least_mark > result.sections[index].total_nMarks) {
|
||||
total_least_mark = result.sections[index].total_nMarks;
|
||||
}
|
||||
|
||||
let questions = result.sections[index].questions;
|
||||
for (let index1 = 0; index1 < questions.length; index1++) {
|
||||
if (questions[index1].isCorrect) {
|
||||
total_correct_answer++;
|
||||
section_correct_answer++;
|
||||
totalSectionMarks =
|
||||
totalSectionMarks + questions[index1].correct_marks;
|
||||
if (section.complexity_code === 1) easy_correct++;
|
||||
else if (section.complexity_code === 2) {
|
||||
medium_correct++;
|
||||
} else {
|
||||
hard_correct++;
|
||||
}
|
||||
} else if (questions[index1].isAttempted) {
|
||||
total_wrong_answer++;
|
||||
section_wrong_answer++;
|
||||
totalSectionMarks =
|
||||
totalSectionMarks - questions[index1].wrong_marks;
|
||||
if (section.complexity_code === 1) easy_wrong_answer++;
|
||||
else if (section.complexity_code === 2) {
|
||||
medium_wrong_answer++;
|
||||
} else {
|
||||
hard_wrong_answer++;
|
||||
}
|
||||
} else {
|
||||
total_notAttempted_answer++;
|
||||
section_notAttempted_answer++;
|
||||
if (section.complexity_code === 1) easy_notAttempted_answer++;
|
||||
else if (section.complexity_code === 2) {
|
||||
medium_notAttempted_answer++;
|
||||
} else {
|
||||
hard_notAttempted_answer++;
|
||||
}
|
||||
}
|
||||
if (questions[index1].type_code === "MCQ") {
|
||||
total_MCQ++;
|
||||
if (
|
||||
questions[index1].isAttempted &&
|
||||
questions[index1].isCorrect
|
||||
) {
|
||||
total_MCQ_correct++;
|
||||
total_MCQ_attempt++;
|
||||
} else if (questions[index1].isAttempted) total_MCQ_attempt++;
|
||||
} else if (questions[index1].type_code === "MRQ") {
|
||||
total_MRQ++;
|
||||
if (
|
||||
questions[index1].isAttempted &&
|
||||
questions[index1].isCorrect
|
||||
) {
|
||||
total_MRQ_correct++;
|
||||
total_MRQ_attempt++;
|
||||
} else if (questions[index1].isAttempted) total_MRQ_attempt++;
|
||||
} else {
|
||||
total_TF++;
|
||||
if (
|
||||
questions[index1].isAttempted &&
|
||||
questions[index1].isCorrect
|
||||
) {
|
||||
total_TF_correct++;
|
||||
total_TF_attempt++;
|
||||
} else if (questions[index1].isAttempted) total_TF_attempt++;
|
||||
}
|
||||
}
|
||||
section.total_MCQ_attempt = total_MCQ_attempt;
|
||||
section.total_MRQ_attempt = total_MRQ_attempt;
|
||||
section.total_TF_attempt = total_TF_attempt;
|
||||
section.total_MCQ_correct = total_MCQ_correct;
|
||||
section.total_MRQ_correct = total_MRQ_correct;
|
||||
section.total_TF_correct = total_TF_correct;
|
||||
section.total_correct_answer = section_correct_answer;
|
||||
section.total_wrong_answer = section_wrong_answer;
|
||||
section.total_notAttempted_answer = section_notAttempted_answer;
|
||||
section.totalSectionMarks = totalSectionMarks;
|
||||
section.easy = {
|
||||
total: easy_correct + easy_notAttempted_answer + easy_wrong_answer,
|
||||
correct: easy_correct,
|
||||
wrong: easy_wrong_answer,
|
||||
notAttempted: easy_notAttempted_answer,
|
||||
};
|
||||
section.medium = {
|
||||
total:
|
||||
medium_correct + medium_notAttempted_answer + medium_wrong_answer,
|
||||
correct: medium_correct,
|
||||
wrong: medium_wrong_answer,
|
||||
notAttempted: medium_notAttempted_answer,
|
||||
};
|
||||
section.hard = {
|
||||
total: hard_notAttempted_answer + hard_wrong_answer + hard_correct,
|
||||
correct: hard_correct,
|
||||
wrong: hard_wrong_answer,
|
||||
notAttempted: hard_notAttempted_answer,
|
||||
};
|
||||
totalMarksReceived = totalMarksReceived + totalSectionMarks;
|
||||
section.total_MCQ = total_MCQ;
|
||||
section.total_MRQ = total_MRQ;
|
||||
section.total_TF = total_TF;
|
||||
sections1.push(section);
|
||||
}
|
||||
this.setState({
|
||||
examName: result.exam_name,
|
||||
sections: sections1,
|
||||
totalMarksReceived: totalMarksReceived,
|
||||
totalMarks: totalMarks,
|
||||
total_least_mark: total_least_mark,
|
||||
total_max_mark: total_max_mark,
|
||||
total_correct_answer: total_correct_answer,
|
||||
total_wrong_answer: total_wrong_answer,
|
||||
total_notAttempted_answer: total_notAttempted_answer,
|
||||
});
|
||||
console.log(data);
|
||||
});
|
||||
selectorService.loadAllExamAttempts(this.state.examId).then((data) => {
|
||||
this.setState({ attemptIds: data });
|
||||
this.setState({ selectedAttemptId: data[0] });
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
const { Link } = Anchor;
|
||||
const { Option } = Select;
|
||||
|
|
@ -299,9 +304,7 @@ class Report extends React.Component {
|
|||
}
|
||||
key={secIndex}
|
||||
>
|
||||
|
||||
<Row>
|
||||
|
||||
<Col span={20} offset={1}>
|
||||
<div style={{ width: "100%", marginTop: "32px" }}>
|
||||
<h3
|
||||
|
|
@ -1301,7 +1304,7 @@ class Report extends React.Component {
|
|||
style={{
|
||||
fontSize: "24px",
|
||||
fontWeight: 700,
|
||||
marginBottom: "24px",
|
||||
marginBottom: "16px",
|
||||
color: "#1a1a1a",
|
||||
textAlign: "center",
|
||||
letterSpacing: "0.3px",
|
||||
|
|
@ -1310,6 +1313,31 @@ class Report extends React.Component {
|
|||
{this.state.examName} — Report
|
||||
</div>
|
||||
|
||||
{/* ✅ ATTEMPT TABS */}
|
||||
{this.state.attemptIds && this.state.attemptIds.length > 0 ? (
|
||||
<Tabs
|
||||
centered
|
||||
activeKey={this.state.selectedAttemptId?.toString()}
|
||||
onChange={(key) => this.setState({ selectedAttemptId: parseInt(key) })}
|
||||
style={{ marginBottom: "32px" }}
|
||||
>
|
||||
{this.state.attemptIds.map((attemptId, index) => (
|
||||
<TabPane tab={`Attempt ${this.state.attemptIds.length - (index)}`} key={attemptId.toString()} />
|
||||
))}
|
||||
</Tabs>
|
||||
) : (
|
||||
<div
|
||||
style={{
|
||||
textAlign: "center",
|
||||
marginBottom: "32px",
|
||||
color: "#999",
|
||||
fontSize: "14px",
|
||||
}}
|
||||
>
|
||||
No attempts found for this exam.
|
||||
</div>
|
||||
)}
|
||||
|
||||
{/* OVERALL SECTION */}
|
||||
<div
|
||||
style={{
|
||||
|
|
@ -1333,12 +1361,6 @@ class Report extends React.Component {
|
|||
transition: "transform 0.2s ease",
|
||||
overflow: "hidden",
|
||||
}}
|
||||
onMouseEnter={(e) =>
|
||||
(e.currentTarget.style.transform = "translateY(-4px)")
|
||||
}
|
||||
onMouseLeave={(e) =>
|
||||
(e.currentTarget.style.transform = "translateY(0)")
|
||||
}
|
||||
>
|
||||
<div
|
||||
style={{
|
||||
|
|
@ -1378,7 +1400,6 @@ class Report extends React.Component {
|
|||
type: "bar",
|
||||
x: secNames,
|
||||
y: secMarks,
|
||||
orientation: "v",
|
||||
marker: { color: "#1677ff" },
|
||||
},
|
||||
]}
|
||||
|
|
@ -1392,7 +1413,6 @@ class Report extends React.Component {
|
|||
],
|
||||
showgrid: false,
|
||||
zeroline: false,
|
||||
showline: false,
|
||||
},
|
||||
xaxis: { tickfont: { size: 12 } },
|
||||
showlegend: false,
|
||||
|
|
@ -1417,12 +1437,6 @@ class Report extends React.Component {
|
|||
transition: "transform 0.2s ease",
|
||||
overflow: "hidden",
|
||||
}}
|
||||
onMouseEnter={(e) =>
|
||||
(e.currentTarget.style.transform = "translateY(-4px)")
|
||||
}
|
||||
onMouseLeave={(e) =>
|
||||
(e.currentTarget.style.transform = "translateY(0)")
|
||||
}
|
||||
>
|
||||
<div
|
||||
style={{
|
||||
|
|
@ -1502,7 +1516,6 @@ class Report extends React.Component {
|
|||
</Layout>
|
||||
</Layout>
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -93,6 +93,7 @@ export const selectorService = {
|
|||
pauseExam,
|
||||
getAllUser,
|
||||
loadReport,
|
||||
loadAllExamAttempts,
|
||||
getAllBatchForClass,
|
||||
addBatchesToExam,
|
||||
detachBatchesFromExam,
|
||||
|
|
@ -130,7 +131,7 @@ async function stopPublishedExam(examId) {
|
|||
}
|
||||
}
|
||||
|
||||
function loadReport(examId) {
|
||||
function getAllAttemptedExams(examId) {
|
||||
const currentUser = authenticationService.currentUserValue;
|
||||
const requestOptions = {
|
||||
method: "GET",
|
||||
|
|
@ -169,6 +170,94 @@ function loadReport(examId) {
|
|||
});
|
||||
}
|
||||
|
||||
export function loadAllExamAttempts(examId, pageNumber = 1, pageSize = 100) {
|
||||
const currentUser = authenticationService.currentUserValue;
|
||||
|
||||
if (!currentUser) {
|
||||
console.error("No authenticated user found.");
|
||||
return Promise.reject("User not authenticated");
|
||||
}
|
||||
|
||||
// ✅ Ensure default language
|
||||
if (!currentUser.language_code) {
|
||||
currentUser.language_code = "En";
|
||||
currentUser.language_name = "English";
|
||||
}
|
||||
|
||||
const requestOptions = {
|
||||
method: "GET",
|
||||
headers: {
|
||||
"Access-Control-Allow-Origin": "*",
|
||||
Accept: "application/json",
|
||||
"Content-Type": "application/json",
|
||||
Authorization: "Bearer " + currentUser.jwtToken,
|
||||
},
|
||||
};
|
||||
|
||||
const url =
|
||||
`https://api.practicekea.com/api-student/v1/${currentUser.language_code}` +
|
||||
`/Batches/${currentUser.batch_id}/AttemptedExams?pageNumber=${pageNumber}&pageSize=${pageSize}`;
|
||||
|
||||
return fetch(url, requestOptions)
|
||||
.then((response) => {
|
||||
if (!response.ok) throw new Error(`HTTP ${response.status}`);
|
||||
return response.json();
|
||||
})
|
||||
.then((data) => {
|
||||
const attemptIds =
|
||||
data?.result?.exams
|
||||
?.filter((a) => a.exam_id === examId)
|
||||
?.map((a) => a.id) || [];
|
||||
|
||||
console.log(`✅ Attempt IDs for Exam ${examId}:`, attemptIds);
|
||||
|
||||
return attemptIds;
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error("❌ Error fetching attempt IDs:", error);
|
||||
return [];
|
||||
});
|
||||
}
|
||||
|
||||
export async function loadReport(attemptId) {
|
||||
const currentUser = authenticationService.currentUserValue;
|
||||
|
||||
if (!currentUser) {
|
||||
console.error("❌ No authenticated user found.");
|
||||
return Promise.reject("User not authenticated");
|
||||
}
|
||||
|
||||
// ✅ Default language fallback
|
||||
const languageCode = currentUser.language_code || "En";
|
||||
const token = currentUser.jwtToken;
|
||||
|
||||
const url = `https://api.practicekea.com/api-student/v1/${languageCode}/ExamAttempts/${attemptId}/Report`;
|
||||
|
||||
const headers = {
|
||||
Accept: "application/json",
|
||||
"Content-Type": "application/json",
|
||||
Authorization: `Bearer ${token}`,
|
||||
};
|
||||
|
||||
try {
|
||||
const response = await fetch(url, { method: "GET", headers });
|
||||
|
||||
if (!response.ok) {
|
||||
const errorText = `HTTP ${response.status} - ${response.statusText}`;
|
||||
console.error("❌ Failed to fetch report:", errorText);
|
||||
throw new Error(errorText);
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
|
||||
console.log("✅ Report data for attempt:", attemptId, data);
|
||||
return data;
|
||||
} catch (error) {
|
||||
console.error("❌ Error loading report:", error);
|
||||
return null; // return null to keep it safe for downstream code
|
||||
}
|
||||
}
|
||||
|
||||
async function pauseExam(attemptId) {
|
||||
const currentUser = authenticationService.currentUserValue;
|
||||
if (!currentUser?.jwtToken) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue