Advertisement
AdamBB

ProSliderV2_script

Dec 12th, 2020
908
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const url = "ws://192.168.0.16:1337/";
  2. function init() {
  3.   transitionToView('mainView', true);
  4.   wsConnect(url);
  5. }
  6.  
  7. let joyPanTilt = new JoyStick('joyPanTilt', {
  8.   description: 'PAN/TILT',
  9.   internalLineWidth: 1,
  10.   internalStrokeColor: '#003300',
  11.   externalLineWidth: 1,
  12.   externalStrokeColor: '#2C384F',
  13.   autoReturnToCenter: true
  14. });
  15.  
  16. let joySlide = new JoyStick('joySlide', {
  17.   description: 'SLIDE',
  18.   internalLineWidth: 1,
  19.   internalStrokeColor: '#003300',
  20.   externalLineWidth: 1,
  21.   externalStrokeColor: '#2C384F',
  22.   autoReturnToCenter: true
  23. });
  24.  
  25.  
  26. // Transition time elements
  27. const decBtn = document.querySelector('.decrement-btn');
  28. const incBtn  = document.querySelector('.increment-btn');
  29. const inputTime = document.querySelector('.input-time');
  30.  
  31. decBtn.addEventListener('click', () => {
  32.   if (inputTime.value > parseInt(inputTime.min)) {
  33.     inputTime.value = parseInt(inputTime.value) - 1;
  34.     doSend({ time: inputTime.value });
  35.   }
  36. });
  37.  
  38. incBtn.addEventListener('click', () => {
  39.   inputTime.value = parseInt(inputTime.value) + 1;
  40.   doSend({ time: inputTime.value });
  41. });
  42.  
  43. inputTime.addEventListener('change', () => {
  44.   doSend({ time: inputTime.value });
  45. });
  46.  
  47. // Top button elements
  48. const setPointABtn = document.querySelector('.btn-set-point-a');
  49. const setPointBBtn = document.querySelector('.btn-set-point-b');
  50. const backBtn = document.querySelector('.btn-back');
  51.  
  52. setPointABtn.addEventListener('click', () => { transitionToView('setPointAView') });
  53. setPointBBtn.addEventListener('click', () => transitionToView('setPointBView'));
  54. backBtn.addEventListener('click', () => transitionToView('mainView'));
  55.  
  56. // Bottom button elements
  57. const goToPointABtn = document.querySelector('.go-to-point-a');
  58. const goToPointBBtn = document.querySelector('.go-to-point-b');
  59.  
  60. goToPointABtn.addEventListener('click', () => transitionToView('transitionView'));
  61. goToPointBBtn.addEventListener('click', () => transitionToView('transitionView'));
  62.  
  63. // Transition view events
  64. const cancelTransitionBtn = document.querySelector('.btn-cancel-transition');
  65. cancelTransitionBtn.addEventListener('click', () => {
  66.   doSend({ action: "cancel" });
  67.   cancelTransition();
  68. });
  69.  
  70. // Buttons Save positions
  71. const btnSaveAPosition = document.querySelector('.btn-save-point-a');
  72. const btnSaveBPosition = document.querySelector('.btn-save-point-b');
  73.  
  74. btnSaveAPosition.addEventListener('click', () => {
  75.   doSend({ action: "savePositionA" });
  76. });
  77.  
  78. btnSaveBPosition.addEventListener('click', () => {
  79.   doSend({ action: "savePositionB" });
  80. });
  81.  
  82. // Buttons Go to point A / B
  83. const btnGoToPointA = document.querySelector('.go-to-point-a');
  84. const btnGoToPointB = document.querySelector('.go-to-point-b');
  85.  
  86. let timeToEndTransision = 0;
  87. let transitionTimeInterval = null;
  88.  
  89. function progressCounter() {
  90.   timeToEndTransision = timeToEndTransision + 1;
  91.   const precentValue = Math.ceil((timeToEndTransision/inputTime.value) * 100);
  92.   document.querySelector('.internal-bar').style.width = `${precentValue}%`;
  93.   document.querySelector('.transition-precentage').textContent = `${precentValue}%`;
  94.  
  95.   if (timeToEndTransision == inputTime.value) {
  96.     cancelTransition();
  97.   }
  98. }
  99.  
  100. function cancelTransition() {
  101.   clearInterval(transitionTimeInterval);
  102.   timeToEndTransision = 0;
  103.   setTimeout(() => {
  104.     document.querySelector('.internal-bar').style.width = '0%';
  105.     document.querySelector('.transition-precentage').textContent = '0%';
  106.   }, 1000);
  107.   setTimeout(() => transitionToView('mainView'), 2000);
  108. }
  109.  
  110. btnGoToPointA.addEventListener('click', () => {
  111.   doSend({ action: "goToPointA" });
  112.   setTimeout(() => {
  113.     transitionTimeInterval = setInterval(progressCounter, 1000);
  114.   }, 2000);
  115. });
  116.  
  117. btnGoToPointB.addEventListener('click', () => {
  118.   doSend({ action: "goToPointB" });
  119.   setTimeout(() => {
  120.     transitionTimeInterval = setInterval(progressCounter, 1000);
  121.   }, 2000);
  122. });
  123.  
  124. let jsonMovement = {
  125.   action: "movementAxis",
  126.   slide: {
  127.     direction: "left",
  128.     value: 0
  129.   },
  130.   pan: {
  131.     direction: "left",
  132.     value: 0
  133.   },
  134.   tilt: {
  135.     direction: "left",
  136.     value: 0
  137.   }
  138. }
  139.  
  140. let jsonMovementStringify = JSON.stringify(jsonMovement);
  141. let prevJsonMovementStringify = '';
  142.  
  143. const slideInterval = setInterval(() => {
  144.   const xSlide = joySlide.GetX();
  145.   const xPan = joyPanTilt.GetX();
  146.   const yTilt = joyPanTilt.GetY();
  147.  
  148.   let newJson = JSON.parse(jsonMovementStringify);
  149.  
  150.   newJson.slide.direction = xSlide > 0 ? 'left' : 'right';
  151.   newJson.slide.value = Math.abs(xSlide);
  152.  
  153.   newJson.pan.direction = xPan > 0 ? 'left' : 'right';
  154.   newJson.pan.value = Math.abs(xPan);
  155.  
  156.   newJson.tilt.direction = yTilt > 0 ? 'left' : 'right';
  157.   newJson.tilt.value = Math.abs(yTilt);
  158.  
  159.   jsonMovementStringify = JSON.stringify(newJson);
  160.  
  161.   if (jsonMovementStringify === prevJsonMovementStringify) {
  162.     return;
  163.   }
  164.   doSend(JSON.parse(jsonMovementStringify));
  165.   prevJsonMovementStringify = jsonMovementStringify;
  166. }, 200);
  167.  
  168. // Rendering view function
  169. function transitionToView(view, isInit) {
  170.   clearView();
  171.   if (view === 'mainView') {
  172.     showElements([
  173.       '.section-set-position-a.main-view',
  174.       '.section-set-position-b.main-view',
  175.       '.section-transition-time',
  176.       '.section-btn-bottom',
  177.       '.btn-set-point-a',
  178.       '.btn-set-point-b',
  179.       '.current-position.main-view',
  180.     ]);
  181.  
  182.     if (!isInit) {
  183.       doSend({ transitionTo: "mainPageView" });
  184.     }
  185.   }
  186.  
  187.   if (view === 'setPointAView') {
  188.     showElements([
  189.       '.btn-back',
  190.       '.btn-set-point-b',
  191.       '.section-set-position-a.set-point-a-view',
  192.       '.section-joy-control',
  193.       '.current-position.set-positon-view',
  194.     ])
  195.  
  196.     doSend({ transitionTo: "setPointAView" });
  197.   }
  198.  
  199.   if (view === 'setPointBView') {
  200.     showElements([
  201.       '.btn-back',
  202.       '.btn-set-point-a',
  203.       '.section-set-position-b.set-point-b-view',
  204.       '.section-joy-control',
  205.       '.current-position.set-positon-view',
  206.     ])
  207.  
  208.     doSend({ transitionTo: "setPointBView" });
  209.   }
  210.  
  211.   if (view === 'transitionView') {
  212.     showElements([
  213.       '.btn-set-point-a',
  214.       '.btn-set-point-b',
  215.       '.section-btn-bottom',
  216.       '.section-transition',
  217.       '.progress-bar-section',
  218.     ])
  219.   }
  220.   setDisableEnableEl(view);
  221. }
  222.  
  223. function setDisableEnableEl(view) {
  224.   const btnDisableChange = [
  225.     '.btn-set-point-a',
  226.     '.btn-set-point-b',
  227.     '.go-to-point-a',
  228.     '.go-to-point-b'
  229.   ];
  230.   if (view === 'transitionView') {
  231.     btnDisableChange.map((value) => {
  232.       document.querySelector(value).classList.add('disabled');
  233.     })
  234.   } else {
  235.     btnDisableChange.map((value) => {
  236.       const el = document.querySelector(value);
  237.       el.classList.remove('disabled');
  238.     })
  239.   }
  240. }
  241.  
  242. function clearView() {
  243.   hideElements([
  244.     '.btn-set-point-a',
  245.     '.btn-set-point-b',
  246.     '.btn-back',
  247.   ]);
  248. }
  249.  
  250. function showElements(elements) {
  251.   elements.map((value) => {
  252.     document.querySelector(value).classList.remove('hide');
  253.   })
  254. }
  255.  
  256. function hideElements(elements) {
  257.   [...document.querySelectorAll('section')].map((el) => {
  258.     el.classList.add('hide');
  259.   });
  260.   elements.map((el) => {
  261.     document.querySelector(el).classList.add('hide');
  262.   })
  263. }
  264.  
  265. //....................................................................
  266. //.FFFFFFFFFFFFFF.UUUUU.....UUUUU..NNNNN......NNNN......CCCCCCCCC.....
  267. //.FFFFFFFFFFFFFF.UUUUU.....UUUUU..NNNNNN.....NNNN.....CCCCCCCCCCC....
  268. //.FFFFFFFFFFFFFF.UUUUU.....UUUUU..NNNNNNN....NNNN....CCCCCCCCCCCCC...
  269. //.FFFFFFFFFFFFFF.UUUUU.....UUUUU..NNNNNNN....NNNN...CCCCCCCCCCCCCCC..
  270. //.FFFFF..........UUUUU.....UUUUU..NNNNNNNN...NNNN..NCCCCCC...CCCCCC..
  271. //.FFFFF..........UUUUU.....UUUUU..NNNNNNNN...NNNN..NCCCCC.....CCCCC..
  272. //.FFFFF..........UUUUU.....UUUUU..NNNNNNNNN..NNNN..NCCCC......CCCCC..
  273. //.FFFFFFFFFFFFF..UUUUU.....UUUUU..NNNNNNNNN..NNNN..NCCCC.............
  274. //.FFFFFFFFFFFFF..UUUUU.....UUUUU..NNNNNNNNNN.NNNN..NCCCC.............
  275. //.FFFFFFFFFFFFF..UUUUU.....UUUUU..NNNNNNNNNNNNNNN..NCCCC.............
  276. //.FFFFFFFFFFFFF..UUUUU.....UUUUU..NNNNN.NNNNNNNNN..NCCCC.............
  277. //.FFFFF..........UUUUU.....UUUUU..NNNNN..NNNNNNNN..NCCCC......CCCCC..
  278. //.FFFFF..........UUUUU.....UUUUU..NNNNN..NNNNNNNN..NCCCC......CCCCC..
  279. //.FFFFF..........UUUUUU....UUUUU..NNNNN...NNNNNNN..NCCCCC....CCCCCC..
  280. //.FFFFF..........UUUUUUU.UUUUUUU..NNNNN...NNNNNNN...CCCCCCCCCCCCCCC..
  281. //.FFFFF...........UUUUUUUUUUUUU...NNNNN....NNNNNN...CCCCCCCCCCCCCC...
  282. //.FFFFF...........UUUUUUUUUUUUU...NNNNN....NNNNNN....CCCCCCCCCCCC....
  283. //.FFFFF............UUUUUUUUUUU....NNNNN.....NNNNN.....CCCCCCCCCC.....
  284. //.....................UUUUU.............................CCCCCCC......
  285. //....................................................................
  286.  
  287. const currentPosSlideValueEl = document.querySelectorAll('.current-position .slide-value');
  288. const currentPosPanValueEl = document.querySelectorAll('.current-position .pan-value');
  289. const currentPosTiltValueEl = document.querySelectorAll('.current-position .tilt-value');
  290.  
  291. const currentSetposASlideValueEl = document.querySelector(`.section-set-position-a .slide-value`);
  292. const currentSetposAPanValueEl = document.querySelector(`.section-set-position-a .pan-value`);
  293. const currentSetposATiltValueEl = document.querySelector(`.section-set-position-a .tilt-value`);
  294.  
  295. const currentSetposBSlideValueEl = document.querySelector(`.section-set-position-b .slide-value`);
  296. const currentSetposBPanValueEl = document.querySelector(`.section-set-position-b .pan-value`);
  297. const currentSetposBTiltValueEl = document.querySelector(`.section-set-position-b .tilt-value`);
  298.  
  299. function updateTime(json) {
  300.   if (json.time) {
  301.     inputTime.value = json.time;
  302.   }
  303. }
  304.  
  305. function setPoints(json) {
  306.   if (json.action == 'updatePoints') {
  307.     const posSlideValueEl = document.querySelectorAll(`.section-set-position-${json.point.toLowerCase()} .slide-value`);
  308.     const posPanValueEl = document.querySelectorAll(`.section-set-position-${json.point.toLowerCase()} .pan-value`);
  309.     const posTiltValueEl = document.querySelectorAll(`.section-set-position-${json.point.toLowerCase()} .tilt-value`);
  310.  
  311.     posSlideValueEl.forEach((el) => el.textContent = json.slide);
  312.     posPanValueEl.forEach((el) => el.textContent = json.pan);
  313.     posTiltValueEl.forEach((el) => el.textContent = json.tilt);
  314.   }
  315. }
  316.  
  317. function updateCurrentPosition(json) {
  318.   if (json.action == 'updateCurrentPosition') {
  319.     currentPosSlideValueEl.forEach((el) => el.textContent = json.slide);
  320.     currentPosPanValueEl.forEach((el) => el.textContent = json.pan);
  321.     currentPosTiltValueEl.forEach((el) => el.textContent = json.tilt);
  322.   }
  323. }
  324.  
  325. const setPositionChecker = setInterval(() => {
  326.   if (
  327.     currentPosSlideValueEl[0].textContent == currentSetposASlideValueEl.textContent &&
  328.     currentPosPanValueEl[0].textContent == currentSetposAPanValueEl.textContent &&
  329.     currentPosTiltValueEl[0].textContent == currentSetposATiltValueEl.textContent
  330.   ) {
  331.     goToPointABtn.classList.add('disabled');
  332.   }
  333.   if (
  334.     currentPosSlideValueEl[0].textContent == currentSetposBSlideValueEl.textContent &&
  335.     currentPosPanValueEl[0].textContent == currentSetposBPanValueEl.textContent &&
  336.     currentPosTiltValueEl[0].textContent == currentSetposBTiltValueEl.textContent
  337.   ) {
  338.     goToPointBBtn.classList.add('disabled');
  339.   }
  340. }, 500);
  341.  
  342. //...................................................................................................
  343. //..........................................SSSSS....................................................
  344. //.WWWW..WWWWW..WWWW..........bbbb........SSSSSSSSS.......................ckkk.................ttt...
  345. //.WWWW..WWWWW..WWWW..........bbbb........SSSSSSSSSS......................ckkk.................ttt...
  346. //.WWWW..WWWWW..WWWW..........bbbb.......SSSSSSSSSSS......................ckkk.................ttt...
  347. //..WWWW.WWWWW.WWWW..eeeeeee..bbbbbbbbb..SSSS...SSSS...ooooooo....cccccc..ckkk.kkkkk.eeeeeee.eetttt..
  348. //..WWWWWWWWWWWWWWW..eeeeeeee.bbbbbbbbbb.SSSSSS.......ooooooooo..cccccccc.ckkk.kkkkk.eeeeeeeeeetttt..
  349. //..WWWWWWWWWWWWWWW.eeeeeeeee.bbbbbbbbbb.SSSSSSSSS...Sooooooooo.ccccccccccckkkkkkkk.keeeeeeeeeetttt..
  350. //..WWWWWWWWWWWWWWW.eeee..eeeebbbbb.bbbbb.SSSSSSSSSS.Sooo..ooooocccc..ccccckkkkkkk..keee..eeee.ttt...
  351. //...WWWWWW.WWWWWW..eeeeeeeeeebbbb...bbbb..SSSSSSSSS.Sooo...oooocccc......ckkkkkk...keeeeeeeee.ttt...
  352. //...WWWWWW.WWWWWW..eeeeeeeeeebbbb...bbbbSSSS..SSSSSSSooo...oooocccc......ckkkkkkk..keeeeeeeee.ttt...
  353. //...WWWWWW.WWWWWW..eeee......bbbb..bbbbbSSSS....SSSSSooo..ooooocccc..ccccckkkkkkkk.keee.......ttt...
  354. //....WWWWW.WWWWW...eeeeeeeeeebbbbbbbbbb.SSSSSSSSSSSSSooooooooo.ccccccccccckkkkkkkk.keeeeeeeee.tttt..
  355. //....WWWW...WWWW...eeeeeeeee.bbbbbbbbbb.SSSSSSSSSSS..ooooooooo.ccccccccc.ckkk.kkkkkkeeeeeeee..tttt..
  356. //....WWWW...WWWW....eeeeeeee.bbbbbbbbb...SSSSSSSSS...oooooooo...cccccccc.ckkk..kkkk.eeeeeeee..tttt..
  357. //.....................eeee........bbb......SSSSSS......ooooo......cccc................eeee.....ttt..
  358. //...................................................................................................
  359. function wsConnect(url) {
  360.   websocket = new WebSocket(url);
  361.   websocket.onopen = function (evt) { onOpen(evt) };
  362.   websocket.onclose = function (evt) { onClose(evt) };
  363.   websocket.onmessage = function (evt) { onMessage(evt) };
  364.   websocket.onerror = function (evt) { onError(evt) };
  365. }
  366.  
  367. function onOpen(evt) {
  368.   console.log("Connected");
  369. }
  370.  
  371. function onClose(evt) {
  372.   console.log("Disconnected");
  373.   setTimeout(function () { wsConnect(url) }, 2000);
  374. }
  375.  
  376. function onMessage(evt) {
  377.   const { data } = evt;
  378.   const json = JSON.parse(data);
  379.  
  380.   console.log(json);
  381.  
  382.   updateTime(json);
  383.   setPoints(json);
  384.   updateCurrentPosition(json);
  385. }
  386.  
  387. function onError(evt) {
  388.   console.log("ERROR: " + evt.data);
  389. }
  390.  
  391. function doSend(message) {
  392.   console.log("Sending: " + JSON.stringify(message, null, 2));
  393.   websocket.send(JSON.stringify(message));
  394. }
  395. //............................
  396. //.iii.............iii........
  397. //.iii.............iii..tttt..
  398. //.iii.............iii..tttt..
  399. //.iii.............iii..tttt..
  400. //.iii..innnnnnnn..iii.itttt..
  401. //.iii..innnnnnnn..iii.itttt..
  402. //.iii..innnnnnnn..iii.itttt..
  403. //.iii..innn.nnnn..iii..tttt..
  404. //.iii..inn...nnn..iii..tttt..
  405. //.iii..inn...nnn..iii..tttt..
  406. //.iii..inn...nnn..iii..tttt..
  407. //.iii..inn...nnn..iii..tttt..
  408. //.iii..inn...nnn..iii..tttt..
  409. //.iii..inn...nnn..iii..tttt..
  410. //........................tt..
  411. //............................
  412. init();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement