icleafreportui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/.env +7 -0
  2. package/README.md +70 -0
  3. package/package.json +55 -0
  4. package/public/favicon.ico +0 -0
  5. package/public/images/EResourcesImg.png +0 -0
  6. package/public/images/courseCardImg.png +0 -0
  7. package/public/images/courseInfo.png +0 -0
  8. package/public/images/exam-options.png +0 -0
  9. package/public/images/icleaf-11.png +0 -0
  10. package/public/images/icleaf_logo.png +0 -0
  11. package/public/images/template.png +0 -0
  12. package/public/images/unnamed.png +0 -0
  13. package/public/images/user.jpg +0 -0
  14. package/public/images/young-man-studying-library-using-laptop-1.png +0 -0
  15. package/public/index.html +45 -0
  16. package/public/logo192.png +0 -0
  17. package/public/logo512.png +0 -0
  18. package/public/manifest.json +25 -0
  19. package/public/robots.txt +3 -0
  20. package/src/App.css +24 -0
  21. package/src/App.js +37 -0
  22. package/src/Login.js +159 -0
  23. package/src/Reports/CourseReport.js +209 -0
  24. package/src/Reports/ExamPackReport.js +554 -0
  25. package/src/Reports/ExamReport.js +269 -0
  26. package/src/Reports/Report.js +271 -0
  27. package/src/api/client.jsx +42 -0
  28. package/src/components/Header.css +301 -0
  29. package/src/components/Header.jsx +192 -0
  30. package/src/components/Loader.jsx +23 -0
  31. package/src/components/imagePathUrl.jsx +11 -0
  32. package/src/components/sidebar.css +947 -0
  33. package/src/components/sidebar.jsx +81 -0
  34. package/src/context/TenantProvider.jsx +22 -0
  35. package/src/fonts/210000.jpg +0 -0
  36. package/src/fonts/210001.jpg +0 -0
  37. package/src/fonts/210003.jpg +0 -0
  38. package/src/fonts/210004.jpg +0 -0
  39. package/src/fonts/210006.jpg +0 -0
  40. package/src/fonts/210018.jpg +0 -0
  41. package/src/fonts/210019.jpg +0 -0
  42. package/src/fonts/210020.jpg +0 -0
  43. package/src/fonts/210279.jpg +0 -0
  44. package/src/fonts/210280.jpg +0 -0
  45. package/src/fonts/Gilroy-Black.ttf +0 -0
  46. package/src/fonts/Gilroy-BlackItalic.ttf +0 -0
  47. package/src/fonts/Gilroy-Bold.ttf +0 -0
  48. package/src/fonts/Gilroy-BoldItalic.ttf +0 -0
  49. package/src/fonts/Gilroy-ExtraBold.ttf +0 -0
  50. package/src/fonts/Gilroy-ExtraBoldItalic.ttf +0 -0
  51. package/src/fonts/Gilroy-Heavy.ttf +0 -0
  52. package/src/fonts/Gilroy-HeavyItalic.ttf +0 -0
  53. package/src/fonts/Gilroy-Light.ttf +0 -0
  54. package/src/fonts/Gilroy-LightItalic.ttf +0 -0
  55. package/src/fonts/Gilroy-Medium.ttf +0 -0
  56. package/src/fonts/Gilroy-MediumItalic.ttf +0 -0
  57. package/src/fonts/Gilroy-Regular.ttf +0 -0
  58. package/src/fonts/Gilroy-RegularItalic.ttf +0 -0
  59. package/src/fonts/Gilroy-SemiBold.ttf +0 -0
  60. package/src/fonts/Gilroy-SemiBoldItalic.ttf +0 -0
  61. package/src/fonts/Gilroy-Thin.ttf +0 -0
  62. package/src/fonts/Gilroy-ThinItalic.ttf +0 -0
  63. package/src/fonts/Gilroy-UltraLight.ttf +0 -0
  64. package/src/fonts/Gilroy-UltraLightItalic.ttf +0 -0
  65. package/src/fonts/Help - Guide Document.pdf +0 -0
  66. package/src/fonts/License.txt +144 -0
  67. package/src/fonts/More Free Fonts on fontshmonts.com.url +2 -0
  68. package/src/fonts/cover.jpg +0 -0
  69. package/src/index.css +13 -0
  70. package/src/index.js +21 -0
  71. package/src/login.css +809 -0
  72. package/src/logo.svg +1 -0
  73. package/src/package.js +10 -0
  74. package/src/reportWebVitals.js +13 -0
  75. package/src/setupTests.js +5 -0
  76. package/src/styles.css +2026 -0
  77. package/src/theme.css +107 -0
