REST Service for POPCORN - ILIAS
alex
2025-06-03 c4f654f96671f592cae718c1211899995f003aa7
adding api lib
1 files added
3 files modified
112 ■■■■■ changed files
lib/db.js 3 ●●●● patch | view | raw | blame | history
vue/src/components/Header.vue 2 ●●● patch | view | raw | blame | history
vue/src/lib/api.js 19 ●●●●● patch | view | raw | blame | history
vue/src/pages/KursDetail.vue 88 ●●●● patch | view | raw | blame | history
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) {
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>
vue/src/lib/api.js
New file
@@ -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()
}
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 }}
         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>
      <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>{{ 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>-->