minor optimizations

This commit is contained in:
skillens.ai 2025-11-08 16:15:01 +05:30
parent fc8095c263
commit 57066232ba
6 changed files with 673 additions and 691 deletions

View File

@ -1,72 +1,72 @@
robots.txt,1761396900570,bfe106a3fb878dc83461c86818bf74fc1bdc7f28538ba613cd3e775516ce8b49 robots.txt,1761396900570,bfe106a3fb878dc83461c86818bf74fc1bdc7f28538ba613cd3e775516ce8b49
manifest.json,1761396900568,a9350a49aaac9fe94d3dd77b8270cc998c04ab97944a606189675022431faa51 manifest.json,1761396900568,a9350a49aaac9fe94d3dd77b8270cc998c04ab97944a606189675022431faa51
favicon.svg,1761396900561,a2a4880301751061a600b0bfc5c26fc413aed41e581516c4fa976bcb7fff6663 favicon.svg,1761396900561,a2a4880301751061a600b0bfc5c26fc413aed41e581516c4fa976bcb7fff6663
service-worker.js,1762457770128,ad69cb1c0350a03ad678222d00192749ed6ff25ed003315b5e237ae32768e74f service-worker.js,1762592063259,2e3873d05399b33f4803ec73fde0b475540ac8be3c1490e8b39f6a198f5d7a8c
precache-manifest.c9ff8b878ec56029589dbb8855056c09.js,1762457770127,37f2f3562b774bdfc86acb6156e7190a9bf37539fd49faca9ff12307349280eb index.html,1762592063258,e419f1600979d8b387a78db65e47df9bfe8919f5e551adeab77aebc7618b38ec
static/media/tru-fals-icon.d0b962d8.svg,1762457770050,a1deab7e5db8e8a94a9c5812dcde5f8cbfbe5da790da8500bf106980b9c79c33 asset-manifest.json,1762592063260,9ca3dc9c7f54048d57a51c45a5c60d7fab8a32099f74145b0b4c5ca656ffb88c
static/media/sub-ques-icon.366b4f1e.svg,1762457770053,8e397611007ec5db7581a4c1bcca006950390ddf652cae209bb3973a645af425 static/media/tru-fals-icon.d0b962d8.svg,1762592063173,a1deab7e5db8e8a94a9c5812dcde5f8cbfbe5da790da8500bf106980b9c79c33
static/media/student-engaged.53fb7b0b.svg,1762457770047,5f8e01d1a5efcbdf3aa00ed07de843ab84404a28b672ca91f4d70d89fa8b37cf static/media/sub-ques-icon.366b4f1e.svg,1762592063173,8e397611007ec5db7581a4c1bcca006950390ddf652cae209bb3973a645af425
static/media/translate.610ad011.svg,1762457770053,c06f8a3d0c976b02429ce805d8a4944571ab0128ed2ce49c2d3ca134511ed120 precache-manifest.504fbcf3e83aa113d58cf42fe6b1c2c9.js,1762592063260,e322fce133be50446669bcf9e00d1ce71728b905d2a42924117ffc8277bfdd93
asset-manifest.json,1762457770128,b1cc877495546d439e8e8cbd2d1d5c0ea9605a261a30acd1344544bb77a88da3 static/media/student-engaged.53fb7b0b.svg,1762592063171,5f8e01d1a5efcbdf3aa00ed07de843ab84404a28b672ca91f4d70d89fa8b37cf
static/media/quizexam.5545802e.svg,1762457770041,dfc1278bfcd264264a4d0e0e0247c229335abf0573439c5e9829c8607aacd569 static/media/questions-icon.3d3c1aaf.svg,1762592063169,197f459a359b00c1c44b6ddd71cbc9160f593d1fe08534e3711e9d72a2956ef1
static/media/question.0c505ed9.svg,1762457770041,29938066f93476c487414bb7a5dd5227d891c8ab8e115a74a7e7ffccd8d87b36 static/media/question.0c505ed9.svg,1762592063164,29938066f93476c487414bb7a5dd5227d891c8ab8e115a74a7e7ffccd8d87b36
static/media/practice.f05e6f00.svg,1762457770042,13b094bcbbb8c50906b1ee0ce68305059e99319464dd4147b4c2194dbb460475 static/media/quizexam.5545802e.svg,1762592063164,dfc1278bfcd264264a4d0e0e0247c229335abf0573439c5e9829c8607aacd569
static/media/PracticeKiaLogo.a8336af5.svg,1762457769998,1a592518bcfabb2f86669d06ae2fb7b2948bbdbfaf5a80d138ab30f4e482a0f8 static/media/translate.610ad011.svg,1762592063176,c06f8a3d0c976b02429ce805d8a4944571ab0128ed2ce49c2d3ca134511ed120
static/media/questions-icon.3d3c1aaf.svg,1762457770047,197f459a359b00c1c44b6ddd71cbc9160f593d1fe08534e3711e9d72a2956ef1 static/media/PracticeKiaLogo.a8336af5.svg,1762592063116,1a592518bcfabb2f86669d06ae2fb7b2948bbdbfaf5a80d138ab30f4e482a0f8
static/media/perf-icon.1597a235.svg,1762457770048,7183482b785de425506f49deb27bba02e906132ac7ce5af01f7da8452ef64f28 static/media/practice.f05e6f00.svg,1762592063164,13b094bcbbb8c50906b1ee0ce68305059e99319464dd4147b4c2194dbb460475
static/media/practice-icon.bf603115.svg,1762457770047,27b6a729d91914d899f4b3c1f817e26ac58d2ec0be54dc9b93c01f28adcdd00c static/media/practice-icon.bf603115.svg,1762592063169,27b6a729d91914d899f4b3c1f817e26ac58d2ec0be54dc9b93c01f28adcdd00c
static/media/OdiSVGlogo.f0834bb1.svg,1762457770003,3ec1cab31a32db378894d796afedaee7c35f8ff99dfb1039b0bb757225a47235 static/media/performance.88855f12.svg,1762592063168,03fc1b19005084049382091745d3f1f29a447763091ad4a9bc5d097c338671c9
static/media/mul-res-icon.8ef3b097.svg,1762457770048,1f0a79350cb5546361ef02af1657ad36efeff833fd7bb61db88a20e127a290b4 static/media/mul-res-icon.8ef3b097.svg,1762592063173,1f0a79350cb5546361ef02af1657ad36efeff833fd7bb61db88a20e127a290b4
static/media/performance.88855f12.svg,1762457770045,03fc1b19005084049382091745d3f1f29a447763091ad4a9bc5d097c338671c9 static/media/mul-cho-icon.b3dc9ea9.svg,1762592063173,e8edbceb0eb49f7629cf0b8edf599f9347acbf0c6d1df2fa6145cbed03f37e1f
static/media/locale-icon.b3596424.svg,1762457770046,68618c76952aa4c5f2623bb010514871688960bb3b9edbcda0eab7eb75442054 static/media/perf-icon.1597a235.svg,1762592063173,7183482b785de425506f49deb27bba02e906132ac7ce5af01f7da8452ef64f28
static/media/KaTeX_Typewriter-Regular.b8b8393d.woff2,1762457770037,54a0126379ac9b84c5745f17cd0ac9bf11532ea04c39d387d165a71caf77f8d2 static/media/locale-icon.b3596424.svg,1762592063169,68618c76952aa4c5f2623bb010514871688960bb3b9edbcda0eab7eb75442054
static/media/mul-cho-icon.b3dc9ea9.svg,1762457770050,e8edbceb0eb49f7629cf0b8edf599f9347acbf0c6d1df2fa6145cbed03f37e1f static/media/OdiSVGlogo.f0834bb1.svg,1762592063125,3ec1cab31a32db378894d796afedaee7c35f8ff99dfb1039b0bb757225a47235
static/media/KaTeX_Size4-Regular.61522cd3.woff2,1762457770038,65378bc44e4f908ff3e7d3b5a36f1351cd29dbed446fcf86ebe0655afefe9ea8 static/media/KaTeX_Typewriter-Regular.b8b8393d.woff2,1762592063160,54a0126379ac9b84c5745f17cd0ac9bf11532ea04c39d387d165a71caf77f8d2
static/media/KaTeX_Typewriter-Regular.0e046058.woff,1762457770037,82cff08904dbae816ffe38a914d56622c9b677680bba6a629e584a19ffb6e873 static/media/KaTeX_Size4-Regular.61522cd3.woff2,1762592063160,65378bc44e4f908ff3e7d3b5a36f1351cd29dbed446fcf86ebe0655afefe9ea8
index.html,1762457770081,6cdb9fbf930842444b429f61fc721f122cf1b751cf77932af30c2f02f98b6c9c static/media/KaTeX_Typewriter-Regular.0e046058.woff,1762592063160,82cff08904dbae816ffe38a914d56622c9b677680bba6a629e584a19ffb6e873
static/media/KaTeX_Size3-Regular.9108a400.woff2,1762457770032,01dd9815f099722e1f7958ab976d9c0ee81615fa39699daf775fdd8a953ff8b1 static/media/KaTeX_Size4-Regular.3045a61f.woff,1762592063160,c397a0db368b7313fdae7297ab0efb8f25f1bc12afc4ce691dabf8e0918017fa
static/media/KaTeX_Size3-Regular.963af864.ttf,1762457770034,f94a1dddcfc1df9beb0ecfaf0a73c3df96009a8d7e8a098ada1aa3a39e9ca678 static/media/KaTeX_Size3-Regular.963af864.ttf,1762592063160,f94a1dddcfc1df9beb0ecfaf0a73c3df96009a8d7e8a098ada1aa3a39e9ca678
static/media/KaTeX_Size3-Regular.4de844d4.woff,1762457770034,4398fd91cc5e6b45e4293262c5361ada3a54a24aff0d7a38bc70d3a242f0ef27 static/media/KaTeX_Size3-Regular.9108a400.woff2,1762592063156,01dd9815f099722e1f7958ab976d9c0ee81615fa39699daf775fdd8a953ff8b1
static/media/KaTeX_Size2-Regular.95a1da91.woff2,1762457770032,47c15e4348ddda442adae347550b466a6325266ccf8d7a4793481682b5bdf4f2 static/media/KaTeX_Size4-Regular.27a23ee6.ttf,1762592063162,df3392005f1d7a6f9bd8cbc0d1e0f06c147944fdd86e3316fd38d4f55f8e4a9f
static/media/KaTeX_Size2-Regular.b0628bfd.woff,1762457770034,e23e150fad1a0531631c97f0170716a09b51211d3ad23c84794647ef603a19de static/media/KaTeX_Size2-Regular.b0628bfd.woff,1762592063152,e23e150fad1a0531631c97f0170716a09b51211d3ad23c84794647ef603a19de
static/media/KaTeX_Size2-Regular.1fdda0e5.ttf,1762457770033,1685351b16075c0e5c880bbb9c6a3b4c5161ac3c852cc8a67963a37d7311b2b9 static/media/KaTeX_Size3-Regular.4de844d4.woff,1762592063161,4398fd91cc5e6b45e4293262c5361ada3a54a24aff0d7a38bc70d3a242f0ef27
static/media/KaTeX_Size1-Regular.82ef26dc.woff2,1762457770030,353eb899698a648194c4bfabf250818092ebfdee0f3078346c3acb4194797f48 static/media/KaTeX_Size1-Regular.4788ba5b.woff,1762592063155,8e8412c0abbcb89ea321e50ec95b55bfe9d77486c84664fbca5b9b101bab7f3d
static/media/KaTeX_Size1-Regular.4788ba5b.woff,1762457770032,8e8412c0abbcb89ea321e50ec95b55bfe9d77486c84664fbca5b9b101bab7f3d static/media/KaTeX_Size2-Regular.95a1da91.woff2,1762592063151,47c15e4348ddda442adae347550b466a6325266ccf8d7a4793481682b5bdf4f2
static/media/KaTeX_Script-Regular.a82fa2a7.woff,1762457770032,84a67d2df883ac10ca688757491e777b64ef90f94ca712cc23b64a8c97de68af static/media/KaTeX_Size2-Regular.1fdda0e5.ttf,1762592063153,1685351b16075c0e5c880bbb9c6a3b4c5161ac3c852cc8a67963a37d7311b2b9
static/media/KaTeX_Script-Regular.a189c37d.ttf,1762457770033,ec985a3df1d229119c660bfaa16e4be32ec7391f09d9c1e220cef2b149745a1a static/media/KaTeX_Size1-Regular.82ef26dc.woff2,1762592063149,353eb899698a648194c4bfabf250818092ebfdee0f3078346c3acb4194797f48
static/media/KaTeX_Size1-Regular.0d8d9204.ttf,1762457770038,535e05d118e935a5a1ce5be35dc03a4b20a69ccc5f25210206deaed676c16a64 static/media/KaTeX_Script-Regular.1b3161eb.woff2,1762592063149,a5bfd2c095c085b45d10126c94e5cc116a0ea8fd7946a49b54a95da414535890
static/media/KaTeX_Script-Regular.1b3161eb.woff2,1762457770032,a5bfd2c095c085b45d10126c94e5cc116a0ea8fd7946a49b54a95da414535890 static/media/KaTeX_SansSerif-Regular.5f8637ee.woff,1762592063145,d0d8050720c1b4cedb8cfe1feb22dc45fc0382ff62b5504c7fc09e1c24652544
static/media/KaTeX_SansSerif-Regular.5f8637ee.woff,1762457770024,d0d8050720c1b4cedb8cfe1feb22dc45fc0382ff62b5504c7fc09e1c24652544 static/media/KaTeX_Size1-Regular.0d8d9204.ttf,1762592063155,535e05d118e935a5a1ce5be35dc03a4b20a69ccc5f25210206deaed676c16a64
static/media/KaTeX_Size4-Regular.27a23ee6.ttf,1762457770038,df3392005f1d7a6f9bd8cbc0d1e0f06c147944fdd86e3316fd38d4f55f8e4a9f static/media/KaTeX_Script-Regular.a189c37d.ttf,1762592063158,ec985a3df1d229119c660bfaa16e4be32ec7391f09d9c1e220cef2b149745a1a
static/media/KaTeX_SansSerif-Italic.f60b4a34.ttf,1762457770030,cf5a68a17d022639016a9da976bb6a4ab05e06ccd74ce712db3009adcf34fd32 static/media/KaTeX_Script-Regular.a82fa2a7.woff,1762592063151,84a67d2df883ac10ca688757491e777b64ef90f94ca712cc23b64a8c97de68af
static/media/KaTeX_SansSerif-Regular.1ac3ed6e.woff2,1762457770039,2836d2dafad00dd468d7e2b8f305eeb3af4f434980bc7efb3c696e6968cec09b static/media/KaTeX_SansSerif-Regular.1ac3ed6e.woff2,1762592063149,2836d2dafad00dd468d7e2b8f305eeb3af4f434980bc7efb3c696e6968cec09b
static/media/KaTeX_SansSerif-Regular.3243452e.ttf,1762457770030,89e5632b7b1d0a3b94bcb71efd36838bb407d575f0212a8d3499b3c3c0fcb12c static/media/KaTeX_SansSerif-Regular.3243452e.ttf,1762592063146,89e5632b7b1d0a3b94bcb71efd36838bb407d575f0212a8d3499b3c3c0fcb12c
static/media/KaTeX_SansSerif-Bold.ad546b47.woff2,1762457770039,9a2e88c7f50de44ea6842c0dc687cd0fc54cff06a47bf6408cf1eba76e25bb81 static/media/KaTeX_SansSerif-Italic.ef725de5.woff,1762592063149,9476b240a74b872f7cbe8517997d68df0c375e3d52a58e165f893a7191f54e86
static/media/KaTeX_SansSerif-Italic.e934cbc8.woff2,1762457770021,2a474c036e86d3fcabb4f8d68318ccce7e5e103f27f804e1fd74a1646ed15cae static/media/KaTeX_SansSerif-Italic.f60b4a34.ttf,1762592063149,cf5a68a17d022639016a9da976bb6a4ab05e06ccd74ce712db3009adcf34fd32
static/media/KaTeX_SansSerif-Italic.ef725de5.woff,1762457770030,9476b240a74b872f7cbe8517997d68df0c375e3d52a58e165f893a7191f54e86 static/media/KaTeX_SansSerif-Bold.ad546b47.woff2,1762592063143,9a2e88c7f50de44ea6842c0dc687cd0fc54cff06a47bf6408cf1eba76e25bb81
static/media/KaTeX_Size4-Regular.3045a61f.woff,1762457770037,c397a0db368b7313fdae7297ab0efb8f25f1bc12afc4ce691dabf8e0918017fa static/media/KaTeX_SansSerif-Italic.e934cbc8.woff2,1762592063155,2a474c036e86d3fcabb4f8d68318ccce7e5e103f27f804e1fd74a1646ed15cae
static/media/KaTeX_SansSerif-Bold.0e897d27.woff,1762457770020,06df349cd9f09f229c964190cea7b3487aefe84f055207793ddf3e83a3db281a static/media/KaTeX_SansSerif-Bold.f2ac7312.ttf,1762592063151,a248317ab48e3dc924f1c87b13a27cc5e6d887272d02b1c1cab72795de2c9591
static/media/logo.0dd03933.png,1762457770003,b9716ed1f565a052edc1154a207334de81856339e8ca43d5d8f51041f3785085 static/media/KaTeX_SansSerif-Bold.0e897d27.woff,1762592063144,06df349cd9f09f229c964190cea7b3487aefe84f055207793ddf3e83a3db281a
static/media/KaTeX_SansSerif-Bold.f2ac7312.ttf,1762457770029,a248317ab48e3dc924f1c87b13a27cc5e6d887272d02b1c1cab72795de2c9591 static/media/logo.0dd03933.png,1762592063125,b9716ed1f565a052edc1154a207334de81856339e8ca43d5d8f51041f3785085
static/media/KaTeX_Typewriter-Regular.6bf42875.ttf,1762457770039,3f8e9a7e1c8f9835a5fdbf303b775991de8d868a7b8ee8eb1f32b0b01ed1b90b static/media/KaTeX_Typewriter-Regular.6bf42875.ttf,1762592063161,3f8e9a7e1c8f9835a5fdbf303b775991de8d868a7b8ee8eb1f32b0b01ed1b90b
static/media/KaTeX_Math-Italic.ed7aea12.woff,1762457770019,7f65f9be10f45caa82382689fe21bf358899ac28002cbd44d3696eea1d6affee static/media/KaTeX_Math-Italic.ed7aea12.woff,1762592063143,7f65f9be10f45caa82382689fe21bf358899ac28002cbd44d3696eea1d6affee
static/media/KaTeX_Math-Italic.fe5ed587.ttf,1762457770019,1cf503e99eee1d6931a59f03a2718c879571c4bc878d8c5bb310c057e15fcffa static/media/KaTeX_Math-Italic.fe5ed587.ttf,1762592063145,1cf503e99eee1d6931a59f03a2718c879571c4bc878d8c5bb310c057e15fcffa
static/media/KaTeX_Fraktur-Regular.f9e6a99f.woff2,1762457770011,30c5ebf8d693d9a6db88068bd72eca6aaab2313d91682e147db6ae4d43efc013 static/media/KaTeX_Fraktur-Regular.f9e6a99f.woff2,1762592063132,30c5ebf8d693d9a6db88068bd72eca6aaab2313d91682e147db6ae4d43efc013
static/media/KaTeX_Fraktur-Regular.e435cda5.woff,1762457770012,1ed825d761d10b653432e13606827af1a1621353e75a2bb10c9fdc3f9568cbf2 static/media/KaTeX_Fraktur-Regular.e435cda5.woff,1762592063133,1ed825d761d10b653432e13606827af1a1621353e75a2bb10c9fdc3f9568cbf2
static/media/KaTeX_Fraktur-Regular.97a699d8.ttf,1762457770012,c84e9b333b1c3dfd0edf947b0166c4436bded08309d47955b99fa4e43177bdaf static/media/KaTeX_Fraktur-Bold.796f3797.woff2,1762592063132,440fe396e2bc189c86a666bed548bed61a5482c3afaa04eb41e5b4e977f9accd
static/media/KaTeX_Fraktur-Bold.b9d7c449.ttf,1762457770011,05ef840382f3b9a91d6a08c707c5288ed173a0623b5f986c92d03afd59d2972e static/media/KaTeX_Fraktur-Regular.97a699d8.ttf,1762592063133,c84e9b333b1c3dfd0edf947b0166c4436bded08309d47955b99fa4e43177bdaf
static/media/KaTeX_Fraktur-Bold.796f3797.woff2,1762457770012,440fe396e2bc189c86a666bed548bed61a5482c3afaa04eb41e5b4e977f9accd static/media/KaTeX_Fraktur-Bold.b9d7c449.ttf,1762592063126,05ef840382f3b9a91d6a08c707c5288ed173a0623b5f986c92d03afd59d2972e
static/media/KaTeX_Fraktur-Bold.40934fc0.woff,1762457770005,8a9c9bd2084df9282df1c63c593dda4c662d2a8111d09956d5bf2c92e6213f4a static/media/KaTeX_Caligraphic-Regular.e6fb499f.ttf,1762592063132,7d6aca5b5f7d749a0fd1f9e4e7449b1b79a347fd08696f5cadc303ea5e3f3f1c
static/media/KaTeX_Caligraphic-Regular.a25140fb.woff,1762457770011,41d8909c711af0e11e9df1fa5bbd8c14071e22130fbac9b6518e920386152038 static/media/KaTeX_Caligraphic-Regular.a25140fb.woff,1762592063126,41d8909c711af0e11e9df1fa5bbd8c14071e22130fbac9b6518e920386152038
static/media/KaTeX_Caligraphic-Regular.08d95d99.woff2,1762457770004,d4574df1e20cd3519662aff34dcdfa42339c48bfd9dd675d804723794949a8c8 static/media/KaTeX_Fraktur-Bold.40934fc0.woff,1762592063132,8a9c9bd2084df9282df1c63c593dda4c662d2a8111d09956d5bf2c92e6213f4a
static/media/KaTeX_Caligraphic-Regular.e6fb499f.ttf,1762457770011,7d6aca5b5f7d749a0fd1f9e4e7449b1b79a347fd08696f5cadc303ea5e3f3f1c static/media/KaTeX_Caligraphic-Regular.08d95d99.woff2,1762592063129,d4574df1e20cd3519662aff34dcdfa42339c48bfd9dd675d804723794949a8c8
static/media/KaTeX_Caligraphic-Bold.a9e9b095.woff2,1762457770004,80906c4f0be4d8dccfbb0d3b8cafe79b6ba8bc3200c3c9f060b5616a4d8dec39 static/media/KaTeX_Caligraphic-Bold.a9e9b095.woff2,1762592063132,80906c4f0be4d8dccfbb0d3b8cafe79b6ba8bc3200c3c9f060b5616a4d8dec39
static/media/KaTeX_Caligraphic-Bold.de2ba279.woff,1762457770003,4e80ee5909ce3b5b965be5b11b75919d58dc6633d372869dbbbbd13f93dbd662 static/media/KaTeX_Caligraphic-Bold.de2ba279.woff,1762592063132,4e80ee5909ce3b5b965be5b11b75919d58dc6633d372869dbbbbd13f93dbd662
static/media/GrayscalePKLogo.6bb74404.svg,1762457770003,576b38300e49eda6407adce420001e7ad0333cca317eb668aff457c3258dcca2 static/media/KaTeX_Caligraphic-Bold.497bf407.ttf,1762592063126,50b8dd982d91b531aaf3009e30dc42e72635d476bd0e3d6fe9ba2bdb5c7a036f
static/media/KaTeX_Caligraphic-Bold.497bf407.ttf,1762457770003,50b8dd982d91b531aaf3009e30dc42e72635d476bd0e3d6fe9ba2bdb5c7a036f static/media/GrayscalePKLogo.6bb74404.svg,1762592063123,576b38300e49eda6407adce420001e7ad0333cca317eb668aff457c3258dcca2
static/media/getFetch.2b2b7da4.cjs,1762457770003,b2d82abee5b8af22b81d67fc20b3feef1eaaf04585dbc24ec755e3304c469096 static/media/getFetch.2b2b7da4.cjs,1762592063123,b2d82abee5b8af22b81d67fc20b3feef1eaaf04585dbc24ec755e3304c469096
static/media/feature-2.36f8d7e2.webp,1762457770003,fc1c038517abf3b731ff3a4675cbaf1a6aa1150ca970762dd0ffc4199b92b75c static/media/feature-2.36f8d7e2.webp,1762592063125,fc1c038517abf3b731ff3a4675cbaf1a6aa1150ca970762dd0ffc4199b92b75c
static/media/exam-icon.10f48851.svg,1762457770046,b766e9975582af716870a844f8deabd4d80e33a47c400d36cee6bc4840062693 static/media/exam-icon.10f48851.svg,1762592063169,b766e9975582af716870a844f8deabd4d80e33a47c400d36cee6bc4840062693
assets/images/locale-icon.svg,1761396900579,610498c7ca3b5800d268b1654473f0b1d79de2c6493a7c6982bef90456d35179 assets/images/locale-icon.svg,1761396900579,610498c7ca3b5800d268b1654473f0b1d79de2c6493a7c6982bef90456d35179
assets/images/icons/icon-96x96.png,1761396900602,43a8ac4df8945d7a44e3e4911032214f01eaea92267baa31a93e77942b424c73 assets/images/icons/icon-96x96.png,1761396900602,43a8ac4df8945d7a44e3e4911032214f01eaea92267baa31a93e77942b424c73
assets/images/icons/icon-72x72.png,1761396900600,a42f1df8ab0a8fe921573976d49158e1a2c52fe430460c869947f221aba30a94 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-152x152.png,1761396900590,95a5a117fbd5640f1f1f13c9923398545e3f5b66734ff6c8ce67c942319a8b67
assets/images/icons/icon-144x144.png,1761396900588,e42168e0e1abb5bd7811ebe1b5a2183d0ce287bf266c2efd8d97a23d23ca8d00 assets/images/icons/icon-144x144.png,1761396900588,e42168e0e1abb5bd7811ebe1b5a2183d0ce287bf266c2efd8d97a23d23ca8d00
assets/images/icons/icon-128x128.png,1761396900585,45b577c86e7c03fef868bfa3f96810c5b36f31156c32c0d85620d2e6fe1fc85b assets/images/icons/icon-128x128.png,1761396900585,45b577c86e7c03fef868bfa3f96810c5b36f31156c32c0d85620d2e6fe1fc85b
static/media/delete-icon.da38c0f4.svg,1762457770053,8078772ee88a0588989eec477da1ca949430f3f06efaa9c2db860b74c65f6722 static/media/dashboard.8ec7624b.svg,1762592063164,5a5b5d4bf416d414842bd5eac30432b592342a392450e52943f067db4077bec1
static/media/classes.3b73dba0.svg,1762457770042,2abfbb7015d5bccb8640fd0614d3782c048672c9543fe17d127db63287ac141d static/media/delete-icon.da38c0f4.svg,1762592063182,8078772ee88a0588989eec477da1ca949430f3f06efaa9c2db860b74c65f6722
static/media/class-icon.6afd34b5.svg,1762457770046,a2f492c6c9c7b5201773062dfe90c238c12bc00bec097dc06141201f02b9588e static/media/classes.3b73dba0.svg,1762592063165,2abfbb7015d5bccb8640fd0614d3782c048672c9543fe17d127db63287ac141d
static/media/Checkmark.1356376c.svg,1762457770061,aa56f27c8198bcae3236a881a7134cd3b7d3dbb048ec75654e8ce2d4710ce027 static/media/batch.3fcff66e.svg,1762592063165,f29038480286f091e3805a43f90ca5a70a13bbcef3076831e0b29b1fcb61d862
static/media/dashboard.8ec7624b.svg,1762457770039,5a5b5d4bf416d414842bd5eac30432b592342a392450e52943f067db4077bec1 static/media/class-icon.6afd34b5.svg,1762592063169,a2f492c6c9c7b5201773062dfe90c238c12bc00bec097dc06141201f02b9588e
static/media/batch.3fcff66e.svg,1762457770042,f29038480286f091e3805a43f90ca5a70a13bbcef3076831e0b29b1fcb61d862 static/media/Checkmark.1356376c.svg,1762592063183,aa56f27c8198bcae3236a881a7134cd3b7d3dbb048ec75654e8ce2d4710ce027
static/media/batch-icon.bf664771.svg,1762457770047,7519e2a92f436a2f46ef7420d721e24df2837d7fce7fe8c30f4bc12980b3d1a0 static/media/auth-BG.2835584f.svg,1762592063123,238d3a2ff1aead1c4aaed0e07d23d2c1164f8be0ef2d5fced5c5ade370f3c5bf
static/media/KaTeX_Math-Italic.d8b7a801.woff2,1762457770019,463c7b305e898eff5291b63c93cc5cb344035692b6913c1c79073ecbb6243bd4 static/media/batch-icon.bf664771.svg,1762592063172,7519e2a92f436a2f46ef7420d721e24df2837d7fce7fe8c30f4bc12980b3d1a0
static/media/auth-BG.2835584f.svg,1762457770003,238d3a2ff1aead1c4aaed0e07d23d2c1164f8be0ef2d5fced5c5ade370f3c5bf static/media/KaTeX_Math-Italic.d8b7a801.woff2,1762592063143,463c7b305e898eff5291b63c93cc5cb344035692b6913c1c79073ecbb6243bd4
static/media/KaTeX_Math-BoldItalic.48155e43.woff,1762457770019,85cd1b757a1e147fa60d9a33c097ac463cd361d7d29278acb6f9fa12b1ab1807 static/media/KaTeX_Math-BoldItalic.1320454d.woff2,1762592063141,6845d5004e7c212c58d4760856f246a648906e552b0fe06cc1602598c12451c2
static/media/KaTeX_Math-BoldItalic.6589c4f1.ttf,1762457770024,7015e678d3236d50b3fefa9ba69b1473ed3f8e75adee5cace69614afcfc2f5bf static/media/add-circle.0011f2bc.svg,1762592063169,d9e5d90e8de1ce16df5720b43ca79543036fcf1a6cd6439a9b15c5a97d269f17
static/media/KaTeX_Math-BoldItalic.1320454d.woff2,1762457770019,6845d5004e7c212c58d4760856f246a648906e552b0fe06cc1602598c12451c2 static/media/KaTeX_Math-BoldItalic.48155e43.woff,1762592063142,85cd1b757a1e147fa60d9a33c097ac463cd361d7d29278acb6f9fa12b1ab1807
static/media/KaTeX_Main-Regular.f8a7f19f.woff2,1762457770019,d9e0bfb38531e96891681155d118070f8026358d2951cb8470c394b91809288d static/media/KaTeX_Main-Regular.f1cdb692.woff,1762592063141,17452652a1119d3bcd8a71406fc8698a686f53c3923cb96e790e6a5d36d08ab1
static/media/KaTeX_Main-Italic.65297062.woff2,1762457770019,d85767f0359678f357e48c84e9872f47b139674a79b7b71db0fdbb1317c26d12 static/media/KaTeX_Math-BoldItalic.6589c4f1.ttf,1762592063141,7015e678d3236d50b3fefa9ba69b1473ed3f8e75adee5cace69614afcfc2f5bf
static/media/KaTeX_Main-Italic.8ffd28f6.woff,1762457770013,96448f48ed2241c86e68c8461f1640b4420784ddafae0187411614145e1b86b7 static/media/KaTeX_Main-Italic.8ffd28f6.woff,1762592063141,96448f48ed2241c86e68c8461f1640b4420784ddafae0187411614145e1b86b7
static/media/KaTeX_Main-BoldItalic.d8737343.woff2,1762457770012,c626855b7d035c168c7d791991df8d939103de514bfb4451d79d386573284c72 static/media/KaTeX_Main-Italic.65297062.woff2,1762592063137,d85767f0359678f357e48c84e9872f47b139674a79b7b71db0fdbb1317c26d12
static/media/KaTeX_Main-BoldItalic.5f875f98.woff,1762457770012,70abceb4229394d854d0f09cb4c174bb3044efcb0c914765da73cef487dff695 static/media/KaTeX_Main-BoldItalic.d8737343.woff2,1762592063134,c626855b7d035c168c7d791991df8d939103de514bfb4451d79d386573284c72
static/media/KaTeX_Main-Regular.f1cdb692.woff,1762457770019,17452652a1119d3bcd8a71406fc8698a686f53c3923cb96e790e6a5d36d08ab1 static/media/KaTeX_Main-Italic.39349e0a.ttf,1762592063142,1d8cb78615c1bf0e6382d19209ab3b545f62297a75006719c9fe6a82f4b3b282
static/media/KaTeX_Main-Italic.39349e0a.ttf,1762457770019,1d8cb78615c1bf0e6382d19209ab3b545f62297a75006719c9fe6a82f4b3b282 static/media/KaTeX_Main-Regular.f8a7f19f.woff2,1762592063135,d9e0bfb38531e96891681155d118070f8026358d2951cb8470c394b91809288d
static/media/KaTeX_Main-Bold.a9382e25.woff2,1762457770011,5a85aa329e280b7ebe07d42616135b81a43b3e7699beb03e4f85cb85cc1c42a0 static/media/KaTeX_Main-BoldItalic.5f875f98.woff,1762592063142,70abceb4229394d854d0f09cb4c174bb3044efcb0c914765da73cef487dff695
static/media/add-circle.0011f2bc.svg,1762457770046,d9e5d90e8de1ce16df5720b43ca79543036fcf1a6cd6439a9b15c5a97d269f17 static/media/KaTeX_Main-Bold.a9382e25.woff2,1762592063133,5a85aa329e280b7ebe07d42616135b81a43b3e7699beb03e4f85cb85cc1c42a0
static/media/KaTeX_Main-Bold.4cdba646.woff,1762457770018,0a80f97f42c420ce18f49adadd979581ee6c7b2fea155197d564eab7d4a33b94 static/media/KaTeX_Main-Regular.818582da.ttf,1762592063141,303bad6cffa808e8161bca30051b6116e39cd128fad1565f4cfe87d57e54f715
static/media/KaTeX_Main-Regular.818582da.ttf,1762457770019,303bad6cffa808e8161bca30051b6116e39cd128fad1565f4cfe87d57e54f715 static/media/KaTeX_Main-BoldItalic.52fb39b0.ttf,1762592063134,2c270214096b727d963e376c50c9372e0696e3807ab3593c99721e98a2350d9a
static/media/KaTeX_Main-BoldItalic.52fb39b0.ttf,1762457770013,2c270214096b727d963e376c50c9372e0696e3807ab3593c99721e98a2350d9a static/media/KaTeX_Main-Bold.4cdba646.woff,1762592063133,0a80f97f42c420ce18f49adadd979581ee6c7b2fea155197d564eab7d4a33b94
static/media/KaTeX_Main-Bold.8e431f7e.ttf,1762457770012,05a2a07c87d1436ec1339788f266910afda2ef11c2c159b5f9da217e5862678b static/js/runtime-main.8e38f746.js,1762592063183,7abbb5f70c00c663738f8bd45449c09010174c2b33ab79da6c8f810ff5b5fe93
static/js/runtime-main.75b572a4.js.map,1762457770128,2a2cff71cbb0a33a7fc19a62b9ddb29ee62daf34ca4e083ac11f6bd19e79778e static/js/runtime-main.8e38f746.js.map,1762592063259,98b6824dc3f1c6a12430e946a64b8092ff5d05fb96b55ca6d5c4fea01d94a485
static/js/runtime-main.75b572a4.js,1762457770061,c92c4f729dcdb432e2689a779d3de747722d060c62115cd311ede28ea9d53915 static/media/KaTeX_AMS-Regular.66c67820.woff2,1762592063125,d3c3fdcc36a8dd47d2361854708db75facde86716ac4aff340c27a53edb91fa3
static/media/KaTeX_AMS-Regular.66c67820.woff2,1762457770003,d3c3fdcc36a8dd47d2361854708db75facde86716ac4aff340c27a53edb91fa3 static/media/KaTeX_Main-Bold.8e431f7e.ttf,1762592063135,05a2a07c87d1436ec1339788f266910afda2ef11c2c159b5f9da217e5862678b
static/media/feature-1.ea5c34ea.svg,1762457770003,d802659785b69508e521d5543fca40a58cb9076521ffc3e6b006f4786b8079f8 static/media/feature-1.ea5c34ea.svg,1762592063123,d802659785b69508e521d5543fca40a58cb9076521ffc3e6b006f4786b8079f8
static/media/KaTeX_AMS-Regular.10824af7.woff,1762457770011,6c46aa92e4310f9c70a445e7a423691f1704dce1cdc29fdd2e0c83d195fcee10 static/media/KaTeX_AMS-Regular.10824af7.woff,1762592063125,6c46aa92e4310f9c70a445e7a423691f1704dce1cdc29fdd2e0c83d195fcee10
static/media/KaTeX_AMS-Regular.56573229.ttf,1762457770003,c2f8c0a308e057708caa69b82f187cbff35ecda40162ceed7cf66bb958032bba static/media/KaTeX_AMS-Regular.56573229.ttf,1762592063125,c2f8c0a308e057708caa69b82f187cbff35ecda40162ceed7cf66bb958032bba
static/media/feature-3.3d5d81e9.svg,1762457770003,ba23393d89776cb78f7a559903baff48be76665abd99bdd4e5ea103c5e5ed88b static/media/feature-3.3d5d81e9.svg,1762592063123,ba23393d89776cb78f7a559903baff48be76665abd99bdd4e5ea103c5e5ed88b
static/js/4.344ddbd2.chunk.js.map,1762457770129,416de382811da86967563487c31d8dac1329a96d212747ed4f17a042d7d6e7a8 static/js/4.b1a8909a.chunk.js.map,1762592063261,cc29c410ad87d4a687401e2252b312788aefed8b7f53e786346b2dd60dfb3de3
static/js/4.344ddbd2.chunk.js,1762457770067,cf507701ec829cbb16a2a2973b39b77974eb7f9af7739fcdcf7a98821c104bb4 static/js/3.9b1c3a2b.chunk.js,1762592063193,394137fe0adad4357a1abd73710491aa4720ee89c553605e9e076e0f70a24dd8
static/js/3.d9765ecd.chunk.js.map,1762457770129,ae1d2413f24257daa6464aa05f2d172465239725339b6a9dc9e4a6b3ea296c11 static/js/3.9b1c3a2b.chunk.js.map,1762592063261,5044d0e0862c1cb2f043f63c402ded99e321dc799e6aabd0703bbe596047df77
static/js/3.d9765ecd.chunk.js,1762457770062,bdb739d2168ea1e2e2a07bf7923e3a3b6765644a780d52989c2a23282dfe8df1 static/js/4.b1a8909a.chunk.js,1762592063193,1b67d9265ad5a6c8ae015e37061ef359ea779782933587de7f991636980039dc
static/js/2.7364070b.chunk.js.LICENSE.txt,1762457770067,9c84bc4d2f8584d32d75e01e0317e22af1e39f5ac5ded3e2e4e34984704c172b static/js/2.e7b4d3ba.chunk.js.LICENSE.txt,1762592063196,9c84bc4d2f8584d32d75e01e0317e22af1e39f5ac5ded3e2e4e34984704c172b
static/js/main.357a9655.chunk.js,1762457770053,de152990ce6baee2d3b2b7ef48d227fc1c07329a242a43eab91a4325b0e82870 static/js/main.2c73d00a.chunk.js,1762592063176,143b8201b77176fe2eff476c6b89c458d568fc1ec429ae35369cf1c3aaa884bd
static/css/4.629184c9.chunk.css,1762457770063,dfeba86da1256521df7a877a265d56d314f65016837f30878338c2b7fc62a6ab static/css/4.629184c9.chunk.css,1762592063193,dfeba86da1256521df7a877a265d56d314f65016837f30878338c2b7fc62a6ab
static/css/3.6c5a3051.chunk.css,1762457770062,1ae150a22b1d42322775be9055605f93c75188e7081cfbdb206a59fc2f5ab8f1 static/css/main.f9fd7877.chunk.css,1762592063176,5dc175eca442114be3f947909ed2479c6499d01dbcabab1a5061b469276e5956
static/css/2.9f1a6119.chunk.css,1762457770061,5b08fdb85c1aaa0cf9acf7c4c35148cabc67c4897f21b89b8734390f584ad0a2 static/css/2.9f1a6119.chunk.css,1762592063184,5b08fdb85c1aaa0cf9acf7c4c35148cabc67c4897f21b89b8734390f584ad0a2
static/css/main.f9fd7877.chunk.css,1762457770053,5dc175eca442114be3f947909ed2479c6499d01dbcabab1a5061b469276e5956 static/css/3.6c5a3051.chunk.css,1762592063189,1ae150a22b1d42322775be9055605f93c75188e7081cfbdb206a59fc2f5ab8f1
static/css/4.629184c9.chunk.css.map,1762457770083,b82aa57e6e357dbb20067334e544e9b30d20ed0d928c13e6c61e1747e6f5a205 static/css/4.629184c9.chunk.css.map,1762592063204,b82aa57e6e357dbb20067334e544e9b30d20ed0d928c13e6c61e1747e6f5a205
static/css/3.6c5a3051.chunk.css.map,1762457770082,bcc301c3b3b46c96afc0fc028a6aa3cd299ccda538d7c6cb9ebc87f8de535796 static/css/3.6c5a3051.chunk.css.map,1762592063204,bcc301c3b3b46c96afc0fc028a6aa3cd299ccda538d7c6cb9ebc87f8de535796
static/css/2.9f1a6119.chunk.css.map,1762457770082,65fe44874775e5d32c6076f91b40fc5d120cecbf5da0d211d9303dbb56b2e6ec static/css/main.f9fd7877.chunk.css.map,1762592063203,af13ec744c4b90787916b4a63000dfcaa2235e5aa03eb9efb8dc93a8df8af444
static/js/main.357a9655.chunk.js.map,1762457770128,cc52bc1cdf143f97fb998138f7ba63a35feb7928f670dbaed4072d086bd44908 static/css/2.9f1a6119.chunk.css.map,1762592063197,65fe44874775e5d32c6076f91b40fc5d120cecbf5da0d211d9303dbb56b2e6ec
static/css/main.f9fd7877.chunk.css.map,1762457770075,af13ec744c4b90787916b4a63000dfcaa2235e5aa03eb9efb8dc93a8df8af444 static/js/main.2c73d00a.chunk.js.map,1762592063259,c729a0fa16f6d0fb63ff1ef88dc15d953ec302639fa3c60934a6fd22f038c256
static/js/2.7364070b.chunk.js,1762457770064,df4d5d52ff5bc9a137a634c50e7372514191024cda2de41254c421b4144cb81b static/js/2.e7b4d3ba.chunk.js,1762592063185,445a6c52b2f80391729b24e598f7129a1173eae04766b75a6426fd00935a9022
static/js/2.7364070b.chunk.js.map,1762457770146,94e8937258a39024064acd20a4e3110a0e78401e5d51226f7b7f861c0d76d5b3 static/js/2.e7b4d3ba.chunk.js.map,1762592063279,5cd308f446eeaecae140e0093fc6547e54caa53fc0cb68220276a38fe60630cb

