diff --git a/webclient/src/App.js b/webclient/src/App.js index 26431d3..bc59b64 100644 --- a/webclient/src/App.js +++ b/webclient/src/App.js @@ -32,6 +32,7 @@ class App extends Component { toolStatus: null, connected: false, network: true, + selectedCourses: null, }; } @@ -60,7 +61,10 @@ class App extends Component { fetch(AUTH_SERVER_URL + '/tooldata/') .then(response => { if (response.ok) { - response.json().then(data => this.setState({ toolData: data })); + response.json().then(data => this.setState({ + toolData: data, + selectedCourses: data.courses.map(() => false), + })); } else { this.noNetwork(); } @@ -154,6 +158,34 @@ class App extends Component { window.location.reload(); } + toggleCourse = (i, data) => { + let selectedCourses = this.state.selectedCourses; + selectedCourses[i] = data.checked; + this.setState({ selectedCourses: selectedCourses }); + } + + submitCourses = () => { + const toolData = this.state.toolData; + const selectedCourses = this.state.selectedCourses; + + fetch(AUTH_SERVER_URL + '/select-courses/', { + method: 'PUT', + headers: {'Authorization': 'Token ' + this.state.login.token, 'Content-Type': 'application/json; charset=utf-8'}, + body: JSON.stringify({'courses': toolData.courses.map(x => x.slug).filter((x, i) => selectedCourses[i]) }) + }) + .then(response => { + if (response.ok) { + this.getUser(); + } else { + this.noNetwork(); + } + }) + .catch(error => { + console.log(error) + this.handleLogout(); + }); + } + render() { const login = this.state.login; const user = this.state.user; @@ -161,6 +193,9 @@ class App extends Component { const toolStatus = this.state.toolStatus; const connected = this.state.connected; const network = this.state.network; + const selectedCourses = this.state.selectedCourses; + + console.log(this.state); return ( network ? @@ -189,24 +224,45 @@ class App extends Component { {login.token ?