Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
No results found
Show changes
Commits on Source (3)
......@@ -15,6 +15,15 @@ const getAllOptions = async (opts = {}) => {
return options;
};
const getOption = async (opts = {}) => {
const option = await Option.findOne(opts);
if (!option) throw new NotExistError();
return option;
};
module.exports = {
getAllOptions
getAllOptions,
getOption
};
\ No newline at end of file
......@@ -14,6 +14,7 @@ import StudentStatus from "../views/StudentStatus/StudentStatus";
import StudyProgression from "../views/StudyProgression/StudyProgression";
import CourseAssessment from "../views/CourseAssessment/CourseAssessment";
import CreateEditAssessment from "../views/CourseAssessment/CreateEditAssessment";
import NotFound from "../views/NotFound/NotFound";
/* Admin */
import CreateEditClass from "../views/CourseEnrollment/CreateEditClass";
......@@ -105,6 +106,11 @@ const routes = [
path: "/create-edit-assessment",
name: "CreateEditAssessment",
component: CreateEditAssessment
},
{
path: "/:pathMatch(.*)*",
name: "NotFound",
component: NotFound
}
];
......@@ -113,4 +119,18 @@ const router = createRouter({
routes
});
router.beforeEach((to, from, next) => {
if (to.path === "/authentication" || to.path === "/authentication-manual") {
if (localStorage.getItem("uid")) {
next({ path: "/profile" });
}
} else {
if (localStorage.getItem("uid") === null) {
next({ path: "/authentication" });
}
}
next();
});
export default router;
.container-curriculum {
.link-primary {
&:hover {
cursor: pointer;
}
}
}
......@@ -26,7 +26,7 @@
</div>
</div>
<!-- Container List of Syllabus Detail & Course Information -->
<div class="row mt-2 container-lecturer-course-enrollment">
<div v-if="show" class="row mt-2 container-lecturer-course-enrollment">
<!-- Card List of Syllabus Detail -->
<div class="col-md">
<div data-aos="fade-up" data-aos-duration="500" class="card p-3">
......@@ -50,32 +50,19 @@
<tr>
<th>Silabus Ringkas</th>
<td>
Review SDLC dan software methodology, agile methodology,
OOAD, Design principles, Component design, Configuration
management, Continous integration, Service oriented
Design, Code Inspection and Code Review
{{ shortSyllabus }}
</td>
</tr>
<tr>
<th>Silabus Lengkap</th>
<td>
Pada kuliah ini mahasiswa dibekali dengan prinsip design
perangkat lunak yang “baik”, dan menerapkan proses
pembangunan (konstruksi) perangkat lunak dalam team,
sesuai dengan praktik yang diterapkan di industri dan
tools yang banyak digunakan. Topik yang dicakup adalah :
Review SDLC dan software methodology, agile methodology,
OOAD, Design principles, Component design, Configuration
management, Continous integration, Service oriented
Design, Code Inspection and Code Review.
{{ completeSyllabus }}
</td>
</tr>
<tr>
<th>Luaran</th>
<td>
Mahasiswa mampu untuk menerapkan prinsip design dalam
membangun perangkat lunak, dan membangun perangkat lunak
sesuai praktik yang baik (studi kasus).
{{ outcomes }}
</td>
</tr>
</tbody>
......@@ -107,27 +94,27 @@
<!-- Course Code -->
<div class="col-12">
<label><b>Kode</b></label>
<p>IF5123</p>
<p>{{ code }}</p>
</div>
<!-- Course Name -->
<div class="col-12">
<label><b>Nama</b></label>
<p>Pembangunan Perangkat Lunak</p>
<p>{{ name }}</p>
</div>
<!-- Course SKS -->
<div class="col-12">
<label><b>SKS</b></label>
<p>2</p>
<p>{{ credits }}</p>
</div>
<!-- Course Faculty -->
<div class="col-12">
<label><b>Fakultas</b></label>
<p>STEI</p>
<p>{{ faculty }}</p>
</div>
<!-- Course Major -->
<div class="col-12">
<label><b>Jurusan</b></label>
<p>235 - Informatika</p>
<p>{{ major }}</p>
</div>
</div>
</form>
......@@ -136,16 +123,63 @@
</div>
</div>
</div>
<div v-else>
{{ failMessage }}
</div>
</div>
</div>
</template>
<script>
import Sidebar from "@/components/Sidebar/Sidebar";
import axios from "axios";
export default {
components: { Sidebar },
name: "Syllabus"
name: "Syllabus",
data() {
return {
code: null,
name: null,
credits: null,
faculty: null,
major: null,
shortSyllabus: null,
completeSyllabus: null,
outcomes: null,
show: false,
failMessage: null
};
},
mounted() {
if (this.$route.query.id) {
this.getCourse(this.$route.query.id);
} else {
this.failMessage = "Data tidak ditemukan";
}
},
methods: {
getCourse(idCourse) {
axios
.get(process.env.VUE_APP_API_ENDPOINT + "/course/" + idCourse)
.then((response) => {
this.code = response.data.code;
this.name = response.data.name;
this.credits = response.data.credits;
this.faculty = response.data.Major.Faculty.fullName;
this.major =
response.data.Major.numberCode + " - " + response.data.Major.name;
this.shortSyllabus = response.data.shortSyllabus;
this.completeSyllabus = response.data.completeSyllabus;
this.outcomes = response.data.outcomes;
this.show = true;
})
.catch((error) => {
console.error(error);
this.failMessage = "Data tidak ditemukan";
});
}
}
};
</script>
......
<template>
<div class="row m-0 bg-primary-six">
<div class="col-auto p-0">
<sidebar />
</div>
<div class="col p-4 container-not-found">
<div class="row">
<div class="col-md-12">
<div data-aos="fade-up" data-aos-duration="500" class="card p-3">
<div
data-aos="fade-in"
data-aos-offset="300"
data-aos-easing="ease-in-sine"
class="card-body"
>
<h1 class="text-blue-six">
HALAMAN TIDAK DITEMUKAN
</h1>
<h3>Mohon pilih dari menu di samping</h3>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import Sidebar from "@/components/Sidebar/Sidebar";
export default {
components: { Sidebar },
name: "NotFound"
};
</script>