From d86740f389434f76048aa386d8e87b67b45530d7 Mon Sep 17 00:00:00 2001 From: "M. Reza Qorib" <rezaqorib96@gmail.com> Date: Tue, 28 Mar 2017 13:50:12 +0700 Subject: [PATCH] #140654507 #13 finalize vacancy logic flow --- assets/js/VacancyPage.jsx | 24 +++++++++----------- assets/js/components/Pane.jsx | 2 +- assets/js/components/Tabs.jsx | 2 +- assets/js/components/VacancyList.jsx | 34 ++++++++++++++++++++-------- assets/js/lib/Server.jsx | 4 ++-- kape/urls.py | 2 +- 6 files changed, 41 insertions(+), 27 deletions(-) diff --git a/assets/js/VacancyPage.jsx b/assets/js/VacancyPage.jsx index f31b6bf6..6f3bd2a2 100644 --- a/assets/js/VacancyPage.jsx +++ b/assets/js/VacancyPage.jsx @@ -13,19 +13,20 @@ export default class VacancyPage extends React.Component { email: '', password: '', errorFlag: false, - vacancies: [] + vacancies: [], }; this.handleItemClick = this.handleItemClick.bind(this); } handleItemClick = (e, { name }) => this.setState({ activeItem: name }); - fetchVacancies(url) { - Server.get(url).then((data) => { - this.setState({ vacancies: data }); - }, () => { - }); - } + // fetchVacancies(url) { + // console.log("maho"); + // Server.get(url).then((data) => { + // this.setState({ vacancies: data }); + // }, () => { + // }); + // } render() { const data = [{ data1: 'val1' }, { data1: 'val2' }]; @@ -33,16 +34,13 @@ export default class VacancyPage extends React.Component { return (<div> <Tabs selected={0}> <Pane label="Semua Lowongan" > - <VacancyList vacancies={data} /> - { this.fetchVacancies('/api') } + <VacancyList url="/vacancies/" /> </Pane> <Pane label="Lamaran saya" > - <VacancyList vacancies={data} /> - { this.fetchVacancies('/api') } + <VacancyList url="/b" /> </Pane> <Pane label="Lamaran Ditandai" > - <VacancyList vacancies={data} /> - { this.fetchVacancies('/api') } + <VacancyList url="/c" /> </Pane> </Tabs> </div> diff --git a/assets/js/components/Pane.jsx b/assets/js/components/Pane.jsx index ae57febc..cbff8380 100644 --- a/assets/js/components/Pane.jsx +++ b/assets/js/components/Pane.jsx @@ -4,7 +4,7 @@ export default class Pane extends React.Component { static displayName = 'Pane'; static propTypes = { - children: React.PropTypes.element.isRequired, + children: React.PropTypes.any.isRequired, }; render = () => ( diff --git a/assets/js/components/Tabs.jsx b/assets/js/components/Tabs.jsx index c557d406..601d8f45 100644 --- a/assets/js/components/Tabs.jsx +++ b/assets/js/components/Tabs.jsx @@ -38,7 +38,7 @@ export default class Tabs extends React.Component { const activeClass = (this.state.selected === index ? 'active' : ''); return ( <li key={index}> - <a className={activeClass} onClick={this.handleClick.bind(this, index)}> + <a className={activeClass} href="#" onClick={this.handleClick.bind(this, index)}> {child.props.label} </a> </li> diff --git a/assets/js/components/VacancyList.jsx b/assets/js/components/VacancyList.jsx index bd0f0012..66ec9927 100644 --- a/assets/js/components/VacancyList.jsx +++ b/assets/js/components/VacancyList.jsx @@ -1,24 +1,40 @@ import React from 'react'; import { Item } from 'semantic-ui-react'; import Lowongan from './Lowongan'; +import Server from '../lib/Server'; export default class VacancyList extends React.Component { static propTypes = { - vacancies: React.PropTypes.array.isRequired, + url: React.PropTypes.string.isRequired, }; + constructor(props) { + super(props); + this.state = { vacancies: [] }; + console.log(Server.isLoggedIn()); + Server.get(this.props.url).then((data) => { + console.log(data); + this.setState({ vacancies: data }); + }, () => { + }); + this.generateVacancies = this.generateVacancies.bind(this); + } + generateVacancies() { - return this.props.vacancies.map((vacancy) => - <Lowongan key={vacancy.id} data={vacancy} />, + return this.state.vacancies.map((vacancy, index) => + <Lowongan key={index} data={vacancy} />, ); } - render = () => ( - <Item.Group relaxed> - {/*<Item.Group relaxed>*/} + render = () => { + console.log("huehueuhe"); + return ( + <Item.Group relaxed> + {/*<Item.Group relaxed>*/} { this.generateVacancies() } - {/*</Item.Group>*/} - </Item.Group> - ) + {/*</Item.Group>*/} + </Item.Group> + ); + } } \ No newline at end of file diff --git a/assets/js/lib/Server.jsx b/assets/js/lib/Server.jsx index 1594ccea..2f340bf2 100644 --- a/assets/js/lib/Server.jsx +++ b/assets/js/lib/Server.jsx @@ -7,8 +7,8 @@ export default class Server { const cookies = document.cookie.split(';'); for (let i = 0; i < cookies.length; i += 1) { const cookie = cookies[i].trim(); - // Does this cookie string begin with the name we want? - if (cookie.substring(0, name.length + 1) === (`${name}`)) { + if (cookie.substring(0, name.length) === (`${name}`)) { + // Does this cookie string begin with the name we want? /* istanbul ignore next */ return decodeURIComponent(cookie.substring(name.length + 1)); } diff --git a/kape/urls.py b/kape/urls.py index e64d65ec..fa7a1942 100755 --- a/kape/urls.py +++ b/kape/urls.py @@ -35,7 +35,7 @@ router.register(r'login', LoginViewSet) router.register(r'vacancies', VacancyViewSet) router.register(r'students/(?P<student_id>\d+)/bookmarked-vacancies', BookmarkedVacancyByStudentViewSet, base_name='bookmarked-vacancy-list') -router.register(r'students/(?P<student_id>\d+)/applications', ApplicationViewSet, +router.register(r'students/(?P<student_id>\d+)/applied-vacancies', ApplicationViewSet, base_name='applications') -- GitLab