mario-teacher-student-client 2.1.102-admin → 2.1.104-admin
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/index.js
CHANGED
|
@@ -688,7 +688,7 @@ var STEP_PROFILE = {
|
|
|
688
688
|
|
|
689
689
|
var prioritizedRoles = ["Admin", "Teacher", "Assistant", "EduTeacher", "Student", "Parent"];
|
|
690
690
|
var handleUserRole = function handleUserRole(userRoles) {
|
|
691
|
-
if (userRoles.includes("Teacher") && userRoles.includes("Assistant")) {
|
|
691
|
+
if (userRoles !== null && userRoles !== void 0 && userRoles.includes("Teacher") && userRoles !== null && userRoles !== void 0 && userRoles.includes("Assistant")) {
|
|
692
692
|
var roles = userRoles.filter(function (r) {
|
|
693
693
|
return r !== "Teacher" && r !== "Assistant";
|
|
694
694
|
});
|
|
@@ -714,7 +714,7 @@ var defaultFontLarge = 20;
|
|
|
714
714
|
var LOGO = "/images/logo.svg";
|
|
715
715
|
|
|
716
716
|
var HeaderSideBar = function HeaderSideBar(_ref) {
|
|
717
|
-
var _currentUrl$split, _clsx;
|
|
717
|
+
var _user$roles, _currentUrl$split, _handleUserRole, _clsx;
|
|
718
718
|
|
|
719
719
|
var children = _ref.children,
|
|
720
720
|
navigations = _ref.navigations,
|
|
@@ -732,6 +732,7 @@ var HeaderSideBar = function HeaderSideBar(_ref) {
|
|
|
732
732
|
|
|
733
733
|
return (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
|
|
734
734
|
});
|
|
735
|
+
var isAdmin = user === null || user === void 0 ? void 0 : (_user$roles = user.roles) === null || _user$roles === void 0 ? void 0 : _user$roles.includes("Admin");
|
|
735
736
|
var userId = user === null || user === void 0 ? void 0 : user.id;
|
|
736
737
|
var defaultFont = reactRedux.useSelector(function (state) {
|
|
737
738
|
var _state$common2;
|
|
@@ -1025,7 +1026,7 @@ var HeaderSideBar = function HeaderSideBar(_ref) {
|
|
|
1025
1026
|
return React__default.createElement("div", null, React__default.createElement(AppBar, {
|
|
1026
1027
|
position: "fixed",
|
|
1027
1028
|
className: classes.header
|
|
1028
|
-
}, React__default.createElement(Toolbar, null, !isParentPage && React__default.createElement(IconButton, {
|
|
1029
|
+
}, React__default.createElement(Toolbar, null, !isParentPage && !isAdmin && React__default.createElement(IconButton, {
|
|
1029
1030
|
edge: "start",
|
|
1030
1031
|
className: classes.menuButton,
|
|
1031
1032
|
color: "inherit",
|
|
@@ -1062,7 +1063,7 @@ var HeaderSideBar = function HeaderSideBar(_ref) {
|
|
|
1062
1063
|
"aria-label": "show 17 new notifications",
|
|
1063
1064
|
color: "inherit",
|
|
1064
1065
|
onClick: handleMenu
|
|
1065
|
-
}, React__default.createElement(icons.AccountCircle, null)), React__default.createElement(IconButton, {
|
|
1066
|
+
}, React__default.createElement(icons.AccountCircle, null)), !isAdmin && React__default.createElement(IconButton, {
|
|
1066
1067
|
edge: "end",
|
|
1067
1068
|
"aria-label": "account of current user",
|
|
1068
1069
|
"aria-haspopup": "true",
|
|
@@ -1124,14 +1125,14 @@ var HeaderSideBar = function HeaderSideBar(_ref) {
|
|
|
1124
1125
|
onClose: handleClose
|
|
1125
1126
|
}, !!isTeacher && React__default.createElement(core.MenuItem, {
|
|
1126
1127
|
onClick: openProfile
|
|
1127
|
-
}, "Profile"), handleUserRole(user === null || user === void 0 ? void 0 : user.userRoles).length > 1 && React__default.createElement(core.MenuItem, {
|
|
1128
|
+
}, "Profile"), ((_handleUserRole = handleUserRole((user === null || user === void 0 ? void 0 : user.userRoles) || [])) === null || _handleUserRole === void 0 ? void 0 : _handleUserRole.length) > 1 && React__default.createElement(core.MenuItem, {
|
|
1128
1129
|
onClick: function onClick() {
|
|
1129
1130
|
onToggleModel === null || onToggleModel === void 0 ? void 0 : onToggleModel();
|
|
1130
1131
|
handleClose();
|
|
1131
1132
|
}
|
|
1132
1133
|
}, "Role change"), React__default.createElement(core.MenuItem, {
|
|
1133
1134
|
onClick: signOut
|
|
1134
|
-
}, "Logout")))), screenWidth > 600 && isOpenSideBar ? React__default.createElement("div", {
|
|
1135
|
+
}, "Logout")))), !isAdmin && React__default.createElement(React__default.Fragment, null, screenWidth > 600 && isOpenSideBar ? React__default.createElement("div", {
|
|
1135
1136
|
className: classes.positionBox
|
|
1136
1137
|
}, React__default.createElement(core.Drawer, {
|
|
1137
1138
|
id: "menu-sidebar",
|
|
@@ -1227,8 +1228,8 @@ var HeaderSideBar = function HeaderSideBar(_ref) {
|
|
|
1227
1228
|
})) === null || _ICON_NAV$find2 === void 0 ? void 0 : _ICON_NAV$find2.icon), React__default.createElement(core.ListItemText, {
|
|
1228
1229
|
primary: navigation === null || navigation === void 0 ? void 0 : navigation.name
|
|
1229
1230
|
}));
|
|
1230
|
-
}))), React__default.createElement("main", {
|
|
1231
|
-
className: clsx(classes.content, (_clsx = {}, _clsx[classes.contentShift] =
|
|
1231
|
+
})))), React__default.createElement("main", {
|
|
1232
|
+
className: clsx(classes.content, (_clsx = {}, _clsx[classes.contentShift] = isAdmin ? false : isOpenSideBar, _clsx))
|
|
1232
1233
|
}, children));
|
|
1233
1234
|
};
|
|
1234
1235
|
var useStyles = styles$O.makeStyles(function (theme) {
|
|
@@ -1594,6 +1595,7 @@ var MainLayout = function MainLayout(_ref) {
|
|
|
1594
1595
|
var _temp6 = _catch(function () {
|
|
1595
1596
|
return Promise.resolve(marioCore.getInfo()).then(function (info) {
|
|
1596
1597
|
function _temp4() {
|
|
1598
|
+
console.log("end");
|
|
1597
1599
|
dispatch(marioCore.setUser(_extends({}, user, userData, {
|
|
1598
1600
|
email: userData.email,
|
|
1599
1601
|
roles: roles,
|
|
@@ -1607,9 +1609,7 @@ var MainLayout = function MainLayout(_ref) {
|
|
|
1607
1609
|
|
|
1608
1610
|
var roles = [];
|
|
1609
1611
|
var userData = info.data;
|
|
1610
|
-
console.log(
|
|
1611
|
-
userData: userData
|
|
1612
|
-
});
|
|
1612
|
+
console.log("start");
|
|
1613
1613
|
|
|
1614
1614
|
for (var _iterator = _createForOfIteratorHelperLoose(prioritizedRoles), _step; !(_step = _iterator()).done;) {
|
|
1615
1615
|
var _userData$roles;
|
|
@@ -1619,20 +1619,24 @@ var MainLayout = function MainLayout(_ref) {
|
|
|
1619
1619
|
if (userData !== null && userData !== void 0 && (_userData$roles = userData.roles) !== null && _userData$roles !== void 0 && _userData$roles.includes(r)) {
|
|
1620
1620
|
var _userData$roles2;
|
|
1621
1621
|
|
|
1622
|
-
if (r
|
|
1623
|
-
roles
|
|
1622
|
+
if (r === "Teacher" && userData !== null && userData !== void 0 && (_userData$roles2 = userData.roles) !== null && _userData$roles2 !== void 0 && _userData$roles2.includes("Assistant")) {
|
|
1623
|
+
roles.push("Teacher");
|
|
1624
|
+
roles.push("Assistant");
|
|
1624
1625
|
} else {
|
|
1625
|
-
roles
|
|
1626
|
+
roles.push(r);
|
|
1626
1627
|
}
|
|
1627
1628
|
|
|
1628
1629
|
return;
|
|
1629
1630
|
}
|
|
1630
1631
|
}
|
|
1631
1632
|
|
|
1632
|
-
|
|
1633
|
+
console.log({
|
|
1634
|
+
roles: roles
|
|
1635
|
+
});
|
|
1636
|
+
var isTeacher = (roles === null || roles === void 0 ? void 0 : roles.includes("Teacher")) || (roles === null || roles === void 0 ? void 0 : roles.includes("Assistant"));
|
|
1633
1637
|
var isStudent = roles.includes("Student");
|
|
1634
|
-
var isAssistant = !roles.includes("Teacher") && roles.includes("Assistant");
|
|
1635
|
-
var isTeacherAssistant = roles.includes("Teacher") && roles.includes("Assistant");
|
|
1638
|
+
var isAssistant = !(roles !== null && roles !== void 0 && roles.includes("Teacher")) && (roles === null || roles === void 0 ? void 0 : roles.includes("Assistant"));
|
|
1639
|
+
var isTeacherAssistant = (roles === null || roles === void 0 ? void 0 : roles.includes("Teacher")) && (roles === null || roles === void 0 ? void 0 : roles.includes("Assistant"));
|
|
1636
1640
|
|
|
1637
1641
|
var _temp3 = function () {
|
|
1638
1642
|
if (isTeacher || isStudent || isTeacherAssistant) {
|
|
@@ -17344,7 +17348,7 @@ var TabPanel$3 = function TabPanel(props) {
|
|
|
17344
17348
|
};
|
|
17345
17349
|
|
|
17346
17350
|
var StudentTabs = function StudentTabs(props) {
|
|
17347
|
-
var _useSelector, _useSelector$roles;
|
|
17351
|
+
var _user$roles, _useSelector, _useSelector$roles;
|
|
17348
17352
|
|
|
17349
17353
|
var history = reactRouterDom.useHistory();
|
|
17350
17354
|
var location = reactRouterDom.useLocation();
|
|
@@ -17365,6 +17369,7 @@ var StudentTabs = function StudentTabs(props) {
|
|
|
17365
17369
|
|
|
17366
17370
|
return (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
|
|
17367
17371
|
});
|
|
17372
|
+
var isAdmin = user === null || user === void 0 ? void 0 : (_user$roles = user.roles) === null || _user$roles === void 0 ? void 0 : _user$roles.includes("Admin");
|
|
17368
17373
|
var dispatch = reactRedux.useDispatch();
|
|
17369
17374
|
var useStyles = styles$O.makeStyles(function (theme) {
|
|
17370
17375
|
var _divDiv, _theme$breakpoints$do, _tabLabel;
|
|
@@ -17472,7 +17477,7 @@ var StudentTabs = function StudentTabs(props) {
|
|
|
17472
17477
|
className: classes.header
|
|
17473
17478
|
}, React__default.createElement(core.Typography, {
|
|
17474
17479
|
className: classes.title
|
|
17475
|
-
}, React__default.createElement(BiArrowBack, {
|
|
17480
|
+
}, !isAdmin && React__default.createElement(BiArrowBack, {
|
|
17476
17481
|
className: classes.iconArr,
|
|
17477
17482
|
onClick: function onClick() {
|
|
17478
17483
|
return goBack();
|
|
@@ -17493,7 +17498,7 @@ var StudentTabs = function StudentTabs(props) {
|
|
|
17493
17498
|
variant: "scrollable",
|
|
17494
17499
|
scrollButtons: "on"
|
|
17495
17500
|
}, tabs.map(function (tab, index) {
|
|
17496
|
-
return React__default.createElement(Tab, {
|
|
17501
|
+
return !isAdmin ? React__default.createElement(React__default.Fragment, null, React__default.createElement(Tab, {
|
|
17497
17502
|
key: index,
|
|
17498
17503
|
label: tab.title,
|
|
17499
17504
|
onClick: function onClick() {
|
|
@@ -17517,7 +17522,31 @@ var StudentTabs = function StudentTabs(props) {
|
|
|
17517
17522
|
toggle(tab.path + ("" + studentId));
|
|
17518
17523
|
},
|
|
17519
17524
|
className: classes.tabLabel + " " + (activeTab === index ? classes.tabLabelActive : "")
|
|
17520
|
-
})
|
|
17525
|
+
})) : React__default.createElement(React__default.Fragment, null, isAdmin == tab.showForAdmin && React__default.createElement(Tab, {
|
|
17526
|
+
key: index,
|
|
17527
|
+
label: tab.title,
|
|
17528
|
+
onClick: function onClick() {
|
|
17529
|
+
if (EVENT_LOG_TAB.some(function (i) {
|
|
17530
|
+
return tab.title.includes(i.tabName);
|
|
17531
|
+
})) {
|
|
17532
|
+
var _EVENT_LOG_TAB$find2;
|
|
17533
|
+
|
|
17534
|
+
dispatch(marioCore.initAmplitude({
|
|
17535
|
+
name: user.email,
|
|
17536
|
+
event: "plp: view page",
|
|
17537
|
+
student_id: studentInfo === null || studentInfo === void 0 ? void 0 : studentInfo.email,
|
|
17538
|
+
page: EVENT_LOG_TAB !== null && EVENT_LOG_TAB !== void 0 && EVENT_LOG_TAB.find(function (i) {
|
|
17539
|
+
return tab.title.includes(i.tabName);
|
|
17540
|
+
}) ? (_EVENT_LOG_TAB$find2 = EVENT_LOG_TAB.find(function (i) {
|
|
17541
|
+
return tab.title.includes(i.tabName);
|
|
17542
|
+
})) === null || _EVENT_LOG_TAB$find2 === void 0 ? void 0 : _EVENT_LOG_TAB$find2.pageName : ""
|
|
17543
|
+
}));
|
|
17544
|
+
}
|
|
17545
|
+
|
|
17546
|
+
toggle(tab.path + ("" + studentId));
|
|
17547
|
+
},
|
|
17548
|
+
className: classes.tabLabel + " " + (activeTab === index ? classes.tabLabelActive : "")
|
|
17549
|
+
}));
|
|
17521
17550
|
}))), tabs.map(function (tab, index) {
|
|
17522
17551
|
return React__default.createElement(TabPanel$3, {
|
|
17523
17552
|
value: activeTab,
|
|
@@ -17716,7 +17745,8 @@ var handleShowStatus = function handleShowStatus(status) {
|
|
|
17716
17745
|
|
|
17717
17746
|
var GoalProgress = function GoalProgress(props) {
|
|
17718
17747
|
var studentId = props.studentId,
|
|
17719
|
-
classFontSize = props.classFontSize
|
|
17748
|
+
classFontSize = props.classFontSize,
|
|
17749
|
+
isAdmin = props.isAdmin;
|
|
17720
17750
|
var history = reactRouterDom.useHistory();
|
|
17721
17751
|
|
|
17722
17752
|
var _useGoalProgress = useGoalProgress(),
|
|
@@ -17751,7 +17781,7 @@ var GoalProgress = function GoalProgress(props) {
|
|
|
17751
17781
|
className: "" + styles$8["box-header"]
|
|
17752
17782
|
}, React__default.createElement(core.Typography, {
|
|
17753
17783
|
className: "" + styles$8["box-header-title"]
|
|
17754
|
-
}, "Goal Process"), React__default.createElement(core.Grid, {
|
|
17784
|
+
}, "Goal Process"), !isAdmin && React__default.createElement(core.Grid, {
|
|
17755
17785
|
onClick: function onClick() {
|
|
17756
17786
|
return handleClickOpen();
|
|
17757
17787
|
},
|
|
@@ -18010,7 +18040,7 @@ var TabPanel$4 = function TabPanel(props) {
|
|
|
18010
18040
|
};
|
|
18011
18041
|
|
|
18012
18042
|
var OverviewLeft = function OverviewLeft(props) {
|
|
18013
|
-
var _useSelector, _useSelector$roles, _partnerData$meetingS, _partnerData$meetingS2, _partnerData$classSch, _partnerData$classSch2, _partnerData$meetingS3, _partnerData$meetingS4, _partnerData$classSch3, _partnerData$classSch4;
|
|
18043
|
+
var _useSelector, _useSelector$roles, _useSelector2, _useSelector2$roles, _partnerData$meetingS, _partnerData$meetingS2, _partnerData$classSch, _partnerData$classSch2, _partnerData$meetingS3, _partnerData$meetingS4, _partnerData$classSch3, _partnerData$classSch4;
|
|
18014
18044
|
|
|
18015
18045
|
var history = reactRouterDom.useHistory();
|
|
18016
18046
|
var partnerData = props.partnerData,
|
|
@@ -18031,6 +18061,11 @@ var OverviewLeft = function OverviewLeft(props) {
|
|
|
18031
18061
|
|
|
18032
18062
|
return (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
|
|
18033
18063
|
})) === null || _useSelector === void 0 ? void 0 : (_useSelector$roles = _useSelector.roles) === null || _useSelector$roles === void 0 ? void 0 : _useSelector$roles.includes("EduTeacher");
|
|
18064
|
+
var isAdmin = (_useSelector2 = reactRedux.useSelector(function (state) {
|
|
18065
|
+
var _state$common2;
|
|
18066
|
+
|
|
18067
|
+
return (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.user;
|
|
18068
|
+
})) === null || _useSelector2 === void 0 ? void 0 : (_useSelector2$roles = _useSelector2.roles) === null || _useSelector2$roles === void 0 ? void 0 : _useSelector2$roles.includes("Admin");
|
|
18034
18069
|
|
|
18035
18070
|
var openEdit = function openEdit() {
|
|
18036
18071
|
var url = "/student-detail/profile/" + studentId + "/update";
|
|
@@ -18082,7 +18117,7 @@ var OverviewLeft = function OverviewLeft(props) {
|
|
|
18082
18117
|
paddingRight: "15px",
|
|
18083
18118
|
textAlign: "right"
|
|
18084
18119
|
}
|
|
18085
|
-
}, !isEduTeacher && React__default.createElement(core.Button, {
|
|
18120
|
+
}, !isEduTeacher && !isAdmin && React__default.createElement(core.Button, {
|
|
18086
18121
|
variant: "contained",
|
|
18087
18122
|
color: "primary",
|
|
18088
18123
|
style: {
|
|
@@ -18230,7 +18265,8 @@ var OverviewLeft = function OverviewLeft(props) {
|
|
|
18230
18265
|
}
|
|
18231
18266
|
}, "No Schedule"))))))))), React__default.createElement(GoalProgress, {
|
|
18232
18267
|
studentId: studentId,
|
|
18233
|
-
classFontSize: classFontSize
|
|
18268
|
+
classFontSize: classFontSize,
|
|
18269
|
+
isAdmin: isAdmin
|
|
18234
18270
|
}), !isEduTeacher && React__default.createElement(MyNote, {
|
|
18235
18271
|
studentId: studentId,
|
|
18236
18272
|
classFontSize: classFontSize
|
|
@@ -18416,7 +18452,8 @@ var OverviewLeft = function OverviewLeft(props) {
|
|
|
18416
18452
|
}
|
|
18417
18453
|
}, "No Schedule"))))))))), React__default.createElement(GoalProgress, {
|
|
18418
18454
|
studentId: studentId,
|
|
18419
|
-
classFontSize: classFontSize
|
|
18455
|
+
classFontSize: classFontSize,
|
|
18456
|
+
isAdmin: isAdmin
|
|
18420
18457
|
}), !isEduTeacher && React__default.createElement(MyNote, {
|
|
18421
18458
|
studentId: studentId,
|
|
18422
18459
|
classFontSize: classFontSize
|
|
@@ -19803,6 +19840,8 @@ var defaultFontSmall$a = 12;
|
|
|
19803
19840
|
var defaultFontLarge$a = 20;
|
|
19804
19841
|
|
|
19805
19842
|
var useOverview = function useOverview(studentId) {
|
|
19843
|
+
var _useSelector, _useSelector$roles;
|
|
19844
|
+
|
|
19806
19845
|
var dispatch = reactRedux.useDispatch();
|
|
19807
19846
|
|
|
19808
19847
|
var _useRedinessToLearn = useRedinessToLearn(studentId),
|
|
@@ -19897,6 +19936,11 @@ var useOverview = function useOverview(studentId) {
|
|
|
19897
19936
|
|
|
19898
19937
|
return (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.defaultFontSize;
|
|
19899
19938
|
});
|
|
19939
|
+
var isAdmin = (_useSelector = reactRedux.useSelector(function (state) {
|
|
19940
|
+
var _state$common2;
|
|
19941
|
+
|
|
19942
|
+
return (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.user;
|
|
19943
|
+
})) === null || _useSelector === void 0 ? void 0 : (_useSelector$roles = _useSelector.roles) === null || _useSelector$roles === void 0 ? void 0 : _useSelector$roles.includes("Admin");
|
|
19900
19944
|
var classFontSize = React.useMemo(function () {
|
|
19901
19945
|
if (defaultFont == defaultFontLarge$a) {
|
|
19902
19946
|
return "font-large";
|
|
@@ -20038,6 +20082,7 @@ var useOverview = function useOverview(studentId) {
|
|
|
20038
20082
|
}
|
|
20039
20083
|
}, []);
|
|
20040
20084
|
return {
|
|
20085
|
+
isAdmin: isAdmin,
|
|
20041
20086
|
partnerData: partnerData,
|
|
20042
20087
|
informationDashboard: informationDashboard,
|
|
20043
20088
|
filters: filters,
|
|
@@ -35561,33 +35606,40 @@ var PersonalLearningGoal = function PersonalLearningGoal() {
|
|
|
35561
35606
|
var tabs$2 = [{
|
|
35562
35607
|
path: "/student-detail/overview/",
|
|
35563
35608
|
title: "Overview",
|
|
35564
|
-
component: Overview
|
|
35609
|
+
component: Overview,
|
|
35610
|
+
showForAdmin: true
|
|
35565
35611
|
}, {
|
|
35566
35612
|
path: "/personal-learning-plan/",
|
|
35567
35613
|
title: "PLP",
|
|
35568
|
-
component: PersonalLearningGoal
|
|
35614
|
+
component: PersonalLearningGoal,
|
|
35615
|
+
showForAdmin: false
|
|
35569
35616
|
}, {
|
|
35570
35617
|
path: "/student-detail/one-to-one/",
|
|
35571
35618
|
title: "1-TO-1",
|
|
35572
|
-
component: OneToOne
|
|
35619
|
+
component: OneToOne,
|
|
35620
|
+
showForAdmin: false
|
|
35573
35621
|
}, {
|
|
35574
35622
|
path: "/student-detail/conferences/",
|
|
35575
35623
|
title: "CONFERENCES",
|
|
35576
|
-
component: Conferences
|
|
35624
|
+
component: Conferences,
|
|
35625
|
+
showForAdmin: false
|
|
35577
35626
|
}, {
|
|
35578
35627
|
path: "/student-detail/class-reflections/",
|
|
35579
35628
|
title: "CLASS REFLECTIONS",
|
|
35580
|
-
component: ClassReflection
|
|
35629
|
+
component: ClassReflection,
|
|
35630
|
+
showForAdmin: false
|
|
35581
35631
|
}];
|
|
35582
35632
|
var tabIEP = {
|
|
35583
35633
|
path: "/student-detail/learning-plan/",
|
|
35584
35634
|
title: "IEP",
|
|
35585
|
-
component: LearningPlan
|
|
35635
|
+
component: LearningPlan,
|
|
35636
|
+
showForAdmin: false
|
|
35586
35637
|
};
|
|
35587
35638
|
var tabConversation = {
|
|
35588
35639
|
path: "/student-detail/one-to-one-conversation/",
|
|
35589
35640
|
title: "1-TO-1 Conversation",
|
|
35590
|
-
component: OneToOneConversation
|
|
35641
|
+
component: OneToOneConversation,
|
|
35642
|
+
showForAdmin: false
|
|
35591
35643
|
};
|
|
35592
35644
|
|
|
35593
35645
|
var StudentDetail = function StudentDetail() {
|