Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Perform front-end dependency update (#1312) #1363

Merged
merged 19 commits into from
Apr 21, 2022
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
4928adf
Bump to Node 16; remove node-sass
ssciolla Mar 30, 2022
27660dd
Bump a bunch of packages, run npm audit fix; fix webpack deprecations
ssciolla Mar 30, 2022
de3e0b5
Start fixing @apollo/client
ssciolla Mar 30, 2022
6bfec4a
Turn graphiql page off when not in DEBUG mode
ssciolla Mar 31, 2022
95a7c94
Update jest dependencies
ssciolla Mar 31, 2022
c62c916
Remove jquery reference in settings
ssciolla Mar 31, 2022
c96a1e9
Make URI relative; remove trailing comma
ssciolla Apr 5, 2022
ae26979
Adopt recommended react-router-dom patterns for version 5
ssciolla Apr 6, 2022
40b3a1a
Use latest d3 version 5 release explicitly
ssciolla Apr 6, 2022
d1cdf02
Remove separate installation, configuration of jest-pnp-resolver
ssciolla Apr 6, 2022
b0683f8
Remove use of deprecated RootRef in anticipation of material-ui upgrade
ssciolla Apr 6, 2022
61dff69
Remove unnecessary(?) extra ref usage
ssciolla Apr 6, 2022
f3febd6
Refactor to RootRef usage from TableAssignment, retain currentWeek sc…
ssciolla Apr 6, 2022
7070fed
Remove unused clearButton class in AssignmentPlanningV2
ssciolla Apr 6, 2022
ee59ac9
Try to resolve Codacy issue related to undefined
ssciolla Apr 6, 2022
f38413a
Try to tidy up fontawesome usages; bump django-webpack-loader
ssciolla Apr 8, 2022
eb3492d
Use Python/Django fontawesomefree library to support CSS; remove djan…
ssciolla Apr 8, 2022
006ab32
Tweak spacing, alignment, and sizing around icon checkboxes
ssciolla Apr 8, 2022
242c1c5
Bump some more npm packages
ssciolla Apr 8, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
348 changes: 169 additions & 179 deletions assets/src/components/AssignmentTable.js

Large diffs are not rendered by default.

4 changes: 0 additions & 4 deletions assets/src/components/ConditionalWrapper.js

This file was deleted.

3 changes: 1 addition & 2 deletions assets/src/components/GoogleAnalyticsTracking.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { useState, useEffect } from 'react'
import GoogleAnalytics from 'react-ga'
import { withRouter } from 'react-router-dom'

function GoogleAnalyticsTracking (props) {
const {
Expand All @@ -26,4 +25,4 @@ function GoogleAnalyticsTracking (props) {
return null
}

export default withRouter(GoogleAnalyticsTracking)
export default GoogleAnalyticsTracking
pushyamig marked this conversation as resolved.
Show resolved Hide resolved
23 changes: 19 additions & 4 deletions assets/src/components/IconLabel.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,30 @@
import React from 'react'
import '@fortawesome/fontawesome-free'
import { Typography, withStyles } from '@material-ui/core'

const styles = () => ({
typography: {
marginLeft: '5px',
marginRight: '5px'
},
icon: {
fontSize: '16px',
paddingRight: '10px'
}
})


function IconLabel (props) {
const {
icon,
classes,
icon, // font-awesome class name
label
} = props

return (
<p><i style={{ fontSize: '14px', padding: '5px 10px 5px 5px' }} className={icon} />{label}</p>
<Typography className={classes.typography}>
<i className={`${icon} ${classes.icon}`} />{label}
</Typography>
)
}

export default IconLabel
export default withStyles(styles)(IconLabel)
pushyamig marked this conversation as resolved.
Show resolved Hide resolved
52 changes: 22 additions & 30 deletions assets/src/components/TableAssignment.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,8 @@ function CustomAssignmentTable (props) {
return row
})

const tableRow = (row, i) => (
<TableRow key={i}>
const tableRow = (row, i, isCurrentWeek) => (
<TableRow key={i} {...(isCurrentWeek ? { ref: currentWeekRow } : {})}>
pushyamig marked this conversation as resolved.
Show resolved Hide resolved
{
row.map((prop, j) => {
let displayProp = true
Expand Down Expand Up @@ -218,34 +218,26 @@ function CustomAssignmentTable (props) {

return (
<div className={classes.tableResponsive}>
<RootRef rootRef={tableRef}>
<Table ref={tableRef}>
{tableHead !== undefined ? (
<TableHead>
<TableRow>
{tableHead.map((prop, key) => {
return (
<TableCell
className={classes.tableCell + ' ' + classes.tableHeadCell}
key={key}
>
{prop}
</TableCell>)
})}
</TableRow>
</TableHead>
) : null}
<TableBody>
{
data.map((row, i) => {
return isItFirstCurrentWeekIndicator(i)
? <RootRef rootRef={currentWeekRow} key={i}>{tableRow(row, i)}</RootRef>
: tableRow(row, i)
})
}
</TableBody>
</Table>
</RootRef>
<Table ref={tableRef}>
{tableHead !== undefined ? (
<TableHead>
<TableRow>
{tableHead.map((prop, key) => {
return (
<TableCell
className={classes.tableCell + ' ' + classes.tableHeadCell}
key={key}
>
{prop}
</TableCell>)
})}
</TableRow>
</TableHead>
) : null}
<TableBody>
{data.map((row, i) => tableRow(row, i, isItFirstCurrentWeekIndicator(i)))}
</TableBody>
</Table>
</div>
)
}
Expand Down
2 changes: 1 addition & 1 deletion assets/src/components/d3/createHistogram.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ function createHistogram ({ data, width, height, domElement, xAxisLabel, yAxisLa
main.append('div')
pushyamig marked this conversation as resolved.
Show resolved Hide resolved
.attr('aria-live', 'polite')
.attr('id', 'grade-view-narrative')
.attr('class', 'screenreader-only sr-only')
.attr('class', 'fa-sr-only')
ssciolla marked this conversation as resolved.
Show resolved Hide resolved
.text(d => narrativeTextGrades)

const svg = main.append('svg')
Expand Down
3 changes: 1 addition & 2 deletions assets/src/components/d3/createResourceAccessChart.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { adjustViewport } from '../../util/chart'
import { createResourcesText } from './d3ViewsNarrative'
import d3tip from 'd3-tip'
import './createResourceAccessChart.css'
import '@fortawesome/fontawesome-free'
ssciolla marked this conversation as resolved.
Show resolved Hide resolved
import { siteTheme } from '../../globals'

/*
Expand Down Expand Up @@ -166,7 +165,7 @@ function createResourceAccessChart ({ data, weekRange, gradeSelection, resourceT
main.append('div')
.attr('aria-live', 'polite')
.attr('id', 'resource-view-narrative')
.attr('class', 'screenreader-only sr-only')
.attr('class', 'fa-sr-only')
ssciolla marked this conversation as resolved.
Show resolved Hide resolved
.text(d => narrativeTextResources)

const svg = main.append('svg')
Expand Down
21 changes: 15 additions & 6 deletions assets/src/containers/App.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react'
import { Route, withRouter } from 'react-router-dom'
import { Route, Switch, useLocation } from 'react-router-dom'
import { matchPath } from 'react-router'
import GoogleAnalyticsTracking from '../components/GoogleAnalyticsTracking'
import CourseList from './CourseList'
Expand All @@ -8,7 +8,8 @@ import WarningBanner from '../components/WarningBanner'
import { Helmet } from 'react-helmet'

function App (props) {
const { location, user, gaId } = props
const location = useLocation()
const { user, gaId } = props

if (!user.isLoggedIn) {
if (user.loginURL === '') {
Expand All @@ -23,11 +24,19 @@ function App (props) {
<>
<Helmet titleTemplate='%s | My Learning Analytics' title='Courses' />
<GoogleAnalyticsTracking gaId={gaId} />
<Route path='/' exact render={props => <CourseList {...props} user={user} />} />
<Route path='/courses' exact render={props => <CourseList {...props} user={user} />} />
{courseId ? <Course user={user} courseId={Number(courseId)} {...props} /> : null}
<Switch>
<Route path='/' exact>
<CourseList user={user} />
</Route>
<Route path='/courses' exact>
<CourseList user={user} />
</Route>
<Route>
{courseId ? <Course user={user} courseId={Number(courseId)} {...props} /> : null}
</Route>
</Switch>
</>
)
}

export default withRouter(App)
export default App
4 changes: 0 additions & 4 deletions assets/src/containers/AssignmentPlanningV2.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,6 @@ const styles = theme => ({
paddingBottom: 10,
paddingTop: 10
},
clearButton: {
float: 'right',
margin: '30px'
},
mainProgressBar: {
marginBottom: '2.5rem'
},
Expand Down
106 changes: 45 additions & 61 deletions assets/src/containers/Course.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { useState } from 'react'
import { BrowserRouter as Router, Route, withRouter } from 'react-router-dom' // eslint-disable-line
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'
import DashboardAppBar from './DashboardAppBar'
import SideDrawer from './SideDrawer'
import GradeDistribution from './GradeDistribution'
Expand Down Expand Up @@ -83,66 +83,50 @@ function Course (props) {
/>
</Card>
) : (
<>
<Route
path='/courses/:courseId/'
exact
render={props =>
<IndexPage
{...props}
courseInfo={courseInfo}
courseId={courseId}
enrollmentTypes={enrollmentTypes}
isAdmin={user.admin}
/>}
/>
<Route
path='/courses/:courseId/grades'
render={props =>
<GradeDistribution
{...props}
disabled={!courseInfo.course_view_options.gd}
courseId={courseId}
user={user}
enrollmentTypes={enrollmentTypes}
isAdmin={user.admin}
/>}
/>
<Route
path='/courses/:courseId/assignmentsv1'
render={props =>
<AssignmentPlanning
{...props}
disabled={!courseInfo.course_view_options.apv1}
courseId={courseId}
enrollmentTypes={enrollmentTypes}
isAdmin={user.admin}
/>}
/>
<Route
path='/courses/:courseId/assignments'
render={props =>
<AssignmentPlanningV2
{...props}
disabled={!courseInfo.course_view_options.ap}
courseId={courseId}
enrollmentTypes={enrollmentTypes}
isAdmin={user.admin}
/>}
/>
<Route
path='/courses/:courseId/resources'
render={props =>
<ResourcesAccessed
{...props}
disabled={!courseInfo.course_view_options.ra}
courseInfo={courseInfo}
courseId={courseId}
enrollmentTypes={enrollmentTypes}
isAdmin={user.admin}
/>}
/>
</>
<Switch>
<Route path='/courses/:courseId/' exact>
pushyamig marked this conversation as resolved.
Show resolved Hide resolved
<IndexPage
courseInfo={courseInfo}
courseId={courseId}
enrollmentTypes={enrollmentTypes}
isAdmin={user.admin}
/>
</Route>
<Route path='/courses/:courseId/grades'>
<GradeDistribution
user={user}
disabled={!courseInfo.course_view_options.gd}
courseId={courseId}
enrollmentTypes={enrollmentTypes}
isAdmin={user.admin}
/>
</Route>
<Route path='/courses/:courseId/assignmentsv1'>
<AssignmentPlanning
disabled={!courseInfo.course_view_options.apv1}
courseId={courseId}
enrollmentTypes={enrollmentTypes}
isAdmin={user.admin}
/>
</Route>
<Route path='/courses/:courseId/assignments'>
<AssignmentPlanningV2
disabled={!courseInfo.course_view_options.ap}
courseId={courseId}
enrollmentTypes={enrollmentTypes}
isAdmin={user.admin}
/>
</Route>
<Route path='/courses/:courseId/resources'>
<ResourcesAccessed
disabled={!courseInfo.course_view_options.ra}
courseInfo={courseInfo}
courseId={courseId}
enrollmentTypes={enrollmentTypes}
isAdmin={user.admin}
/>
</Route>
</Switch>
)}
</>
) : <Spinner />}
Expand Down
8 changes: 2 additions & 6 deletions assets/src/containers/ResourcesAccessed.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,7 @@ const styles = theme => ({
marginTop: theme.spacing(2)
},
controlText: {
paddingLeft: 8,
paddingRight: 8
},
checkBox: {
marginLeft: 20
marginRight: 16
}
})

Expand Down Expand Up @@ -100,7 +96,7 @@ function ResourcesAccessed (props) {
if (resourceAccessData) {
if (resourceTypes.length > 1) {
return (
<div style={{ textAlign: 'center' }}>
<div style={{ textAlign: 'center', verticalAlign: 'middle' }}>
<FormControl>
<FormGroup row>
<p className={classes.controlText}>Select resource types to be viewed:</p>
Expand Down
11 changes: 5 additions & 6 deletions assets/src/hooks/useAssignmentData.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import { gql } from 'apollo-boost'
import { useQuery } from '@apollo/react-hooks'
import { gql, useQuery } from '@apollo/client'

const GET_ASSIGNMENT_PLANNING_DATA = courseId => gql`
query Assignment{
course(canvasId: ${courseId}) {
const GET_ASSIGNMENT_PLANNING_DATA = gql`
query Assignment($courseId: ID!) {
course(canvasId: $courseId) {
assignments {
id
name
Expand Down Expand Up @@ -38,7 +37,7 @@ query Assignment{
`

const useAssignmentData = courseId => {
return useQuery(GET_ASSIGNMENT_PLANNING_DATA(courseId), { variables: { courseId }, fetchPolicy: 'network-only' })
return useQuery(GET_ASSIGNMENT_PLANNING_DATA, { variables: { courseId }, fetchPolicy: 'network-only' })
}

export default useAssignmentData
3 changes: 1 addition & 2 deletions assets/src/hooks/useSetUserSettingGQL.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { gql } from 'apollo-boost'
import { useMutation } from '@apollo/react-hooks'
import { gql, useMutation } from '@apollo/client'

const UPDATE_USER_SETTING = gql`
mutation setUserDefaultSelection($input: UserDefaultSelectionInput!) {
Expand Down
2 changes: 1 addition & 1 deletion assets/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { ThemeProvider } from '@material-ui/core/styles'
import './index.css'
import App from './containers/App'
import client from './service/client'
import { ApolloProvider } from '@apollo/react-hooks'
import { ApolloProvider } from '@apollo/client'
import { user, siteTheme, gaId } from './globals'
// import * as serviceWorker from './serviceWorker'

Expand Down
4 changes: 3 additions & 1 deletion assets/src/service/client.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import ApolloClient from 'apollo-boost'
import { ApolloClient, InMemoryCache } from '@apollo/client'
import Cookie from 'js-cookie'

export default new ApolloClient({
uri: '/graphql',
cache: new InMemoryCache(),
pushyamig marked this conversation as resolved.
Show resolved Hide resolved
headers: {
Accept: 'application/json',
'X-Requested-With': 'XMLHttpRequest',
Expand Down