mario-education 2.4.534-feedback → 2.4.535-feedback

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.
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ interface RestApiProgressProps {
3
+ restApiInfo?: object;
4
+ }
5
+ declare const RestApiProgress: React.FC<RestApiProgressProps>;
6
+ export default RestApiProgress;
@@ -0,0 +1,8 @@
1
+ import { FC } from "react";
2
+ import { VERA_CROSS_CONFIG } from "../configs/types";
3
+ interface Props {
4
+ veraCrossConfig: VERA_CROSS_CONFIG;
5
+ updateData: Function;
6
+ }
7
+ declare const VeraCrossConfigForm: FC<Props>;
8
+ export default VeraCrossConfigForm;
@@ -10,3 +10,4 @@ export declare const DEFAULT_PAGE_SIZE: {
10
10
  value: number;
11
11
  };
12
12
  export declare const DEFAULT_FILTER: UserRosterFilter;
13
+ export declare const IMPORT_VERA_CROSS_NAME: string[];
@@ -23,3 +23,9 @@ export declare enum UserRosterSortBy {
23
23
  EMAIL = "Email",
24
24
  ROLE = "Role"
25
25
  }
26
+ export declare type VERA_CROSS_CONFIG = {
27
+ cronjobTime: string;
28
+ clientId: string;
29
+ clientSecret: string;
30
+ endPointUrl: string;
31
+ };
@@ -0,0 +1,9 @@
1
+ import { VERA_CROSS_CONFIG } from "../configs/types";
2
+ declare const userVeraCross: () => {
3
+ veraCrossConfig: VERA_CROSS_CONFIG;
4
+ errorImportRest: string | null;
5
+ updateData: (values: any) => Promise<void>;
6
+ restApiInfo: object | undefined;
7
+ handleImportFromRestfulApi: () => Promise<void>;
8
+ };
9
+ export default userVeraCross;
@@ -0,0 +1,7 @@
1
+ import { VERA_CROSS_CONFIG } from "../configs/types";
2
+ declare const userVeraCrossConfigForm: () => {
3
+ veraCrossConfig: VERA_CROSS_CONFIG;
4
+ errorImportRest: string | null;
5
+ updateData: (values: any) => Promise<void>;
6
+ };
7
+ export default userVeraCrossConfigForm;
@@ -0,0 +1,2 @@
1
+ declare const VeracrossImport: () => JSX.Element;
2
+ export default VeracrossImport;
package/dist/index.js CHANGED
@@ -40901,12 +40901,23 @@ var IMPORT_ZIP_ROSTER_URL = marioCore.BASE_URL + "/api/ImportOneRoster/file";
40901
40901
  var IMPORT_RESTFUL_API_ROSTER_URL = marioCore.BASE_URL + "/api/ImportRestApiRoster/rest";
40902
40902
  var ONE_ROSTER_USER_URL = marioCore.BASE_URL + "/api/usersOneRoster";
40903
40903
  var EDU_ROSTER_USER_URL = marioCore.BASE_URL + "/api/User/roster-users";
40904
+ var VERA_CROSS_URL = marioCore.BASE_URL + "/api/veraCross";
40905
+ var IMPORT_RESTFUL_API_VERA_CROSS_URL = marioCore.BASE_URL + "/api/ImportRestApiVeraCross/rest";
40904
40906
  var getRosterConfig = function getRosterConfig() {
40905
40907
  return marioCore.api.get(ROSTER_URL);
40906
40908
  };
40909
+ var getVeraCrossConfig = function getVeraCrossConfig() {
40910
+ return marioCore.api.get(VERA_CROSS_URL);
40911
+ };
40912
+ var updateVeraCrossConfig = function updateVeraCrossConfig(data) {
40913
+ return marioCore.api.put("" + VERA_CROSS_URL, data);
40914
+ };
40907
40915
  var updateRosterConfig = function updateRosterConfig(data) {
40908
40916
  return marioCore.api.put("" + ROSTER_URL, data);
40909
40917
  };
