mario-education 2.4.195-level → 2.4.197-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",
@@ -34710,7 +34712,7 @@ var useRosterConfigForm = function useRosterConfigForm() {
34710
34712
  return null;
34711
34713
  }, [JSON.stringify(rosterConfig)]);
34712
34714
  React.useEffect(function () {
34713
- document.title = "One Roster";
34715
+ document.title = "OneRoster | Settings";
34714
34716
  getData();
34715
34717
  }, []);
34716
34718
  return {
@@ -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,14 +34916,17 @@ 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();
34934
34923
  }, [JSON.stringify(filters)]);
34935
34924
  React.useEffect(function () {
34925
+ document.title = "OneRoster | Users";
34936
34926
  getTeacherList();
34937
34927
  }, []);
34938
34928
  return {
34929
+ handelSort: handelSort,
34939
34930
  handelRetrievedData: handelRetrievedData,
34940
34931
  handleCreateTeacherOption: handleCreateTeacherOption,
34941
34932
  selectedTeachers: selectedTeachers,
@@ -34953,7 +34944,7 @@ var useOneRosterUserList = function useOneRosterUserList() {
34953
34944
  };
34954
34945
  };
34955
34946
 
34956
- var useCreateRosterUser = function useCreateRosterUser(callback) {
34947
+ var useCreateRosterUser = function useCreateRosterUser(userList, callback) {
34957
34948
  var dispatch = reactRedux.useDispatch();
34958
34949
 
34959
34950
  var createUserBySourcedId = function createUserBySourcedId(users) {
@@ -34988,6 +34979,26 @@ var useCreateRosterUser = function useCreateRosterUser(callback) {
34988
34979
  };
34989
34980
 
34990
34981
  var handleCreateMultiUsers = function handleCreateMultiUsers(listUserIds, teachers) {
34982
+ var isMissingTeacher = listUserIds.some(function (i) {
34983
+ var _user$role, _user$role$includes;
34984
+
34985
+ var user = userList.find(function (u) {
34986
+ return u.sourcedId == i;
34987
+ });
34988
+ var teacher = teachers === null || teachers === void 0 ? void 0 : teachers[i];
34989
+ 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");
34990
+ if (isStudent && !teacher) return true;
34991
+ return false;
34992
+ });
34993
+
34994
+ if (isMissingTeacher) {
34995
+ dispatch(marioCore.setAlert({
34996
+ type: "danger",
34997
+ message: "Please select/add teacher for all selected student first."
34998
+ }));
34999
+ return;
35000
+ }
35001
+
34991
35002
  var users = listUserIds.map(function (i) {
34992
35003
  var teacher = teachers === null || teachers === void 0 ? void 0 : teachers[i];
34993
35004
  var value = {
@@ -35010,7 +35021,7 @@ var useCreateRosterUser = function useCreateRosterUser(callback) {
35010
35021
  if (!teacher && isStudent) {
35011
35022
  dispatch(marioCore.setAlert({
35012
35023
  type: "danger",
35013
- message: "Teacher is required for student"
35024
+ message: "Please select/add teacher for all selected student first."
35014
35025
  }));
35015
35026
  return;
35016
35027
  }
@@ -42972,8 +42983,17 @@ var TeacherSelector$1 = function TeacherSelector(_ref) {
42972
42983
  }, errorMessage));
42973
42984
  };
42974
42985
 
42986
+ var UserRosterSortBy;
42987
+
42988
+ (function (UserRosterSortBy) {
42989
+ UserRosterSortBy["USERNAME"] = "Username";
42990
+ UserRosterSortBy["EMAIL"] = "Email";
42991
+ UserRosterSortBy["ROLE"] = "Role";
42992
+ })(UserRosterSortBy || (UserRosterSortBy = {}));
42993
+
42975
42994
  var OneRosterUserList = function OneRosterUserList() {
42976
42995
  var _useOneRosterUserList = useOneRosterUserList(),
42996
+ handelSort = _useOneRosterUserList.handelSort,
42977
42997
  handelRetrievedData = _useOneRosterUserList.handelRetrievedData,
42978
42998
  handleCreateTeacherOption = _useOneRosterUserList.handleCreateTeacherOption,
42979
42999
  selectedTeachers = _useOneRosterUserList.selectedTeachers,
@@ -42992,7 +43012,7 @@ var OneRosterUserList = function OneRosterUserList() {
42992
43012
  var _useTranslation = marioCore.useTranslation(),
42993
43013
  t = _useTranslation.t;
42994
43014
 
42995
- var _useCreateRosterUser = useCreateRosterUser(handelRetrievedData),
43015
+ var _useCreateRosterUser = useCreateRosterUser(userList, handelRetrievedData),
42996
43016
  handleCreateMultiUsers = _useCreateRosterUser.handleCreateMultiUsers,
42997
43017
  handleCreateSingleUser = _useCreateRosterUser.handleCreateSingleUser;
42998
43018
 
@@ -43000,7 +43020,7 @@ var OneRosterUserList = function OneRosterUserList() {
43000
43020
  className: "fadeIn animated"
43001
43021
  }, React__default.createElement("h5", {
43002
43022
  className: "mt-4 mb-2"
43003
- }, "Not existed Users"), React__default.createElement(reactstrap.Row, {
43023
+ }, "Non-existent Users"), React__default.createElement(reactstrap.Row, {
43004
43024
  className: "my-2"
43005
43025
  }, React__default.createElement(reactstrap.Col, {
43006
43026
  md: 8
@@ -43022,7 +43042,7 @@ var OneRosterUserList = function OneRosterUserList() {
43022
43042
  return handleCreateMultiUsers(isCheck, selectedTeachers);
43023
43043
  },
43024
43044
  color: "primary"
43025
- }, "Create for selected users"))), React__default.createElement(reactstrap.Row, {
43045
+ }, "Create Account for Selected Users"))), React__default.createElement(reactstrap.Row, {
43026
43046
  className: "mb-2"
43027
43047
  }, React__default.createElement(reactstrap.Col, {
43028
43048
  md: 12
@@ -43039,12 +43059,33 @@ var OneRosterUserList = function OneRosterUserList() {
43039
43059
  onChange: handleSelectAll,
43040
43060
  checked: isCheckAll
43041
43061
  })), 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", {
43062
+ className: "align-top " + styles$2["pointer"],
43063
+ onClick: function onClick() {
43064
+ return handelSort(UserRosterSortBy.USERNAME);
43065
+ }
43066
+ }, t("user_name"), filters.sortBy === UserRosterSortBy.USERNAME && React__default.createElement(React__default.Fragment, null, filters.orderBy === "DESC" ? React__default.createElement(ai.AiOutlineSortDescending, {
43067
+ className: "ml-1"
43068
+ }) : React__default.createElement(ai.AiOutlineSortAscending, {
43069
+ className: "ml-1"
43070
+ }))), React__default.createElement("th", {
43071
+ className: "align-top " + styles$2["pointer"],
43072
+ onClick: function onClick() {
43073
+ return handelSort(UserRosterSortBy.EMAIL);
43074
+ }
43075
+ }, t("user_email"), filters.sortBy === UserRosterSortBy.EMAIL && React__default.createElement(React__default.Fragment, null, filters.orderBy === "DESC" ? React__default.createElement(ai.AiOutlineSortDescending, {
43076
+ className: "ml-1"
43077
+ }) : React__default.createElement(ai.AiOutlineSortAscending, {
43078
+ className: "ml-1"
43079
+ }))), React__default.createElement("th", {
43080
+ className: "align-top " + styles$2["pointer"],
43081
+ onClick: function onClick() {
43082
+ return handelSort(UserRosterSortBy.ROLE);
43083
+ }
43084
+ }, t("role"), filters.sortBy === UserRosterSortBy.ROLE && React__default.createElement(React__default.Fragment, null, filters.orderBy === "DESC" ? React__default.createElement(ai.AiOutlineSortDescending, {
43085
+ className: "ml-1"
43086
+ }) : React__default.createElement(ai.AiOutlineSortAscending, {
43087
+ className: "ml-1"
43088
+ }))), React__default.createElement("th", {
43048
43089
  className: "align-top"
43049
43090
  }, t("action")))), React__default.createElement("tbody", null, userList.map(function (item) {
43050
43091
  var _item$role$replace, _item$role, _item$role2, _item$role2$includes;
@@ -43063,7 +43104,7 @@ var OneRosterUserList = function OneRosterUserList() {
43063
43104
  }, getFullName(item)), React__default.createElement("td", {
43064
43105
  className: "align-middle"
43065
43106
  }, item.email), React__default.createElement("td", {
43066
- className: "align-middle"
43107
+ className: "align-middle text-capitalize"
43067
43108
  }, !!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
43109
  className: "align-middle",
43069
43110
  style: {
@@ -43111,15 +43152,15 @@ var OneRosterUserList = function OneRosterUserList() {
43111
43152
  };
43112
43153
 
43113
43154
  var tabs$9 = [{
43114
- path: "/admin/one-rosters/imports",
43115
- title: "Imports",
43155
+ path: "/admin/one-rosters/settings",
43156
+ title: "OneRoster Setting",
43116
43157
  component: OneRosterImport
43117
43158
  }, {
43118
43159
  path: "/admin/one-rosters/users",
43119
43160
  title: "Users",
43120
43161
  component: OneRosterUserList
43121
43162
  }];
43122
- var title$b = "One Roster";
43163
+ var title$b = "OneRoster";
43123
43164
 
43124
43165
  var OneRosterContainer = function OneRosterContainer() {
43125
43166
  return React__default.createElement(marioCore.CustomTab, {