Advertisement
Guest User

Untitled

a guest
Dec 10th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.30 KB | None | 0 0
  1. import React from "react";
  2. import Helper from "../components/Helper/Helper";
  3. import Sport from '../components/Sport/Sport';
  4. import SportHorizontal from '../components/Sport/SportHorizontal';
  5. const redoslijedTracker = [];
  6. let utakmicaTracker = {};
  7. class App extends React.Component {
  8. constructor() {
  9. super();
  10. let screen = window.location.search.match(/\?e=(\d)+/) || [0, 1];
  11. this.state = {
  12. sportConfig: [
  13. {
  14. sportID: 1,
  15. naziv: "football",
  16. // brojPerioda: "nema"
  17. redoslijed: 1,
  18. horizontal: true
  19. },
  20. {
  21. sportID: 5,
  22. naziv: "tennis",
  23. // brojPerioda: 5,
  24. redoslijed: 2,
  25. horizontal: false
  26. },
  27. {
  28. sportID: 2,
  29. naziv: "basketball",
  30. // brojPerioda: 4,
  31. redoslijed: 3,
  32. horizontal: false
  33. },
  34. {
  35. sportID: 23,
  36. naziv: "volleyball",
  37. // brojPerioda: 5,
  38. redoslijed: 4,
  39. horizontal: false
  40. },
  41. {
  42. sportID: 34,
  43. naziv: "beachVolleyball",
  44. // brojPerioda: ,
  45. redoslijed: 5,
  46. horizontal: false
  47. },
  48. {
  49. sportID: 4,
  50. naziv: "hockey",
  51. // brojPerioda: 3,
  52. redoslijed: 6,
  53. horizontal: false
  54. },
  55. {
  56. sportID: 6,
  57. naziv: "handball",
  58. // brojPerioda: nema,
  59. redoslijed: 7,
  60. horizontal: true
  61. }
  62. ],
  63. okladeConfig: [
  64. // nogomet (ID: 1)
  65. {
  66. tekst: "Regularno vrijeme",
  67. sifra: 1,
  68. tipovi: ["1", "X", "2"],
  69. // config -> x=kvota (obična vrijednost), z=žuta (specijalna vrijednost), r=rezultat, n=nema kvote
  70. config: [["x", "x", "x"], ["x", "x", "x"]],
  71. sport: 1
  72. },
  73. {
  74. tekst: "Pobjednik ostatka",
  75. sifra: 2,
  76. tipovi: ["", "1", "X", "2"],
  77. config: [["r", "x", "x", "x"], ["r", "x", "x", "x"]],
  78. sport: 1
  79. },
  80. {
  81. tekst: "Sljedeći gol",
  82. sifra: 3,
  83. tipovi: ["1", "X", "2"],
  84. config: [["x", "x", "x"], ["x", "x", "x"]],
  85. sport: 1
  86. },
  87. {
  88. tekst: "Zbroj golova",
  89. sifra: 4,
  90. tipovi: ["", "Manje", "Više"],
  91. config: [["z", "x", "x"], ["z", "x", "x"]],
  92. sport: 1
  93. },
  94. {
  95. tekst: "Oba daju gol",
  96. sifra: 5,
  97. tipovi: ["", "Da", "Ne"],
  98. config: [["n", "x", "x"], ["n", "x", "x"]],
  99. sport: 1
  100. },
  101. // tenis (ID: 5)
  102. {
  103. tekst: "Pobjednik",
  104. sifra: 1,
  105. tipovi: ["", "1", "2"],
  106. config: [["z", "x", "x"], ["z", "x", "x"]],
  107. jezik: [["1$", "", ""], ["1$", "", ""]],
  108. sport: 5
  109. },
  110. {
  111. tekst: "Pobjednik game, game-set",
  112. sifra: 2,
  113. tipovi: ["g,g-s", "1", "X", "2"],
  114. config: [["z", "x", "x", "x"], ["z", "x", "x", "x"]], //8,9g-2s
  115. jezik: [["2$,3$g-1$s", "", "", ""], ["2$,3$g-1$s", "", "", ""]],
  116. sport: 5
  117. },
  118. {
  119. tekst: "Pobjednik gem-set",
  120. sifra: 3,
  121. tipovi: ["g-s", "1", "2"],
  122. config: [["z", "x", "x"], ["z", "x", "x"]],
  123. jezik: [["1$g-2$s", "", ""], ["1$g-2$s", "", ""]],
  124. sport: 5
  125. },
  126. {
  127. tekst: "Zbroj gemova seta",
  128. sifra: 4,
  129. tipovi: ["zg - s", "Manje", "Više"],
  130. config: [["z", "x", "x"], ["z", "x", "x"]],
  131. jezik: [["1$g-2$s", "", ""], ["1$g-2$s", "", ""]],
  132. sport: 5
  133. },
  134. {
  135. tekst: "Zbroj gemova meča",
  136. sifra: 5,
  137. tipovi: ["", "Manje", "Više"],
  138. config: [["z", "x", "x"], ["z", "x", "x"]],
  139. jezik: [["", "", ""], ["", "", ""]],
  140. sport: 5
  141. },
  142. // košarka (ID: 2)
  143. {
  144. tekst: "Pobjednik",
  145. sifra: 1,
  146. tipovi: ["1", "X", "2"],
  147. config: [["x", "x", "x"], ["x", "z", "x"], ["x", "z", "x"]], // košarka u 1. četvrtini ima još jedan dodatni red kvota
  148. jezik: [["1$", "", ""], ["1$", "1$/4", "1$"], ["1$", "1$.pol", "1$"]],
  149.  
  150. sport: 2
  151. },
  152. {
  153. tekst: "Tko 1. postiže koševa u meču",
  154. sifra: 2,
  155. tipovi: ["", "1", "2"],
  156. config: [["z", "x", "x"], ["z", "x", "x"], ["z", "x", "x"]],
  157. jezik: [["1$", "1$", "1$"], ["1$", "1$", "1$"], ["1$", "1$", "1$"]],
  158. sport: 2
  159. },
  160. {
  161. tekst: "Hendikep",
  162. sifra: 3,
  163. tipovi: ["", "1", "2"],
  164. config: [["z", "x", "x"], ["z", "x", "x"], ["z", "x", "x"]],
  165. jezik: [
  166. ["1$m", "", ""],
  167. ["1$ 2$/4", "1$", "1$"],
  168. ["1$ 2$p", "1$", "1$"]
  169. ],
  170.  
  171. sport: 2
  172. },
  173. {
  174. tekst: "Zbroj koševa",
  175. sifra: 4,
  176. tipovi: ["", "Manje", "Više"],
  177. config: [["z", "x", "x"], ["z", "x", "x"], ["z", "x", "x"]],
  178. jezik: [["1$m", "", ""], ["1$ 2$/4", "", ""], ["1$ 2$p", "", "", ""]],
  179. sport: 2
  180. },
  181. {
  182. tekst: "Dom/Gost-Koševa",
  183. sifra: 5,
  184. tipovi: ["", "Manje", "Više"],
  185. config: [["z", "x", "x"], ["z", "x", "x"], ["z", "x", "x"]],
  186. jezik: [["1$", "1$", "1$"], ["1$", "1$", "1$"], ["1$", "1$", "1$"]],
  187. sport: 2
  188. },
  189. // odbojka (ID: 23)
  190. {
  191. tekst: "Pobjednik",
  192. sifra: 1,
  193. tipovi: ["", "1", "2"],
  194. config: [["z", "x", "x"], ["z", "x", "x"]],
  195. jezik: [["1$", "1$", "1$"], ["1$", "1$", "1$"]],
  196. sport: 23
  197. },
  198. {
  199. tekst: "Hendikep meč-set",
  200. sifra: 2,
  201. tipovi: ["", "1", "2"],
  202. config: [["z", "x", "x"], ["z", "x", "x"]],
  203. jezik: [["1$", "", ""], ["1$ 2$s", "", ""]],
  204.  
  205. sport: 23
  206. },
  207. {
  208. tekst: "Broj setova u meču",
  209. sifra: 3,
  210. tipovi: ["3", "4", "5"],
  211. config: [["x", "x", "x"], ["x", "x", "x"]],
  212. sport: 23
  213. },
  214. {
  215. tekst: "Zbroj poena meča",
  216. sifra: 4,
  217. tipovi: ["", "Manje", "Više"],
  218. config: [["z", "x", "x"], ["z", "x", "x"]],
  219. sport: 23
  220. },
  221. {
  222. tekst: "Zbroj poena seta",
  223. sifra: 5,
  224. tipovi: ["", "Manje", "Više"],
  225. config: [["z", "x", "x"], ["z", "x", "x"]],
  226. jezik: [["1$ 2$s", "", ""], ["1$ 2$s", "", ""]],
  227.  
  228. sport: 23
  229. },
  230. // hokej (ID: 4)
  231. {
  232. tekst: "Regularno vrijeme",
  233. sifra: 1,
  234. tipovi: ["1", "X", "2"],
  235. config: [["x", "x", "x"], ["x", "x", "x"]],
  236. jezik: [["1$ 2$/3", "", ""], ["1$ 2$/3", "", ""]],
  237.  
  238. sport: 4
  239. },
  240. {
  241. tekst: "Domaćin/Gost (broj golova)",
  242. sifra: 2,
  243. tipovi: ["0", "1", "2", "3+"],
  244. config: [["x", "x", "x", "x"], ["x", "x", "x", "x"]],
  245. jezik: [["1$ 2$/3", "", ""], ["1$ 2$/3", "", ""]],
  246.  
  247. sport: 4
  248. },
  249. {
  250. tekst: "Zbroj golova trećine",
  251. sifra: 3,
  252. tipovi: ["zg-t", "Manje", "Više"],
  253. config: [["z", "x", "x"], ["z", "x", "x"]],
  254. jezik: [["1$ 2$/3", "1$", "1$"], ["1$ 2$/3", "1$", "1$"]],
  255. sport: 4
  256. },
  257. {
  258. tekst: "Zbroj golova meča",
  259. sifra: 4,
  260. tipovi: ["", "Manje", "Više"],
  261. config: [["z", "x", "x"], ["z", "x", "x"]],
  262. jezik: [["1$ 2$/3", "", ""], ["1$ 2$/3", "", ""]],
  263.  
  264. sport: 4
  265. },
  266. {
  267. tekst: "Sljedeći gol",
  268. sifra: 5,
  269. tipovi: ["1", "X", "2"],
  270. config: [["x", "x", "x"], ["x", "x", "x"]],
  271. jezik: [["1$ 2$/3", "", ""], ["1$ 2$/3", "", ""]],
  272.  
  273. sport: 4
  274. },
  275. // rukomet (ID: 6)
  276. {
  277. tekst: "Regularno vrijeme",
  278. sifra: 1,
  279. tipovi: ["1", "X", "2"],
  280. config: [["x", "x", "x"], ["x", "x", "x"]],
  281. sport: 6
  282. },
  283. {
  284. tekst: "Hendikep meča-poluvrijeme",
  285. sifra: 2,
  286. tipovi: ["", "1", "2"],
  287. config: [["z", "x", "x"], ["z", "x", "x"]],
  288. sport: 6
  289. },
  290. {
  291. tekst: "Tko 1. postiže gol meča",
  292. sifra: 3,
  293. tipovi: ["", "1", "2"],
  294. config: [["z", "x", "x"], ["z", "x", "x"]],
  295. sport: 6
  296. },
  297. {
  298. tekst: "Zbroj golova meča",
  299. sifra: 4,
  300. tipovi: ["", "1", "2"],
  301. config: [["z", "x", "x"], ["z", "x", "x"]],
  302. sport: 6
  303. },
  304. {
  305. tekst: "Zbroj golova 1. pol",
  306. sifra: 5,
  307. tipovi: ["", "1", "2"],
  308. config: [["z", "x", "x"], ["z", "x", "x"]],
  309. sport: 6
  310. },
  311. // odbojka na pijesku (ID: 34)
  312. {
  313. tekst: "Pobjednik",
  314. sifra: 1,
  315. tipovi: ["", "1", "2"],
  316. config: [["z", "x", "x"], ["z", "x", "x"]],
  317. sport: 34
  318. },
  319. {
  320. tekst: "Tko prije postiže poen seta",
  321. sifra: 2,
  322. tipovi: ["p - s", "1", "2"],
  323. config: [["z", "x", "x"], ["z", "x", "x"]],
  324. sport: 34
  325. },
  326. {
  327. tekst: "Hendikep meč-set",
  328. sifra: 3,
  329. tipovi: ["", "1", "2"],
  330. config: [["z", "x", "x"], ["z", "x", "x"]],
  331. sport: 34
  332. },
  333. {
  334. tekst: "Zbroj poena meč-set",
  335. sifra: 4,
  336. tipovi: ["", "Manje", "Više"],
  337. config: [["z", "x", "x"], ["z", "x", "x"]],
  338. sport: 34
  339. },
  340. {
  341. tekst: "Broj setova",
  342. sifra: 5,
  343. tipovi: ["2s", "3s"],
  344. config: [["x", "x"], ["x", "x"]],
  345. sport: 34
  346. }
  347. ],
  348.  
  349. // headers data
  350. codeTxt: "Šifra",
  351. firstHalfFootballText: "1. Poluvrijeme",
  352. firstHalfHandbalText: "1. pol",
  353.  
  354. Ok_D: 0,
  355. Ok_t: 0,
  356. Ut_D: 0,
  357. Ut_T: 0,
  358. // ekran: 1,
  359. ekran: screen[1],
  360. j: "hr",
  361. k: 0,
  362. UtakmiceT: {},
  363. OkladeT: {},
  364. Koeficijenti: {},
  365. finalOklade: {},
  366. utakmice: {},
  367. oklade: {},
  368. koeficijenti: {}
  369. };
  370. this.mergeData = this.mergeData.bind(this);
  371. this.newMergeData = this.newMergeData.bind(this);
  372. this.fetchData = this.fetchData.bind(this);
  373. this.getId = this.getId.bind(this);
  374.  
  375. this.id = 1;
  376. window.jezik = this.state.j;
  377. window.Helper = Helper;
  378. }
  379.  
  380. componentDidMount() {
  381. setInterval(this.fetchData, 2000);
  382. }
  383.  
  384. getId() {
  385. if (this.id % 100 === 0) {
  386. this.setState({
  387. Ok_D: 0,
  388. Ok_t: 0,
  389. Ut_D: 0,
  390. Ut_T: 0,
  391. k: 0
  392. });
  393. }
  394. return this.id++;
  395. }
  396. getUrl(id) {
  397. const array = [
  398. "https://test.wwin.ba:8102/TVDataService/GetActiveGames",
  399. "https://test.wwin.ba:8102/TVDataService/GetData"
  400. ];
  401. return array[1];
  402. }
  403. fetchData() {
  404. fetch(this.getUrl(this.getId()), {
  405. method: "POST",
  406. headers: {
  407. "Content-Type": "application/json"
  408. },
  409. body: JSON.stringify({
  410. Ok_D: this.state.Ok_D,
  411. Ok_t: this.state.Ok_t,
  412. Ut_D: this.state.Ut_D,
  413. Ut_T: this.state.Ut_T,
  414. ekran: this.state.ekran,
  415. j: this.state.j,
  416. k: 0 //this.state.k
  417. })
  418. })
  419. .then(res => res.json())
  420. .then(data => {
  421. data = data[Object.keys(data)[0]];
  422. this.mergeData(data, {
  423. Ok_D: this.state.Ok_D,
  424. Ok_t: this.state.Ok_t,
  425. Ut_D: this.state.Ut_D,
  426. Ut_T: this.state.Ut_T,
  427. k: this.state.k
  428. });
  429. });
  430. }
  431. newMergeData(newData, misc) {
  432. let state = this.state;
  433. let oldObj = {
  434. utakmice: state.utakmice,
  435. oklade: state.oklade,
  436. koeficijenti: state.koeficijenti,
  437. vrstaoklade: state.vrstaoklade
  438. };
  439.  
  440. let newState = Helper.newMergeData({ ...state, ...oldObj }, newData);
  441. this.setState({ ...newState, ...misc });
  442. // Brisemo stare utakmice koje su zavrsile
  443. const newUtakmiceKeys = Object.keys(newState.utakmice).map(x => Number(x));
  444. redoslijedTracker.forEach(key => {
  445. if (!newUtakmiceKeys.includes(key)) {
  446. console.log("Key not found", newUtakmiceKeys, key, redoslijedTracker);
  447. delete utakmicaTracker[key];
  448. redoslijedTracker.splice(redoslijedTracker.indexOf(key), 1);
  449. }
  450. return true;
  451. });
  452.  
  453. // sortiramo nove utakmice po TVSifra
  454. const sortiraneUtakmice = Object.values(newState.utakmice).sort((x, y) => {
  455. if (utakmicaTracker[x.IDUtakmica] && utakmicaTracker[y.IDUtakmica]) {
  456. return (
  457. redoslijedTracker.indexOf(x.IDUtakmica) -
  458. redoslijedTracker.indexOf(y.IDUtakmica)
  459. );
  460. } else if (
  461. utakmicaTracker[x.IDUtakmica] &&
  462. !utakmicaTracker[y.IDUtakmica]
  463. ) {
  464. return 1;
  465. } else if (
  466. !utakmicaTracker[x.IDUtakmica] &&
  467. utakmicaTracker[y.IDUtakmica]
  468. ) {
  469. return -1;
  470. } else {
  471. return Number(x.TVSifra) - Number(y.TVSifra);
  472. }
  473. });
  474. console.log("sortiraneUtakmice", sortiraneUtakmice);
  475. // IDUtakmica
  476. const utakmicaKeys = sortiraneUtakmice.map(utk => utk.IDUtakmica);
  477. redoslijedTracker.filter(key => utakmicaKeys.includes(key));
  478.  
  479. // Doodajemo utakmica u tacker
  480. utakmicaKeys.forEach(IDUtakmica => {
  481. if (!redoslijedTracker.includes(IDUtakmica)) {
  482. redoslijedTracker.push(IDUtakmica);
  483. }
  484. if (!utakmicaTracker[IDUtakmica]) {
  485. utakmicaTracker = Object.fromEntries([...Object.entries([IDUtakmica]), [IDUtakmica, newState.utakmice[IDUtakmica]]]);
  486. }
  487. });
  488. console.log("Utakmica Tracker", utakmicaTracker);
  489. console.log("Redoslijed Tracker", redoslijedTracker);
  490. let newTracker = {}
  491. redoslijedTracker.forEach(key => {
  492. newTracker[key] = utakmicaTracker[key];
  493. })
  494. console.log("RAzlika", redoslijedTracker, newTracker, utakmicaTracker)
  495.  
  496. newState.utakmice = utakmicaTracker = newTracker;
  497. this.setState({ ...newState, ...misc });
  498. return newState;
  499. }
  500.  
  501. mergeData(newData, misc) {
  502. let state = this.state;
  503. // console.log("newData.UtakmiceT",newData.UtakmiceT);
  504. // let tempData = [...newData.UtakmiceT];
  505. // let myData = tempData.sort((i,j) => {if(parseInt(i.TVSifra, 10) > parseInt(j.TVSifra, 10)) return 1; else return -1;});
  506. // newData.UtakmiceT = myData;
  507. // console.log("newData.UtakmiceT", newData.UtakmiceT);
  508.  
  509.  
  510. let Koeficijenti = Helper.newCombineTwoKoeficijenta(
  511. Object.values(state.Koeficijenti),
  512. newData.Koeficijenti || [],
  513. "OkladaID",
  514. "IDKoeficijent"
  515. );
  516.  
  517. this.newMergeData({ ...newData, K: Koeficijenti }, misc);
  518. }
  519.  
  520. render() {
  521. window.Helper = Helper;
  522. window.Jezik = this.state.j;
  523. const utakmice = Object.values(this.state.utakmice);
  524.  
  525. let listSports = this.state.sportConfig
  526. .map((tmpSport) => {
  527. let tmpListaUtakmica = utakmice
  528. .filter(utk => utk.SportID === tmpSport.sportID)
  529. .map(utk =>
  530. Helper.mapOldToNewObject(utk, this.state.finalOklade[utk.IDUtakmica])
  531. );
  532.  
  533. return tmpSport.horizontal ?
  534. <SportHorizontal key={tmpSport.sportID}
  535. sportID={tmpSport.sportID}
  536. data={tmpListaUtakmica}
  537. codeTxt={this.state.codeTxt}
  538. firstHalfFootballText={this.state.firstHalfFootballText}
  539. firstHalfHandbalText={this.state.firstHalfHandbalText}
  540. sportConfig={this.state.sportConfig}
  541. betsConfig={this.state.okladeConfig}
  542. /> :
  543. <Sport key={tmpSport.sportID}
  544. sportID={tmpSport.sportID}
  545. data={tmpListaUtakmica}
  546. codeTxt={this.state.codeTxt}
  547. sportConfig={this.state.sportConfig}
  548. betsConfig={this.state.okladeConfig}
  549. />
  550. })
  551.  
  552. return (
  553. <React.Fragment>
  554. {listSports}
  555. </React.Fragment>
  556. );
  557. }
  558. }
  559.  
  560. export default App;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement