Files
prod/frontend/dist/assets/TeamStoryView-DAyX5Bzi.js
T
2026-10-04 13:32:15 +07:00

1 line
13 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{$ as e,D as t,E as n,Lt as r,M as i,N as a,O as o,Q as s,Rt as c,T as l,V as u,Y as d,Z as f,at as p,gt as m,j as h,l as ee,ot as g,w as _,xt as v,y,zt as b}from"./client-Dr2LhGo3.js";import{t as te}from"./Button-WPexDTO1.js";import{n as ne,t as re}from"./PlaceBlock-DtKTdiBC.js";import{t as x}from"./Input-Cfvxoe3L.js";import{t as ie}from"./Alert-dDWZrYMw.js";import{n as ae,r as oe,t as S}from"./es-C6VONkOl.js";import{t as C}from"./Flex-DVfMf1kX.js";import{t as w}from"./Rate-CP5wSCbE.js";import{t as se}from"./QrCode-C77qvj1J.js";import{b as T,et as E,t as ce}from"./index-VgViCwpY.js";import{t as D}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as O}from"./HeaderText-DaAsTchV.js";import{t as le}from"./useSimplePolling-CNLkEswH.js";import{t as k}from"./MessagePaper-DVRJzEGA.js";var A={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 24 24`},j=a({name:`ContactMailRound`,render:function(e,t){return d(),o(`svg`,A,t[0]||=[l(`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)])}}),M={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 512 512`},N=a({name:`Footsteps`,render:function(e,t){return d(),o(`svg`,M,t[0]||=[l(`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),l(`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),l(`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),l(`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)])}}),P={},F={class:`belt-block`};function I(e,t){return d(),o(`div`,null,[t[0]||=l(`div`,{class:`shadow shadow-top`},null,-1),t[1]||=l(`div`,{class:`shadow shadow-bottom`},null,-1),l(`div`,F,[s(e.$slots,`default`,{},void 0,!0)])])}var L=D(P,[[`render`,I],[`__scopeId`,`data-v-bec154c5`]]),R={},z={class:`plate-block`},B={class:`metal-plate-block`};function V(e,t){return d(),o(`div`,z,[l(`div`,B,[s(e.$slots,`default`,{},void 0,!0)]),t[0]||=l(`div`,{class:`pin pin-top-left`},null,-1),t[1]||=l(`div`,{class:`pin pin-top-right`},null,-1),t[2]||=l(`div`,{class:`pin pin-bottom-right`},null,-1),t[3]||=l(`div`,{class:`pin pin-bottom-left`},null,-1)])}var H=D(R,[[`render`,V],[`__scopeId`,`data-v-4833fe7e`]]),U={class:`form-custom`},W={class:`center-block-700`},G={class:`controller`},K={class:`counters-block`},q={class:`counter-block`},J={class:`places-text`},Y={class:`counter-block`},X={class:`places-text`},Z={class:`game-input`},Q=[`placeholder`,`disabled`],$=[`disabled`],ue=D(a({__name:`GameInputForm`,props:{addAction:{type:Function},allPlacesCount:{},newPlacesCount:{},gameStatus:{}},setup(e){let r=m(``),a=e;async function s(){await a.addAction(r.value),r.value=``}function c(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(u,m)=>(d(),o(`div`,U,[i(L,{class:`input-form`},{default:p(()=>[i(H,{class:`controller-metal controller-metal-left`}),i(H,{class:`controller-metal controller-metal-right`}),l(`div`,W,[l(`div`,G,[l(`div`,K,[l(`div`,q,[l(`div`,J,[i(v(S),{class:`icon-for-counter`},{default:p(()=>[i(v(N))]),_:1})]),(d(!0),o(y,null,f(c(e.allPlacesCount),(e,t)=>(d(),o(`div`,{key:t,class:`places-text places-text-number`},b(e),1))),128))]),l(`div`,Y,[l(`div`,X,[i(v(S),{class:`icon-for-counter`},{default:p(()=>[i(v(j))]),_:1})]),(d(!0),o(y,null,f(c(e.newPlacesCount),(e,t)=>(d(),o(`div`,{key:t,class:`places-text places-text-number`},b(e),1))),128))])]),l(`div`,Z,[g(l(`input`,{id:`run`,class:`game-input-run`,"onUpdate:modelValue":m[0]||=e=>r.value=e,type:`text`,placeholder:a.gameStatus==`run`?`Место назначения`:`Ходы запрещены`,disabled:a.gameStatus!=`run`},null,8,Q),[[E,r.value]])]),m[4]||=l(`div`,{class:`game-button-run-shadow`},null,-1),l(`button`,{class:`game-button-run`,type:`submit`,disabled:r.value.length==0,onClick:s},[a.gameStatus==`run`?(d(),n(O,{key:0},{default:p(()=>[...m[1]||=[h(`Поехали`,-1)]]),_:1})):t(``,!0),a.gameStatus==`pause`||a.gameStatus==`draft`?(d(),n(O,{key:1},{default:p(()=>[...m[2]||=[h(`Ждём`,-1)]]),_:1})):t(``,!0),a.gameStatus==`finish`?(d(),n(O,{key:2},{default:p(()=>[...m[3]||=[h(`Всё`,-1)]]),_:1})):t(``,!0)],8,$)])])]),_:1})]))}}),[[`__scopeId`,`data-v-3d06b938`]]),de={key:0,class:`width700`},fe=[`disabled`],pe={key:1,class:`width700`},me={class:`question-text`},he={class:`qr-block`},ge={key:4,class:`edit-panel`},_e=D(a({__name:`TeamStoryPage`,setup(a){let s=ce(),g=ae(),S=oe(),E=ee(),D=E.params.id,O=E.query.password,A=m(0),j=m([]),M=m(``),N=m(),P=m({introduction:void 0,places:[],questions:[]}),F=m({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}),I=m(``),L=`game-review-${D}`,R=m(localStorage.getItem(L)===`1`),z=m(0),B=m(0),V=m(``),H=m(!1),U=window.location.href,W=()=>{let e=N.value;return e?e.scrollHeight-e.scrollTop-e.clientHeight<1:!1};async function G(){let e=P.value,t;try{t=await g.GetTeamStory({ID:Number(D),password:O})}catch(e){M.value=`Не удалось загрузить дело. Попробуйте обновить страницу.`,console.error(`Failed to load team story:`,e);return}M.value=``,F.value=t.game;let n=W();n&&(A.value=0);let r=P.value.places.length;P.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||[]},j.value=t.actions||[];let i=P.value.places.length;if(i>r&&r!=0&&(A.value+=i-r),await u(),n&&r!=0){let e=N.value;if(!e)return!1;e.scrollTop=e.scrollHeight}}G(),J();async function K(e){await g.AddTeamAction({ID:Number(D),password:O,code:e}),await G(),I.value=``,await u(),A.value=0}let q=m({});async function J(){let e;try{e=await g.GetTeamAnswers({ID:Number(D),password:O})}catch(e){M.value=`Не удалось загрузить ответы команды. Попробуйте обновить страницу.`,console.error(`Failed to load team answers:`,e);return}M.value=``;let t={};for(let n of e.answers||[])t[n.questionCode||``]=n.answer||``;q.value=t}async function Y(){await g.SubmitTeamAnswers({ID:Number(D),password:O,answers:(P.value.questions||[]).map(e=>({questionCode:e.code,answer:q.value[e.code||``]||``}))}),S.success(`Ответы сохранены`),await J()}let X=_(()=>F.value?.format!==`offline`&&(F.value?.status==`run`||F.value?.status==`pause`)),Z=_(()=>F.value?.format!==`offline`&&(P.value.questions?.length||0)>0),Q={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 $(){if(!z.value||!B.value||V.value.trim()===``){S.error(`Поставьте оценки и напишите отзыв`);return}H.value=!0,await g.CreateGameReview({gameID:Number(F.value?.ID),teamID:Number(D),password:O,rating:z.value,difficulty:B.value,text:V.value.trim()}),H.value=!1,R.value=!0,localStorage.setItem(L,`1`),S.success(`Спасибо за отзыв`)}async function _e(){await g.DeleteLastTeamAction({ID:Number(D)}),await G(),I.value=``}return le(()=>{G()},2e3),(a,u)=>{let m=e(`n-space`);return d(),o(y,null,[P.value.background?(d(),o(`div`,{key:0,class:`case-background`,style:c({backgroundImage:`url(${JSON.stringify(P.value.background)})`}),"aria-hidden":`true`},null,4)):t(``,!0),l(`div`,{class:r([`center-block-custom bottom-margin smooth-scroll`,{"game-finished":F.value?.status===`finish`}]),ref_key:`scrollContainer`,ref:N},[F.value?.status===`finish`?(d(),o(`div`,de,[i(k,{role:`status`},{default:p(()=>[...u[4]||=[l(`div`,{class:`font`},`Игра завершена. Спасибо за участие!`,-1)]]),_:1}),R.value?t(``,!0):(d(),n(k,{key:0,class:`review-block`},{default:p(()=>[u[7]||=l(`div`,{class:`font`},`Оцените игру`,-1),u[8]||=l(`hr`,{class:`questions-hr`},null,-1),i(v(T),{"theme-overrides":Q},{default:p(()=>[u[5]||=l(`div`,{class:`review-rating font`},`Оценка`,-1),i(v(w),{value:z.value,"onUpdate:value":u[0]||=e=>z.value=e,count:5,class:`review-rate`},null,8,[`value`]),u[6]||=l(`div`,{class:`review-rating font`},`Сложность`,-1),i(v(w),{value:B.value,"onUpdate:value":u[1]||=e=>B.value=e,count:3,class:`review-rate`},null,8,[`value`]),i(v(x),{value:V.value,"onUpdate:value":u[2]||=e=>V.value=e,class:`review-input`,type:`textarea`,autosize:{minRows:4,maxRows:8},placeholder:`Расскажите, как прошла игра`},null,8,[`value`]),i(v(C),{justify:`end`,class:`questions-actions`},{default:p(()=>[l(`button`,{type:`button`,class:`paper-button`,disabled:H.value,onClick:$},` Отправить отзыв `,8,fe)]),_:1})]),_:1})]),_:1}))])):(d(),o(`div`,pe,[M.value?(d(),n(v(ie),{key:0,type:`error`,role:`alert`},{default:p(()=>[h(b(M.value),1)]),_:1})):t(``,!0),i(ue,{addAction:K,allPlacesCount:P.value.places.length,newPlacesCount:A.value,gameStatus:F.value?.status||``},null,8,[`allPlacesCount`,`newPlacesCount`,`gameStatus`]),F.value?.format!==`offline`&&F.value?.status&&F.value.status!=`draft`&&P.value.introduction&&(P.value.introduction.text||P.value.introduction.audio)?(d(),n(ne,{key:1,introduction:P.value.introduction,mode:`show`},null,8,[`introduction`])):t(``,!0),Z.value&&F.value?.status&&F.value.status!=`draft`?(d(),n(k,{key:2,class:`questions-block`},{default:p(()=>[u[9]||=l(`div`,{class:`font`},`Вопросы дела`,-1),u[10]||=l(`hr`,{class:`questions-hr`},null,-1),u[11]||=l(`p`,{class:`questions-hint font`},` Ответьте на вопросы дела. Ответы можно менять, пока игра идёт. `,-1),i(v(T),{"theme-overrides":Q},{default:p(()=>[(d(!0),o(y,null,f(P.value.questions,e=>(d(),o(`div`,{key:e.code,class:`question-item font`},[l(`div`,me,b(e.code)+`: `+b(e.text),1),i(v(x),{value:q.value[e.code||``],"onUpdate:value":t=>q.value[e.code||``]=t,type:`textarea`,autosize:{minRows:2,maxRows:6},disabled:!X.value,placeholder:`Ваш ответ...`},null,8,[`value`,`onUpdate:value`,`disabled`])]))),128)),X.value?(d(),n(v(C),{key:0,justify:`end`,class:`questions-actions`},{default:p(()=>[l(`button`,{type:`button`,class:`paper-button`,onClick:u[3]||=e=>Y()},` Сохранить ответы `)]),_:1})):t(``,!0)]),_:1})]),_:1})):t(``,!0),(d(!0),o(y,null,f(P.value.places,(e,t)=>(d(),n(re,{place:e.place,mode:e.mode,"onUpdate:mode":t=>e.mode=t,key:`${F.value?.format}:${e.place.code}`,mcp:v(s).hasRole(`author`)&&j.value[t]?.mcp,addAction:K},null,8,[`place`,`mode`,`onUpdate:mode`,`mcp`]))),128)),P.value.places.length==0&&F.value?.status==`draft`?(d(),n(k,{key:3,class:`qr-main-block`},{default:p(()=>[i(m,{vertical:``},{default:p(()=>[u[12]||=l(`h2`,{class:`qr-main-block-text`},`Это код этого дела`,-1),u[13]||=l(`p`,{class:`qr-main-block-text`},`Поделись с командой`,-1),l(`div`,he,[i(v(se),{value:v(U),size:300,padding:0},null,8,[`value`])]),u[14]||=l(`p`,{class:`qr-main-block-text`},`Игра скоро начнется`,-1)]),_:1})]),_:1})):t(``,!0),v(s).hasRole(`author`)&&P.value.places.length>0?(d(),o(`div`,ge,[i(v(C),{justify:`end`},{default:p(()=>[i(v(te),{onClick:_e},{default:p(()=>[...u[15]||=[h(`Удалить последний ход`,-1)]]),_:1})]),_:1})])):t(``,!0)]))],2)],64)}}}),[[`__scopeId`,`data-v-6b0532ed`]]),ve=a({__name:`TeamStoryView`,setup(e){return(e,t)=>(d(),n(_e))}});export{ve as default};