From c4f654f96671f592cae718c1211899995f003aa7 Mon Sep 17 00:00:00 2001
From: alex <alex@alexloehr.net>
Date: Tue, 03 Jun 2025 12:32:47 +0000
Subject: [PATCH] adding api lib
---
lib/db.js | 3 +
vue/src/components/Header.vue | 2
vue/src/pages/KursDetail.vue | 96 ++++++++++++++++++++++++-----------------------
vue/src/lib/api.js | 19 +++++++++
4 files changed, 71 insertions(+), 49 deletions(-)
diff --git a/lib/db.js b/lib/db.js
index 662c712..1b4d92d 100644
--- a/lib/db.js
+++ b/lib/db.js
@@ -190,7 +190,8 @@
INNER JOIN ${database}.object_data od ON od.obj_id = or2.obj_id
WHERE or2.ref_id = '${ref_id}'
`
- const [results] = await pool.query(q)
+ let [results] = await pool.query(q)
+ results = results.length? results[0] : undefined
return results
}
async function getKursItems (ref_id) {
diff --git a/vue/src/components/Header.vue b/vue/src/components/Header.vue
index c01da11..538d86d 100644
--- a/vue/src/components/Header.vue
+++ b/vue/src/components/Header.vue
@@ -8,7 +8,7 @@
<div>Globus-ILIAS-REST</div>
<div>|</div>
<RouterLink :to="`/ui/user`">Users</RouterLink>
- <RouterLink :to="`/ui/course`">Courses</RouterLink>
+ <RouterLink :to="`/ui/kurs`">Courses</RouterLink>
</div>
</template>
diff --git a/vue/src/lib/api.js b/vue/src/lib/api.js
new file mode 100644
index 0000000..3a88ee8
--- /dev/null
+++ b/vue/src/lib/api.js
@@ -0,0 +1,19 @@
+const apiToken = "jiuGfr432898D90290kjfsldkfn3hh8F"
+export const apiBase = "/api/"
+export const iliasBase = "http://localhost:8060"
+
+export async function getKurs (kursId) {
+ let resKurs = await fetch(`${apiBase}/kurs/${kursId}?token=${apiToken}`)
+ return await resKurs.json()
+}
+
+export async function getKursItems (kursId) {
+ let resKurs = await fetch(`${apiBase}/kurs/items/${kursId}?token=${apiToken}`)
+ return await resKurs.json()
+}
+
+export async function getKursTn (kursId) {
+ let resKurs = await fetch(`${apiBase}/kurs/teilnehmer/${kursId}?token=${apiToken}`)
+ return await resKurs.json()
+}
+
diff --git a/vue/src/pages/KursDetail.vue b/vue/src/pages/KursDetail.vue
index 2da1ab3..efa5115 100644
--- a/vue/src/pages/KursDetail.vue
+++ b/vue/src/pages/KursDetail.vue
@@ -2,6 +2,7 @@
import {useRoute} from 'vue-router'
import {onMounted, reactive, ref} from "vue"
+import {getKurs, getKursItems, getKursTn} from "../lib/api.js"
const route = useRoute()
const kursId = route.params.kursId
@@ -15,21 +16,17 @@
/////////////////////////////////////////////////////////////////////////
async function init () {
- let resKurs = await fetch(`/api/kurs/${kursId}?token=jiuGfr432898D90290kjfsldkfn3hh8F`)
- let dataKurs = await resKurs.json()
+ const dataKurs = await getKurs(kursId)
console.log(dataKurs)
kurs.value = dataKurs
- let resKursItems = await fetch(`/api/kurs/items/${kursId}?token=jiuGfr432898D90290kjfsldkfn3hh8F`)
- let dataKursItems = await resKursItems.json()
+ const dataKursItems = await getKursItems(kursId)
console.log(dataKursItems)
kursItems.value = dataKursItems
- let resKursTn = await fetch(`/api/kurs/teilnehmer/${kursId}?token=jiuGfr432898D90290kjfsldkfn3hh8F`)
- let dataKursTn = await resKursTn.json()
+ const dataKursTn = await getKursTn(kursId)
console.log(dataKursTn)
kursTn.value = dataKursTn
-
}
</script>
@@ -38,53 +35,58 @@
<div>
<h1>
- Kurs {{ kursId }}
-<!-- <small>{{ user?.firstname }} {{ user?.lastname }}</small>-->
+ Kurs
+ <small>{{ kursId }}</small>
+ <!-- <small>{{ user?.firstname }} {{ user?.lastname }}</small>-->
</h1>
<p v-if="error">{{ error }}</p>
- <h2>Kurs</h2>
- <pre>{{kurs}}</pre>
+
+ <div class="user" v-if="kurs">
+
+ <span>ref_id</span>
+ <div>{{ kurs.ref_id }}</div>
+
+ <span>obj_id</span>
+ <div>{{ kurs.obj_id }}</div>
+
+ <span style="margin-top: 1em;">title</span>
+ <div style="grid-column: span 3; margin-top: 1em">{{ kurs.title }}</div>
+
+ <span>description</span>
+ <div style="grid-column: span 3">{{ kurs.description }}</div>
+
+ </div>
+ <!-- <pre>{{kurs}}</pre>-->
+
+
<h2>KursItems</h2>
- <pre>{{kursItems}}</pre>
+ <table>
+ <thead>
+ <th>parent_id</th>
+ <th>ref_id</th>
+ <th>obj_id</th>
+ <th>title</th>
+ <th>type</th>
+ </thead>
+ <tbody>
+ <!-- TODO verlinken auf Ziel in ILAS | goto.php?target=crs_ID -->
+ <tr v-for="item in kursItems">
+ <td>{{ item.parent_id }}</td>
+ <td>{{ item.ref_id }}</td>
+ <td>{{ item.obj_id }}</td>
+ <td>{{ item.title }}</td>
+ <td>{{ item.type }}</td>
+ </tr>
+ </tbody>
+ </table>
+ <pre>{{ kursItems }}</pre>
+
<h2>KursTn</h2>
- <pre>{{kursTn}}</pre>
+ <pre>{{ kursTn }}</pre>
-<!-- <pre>{{ user }}</pre>-->
+ <!-- <pre>{{ user }}</pre>-->
-<!-- <div class="user" v-if="user">-->
-<!-- <span>usr_id</span>-->
-<!-- <div>{{ user.usr_id }}</div>-->
-
-<!-- <span>login</span>-->
-<!-- <div>{{ user.login }}</div>-->
-
-<!-- <span>firstname</span>-->
-<!-- <div>{{ user.firstname }}</div>-->
-
-<!-- <span>lastname</span>-->
-<!-- <div>{{ user.lastname }}</div>-->
-
-<!-- <span>gender</span>-->
-<!-- <div>{{ user.gender }}</div>-->
-
-<!-- <span>email</span>-->
-<!-- <div>{{ user.email }}</div>-->
-
-<!-- <span>Markt</span>-->
-<!-- <div>{{ user.Markt }}</div>-->
-
-<!-- <span>Marktnummer</span>-->
-<!-- <div>{{ user.Marktnummer }}</div>-->
-
-<!-- <span>Personalnummer</span>-->
-<!-- <div>{{ user.Personalnummer }}</div>-->
-
-<!-- <span>department</span>-->
-<!-- <div>{{ user.department }}</div>-->
-
-
-<!-- </div>-->
<!-- <table v-if="user">-->
<!-- <tbody>-->
--
Gitblit v1.8.0