Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <template>
  2.     <div class="ballsContainer">
  3.         <Ball v-for="(ball, index) in balls" @click.native="chooseBalls(index + 1)" :key="'ball_'+index" :number="index+1"
  4.             :gameName="gameName" :class="{drawnBallMark: markSequence(drawnBalls, index + 1)
  5.            && !checkInvoker('MyBonus'),
  6.            ballMyBonus: checkInvoker('MyBonus'),
  7.            ballHitsPanel: !checkInvoker('MyBonus'),
  8.            chooseMyBonus: markSequence(myBonusFiller, index + 1) && checkInvoker('MyBonus'),
  9.            chooseHitsPanel: markSequence(myBonusBalls, index + 1) && !checkInvoker('MyBonus'),
  10.            }" />
  11.     </div>
  12. </template>
  13. <script>
  14.     import Ball from "CommonElements/Ball";
  15.  
  16.     import {
  17.         mapState,
  18.         mapActions
  19.     } from "vuex";
  20.  
  21.     import {
  22.         ACTION_SET_OPEN_PANEL,
  23.         ACTION_SHOW_DIMMED_BACKGROUND,
  24.         ACTION_SET_MY_BONUS
  25.     } from "Store/types";
  26.  
  27.  
  28.     export default {
  29.         name: 'BallsContainer',
  30.         components: {
  31.             Ball
  32.         },
  33.         props: {
  34.             place: {
  35.                 type: String,
  36.                 default: 'MyBonus'
  37.             }
  38.         },
  39.         data() {
  40.             return {
  41.                 balls: Array(90).fill(0),
  42.                 gameName: "bingo",
  43.                 myBonusFiller: []
  44.             }
  45.         },
  46.         methods: {
  47.             ...mapActions({
  48.                 setOpenPanel: ACTION_SET_OPEN_PANEL,
  49.                 showDimmedBackground: ACTION_SHOW_DIMMED_BACKGROUND,
  50.                 setMyBonus: ACTION_SET_MY_BONUS
  51.             }),
  52.  
  53.             checkInvoker(place) {
  54.                 return this.place == place;
  55.             },
  56.  
  57.             markSequence(ballsArray, ball) {
  58.                 return typeof ballsArray.filter(e => e === ball)[0] === 'number';
  59.             },
  60.  
  61.             markChoosen(index) {
  62.                 return this.myBonusFiller.map(e => e === index);
  63.             },
  64.  
  65.             chooseBalls(ball) {
  66.                 if (this.myBonusFiller.length <= 3) {
  67.                     if (this.myBonusFiller[this.myBonusFiller.length - 1] === ball) return this.myBonusFiller.pop();
  68.  
  69.                     this.myBonusFiller.push(ball);
  70.                     this.markChoosen(ball - 1);
  71.                 }
  72.  
  73.                 if (this.myBonusFiller.length === 3) {
  74.                     this.setMyBonus(this.myBonusFiller);
  75.                     this.sendMyBonusBalls();
  76.                     this.showDimmedBackground(false);
  77.                     return this.setOpenPanel("tickets");
  78.                 }
  79.             },
  80.  
  81.             sendMyBonusBalls() {
  82.                 const requestObject = {
  83.                     to: this.gameType,
  84.                     mybonus_set: this.myBonusBalls,
  85.                     gn: this.gameNumber
  86.                 };
  87.  
  88.                 this.socket.send(JSON.stringify(requestObject));
  89.             }
  90.         },
  91.         computed: {
  92.             ...mapState({
  93.                 socket: state => state.staticData.socket,
  94.                 gameType: state => state.staticData.gameNumber,
  95.                 gameNumber: state => state.dynamicCommonData.gameNumber,
  96.                 showDimmed: state => state.dynamicCommonData.showDimmed,
  97.                 drawnBalls: state => state.dynamicCommonData.balls,
  98.                 myBonusBalls: state => state.dynamicCustomData.myBonus
  99.             }),
  100.         },
  101.         watch: {
  102.             showDimmed() {
  103.                 if (this.showDimmed) this.myBonusFiller = []; //if closed reset
  104.             }
  105.         },
  106.     }
  107. </script>
  108.  
  109.  
  110. <style lang="scss">
  111.     .drawnBallMark {
  112.         opacity: 1 !important;
  113.     }
  114.  
  115.     .chooseMyBonus,
  116.     .chooseHitsPanel {
  117.         background: skyblue;
  118.     }
  119.  
  120.     .ballsContainer {
  121.         @include setImprovedFlex($wrap: wrap);
  122.         @include dimensions(93%, 98%);
  123.  
  124.         .ballMyBonus {
  125.             @include dimensions(8%, 9%);
  126.             font-size: 0.7em;
  127.             cursor: pointer;
  128.         }
  129.  
  130.         .ballHitsPanel {
  131.             @include dimensions(8%, 9%);
  132.             font-size: 0.7em;
  133.             cursor: pointer;
  134.             opacity: 0.5;
  135.             pointer-events: none;
  136.         }
  137.  
  138.         .ballText {
  139.             transform: translate(45%, 50%) rotate(10deg);
  140.         }
  141.     }
  142. </style>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement