REST Service for POPCORN - ILIAS
alex
2025-07-11 3a06e3121dd540e7c26fa691b967717a9300731a
adding tn by rolle
3 files modified
62 ■■■■ changed files
lib/db.js 9 ●●●● patch | view | raw | blame | history
vue/src/lib/api.js 5 ●●●●● patch | view | raw | blame | history
vue/src/pages/KursDetail.vue 48 ●●●● patch | view | raw | blame | history
lib/db.js
@@ -436,14 +436,7 @@
                AND od.description LIKE 'Member%${obj_id}'
   `
   const [results] = await pool.query(q)
   // darf nur einen Treffer ergeben
   if (results.length) {
      const {obj_id, title, description} = results[0]
      return obj_id
   }
   else {
      return null
   }
   return results
}
vue/src/lib/api.js
@@ -42,6 +42,11 @@
   return await resKurs.json()
}
export async function getKursTnByRole (kursId) {
   let resKurs = await fetch(`${apiBase}/kurs/${kursId}/teilnehmerByRole?token=${apiToken.value}`)
   return await resKurs.json()
}
/////// USER ////////////////////////////////////////////////////////////////
export async function getUsers (offset, limit, search) {
vue/src/pages/KursDetail.vue
@@ -2,7 +2,7 @@
import {useRoute} from 'vue-router'
import {onMounted, reactive, ref} from "vue"
import {getKurs, getKursItems, getKursTn, iliasBase, routerBase} from "../lib/api.js"
import {getKurs, getKursItems, getKursTn, getKursTnByRole, iliasBase, routerBase} from "../lib/api.js"
import LinkExtern from "../components/LinkExtern.vue"
import dayjs from "dayjs"
@@ -11,6 +11,7 @@
const kurs = ref(null)
const kursItems = ref(null)
const kursTn = ref(null)
const kursTnByRolle = ref(null)
const error = ref(null)
onMounted(init)
@@ -29,6 +30,10 @@
   const dataKursTn = await getKursTn(kursId)
   console.log(dataKursTn)
   kursTn.value = dataKursTn
   const dataKursTnByRolle = await getKursTnByRole(kursId)
   console.log(dataKursTnByRolle)
   kursTnByRolle.value = dataKursTnByRolle
}
@@ -98,11 +103,10 @@
         </tbody>
      </table>
      <h2>
         KursTn
         <small>({{ kursTn?.length }})</small>
      </h2>
      <div :style="{columns: kursTn?.length > 16 ? 1 : 1}">
      <!--      <div :style="{columns: kursTn?.length > 16 ? 1 : 1}">-->
      <div id="teilnehmer">
         <div>
            <h2>KursTn by Members <small>({{ kursTn?.length }})</small></h2>
         <table>
            <thead>
               <tr>
@@ -131,10 +135,40 @@
         </table>
      </div>
         <div>
            <h2>KursTnByRole <small>({{ kursTnByRolle?.length }})</small></h2>
            <table>
               <thead>
                  <tr>
                     <th>role_id</th>
                     <th>usr_id</th>
                     <th>firstname</th>
                     <th>lastname</th>
                  </tr>
               </thead>
               <tbody>
                  <tr v-for="tn in kursTnByRolle">
                     <td>{{ tn.role_id }}</td>
                     <td>
                        <RouterLink :to="`${routerBase}/ui/user/${tn.usr_id}`">{{ tn.usr_id }}</RouterLink>
                     </td>
                     <td>{{ tn.firstname }}</td>
                     <td>{{ tn.lastname }}</td>
                  </tr>
               </tbody>
            </table>
         </div>
      </div>
   </div>
</template>
<style scoped>
<style scoped lang="stylus">
#teilnehmer
   display flex;
   gap 2em
</style>