1 line
13 KiB
JavaScript
1 line
13 KiB
JavaScript
import{$ as e,Bt as t,Ct as n,D as r,E as i,H as a,M as o,N as s,O as c,Q as l,T as u,Vt as d,X as f,ct as p,et as m,j as h,l as ee,st as g,vt as _,w as v,y,zt as te}from"./client-CmW03vy2.js";import{t as ne}from"./Button-DuLGZXNV.js";import{n as re,t as ie}from"./PlaceBlock-DoD565zQ.js";import{t as b}from"./Input-QIg_CI3m.js";import{t as ae}from"./Alert-Byy2NOEo.js";import{n as oe,r as se,t as x}from"./es-BkmQwXAV.js";import{t as S}from"./Flex-BPsxaSAU.js";import{t as C}from"./Rate-CFmIFwP5.js";import{t as ce}from"./QrCode-bhz89lbF.js";import{b as w,et as T,t as le}from"./index-DVruj17R.js";import{t as E}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as D}from"./HeaderText-CVs5Vb5h.js";import{t as ue}from"./useSimplePolling-CAz1OqVp.js";import{t as O}from"./MessagePaper-D9QJgkrg.js";var k={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 24 24`},A=s({name:`ContactMailRound`,render:function(e,t){return f(),c(`svg`,k,t[0]||=[u(`path`,{d:`M21 8V7l-3 2l-3-2v1l2.72 1.82a.5.5 0 0 0 .55 0L21 8zm1-5H2C.9 3 0 3.9 0 5v14c0 1.1.9 2 2 2h20c1.1 0 1.99-.9 1.99-2L24 5c0-1.1-.9-2-2-2zM8 6c1.66 0 3 1.34 3 3s-1.34 3-3 3s-3-1.34-3-3s1.34-3 3-3zm6 12H2v-1c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1zm7.5-6h-7c-.28 0-.5-.22-.5-.5v-5c0-.28.22-.5.5-.5h7c.28 0 .5.22.5.5v5c0 .28-.22.5-.5.5z`,fill:`currentColor`},null,-1)])}}),j={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 512 512`},M=s({name:`Footsteps`,render:function(e,t){return f(),c(`svg`,j,t[0]||=[u(`path`,{d:`M133.83 361.27c-22.61 0-41-8.17-54.79-24.39s-22.84-40.29-28.11-75.31c-7.76-51.61-.06-95.11 21.68-122.48c12.8-16.12 29.6-25.44 48.58-26.94c16.25-1.3 40.54 5.29 64 44c14.69 24.24 25.86 56.44 30.65 88.34c5.79 38.51 1.48 66.86-13.18 86.65c-11.64 15.72-29.54 25.46-53.21 29a106.46 106.46 0 0 1-15.62 1.13z`,fill:`currentColor`},null,-1),u(`path`,{d:`M173 496c-13.21 0-26.6-4.23-38.66-12.36a79.79 79.79 0 0 1-33.52-50.6c-2.85-14.66-1.14-26.31 5.22-35.64c10.33-15.15 28.87-18.56 48.49-22.18c2.07-.38 4.17-.76 6.3-1.17c4.52-.86 9.14-2 13.62-3.11c16.78-4.14 34.14-8.43 48.47 1.75c9.59 6.8 15 18.36 16.62 35.32c1.84 19.57-2.36 39.1-11.83 55c-10.19 17.11-25.47 28.42-43 31.86A61 61 0 0 1 173 496z`,fill:`currentColor`},null,-1),u(`path`,{d:`M378.17 265.27a106.69 106.69 0 0 1-15.6-1.2c-23.66-3.5-41.56-13.25-53.2-29c-14.66-19.79-19-48.13-13.18-86.65c4.79-31.93 15.93-64.1 30.55-88.25c23.34-38.57 47.66-45.26 64-44.08c18.92 1.38 35.69 10.57 48.51 26.6c21.89 27.37 29.65 71 21.86 122.84c-5.27 35-14.2 58.95-28.11 75.31s-32.22 24.43-54.83 24.43z`,fill:`currentColor`},null,-1),u(`path`,{d:`M339 400a61 61 0 0 1-11.68-1.13c-17.56-3.44-32.84-14.75-43-31.86c-9.47-15.9-13.67-35.43-11.83-55c1.6-17 7-28.52 16.62-35.33c14.33-10.17 31.69-5.89 48.47-1.74c4.48 1.1 9.1 2.24 13.62 3.11l6.29 1.17c19.63 3.61 38.17 7 48.5 22.17c6.36 9.33 8.07 21 5.22 35.64a79.78 79.78 0 0 1-33.52 50.61C365.56 395.78 352.17 400 339 400z`,fill:`currentColor`},null,-1)])}}),N={},P={class:`belt-block`};function F(t,n){return f(),c(`div`,null,[n[0]||=u(`div`,{class:`shadow shadow-top`},null,-1),n[1]||=u(`div`,{class:`shadow shadow-bottom`},null,-1),u(`div`,P,[e(t.$slots,`default`,{},void 0,!0)])])}var I=E(N,[[`render`,F],[`__scopeId`,`data-v-bec154c5`]]),L={},R={class:`plate-block`},z={class:`metal-plate-block`};function B(t,n){return f(),c(`div`,R,[u(`div`,z,[e(t.$slots,`default`,{},void 0,!0)]),n[0]||=u(`div`,{class:`pin pin-top-left`},null,-1),n[1]||=u(`div`,{class:`pin pin-top-right`},null,-1),n[2]||=u(`div`,{class:`pin pin-bottom-right`},null,-1),n[3]||=u(`div`,{class:`pin pin-bottom-left`},null,-1)])}var V=E(L,[[`render`,B],[`__scopeId`,`data-v-4833fe7e`]]),H={class:`form-custom`},U={class:`center-block-700`},W={class:`controller`},G={class:`counters-block`},K={class:`counter-block`},q={class:`places-text`},J={class:`counter-block`},Y={class:`places-text`},X={class:`game-input`},Z=[`placeholder`,`disabled`],Q=[`disabled`],de=E(s({__name:`GameInputForm`,props:{addAction:{type:Function},allPlacesCount:{},newPlacesCount:{},gameStatus:{}},setup(e){let t=_(``),a=e;async function s(){await a.addAction(t.value),t.value=``}function m(e){e%=100;let t=Math.floor(e/10)%10,n=e%10,r=`–`,i=`–`;return t>0&&(r=String(t)),(n>0||t>0)&&(i=String(n)),[r,i]}return(ee,_)=>(f(),c(`div`,H,[o(I,{class:`input-form`},{default:g(()=>[o(V,{class:`controller-metal controller-metal-left`}),o(V,{class:`controller-metal controller-metal-right`}),u(`div`,U,[u(`div`,W,[u(`div`,G,[u(`div`,K,[u(`div`,q,[o(n(x),{class:`icon-for-counter`},{default:g(()=>[o(n(M))]),_:1})]),(f(!0),c(y,null,l(m(e.allPlacesCount),(e,t)=>(f(),c(`div`,{key:t,class:`places-text places-text-number`},d(e),1))),128))]),u(`div`,J,[u(`div`,Y,[o(n(x),{class:`icon-for-counter`},{default:g(()=>[o(n(A))]),_:1})]),(f(!0),c(y,null,l(m(e.newPlacesCount),(e,t)=>(f(),c(`div`,{key:t,class:`places-text places-text-number`},d(e),1))),128))])]),u(`div`,X,[p(u(`input`,{id:`run`,class:`game-input-run`,"onUpdate:modelValue":_[0]||=e=>t.value=e,type:`text`,placeholder:a.gameStatus==`run`?`Место назначения`:`Ходы запрещены`,disabled:a.gameStatus!=`run`},null,8,Z),[[T,t.value]])]),_[4]||=u(`div`,{class:`game-button-run-shadow`},null,-1),u(`button`,{class:`game-button-run`,type:`submit`,disabled:t.value.length==0,onClick:s},[a.gameStatus==`run`?(f(),i(D,{key:0},{default:g(()=>[..._[1]||=[h(`Поехали`,-1)]]),_:1})):r(``,!0),a.gameStatus==`pause`||a.gameStatus==`draft`?(f(),i(D,{key:1},{default:g(()=>[..._[2]||=[h(`Ждём`,-1)]]),_:1})):r(``,!0),a.gameStatus==`finish`?(f(),i(D,{key:2},{default:g(()=>[..._[3]||=[h(`Всё`,-1)]]),_:1})):r(``,!0)],8,Q)])])]),_:1})]))}}),[[`__scopeId`,`data-v-3d06b938`]]),fe={key:0,class:`width700`},pe=[`disabled`],me={key:1,class:`width700`},he={class:`question-text`},ge={class:`qr-block`},_e={key:4,class:`edit-panel`},$=E(s({__name:`TeamStoryPage`,setup(e){let s=le(),p=oe(),x=se(),T=ee(),E=T.params.id,D=T.query.password,k=_(0),A=_([]),j=_(``),M=_(),N=_({introduction:void 0,places:[],questions:[]}),P=_({ID:void 0,name:void 0,description:void 0,startAt:void 0,status:void 0,format:void 0,location:void 0,scenario:void 0,teams:void 0}),F=_(``),I=`game-review-${E}`,L=_(localStorage.getItem(I)===`1`),R=_(0),z=_(0),B=_(``),V=_(!1),H=window.location.href,U=()=>{let e=M.value;return e?e.scrollHeight-e.scrollTop-e.clientHeight<1:!1};async function W(){let e=N.value,t;try{t=await p.GetTeamStory({ID:Number(E),password:D})}catch(e){j.value=`Не удалось загрузить дело. Попробуйте обновить страницу.`,console.error(`Failed to load team story:`,e);return}j.value=``,P.value=t.game;let n=U();n&&(k.value=0);let r=N.value.places.length;N.value={background:t.story.background,introduction:t.story.introduction,places:t.story.places?.map((t,n)=>(console.log(e?.places[n]?.mode),{place:t,mode:e?.places[n]?.mode||`show`}))||[],questions:t.story.questions||[]},A.value=t.actions||[];let i=N.value.places.length;if(i>r&&r!=0&&(k.value+=i-r),await a(),n&&r!=0){let e=M.value;if(!e)return!1;e.scrollTop=e.scrollHeight}}W(),q();async function G(e){await p.AddTeamAction({ID:Number(E),password:D,code:e}),await W(),F.value=``,await a(),k.value=0}let K=_({});async function q(){let e;try{e=await p.GetTeamAnswers({ID:Number(E),password:D})}catch(e){j.value=`Не удалось загрузить ответы команды. Попробуйте обновить страницу.`,console.error(`Failed to load team answers:`,e);return}j.value=``;let t={};for(let n of e.answers||[])t[n.questionCode||``]=n.answer||``;K.value=t}async function J(){await p.SubmitTeamAnswers({ID:Number(E),password:D,answers:(N.value.questions||[]).map(e=>({questionCode:e.code,answer:K.value[e.code||``]||``}))}),x.success(`Ответы сохранены`),await q()}let Y=v(()=>P.value?.format!==`offline`&&(P.value?.status==`run`||P.value?.status==`pause`)),X=v(()=>P.value?.format!==`offline`&&(N.value.questions?.length||0)>0),Z={Input:{border:`1px dashed black`,borderDisabled:`1px dashed black`,borderFocus:`1px solid black`,borderHover:`1px dashed black`,boxShadowFocus:`0 0 0 1px black`,caretColor:`black`,color:`transparent`,colorDisabled:`transparent`,colorFocus:`transparent`,fontSizeMedium:`18px`,placeholderColor:`black`,placeholderColorDisabled:`black`,textColor:`black`,textColorDisabled:`black`},Rate:{itemColor:`black`,itemColorHover:`#b8860b`,itemColorActive:`#b8860b`}};async function Q(){if(!R.value||!z.value||B.value.trim()===``){x.error(`Поставьте оценки и напишите отзыв`);return}V.value=!0,await p.CreateGameReview({gameID:Number(P.value?.ID),teamID:Number(E),password:D,rating:R.value,difficulty:z.value,text:B.value.trim()}),V.value=!1,L.value=!0,localStorage.setItem(I,`1`),x.success(`Спасибо за отзыв`)}async function $(){await p.DeleteLastTeamAction({ID:Number(E)}),await W(),F.value=``}return ue(()=>{W()},2e3),(e,a)=>{let p=m(`n-space`);return f(),c(y,null,[N.value.background?(f(),c(`div`,{key:0,class:`case-background`,style:t({backgroundImage:`url(${JSON.stringify(N.value.background)})`}),"aria-hidden":`true`},null,4)):r(``,!0),u(`div`,{class:te([`center-block-custom bottom-margin smooth-scroll`,{"game-finished":P.value?.status===`finish`}]),ref_key:`scrollContainer`,ref:M},[P.value?.status===`finish`?(f(),c(`div`,fe,[o(O,{role:`status`},{default:g(()=>[...a[4]||=[u(`div`,{class:`font`},`Игра завершена. Спасибо за участие!`,-1)]]),_:1}),L.value?r(``,!0):(f(),i(O,{key:0,class:`review-block`},{default:g(()=>[a[7]||=u(`div`,{class:`font`},`Оцените игру`,-1),a[8]||=u(`hr`,{class:`questions-hr`},null,-1),o(n(w),{"theme-overrides":Z},{default:g(()=>[a[5]||=u(`div`,{class:`review-rating font`},`Оценка`,-1),o(n(C),{value:R.value,"onUpdate:value":a[0]||=e=>R.value=e,count:5,class:`review-rate`},null,8,[`value`]),a[6]||=u(`div`,{class:`review-rating font`},`Сложность`,-1),o(n(C),{value:z.value,"onUpdate:value":a[1]||=e=>z.value=e,count:3,class:`review-rate`},null,8,[`value`]),o(n(b),{value:B.value,"onUpdate:value":a[2]||=e=>B.value=e,class:`review-input`,type:`textarea`,autosize:{minRows:4,maxRows:8},placeholder:`Расскажите, как прошла игра`},null,8,[`value`]),o(n(S),{justify:`end`,class:`questions-actions`},{default:g(()=>[u(`button`,{type:`button`,class:`paper-button`,disabled:V.value,onClick:Q},` Отправить отзыв `,8,pe)]),_:1})]),_:1})]),_:1}))])):(f(),c(`div`,me,[j.value?(f(),i(n(ae),{key:0,type:`error`,role:`alert`},{default:g(()=>[h(d(j.value),1)]),_:1})):r(``,!0),o(de,{addAction:G,allPlacesCount:N.value.places.length,newPlacesCount:k.value,gameStatus:P.value?.status||``},null,8,[`allPlacesCount`,`newPlacesCount`,`gameStatus`]),P.value?.format!==`offline`&&P.value?.status&&P.value.status!=`draft`&&N.value.introduction&&(N.value.introduction.text||N.value.introduction.audio)?(f(),i(re,{key:1,introduction:N.value.introduction,mode:`show`},null,8,[`introduction`])):r(``,!0),X.value&&P.value?.status&&P.value.status!=`draft`?(f(),i(O,{key:2,class:`questions-block`},{default:g(()=>[a[9]||=u(`div`,{class:`font`},`Вопросы дела`,-1),a[10]||=u(`hr`,{class:`questions-hr`},null,-1),a[11]||=u(`p`,{class:`questions-hint font`},` Ответьте на вопросы дела. Ответы можно менять, пока игра идёт. `,-1),o(n(w),{"theme-overrides":Z},{default:g(()=>[(f(!0),c(y,null,l(N.value.questions,e=>(f(),c(`div`,{key:e.code,class:`question-item font`},[u(`div`,he,d(e.code)+`: `+d(e.text),1),o(n(b),{value:K.value[e.code||``],"onUpdate:value":t=>K.value[e.code||``]=t,type:`textarea`,autosize:{minRows:2,maxRows:6},disabled:!Y.value,placeholder:`Ваш ответ...`},null,8,[`value`,`onUpdate:value`,`disabled`])]))),128)),Y.value?(f(),i(n(S),{key:0,justify:`end`,class:`questions-actions`},{default:g(()=>[u(`button`,{type:`button`,class:`paper-button`,onClick:a[3]||=e=>J()},` Сохранить ответы `)]),_:1})):r(``,!0)]),_:1})]),_:1})):r(``,!0),(f(!0),c(y,null,l(N.value.places,(e,t)=>(f(),i(ie,{place:e.place,mode:e.mode,"onUpdate:mode":t=>e.mode=t,key:`${P.value?.format}:${e.place.code}`,mcp:n(s).hasRole(`author`)&&A.value[t]?.mcp,addAction:G},null,8,[`place`,`mode`,`onUpdate:mode`,`mcp`]))),128)),N.value.places.length==0&&P.value?.status==`draft`?(f(),i(O,{key:3,class:`qr-main-block`},{default:g(()=>[o(p,{vertical:``},{default:g(()=>[a[12]||=u(`h2`,{class:`qr-main-block-text`},`Это код этого дела`,-1),a[13]||=u(`p`,{class:`qr-main-block-text`},`Поделись с командой`,-1),u(`div`,ge,[o(n(ce),{value:n(H),size:300,padding:0},null,8,[`value`])]),a[14]||=u(`p`,{class:`qr-main-block-text`},`Игра скоро начнется`,-1)]),_:1})]),_:1})):r(``,!0),n(s).hasRole(`author`)&&N.value.places.length>0?(f(),c(`div`,_e,[o(n(S),{justify:`end`},{default:g(()=>[o(n(ne),{onClick:$},{default:g(()=>[...a[15]||=[h(`Удалить последний ход`,-1)]]),_:1})]),_:1})])):r(``,!0)]))],2)],64)}}}),[[`__scopeId`,`data-v-6b0532ed`]]),ve=s({__name:`TeamStoryView`,setup(e){return(e,t)=>(f(),i($))}});export{ve as default}; |