mario-education 2.4.195-level → 2.4.196-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.
@@ -9,9 +9,16 @@ export declare type UserRosterFilter = {
9
9
  searchString?: string;
10
10
  isCreated?: boolean;
11
11
  roles?: string[];
12
+ orderBy?: string;
13
+ sortBy?: UserRosterSortBy;
12
14
  };
13
15
  export declare type CreateRosterUserDto = {
14
16
  sourcedId?: string;
15
17
  teacherUserId?: string;
16
18
  teacherEmail?: string;
17
19
  };
20
+ export declare enum UserRosterSortBy {
21
+ USERNAME = "Username",
22
+ EMAIL = "Email",
23
+ ROLE = "Role"
24
+ }
@@ -1,4 +1,4 @@
1
- declare const useCreateRosterUser: (callback?: Function | undefined) => {
1
+ declare const useCreateRosterUser: (userList: any[], callback?: Function | undefined) => {
2
2
  handleCreateMultiUsers: (listUserIds: string[], teachers?: object | undefined) => void;
3
3
  handleCreateSingleUser: (sourcedId: string, isStudent: boolean, teacher?: any) => void;
4
4
  };
@@ -1,5 +1,6 @@
1
- import { UserRosterFilter } from "../configs/types";
1
+ import { UserRosterFilter, UserRosterSortBy } from "../configs/types";
2
2
  declare const useOneRosterUserList: () => {
3
+ handelSort: (sortBy: UserRosterSortBy) => void;
3
4
  handelRetrievedData: () => void;
4
5
  handleCreateTeacherOption: (newTeacher: any, userId: string) => void;
5
6
  selectedTeachers: object | undefined;
@@ -4,4 +4,4 @@ export declare const getTeacher: () => Promise<import("axios").AxiosResponse<any
4
4
  export declare const getStudentAll: (filter: any) => Promise<import("axios").AxiosResponse<any>>;
5
5
  export declare const changeTeacherOfStudent: (id: number, teacherUserId: any) => Promise<import("axios").AxiosResponse<any>>;
6
6
  export declare const getTeachersByStudentId: (studentId: number) => Promise<import("axios").AxiosResponse<any>>;
7
- export declare const getAllTeachers: () => Promise<import("axios").AxiosResponse<any>>;
7
+ export declare const getAllTeachers: (filters: any) => Promise<import("axios").AxiosResponse<any>>;
package/dist/index.css CHANGED
@@ -1290,6 +1290,10 @@ h6._3zOGW {
1290
1290
  ._3eCPL{
1291
1291
  list-style-type: none;
1292
1292
  }
1293
+
1294
+ ._4NzlA{
1295
+ cursor: pointer;
1296
+ }
1293
1297
  ._3U9cF {
1294
1298
  padding: 16px;
1295
1299
  min-height: 530px;
package/dist/index.js CHANGED
@@ -7773,8 +7773,10 @@ var changeTeacherOfStudent = function changeTeacherOfStudent(id, teacherUserId)
7773
7773
  var getTeachersByStudentId = function getTeachersByStudentId(studentId) {
7774
7774
  return marioCore.api.get(USER_URL$1 + "/teachers/" + studentId);
7775
7775
  };
7776
- var getAllTeachers$1 = function getAllTeachers() {
7777
- return marioCore.api.get(USER_URL$1 + "/all/teacher");
7776
+ var getAllTeachers$1 = function getAllTeachers(filters) {
7777
+ return marioCore.api.get(USER_URL$1 + "/all/teacher", {
7778
+ params: filters
7779
+ });
7778
7780
  };
7779
7781
 
7780
7782
  var useUserDeletedModal = function useUserDeletedModal() {
@@ -34224,7 +34226,7 @@ var RosterConfigForm = function RosterConfigForm(_ref) {
34224
34226
  md: 12
34225
34227
  }, React__default.createElement("h5", {
34226
34228
  className: "mt-4 font-weight-bold"
34227
- }, "Roster Config")), React__default.createElement(reactstrap.Col, {
34229
+ }, "OneRoster Config")), React__default.createElement(reactstrap.Col, {
34228
34230
  md: 12,
34229
34231
  className: "my-4 mt-2"
34230
34232
  }, React__default.createElement(reactstrap.Label, {
@@ -34303,7 +34305,7 @@ var createUserBySourcedIdApi = function createUserBySourcedIdApi(data) {
34303
34305
  return marioCore.api.post("" + EDU_ROSTER_USER_URL, data);
34304
34306
  };
34305
34307
 
34306
- var styles$2 = {"spinner":"_1g-gv","spin":"_aoKNi","success-block":"_1iTWy","middle-block":"_3XHDS","list-block":"_3eCPL"};
34308
+ var styles$2 = {"spinner":"_1g-gv","spin":"_aoKNi","success-block":"_1iTWy","middle-block":"_3XHDS","list-block":"_3eCPL","pointer":"_4NzlA"};
34307
34309
 
34308
34310
  var CSV_FILE_NAMES = ["academicSession", "classes", "resources", "courses", "orgs", "categories", "lineItems", "results", "users", "enrollments", "demographics"];
34309
34311
  var INVALID_CLIENT_ROSTER_CONFIG = "Response status code does not indicate success: 403 ().";
@@ -34592,7 +34594,7 @@ var ImportOneRoster = function ImportOneRoster(_ref) {
34592
34594
  style: {
34593
34595
  fontWeight: 700
34594
34596
  }
34595
- }, "Import One Roster")), React__default.createElement(reactstrap.Col, {
34597
+ }, "Import OneRoster")), React__default.createElement(reactstrap.Col, {
34596
34598
  md: 6
34597
34599
  }, React__default.createElement("input", {
34598
34600
  type: "file",
@@ -34783,6 +34785,22 @@ var useOneRosterUserList = function useOneRosterUserList() {
34783
34785
  setFilters(newFilters);
34784
34786
  };
34785
34787
 
34788
+ var handelSort = React.useCallback(function (sortBy) {
34789
+ if (sortBy !== filters.sortBy) {
34790
+ changeFilters({
34791
+ sortBy: sortBy,
34792
+ orderBy: "ASC",
34793
+ currentPage: 1
34794
+ });
34795
+ } else {
34796
+ changeFilters({
34797
+ sortBy: sortBy,
34798
+ orderBy: filters.orderBy !== "DESC" ? "DESC" : "ASC",
34799
+ currentPage: 1
34800
+ });
34801
+ }
34802
+ }, [JSON.stringify(filters)]);
34803
+
34786
34804
  var getDataUserList = function getDataUserList() {
34787
34805
  try {
34788
34806
  var _temp3 = function _temp3() {
@@ -34822,7 +34840,9 @@ var useOneRosterUserList = function useOneRosterUserList() {
34822
34840
  dispatch(marioCore.setLoading(true));
34823
34841
 
34824
34842
  var _temp8 = _catch(function () {
34825
- return Promise.resolve(getAllTeachers$1()).then(function (res) {
34843
+ return Promise.resolve(getAllTeachers$1({
34844
+ sortBy: "Email"
34845
+ })).then(function (res) {
34826
34846
  var _res$data3;
34827
34847
 
34828
34848
  setTeachers(res === null || res === void 0 ? void 0 : (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.map(function (i) {
@@ -34858,51 +34878,19 @@ var useOneRosterUserList = function useOneRosterUserList() {
34858
34878
 
34859
34879
  var handleSelectAll = function handleSelectAll() {
34860
34880
  setIsCheckAll(!isCheckAll);
34861
- var hasStudentMissingTeacher = false;
34862
- var users = userList.filter(function (i) {
34863
- var _i$role, _i$role$includes;
34864
-
34865
- if ((_i$role = i.role) !== null && _i$role !== void 0 && (_i$role$includes = _i$role.includes) !== null && _i$role$includes !== void 0 && _i$role$includes.call(_i$role, "student") && !(selectedTeachers !== null && selectedTeachers !== void 0 && selectedTeachers[i.sourcedId])) {
34866
- hasStudentMissingTeacher = true;
34867
- return false;
34868
- }
34869
-
34870
- return true;
34871
- });
34872
- setIsCheck(users.map(function (i) {
34881
+ setIsCheck(userList.map(function (i) {
34873
34882
  return i.sourcedId;
34874
34883
  }));
34875
34884
 
34876
- if (hasStudentMissingTeacher) {
34877
- dispatch(marioCore.setAlert({
34878
- type: "danger",
34879
- message: "Missing teacher for some of students"
34880
- }));
34881
- }
34882
-
34883
34885
  if (isCheckAll) {
34884
34886
  setIsCheck([]);
34885
34887
  }
34886
34888
  };
34887
34889
 
34888
34890
  var handleClickCheck = function handleClickCheck(e) {
34889
- var _selectedItem$role, _selectedItem$role$in;
34890
-
34891
34891
  var _e$target = e.target,
34892
34892
  id = _e$target.id,
34893
34893
  checked = _e$target.checked;
34894
- var selectedItem = userList.find(function (i) {
34895
- return i.sourcedId === id;
34896
- });
34897
-
34898
- if (!!selectedItem && selectedItem !== null && selectedItem !== void 0 && (_selectedItem$role = selectedItem.role) !== null && _selectedItem$role !== void 0 && (_selectedItem$role$in = _selectedItem$role.includes) !== null && _selectedItem$role$in !== void 0 && _selectedItem$role$in.call(_selectedItem$role, "student") && !(selectedTeachers !== null && selectedTeachers !== void 0 && selectedTeachers[id])) {
34899
- dispatch(marioCore.setAlert({
34900
- type: "danger",
34901
- message: "Please select a teacher"
34902
- }));
34903
- return;
34904
- }
34905
-
34906
34894
  setIsCheck([].concat(isCheck, [id]));
34907
34895
 
34908
34896
  if (!checked) {
@@ -34928,6 +34916,7 @@ var useOneRosterUserList = function useOneRosterUserList() {
34928
34916
  });
34929
34917
  setIsCheck([]);
34930
34918
  setSelectedTeachers(undefined);
34919
+ setIsCheckAll(false);
34931
34920
  }, [JSON.stringify(filters)]);
34932
34921
  React.useEffect(function () {
34933
34922
  getDataUserList();
@@ -34936,6 +34925,7 @@ var useOneRosterUserList = function useOneRosterUserList() {
34936
34925
  getTeacherList();
34937
34926
  }, []);
34938
34927
  return {
34928
+ handelSort: handelSort,
34939
34929
  handelRetrievedData: handelRetrievedData,
34940
34930
  handleCreateTeacherOption: handleCreateTeacherOption,
34941
34931
  selectedTeachers: selectedTeachers,
@@ -34953,7 +34943,7 @@ var useOneRosterUserList = function useOneRosterUserList() {
34953
34943
  };
34954
34944
  };
34955
34945
 
34956
- var useCreateRosterUser = function useCreateRosterUser(callback) {
34946
+ var useCreateRosterUser = function useCreateRosterUser(userList, callback) {
34957
34947
  var dispatch = reactRedux.useDispatch();
34958
34948
 
34959
34949
  var createUserBySourcedId = function createUserBySourcedId(users) {
@@ -34988,6 +34978,26 @@ var useCreateRosterUser = function useCreateRosterUser(callback) {
34988
34978
  };
34989
34979
 
34990
34980
  var handleCreateMultiUsers = function handleCreateMultiUsers(listUserIds, teachers) {
34981
+ var isMissingTeacher = listUserIds.some(function (i) {
34982
+ var _user$role, _user$role$includes;
34983
+
34984
+ var user = userList.find(function (u) {
34985
+ return u.sourcedId == i;
34986
+ });
34987
+ var teacher = teachers === null || teachers === void 0 ? void 0 : teachers[i];
34988
+ var isStudent = user === null || user === void 0 ? void 0 : (_user$role = user.role) === null || _user$role === void 0 ? void 0 : (_user$role$includes = _user$role.includes) === null || _user$role$includes === void 0 ? void 0 : _user$role$includes.call(_user$role, "student");
34989
+ if (isStudent && !teacher) return true;
34990
+ return false;
34991
+ });
34992
+
34993
+ if (isMissingTeacher) {
34994
+ dispatch(marioCore.setAlert({
34995
+ type: "danger",
34996
+ message: "Please select/add teacher for all selected student first."
34997
+ }));
34998
+ return;
34999
+ }
35000
+
34991
35001
  var users = listUserIds.map(function (i) {
34992
35002
  var teacher = teachers === null || teachers === void 0 ? void 0 : teachers[i];
34993
35003
  var value = {
@@ -35010,7 +35020,7 @@ var useCreateRosterUser = function useCreateRosterUser(callback) {
35010
35020
  if (!teacher && isStudent) {
35011
35021
  dispatch(marioCore.setAlert({
35012
35022
  type: "danger",
35013
- message: "Teacher is required for student"
35023
+ message: "Please select/add teacher for all selected student first."
35014
35024
  }));
35015
35025
  return;
35016
35026
  }
@@ -42972,8 +42982,17 @@ var TeacherSelector$1 = function TeacherSelector(_ref) {
42972
42982
  }, errorMessage));
42973
42983
  };
42974
42984
 
42985
+ var UserRosterSortBy;
42986
+
42987
+ (function (UserRosterSortBy) {
42988
+ UserRosterSortBy["USERNAME"] = "Username";
42989
+ UserRosterSortBy["EMAIL"] = "Email";
42990
+ UserRosterSortBy["ROLE"] = "Role";
42991
+ })(UserRosterSortBy || (UserRosterSortBy = {}));
42992
+
42975
42993
  var OneRosterUserList = function OneRosterUserList() {
42976
42994
  var _useOneRosterUserList = useOneRosterUserList(),
42995
+ handelSort = _useOneRosterUserList.handelSort,
42977
42996
  handelRetrievedData = _useOneRosterUserList.handelRetrievedData,
42978
42997
  handleCreateTeacherOption = _useOneRosterUserList.handleCreateTeacherOption,
42979
42998
  selectedTeachers = _useOneRosterUserList.selectedTeachers,
@@ -42992,7 +43011,7 @@ var OneRosterUserList = function OneRosterUserList() {
42992
43011
  var _useTranslation = marioCore.useTranslation(),
42993
43012
  t = _useTranslation.t;
42994
43013
 
42995
- var _useCreateRosterUser = useCreateRosterUser(handelRetrievedData),
43014
+ var _useCreateRosterUser = useCreateRosterUser(userList, handelRetrievedData),
42996
43015
  handleCreateMultiUsers = _useCreateRosterUser.handleCreateMultiUsers,
42997
43016
  handleCreateSingleUser = _useCreateRosterUser.handleCreateSingleUser;
42998
43017
 
@@ -43000,7 +43019,7 @@ var OneRosterUserList = function OneRosterUserList() {
43000
43019
  className: "fadeIn animated"
43001
43020
  }, React__default.createElement("h5", {
43002
43021
  className: "mt-4 mb-2"
43003
- }, "Not existed Users"), React__default.createElement(reactstrap.Row, {
43022
+ }, "Non-existent Users"), React__default.createElement(reactstrap.Row, {
43004
43023
  className: "my-2"
43005
43024
  }, React__default.createElement(reactstrap.Col, {
43006
43025
  md: 8
@@ -43022,7 +43041,7 @@ var OneRosterUserList = function OneRosterUserList() {
43022
43041
  return handleCreateMultiUsers(isCheck, selectedTeachers);
43023
43042
  },
43024
43043
  color: "primary"
43025
- }, "Create for selected users"))), React__default.createElement(reactstrap.Row, {
43044
+ }, "Create Account for Selected Users"))), React__default.createElement(reactstrap.Row, {
43026
43045
  className: "mb-2"
43027
43046
  }, React__default.createElement(reactstrap.Col, {
43028
43047
  md: 12
@@ -43039,12 +43058,33 @@ var OneRosterUserList = function OneRosterUserList() {
43039
43058
  onChange: handleSelectAll,
43040
43059
  checked: isCheckAll
43041
43060
  })), React__default.createElement("th", {
43042
- className: "align-top"
43043
- }, t("user_name")), React__default.createElement("th", {
43044
- className: "align-top"
43045
- }, t("user_email")), React__default.createElement("th", {
43046
- className: "align-top"
43047
- }, t("role")), React__default.createElement("th", {
43061
+ className: "align-top " + styles$2["pointer"],
43062
+ onClick: function onClick() {
43063
+ return handelSort(UserRosterSortBy.USERNAME);
43064
+ }
43065
+ }, t("user_name"), filters.sortBy === UserRosterSortBy.USERNAME && React__default.createElement(React__default.Fragment, null, filters.orderBy === "DESC" ? React__default.createElement(ai.AiOutlineSortDescending, {
43066
+ className: "ml-1"
43067
+ }) : React__default.createElement(ai.AiOutlineSortAscending, {
43068
+ className: "ml-1"
43069
+ }))), React__default.createElement("th", {
43070
+ className: "align-top " + styles$2["pointer"],
43071
+ onClick: function onClick() {
43072
+ return handelSort(UserRosterSortBy.EMAIL);
43073
+ }
43074
+ }, t("user_email"), filters.sortBy === UserRosterSortBy.EMAIL && React__default.createElement(React__default.Fragment, null, filters.orderBy === "DESC" ? React__default.createElement(ai.AiOutlineSortDescending, {
43075
+ className: "ml-1"
43076
+ }) : React__default.createElement(ai.AiOutlineSortAscending, {
43077
+ className: "ml-1"
43078
+ }))), React__default.createElement("th", {
43079
+ className: "align-top " + styles$2["pointer"],
43080
+ onClick: function onClick() {
43081
+ return handelSort(UserRosterSortBy.ROLE);
43082
+ }
43083
+ }, t("role"), filters.sortBy === UserRosterSortBy.ROLE && React__default.createElement(React__default.Fragment, null, filters.orderBy === "DESC" ? React__default.createElement(ai.AiOutlineSortDescending, {
43084
+ className: "ml-1"
43085
+ }) : React__default.createElement(ai.AiOutlineSortAscending, {
43086
+ className: "ml-1"
43087
+ }))), React__default.createElement("th", {
43048
43088
  className: "align-top"
43049
43089
  }, t("action")))), React__default.createElement("tbody", null, userList.map(function (item) {
43050
43090
  var _item$role$replace, _item$role, _item$role2, _item$role2$includes;
@@ -43063,7 +43103,7 @@ var OneRosterUserList = function OneRosterUserList() {
43063
43103
  }, getFullName(item)), React__default.createElement("td", {
43064
43104
  className: "align-middle"
43065
43105
  }, item.email), React__default.createElement("td", {
43066
- className: "align-middle"
43106
+ className: "align-middle text-capitalize"
43067
43107
  }, !!item.role && ((_item$role$replace = (_item$role = item.role).replace) === null || _item$role$replace === void 0 ? void 0 : _item$role$replace.call(_item$role, "SecondaryTeacher", "SupportTeacher"))), React__default.createElement("td", {
43068
43108
  className: "align-middle",
43069
43109
  style: {
@@ -43111,15 +43151,15 @@ var OneRosterUserList = function OneRosterUserList() {
43111
43151
  };
43112
43152
 
43113
43153
  var tabs$9 = [{
43114
- path: "/admin/one-rosters/imports",
43115
- title: "Imports",
43154
+ path: "/admin/one-rosters/settings",
43155
+ title: "OneRoster Setting",
43116
43156
  component: OneRosterImport
43117
43157
  }, {
43118
43158
  path: "/admin/one-rosters/users",
43119
43159
  title: "Users",
43120
43160
  component: OneRosterUserList
43121
43161
  }];
43122
- var title$b = "One Roster";
43162
+ var title$b = "OneRoster";
43123
43163
 
43124
43164
  var OneRosterContainer = function OneRosterContainer() {
43125
43165
  return React__default.createElement(marioCore.CustomTab, {