2 lines
12 KiB
JavaScript
2 lines
12 KiB
JavaScript
import{d as J,ae as Y,o as ee,r as v,au as te,U as Z,n as a,c as n,h as se,b as t,w as z,as as S,F as h,E as U,t as r,e as p,av as Q,aw as le,ah as ae,v as P,f as d,ar as X,x as E,ax as oe,af as ne,i as N,j as I,D as ie,p as j,G as ue,ay as q,H as re,_ as A,s as T,C as de,a8 as ve,q as H,ap as K,l as me,m as pe,az as ce}from"./index-D072-v__.js";import{_ as ye}from"./PageHead.vue_vue_type_script_setup_true_lang-mdp-nyrh.js";import{_ as ke}from"./LoadState.vue_vue_type_script_setup_true_lang-DD7jAYsI.js";import{p as _e}from"./presentations-DZMI2UG2.js";import{f as fe}from"./forms-CUHaA8zr.js";const be={class:"form-grid"},ge={class:"field"},$e=["value"],ze={class:"field"},we=["value"],he={class:"field"},Ce={key:0,class:"error-text"},xe={class:"field"},Ie=["value"],je={class:"form-grid"},Ue={class:"field"},De=["value"],Ve={class:"field"},Ne=["value"],Te={class:"form-grid"},Ee={class:"field"},Le={class:"field"},Me={class:"field"},Re={class:"field"},Be={key:0,class:"notice error",role:"alert"},Se={class:"btn-row"},Pe=["disabled"],G=J({__name:"ChecklistItemForm",props:{item:{},meetingId:{},save:{type:Function}},emits:["done","cancel"],setup(W,{emit:O}){const c=W,F=O,f=Y(),i=v([]);ee(()=>{Promise.all([f.loadCourses(),f.loadReadings(),f.loadDeadlines()]),_e.mine().then(k=>i.value=k).catch(()=>{})});const _=c.item,b=v(_?.kind??"lektura"),y=v(_?.title??""),g=v(_?.course_id??""),$=v(_?.reading_id??""),C=v(_?.deadline_id??""),D=v(_?.presentation_slug??""),L=v(_?.estimate_minutes??""),M=v(te(_?.due_at??null)),R=v(_?.url??""),B=v(_?.notes??""),V=v(""),u=v({}),o=v(!1),x=E(()=>[...f.allReadings.filter(e=>g.value===""||e.course_id===g.value)].sort((e,s)=>+(s.meeting_id===c.meetingId)-+(e.meeting_id===c.meetingId))),m=E(()=>f.deadlines.filter(k=>g.value===""||k.course_id===g.value||k.course_id===null));Z($,k=>{const e=f.allReadings.find(s=>s.id===k);e&&(y.value.trim()||(y.value=e.author?`${e.author}, ${e.title}`:e.title),g.value===""&&(g.value=e.course_id))}),Z(D,k=>{const e=i.value.find(s=>s.slug===k);e&&!y.value.trim()&&(y.value=`Prezentacja: ${e.title}`),e&&(b.value="prezentacja")});const l=k=>k===""?null:k;async function w(){o.value=!0,V.value="",u.value={};try{await c.save({kind:b.value,title:y.value.trim(),course_id:l(g.value),reading_id:l($.value),deadline_id:l(C.value),presentation_slug:D.value||null,estimate_minutes:l(L.value),due_at:oe(M.value),url:R.value.trim()||null,notes:B.value.trim()||null}),F("done")}catch(k){const e=fe(k);u.value=e.fields,V.value=e.message||Object.values(e.fields)[0]||""}finally{o.value=!1}}return(k,e)=>(a(),n("form",{class:"card item-form",onSubmit:se(w,["prevent"])},[t("div",be,[t("div",ge,[e[11]||(e[11]=t("label",{for:"it-kind"},"Rodzaj",-1)),z(t("select",{id:"it-kind","onUpdate:modelValue":e[0]||(e[0]=s=>b.value=s)},[(a(!0),n(h,null,U(p(le),s=>(a(),n("option",{key:s,value:s},r(p(Q)[s]),9,$e))),128))],512),[[S,b.value]])]),t("div",ze,[e[13]||(e[13]=t("label",{for:"it-course"},"Przedmiot",-1)),z(t("select",{id:"it-course","onUpdate:modelValue":e[1]||(e[1]=s=>g.value=s)},[e[12]||(e[12]=t("option",{value:""},"ogólne",-1)),(a(!0),n(h,null,U(p(f).visibleCourses,s=>(a(),n("option",{key:s.id,value:s.id},r(s.name)+" ("+r(p(ae)[s.form])+")",9,we))),128))],512),[[S,g.value]])])]),t("div",he,[e[14]||(e[14]=t("label",{for:"it-title"},"Co",-1)),z(t("input",{id:"it-title","onUpdate:modelValue":e[2]||(e[2]=s=>y.value=s),type:"text",required:"",maxlength:"500"},null,512),[[P,y.value]]),u.value.title?(a(),n("small",Ce,r(u.value.title),1)):d("",!0)]),t("div",xe,[e[16]||(e[16]=t("label",{for:"it-reading"},"Lektura z listy (odhaczenie = przeczytana)",-1)),z(t("select",{id:"it-reading","onUpdate:modelValue":e[3]||(e[3]=s=>$.value=s)},[e[15]||(e[15]=t("option",{value:""},"brak",-1)),(a(!0),n(h,null,U(x.value,s=>(a(),n("option",{key:s.id,value:s.id},r(s.author?s.author+", ":"")+r(s.title),9,Ie))),128))],512),[[S,$.value]])]),t("div",je,[t("div",Ue,[e[18]||(e[18]=t("label",{for:"it-deadline"},"Termin",-1)),z(t("select",{id:"it-deadline","onUpdate:modelValue":e[4]||(e[4]=s=>C.value=s)},[e[17]||(e[17]=t("option",{value:""},"brak",-1)),(a(!0),n(h,null,U(m.value,s=>(a(),n("option",{key:s.id,value:s.id},r(p(X)(s.due_at))+" · "+r(s.title),9,De))),128))],512),[[S,C.value]])]),t("div",Ve,[e[20]||(e[20]=t("label",{for:"it-deck"},"Moja prezentacja",-1)),z(t("select",{id:"it-deck","onUpdate:modelValue":e[5]||(e[5]=s=>D.value=s)},[e[19]||(e[19]=t("option",{value:""},"brak",-1)),(a(!0),n(h,null,U(i.value,s=>(a(),n("option",{key:s.slug,value:s.slug},r(s.title),9,Ne))),128))],512),[[S,D.value]])])]),t("div",Te,[t("div",Ee,[e[21]||(e[21]=t("label",{for:"it-est"},"Szacowany czas (min)",-1)),z(t("input",{id:"it-est","onUpdate:modelValue":e[6]||(e[6]=s=>L.value=s),type:"number",min:"0",max:"10000",step:"5",inputmode:"numeric"},null,512),[[P,L.value,void 0,{number:!0}]])]),t("div",Le,[e[22]||(e[22]=t("label",{for:"it-due"},"Zrobić do",-1)),z(t("input",{id:"it-due","onUpdate:modelValue":e[7]||(e[7]=s=>M.value=s),type:"datetime-local"},null,512),[[P,M.value]])])]),t("div",Me,[e[23]||(e[23]=t("label",{for:"it-url"},"Link",-1)),z(t("input",{id:"it-url","onUpdate:modelValue":e[8]||(e[8]=s=>R.value=s),type:"text",inputmode:"url",maxlength:"2048"},null,512),[[P,R.value]])]),t("div",Re,[e[24]||(e[24]=t("label",{for:"it-notes"},"Notatki",-1)),z(t("textarea",{id:"it-notes","onUpdate:modelValue":e[9]||(e[9]=s=>B.value=s),rows:"3",maxlength:"10000"},null,512),[[P,B.value]])]),V.value?(a(),n("p",Be,r(V.value),1)):d("",!0),t("div",Se,[t("button",{class:"btn primary",type:"submit",disabled:o.value||!y.value.trim()},r(W.item?"Zapisz":"Dodaj"),9,Pe),t("button",{class:"btn ghost",type:"button",onClick:e[10]||(e[10]=s=>F("cancel"))},"Anuluj")])],32))}}),We={class:"card","aria-label":"Postęp"},Fe={style:{margin:"0 0 8px"}},Oe={class:"big-num nums",title:"Wg szacowanego czasu"},Ae={class:"muted"},Ze={key:0,class:"muted small"},qe=["aria-valuenow"],He={key:0,class:"muted small",style:{margin:"10px 0 0","white-space":"pre-line"}},Ke={class:"chips wrap",style:{"margin-top":"12px"}},Ge=["aria-pressed"],Je=["aria-pressed"],Qe=["aria-label"],Xe={key:0,class:"section-head"},Ye={class:"muted small nums"},et={class:"rows"},tt=["checked","onChange"],st={class:"text"},lt={class:"badge"},at={key:0,class:"muted nums"},ot={key:2,class:"muted mono"},nt={key:3,class:"item-notes muted small"},it={class:"item-links small"},ut=["href"],rt={class:"item-actions"},dt=["aria-label","onClick"],vt=["aria-label","onClick"],mt=["aria-label","onClick"],pt=["aria-label","onClick"],ct={key:1,class:"empty",style:{"margin-top":"16px"}},yt={key:2,class:"empty",style:{"margin-top":"16px"}},$t=J({__name:"ChecklistView",props:{id:{}},setup(W){const O=W,c=ne(),F=pe(),f=E(()=>Number(O.id));Z(f,u=>{c.loadOne(u)},{immediate:!0});const i=E(()=>c.details[f.value]??null),_=E(()=>i.value?.items??[]),b=v(!1),y=v(!0),g=E(()=>{const u=_.value.filter(o=>!b.value||!o.done);return y.value?ce(u):[{key:"all",label:"",items:u}]}),$=v(!1),C=v(null),D=u=>c.addItem(f.value,u),L=u=>o=>c.updateItem(u,o);async function M(u){if(window.confirm(`Usunąć „${u.title}”?`))try{await c.removeItem(u)}catch(o){H().show(`Nie udało się usunąć. ${K(o)}`)}}async function R(){if(!(!i.value||!window.confirm(`Usunąć checklistę „${i.value.title}” ze wszystkimi pozycjami?`)))try{await c.remove(i.value.id),await F.push("/checklisty")}catch(u){H().show(`Nie udało się usunąć. ${K(u)}`)}}const B=u=>`/moje-prezentacje/${encodeURIComponent(u)}`,V=u=>!u.done&&u.due_at!==null&&Date.parse(u.due_at)<Date.now();return(u,o)=>{const x=me("router-link");return a(),n("div",null,[N(ye,{eyebrow:i.value?.meeting?`Zjazd ${i.value.meeting.number} · ${p(ie)(i.value.meeting.starts_on,i.value.meeting.ends_on)}`:"Checklista",title:i.value?.title??"Checklista"},{default:I(()=>[N(x,{class:"btn ghost small",to:"/checklisty"},{default:I(()=>[...o[8]||(o[8]=[j("Wszystkie",-1)])]),_:1})]),_:1},8,["eyebrow","title"]),N(ke,{ready:!!i.value,error:p(c).detailError,onRetry:o[7]||(o[7]=m=>p(c).loadOne(f.value))},{default:I(()=>[i.value?(a(),n(h,{key:0},[t("section",We,[t("p",Fe,[t("span",Oe,r(i.value.progress.percent)+"%",1),t("span",Ae," · "+r(p(ue)(i.value.progress)),1),i.value.progress.minutes_total?(a(),n("span",Ze," · razem "+r(p(q)(i.value.progress.minutes_total)),1)):d("",!0)]),t("div",{class:"progress-bar",role:"progressbar","aria-valuenow":i.value.progress.percent,"aria-valuemin":"0","aria-valuemax":"100","aria-label":"Postęp (wg szacowanego czasu)"},[t("span",{style:re({width:i.value.progress.percent+"%"})},null,4)],8,qe),i.value.description?(a(),n("p",He,r(i.value.description),1)):d("",!0)]),t("div",Ke,[t("button",{class:"chip",type:"button","aria-pressed":b.value,onClick:o[0]||(o[0]=m=>b.value=!b.value)},"Tylko do zrobienia",8,Ge),t("button",{class:"chip",type:"button","aria-pressed":y.value,onClick:o[1]||(o[1]=m=>y.value=!y.value)},"Wg przedmiotów",8,Je),$.value?d("",!0):(a(),n("button",{key:0,class:"chip",type:"button",onClick:o[2]||(o[2]=m=>$.value=!0)},[N(A,{name:"plus",class:"chip-icon"}),o[9]||(o[9]=j(" Dodaj pozycję",-1))]))]),$.value?(a(),T(G,{key:0,style:{"margin-top":"12px"},"meeting-id":i.value.meeting_id,save:D,onDone:o[3]||(o[3]=m=>$.value=!1),onCancel:o[4]||(o[4]=m=>$.value=!1)},null,8,["meeting-id"])):d("",!0),(a(!0),n(h,null,U(g.value,m=>(a(),n("section",{key:m.key,class:"section","aria-label":m.label||"Pozycje"},[m.label?(a(),n("div",Xe,[t("h2",null,r(m.label),1),t("span",Ye,r(m.items.filter(l=>l.done).length)+"/"+r(m.items.length),1)])):d("",!0),t("ul",et,[(a(!0),n(h,null,U(m.items,l=>(a(),n("li",{key:l.id,class:"reading checklist-item"},[C.value===l.id?(a(),T(G,{key:0,class:"grow",item:l,"meeting-id":i.value.meeting_id,save:L(l),onDone:o[5]||(o[5]=w=>C.value=null),onCancel:o[6]||(o[6]=w=>C.value=null)},null,8,["item","meeting-id","save"])):(a(),n(h,{key:1},[t("label",null,[t("input",{type:"checkbox",checked:l.done,onChange:w=>p(c).toggle(l,w.target.checked)},null,40,tt),t("span",st,[t("span",lt,r(p(Q)[l.kind]),1),j(" "+r(l.title)+" ",1),l.estimate_minutes?(a(),n("small",at," · "+r(p(q)(l.estimate_minutes)),1)):d("",!0),l.due_at?(a(),n("small",{key:1,class:de(["mono",V(l)?"error-text":"muted"])}," · do "+r(p(ve)(l.due_at)),3)):d("",!0),l.done_at?(a(),n("small",ot," · zrobione "+r(p(X)(l.done_at)),1)):d("",!0),l.notes?(a(),n("span",nt,r(l.notes),1)):d("",!0)])]),t("span",it,[l.reading?(a(),T(x,{key:0,to:`/lektury#lektura-${l.reading.id}`},{default:I(()=>[...o[10]||(o[10]=[j("lektura",-1)])]),_:1},8,["to"])):d("",!0),l.deadline?(a(),T(x,{key:1,to:"/terminarz",title:l.deadline.title},{default:I(()=>[...o[11]||(o[11]=[j("termin",-1)])]),_:1},8,["title"])):d("",!0),l.material?(a(),T(x,{key:2,to:`/materialy/${l.material.id}`},{default:I(()=>[...o[12]||(o[12]=[j("materiał",-1)])]),_:1},8,["to"])):d("",!0),l.presentation?(a(),T(x,{key:3,to:B(l.presentation.slug)},{default:I(()=>[...o[13]||(o[13]=[j("talia",-1)])]),_:1},8,["to"])):d("",!0),l.url?(a(),n("a",{key:4,href:l.url,target:"_blank",rel:"noopener noreferrer"},"link",8,ut)):d("",!0)]),t("span",rt,[!y.value&&!b.value?(a(),n("button",{key:0,class:"icon-btn",type:"button","aria-label":`W górę: ${l.title}`,onClick:w=>p(c).move(l,-1)},"↑",8,dt)):d("",!0),!y.value&&!b.value?(a(),n("button",{key:1,class:"icon-btn",type:"button","aria-label":`W dół: ${l.title}`,onClick:w=>p(c).move(l,1)},"↓",8,vt)):d("",!0),t("button",{class:"icon-btn",type:"button","aria-label":`Edytuj: ${l.title}`,onClick:w=>C.value=l.id},[N(A,{name:"pencil"})],8,mt),t("button",{class:"icon-btn",type:"button","aria-label":`Usuń: ${l.title}`,onClick:w=>M(l)},[N(A,{name:"trash"})],8,pt)])],64))]))),128))])],8,Qe))),128)),_.value.length?b.value&&!g.value.some(m=>m.items.length)?(a(),n("p",yt,"Wszystko zrobione.")):d("",!0):(a(),n("p",ct,"Pusto. Dodaj lektury, artykuły, prezentacje i zadania na ten zjazd.")),t("div",{class:"btn-row",style:{"margin-top":"24px"}},[t("button",{class:"btn miss small",type:"button",onClick:R},"Usuń checklistę")])],64)):d("",!0)]),_:1},8,["ready","error"])])}}});export{$t as default};
|