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.js
CHANGED
|
@@ -27,13 +27,15 @@ var fa = require('react-icons/fa');
|
|
|
27
27
|
var dateFns = require('date-fns');
|
|
28
28
|
var tinymceReact = require('@tinymce/tinymce-react');
|
|
29
29
|
var differenceInCalendarYears = _interopDefault(require('date-fns/differenceInCalendarYears'));
|
|
30
|
+
var bi = require('react-icons/bi');
|
|
31
|
+
var hi = require('react-icons/hi');
|
|
32
|
+
var ai = require('react-icons/ai');
|
|
30
33
|
var DatePicker = _interopDefault(require('react-datepicker'));
|
|
31
34
|
var toDate = _interopDefault(require('date-fns/toDate'));
|
|
32
35
|
var md = require('react-icons/md');
|
|
33
36
|
var Creatable = _interopDefault(require('react-select/creatable'));
|
|
34
37
|
var ReactNotification$1 = _interopDefault(require('react-notifications-component'));
|
|
35
38
|
require('react-notifications-component/dist/theme.css');
|
|
36
|
-
var ai = require('react-icons/ai');
|
|
37
39
|
require('symbol-observable');
|
|
38
40
|
|
|
39
41
|
var dashboard = "Dashboard";
|
|
@@ -2800,7 +2802,7 @@ function _catch(body, recover) {
|
|
|
2800
2802
|
return result;
|
|
2801
2803
|
}
|
|
2802
2804
|
|
|
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","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"};
|
|
2805
|
+
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"};
|
|
2804
2806
|
|
|
2805
2807
|
var style = {
|
|
2806
2808
|
fontSize: "0.85rem"
|
|
@@ -7304,6 +7306,11 @@ var getRosterUser = function getRosterUser(filter) {
|
|
|
7304
7306
|
params: filter
|
|
7305
7307
|
});
|
|
7306
7308
|
};
|
|
7309
|
+
var getRosterUserExport = function getRosterUserExport(filter) {
|
|
7310
|
+
return api.get(ROSTER_USER_URL + "/export-csv", {
|
|
7311
|
+
params: filter
|
|
7312
|
+
});
|
|
7313
|
+
};
|
|
7307
7314
|
var getRosterUserById = function getRosterUserById(id) {
|
|
7308
7315
|
return api.get(ROSTER_USER_URL + "/" + id);
|
|
7309
7316
|
};
|
|
@@ -7337,6 +7344,173 @@ var syncRosterStudentsApi = function syncRosterStudentsApi() {
|
|
|
7337
7344
|
return api.put(STUDENT_URL + "/sync-students");
|
|
7338
7345
|
};
|
|
7339
7346
|
|
|
7347
|
+
var UserOrder;
|
|
7348
|
+
|
|
7349
|
+
(function (UserOrder) {
|
|
7350
|
+
UserOrder[UserOrder["Id"] = 0] = "Id";
|
|
7351
|
+
UserOrder[UserOrder["Name"] = 1] = "Name";
|
|
7352
|
+
UserOrder[UserOrder["Email"] = 2] = "Email";
|
|
7353
|
+
UserOrder[UserOrder["Age"] = 3] = "Age";
|
|
7354
|
+
UserOrder[UserOrder["Role"] = 4] = "Role";
|
|
7355
|
+
UserOrder[UserOrder["Status"] = 5] = "Status";
|
|
7356
|
+
UserOrder[UserOrder["CreatedAt"] = 6] = "CreatedAt";
|
|
7357
|
+
UserOrder[UserOrder["RosterUser"] = 7] = "RosterUser";
|
|
7358
|
+
})(UserOrder || (UserOrder = {}));
|
|
7359
|
+
|
|
7360
|
+
var SearchBy;
|
|
7361
|
+
|
|
7362
|
+
(function (SearchBy) {
|
|
7363
|
+
SearchBy[SearchBy["Id"] = 0] = "Id";
|
|
7364
|
+
SearchBy[SearchBy["Name"] = 1] = "Name";
|
|
7365
|
+
SearchBy[SearchBy["Email"] = 2] = "Email";
|
|
7366
|
+
SearchBy[SearchBy["Role"] = 3] = "Role";
|
|
7367
|
+
SearchBy[SearchBy["RosterUser"] = 4] = "RosterUser";
|
|
7368
|
+
SearchBy[SearchBy["Status"] = 5] = "Status";
|
|
7369
|
+
})(SearchBy || (SearchBy = {}));
|
|
7370
|
+
|
|
7371
|
+
var _userOrders;
|
|
7372
|
+
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);
|
|
7373
|
+
var UserColumns = [{
|
|
7374
|
+
name: "name",
|
|
7375
|
+
sortBy: UserOrder.Name,
|
|
7376
|
+
searchBy: SearchBy.Name,
|
|
7377
|
+
className: "align-top",
|
|
7378
|
+
getOption: function getOption(user) {
|
|
7379
|
+
var _user$fullName, _user$fullName$trim;
|
|
7380
|
+
|
|
7381
|
+
return {
|
|
7382
|
+
label: user.fullName || "empty",
|
|
7383
|
+
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)
|
|
7384
|
+
};
|
|
7385
|
+
}
|
|
7386
|
+
}, {
|
|
7387
|
+
name: "email",
|
|
7388
|
+
sortBy: UserOrder.Email,
|
|
7389
|
+
searchBy: SearchBy.Email,
|
|
7390
|
+
className: "align-top",
|
|
7391
|
+
getOption: function getOption(user) {
|
|
7392
|
+
var _user$email, _user$email$trim;
|
|
7393
|
+
|
|
7394
|
+
return {
|
|
7395
|
+
label: user.email || "empty",
|
|
7396
|
+
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)
|
|
7397
|
+
};
|
|
7398
|
+
}
|
|
7399
|
+
}, {
|
|
7400
|
+
name: "age",
|
|
7401
|
+
sortBy: UserOrder.Age,
|
|
7402
|
+
className: "align-top"
|
|
7403
|
+
}, {
|
|
7404
|
+
name: "role",
|
|
7405
|
+
sortBy: UserOrder.Role,
|
|
7406
|
+
searchBy: SearchBy.Role,
|
|
7407
|
+
className: "align-top",
|
|
7408
|
+
getOption: function getOption(user) {
|
|
7409
|
+
var _user$roles, _user$roles2, _user$roles3, _user$roles3$join, _user$roles3$join$tri;
|
|
7410
|
+
|
|
7411
|
+
return {
|
|
7412
|
+
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) {
|
|
7413
|
+
return role === "SecondaryTeacher" ? "SupportTeacher" : role;
|
|
7414
|
+
}).join(", ") : "empty",
|
|
7415
|
+
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)
|
|
7416
|
+
};
|
|
7417
|
+
}
|
|
7418
|
+
}, {
|
|
7419
|
+
name: "active_status",
|
|
7420
|
+
sortBy: UserOrder.Status,
|
|
7421
|
+
searchBy: SearchBy.Status,
|
|
7422
|
+
className: "align-top",
|
|
7423
|
+
getOption: function getOption(user, t) {
|
|
7424
|
+
return {
|
|
7425
|
+
label: user.isActive ? t("active") : t("inactive"),
|
|
7426
|
+
value: user.isActive
|
|
7427
|
+
};
|
|
7428
|
+
},
|
|
7429
|
+
options: [{
|
|
7430
|
+
label: "Active",
|
|
7431
|
+
value: "true"
|
|
7432
|
+
}, {
|
|
7433
|
+
label: "Inactive",
|
|
7434
|
+
value: "false"
|
|
7435
|
+
}]
|
|
7436
|
+
}, {
|
|
7437
|
+
name: "created_time",
|
|
7438
|
+
sortBy: UserOrder.CreatedAt,
|
|
7439
|
+
className: "align-top"
|
|
7440
|
+
}, {
|
|
7441
|
+
name: "Information Roster (Sourced Id / Full name / Email)",
|
|
7442
|
+
sortBy: UserOrder.RosterUser,
|
|
7443
|
+
searchBy: SearchBy.RosterUser,
|
|
7444
|
+
className: "align-top",
|
|
7445
|
+
getOption: function getOption(record) {
|
|
7446
|
+
if (!record) return {
|
|
7447
|
+
label: "empty",
|
|
7448
|
+
value: ""
|
|
7449
|
+
};
|
|
7450
|
+
var result = [];
|
|
7451
|
+
var sourcedId = record.sourcedId,
|
|
7452
|
+
rosterUser = record.rosterUser;
|
|
7453
|
+
!!sourcedId && result.push(sourcedId);
|
|
7454
|
+
|
|
7455
|
+
if (rosterUser) {
|
|
7456
|
+
var givenName = rosterUser.givenName,
|
|
7457
|
+
middleName = rosterUser.middleName,
|
|
7458
|
+
familyName = rosterUser.familyName,
|
|
7459
|
+
email = rosterUser.email;
|
|
7460
|
+
var names = [];
|
|
7461
|
+
!!givenName && names.push(givenName);
|
|
7462
|
+
!!middleName && names.push(middleName);
|
|
7463
|
+
!!familyName && names.push(familyName);
|
|
7464
|
+
!!names.length && result.push(names.join(" "));
|
|
7465
|
+
!!email && result.push(email);
|
|
7466
|
+
}
|
|
7467
|
+
|
|
7468
|
+
return {
|
|
7469
|
+
label: result.length ? result.join(" / ") : "empty",
|
|
7470
|
+
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) || "")
|
|
7471
|
+
};
|
|
7472
|
+
}
|
|
7473
|
+
}, {
|
|
7474
|
+
name: "action",
|
|
7475
|
+
className: "text-center"
|
|
7476
|
+
}];
|
|
7477
|
+
var DEFAULT_PAGE_SIZE$1 = {
|
|
7478
|
+
label: "10",
|
|
7479
|
+
value: 10
|
|
7480
|
+
};
|
|
7481
|
+
var DEFAULT_FILTER$1 = {
|
|
7482
|
+
searchString: "",
|
|
7483
|
+
currentPage: 1,
|
|
7484
|
+
pageSize: DEFAULT_PAGE_SIZE$1.value
|
|
7485
|
+
};
|
|
7486
|
+
var DEFAULT_FILTER_POPOVER = {
|
|
7487
|
+
currentPage: 1,
|
|
7488
|
+
pageSize: 200
|
|
7489
|
+
};
|
|
7490
|
+
var CSV_PREFIX = "data:text/csv;charset=utf-8,";
|
|
7491
|
+
|
|
7492
|
+
var useFilters$1 = function useFilters() {
|
|
7493
|
+
var _useState = React.useState(DEFAULT_FILTER$1),
|
|
7494
|
+
filters = _useState[0],
|
|
7495
|
+
setFilters = _useState[1];
|
|
7496
|
+
|
|
7497
|
+
var changeFilters = function changeFilters(updatedFilters) {
|
|
7498
|
+
var newFilters = _extends({}, filters, updatedFilters);
|
|
7499
|
+
|
|
7500
|
+
if (!!newFilters.searchString && !!updatedFilters.searchString && updatedFilters.searchString != filters.searchString) {
|
|
7501
|
+
newFilters.currentPage = 1;
|
|
7502
|
+
}
|
|
7503
|
+
|
|
7504
|
+
setFilters(newFilters);
|
|
7505
|
+
};
|
|
7506
|
+
|
|
7507
|
+
return {
|
|
7508
|
+
filters: filters,
|
|
7509
|
+
setFilters: setFilters,
|
|
7510
|
+
changeFilters: changeFilters
|
|
7511
|
+
};
|
|
7512
|
+
};
|
|
7513
|
+
|
|
7340
7514
|
var USER_URL$1 = "/admin/user";
|
|
7341
7515
|
var CREATE_USER_URL = "/admin/create-user";
|
|
7342
7516
|
var TITLE$7 = "User list";
|
|
@@ -7358,17 +7532,14 @@ var useUserList = function useUserList() {
|
|
|
7358
7532
|
return state.users.totalItems;
|
|
7359
7533
|
});
|
|
7360
7534
|
|
|
7361
|
-
var _useFilters = useFilters(),
|
|
7535
|
+
var _useFilters = useFilters$1(),
|
|
7362
7536
|
filters = _useFilters.filters,
|
|
7363
7537
|
changeFilters = _useFilters.changeFilters;
|
|
7364
7538
|
|
|
7365
|
-
var
|
|
7366
|
-
fullName = _useState[0],
|
|
7367
|
-
setFullName = _useState[1];
|
|
7368
|
-
|
|
7539
|
+
var fullName = !!queryName ? queryName : "";
|
|
7369
7540
|
var isDistrict = window.location.host.includes("-district");
|
|
7370
7541
|
var dispatch = reactRedux.useDispatch();
|
|
7371
|
-
var getData = React.useCallback(function (
|
|
7542
|
+
var getData = React.useCallback(function () {
|
|
7372
7543
|
try {
|
|
7373
7544
|
var _temp3 = function _temp3() {
|
|
7374
7545
|
dispatch(setLoading(false));
|
|
@@ -7377,9 +7548,7 @@ var useUserList = function useUserList() {
|
|
|
7377
7548
|
dispatch(setLoading(true));
|
|
7378
7549
|
|
|
7379
7550
|
var _temp4 = _catch(function () {
|
|
7380
|
-
return Promise.resolve(
|
|
7381
|
-
searchString: fullName
|
|
7382
|
-
})) : getRosterUser(filters)).then(function (res) {
|
|
7551
|
+
return Promise.resolve(getRosterUser(filters)).then(function (res) {
|
|
7383
7552
|
var _res$data = res.data,
|
|
7384
7553
|
items = _res$data.items,
|
|
7385
7554
|
totalItems = _res$data.totalItems;
|
|
@@ -7474,13 +7643,13 @@ var useUserList = function useUserList() {
|
|
|
7474
7643
|
document.title = TITLE$7;
|
|
7475
7644
|
}, []);
|
|
7476
7645
|
React.useEffect(function () {
|
|
7477
|
-
|
|
7478
|
-
|
|
7479
|
-
|
|
7480
|
-
|
|
7481
|
-
|
|
7482
|
-
|
|
7483
|
-
}, [filters]);
|
|
7646
|
+
changeFilters(_extends({}, filters, {
|
|
7647
|
+
searchString: fullName
|
|
7648
|
+
}));
|
|
7649
|
+
}, [fullName]);
|
|
7650
|
+
React.useEffect(function () {
|
|
7651
|
+
getData();
|
|
7652
|
+
}, [JSON.stringify(filters)]);
|
|
7484
7653
|
var removeData = React.useCallback(function (id) {
|
|
7485
7654
|
dispatch(setLoading(true));
|
|
7486
7655
|
|
|
@@ -7622,6 +7791,7 @@ var useUserList = function useUserList() {
|
|
|
7622
7791
|
totalItems: totalItems,
|
|
7623
7792
|
filters: filters,
|
|
7624
7793
|
queryName: queryName,
|
|
7794
|
+
fullName: fullName,
|
|
7625
7795
|
getData: getData,
|
|
7626
7796
|
removeData: removeData,
|
|
7627
7797
|
changeFilters: changeFilters,
|
|
@@ -7730,6 +7900,481 @@ var SyncButtonIcon = function SyncButtonIcon(_ref) {
|
|
|
7730
7900
|
}, text));
|
|
7731
7901
|
};
|
|
7732
7902
|
|
|
7903
|
+
var useClickOutside = function useClickOutside(wrapperRef, onClickOutside) {
|
|
7904
|
+
React.useEffect(function () {
|
|
7905
|
+
function handleClickOutside(event) {
|
|
7906
|
+
if (wrapperRef.current && !wrapperRef.current.contains(event.target)) {
|
|
7907
|
+
onClickOutside === null || onClickOutside === void 0 ? void 0 : onClickOutside();
|
|
7908
|
+
}
|
|
7909
|
+
}
|
|
7910
|
+
|
|
7911
|
+
document.addEventListener("mousedown", handleClickOutside);
|
|
7912
|
+
return function () {
|
|
7913
|
+
document.removeEventListener("mousedown", handleClickOutside);
|
|
7914
|
+
};
|
|
7915
|
+
}, [wrapperRef.current]);
|
|
7916
|
+
};
|
|
7917
|
+
|
|
7918
|
+
var useFilterPopover = function useFilterPopover(props) {
|
|
7919
|
+
var sortBy = props.sortBy,
|
|
7920
|
+
filters = props.filters,
|
|
7921
|
+
users = props.users,
|
|
7922
|
+
searchBy = props.searchBy,
|
|
7923
|
+
defaultOptions = props.defaultOptions,
|
|
7924
|
+
selectedOptions = props.selectedOptions,
|
|
7925
|
+
onOptionsChange = props.onOptionsChange,
|
|
7926
|
+
onSearch = props.onSearch,
|
|
7927
|
+
onClose = props.onClose,
|
|
7928
|
+
onChangeFilters = props.onChangeFilters,
|
|
7929
|
+
getOption = props.getOption;
|
|
7930
|
+
|
|
7931
|
+
var _useState = React.useState(),
|
|
7932
|
+
sOptions = _useState[0],
|
|
7933
|
+
setSOptions = _useState[1];
|
|
7934
|
+
|
|
7935
|
+
var _useState2 = React.useState([]),
|
|
7936
|
+
filteredOptions = _useState2[0],
|
|
7937
|
+
setFilteredOptions = _useState2[1];
|
|
7938
|
+
|
|
7939
|
+
var ref = React.useRef(null);
|
|
7940
|
+
useClickOutside(ref, onClose);
|
|
7941
|
+
|
|
7942
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
7943
|
+
t = _useTranslation.t;
|
|
7944
|
+
|
|
7945
|
+
var handleSearch = React.useCallback(function (e) {
|
|
7946
|
+
var _e$target$value$trim, _e$target$value;
|
|
7947
|
+
|
|
7948
|
+
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 : "";
|
|
7949
|
+
searchBy != undefined && !defaultOptions && (onSearch === null || onSearch === void 0 ? void 0 : onSearch(value, searchBy));
|
|
7950
|
+
searchBy != undefined && !!defaultOptions && setFilteredOptions(defaultOptions.filter(function (i) {
|
|
7951
|
+
return i.label.toLowerCase().includes(value === null || value === void 0 ? void 0 : value.toLowerCase());
|
|
7952
|
+
}));
|
|
7953
|
+
}, [searchBy, JSON.stringify(defaultOptions)]);
|
|
7954
|
+
var handleApplyFilter = React.useCallback(function () {
|
|
7955
|
+
onOptionsChange === null || onOptionsChange === void 0 ? void 0 : onOptionsChange(sOptions, searchBy);
|
|
7956
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
7957
|
+
}, [JSON.stringify(sOptions)]);
|
|
7958
|
+
var handleOptionSelected = React.useCallback(function (e) {
|
|
7959
|
+
var value = e.target.value;
|
|
7960
|
+
if (!value) setSOptions(undefined);else {
|
|
7961
|
+
var newOptions = sOptions != null ? sOptions : [];
|
|
7962
|
+
var index = newOptions.indexOf(value);
|
|
7963
|
+
|
|
7964
|
+
if (index > -1) {
|
|
7965
|
+
newOptions.splice(index, 1);
|
|
7966
|
+
} else {
|
|
7967
|
+
newOptions = [].concat(newOptions, [value]);
|
|
7968
|
+
}
|
|
7969
|
+
|
|
7970
|
+
setSOptions(newOptions == undefined ? newOptions : [].concat(newOptions));
|
|
7971
|
+
}
|
|
7972
|
+
}, [JSON.stringify(sOptions)]);
|
|
7973
|
+
var handleOptionSelectedAll = React.useCallback(function (e) {
|
|
7974
|
+
var value = e.target.checked;
|
|
7975
|
+
if (!value) setSOptions([""]);else setSOptions(undefined);
|
|
7976
|
+
}, []);
|
|
7977
|
+
var handleSortDesc = React.useCallback(function () {
|
|
7978
|
+
onChangeFilters === null || onChangeFilters === void 0 ? void 0 : onChangeFilters(_extends({}, filters, {
|
|
7979
|
+
sortBy: (filters === null || filters === void 0 ? void 0 : filters.isDescending) === true ? undefined : sortBy,
|
|
7980
|
+
isDescending: (filters === null || filters === void 0 ? void 0 : filters.isDescending) === true ? undefined : true
|
|
7981
|
+
}));
|
|
7982
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
7983
|
+
}, [JSON.stringify(filters), searchBy, searchBy]);
|
|
7984
|
+
var handleSortAsc = React.useCallback(function () {
|
|
7985
|
+
onChangeFilters === null || onChangeFilters === void 0 ? void 0 : onChangeFilters(_extends({}, filters, {
|
|
7986
|
+
sortBy: (filters === null || filters === void 0 ? void 0 : filters.isDescending) === false ? undefined : sortBy,
|
|
7987
|
+
isDescending: (filters === null || filters === void 0 ? void 0 : filters.isDescending) === false ? undefined : false
|
|
7988
|
+
}));
|
|
7989
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
7990
|
+
}, [JSON.stringify(filters), searchBy, searchBy]);
|
|
7991
|
+
var options = React.useMemo(function () {
|
|
7992
|
+
if (!getOption) return [];
|
|
7993
|
+
return users.reduce(function (i, current) {
|
|
7994
|
+
var _extends2;
|
|
7995
|
+
|
|
7996
|
+
var option = getOption(current, t);
|
|
7997
|
+
return _extends({}, i, (_extends2 = {}, _extends2[option.label] = option.value, _extends2));
|
|
7998
|
+
}, {});
|
|
7999
|
+
}, [JSON.stringify(users), JSON.stringify(getOption)]);
|
|
8000
|
+
var isAscending = (filters === null || filters === void 0 ? void 0 : filters.isDescending) == false && filters.sortBy === sortBy;
|
|
8001
|
+
var isDescending = !!(filters !== null && filters !== void 0 && filters.isDescending) && filters.sortBy === sortBy;
|
|
8002
|
+
React.useEffect(function () {
|
|
8003
|
+
if ((filters === null || filters === void 0 ? void 0 : filters.searchBy) !== searchBy) setSOptions(undefined);else setSOptions(selectedOptions);
|
|
8004
|
+
}, [JSON.stringify(selectedOptions), filters === null || filters === void 0 ? void 0 : filters.searchBy]);
|
|
8005
|
+
React.useEffect(function () {
|
|
8006
|
+
setFilteredOptions(defaultOptions || []);
|
|
8007
|
+
}, [JSON.stringify(defaultOptions)]);
|
|
8008
|
+
return {
|
|
8009
|
+
ref: ref,
|
|
8010
|
+
options: options,
|
|
8011
|
+
sOptions: sOptions,
|
|
8012
|
+
isAscending: isAscending,
|
|
8013
|
+
isDescending: isDescending,
|
|
8014
|
+
filteredOptions: filteredOptions,
|
|
8015
|
+
handleSearch: handleSearch,
|
|
8016
|
+
handleApplyFilter: handleApplyFilter,
|
|
8017
|
+
handleOptionSelected: handleOptionSelected,
|
|
8018
|
+
handleOptionSelectedAll: handleOptionSelectedAll,
|
|
8019
|
+
handleSortDesc: handleSortDesc,
|
|
8020
|
+
handleSortAsc: handleSortAsc
|
|
8021
|
+
};
|
|
8022
|
+
};
|
|
8023
|
+
|
|
8024
|
+
var FilterPopover = function FilterPopover(props) {
|
|
8025
|
+
var searchString = props.searchString,
|
|
8026
|
+
defaultOptions = props.defaultOptions,
|
|
8027
|
+
onClose = props.onClose,
|
|
8028
|
+
getOption = props.getOption;
|
|
8029
|
+
|
|
8030
|
+
var _useFilterPopover = useFilterPopover(props),
|
|
8031
|
+
ref = _useFilterPopover.ref,
|
|
8032
|
+
options = _useFilterPopover.options,
|
|
8033
|
+
sOptions = _useFilterPopover.sOptions,
|
|
8034
|
+
isAscending = _useFilterPopover.isAscending,
|
|
8035
|
+
isDescending = _useFilterPopover.isDescending,
|
|
8036
|
+
filteredOptions = _useFilterPopover.filteredOptions,
|
|
8037
|
+
handleSearch = _useFilterPopover.handleSearch,
|
|
8038
|
+
handleApplyFilter = _useFilterPopover.handleApplyFilter,
|
|
8039
|
+
handleOptionSelected = _useFilterPopover.handleOptionSelected,
|
|
8040
|
+
handleOptionSelectedAll = _useFilterPopover.handleOptionSelectedAll,
|
|
8041
|
+
handleSortDesc = _useFilterPopover.handleSortDesc,
|
|
8042
|
+
handleSortAsc = _useFilterPopover.handleSortAsc;
|
|
8043
|
+
|
|
8044
|
+
return React__default.createElement(reactstrap.Popover, Object.assign({}, props, {
|
|
8045
|
+
hideArrow: true
|
|
8046
|
+
}), React__default.createElement(reactstrap.PopoverBody, {
|
|
8047
|
+
className: "pb-3"
|
|
8048
|
+
}, React__default.createElement("div", {
|
|
8049
|
+
ref: ref,
|
|
8050
|
+
className: styles["popover"]
|
|
8051
|
+
}, React__default.createElement("div", {
|
|
8052
|
+
className: "d-flex flex-column " + styles["popover__sort"]
|
|
8053
|
+
}, React__default.createElement(reactstrap.Label, {
|
|
8054
|
+
className: "font-weight-bold"
|
|
8055
|
+
}, "Sort"), React__default.createElement("div", {
|
|
8056
|
+
className: "px-1 " + styles["popover__sort__item"] + " " + (isAscending && styles["popover__sort__item--active"]),
|
|
8057
|
+
onClick: handleSortAsc
|
|
8058
|
+
}, React__default.createElement(ai.AiOutlineSortAscending, {
|
|
8059
|
+
className: "mr-1"
|
|
8060
|
+
}), "Ascending"), React__default.createElement("div", {
|
|
8061
|
+
className: "px-1 mt-1 " + styles["popover__sort__item"] + " " + (isDescending && styles["popover__sort__item--active"]),
|
|
8062
|
+
onClick: handleSortDesc
|
|
8063
|
+
}, React__default.createElement(ai.AiOutlineSortDescending, {
|
|
8064
|
+
className: "mr-1"
|
|
8065
|
+
}), "Descending")), typeof getOption != 'undefined' && React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
|
|
8066
|
+
className: "border border-top-1 border-bottom-0 mx-1 my-2"
|
|
8067
|
+
}), React__default.createElement("div", {
|
|
8068
|
+
className: "d-flex flex-column"
|
|
8069
|
+
}, React__default.createElement(reactstrap.Label, {
|
|
8070
|
+
className: "font-weight-bold"
|
|
8071
|
+
}, "Filter"), React__default.createElement("div", {
|
|
8072
|
+
className: "position-relative px-1 " + styles["popover__search"]
|
|
8073
|
+
}, React__default.createElement(bi.BiSearchAlt2, {
|
|
8074
|
+
className: "position-absolute " + styles["popover__search__icon"]
|
|
8075
|
+
}), React__default.createElement(reactstrap.Input, {
|
|
8076
|
+
className: styles["popover__search__input"],
|
|
8077
|
+
value: searchString,
|
|
8078
|
+
onChange: handleSearch
|
|
8079
|
+
})), React__default.createElement("div", {
|
|
8080
|
+
className: "mx-1 mt-2 p-2 bg-light " + styles["popover__options"]
|
|
8081
|
+
}, React__default.createElement(reactstrap.FormGroup, {
|
|
8082
|
+
className: "d-flex align-items-center",
|
|
8083
|
+
check: true
|
|
8084
|
+
}, React__default.createElement(reactstrap.Input, {
|
|
8085
|
+
type: "checkbox",
|
|
8086
|
+
onChange: handleOptionSelectedAll,
|
|
8087
|
+
checked: sOptions == undefined
|
|
8088
|
+
}), " ", React__default.createElement(reactstrap.Label, {
|
|
8089
|
+
check: true
|
|
8090
|
+
}, "(Select all)")), !!getOption && !defaultOptions && Object.keys(options).map(function (i) {
|
|
8091
|
+
return React__default.createElement(reactstrap.FormGroup, {
|
|
8092
|
+
key: i.id,
|
|
8093
|
+
className: "d-flex align-items-center",
|
|
8094
|
+
check: true
|
|
8095
|
+
}, React__default.createElement(reactstrap.Input, {
|
|
8096
|
+
type: "checkbox",
|
|
8097
|
+
value: options["" + i],
|
|
8098
|
+
onChange: handleOptionSelected,
|
|
8099
|
+
checked: (sOptions === null || sOptions === void 0 ? void 0 : sOptions.includes(options["" + i])) || sOptions == undefined
|
|
8100
|
+
}), " ", React__default.createElement(reactstrap.Label, {
|
|
8101
|
+
check: true
|
|
8102
|
+
}, i));
|
|
8103
|
+
}), !!defaultOptions && filteredOptions.map(function (i) {
|
|
8104
|
+
return React__default.createElement(reactstrap.FormGroup, {
|
|
8105
|
+
key: i.value,
|
|
8106
|
+
className: "d-flex align-items-center",
|
|
8107
|
+
check: true
|
|
8108
|
+
}, React__default.createElement(reactstrap.Input, {
|
|
8109
|
+
type: "checkbox",
|
|
8110
|
+
value: i.value,
|
|
8111
|
+
onChange: handleOptionSelected,
|
|
8112
|
+
checked: (sOptions === null || sOptions === void 0 ? void 0 : sOptions.includes(i.value)) || sOptions == undefined
|
|
8113
|
+
}), " ", React__default.createElement(reactstrap.Label, {
|
|
8114
|
+
check: true
|
|
8115
|
+
}, i.label));
|
|
8116
|
+
}))), React__default.createElement("div", {
|
|
8117
|
+
className: "d-flex justify-content-end mt-3"
|
|
8118
|
+
}, React__default.createElement(reactstrap.Button, {
|
|
8119
|
+
color: "primary",
|
|
8120
|
+
className: "mr-2",
|
|
8121
|
+
size: "sm",
|
|
8122
|
+
onClick: handleApplyFilter
|
|
8123
|
+
}, "Apply Filter"), React__default.createElement(reactstrap.Button, {
|
|
8124
|
+
color: "secondary",
|
|
8125
|
+
size: "sm",
|
|
8126
|
+
onClick: onClose
|
|
8127
|
+
}, "Cancel"))))));
|
|
8128
|
+
};
|
|
8129
|
+
|
|
8130
|
+
var HeaderCell = function HeaderCell(_ref) {
|
|
8131
|
+
var _filters$searchByStri;
|
|
8132
|
+
|
|
8133
|
+
var data = _ref.data,
|
|
8134
|
+
popoverId = _ref.popoverId,
|
|
8135
|
+
filters = _ref.filters,
|
|
8136
|
+
onChangeFilters = _ref.onChangeFilters,
|
|
8137
|
+
onOpenFilter = _ref.onOpenFilter,
|
|
8138
|
+
onClose = _ref.onClose,
|
|
8139
|
+
rest = _objectWithoutPropertiesLoose(_ref, ["data", "popoverId", "filters", "onChangeFilters", "onOpenFilter", "onClose"]);
|
|
8140
|
+
|
|
8141
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
8142
|
+
t = _useTranslation.t;
|
|
8143
|
+
|
|
8144
|
+
var id = React.useMemo(function () {
|
|
8145
|
+
return data.sortBy != undefined ? userOrders[data.sortBy] : "";
|
|
8146
|
+
}, [data.sortBy]);
|
|
8147
|
+
var isOpen = React.useMemo(function () {
|
|
8148
|
+
return popoverId === id;
|
|
8149
|
+
}, [id, popoverId]);
|
|
8150
|
+
|
|
8151
|
+
var handleOpenFilter = function handleOpenFilter() {
|
|
8152
|
+
onOpenFilter === null || onOpenFilter === void 0 ? void 0 : onOpenFilter(id);
|
|
8153
|
+
};
|
|
8154
|
+
|
|
8155
|
+
return React__default.createElement("th", {
|
|
8156
|
+
className: data.className
|
|
8157
|
+
}, !!id && data.sortBy !== undefined ? React__default.createElement("div", {
|
|
8158
|
+
className: "w-100 d-flex justify-content-between align-items-center " + styles["table-filter-icon"]
|
|
8159
|
+
}, t(data.name), React__default.createElement("div", {
|
|
8160
|
+
className: "ml-2 p-1",
|
|
8161
|
+
id: id,
|
|
8162
|
+
onClick: handleOpenFilter,
|
|
8163
|
+
style: {
|
|
8164
|
+
cursor: "pointer"
|
|
8165
|
+
}
|
|
8166
|
+
}, data.sortBy !== undefined && data.sortBy === (filters === null || filters === void 0 ? void 0 : filters.sortBy) && React__default.createElement("span", null, filters.isDescending ? React__default.createElement(ai.AiOutlineSortDescending, null) : React__default.createElement(ai.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__default.createElement(hi.HiFilter, null) : React__default.createElement(bi.BiFilterAlt, null)), React__default.createElement(FilterPopover, Object.assign({
|
|
8167
|
+
target: id,
|
|
8168
|
+
placement: "bottom-end",
|
|
8169
|
+
isOpen: isOpen,
|
|
8170
|
+
filters: filters,
|
|
8171
|
+
onClose: onClose,
|
|
8172
|
+
onChangeFilters: onChangeFilters,
|
|
8173
|
+
sortBy: data.sortBy,
|
|
8174
|
+
searchBy: data.searchBy,
|
|
8175
|
+
getOption: data.getOption,
|
|
8176
|
+
defaultOptions: data.options
|
|
8177
|
+
}, rest))) : t(data.name));
|
|
8178
|
+
};
|
|
8179
|
+
|
|
8180
|
+
var useTableHeader = function useTableHeader(props) {
|
|
8181
|
+
var filters = props.filters,
|
|
8182
|
+
onChangeFilters = props.onChangeFilters;
|
|
8183
|
+
|
|
8184
|
+
var _useState = React.useState(),
|
|
8185
|
+
popoverId = _useState[0],
|
|
8186
|
+
setPopoverId = _useState[1];
|
|
8187
|
+
|
|
8188
|
+
var _useState2 = React.useState([]),
|
|
8189
|
+
users = _useState2[0],
|
|
8190
|
+
setUsers = _useState2[1];
|
|
8191
|
+
|
|
8192
|
+
var _useState3 = React.useState(_extends({}, DEFAULT_FILTER_POPOVER, {
|
|
8193
|
+
sortBy: filters.sortBy,
|
|
8194
|
+
isDescending: filters.isDescending,
|
|
8195
|
+
searchString: filters.searchString
|
|
8196
|
+
})),
|
|
8197
|
+
popoverFilters = _useState3[0],
|
|
8198
|
+
setPopoverFilters = _useState3[1];
|
|
8199
|
+
|
|
8200
|
+
var dispatch = reactRedux.useDispatch();
|
|
8201
|
+
var getData = React.useCallback(function () {
|
|
8202
|
+
try {
|
|
8203
|
+
var _temp2 = _catch(function () {
|
|
8204
|
+
return Promise.resolve(getRosterUser(popoverFilters)).then(function (res) {
|
|
8205
|
+
var items = res.data.items;
|
|
8206
|
+
|
|
8207
|
+
for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
|
|
8208
|
+
var user = _step.value;
|
|
8209
|
+
user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
|
|
8210
|
+
}
|
|
8211
|
+
|
|
8212
|
+
setUsers(items);
|
|
8213
|
+
});
|
|
8214
|
+
}, function (err) {
|
|
8215
|
+
var _err$response, _err$response$data;
|
|
8216
|
+
|
|
8217
|
+
dispatch(setAlert({
|
|
8218
|
+
type: "danger",
|
|
8219
|
+
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
|
|
8220
|
+
}));
|
|
8221
|
+
});
|
|
8222
|
+
|
|
8223
|
+
return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
|
|
8224
|
+
} catch (e) {
|
|
8225
|
+
return Promise.reject(e);
|
|
8226
|
+
}
|
|
8227
|
+
}, [JSON.stringify(popoverFilters)]);
|
|
8228
|
+
|
|
8229
|
+
var handleFilterIcon = function handleFilterIcon(id) {
|
|
8230
|
+
setPopoverId(id);
|
|
8231
|
+
};
|
|
8232
|
+
|
|
8233
|
+
var handleCloseFilter = function handleCloseFilter() {
|
|
8234
|
+
setPopoverId("");
|
|
8235
|
+
};
|
|
8236
|
+
|
|
8237
|
+
React.useEffect(function () {
|
|
8238
|
+
setPopoverFilters(_extends({}, popoverFilters, {
|
|
8239
|
+
sortBy: filters.sortBy,
|
|
8240
|
+
isDescending: filters.isDescending
|
|
8241
|
+
}));
|
|
8242
|
+
}, [filters.sortBy, filters.isDescending]);
|
|
8243
|
+
var handleSearch = React.useCallback(function (search, searchBy) {
|
|
8244
|
+
setPopoverFilters(_extends({}, popoverFilters, {
|
|
8245
|
+
searchStringBy: search,
|
|
8246
|
+
searchBy: searchBy
|
|
8247
|
+
}));
|
|
8248
|
+
}, [JSON.stringify(popoverFilters)]);
|
|
8249
|
+
var handleChangeFilters = React.useCallback(function (value, searchBy) {
|
|
8250
|
+
onChangeFilters === null || onChangeFilters === void 0 ? void 0 : onChangeFilters(_extends({}, filters, {
|
|
8251
|
+
searchByStrings: value,
|
|
8252
|
+
searchBy: searchBy
|
|
8253
|
+
}));
|
|
8254
|
+
}, [JSON.stringify(filters)]);
|
|
8255
|
+
React.useEffect(function () {
|
|
8256
|
+
getData();
|
|
8257
|
+
}, [JSON.stringify(popoverFilters)]);
|
|
8258
|
+
React.useEffect(function () {
|
|
8259
|
+
setPopoverFilters(_extends({}, DEFAULT_FILTER_POPOVER, {
|
|
8260
|
+
sortBy: filters.sortBy,
|
|
8261
|
+
isDescending: filters.isDescending,
|
|
8262
|
+
searchString: filters.searchString
|
|
8263
|
+
}));
|
|
8264
|
+
}, [JSON.stringify(filters)]);
|
|
8265
|
+
return {
|
|
8266
|
+
popoverFilters: popoverFilters,
|
|
8267
|
+
popoverId: popoverId,
|
|
8268
|
+
users: users,
|
|
8269
|
+
handleFilterIcon: handleFilterIcon,
|
|
8270
|
+
handleCloseFilter: handleCloseFilter,
|
|
8271
|
+
handleSearch: handleSearch,
|
|
8272
|
+
handleChangeFilters: handleChangeFilters
|
|
8273
|
+
};
|
|
8274
|
+
};
|
|
8275
|
+
|
|
8276
|
+
var TableHeader = function TableHeader(_ref) {
|
|
8277
|
+
var headers = _ref.headers,
|
|
8278
|
+
filters = _ref.filters,
|
|
8279
|
+
onChangeFilters = _ref.onChangeFilters;
|
|
8280
|
+
|
|
8281
|
+
var _useTableHeader = useTableHeader({
|
|
8282
|
+
filters: filters,
|
|
8283
|
+
onChangeFilters: onChangeFilters
|
|
8284
|
+
}),
|
|
8285
|
+
popoverFilters = _useTableHeader.popoverFilters,
|
|
8286
|
+
popoverId = _useTableHeader.popoverId,
|
|
8287
|
+
users = _useTableHeader.users,
|
|
8288
|
+
handleFilterIcon = _useTableHeader.handleFilterIcon,
|
|
8289
|
+
handleCloseFilter = _useTableHeader.handleCloseFilter,
|
|
8290
|
+
handleSearch = _useTableHeader.handleSearch,
|
|
8291
|
+
handleChangeFilters = _useTableHeader.handleChangeFilters;
|
|
8292
|
+
|
|
8293
|
+
return React__default.createElement("tr", null, headers.map(function (header) {
|
|
8294
|
+
return React__default.createElement(HeaderCell, {
|
|
8295
|
+
key: header.name,
|
|
8296
|
+
data: header,
|
|
8297
|
+
popoverId: popoverId,
|
|
8298
|
+
filters: filters,
|
|
8299
|
+
users: users,
|
|
8300
|
+
searchString: popoverFilters.searchStringBy,
|
|
8301
|
+
selectedOptions: filters.searchByStrings,
|
|
8302
|
+
onSearch: handleSearch,
|
|
8303
|
+
onChangeFilters: onChangeFilters,
|
|
8304
|
+
onClose: handleCloseFilter,
|
|
8305
|
+
onOpenFilter: handleFilterIcon,
|
|
8306
|
+
onOptionsChange: handleChangeFilters
|
|
8307
|
+
});
|
|
8308
|
+
}));
|
|
8309
|
+
};
|
|
8310
|
+
|
|
8311
|
+
var useExportUsersCsv = function useExportUsersCsv() {
|
|
8312
|
+
var dispatch = reactRedux.useDispatch();
|
|
8313
|
+
var schoolName = reactRedux.useSelector(function (state) {
|
|
8314
|
+
var _state$common, _state$common$user;
|
|
8315
|
+
|
|
8316
|
+
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;
|
|
8317
|
+
}) || "";
|
|
8318
|
+
|
|
8319
|
+
var exportUsers = function exportUsers(filters) {
|
|
8320
|
+
try {
|
|
8321
|
+
var _temp3 = function _temp3() {
|
|
8322
|
+
dispatch(setLoading(false));
|
|
8323
|
+
};
|
|
8324
|
+
|
|
8325
|
+
dispatch(setLoading(true));
|
|
8326
|
+
|
|
8327
|
+
var _temp4 = _catch(function () {
|
|
8328
|
+
return Promise.resolve(getRosterUserExport(filters)).then(function (res) {
|
|
8329
|
+
var data = res.data;
|
|
8330
|
+
var encodedUri = convertDataExportUser(data);
|
|
8331
|
+
var link = document.createElement("a");
|
|
8332
|
+
link.href = encodedUri;
|
|
8333
|
+
link.download = schoolName + "_Users_Report.csv";
|
|
8334
|
+
link.click();
|
|
8335
|
+
});
|
|
8336
|
+
}, function (err) {
|
|
8337
|
+
var _err$response, _err$response$data;
|
|
8338
|
+
|
|
8339
|
+
dispatch(setAlert({
|
|
8340
|
+
type: "danger",
|
|
8341
|
+
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
|
|
8342
|
+
}));
|
|
8343
|
+
});
|
|
8344
|
+
|
|
8345
|
+
return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
|
|
8346
|
+
} catch (e) {
|
|
8347
|
+
return Promise.reject(e);
|
|
8348
|
+
}
|
|
8349
|
+
};
|
|
8350
|
+
|
|
8351
|
+
var convertDataExportUser = function convertDataExportUser(data) {
|
|
8352
|
+
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";
|
|
8353
|
+
var content = data.map(function (user) {
|
|
8354
|
+
var _user$rosterUser, _user$rosterUser2, _user$rosterUser3, _user$rosterUser4, _user$rosterUser5, _user$rosterUser6, _user$rosterUser7;
|
|
8355
|
+
|
|
8356
|
+
var age = user.dateOfBirth !== DATE_MIN_VALUE ? dateFns.differenceInCalendarYears(moment().toDate(), moment.utc(user.dateOfBirth).local().toDate()) : "";
|
|
8357
|
+
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);
|
|
8358
|
+
}).join('\n');
|
|
8359
|
+
return "" + CSV_PREFIX + headers + encodeURIComponent(content);
|
|
8360
|
+
};
|
|
8361
|
+
|
|
8362
|
+
var escapeCell = function escapeCell(value) {
|
|
8363
|
+
if (!value) return "";
|
|
8364
|
+
return "\"" + value.replace(/"/g, '""').replaceAll(/\n/g, " ") + "\"";
|
|
8365
|
+
};
|
|
8366
|
+
|
|
8367
|
+
return {
|
|
8368
|
+
exportUsers: exportUsers
|
|
8369
|
+
};
|
|
8370
|
+
};
|
|
8371
|
+
|
|
8372
|
+
var buttonTextStyle$2 = {
|
|
8373
|
+
fontWeight: 500
|
|
8374
|
+
};
|
|
8375
|
+
var buttonStyle$2 = {
|
|
8376
|
+
height: 38
|
|
8377
|
+
};
|
|
7733
8378
|
var header$2 = "User";
|
|
7734
8379
|
|
|
7735
8380
|
var UserList = function UserList() {
|
|
@@ -7738,6 +8383,7 @@ var UserList = function UserList() {
|
|
|
7738
8383
|
userList = _useUserList.userList,
|
|
7739
8384
|
totalItems = _useUserList.totalItems,
|
|
7740
8385
|
filters = _useUserList.filters,
|
|
8386
|
+
fullName = _useUserList.fullName,
|
|
7741
8387
|
removeData = _useUserList.removeData,
|
|
7742
8388
|
changeFilters = _useUserList.changeFilters,
|
|
7743
8389
|
reDirectDetailPage = _useUserList.reDirectDetailPage,
|
|
@@ -7745,11 +8391,18 @@ var UserList = function UserList() {
|
|
|
7745
8391
|
handleSyncRosterStudents = _useUserList.handleSyncRosterStudents,
|
|
7746
8392
|
rosterUserInfo = _useUserList.rosterUserInfo;
|
|
7747
8393
|
|
|
8394
|
+
var _useExportUsersCsv = useExportUsersCsv(),
|
|
8395
|
+
exportUsers = _useExportUsersCsv.exportUsers;
|
|
8396
|
+
|
|
7748
8397
|
var _useTranslation = reactI18next.useTranslation(),
|
|
7749
8398
|
t = _useTranslation.t;
|
|
7750
8399
|
|
|
8400
|
+
var handleExportUsers = function handleExportUsers() {
|
|
8401
|
+
return exportUsers(filters);
|
|
8402
|
+
};
|
|
8403
|
+
|
|
7751
8404
|
return React__default.createElement("div", {
|
|
7752
|
-
className: "fadeIn animated"
|
|
8405
|
+
className: "fadeIn animated h-100"
|
|
7753
8406
|
}, React__default.createElement("h5", {
|
|
7754
8407
|
className: "mb-2"
|
|
7755
8408
|
}, t("" + header$2)), React__default.createElement(reactstrap.Row, {
|
|
@@ -7777,33 +8430,34 @@ var UserList = function UserList() {
|
|
|
7777
8430
|
}, React__default.createElement(SyncButtonIcon, {
|
|
7778
8431
|
text: "Sync Roster students",
|
|
7779
8432
|
onClick: handleSyncRosterStudents
|
|
7780
|
-
})
|
|
8433
|
+
}), React__default.createElement("button", {
|
|
8434
|
+
className: "btn btn-success d-flex align-items-center border-0 p-0 ml-2",
|
|
8435
|
+
style: buttonStyle$2,
|
|
8436
|
+
onClick: handleExportUsers
|
|
8437
|
+
}, React__default.createElement("div", {
|
|
8438
|
+
className: "" + styles["button-icon"]
|
|
8439
|
+
}, React__default.createElement("img", {
|
|
8440
|
+
src: "images/export-icon.svg",
|
|
8441
|
+
alt: ""
|
|
8442
|
+
})), React__default.createElement("p", {
|
|
8443
|
+
className: styles["button-content"] + " mb-0",
|
|
8444
|
+
style: buttonTextStyle$2
|
|
8445
|
+
}, "Export to CSV")))), React__default.createElement(reactstrap.Row, {
|
|
7781
8446
|
className: "mb-2"
|
|
7782
8447
|
}, React__default.createElement(reactstrap.Col, {
|
|
7783
8448
|
md: 12
|
|
7784
|
-
},
|
|
8449
|
+
}, React__default.createElement("div", null, React__default.createElement(reactstrap.Table, {
|
|
7785
8450
|
bordered: true,
|
|
7786
8451
|
hover: true,
|
|
7787
8452
|
striped: true,
|
|
7788
8453
|
responsive: true,
|
|
7789
8454
|
size: "sm"
|
|
7790
|
-
}, React__default.createElement("thead", null, React__default.createElement(
|
|
7791
|
-
|
|
7792
|
-
|
|
7793
|
-
|
|
7794
|
-
|
|
7795
|
-
|
|
7796
|
-
}, t("age")), React__default.createElement("th", {
|
|
7797
|
-
className: "align-top"
|
|
7798
|
-
}, t("role")), React__default.createElement("th", {
|
|
7799
|
-
className: "align-top"
|
|
7800
|
-
}, t("active_status")), React__default.createElement("th", {
|
|
7801
|
-
className: "align-top"
|
|
7802
|
-
}, t("created_time")), React__default.createElement("th", {
|
|
7803
|
-
className: "align-top"
|
|
7804
|
-
}, "Information Roster (Sourced Id / Full name / Email)"), React__default.createElement("th", {
|
|
7805
|
-
className: "text-center"
|
|
7806
|
-
}, t("action")))), React__default.createElement("tbody", null, userList.map(function (record) {
|
|
8455
|
+
}, React__default.createElement("thead", null, React__default.createElement(TableHeader, {
|
|
8456
|
+
headers: UserColumns,
|
|
8457
|
+
filters: filters,
|
|
8458
|
+
fullName: fullName,
|
|
8459
|
+
onChangeFilters: changeFilters
|
|
8460
|
+
})), React__default.createElement("tbody", null, userList && userList.length > 0 && userList.map(function (record) {
|
|
7807
8461
|
return React__default.createElement("tr", {
|
|
7808
8462
|
key: record.id
|
|
7809
8463
|
}, React__default.createElement("td", {
|
|
@@ -7817,7 +8471,7 @@ var UserList = function UserList() {
|
|
|
7817
8471
|
className: "align-middle"
|
|
7818
8472
|
}, record.email), React__default.createElement("td", {
|
|
7819
8473
|
className: "align-middle"
|
|
7820
|
-
}, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React__default.createElement("td", {
|
|
8474
|
+
}, record.dateOfBirth !== DATE_MIN_VALUE && differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React__default.createElement("td", {
|
|
7821
8475
|
className: "align-middle"
|
|
7822
8476
|
}, !!record.roles && record.roles.map(function (role) {
|
|
7823
8477
|
return role === "SecondaryTeacher" ? "SupportTeacher" : role;
|
|
@@ -7841,9 +8495,13 @@ var UserList = function UserList() {
|
|
|
7841
8495
|
return removeData(record.id);
|
|
7842
8496
|
}
|
|
7843
8497
|
})));
|
|
7844
|
-
}))
|
|
8498
|
+
}), (!userList || !userList.length) && React__default.createElement("tr", null, React__default.createElement("td", {
|
|
8499
|
+
colSpan: 12,
|
|
8500
|
+
className: "p-0"
|
|
8501
|
+
}, React__default.createElement(EmptyDataAlert, {
|
|
8502
|
+
className: "mb-0",
|
|
7845
8503
|
label: t("user")
|
|
7846
|
-
})), React__default.createElement(reactstrap.Col, {
|
|
8504
|
+
}))))))), React__default.createElement(reactstrap.Col, {
|
|
7847
8505
|
md: 12
|
|
7848
8506
|
}, React__default.createElement(CustomPagination, {
|
|
7849
8507
|
filters: filters,
|