From 9c6a4670c5a5a5b1616c17e7c1c807e691919762 Mon Sep 17 00:00:00 2001
From: Farhan Farasdak <farhan.farasdak@gmail.com>
Date: Wed, 26 Apr 2017 07:19:44 +0700
Subject: [PATCH] [#33] [#140655219] Transcript JS

---
 assets/js/TranscriptPage.jsx        | 59 +++++++++++++++++++++++++++++
 assets/js/components/Course.jsx     | 20 ++++++++++
 assets/js/components/CourseList.jsx | 48 +++++++++++++++++++++++
 3 files changed, 127 insertions(+)
 create mode 100644 assets/js/TranscriptPage.jsx
 create mode 100644 assets/js/components/Course.jsx
 create mode 100644 assets/js/components/CourseList.jsx

diff --git a/assets/js/TranscriptPage.jsx b/assets/js/TranscriptPage.jsx
new file mode 100644
index 00000000..69da971a
--- /dev/null
+++ b/assets/js/TranscriptPage.jsx
@@ -0,0 +1,59 @@
+import React from 'react';
+import CourseList from './components/CourseList';
+
+export default class TranscriptPage extends React.Component {
+      constructor(props) {
+        super(props);
+        /* istanbul ignore next */
+        this.state = {
+          data: {"transcript":[{
+              "url": "http://api.cs.ui.ac.id/siakngcs/riwayat-mahasiswa/99731/",
+              "npm": "1406622616",
+                "kelas": {
+                    "url": "http://api.cs.ui.ac.id/siakngcs/kelas/473569/",
+                    "kd_kls": "473569",
+                    "nm_kls": "MD 1 - B",
+                    "nm_mk_cl": {
+                        "url": "http://api.cs.ui.ac.id/siakngcs/matakuliah/817/",
+                        "kd_mk": "CSF1600100",
+                        "nm_mk": "Matematika Diskret 1",
+                        "kd_org": "06.00.12.01",
+                        "kd_kur": "06.00.12.01-2012",
+                        "jml_sks": 3
+                    },
+            "kd_kur_cl": "06.00.12.01-2012",
+            "kd_mk_cl": "CSF1600100",
+            "periode": {
+                "url": "http://api.cs.ui.ac.id/siakngcs/periode/25/",
+                "term": 1,
+                "tahun": 2014
+            },
+            "pengajar": [
+                {
+                    "url":
+"http://api.cs.ui.ac.id/siakngcs/dosen/196111251992031001/",
+                    "nomor": "196111251992031001",
+                    "nama": "Prof. Drs. T. Basaruddin M.Sc., Ph.D",
+                    "id_skema": 1,
+                    "nm_skema": "Skema Inti",
+                    "maks_sks": 8
+                }
+            ]
+        },
+        "kd_kls": "473569",
+        "kd_kur": "06.00.12.01-2012",
+        "kd_mk": "CSF1600100",
+        "kd_org": "01.00.12.01",
+        "term": 1,
+        "tahun": 2014,
+        "nilai": "A"
+    }],"name":"Si jagoan neon" }};//ambil dari database
+
+      }
+
+      render() {
+        return (
+          <CourseList data={this.state.data.transcript} name={this.state.data.name}/>
+        );
+  }
+}
diff --git a/assets/js/components/Course.jsx b/assets/js/components/Course.jsx
new file mode 100644
index 00000000..87138462
--- /dev/null
+++ b/assets/js/components/Course.jsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import { Table } from 'semantic-ui-react';
+
+export default class Course extends React.Component {
+  static propTypes = {
+    courseName: React.PropTypes.string.isRequired,
+    grade: React.PropTypes.string.isRequired,
+  };
+
+
+  render() {
+    return (
+
+      <Table.Row>
+              <Table.Cell>{this.props.courseName}</Table.Cell>
+              <Table.Cell>{this.props.grade}</Table.Cell>
+          </Table.Row>
+    );
+  }
+}
diff --git a/assets/js/components/CourseList.jsx b/assets/js/components/CourseList.jsx
new file mode 100644
index 00000000..cc0357a0
--- /dev/null
+++ b/assets/js/components/CourseList.jsx
@@ -0,0 +1,48 @@
+import React from 'react';
+import { Grid, Segment, Table } from 'semantic-ui-react';
+import Course from './Course';
+export default class CourseList extends React.Component {
+
+  static propTypes = {
+    data: React.PropTypes.array.isRequired,
+    name: React.PropTypes.array.isRequired,
+  };
+
+  constructor(props) {
+    super(props);
+    /* istanbul ignore next */
+    this.state = { course: this.props.data };
+  }
+
+
+  generateCourse() {
+    return this.state.course.map((course, index) =>
+      <Course
+        key={index}
+        courseName={course.kelas.nm_kls}
+        grade={course.nilai}
+      />,
+    );
+  }
+
+  render = () => (
+      <Grid.Column centered>
+
+      <Segment>
+          <h2>Nama : {this.props.name}</h2>
+            <Table unstackable>
+              <Table.Header>
+                <Table.Row>
+                  <Table.HeaderCell>Mata Kuliah</Table.HeaderCell>
+                  <Table.HeaderCell>Nilai</Table.HeaderCell>
+                </Table.Row>
+              </Table.Header>
+
+              <Table.Body>
+              { this.generateCourse() }
+              </Table.Body>
+            </Table>
+      </Segment>
+      </Grid.Column>
+  );
+}
-- 
GitLab