generated from VLADIMIR/template_frontend
1 line
5.0 KiB
JavaScript
1 line
5.0 KiB
JavaScript
import{B as e,D as t,Dt as n,E as r,H as i,Q as a,S as o,T as s,a as c,b as l,it as u,lt as d,p as f,v as p,x as m,y as h,z as g}from"./vue-router-bPs2Bq2h.js";import{t as _}from"./Card-BfAIKNVo.js";import{t as v}from"./Button-Bkt4L_U7.js";import{t as y}from"./Select-D-lIqB-P.js";import{t as b}from"./use-message-Cg6Qeiec.js";import{t as x}from"./QrCode-c3qDqmj4.js";import{i as S,n as C,t as w}from"./HeaderMenu-DYpd2XW2.js";import{t as T}from"./datetime-BJNH0M1T.js";var E={key:0,class:`screen-center`},D={key:1,class:`screen-page`},O={key:0,class:`screen-center`},k={key:0,class:`screen-center`},A={key:0,class:`screen-qr`},j={key:1,class:`screen-content`},M={key:0,class:`screen-message`},N={key:1,class:`screen-message`},P={key:2,class:`screen-cover`},F=`evening-detective-screen-session`,I=C(t({__name:`ScreenPage`,setup(t){let C=S(),I=b(),L=c(),R=u(``),z=u(``),B=u(),V=u([]),H=u(null),U=u(!1),W=u(!0),G=u(!1),K=u(!1),q=null,J=p(()=>!!(L.query.screenId&&L.query.accessToken)),Y=p(()=>{if(!R.value||!z.value)return``;let e=new URL(`/screen`,window.location.origin);return e.searchParams.set(`screenId`,R.value),e.searchParams.set(`accessToken`,z.value),e.toString()}),X=p(()=>V.value.map(e=>({label:`${T(e.startAt).split(`,`)[0]||`дата не указана`} — ${e.name||`Игра ${e.id}`}`,value:e.id}))),Z=p(()=>B.value?.mode||`SCREEN_MODE_COVER`);function ee(){sessionStorage.setItem(F,JSON.stringify({screenId:R.value,accessToken:z.value}))}function te(){try{let e=JSON.parse(sessionStorage.getItem(F)||`{}`);R.value=e.screenId||``,z.value=e.accessToken||``}catch{sessionStorage.removeItem(F)}}async function ne(){let e=await C.CreateScreenSession({});if(e.error||!e.screenId||!e.accessToken)throw Error(e.error||`Не удалось создать сессию экрана`);R.value=e.screenId,z.value=e.accessToken,ee()}async function Q(){if(!(!R.value||!z.value))try{let e=await C.GetScreenState({screenId:R.value,accessToken:z.value});if(e.error)throw Error(e.error);B.value=e.state}catch(e){I.error(e instanceof Error?e.message:`Не удалось получить состояние экрана`)}}async function re(){try{let e=await C.GetGames({});if(e.error)throw Error(e.error);V.value=e.games||[]}catch(e){I.error(e instanceof Error?e.message:`Не удалось загрузить игры`)}}async function ie(){if(!(!H.value||!L.query.screenId||!L.query.accessToken)){G.value=!0;try{let e=await C.BindScreen({screenId:String(L.query.screenId),accessToken:String(L.query.accessToken),gameId:H.value});if(e.error)throw Error(e.error);K.value=!0}catch(e){I.error(e instanceof Error?e.message:`Не удалось привязать экран`)}finally{G.value=!1}}}async function $(){try{await document.documentElement.requestFullscreen?.()}catch{I.warning(`Полноэкранный режим недоступен в этом браузере`)}U.value=!0}return g(async()=>{if(J.value){await re(),W.value=!1;return}te();try{(!R.value||!z.value)&&await ne(),await Q(),q=window.setInterval(Q,1e3)}catch(e){I.error(e instanceof Error?e.message:`Не удалось подготовить экран`)}finally{W.value=!1}}),e(()=>{q!=null&&window.clearInterval(q)}),(e,t)=>(i(),o(f,null,[J.value?(i(),o(`div`,E,[r(d(_),{class:`binding-card`,title:`Привязка экрана`},{default:a(()=>[K.value?(i(),o(f,{key:0},[t[1]||=h(`p`,null,`Экран привязан к игре.`,-1),t[2]||=h(`p`,null,`Можно закрыть эту страницу.`,-1)],64)):(i(),o(f,{key:1},[t[4]||=h(`p`,null,`Выберите игру, к которой привязать экран.`,-1),r(d(y),{value:H.value,"onUpdate:value":t[0]||=e=>H.value=e,options:X.value,placeholder:`Игра`},null,8,[`value`,`options`]),r(d(v),{type:`primary`,loading:G.value,disabled:H.value==null,onClick:ie},{default:a(()=>[...t[3]||=[s(` Привязать `,-1)]]),_:1},8,[`loading`,`disabled`])],64))]),_:1})])):(i(),o(`div`,D,[W.value?(i(),o(`div`,O,`Подготовка экрана…`)):(i(),o(f,{key:1},[B.value?.gameId?(i(),o(`div`,j,[Z.value===`SCREEN_MODE_INTRO_DONE`?(i(),o(`div`,M,`Успехов`)):Z.value===`SCREEN_MODE_CONCLUSION_DONE`?(i(),o(`div`,N,`Спасибо за игру!`)):(i(),o(`div`,P,[t[8]||=h(`p`,{class:`cover-label`},`Обложка дела`,-1),h(`p`,null,`Игра №`+n(B.value.gameId),1),U.value?m(``,!0):(i(),l(d(v),{key:0,type:`primary`,onClick:$},{default:a(()=>[...t[7]||=[s(`Подготовить экран`,-1)]]),_:1}))]))])):(i(),o(`div`,k,[r(d(_),{class:`qr-card`,title:`Подключение экрана`},{default:a(()=>[Y.value?(i(),o(`div`,A,[r(d(x),{value:Y.value,size:260,padding:0},null,8,[`value`])])):m(``,!0),t[6]||=h(`p`,null,`Отсканируйте QR телефоном организатора и выберите игру.`,-1),U.value?m(``,!0):(i(),l(d(v),{key:1,type:`primary`,onClick:$},{default:a(()=>[...t[5]||=[s(`Подготовить экран`,-1)]]),_:1}))]),_:1})]))],64))])),J.value?(i(),l(w,{key:2,active:`games`})):m(``,!0)],64))}}),[[`__scopeId`,`data-v-5821691e`]]),L=t({__name:`ScreenView`,setup(e){return(e,t)=>(i(),l(I))}});export{L as default}; |