Untitled
Anonymous
plain_text
02/11/2026 2:33 AM
2.5 KB
9
Indexable
<script setup>
import { reactive, onBeforeMount } from "vue";
import api from "../api.js";
const courses = reactive({ data: [] });
onBeforeMount(async () => {
const { data } = await api.get("/courses");
courses.data = data;
});
function handleEdit(courseId) {
console.log(courseId);
}
function handleArchive(courseId) {
console.log(courseId);
}
</script>
<template>
<div class="container my-5">
<h1 class="text-center text-primary mb-4">Admin View</h1>
<div class="table-responsive">
<table class="table table-striped table-bordered align-middle">
<thead class="table-light">
<tr>
<th>ID</th>
<th>Name</th>
<th>Description</th>
<th>Price</th>
<th>Availability</th>
<th colspan="2" class="text-center">Actions</th>
</tr>
</thead>
<tbody>
<tr v-for="course in courses.data" :key="course._id">
<td>{{ course._id }}</td>
<td>{{ course.name }}</td>
<td>{{ course.description }}</td>
<td>PHP {{ course.price }}</td>
<td>
<span v-if="course.isActive" class="text-success">Available</span>
<span v-else class="text-danger">Unavailable</span>
</td>
<td class="text-center">
<button class="btn btn-primary btn-sm" @click="handleEdit(course._id)">
Edit
</button>
</td>
<td class="text-center">
<button class="btn btn-danger btn-sm" @click="handleArchive(course._id)">
Archive
</button>
</td>
</tr>
<tr v-if="courses.data.length === 0">
<td colspan="7" class="text-center">No courses found</td>
</tr>
</tbody>
</table>
</div>
</div>
</template>
Editor is loading...
Leave a Comment