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