40918
+ var importVeraCrossFromRestfulApi = function importVeraCrossFromRestfulApi(fileName) {
40919
+ return marioCore.api.post(IMPORT_RESTFUL_API_VERA_CROSS_URL + "?name=" + fileName);
40920
+ };
40910
40921
  var importRosterFromFile = function importRosterFromFile(body, cb) {
40911
40922
  return marioCore.api.post(IMPORT_ZIP_ROSTER_URL, body, {
40912
40923
  onUploadProgress: cb
@@ -40938,6 +40949,7 @@ var DEFAULT_FILTER$1 = {
40938
40949
  pageSize: DEFAULT_PAGE_SIZE$1.value,
40939
40950
  isCreated: false
40940
40951
  };
40952
+ var IMPORT_VERA_CROSS_NAME = ["users"];
40941
40953
 
40942
40954
  var useImportOneRoster = function useImportOneRoster(_ref) {
40943
40955
  var errorImportRest = _ref.errorImportRest;
@@ -49287,10 +49299,319 @@ var OneRosterUserList = function OneRosterUserList() {
49287
49299
  }))));
49288
49300
  };
49289
49301
 
49302
+ var VeraCrossConfigForm = function VeraCrossConfigForm(_ref) {
49303
+ var veraCrossConfig = _ref.veraCrossConfig,
49304
+ updateData = _ref.updateData;
49305
+
49306
+ var _useTranslation = marioCore.useTranslation(),
49307
+ t = _useTranslation.t;
49308
+
49309
+ return React__default.createElement(formik.Formik, {
49310
+ initialValues: veraCrossConfig,
49311
+ enableReinitialize: true,
49312
+ onSubmit: function onSubmit(values) {
49313
+ updateData(values);
49314
+ }
49315
+ }, function (formikProps) {
49316
+ var values = formikProps.values,
49317
+ handleChange = formikProps.handleChange,
49318
+ handleBlur = formikProps.handleBlur,
49319
+ handleSubmit = formikProps.handleSubmit;
49320
+ return React__default.createElement(reactstrap.Row, null, React__default.createElement(reactstrap.Col, {
49321
+ md: 12
49322
+ }, React__default.createElement("h5", {
49323
+ className: "mt-4 font-weight-bold"
49324
+ }, t("one_roster_config"))), React__default.createElement(reactstrap.Col, {
49325
+ md: 12,
49326
+ className: "my-4 mt-2"
49327
+ }, React__default.createElement(reactstrap.Label, {
49328
+ className: "font-weight-bold"
49329
+ }, t("time_vera_cross_sync_hh")), React__default.createElement(reactstrap.Input, {
49330
+ name: "cronjobTime",
49331
+ placeholder: t("time_vera_cross_sync_hh"),
49332
+ value: values.cronjobTime,
49333
+ onChange: function onChange(e) {
49334
+ handleChange(e);
49335
+ },
49336
+ onBlur: handleBlur("cronjobTime")
49337
+ })), React__default.createElement(reactstrap.Col, {
49338
+ md: 12,
49339
+ className: "my-4 mt-2"
49340
+ }, React__default.createElement(reactstrap.Label, {
49341
+ className: "font-weight-bold"
49342
+ }, t("end_point_url"), ":"), React__default.createElement(reactstrap.Input, {
49343
+ name: "endPointUrl",
49344
+ placeholder: t("end_point_url"),
49345
+ value: values.endPointUrl,
49346
+ onChange: function onChange(e) {
49347
+ handleChange(e);
49348
+ },
49349
+ onBlur: handleBlur("endPointUrl")
49350
+ })), React__default.createElement(reactstrap.Col, {
49351
+ md: 12,
49352
+ className: "mb-4 mt-2"
49353
+ }, React__default.createElement(reactstrap.Label, {
49354
+ className: "font-weight-bold"
49355
+ }, t("client_id"), ":"), React__default.createElement(reactstrap.Input, {
49356
+ name: "clientId",
49357
+ placeholder: t("client_id"),
49358
+ value: values.clientId,
49359
+ onChange: function onChange(e) {
49360
+ handleChange(e);
49361
+ },
49362
+ onBlur: handleBlur("clientId")
49363
+ })), React__default.createElement(reactstrap.Col, {
49364
+ md: 12,
49365
+ className: "mb-4"
49366
+ }, React__default.createElement(reactstrap.Label, {
49367
+ className: "font-weight-bold"
49368
+ }, t("client_secret"), ":"), React__default.createElement(reactstrap.Input, {
49369
+ name: "clientSecret",
49370
+ placeholder: t("client_secret"),
49371
+ value: values.clientSecret,
49372
+ onChange: function onChange(e) {
49373
+ handleChange(e);
49374
+ },
49375
+ onBlur: handleBlur("clientSecret")
49376
+ })), React__default.createElement(reactstrap.Col, {
49377
+ md: 12,
49378
+ className: "d-flex justify-content-end"
49379
+ }, React__default.createElement(reactstrap.Button, {
49380
+ onClick: function onClick() {
49381
+ return handleSubmit();
49382
+ },
49383
+ color: "success"
49384
+ }, t("save"))));
49385
+ });
49386
+ };
49387
+
49388
+ var initValue$s = {
49389
+ cronjobTime: "",
49390
+ clientId: "",
49391
+ clientSecret: "",
49392
+ endPointUrl: ""
49393
+ };
49394
+
49395
+ var userVeraCross = function userVeraCross() {
49396
+ var dispatch = reactRedux.useDispatch();
49397
+
49398
+ var _useState = React.useState(),
49399
+ restApiInfo = _useState[0],
49400
+ setRestApiInfo = _useState[1];
49401
+
49402
+ var _useState2 = React.useState(initValue$s),
49403
+ veraCrossConfig = _useState2[0],
49404
+ setVeraCrossConfig = _useState2[1];
49405
+
49406
+ var getData = React.useCallback(function (loading) {
49407
+ if (loading === void 0) {
49408
+ loading = true;
49409
+ }
49410
+
49411
+ try {
49412
+ var _temp3 = function _temp3() {
49413
+ if (loading) dispatch(marioCore.setLoading(false));
49414
+ };
49415
+
49416
+ if (loading) dispatch(marioCore.setLoading(true));
49417
+
49418
+ var _temp4 = _catch(function () {
49419
+ return Promise.resolve(getVeraCrossConfig()).then(function (res) {
49420
+ setVeraCrossConfig(res.data);
49421
+ });
49422
+ }, function (err) {
49423
+ var _err$response, _err$response$data;
49424
+
49425
+ if (loading) dispatch(marioCore.setAlert({
49426
+ type: "danger",
49427
+ 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
49428
+ }));
49429
+ });
49430
+
49431
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
49432
+ } catch (e) {
49433
+ return Promise.reject(e);
49434
+ }
49435
+ }, []);
49436
+ var updateData = React.useCallback(function (values) {
49437
+ try {
49438
+ var _temp7 = function _temp7() {
49439
+ dispatch(marioCore.setLoading(false));
49440
+ };
49441
+
49442
+ dispatch(marioCore.setLoading(true));
49443
+
49444
+ var _temp8 = _catch(function () {
49445
+ return Promise.resolve(updateVeraCrossConfig(values)).then(function (res) {
49446
+ setVeraCrossConfig(res.data);
49447
+ return Promise.resolve(getData(false)).then(function () {
49448
+ dispatch(marioCore.setAlert({
49449
+ type: "success",
49450
+ message: "Update vera cross config successfully"
49451
+ }));
49452
+ });
49453
+ });
49454
+ }, function (err) {
49455
+ var _err$response2, _err$response2$data;
49456
+
49457
+ dispatch(marioCore.setAlert({
49458
+ type: "danger",
49459
+ message: ((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : (_err$response2$data = _err$response2.data) === null || _err$response2$data === void 0 ? void 0 : _err$response2$data.title) || err.message
49460
+ }));
49461
+ });
49462
+
49463
+ return Promise.resolve(_temp8 && _temp8.then ? _temp8.then(_temp7) : _temp7(_temp8));
49464
+ } catch (e) {
49465
+ return Promise.reject(e);
49466
+ }
49467
+ }, []);
49468
+ var errorImportRest = React.useMemo(function () {
49469
+ if (!veraCrossConfig.clientId.trim().length && !veraCrossConfig.clientSecret.trim().length && !veraCrossConfig.endPointUrl.trim().length) return "Client Id and Client Secret are required";
49470
+ if (!veraCrossConfig.endPointUrl.trim().length) return "End Point URL is required";
49471
+ if (!veraCrossConfig.clientId.trim().length) return "Client Id is required";
49472
+ if (!veraCrossConfig.clientSecret.trim().length) return "Client Secret is required";
49473
+ return null;
49474
+ }, [JSON.stringify(veraCrossConfig)]);
49475
+ var importRosterRestApi = React.useCallback(function (fileName) {
49476
+ try {
49477
+ var _temp10 = _catch(function () {
49478
+ return Promise.resolve(importVeraCrossFromRestfulApi(fileName)).then(function () {
49479
+ setRestApiInfo(function (state) {
49480
+ var _extends2;
49481
+
49482
+ return _extends({}, state, (_extends2 = {}, _extends2[fileName] = true, _extends2));
49483
+ });
49484
+ });
49485
+ }, function (err) {
49486
+ var _err$response3, _err$response3$data, _err$response3$data$t, _err$response3$data$t2;
49487
+
49488
+ var title = (_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : (_err$response3$data$t = _err$response3$data.title) === null || _err$response3$data$t === void 0 ? void 0 : (_err$response3$data$t2 = _err$response3$data$t.replaceAll) === null || _err$response3$data$t2 === void 0 ? void 0 : _err$response3$data$t2.call(_err$response3$data$t, '"', "");
49489
+ setRestApiInfo(function (state) {
49490
+ var _extends3;
49491
+
49492
+ return _extends({}, state, (_extends3 = {}, _extends3[fileName] = title || err.message, _extends3));
49493
+ });
49494
+ });
49495
+
49496
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(function () {}) : void 0);
49497
+ } catch (e) {
49498
+ return Promise.reject(e);
49499
+ }
49500
+ }, [JSON.stringify(restApiInfo)]);
49501
+ var handleImportFromRestfulApi = React.useCallback(function () {
49502
+ try {
49503
+ if (errorImportRest) {
49504
+ dispatch(marioCore.setAlert({
49505
+ type: "danger",
49506
+ message: errorImportRest + " (Please make sure your changes are saved)"
49507
+ }));
49508
+ return Promise.resolve();
49509
+ }
49510
+
49511
+ setRestApiInfo({});
49512
+ dispatch(marioCore.setLoading(true));
49513
+ return Promise.resolve(Promise.all(IMPORT_VERA_CROSS_NAME.map(function (fileName) {
49514
+ return importRosterRestApi(fileName);
49515
+ }))).then(function () {
49516
+ dispatch(marioCore.setLoading(false));
49517
+ });
49518
+ } catch (e) {
49519
+ return Promise.reject(e);
49520
+ }
49521
+ }, [errorImportRest]);
49522
+ React.useEffect(function () {
49523
+ document.title = "Veracross | Settings";
49524
+ getData();
49525
+ }, []);
49526
+ return {
49527
+ veraCrossConfig: veraCrossConfig,
49528
+ errorImportRest: errorImportRest,
49529
+ updateData: updateData,
49530
+ restApiInfo: restApiInfo,
49531
+ handleImportFromRestfulApi: handleImportFromRestfulApi
49532
+ };
49533
+ };
49534
+
49535
+ var RestApiProgress = function RestApiProgress(_ref) {
49536
+ var restApiInfo = _ref.restApiInfo;
49537
+ if (!restApiInfo) return null;
49538
+ var info = IMPORT_VERA_CROSS_NAME.map(function (fileName) {
49539
+ return {
49540
+ name: fileName,
49541
+ status: restApiInfo[fileName]
49542
+ };
49543
+ });
49544
+ var filteredInfo = info.filter(function (i) {
49545
+ return i.status !== "ResourceNotFound";
49546
+ });
49547
+ return React__default.createElement("div", null, filteredInfo.map(function (i) {
49548
+ return React__default.createElement("div", {
49549
+ key: i.name,
49550
+ className: "flex items-center mb-2"
49551
+ }, !i.status ? React__default.createElement(fa.FaSpinner, {
49552
+ color: "#999999",
49553
+ className: "mr-2 " + styles$5.spinner
49554
+ }) : i.status === true ? React__default.createElement(fa.FaCheckCircle, {
49555
+ color: "#28a745",
49556
+ className: "mr-2"
49557
+ }) : React__default.createElement(fa.FaTimesCircle, {
49558
+ color: "#dc3545",
49559
+ className: "mr-2"
49560
+ }), React__default.createElement("b", null, i.name + ": "), "\xA0", !i.status ? "Importing..." : i.status === true ? "Import successful" : React__default.createElement("span", null, i.status === INVALID_CLIENT_ROSTER_CONFIG ? "Invalid Client Id and Client Secret" : i.status));
49561
+ }));
49562
+ };
49563
+
49564
+ var VeracrossImport = function VeracrossImport() {
49565
+ var _userVeraCross = userVeraCross(),
49566
+ veraCrossConfig = _userVeraCross.veraCrossConfig,
49567
+ updateData = _userVeraCross.updateData,
49568
+ restApiInfo = _userVeraCross.restApiInfo,
49569
+ handleImportFromRestfulApi = _userVeraCross.handleImportFromRestfulApi;
49570
+
49571
+ var _useTranslation = marioCore.useTranslation(),
49572
+ t = _useTranslation.t;
49573
+
49574
+ return React__default.createElement("div", {
49575
+ className: "fadeIn animated"
49576
+ }, React__default.createElement(reactstrap.Row, null, React__default.createElement(reactstrap.Col, {
49577
+ md: 7
49578
+ }, React__default.createElement(VeraCrossConfigForm, {
49579
+ veraCrossConfig: veraCrossConfig,
49580
+ updateData: updateData
49581
+ })), React__default.createElement(reactstrap.Col, {
49582
+ md: 5
49583
+ }), React__default.createElement(reactstrap.Col, {
49584
+ md: 7
49585
+ }, React__default.createElement(reactstrap.Row, null, React__default.createElement(reactstrap.Col, {
49586
+ md: 12
49587
+ }, React__default.createElement("h5", {
49588
+ className: "mt-4",
49589
+ style: {
49590
+ fontWeight: 700
49591
+ }
49592
+ }, t("import_vera_cross"))), React__default.createElement(reactstrap.Col, {
49593
+ md: 6
49594
+ }), React__default.createElement(reactstrap.Col, {
49595
+ md: 6
49596
+ }, React__default.createElement(reactstrap.Button, {
49597
+ color: "primary",
49598
+ className: "w-100 mt-4 mb-1",
49599
+ onClick: handleImportFromRestfulApi
49600
+ }, t("import_from_restful_api")), React__default.createElement("div", {
49601
+ className: "mt-2"
49602
+ }, React__default.createElement(RestApiProgress, {
49603
+ restApiInfo: restApiInfo
49604
+ })))))));
49605
+ };
49606
+
49290
49607
  var tabs$9 = [{
49291
49608
  path: "/admin/one-rosters/settings",
49292
49609
  title: "one_roster_setting",
49293
49610
  component: OneRosterImport
49611
+ }, {
49612
+ path: "/admin/one-rosters/veracross-settings",
49613
+ title: "veracross_setting",
49614
+ component: VeracrossImport
49294
49615
  }, {
49295
49616
  path: "/admin/one-rosters/users",
49296
49617
  title: "users",
@@ -72852,7 +73173,9 @@ var initToken = {
72852
73173
  checkIns: ["GET"],
72853
73174
  classReflections: ["GET"],
72854
73175
  conferences: ["GET"],
72855
- surveys: ["GET"]
73176
+ surveys: ["GET"],
73177
+ staffs: ["GET"],
73178
+ students: ["GET"]
72856
73179
  }
72857
73180
  };
72858
73181
 
@@ -73504,7 +73827,7 @@ var WeeklyQuest = function WeeklyQuest() {
73504
73827
  }))));
73505
73828
  };
73506
73829
 
73507
- var initValue$s = {
73830
+ var initValue$t = {
73508
73831
  challenge: "",
73509
73832
  id: 0,
73510
73833
  order: 0,
@@ -73518,7 +73841,7 @@ var useWeeklyQuestDetail = function useWeeklyQuestDetail(id) {
73518
73841
  var dispatch = reactRedux.useDispatch();
73519
73842
  var history = reactRouterDom.useHistory();
73520
73843
 
73521
- var _useState = React.useState(initValue$s),
73844
+ var _useState = React.useState(initValue$t),
73522
73845
  dataDetail = _useState[0],
73523
73846
  setDataDetail = _useState[1];
73524
73847
 
@@ -73540,7 +73863,7 @@ var useWeeklyQuestDetail = function useWeeklyQuestDetail(id) {
73540
73863
  }, [dataDetail]);
73541
73864
  React.useEffect(function () {
73542
73865
  id && getData();
73543
- return setDataDetail(initValue$s);
73866
+ return setDataDetail(initValue$t);
73544
73867
  }, [id]);
73545
73868
  var getData = React.useCallback(function () {
73546
73869
  try {