2 lines
9.8 KiB
JavaScript
2 lines
9.8 KiB
JavaScript
import{d as L,u as O,p as S,C as $,O as E,P as W,q as A,I as U,c as l,h as M,a as e,g as V,t as i,e as r,w as b,v as k,b as o,F as j,y as D,m as N,r as y,Q as J,o as n,R,n as q}from"./index-6ftV598K.js";import{_ as H}from"./PageHead.vue_vue_type_script_setup_true_lang-Uc1EGE7y.js";import{f as Z}from"./forms-Dmkusc1J.js";const Q={class:"card","aria-labelledby":"dane-h"},X={key:0,class:"notice error",role:"alert",style:{"margin-bottom":"12px"}},Y={key:1,class:"notice",role:"status",style:{"margin-bottom":"12px"}},ee={class:"grid-2"},se={class:"field"},oe={key:0,class:"error-text"},ae={class:"field"},te={key:0,class:"error-text"},le={class:"field"},ne={key:0,class:"error-text"},ie=["disabled"],re={id:"wybor",class:"card section","aria-labelledby":"wybor-h"},de={key:0,class:"skeleton"},ue={key:1,class:"muted"},pe={class:"eyebrow",style:{padding:"0","margin-bottom":"6px"}},me=["name","value","checked","onChange"],ce={key:0,class:"muted small",style:{margin:"4px 0 0"}},ye=["onClick"],we={id:"kalendarz",class:"card section","aria-labelledby":"kalendarz-h"},be={key:0,class:"notice error",role:"alert",style:{margin:"12px 0"}},ke={key:1,class:"skeleton",style:{"margin-top":"12px"}},fe={key:2,style:{"margin-top":"12px"}},ze=["disabled"],ve={class:"field",style:{"margin-top":"12px"}},ge={style:{display:"flex",gap:"8px"}},_e=["value"],he={key:0,class:"muted small",style:{margin:"0"}},xe={class:"check"},je=["checked","disabled"],Ce={class:"check"},Pe=["checked","disabled"],Ue={class:"btn-row",style:{"margin-top":"12px"}},Ve=["disabled"],De=["disabled"],Ne={class:"card section","aria-labelledby":"haslo-h"},Ze={key:0,class:"notice error",role:"alert",style:{"margin-bottom":"12px"}},Fe={key:1,class:"notice",role:"status",style:{"margin-bottom":"12px"}},Ke={class:"field"},Te={key:0,class:"error-text"},Ge={class:"field"},Be={key:0,class:"error-text"},Ie={class:"field"},Le=["disabled"],Oe={class:"section"},Me=L({__name:"ProfileView",setup(Se){const f=O(),z=S(),v=$(),t=E(),C=W();A(()=>{z.loadCourses(),t.load()});const P=y(null);async function F(){const m=t.feed?.url;m&&(await J(m)?C.show("Skopiowano link do schowka."):(P.value?.select(),C.show("Nie udało się skopiować. Link jest zaznaczony: skopiuj go ręcznie.")))}function K(){window.confirm("Wygenerować nowy link? Stary przestanie działać i kalendarze, które go subskrybują, trzeba będzie dodać od nowa.")&&t.rotate()}function T(){window.confirm("Usunąć link do kalendarza? Kalendarze, które go subskrybują, przestaną się aktualizować.")&&t.remove()}function G(m){return new Date(m).toLocaleString("pl-PL",{day:"numeric",month:"long",hour:"2-digit",minute:"2-digit"})}const p=U({name:f.user?.name??"",surname:f.user?.surname??"",email:f.user?.email??""}),g=y(!1),d=y(null),h=y(!1);async function B(){g.value=!0,d.value=null,h.value=!1;try{await f.updateProfile({name:p.name.trim(),surname:p.surname.trim(),email:p.email.trim()}),h.value=!0}catch(m){d.value=Z(m)}finally{g.value=!1}}const u=U({current_password:"",password:"",password_confirmation:""}),_=y(!1),c=y(null),x=y(!1);async function I(){_.value=!0,c.value=null,x.value=!1;try{await q.changePassword({...u}),x.value=!0,Object.assign(u,{current_password:"",password:"",password_confirmation:""})}catch(m){c.value=Z(m)}finally{_.value=!1}}return(m,s)=>(n(),l("div",null,[M(H,{eyebrow:"Konto",title:"Profil"}),e("section",Q,[s[14]||(s[14]=e("h2",{id:"dane-h",style:{"margin-bottom":"12px"}},"Dane",-1)),e("form",{onSubmit:V(B,["prevent"]),novalidate:""},[d.value?.message?(n(),l("p",X,i(d.value.message),1)):r("",!0),h.value?(n(),l("p",Y,"Zapisano.")):r("",!0),e("div",ee,[e("div",se,[s[11]||(s[11]=e("label",{for:"p-name"},"Imię",-1)),b(e("input",{id:"p-name","onUpdate:modelValue":s[0]||(s[0]=a=>p.name=a),type:"text",autocomplete:"given-name"},null,512),[[k,p.name]]),d.value?.fields.name?(n(),l("p",oe,i(d.value.fields.name),1)):r("",!0)]),e("div",ae,[s[12]||(s[12]=e("label",{for:"p-surname"},"Nazwisko",-1)),b(e("input",{id:"p-surname","onUpdate:modelValue":s[1]||(s[1]=a=>p.surname=a),type:"text",autocomplete:"family-name"},null,512),[[k,p.surname]]),d.value?.fields.surname?(n(),l("p",te,i(d.value.fields.surname),1)):r("",!0)])]),e("div",le,[s[13]||(s[13]=e("label",{for:"p-email"},"Adres e-mail",-1)),b(e("input",{id:"p-email","onUpdate:modelValue":s[2]||(s[2]=a=>p.email=a),type:"email",autocomplete:"email",inputmode:"email"},null,512),[[k,p.email]]),d.value?.fields.email?(n(),l("p",ne,i(d.value.fields.email),1)):r("",!0)]),e("button",{class:"btn primary",type:"submit",disabled:g.value},i(g.value?"Zapisywanie…":"Zapisz dane"),9,ie)],32)]),e("section",re,[s[15]||(s[15]=e("h2",{id:"wybor-h",style:{"margin-bottom":"6px"}},"Przedmioty do wyboru",-1)),s[16]||(s[16]=e("p",{class:"muted small"},"Z każdej grupy wybierasz jeden przedmiot. Pozostałe znikną z planu, pulpitu i list (można je pokazać przełącznikiem „Pokaż wszystkie”). Wybór zapamiętuje to urządzenie.",-1)),o(z).loaded.courses?o(z).electiveGroups.length?r("",!0):(n(),l("p",ue,"Nie ma teraz przedmiotów do wyboru.")):(n(),l("div",de)),(n(!0),l(j,null,D(o(z).electiveGroups,a=>(n(),l("fieldset",{key:a.code,style:{border:"0",padding:"0",margin:"14px 0 0"}},[e("legend",pe,i(o(R)(a.code)),1),(n(!0),l(j,null,D(a.options,w=>(n(),l("label",{key:w,class:"check"},[e("input",{type:"radio",name:`g-${a.code}`,value:w,checked:o(v).choices[a.code]===w,onChange:$e=>o(v).choose(a.code,w)},null,40,me),e("span",null,i(w),1)]))),128)),o(v).choices[a.code]?(n(),l("button",{key:1,class:"linkish small",type:"button",onClick:w=>o(v).choose(a.code,null)},"Wyczyść wybór",8,ye)):(n(),l("p",ce,"Jeszcze nie wybrano. Do tego czasu widać wszystkie alternatywy."))]))),128))]),e("section",we,[s[23]||(s[23]=e("h2",{id:"kalendarz-h",style:{"margin-bottom":"6px"}},"Kalendarz Google / telefon",-1)),s[24]||(s[24]=e("p",{class:"muted small"}," Prywatny link do planu zajęć w formacie iCalendar. Dodaj go w Kalendarzu Google albo w telefonie, a zajęcia pojawią się obok Twoich wydarzeń. Plan uwzględnia przedmioty do wyboru wybrane wyżej. ",-1)),o(t).error?(n(),l("p",be,i(o(t).error),1)):r("",!0),o(t).feed===void 0&&(o(t).loading||!o(t).error)?(n(),l("div",ke)):o(t).feed?(n(),l(j,{key:3},[e("div",ve,[s[17]||(s[17]=e("label",{for:"cal-url"},"Twój link (nie udostępniaj go)",-1)),e("div",ge,[e("input",{id:"cal-url",ref_key:"urlInput",ref:P,class:"mono",type:"text",readonly:"",value:o(t).feed.url,style:{"font-size":"14px","min-width":"0"},onFocus:s[4]||(s[4]=a=>a.target.select())},null,40,_e),e("button",{class:"btn",type:"button",onClick:F},"Kopiuj")]),o(t).feed.last_fetched_at?(n(),l("p",he,"Ostatnio pobrany przez kalendarz: "+i(G(o(t).feed.last_fetched_at))+".",1)):r("",!0)]),e("label",xe,[e("input",{type:"checkbox",checked:o(t).feed.include_meetings,disabled:o(t).busy,onChange:s[5]||(s[5]=a=>o(t).save({include_meetings:a.target.checked}))},null,40,je),s[18]||(s[18]=e("span",null,"Zjazdy jako wydarzenia całodniowe",-1))]),e("label",Ce,[e("input",{type:"checkbox",checked:o(t).feed.include_deadlines,disabled:o(t).busy,onChange:s[6]||(s[6]=a=>o(t).save({include_deadlines:a.target.checked}))},null,40,Pe),s[19]||(s[19]=e("span",null,"Terminy z terminarza",-1))]),e("div",Ue,[e("button",{class:"btn small ghost",type:"button",disabled:o(t).busy,onClick:K},"Wygeneruj nowy link",8,Ve),e("button",{class:"btn small miss",type:"button",disabled:o(t).busy,onClick:T},"Usuń link",8,De)]),s[20]||(s[20]=e("h3",{class:"eyebrow",style:{margin:"18px 0 6px"}},"Jak dodać",-1)),s[21]||(s[21]=e("ol",{class:"small",style:{margin:"0","padding-left":"20px",display:"grid",gap:"6px"}},[e("li",null,[e("b",null,"Kalendarz Google"),N(" (na komputerze, calendar.google.com): po lewej przy „Inne kalendarze” kliknij „+”, wybierz „Z adresu URL”, wklej link i kliknij „Dodaj kalendarz”. Na telefonie z Androidem kalendarz pojawi się sam po synchronizacji konta Google. ")]),e("li",null,[e("b",null,"iPhone / iPad"),N(": Ustawienia → Kalendarz → Konta → Dodaj konto → Inne → Dodaj subskrybowany kalendarz, wklej link i zapisz. ")])],-1)),s[22]||(s[22]=e("p",{class:"muted small",style:{margin:"10px 0 0"}}," Google odświeża subskrybowane kalendarze co kilka godzin, nie od razu: zmiana planu albo wyboru przedmiotów pojawi się w kalendarzu z opóźnieniem. ",-1))],64)):(n(),l("div",fe,[e("button",{class:"btn primary",type:"button",disabled:o(t).busy,onClick:s[3]||(s[3]=a=>o(t).create())},i(o(t).busy?"Tworzenie…":"Utwórz link do kalendarza"),9,ze)]))]),e("section",Ne,[s[28]||(s[28]=e("h2",{id:"haslo-h",style:{"margin-bottom":"12px"}},"Zmiana hasła",-1)),e("form",{onSubmit:V(I,["prevent"]),novalidate:""},[c.value?.message?(n(),l("p",Ze,i(c.value.message),1)):r("",!0),x.value?(n(),l("p",Fe,"Hasło zostało zmienione.")):r("",!0),e("div",Ke,[s[25]||(s[25]=e("label",{for:"pw-current"},"Obecne hasło",-1)),b(e("input",{id:"pw-current","onUpdate:modelValue":s[7]||(s[7]=a=>u.current_password=a),type:"password",autocomplete:"current-password"},null,512),[[k,u.current_password]]),c.value?.fields.current_password?(n(),l("p",Te,i(c.value.fields.current_password),1)):r("",!0)]),e("div",Ge,[s[26]||(s[26]=e("label",{for:"pw-new"},"Nowe hasło (min. 8 znaków)",-1)),b(e("input",{id:"pw-new","onUpdate:modelValue":s[8]||(s[8]=a=>u.password=a),type:"password",autocomplete:"new-password"},null,512),[[k,u.password]]),c.value?.fields.password?(n(),l("p",Be,i(c.value.fields.password),1)):r("",!0)]),e("div",Ie,[s[27]||(s[27]=e("label",{for:"pw-confirm"},"Powtórz nowe hasło",-1)),b(e("input",{id:"pw-confirm","onUpdate:modelValue":s[9]||(s[9]=a=>u.password_confirmation=a),type:"password",autocomplete:"new-password"},null,512),[[k,u.password_confirmation]])]),e("button",{class:"btn primary",type:"submit",disabled:_.value||!u.current_password||!u.password},i(_.value?"Zapisywanie…":"Zmień hasło"),9,Le)],32)]),e("section",Oe,[e("button",{class:"btn miss",type:"button",onClick:s[10]||(s[10]=a=>o(f).logout())},"Wyloguj się")])]))}});export{Me as default};
|