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.
This commit is contained in:
Jakub Zych
2026-10-17 11:20:11 +02:00
parent d2096e2128
commit ebd9117f8c
47 changed files with 93 additions and 47 deletions

View File

@@ -62,6 +62,7 @@ type SeedSession struct {
EndsAt string `json:"ends_at"`
Room *string `json:"room"`
Kind *string `json:"kind"`
Lecturer *string `json:"lecturer"`
IsOnline bool `json:"is_online"`
Notes *string `json:"notes"`
}
@@ -377,6 +378,7 @@ func SeedWith(ctx context.Context, db *gorm.DB, f *SeedFile, opts SeedOptions) (
setInstant(&s.EndsAt, end)
s.Room = nz(in.Room)
s.Kind = nz(in.Kind)
s.Lecturer = nz(in.Lecturer)
s.IsOnline = in.IsOnline
s.Notes = nz(in.Notes)
})

View File

@@ -17,6 +17,7 @@ type courseRef struct {
Code *string `json:"code"`
Name string `json:"name"`
Form string `json:"form"`
Lecturer *string `json:"lecturer"`
Semester int `json:"semester"`
}
@@ -24,7 +25,7 @@ func newCourseRef(c *models.Course) *courseRef {
if c == nil {
return nil
}
return &courseRef{ID: c.ID, Code: c.Code, Name: c.Name, Form: c.Form, Semester: c.Semester}
return &courseRef{ID: c.ID, Code: c.Code, Name: c.Name, Form: c.Form, Lecturer: c.Lecturer, Semester: c.Semester}
}
// courseJSON is a course's own fields.
@@ -105,6 +106,7 @@ type sessionJSON struct {
EndsAt string `json:"ends_at"`
Room *string `json:"room"`
Kind *string `json:"kind"`
Lecturer *string `json:"lecturer"`
Notes *string `json:"notes"`
IsOnline bool `json:"is_online"`
Course *courseRef `json:"course"`
@@ -119,6 +121,7 @@ func newSessionJSON(s models.ClassSession) sessionJSON {
EndsAt: models.FormatDateTime(s.EndsAt),
Room: s.Room,
Kind: s.Kind,
Lecturer: s.Lecturer,
Notes: s.Notes,
IsOnline: s.IsOnline,
Course: newCourseRef(s.Course),

View File

@@ -59,6 +59,8 @@ sessions:
ends_at: Ends
room: Room
kind: Kind
lecturer: Lecturer
lecturer_comment: Only when it differs from the course lecturer.
is_online: Online
deadlines:
title: Deadlines

View File

@@ -59,6 +59,8 @@ sessions:
ends_at: Koniec
room: Sala
kind: Rodzaj
lecturer: Prowadzący
lecturer_comment: Tylko gdy inny niż prowadzący przedmiotu.
is_online: Zdalnie
deadlines:
title: Terminarz

View File

@@ -19,6 +19,7 @@ type ClassSession struct {
EndsAt time.Time `gorm:"column:ends_at"`
Room *string `gorm:"column:room"`
Kind *string `gorm:"column:kind"`
Lecturer *string `gorm:"column:lecturer"`
Notes *string `gorm:"column:notes"`
IsOnline bool `gorm:"column:is_online"`
CreatedAt time.Time `gorm:"column:created_at"`
@@ -31,7 +32,7 @@ func (ClassSession) TableName() string { return "jz_bm_class_sessions" }
// Fillable lists the columns mass assignment may set. course_id and
// meeting_id are set through the admin relation pickers.
func (ClassSession) Fillable() []string {
return []string{"course_id", "meeting_id", "starts_at", "ends_at", "room", "kind", "notes", "is_online"}
return []string{"course_id", "meeting_id", "starts_at", "ends_at", "room", "kind", "lecturer", "notes", "is_online"}
}
// Rules are checked by the admin API on every save.
@@ -41,6 +42,7 @@ func (ClassSession) Rules() map[string]string {
"ends_at": "required",
"room": "nullable|max:100",
"kind": "nullable|max:100",
"lecturer": "nullable|max:255",
"is_online": "boolean",
}
}
@@ -57,6 +59,6 @@ func (s *ClassSession) TemporalErrors() map[string][]string {
// BeforeSave stores NULL for empty optional text.
func (s *ClassSession) BeforeSave(*gorm.DB) error {
blank(&s.Room, &s.Kind, &s.Notes)
blank(&s.Room, &s.Kind, &s.Lecturer, &s.Notes)
return nil
}

View File

@@ -35,10 +35,15 @@ fields:
label: jz.bm::lang.sessions.kind
type: text
span: right
lecturer:
label: jz.bm::lang.sessions.lecturer
comment: jz.bm::lang.sessions.lecturer_comment
type: text
span: left
is_online:
label: jz.bm::lang.sessions.is_online
type: switch
span: left
span: right
notes:
label: jz.bm::lang.common.notes
type: textarea

View File

@@ -26,10 +26,15 @@ fields:
label: jz.bm::lang.sessions.kind
type: text
span: right
lecturer:
label: jz.bm::lang.sessions.lecturer
comment: jz.bm::lang.sessions.lecturer_comment
type: text
span: left
is_online:
label: jz.bm::lang.sessions.is_online
type: switch
span: left
span: right
notes:
label: jz.bm::lang.common.notes
type: textarea

View File

@@ -77,8 +77,8 @@ func TestPluginActivates(t *testing.T) {
if n := len(p.Models()); n != 10 {
t.Errorf("Models = %d, want 10", n)
}
if n := len(p.Migrations()); n != 12 {
t.Errorf("Migrations = %d, want 12", n)
if n := len(p.Migrations()); n != 13 {
t.Errorf("Migrations = %d, want 13", n)
}
if !slices.ContainsFunc(p.Commands(), func(c bonfire.Command) bool { return c.Name == "bm:seed" }) {
t.Error("bm:seed is not registered")

View File

@@ -284,7 +284,7 @@ func TestSeedCommandIsIdempotent(t *testing.T) {
dir := t.TempDir()
changed := filepath.Join(dir, "changed.json")
writeJSON(t, changed, `{"courses": [{"key": "a", "name": "Przedmiot przykładowy A", "form": "wyklad", "semester": 1, "lecturer": "dr Inna Osoba", "sort_order": 1}],
"class_sessions": [{"course": "a", "starts_at": "2030-10-05T08:00:00+02:00", "ends_at": "2030-10-05T10:00:00+02:00", "room": "105"}]}`)
"class_sessions": [{"course": "a", "starts_at": "2030-10-05T08:00:00+02:00", "ends_at": "2030-10-05T10:00:00+02:00", "room": "105", "lecturer": "dr Zastępca"}]}`)
seedFixture(t, plugins, changed)
var updated models.Course
gdb.Where("id = ?", ids[0]).Take(&updated)
@@ -292,7 +292,8 @@ func TestSeedCommandIsIdempotent(t *testing.T) {
t.Errorf("course after update = %+v", updated)
}
gdb.Where("course_id = ?", ids[0]).Take(&session)
if session.Room == nil || *session.Room != "105" || session.MeetingID != nil || count(t, gdb, "jz_bm_class_sessions") != 3 {
if session.Room == nil || *session.Room != "105" || session.MeetingID != nil || count(t, gdb, "jz_bm_class_sessions") != 3 ||
session.Lecturer == nil || *session.Lecturer != "dr Zastępca" {
t.Errorf("session after update = %+v", session)
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
import{_ as C}from"./PageHead.vue_vue_type_script_setup_true_lang-Uc1EGE7y.js";import{_ as w}from"./LoadState.vue_vue_type_script_setup_true_lang-BIeofE0g.js";import{_ as B}from"./ElectiveBar.vue_vue_type_script_setup_true_lang-XRL0DVZI.js";import{d as z,p as $,C as x,q as S,c as t,h as m,i as k,b as r,o as s,a as o,F as c,y as v,e as n,r as V,s as h,k as E,t as a,B as F,D as N,m as _}from"./index-6ftV598K.js";import{F as j,c as f}from"./format-bcE-cYHJ.js";const L={key:0,class:"chips",role:"group","aria-label":"Semestr"},D=["aria-pressed"],M=["aria-pressed","onClick"],P={key:1,class:"stack",style:{"margin-top":"10px"}},R={class:"row-main"},T={class:"badge"},q={class:"muted small",style:{margin:"0 0 6px"}},A={key:0},O={key:1},U={key:2},W={class:"small",style:{margin:"0"}},G={key:0,class:"badge alert"},H={class:"muted"},I={key:2,class:"empty"},se=z({__name:"CoursesView",setup(J){const i=$(),g=x(),l=V(null);S(()=>{i.loadCourses()});const p=h(()=>[...new Set((i.courses??[]).map(u=>u.semester))].sort((u,d)=>u-d)),y=h(()=>i.visibleCourses.filter(u=>l.value===null||u.semester===l.value));return(u,d)=>{const b=E("router-link");return s(),t("div",null,[m(C,{eyebrow:"Program studiów",title:"Przedmioty"}),m(w,{ready:r(i).loaded.courses,error:r(i).error,onRetry:d[1]||(d[1]=e=>r(i).retry())},{default:k(()=>[m(B),p.value.length>1?(s(),t("div",L,[o("button",{class:"chip",type:"button","aria-pressed":l.value===null,onClick:d[0]||(d[0]=e=>l.value=null)},"Wszystkie",8,D),(s(!0),t(c,null,v(p.value,e=>(s(),t("button",{key:e,class:"chip",type:"button","aria-pressed":l.value===e,onClick:K=>l.value=e},"Semestr "+a(e),9,M))),128))])):n("",!0),y.value.length?(s(),t("div",P,[(s(!0),t(c,null,v(y.value,e=>(s(),F(b,{key:e.id,to:`/przedmioty/${e.id}`,class:"card link"},{default:k(()=>[o("div",R,[o("h3",null,a(e.name),1),o("span",T,a(r(j)[e.form]),1)]),o("p",q,[e.lecturer?(s(),t("span",A,a(e.lecturer),1)):n("",!0),e.ects?(s(),t("span",O," · "+a(e.ects)+" ECTS",1)):n("",!0),e.assessment?(s(),t("span",U," · "+a(e.assessment),1)):n("",!0)]),o("p",W,[r(N)(e,r(g).choices)?(s(),t("span",G,"do wyboru")):n("",!0),o("span",H,[_(a(r(f)(e.counts.sessions,"zajęcia","zajęcia","zajęć")),1),e.counts.readings?(s(),t(c,{key:0},[_(" · lektury "+a(e.counts.readings_read)+"/"+a(e.counts.readings),1)],64)):n("",!0),e.counts.materials?(s(),t(c,{key:1},[_(" · "+a(r(f)(e.counts.materials,"materiał","materiały","materiałów")),1)],64)):n("",!0)])])]),_:2},1032,["to"]))),128))])):(s(),t("p",I,"Brak przedmiotów."))]),_:1},8,["ready","error"])])}}});export{se as default};
import{_ as C}from"./PageHead.vue_vue_type_script_setup_true_lang-BJjYuJvl.js";import{_ as w}from"./LoadState.vue_vue_type_script_setup_true_lang-BD6A8a9g.js";import{_ as B}from"./ElectiveBar.vue_vue_type_script_setup_true_lang-DkaaDTFx.js";import{d as z,p as $,C as x,q as S,c as t,h as m,i as k,b as r,o as s,a as o,F as c,y as v,e as n,r as V,s as h,k as E,t as a,B as F,D as N,m as _}from"./index-C9sCss04.js";import{F as j,c as f}from"./format-bcE-cYHJ.js";const L={key:0,class:"chips",role:"group","aria-label":"Semestr"},D=["aria-pressed"],M=["aria-pressed","onClick"],P={key:1,class:"stack",style:{"margin-top":"10px"}},R={class:"row-main"},T={class:"badge"},q={class:"muted small",style:{margin:"0 0 6px"}},A={key:0},O={key:1},U={key:2},W={class:"small",style:{margin:"0"}},G={key:0,class:"badge alert"},H={class:"muted"},I={key:2,class:"empty"},se=z({__name:"CoursesView",setup(J){const i=$(),g=x(),l=V(null);S(()=>{i.loadCourses()});const p=h(()=>[...new Set((i.courses??[]).map(u=>u.semester))].sort((u,d)=>u-d)),y=h(()=>i.visibleCourses.filter(u=>l.value===null||u.semester===l.value));return(u,d)=>{const b=E("router-link");return s(),t("div",null,[m(C,{eyebrow:"Program studiów",title:"Przedmioty"}),m(w,{ready:r(i).loaded.courses,error:r(i).error,onRetry:d[1]||(d[1]=e=>r(i).retry())},{default:k(()=>[m(B),p.value.length>1?(s(),t("div",L,[o("button",{class:"chip",type:"button","aria-pressed":l.value===null,onClick:d[0]||(d[0]=e=>l.value=null)},"Wszystkie",8,D),(s(!0),t(c,null,v(p.value,e=>(s(),t("button",{key:e,class:"chip",type:"button","aria-pressed":l.value===e,onClick:K=>l.value=e},"Semestr "+a(e),9,M))),128))])):n("",!0),y.value.length?(s(),t("div",P,[(s(!0),t(c,null,v(y.value,e=>(s(),F(b,{key:e.id,to:`/przedmioty/${e.id}`,class:"card link"},{default:k(()=>[o("div",R,[o("h3",null,a(e.name),1),o("span",T,a(r(j)[e.form]),1)]),o("p",q,[e.lecturer?(s(),t("span",A,a(e.lecturer),1)):n("",!0),e.ects?(s(),t("span",O," · "+a(e.ects)+" ECTS",1)):n("",!0),e.assessment?(s(),t("span",U," · "+a(e.assessment),1)):n("",!0)]),o("p",W,[r(N)(e,r(g).choices)?(s(),t("span",G,"do wyboru")):n("",!0),o("span",H,[_(a(r(f)(e.counts.sessions,"zajęcia","zajęcia","zajęć")),1),e.counts.readings?(s(),t(c,{key:0},[_(" · lektury "+a(e.counts.readings_read)+"/"+a(e.counts.readings),1)],64)):n("",!0),e.counts.materials?(s(),t(c,{key:1},[_(" · "+a(r(f)(e.counts.materials,"materiał","materiały","materiałów")),1)],64)):n("",!0)])])]),_:2},1032,["to"]))),128))])):(s(),t("p",I,"Brak przedmiotów."))]),_:1},8,["ready","error"])])}}});export{se as default};

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
import{_ as x}from"./PageHead.vue_vue_type_script_setup_true_lang-Uc1EGE7y.js";import{_ as C}from"./LoadState.vue_vue_type_script_setup_true_lang-BIeofE0g.js";import{_ as B}from"./ElectiveBar.vue_vue_type_script_setup_true_lang-XRL0DVZI.js";import{d as $,p as N,q as T,c as t,h as u,i as f,b as s,r as h,o,F as p,y as k,a as n,t as a,e as _,s as g,k as V,x as L,m as v}from"./index-6ftV598K.js";import{d as w,r as M,b as D,a as E,K as b,c as F}from"./format-bcE-cYHJ.js";const K={key:0,class:"rows card"},P={class:"row-main"},S={class:"title"},j={class:"muted small"},q={class:"badge"},A={key:0,class:"small",style:{margin:"6px 0 0"}},I={key:1,class:"empty"},R={key:2,class:"section"},U=["aria-pressed"],Z={key:0,class:"rows card past",style:{"margin-top":"10px"}},G={class:"row-main"},H={class:"title"},J={class:"when"},O={class:"muted small"},ae=$({__name:"DeadlinesView",setup(Q){const r=N(),i=h(new Date),d=h(!1);T(()=>{i.value=new Date,Promise.all([r.loadDeadlines(),r.loadCourses()])});const y=g(()=>r.deadlines.filter(c=>Date.parse(c.due_at)>=i.value.getTime())),m=g(()=>r.deadlines.filter(c=>Date.parse(c.due_at)<i.value.getTime()).reverse());return(c,l)=>{const z=V("router-link");return o(),t("div",null,[u(x,{eyebrow:"Zaliczenia, egzaminy, sprawy organizacyjne",title:"Terminarz"}),u(C,{ready:s(r).loaded.deadlines&&s(r).loaded.courses,error:s(r).error,onRetry:l[1]||(l[1]=e=>s(r).retry())},{default:f(()=>[u(B),y.value.length?(o(),t("ul",K,[(o(!0),t(p,null,k(y.value,e=>(o(),t("li",{key:e.id},[n("div",P,[n("span",S,a(e.title),1),n("span",{class:L(["badge",{alert:s(w)(e.due_at,i.value)<=3}])},a(s(M)(e.due_at,i.value)),3)]),n("div",j,[v(a(s(D)(e.due_at))+", "+a(s(E)(e.due_at))+" · ",1),n("span",q,a(s(b)[e.kind]),1),e.course?(o(),t(p,{key:0},[l[2]||(l[2]=v(" · ",-1)),u(z,{to:`/przedmioty/${e.course.id}`},{default:f(()=>[v(a(e.course.name),1)]),_:2},1032,["to"])],64)):_("",!0)]),e.description?(o(),t("p",A,a(e.description),1)):_("",!0)]))),128))])):(o(),t("p",I,"Brak nadchodzących terminów.")),m.value.length?(o(),t("div",R,[n("button",{class:"chip",type:"button","aria-pressed":d.value,onClick:l[0]||(l[0]=e=>d.value=!d.value)},"Minione ("+a(m.value.length)+")",9,U),d.value?(o(),t("ul",Z,[(o(!0),t(p,null,k(m.value,e=>(o(),t("li",{key:e.id},[n("div",G,[n("span",H,a(e.title),1),n("span",J,a(s(F)(Math.abs(s(w)(e.due_at,i.value)),"dzień","dni","dni"))+" temu",1)]),n("div",O,a(s(D)(e.due_at))+" · "+a(s(b)[e.kind]),1)]))),128))])):_("",!0)])):_("",!0)]),_:1},8,["ready","error"])])}}});export{ae as default};
import{_ as x}from"./PageHead.vue_vue_type_script_setup_true_lang-BJjYuJvl.js";import{_ as C}from"./LoadState.vue_vue_type_script_setup_true_lang-BD6A8a9g.js";import{_ as B}from"./ElectiveBar.vue_vue_type_script_setup_true_lang-DkaaDTFx.js";import{d as $,p as N,q as T,c as t,h as u,i as f,b as s,r as h,o,F as p,y as k,a as n,t as a,e as _,s as g,k as V,x as L,m as v}from"./index-C9sCss04.js";import{d as w,r as M,b as D,a as E,K as b,c as F}from"./format-bcE-cYHJ.js";const K={key:0,class:"rows card"},P={class:"row-main"},S={class:"title"},j={class:"muted small"},q={class:"badge"},A={key:0,class:"small",style:{margin:"6px 0 0"}},I={key:1,class:"empty"},R={key:2,class:"section"},U=["aria-pressed"],Z={key:0,class:"rows card past",style:{"margin-top":"10px"}},G={class:"row-main"},H={class:"title"},J={class:"when"},O={class:"muted small"},ae=$({__name:"DeadlinesView",setup(Q){const r=N(),i=h(new Date),d=h(!1);T(()=>{i.value=new Date,Promise.all([r.loadDeadlines(),r.loadCourses()])});const y=g(()=>r.deadlines.filter(c=>Date.parse(c.due_at)>=i.value.getTime())),m=g(()=>r.deadlines.filter(c=>Date.parse(c.due_at)<i.value.getTime()).reverse());return(c,l)=>{const z=V("router-link");return o(),t("div",null,[u(x,{eyebrow:"Zaliczenia, egzaminy, sprawy organizacyjne",title:"Terminarz"}),u(C,{ready:s(r).loaded.deadlines&&s(r).loaded.courses,error:s(r).error,onRetry:l[1]||(l[1]=e=>s(r).retry())},{default:f(()=>[u(B),y.value.length?(o(),t("ul",K,[(o(!0),t(p,null,k(y.value,e=>(o(),t("li",{key:e.id},[n("div",P,[n("span",S,a(e.title),1),n("span",{class:L(["badge",{alert:s(w)(e.due_at,i.value)<=3}])},a(s(M)(e.due_at,i.value)),3)]),n("div",j,[v(a(s(D)(e.due_at))+", "+a(s(E)(e.due_at))+" · ",1),n("span",q,a(s(b)[e.kind]),1),e.course?(o(),t(p,{key:0},[l[2]||(l[2]=v(" · ",-1)),u(z,{to:`/przedmioty/${e.course.id}`},{default:f(()=>[v(a(e.course.name),1)]),_:2},1032,["to"])],64)):_("",!0)]),e.description?(o(),t("p",A,a(e.description),1)):_("",!0)]))),128))])):(o(),t("p",I,"Brak nadchodzących terminów.")),m.value.length?(o(),t("div",R,[n("button",{class:"chip",type:"button","aria-pressed":d.value,onClick:l[0]||(l[0]=e=>d.value=!d.value)},"Minione ("+a(m.value.length)+")",9,U),d.value?(o(),t("ul",Z,[(o(!0),t(p,null,k(m.value,e=>(o(),t("li",{key:e.id},[n("div",G,[n("span",H,a(e.title),1),n("span",J,a(s(F)(Math.abs(s(w)(e.due_at,i.value)),"dzień","dni","dni"))+" temu",1)]),n("div",O,a(s(D)(e.due_at))+" · "+a(s(b)[e.kind]),1)]))),128))])):_("",!0)])):_("",!0)]),_:1},8,["ready","error"])])}}});export{ae as default};

View File

@@ -1 +1 @@
import{d as l,C as d,p as u,b as e,o as a,c as r,m as i,t as m,h as y,i as w,e as n,a as h,s as _,k}from"./index-6ftV598K.js";import{c as b}from"./format-bcE-cYHJ.js";const g={key:0,class:"stack",style:{"margin-bottom":"16px"}},v={key:0,class:"notice"},z={key:1,class:"chips wrap"},C=["aria-pressed"],V=l({__name:"ElectiveBar",setup(f){const t=d(),o=u(),c=_(()=>b(o.pendingElectives.length,"grupa przedmiotów do wyboru","grupy przedmiotów do wyboru","grup przedmiotów do wyboru"));return(x,s)=>{const p=k("router-link");return e(o).pendingElectives.length||e(t).hasChoices?(a(),r("div",g,[e(o).pendingElectives.length?(a(),r("p",v,[i(" Masz "+m(c.value)+". Do czasu wyboru widać wszystkie alternatywy. ",1),y(p,{to:{name:"profile",hash:"#wybor"}},{default:w(()=>[...s[1]||(s[1]=[i("Wybierz",-1)])]),_:1})])):n("",!0),e(t).hasChoices?(a(),r("div",z,[h("button",{class:"chip",type:"button","aria-pressed":e(t).showAll,onClick:s[0]||(s[0]=E=>e(t).setShowAll(!e(t).showAll))},"Pokaż wszystkie przedmioty do wyboru",8,C)])):n("",!0)])):n("",!0)}}});export{V as _};
import{d as l,C as d,p as u,b as e,o as a,c as r,m as i,t as m,h as y,i as w,e as n,a as h,s as _,k}from"./index-C9sCss04.js";import{c as b}from"./format-bcE-cYHJ.js";const g={key:0,class:"stack",style:{"margin-bottom":"16px"}},v={key:0,class:"notice"},z={key:1,class:"chips wrap"},C=["aria-pressed"],V=l({__name:"ElectiveBar",setup(f){const t=d(),o=u(),c=_(()=>b(o.pendingElectives.length,"grupa przedmiotów do wyboru","grupy przedmiotów do wyboru","grup przedmiotów do wyboru"));return(x,s)=>{const p=k("router-link");return e(o).pendingElectives.length||e(t).hasChoices?(a(),r("div",g,[e(o).pendingElectives.length?(a(),r("p",v,[i(" Masz "+m(c.value)+". Do czasu wyboru widać wszystkie alternatywy. ",1),y(p,{to:{name:"profile",hash:"#wybor"}},{default:w(()=>[...s[1]||(s[1]=[i("Wybierz",-1)])]),_:1})])):n("",!0),e(t).hasChoices?(a(),r("div",z,[h("button",{class:"chip",type:"button","aria-pressed":e(t).showAll,onClick:s[0]||(s[0]=E=>e(t).setShowAll(!e(t).showAll))},"Pokaż wszystkie przedmioty do wyboru",8,C)])):n("",!0)])):n("",!0)}}});export{V as _};

View File

@@ -1 +1 @@
import{d as f,c as t,a,g as y,t as n,e as m,w as _,v as k,h as w,i as b,r,k as h,o,m as g,n as x}from"./index-6ftV598K.js";import{f as V}from"./forms-Dmkusc1J.js";const B={class:"auth"},C={key:0,class:"notice",role:"status"},N={key:0,class:"notice error",role:"alert",style:{"margin-bottom":"14px"}},W={class:"field"},j={key:0,class:"error-text"},M=["disabled"],z={class:"auth-links"},I=f({__name:"ForgotView",setup(A){const l=r(""),i=r(!1),u=r(!1),s=r(null);async function c(){i.value=!0,s.value=null;try{await x.forgotPassword(l.value.trim()),u.value=!0}catch(d){s.value=V(d)}finally{i.value=!1}}return(d,e)=>{const p=h("router-link");return o(),t("div",B,[e[3]||(e[3]=a("header",{class:"page-head"},[a("span",{class:"eyebrow"},"BM II° · UWr"),a("h1",null,"Przypomnij hasło")],-1)),u.value?(o(),t("p",C,"Jeśli konto o tym adresie istnieje, wysłaliśmy na nie wiadomość z linkiem do ustawienia nowego hasła.")):(o(),t("form",{key:1,onSubmit:y(c,["prevent"]),novalidate:""},[s.value?.message?(o(),t("div",N,n(s.value.message),1)):m("",!0),a("div",W,[e[1]||(e[1]=a("label",{for:"email"},"Adres e-mail",-1)),_(a("input",{id:"email","onUpdate:modelValue":e[0]||(e[0]=v=>l.value=v),type:"email",autocomplete:"email",inputmode:"email",required:"",autofocus:""},null,512),[[k,l.value]]),s.value?.fields.email?(o(),t("p",j,n(s.value.fields.email),1)):m("",!0)]),a("button",{class:"btn primary block",type:"submit",disabled:i.value||!l.value},n(i.value?"Wysyłanie…":"Wyślij link"),9,M)],32)),a("div",z,[w(p,{to:"/logowanie"},{default:b(()=>[...e[2]||(e[2]=[g("Wróć do logowania",-1)])]),_:1})])])}}});export{I as default};
import{d as f,c as t,a,g as y,t as n,e as m,w as _,v as k,h as w,i as b,r,k as h,o,m as g,n as x}from"./index-C9sCss04.js";import{f as V}from"./forms-BPOK5alr.js";const B={class:"auth"},C={key:0,class:"notice",role:"status"},N={key:0,class:"notice error",role:"alert",style:{"margin-bottom":"14px"}},W={class:"field"},j={key:0,class:"error-text"},M=["disabled"],z={class:"auth-links"},I=f({__name:"ForgotView",setup(A){const l=r(""),i=r(!1),u=r(!1),s=r(null);async function c(){i.value=!0,s.value=null;try{await x.forgotPassword(l.value.trim()),u.value=!0}catch(d){s.value=V(d)}finally{i.value=!1}}return(d,e)=>{const p=h("router-link");return o(),t("div",B,[e[3]||(e[3]=a("header",{class:"page-head"},[a("span",{class:"eyebrow"},"BM II° · UWr"),a("h1",null,"Przypomnij hasło")],-1)),u.value?(o(),t("p",C,"Jeśli konto o tym adresie istnieje, wysłaliśmy na nie wiadomość z linkiem do ustawienia nowego hasła.")):(o(),t("form",{key:1,onSubmit:y(c,["prevent"]),novalidate:""},[s.value?.message?(o(),t("div",N,n(s.value.message),1)):m("",!0),a("div",W,[e[1]||(e[1]=a("label",{for:"email"},"Adres e-mail",-1)),_(a("input",{id:"email","onUpdate:modelValue":e[0]||(e[0]=v=>l.value=v),type:"email",autocomplete:"email",inputmode:"email",required:"",autofocus:""},null,512),[[k,l.value]]),s.value?.fields.email?(o(),t("p",j,n(s.value.fields.email),1)):m("",!0)]),a("button",{class:"btn primary block",type:"submit",disabled:i.value||!l.value},n(i.value?"Wysyłanie…":"Wyślij link"),9,M)],32)),a("div",z,[w(p,{to:"/logowanie"},{default:b(()=>[...e[2]||(e[2]=[g("Wróć do logowania",-1)])]),_:1})])])}}});export{I as default};

View File

@@ -1 +1 @@
import{d as n,c as r,m as l,t as i,a as o,T as d,o as s}from"./index-6ftV598K.js";const y={key:0,class:"notice error",role:"alert"},c={key:1,class:"stack","aria-busy":"true","aria-label":"Wczytywanie"},m=n({__name:"LoadState",props:{loading:{type:Boolean},error:{},ready:{type:Boolean}},emits:["retry"],setup(e){return(a,t)=>e.error&&!e.ready?(s(),r("div",y,[l(i(e.error)+" ",1),o("button",{class:"linkish",type:"button",onClick:t[0]||(t[0]=u=>a.$emit("retry"))},"Spróbuj ponownie")])):e.ready?d(a.$slots,"default",{},void 0,void 0,2):(s(),r("div",c,[...t[1]||(t[1]=[o("div",{class:"skeleton"},null,-1),o("div",{class:"skeleton"},null,-1),o("div",{class:"skeleton"},null,-1)])]))}});export{m as _};
import{d as n,c as r,m as l,t as i,a as o,T as d,o as s}from"./index-C9sCss04.js";const y={key:0,class:"notice error",role:"alert"},c={key:1,class:"stack","aria-busy":"true","aria-label":"Wczytywanie"},m=n({__name:"LoadState",props:{loading:{type:Boolean},error:{},ready:{type:Boolean}},emits:["retry"],setup(e){return(a,t)=>e.error&&!e.ready?(s(),r("div",y,[l(i(e.error)+" ",1),o("button",{class:"linkish",type:"button",onClick:t[0]||(t[0]=u=>a.$emit("retry"))},"Spróbuj ponownie")])):e.ready?d(a.$slots,"default",{},void 0,void 0,2):(s(),r("div",c,[...t[1]||(t[1]=[o("div",{class:"skeleton"},null,-1),o("div",{class:"skeleton"},null,-1),o("div",{class:"skeleton"},null,-1)])]))}});export{m as _};

View File

@@ -1 +1 @@
import{d as j,u as V,c as o,a as s,b as C,e as d,t as m,w as v,v as b,f as N,g as q,h as w,i as k,j as B,r as l,k as M,l as U,o as r,m as _}from"./index-6ftV598K.js";import{s as Z,f as z}from"./forms-Dmkusc1J.js";const R={class:"auth"},S={key:0,class:"notice",role:"status"},A={key:0,class:"notice error",role:"alert",style:{"margin-bottom":"14px"}},D={class:"field"},E={key:0,class:"error-text"},I={class:"field"},L={key:0,class:"error-text"},T={class:"check",style:{"margin-bottom":"16px"}},H=["disabled"],P={class:"auth-links"},J=j({__name:"LoginView",setup(W){const g=V(),c=B(),x=U(),i=l(""),u=l(""),p=l(!0),n=l(!1),t=l(null);async function h(){n.value=!0,t.value=null;try{await g.login(i.value.trim(),u.value,p.value),await x.replace(Z(c.query.redirect))}catch(f){t.value=z(f)}finally{n.value=!1}}return(f,e)=>{const y=M("router-link");return r(),o("div",R,[e[8]||(e[8]=s("header",{class:"page-head"},[s("span",{class:"eyebrow"},"BM II° · UWr"),s("h1",null,"Zaloguj się")],-1)),C(c).query.expired?(r(),o("p",S,"Sesja wygasła. Zaloguj się ponownie.")):d("",!0),s("form",{onSubmit:q(h,["prevent"]),novalidate:""},[t.value?.message?(r(),o("div",A,m(t.value.message),1)):d("",!0),s("div",D,[e[3]||(e[3]=s("label",{for:"email"},"Adres e-mail",-1)),v(s("input",{id:"email","onUpdate:modelValue":e[0]||(e[0]=a=>i.value=a),type:"email",autocomplete:"username",inputmode:"email",required:"",autofocus:""},null,512),[[b,i.value]]),t.value?.fields.email?(r(),o("p",E,m(t.value.fields.email),1)):d("",!0)]),s("div",I,[e[4]||(e[4]=s("label",{for:"password"},"Hasło",-1)),v(s("input",{id:"password","onUpdate:modelValue":e[1]||(e[1]=a=>u.value=a),type:"password",autocomplete:"current-password",required:""},null,512),[[b,u.value]]),t.value?.fields.password?(r(),o("p",L,m(t.value.fields.password),1)):d("",!0)]),s("label",T,[v(s("input",{"onUpdate:modelValue":e[2]||(e[2]=a=>p.value=a),type:"checkbox"},null,512),[[N,p.value]]),e[5]||(e[5]=s("span",null,"Pamiętaj mnie na tym urządzeniu",-1))]),s("button",{class:"btn primary block",type:"submit",disabled:n.value||!i.value||!u.value},m(n.value?"Logowanie…":"Zaloguj się"),9,H)],32),s("div",P,[w(y,{to:"/przypomnij-haslo"},{default:k(()=>[...e[6]||(e[6]=[_("Nie pamiętam hasła",-1)])]),_:1}),w(y,{to:"/rejestracja"},{default:k(()=>[...e[7]||(e[7]=[_("Załóż konto",-1)])]),_:1})])])}}});export{J as default};
import{d as j,u as V,c as o,a as s,b as C,e as d,t as m,w as v,v as b,f as N,g as q,h as w,i as k,j as B,r as l,k as M,l as U,o as r,m as _}from"./index-C9sCss04.js";import{s as Z,f as z}from"./forms-BPOK5alr.js";const R={class:"auth"},S={key:0,class:"notice",role:"status"},A={key:0,class:"notice error",role:"alert",style:{"margin-bottom":"14px"}},D={class:"field"},E={key:0,class:"error-text"},I={class:"field"},L={key:0,class:"error-text"},T={class:"check",style:{"margin-bottom":"16px"}},H=["disabled"],P={class:"auth-links"},J=j({__name:"LoginView",setup(W){const g=V(),c=B(),x=U(),i=l(""),u=l(""),p=l(!0),n=l(!1),t=l(null);async function h(){n.value=!0,t.value=null;try{await g.login(i.value.trim(),u.value,p.value),await x.replace(Z(c.query.redirect))}catch(f){t.value=z(f)}finally{n.value=!1}}return(f,e)=>{const y=M("router-link");return r(),o("div",R,[e[8]||(e[8]=s("header",{class:"page-head"},[s("span",{class:"eyebrow"},"BM II° · UWr"),s("h1",null,"Zaloguj się")],-1)),C(c).query.expired?(r(),o("p",S,"Sesja wygasła. Zaloguj się ponownie.")):d("",!0),s("form",{onSubmit:q(h,["prevent"]),novalidate:""},[t.value?.message?(r(),o("div",A,m(t.value.message),1)):d("",!0),s("div",D,[e[3]||(e[3]=s("label",{for:"email"},"Adres e-mail",-1)),v(s("input",{id:"email","onUpdate:modelValue":e[0]||(e[0]=a=>i.value=a),type:"email",autocomplete:"username",inputmode:"email",required:"",autofocus:""},null,512),[[b,i.value]]),t.value?.fields.email?(r(),o("p",E,m(t.value.fields.email),1)):d("",!0)]),s("div",I,[e[4]||(e[4]=s("label",{for:"password"},"Hasło",-1)),v(s("input",{id:"password","onUpdate:modelValue":e[1]||(e[1]=a=>u.value=a),type:"password",autocomplete:"current-password",required:""},null,512),[[b,u.value]]),t.value?.fields.password?(r(),o("p",L,m(t.value.fields.password),1)):d("",!0)]),s("label",T,[v(s("input",{"onUpdate:modelValue":e[2]||(e[2]=a=>p.value=a),type:"checkbox"},null,512),[[N,p.value]]),e[5]||(e[5]=s("span",null,"Pamiętaj mnie na tym urządzeniu",-1))]),s("button",{class:"btn primary block",type:"submit",disabled:n.value||!i.value||!u.value},m(n.value?"Logowanie…":"Zaloguj się"),9,H)],32),s("div",P,[w(y,{to:"/przypomnij-haslo"},{default:k(()=>[...e[6]||(e[6]=[_("Nie pamiętam hasła",-1)])]),_:1}),w(y,{to:"/rejestracja"},{default:k(()=>[...e[7]||(e[7]=[_("Załóż konto",-1)])]),_:1})])])}}});export{J as default};

View File

@@ -1,4 +1,4 @@
import{_ as C}from"./PageHead.vue_vue_type_script_setup_true_lang-Uc1EGE7y.js";import{_ as E}from"./LoadState.vue_vue_type_script_setup_true_lang-BIeofE0g.js";import{d as L,q as V,A as z,c as u,h as k,i as g,r as B,E as A,G as H,o as l,F as y,b,m as j,a as d,B as W,t as f,e as h,y as M,s as N,k as D}from"./index-6ftV598K.js";import{T as F,i as P,j as G}from"./format-bcE-cYHJ.js";const O={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function _(o){return o.replace(/[&<>"']/g,t=>O[t])}function T(o){const t=o.trim().replace(/[\u0000-\u001f\u007f\s]+/g,"");return/^https?:\/\/[^/]/i.test(t)||/^mailto:[^\s]+$/i.test(t)||t.startsWith("/")&&!t.startsWith("//")||t.startsWith("#")?t:null}function w(o){const t=[],s=i=>`\0${t.push(i)-1}\0`;let e=o.replace(/\u0000/g,"");return e=e.replace(/`([^`\n]+)`/g,(i,c)=>s(`<code>${_(c)}</code>`)),e=e.replace(/\[([^\]\n]+)\]\(([^()\s]*(?:\([^()\s]*\)[^()\s]*)*)\)/g,(i,c,r)=>{const p=T(r),a=S(_(c));if(!p)return s(a);const n=/^https?:/i.test(p)?' target="_blank" rel="noopener noreferrer nofollow"':"";return s(`<a href="${_(p)}"${n}>${a}</a>`)}),e=S(_(e)),e.replace(/\u0000(\d+)\u0000/g,(i,c)=>t[Number(c)]??"")}function S(o){return o.replace(/\*\*([^*\n]+)\*\*/g,"<strong>$1</strong>").replace(/(^|[\s(])\*([^*\n]+)\*(?=$|[\s).,;:!?])/g,"$1<em>$2</em>").replace(/(^|[\s(])_([^_\n]+)_(?=$|[\s).,;:!?])/g,"$1<em>$2</em>")}function q(o){if(!o)return"";const t=o.replace(/\r\n?/g,`
import{_ as C}from"./PageHead.vue_vue_type_script_setup_true_lang-BJjYuJvl.js";import{_ as E}from"./LoadState.vue_vue_type_script_setup_true_lang-BD6A8a9g.js";import{d as L,q as V,A as z,c as u,h as k,i as g,r as B,E as A,G as H,o as l,F as y,b,m as j,a as d,B as W,t as f,e as h,y as M,s as N,k as D}from"./index-C9sCss04.js";import{T as F,i as P,j as G}from"./format-bcE-cYHJ.js";const O={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function _(o){return o.replace(/[&<>"']/g,t=>O[t])}function T(o){const t=o.trim().replace(/[\u0000-\u001f\u007f\s]+/g,"");return/^https?:\/\/[^/]/i.test(t)||/^mailto:[^\s]+$/i.test(t)||t.startsWith("/")&&!t.startsWith("//")||t.startsWith("#")?t:null}function w(o){const t=[],s=i=>`\0${t.push(i)-1}\0`;let e=o.replace(/\u0000/g,"");return e=e.replace(/`([^`\n]+)`/g,(i,c)=>s(`<code>${_(c)}</code>`)),e=e.replace(/\[([^\]\n]+)\]\(([^()\s]*(?:\([^()\s]*\)[^()\s]*)*)\)/g,(i,c,r)=>{const p=T(r),a=S(_(c));if(!p)return s(a);const n=/^https?:/i.test(p)?' target="_blank" rel="noopener noreferrer nofollow"':"";return s(`<a href="${_(p)}"${n}>${a}</a>`)}),e=S(_(e)),e.replace(/\u0000(\d+)\u0000/g,(i,c)=>t[Number(c)]??"")}function S(o){return o.replace(/\*\*([^*\n]+)\*\*/g,"<strong>$1</strong>").replace(/(^|[\s(])\*([^*\n]+)\*(?=$|[\s).,;:!?])/g,"$1<em>$2</em>").replace(/(^|[\s(])_([^_\n]+)_(?=$|[\s).,;:!?])/g,"$1<em>$2</em>")}function q(o){if(!o)return"";const t=o.replace(/\r\n?/g,`
`).split(`
`),s=[];let e=0;const i=r=>r.trim()==="",c=r=>/^(#{1,6})\s/.test(r)||/^```/.test(r)||/^>\s?/.test(r)||/^\s*([-*+]|\d+[.)])\s+/.test(r)||/^(-{3,}|\*{3,}|_{3,})\s*$/.test(r);for(;e<t.length;){const r=t[e];if(i(r)){e++;continue}if(/^```/.test(r)){const n=[];for(e++;e<t.length&&!/^```/.test(t[e]);)n.push(t[e++]);e++,s.push(`<pre><code>${_(n.join(`
`))}</code></pre>`);continue}const p=/^(#{1,6})\s+(.*?)\s*#*\s*$/.exec(r);if(p){const n=Math.min(p[1].length+1,6);s.push(`<h${n}>${w(p[2])}</h${n}>`),e++;continue}if(/^(-{3,}|\*{3,}|_{3,})\s*$/.test(r)){s.push("<hr>"),e++;continue}if(/^>\s?/.test(r)){const n=[];for(;e<t.length&&/^>\s?/.test(t[e]);)n.push(t[e++].replace(/^>\s?/,""));s.push(`<blockquote>${q(n.join(`

View File

@@ -1 +1 @@
import{d as V,p as j,q as $,E as D,G as E,A as P,c as a,h as A,a as l,w as N,H as B,F as c,y as v,b as y,g as F,e as d,m as L,t as n,I as W,r as m,s as M,o as s,k as q,B as U,i as G}from"./index-6ftV598K.js";import{_ as H}from"./PageHead.vue_vue_type_script_setup_true_lang-Uc1EGE7y.js";import{T as S,i as I,c as O}from"./format-bcE-cYHJ.js";const R={class:"field"},Y=["value"],J={class:"field"},K=["value"],Q={key:0,class:"chips wrap",role:"group","aria-label":"Tagi",style:{"margin-bottom":"12px"}},X=["aria-pressed","onClick"],Z={key:2,class:"notice error",role:"alert"},ee={key:3,class:"stack","aria-busy":"true"},te=["aria-busy"],se={class:"row-main"},ae={class:"badge"},le={class:"muted small",style:{margin:"0"}},oe={key:0},ne={key:1},ie={key:2},re={key:0,style:{margin:"6px 0 0"}},ue={key:1,class:"empty",style:{"margin-top":"12px"}},de={key:2,class:"btn-row",style:{"margin-top":"16px","justify-content":"space-between","align-items":"center"},"aria-label":"Strony"},pe=["disabled"],ce={class:"muted small nums"},ve=["disabled"],fe=V({__name:"MaterialsView",setup(ye){const h=j(),o=W({course:"",type:"",tag:""}),i=m(1),u=m(null),b=m(!1),g=m(""),k=m(new Map);$(()=>{h.loadCourses(),_()});let f=0;async function _(){const r=++f;b.value=!0,g.value="";try{const t=await D.materials({course:o.course?Number(o.course):null,type:o.type||null,tag:o.tag||null,page:i.value});if(r!==f)return;u.value=t;for(const w of t.data)for(const e of w.tags)k.value.set(e.slug,e);k.value=new Map(k.value)}catch(t){r===f&&(g.value=E(t))}finally{r===f&&(b.value=!1)}}P(o,()=>{i.value=1,_()});function C(r){i.value=r,_(),window.scrollTo({top:0})}const x=M(()=>[...k.value.values()].sort((r,t)=>r.name.localeCompare(t.name,"pl"))),z=M(()=>!!(o.course||o.type||o.tag)),T=()=>Object.assign(o,{course:"",type:"",tag:""});return(r,t)=>{const w=q("router-link");return s(),a("div",null,[A(H,{eyebrow:"Notatki, PDF-y, linki",title:"Materiały"}),l("form",{class:"grid-2",style:{"margin-bottom":"8px"},onSubmit:t[2]||(t[2]=F(()=>{},["prevent"]))},[l("div",R,[t[7]||(t[7]=l("label",{for:"f-course"},"Przedmiot",-1)),N(l("select",{id:"f-course","onUpdate:modelValue":t[0]||(t[0]=e=>o.course=e)},[t[6]||(t[6]=l("option",{value:""},"Wszystkie",-1)),(s(!0),a(c,null,v(y(h).visibleCourses,e=>(s(),a("option",{key:e.id,value:String(e.id)},n(e.name)+" ("+n(e.form==="wyklad"?"wykład":e.form==="cwiczenia"?"ćwiczenia":e.form)+")",9,Y))),128))],512),[[B,o.course]])]),l("div",J,[t[9]||(t[9]=l("label",{for:"f-type"},"Rodzaj",-1)),N(l("select",{id:"f-type","onUpdate:modelValue":t[1]||(t[1]=e=>o.type=e)},[t[8]||(t[8]=l("option",{value:""},"Wszystkie",-1)),(s(!0),a(c,null,v(y(S),(e,p)=>(s(),a("option",{key:p,value:p},n(e),9,K))),128))],512),[[B,o.type]])])],32),x.value.length?(s(),a("div",Q,[(s(!0),a(c,null,v(x.value,e=>(s(),a("button",{key:e.slug,class:"chip",type:"button","aria-pressed":o.tag===e.slug,onClick:p=>o.tag=o.tag===e.slug?"":e.slug},n(e.name),9,X))),128))])):d("",!0),z.value?(s(),a("button",{key:1,class:"linkish small",type:"button",onClick:T},"Wyczyść filtry")):d("",!0),g.value?(s(),a("div",Z,[L(n(g.value)+" ",1),l("button",{class:"linkish",type:"button",onClick:t[3]||(t[3]=e=>_())},"Spróbuj ponownie")])):u.value?(s(),a(c,{key:4},[u.value.data.length?(s(),a("div",{key:0,class:"stack",style:{"margin-top":"12px"},"aria-busy":b.value},[(s(!0),a(c,null,v(u.value.data,e=>(s(),U(w,{key:e.id,to:`/materialy/${e.id}`,class:"card link"},{default:G(()=>[l("div",se,[l("h3",null,n(e.title),1),l("span",ae,n(y(S)[e.type]),1)]),l("p",le,[e.course?(s(),a("span",oe,n(e.course.name),1)):d("",!0),e.published_at?(s(),a("span",ne," · "+n(y(I)(e.published_at)),1)):d("",!0),e.files_count?(s(),a("span",ie," · "+n(y(O)(e.files_count,"plik","pliki","plików")),1)):d("",!0)]),e.tags.length?(s(),a("p",re,[(s(!0),a(c,null,v(e.tags,p=>(s(),a("span",{key:p.id,class:"badge",style:{"margin-right":"4px"}},n(p.name),1))),128))])):d("",!0)]),_:2},1032,["to"]))),128))],8,te)):(s(),a("p",ue,n(z.value?"Nic nie pasuje do filtrów.":"Nie ma jeszcze żadnych materiałów."),1)),u.value.meta.last_page>1?(s(),a("nav",de,[l("button",{class:"btn small",type:"button",disabled:i.value<=1,onClick:t[4]||(t[4]=e=>C(i.value-1))},"← Poprzednia",8,pe),l("span",ce,n(i.value)+" / "+n(u.value.meta.last_page),1),l("button",{class:"btn small",type:"button",disabled:i.value>=u.value.meta.last_page,onClick:t[5]||(t[5]=e=>C(i.value+1))},"Następna →",8,ve)])):d("",!0)],64)):(s(),a("div",ee,[...t[10]||(t[10]=[l("div",{class:"skeleton"},null,-1),l("div",{class:"skeleton"},null,-1)])]))])}}});export{fe as default};
import{d as V,p as j,q as $,E as D,G as E,A as P,c as a,h as A,a as l,w as N,H as B,F as c,y as v,b as y,g as F,e as d,m as L,t as n,I as W,r as m,s as M,o as s,k as q,B as U,i as G}from"./index-C9sCss04.js";import{_ as H}from"./PageHead.vue_vue_type_script_setup_true_lang-BJjYuJvl.js";import{T as S,i as I,c as O}from"./format-bcE-cYHJ.js";const R={class:"field"},Y=["value"],J={class:"field"},K=["value"],Q={key:0,class:"chips wrap",role:"group","aria-label":"Tagi",style:{"margin-bottom":"12px"}},X=["aria-pressed","onClick"],Z={key:2,class:"notice error",role:"alert"},ee={key:3,class:"stack","aria-busy":"true"},te=["aria-busy"],se={class:"row-main"},ae={class:"badge"},le={class:"muted small",style:{margin:"0"}},oe={key:0},ne={key:1},ie={key:2},re={key:0,style:{margin:"6px 0 0"}},ue={key:1,class:"empty",style:{"margin-top":"12px"}},de={key:2,class:"btn-row",style:{"margin-top":"16px","justify-content":"space-between","align-items":"center"},"aria-label":"Strony"},pe=["disabled"],ce={class:"muted small nums"},ve=["disabled"],fe=V({__name:"MaterialsView",setup(ye){const h=j(),o=W({course:"",type:"",tag:""}),i=m(1),u=m(null),b=m(!1),g=m(""),k=m(new Map);$(()=>{h.loadCourses(),_()});let f=0;async function _(){const r=++f;b.value=!0,g.value="";try{const t=await D.materials({course:o.course?Number(o.course):null,type:o.type||null,tag:o.tag||null,page:i.value});if(r!==f)return;u.value=t;for(const w of t.data)for(const e of w.tags)k.value.set(e.slug,e);k.value=new Map(k.value)}catch(t){r===f&&(g.value=E(t))}finally{r===f&&(b.value=!1)}}P(o,()=>{i.value=1,_()});function C(r){i.value=r,_(),window.scrollTo({top:0})}const x=M(()=>[...k.value.values()].sort((r,t)=>r.name.localeCompare(t.name,"pl"))),z=M(()=>!!(o.course||o.type||o.tag)),T=()=>Object.assign(o,{course:"",type:"",tag:""});return(r,t)=>{const w=q("router-link");return s(),a("div",null,[A(H,{eyebrow:"Notatki, PDF-y, linki",title:"Materiały"}),l("form",{class:"grid-2",style:{"margin-bottom":"8px"},onSubmit:t[2]||(t[2]=F(()=>{},["prevent"]))},[l("div",R,[t[7]||(t[7]=l("label",{for:"f-course"},"Przedmiot",-1)),N(l("select",{id:"f-course","onUpdate:modelValue":t[0]||(t[0]=e=>o.course=e)},[t[6]||(t[6]=l("option",{value:""},"Wszystkie",-1)),(s(!0),a(c,null,v(y(h).visibleCourses,e=>(s(),a("option",{key:e.id,value:String(e.id)},n(e.name)+" ("+n(e.form==="wyklad"?"wykład":e.form==="cwiczenia"?"ćwiczenia":e.form)+")",9,Y))),128))],512),[[B,o.course]])]),l("div",J,[t[9]||(t[9]=l("label",{for:"f-type"},"Rodzaj",-1)),N(l("select",{id:"f-type","onUpdate:modelValue":t[1]||(t[1]=e=>o.type=e)},[t[8]||(t[8]=l("option",{value:""},"Wszystkie",-1)),(s(!0),a(c,null,v(y(S),(e,p)=>(s(),a("option",{key:p,value:p},n(e),9,K))),128))],512),[[B,o.type]])])],32),x.value.length?(s(),a("div",Q,[(s(!0),a(c,null,v(x.value,e=>(s(),a("button",{key:e.slug,class:"chip",type:"button","aria-pressed":o.tag===e.slug,onClick:p=>o.tag=o.tag===e.slug?"":e.slug},n(e.name),9,X))),128))])):d("",!0),z.value?(s(),a("button",{key:1,class:"linkish small",type:"button",onClick:T},"Wyczyść filtry")):d("",!0),g.value?(s(),a("div",Z,[L(n(g.value)+" ",1),l("button",{class:"linkish",type:"button",onClick:t[3]||(t[3]=e=>_())},"Spróbuj ponownie")])):u.value?(s(),a(c,{key:4},[u.value.data.length?(s(),a("div",{key:0,class:"stack",style:{"margin-top":"12px"},"aria-busy":b.value},[(s(!0),a(c,null,v(u.value.data,e=>(s(),U(w,{key:e.id,to:`/materialy/${e.id}`,class:"card link"},{default:G(()=>[l("div",se,[l("h3",null,n(e.title),1),l("span",ae,n(y(S)[e.type]),1)]),l("p",le,[e.course?(s(),a("span",oe,n(e.course.name),1)):d("",!0),e.published_at?(s(),a("span",ne," · "+n(y(I)(e.published_at)),1)):d("",!0),e.files_count?(s(),a("span",ie," · "+n(y(O)(e.files_count,"plik","pliki","plików")),1)):d("",!0)]),e.tags.length?(s(),a("p",re,[(s(!0),a(c,null,v(e.tags,p=>(s(),a("span",{key:p.id,class:"badge",style:{"margin-right":"4px"}},n(p.name),1))),128))])):d("",!0)]),_:2},1032,["to"]))),128))],8,te)):(s(),a("p",ue,n(z.value?"Nic nie pasuje do filtrów.":"Nie ma jeszcze żadnych materiałów."),1)),u.value.meta.last_page>1?(s(),a("nav",de,[l("button",{class:"btn small",type:"button",disabled:i.value<=1,onClick:t[4]||(t[4]=e=>C(i.value-1))},"← Poprzednia",8,pe),l("span",ce,n(i.value)+" / "+n(u.value.meta.last_page),1),l("button",{class:"btn small",type:"button",disabled:i.value>=u.value.meta.last_page,onClick:t[5]||(t[5]=e=>C(i.value+1))},"Następna →",8,ve)])):d("",!0)],64)):(s(),a("div",ee,[...t[10]||(t[10]=[l("div",{class:"skeleton"},null,-1),l("div",{class:"skeleton"},null,-1)])]))])}}});export{fe as default};

View File

@@ -1 +1 @@
import{_ as h}from"./PageHead.vue_vue_type_script_setup_true_lang-Uc1EGE7y.js";import{d as k,u as _,M as b,N as z,c as o,h as i,a as t,F as w,y as g,b as n,e as f,t as l,s as v,o as s,B as j,i as P,k as x,_ as u}from"./index-6ftV598K.js";const C={class:"stack"},N={class:"row-main",style:{"align-items":"center"}},B={class:"muted small"},M={class:"row-main",style:{"align-items":"center"}},W=k({__name:"MoreView",setup(V){const r=_(),c=b(),d=z(),m=[{to:"/terminarz",label:"Terminarz",hint:"Zaliczenia, egzaminy, sprawy organizacyjne",icon:"flag"},{to:"/przedmioty",label:"Przedmioty",hint:"Program studiów, prowadzący, materiały",icon:"grad"},{to:"/materialy",label:"Materiały",hint:"Notatki, PDF-y, linki",icon:"file"},{to:"/moje-prezentacje",label:"Moje prezentacje",hint:"Wersje prelegenta i linki publiczne",icon:"slides"},{to:"/profil",label:"Profil",hint:"Dane, hasło, wybór przedmiotów",icon:"user"}],p=v(()=>d?[{to:"/pilot",label:"Pilot",hint:"Ostatnia prezentacja otwierana na tym urządzeniu",icon:"slides"},...m]:m);return($,e)=>{const y=x("router-link");return s(),o("div",null,[i(h,{eyebrow:"Pozostałe",title:"Więcej"}),t("div",C,[(s(!0),o(w,null,g(p.value,a=>(s(),j(y,{key:a.to,to:a.to,class:"card link"},{default:P(()=>[t("div",N,[t("div",null,[t("h3",null,l(a.label),1),t("span",B,l(a.hint),1)]),i(u,{name:"chevron",style:{width:"20px",height:"20px"}})])]),_:2},1032,["to"]))),128)),n(c).canInstall?(s(),o("button",{key:0,type:"button",class:"card link",onClick:e[0]||(e[0]=a=>n(c).install())},[t("div",M,[e[2]||(e[2]=t("div",null,[t("h3",null,"Zainstaluj aplikację"),t("span",{class:"muted small"},"Ikona na ekranie głównym i szybki dostęp do pilota")],-1)),i(u,{name:"chevron",style:{width:"20px",height:"20px"}})])])):f("",!0),t("button",{class:"btn miss",type:"button",onClick:e[1]||(e[1]=a=>n(r).logout())},"Wyloguj ("+l(n(r).displayName)+")",1)])])}}});export{W as default};
import{_ as h}from"./PageHead.vue_vue_type_script_setup_true_lang-BJjYuJvl.js";import{d as k,u as _,M as b,N as z,c as o,h as i,a as t,F as w,y as g,b as n,e as f,t as l,s as v,o as s,B as j,i as P,k as x,_ as u}from"./index-C9sCss04.js";const C={class:"stack"},N={class:"row-main",style:{"align-items":"center"}},B={class:"muted small"},M={class:"row-main",style:{"align-items":"center"}},W=k({__name:"MoreView",setup(V){const r=_(),c=b(),d=z(),m=[{to:"/terminarz",label:"Terminarz",hint:"Zaliczenia, egzaminy, sprawy organizacyjne",icon:"flag"},{to:"/przedmioty",label:"Przedmioty",hint:"Program studiów, prowadzący, materiały",icon:"grad"},{to:"/materialy",label:"Materiały",hint:"Notatki, PDF-y, linki",icon:"file"},{to:"/moje-prezentacje",label:"Moje prezentacje",hint:"Wersje prelegenta i linki publiczne",icon:"slides"},{to:"/profil",label:"Profil",hint:"Dane, hasło, wybór przedmiotów",icon:"user"}],p=v(()=>d?[{to:"/pilot",label:"Pilot",hint:"Ostatnia prezentacja otwierana na tym urządzeniu",icon:"slides"},...m]:m);return($,e)=>{const y=x("router-link");return s(),o("div",null,[i(h,{eyebrow:"Pozostałe",title:"Więcej"}),t("div",C,[(s(!0),o(w,null,g(p.value,a=>(s(),j(y,{key:a.to,to:a.to,class:"card link"},{default:P(()=>[t("div",N,[t("div",null,[t("h3",null,l(a.label),1),t("span",B,l(a.hint),1)]),i(u,{name:"chevron",style:{width:"20px",height:"20px"}})])]),_:2},1032,["to"]))),128)),n(c).canInstall?(s(),o("button",{key:0,type:"button",class:"card link",onClick:e[0]||(e[0]=a=>n(c).install())},[t("div",M,[e[2]||(e[2]=t("div",null,[t("h3",null,"Zainstaluj aplikację"),t("span",{class:"muted small"},"Ikona na ekranie głównym i szybki dostęp do pilota")],-1)),i(u,{name:"chevron",style:{width:"20px",height:"20px"}})])])):f("",!0),t("button",{class:"btn miss",type:"button",onClick:e[1]||(e[1]=a=>n(r).logout())},"Wyloguj ("+l(n(r).displayName)+")",1)])])}}});export{W as default};

View File

@@ -1 +1 @@
import{d as g,q as b,c as a,h as p,e as y,i as _,j as v,l as h,r as u,G as x,o as n,F as N,y as $,a as o,t as f,m as l,k as C}from"./index-6ftV598K.js";import{_ as V}from"./PageHead.vue_vue_type_script_setup_true_lang-Uc1EGE7y.js";import{_ as q}from"./LoadState.vue_vue_type_script_setup_true_lang-BIeofE0g.js";import{p as M}from"./presentations-CjVEMwWe.js";import{c as P}from"./format-bcE-cYHJ.js";const R={key:0,class:"notice error",role:"alert"},T={key:0,class:"stack"},B={class:"small muted",style:{display:"flex","flex-wrap":"wrap","align-items":"center",gap:"8px",margin:"4px 0 0"}},O={key:0,class:"badge online"},D={key:1,class:"badge"},F={style:{display:"flex","flex-wrap":"wrap",gap:"8px","margin-top":"14px"}},L=["href"],A=["href"],E={key:1,class:"muted small",style:{margin:"0"}},G={key:1,class:"empty"},Q=g({__name:"MyPresentationsView",setup(H){const c=v(),k=h(),r=u(null),i=u(""),d=u(!1);function j(t){const e=P(t.slide_count,"slajd","slajdy","slajdów");return t.total_seconds===0?e:`${e} · ${Math.round(t.total_seconds/60)} min`}function w(t){return`/moje-prezentacje/${encodeURIComponent(t)}`}async function m(){i.value="";try{r.value=await M.mine()}catch(t){r.value=null,i.value=x(t)}}return b(()=>{if(c.query.denied==="1"){d.value=!0;const t={...c.query};delete t.denied,k.replace({name:"my-presentations",query:t})}m()}),(t,e)=>{const z=C("router-link");return n(),a("div",null,[p(V,{eyebrow:"Dla prelegenta",title:"Moje prezentacje"}),d.value?(n(),a("p",R," Nie masz dostępu do tej prezentacji albo taka prezentacja nie istnieje. Poniżej są prezentacje przypisane do Twojego konta. ")):y("",!0),p(q,{ready:r.value!==null,error:i.value,onRetry:e[0]||(e[0]=s=>m())},{default:_(()=>[r.value?.length?(n(),a("div",T,[(n(!0),a(N,null,$(r.value,s=>(n(),a("article",{key:s.slug,class:"card accent"},[o("h3",null,f(s.title),1),o("p",B,[o("span",null,f(j(s)),1),s.is_published?(n(),a("span",O,"Opublikowana")):(n(),a("span",D,"Nieopublikowana"))]),o("div",F,[o("a",{class:"btn primary",href:w(s.slug),target:"_blank",rel:"opener"},[...e[1]||(e[1]=[l(" Otwórz wersję prelegenta ",-1),o("span",{class:"sr-only"},"(otwiera się w nowej karcie)",-1)])],8,L),s.is_published&&s.public_path?(n(),a("a",{key:0,class:"btn",href:s.public_path,target:"_blank",rel:"noopener noreferrer"},[...e[2]||(e[2]=[l(" Otwórz wersję publiczną ",-1),o("span",{class:"sr-only"},"(otwiera się w nowej karcie)",-1)])],8,A)):s.is_published?y("",!0):(n(),a("p",E,"Link publiczny zacznie działać po opublikowaniu prezentacji.")),p(z,{class:"btn",to:{name:"presentation-remote",params:{slug:s.slug}}},{default:_(()=>[...e[3]||(e[3]=[l(" Pilot ",-1),o("span",{class:"sr-only"},"(otwórz na telefonie)",-1)])]),_:1},8,["to"])])]))),128))])):(n(),a("p",G,[...e[4]||(e[4]=[o("span",{class:"title",style:{display:"block",color:"var(--ink)"}},"Nie masz jeszcze żadnych prezentacji.",-1),l(" Pojawią się tutaj, gdy administrator przypisze prezentację do Twojego konta. ",-1)])]))]),_:1},8,["ready","error"])])}}});export{Q as default};
import{d as g,q as b,c as a,h as p,e as y,i as _,j as v,l as h,r as u,G as x,o as n,F as N,y as $,a as o,t as f,m as l,k as C}from"./index-C9sCss04.js";import{_ as V}from"./PageHead.vue_vue_type_script_setup_true_lang-BJjYuJvl.js";import{_ as q}from"./LoadState.vue_vue_type_script_setup_true_lang-BD6A8a9g.js";import{p as M}from"./presentations-Bl3tHhv5.js";import{c as P}from"./format-bcE-cYHJ.js";const R={key:0,class:"notice error",role:"alert"},T={key:0,class:"stack"},B={class:"small muted",style:{display:"flex","flex-wrap":"wrap","align-items":"center",gap:"8px",margin:"4px 0 0"}},O={key:0,class:"badge online"},D={key:1,class:"badge"},F={style:{display:"flex","flex-wrap":"wrap",gap:"8px","margin-top":"14px"}},L=["href"],A=["href"],E={key:1,class:"muted small",style:{margin:"0"}},G={key:1,class:"empty"},Q=g({__name:"MyPresentationsView",setup(H){const c=v(),k=h(),r=u(null),i=u(""),d=u(!1);function j(t){const e=P(t.slide_count,"slajd","slajdy","slajdów");return t.total_seconds===0?e:`${e} · ${Math.round(t.total_seconds/60)} min`}function w(t){return`/moje-prezentacje/${encodeURIComponent(t)}`}async function m(){i.value="";try{r.value=await M.mine()}catch(t){r.value=null,i.value=x(t)}}return b(()=>{if(c.query.denied==="1"){d.value=!0;const t={...c.query};delete t.denied,k.replace({name:"my-presentations",query:t})}m()}),(t,e)=>{const z=C("router-link");return n(),a("div",null,[p(V,{eyebrow:"Dla prelegenta",title:"Moje prezentacje"}),d.value?(n(),a("p",R," Nie masz dostępu do tej prezentacji albo taka prezentacja nie istnieje. Poniżej są prezentacje przypisane do Twojego konta. ")):y("",!0),p(q,{ready:r.value!==null,error:i.value,onRetry:e[0]||(e[0]=s=>m())},{default:_(()=>[r.value?.length?(n(),a("div",T,[(n(!0),a(N,null,$(r.value,s=>(n(),a("article",{key:s.slug,class:"card accent"},[o("h3",null,f(s.title),1),o("p",B,[o("span",null,f(j(s)),1),s.is_published?(n(),a("span",O,"Opublikowana")):(n(),a("span",D,"Nieopublikowana"))]),o("div",F,[o("a",{class:"btn primary",href:w(s.slug),target:"_blank",rel:"opener"},[...e[1]||(e[1]=[l(" Otwórz wersję prelegenta ",-1),o("span",{class:"sr-only"},"(otwiera się w nowej karcie)",-1)])],8,L),s.is_published&&s.public_path?(n(),a("a",{key:0,class:"btn",href:s.public_path,target:"_blank",rel:"noopener noreferrer"},[...e[2]||(e[2]=[l(" Otwórz wersję publiczną ",-1),o("span",{class:"sr-only"},"(otwiera się w nowej karcie)",-1)])],8,A)):s.is_published?y("",!0):(n(),a("p",E,"Link publiczny zacznie działać po opublikowaniu prezentacji.")),p(z,{class:"btn",to:{name:"presentation-remote",params:{slug:s.slug}}},{default:_(()=>[...e[3]||(e[3]=[l(" Pilot ",-1),o("span",{class:"sr-only"},"(otwórz na telefonie)",-1)])]),_:1},8,["to"])])]))),128))])):(n(),a("p",G,[...e[4]||(e[4]=[o("span",{class:"title",style:{display:"block",color:"var(--ink)"}},"Nie masz jeszcze żadnych prezentacji.",-1),l(" Pojawią się tutaj, gdy administrator przypisze prezentację do Twojego konta. ",-1)])]))]),_:1},8,["ready","error"])])}}});export{Q as default};

View File

@@ -1 +1 @@
import{_ as s}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as a,c as r,a as t,h as n,i as l,m as c,k as i}from"./index-6ftV598K.js";const d={},p={class:"stack"};function _(m,e){const o=i("router-link");return a(),r("div",p,[e[1]||(e[1]=t("header",{class:"page-head"},[t("span",{class:"eyebrow"},"404"),t("h1",null,"Nie ma takiej strony")],-1)),t("p",null,[n(o,{to:"/"},{default:l(()=>[...e[0]||(e[0]=[c("Wróć na pulpit",-1)])]),_:1})])])}const k=s(d,[["render",_]]);export{k as default};
import{_ as s}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as a,c as r,a as t,h as n,i as l,m as c,k as i}from"./index-C9sCss04.js";const d={},p={class:"stack"};function _(m,e){const o=i("router-link");return a(),r("div",p,[e[1]||(e[1]=t("header",{class:"page-head"},[t("span",{class:"eyebrow"},"404"),t("h1",null,"Nie ma takiej strony")],-1)),t("p",null,[n(o,{to:"/"},{default:l(()=>[...e[0]||(e[0]=[c("Wróć na pulpit",-1)])]),_:1})])])}const k=s(d,[["render",_]]);export{k as default};

View File

@@ -1 +1 @@
import{d as r,c as s,t as o,e as c,a as t,T as d,o as a}from"./index-6ftV598K.js";const l={class:"page-head"},i={key:0,class:"eyebrow"},_={class:"row"},h={class:"btn-row"},u=r({__name:"PageHead",props:{eyebrow:{},title:{}},setup(e){return(n,m)=>(a(),s("header",l,[e.eyebrow?(a(),s("span",i,o(e.eyebrow),1)):c("",!0),t("div",_,[t("h1",null,o(e.title),1),t("div",h,[d(n.$slots,"default")])])]))}});export{u as _};
import{d as r,c as s,t as o,e as c,a as t,T as d,o as a}from"./index-C9sCss04.js";const l={class:"page-head"},i={key:0,class:"eyebrow"},_={class:"row"},h={class:"btn-row"},u=r({__name:"PageHead",props:{eyebrow:{},title:{}},setup(e){return(n,m)=>(a(),s("header",l,[e.eyebrow?(a(),s("span",i,o(e.eyebrow),1)):c("",!0),t("div",_,[t("h1",null,o(e.title),1),t("div",h,[d(n.$slots,"default")])])]))}});export{u as _};

View File

@@ -1 +1 @@
import{d as h,A as k,q as b,U as g,B as w,r as u,o as _,S as l}from"./index-6ftV598K.js";import{p as y}from"./presentations-CjVEMwWe.js";import{_ as E}from"./DeckViewer.vue_vue_type_style_index_0_lang-CXtb2FFQ.js";/* empty css */const x="Sprawdź połączenie z internetem i spróbuj ponownie.",z="Za dużo żądań w krótkim czasie. Odczekaj minutę i spróbuj ponownie.",j="Prezentacja · BM II°",T=h({__name:"PresentationPublicView",props:{slugHash:{}},setup(f){const d=f,n=u("pending"),a=u(null),o=u("");let s=0,r=0;function c(){s&&window.clearTimeout(s),s=0}async function m(t){const i=++r;c(),document.title=j,n.value="pending",a.value=null,o.value="",s=window.setTimeout(()=>{i===r&&n.value==="pending"&&(n.value="loading")},200);try{const e=await y.publicDeck(t);if(i!==r)return;c();const p=e.slides??[];a.value={...e,slides:p},e.title&&(document.title=e.title),n.value=p.length===0?"empty":"ready"}catch(e){if(i!==r)return;if(c(),e instanceof l&&e.status===404){n.value="notfound";return}e instanceof l&&e.status===429?o.value=z:e instanceof l&&e.message?o.value=e.message:o.value=x,n.value="error"}}function v(){m(d.slugHash)}return k(()=>d.slugHash,t=>{m(t)},{immediate:!0}),b(()=>{if(document.documentElement.classList.add("deck-public"),!document.querySelector('meta[data-deck-public="1"]')){const t=document.createElement("meta");t.name="robots",t.content="noindex",t.dataset.deckPublic="1",document.head.appendChild(t)}}),g(()=>{r+=1,c(),document.documentElement.classList.remove("deck-public"),document.querySelector('meta[data-deck-public="1"]')?.remove()}),(t,i)=>(_(),w(E,{phase:n.value,deck:a.value,error:o.value,"extra-css":a.value?.css,theme:a.value?.theme,onRetry:v},null,8,["phase","deck","error","extra-css","theme"]))}});export{T as default};
import{d as h,A as k,q as b,U as g,B as w,r as u,o as _,S as l}from"./index-C9sCss04.js";import{p as y}from"./presentations-Bl3tHhv5.js";import{_ as E}from"./DeckViewer.vue_vue_type_style_index_0_lang-BctIkfAq.js";/* empty css */const x="Sprawdź połączenie z internetem i spróbuj ponownie.",z="Za dużo żądań w krótkim czasie. Odczekaj minutę i spróbuj ponownie.",j="Prezentacja · BM II°",T=h({__name:"PresentationPublicView",props:{slugHash:{}},setup(f){const d=f,n=u("pending"),a=u(null),o=u("");let s=0,r=0;function c(){s&&window.clearTimeout(s),s=0}async function m(t){const i=++r;c(),document.title=j,n.value="pending",a.value=null,o.value="",s=window.setTimeout(()=>{i===r&&n.value==="pending"&&(n.value="loading")},200);try{const e=await y.publicDeck(t);if(i!==r)return;c();const p=e.slides??[];a.value={...e,slides:p},e.title&&(document.title=e.title),n.value=p.length===0?"empty":"ready"}catch(e){if(i!==r)return;if(c(),e instanceof l&&e.status===404){n.value="notfound";return}e instanceof l&&e.status===429?o.value=z:e instanceof l&&e.message?o.value=e.message:o.value=x,n.value="error"}}function v(){m(d.slugHash)}return k(()=>d.slugHash,t=>{m(t)},{immediate:!0}),b(()=>{if(document.documentElement.classList.add("deck-public"),!document.querySelector('meta[data-deck-public="1"]')){const t=document.createElement("meta");t.name="robots",t.content="noindex",t.dataset.deckPublic="1",document.head.appendChild(t)}}),g(()=>{r+=1,c(),document.documentElement.classList.remove("deck-public"),document.querySelector('meta[data-deck-public="1"]')?.remove()}),(t,i)=>(_(),w(E,{phase:n.value,deck:a.value,error:o.value,"extra-css":a.value?.css,theme:a.value?.theme,onRetry:v},null,8,["phase","deck","error","extra-css","theme"]))}});export{T as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
import{_ as g}from"./PageHead.vue_vue_type_script_setup_true_lang-Uc1EGE7y.js";import{_ as w}from"./LoadState.vue_vue_type_script_setup_true_lang-BIeofE0g.js";import{q as z,_ as x}from"./quizzes-CoOLwfmG.js";import{d as j,q as B,c as s,h as d,i as k,r as m,G as N,o as t,F as p,y as V,B as $,a as o,t as n,e as l,m as _,b as h,k as b}from"./index-6ftV598K.js";import{c as f}from"./format-bcE-cYHJ.js";const C={key:0,class:"stack"},F={key:0,class:"muted small",style:{margin:"0 0 8px"}},Q={class:"small",style:{margin:"0"}},T={key:1,class:"empty"},A={key:2,class:"section","aria-labelledby":"hist-h"},D={class:"card"},R=j({__name:"QuizzesView",setup(E){const i=m(null),c=m([]),u=m("");async function y(){u.value="";try{const[r,a]=await Promise.all([z.list(),z.attempts()]);i.value=r,c.value=a.data}catch(r){u.value=N(r)}}return B(y),(r,a)=>{const v=b("router-link");return t(),s("div",null,[d(g,{eyebrow:"Fiszki i testy",title:"Quizy"}),d(w,{ready:i.value!==null,error:u.value,onRetry:a[0]||(a[0]=e=>y())},{default:k(()=>[i.value?.length?(t(),s("div",C,[(t(!0),s(p,null,V(i.value,e=>(t(),$(v,{key:e.id,to:`/quizy/${e.slug}`,class:"card link accent"},{default:k(()=>[o("h3",null,n(e.title),1),e.description?(t(),s("p",F,n(e.description),1)):l("",!0),o("p",Q,[_(n(h(f)(e.question_count,"pytanie","pytania","pytań")),1),e.round_size?(t(),s(p,{key:0},[_(" · rundy po "+n(e.round_size),1)],64)):l("",!0),e.attempts_count?(t(),s(p,{key:1},[_(" · "+n(h(f)(e.attempts_count,"zakończone podejście","zakończone podejścia","zakończonych podejść")),1)],64)):l("",!0)])]),_:2},1032,["to"]))),128))])):(t(),s("p",T,"Nie ma jeszcze żadnych quizów.")),c.value.length?(t(),s("section",A,[a[1]||(a[1]=o("div",{class:"section-head"},[o("h2",{id:"hist-h"},"Historia podejść")],-1)),o("div",D,[d(x,{attempts:c.value,"show-quiz":""},null,8,["attempts"])])])):l("",!0)]),_:1},8,["ready","error"])])}}});export{R as default};
import{_ as g}from"./PageHead.vue_vue_type_script_setup_true_lang-BJjYuJvl.js";import{_ as w}from"./LoadState.vue_vue_type_script_setup_true_lang-BD6A8a9g.js";import{q as z,_ as x}from"./quizzes-av2RLNrx.js";import{d as j,q as B,c as s,h as d,i as k,r as m,G as N,o as t,F as p,y as V,B as $,a as o,t as n,e as l,m as _,b as h,k as b}from"./index-C9sCss04.js";import{c as f}from"./format-bcE-cYHJ.js";const C={key:0,class:"stack"},F={key:0,class:"muted small",style:{margin:"0 0 8px"}},Q={class:"small",style:{margin:"0"}},T={key:1,class:"empty"},A={key:2,class:"section","aria-labelledby":"hist-h"},D={class:"card"},R=j({__name:"QuizzesView",setup(E){const i=m(null),c=m([]),u=m("");async function y(){u.value="";try{const[r,a]=await Promise.all([z.list(),z.attempts()]);i.value=r,c.value=a.data}catch(r){u.value=N(r)}}return B(y),(r,a)=>{const v=b("router-link");return t(),s("div",null,[d(g,{eyebrow:"Fiszki i testy",title:"Quizy"}),d(w,{ready:i.value!==null,error:u.value,onRetry:a[0]||(a[0]=e=>y())},{default:k(()=>[i.value?.length?(t(),s("div",C,[(t(!0),s(p,null,V(i.value,e=>(t(),$(v,{key:e.id,to:`/quizy/${e.slug}`,class:"card link accent"},{default:k(()=>[o("h3",null,n(e.title),1),e.description?(t(),s("p",F,n(e.description),1)):l("",!0),o("p",Q,[_(n(h(f)(e.question_count,"pytanie","pytania","pytań")),1),e.round_size?(t(),s(p,{key:0},[_(" · rundy po "+n(e.round_size),1)],64)):l("",!0),e.attempts_count?(t(),s(p,{key:1},[_(" · "+n(h(f)(e.attempts_count,"zakończone podejście","zakończone podejścia","zakończonych podejść")),1)],64)):l("",!0)])]),_:2},1032,["to"]))),128))])):(t(),s("p",T,"Nie ma jeszcze żadnych quizów.")),c.value.length?(t(),s("section",A,[a[1]||(a[1]=o("div",{class:"section-head"},[o("h2",{id:"hist-h"},"Historia podejść")],-1)),o("div",D,[d(x,{attempts:c.value,"show-quiz":""},null,8,["attempts"])])])):l("",!0)]),_:1},8,["ready","error"])])}}});export{R as default};

View File

@@ -1 +1 @@
import{i as d}from"./format-bcE-cYHJ.js";import{d as c,o as a,c as t,a as n,m as g,t as r,e as i,b as m}from"./index-6ftV598K.js";const u={class:"reading"},h=["checked"],k={class:"text"},f={key:0,class:"muted"},b={key:1,class:"muted mono"},y=["href","aria-label"],z=c({__name:"ReadingItem",props:{reading:{}},emits:["toggle"],setup(e){return(o,l)=>(a(),t("li",u,[n("label",null,[n("input",{type:"checkbox",checked:!!e.reading.read_at,onChange:l[0]||(l[0]=s=>o.$emit("toggle",s.target.checked))},null,40,h),n("span",k,[g(r(e.reading.title)+" ",1),e.reading.author||e.reading.source?(a(),t("small",f," · "+r([e.reading.author,e.reading.source].filter(Boolean).join(", ")),1)):i("",!0),e.reading.read_at?(a(),t("small",b," · przeczytano "+r(m(d)(e.reading.read_at)),1)):i("",!0)])]),e.reading.url?(a(),t("a",{key:0,href:e.reading.url,target:"_blank",rel:"noopener noreferrer",class:"small","aria-label":`Otwórz: ${e.reading.title}`},"link",8,y)):i("",!0)]))}});export{z as _};
import{i as d}from"./format-bcE-cYHJ.js";import{d as c,o as a,c as t,a as n,m as g,t as r,e as i,b as m}from"./index-C9sCss04.js";const u={class:"reading"},h=["checked"],k={class:"text"},f={key:0,class:"muted"},b={key:1,class:"muted mono"},y=["href","aria-label"],z=c({__name:"ReadingItem",props:{reading:{}},emits:["toggle"],setup(e){return(o,l)=>(a(),t("li",u,[n("label",null,[n("input",{type:"checkbox",checked:!!e.reading.read_at,onChange:l[0]||(l[0]=s=>o.$emit("toggle",s.target.checked))},null,40,h),n("span",k,[g(r(e.reading.title)+" ",1),e.reading.author||e.reading.source?(a(),t("small",f," · "+r([e.reading.author,e.reading.source].filter(Boolean).join(", ")),1)):i("",!0),e.reading.read_at?(a(),t("small",b," · przeczytano "+r(m(d)(e.reading.read_at)),1)):i("",!0)])]),e.reading.url?(a(),t("a",{key:0,href:e.reading.url,target:"_blank",rel:"noopener noreferrer",class:"small","aria-label":`Otwórz: ${e.reading.title}`},"link",8,y)):i("",!0)]))}});export{z as _};

View File

@@ -1 +1 @@
import{_ as q}from"./PageHead.vue_vue_type_script_setup_true_lang-Uc1EGE7y.js";import{_ as x}from"./LoadState.vue_vue_type_script_setup_true_lang-BIeofE0g.js";import{_ as T}from"./ElectiveBar.vue_vue_type_script_setup_true_lang-XRL0DVZI.js";import{_ as b}from"./ReadingItem.vue_vue_type_script_setup_true_lang-BOERUIof.js";import{d as $,p as B,q as R,c as l,h as m,i as w,b as i,o as n,a as t,t as r,z as C,F as _,y as h,e as g,r as V,s as v,k as F,m as L,B as z}from"./index-6ftV598K.js";import{c as M,F as N}from"./format-bcE-cYHJ.js";const S={class:"card","aria-label":"Postęp czytania"},D={style:{margin:"0 0 8px"}},P={class:"big-num nums"},E={class:"muted"},O={class:"muted small"},j=["aria-valuenow"],A={class:"chips wrap",style:{"margin-top":"12px"}},G=["aria-pressed"],I=["aria-labelledby"],U={class:"section-head"},W=["id"],H={class:"badge",style:{"margin-left":"8px"}},J={class:"muted small nums"},K={class:"subhead"},Q={class:"rows"},X={class:"subhead"},Y={class:"rows"},Z={key:0,class:"empty",style:{"margin-top":"16px"}},le=$({__name:"ReadingsView",setup(ee){const s=B(),c=V(!1);R(()=>{Promise.all([s.loadReadings(),s.loadCourses()])});const f=v(()=>{const p=new Map;for(const o of s.readings)p.set(o.course_id,[...p.get(o.course_id)??[],o]);const u=o=>s.courseById.get(o)?.sort_order??0;return[...p].sort(([o],[e])=>u(o)-u(e)).map(([,o])=>{const e=c.value?o.filter(a=>!a.read_at):o;return{course:o[0].course,required:e.filter(a=>a.is_required),optional:e.filter(a=>!a.is_required),read:o.filter(a=>a.read_at).length,total:o.length}}).filter(o=>o.required.length+o.optional.length>0)}),d=v(()=>s.readingStats),k=v(()=>d.value.requiredTotal?Math.round(d.value.requiredRead/d.value.requiredTotal*100):0);return(p,u)=>{const o=F("router-link");return n(),l("div",null,[m(q,{eyebrow:"Do przeczytania",title:"Lektury"}),m(x,{ready:i(s).loaded.readings&&i(s).loaded.courses,error:i(s).error,onRetry:u[1]||(u[1]=e=>i(s).retry())},{default:w(()=>[m(T),t("section",S,[t("p",D,[t("span",P,r(d.value.requiredRead),1),t("span",E," z "+r(d.value.requiredTotal)+" obowiązkowych",1),t("span",O," · łącznie "+r(d.value.read)+" z "+r(d.value.total),1)]),t("div",{class:"progress-bar",role:"progressbar","aria-valuenow":k.value,"aria-valuemin":"0","aria-valuemax":"100","aria-label":"Przeczytane lektury obowiązkowe"},[t("span",{style:C({width:k.value+"%"})},null,4)],8,j)]),t("div",A,[t("button",{class:"chip",type:"button","aria-pressed":c.value,onClick:u[0]||(u[0]=e=>c.value=!c.value)},"Tylko nieprzeczytane",8,G)]),(n(!0),l(_,null,h(f.value,e=>(n(),l("section",{key:e.course.id,class:"section","aria-labelledby":`c${e.course.id}`},[t("div",U,[t("h2",{id:`c${e.course.id}`},[m(o,{to:`/przedmioty/${e.course.id}`,style:{color:"inherit","text-decoration":"none"}},{default:w(()=>[L(r(e.course.name),1)]),_:2},1032,["to"]),t("span",H,r(i(N)[e.course.form]),1)],8,W),t("span",J,r(e.read)+"/"+r(e.total),1)]),e.required.length?(n(),l(_,{key:0},[t("h3",K,"Obowiązkowe · "+r(e.required.length),1),t("ul",Q,[(n(!0),l(_,null,h(e.required,a=>(n(),z(b,{key:a.id,reading:a,onToggle:y=>i(s).toggleReading(a.id,y)},null,8,["reading","onToggle"]))),128))])],64)):g("",!0),e.optional.length?(n(),l(_,{key:1},[t("h3",X,"Dodatkowe · "+r(e.optional.length),1),t("ul",Y,[(n(!0),l(_,null,h(e.optional,a=>(n(),z(b,{key:a.id,reading:a,onToggle:y=>i(s).toggleReading(a.id,y)},null,8,["reading","onToggle"]))),128))])],64)):g("",!0)],8,I))),128)),f.value.length?g("",!0):(n(),l("p",Z,r(c.value?"Wszystko przeczytane. Gratulacje!":i(M)(0,"lektura","lektury","lektur")+" do wyświetlenia."),1))]),_:1},8,["ready","error"])])}}});export{le as default};
import{_ as q}from"./PageHead.vue_vue_type_script_setup_true_lang-BJjYuJvl.js";import{_ as x}from"./LoadState.vue_vue_type_script_setup_true_lang-BD6A8a9g.js";import{_ as T}from"./ElectiveBar.vue_vue_type_script_setup_true_lang-DkaaDTFx.js";import{_ as b}from"./ReadingItem.vue_vue_type_script_setup_true_lang-CJzr1aQp.js";import{d as $,p as B,q as R,c as l,h as m,i as w,b as i,o as n,a as t,t as r,z as C,F as _,y as h,e as g,r as V,s as v,k as F,m as L,B as z}from"./index-C9sCss04.js";import{c as M,F as N}from"./format-bcE-cYHJ.js";const S={class:"card","aria-label":"Postęp czytania"},D={style:{margin:"0 0 8px"}},P={class:"big-num nums"},E={class:"muted"},O={class:"muted small"},j=["aria-valuenow"],A={class:"chips wrap",style:{"margin-top":"12px"}},G=["aria-pressed"],I=["aria-labelledby"],U={class:"section-head"},W=["id"],H={class:"badge",style:{"margin-left":"8px"}},J={class:"muted small nums"},K={class:"subhead"},Q={class:"rows"},X={class:"subhead"},Y={class:"rows"},Z={key:0,class:"empty",style:{"margin-top":"16px"}},le=$({__name:"ReadingsView",setup(ee){const s=B(),c=V(!1);R(()=>{Promise.all([s.loadReadings(),s.loadCourses()])});const f=v(()=>{const p=new Map;for(const o of s.readings)p.set(o.course_id,[...p.get(o.course_id)??[],o]);const u=o=>s.courseById.get(o)?.sort_order??0;return[...p].sort(([o],[e])=>u(o)-u(e)).map(([,o])=>{const e=c.value?o.filter(a=>!a.read_at):o;return{course:o[0].course,required:e.filter(a=>a.is_required),optional:e.filter(a=>!a.is_required),read:o.filter(a=>a.read_at).length,total:o.length}}).filter(o=>o.required.length+o.optional.length>0)}),d=v(()=>s.readingStats),k=v(()=>d.value.requiredTotal?Math.round(d.value.requiredRead/d.value.requiredTotal*100):0);return(p,u)=>{const o=F("router-link");return n(),l("div",null,[m(q,{eyebrow:"Do przeczytania",title:"Lektury"}),m(x,{ready:i(s).loaded.readings&&i(s).loaded.courses,error:i(s).error,onRetry:u[1]||(u[1]=e=>i(s).retry())},{default:w(()=>[m(T),t("section",S,[t("p",D,[t("span",P,r(d.value.requiredRead),1),t("span",E," z "+r(d.value.requiredTotal)+" obowiązkowych",1),t("span",O," · łącznie "+r(d.value.read)+" z "+r(d.value.total),1)]),t("div",{class:"progress-bar",role:"progressbar","aria-valuenow":k.value,"aria-valuemin":"0","aria-valuemax":"100","aria-label":"Przeczytane lektury obowiązkowe"},[t("span",{style:C({width:k.value+"%"})},null,4)],8,j)]),t("div",A,[t("button",{class:"chip",type:"button","aria-pressed":c.value,onClick:u[0]||(u[0]=e=>c.value=!c.value)},"Tylko nieprzeczytane",8,G)]),(n(!0),l(_,null,h(f.value,e=>(n(),l("section",{key:e.course.id,class:"section","aria-labelledby":`c${e.course.id}`},[t("div",U,[t("h2",{id:`c${e.course.id}`},[m(o,{to:`/przedmioty/${e.course.id}`,style:{color:"inherit","text-decoration":"none"}},{default:w(()=>[L(r(e.course.name),1)]),_:2},1032,["to"]),t("span",H,r(i(N)[e.course.form]),1)],8,W),t("span",J,r(e.read)+"/"+r(e.total),1)]),e.required.length?(n(),l(_,{key:0},[t("h3",K,"Obowiązkowe · "+r(e.required.length),1),t("ul",Q,[(n(!0),l(_,null,h(e.required,a=>(n(),z(b,{key:a.id,reading:a,onToggle:y=>i(s).toggleReading(a.id,y)},null,8,["reading","onToggle"]))),128))])],64)):g("",!0),e.optional.length?(n(),l(_,{key:1},[t("h3",X,"Dodatkowe · "+r(e.optional.length),1),t("ul",Y,[(n(!0),l(_,null,h(e.optional,a=>(n(),z(b,{key:a.id,reading:a,onToggle:y=>i(s).toggleReading(a.id,y)},null,8,["reading","onToggle"]))),128))])],64)):g("",!0)],8,I))),128)),f.value.length?g("",!0):(n(),l("p",Z,r(c.value?"Wszystko przeczytane. Gratulacje!":i(M)(0,"lektura","lektury","lektur")+" do wyświetlenia."),1))]),_:1},8,["ready","error"])])}}});export{le as default};

View File

@@ -1 +1 @@
import{d as q,u as N,c as o,a as s,t as n,h as _,i as g,g as B,e as u,w as d,v as m,r as l,k as C,o as i,m as x,l as I}from"./index-6ftV598K.js";import{f as M}from"./forms-Dmkusc1J.js";const h={class:"auth"},j={key:0,class:"stack"},S={class:"notice",role:"status"},Z={key:0,class:"notice error",role:"alert",style:{"margin-bottom":"14px"}},A={class:"field"},D={key:0,class:"error-text"},E={class:"field"},P={key:0,class:"error-text"},R={class:"field"},T={key:0,class:"error-text"},H={class:"field"},K={key:0,class:"error-text"},W={class:"field"},F=["disabled"],G={class:"auth-links"},Q=q({__name:"RegisterView",setup(J){const V=N(),z=I(),v=l(""),f=l(""),w=l(""),c=l(""),y=l(""),p=l(!1),t=l(null),k=l("");async function U(){p.value=!0,t.value=null;try{const r=await V.register({name:v.value.trim(),surname:f.value.trim(),email:w.value.trim(),password:c.value,password_confirmation:y.value},!0);r.signedIn?await z.replace("/"):k.value=r.message||"Konto zostało utworzone. Sprawdź pocztę, aby je aktywować."}catch(r){t.value=M(r)}finally{p.value=!1}}return(r,e)=>{const b=C("router-link");return i(),o("div",h,[e[12]||(e[12]=s("header",{class:"page-head"},[s("span",{class:"eyebrow"},"BM II° · UWr"),s("h1",null,"Załóż konto")],-1)),k.value?(i(),o("div",j,[s("p",S,n(k.value),1),_(b,{class:"btn",to:"/logowanie"},{default:g(()=>[...e[5]||(e[5]=[x("Przejdź do logowania",-1)])]),_:1})])):(i(),o("form",{key:1,onSubmit:B(U,["prevent"]),novalidate:""},[t.value?.message?(i(),o("div",Z,n(t.value.message),1)):u("",!0),s("div",A,[e[6]||(e[6]=s("label",{for:"name"},"Imię",-1)),d(s("input",{id:"name","onUpdate:modelValue":e[0]||(e[0]=a=>v.value=a),type:"text",autocomplete:"given-name",required:""},null,512),[[m,v.value]]),t.value?.fields.name?(i(),o("p",D,n(t.value.fields.name),1)):u("",!0)]),s("div",E,[e[7]||(e[7]=s("label",{for:"surname"},"Nazwisko",-1)),d(s("input",{id:"surname","onUpdate:modelValue":e[1]||(e[1]=a=>f.value=a),type:"text",autocomplete:"family-name",required:""},null,512),[[m,f.value]]),t.value?.fields.surname?(i(),o("p",P,n(t.value.fields.surname),1)):u("",!0)]),s("div",R,[e[8]||(e[8]=s("label",{for:"email"},"Adres e-mail",-1)),d(s("input",{id:"email","onUpdate:modelValue":e[2]||(e[2]=a=>w.value=a),type:"email",autocomplete:"email",inputmode:"email",required:""},null,512),[[m,w.value]]),t.value?.fields.email?(i(),o("p",T,n(t.value.fields.email),1)):u("",!0)]),s("div",H,[e[9]||(e[9]=s("label",{for:"password"},"Hasło (min. 8 znaków)",-1)),d(s("input",{id:"password","onUpdate:modelValue":e[3]||(e[3]=a=>c.value=a),type:"password",autocomplete:"new-password",required:""},null,512),[[m,c.value]]),t.value?.fields.password?(i(),o("p",K,n(t.value.fields.password),1)):u("",!0)]),s("div",W,[e[10]||(e[10]=s("label",{for:"confirmation"},"Powtórz hasło",-1)),d(s("input",{id:"confirmation","onUpdate:modelValue":e[4]||(e[4]=a=>y.value=a),type:"password",autocomplete:"new-password",required:""},null,512),[[m,y.value]])]),s("button",{class:"btn primary block",type:"submit",disabled:p.value},n(p.value?"Zakładanie…":"Załóż konto"),9,F)],32)),s("div",G,[_(b,{to:"/logowanie"},{default:g(()=>[...e[11]||(e[11]=[x("Mam już konto",-1)])]),_:1})])])}}});export{Q as default};
import{d as q,u as N,c as o,a as s,t as n,h as _,i as g,g as B,e as u,w as d,v as m,r as l,k as C,o as i,m as x,l as I}from"./index-C9sCss04.js";import{f as M}from"./forms-BPOK5alr.js";const h={class:"auth"},j={key:0,class:"stack"},S={class:"notice",role:"status"},Z={key:0,class:"notice error",role:"alert",style:{"margin-bottom":"14px"}},A={class:"field"},D={key:0,class:"error-text"},E={class:"field"},P={key:0,class:"error-text"},R={class:"field"},T={key:0,class:"error-text"},H={class:"field"},K={key:0,class:"error-text"},W={class:"field"},F=["disabled"],G={class:"auth-links"},Q=q({__name:"RegisterView",setup(J){const V=N(),z=I(),v=l(""),f=l(""),w=l(""),c=l(""),y=l(""),p=l(!1),t=l(null),k=l("");async function U(){p.value=!0,t.value=null;try{const r=await V.register({name:v.value.trim(),surname:f.value.trim(),email:w.value.trim(),password:c.value,password_confirmation:y.value},!0);r.signedIn?await z.replace("/"):k.value=r.message||"Konto zostało utworzone. Sprawdź pocztę, aby je aktywować."}catch(r){t.value=M(r)}finally{p.value=!1}}return(r,e)=>{const b=C("router-link");return i(),o("div",h,[e[12]||(e[12]=s("header",{class:"page-head"},[s("span",{class:"eyebrow"},"BM II° · UWr"),s("h1",null,"Załóż konto")],-1)),k.value?(i(),o("div",j,[s("p",S,n(k.value),1),_(b,{class:"btn",to:"/logowanie"},{default:g(()=>[...e[5]||(e[5]=[x("Przejdź do logowania",-1)])]),_:1})])):(i(),o("form",{key:1,onSubmit:B(U,["prevent"]),novalidate:""},[t.value?.message?(i(),o("div",Z,n(t.value.message),1)):u("",!0),s("div",A,[e[6]||(e[6]=s("label",{for:"name"},"Imię",-1)),d(s("input",{id:"name","onUpdate:modelValue":e[0]||(e[0]=a=>v.value=a),type:"text",autocomplete:"given-name",required:""},null,512),[[m,v.value]]),t.value?.fields.name?(i(),o("p",D,n(t.value.fields.name),1)):u("",!0)]),s("div",E,[e[7]||(e[7]=s("label",{for:"surname"},"Nazwisko",-1)),d(s("input",{id:"surname","onUpdate:modelValue":e[1]||(e[1]=a=>f.value=a),type:"text",autocomplete:"family-name",required:""},null,512),[[m,f.value]]),t.value?.fields.surname?(i(),o("p",P,n(t.value.fields.surname),1)):u("",!0)]),s("div",R,[e[8]||(e[8]=s("label",{for:"email"},"Adres e-mail",-1)),d(s("input",{id:"email","onUpdate:modelValue":e[2]||(e[2]=a=>w.value=a),type:"email",autocomplete:"email",inputmode:"email",required:""},null,512),[[m,w.value]]),t.value?.fields.email?(i(),o("p",T,n(t.value.fields.email),1)):u("",!0)]),s("div",H,[e[9]||(e[9]=s("label",{for:"password"},"Hasło (min. 8 znaków)",-1)),d(s("input",{id:"password","onUpdate:modelValue":e[3]||(e[3]=a=>c.value=a),type:"password",autocomplete:"new-password",required:""},null,512),[[m,c.value]]),t.value?.fields.password?(i(),o("p",K,n(t.value.fields.password),1)):u("",!0)]),s("div",W,[e[10]||(e[10]=s("label",{for:"confirmation"},"Powtórz hasło",-1)),d(s("input",{id:"confirmation","onUpdate:modelValue":e[4]||(e[4]=a=>y.value=a),type:"password",autocomplete:"new-password",required:""},null,512),[[m,y.value]])]),s("button",{class:"btn primary block",type:"submit",disabled:p.value},n(p.value?"Zakładanie…":"Załóż konto"),9,F)],32)),s("div",G,[_(b,{to:"/logowanie"},{default:g(()=>[...e[11]||(e[11]=[x("Mam już konto",-1)])]),_:1})])])}}});export{Q as default};

View File

@@ -1 +1 @@
import{d as _,r as t,c as a,a as o,h as g,i as x,g as V,t as m,e as v,b as q,w as c,v as f,j as z,k as N,o as l,m as h,n as B}from"./index-6ftV598K.js";import{f as C}from"./forms-Dmkusc1J.js";const U={class:"auth"},M={key:0,class:"stack"},Z={key:0,class:"notice error",role:"alert",style:{"margin-bottom":"14px"}},j={key:1,class:"field"},D={class:"field"},E={key:0,class:"error-text"},I={class:"field"},P=["disabled"],A=_({__name:"ResetView",setup(R){const u=z(),i=t(typeof u.query.code=="string"?u.query.code:""),n=t(""),p=t(""),d=t(!1),w=t(!1),s=t(null);async function b(){d.value=!0,s.value=null;try{await B.resetPassword({code:i.value.trim(),password:n.value,password_confirmation:p.value}),w.value=!0}catch(y){s.value=C(y)}finally{d.value=!1}}return(y,e)=>{const k=N("router-link");return l(),a("div",U,[e[8]||(e[8]=o("header",{class:"page-head"},[o("span",{class:"eyebrow"},"BM II° · UWr"),o("h1",null,"Nowe hasło")],-1)),w.value?(l(),a("div",M,[e[4]||(e[4]=o("p",{class:"notice",role:"status"},"Hasło zostało zmienione.",-1)),g(k,{class:"btn primary",to:"/logowanie"},{default:x(()=>[...e[3]||(e[3]=[h("Zaloguj się",-1)])]),_:1})])):(l(),a("form",{key:1,onSubmit:V(b,["prevent"]),novalidate:""},[s.value?.message?(l(),a("div",Z,m(s.value.message),1)):v("",!0),q(u).query.code?v("",!0):(l(),a("div",j,[e[5]||(e[5]=o("label",{for:"code"},"Kod z wiadomości",-1)),c(o("input",{id:"code","onUpdate:modelValue":e[0]||(e[0]=r=>i.value=r),type:"text",autocomplete:"one-time-code",required:""},null,512),[[f,i.value]])])),o("div",D,[e[6]||(e[6]=o("label",{for:"password"},"Nowe hasło (min. 8 znaków)",-1)),c(o("input",{id:"password","onUpdate:modelValue":e[1]||(e[1]=r=>n.value=r),type:"password",autocomplete:"new-password",required:""},null,512),[[f,n.value]]),s.value?.fields.password?(l(),a("p",E,m(s.value.fields.password),1)):v("",!0)]),o("div",I,[e[7]||(e[7]=o("label",{for:"confirmation"},"Powtórz hasło",-1)),c(o("input",{id:"confirmation","onUpdate:modelValue":e[2]||(e[2]=r=>p.value=r),type:"password",autocomplete:"new-password",required:""},null,512),[[f,p.value]])]),o("button",{class:"btn primary block",type:"submit",disabled:d.value||!i.value||!n.value},m(d.value?"Zapisywanie…":"Zapisz hasło"),9,P)],32))])}}});export{A as default};
import{d as _,r as t,c as a,a as o,h as g,i as x,g as V,t as m,e as v,b as q,w as c,v as f,j as z,k as N,o as l,m as h,n as B}from"./index-C9sCss04.js";import{f as C}from"./forms-BPOK5alr.js";const U={class:"auth"},M={key:0,class:"stack"},Z={key:0,class:"notice error",role:"alert",style:{"margin-bottom":"14px"}},j={key:1,class:"field"},D={class:"field"},E={key:0,class:"error-text"},I={class:"field"},P=["disabled"],A=_({__name:"ResetView",setup(R){const u=z(),i=t(typeof u.query.code=="string"?u.query.code:""),n=t(""),p=t(""),d=t(!1),w=t(!1),s=t(null);async function b(){d.value=!0,s.value=null;try{await B.resetPassword({code:i.value.trim(),password:n.value,password_confirmation:p.value}),w.value=!0}catch(y){s.value=C(y)}finally{d.value=!1}}return(y,e)=>{const k=N("router-link");return l(),a("div",U,[e[8]||(e[8]=o("header",{class:"page-head"},[o("span",{class:"eyebrow"},"BM II° · UWr"),o("h1",null,"Nowe hasło")],-1)),w.value?(l(),a("div",M,[e[4]||(e[4]=o("p",{class:"notice",role:"status"},"Hasło zostało zmienione.",-1)),g(k,{class:"btn primary",to:"/logowanie"},{default:x(()=>[...e[3]||(e[3]=[h("Zaloguj się",-1)])]),_:1})])):(l(),a("form",{key:1,onSubmit:V(b,["prevent"]),novalidate:""},[s.value?.message?(l(),a("div",Z,m(s.value.message),1)):v("",!0),q(u).query.code?v("",!0):(l(),a("div",j,[e[5]||(e[5]=o("label",{for:"code"},"Kod z wiadomości",-1)),c(o("input",{id:"code","onUpdate:modelValue":e[0]||(e[0]=r=>i.value=r),type:"text",autocomplete:"one-time-code",required:""},null,512),[[f,i.value]])])),o("div",D,[e[6]||(e[6]=o("label",{for:"password"},"Nowe hasło (min. 8 znaków)",-1)),c(o("input",{id:"password","onUpdate:modelValue":e[1]||(e[1]=r=>n.value=r),type:"password",autocomplete:"new-password",required:""},null,512),[[f,n.value]]),s.value?.fields.password?(l(),a("p",E,m(s.value.fields.password),1)):v("",!0)]),o("div",I,[e[7]||(e[7]=o("label",{for:"confirmation"},"Powtórz hasło",-1)),c(o("input",{id:"confirmation","onUpdate:modelValue":e[2]||(e[2]=r=>p.value=r),type:"password",autocomplete:"new-password",required:""},null,512),[[f,p.value]])]),o("button",{class:"btn primary block",type:"submit",disabled:d.value||!i.value||!n.value},m(d.value?"Zapisywanie…":"Zapisz hasło"),9,P)],32))])}}});export{A as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
import{d as y,o as i,c as u,a as l,w as g,a0 as c,x as s,t as a,m as n,e as k,F as v}from"./index-6ftV598K.js";const p={key:0,class:"tools",role:"group","aria-label":"Sterowanie prezentacją"},C={class:"tools-group"},j=["disabled","title"],m={class:"tools-group"},z=["aria-pressed"],$=["aria-pressed"],P=["aria-pressed"],S=["aria-pressed"],w={class:"tools-group tools-end"},F={key:0,class:"tools-pilot",role:"status",title:"Telefon steruje tą kartą"},T={key:1,class:"tools-pilot elsewhere",role:"status",title:"Kliknij tę kartę albo naciśnij klawisz, aby przejąć pilota"},f=["aria-pressed"],H=["aria-pressed"],B="Zegar ruszy przy pierwszej zmianie slajdu",r="Klik lub T: pauza · R: zeruj · C: schowaj",O=y({__name:"SpeakerTools",props:{clock:{},panel:{},special:{type:Boolean},hasSpecial:{type:Boolean},fullscreenEnabled:{type:Boolean},fullscreenOn:{type:Boolean},toolbarHidden:{type:Boolean},togglePanel:{type:Function},toggleSpecial:{type:Function},toggleToolbar:{type:Function},toggleFullscreen:{type:Function},light:{type:Boolean},toggleScheme:{type:Function},pilot:{}},emits:["pause","reset","toggleHidden","close"],setup(e,{emit:b}){const d=b;return(Z,t)=>(i(),u(v,null,[e.toolbarHidden?k("",!0):(i(),u("div",p,[l("div",C,[g(l("button",{id:"speaker-clock",type:"button",class:s(["docked",{paused:e.clock.paused}]),title:r,"aria-label":"Zegar prelegenta",onClick:t[0]||(t[0]=o=>d("pause"))},[t[14]||(t[14]=l("span",null,"slajd",-1)),l("b",{class:s(["clk-slide",{over:e.clock.slideOver}])},a(e.clock.slide),3),t[15]||(t[15]=l("span",null,"całość",-1)),l("b",{class:s(["clk-total",{over:e.clock.totalOver}])},a(e.clock.total),3),l("span",{class:s(["clk-pace",{late:e.clock.late}])},a(e.clock.pace),3)],2),[[c,!e.clock.hidden]]),l("button",{type:"button","aria-keyshortcuts":"T",disabled:e.clock.idle,title:e.clock.idle?B:void 0,onClick:t[1]||(t[1]=o=>d("pause"))},[n(a(e.clock.paused?"Wznów":"Pauza")+" ",1),t[16]||(t[16]=l("kbd",null,"T",-1))],8,j),l("button",{type:"button","aria-keyshortcuts":"R",onClick:t[2]||(t[2]=o=>d("reset"))},[...t[17]||(t[17]=[n(" Zeruj ",-1),l("kbd",null,"R",-1)])]),l("button",{type:"button","aria-keyshortcuts":"C",onClick:t[3]||(t[3]=o=>d("toggleHidden"))},[n(a(e.clock.hidden?"Pokaż zegar":"Ukryj zegar")+" ",1),t[18]||(t[18]=l("kbd",null,"C",-1))])]),l("div",m,[l("button",{type:"button","aria-pressed":e.panel==="say","aria-keyshortcuts":"P",onClick:t[4]||(t[4]=o=>e.togglePanel("say"))},[...t[19]||(t[19]=[n(" Powiedz ",-1),l("kbd",null,"P",-1)])],8,z),l("button",{type:"button","aria-pressed":e.panel==="notes","aria-keyshortcuts":"N",onClick:t[5]||(t[5]=o=>e.togglePanel("notes"))},[...t[20]||(t[20]=[n(" Notatki ",-1),l("kbd",null,"N",-1)])],8,$),l("button",{type:"button","aria-pressed":e.panel==="srcs","aria-keyshortcuts":"Z",onClick:t[6]||(t[6]=o=>e.togglePanel("srcs"))},[...t[21]||(t[21]=[n(" Źródła ",-1),l("kbd",null,"Z",-1)])],8,P),l("button",{type:"button",class:s(["tool-s",{unavailable:!e.hasSpecial}]),"aria-pressed":e.special,"aria-keyshortcuts":"S",onClick:t[7]||(t[7]=o=>e.toggleSpecial())},[...t[22]||(t[22]=[n(" Slajd specjalny ",-1),l("kbd",null,"S",-1)])],10,S)]),l("div",w,[e.pilot==="active"?(i(),u("span",F,[...t[23]||(t[23]=[l("i",{class:"tools-pilot-dot","aria-hidden":"true"},null,-1),n("Pilot",-1)])])):e.pilot==="elsewhere"?(i(),u("span",T,"Pilot steruje inną kartą")):k("",!0),l("button",{type:"button","aria-pressed":e.light,"aria-keyshortcuts":"J",onClick:t[8]||(t[8]=o=>e.toggleScheme())},[...t[24]||(t[24]=[n(" Jasny ",-1),l("kbd",null,"J",-1)])],8,f),e.fullscreenEnabled?(i(),u("button",{key:2,type:"button","aria-pressed":e.fullscreenOn,"aria-keyshortcuts":"F",onClick:t[9]||(t[9]=o=>e.toggleFullscreen())},[...t[25]||(t[25]=[n(" Pełny ekran ",-1),l("kbd",null,"F",-1)])],8,H)):k("",!0),l("button",{type:"button","aria-keyshortcuts":"H",onClick:t[10]||(t[10]=o=>e.toggleToolbar())},[...t[26]||(t[26]=[n(" Ukryj pasek ",-1),l("kbd",null,"H",-1)])]),l("button",{type:"button",onClick:t[11]||(t[11]=o=>d("close"))},"Zamknij")])])),e.toolbarHidden&&!e.clock.hidden?(i(),u("button",{key:1,id:"speaker-clock",type:"button",class:s(["floating",{paused:e.clock.paused}]),title:r,"aria-label":"Zegar prelegenta",onClick:t[12]||(t[12]=o=>d("pause"))},[t[27]||(t[27]=l("span",null,"slajd",-1)),l("b",{class:s(["clk-slide",{over:e.clock.slideOver}])},a(e.clock.slide),3),t[28]||(t[28]=l("span",null,"całość",-1)),l("b",{class:s(["clk-total",{over:e.clock.totalOver}])},a(e.clock.total),3),l("span",{class:s(["clk-pace",{late:e.clock.late}])},a(e.clock.pace),3)],2)):k("",!0),e.toolbarHidden?(i(),u("button",{key:2,type:"button",class:"tools-show","aria-keyshortcuts":"H",onClick:t[13]||(t[13]=o=>e.toggleToolbar())},[...t[29]||(t[29]=[n(" Pokaż pasek ",-1),l("kbd",null,"H",-1)])])):k("",!0)],64))}});export{O as default};
import{d as y,o as i,c as u,a as l,w as g,a0 as c,x as s,t as a,m as n,e as k,F as v}from"./index-C9sCss04.js";const p={key:0,class:"tools",role:"group","aria-label":"Sterowanie prezentacją"},C={class:"tools-group"},j=["disabled","title"],m={class:"tools-group"},z=["aria-pressed"],$=["aria-pressed"],P=["aria-pressed"],S=["aria-pressed"],w={class:"tools-group tools-end"},F={key:0,class:"tools-pilot",role:"status",title:"Telefon steruje tą kartą"},T={key:1,class:"tools-pilot elsewhere",role:"status",title:"Kliknij tę kartę albo naciśnij klawisz, aby przejąć pilota"},f=["aria-pressed"],H=["aria-pressed"],B="Zegar ruszy przy pierwszej zmianie slajdu",r="Klik lub T: pauza · R: zeruj · C: schowaj",O=y({__name:"SpeakerTools",props:{clock:{},panel:{},special:{type:Boolean},hasSpecial:{type:Boolean},fullscreenEnabled:{type:Boolean},fullscreenOn:{type:Boolean},toolbarHidden:{type:Boolean},togglePanel:{type:Function},toggleSpecial:{type:Function},toggleToolbar:{type:Function},toggleFullscreen:{type:Function},light:{type:Boolean},toggleScheme:{type:Function},pilot:{}},emits:["pause","reset","toggleHidden","close"],setup(e,{emit:b}){const d=b;return(Z,t)=>(i(),u(v,null,[e.toolbarHidden?k("",!0):(i(),u("div",p,[l("div",C,[g(l("button",{id:"speaker-clock",type:"button",class:s(["docked",{paused:e.clock.paused}]),title:r,"aria-label":"Zegar prelegenta",onClick:t[0]||(t[0]=o=>d("pause"))},[t[14]||(t[14]=l("span",null,"slajd",-1)),l("b",{class:s(["clk-slide",{over:e.clock.slideOver}])},a(e.clock.slide),3),t[15]||(t[15]=l("span",null,"całość",-1)),l("b",{class:s(["clk-total",{over:e.clock.totalOver}])},a(e.clock.total),3),l("span",{class:s(["clk-pace",{late:e.clock.late}])},a(e.clock.pace),3)],2),[[c,!e.clock.hidden]]),l("button",{type:"button","aria-keyshortcuts":"T",disabled:e.clock.idle,title:e.clock.idle?B:void 0,onClick:t[1]||(t[1]=o=>d("pause"))},[n(a(e.clock.paused?"Wznów":"Pauza")+" ",1),t[16]||(t[16]=l("kbd",null,"T",-1))],8,j),l("button",{type:"button","aria-keyshortcuts":"R",onClick:t[2]||(t[2]=o=>d("reset"))},[...t[17]||(t[17]=[n(" Zeruj ",-1),l("kbd",null,"R",-1)])]),l("button",{type:"button","aria-keyshortcuts":"C",onClick:t[3]||(t[3]=o=>d("toggleHidden"))},[n(a(e.clock.hidden?"Pokaż zegar":"Ukryj zegar")+" ",1),t[18]||(t[18]=l("kbd",null,"C",-1))])]),l("div",m,[l("button",{type:"button","aria-pressed":e.panel==="say","aria-keyshortcuts":"P",onClick:t[4]||(t[4]=o=>e.togglePanel("say"))},[...t[19]||(t[19]=[n(" Powiedz ",-1),l("kbd",null,"P",-1)])],8,z),l("button",{type:"button","aria-pressed":e.panel==="notes","aria-keyshortcuts":"N",onClick:t[5]||(t[5]=o=>e.togglePanel("notes"))},[...t[20]||(t[20]=[n(" Notatki ",-1),l("kbd",null,"N",-1)])],8,$),l("button",{type:"button","aria-pressed":e.panel==="srcs","aria-keyshortcuts":"Z",onClick:t[6]||(t[6]=o=>e.togglePanel("srcs"))},[...t[21]||(t[21]=[n(" Źródła ",-1),l("kbd",null,"Z",-1)])],8,P),l("button",{type:"button",class:s(["tool-s",{unavailable:!e.hasSpecial}]),"aria-pressed":e.special,"aria-keyshortcuts":"S",onClick:t[7]||(t[7]=o=>e.toggleSpecial())},[...t[22]||(t[22]=[n(" Slajd specjalny ",-1),l("kbd",null,"S",-1)])],10,S)]),l("div",w,[e.pilot==="active"?(i(),u("span",F,[...t[23]||(t[23]=[l("i",{class:"tools-pilot-dot","aria-hidden":"true"},null,-1),n("Pilot",-1)])])):e.pilot==="elsewhere"?(i(),u("span",T,"Pilot steruje inną kartą")):k("",!0),l("button",{type:"button","aria-pressed":e.light,"aria-keyshortcuts":"J",onClick:t[8]||(t[8]=o=>e.toggleScheme())},[...t[24]||(t[24]=[n(" Jasny ",-1),l("kbd",null,"J",-1)])],8,f),e.fullscreenEnabled?(i(),u("button",{key:2,type:"button","aria-pressed":e.fullscreenOn,"aria-keyshortcuts":"F",onClick:t[9]||(t[9]=o=>e.toggleFullscreen())},[...t[25]||(t[25]=[n(" Pełny ekran ",-1),l("kbd",null,"F",-1)])],8,H)):k("",!0),l("button",{type:"button","aria-keyshortcuts":"H",onClick:t[10]||(t[10]=o=>e.toggleToolbar())},[...t[26]||(t[26]=[n(" Ukryj pasek ",-1),l("kbd",null,"H",-1)])]),l("button",{type:"button",onClick:t[11]||(t[11]=o=>d("close"))},"Zamknij")])])),e.toolbarHidden&&!e.clock.hidden?(i(),u("button",{key:1,id:"speaker-clock",type:"button",class:s(["floating",{paused:e.clock.paused}]),title:r,"aria-label":"Zegar prelegenta",onClick:t[12]||(t[12]=o=>d("pause"))},[t[27]||(t[27]=l("span",null,"slajd",-1)),l("b",{class:s(["clk-slide",{over:e.clock.slideOver}])},a(e.clock.slide),3),t[28]||(t[28]=l("span",null,"całość",-1)),l("b",{class:s(["clk-total",{over:e.clock.totalOver}])},a(e.clock.total),3),l("span",{class:s(["clk-pace",{late:e.clock.late}])},a(e.clock.pace),3)],2)):k("",!0),e.toolbarHidden?(i(),u("button",{key:2,type:"button",class:"tools-show","aria-keyshortcuts":"H",onClick:t[13]||(t[13]=o=>e.toggleToolbar())},[...t[29]||(t[29]=[n(" Pokaż pasek ",-1),l("kbd",null,"H",-1)])])):k("",!0)],64))}});export{O as default};

View File

@@ -1 +1 @@
import{S as o}from"./index-6ftV598K.js";function a(s){if(s instanceof o){const e={};for(const[r,t]of Object.entries(s.errors))t.length&&(e[r]=t[0]);return{message:Object.keys(e).length&&Object.values(e).includes(s.message)?"":s.message,fields:e}}return{message:"Coś poszło nie tak. Spróbuj ponownie.",fields:{}}}function f(s){return typeof s=="string"&&s.startsWith("/")&&!s.startsWith("//")&&!s.startsWith("/\\")?s:"/"}export{a as f,f as s};
import{S as o}from"./index-C9sCss04.js";function a(s){if(s instanceof o){const e={};for(const[r,t]of Object.entries(s.errors))t.length&&(e[r]=t[0]);return{message:Object.keys(e).length&&Object.values(e).includes(s.message)?"":s.message,fields:e}}return{message:"Coś poszło nie tak. Spróbuj ponownie.",fields:{}}}function f(s){return typeof s=="string"&&s.startsWith("/")&&!s.startsWith("//")&&!s.startsWith("/\\")?s:"/"}export{a as f,f as s};

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
import{$ as m,L as n}from"./index-6ftV598K.js";const o="/_presentations/api/v1",c={publicDeck:e=>n.request(`${o}/public/${encodeURIComponent(e)}`,{auth:!1}),mine:()=>n.request(`${o}/mine`),speaker:e=>n.request(`${o}/mine/${encodeURIComponent(e)}`),speakerImage:(e,t)=>n.blob(`${o}/mine/${encodeURIComponent(e)}/images/${encodeURIComponent(t)}`),remote:(e,t)=>n.request(`${o}/mine/${encodeURIComponent(e)}/remote`,{method:"POST",body:t}),remoteState:(e,t)=>n.request(`${o}/mine/${encodeURIComponent(e)}/remote/state`,{method:"POST",body:t}),remoteStateBeacon(e,t){const a={Accept:"application/json","Content-Type":"application/json"},i=m.get();i&&(a.Authorization=`Bearer ${i}`);try{fetch(`${o}/mine/${encodeURIComponent(e)}/remote/state`,{method:"POST",headers:a,body:JSON.stringify(t),keepalive:!0}).catch(()=>{})}catch{}}};export{c as p};
import{$ as m,L as n}from"./index-C9sCss04.js";const o="/_presentations/api/v1",c={publicDeck:e=>n.request(`${o}/public/${encodeURIComponent(e)}`,{auth:!1}),mine:()=>n.request(`${o}/mine`),speaker:e=>n.request(`${o}/mine/${encodeURIComponent(e)}`),speakerImage:(e,t)=>n.blob(`${o}/mine/${encodeURIComponent(e)}/images/${encodeURIComponent(t)}`),remote:(e,t)=>n.request(`${o}/mine/${encodeURIComponent(e)}/remote`,{method:"POST",body:t}),remoteState:(e,t)=>n.request(`${o}/mine/${encodeURIComponent(e)}/remote/state`,{method:"POST",body:t}),remoteStateBeacon(e,t){const a={Accept:"application/json","Content-Type":"application/json"},i=m.get();i&&(a.Authorization=`Bearer ${i}`);try{fetch(`${o}/mine/${encodeURIComponent(e)}/remote/state`,{method:"POST",headers:a,body:JSON.stringify(t),keepalive:!0}).catch(()=>{})}catch{}}};export{c as p};

View File

@@ -1 +1 @@
import{e as p}from"./format-bcE-cYHJ.js";import{d as z,o,c as a,F as c,y as h,a as d,m,t as n,b as _,x as q,e as l,L as r}from"./index-6ftV598K.js";const y={class:"rows"},$={class:"row-main"},k={class:"title"},w=["aria-label"],f={key:1,class:"badge"},b={class:"muted small"},S=z({__name:"AttemptList",props:{attempts:{},showQuiz:{type:Boolean}},setup(e){const s=u=>`${Math.round(u.score_points)}/${Math.round(u.max_points)}`;return(u,g)=>(o(),a("ul",y,[(o(!0),a(c,null,h(e.attempts,t=>(o(),a("li",{key:t.id},[d("div",$,[d("span",k,[e.showQuiz?(o(),a(c,{key:0},[m(n(t.quiz_title),1)],64)):(o(),a(c,{key:1},[m(n(_(p)(t.started_at)),1)],64))]),t.completed_at?(o(),a("span",{key:0,class:q(["badge",t.passed?"online":""]),"aria-label":`Wynik ${s(t)}`},n(s(t)),11,w)):(o(),a("span",f,"niezakończona"))]),d("div",b,[e.showQuiz?(o(),a(c,{key:0},[m(n(_(p)(t.started_at))+" · ",1)],64)):l("",!0),t.category?(o(),a(c,{key:1},[m(n(t.category)+" · ",1)],64)):l("",!0),m(" odpowiedzi: "+n(t.answered_count),1),t.completed_at&&t.score_percent!==null?(o(),a(c,{key:2},[m(" · "+n(String(t.score_percent).replace(".",","))+"% puli",1)],64)):l("",!0)])]))),128))]))}}),i="/_quizzes/api/v1",T={list:e=>r.request(`${i}/quizzes`,{query:{context:e}}),quiz:(e,s)=>r.request(`${i}/quizzes/${encodeURIComponent(e)}`,{query:{category:s}}),start:(e,s)=>r.request(`${i}/quizzes/${encodeURIComponent(e)}/attempts`,{method:"POST",body:s?{category:s}:{}}),answer:(e,s)=>r.request(`${i}/attempts/${e}/answers`,{method:"POST",body:s}),finish:e=>r.request(`${i}/attempts/${e}/finish`,{method:"POST"}),attempt:e=>r.request(`${i}/attempts/${e}`),attempts:(e,s)=>r.raw(`${i}/attempts`,{query:{quiz:e,page:s}})};export{S as _,T as q};
import{e as p}from"./format-bcE-cYHJ.js";import{d as z,o,c as a,F as c,y as h,a as d,m,t as n,b as _,x as q,e as l,L as r}from"./index-C9sCss04.js";const y={class:"rows"},$={class:"row-main"},k={class:"title"},w=["aria-label"],f={key:1,class:"badge"},b={class:"muted small"},S=z({__name:"AttemptList",props:{attempts:{},showQuiz:{type:Boolean}},setup(e){const s=u=>`${Math.round(u.score_points)}/${Math.round(u.max_points)}`;return(u,g)=>(o(),a("ul",y,[(o(!0),a(c,null,h(e.attempts,t=>(o(),a("li",{key:t.id},[d("div",$,[d("span",k,[e.showQuiz?(o(),a(c,{key:0},[m(n(t.quiz_title),1)],64)):(o(),a(c,{key:1},[m(n(_(p)(t.started_at)),1)],64))]),t.completed_at?(o(),a("span",{key:0,class:q(["badge",t.passed?"online":""]),"aria-label":`Wynik ${s(t)}`},n(s(t)),11,w)):(o(),a("span",f,"niezakończona"))]),d("div",b,[e.showQuiz?(o(),a(c,{key:0},[m(n(_(p)(t.started_at))+" · ",1)],64)):l("",!0),t.category?(o(),a(c,{key:1},[m(n(t.category)+" · ",1)],64)):l("",!0),m(" odpowiedzi: "+n(t.answered_count),1),t.completed_at&&t.score_percent!==null?(o(),a(c,{key:2},[m(" · "+n(String(t.score_percent).replace(".",","))+"% puli",1)],64)):l("",!0)])]))),128))]))}}),i="/_quizzes/api/v1",T={list:e=>r.request(`${i}/quizzes`,{query:{context:e}}),quiz:(e,s)=>r.request(`${i}/quizzes/${encodeURIComponent(e)}`,{query:{category:s}}),start:(e,s)=>r.request(`${i}/quizzes/${encodeURIComponent(e)}/attempts`,{method:"POST",body:s?{category:s}:{}}),answer:(e,s)=>r.request(`${i}/attempts/${e}/answers`,{method:"POST",body:s}),finish:e=>r.request(`${i}/attempts/${e}/finish`,{method:"POST"}),attempt:e=>r.request(`${i}/attempts/${e}`),attempts:(e,s)=>r.raw(`${i}/attempts`,{query:{quiz:e,page:s}})};export{S as _,T as q};

File diff suppressed because one or more lines are too long

View File

@@ -14,7 +14,7 @@
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-title" content="BM II°" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
<script type="module" crossorigin src="/assets/index-6ftV598K.js"></script>
<script type="module" crossorigin src="/assets/index-C9sCss04.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-DnBiKx4V.css">
</head>
<body>

View File

@@ -1,4 +1,4 @@
const BUILD = 'f0be35b6e6e7'
const BUILD = '3394fd5feb39'
// The service worker of the BM student app. The Vite plugin bm-service-worker
// (vite.config.ts) emits this file as /sw.js and replaces the build id above,
// so every build that changes an asset gets a fresh cache and an update prompt.

View File

@@ -40,6 +40,7 @@ func generatedMigrations() []*gormigrate.Migration {
updates.AddElectiveGroupToCourses(),
updates.CreateCalendarFeeds(),
updates.MakeCourseIDNullable(),
updates.AddLecturerToClassSessions(),
}
}

View File

@@ -0,0 +1,23 @@
package updates
import (
"github.com/go-gormigrate/gormigrate/v2"
"gorm.io/gorm"
)
// AddLecturerToClassSessions returns the
// 20261017120000_add_lecturer_to_class_sessions gormigrate entry: a class
// session may name its own lecturer when it differs from the course's (the
// lecture shared by two people across the semester). Empty means the
// course's lecturer.
func AddLecturerToClassSessions() *gormigrate.Migration {
return &gormigrate.Migration{
ID: "20261017120000_add_lecturer_to_class_sessions",
Migrate: func(tx *gorm.DB) error {
return tx.Exec("ALTER TABLE jz_bm_class_sessions ADD COLUMN lecturer VARCHAR(255) NULL").Error
},
Rollback: func(tx *gorm.DB) error {
return tx.Exec("ALTER TABLE jz_bm_class_sessions DROP COLUMN IF EXISTS lecturer").Error
},
}
}