@@ -0,0 +1,301 @@
1
+ /* latest header style */
2
+
3
+ .header_whole_container {
4
+ display: flex;
5
+ position: fixed;
6
+ left: 0;
7
+ padding: 20px;
8
+ margin-left: 260px;
9
+ width: calc(100% - 260px);
10
+ /* padding-bottom: 10px; */
11
+ height: 60px;
12
+ align-items: center;
13
+ z-index: 1010;
14
+ border-bottom: 1px solid #dcdcdc;
15
+ background-color: #FFFFFF;
16
+ justify-content: space-between;
17
+ }
18
+
19
+ .header_logo_container {
20
+ padding: 30px 0px;
21
+ text-align: center;
22
+ margin-left: 0;
23
+ }
24
+
25
+ .header1-toggle-icon:hover {
26
+ background-color: var(--primary-color);
27
+ color: var(--button-text-color);
28
+ }
29
+
30
+ .header1-toggle-icon {
31
+ background-color: #FFF;
32
+ border-radius: 8px;
33
+ padding: 6px;
34
+ align-items: center;
35
+ /* box-shadow: 4px 4px 32px 1px rgba(0, 0, 0, 0.20); */
36
+ -webkit-user-select: none;
37
+ user-select: none;
38
+ outline: unset;
39
+ height: 30px;
40
+ width: 30px;
41
+ background: var(--sidebar_side_mnu_bg);
42
+ color: var(--primary-color);
43
+ }
44
+
45
+ .mini-sidebar .header1-toggle-icon {
46
+ transform: scaleX(-1);
47
+ -moz-transform: scaleX(-1);
48
+ -webkit-transform: scaleX(-1);
49
+ -ms-transform: scaleX(-1);
50
+ }
51
+
52
+ .header_logo_img {
53
+ height: auto;
54
+ width: 60%;
55
+ max-width: 120px;
56
+ -webkit-user-select: none;
57
+ user-select: none;
58
+ }
59
+
60
+ .header_container2 {
61
+ display: flex;
62
+ align-items: center;
63
+ width: 13%;
64
+ }
65
+
66
+ .user_icon_container {
67
+ display: flex;
68
+ justify-content: flex-end;
69
+ }
70
+
71
+ .username_container {
72
+ padding-left: 20px;
73
+ }
74
+
75
+ .userName_text {
76
+ font-size: 14px;
77
+ color: #222222;
78
+ font-weight: 500;
79
+ line-height: 16px;
80
+ letter-spacing: 0em;
81
+ }
82
+
83
+ .header_container3 {
84
+ padding-left: 22px;
85
+ }
86
+
87
+ .logout_icon {
88
+ box-shadow: 4px 4px 32px 1px rgba(0, 0, 0, 0.20);
89
+ background-color: transparent;
90
+ padding: 0px;
91
+ border-radius: 0%;
92
+ /* color: #575757; */
93
+ font-size: 38px;
94
+ box-shadow: none;
95
+ height: 17px;
96
+ width: 17px;
97
+ }
98
+
99
+ .popover_container {
100
+ padding: 0px 16px 16px;
101
+ row-gap: 5px;
102
+ display: flex;
103
+ flex-direction: column;
104
+ }
105
+
106
+ .admpopover {
107
+ width: 190px;
108
+ /* height: 400px; */
109
+ }
110
+
111
+ .popover_name_container {
112
+ padding: 15px 15px;
113
+ }
114
+
115
+ .acc-mnu-top {
116
+ text-align: left;
117
+ padding: 25px 20px;
118
+ -webkit-user-select: none;
119
+ user-select: none;
120
+ margin: 0px;
121
+ flex-shrink: 0;
122
+ box-shadow: none;
123
+ background-image: none;
124
+ border-radius: 8px;
125
+ background-color: rgb(255, 248, 225);
126
+ overflow: hidden;
127
+ position: relative;
128
+ }
129
+
130
+ .acc-mnu-top::before {
131
+ border: 3px solid rgb(255, 229, 127);
132
+ border-radius: 50%;
133
+ top: 65px;
134
+ right: -60px;
135
+ content: "";
136
+ position: absolute;
137
+ width: 160px;
138
+ height: 160px;
139
+ }
140
+
141
+ .acc-mnu-top::after {
142
+ border: 19px solid rgb(255, 229, 127);
143
+ border-radius: 50%;
144
+ top: 5px;
145
+ right: -160px;
146
+ content: "";
147
+ position: absolute;
148
+ width: 200px;
149
+ height: 200px;
150
+ }
151
+
152
+ .acc-mnu-seperator {
153
+ border-width: 0px 0px thin;
154
+ border-style: solid;
155
+ border-color: rgb(227, 232, 239);
156
+ color: rgb(54, 65, 82);
157
+ transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
158
+ margin-bottom: 0;
159
+ opacity: 1;
160
+ }
161
+
162
+ .acc-mnu-icon {
163
+ color: var(--primary-color);
164
+ }
165
+
166
+ .popover_container .col-3 {
167
+ /* padding-left: 0px; */
168
+ padding-right: 0px;
169
+ }
170
+
171
+ .popover_container .col-12 {
172
+ /* padding-left: 0px; */
173
+ padding-left: 10px;
174
+ }
175
+
176
+ .popover_container .row {
177
+ width: 100%;
178
+ margin-left: 0px;
179
+ margin-right: 0px;
180
+ padding: 10px 0;
181
+ border-radius: 4px;
182
+ background: var(--content-background-color);
183
+ }
184
+
185
+ .popover_container .row_lang {
186
+ width: 55%;
187
+ margin-left: 0px;
188
+ margin-right: 0px;
189
+ padding: 10px 0;
190
+ border-radius: 4px;
191
+ background: var(--content-background-color);
192
+ }
193
+
194
+ .acc-mnu-item {
195
+ color: var(--bs-gray-700);
196
+ }
197
+
198
+ .acc-mnu-item:hover {
199
+ color: var(--primary-color);
200
+ background: var(--sidebar_side_mnu_bg);
201
+ }
202
+
203
+ .acc_menu_highlight {
204
+ color: var(--primary-color);
205
+ background: var(--sidebar_side_mnu_bg) !important;
206
+
207
+ }
208
+
209
+ .hi_msg {
210
+ font-size: 12px;
211
+ }
212
+
213
+ .name_text {
214
+ font-size: 16px;
215
+ font-weight: 500;
216
+ line-height: 20px;
217
+ letter-spacing: 0em;
218
+ }
219
+
220
+ .email_text {
221
+ font-size: 11px;
222
+ line-height: 15px;
223
+ font-weight: 300;
224
+ letter-spacing: 0em;
225
+ }
226
+
227
+ .popup_user_text {
228
+ padding-left: 11px;
229
+ font-size: 13px;
230
+ line-height: 15px;
231
+ font-weight: 300;
232
+ letter-spacing: 0em;
233
+ }
234
+
235
+ .pop_up_info {
236
+ display: flex;
237
+ justify-content: center;
238
+ align-items: center;
239
+ }
240
+
241
+ .label_text {
242
+ font-size: 14px;
243
+ line-height: 14px;
244
+ letter-spacing: 0.05em;
245
+ font-weight: 300;
246
+ }
247
+
248
+ .cursor {
249
+ cursor: pointer;
250
+ }
251
+
252
+ /* Admin */
253
+ .popoveradmCls {
254
+ padding: 15px;
255
+ /* row-gap: 15px; */
256
+ display: flex;
257
+ flex-direction: column;
258
+ }
259
+
260
+ .profImgCls {
261
+ width: 50px;
262
+ height: 50px;
263
+ border-radius: 50px;
264
+ box-shadow: 0px 2px 7px #a2a2a2;
265
+ padding: 5px;
266
+ }
267
+
268
+ .labeltxtadm {
269
+ /* font-size: large; */
270
+ color: #000;
271
+ /* display: block; */
272
+ padding: 5px;
273
+
274
+ }
275
+
276
+ .imgClsHeader {
277
+
278
+ width: 100%;
279
+ display: flex;
280
+ flex-direction: column;
281
+ align-items: center;
282
+ }
283
+
284
+ .acc_mnu_pop {
285
+ width: 250px;
286
+ }
287
+
288
+ .acc_mnu_pop::before {
289
+ top: 0%;
290
+ right: 18px;
291
+ margin: -15px 0 0 68px;
292
+ border-left: 13px solid transparent;
293
+ border-bottom: 15px solid #fe9c00;
294
+ border-right: 0px solid transparent;
295
+ }
296
+
297
+ .user_Img {
298
+ width: 60px;
299
+ height: 60px;
300
+ border-radius: 50px;
301
+ }
@@ -0,0 +1,192 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import { useNavigate } from 'react-router-dom';
3
+ import { FaPowerOff } from "react-icons/fa";
4
+ import { MdFiberManualRecord, MdLogout, MdOutlineLockReset } from "react-icons/md";
5
+ import { IoIosList, IoIosSettings } from "react-icons/io";
6
+ import { GiHamburgerMenu } from "react-icons/gi";
7
+ import Popover from '@mui/material/Popover';
8
+ import { Link, useLocation } from 'react-router-dom';
9
+ import "./Header.css"
10
+ import { MdKeyboardArrowDown, MdAssignment } from "react-icons/md";
11
+ import { RiHome5Fill, RiLogoutCircleRLine, RiMenuFoldLine } from "react-icons/ri";
12
+ import { HiBookmarkSquare, HiOutlineUser } from "react-icons/hi2";
13
+ import { TbDeviceMobileFilled } from "react-icons/tb";
14
+ import { IoBookOutline, IoCalendar, IoCalendarOutline, IoCartOutline, IoLanguage, IoLibraryOutline, IoLogOutOutline, IoPencilOutline, IoPersonCircleOutline, IoPersonOutline, IoSettingsOutline, IoShuffle, IoShuffleOutline } from "react-icons/io5";
15
+ import { TfiMenuAlt } from "react-icons/tfi";
16
+ import { RotatingLines } from 'react-loader-spinner';
17
+ import { Drawer } from 'antd'; // Import Drawer from antd
18
+ import './Header.css';
19
+ import { BiSolidBookContent, BiSolidUserPin } from "react-icons/bi";
20
+ import { FaCheck, FaCircleInfo } from "react-icons/fa6";
21
+ import { PiExamFill, PiShuffleAngularBold } from "react-icons/pi";
22
+ import { RiRedPacketLine } from "react-icons/ri";
23
+ import { MdMenuBook, MdKeyboardArrowRight, MdCorporateFare } from "react-icons/md";
24
+ import { IoGameControllerSharp } from "react-icons/io5";
25
+ import commonImagePathUrlPrefix, { logo } from './imagePathUrl';
26
+
27
+ const Header = () => {
28
+ const navigate = useNavigate()
29
+ const [show, setShow] = useState(false);
30
+ const location = useLocation();
31
+ const [activeMenuItem, setActiveMenuItem] = useState(location.pathname);
32
+ const [isSideMenu, setSideMenu] = useState("");
33
+ const [userChooseLan, setUserChooseLan] = useState("en")
34
+
35
+ const [drawerVisible, setDrawerVisible] = useState(false);
36
+ const [userEmail] = useState(localStorage.getItem("email"));
37
+ const [userName] = useState(localStorage.getItem("fName") + " " + localStorage.getItem("lName"))
38
+ const roleId = localStorage.getItem("roleId")
39
+ const [manageContentSubMenuOpen, setManageContentSubMenuOpen] = useState(false);
40
+ const [manageExamSubMenuOpen, setManageExamSubMenuOpen] = useState(false);
41
+ const [managePackSubMenuOpen, setManagePackSubMenuOpen] = useState(false);
42
+ const [manageUserSubMenuOpen, setManageUserSubMenuOpen] = useState(false);
43
+ const [manageCorporateSubMenuOpen, setManageCorporateSubMenuOpen] = useState(false);
44
+ const [manageControlSubMenuOpen, setManageControlSubMenuOpen] = useState(false);
45
+
46
+ const [usernames, setUserNames] = useState("");
47
+ const [userimg, setUserImg] = useState("");
48
+ const [availableCredit, setAvailableCredit] = useState("");
49
+ const [buyCredit, setbuyCredit] = useState("");
50
+ const [storageB, setStroageB] = useState("");
51
+ const [storagelimit, setStorageLimit] = useState("");
52
+ const [buy, setbuy] = useState('')
53
+ const [totalbuy, settotalbuy] = useState('')
54
+
55
+
56
+ const token = localStorage.getItem("token");
57
+ const headers = {
58
+ Authorization: `Bearer ${token}`,
59
+ };
60
+ const name = localStorage.getItem("fName")
61
+ const [showAlert, setShowAlert] = useState(false);
62
+ const [alertMessage, setAlertMessage] = useState('');
63
+ const userImage = localStorage.getItem("profileImg");
64
+ const [userNameEvaluator] = useState(localStorage.getItem("userName"));
65
+
66
+ useEffect(() => {
67
+ if (localStorage.getItem("consentChkFlg") === "false") {
68
+ // navigate("/myProfile")
69
+ } else {
70
+ // setShowAlert(false);
71
+ }
72
+ }, []);
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+ const handlesidebar = () => {
81
+ if (window.innerWidth < 1001) {
82
+ // If the screen width is less than 800px, toggle the drawer visibility
83
+ setDrawerVisible(!drawerVisible);
84
+ } else {
85
+ // If the screen width is 800px or more, toggle the 'mini-sidebar' class
86
+ document.body.classList.toggle('mini-sidebar');
87
+ }
88
+ }
89
+
90
+
91
+
92
+
93
+
94
+
95
+ const handleOutsideClick = (e) => {
96
+ const dropdownMenu = document.querySelector(".user-menu");
97
+ const mobileDropdownMenu = document.querySelector(".mobile-user-menu");
98
+ const mobileSideMenu = document.querySelector("#mobile_btn");
99
+
100
+ if (
101
+ dropdownMenu &&
102
+ !dropdownMenu.contains(e.target) &&
103
+ !mobileDropdownMenu?.contains(e.target) &&
104
+ !mobileSideMenu?.contains(e.target)
105
+ ) {
106
+ setShow(false);
107
+ // setMobileshow(false);
108
+ // setShow1(false);
109
+ document.body.classList.remove("slide-nav");
110
+ }
111
+ };
112
+ // useEffect(() => {
113
+
114
+ // }, []);
115
+ useEffect(() => {
116
+ window.scrollTo(0, 0);
117
+ document.addEventListener("click", handleOutsideClick);
118
+
119
+ return () => {
120
+ document.removeEventListener("click", handleOutsideClick);
121
+ };
122
+ }, []);
123
+
124
+ const [anchorEl, setAnchorEl] = useState(null);
125
+ const [anchorLang, setAnchorLang] = useState(null);
126
+
127
+ const handleClick = (event) => {
128
+ setAnchorEl(event.currentTarget);
129
+ };
130
+
131
+ const handleClose = () => {
132
+ setAnchorEl(null);
133
+ };
134
+
135
+
136
+ const handleLangClick = (event) => {
137
+ setAnchorLang(event.currentTarget);
138
+ };
139
+
140
+ const handleLangClose = () => {
141
+ setAnchorLang(null);
142
+ };
143
+
144
+ const open = Boolean(anchorEl);
145
+ const open1 = Boolean(anchorLang);
146
+ const id = open ? 'simple-popover' : undefined;
147
+ const lang_id = open1 ? 'lang-simple-popover' : undefined;
148
+
149
+
150
+
151
+ const handleChange = (value) => {
152
+ window.location.reload()
153
+
154
+ setUserChooseLan(value);
155
+ };
156
+
157
+ const handleLogout = () => {
158
+ localStorage.clear(); // Clear all local storage
159
+ // navigate('/login'); // Navigate to login page
160
+ window.location.reload();
161
+ };
162
+
163
+
164
+ return (
165
+ <div className='header_whole_container'>
166
+ <div style={{ display: "flex", alignItems: "center" }}>
167
+ {/* <div>
168
+ <RiMenuFoldLine
169
+ cursor="pointer"
170
+ onClick={handlesidebar}
171
+ size={30}
172
+ className='header1-toggle-icon'
173
+ tabIndex={0}
174
+ onKeyDown={(event) => {
175
+ if (event.key === 'Enter') {
176
+ handlesidebar()
177
+ }
178
+ }}
179
+ />
180
+ </div> */}
181
+ </div>
182
+ <div className='acc_conf_main' onClick={handleLogout}>
183
+ <FaPowerOff tabIndex={0}
184
+ size={30} aria-describedby={id} variant="contained" className="account-mnu-icon" />
185
+ </div>
186
+ {/* <button onClick={handleLogout}>
187
+ Logout</button> */}
188
+ </div>
189
+ );
190
+ };
191
+
192
+ export default Header;
@@ -0,0 +1,23 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import { Modal } from 'react-bootstrap';
3
+ import { RotatingLines } from 'react-loader-spinner'
4
+
5
+
6
+ function Loader({ visible }) {
7
+ const [value, setValue] = useState(visible);
8
+
9
+
10
+ return (
11
+ <Modal onShow={true} style={{ background: "transperent" }}>
12
+ <RotatingLines
13
+ strokeColor="grey"
14
+ strokeWidth="5"
15
+ animationDuration="0.75"
16
+ width="96"
17
+ visible={true}
18
+ />
19
+ </Modal>
20
+ )
21
+
22
+ }
23
+ export default Loader;
@@ -0,0 +1,11 @@
1
+ export default "https://groupnpay.com/iccloud";
2
+ export const elearnImagePathUrlPrefix = "https://groupnpay.com/iccloud/qhubresources/elearn";
3
+ // export const commonImagePathUrlPrefix = "http://64.227.170.125:8080/iccloud";
4
+ // export const elearnImagePathUrlPrefix = "http://64.227.170.125:8080/iccloud/qhubresources/elearn";
5
+ // export const commonImagePathUrlPrefix = "http://139.59.64.128:8080/iccloud";
6
+ // export const elearnImagePathUrlPrefix = "http://139.59.64.128:8080/iccloud/qhubresources/elearn";
7
+ // export const commonImagePathUrlPrefix = "http://192.168.3.155:8080/icleaf";
8
+ // export const elearnImagePathUrlPrefix = "http://192.168.3.155:8080/icleaf/qhubresources/elearn";
9
+ export const logo = process.env.PUBLIC_URL + '/images/icleaf_logo.png';
10
+ export const youngMan = process.env.PUBLIC_URL + '/images/young-man-studying-library-using-laptop-1.png';
11
+ export const baseName = "/icleaf/#"