main.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. /**
  2. * Created by nik on 01.10.15.
  3. * location.reload();
  4. * $window.location.reload();
  5. */
  6. var i = false;
  7. var angular;
  8. app.controller('PulseCtrl', function ($scope, $http, /*$cookies,*/ $modal) {
  9. $scope.mngEl = true;
  10. $scope.mngImg = true;
  11. getUserAndLot(); // Записываем в $scop открывшего страницу и лот
  12. getLog();
  13. $scope.upBid = function (bidForm) {
  14. if (bidForm.chkbox === true && $scope.data.leftTimeStop !== 'Торги закінчені!' && $scope.data.last_user !== $scope.data.member_user_id) {
  15. var urlId = window.location.search;
  16. var dataPUT = {};
  17. dataPUT.last_user = $scope.data.member_user_id;
  18. dataPUT.price_in = $scope.data.next_price;
  19. $scope.mngEl = false;
  20. $scope.mngImg = false;
  21. setTimeout(function () {
  22. return $scope.mngImg = true
  23. }, 2000);
  24. $http({
  25. method: 'PUT',
  26. url: '/auction/' + urlId.substring(4),
  27. data: dataPUT
  28. }).then(
  29. function successClbck(data) {
  30. //----------------------------------------------------
  31. if (~!['1', '2', '3'].indexOf(data.data)) {
  32. setTimeout(function () {
  33. var content;
  34. switch (data.data) {
  35. case '1':
  36. content = 'Ваша цінова пропозиція прийнята';
  37. break;
  38. case '2':
  39. content = 'Ваша цінова пропозиція є найвищою, Ви не можете запропонувати наступну';
  40. break;
  41. case '3':
  42. content = 'Запропонована Вами цінова пропозиція вже не є актуальною';
  43. break
  44. }
  45. $modal({
  46. title: 'Повідомлення',
  47. content: content,
  48. show: true,
  49. templateUrl: '../modal.tpl.html'
  50. });
  51. }, 100);
  52. }
  53. //----------------------------------------------------
  54. });
  55. angular.element(document.querySelector("#chkbx")).attr("checked", false);
  56. bidForm.chkbox = false;
  57. delete $scope.data.leftTimeStop;
  58. delete $scope.data.last_user;
  59. // Делаем ставку отправляя только пользователя и лот
  60. } else {
  61. $modal({
  62. title: 'Повідомлення',
  63. content: 'Заборонено робити кілька ставок поспіль, чи без підтвердження!',
  64. show: true,
  65. templateUrl: '../modal.tpl.html'
  66. });
  67. bidForm.chkbox = false;
  68. delete $scope.data.leftTimeStop;
  69. delete $scope.data.last_user;
  70. angular.element(document.querySelector("#chkbx")).attr("checked", false);
  71. }
  72. };
  73. function getUserAndLot() { // получаем основные данные
  74. $http({
  75. method: 'GET',
  76. url: '/auction/' + window.location.search
  77. }).then(
  78. function successClbck(data) {
  79. $scope.type_id = true;
  80. data = data.data[0];
  81. $scope.user_role = data.user_role;
  82. $scope.member_user_id = data.member_user_id;
  83. $scope.pulse = new Date(data.current_time * 1000);
  84. //----------------------------------------------------
  85. if (data.type_id === 2) $scope.type_id = false; // определяем тип торгов, если 2 убираем видимость "Зміна ціни"
  86. if (data.status === 1) {
  87. $scope.date_stop_show = false;
  88. $scope.left_time_stop = false;
  89. $scope.left_time_start = true;
  90. $scope.control = false;
  91. $scope.bid_stop = false;
  92. }
  93. // State view 2 - Bidding;
  94. else if (data.status === 2) {
  95. $scope.status = 2;
  96. $scope.left_time_start = false;
  97. $scope.date_stop_show = true;
  98. $scope.left_time_stop = true;
  99. $scope.control = true;
  100. $scope.bid_stop = false;
  101. }
  102. // State view 3 - Post bidding +++++
  103. else if (data.status === 3 || data.status === 4) {
  104. $scope.date_stop_show = true;
  105. $scope.left_time_stop = false;
  106. $scope.control = false;
  107. $scope.bid_stop = true;
  108. $scope.mngEl = true;
  109. }
  110. data.timeRich = getTimeRemaining(data.time);
  111. data.next_price = data.next_price === data.step_money ? data.start_price : data.next_price;
  112. // логика отключает removeClass('disabled') у кнопки если цикл уже раз пройден chkbx
  113. if (i !== true) angular.element(document.querySelector("#chkbx #submit")).removeClass('disabled');
  114. i = true;
  115. $scope.data = data;
  116. setTimeout(function () {
  117. $scope.$apply();
  118. }, 100);
  119. //----------------------------------------------------
  120. },
  121. function errorClbck(data, status, headers, config) {
  122. });
  123. }
  124. function getLog() { // получаем лог
  125. $http({
  126. method: 'GET',
  127. url: '/trade' + window.location.search
  128. }).then(function (data) {
  129. $scope.logBid = data.data;
  130. setTimeout(function () {
  131. $scope.$apply();
  132. }, 100);
  133. });
  134. }
  135. setInterval(function () {
  136. getUserAndLot();
  137. getLog();
  138. }, 5000);
  139. $scope.$watch('logBid', function () {
  140. setTimeout(function () {
  141. if ($scope.logBid[0] && ($scope.logBid[0].user_id !== $scope.data.member_user_id)) {
  142. $scope.mngEl = true;
  143. } else if ($scope.logBid[0] && ($scope.logBid[0].user_id === $scope.data.member_user_id)) {
  144. $scope.mngEl = false;
  145. }
  146. }, 100);
  147. });
  148. function getTimeRemaining(t) {
  149. var seconds = Math.floor(t % 60);
  150. var minutes = Math.floor((t / 60) % 60);
  151. var hours = Math.floor((t / (60 * 60)) % 24);
  152. var regexp = /^\d$/;
  153. hours = regexp.test(hours) === true ? '0' + hours : hours;
  154. minutes = regexp.test(minutes) === true ? '0' + minutes : minutes;
  155. seconds = regexp.test(seconds) === true ? '0' + seconds : seconds;
  156. return hours + ':' + minutes + ':' + seconds;
  157. }
  158. setInterval(function () {
  159. if ($scope.data.time > 0) {
  160. //var time = $scope.data.time
  161. $scope.data.time--;
  162. $scope.data.timeRich = getTimeRemaining($scope.data.time);
  163. $scope.$apply();
  164. }
  165. }, 1000);
  166. });