From 0a4577b3f552bb07944619fd4fd47899cf2322c2 Mon Sep 17 00:00:00 2001 From: Juan Pakpahan <juan.alexander@ui.ac.id> Date: Thu, 5 Dec 2019 15:12:15 +0700 Subject: [PATCH 1/2] make a parent class for EditProfile and ProfilePage --- assets/js/EditProfile.jsx | 71 +----------------------------------- assets/js/ProfileHandler.jsx | 70 +++++++++++++++++++++++++++++++++++ assets/js/ProfilePage.jsx | 33 +---------------- 3 files changed, 74 insertions(+), 100 deletions(-) create mode 100644 assets/js/ProfileHandler.jsx diff --git a/assets/js/EditProfile.jsx b/assets/js/EditProfile.jsx index 9fc6f4c8..c524b935 100644 --- a/assets/js/EditProfile.jsx +++ b/assets/js/EditProfile.jsx @@ -11,10 +11,9 @@ import { import Server from './lib/Server'; import Storage from './lib/Storage'; import ModalAlert from './components/ModalAlert'; -import Dumper from './lib/Dumper'; -import { isFromGithubLinkValid } from './Utils'; +import ProfileHandler from './ProfileHandler'; -export default class EditProfile extends React.Component { +export default class EditProfile extends ProfileHandler { static propTypes = { route: PropTypes.object.isRequired, params: PropTypes.object.isRequired, @@ -157,72 +156,6 @@ export default class EditProfile extends React.Component { return dateIndexArray.reverse().join(' '); } - handleSubmit = (e) => { - e.preventDefault(); - if (!isFromGithubLinkValid(this.state.form.github_url)) { - this.modalAlert.open( - 'Pembaharuan profil gagal', - 'Pastikan link github yang anda tulis benar.(Berpola : https://github.com/<username>', - ); - } else { - const submitForm = {}; - Object.keys(this.state.form).forEach((key) => { - if (this.state.form[key] !== '') { - submitForm[key] = this.state.form[key]; - } - }); - this.setState({ loading: true }); - Server.submit( - `/students/${this.state.id}/profile/`, - submitForm, - 'PATCH', - ).then( - () => { - this.setState({ loading: false }); - this.modalAlert.open( - 'Profil berhasil diperbaharui', - 'Silakan periksa kembali profil anda', - this.getProfile, - ); - }, - (error) => error.then((r) => { - this.setState({ loading: false }); - this.modalAlert.open('Pembaharuan profil gagal', Dumper.dump(r)); - }), - ); - } - }; - - handleFile = (e) => { - const { form } = this.state; - form[e.target.name] = e.target.files[0]; - this.setState({ form }); - }; - - handleChange = (e) => { - const { form } = this.state; - form[e.target.name] = e.target.value; - this.setState({ form }); - }; - - handleCheckbox = (e, d) => { - const { form } = this.state; - form[d.name] = d.checked; - this.setState({ form, show_transcript: d.checked }); - }; - - handleRadioGender = (e, { value }) => { - const { form } = this.state; - form.gender = value; - this.setState({ form }); - }; - - handleRadio = (e, { value }) => { - const { form } = this.state; - form.job_seeking_status = value; - this.setState({ form }); - }; - updateForm(show) { if (show) { return ( diff --git a/assets/js/ProfileHandler.jsx b/assets/js/ProfileHandler.jsx new file mode 100644 index 00000000..d750a876 --- /dev/null +++ b/assets/js/ProfileHandler.jsx @@ -0,0 +1,70 @@ + + + +export default class ProfileHandler extends React.Component { + handleSubmit = (e) => { + e.preventDefault(); + if (!isFromGithubLinkValid(this.state.form.github_url)) { + this.modalAlert.open( + 'Pembaharuan profil gagal', + 'Pastikan link github yang anda tulis benar.(Berpola : https://github.com/<username>', + ); + } else { + const submitForm = {}; + Object.keys(this.state.form).forEach((key) => { + if (this.state.form[key] !== '') { + submitForm[key] = this.state.form[key]; + } + }); + this.setState({ loading: true }); + Server.submit( + `/students/${this.state.id}/profile/`, + submitForm, + 'PATCH', + ).then( + () => { + this.setState({ loading: false }); + this.modalAlert.open( + 'Profil berhasil diperbaharui', + 'Silakan periksa kembali profil anda', + this.getProfile, + ); + }, + (error) => error.then((r) => { + this.setState({ loading: false }); + this.modalAlert.open('Pembaharuan profil gagal', Dumper.dump(r)); + }), + ); + } + }; + + handleFile = (e) => { + const { form } = this.state; + form[e.target.name] = e.target.files[0]; + this.setState({ form }); + }; + + handleChange = (e) => { + const { form } = this.state; + form[e.target.name] = e.target.value; + this.setState({ form }); + }; + + handleCheckbox = (e, d) => { + const { form } = this.state; + form[d.name] = d.checked; + this.setState({ form, show_transcript: d.checked }); + }; + + handleRadioGender = (e, { value }) => { + const { form } = this.state; + form.gender = value; + this.setState({ form }); + }; + + handleRadio = (e, { value }) => { + const { form } = this.state; + form.job_seeking_status = value; + this.setState({ form }); + }; +} \ No newline at end of file diff --git a/assets/js/ProfilePage.jsx b/assets/js/ProfilePage.jsx index db2278db..2c34322a 100755 --- a/assets/js/ProfilePage.jsx +++ b/assets/js/ProfilePage.jsx @@ -15,10 +15,11 @@ import { import Server from './lib/Server'; import Storage from './lib/Storage'; import ModalAlert from './components/ModalAlert'; +import ProfileHandler from './ProfileHandler'; import Dumper from './lib/Dumper'; import { isFromGithubLinkValid, gotoLink } from './Utils'; -export default class ProfilePage extends React.Component { +export default class ProfilePage extends ProfileHandler { static propTypes = { route: PropTypes.object.isRequired, params: PropTypes.object.isRequired, @@ -281,36 +282,6 @@ export default class ProfilePage extends React.Component { } }; - handleFile = (e) => { - const { form } = this.state; - form[e.target.name] = e.target.files[0]; - this.setState({ form }); - }; - - handleChange = (e) => { - const { form } = this.state; - form[e.target.name] = e.target.value; - this.setState({ form }); - }; - - handleCheckbox = (e, d) => { - const { form } = this.state; - form[d.name] = d.checked; - this.setState({ form, show_transcript: d.checked }); - }; - - handleRadioGender = (e, { value }) => { - const { form } = this.state; - form.gender = value; - this.setState({ form }); - }; - - handleRadio = (e, { value }) => { - const { form } = this.state; - form.job_seeking_status = value; - this.setState({ form }); - }; - gotoStudentResume = () => gotoLink(this.state.resume || '#'); gotoStudentToeflFile = () => gotoLink(this.state.student_toefl_file || '#'); -- GitLab From 2a2f585493f8d6edf62cad4934e764030dcb2834 Mon Sep 17 00:00:00 2001 From: Juan Pakpahan <juan.alexander@ui.ac.id> Date: Thu, 5 Dec 2019 15:30:57 +0700 Subject: [PATCH 2/2] add react library --- assets/js/ProfileHandler.jsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/assets/js/ProfileHandler.jsx b/assets/js/ProfileHandler.jsx index d750a876..e21b96aa 100644 --- a/assets/js/ProfileHandler.jsx +++ b/assets/js/ProfileHandler.jsx @@ -1,5 +1,6 @@ - - +import React from 'react'; +import Dumper from './lib/Dumper'; +import { isFromGithubLinkValid } from './Utils'; export default class ProfileHandler extends React.Component { handleSubmit = (e) => { -- GitLab