Files
sm-bm-plugin/public/assets/CourseView-B2bgdPBx.js
Jakub Zych ebd9117f8c feat: lecturer on class sessions and in the session course ref
The schedule showed a lecturer only where the session notes named one
(Globalizacja), so the student plan had nobody under the other courses.
The session JSON now carries the course lecturer in its course ref and an
optional per-session lecturer (new nullable column, admin field, seed key)
for courses shared between two people. The student app shows the
session's own lecturer or, failing that, the course's.
2026-10-17 11:20:11 +02:00

2 lines
5.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{_ as N}from"./PageHead.vue_vue_type_script_setup_true_lang-BJjYuJvl.js";import{_ as R}from"./LoadState.vue_vue_type_script_setup_true_lang-BD6A8a9g.js";import{_ as B}from"./ReadingItem.vue_vue_type_script_setup_true_lang-CJzr1aQp.js";import{d as D,p as S,q as V,A as q,c as a,h as m,i as y,r as T,E as A,G as F,o as t,F as r,b as d,m as z,a as e,t as n,e as i,y as p,s as f,k as M,x as j,B as C}from"./index-C9sCss04.js";import{F as P,b as O,a as $,T as Z,c as G}from"./format-bcE-cYHJ.js";const K={class:"card"},W={style:{margin:"0",display:"grid","grid-template-columns":"auto 1fr",gap:"4px 16px"}},Y={style:{margin:"0"}},H={style:{margin:"0"},class:"mono small"},I={style:{margin:"0"}},J={style:{margin:"0"}},Q={key:0,style:{margin:"10px 0 0"}},U={key:1,style:{margin:"10px 0 0"}},X=["href"],ee={class:"section","aria-labelledby":"sess-h"},se={class:"section-head"},te={class:"muted small"},ae={key:0,class:"rows"},le={class:"row-main"},oe={class:"title"},ne={class:"when"},ie={class:"muted small"},re={key:0},de={key:1,class:"badge online",style:{"margin-left":"6px"}},ue={key:2,class:"badge onsite",style:{"margin-left":"6px"}},ce={key:3},_e={key:4},me={key:1,class:"empty"},ye={class:"section","aria-labelledby":"read-h"},pe={class:"section-head"},ge={class:"muted small"},ve={class:"rows"},he={class:"rows"},ke={key:1,class:"empty"},fe={class:"section","aria-labelledby":"mat-h"},be={class:"section-head"},we={class:"muted small"},xe={key:0,class:"rows"},Be={class:"muted small"},Te={class:"badge"},ze={key:0},Ce={key:1,class:"empty"},De=D({__name:"CourseView",props:{id:{}},setup(E){const g=E,_=S(),l=T(null),v=T("");async function h(){l.value=null,v.value="";try{l.value=await A.course(Number(g.id))}catch(u){v.value=F(u)}}V(()=>{h(),_.loadReadings()}),q(()=>g.id,()=>{h()});const c=f(()=>_.allReadings.filter(u=>u.course_id===Number(g.id))),b=f(()=>c.value.filter(u=>u.is_required)),w=f(()=>c.value.filter(u=>!u.is_required)),L=Date.now();return(u,o)=>{const x=M("router-link");return t(),a("div",null,[m(R,{ready:!!l.value,error:v.value,onRetry:o[0]||(o[0]=s=>h())},{default:y(()=>[l.value?(t(),a(r,{key:0},[m(N,{eyebrow:`${d(P)[l.value.form]} · semestr ${l.value.semester}`,title:l.value.name},{default:y(()=>[m(x,{class:"btn small ghost",to:"/przedmioty"},{default:y(()=>[...o[1]||(o[1]=[z("← Przedmioty",-1)])]),_:1})]),_:1},8,["eyebrow","title"]),e("section",K,[e("dl",W,[l.value.lecturer?(t(),a(r,{key:0},[o[2]||(o[2]=e("dt",{class:"muted"},"Prowadzący",-1)),e("dd",Y,n(l.value.lecturer),1)],64)):i("",!0),l.value.code?(t(),a(r,{key:1},[o[3]||(o[3]=e("dt",{class:"muted"},"Kod",-1)),e("dd",H,n(l.value.code),1)],64)):i("",!0),l.value.ects?(t(),a(r,{key:2},[o[4]||(o[4]=e("dt",{class:"muted"},"ECTS",-1)),e("dd",I,n(l.value.ects),1)],64)):i("",!0),l.value.assessment?(t(),a(r,{key:3},[o[5]||(o[5]=e("dt",{class:"muted"},"Zaliczenie",-1)),e("dd",J,n(l.value.assessment),1)],64)):i("",!0),l.value.elective_group?(t(),a(r,{key:4},[o[6]||(o[6]=e("dt",{class:"muted"},"Wybór",-1)),o[7]||(o[7]=e("dd",{style:{margin:"0"}},[e("span",{class:"badge alert"},"do wyboru")],-1))],64)):i("",!0)]),l.value.description?(t(),a("p",Q,n(l.value.description),1)):i("",!0),l.value.syllabus_url?(t(),a("p",U,[e("a",{href:l.value.syllabus_url,target:"_blank",rel:"noopener noreferrer"},"Sylabus",8,X)])):i("",!0)]),e("section",ee,[e("div",se,[o[8]||(o[8]=e("h2",{id:"sess-h"},"Zajęcia",-1)),e("span",te,n(l.value.sessions.length),1)]),l.value.sessions.length?(t(),a("ul",ae,[(t(!0),a(r,null,p(l.value.sessions,s=>(t(),a("li",{key:s.id,class:j({past:Date.parse(s.ends_at)<d(L)})},[e("div",le,[e("span",oe,n(d(O)(s.starts_at)),1),e("span",ne,n(d($)(s.starts_at))+"–"+n(d($)(s.ends_at)),1)]),e("div",ie,[s.meeting_number?(t(),a("span",re,"zjazd "+n(s.meeting_number),1)):i("",!0),s.is_online?(t(),a("span",de,"online")):s.room?(t(),a("span",ue,"sala "+n(s.room),1)):i("",!0),s.lecturer?(t(),a("span",ce," · "+n(s.lecturer),1)):i("",!0),s.notes?(t(),a("span",_e," · "+n(s.notes),1)):i("",!0)])],2))),128))])):(t(),a("p",me,"Brak zajęć w planie."))]),e("section",ye,[e("div",pe,[o[9]||(o[9]=e("h2",{id:"read-h"},"Lektury",-1)),e("span",ge,n(c.value.filter(s=>s.read_at).length)+"/"+n(c.value.length),1)]),c.value.length?(t(),a(r,{key:0},[b.value.length?(t(),a(r,{key:0},[o[10]||(o[10]=e("h3",{class:"subhead"},"Obowiązkowe",-1)),e("ul",ve,[(t(!0),a(r,null,p(b.value,s=>(t(),C(B,{key:s.id,reading:s,onToggle:k=>d(_).toggleReading(s.id,k)},null,8,["reading","onToggle"]))),128))])],64)):i("",!0),w.value.length?(t(),a(r,{key:1},[o[11]||(o[11]=e("h3",{class:"subhead"},"Dodatkowe",-1)),e("ul",he,[(t(!0),a(r,null,p(w.value,s=>(t(),C(B,{key:s.id,reading:s,onToggle:k=>d(_).toggleReading(s.id,k)},null,8,["reading","onToggle"]))),128))])],64)):i("",!0)],64)):(t(),a("p",ke,"Brak lektur."))]),e("section",fe,[e("div",be,[o[12]||(o[12]=e("h2",{id:"mat-h"},"Materiały",-1)),e("span",we,n(l.value.materials.length),1)]),l.value.materials.length?(t(),a("ul",xe,[(t(!0),a(r,null,p(l.value.materials,s=>(t(),a("li",{key:s.id},[m(x,{to:`/materialy/${s.id}`,class:"title"},{default:y(()=>[z(n(s.title),1)]),_:2},1032,["to"]),e("div",Be,[e("span",Te,n(d(Z)[s.type]),1),s.files_count?(t(),a("span",ze," · "+n(d(G)(s.files_count,"plik","pliki","plików")),1)):i("",!0)])]))),128))])):(t(),a("p",Ce,"Brak materiałów."))])],64)):i("",!0)]),_:1},8,["ready","error"])])}}});export{De as default};