mario-core 2.9.157-level → 2.9.158-level
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.
- package/dist/containers/User/components/FilterPopover.d.ts +20 -0
- package/dist/containers/User/components/HeaderCell.d.ts +17 -0
- package/dist/containers/User/components/TableHeader.d.ts +10 -0
- package/dist/containers/User/constants/constants.d.ts +19 -0
- package/dist/containers/User/constants/types.d.ts +58 -0
- package/dist/containers/User/hooks/useClickOutside.d.ts +2 -0
- package/dist/containers/User/hooks/useExportUsersCsv.d.ts +5 -0
- package/dist/containers/User/hooks/useFilterPopover.d.ts +31 -0
- package/dist/containers/User/hooks/useTableHeader.d.ts +15 -0
- package/dist/containers/User/hooks/useUserList.d.ts +3 -2
- package/dist/containers/User/hooks/userFilters.d.ts +8 -0
- package/dist/index.css +38 -0
- package/dist/index.js +699 -41
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +702 -44
- package/dist/index.modern.js.map +1 -1
- package/dist/services/userService.d.ts +3 -1
- package/package.json +1 -1
package/dist/index.modern.js
CHANGED
|
@@ -3,7 +3,7 @@ import i18n from 'i18next';
|
|
|
3
3
|
import { initReactI18next, useTranslation } from 'react-i18next';
|
|
4
4
|
export { I18nextProvider, useTranslation } from 'react-i18next';
|
|
5
5
|
import React, { useState, useCallback, useEffect, forwardRef, useRef, Suspense, useMemo, memo, Fragment, useImperativeHandle } from 'react';
|
|
6
|
-
import { Input, Modal, ModalHeader, ModalBody, ModalFooter, Button, Row, Col, Form, FormGroup, Label, Navbar, NavbarBrand, Collapse, Nav, NavItem, NavLink, Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Alert, Pagination, PaginationItem, PaginationLink, Table, CustomInput, TabContent, TabPane, Card, CardImg, CardBody, CardTitle, CardHeader, CardText } from 'reactstrap';
|
|
6
|
+
import { Input, Modal, ModalHeader, ModalBody, ModalFooter, Button, Row, Col, Form, FormGroup, Label, Navbar, NavbarBrand, Collapse, Nav, NavItem, NavLink, Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Alert, Pagination, PaginationItem, PaginationLink, Table, Popover, PopoverBody, CustomInput, TabContent, TabPane, Card, CardImg, CardBody, CardTitle, CardHeader, CardText } from 'reactstrap';
|
|
7
7
|
import { useHistory, Link, useLocation, Switch, Route, Prompt, useParams } from 'react-router-dom';
|
|
8
8
|
import { Formik } from 'formik';
|
|
9
9
|
import { object, string, boolean, number, array } from 'yup';
|
|
@@ -22,16 +22,18 @@ import { RiLogoutBoxRLine } from 'react-icons/ri';
|
|
|
22
22
|
import Pusher from 'pusher-js/with-encryption';
|
|
23
23
|
import { BsChevronDown } from 'react-icons/bs';
|
|
24
24
|
import { FaPlus, FaTrashAlt, FaSyncAlt, FaUsersCog, FaRegEdit, FaArrowLeft, FaDownload, FaTrash, FaEdit, FaFolderPlus, FaFileUpload } from 'react-icons/fa';
|
|
25
|
-
import { format } from 'date-fns';
|
|
25
|
+
import { format, differenceInCalendarYears } from 'date-fns';
|
|
26
26
|
import { Editor } from '@tinymce/tinymce-react';
|
|
27
|
-
import differenceInCalendarYears from 'date-fns/differenceInCalendarYears';
|
|
27
|
+
import differenceInCalendarYears$1 from 'date-fns/differenceInCalendarYears';
|
|
28
|
+
import { BiSearchAlt2, BiFilterAlt } from 'react-icons/bi';
|
|
29
|
+
import { HiFilter } from 'react-icons/hi';
|
|
30
|
+
import { AiOutlineSortAscending, AiOutlineSortDescending, AiOutlineEye } from 'react-icons/ai';
|
|
28
31
|
import DatePicker from 'react-datepicker';
|
|
29
32
|
import toDate from 'date-fns/toDate';
|
|
30
33
|
import { MdAttachFile } from 'react-icons/md';
|
|
31
34
|
import Creatable from 'react-select/creatable';
|
|
32
35
|
import ReactNotification$1 from 'react-notifications-component';
|
|
33
36
|
import 'react-notifications-component/dist/theme.css';
|
|
34
|
-
import { AiOutlineEye } from 'react-icons/ai';
|
|
35
37
|
import 'symbol-observable';
|
|
36
38
|
|
|
37
39
|
var dashboard = "Dashboard";
|
|
@@ -2798,7 +2800,7 @@ function _catch(body, recover) {
|
|
|
2798
2800
|
return result;
|
|
2799
2801
|
}
|
|
2800
2802
|
|
|
2801
|
-
var styles = {"btn-login-google":"_2HqmH","notification-count":"_2sew7","text-introduction":"_3OgWF","btn-trans-border":"_r9cAh","contact":"_NszFe","learn-more":"_MDjzH","title-quote":"_1Swkw","descriptions-quote":"_gi8vj","box-login":"_38Lo1","block-verification":"_1OzGy","block-login":"_wWIyO","title-login":"_3nuns","title-forgot-password":"_21qb6","btn-close":"_NhW9l","btn-login":"_3IL10","digital-privacy-icon":"_141p1","return-to-login":"_Ce3Kg","recover-account":"_2t6d9","link-to-login":"_3bDsd","remember":"_11FZt","term-and-conditions":"_3LXoI","descriptions-forgot-pass":"_PMcjT","content-icon":"_2rZY6","descriptions-icon":"_3SOdX","title-icon":"_y9lM2","nav-home":"_1TT1q","box-introduction":"_32V6L","icon":"_20YJX","form-user-name":"_39BJD","checkbox-remember":"_2K9b2","block-reset-password":"_23Sua","block-forgot-pass":"_3CWP6","page-not-login":"_3Wmco","content-quote":"_13Rk0","home-page":"_o6HKW","red-background":"_jOY7o","imageAnimation":"_wnn2_","login":"_F-hjL","login-content":"_149oA","logo-home":"_24U3W","img-box":"_2v-L_","img-login":"_3ncTL","img-login-rectangle":"_2kOvJ","c-main":"_39l0X","container-fluid":"_1BMwK","input-file-label":"_1XNpH","delete-avatar-button":"_1z5h9","header-logo":"_Gewcf","box-sidebar":"_2vcmv","sidebar-logo":"_1hXpy","sidebar-nav-links":"_3vb3s","c-active":"_36jSM","sidebar-nav-links-hover":"_DNrus","box-sidebar-header":"_3NEZj","box-logout":"_1wUDG","sidebar-btn-minimized":"_1S7Px","sidebar-logout":"_2P85D","nav-mobile":"_1qjbW","filter-media-file":"_1I62C","div":"_3cLcM","dropdown-menu":"_1krbH","header-avatar":"_RQaHE","dropdown-menu-flag":"_XK8oS","dropdown-content":"_3ys4W","dropdown-change":"_ToOW_","item-address":"_3sQlR","item-logout":"_3bqSM","title-address":"_1jgSI","img-avatar":"_35Ttz","item-contact":"_1wc7o","logout":"_1_9tV","content-text":"_3S4f2","dropdown-content-language":"_3ajui","dropdown-item-language":"_3Y_y4","dropdown-item-language-active":"_CzNMi","hide-in-mobile":"_1INnO","hamburger-menu":"_2yRc8","box-content-home-page":"_ABUIP","collapse-box":"_WX97m","hide-in-desktop":"_2LIqK","control-input":"_2Zz97","custom-control":"_3-yp5","item-select-role":"_1KcY7","item-role-active":"_dOVso","model-switch-roles":"_3ZqxI","title":"_g-p72"};
|
|
2803
|
+
var styles = {"btn-login-google":"_2HqmH","notification-count":"_2sew7","text-introduction":"_3OgWF","btn-trans-border":"_r9cAh","contact":"_NszFe","learn-more":"_MDjzH","title-quote":"_1Swkw","descriptions-quote":"_gi8vj","box-login":"_38Lo1","block-verification":"_1OzGy","block-login":"_wWIyO","title-login":"_3nuns","title-forgot-password":"_21qb6","btn-close":"_NhW9l","btn-login":"_3IL10","digital-privacy-icon":"_141p1","return-to-login":"_Ce3Kg","recover-account":"_2t6d9","link-to-login":"_3bDsd","remember":"_11FZt","term-and-conditions":"_3LXoI","descriptions-forgot-pass":"_PMcjT","content-icon":"_2rZY6","descriptions-icon":"_3SOdX","title-icon":"_y9lM2","nav-home":"_1TT1q","box-introduction":"_32V6L","icon":"_20YJX","form-user-name":"_39BJD","checkbox-remember":"_2K9b2","block-reset-password":"_23Sua","block-forgot-pass":"_3CWP6","page-not-login":"_3Wmco","content-quote":"_13Rk0","home-page":"_o6HKW","red-background":"_jOY7o","imageAnimation":"_wnn2_","login":"_F-hjL","login-content":"_149oA","logo-home":"_24U3W","img-box":"_2v-L_","img-login":"_3ncTL","img-login-rectangle":"_2kOvJ","c-main":"_39l0X","container-fluid":"_1BMwK","input-file-label":"_1XNpH","delete-avatar-button":"_1z5h9","header-logo":"_Gewcf","box-sidebar":"_2vcmv","sidebar-logo":"_1hXpy","sidebar-nav-links":"_3vb3s","c-active":"_36jSM","sidebar-nav-links-hover":"_DNrus","box-sidebar-header":"_3NEZj","box-logout":"_1wUDG","sidebar-btn-minimized":"_1S7Px","sidebar-logout":"_2P85D","nav-mobile":"_1qjbW","filter-media-file":"_1I62C","div":"_3cLcM","dropdown-menu":"_1krbH","header-avatar":"_RQaHE","dropdown-menu-flag":"_XK8oS","dropdown-content":"_3ys4W","dropdown-change":"_ToOW_","item-address":"_3sQlR","item-logout":"_3bqSM","title-address":"_1jgSI","img-avatar":"_35Ttz","item-contact":"_1wc7o","logout":"_1_9tV","content-text":"_3S4f2","dropdown-content-language":"_3ajui","dropdown-item-language":"_3Y_y4","dropdown-item-language-active":"_CzNMi","popover__sort__item":"_1ocBa","popover__sort__item--active":"_18NhM","popover__search__icon":"_2bquW","popover__search__input":"_3A4G4","popover__options":"_1MsEW","button-export":"_2rTzM","button-content":"_18y0w","button-icon":"_3cZAT","hide-in-mobile":"_1INnO","hamburger-menu":"_2yRc8","box-content-home-page":"_ABUIP","collapse-box":"_WX97m","hide-in-desktop":"_2LIqK","control-input":"_2Zz97","custom-control":"_3-yp5","item-select-role":"_1KcY7","item-role-active":"_dOVso","model-switch-roles":"_3ZqxI","title":"_g-p72"};
|
|
2802
2804
|
|
|
2803
2805
|
var style = {
|
|
2804
2806
|
fontSize: "0.85rem"
|
|
@@ -7302,6 +7304,11 @@ var getRosterUser = function getRosterUser(filter) {
|
|
|
7302
7304
|
params: filter
|
|
7303
7305
|
});
|
|
7304
7306
|
};
|
|
7307
|
+
var getRosterUserExport = function getRosterUserExport(filter) {
|
|
7308
|
+
return api.get(ROSTER_USER_URL + "/export-csv", {
|
|
7309
|
+
params: filter
|
|
7310
|
+
});
|
|
7311
|
+
};
|
|
7305
7312
|
var getRosterUserById = function getRosterUserById(id) {
|
|
7306
7313
|
return api.get(ROSTER_USER_URL + "/" + id);
|
|
7307
7314
|
};
|
|
@@ -7335,6 +7342,173 @@ var syncRosterStudentsApi = function syncRosterStudentsApi() {
|
|
|
7335
7342
|
return api.put(STUDENT_URL + "/sync-students");
|
|
7336
7343
|
};
|
|
7337
7344
|
|
|
7345
|
+
var UserOrder;
|
|
7346
|
+
|
|
7347
|
+
(function (UserOrder) {
|
|
7348
|
+
UserOrder[UserOrder["Id"] = 0] = "Id";
|
|
7349
|
+
UserOrder[UserOrder["Name"] = 1] = "Name";
|
|
7350
|
+
UserOrder[UserOrder["Email"] = 2] = "Email";
|
|
7351
|
+
UserOrder[UserOrder["Age"] = 3] = "Age";
|
|
7352
|
+
UserOrder[UserOrder["Role"] = 4] = "Role";
|
|
7353
|
+
UserOrder[UserOrder["Status"] = 5] = "Status";
|
|
7354
|
+
UserOrder[UserOrder["CreatedAt"] = 6] = "CreatedAt";
|
|
7355
|
+
UserOrder[UserOrder["RosterUser"] = 7] = "RosterUser";
|
|
7356
|
+
})(UserOrder || (UserOrder = {}));
|
|
7357
|
+
|
|
7358
|
+
var SearchBy;
|
|
7359
|
+
|
|
7360
|
+
(function (SearchBy) {
|
|
7361
|
+
SearchBy[SearchBy["Id"] = 0] = "Id";
|
|
7362
|
+
SearchBy[SearchBy["Name"] = 1] = "Name";
|
|
7363
|
+
SearchBy[SearchBy["Email"] = 2] = "Email";
|
|
7364
|
+
SearchBy[SearchBy["Role"] = 3] = "Role";
|
|
7365
|
+
SearchBy[SearchBy["RosterUser"] = 4] = "RosterUser";
|
|
7366
|
+
SearchBy[SearchBy["Status"] = 5] = "Status";
|
|
7367
|
+
})(SearchBy || (SearchBy = {}));
|
|
7368
|
+
|
|
7369
|
+
var _userOrders;
|
|
7370
|
+
var userOrders = (_userOrders = {}, _userOrders[UserOrder.Id] = "filter-id", _userOrders[UserOrder.Name] = "filter-name", _userOrders[UserOrder.Email] = "filter-email", _userOrders[UserOrder.Age] = "filter-age", _userOrders[UserOrder.Role] = "filter-role", _userOrders[UserOrder.Status] = "filter-status", _userOrders[UserOrder.CreatedAt] = "filter-createdAt", _userOrders[UserOrder.RosterUser] = "filter-roster", _userOrders);
|
|
7371
|
+
var UserColumns = [{
|
|
7372
|
+
name: "name",
|
|
7373
|
+
sortBy: UserOrder.Name,
|
|
7374
|
+
searchBy: SearchBy.Name,
|
|
7375
|
+
className: "align-top",
|
|
7376
|
+
getOption: function getOption(user) {
|
|
7377
|
+
var _user$fullName, _user$fullName$trim;
|
|
7378
|
+
|
|
7379
|
+
return {
|
|
7380
|
+
label: user.fullName || "empty",
|
|
7381
|
+
value: (_user$fullName = user.fullName) === null || _user$fullName === void 0 ? void 0 : (_user$fullName$trim = _user$fullName.trim) === null || _user$fullName$trim === void 0 ? void 0 : _user$fullName$trim.call(_user$fullName)
|
|
7382
|
+
};
|
|
7383
|
+
}
|
|
7384
|
+
}, {
|
|
7385
|
+
name: "email",
|
|
7386
|
+
sortBy: UserOrder.Email,
|
|
7387
|
+
searchBy: SearchBy.Email,
|
|
7388
|
+
className: "align-top",
|
|
7389
|
+
getOption: function getOption(user) {
|
|
7390
|
+
var _user$email, _user$email$trim;
|
|
7391
|
+
|
|
7392
|
+
return {
|
|
7393
|
+
label: user.email || "empty",
|
|
7394
|
+
value: (_user$email = user.email) === null || _user$email === void 0 ? void 0 : (_user$email$trim = _user$email.trim) === null || _user$email$trim === void 0 ? void 0 : _user$email$trim.call(_user$email)
|
|
7395
|
+
};
|
|
7396
|
+
}
|
|
7397
|
+
}, {
|
|
7398
|
+
name: "age",
|
|
7399
|
+
sortBy: UserOrder.Age,
|
|
7400
|
+
className: "align-top"
|
|
7401
|
+
}, {
|
|
7402
|
+
name: "role",
|
|
7403
|
+
sortBy: UserOrder.Role,
|
|
7404
|
+
searchBy: SearchBy.Role,
|
|
7405
|
+
className: "align-top",
|
|
7406
|
+
getOption: function getOption(user) {
|
|
7407
|
+
var _user$roles, _user$roles2, _user$roles3, _user$roles3$join, _user$roles3$join$tri;
|
|
7408
|
+
|
|
7409
|
+
return {
|
|
7410
|
+
label: (_user$roles = user.roles) !== null && _user$roles !== void 0 && _user$roles.length ? (_user$roles2 = user.roles) === null || _user$roles2 === void 0 ? void 0 : _user$roles2.map(function (role) {
|
|
7411
|
+
return role === "SecondaryTeacher" ? "SupportTeacher" : role;
|
|
7412
|
+
}).join(", ") : "empty",
|
|
7413
|
+
value: (_user$roles3 = user.roles) === null || _user$roles3 === void 0 ? void 0 : (_user$roles3$join = _user$roles3.join("")) === null || _user$roles3$join === void 0 ? void 0 : (_user$roles3$join$tri = _user$roles3$join.trim) === null || _user$roles3$join$tri === void 0 ? void 0 : _user$roles3$join$tri.call(_user$roles3$join)
|
|
7414
|
+
};
|
|
7415
|
+
}
|
|
7416
|
+
}, {
|
|
7417
|
+
name: "active_status",
|
|
7418
|
+
sortBy: UserOrder.Status,
|
|
7419
|
+
searchBy: SearchBy.Status,
|
|
7420
|
+
className: "align-top",
|
|
7421
|
+
getOption: function getOption(user, t) {
|
|
7422
|
+
return {
|
|
7423
|
+
label: user.isActive ? t("active") : t("inactive"),
|
|
7424
|
+
value: user.isActive
|
|
7425
|
+
};
|
|
7426
|
+
},
|
|
7427
|
+
options: [{
|
|
7428
|
+
label: "Active",
|
|
7429
|
+
value: "true"
|
|
7430
|
+
}, {
|
|
7431
|
+
label: "Inactive",
|
|
7432
|
+
value: "false"
|
|
7433
|
+
}]
|
|
7434
|
+
}, {
|
|
7435
|
+
name: "created_time",
|
|
7436
|
+
sortBy: UserOrder.CreatedAt,
|
|
7437
|
+
className: "align-top"
|
|
7438
|
+
}, {
|
|
7439
|
+
name: "Information Roster (Sourced Id / Full name / Email)",
|
|
7440
|
+
sortBy: UserOrder.RosterUser,
|
|
7441
|
+
searchBy: SearchBy.RosterUser,
|
|
7442
|
+
className: "align-top",
|
|
7443
|
+
getOption: function getOption(record) {
|
|
7444
|
+
if (!record) return {
|
|
7445
|
+
label: "empty",
|
|
7446
|
+
value: ""
|
|
7447
|
+
};
|
|
7448
|
+
var result = [];
|
|
7449
|
+
var sourcedId = record.sourcedId,
|
|
7450
|
+
rosterUser = record.rosterUser;
|
|
7451
|
+
!!sourcedId && result.push(sourcedId);
|
|
7452
|
+
|
|
7453
|
+
if (rosterUser) {
|
|
7454
|
+
var givenName = rosterUser.givenName,
|
|
7455
|
+
middleName = rosterUser.middleName,
|
|
7456
|
+
familyName = rosterUser.familyName,
|
|
7457
|
+
email = rosterUser.email;
|
|
7458
|
+
var names = [];
|
|
7459
|
+
!!givenName && names.push(givenName);
|
|
7460
|
+
!!middleName && names.push(middleName);
|
|
7461
|
+
!!familyName && names.push(familyName);
|
|
7462
|
+
!!names.length && result.push(names.join(" "));
|
|
7463
|
+
!!email && result.push(email);
|
|
7464
|
+
}
|
|
7465
|
+
|
|
7466
|
+
return {
|
|
7467
|
+
label: result.length ? result.join(" / ") : "empty",
|
|
7468
|
+
value: "" + (sourcedId || "") + ((rosterUser === null || rosterUser === void 0 ? void 0 : rosterUser.familyName) || "") + ((rosterUser === null || rosterUser === void 0 ? void 0 : rosterUser.middleName) || "") + ((rosterUser === null || rosterUser === void 0 ? void 0 : rosterUser.givenName) || "") + ((rosterUser === null || rosterUser === void 0 ? void 0 : rosterUser.email) || "")
|
|
7469
|
+
};
|
|
7470
|
+
}
|
|
7471
|
+
}, {
|
|
7472
|
+
name: "action",
|
|
7473
|
+
className: "text-center"
|
|
7474
|
+
}];
|
|
7475
|
+
var DEFAULT_PAGE_SIZE$1 = {
|
|
7476
|
+
label: "10",
|
|
7477
|
+
value: 10
|
|
7478
|
+
};
|
|
7479
|
+
var DEFAULT_FILTER$1 = {
|
|
7480
|
+
searchString: "",
|
|
7481
|
+
currentPage: 1,
|
|
7482
|
+
pageSize: DEFAULT_PAGE_SIZE$1.value
|
|
7483
|
+
};
|
|
7484
|
+
var DEFAULT_FILTER_POPOVER = {
|
|
7485
|
+
currentPage: 1,
|
|
7486
|
+
pageSize: 200
|
|
7487
|
+
};
|
|
7488
|
+
var CSV_PREFIX = "data:text/csv;charset=utf-8,";
|
|
7489
|
+
|
|
7490
|
+
var useFilters$1 = function useFilters() {
|
|
7491
|
+
var _useState = useState(DEFAULT_FILTER$1),
|
|
7492
|
+
filters = _useState[0],
|
|
7493
|
+
setFilters = _useState[1];
|
|
7494
|
+
|
|
7495
|
+
var changeFilters = function changeFilters(updatedFilters) {
|
|
7496
|
+
var newFilters = _extends({}, filters, updatedFilters);
|
|
7497
|
+
|
|
7498
|
+
if (!!newFilters.searchString && !!updatedFilters.searchString && updatedFilters.searchString != filters.searchString) {
|
|
7499
|
+
newFilters.currentPage = 1;
|
|
7500
|
+
}
|
|
7501
|
+
|
|
7502
|
+
setFilters(newFilters);
|
|
7503
|
+
};
|
|
7504
|
+
|
|
7505
|
+
return {
|
|
7506
|
+
filters: filters,
|
|
7507
|
+
setFilters: setFilters,
|
|
7508
|
+
changeFilters: changeFilters
|
|
7509
|
+
};
|
|
7510
|
+
};
|
|
7511
|
+
|
|
7338
7512
|
var USER_URL$1 = "/admin/user";
|
|
7339
7513
|
var CREATE_USER_URL = "/admin/create-user";
|
|
7340
7514
|
var TITLE$7 = "User list";
|
|
@@ -7356,17 +7530,14 @@ var useUserList = function useUserList() {
|
|
|
7356
7530
|
return state.users.totalItems;
|
|
7357
7531
|
});
|
|
7358
7532
|
|
|
7359
|
-
var _useFilters = useFilters(),
|
|
7533
|
+
var _useFilters = useFilters$1(),
|
|
7360
7534
|
filters = _useFilters.filters,
|
|
7361
7535
|
changeFilters = _useFilters.changeFilters;
|
|
7362
7536
|
|
|
7363
|
-
var
|
|
7364
|
-
fullName = _useState[0],
|
|
7365
|
-
setFullName = _useState[1];
|
|
7366
|
-
|
|
7537
|
+
var fullName = !!queryName ? queryName : "";
|
|
7367
7538
|
var isDistrict = window.location.host.includes("-district");
|
|
7368
7539
|
var dispatch = useDispatch();
|
|
7369
|
-
var getData = useCallback(function (
|
|
7540
|
+
var getData = useCallback(function () {
|
|
7370
7541
|
try {
|
|
7371
7542
|
var _temp3 = function _temp3() {
|
|
7372
7543
|
dispatch(setLoading(false));
|
|
@@ -7375,9 +7546,7 @@ var useUserList = function useUserList() {
|
|
|
7375
7546
|
dispatch(setLoading(true));
|
|
7376
7547
|
|
|
7377
7548
|
var _temp4 = _catch(function () {
|
|
7378
|
-
return Promise.resolve(
|
|
7379
|
-
searchString: fullName
|
|
7380
|
-
})) : getRosterUser(filters)).then(function (res) {
|
|
7549
|
+
return Promise.resolve(getRosterUser(filters)).then(function (res) {
|
|
7381
7550
|
var _res$data = res.data,
|
|
7382
7551
|
items = _res$data.items,
|
|
7383
7552
|
totalItems = _res$data.totalItems;
|
|
@@ -7472,13 +7641,13 @@ var useUserList = function useUserList() {
|
|
|
7472
7641
|
document.title = TITLE$7;
|
|
7473
7642
|
}, []);
|
|
7474
7643
|
useEffect(function () {
|
|
7475
|
-
|
|
7476
|
-
|
|
7477
|
-
|
|
7478
|
-
|
|
7479
|
-
|
|
7480
|
-
|
|
7481
|
-
}, [filters]);
|
|
7644
|
+
changeFilters(_extends({}, filters, {
|
|
7645
|
+
searchString: fullName
|
|
7646
|
+
}));
|
|
7647
|
+
}, [fullName]);
|
|
7648
|
+
useEffect(function () {
|
|
7649
|
+
getData();
|
|
7650
|
+
}, [JSON.stringify(filters)]);
|
|
7482
7651
|
var removeData = useCallback(function (id) {
|
|
7483
7652
|
dispatch(setLoading(true));
|
|
7484
7653
|
|
|
@@ -7620,6 +7789,7 @@ var useUserList = function useUserList() {
|
|
|
7620
7789
|
totalItems: totalItems,
|
|
7621
7790
|
filters: filters,
|
|
7622
7791
|
queryName: queryName,
|
|
7792
|
+
fullName: fullName,
|
|
7623
7793
|
getData: getData,
|
|
7624
7794
|
removeData: removeData,
|
|
7625
7795
|
changeFilters: changeFilters,
|
|
@@ -7728,6 +7898,481 @@ var SyncButtonIcon = function SyncButtonIcon(_ref) {
|
|
|
7728
7898
|
}, text));
|
|
7729
7899
|
};
|
|
7730
7900
|
|
|
7901
|
+
var useClickOutside = function useClickOutside(wrapperRef, onClickOutside) {
|
|
7902
|
+
useEffect(function () {
|
|
7903
|
+
function handleClickOutside(event) {
|
|
7904
|
+
if (wrapperRef.current && !wrapperRef.current.contains(event.target)) {
|
|
7905
|
+
onClickOutside === null || onClickOutside === void 0 ? void 0 : onClickOutside();
|
|
7906
|
+
}
|
|
7907
|
+
}
|
|
7908
|
+
|
|
7909
|
+
document.addEventListener("mousedown", handleClickOutside);
|
|
7910
|
+
return function () {
|
|
7911
|
+
document.removeEventListener("mousedown", handleClickOutside);
|
|
7912
|
+
};
|
|
7913
|
+
}, [wrapperRef.current]);
|
|
7914
|
+
};
|
|
7915
|
+
|
|
7916
|
+
var useFilterPopover = function useFilterPopover(props) {
|
|
7917
|
+
var sortBy = props.sortBy,
|
|
7918
|
+
filters = props.filters,
|
|
7919
|
+
users = props.users,
|
|
7920
|
+
searchBy = props.searchBy,
|
|
7921
|
+
defaultOptions = props.defaultOptions,
|
|
7922
|
+
selectedOptions = props.selectedOptions,
|
|
7923
|
+
onOptionsChange = props.onOptionsChange,
|
|
7924
|
+
onSearch = props.onSearch,
|
|
7925
|
+
onClose = props.onClose,
|
|
7926
|
+
onChangeFilters = props.onChangeFilters,
|
|
7927
|
+
getOption = props.getOption;
|
|
7928
|
+
|
|
7929
|
+
var _useState = useState(),
|
|
7930
|
+
sOptions = _useState[0],
|
|
7931
|
+
setSOptions = _useState[1];
|
|
7932
|
+
|
|
7933
|
+
var _useState2 = useState([]),
|
|
7934
|
+
filteredOptions = _useState2[0],
|
|
7935
|
+
setFilteredOptions = _useState2[1];
|
|
7936
|
+
|
|
7937
|
+
var ref = useRef(null);
|
|
7938
|
+
useClickOutside(ref, onClose);
|
|
7939
|
+
|
|
7940
|
+
var _useTranslation = useTranslation(),
|
|
7941
|
+
t = _useTranslation.t;
|
|
7942
|
+
|
|
7943
|
+
var handleSearch = useCallback(function (e) {
|
|
7944
|
+
var _e$target$value$trim, _e$target$value;
|
|
7945
|
+
|
|
7946
|
+
var value = (_e$target$value$trim = (_e$target$value = e.target.value) === null || _e$target$value === void 0 ? void 0 : _e$target$value.trim()) != null ? _e$target$value$trim : "";
|
|
7947
|
+
searchBy != undefined && !defaultOptions && (onSearch === null || onSearch === void 0 ? void 0 : onSearch(value, searchBy));
|
|
7948
|
+
searchBy != undefined && !!defaultOptions && setFilteredOptions(defaultOptions.filter(function (i) {
|
|
7949
|
+
return i.label.toLowerCase().includes(value === null || value === void 0 ? void 0 : value.toLowerCase());
|
|
7950
|
+
}));
|
|
7951
|
+
}, [searchBy, JSON.stringify(defaultOptions)]);
|
|
7952
|
+
var handleApplyFilter = useCallback(function () {
|
|
7953
|
+
onOptionsChange === null || onOptionsChange === void 0 ? void 0 : onOptionsChange(sOptions, searchBy);
|
|
7954
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
7955
|
+
}, [JSON.stringify(sOptions)]);
|
|
7956
|
+
var handleOptionSelected = useCallback(function (e) {
|
|
7957
|
+
var value = e.target.value;
|
|
7958
|
+
if (!value) setSOptions(undefined);else {
|
|
7959
|
+
var newOptions = sOptions != null ? sOptions : [];
|
|
7960
|
+
var index = newOptions.indexOf(value);
|
|
7961
|
+
|
|
7962
|
+
if (index > -1) {
|
|
7963
|
+
newOptions.splice(index, 1);
|
|
7964
|
+
} else {
|
|
7965
|
+
newOptions = [].concat(newOptions, [value]);
|
|
7966
|
+
}
|
|
7967
|
+
|
|
7968
|
+
setSOptions(newOptions == undefined ? newOptions : [].concat(newOptions));
|
|
7969
|
+
}
|
|
7970
|
+
}, [JSON.stringify(sOptions)]);
|
|
7971
|
+
var handleOptionSelectedAll = useCallback(function (e) {
|
|
7972
|
+
var value = e.target.checked;
|
|
7973
|
+
if (!value) setSOptions([""]);else setSOptions(undefined);
|
|
7974
|
+
}, []);
|
|
7975
|
+
var handleSortDesc = useCallback(function () {
|
|
7976
|
+
onChangeFilters === null || onChangeFilters === void 0 ? void 0 : onChangeFilters(_extends({}, filters, {
|
|
7977
|
+
sortBy: (filters === null || filters === void 0 ? void 0 : filters.isDescending) === true ? undefined : sortBy,
|
|
7978
|
+
isDescending: (filters === null || filters === void 0 ? void 0 : filters.isDescending) === true ? undefined : true
|
|
7979
|
+
}));
|
|
7980
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
7981
|
+
}, [JSON.stringify(filters), searchBy, searchBy]);
|
|
7982
|
+
var handleSortAsc = useCallback(function () {
|
|
7983
|
+
onChangeFilters === null || onChangeFilters === void 0 ? void 0 : onChangeFilters(_extends({}, filters, {
|
|
7984
|
+
sortBy: (filters === null || filters === void 0 ? void 0 : filters.isDescending) === false ? undefined : sortBy,
|
|
7985
|
+
isDescending: (filters === null || filters === void 0 ? void 0 : filters.isDescending) === false ? undefined : false
|
|
7986
|
+
}));
|
|
7987
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
7988
|
+
}, [JSON.stringify(filters), searchBy, searchBy]);
|
|
7989
|
+
var options = useMemo(function () {
|
|
7990
|
+
if (!getOption) return [];
|
|
7991
|
+
return users.reduce(function (i, current) {
|
|
7992
|
+
var _extends2;
|
|
7993
|
+
|
|
7994
|
+
var option = getOption(current, t);
|
|
7995
|
+
return _extends({}, i, (_extends2 = {}, _extends2[option.label] = option.value, _extends2));
|
|
7996
|
+
}, {});
|
|
7997
|
+
}, [JSON.stringify(users), JSON.stringify(getOption)]);
|
|
7998
|
+
var isAscending = (filters === null || filters === void 0 ? void 0 : filters.isDescending) == false && filters.sortBy === sortBy;
|
|
7999
|
+
var isDescending = !!(filters !== null && filters !== void 0 && filters.isDescending) && filters.sortBy === sortBy;
|
|
8000
|
+
useEffect(function () {
|
|
8001
|
+
if ((filters === null || filters === void 0 ? void 0 : filters.searchBy) !== searchBy) setSOptions(undefined);else setSOptions(selectedOptions);
|
|
8002
|
+
}, [JSON.stringify(selectedOptions), filters === null || filters === void 0 ? void 0 : filters.searchBy]);
|
|
8003
|
+
useEffect(function () {
|
|
8004
|
+
setFilteredOptions(defaultOptions || []);
|
|
8005
|
+
}, [JSON.stringify(defaultOptions)]);
|
|
8006
|
+
return {
|
|
8007
|
+
ref: ref,
|
|
8008
|
+
options: options,
|
|
8009
|
+
sOptions: sOptions,
|
|
8010
|
+
isAscending: isAscending,
|
|
8011
|
+
isDescending: isDescending,
|
|
8012
|
+
filteredOptions: filteredOptions,
|
|
8013
|
+
handleSearch: handleSearch,
|
|
8014
|
+
handleApplyFilter: handleApplyFilter,
|
|
8015
|
+
handleOptionSelected: handleOptionSelected,
|
|
8016
|
+
handleOptionSelectedAll: handleOptionSelectedAll,
|
|
8017
|
+
handleSortDesc: handleSortDesc,
|
|
8018
|
+
handleSortAsc: handleSortAsc
|
|
8019
|
+
};
|
|
8020
|
+
};
|
|
8021
|
+
|
|
8022
|
+
var FilterPopover = function FilterPopover(props) {
|
|
8023
|
+
var searchString = props.searchString,
|
|
8024
|
+
defaultOptions = props.defaultOptions,
|
|
8025
|
+
onClose = props.onClose,
|
|
8026
|
+
getOption = props.getOption;
|
|
8027
|
+
|
|
8028
|
+
var _useFilterPopover = useFilterPopover(props),
|
|
8029
|
+
ref = _useFilterPopover.ref,
|
|
8030
|
+
options = _useFilterPopover.options,
|
|
8031
|
+
sOptions = _useFilterPopover.sOptions,
|
|
8032
|
+
isAscending = _useFilterPopover.isAscending,
|
|
8033
|
+
isDescending = _useFilterPopover.isDescending,
|
|
8034
|
+
filteredOptions = _useFilterPopover.filteredOptions,
|
|
8035
|
+
handleSearch = _useFilterPopover.handleSearch,
|
|
8036
|
+
handleApplyFilter = _useFilterPopover.handleApplyFilter,
|
|
8037
|
+
handleOptionSelected = _useFilterPopover.handleOptionSelected,
|
|
8038
|
+
handleOptionSelectedAll = _useFilterPopover.handleOptionSelectedAll,
|
|
8039
|
+
handleSortDesc = _useFilterPopover.handleSortDesc,
|
|
8040
|
+
handleSortAsc = _useFilterPopover.handleSortAsc;
|
|
8041
|
+
|
|
8042
|
+
return React.createElement(Popover, Object.assign({}, props, {
|
|
8043
|
+
hideArrow: true
|
|
8044
|
+
}), React.createElement(PopoverBody, {
|
|
8045
|
+
className: "pb-3"
|
|
8046
|
+
}, React.createElement("div", {
|
|
8047
|
+
ref: ref,
|
|
8048
|
+
className: styles["popover"]
|
|
8049
|
+
}, React.createElement("div", {
|
|
8050
|
+
className: "d-flex flex-column " + styles["popover__sort"]
|
|
8051
|
+
}, React.createElement(Label, {
|
|
8052
|
+
className: "font-weight-bold"
|
|
8053
|
+
}, "Sort"), React.createElement("div", {
|
|
8054
|
+
className: "px-1 " + styles["popover__sort__item"] + " " + (isAscending && styles["popover__sort__item--active"]),
|
|
8055
|
+
onClick: handleSortAsc
|
|
8056
|
+
}, React.createElement(AiOutlineSortAscending, {
|
|
8057
|
+
className: "mr-1"
|
|
8058
|
+
}), "Ascending"), React.createElement("div", {
|
|
8059
|
+
className: "px-1 mt-1 " + styles["popover__sort__item"] + " " + (isDescending && styles["popover__sort__item--active"]),
|
|
8060
|
+
onClick: handleSortDesc
|
|
8061
|
+
}, React.createElement(AiOutlineSortDescending, {
|
|
8062
|
+
className: "mr-1"
|
|
8063
|
+
}), "Descending")), typeof getOption != 'undefined' && React.createElement(React.Fragment, null, React.createElement("div", {
|
|
8064
|
+
className: "border border-top-1 border-bottom-0 mx-1 my-2"
|
|
8065
|
+
}), React.createElement("div", {
|
|
8066
|
+
className: "d-flex flex-column"
|
|
8067
|
+
}, React.createElement(Label, {
|
|
8068
|
+
className: "font-weight-bold"
|
|
8069
|
+
}, "Filter"), React.createElement("div", {
|
|
8070
|
+
className: "position-relative px-1 " + styles["popover__search"]
|
|
8071
|
+
}, React.createElement(BiSearchAlt2, {
|
|
8072
|
+
className: "position-absolute " + styles["popover__search__icon"]
|
|
8073
|
+
}), React.createElement(Input, {
|
|
8074
|
+
className: styles["popover__search__input"],
|
|
8075
|
+
value: searchString,
|
|
8076
|
+
onChange: handleSearch
|
|
8077
|
+
})), React.createElement("div", {
|
|
8078
|
+
className: "mx-1 mt-2 p-2 bg-light " + styles["popover__options"]
|
|
8079
|
+
}, React.createElement(FormGroup, {
|
|
8080
|
+
className: "d-flex align-items-center",
|
|
8081
|
+
check: true
|
|
8082
|
+
}, React.createElement(Input, {
|
|
8083
|
+
type: "checkbox",
|
|
8084
|
+
onChange: handleOptionSelectedAll,
|
|
8085
|
+
checked: sOptions == undefined
|
|
8086
|
+
}), " ", React.createElement(Label, {
|
|
8087
|
+
check: true
|
|
8088
|
+
}, "(Select all)")), !!getOption && !defaultOptions && Object.keys(options).map(function (i) {
|
|
8089
|
+
return React.createElement(FormGroup, {
|
|
8090
|
+
key: i.id,
|
|
8091
|
+
className: "d-flex align-items-center",
|
|
8092
|
+
check: true
|
|
8093
|
+
}, React.createElement(Input, {
|
|
8094
|
+
type: "checkbox",
|
|
8095
|
+
value: options["" + i],
|
|
8096
|
+
onChange: handleOptionSelected,
|
|
8097
|
+
checked: (sOptions === null || sOptions === void 0 ? void 0 : sOptions.includes(options["" + i])) || sOptions == undefined
|
|
8098
|
+
}), " ", React.createElement(Label, {
|
|
8099
|
+
check: true
|
|
8100
|
+
}, i));
|
|
8101
|
+
}), !!defaultOptions && filteredOptions.map(function (i) {
|
|
8102
|
+
return React.createElement(FormGroup, {
|
|
8103
|
+
key: i.value,
|
|
8104
|
+
className: "d-flex align-items-center",
|
|
8105
|
+
check: true
|
|
8106
|
+
}, React.createElement(Input, {
|
|
8107
|
+
type: "checkbox",
|
|
8108
|
+
value: i.value,
|
|
8109
|
+
onChange: handleOptionSelected,
|
|
8110
|
+
checked: (sOptions === null || sOptions === void 0 ? void 0 : sOptions.includes(i.value)) || sOptions == undefined
|
|
8111
|
+
}), " ", React.createElement(Label, {
|
|
8112
|
+
check: true
|
|
8113
|
+
}, i.label));
|
|
8114
|
+
}))), React.createElement("div", {
|
|
8115
|
+
className: "d-flex justify-content-end mt-3"
|
|
8116
|
+
}, React.createElement(Button, {
|
|
8117
|
+
color: "primary",
|
|
8118
|
+
className: "mr-2",
|
|
8119
|
+
size: "sm",
|
|
8120
|
+
onClick: handleApplyFilter
|
|
8121
|
+
}, "Apply Filter"), React.createElement(Button, {
|
|
8122
|
+
color: "secondary",
|
|
8123
|
+
size: "sm",
|
|
8124
|
+
onClick: onClose
|
|
8125
|
+
}, "Cancel"))))));
|
|
8126
|
+
};
|
|
8127
|
+
|
|
8128
|
+
var HeaderCell = function HeaderCell(_ref) {
|
|
8129
|
+
var _filters$searchByStri;
|
|
8130
|
+
|
|
8131
|
+
var data = _ref.data,
|
|
8132
|
+
popoverId = _ref.popoverId,
|
|
8133
|
+
filters = _ref.filters,
|
|
8134
|
+
onChangeFilters = _ref.onChangeFilters,
|
|
8135
|
+
onOpenFilter = _ref.onOpenFilter,
|
|
8136
|
+
onClose = _ref.onClose,
|
|
8137
|
+
rest = _objectWithoutPropertiesLoose(_ref, ["data", "popoverId", "filters", "onChangeFilters", "onOpenFilter", "onClose"]);
|
|
8138
|
+
|
|
8139
|
+
var _useTranslation = useTranslation(),
|
|
8140
|
+
t = _useTranslation.t;
|
|
8141
|
+
|
|
8142
|
+
var id = useMemo(function () {
|
|
8143
|
+
return data.sortBy != undefined ? userOrders[data.sortBy] : "";
|
|
8144
|
+
}, [data.sortBy]);
|
|
8145
|
+
var isOpen = useMemo(function () {
|
|
8146
|
+
return popoverId === id;
|
|
8147
|
+
}, [id, popoverId]);
|
|
8148
|
+
|
|
8149
|
+
var handleOpenFilter = function handleOpenFilter() {
|
|
8150
|
+
onOpenFilter === null || onOpenFilter === void 0 ? void 0 : onOpenFilter(id);
|
|
8151
|
+
};
|
|
8152
|
+
|
|
8153
|
+
return React.createElement("th", {
|
|
8154
|
+
className: data.className
|
|
8155
|
+
}, !!id && data.sortBy !== undefined ? React.createElement("div", {
|
|
8156
|
+
className: "w-100 d-flex justify-content-between align-items-center " + styles["table-filter-icon"]
|
|
8157
|
+
}, t(data.name), React.createElement("div", {
|
|
8158
|
+
className: "ml-2 p-1",
|
|
8159
|
+
id: id,
|
|
8160
|
+
onClick: handleOpenFilter,
|
|
8161
|
+
style: {
|
|
8162
|
+
cursor: "pointer"
|
|
8163
|
+
}
|
|
8164
|
+
}, data.sortBy !== undefined && data.sortBy === (filters === null || filters === void 0 ? void 0 : filters.sortBy) && React.createElement("span", null, filters.isDescending ? React.createElement(AiOutlineSortDescending, null) : React.createElement(AiOutlineSortAscending, null)), !!(filters !== null && filters !== void 0 && (_filters$searchByStri = filters.searchByStrings) !== null && _filters$searchByStri !== void 0 && _filters$searchByStri.length) && data.searchBy === (filters === null || filters === void 0 ? void 0 : filters.searchBy) ? React.createElement(HiFilter, null) : React.createElement(BiFilterAlt, null)), React.createElement(FilterPopover, Object.assign({
|
|
8165
|
+
target: id,
|
|
8166
|
+
placement: "bottom-end",
|
|
8167
|
+
isOpen: isOpen,
|
|
8168
|
+
filters: filters,
|
|
8169
|
+
onClose: onClose,
|
|
8170
|
+
onChangeFilters: onChangeFilters,
|
|
8171
|
+
sortBy: data.sortBy,
|
|
8172
|
+
searchBy: data.searchBy,
|
|
8173
|
+
getOption: data.getOption,
|
|
8174
|
+
defaultOptions: data.options
|
|
8175
|
+
}, rest))) : t(data.name));
|
|
8176
|
+
};
|
|
8177
|
+
|
|
8178
|
+
var useTableHeader = function useTableHeader(props) {
|
|
8179
|
+
var filters = props.filters,
|
|
8180
|
+
onChangeFilters = props.onChangeFilters;
|
|
8181
|
+
|
|
8182
|
+
var _useState = useState(),
|
|
8183
|
+
popoverId = _useState[0],
|
|
8184
|
+
setPopoverId = _useState[1];
|
|
8185
|
+
|
|
8186
|
+
var _useState2 = useState([]),
|
|
8187
|
+
users = _useState2[0],
|
|
8188
|
+
setUsers = _useState2[1];
|
|
8189
|
+
|
|
8190
|
+
var _useState3 = useState(_extends({}, DEFAULT_FILTER_POPOVER, {
|
|
8191
|
+
sortBy: filters.sortBy,
|
|
8192
|
+
isDescending: filters.isDescending,
|
|
8193
|
+
searchString: filters.searchString
|
|
8194
|
+
})),
|
|
8195
|
+
popoverFilters = _useState3[0],
|
|
8196
|
+
setPopoverFilters = _useState3[1];
|
|
8197
|
+
|
|
8198
|
+
var dispatch = useDispatch();
|
|
8199
|
+
var getData = useCallback(function () {
|
|
8200
|
+
try {
|
|
8201
|
+
var _temp2 = _catch(function () {
|
|
8202
|
+
return Promise.resolve(getRosterUser(popoverFilters)).then(function (res) {
|
|
8203
|
+
var items = res.data.items;
|
|
8204
|
+
|
|
8205
|
+
for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
|
|
8206
|
+
var user = _step.value;
|
|
8207
|
+
user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
|
|
8208
|
+
}
|
|
8209
|
+
|
|
8210
|
+
setUsers(items);
|
|
8211
|
+
});
|
|
8212
|
+
}, function (err) {
|
|
8213
|
+
var _err$response, _err$response$data;
|
|
8214
|
+
|
|
8215
|
+
dispatch(setAlert({
|
|
8216
|
+
type: "danger",
|
|
8217
|
+
message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message
|
|
8218
|
+
}));
|
|
8219
|
+
});
|
|
8220
|
+
|
|
8221
|
+
return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
|
|
8222
|
+
} catch (e) {
|
|
8223
|
+
return Promise.reject(e);
|
|
8224
|
+
}
|
|
8225
|
+
}, [JSON.stringify(popoverFilters)]);
|
|
8226
|
+
|
|
8227
|
+
var handleFilterIcon = function handleFilterIcon(id) {
|
|
8228
|
+
setPopoverId(id);
|
|
8229
|
+
};
|
|
8230
|
+
|
|
8231
|
+
var handleCloseFilter = function handleCloseFilter() {
|
|
8232
|
+
setPopoverId("");
|
|
8233
|
+
};
|
|
8234
|
+
|
|
8235
|
+
useEffect(function () {
|
|
8236
|
+
setPopoverFilters(_extends({}, popoverFilters, {
|
|
8237
|
+
sortBy: filters.sortBy,
|
|
8238
|
+
isDescending: filters.isDescending
|
|
8239
|
+
}));
|
|
8240
|
+
}, [filters.sortBy, filters.isDescending]);
|
|
8241
|
+
var handleSearch = useCallback(function (search, searchBy) {
|
|
8242
|
+
setPopoverFilters(_extends({}, popoverFilters, {
|
|
8243
|
+
searchStringBy: search,
|
|
8244
|
+
searchBy: searchBy
|
|
8245
|
+
}));
|
|
8246
|
+
}, [JSON.stringify(popoverFilters)]);
|
|
8247
|
+
var handleChangeFilters = useCallback(function (value, searchBy) {
|
|
8248
|
+
onChangeFilters === null || onChangeFilters === void 0 ? void 0 : onChangeFilters(_extends({}, filters, {
|
|
8249
|
+
searchByStrings: value,
|
|
8250
|
+
searchBy: searchBy
|
|
8251
|
+
}));
|
|
8252
|
+
}, [JSON.stringify(filters)]);
|
|
8253
|
+
useEffect(function () {
|
|
8254
|
+
getData();
|
|
8255
|
+
}, [JSON.stringify(popoverFilters)]);
|
|
8256
|
+
useEffect(function () {
|
|
8257
|
+
setPopoverFilters(_extends({}, DEFAULT_FILTER_POPOVER, {
|
|
8258
|
+
sortBy: filters.sortBy,
|
|
8259
|
+
isDescending: filters.isDescending,
|
|
8260
|
+
searchString: filters.searchString
|
|
8261
|
+
}));
|
|
8262
|
+
}, [JSON.stringify(filters)]);
|
|
8263
|
+
return {
|
|
8264
|
+
popoverFilters: popoverFilters,
|
|
8265
|
+
popoverId: popoverId,
|
|
8266
|
+
users: users,
|
|
8267
|
+
handleFilterIcon: handleFilterIcon,
|
|
8268
|
+
handleCloseFilter: handleCloseFilter,
|
|
8269
|
+
handleSearch: handleSearch,
|
|
8270
|
+
handleChangeFilters: handleChangeFilters
|
|
8271
|
+
};
|
|
8272
|
+
};
|
|
8273
|
+
|
|
8274
|
+
var TableHeader = function TableHeader(_ref) {
|
|
8275
|
+
var headers = _ref.headers,
|
|
8276
|
+
filters = _ref.filters,
|
|
8277
|
+
onChangeFilters = _ref.onChangeFilters;
|
|
8278
|
+
|
|
8279
|
+
var _useTableHeader = useTableHeader({
|
|
8280
|
+
filters: filters,
|
|
8281
|
+
onChangeFilters: onChangeFilters
|
|
8282
|
+
}),
|
|
8283
|
+
popoverFilters = _useTableHeader.popoverFilters,
|
|
8284
|
+
popoverId = _useTableHeader.popoverId,
|
|
8285
|
+
users = _useTableHeader.users,
|
|
8286
|
+
handleFilterIcon = _useTableHeader.handleFilterIcon,
|
|
8287
|
+
handleCloseFilter = _useTableHeader.handleCloseFilter,
|
|
8288
|
+
handleSearch = _useTableHeader.handleSearch,
|
|
8289
|
+
handleChangeFilters = _useTableHeader.handleChangeFilters;
|
|
8290
|
+
|
|
8291
|
+
return React.createElement("tr", null, headers.map(function (header) {
|
|
8292
|
+
return React.createElement(HeaderCell, {
|
|
8293
|
+
key: header.name,
|
|
8294
|
+
data: header,
|
|
8295
|
+
popoverId: popoverId,
|
|
8296
|
+
filters: filters,
|
|
8297
|
+
users: users,
|
|
8298
|
+
searchString: popoverFilters.searchStringBy,
|
|
8299
|
+
selectedOptions: filters.searchByStrings,
|
|
8300
|
+
onSearch: handleSearch,
|
|
8301
|
+
onChangeFilters: onChangeFilters,
|
|
8302
|
+
onClose: handleCloseFilter,
|
|
8303
|
+
onOpenFilter: handleFilterIcon,
|
|
8304
|
+
onOptionsChange: handleChangeFilters
|
|
8305
|
+
});
|
|
8306
|
+
}));
|
|
8307
|
+
};
|
|
8308
|
+
|
|
8309
|
+
var useExportUsersCsv = function useExportUsersCsv() {
|
|
8310
|
+
var dispatch = useDispatch();
|
|
8311
|
+
var schoolName = useSelector(function (state) {
|
|
8312
|
+
var _state$common, _state$common$user;
|
|
8313
|
+
|
|
8314
|
+
return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : (_state$common$user = _state$common.user) === null || _state$common$user === void 0 ? void 0 : _state$common$user.schoolName;
|
|
8315
|
+
}) || "";
|
|
8316
|
+
|
|
8317
|
+
var exportUsers = function exportUsers(filters) {
|
|
8318
|
+
try {
|
|
8319
|
+
var _temp3 = function _temp3() {
|
|
8320
|
+
dispatch(setLoading(false));
|
|
8321
|
+
};
|
|
8322
|
+
|
|
8323
|
+
dispatch(setLoading(true));
|
|
8324
|
+
|
|
8325
|
+
var _temp4 = _catch(function () {
|
|
8326
|
+
return Promise.resolve(getRosterUserExport(filters)).then(function (res) {
|
|
8327
|
+
var data = res.data;
|
|
8328
|
+
var encodedUri = convertDataExportUser(data);
|
|
8329
|
+
var link = document.createElement("a");
|
|
8330
|
+
link.href = encodedUri;
|
|
8331
|
+
link.download = schoolName + "_Users_Report.csv";
|
|
8332
|
+
link.click();
|
|
8333
|
+
});
|
|
8334
|
+
}, function (err) {
|
|
8335
|
+
var _err$response, _err$response$data;
|
|
8336
|
+
|
|
8337
|
+
dispatch(setAlert({
|
|
8338
|
+
type: "danger",
|
|
8339
|
+
message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message
|
|
8340
|
+
}));
|
|
8341
|
+
});
|
|
8342
|
+
|
|
8343
|
+
return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
|
|
8344
|
+
} catch (e) {
|
|
8345
|
+
return Promise.reject(e);
|
|
8346
|
+
}
|
|
8347
|
+
};
|
|
8348
|
+
|
|
8349
|
+
var convertDataExportUser = function convertDataExportUser(data) {
|
|
8350
|
+
var headers = "First Name,Last Name,Email,Phone,Age,Role,Active Status,Create Time,Roster Sourced Id,Roster Status,Roster Family Name,Roster Middle Name,Roster Given Name,Roster Email,Roster Role,Roster Grades\n";
|
|
8351
|
+
var content = data.map(function (user) {
|
|
8352
|
+
var _user$rosterUser, _user$rosterUser2, _user$rosterUser3, _user$rosterUser4, _user$rosterUser5, _user$rosterUser6, _user$rosterUser7;
|
|
8353
|
+
|
|
8354
|
+
var age = user.dateOfBirth !== DATE_MIN_VALUE ? differenceInCalendarYears(moment().toDate(), moment.utc(user.dateOfBirth).local().toDate()) : "";
|
|
8355
|
+
return escapeCell(user.firstName) + "," + escapeCell(user.lastName) + "," + escapeCell(user.email) + "," + escapeCell(user.phoneNumber) + "," + age + "," + escapeCell(user.roles.join(", ")) + "," + (user.isActive ? "Active" : "Inactive") + "," + utcToLocalTime(user === null || user === void 0 ? void 0 : user.createTime, "yyyy-MM-DD HH:mm") + "," + escapeCell(user.sourcedId) + "," + escapeCell((_user$rosterUser = user.rosterUser) === null || _user$rosterUser === void 0 ? void 0 : _user$rosterUser.status) + "," + escapeCell((_user$rosterUser2 = user.rosterUser) === null || _user$rosterUser2 === void 0 ? void 0 : _user$rosterUser2.familyName) + "," + escapeCell((_user$rosterUser3 = user.rosterUser) === null || _user$rosterUser3 === void 0 ? void 0 : _user$rosterUser3.middleName) + "," + escapeCell((_user$rosterUser4 = user.rosterUser) === null || _user$rosterUser4 === void 0 ? void 0 : _user$rosterUser4.givenName) + "," + escapeCell((_user$rosterUser5 = user.rosterUser) === null || _user$rosterUser5 === void 0 ? void 0 : _user$rosterUser5.email) + "," + escapeCell((_user$rosterUser6 = user.rosterUser) === null || _user$rosterUser6 === void 0 ? void 0 : _user$rosterUser6.role) + "," + escapeCell((_user$rosterUser7 = user.rosterUser) === null || _user$rosterUser7 === void 0 ? void 0 : _user$rosterUser7.grades);
|
|
8356
|
+
}).join('\n');
|
|
8357
|
+
return "" + CSV_PREFIX + headers + encodeURIComponent(content);
|
|
8358
|
+
};
|
|
8359
|
+
|
|
8360
|
+
var escapeCell = function escapeCell(value) {
|
|
8361
|
+
if (!value) return "";
|
|
8362
|
+
return "\"" + value.replace(/"/g, '""').replaceAll(/\n/g, " ") + "\"";
|
|
8363
|
+
};
|
|
8364
|
+
|
|
8365
|
+
return {
|
|
8366
|
+
exportUsers: exportUsers
|
|
8367
|
+
};
|
|
8368
|
+
};
|
|
8369
|
+
|
|
8370
|
+
var buttonTextStyle$2 = {
|
|
8371
|
+
fontWeight: 500
|
|
8372
|
+
};
|
|
8373
|
+
var buttonStyle$2 = {
|
|
8374
|
+
height: 38
|
|
8375
|
+
};
|
|
7731
8376
|
var header$2 = "User";
|
|
7732
8377
|
|
|
7733
8378
|
var UserList = function UserList() {
|
|
@@ -7736,6 +8381,7 @@ var UserList = function UserList() {
|
|
|
7736
8381
|
userList = _useUserList.userList,
|
|
7737
8382
|
totalItems = _useUserList.totalItems,
|
|
7738
8383
|
filters = _useUserList.filters,
|
|
8384
|
+
fullName = _useUserList.fullName,
|
|
7739
8385
|
removeData = _useUserList.removeData,
|
|
7740
8386
|
changeFilters = _useUserList.changeFilters,
|
|
7741
8387
|
reDirectDetailPage = _useUserList.reDirectDetailPage,
|
|
@@ -7743,11 +8389,18 @@ var UserList = function UserList() {
|
|
|
7743
8389
|
handleSyncRosterStudents = _useUserList.handleSyncRosterStudents,
|
|
7744
8390
|
rosterUserInfo = _useUserList.rosterUserInfo;
|
|
7745
8391
|
|
|
8392
|
+
var _useExportUsersCsv = useExportUsersCsv(),
|
|
8393
|
+
exportUsers = _useExportUsersCsv.exportUsers;
|
|
8394
|
+
|
|
7746
8395
|
var _useTranslation = useTranslation(),
|
|
7747
8396
|
t = _useTranslation.t;
|
|
7748
8397
|
|
|
8398
|
+
var handleExportUsers = function handleExportUsers() {
|
|
8399
|
+
return exportUsers(filters);
|
|
8400
|
+
};
|
|
8401
|
+
|
|
7749
8402
|
return React.createElement("div", {
|
|
7750
|
-
className: "fadeIn animated"
|
|
8403
|
+
className: "fadeIn animated h-100"
|
|
7751
8404
|
}, React.createElement("h5", {
|
|
7752
8405
|
className: "mb-2"
|
|
7753
8406
|
}, t("" + header$2)), React.createElement(Row, {
|
|
@@ -7775,33 +8428,34 @@ var UserList = function UserList() {
|
|
|
7775
8428
|
}, React.createElement(SyncButtonIcon, {
|
|
7776
8429
|
text: "Sync Roster students",
|
|
7777
8430
|
onClick: handleSyncRosterStudents
|
|
7778
|
-
})
|
|
8431
|
+
}), React.createElement("button", {
|
|
8432
|
+
className: "btn btn-success d-flex align-items-center border-0 p-0 ml-2",
|
|
8433
|
+
style: buttonStyle$2,
|
|
8434
|
+
onClick: handleExportUsers
|
|
8435
|
+
}, React.createElement("div", {
|
|
8436
|
+
className: "" + styles["button-icon"]
|
|
8437
|
+
}, React.createElement("img", {
|
|
8438
|
+
src: "images/export-icon.svg",
|
|
8439
|
+
alt: ""
|
|
8440
|
+
})), React.createElement("p", {
|
|
8441
|
+
className: styles["button-content"] + " mb-0",
|
|
8442
|
+
style: buttonTextStyle$2
|
|
8443
|
+
}, "Export to CSV")))), React.createElement(Row, {
|
|
7779
8444
|
className: "mb-2"
|
|
7780
8445
|
}, React.createElement(Col, {
|
|
7781
8446
|
md: 12
|
|
7782
|
-
},
|
|
8447
|
+
}, React.createElement("div", null, React.createElement(Table, {
|
|
7783
8448
|
bordered: true,
|
|
7784
8449
|
hover: true,
|
|
7785
8450
|
striped: true,
|
|
7786
8451
|
responsive: true,
|
|
7787
8452
|
size: "sm"
|
|
7788
|
-
}, React.createElement("thead", null, React.createElement(
|
|
7789
|
-
|
|
7790
|
-
|
|
7791
|
-
|
|
7792
|
-
|
|
7793
|
-
|
|
7794
|
-
}, t("age")), React.createElement("th", {
|
|
7795
|
-
className: "align-top"
|
|
7796
|
-
}, t("role")), React.createElement("th", {
|
|
7797
|
-
className: "align-top"
|
|
7798
|
-
}, t("active_status")), React.createElement("th", {
|
|
7799
|
-
className: "align-top"
|
|
7800
|
-
}, t("created_time")), React.createElement("th", {
|
|
7801
|
-
className: "align-top"
|
|
7802
|
-
}, "Information Roster (Sourced Id / Full name / Email)"), React.createElement("th", {
|
|
7803
|
-
className: "text-center"
|
|
7804
|
-
}, t("action")))), React.createElement("tbody", null, userList.map(function (record) {
|
|
8453
|
+
}, React.createElement("thead", null, React.createElement(TableHeader, {
|
|
8454
|
+
headers: UserColumns,
|
|
8455
|
+
filters: filters,
|
|
8456
|
+
fullName: fullName,
|
|
8457
|
+
onChangeFilters: changeFilters
|
|
8458
|
+
})), React.createElement("tbody", null, userList && userList.length > 0 && userList.map(function (record) {
|
|
7805
8459
|
return React.createElement("tr", {
|
|
7806
8460
|
key: record.id
|
|
7807
8461
|
}, React.createElement("td", {
|
|
@@ -7815,7 +8469,7 @@ var UserList = function UserList() {
|
|
|
7815
8469
|
className: "align-middle"
|
|
7816
8470
|
}, record.email), React.createElement("td", {
|
|
7817
8471
|
className: "align-middle"
|
|
7818
|
-
}, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React.createElement("td", {
|
|
8472
|
+
}, record.dateOfBirth !== DATE_MIN_VALUE && differenceInCalendarYears$1(new Date(), new Date(record.dateOfBirth))), React.createElement("td", {
|
|
7819
8473
|
className: "align-middle"
|
|
7820
8474
|
}, !!record.roles && record.roles.map(function (role) {
|
|
7821
8475
|
return role === "SecondaryTeacher" ? "SupportTeacher" : role;
|
|
@@ -7839,9 +8493,13 @@ var UserList = function UserList() {
|
|
|
7839
8493
|
return removeData(record.id);
|
|
7840
8494
|
}
|
|
7841
8495
|
})));
|
|
7842
|
-
}))
|
|
8496
|
+
}), (!userList || !userList.length) && React.createElement("tr", null, React.createElement("td", {
|
|
8497
|
+
colSpan: 12,
|
|
8498
|
+
className: "p-0"
|
|
8499
|
+
}, React.createElement(EmptyDataAlert, {
|
|
8500
|
+
className: "mb-0",
|
|
7843
8501
|
label: t("user")
|
|
7844
|
-
})), React.createElement(Col, {
|
|
8502
|
+
}))))))), React.createElement(Col, {
|
|
7845
8503
|
md: 12
|
|
7846
8504
|
}, React.createElement(CustomPagination, {
|
|
7847
8505
|
filters: filters,
|