View File

@ -212,8 +212,27 @@ const Headerc = (props) => {
return ( return (
<Header className="app-header"> <Header className="app-header">
<div className='left'> <div className="left">
<Breadcrumb key={uniqueId()} separator={<CaretRightOutlined />} itemRender={itemRender} routes={page} /> {props.title ? (
<Typography.Title
level={4}
style={{
margin: 0,
color: "#000", // black title
fontWeight: 600,
letterSpacing: "0.3px",
}}
>
{props.title}
</Typography.Title>
) : (
<Breadcrumb
key={uniqueId()}
separator={<CaretRightOutlined />}
itemRender={itemRender}
routes={page}
/>
)}
</div> </div>
<div className='right'> <div className='right'>
<ExpandCollapse> <ExpandCollapse>

View File

@ -1,9 +1,30 @@
import React, { useRef } from 'react'; import React, { useEffect, useState } from 'react';
import { Button, Layout, Menu, Typography } from 'antd'; import { Button, Layout, Menu, Typography } from 'antd';
import 'antd/dist/antd.css'; import 'antd/dist/antd.css';
import { CompassOutlined, DashboardOutlined, KeyOutlined, CalendarOutlined, BookOutlined, BarChartOutlined, ReadOutlined, NotificationOutlined, MenuOutlined, RightOutlined, LeftOutlined } from '@ant-design/icons'; import {
import { Link, NavLink } from 'react-router-dom'; DashboardOutlined,
import { authenticationService } from "../../_services"; KeyOutlined,
ReadOutlined,
RightOutlined,
UnorderedListOutlined,
UserOutlined,
EditOutlined,
StarOutlined,
FileTextOutlined,
PlusOutlined,
PlayCircleOutlined,
ClockCircleOutlined,
StopOutlined,
FileOutlined,
ExperimentOutlined,
CalendarOutlined,
PlusSquareOutlined,
TeamOutlined,
BuildOutlined,
SolutionOutlined,
} from '@ant-design/icons';
import { Link, useLocation } from 'react-router-dom';
import { authenticationService } from '../../_services';
import { ReactComponent as DashboardIcon } from '../assets/image/sider-icon/dashboard.svg'; import { ReactComponent as DashboardIcon } from '../assets/image/sider-icon/dashboard.svg';
import { ReactComponent as QuestionIcon } from '../assets/image/sider-icon/question.svg'; import { ReactComponent as QuestionIcon } from '../assets/image/sider-icon/question.svg';
@ -13,204 +34,247 @@ import { ReactComponent as BatchIcon } from '../assets/image/sider-icon/batch.sv
import { ReactComponent as ClassesIcon } from '../assets/image/sider-icon/classes.svg'; import { ReactComponent as ClassesIcon } from '../assets/image/sider-icon/classes.svg';
import { ReactComponent as PerfIcon } from '../assets/image/sider-icon/performance.svg'; import { ReactComponent as PerfIcon } from '../assets/image/sider-icon/performance.svg';
import OdiSVG from '../assets/image/GrayscalePKLogo.svg' import OdiSVG from '../assets/image/GrayscalePKLogo.svg';
import './Main.css'; import './Main.css';
import Sidebar from '../Sidebar'; import Sidebar from '../Sidebar';
import MediaQuery from 'react-responsive'; import MediaQuery from 'react-responsive';
// import { set } from 'lodash';
const { SubMenu } = Menu; const { SubMenu } = Menu;
const { Sider } = Layout; const { Sider } = Layout;
const rootSubmenuKeys = ['question', 'quiz', 'practice', 'batches', 'classes', 'performance']; export function Siderc() {
const questionItems = ['allQuestions', 'myQuestions', 'addQuestion', 'bookmarkQuestions', 'draftQuestions']; const [collapse, setCollapse] = useState(false);
const quizItems = ['createExam', 'liveExam', 'upcomingExam', 'expiredExams', 'draftExams']; const [openKeys, setOpenKeys] = useState([]);
const practiceItems = ['createPractise', 'livePractise', 'upcomingPractise', 'draftPractise']; const location = useLocation();
const batchesItems = ['createbatch', 'viewbatch']; const currentUser = authenticationService.currentUserValue;
const classesItems = ['class', 'viewclass'];
export function Siderc(props) { // 🗺️ Map route -> submenu key
const submenuMap = {
liveExam: 'quiz',
liveExams: 'quiz',
upcomingExam: 'quiz',
upcomingExams: 'quiz',
expiredExams: 'quiz',
draftExams: 'quiz',
createExam: 'quiz',
const [collapse, setCollapse] = React.useState(false); createPractise: 'practice',
const [state, setState] = React.useState({ current: 'dashboard' }); draftPractise: 'practice',
const [openKeys, setOpenKeys] = React.useState([]); livePractise: 'practice',
const set = useRef(false); upcomingPractise: 'practice',
createbatch: 'batches',
viewbatch: 'batches',
const handleClick = e => { class: 'classes',
setState({ current: e.key }); viewclass: 'classes',
} };
React.useEffect(() => { const pathSegments = location.pathname.split('/');
let item; const currentPath = pathSegments[pathSegments.length - 1];
const key = props.location?.pathname.split('/')[1];
if (!set.current && props.location?.pathname.split('/')[1] === 'dashboard') {
setState({ current: 'dashboard' });
set.current = true;
}
if (!set.current) {
for (item of questionItems) {
if (set.current) break;
selectMenuKey(key, item, rootSubmenuKeys[0], set);
}
}
if (!set.current) {
for (item of quizItems) {
if (set.current) break;
selectMenuKey(key, item, rootSubmenuKeys[1], set);
}
}
if (!set.current) {
for (item of practiceItems) {
if (set.current) break;
selectMenuKey(key, item, rootSubmenuKeys[2], set);
}
}
if (!set.current) {
for (item of batchesItems) {
if (set.current) break;
selectMenuKey(key, item, rootSubmenuKeys[3], set);
}
}
if (!set.current) {
for (item of classesItems) {
if (set.current) break;
selectMenuKey(key, item, rootSubmenuKeys[4], set);
}
}
return;
}, [props.location?.pathname]);
React.useEffect(() => { useEffect(() => {
set.current = false; const submenuKey = submenuMap[currentPath];
}, [props.location?.pathname]); if (submenuKey) setOpenKeys([submenuKey]);
else setOpenKeys([]);
}, [currentPath]);
function selectMenuKey(location, item, submenu, set) { const subMenuToggle = ({ key }) => {
if (!set.current && location === item) { setOpenKeys((prev) => (prev.includes(key) ? [] : [key]));
// setOpenKeys(prev => [...prev, submenu]); };
subMenuOpen({ key: submenu, fromLink: true });
setState({ current: props.location?.pathname.split('/')[props.location?.pathname.split('/').length - 1] });
set.current = true;
}
}
function subMenuOpen({ key, fromLink = false }) {
const ar = openKeys;
const res = ar.findIndex(item => item === key);
if (res === -1) {
setOpenKeys(prev => [...prev, key]);
}
if (res > -1 && !fromLink) {
const newAr = ar.filter((_, indx) => indx !== res);
setOpenKeys(_ => [...newAr]);
}
}
return ( return (
<Sidebar className={"main-sider-menu"} collapse={collapse} control={() => setCollapse(prev => (!prev))} <Sidebar
otherStyles={{borderTopRightRadius: "40px", borderBottomRightRadius: "40px"}}> className="main-sider-menu"
<MediaQuery maxWidth={992}> collapse={collapse}
<Button type={"text"} control={() => setCollapse((prev) => !prev)}
data-collapse-check={collapse? "0": "1"} otherStyles={{
className='slider-trigger-button' borderTopRightRadius: '40px',
onClick={() => setCollapse(prev => (!prev))} borderBottomRightRadius: '40px',
}}
>
<MediaQuery maxWidth={992}>
<Button
type="text"
data-collapse-check={collapse ? '0' : '1'}
className="slider-trigger-button"
onClick={() => setCollapse((prev) => !prev)}
> >
{/* {collapse?<RightOutlined />: <LeftOutlined />} */}
<RightOutlined /> <RightOutlined />
</Button> </Button>
</MediaQuery> </MediaQuery>
<Sider breakpoint="lg"
collapsed={false} <Sider breakpoint="lg" collapsed={false} className="sidebar">
className="sidebar"> <div className="logo">
<div className="logo" style={{}}> <a className="center-flex ml-3-5">
<a className='center-flex ml-3-5'> <img src={OdiSVG} alt="PracticeKea" style={{ height: '50%' }} />
<img src={OdiSVG} alt="PracticeKea" style={{ height: "50%" }} /> <Typography.Title
<Typography.Title level={4} style={{ marginBlock: 0, marginLeft: 10, color: '#fff' }}>PracticeKea</Typography.Title> level={4}
style={{
marginBlock: 0,
marginLeft: 10,
color: '#fff',
}}
>
PracticeKea
</Typography.Title>
</a> </a>
</div> </div>
{authenticationService.currentUserValue?.role_id !== 4 ?
{currentUser?.role_id !== 4 ? (
<Menu <Menu
mode="inline" mode="inline"
onClick={handleClick} selectedKeys={[currentPath]}
selectedKeys={[state.current]}
openKeys={openKeys} openKeys={openKeys}
onOpenChange={setOpenKeys}
style={{ height: '100%' }} style={{ height: '100%' }}
> >
<Menu.Item key="dashboard" icon={<DashboardIcon />}> <NavLink to="/dashboard">Dashboard</NavLink></Menu.Item> <Menu.Item key="dashboard" icon={<DashboardIcon />}>
<SubMenu key="question" icon={<QuestionIcon />} title="Question" onTitleClick={subMenuOpen}> <Link to="/dashboard">Dashboard</Link>
{authenticationService.currentUserValue?.role_id === 2 && <Menu.Item key="allQuestions"> <NavLink to="/allQuestions">All Questions</NavLink></Menu.Item>} </Menu.Item>
<Menu.Item key="myQuestions"> <Link to="/myQuestions">My Questions</Link></Menu.Item>
<Menu.Item key="addQuestion"> <Link to="/addQuestion">Create Question</Link></Menu.Item> {/* 🧾 Questions Section */}
<Menu.Item key="bookmarkQuestions"><Link to="/bookmarkQuestions">Bookmarked</Link></Menu.Item> <SubMenu
<Menu.Item key="draftQuestions"> <Link to="/draftQuestions">Draft Questions</Link></Menu.Item> key="question"
</SubMenu> icon={<QuestionIcon />}
<SubMenu key="quiz" icon={<QuizIcon />} title="Quiz/Exam" onTitleClick={subMenuOpen}> title="Question"
<Menu.Item key="createExam"><Link to="/createExam">Create Exam</Link></Menu.Item> onTitleClick={subMenuToggle}
<Menu.Item key="liveExam"><Link to="/liveExam">Live Exams</Link></Menu.Item> >
<Menu.Item key="upcomingExam"><Link to="/upcomingExam">Upcoming Exams</Link></Menu.Item> {currentUser?.role_id === 2 && (
<Menu.Item key="expiredExams"><Link to="/expiredExams">Expired Exams</Link></Menu.Item> <Menu.Item key="allQuestions" icon={<UnorderedListOutlined />}>
<Menu.Item key="draftExams"><Link to="/draftExams">Draft Exams</Link></Menu.Item> <Link to="/allQuestions">All Questions</Link>
</Menu.Item>
)}
<Menu.Item key="myQuestions" icon={<UserOutlined />}>
<Link to="/myQuestions">My Questions</Link>
</Menu.Item>
<Menu.Item key="addQuestion" icon={<EditOutlined />}>
<Link to="/addQuestion">Create Question</Link>
</Menu.Item>
<Menu.Item key="bookmarkQuestions" icon={<StarOutlined />}>
<Link to="/bookmarkQuestions">Bookmarked</Link>
</Menu.Item>
<Menu.Item key="draftQuestions" icon={<FileTextOutlined />}>
<Link to="/draftQuestions">Draft Questions</Link>
</Menu.Item>
</SubMenu> </SubMenu>
<SubMenu key="practice" icon={<PracticeIcon />} title="Practice" onTitleClick={subMenuOpen}> {/* 🧩 Quiz Section */}
<Menu.Item key="createPractise"><Link to="/createPractise">Create Practise</Link></Menu.Item> <SubMenu
<Menu.Item key="draftPractise"><Link to="/draftPractise">Draft Practises</Link></Menu.Item> key="quiz"
<Menu.Item key="livePractise"><Link to="/livePractise">Live Practises</Link></Menu.Item> icon={<QuizIcon />}
<Menu.Item key="upcomingPractise"><Link to="/upcomingPractise">Upcoming Practises</Link></Menu.Item> title="Quiz/Exam"
onTitleClick={subMenuToggle}
>
<Menu.Item key="createExam" icon={<PlusOutlined />}>
<Link to="/createExam">Create Exam</Link>
</Menu.Item>
<Menu.Item key="liveExam" icon={<PlayCircleOutlined />}>
<Link to="/liveExam">Live Exams</Link>
</Menu.Item>
<Menu.Item key="upcomingExam" icon={<ClockCircleOutlined />}>
<Link to="/upcomingExam">Upcoming Exams</Link>
</Menu.Item>
<Menu.Item key="expiredExams" icon={<StopOutlined />}>
<Link to="/expiredExams">Expired Exams</Link>
</Menu.Item>
<Menu.Item key="draftExams" icon={<FileOutlined />}>
<Link to="/draftExams">Draft Exams</Link>
</Menu.Item>
</SubMenu> </SubMenu>
{/* 🧠 Practice Section */}
{authenticationService.currentUserValue?.role_id === 2 && <SubMenu key="batches" icon={<BatchIcon />} title="Batch" onTitleClick={subMenuOpen}> <SubMenu
<Menu.Item key="createbatch" icon={<ReadOutlined />}> <Link to="/createbatch">Create Batch</Link></Menu.Item> key="practice"
<Menu.Item key="viewbatch" icon={<ReadOutlined />}> <Link to="/viewbatch">View All Batch</Link></Menu.Item> icon={<PracticeIcon />}
</SubMenu>} title="Practice"
{authenticationService.currentUserValue?.role_id === 2 && <SubMenu key="classes" icon={<ClassesIcon />} title="Classes" onTitleClick={subMenuOpen}> onTitleClick={subMenuToggle}
{/* <Menu.Item key="viewClass" icon={<ReadOutlined />}> <Link to="/classes">Student Class</Link></Menu.Item> */} >
<Menu.Item key="class" icon={<ReadOutlined />}> <Link to="/class">Create Class</Link></Menu.Item> <Menu.Item key="createPractise" icon={<ExperimentOutlined />}>
<Menu.Item key="viewclass" icon={<ReadOutlined />}> <Link to="/viewclass">View All Class</Link></Menu.Item> <Link to="/createPractise">Create Practise</Link>
</SubMenu>} </Menu.Item>
<Menu.Item key="draftPractise" icon={<FileTextOutlined />}>
<SubMenu key="performance" icon={<PerfIcon />} title="Performance" onTitleClick={subMenuOpen}> <Link to="/draftPractise">Draft Practises</Link>
{/* <Menu.Item key="9">option9</Menu.Item> </Menu.Item>
<Menu.Item key="10">option10</Menu.Item> <Menu.Item key="livePractise" icon={<PlayCircleOutlined />}>
<Menu.Item key="11">option11</Menu.Item> <Link to="/livePractise">Live Practises</Link>
<Menu.Item key="12">option12</Menu.Item> */} </Menu.Item>
<Menu.Item key="upcomingPractise" icon={<CalendarOutlined />}>
<Link to="/upcomingPractise">Upcoming Practises</Link>
</Menu.Item>
</SubMenu> </SubMenu>
</Menu> :
{/* 🧱 Batch Section */}
{currentUser?.role_id === 2 && (
<SubMenu
key="batches"
icon={<BatchIcon />}
title="Batch"
onTitleClick={subMenuToggle}
>
<Menu.Item key="createbatch" icon={<PlusSquareOutlined />}>
<Link to="/createbatch">Create Batch</Link>
</Menu.Item>
<Menu.Item key="viewbatch" icon={<TeamOutlined />}>
<Link to="/viewbatch">View All Batch</Link>
</Menu.Item>
</SubMenu>
)}
{/* 🏫 Classes Section */}
{currentUser?.role_id === 2 && (
<SubMenu
key="classes"
icon={<ClassesIcon />}
title="Classes"
onTitleClick={subMenuToggle}
>
<Menu.Item key="class" icon={<BuildOutlined />}>
<Link to="/class">Create Class</Link>
</Menu.Item>
<Menu.Item key="viewclass" icon={<SolutionOutlined />}>
<Link to="/viewclass">View All Class</Link>
</Menu.Item>
</SubMenu>
)}
{/* 📊 Performance */}
<SubMenu
key="performance"
icon={<PerfIcon />}
title="Performance"
onTitleClick={subMenuToggle}
></SubMenu>
</Menu>
) : (
// ---------------------- STUDENT SIDEBAR ----------------------
<Menu <Menu
mode="inline" mode="inline"
onClick={handleClick} selectedKeys={[currentPath]}
selectedKeys={[state.current]} openKeys={openKeys}
defaultOpenKeys={['dashboard']} onOpenChange={setOpenKeys}
style={{ height: '100%', borderRight: '0px solid #f0f2f5' }} style={{ height: '100%', borderRight: '0' }}
> >
<Menu.Item key="dashboard" icon={<DashboardOutlined />}> <Link to="/dashboard">Dashboard</Link></Menu.Item> <Menu.Item key="dashboard" icon={<DashboardOutlined />}>
{/* <SubMenu key="question" icon={<CompassOutlined />} title="Question"> <Link to="/dashboard">Dashboard</Link>
<Menu.Item key="4">Bookmarked</Menu.Item> </Menu.Item>
</SubMenu> */}
<SubMenu key="quiz" icon={<KeyOutlined />} title="Quiz/Exam">
<Menu.Item key="8"><Link to="/liveExams">Live Exams</Link></Menu.Item>
<Menu.Item key="9"><Link to="/upcomingExams">Upcoming Exams</Link></Menu.Item>
<SubMenu
key="quiz"
icon={<KeyOutlined />}
title="Quiz/Exam"
onTitleClick={subMenuToggle}
>
<Menu.Item key="liveExams" icon={<PlayCircleOutlined />}>
<Link to="/liveExams">Live Exams</Link>
</Menu.Item>
<Menu.Item key="upcomingExams" icon={<ClockCircleOutlined />}>
<Link to="/upcomingExams">Upcoming Exams</Link>
</Menu.Item>
</SubMenu> </SubMenu>
<SubMenu key="practice" icon={<BookOutlined />} title="Practice">
<Menu.Item key="9"><Link to="/practiceExams">Practice Exams</Link></Menu.Item>
</SubMenu>
{/* <SubMenu key="calendar" icon={<CalendarOutlined />} title="Calendar">
<Menu.Item key="14">option9</Menu.Item>
<Menu.Item key="15">option10</Menu.Item>
<Menu.Item key="16">option11</Menu.Item>
<Menu.Item key="17">option12</Menu.Item>
</SubMenu> */}
</Menu> </Menu>
} )}
</Sider> </Sider>
</Sidebar> </Sidebar>
); );
} }

View File

@ -1,4 +1,4 @@
import React from "react"; import React, { useState, useEffect } from "react";
import "./LiveExams.css"; import "./LiveExams.css";
import { import {
Layout, Layout,
@ -17,27 +17,26 @@ import {
import "antd/dist/antd.css"; import "antd/dist/antd.css";
import { authenticationService } from "../../../../_services"; import { authenticationService } from "../../../../_services";
import { Siderc } from "../../../Main/Siderc"; import { Siderc } from "../../../Main/Siderc";
import { Headerc } from "../../../Main/Headerc"; import Headerc from "../../../Main/FuncHeader";
import { selectorService } from "../../../../services/selectorService"; import { selectorService } from "../../../../services/selectorService";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
const { Content } = Layout; const { Content } = Layout;
const { Title, Text } = Typography; const { Title, Text } = Typography;
class LiveExams extends React.Component { const LiveExams = () => {
state = { const [classLoading, setClassLoading] = useState(true);
currentUser: authenticationService.currentUserValue, const [language, setLanguage] = useState([]);
batch: "1", const [data, setData] = useState([]);
data: [], const [layout, setLayout] = useState("card");
total_count: 0, const [totalCount, setTotalCount] = useState(0);
layout: "card", // 'card' or 'detail' const currentUser = authenticationService.currentUserValue;
};
componentDidMount() { useEffect(() => {
this.loadExams(1); loadExams(1);
} }, []);
loadExams = (pageNumber) => { const loadExams = (pageNumber) => {
const json = { const json = {
pageSize: 10, pageSize: 10,
pageNumber, pageNumber,
@ -47,6 +46,7 @@ class LiveExams extends React.Component {
selectorService.loadLiveExams(json).then((data1) => { selectorService.loadLiveExams(json).then((data1) => {
const result = data1?.result || {}; const result = data1?.result || {};
const exams = result.exams || []; const exams = result.exams || [];
const formattedData = exams.map((exam, index) => { const formattedData = exams.map((exam, index) => {
const start = new Date(exam.start_date); const start = new Date(exam.start_date);
const end = new Date(exam.end_date); const end = new Date(exam.end_date);
@ -69,58 +69,52 @@ class LiveExams extends React.Component {
}; };
}); });
this.setState({ setData(formattedData);
data: formattedData, setTotalCount(result.total_count);
total_count: result.total_count, setClassLoading(false);
});
}); });
}; };
render() {
const { data, total_count, layout } = this.state;
return ( return (
<Layout> <Layout>
<Siderc /> <Siderc />
<Layout> <Layout>
<Headerc /> <Headerc title={"🎯 Live Exams"} location={{ pathname: "/liveExams" }}
isClassLoading={classLoading} setLanguage={setLanguage} />
<Content <Content
style={{ style={{
padding: "24px", padding: "24px",
background: "#f0f3f8", // same as topbar background: "#f0f3f8",
minHeight: "100vh", minHeight: "100vh",
}} }}
> >
{/* Header + Buttons */} {/* Header + Buttons */}
<Space <div
style={{ style={{
display: "flex", display: "flex",
justifyContent: "space-between", justifyContent: "flex-end",
alignItems: "center", alignItems: "center",
marginBottom: 20, marginBottom: 20,
width: "100%",
}} }}
> >
<Title level={3} style={{ margin: 0, color: "#222", fontWeight: 600 }}>
🎯 Live Exams
</Title>
<Button.Group> <Button.Group>
<Button <Button
type={layout === "card" ? "primary" : "default"} type={layout === "card" ? "primary" : "default"}
icon={<AppstoreOutlined />} icon={<AppstoreOutlined />}
onClick={() => this.setState({ layout: "card" })} onClick={() => setLayout("card")}
> >
Card View Card View
</Button> </Button>
<Button <Button
type={layout === "detail" ? "primary" : "default"} type={layout === "detail" ? "primary" : "default"}
icon={<UnorderedListOutlined />} icon={<UnorderedListOutlined />}
onClick={() => this.setState({ layout: "detail" })} onClick={() => setLayout("detail")}
> >
Detail View Detail View
</Button> </Button>
</Button.Group> </Button.Group>
</Space> </div>
{/* Card Layout */} {/* Card Layout */}
{layout === "card" ? ( {layout === "card" ? (
@ -135,8 +129,8 @@ class LiveExams extends React.Component {
}} }}
pagination={{ pagination={{
pageSize: 10, pageSize: 10,
total: total_count, total: totalCount,
onChange: (page) => this.loadExams(page), onChange: (page) => loadExams(page),
}} }}
dataSource={data} dataSource={data}
renderItem={(item) => ( renderItem={(item) => (
@ -153,7 +147,7 @@ class LiveExams extends React.Component {
}} }}
> >
<Space direction="vertical" size="small" style={{ width: "100%" }}> <Space direction="vertical" size="small" style={{ width: "100%" }}>
{/* Top Section: Avatar + Title + Days Left */} {/* Top Section */}
<Space align="center" style={{ width: "100%", justifyContent: "flex-start" }}> <Space align="center" style={{ width: "100%", justifyContent: "flex-start" }}>
<Avatar <Avatar
src={`https://s3bucket-for-oa.s3.ap-south-1.amazonaws.com/${9}/exams/${item.id}.png`} src={`https://s3bucket-for-oa.s3.ap-south-1.amazonaws.com/${9}/exams/${item.id}.png`}
@ -161,7 +155,6 @@ class LiveExams extends React.Component {
shape="square" shape="square"
/> />
<div style={{ flex: 1, marginLeft: 10 }}> <div style={{ flex: 1, marginLeft: 10 }}>
{/* Exam Name + Days Left Inline */}
<div style={{ display: "flex", alignItems: "center", flexWrap: "wrap" }}> <div style={{ display: "flex", alignItems: "center", flexWrap: "wrap" }}>
<Title <Title
level={5} level={5}
@ -192,7 +185,9 @@ class LiveExams extends React.Component {
alignItems: "center", alignItems: "center",
}} }}
> >
{item.daysLeft > 0 ? `${item.daysLeft} days left` : "Ended"} {item.daysLeft > 0
? `${item.daysLeft} days left`
: "Ended"}
</Tag> </Tag>
</div> </div>
@ -231,7 +226,16 @@ class LiveExams extends React.Component {
<Link <Link
to={{ to={{
pathname: "/instructions", pathname: "/instructions",
state: { examId: item.id, duration: item.duration, totalQuestions: item.questions, totalMarks: item.marks, startDate: item.startDate, endDate: item.endDate, examName: item.name, daysLeft: item.daysLeft }, state: {
examId: item.id,
duration: item.duration,
totalQuestions: item.questions,
totalMarks: item.marks,
startDate: item.startDate,
endDate: item.endDate,
examName: item.name,
daysLeft: item.daysLeft,
},
}} }}
> >
<Button type="primary"> <Button type="primary">
@ -255,16 +259,15 @@ class LiveExams extends React.Component {
</List.Item> </List.Item>
)} )}
/> />
) : ( ) : (
// Detail Layout (Horizontal Cards) // Detail Layout
<List <List
itemLayout="horizontal" itemLayout="horizontal"
dataSource={data} dataSource={data}
pagination={{ pagination={{
pageSize: 10, pageSize: 10,
total: total_count, total: totalCount,
onChange: (page) => this.loadExams(page), onChange: (page) => loadExams(page),
}} }}
renderItem={(item) => ( renderItem={(item) => (
<List.Item style={{ padding: "12px 0" }}> <List.Item style={{ padding: "12px 0" }}>
@ -286,7 +289,6 @@ class LiveExams extends React.Component {
width: "100%", width: "100%",
}} }}
> >
{/* Left Section - Image + Details */}
<Space align="start"> <Space align="start">
<Avatar <Avatar
src={`https://s3bucket-for-oa.s3.ap-south-1.amazonaws.com/${9}/exams/${item.id}.png`} src={`https://s3bucket-for-oa.s3.ap-south-1.amazonaws.com/${9}/exams/${item.id}.png`}
@ -295,7 +297,6 @@ class LiveExams extends React.Component {
/> />
<div style={{ flex: 1, marginLeft: 16 }}> <div style={{ flex: 1, marginLeft: 16 }}>
{/* Title + Days Left Tag close together */}
<div <div
style={{ style={{
display: "flex", display: "flex",
@ -347,7 +348,6 @@ class LiveExams extends React.Component {
</div> </div>
</Space> </Space>
{/* Right Section - Centered Buttons */}
<div <div
style={{ style={{
display: "flex", display: "flex",
@ -361,7 +361,16 @@ class LiveExams extends React.Component {
<Link <Link
to={{ to={{
pathname: "/instructions", pathname: "/instructions",
state: { examId: item.id, duration: item.duration, totalQuestions: item.questions, totalMarks: item.marks, startDate: item.startDate, endDate: item.endDate, examName: item.name, daysLeft: item.daysLeft }, state: {
examId: item.id,
duration: item.duration,
totalQuestions: item.questions,
totalMarks: item.marks,
startDate: item.startDate,
endDate: item.endDate,
examName: item.name,
daysLeft: item.daysLeft,
},
}} }}
> >
<Button type="primary"> <Button type="primary">
@ -391,7 +400,6 @@ class LiveExams extends React.Component {
</Layout> </Layout>
</Layout> </Layout>
); );
} };
}
export default LiveExams; export default LiveExams;

View File

@ -1,109 +0,0 @@
.ReportPlotHeader{
display: flex;
-webkit-box-pack: justify;
justify-content: space-between;
padding: 0px 12px;
box-sizing: border-box;
-webkit-box-align: center;
align-items: center;
}
.ReportPlotSectionHeader{
display: flex;
-webkit-box-pack: justify;
justify-content: space-between;
padding: 0px 12px;
box-sizing: border-box;
-webkit-box-align: center;
align-items: center;
font-size: 16px;
}
.ReportPlot{
height: 100%; width: 100%; user-select: none; pointer-events: none; touch-action: none; position: relative;
}
.PlotCardSection{
min-height: 150px;
min-width: 300px;
height: 100%;
width: 100%;
padding: 24px 12px;
box-sizing: border-box;
grid-column: span 5;
height: 150px;
border-radius: 16px;
border-style: solid;
border-width: 1px;
border-color: rgb(231, 230, 230);
vertical-align: top;
font-size: 18px;
}
.PlotCard{
min-height: 150px;
min-width: 320px;
height: 100%;
width: 100%;
padding: 24px 12px;
box-sizing: border-box;
grid-column: span 5;
height: 350px;
border-radius: 16px;
border-style: solid;
border-width: 1px;
border-color: rgb(231, 230, 230);
}
PlotCardQuestion{
min-height: 150px;
min-width: 220px;
height: 100%;
width: 100%;
padding: 24px 12px;
box-sizing: border-box;
grid-column: span 5;
height: 350px;
border-radius: 16px;
border-style: solid;
border-width: 1px;
border-color: rgb(231, 230, 230);
}
td.firstColumnReport{
vertical-align: top;
}
.ReportTabHeader{
text-align: center;
}
.SectionTabPane{
padding-top: 30px;
}
.SectionHeaderReport{
padding-top: 40px;
-webkit-font-smoothing: antialiased;
font-size: 21px;
line-height: 1.75rem;
font-weight: 400;
letter-spacing: 0px;
text-decoration: inherit;
text-transform: inherit;
}
.Difficult{
border: 1px solid rgba(21,15,45,0.12);
border-radius: 24px;
width: 100%;
}
.DifficultCard{
padding:20px;
}
.DifficultCardHeader{
font-weight: bold;
font-size: 14px;
border-bottom-style: solid;
border-bottom-width: 1px;
border-bottom-color: rgb(231, 230, 230);
}
.createExamLayout{
background-color: #F5F7FA;
}

View File

@ -305,7 +305,7 @@ class Report extends React.Component {
key={secIndex} key={secIndex}
> >
<Row> <Row>
<Col span={20} offset={1}> <Col span={22} offset={1} style={{ margin: "0 auto" }}>
<div style={{ width: "100%", marginTop: "32px" }}> <div style={{ width: "100%", marginTop: "32px" }}>
<h3 <h3
id="components-anchor-overall" id="components-anchor-overall"
@ -1290,9 +1290,9 @@ class Report extends React.Component {
return ( return (
<Layout style={{ minHeight: "100vh", backgroundColor: "#f0f2f5" }}> <Layout style={{ minHeight: "100vh", backgroundColor: "#f0f2f5" }}>
<Siderc /> {/* <Siderc /> */}
<Layout> <Layout>
<Headerc /> {/* <Headerc /> */}
<Content <Content
style={{ style={{
padding: "32px", padding: "32px",