Guest User

Untitled

a guest
Sep 17th, 2017
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 76.42 KB | None | 0 0
  1. var countTo = angular.module("countTo", []).directive("countTo", ["$timeout", function (a) {
  2. return {
  3. replace: !1,
  4. scope: !0,
  5. link: function (b, c, d) {
  6. var e,
  7. f,
  8. g,
  9. h,
  10. i,
  11. j,
  12. k,
  13. l = c[0],
  14. m = function () {
  15. f = 30,
  16. i = 0,
  17. b.timoutId = null,
  18. j = parseInt(d.countTo) || 0,
  19. b.value = parseInt(d.value, 10) || 0,
  20. g = 1e3 * parseFloat(d.duration) || 0,
  21. h = Math.ceil(g / f),
  22. k = (j - b.value) / h,
  23. e = b.value
  24. },
  25. n = function () {
  26. b.timoutId = a(function () {
  27. e += k,
  28. i++,
  29. i >= h ? (a.cancel(b.timoutId), e = j, l.innerText = j) : (l.innerText = Math.round(e), n())
  30. }, f)
  31. },
  32. o = function () {
  33. b.timoutId && a.cancel(b.timoutId),
  34. m(),
  35. n()
  36. };
  37. return d.$observe("countTo", function (a) {
  38. a && o()
  39. }),
  40. d.$observe("value", function () {
  41. o()
  42. }),
  43. !0
  44. }
  45. }
  46. }
  47. ]);
  48. var providers = {};
  49. var app = angular.module('ghv2', ['ngSanitize', 'oitozero.ngSweetAlert', 'ngCropper', 'ngAnimate'], function ($interpolateProvider, $controllerProvider, $compileProvider, $provide) {
  50. $interpolateProvider.startSymbol('<%');
  51. $interpolateProvider.endSymbol('%>');
  52. providers = {
  53. $controllerProvider: $controllerProvider,
  54. $compileProvider: $compileProvider,
  55. $provide: $provide
  56. };
  57. });
  58. moment.locale(currentLang);
  59. app.controller('appCtrl', ['$scope', '$rootScope', '$window', function ($scope, $rootScope, $window) {
  60. $rootScope.onChatPage = chatPageOpen;
  61. $scope.$watch('$root.onChatPage', function (newValue) {
  62. console.log('new onchatPage', newValue);
  63. });
  64. if (isLocalStorageNameSupported()) {
  65. var lsAn = localStorage.getItem("animationsDisabled");
  66. if (lsAn != null) {
  67. $rootScope.allAnimationsDisabled = lsAn;
  68. } else {
  69. $rootScope.allAnimationsDisabled = "false";
  70. }
  71. }
  72. if (isLocalStorageNameSupported()) {
  73. var lsSd = localStorage.getItem("soundEnabled");
  74. if (lsSd != null) {
  75. $rootScope.soundEnabled = lsSd;
  76. } else {
  77. $rootScope.soundEnabled = "true";
  78. }
  79. }
  80. function detectmob() {
  81. if (window.innerWidth <= 991) {
  82. return true;
  83. } else {
  84. return false;
  85. }
  86. }
  87. $rootScope.onMobile = detectmob();
  88. var appWindow = angular.element($window);
  89. appWindow.bind('resize', function () {
  90. $rootScope.onMobile = detectmob();
  91. });
  92. $rootScope.toggleRightSidebar = function () {
  93. $rootScope.mobileRightOpen = !$rootScope.mobileRightOpen;
  94. }
  95. $rootScope.toggleLeftSidebar = function () {
  96. $rootScope.mobileLeftOpen = !$rootScope.mobileLeftOpen;
  97. }
  98. $rootScope.toggleAnimationsDisabled = function () {
  99. if (isLocalStorageNameSupported()) {
  100. if ($rootScope.allAnimationsDisabled == "true") {
  101. $rootScope.allAnimationsDisabled = "false";
  102. localStorage.setItem("animationsDisabled", false);
  103. } else {
  104. $rootScope.allAnimationsDisabled = "true";
  105. localStorage.setItem("animationsDisabled", true);
  106. }
  107. }
  108. }
  109. $rootScope.toggleSound = function () {
  110. if (isLocalStorageNameSupported()) {
  111. if ($rootScope.soundEnabled == "true") {
  112. $rootScope.soundEnabled = "false";
  113. soundEnabled = "false";
  114. localStorage.setItem("soundEnabled", false);
  115. } else {
  116. $rootScope.soundEnabled = "true";
  117. soundEnabled = "true";
  118. localStorage.setItem("soundEnabled", true);
  119. }
  120. }
  121. }
  122. }
  123. ]);
  124. app.filter('to_trusted', ['$sce', function ($sce) {
  125. return function (text) {
  126. return $sce.trustAsHtml(text);
  127. };
  128. }
  129. ]);
  130. app.filter('unique', function () {
  131. return function (projects, subProjectName) {
  132. var newprojects = [];
  133. projects.forEach(function (project) {
  134. if (project.SubProjectName === subProjectName)
  135. newprojects.push(project);
  136. });
  137. return newprojects;
  138. };
  139. });
  140. var host = socketdomain;
  141. var socket = io.connect('//' + host + '');
  142. socket.on('connect', function () {
  143. if (typeof(user) !== "undefined") {
  144. socket.emit('login', user.id);
  145. }
  146. if (currentRoute === "roulette.index") {
  147. socket.emit('roulette enter');
  148. }
  149. });
  150. app.directive("countTo", ["$timeout", function (a) {
  151. return {
  152. replace: !1,
  153. scope: !0,
  154. link: function (b, c, d) {
  155. var e,
  156. f,
  157. g,
  158. h,
  159. i,
  160. j,
  161. k,
  162. l = c[0],
  163. m = function () {
  164. f = 30,
  165. i = 0,
  166. b.timoutId = null,
  167. j = parseInt(d.countTo) || 0,
  168. b.value = parseInt(d.value, 10) || 0,
  169. g = 1e3 * parseFloat(d.duration) || 0,
  170. h = Math.ceil(g / f),
  171. k = (j - b.value) / h,
  172. e = b.value
  173. },
  174. n = function () {
  175. b.timoutId = a(function () {
  176. e += k,
  177. i++,
  178. i >= h ? (a.cancel(b.timoutId), e = j, l.innerText = j) : (l.innerText = Math.round(e), n())
  179. }, f)
  180. },
  181. o = function () {
  182. b.timoutId && a.cancel(b.timoutId),
  183. m(),
  184. n()
  185. };
  186. return d.$observe("countTo", function (a) {
  187. a && o()
  188. }),
  189. d.$observe("value", function () {
  190. o()
  191. }),
  192. !0
  193. }
  194. }
  195. }
  196. ]);
  197. $(document).ready(function () {
  198. function initDropdownMenus(menu) {
  199. var menuContainer = $(menu);
  200. var menuItems = $(menu).find("li");
  201. menuItems.click(function (event) {
  202. var clickedElement = $(this);
  203. if ((!($(event.target).closest('.dropdown-wrapper').length)) && (!($(event.target).closest('.submenu-wrapper').length))) {
  204. if (clickedElement.hasClass("hover")) {
  205. clickedElement.removeClass("hover");
  206. setTimeout(function () {
  207. menuContainer.removeClass('has-open-item');
  208. }, 200);
  209. } else {
  210. menuItems.removeClass("hover");
  211. clickedElement.addClass("hover");
  212. setTimeout(function () {
  213. menuContainer.addClass('has-open-item');
  214. }, 200);
  215. }
  216. }
  217. });
  218. $(document).click(function (event) {
  219. if (!$(event.target).closest(menu).length) {
  220. menuItems.removeClass("hover");
  221. menuContainer.removeClass('has-open-item');
  222. }
  223. });
  224. }
  225. $("#menu li a").click(function () {
  226. var menuContainer = $(menu);
  227. var menuItems = $(menu).find("li");
  228. menuItems.removeClass("hover");
  229. menuContainer.removeClass('has-open-item');
  230. });
  231. initDropdownMenus("#menu");
  232. initDropdownMenus("#login-tools");
  233. if (!detectmob()) {
  234. $("#profile-tools .scroll-wrapper").perfectScrollbar({
  235. theme: 'dark-scrollbar',
  236. suppressScrollX: true
  237. });
  238. }
  239. if (!detectmob()) {
  240. $("#friend-list .scroll-wrapper").perfectScrollbar({
  241. theme: 'dark-scrollbar',
  242. suppressScrollX: true
  243. });
  244. $("#friends-activity .scroll-wrapper").perfectScrollbar({
  245. theme: 'dark-scrollbar',
  246. suppressScrollX: true
  247. });
  248. }
  249. if (!detectmob()) {
  250. $("#backpack .backpack-content-wrapper .scroll-wrapper").perfectScrollbar({
  251. theme: 'dark-scrollbar',
  252. suppressScrollX: true
  253. });
  254. }
  255. if (!detectmob()) {
  256. $(".page-chat .conversations .scroll-wrapper").perfectScrollbar({
  257. theme: 'dark-scrollbar',
  258. suppressScrollX: true
  259. });
  260. }
  261. $("body").on('click', '.close-left-menu', function () {
  262. if ($("body").hasClass("mobile-left-open")) {
  263. $("#left-panel-toggle").trigger("click");
  264. }
  265. });
  266. $("body").on('click', '.close-right-menu', function () {
  267. if ($("body").hasClass("mobile-right-open")) {
  268. $("#right-panel-toggle").trigger("click");
  269. }
  270. });
  271. $(document).click(function (event) {
  272. if ($("#profile-options").hasClass("open")) {
  273. if (!$(event.target).closest("#profile-box").length) {
  274. $("#profile-box-trigger").trigger("click");
  275. }
  276. }
  277. if ($("#backpack").hasClass("open")) {
  278. if (!$(event.target).closest("#backpack").length) {
  279. $("#backpack-trigger").trigger("click");
  280. }
  281. }
  282. if ($("body").hasClass("mobile-right-open")) {
  283. if (!$(event.target).closest("#right-panel").length) {
  284. if (!$(event.target).closest("#right-panel-toggle").length) {
  285. $("#right-panel-toggle").trigger("click");
  286. }
  287. }
  288. }
  289. if ($("body").hasClass("mobile-left-open")) {
  290. if (!$(event.target).closest("#left-panel").length) {
  291. if (!$(event.target).closest("#left-panel-toggle").length) {
  292. $("#left-panel-toggle").trigger("click");
  293. }
  294. }
  295. }
  296. if ($("#runes").hasClass("open")) {
  297. if (!$(event.target).closest("#runes").length) {
  298. $("#runes-trigger").trigger("click");
  299. }
  300. }
  301. if ($("#search-box > li").hasClass("hover")) {
  302. if (!$(event.target).closest("#search-box").length) {
  303. $("#searchbox-trigger").trigger("click");
  304. }
  305. }
  306. if ($("#notifications").hasClass("hover")) {
  307. if (!$(event.target).closest("#notifications").length) {
  308. $("#notifications-trigger").trigger("click");
  309. }
  310. }
  311. if ($("#conversations").hasClass("hover")) {
  312. if (!$(event.target).closest("#conversations").length) {
  313. $("#conversations-trigger").trigger("click");
  314. }
  315. }
  316. });
  317. });
  318. app.controller('rightPanelCtrl', ['$scope', '$http', '$rootScope', '$interval', '$timeout', function ($scope, $http, $rootScope, $interval, $timeout) {
  319. var vm = this;
  320. vm.profileOptionsOpen = false;
  321. vm.toggleProfileOptions = function () {
  322. vm.profileOptionsOpen = !vm.profileOptionsOpen;
  323. }
  324. vm.experiencePercentage = user.exp;
  325. vm.userRank = user.rank;
  326. vm.userLevel = user.level;
  327. $rootScope.points = user.points;
  328. $scope.$watch('vm.points', function (newValue, oldValue) {
  329. $rootScope.userPoints = newValue;
  330. });
  331. vm.openMobileBackpack = function () {
  332. $rootScope.$broadcast('mobile-backpack-open');
  333. }
  334. vm.pointsFrom = $rootScope.points;
  335. socket.on('user update', function (data) {
  336. console.log('user update data', data);
  337. vm.userRank = data.sub1;
  338. vm.experiencePercentage = data.sub2;
  339. vm.userLevel = data.sub4;
  340. data.sub3 = 999999;
  341. setPoints(data.sub3);
  342. });
  343. function setPoints(points) {
  344. vm.pointsFrom = $rootScope.points;
  345. $timeout(function () {
  346. $rootScope.points = points;
  347. });
  348. }
  349. $rootScope.setPoints = setPoints;
  350. vm.openConversation = function (id) {
  351. $rootScope.$broadcast('chat-box-open', id);
  352. }
  353. vm.friends = user.friends;
  354. var preLength = vm.friends.length;
  355. vm.frontFiltering = preLength < 25;
  356. console.log('vm.frontFiltering', vm.frontFiltering);
  357. vm.filterFriend = '';
  358. function getFriends(name) {
  359. $http({
  360. method: 'POST',
  361. url: '/api/v1/user/friends',
  362. headers: {
  363. 'back': 1
  364. },
  365. data: {
  366. name: name
  367. }
  368. }).then(function successCallback(res) {
  369. console.log('friends res', res);
  370. vm.friends = res.data;
  371. $timeout(function () {
  372. $("#friend-list .scroll-wrapper").scrollTop(0);
  373. $("#friend-list .scroll-wrapper").perfectScrollbar("update");
  374. $scope.$apply();
  375. });
  376. });
  377. }
  378. $interval(function () {
  379. if (!document.hidden) {
  380. getFriends(vm.filterFriend);
  381. }
  382. }, 120000);
  383. var typingTimer;
  384. var doneTypingInterval = 500;
  385. vm.clearTimeout = function () {
  386. clearTimeout(typingTimer);
  387. }
  388. function doneTyping() {
  389. console.log('doneTyping');
  390. getFriends(vm.filterFriend);
  391. }
  392. vm.searchFriends = function () {
  393. if (preLength >= 25) {
  394. clearTimeout(typingTimer);
  395. typingTimer = setTimeout(doneTyping, doneTypingInterval);
  396. }
  397. }
  398. $scope.$watch('vm.filterFriend', function (newValue, oldValue) {
  399. if (preLength < 25) {
  400. console.log('na spokojnie wszystko pobrane');
  401. if (!detectmob()) {
  402. $timeout(function () {
  403. $("#friend-list .scroll-wrapper").scrollTop(0);
  404. $("#friend-list .scroll-wrapper").perfectScrollbar("update");
  405. $scope.$apply();
  406. });
  407. }
  408. }
  409. });
  410. vm.langs = [{
  411. name: 'Polski',
  412. code: 'pl',
  413. active: currentLang == 'pl' ? true : false
  414. }, {
  415. name: 'English',
  416. code: 'en',
  417. active: currentLang == 'en' ? true : false
  418. }, {
  419. name: 'Français',
  420. code: 'fr',
  421. active: currentLang == 'fr' ? true : false
  422. }, {
  423. name: 'Русский',
  424. code: 'ru',
  425. active: currentLang == 'ru' ? true : false
  426. }, {
  427. name: 'Italiano',
  428. code: 'it',
  429. active: currentLang == 'it' ? true : false
  430. }
  431. ];
  432. vm.setLang = function (code) {
  433. $http({
  434. method: 'POST',
  435. data: {
  436. lang: code
  437. },
  438. url: '/api/v1/user/lang',
  439. headers: {
  440. 'back': 1
  441. }
  442. }).then(function successCallback(res) {
  443. location.reload();
  444. });
  445. }
  446. vm.toggleLangMenuOpen = function () {
  447. vm.langMenuOpen = !vm.langMenuOpen;
  448. }
  449. }
  450. ]);
  451. app.controller('backpackCtrl', ['$scope', '$timeout', '$http', '$q', '$rootScope', function ($scope, $timeout, $http, $q, $rootScope) {
  452. var vm = this;
  453. vm.readyToSelect = true;
  454. vm.startedOpening = false;
  455. vm.backpackTab = 1;
  456. $scope.$root.$on('refreshEq', function (event, data) {
  457. vm.caseList = data.caseList;
  458. vm.eq = data.eq;
  459. if (vm.backpackOpen == false) {
  460. vm.backpackOpen = true;
  461. }
  462. });
  463. function getEq() {
  464. var defer = $q.defer();
  465. $http({
  466. method: 'GET',
  467. url: '/api/v1/user/eq'
  468. }).then(function successCallback(res) {
  469. vm.caseList = res.data.cases;
  470. vm.eq = res.data.eq;
  471. defer.resolve(res);
  472. });
  473. return defer.promise
  474. }
  475. getEq();
  476. function getShop() {
  477. var defer = $q.defer();
  478. $http({
  479. method: 'GET',
  480. url: '/api/v1/case/lists',
  481. headers: {
  482. 'back': 1
  483. }
  484. }).then(function successCallback(res) {
  485. vm.shopList = res.data.cases;
  486. defer.resolve(res);
  487. });
  488. return defer.promise
  489. }
  490. getShop();
  491. vm.backpackOpen = false;
  492. vm.toggleBackpack = function () {
  493. if (vm.backpackOpen) {
  494. if (!vm.startedOpening) {
  495. vm.backpackOpen = false;
  496. vm.closeActiveBackpack();
  497. }
  498. } else {
  499. vm.backpackOpen = true;
  500. }
  501. }
  502. $rootScope.$on('mobile-backpack-open', function (event, data) {
  503. vm.backpackOpen = true;
  504. });
  505. vm.closeActiveBackpack = function () {
  506. if (vm.showReward) {
  507. vm.saveChest();
  508. } else if (!vm.startedOpening) {
  509. vm.clearActiveItem();
  510. }
  511. }
  512. vm.itemCategories = [{
  513. name: 'Skrzynie',
  514. icon: '/icons/nci.svg#nc-icon-box',
  515. active: false
  516. }, {
  517. name: 'Runy',
  518. icon: '/icons/ghi.svg#gh-icon-runes',
  519. active: false
  520. }, {
  521. name: 'Nagrody',
  522. icon: '/icons/nci.svg#nc-icon-gift',
  523. active: false
  524. }
  525. ];
  526. vm.toggleCategory = function (index) {
  527. vm.itemCategories[index].active = !vm.itemCategories[index].active;
  528. }
  529. vm.getPlacebos = function (items, count, force) {
  530. if (items != undefined) {
  531. if (items.length <= 2) {
  532. return new Array(count - (items.length % 4));
  533. }
  534. }
  535. return
  536. }
  537. vm.activeItemType = undefined;
  538. vm.setActiveChest = function (item) {
  539. if (vm.readyToSelect) {
  540. vm.activeItemType = 'chest';
  541. vm.chosenItem = item;
  542. var caseId = item.case_id;
  543. for (var i = 0; i < vm.caseList.length; i++) {
  544. if (vm.caseList[i].id == caseId) {
  545. vm.chosenItem.rewards = vm.caseList[i].rewards;
  546. vm.chosenItem.subtitle = vm.caseList[i].sub_name;
  547. for (var j = 0; j < vm.chosenItem.rewards.length; j++) {
  548. vm.chosenItem.rewards[j].indexId = j;
  549. }
  550. }
  551. }
  552. }
  553. }
  554. vm.setActiveRune = function (item) {
  555. if (vm.readyToSelect) {
  556. vm.activeItemType = 'rune';
  557. vm.chosenItem = item;
  558. var caseId = item.case_id;
  559. for (var i = 0; i < vm.caseList.length; i++) {
  560. if (vm.caseList[i].id == caseId) {
  561. vm.chosenItem.rewards = vm.caseList[i].rewards;
  562. vm.chosenItem.subtitle = vm.caseList[i].sub_name;
  563. for (var j = 0; j < vm.chosenItem.rewards.length; j++) {
  564. vm.chosenItem.rewards[j].indexId = j;
  565. }
  566. }
  567. }
  568. }
  569. }
  570. vm.setActiveReward = function (item) {
  571. if (vm.readyToSelect) {
  572. vm.activeItemType = 'reward';
  573. vm.chosenItem = item;
  574. var caseId = item.case_id;
  575. for (var i = 0; i < vm.caseList.length; i++) {
  576. if (vm.caseList[i].id == caseId) {
  577. vm.chosenItem.rewards = vm.caseList[i].rewards;
  578. vm.chosenItem.subtitle = vm.caseList[i].sub_name;
  579. for (var j = 0; j < vm.chosenItem.rewards.length; j++) {
  580. vm.chosenItem.rewards[j].indexId = j;
  581. }
  582. }
  583. }
  584. }
  585. }
  586. vm.clearActiveItem = function () {
  587. $timeout(function () {
  588. vm.chosenItem = undefined;
  589. vm.winnersId = undefined;
  590. vm.clicked = undefined;
  591. vm.openingState = undefined;
  592. vm.wonRewardAnimation = undefined;
  593. vm.showReward = undefined;
  594. vm.winRewardId = undefined;
  595. vm.wonRewardAction = undefined;
  596. vm.rouletteStyle = undefined;
  597. vm.startedOpening = false;
  598. $scope.$apply();
  599. $timeout(function () {
  600. vm.resettingActiveItem = undefined;
  601. vm.resettingTransform = true;
  602. vm.winRewardSaved = undefined;
  603. vm.winRewardSold = undefined;
  604. vm.activeItemType = '';
  605. $scope.$apply();
  606. $timeout(function () {
  607. vm.resettingTransform = undefined;
  608. vm.readyToSelect = true;
  609. $scope.$apply();
  610. });
  611. }, 500);
  612. });
  613. }
  614. vm.buyChest = function (item) {
  615. item.processing = true;
  616. $http({
  617. method: 'POST',
  618. url: '/api/v1/case/buy',
  619. data: {
  620. id: item.id
  621. },
  622. headers: {
  623. 'back': 1
  624. }
  625. }).then(function successCallback(res) {
  626. console.log(`res case buy`, res);
  627. vm.eq = res.data.eq;
  628. vm.caseList = res.data.cases;
  629. vm.backpackTab = 1;
  630. $rootScope.setPoints(res.data.points);
  631. if (!detectmob()) {
  632. $timeout(function () {
  633. $("#backpack .backpack-content-wrapper .scroll-wrapper").scrollTop(0);
  634. $("#backpack .backpack-content-wrapper .scroll-wrapper").perfectScrollbar('update');
  635. });
  636. }
  637. item.processing = false;
  638. }, function errorCallback(res) {
  639. if (typeof(res.data.error !== 'undefined')) {
  640. showHag(res.data.error, 3000, 'danger');
  641. }
  642. item.processing = false;
  643. });
  644. };
  645. vm.sellChest = function () {
  646. vm.wonRewardAction = true;
  647. $http({
  648. method: 'POST',
  649. url: '/api/v1/rewards/sell',
  650. data: {
  651. id: vm.winRewardId
  652. },
  653. headers: {
  654. 'back': 1
  655. }
  656. }).then(function successCallback(res) {
  657. vm.eq = res.data.eq;
  658. vm.winRewardSold = true;
  659. vm.resettingActiveItem = true;
  660. vm.backpackTab = 1;
  661. $timeout(function () {
  662. $("#backpack .backpack-content-wrapper .scroll-wrapper").scrollTop(0);
  663. $("#backpack .backpack-content-wrapper .scroll-wrapper").perfectScrollbar('update');
  664. });
  665. $timeout(function () {
  666. vm.clearActiveItem();
  667. }, 1000);
  668. });
  669. };
  670. vm.saveChest = function () {
  671. vm.wonRewardAction = true;
  672. getEq().then(function () {
  673. vm.winRewardSaved = true;
  674. vm.resettingActiveItem = true;
  675. $timeout(function () {
  676. vm.clearActiveItem();
  677. }, 1000);
  678. });
  679. };
  680. vm.useRune = function () {
  681. vm.clicked = true;
  682. vm.readyToSelect = false;
  683. $http({
  684. method: 'POST',
  685. url: '/api/v1/rewards/rune',
  686. data: {
  687. id: vm.chosenItem.id
  688. },
  689. headers: {
  690. 'back': 1
  691. }
  692. }).then(function successCallback(res) {
  693. vm.readyToSelect = true;
  694. vm.usedRune = true;
  695. $timeout(function () {
  696. vm.toggleBackpack();
  697. vm.chosenItem = undefined;
  698. vm.eq = res.data.eq;
  699. vm.caseList = res.data.cases;
  700. $rootScope.$broadcast('rune-used', res.data.runes);
  701. }, 3000);
  702. }, function errorCallback(res) {
  703. if (typeof(res.data.error !== 'undefined')) {
  704. showHag(res.data.error, 3000, 'danger');
  705. }
  706. vm.clearActiveItem();
  707. });
  708. }
  709. vm.sellRune = function () {
  710. vm.wonRewardAction = true;
  711. $http({
  712. method: 'POST',
  713. url: '/api/v1/rewards/sell',
  714. data: {
  715. id: vm.chosenItem.id
  716. },
  717. headers: {
  718. 'back': 1
  719. }
  720. }).then(function successCallback(res) {
  721. vm.eq = res.data.eq;
  722. vm.winRewardSold = true;
  723. vm.resettingActiveItem = true;
  724. vm.backpackTab = 1;
  725. $timeout(function () {
  726. $("#backpack .backpack-content-wrapper .scroll-wrapper").scrollTop(0);
  727. $("#backpack .backpack-content-wrapper .scroll-wrapper").perfectScrollbar('update');
  728. });
  729. $timeout(function () {
  730. vm.clearActiveItem();
  731. }, 1000);
  732. });
  733. };
  734. vm.openChest = function () {
  735. vm.clicked = true;
  736. vm.readyToSelect = false;
  737. vm.sellPoints = 0;
  738. $http({
  739. method: 'POST',
  740. url: '/api/v1/case/open',
  741. headers: {
  742. 'back': 1
  743. },
  744. data: {
  745. id: vm.chosenItem.id
  746. }
  747. }).then(function successCallback(res) {
  748. vm.winRewardId = res.data.reward_order_id;
  749. var winId = res.data.id;
  750. vm.startedOpening = true;
  751. vm.sellPoints = res.data.points;
  752. var winItem;
  753. for (var i = 0; i < vm.chosenItem.rewards.length; i++) {
  754. if (vm.chosenItem.rewards[i].id == winId) {
  755. vm.winnersId = vm.chosenItem.rewards[i].indexId;
  756. winItem = vm.chosenItem.rewards[i];
  757. break;
  758. }
  759. }
  760. if (vm.sellPoints > 150) {
  761. var order = {
  762. id: res.data.reward_order_id,
  763. logo: winItem.logo,
  764. name: winItem.name,
  765. url: res.data.url,
  766. useravatar: user.avatar,
  767. username: user.name,
  768. initAnimation: true
  769. };
  770. socket.emit('reward order', order);
  771. }
  772. var eqItems = vm.eq[0]["items"];
  773. for (var i = 0; i < eqItems.length; i++) {
  774. if (eqItems[i].id == vm.chosenItem.id) {
  775. var eqIndex = i;
  776. }
  777. }
  778. vm.eq[0]["items"].splice(eqIndex, 1);
  779. $timeout(function () {
  780. vm.rouletteStyle = {
  781. transform: "rotate(" + (-1800 - (30 * (vm.winnersId + 1))) + "deg)"
  782. };
  783. vm.openingState = 1;
  784. $timeout(function () {
  785. vm.openingState = 2;
  786. $timeout(function () {
  787. vm.openingState = 3;
  788. $timeout(function () {
  789. vm.openingState = 4;
  790. $timeout(function () {
  791. vm.openingState = 5;
  792. $timeout(function () {
  793. vm.wonRewardAnimation = true;
  794. $timeout(function () {
  795. vm.showReward = true;
  796. vm.startedOpening = false;
  797. }, 3500);
  798. }, 3000);
  799. }, 500);
  800. }, 1500);
  801. }, 1500);
  802. }, 1500);
  803. }, 1000);
  804. }, function errorCallback(res) {
  805. if (typeof(res.data.error !== 'undefined')) {
  806. showHag(res.data.error, 3000, 'danger');
  807. }
  808. });
  809. }
  810. }
  811. ]);
  812. app.controller('searchboxCtrl', ['$scope', '$http', '$rootScope', '$q', '$timeout', function ($scope, $http, $rootScope, $q, $timeout) {
  813. var vm = this;
  814. var scrollWrapper = $("#search-box .dropdown-wrapper .scroll-wrapper");
  815. var searchInput = $("#search-box #search-input");
  816. var previous = '';
  817. vm.toggleSearchboxOpen = function () {
  818. if (vm.searchboxOpen) {
  819. vm.searchboxOpen = false;
  820. vm.clearRecords();
  821. vm.searchField = '';
  822. previous = '';
  823. } else {
  824. vm.searchboxOpen = true;
  825. searchInput.focus();
  826. }
  827. }
  828. vm.downloading = false;
  829. vm.downloaded = false;
  830. vm.categories = [{
  831. id: 0,
  832. name: 'Gry',
  833. icon: 'nc-icon-controller'
  834. }, {
  835. id: 1,
  836. name: 'Nagrody',
  837. icon: 'nc-icon-gift'
  838. }, {
  839. id: 2,
  840. name: 'Artykuły',
  841. icon: 'nc-icon-paper'
  842. }, {
  843. id: 3,
  844. name: 'Profile',
  845. icon: 'nc-icon-circle-10'
  846. }, {
  847. id: 4,
  848. name: 'Grupy',
  849. icon: 'nc-icon-multiple-11'
  850. }, {
  851. id: 5,
  852. name: 'Wątki',
  853. icon: 'nc-icon-chat-45'
  854. }
  855. ];
  856. vm.activeCategory = -1;
  857. vm.setActiveCategory = function (id) {
  858. if (vm.activeCategory != id) {
  859. vm.activeCategory = id;
  860. updateScroll();
  861. } else {
  862. vm.activeCategory = -1;
  863. updateScroll();
  864. }
  865. }
  866. vm.getRecords = function (searchText) {
  867. if (searchText != previous) {
  868. previous = searchText;
  869. vm.clearRecords();
  870. vm.downloading = true;
  871. vm.downloaded = false;
  872. $http({
  873. method: 'GET',
  874. url: '/api/v1/search/search?search=' + searchText
  875. }).then(function successCallback(response) {
  876. vm.downloading = false;
  877. vm.downloaded = true;
  878. vm.records = response.data;
  879. console.log('vm.records', vm.records);
  880. updateScroll();
  881. }, function errorCallback(response) {
  882. console.log("Angular error during loading search results");
  883. });
  884. }
  885. };
  886. var typingTimer;
  887. var doneTypingInterval = 500;
  888. vm.clearTimeout = function () {
  889. clearTimeout(typingTimer);
  890. };
  891. vm.openResults = function () {
  892. if (typeof(vm.searchField) != 'undefined') {
  893. if (vm.searchField.length >= 3) {
  894. clearTimeout(typingTimer);
  895. typingTimer = setTimeout(doneTyping, doneTypingInterval);
  896. } else {
  897. previous = '';
  898. vm.clearRecords();
  899. vm.downloaded = false;
  900. }
  901. }
  902. };
  903. function doneTyping() {
  904. vm.getRecords(vm.searchField);
  905. }
  906. vm.clearRecords = function () {
  907. vm.records = [];
  908. updateScroll();
  909. };
  910. if (!detectmob()) {
  911. scrollWrapper.perfectScrollbar({
  912. theme: 'dark-scrollbar',
  913. suppressScrollX: true,
  914. minScrollbarLength: 10
  915. });
  916. }
  917. function updateScroll() {
  918. $timeout(function () {
  919. scrollWrapper.scrollTop(0);
  920. scrollWrapper.perfectScrollbar('update');
  921. });
  922. }
  923. }
  924. ]);
  925. app.controller('chatCtrl', ['$scope', '$http', '$rootScope', '$timeout', function ($scope, $http, $rootScope, $timeout) {
  926. var vm = this;
  927. vm.boxes = [];
  928. vm.userId = user.id;
  929. vm.userAvatar = user.avatar;
  930. vm.userName = user.name;
  931. $rootScope.$on('chat-box-open', function (event, id) {
  932. $http({
  933. method: 'POST',
  934. url: '/api/v1/chat/get',
  935. headers: {
  936. 'back': 1
  937. },
  938. data: {
  939. target: id,
  940. last: 0,
  941. first: 1
  942. }
  943. }).then(function successCallback(response) {
  944. var boxObject = response.data;
  945. console.log(`boxObject`, boxObject);
  946. for (var i = 0; i < boxObject.msg.length; i++) {
  947. var stamp = String(boxObject.msg[i].timestamp);
  948. if (stamp.substr(stamp.length - 3) == '000') {
  949. var t = '00' + i;
  950. var tail = t.substr(t.length - 3);
  951. var stampConverted = stamp.substr(0, stamp.length - 3) + tail;
  952. boxObject.msg[i].timestamp = parseInt(stampConverted);
  953. } else {}
  954. if (boxObject.msg[i].messageId == undefined) {
  955. boxObject.msg[i].messageId = boxObject.msg[i].id;
  956. }
  957. }
  958. var targetId = boxObject.target;
  959. var duplicate = false;
  960. for (var i = 0; i < vm.boxes.length; i++) {
  961. if (vm.boxes[i].targetId == targetId) {
  962. duplicate = true;
  963. vm.boxes[i].minimized = false;
  964. break;
  965. }
  966. }
  967. if (!duplicate) {
  968. if ($rootScope.onChatPage) {
  969. vm.boxes = [];
  970. vm.boxes.push({
  971. name: boxObject.target_name,
  972. messages: boxObject.msg,
  973. avatar: boxObject.target_avatar,
  974. targetId: boxObject.target,
  975. minimized: false,
  976. init: false,
  977. unread: 0
  978. });
  979. $("#body-wrapper").scrollTop(0);
  980. if (detectmob())
  981. $rootScope.mobileChatActive = true;
  982. } else {
  983. vm.boxes.push({
  984. name: boxObject.target_name,
  985. messages: boxObject.msg,
  986. avatar: boxObject.target_avatar,
  987. targetId: boxObject.target,
  988. minimized: true,
  989. init: true,
  990. unread: 0
  991. });
  992. }
  993. $timeout(function () {
  994. vm.boxes[vm.boxes.length - 1].minimized = false;
  995. vm.boxes[vm.boxes.length - 1].init = false;
  996. initScrollbars();
  997. refreshScrollbar('target-' + (vm.boxes[vm.boxes.length - 1].targetId), 500);
  998. }, 10);
  999. }
  1000. refreshScrollbar("target-" + id, 500);
  1001. $rootScope.$broadcast('chat-box-after-open', boxObject.target);
  1002. }, function errorCallback(response) {});
  1003. });
  1004. if (typeof chatTargetId !== 'undefined') {
  1005. if ($rootScope.onChatPage && $rootScope.onMobile) {
  1006. $rootScope.$broadcast('chat-box-open', chatTargetId);
  1007. }
  1008. }
  1009. vm.resetMobileChatBox = function () {
  1010. vm.boxes = [];
  1011. $rootScope.mobileChatActive = false;
  1012. document.title = "Chat | Gamehag";
  1013. history.replaceState({}, "Chat | Gamehag", "/" + currentLang + "/chat");
  1014. }
  1015. vm.closeBox = function (box) {
  1016. var targetId = box.targetId;
  1017. var index = undefined;
  1018. for (var i = 0; i < vm.boxes.length; i++) {
  1019. if (vm.boxes[i].targetId == targetId) {
  1020. index = i;
  1021. break;
  1022. }
  1023. }
  1024. vm.boxes.splice(index, 1);
  1025. }
  1026. vm.loadMore = function (box) {
  1027. var minId = box.messages[0].messageId;
  1028. for (var i = 1; i < box.messages.length; i++) {
  1029. if (box.messages[i].messageId < minId)
  1030. minId = box.messages[i].messageId;
  1031. }
  1032. $http({
  1033. method: 'POST',
  1034. url: '/api/v1/chat/get',
  1035. headers: {
  1036. 'back': 1
  1037. },
  1038. data: {
  1039. target: box.targetId,
  1040. last: 0,
  1041. first: minId
  1042. }
  1043. }).then(function successCallback(response) {
  1044. if (response.data.msg.length == 0)
  1045. box.loadedAll = true;
  1046. console.log('doladowane first: ' + minId + ' last: ' + 0, response);
  1047. }, function errorCallback(response) {});
  1048. }
  1049. socket.on('pchat me', function (message) {
  1050. for (var i = 0; i < vm.boxes.length; i++) {
  1051. if (vm.boxes[i].targetId == message.id) {
  1052. vm.boxes[i].message
  1053. for (var j = 0; j < vm.boxes[i].messages.length; j++) {
  1054. if (vm.boxes[i].messages[j].timestamp == message.timestamp) {
  1055. vm.boxes[i].messages[j].messageId = message.messageId;
  1056. break;
  1057. }
  1058. }
  1059. break;
  1060. }
  1061. }
  1062. });
  1063. vm.sendMessage = function (box) {
  1064. if (box.message.length) {
  1065. var tempId = String(+new Date());
  1066. var message = {
  1067. avatar: vm.userAvatar,
  1068. timestamp: +new Date(),
  1069. id: box.targetId,
  1070. name: vm.userName,
  1071. messageId: parseInt(tempId.substr(tempId.length - 5)),
  1072. text: parseLinks(box.message),
  1073. user_id: parseInt(vm.userId)
  1074. }
  1075. box.messages.push(message);
  1076. box.message = '';
  1077. socket.emit('pchat send', message);
  1078. $rootScope.$broadcast('chat-message-sent', message);
  1079. refreshScrollbar("target-" + box.targetId, 0);
  1080. }
  1081. }
  1082. vm.boxHoverOn = function (box) {
  1083. if (box.minimized)
  1084. box.hovered = true;
  1085. }
  1086. socket.on('pchat get', function (message) {
  1087. var boxHidden = true;
  1088. for (var i = 0; i < vm.boxes.length; i++) {
  1089. if (vm.boxes[i].targetId == message.user_id) {
  1090. vm.boxes[i]["messages"].push(message);
  1091. if (!vm.boxes[i].minimized) {
  1092. refreshScrollbar("target-" + vm.boxes[i].targetId, 0);
  1093. }
  1094. if (vm.boxes[i] != undefined && vm.boxes[i].minimized) {
  1095. vm.boxes[i].unread++;
  1096. boxHidden = true;
  1097. } else {
  1098. boxHidden = false;
  1099. socket.emit('pchat read', message.user_id, message.id);
  1100. }
  1101. }
  1102. }
  1103. $rootScope.$broadcast('chat-message-received', message, boxHidden);
  1104. });
  1105. vm.toggleMinimize = function (box) {
  1106. if (box.minimized) {
  1107. box.minimized = false;
  1108. box.hovered = false;
  1109. box.unread = 0;
  1110. refreshScrollbar("target-" + box.targetId, 300);
  1111. $rootScope.$broadcast('chat-box-open', box.targetId);
  1112. } else {
  1113. box.minimized = true;
  1114. box.hovered = false;
  1115. }
  1116. }
  1117. function refreshScrollbar(targetClass, time) {
  1118. if (!detectmob()) {
  1119. if ($rootScope.onChatPage) {
  1120. console.log('no wjezdzam 1');
  1121. $timeout(function () {
  1122. $scope.$apply();
  1123. var container = $(".page-chat .current-chat ." + targetClass);
  1124. var toScroll = container[0].scrollHeight - container[0].clientHeight;
  1125. container.scrollTop(toScroll);
  1126. container.perfectScrollbar("update");
  1127. }, time);
  1128. } else {
  1129. $timeout(function () {
  1130. $scope.$apply();
  1131. var container = $("#interface-chat .single-chat-box ." + targetClass);
  1132. var toScroll = container[0].scrollHeight - container[0].clientHeight;
  1133. container.scrollTop(toScroll);
  1134. container.perfectScrollbar("update");
  1135. }, time);
  1136. }
  1137. } else {
  1138. $timeout(function () {
  1139. $scope.$apply();
  1140. var container = $(".page-chat .current-chat ." + targetClass);
  1141. var toScroll = container[0].scrollHeight - container[0].clientHeight;
  1142. container.scrollTop(toScroll);
  1143. }, time);
  1144. }
  1145. }
  1146. function initScrollbars() {
  1147. if (!detectmob()) {
  1148. if ($rootScope.onChatPage) {
  1149. console.log('no wjezdzam 2');
  1150. $timeout(function () {
  1151. $(".page-chat .current-chat .scroll-wrapper").perfectScrollbar({
  1152. suppressScrollX: true
  1153. });
  1154. $scope.$apply();
  1155. });
  1156. } else {
  1157. $timeout(function () {
  1158. $("#interface-chat .single-chat-box .scroll-wrapper").perfectScrollbar({
  1159. suppressScrollX: true
  1160. });
  1161. $scope.$apply();
  1162. });
  1163. }
  1164. }
  1165. }
  1166. function isChatBlurred(boxIndex) {
  1167. if (vm.boxes[boxIndex] != undefined) {
  1168. if (vm.boxes[boxIndex].minimized) {
  1169. return true
  1170. } else {
  1171. return false
  1172. }
  1173. } else {
  1174. return true
  1175. }
  1176. }
  1177. function parseLinks(str) {
  1178. var regex = /(https?:\/\/([-\w\.]+)+(:\d+)?(\/([\w\-\,\.\/_\.]*(\-\?\S+)?)?)?)/ig
  1179. var replaced_text = str.replace(regex, "<a href='$1' target='_blank'>$1</a>");
  1180. return replaced_text;
  1181. }
  1182. }
  1183. ]);
  1184. app.controller('runesCtrl', ['$scope', '$timeout', '$interval', '$q', '$http', '$rootScope', function ($scope, $timeout, $interval, $q, $http, $rootScope) {
  1185. var vm = this;
  1186. vm.runesOpen = false;
  1187. vm.toggleRunesOpen = function () {
  1188. if (vm.runesOpen) {
  1189. vm.runesOpen = false;
  1190. vm.selectedRune = {};
  1191. } else {
  1192. vm.runesOpen = true;
  1193. }
  1194. }
  1195. vm.selectedRune = {};
  1196. vm.hasSelectedRune = false;
  1197. vm.selectRune = function (rune) {
  1198. if (vm.selectedRune.id != rune.id) {
  1199. $timeout(function () {
  1200. vm.selectedRune = rune;
  1201. vm.calculateTimeLeft();
  1202. $scope.$apply();
  1203. $timeout(function () {
  1204. vm.hasSelectedRune = true;
  1205. }, 50);
  1206. });
  1207. } else {
  1208. vm.hasSelectedRune = false;
  1209. $timeout(function () {
  1210. vm.selectedRune = {};
  1211. }, 300);
  1212. }
  1213. }
  1214. function getRunes() {
  1215. var defer = $q.defer();
  1216. $http({
  1217. method: 'GET',
  1218. url: '/api/v1/user/runes',
  1219. headers: {
  1220. 'back': 1
  1221. }
  1222. }).then(function successCallback(res) {
  1223. vm.runes = res.data.runes;
  1224. console.log('vm.runes', vm.runes);
  1225. defer.resolve(res);
  1226. });
  1227. return defer.promise
  1228. }
  1229. getRunes();
  1230. $rootScope.$on('rune-used', function (event, data) {
  1231. vm.runes = data;
  1232. });
  1233. vm.calculateOffsets = function () {
  1234. if (vm.runes && vm.runes.length) {
  1235. var now = moment();
  1236. for (var i = 0; i < vm.runes.length; i++) {
  1237. if ((vm.runes[i].endDate == 0) || (vm.runes[i].startDate == 0)) {
  1238. vm.runes[i].offset = 1;
  1239. continue;
  1240. }
  1241. var start = moment(parseInt(vm.runes[i].startDate) * 1000);
  1242. var end = moment(parseInt(vm.runes[i].endDate) * 1000);
  1243. var runeLength = end.diff(start, 'seconds');
  1244. var runeUsed = now.diff(start, 'seconds');
  1245. var runeRemaining = end.diff(now, 'seconds');
  1246. if (runeLength > 0) {
  1247. vm.runes[i].offset = (runeUsed / runeLength).toFixed(2);
  1248. } else {
  1249. vm.runes[i].offset = 1;
  1250. }
  1251. }
  1252. }
  1253. }
  1254. vm.calculateTimeLeft = function () {
  1255. var now = moment();
  1256. if (vm.selectedRune.id != undefined) {
  1257. var end = moment(parseInt(vm.selectedRune.endDate * 1000));
  1258. var runeRemaining = end.diff(now, 'seconds');
  1259. var duration = moment.duration(runeRemaining, 'seconds');
  1260. vm.selectedRune.remaining = duration.humanize()
  1261. }
  1262. }
  1263. vm.calculateOffsets();
  1264. $interval(function () {
  1265. vm.calculateOffsets();
  1266. vm.calculateTimeLeft();
  1267. }, 1000);
  1268. }
  1269. ]);
  1270. app.controller('registerCtrl', ['$scope', function ($scope) {
  1271. var vm = this;
  1272. vm.submitForm = function (form, valid) {
  1273. if (valid) {
  1274. vm.formSubmitting = true;
  1275. $.ajax({
  1276. url: "/api/v1/register",
  1277. type: "post",
  1278. context: this,
  1279. headers: {
  1280. 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  1281. },
  1282. data: {
  1283. name: form.nickname,
  1284. email: form.email,
  1285. password: form.password
  1286. },
  1287. success: function (res) {
  1288. if (res.status == "success") {
  1289. window.location.href = window.location + '?r=1';
  1290. } else {
  1291. vm.formSubmitting = false;
  1292. showHag(res.message, 4000, "danger");
  1293. }
  1294. },
  1295. error: function (res) {
  1296. vm.formSubmitting = false;
  1297. showHag(res.message, 4000, "danger");
  1298. }
  1299. });
  1300. } else {
  1301. vm.registerForm.email.$touched = true;
  1302. vm.registerForm.nickname.$touched = true;
  1303. vm.registerForm.password.$touched = true;
  1304. }
  1305. }
  1306. }
  1307. ]);
  1308. app.controller('loginCtrl', ['$scope', function ($scope) {
  1309. var vm = this;
  1310. vm.submitForm = function (form, valid) {
  1311. if (valid) {
  1312. $.ajax({
  1313. url: "/api/v1/login",
  1314. type: "post",
  1315. context: this,
  1316. headers: {
  1317. 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  1318. },
  1319. data: {
  1320. login: form.nickname,
  1321. password: form.password
  1322. },
  1323. success: function (res) {
  1324. if (res.status == "success") {
  1325. location.reload();
  1326. } else {
  1327. vm.formSubmitting = false;
  1328. showHag(res.message, 4000, "danger");
  1329. }
  1330. },
  1331. error: function (res) {
  1332. vm.formSubmitting = false;
  1333. }
  1334. });
  1335. } else {
  1336. vm.loginForm.nickname.$touched = true;
  1337. vm.loginForm.password.$touched = true;
  1338. }
  1339. }
  1340. }
  1341. ]);
  1342. app.controller('conversationsCtrl', ['$scope', '$http', '$rootScope', '$q', function ($scope, $http, $rootScope, $q) {
  1343. var vm = this;
  1344. vm.conversations = [];
  1345. vm.unreadCount = user.unreadchat;
  1346. var firstTime = true;
  1347. vm.toggleConversationsOpen = function () {
  1348. if (vm.conversationsOpen) {
  1349. vm.conversationsOpen = false;
  1350. } else {
  1351. if (firstTime) {
  1352. vm.getActivity();
  1353. }
  1354. vm.conversationsOpen = true;
  1355. }
  1356. }
  1357. function getUnread(conversations) {
  1358. var unread = 0;
  1359. for (var i = 0; i < conversations.length; i++) {
  1360. if (conversations[i].counts > 0) {
  1361. unread++;
  1362. }
  1363. }
  1364. return unread
  1365. }
  1366. vm.getActivity = function () {
  1367. firstTime = false;
  1368. var defer = $q.defer();
  1369. $http({
  1370. method: 'GET',
  1371. url: '/api/v1/chat/lasts',
  1372. headers: {
  1373. 'back': 1
  1374. }
  1375. }).then(function successCallback(response) {
  1376. vm.conversations = response.data;
  1377. for (var i = 0; i < vm.conversations.length; i++) {
  1378. vm.conversations[i].timestamp = parseInt(vm.conversations[i].timestamp);
  1379. }
  1380. vm.unreadCount = getUnread(vm.conversations);
  1381. if (vm.conversations.length > 5) {
  1382. vm.preloadedCount = 5;
  1383. } else {
  1384. vm.preloadedCount = vm.conversations.length;
  1385. }
  1386. defer.resolve();
  1387. }, function errorCallback(response) {});
  1388. return defer.promise
  1389. };
  1390. vm.resetConversationUnreads = function (id) {
  1391. for (var i = 0; i < vm.conversations.length; i++) {
  1392. if (vm.conversations[i].id == id) {
  1393. vm.conversations[i].counts = 0;
  1394. getUnread(vm.conversations);
  1395. }
  1396. }
  1397. }
  1398. vm.openConversation = function (id) {
  1399. $rootScope.$broadcast('chat-box-open', id);
  1400. vm.toggleConversationsOpen();
  1401. }
  1402. $rootScope.$on('chat-box-open', function (event, data) {
  1403. vm.resetConversationUnreads(data.target);
  1404. });
  1405. function refreshConversation(message, isSending) {
  1406. if (isSending) {
  1407. var newOne = true;
  1408. for (var i = 0; i < vm.conversations.length; i++) {
  1409. if (vm.conversations[i].id == message.id) {
  1410. newOne = false;
  1411. vm.conversations[i].text = message.text;
  1412. vm.conversations[i].timestamp = message.timestamp;
  1413. }
  1414. }
  1415. if (newOne) {
  1416. for (var i = 0; i < user.friends.length; i++) {
  1417. if (user.friends[i].id == message.id) {
  1418. var targetUser = {
  1419. avatar: user.friends[i].avatar,
  1420. name: user.friends[i].name
  1421. }
  1422. }
  1423. }
  1424. vm.conversations.push({
  1425. avatar: targetUser.avatar,
  1426. counts: 0,
  1427. id: message.id,
  1428. name: targetUser.name,
  1429. text: message.text,
  1430. timestamp: message.timestamp,
  1431. });
  1432. }
  1433. } else {
  1434. var newOne = true;
  1435. for (var i = 0; i < vm.conversations.length; i++) {
  1436. if (vm.conversations[i].id == message.user_id) {
  1437. newOne = false;
  1438. vm.conversations[i].text = message.text;
  1439. vm.conversations[i].timestamp = message.timestamp;
  1440. vm.conversations[i].avatar = message.avatar;
  1441. }
  1442. }
  1443. if (newOne) {
  1444. vm.conversations.push({
  1445. avatar: message.avatar,
  1446. counts: 0,
  1447. id: message.user_id,
  1448. name: message.name,
  1449. text: message.text,
  1450. timestamp: message.timestamp,
  1451. });
  1452. }
  1453. }
  1454. }
  1455. $rootScope.$on('chat-message-sent', function (event, message) {
  1456. if (firstTime) {
  1457. firstTime = false;
  1458. vm.getActivity().then(function () {
  1459. refreshConversation(message, true);
  1460. });
  1461. } else {
  1462. refreshConversation(message, true);
  1463. }
  1464. });
  1465. $rootScope.$on('chat-message-received', function (event, message, boxHidden) {
  1466. if (firstTime) {
  1467. firstTime = false;
  1468. vm.getActivity().then(function () {
  1469. refreshConversation(message);
  1470. if (boxHidden) {
  1471. incrementConversationUnread(message);
  1472. }
  1473. });
  1474. } else {
  1475. refreshConversation(message); {
  1476. if (boxHidden) {
  1477. incrementConversationUnread(message);
  1478. }
  1479. }
  1480. }
  1481. });
  1482. $rootScope.$on('chat-box-after-open', function (event, targetId) {
  1483. console.log('zlapalem afteropen');
  1484. for (var i = 0; i < vm.conversations.length; i++) {
  1485. if (vm.conversations[i].id == targetId) {
  1486. vm.conversations[i].counts = 0;
  1487. vm.unreadCount = getUnread(vm.conversations);
  1488. }
  1489. }
  1490. });
  1491. vm.getRelativeTime = function (timestamp) {
  1492. var t = parseInt(timestamp);
  1493. if (String(timestamp).length == 10) {
  1494. var timestamp = t * 1000;
  1495. }
  1496. return moment(t).fromNow()
  1497. }
  1498. function incrementConversationUnread(message) {
  1499. for (var i = 0; i < vm.conversations.length; i++) {
  1500. if (vm.conversations[i].id == message.user_id) {
  1501. vm.conversations[i].counts++;
  1502. vm.unreadCount = getUnread(vm.conversations);
  1503. }
  1504. }
  1505. playSound('/sounds/message');
  1506. }
  1507. }
  1508. ]);
  1509. app.controller('notificationsCtrl', ['$scope', '$http', function ($scope, $http) {
  1510. var vm = this;
  1511. vm.notifications = [];
  1512. vm.unreadCount = user.unreadnot;
  1513. var firstTime = true;
  1514. socket.on('user points', function (data) {
  1515. console.log(`socket points data`, data);
  1516. playSound('/sounds/soulstones');
  1517. if (!vm.notificationsOpen)
  1518. vm.unreadCount++;
  1519. });
  1520. socket.on('user notification', function (data) {
  1521. console.log(`socket notification data`, data);
  1522. vm.notifications.unshift(data);
  1523. last_my_notification_id = vm.notifications[0].id;
  1524. playSound('/sounds/notification');
  1525. if (!vm.notificationsOpen)
  1526. vm.unreadCount++;
  1527. });
  1528. vm.toggleSingle = function (notification) {
  1529. notification.openActions = !notification.openActions;
  1530. };
  1531. vm.toggleNotificationsOpen = function () {
  1532. if (vm.notificationsOpen) {
  1533. vm.notificationsOpen = false;
  1534. vm.unreadCount = 0;
  1535. } else {
  1536. if (firstTime) {
  1537. firstTime = false;
  1538. vm.getActivity();
  1539. }
  1540. vm.notificationsOpen = true;
  1541. }
  1542. };
  1543. function getUnread(notifications) {
  1544. var unread = 0;
  1545. for (var i = 0; i < notifications.length; i++) {
  1546. if (notifications[i].shown == 0)
  1547. unread++;
  1548. }
  1549. return unread
  1550. }
  1551. vm.getActivity = function () {
  1552. $http({
  1553. method: 'GET',
  1554. url: '/api/v1/notification/mynew?last=' + 0 + '&seen=' + last_my_notification_seen_id,
  1555. headers: {
  1556. 'back': 1
  1557. }
  1558. }).then(function successCallback(response) {
  1559. var resp = response.data;
  1560. var result = resp.concat(vm.notifications);
  1561. vm.notifications = result;
  1562. console.log(`vm.notifications`, vm.notifications);
  1563. vm.unreadCount = getUnread(vm.notifications);
  1564. if (resp.length)
  1565. last_my_notification_id = vm.notifications[0].id;
  1566. if (vm.notifications.length > 5) {
  1567. vm.preloadedCount = 5;
  1568. } else {
  1569. vm.preloadedCount = vm.notifications.length;
  1570. }
  1571. }, function errorCallback(response) {});
  1572. };
  1573. vm.acceptFriend = function (notification) {
  1574. $http({
  1575. method: 'POST',
  1576. url: '/api/v1/friend/add',
  1577. headers: {
  1578. 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
  1579. 'back': 1
  1580. },
  1581. data: {
  1582. id: notification.url
  1583. }
  1584. }).then(function successCallback(response) {
  1585. console.log(`response accept`, response);
  1586. for (var i = 0; i < vm.notifications.length; i++) {
  1587. if (vm.notifications[i].id == notification.id) {
  1588. vm.notifications[i].text = response.data.message;
  1589. vm.notifications[i].url = response.data.url;
  1590. vm.notifications[i].type = 5;
  1591. }
  1592. }
  1593. }, function errorCallback(response) {});
  1594. };
  1595. vm.rejectFriend = function (notification) {
  1596. $http({
  1597. method: 'POST',
  1598. url: '/api/v1/friend/remove',
  1599. headers: {
  1600. 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
  1601. 'back': 1
  1602. },
  1603. data: {
  1604. id: notification.url
  1605. }
  1606. }).then(function successCallback(response) {
  1607. for (var i = 0; i < vm.notifications.length; i++) {
  1608. if (vm.notifications[i].id == notification.id) {
  1609. vm.notifications[i].text = response.data.message;
  1610. vm.notifications[i].url = response.data.url;
  1611. vm.notifications[i].type = 5;
  1612. }
  1613. }
  1614. }, function errorCallback(response) {});
  1615. };
  1616. }
  1617. ]);
  1618. function detectmobile() {
  1619. if (window.innerWidth <= 1199) {
  1620. return true;
  1621. } else {
  1622. return false;
  1623. }
  1624. }
  1625. app.filter('to_trusted', ['$sce', function ($sce) {
  1626. return function (text) {
  1627. return $sce.trustAsHtml(text);
  1628. };
  1629. }
  1630. ]);
  1631. app.controller('tutorialCtrl', ['$scope', '$http', '$timeout', 'SweetAlert', '$rootScope', 'Cropper', '$q', '$window', function ($scope, $http, $timeout, SweetAlert, $rootScope, Cropper, $q, $window) {
  1632. var vm = this;
  1633. var bodyWrapper = $("#body-wrapper");
  1634. vm.tutorialSavedStep = user.tutorial;
  1635. vm.mobileHidden = detectmobile();
  1636. vm.overlayHeight = $window.innerHeight;
  1637. vm.overlayWidth = $window.innerWidth;
  1638. var blazy = new Blazy({
  1639. 'offset': 50000
  1640. });
  1641. setTimeout(blazy.revalidate(), 100);
  1642. angular.element($window).bind('resize', function () {
  1643. visualSetStep();
  1644. vm.overlayHeight = $window.innerHeight;
  1645. vm.overlayWidth = $window.innerWidth;
  1646. if (vm.currentStep.id == 3 && vm.currentStep.currentSubstep.id == 0) {
  1647. var fbelem = angular.element(document.querySelector("#fb-like"))[0];
  1648. vm.fbLikeBoxWidth = fbelem.offsetWidth - 45;
  1649. }
  1650. $scope.$digest();
  1651. });
  1652. vm.exitTutorial = function () {
  1653. SweetAlert.swal({
  1654. title: tutoriallang.skipHeading,
  1655. text: tutoriallang.skipText,
  1656. type: "warning",
  1657. showCancelButton: true,
  1658. confirmButtonText: tutoriallang.yes,
  1659. cancelButtonText: tutoriallang.no,
  1660. closeOnConfirm: false
  1661. }, function (isConfirm) {
  1662. if (isConfirm) {
  1663. window.location.href = '/';
  1664. }
  1665. });
  1666. }
  1667. var arrowWidth = 72;
  1668. var animationDuration = 350;
  1669. var scrollDuration = 1000;
  1670. var scrollOffset = 90;
  1671. window.scrollTo(0, 0);
  1672. vm.holeAnimating = false;
  1673. vm.proceedDisabled = true;
  1674. vm.isScrolling = false;
  1675. if (!detectmobile()) {
  1676. $rootScope.scrollDisabled = true;
  1677. }
  1678. vm.tutorialFixed = true;
  1679. var isWebkit = 'WebkitAppearance' in document.documentElement.style;
  1680. if (vm.tutorialFixed == false) {
  1681. vm.tutorialHeight = angular.element(document.querySelector('#content-wrapper'))[0].offsetHeight + 'px';
  1682. } else {
  1683. vm.tutorialHeight = '100%';
  1684. }
  1685. vm.bubbleVisible = false;
  1686. var loadedSoulstonesPage = false;
  1687. vm.displayed = {
  1688. holeX: 0,
  1689. holeY: 0,
  1690. holeWidth: 0,
  1691. holeHeight: 0,
  1692. arrowX: -100,
  1693. arrowY: -100
  1694. }
  1695. vm.dayList = [];
  1696. for (var i = 1; i <= 31; i++) {
  1697. if (i <= 9) {
  1698. var t = "0" + i;
  1699. } else {
  1700. var t = i.toString();
  1701. }
  1702. vm.dayList.push(t);
  1703. }
  1704. vm.monthList = [{
  1705. value: "01",
  1706. name: tutoriallang.jan
  1707. }, {
  1708. value: "02",
  1709. name: tutoriallang.feb
  1710. }, {
  1711. value: "03",
  1712. name: tutoriallang.mar
  1713. }, {
  1714. value: "04",
  1715. name: tutoriallang.apr
  1716. }, {
  1717. value: "05",
  1718. name: tutoriallang.may
  1719. }, {
  1720. value: "06",
  1721. name: tutoriallang.jun
  1722. }, {
  1723. value: "07",
  1724. name: tutoriallang.jul
  1725. }, {
  1726. value: "08",
  1727. name: tutoriallang.aug
  1728. }, {
  1729. value: "09",
  1730. name: tutoriallang.sep
  1731. }, {
  1732. value: "10",
  1733. name: tutoriallang.oct
  1734. }, {
  1735. value: "11",
  1736. name: tutoriallang.nov
  1737. }, {
  1738. value: "12",
  1739. name: tutoriallang.dec
  1740. }
  1741. ];
  1742. vm.birthDateValid = false;
  1743. function isValidDate(year, month, day) {
  1744. t = moment(year + '-' + month + '-' + day, "YYYY-MM-DD", true).isValid();
  1745. vm.birthDateValid = t;
  1746. }
  1747. $scope.$watch('vm.profileDetails', function (newValue, oldValue) {
  1748. isValidDate(newValue.year, newValue.month, newValue.day);
  1749. }, true);
  1750. vm.yearList = [];
  1751. var thisYear = new Date().getFullYear();
  1752. for (var i = thisYear; i > thisYear - 100; i--) {
  1753. vm.yearList.push(i);
  1754. }
  1755. vm.soundMuted = false;
  1756. vm.toggleMute = function () {
  1757. if (vm.soundMuted) {
  1758. unmutePage();
  1759. vm.soundMuted = false;
  1760. } else {
  1761. mutePage();
  1762. vm.soundMuted = true;
  1763. }
  1764. }
  1765. vm.steps = [{
  1766. id: 0,
  1767. points: 20,
  1768. substeps: [{
  1769. id: 0,
  1770. sound: '1',
  1771. hagText: tutoriallang.step1,
  1772. }
  1773. ]
  1774. }, {
  1775. id: 1,
  1776. points: 10,
  1777. substeps: [{
  1778. id: 0,
  1779. highlightElement: ".featured-games .big-game",
  1780. direction: "l",
  1781. hagText: tutoriallang.step2,
  1782. radius: 3,
  1783. sound: '2'
  1784. }, {
  1785. id: 1,
  1786. highlightElement: ".featured-games .big-game .reward-tag .soulstones",
  1787. direction: "tr",
  1788. hagText: tutoriallang.step3,
  1789. radius: 3,
  1790. sound: '3'
  1791. }, {
  1792. id: 2,
  1793. highlightElement: ".earth-bg .gh-grid .reward-tile",
  1794. direction: "l",
  1795. radius: 3,
  1796. hagText: tutoriallang.step4,
  1797. sound: '4'
  1798. }, {
  1799. id: 3,
  1800. highlightElement: ".earth-bg .gh-grid .reward-tile .reward-tag .soulstones",
  1801. direction: "r",
  1802. radius: 3,
  1803. hagText: tutoriallang.step4bis,
  1804. sound: '5'
  1805. }
  1806. ]
  1807. }, {
  1808. id: 2,
  1809. points: 10,
  1810. substeps: [{
  1811. id: 0,
  1812. highlightElement: "#profile-stuff .stuff.soulstones",
  1813. direction: "tr",
  1814. radius: 3,
  1815. sound: '6',
  1816. initFunction: function () {},
  1817. hagText: tutoriallang.step5,
  1818. hagPushed: false
  1819. }, {
  1820. id: 1,
  1821. highlightElement: "#profile-experience",
  1822. direction: "t",
  1823. radius: 0,
  1824. sound: '7',
  1825. hagText: tutoriallang.step6,
  1826. hagPushed: false
  1827. }, {
  1828. id: 2,
  1829. highlightElement: "#profile-box .profile-link .rank",
  1830. direction: "t",
  1831. radius: 7,
  1832. sound: '8',
  1833. hagText: tutoriallang.step7,
  1834. hagPushed: false
  1835. }, {
  1836. id: 3,
  1837. highlightElement: "#profile-box .profile-link .avatar-badge",
  1838. direction: "tl",
  1839. radius: 5,
  1840. sound: '9',
  1841. hagText: tutoriallang.step8,
  1842. hagPushed: false
  1843. }, {
  1844. id: 4,
  1845. highlightElement: "#profile-tools",
  1846. direction: "tr",
  1847. sound: '10',
  1848. hagText: tutoriallang.step9,
  1849. }, {
  1850. id: 5,
  1851. highlightElement: "#friend-list",
  1852. direction: "r",
  1853. sound: '11',
  1854. hagText: tutoriallang.step10,
  1855. }, {
  1856. id: 6,
  1857. highlightElement: "#friends-activity",
  1858. direction: "r",
  1859. sound: '12',
  1860. hagText: tutoriallang.step11,
  1861. }, {
  1862. id: 7,
  1863. highlightElement: "#today-occassion",
  1864. direction: "tr",
  1865. sound: '13',
  1866. hagText: tutoriallang.step12,
  1867. }, {
  1868. id: 8,
  1869. highlightElement: "#profile-stuff .stuff.soulstones",
  1870. direction: "t",
  1871. sound: '14',
  1872. hagText: tutoriallang.step13,
  1873. hagPushed: false,
  1874. clickFunction: function () {
  1875. $timeout(function () {
  1876. var t = true;
  1877. vm.loaderVisible = true;
  1878. getPage(soulgems_page, 0).then(function () {
  1879. vm.loaderVisible = false;
  1880. vm.proceed();
  1881. });
  1882. }, 0);
  1883. }
  1884. }
  1885. ]
  1886. }, {
  1887. id: 3,
  1888. points: 50,
  1889. substeps: [{
  1890. id: 0,
  1891. highlightElement: "#page-content",
  1892. direction: "tl",
  1893. sound: '15',
  1894. initFunction: function () {
  1895. window.scrollTo(0, 0);
  1896. var elem = angular.element(document.querySelector("#fb-like"))[0];
  1897. vm.currentTemplate = 'fblike.html';
  1898. if (typeof(elem) !== "undefined") {
  1899. var toScroll = elem.getBoundingClientRect().top - scrollOffset - 50;
  1900. $(isWebkit ? "body" : "html").animate({
  1901. scrollTop: toScroll
  1902. }, 7000, function () {
  1903. vm.confirmSubstep();
  1904. });
  1905. } else {
  1906. vm.confirmSubstep();
  1907. vm.confirmSubstep();
  1908. }
  1909. },
  1910. hagText: tutoriallang.step14,
  1911. }, {
  1912. id: 1,
  1913. highlightElement: "#fb-like",
  1914. radius: 10,
  1915. direction: "tl",
  1916. initFunction: function () {
  1917. var fboriginal = angular.element(document.querySelector("#fbiframe"))[0].getBoundingClientRect();
  1918. vm.confirmArrowDisabled = true;
  1919. vm.tutorialContentVisible = true;
  1920. vm.tutorialContentStyle = {
  1921. position: 'absolute',
  1922. top: fboriginal.top,
  1923. left: fboriginal.left,
  1924. bottom: 'auto',
  1925. right: 'auto'
  1926. }
  1927. vm.fbLikeBoxWidth = angular.element(document.querySelector("#fbiframe"))[0].offsetWidth;
  1928. vm.tutorialContentMouseover = function () {
  1929. $timeout(function () {
  1930. vm.confirmArrowDisabled = false;
  1931. }, 300);
  1932. }
  1933. },
  1934. hagText: tutoriallang.step14,
  1935. }, {
  1936. id: 2,
  1937. sound: '16',
  1938. initFunction: function () {
  1939. vm.tutorialContentVisible = false;
  1940. vm.tutorialContentStyle = {}
  1941. vm.tutorialContentMouseover = undefined;
  1942. },
  1943. highlightElement: "#friend-inv",
  1944. direction: "tl",
  1945. radius: 3,
  1946. hagText: tutoriallang.step15,
  1947. }
  1948. ]
  1949. }, {
  1950. id: 4,
  1951. points: 10,
  1952. initFunction: function () {
  1953. $("#main-content").prepend("<div class='container-fluid single-game-page-wrapper'></div>");
  1954. vm.displayed = {
  1955. holeX: 0,
  1956. holeY: 0,
  1957. holeWidth: 0,
  1958. holeHeight: 0,
  1959. arrowX: -100,
  1960. arrowY: -100
  1961. }
  1962. },
  1963. substeps: [{
  1964. id: 0,
  1965. sound: '17',
  1966. hagText: tutoriallang.step16,
  1967. initFunction: function () {
  1968. vm.currentTemplate = 'profile0.html';
  1969. vm.tutorialContentVisible = true;
  1970. }
  1971. }
  1972. ]
  1973. }, {
  1974. id: 5,
  1975. points: 20,
  1976. substeps: [{
  1977. id: 0,
  1978. sound: '19',
  1979. hagText: tutoriallang.step17,
  1980. initFunction: function () {
  1981. vm.currentTemplate = 'profile1.html';
  1982. vm.tutorialContentVisible = true;
  1983. }
  1984. }, {
  1985. id: 1,
  1986. sound: '20',
  1987. hagText: tutoriallang.step18,
  1988. initFunction: function () {
  1989. vm.currentTemplate = 'profile2.html';
  1990. vm.tutorialContentVisible = true;
  1991. }
  1992. }, {
  1993. id: 2,
  1994. sound: '21',
  1995. hagText: tutoriallang.step19,
  1996. initFunction: function () {
  1997. vm.proceedHidden = true;
  1998. vm.currentTemplate = 'profile3.html';
  1999. vm.tutorialContentVisible = true;
  2000. }
  2001. }
  2002. ]
  2003. }, {
  2004. id: 6,
  2005. points: 0,
  2006. substeps: [{
  2007. id: 0,
  2008. highlightElement: "#page-content",
  2009. direction: "tl",
  2010. sound: '22',
  2011. initFunction: function () {
  2012. window.scrollTo(0, 0);
  2013. $(isWebkit ? "body" : "html").animate({
  2014. scrollTop: 270
  2015. }, 9000, function () {
  2016. vm.confirmSubstep();
  2017. });
  2018. },
  2019. hagText: tutoriallang.step20,
  2020. }, {
  2021. id: 1,
  2022. highlightElement: "#single-game-task",
  2023. sound: '23',
  2024. direction: "tr",
  2025. radius: 3,
  2026. hagText: tutoriallang.step21,
  2027. }, {
  2028. id: 2,
  2029. highlightElement: "#single-game-points",
  2030. sound: '24',
  2031. direction: "br",
  2032. radius: 5,
  2033. hagText: tutoriallang.step22,
  2034. }, {
  2035. id: 3,
  2036. highlightElement: "#single-game-play",
  2037. sound: '25',
  2038. direction: "r",
  2039. radius: 3,
  2040. hagText: tutoriallang.step23,
  2041. initFunction: function () {
  2042. vm.proceedHidden = true;
  2043. },
  2044. clickFunction: function () {
  2045. window.open(vm.chosenGamePlayUrl, '_blank');
  2046. location.reload();
  2047. }
  2048. }
  2049. ]
  2050. }
  2051. ];
  2052. if (!vm.mobileHidden) {
  2053. setStep(0, 0);
  2054. }
  2055. vm.rewardCategories = [{
  2056. id: 1,
  2057. name: tutoriallang.currency,
  2058. bg: '/img/rewards/background/1000%20z%C5%82ota_min.jpg'
  2059. }, {
  2060. id: 2,
  2061. name: tutoriallang.cdkeys,
  2062. bg: '/img/rewards/background/wied%C5%BAmin%203:%20dziki%20gon_min.jpg'
  2063. }, {
  2064. id: 3,
  2065. name: tutoriallang.voucher,
  2066. bg: '/img/rewards/background/steam%20wallet%205%E2%82%AC_min.jpg'
  2067. }, {
  2068. id: 4,
  2069. name: tutoriallang.others,
  2070. bg: '/img/rewards/background/world%20of%20warcraft%2060_min.jpg'
  2071. }, {
  2072. id: 5,
  2073. name: 'CS:GO',
  2074. bg: '/img/rewards/background/counter%20strike%20global%20offensive_min.jpg'
  2075. }
  2076. ];
  2077. $scope.$watch('vm.chosenRewardCategory', function (newValue, oldValue) {
  2078. $http({
  2079. method: 'POST',
  2080. url: '/api/v1/tutorial/rewards',
  2081. data: {
  2082. id: newValue,
  2083. random: false,
  2084. count: 4
  2085. }
  2086. }).then(function (result) {
  2087. vm.rewardList = result.data;
  2088. }, function (result) {});
  2089. });
  2090. vm.croppers = {
  2091. list: {
  2092. 1: {
  2093. file: undefined,
  2094. data: undefined,
  2095. url: undefined,
  2096. options: {
  2097. viewMode: 2,
  2098. autoCropArea: 0.9,
  2099. zoomable: false,
  2100. aspectRatio: 1,
  2101. minContainerWidth: 10,
  2102. minContainerHeight: 10,
  2103. minNaturalWidth: 150,
  2104. minNaturalHeight: 150,
  2105. destinationWidth: 256,
  2106. destinationHeight: 256,
  2107. crop: function (dataNew) {
  2108. vm.graphicsSaved = false;
  2109. vm.croppers.list[1].data = dataNew;
  2110. }
  2111. },
  2112. showFunction: function () {
  2113. $scope.$broadcast('show1');
  2114. },
  2115. hideFunction: function () {
  2116. $scope.$broadcast('hide1');
  2117. },
  2118. showEvent: 'show1',
  2119. hideEvent: 'hide1',
  2120. onFile: function (blob) {
  2121. encodeBlob(blob, 1);
  2122. },
  2123. crop: function () {
  2124. Cropper.crop(vm.croppers.list[1].file, vm.croppers.list[1].data).then(Cropper.encode).then(function (result) {
  2125. return result
  2126. });
  2127. }
  2128. }
  2129. }
  2130. }
  2131. vm.surfaceClick = function (event, stepId, substepId) {
  2132. var clickX = event.offsetX;
  2133. var clickY = event.offsetY;
  2134. if (clickX >= vm.displayed.holeX && clickX <= vm.displayed.holeX + vm.displayed.holeWidth) {
  2135. if (clickY >= vm.displayed.holeY && clickY <= vm.displayed.holeY + vm.displayed.holeHeight) {
  2136. if (vm.steps[stepId].substeps[substepId].clickFunction != undefined) {
  2137. vm.steps[stepId].substeps[substepId].clickFunction();
  2138. }
  2139. }
  2140. }
  2141. }
  2142. vm.profileDetails = {
  2143. sex: 0
  2144. }
  2145. if (usertutorial.avatar.length >= 0)
  2146. vm.defaultAvatarUrl = usertutorial.avatar;
  2147. if (usertutorial.birth_day.length >= 0)
  2148. vm.profileDetails.day = usertutorial.birth_day;
  2149. if (usertutorial.birth_month.length >= 0)
  2150. vm.profileDetails.month = usertutorial.birth_day;
  2151. if (usertutorial.birth_year.length >= 0)
  2152. vm.profileDetails.year = usertutorial.birth_year;
  2153. if (usertutorial.city.length >= 0)
  2154. vm.profileDetails.city = usertutorial.city;
  2155. if (usertutorial.sex != undefined)
  2156. vm.profileDetails.sex = usertutorial.sex;
  2157. vm.confirmSubstep = function () {
  2158. var currentSubstepId = vm.currentStep.currentSubstep.id;
  2159. var currentStepId = vm.currentStep.id;
  2160. if (vm.currentStep.substeps.length > currentSubstepId + 1) {
  2161. setStep(vm.currentStep.id, currentSubstepId + 1);
  2162. } else if (vm.steps.length > currentStepId + 1) {
  2163. vm.proceed();
  2164. }
  2165. }
  2166. vm.proceed = function () {
  2167. vm.proceedHidden = true;
  2168. var currentStepId = vm.currentStep.id;
  2169. if (currentStepId != 5) {
  2170. var t = vm.currentStep.id + 1;
  2171. $.ajax({
  2172. url: "/api/v1/tutorial/step" + t,
  2173. type: "post",
  2174. headers: {
  2175. 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  2176. },
  2177. success: function (res) {
  2178. setStep(currentStepId + 1, 0);
  2179. }
  2180. });
  2181. }
  2182. }
  2183. vm.chooseReward = function (id) {
  2184. vm.loaderVisible = true;
  2185. vm.chosenRewardId = id;
  2186. $http({
  2187. method: 'POST',
  2188. url: '/api/v1/tutorial/games',
  2189. data: {
  2190. random: false,
  2191. count: 4
  2192. }
  2193. }).then(function (result) {
  2194. vm.gameList = result.data;
  2195. vm.loaderVisible = false;
  2196. vm.confirmSubstep();
  2197. }, function (result) {});
  2198. }
  2199. vm.loadRandomRewards = function (id) {
  2200. vm.loaderVisible = true;
  2201. $http({
  2202. method: 'POST',
  2203. url: '/api/v1/tutorial/rewards',
  2204. data: {
  2205. id: id,
  2206. random: true,
  2207. count: 4
  2208. }
  2209. }).then(function (result) {
  2210. vm.rewardList = result.data;
  2211. vm.loaderVisible = false;
  2212. }, function (result) {});
  2213. }
  2214. vm.loadRandomGames = function () {
  2215. vm.loaderVisible = true;
  2216. $http({
  2217. method: 'POST',
  2218. url: '/api/v1/tutorial/games',
  2219. data: {
  2220. random: true,
  2221. count: 4
  2222. }
  2223. }).then(function (result) {
  2224. vm.gameList = result.data;
  2225. vm.loaderVisible = false;
  2226. }, function (result) {});
  2227. }
  2228. vm.chooseGame = function (id, url, playurl) {
  2229. vm.chosenGameId = id;
  2230. vm.loaderVisible = true;
  2231. var currentStepId = vm.currentStep.id;
  2232. var stepObject = {};
  2233. vm.currentTemplate = undefined;
  2234. vm.tutorialContentVisible = false;
  2235. if (vm.croppers.list[1].url) {
  2236. if (vm.croppers.list[1].options.destinationHeight && vm.croppers.list[1].data) {
  2237. vm.croppers.list[1].data.destinationHeight = vm.croppers.list[1].options.destinationHeight;
  2238. }
  2239. if (vm.croppers.list[1].options.destinationWidth && vm.croppers.list[1].data) {
  2240. vm.croppers.list[1].data.destinationWidth = vm.croppers.list[1].options.destinationWidth;
  2241. }
  2242. Cropper.crop(vm.croppers.list[1].file, vm.croppers.list[1].data).then(Cropper.encode).then(function (result) {
  2243. var avatar = result;
  2244. stepObject = {
  2245. birth: vm.profileDetails.year + '-' + vm.profileDetails.month + '-' + vm.profileDetails.day,
  2246. city: vm.profileDetails.city,
  2247. sex: vm.profileDetails.sex,
  2248. chosenGame: vm.chosenGameId,
  2249. chosenReward: vm.chosenRewardId,
  2250. avatar: avatar
  2251. };
  2252. var stepno = vm.currentStep.id + 1;
  2253. $http({
  2254. method: 'POST',
  2255. url: "/api/v1/tutorial/step" + stepno,
  2256. data: stepObject
  2257. }).then(function (result) {
  2258. var t = true;
  2259. getPage(url, 0).then(function () {
  2260. if (t) {
  2261. t = false;
  2262. window.scrollTo(0, 0);
  2263. vm.loaderVisible = false;
  2264. vm.chosenGameUrl = url;
  2265. vm.chosenGamePlayUrl = playurl;
  2266. setStep(stepno, 0);
  2267. }
  2268. });
  2269. }, function (result) {});
  2270. });
  2271. } else {
  2272. stepObject = {
  2273. birth: vm.profileDetails.year + '-' + vm.profileDetails.month + '-' + vm.profileDetails.day,
  2274. city: vm.profileDetails.city,
  2275. sex: vm.profileDetails.sex,
  2276. chosenGame: vm.chosenGameId,
  2277. chosenReward: vm.chosenRewardId
  2278. };
  2279. var stepno = vm.currentStep.id + 1;
  2280. $http({
  2281. method: 'POST',
  2282. url: "/api/v1/tutorial/step" + stepno,
  2283. data: stepObject
  2284. }).then(function (result) {
  2285. var t = true;
  2286. getPage(url, 0).then(function () {
  2287. if (t) {
  2288. t = false;
  2289. window.scrollTo(0, 0);
  2290. vm.loaderVisible = false;
  2291. vm.chosenGameUrl = url;
  2292. vm.chosenGamePlayUrl = playurl;
  2293. setStep(stepno, 0);
  2294. }
  2295. });
  2296. }, function (result) {});
  2297. }
  2298. }
  2299. function getHighlightElement(str) {
  2300. var elem = angular.element(document.querySelector(str))[0];
  2301. return elem
  2302. }
  2303. function visualSetStep() {
  2304. if (vm.currentStep.currentSubstep.highlightElement) {
  2305. var highlightElement = getHighlightElement(vm.currentStep.currentSubstep.highlightElement);
  2306. if (vm.currentStep.id == 3 && vm.currentStep.currentSubstep.id == 0) {
  2307. drawArrow(highlightElement, false);
  2308. } else if (!isScrolledIntoView(highlightElement)) {
  2309. drawArrow(highlightElement, true);
  2310. } else {
  2311. drawArrow(highlightElement, false);
  2312. }
  2313. }
  2314. if (vm.currentStep.initFunction != undefined)
  2315. vm.currentStep.initFunction();
  2316. if (vm.currentStep.currentSubstep.initFunction != undefined)
  2317. vm.currentStep.currentSubstep.initFunction();
  2318. $timeout(function () {
  2319. vm.bubbleVisible = true;
  2320. }, 500);
  2321. }
  2322. function setStep(stepId, substepId) {
  2323. vm.proceedHidden = false;
  2324. vm.bubbleVisible = false;
  2325. vm.currentStep = vm.steps[stepId];
  2326. vm.currentStep.currentSubstep = vm.steps[stepId].substeps[substepId];
  2327. if (!vm.soundMuted && user.lang == 'pl') {
  2328. playAudio('/sounds/tutorial/' + vm.currentStep.currentSubstep.sound);
  2329. }
  2330. visualSetStep();
  2331. }
  2332. function offset(el) {
  2333. var rect = el.getBoundingClientRect(),
  2334. scrollLeft = window.pageXOffset || document.documentElement.scrollLeft,
  2335. scrollTop = window.pageYOffset || document.documentElement.scrollTop;
  2336. return {
  2337. top: rect.top + scrollTop,
  2338. left: rect.left + scrollLeft
  2339. }
  2340. }
  2341. function drawArrow(highlightElement, scroll) {
  2342. if (scroll) {
  2343. vm.displayed.holeWidth = 0;
  2344. vm.displayed.holeHeight = 0;
  2345. var toScroll = offset(highlightElement).top - scrollOffset;
  2346. $(isWebkit ? "body" : "html").animate({
  2347. scrollTop: toScroll
  2348. }, scrollDuration, function () {
  2349. $timeout(function () {
  2350. vm.displayed.holeWidth = highlightElement.offsetWidth;
  2351. vm.displayed.holeHeight = highlightElement.offsetHeight;
  2352. vm.displayed.holeX = highlightElement.getBoundingClientRect().left;
  2353. vm.displayed.holeY = highlightElement.getBoundingClientRect().top;
  2354. setArrowDirection(vm.currentStep.currentSubstep.direction);
  2355. $scope.$apply();
  2356. }, 100);
  2357. });
  2358. } else {
  2359. $timeout(function () {
  2360. vm.displayed.holeWidth = highlightElement.offsetWidth;
  2361. vm.displayed.holeHeight = highlightElement.offsetHeight;
  2362. vm.displayed.holeX = highlightElement.getBoundingClientRect().left;
  2363. vm.displayed.holeY = highlightElement.getBoundingClientRect().top;
  2364. setArrowDirection(vm.currentStep.currentSubstep.direction);
  2365. $scope.$apply();
  2366. }, 100);
  2367. }
  2368. }
  2369. function isScrolledIntoView(el) {
  2370. var elemTop = el.getBoundingClientRect().top;
  2371. var elemBottom = el.getBoundingClientRect().bottom;
  2372. var isVisible = (elemTop >= 0) && (elemBottom + 40 <= window.innerHeight);
  2373. return isVisible;
  2374. }
  2375. function setArrowDirection(direction) {
  2376. if (direction == 'tl') {
  2377. vm.displayed.arrowX = vm.displayed.holeX + vm.displayed.holeWidth;
  2378. vm.displayed.arrowY = vm.displayed.holeY + vm.displayed.holeHeight;
  2379. }
  2380. if (direction == 't') {
  2381. vm.displayed.arrowX = vm.displayed.holeX + vm.displayed.holeWidth / 2 - arrowWidth / 2;
  2382. vm.displayed.arrowY = vm.displayed.holeY + vm.displayed.holeHeight;
  2383. }
  2384. if (direction == 'tr') {
  2385. vm.displayed.arrowX = vm.displayed.holeX - arrowWidth;
  2386. vm.displayed.arrowY = vm.displayed.holeY + vm.displayed.holeHeight;
  2387. }
  2388. if (direction == 'bl') {
  2389. vm.displayed.arrowX = vm.displayed.holeX + vm.displayed.holeWidth;
  2390. vm.displayed.arrowY = vm.displayed.holeY - vm.displayed.holeHeight - arrowWidth / 2;
  2391. }
  2392. if (direction == 'b') {
  2393. vm.displayed.arrowX = vm.displayed.holeX + vm.displayed.holeWidth / 2 - arrowWidth / 2;
  2394. vm.displayed.arrowY = vm.displayed.holeY - vm.displayed.holeHeight - arrowWidth / 2;
  2395. }
  2396. if (direction == 'br') {
  2397. vm.displayed.arrowX = vm.displayed.holeX - arrowWidth;
  2398. vm.displayed.arrowY = vm.displayed.holeY - vm.displayed.holeHeight - arrowWidth / 2;
  2399. }
  2400. if (direction == 'r') {
  2401. vm.displayed.arrowX = vm.displayed.holeX - arrowWidth;
  2402. vm.displayed.arrowY = vm.displayed.holeY + vm.displayed.holeHeight / 2 - arrowWidth / 2;
  2403. }
  2404. if (direction == 'l') {
  2405. vm.displayed.arrowX = vm.displayed.holeX + vm.displayed.holeWidth;
  2406. vm.displayed.arrowY = vm.displayed.holeY + vm.displayed.holeHeight / 2 - arrowWidth / 2;
  2407. }
  2408. }
  2409. function getBlobFromUrl(url, cropperId) {
  2410. if (url.length > 0) {
  2411. var imageUrl = url;
  2412. var xhr = new XMLHttpRequest();
  2413. xhr.onreadystatechange = function () {
  2414. if (this.readyState == 4 && this.status == 200) {
  2415. vm.croppers.list[cropperId].onFile(this.response);
  2416. imagesLoaded++;
  2417. }
  2418. }
  2419. xhr.open('GET', imageUrl);
  2420. xhr.responseType = 'blob';
  2421. xhr.send();
  2422. }
  2423. }
  2424. function passBlobToCropper(blob, cropperId) {
  2425. vm.croppers.list[cropperId].onFile(blob);
  2426. }
  2427. function getSizeOfBase64(base) {
  2428. var deferred = $q.defer();
  2429. var img = new Image();
  2430. img.src = base;
  2431. img.onload = function () {
  2432. var obj = {
  2433. width: img.width,
  2434. height: img.height
  2435. }
  2436. deferred.resolve(obj);
  2437. }
  2438. return deferred.promise;
  2439. }
  2440. function encodeBlob(blob, cropperId) {
  2441. Cropper.encode((vm.croppers.list[cropperId].file = blob)).then(function (dataUrl) {
  2442. if (dataUrl != "noblob") {
  2443. getSizeOfBase64(dataUrl).then(function (res) {
  2444. var imgSize = res;
  2445. if ((imgSize.width >= vm.croppers.list[cropperId].options.minNaturalWidth) && (imgSize.height >= vm.croppers.list[cropperId].options.minNaturalHeight)) {
  2446. var containerwidth = angular.element(document.getElementById('cropper-' + cropperId))[0].clientWidth;
  2447. var minCropBoxWidth = (vm.croppers.list[cropperId].options.minNaturalWidth * containerwidth) / imgSize.width;
  2448. var minCropBoxHeight = minCropBoxWidth * (vm.croppers.list[cropperId].options.minNaturalHeight / vm.croppers.list[cropperId].options.minNaturalWidth);
  2449. vm.croppers.list[cropperId].options.minCropBoxWidth = minCropBoxWidth;
  2450. vm.croppers.list[cropperId].options.minCropBoxHeight = minCropBoxHeight;
  2451. vm.croppers.list[cropperId].url = dataUrl;
  2452. $timeout(vm.croppers.list[cropperId].hideFunction);
  2453. $timeout(vm.croppers.list[cropperId].showFunction);
  2454. } else {
  2455. notyAlert(tutoriallang.smallAvatar + ' (Minimum: 150x150)', 'error');
  2456. }
  2457. });
  2458. } else {
  2459. notyAlert('BLOB ERROR', 'error');
  2460. }
  2461. });
  2462. }
  2463. function b64toBlob(b64Data, contentType, sliceSize) {
  2464. contentType = contentType || '';
  2465. sliceSize = sliceSize || 512;
  2466. var byteCharacters = atob(b64Data);
  2467. var byteArrays = [];
  2468. for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
  2469. var slice = byteCharacters.slice(offset, offset + sliceSize);
  2470. var byteNumbers = new Array(slice.length);
  2471. for (var i = 0; i < slice.length; i++) {
  2472. byteNumbers[i] = slice.charCodeAt(i);
  2473. }
  2474. var byteArray = new Uint8Array(byteNumbers);
  2475. byteArrays.push(byteArray);
  2476. }
  2477. var blob = new Blob(byteArrays, {
  2478. type: contentType
  2479. });
  2480. return blob;
  2481. }
  2482. }
  2483. ]);
  2484. function muteMe(elem) {
  2485. elem.muted = true;
  2486. }
  2487. function mutePage() {
  2488. var videos = document.querySelectorAll("video"),
  2489. audios = document.querySelectorAll("audio");
  2490. [].forEach.call(videos, function (video) {
  2491. muteMe(video);
  2492. });
  2493. [].forEach.call(audios, function (audio) {
  2494. muteMe(audio);
  2495. });
  2496. }
  2497. function unmute(elem) {
  2498. elem.muted = false;
  2499. }
  2500. function unmutePage() {
  2501. var videos = document.querySelectorAll("video"),
  2502. audios = document.querySelectorAll("audio");
  2503. [].forEach.call(videos, function (video) {
  2504. unmute(video);
  2505. });
  2506. [].forEach.call(audios, function (audio) {
  2507. unmute(audio);
  2508. });
  2509. }
  2510. var pages = 0;
  2511. var state = currentRoute;
  2512. $(document).ajaxSend(function (event, jqxhr, settings) {
  2513. if (typeof(settings) !== "undefined" && typeof(settings.headers) !== "undefined" && typeof(settings.headers.back) === "undefined") {
  2514. NProgress.start();
  2515. }
  2516. }).ajaxComplete(function () {
  2517. NProgress.done();
  2518. });
  2519. $(window).on("popstate", function (e) {
  2520. getPage(document.location, 1);
  2521. });
  2522. $('body').on('click', 'a', function () {
  2523. var blazy = new Blazy({
  2524. 'offset': 500
  2525. });
  2526. var url = $(this).attr('href');
  2527. if (typeof(url) !== "undefined" && url.indexOf('#') >= 0) {
  2528. return true;
  2529. }
  2530. if (($(this).hasClass('block-refresh')) || ($(this).hasClass('notyConfirm'))) {
  2531. return true;
  2532. }
  2533. if ($(this).attr('target') == "_blank") {
  2534. return true;
  2535. }
  2536. var domainl = domain;
  2537. if (domainl.indexOf(':8000') >= 0 || domainl.indexOf(':3000')) {
  2538. domainl = domainl.replace(':8000', '').replace(':3000', '');
  2539. }
  2540. if (domainl.indexOf('localhost') < 0 && domainl.indexOf('https://gamehag.com') < 0 && domainl.indexOf('https://v2.gamehag.com') < 0 && domainl.indexOf('gamehag.com') < 0) {
  2541. return true;
  2542. }
  2543. var urlarr = ['auth'];
  2544. if (urlarr.indexOf(url) >= 0) {
  2545. return true;
  2546. }
  2547. if (state == "games.show") {
  2548. console.log('elo');
  2549. Dropzone.forElement("#dropzone-task").destroy();
  2550. Dropzone.forElement("#dropzone-screen").destroy();
  2551. }
  2552. if (state == "roulette.index") {
  2553. console.log('roul exity');
  2554. socket.emit('roulette exit');
  2555. }
  2556. getPage(url, 0);
  2557. return false;
  2558. });
  2559. function getPage(url, back) {
  2560. var pagePromise = new Promise(function (resolve, reject) {
  2561. $.ajax({
  2562. url: url,
  2563. cache: false,
  2564. type: "GET",
  2565. headers: {
  2566. 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
  2567. 'content': 1
  2568. },
  2569. success: function (res) {
  2570. resolve("Success!");
  2571. NProgress.set(0.7);
  2572. if (typeof(res.content) === "undefined") {
  2573. window.top.location = url;
  2574. return false;
  2575. }
  2576. $(window).scrollTop(0);
  2577. if (domain.indexOf(':8000') >= 0 && res.url.indexOf(':3000') >= 0) {
  2578. res.url = res.url.replace(':3000', ':8000');
  2579. } else if (domain.indexOf(':3000') >= 0 && res.url.indexOf(':8000') >= 0) {
  2580. res.url = res.url.replace(':8000', ':3000');
  2581. }
  2582. document.title = res.title;
  2583. if (!back) {
  2584. window.history.pushState(res.state, res.title, res.url);
  2585. state = res.state;
  2586. }
  2587. if (state == "chat.index") {
  2588. chatPageOpen = true;
  2589. angular.element(document.querySelector('body')).scope().$root.onChatPage = true;
  2590. } else {
  2591. chatPageOpen = false;
  2592. angular.element(document.querySelector('body')).scope().$root.onChatPage = false;
  2593. }
  2594. $('meta[name="csrf-token"]').attr('content', res.token);
  2595. var blazy = new Blazy({
  2596. 'offset': 500
  2597. });
  2598. setTimeout(blazy.revalidate(), 100);
  2599. $(".tooltip").empty();
  2600. $("#head").empty().html(res.head);
  2601. var queueLen = app._invokeQueue.length;
  2602. $("#page-content").empty().html(res.content);
  2603. $("#modals").empty().html(res.modal);
  2604. $("#scriptsadd").empty().html(res.scripts);
  2605. var queue = app._invokeQueue;
  2606. for (var i = queueLen; i < queue.length; i++) {
  2607. var call = queue[i];
  2608. var provider = providers[call[0]];
  2609. if (provider) {
  2610. provider[call[1]].apply(provider, call[2]);
  2611. }
  2612. }
  2613. angular.element("body").injector().invoke(function ($compile) {
  2614. var scope = angular.element("#page-content").scope();
  2615. $compile("#page-content")(scope);
  2616. });
  2617. var analurl = res.url;
  2618. analurl = analurl.replace('https://gamehag.com/', '').replace('https://gamehag.com', '');
  2619. if (typeof(user) !== "undefined") {
  2620. ga('set', 'userId', user.id);
  2621. }
  2622. ga('set', 'page', analurl);
  2623. ga('send', 'pageview');
  2624. pages++;
  2625. },
  2626. error: function (err) {
  2627. window.top.location = url;
  2628. return false;
  2629. }
  2630. });
  2631. });
  2632. return pagePromise
  2633. }
Add Comment
Please, Sign In to add comment