X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=client%2Fsrc%2Fviews%2FHall.vue;h=8d8b311aec49988cbda7837515c5c1ae84255536;hb=94b9ef2d452192b150578aac791da82849c42c05;hp=60f62917226af3c9b2fa3c528e774c1ff25ce1d0;hpb=cd0d7743323309fcfd241ccba959df81a77970c7;p=vchess.git
diff --git a/client/src/views/Hall.vue b/client/src/views/Hall.vue
index 60f62917..1f1750af 100644
--- a/client/src/views/Hall.vue
+++ b/client/src/views/Hall.vue
@@ -1,599 +1,1554 @@
main
input#modalInfo.modal(type="checkbox")
- div(role="dialog" aria-labelledby="infoMessage")
- .card.smallpad.small-modal.text-center
+ div#infoDiv(
+ role="dialog"
+ data-checkbox="modalInfo"
+ )
+ .card.text-center
label.modal-close(for="modalInfo")
- h3#infoMessage.section
- p(v-html="infoMessage")
- input#modalNewgame.modal(type="checkbox")
- div(role="dialog" aria-labelledby="titleFenedit")
- .card.smallpad
+ p(v-html="infoMessage")
+ input#modalAccept.modal(type="checkbox")
+ div#acceptDiv(role="dialog")
+ .card
+ p.text-center
+ span.variantName
+ | {{ curChallToAccept.vname }}
+ | {{ curChallToAccept.options.abridged || '' }}
+ span {{ curChallToAccept.cadence }}
+ span {{ st.tr["with"] + " " + curChallToAccept.from.name }}
+ p.text-center(v-if="!!curChallToAccept.color")
+ | {{ st.tr["Your color:"] + " " + invColor(curChallToAccept.color) }}
+ .diagram(
+ v-if="!!curChallToAccept.fen"
+ v-html="tchallDiag"
+ )
+ .button-group#buttonsTchall(:style="tchallButtonsMargin()")
+ button.acceptBtn(@click="decisionChallenge(true)")
+ span {{ st.tr["Accept challenge?"] }}
+ button.refuseBtn(@click="decisionChallenge(false)")
+ span {{ st.tr["Refuse"] }}
+ input#modalNewgame.modal(
+ type="checkbox"
+ @change="cadenceFocusIfOpened($event)"
+ )
+ div#newgameDiv(
+ role="dialog"
+ data-checkbox="modalNewgame"
+ )
+ .card
label#closeNewgame.modal-close(for="modalNewgame")
- fieldset
- label(for="selectVariant") {{ st.tr["Variant"] }}
- select#selectVariant(v-model="newchallenge.vid")
- option(v-for="v in st.variants" :value="v.id") {{ v.name }}
- fieldset
- label(for="timeControl") {{ st.tr["Time control"] }}
- input#timeControl(type="text" v-model="newchallenge.timeControl"
- placeholder="3m+2s, 1h+30s, 7d+1d ...")
- fieldset(v-if="st.user.id > 0")
- label(for="selectPlayers") {{ st.tr["Play with? (optional)"] }}
- input#selectPlayers(type="text" v-model="newchallenge.to")
- fieldset(v-if="st.user.id > 0")
- label(for="inputFen") {{ st.tr["FEN (optional)"] }}
- input#inputFen(type="text" v-model="newchallenge.fen")
- button(@click="newChallenge") {{ st.tr["Send challenge"] }}
+ div(@keyup.enter="issueNewChallenge()")
+ fieldset
+ label(for="selectVariant") {{ st.tr["Variant"] }} *
+ select#selectVariant(
+ @change="loadNewchallVariant(trySetNewchallDiag)"
+ v-model="newchallenge.vid"
+ )
+ option(
+ v-for="v in st.variants"
+ :value="v.id"
+ :selected="newchallenge.vid==v.id"
+ )
+ | {{ v.display }}
+ // Variant-specific options (often at least randomness)
+ fieldset(v-if="!!newchallenge.V && newchallenge.V.Options")
+ div(v-for="select of newchallenge.V.Options.select || []")
+ label(:for="select.variable + '_opt'") {{ st.tr[select.label] }} *
+ select(:id="select.variable + '_opt'")
+ option(
+ v-for="o of select.options"
+ :value="o.value"
+ :selected="o.value == select.defaut"
+ )
+ | {{ st.tr[o.label] }}
+ div(v-for="check of newchallenge.V.Options.check || []")
+ label(:for="check.variable + '_opt'") {{ st.tr[check.label] }} *
+ input(
+ :id="check.variable + '_opt'"
+ type="checkbox"
+ :checked="check.defaut")
+ fieldset
+ label(for="cadence") {{ st.tr["Cadence"] }} *
+ div#predefinedCadences
+ button(type="button") 15+5
+ button(type="button") 45+30
+ button(type="button") 3d
+ button(type="button") 7d
+ input#cadence(
+ type="text"
+ v-model="newchallenge.cadence"
+ placeholder="5+0, 1h+30s, 5d ..."
+ )
+ fieldset
+ label(for="memorizeChall") {{ st.tr["Memorize"] }}
+ input#memorizeChall(
+ type="checkbox"
+ v-model="newchallenge.memorize"
+ )
+ fieldset(v-if="st.user.id > 0")
+ label(for="selectPlayers") {{ st.tr["Play with"] }}
+ select#selectPlayersInList(
+ v-model="newchallenge.to"
+ @change="changeChallTarget()"
+ )
+ option(value="")
+ option(
+ v-for="p in Object.values(people)"
+ v-if="!!p.name"
+ :value="p.name"
+ )
+ | {{ p.name }}
+ input#selectPlayers(
+ type="text"
+ v-model="newchallenge.to"
+ )
+ fieldset(v-show="st.user.id > 0 && newchallenge.to.length > 0")
+ label(for="selectColor") {{ st.tr["Color"] }}
+ select#selectColor(v-model="newchallenge.color")
+ option(value='')
+ option(value='w') {{ st.tr["White"] }}
+ option(value='b') {{ st.tr["Black"] }}
+ br
+ input#inputFen(
+ placeholder="FEN"
+ @input="trySetNewchallDiag()"
+ type="text"
+ v-model="newchallenge.fen"
+ )
+ .diagram(v-html="newchallenge.diag")
+ button(@click="issueNewChallenge()") {{ st.tr["Send challenge"] }}
+ input#modalPeople.modal(
+ type="checkbox"
+ @click="toggleSocialColor()"
+ )
+ div#peopleWrap(
+ role="dialog"
+ data-checkbox="modalPeople"
+ )
+ .card
+ label.modal-close(for="modalPeople")
+ #people
+ #players
+ p(
+ v-for="sid in Object.keys(people)"
+ v-if="!!people[sid].name"
+ )
+ UserBio.user-bio(:uid="people[sid].id" :uname="people[sid].name")
+ button.player-action(
+ v-if="isGamer(sid)"
+ @click="watchGame(sid)"
+ )
+ | {{ st.tr["Observe"] }}
+ button.player-action(
+ v-else-if="st.user.sid != sid"
+ :class="{focused: isFocusedOnHall(sid)}"
+ @click="challenge(sid)"
+ )
+ | {{ st.tr["Challenge"] }}
+ p.anonymous @nonymous ({{ anonymousCount() }})
+ #chat
+ Chat(
+ ref="chatcomp"
+ @mychat="processChat"
+ :pastChats="[]"
+ )
+ .clearer
.row
.col-sm-12.col-md-10.col-md-offset-1.col-lg-8.col-lg-offset-2
- button(onClick="doClick('modalNewgame')") New game
+ .button-group
+ button#peopleBtn(onClick="window.doClick('modalPeople')")
+ | {{ st.tr["Who's there?"] }}
+ button(@click="showNewchallengeForm()")
+ | {{ st.tr["New game"] }}
+ .row(v-if="presetChalls.length > 0")
+ .col-sm-12.col-md-10.col-md-offset-1.col-lg-8.col-lg-offset-2
+ h4.text-center {{ st.tr["Preset challenges"] }}
+ table
+ thead
+ tr
+ th {{ st.tr["Variant"] }}
+ th {{ st.tr["Cadence"] }}
+ th {{ st.tr["Options"] }}
+ th
+ tbody
+ // TODO: remove the check !!pc.options
+ tr(
+ v-for="pc in presetChalls"
+ @click="newChallFromPreset(pc)"
+ v-if="!!pc.options"
+ )
+ td {{ pc.vname }}
+ td {{ pc.cadence }}
+ td(:class="getRandomnessClass(pc)") {{ pc.options.abridged || '' }}
+ td.remove-preset(@click="removePresetChall($event, pc)")
+ img(src="/images/icons/delete.svg")
.row
.col-sm-12.col-md-10.col-md-offset-1.col-lg-8.col-lg-offset-2
- .collapse
- input#challengeSection(type="radio" checked aria-hidden="true" name="accordion")
- label(for="challengeSection" aria-hidden="true") Challenges
- div
- .button-group
- button(@click="cdisplay='live'") Live Challenges
- button(@click="cdisplay='corr'") Correspondance challenges
- ChallengeList(v-show="cdisplay=='live'"
- :challenges="filterChallenges('live')" @click-challenge="clickChallenge")
- ChallengeList(v-show="cdisplay=='corr'"
- :challenges="filterChallenges('corr')" @click-challenge="clickChallenge")
- input#peopleSection(type="radio" aria-hidden="true" name="accordion")
- label(for="peopleSection" aria-hidden="true") People
- div
- .button-group
- button(@click="pdisplay='players'") Players
- button(@click="pdisplay='chat'") Chat
- #players(v-show="pdisplay=='players'")
- h3 Online players
- .player(v-for="p in uniquePlayers" @click="tryChallenge(p)"
- :class="{anonymous: !!p.count}"
- )
- | {{ p.name + (!!p.count ? " ("+p.count+")" : "") }}
- #chat(v-show="pdisplay=='chat'")
- h3 Chat (TODO)
- input#gameSection(type="radio" aria-hidden="true" name="accordion")
- label(for="gameSection" aria-hidden="true") Games
- div
- .button-group
- button(@click="gdisplay='live'") Live games
- button(@click="gdisplay='corr'") Correspondance games
- GameList(v-show="gdisplay=='live'" :games="filterGames('live')"
- @show-game="showGame")
- GameList(v-show="gdisplay=='corr'" :games="filterGames('corr')"
- @show-game="showGame")
+ div#div2
+ .button-group
+ button.tabbtn#btnClive(@click="setDisplay('c','live',$event)")
+ | {{ st.tr["Live challenges"] }}
+ button.tabbtn#btnCcorr(@click="setDisplay('c','corr',$event)")
+ | {{ st.tr["Correspondence challenges"] }}
+ ChallengeList(
+ v-show="cdisplay=='live'"
+ :challenges="filterChallenges('live')"
+ @click-challenge="clickChallenge"
+ )
+ ChallengeList(
+ v-show="cdisplay=='corr'"
+ :challenges="filterChallenges('corr')"
+ @click-challenge="clickChallenge"
+ )
+ div#div3
+ .button-group
+ button.tabbtn#btnGlive(@click="setDisplay('g','live',$event)")
+ | {{ st.tr["Live games"] }}
+ button.tabbtn#btnGcorr(@click="setDisplay('g','corr',$event)")
+ | {{ st.tr["Correspondence games"] }}
+ GameList(
+ v-show="gdisplay=='live'"
+ :games="filterGames('live')"
+ :show-both="true"
+ @show-game="showGame"
+ )
+ div(v-show="gdisplay=='corr'")
+ GameList(
+ :games="filterGames('corr')"
+ :show-both="true"
+ @show-game="showGame"
+ )
+ button#loadMoreBtn(
+ v-if="hasMore"
+ @click="loadMoreCorr()"
+ )
+ | {{ st.tr["Load more"] }}
-