Advertisement
Skygen

simulator

Apr 16th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.74 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3.  
  4. <head>
  5.  
  6. <meta charset="utf-8">
  7. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  8. <meta name="description" content="">
  9. <meta name="author" content="">
  10.  
  11. <title>Epic Simulator</title>
  12.  
  13. <!-- Bootstrap core CSS -->
  14. <link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  15.  
  16. <!-- Custom styles for this template -->
  17. <style>
  18. body {
  19. padding-top: 54px;
  20. }
  21. @media (min-width: 992px) {
  22. body {
  23. padding-top: 56px;
  24. }
  25. }
  26.  
  27. .input-group-text {
  28.  
  29. min-width: 50px;
  30. }
  31. table {
  32. table-layout: fixed;
  33. word-wrap: break-word;
  34. }
  35.  
  36. table th, table td {
  37. overflow: hidden;
  38. }
  39. .alert{
  40. margin-top:5px;
  41. margin-bottom: 0px;
  42. }
  43. </style>
  44.  
  45. </head>
  46.  
  47. <body>
  48.  
  49.  
  50.  
  51. <!-- Page Content -->
  52. <div class="container">
  53. <div id="app">
  54. <div style="margin-bottom:15px;">
  55. <h3>Add new ticket type</h1>
  56. <div class="input-group mb-3">
  57. <div class="input-group-prepend">
  58. <span class="input-group-text" id="basic-addon1" style="width: 100px;">Multiplier</span>
  59. </div>
  60. <input type="text" class="form-control" aria-label="Multiplier" aria-describedby="basic-addon1" v-model='enteredMultiplier'>
  61. </div>
  62. <div class="input-group mb-3">
  63. <div class="input-group-prepend">
  64. <span class="input-group-text" id="basic-addon1" style="width: 100px;">Amount</span>
  65. </div>
  66. <input type="text" class="form-control" aria-label="Amount" aria-describedby="basic-addon2" v-model='enteredAmount'>
  67.  
  68. </div>
  69. <button type="button" class="btn btn-success" @click="addToTable">Add</button>
  70. </div>
  71.  
  72. <div class="container">
  73. <div class="row">
  74. <div class="col-8">
  75. <table class="table table-striped table-hover" id="ticketTable">
  76. <thead>
  77. <tr>
  78. <th scope="col">ID</th>
  79. <th scope="col">x (multiplier)</th>
  80. <th scope="col">Amount</th>
  81. <th scope="col">Payout</th>
  82. <th scope="col">Win %</th>
  83. <th scope="col">Delete</th>
  84. </tr>
  85. </thead>
  86. <tbody>
  87. <tr v-for="ticket in tickets">
  88. <td>{{ticket.id}}</td>
  89. <td><input type="text" class="form-control" aria-label="Amount" aria-describedby="basic-addon2" v-model='ticket.multiplier'></td>
  90. <td><input type="text" class="form-control" aria-label="Amount" aria-describedby="basic-addon2" v-model='ticket.amount'></td>
  91. <td>{{ticket.amount * ticket.multiplier}}</td>
  92. <td>{{ticket.amount/total*100}} %</td>
  93. <td><button type="button" class="btn btn-danger" @click="tickets.splice(tickets.indexOf(ticket),1)">Delete</button></td>
  94. </tr>
  95. <thead>
  96. <tr>
  97. <th scope="col">Total tickets:</th>
  98. <th scope="col">{{total}}</th>
  99. </tr>
  100. </thead>
  101.  
  102. </tbody>
  103. </table>
  104. </div>
  105. <div class="col-4">
  106. <div class="card" style="width: 100%;">
  107. <div class="card-body">
  108. <h5 class="card-title">Client Area</h5>
  109. <div class="input-group mb-3">
  110. <div class="input-group-prepend">
  111. <span class="input-group-text" id="basic-addon1" style="width: 88px;">Balance</span>
  112. </div>
  113. <input type="text" class="form-control" aria-label="Balance" aria-describedby="basic-addon2" v-model='balance'>
  114. </div>
  115. <hr>
  116. <div class="input-group mb-3">
  117. <div class="input-group-prepend">
  118. <span class="input-group-text" id="basic-addon1" style="width: 88px;">Iterations</span>
  119. </div>
  120. <input type="text" class="form-control" aria-label="Iterations" aria-describedby="basic-addon2" v-model='iterations'>
  121. </div>
  122. <button type="button" class="btn btn-success" style="" @click="play">PLAY</button>
  123. <div class="alert alert-success" v-if="winner">
  124. Winner ticked ID: {{winner}} <br>
  125. Lucky number: {{luckyNumber}}<br>
  126. <strong>Won: 100</strong>
  127. </div>
  128. </div>
  129. </div>
  130. </div>
  131. </div>
  132.  
  133. </div>
  134.  
  135. <div class="jumbotron" v-if="winner">
  136. <code>{{jsonData}}</code>
  137. </div>
  138.  
  139. </div>
  140.  
  141. </div>
  142.  
  143. <!-- Bootstrap core JavaScript -->
  144. <script src="vendor/jquery/jquery.min.js"></script>
  145. <script src="vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
  146. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  147.  
  148. <script>
  149.  
  150.  
  151. new Vue({
  152. el: '#app',
  153. data: {
  154. message: 'Hello Vue.js!',
  155. enteredMultiplier: "",
  156. enteredAmount: "",
  157. winner: "",
  158. luckyNumber: "",
  159. jsonData: "",
  160. balance: 100,
  161. iterations: 10,
  162. tickets: [
  163. {
  164. id:1,
  165. multiplier: 10,
  166. amount: 1,
  167. },
  168. {
  169. id:2,
  170. multiplier: 5,
  171. amount: 2,
  172. },
  173. {
  174. id:3,
  175. multiplier: 2.5,
  176. amount: 5,
  177. }
  178. ],
  179.  
  180. },
  181. methods:{
  182. addToTable: function () {
  183. var index = 1;
  184. for (let ticket of this.tickets)
  185. {
  186. for (let ticket of this.tickets){
  187. if (ticket.id != index){
  188.  
  189. break;
  190. }
  191. index++;
  192. }
  193.  
  194. }
  195. this.tickets.push({id: index, multiplier: parseFloat(this.enteredMultiplier), amount: parseInt(this.enteredAmount)});
  196. },
  197. play: function () {
  198.  
  199. var counter = 1;
  200. var sumArray = [];
  201.  
  202. for (let ticket of this.tickets)
  203. {
  204. var insertObject = {
  205. id: ticket.id,
  206. luckyNumbers: []
  207. };
  208.  
  209. for (let index = 1; index <= ticket.amount; index++) {
  210.  
  211.  
  212. insertObject.luckyNumbers.push(counter);
  213.  
  214. counter++;
  215.  
  216. }
  217.  
  218. sumArray.push(insertObject);
  219. }
  220. this.jsonData = JSON.stringify(sumArray);
  221. counter = counter - 1;
  222. var luckyNumber = Math.floor((Math.random() * counter) + 1);
  223. this.luckyNumber = luckyNumber;
  224. console.log(luckyNumber);
  225. for (let obj of sumArray) {
  226. var index = obj.luckyNumbers.indexOf(luckyNumber);
  227. if (index != -1) this.winner = obj.id;
  228.  
  229.  
  230.  
  231. }
  232.  
  233.  
  234.  
  235. }
  236.  
  237. },
  238.  
  239. computed: {
  240. total: function(){
  241. return this.tickets.reduce(function(total, item){
  242.  
  243.  
  244. return total + parseInt(item.amount);
  245. },0);
  246. },
  247.  
  248.  
  249.  
  250. }
  251.  
  252. })
  253.  
  254.  
  255.  
  256. </script>
  257.  
  258.  
  259. </body>
  260.  
  261. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement