Advertisement
Guest User

Untitled

a guest
Nov 15th, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 30.17 KB | None | 0 0
  1. class Helper {
  2. static newMergeData(oldData, newData) {
  3. // console.groupCollapsed('oldData, newData');
  4. // console.log(oldData,newData);
  5. // console.groupEnd();
  6.  
  7. const newObj = {
  8. utakmice: {}, //oldData.utakmice, // {IDUtakmica:{Utakmica}}
  9. oklade: {}, //oldData.oklade, // {IDOklada:{Oklada}}
  10. koeficijenti: {}, //oldData.koeficijenti,// {IDKoeficijent:{Koeficijent}}
  11. Koeficijenti: newData.K // {IDOklada:{IDKoeficijent:{Koeficijent}}}
  12. };
  13. // console.log("newObj", newObj)
  14. // console.log("OLdATA",oldData.utakmice)
  15.  
  16. // console.log("koefcijenti", oldData.koeficijenti)
  17. // console.log("Koefcijenti",newData.K)
  18.  
  19. const newUtakmice = {
  20. D: newData.UtakmiceD || [], // [UtakmiceD]
  21. T: newData.UtakmiceT || [] // [UtakmiceT]
  22. };
  23.  
  24. // console.log("newDataUtakmiceT", newData.UtakmiceT)
  25. // console.log("UtakmiceD", newData.UtakmiceD)
  26. // console.log("newUtakmice", newUtakmice);
  27.  
  28. // console.log(newData.UtakmiceD || []);
  29. const newOklade = {
  30. D: newData.OkladeD || [], // [OkladeD]
  31. T: newData.OkladeT || [] // [OKladeT]
  32. };
  33.  
  34. // console.log("okladeD",newData.OkladeD)
  35. // console.log("okladeD",newData.OkladeT)
  36. // console.log("NewData.OkladeD",newData.OkladeD || [])
  37. // console.log("neData.OkladeT", newData.OkladeT || [])
  38. // console.log("newOklade", newOklade)
  39. const newKoeficijenti = {
  40. K: newData.Koeficijenti || [], // [Koeficijenti]
  41. k: newData.K || {} // {IDOklada:{IDKoeficijent:{Koeficijent}}}
  42. };
  43.  
  44. // console.log("newKoefcijenti", newKoeficijenti)
  45. // console.log("newData.Koefcijenti", newData.Koeficijenti)
  46. // console.log("newData.Koegcijenti", newData.Koeficijenti || [])
  47. // console.log("newData k ", newData.K || []);
  48.  
  49. // UTAKMICE
  50. // Object.values(oldData.utakmice).forEach(utk => {
  51. // const keys = [...this.keys.UtakmiceD, ...this.keys.UtakmiceT];
  52. // newObj.utakmice[utk.IDUtakmica] = newObj.utakmice[utk.IDUtakmica] || [];
  53. // keys.forEach(key => {
  54. // newObj.utakmice[utk.IDUtakmica][key] = utk[key];
  55. // // console.log("keyc", newObj.utakmice[utk.IDUtakmica][key] = utk[key])
  56.  
  57. // });
  58. // // console.log("utakmiceIDUTAKMICEUTAKMICEUTAKMICEUTAKMICE", newObj.utakmice[utk.IDUtakmica] || {})
  59. // });
  60.  
  61. // console.log("olData.utakmice", oldData.utakmice)
  62. // console.log("this keys Utakmice D", ...this.keys.UtakmiceD)
  63. // console.log("this keys uTAKMICET", ...this.keys.UtakmiceT)
  64. // console.log("keys", [...this.keys.UtakmiceD, ...this.keys.UtakmiceT])
  65. // console.log("utk.IDUtakmica", newObj.utakmice)
  66.  
  67. newUtakmice.D.forEach(utk => {
  68. const keys = this.keys.UtakmiceD;
  69. newObj.utakmice[utk.IDUtakmica] = newObj.utakmice[utk.IDUtakmica] || {};
  70. //console.log(" newObj.utakmice[utk.IDUtakmica", newObj.utakmice[utk.IDUtakmica] || {})
  71.  
  72. keys.forEach(key => {
  73. newObj.utakmice[utk.IDUtakmica][key] = utk[key];
  74.  
  75. // console.log(
  76. // " newObj.utakmice[utk.IDUtakmica][key] ",
  77. // newObj.utakmice[utk.IDUtakmica][key]
  78. // );
  79. });
  80. });
  81.  
  82. // console.log("newUtakmice.D", newUtakmice.D);
  83.  
  84. newUtakmice.T.forEach(utk => {
  85. const keys = this.keys.UtakmiceT;
  86. newObj.utakmice[utk.IDUtakmica] = newObj.utakmice[utk.IDUtakmica] || {};
  87. // console.log(" newObj.utakmice[utk.IDUtakmica] || {};", newObj.utakmice[utk.IDUtakmica] || {})
  88. keys.forEach(key => {
  89. newObj.utakmice[utk.IDUtakmica][key] = utk[key];
  90. //console.log("newObj.utakmice[utk.IDUtakmica][key] = utk[key]", newObj.utakmice[utk.IDUtakmica][key] = utk[key])
  91. });
  92. });
  93.  
  94. //console.log("newUtakmice.T", newUtakmice.T);
  95. let arr = newObj.utakmice;
  96. Object.keys(newObj.utakmice).forEach((key, index) => {
  97. if (
  98. !arr[key].Aktivno ||
  99. !arr[key].AktivnoW ||
  100. arr[key].UTijeku === 2 ||
  101. !arr[key]
  102. .EkranAktivan /*(!arr[key].KladjenjeAktivno && !arr[key].EkranAktivan)*/
  103. ) {
  104. delete newObj.utakmice[key];
  105. }
  106. // console.log("Object,keys",Object.keys(newObj.utakmice))
  107. // console.log("newObjkat Utakmice ",newObj.utakmice[key])
  108. });
  109.  
  110. //OKLADE
  111. Object.values(oldData.oklade).forEach(okl => {
  112. const keys = [...this.keys.OkladeD, ...this.keys.OkladeT];
  113. newObj.oklade[okl.IDOklada] = newObj.oklade[okl.IDOklada] || {};
  114. keys.forEach(key => {
  115. newObj.oklade[okl.IDOklada][key] = okl[key];
  116.  
  117. // console.log("olData.oklade", oldData.oklade)
  118. // console.log("newObj", newObj.oklade);
  119.  
  120. // console.log(
  121. // "newObj.oklade[okl.IDOklada][key]",
  122. // newObj.oklade[okl.IDOklada][key]
  123. // );
  124.  
  125. // console.log("newObjekat" , okl[key])
  126. });
  127. });
  128.  
  129. newOklade.D.forEach(okl => {
  130. const keys = this.keys.OkladeD;
  131. newObj.oklade[okl.IDOklada] = newObj.oklade[okl.IDOklada] || {};
  132. keys.forEach(key => {
  133. newObj.oklade[okl.IDOklada][key] = okl[key];
  134. });
  135. });
  136. newOklade.T.forEach(okl => {
  137. const keys = this.keys.OkladeT;
  138. newObj.oklade[okl.IDOklada] = newObj.oklade[okl.IDOklada] || {};
  139. keys.forEach(key => {
  140. newObj.oklade[okl.IDOklada][key] = okl[key];
  141. });
  142. });
  143.  
  144. arr = newObj.oklade;
  145. Object.keys(newObj.oklade).forEach((key, index) => {
  146. if (
  147. !arr[key].Aktivno ||
  148. !arr[key].Prikazati ||
  149. !arr[key].PozicijaID ||
  150. arr[key].PozicijaID > 5 ||
  151. !arr[key].Red ||
  152. arr[key].Red < 1 ||
  153. arr[key].Red > 3
  154. ) {
  155. delete newObj.oklade[key];
  156. }
  157. });
  158.  
  159. // KOEFICIJENT
  160. newKoeficijenti.K.forEach(koef => {
  161. const keys = this.keys.Koeficijenti;
  162. newObj.koeficijenti[koef.IDKoeficijent] =
  163. newObj.koeficijenti[koef.IDKoeficijent] || {};
  164. keys.forEach(key => {
  165. newObj.koeficijenti[koef.IDKoeficijent][key] = koef[key];
  166. });
  167. });
  168.  
  169. arr = newObj.koeficijenti;
  170. Object.keys(newObj.koeficijenti).forEach((key, index) => {
  171. if (!arr[key].Aktivno || !arr[key].Prikazati || !arr[key].Redoslijed) {
  172. delete newObj.koeficijenti[key];
  173. }
  174. });
  175.  
  176. let Koeficijenti = Helper.newCombineTwoKoeficijenta(
  177. oldData.Koeficijenti, // {IDOklada:{IDKoeficijent:{Koeficijent}}}
  178. Object.values(newObj.koeficijenti) || [], // {IDOklada: {IDKoeficijent:{Koeficijent}}}
  179. "OkladaID",
  180. "IDKoeficijent"
  181. );
  182.  
  183. // const finalOklade = this.mapOklade( // return {IDUtakmica:{PozicijaID:{Red:{calcRed:''}}}}
  184. // newObj.oklade, // {IDOklada:{Oklada}}
  185. // Koeficijenti, // {IDOklada:{IDKoeficijent:{Koeficijent}}}
  186. // oldData.finalOklade // {IDUtakmica:{PozicijaID:{Red:{calcRed:''}}}}
  187. // );
  188.  
  189. const finalOklade = this.newMapOklade(
  190. // return {IDUtakmica:{PozicijaID:{Red:{calcRed:''}}}}
  191. newObj.oklade, // {IDOklada:{Oklada}}
  192. Koeficijenti, // {IDOklada:{IDKoeficijent:{Koeficijent}}}
  193. oldData.finalOklade // {IDUtakmica:{PozicijaID:{Red:{calcRed:''}}}}
  194. );
  195. // console.log("finaloklade", finalOklade);
  196.  
  197. // console.log(
  198. // oldData,
  199. // newData
  200. // newObj
  201. // newUtakmice,
  202. // newOklade
  203. // newKoeficijenti
  204. // finalOklade
  205. // );
  206.  
  207. return {
  208. ...oldData,
  209. ...newObj,
  210. finalOklade,
  211. Koeficijenti: Koeficijenti
  212. };
  213. }
  214. static keys = {
  215. UtakmiceD: [
  216. "Aktivno",
  217. "AktivnoW",
  218. "Ekran",
  219. "EkranAktivan",
  220. "IDUtakmica",
  221. "Jezik",
  222. "KladjenjeAktivno",
  223. "KladjenjeAktivnoW",
  224. "SpecFlagsDomacin",
  225. "SpecFlagsGost",
  226. "TenisRezultat",
  227. "TenisRezultatAktivni",
  228. "TenisRezultatSet",
  229. "TrenutniRezultatUtakmiceDomacin",
  230. "TrenutniRezultatUtakmiceGost",
  231. "TrenutnoVrijemeUtakmice",
  232. "UTijeku",
  233. "UpdateStamp"
  234. ],
  235. UtakmiceT: [
  236. "PeriodUtakmice",
  237. "SportID",
  238. "TVSifra",
  239. "TimDomacinNaziv",
  240. "TimGostNaziv",
  241. "TrenutniStatusUtakmiceID",
  242. "VrijemePocetkaUtakmice"
  243. ],
  244. OkladeD: [
  245. "Aktivno",
  246. "Cleared",
  247. "Ekran",
  248. "IDOklada",
  249. "Omoguciti",
  250. "Prikazati",
  251. "UpdateStamp",
  252. "UpdateTimeSec",
  253. "UtakmicaID",
  254. "calcRed"
  255. ],
  256. OkladeT: [
  257. "DugiNaziv",
  258. "Jezik",
  259. "KategorijaPonudeID",
  260. "Naziv",
  261. "PosebanaVrijednost",
  262. "PozicijaID",
  263. "Red",
  264. "SifraOklade",
  265. "VrstaOkladeID",
  266. "SpanReda"
  267. ],
  268. Koeficijenti: [
  269. "Aktivno",
  270. "Ekran",
  271. "IDKoeficijent",
  272. "Jezik",
  273. "Naziv",
  274. "OkladaID",
  275. "Omoguciti",
  276. "Prikazati",
  277. "Redoslijed",
  278. "TVTipKucanje",
  279. "TipOkladeID",
  280. "UpdateStamp",
  281. "UtakmicaID",
  282. "Vrijednost",
  283. "calcOrd"
  284. ]
  285. };
  286. static mergeData(state, newData) {
  287. let tempData = state;
  288. let utakmice = tempData.utakmice;
  289. let oklade = tempData.oklade;
  290. let koeficijenti = tempData.Koeficijenti;
  291.  
  292. // rasclanjuje objekte u varijable
  293. let UtakmiceD = this.convertToObj(newData.UtakmiceD, "IDUtakmica");
  294. let UtakmiceT = this.convertToObj(
  295. [...Object.values(state.UtakmiceT), ...newData.UtakmiceT],
  296. "IDUtakmica"
  297. );
  298.  
  299. // console.log("utakmiceeeeeeeee", UtakmiceT);
  300.  
  301. let OkladeD = this.convertToObj(newData.OkladeD || [], "IDOklada");
  302. let OkladeT = this.convertToObj(
  303. [...Object.values(state.OkladeT), ...(newData.OkladeT || [])],
  304. "IDOklada"
  305. );
  306.  
  307. // sve utakmice koje smo do sada obradili
  308. let UtakmiceALL = utakmice;
  309. let OkladeALL = oklade;
  310.  
  311. utakmice = {};
  312. oklade = {};
  313.  
  314. // keyevi iz objekata za utakmcie
  315. const UtakmiceKeys = this.getKeys(UtakmiceD, UtakmiceALL);
  316. const OkladeKeys = this.getKeys(OkladeD, OkladeT, OkladeALL);
  317.  
  318. // spajamo iz 3 varijable vrijednstu u utakmica[key]
  319. UtakmiceKeys.forEach(key => {
  320. utakmice[key] = {};
  321. utakmice[key] = this.deepMergeObjects(
  322. UtakmiceALL[key],
  323. UtakmiceT[key],
  324. 1
  325. );
  326. utakmice[key] = this.deepMergeObjects(utakmice[key], UtakmiceD[key], 2);
  327. });
  328.  
  329. OkladeKeys.forEach(key => {
  330. oklade[key] = {};
  331. oklade[key] = this.deepMergeObjects(OkladeALL[key], OkladeT[key], 1);
  332. oklade[key] = this.deepMergeObjects(oklade[key], OkladeD[key], 2);
  333. });
  334.  
  335. let finalOklade = this.mapOklade(
  336. oklade,
  337. koeficijenti,
  338. tempData.finalOklade
  339. );
  340.  
  341. // cistimo utakmice koje su zavrsile/ nisu aktivne
  342. this.getKeys(utakmice).forEach(key => {
  343. if (
  344. !utakmice[key].Aktivno ||
  345. !utakmice[key].AktivnoW ||
  346. //utakmice[key].TrenutnoVrijemeUtakmice === "FT"
  347. !utakmice[key].UTijeku === 1 //
  348. ) {
  349. delete utakmice[key];
  350. }
  351. });
  352.  
  353. return {
  354. ...state,
  355. utakmice,
  356. oklade,
  357. finalOklade,
  358. Koeficijenti: koeficijenti
  359. };
  360. }
  361.  
  362. // mapira IDOklade u IDUtakmice i pozicionira po dubini
  363. static mapOklade(oklade, koeficijenti, finalOkladeObj) {
  364. // {IDOKlada:{Oklada}},
  365. // {IDOklada:{IDKoeficijent:{Koeficijent}}}
  366. // {IDUtakmica:{MATRICA}}
  367. let OkladeValues = Object.values(oklade);
  368.  
  369. let okaldeByUtakmice = {};
  370. let finalOkladeState = {};
  371. this.getKeys(this.convertToObj(OkladeValues, "UtakmicaID")).forEach(key => {
  372. okaldeByUtakmice[key] = [];
  373. finalOkladeState[key] = {};
  374. });
  375.  
  376. OkladeValues.forEach(oklada => {
  377. let UniqueVrstaOkladeID = okaldeByUtakmice[oklada.UtakmicaID].filter(
  378. utk =>
  379. utk.VrstaOkladeID !== oklada.VrstaOkladeID ||
  380. (utk.VrstaOkladeID === oklada.VrstaOkladeID && utk.Aktivno === true)
  381. );
  382. if (oklada.Aktivno === true) {
  383. UniqueVrstaOkladeID.push(oklada);
  384. }
  385. okaldeByUtakmice[oklada.UtakmicaID] = UniqueVrstaOkladeID;
  386. });
  387.  
  388. Object.keys(okaldeByUtakmice).forEach(key => {
  389. let oklade = okaldeByUtakmice[key];
  390. finalOkladeState[key] =
  391. finalOkladeObj[key] || this.getEmptyOkladaObject();
  392.  
  393. // filtriramo oklade koje ne treba prikazati
  394. oklade = oklade.filter(
  395. okl =>
  396. !(
  397. okl.PozicijaID > 5 ||
  398. // okl.calcRed !== 0 ||
  399. okl.Aktivno === false
  400. )
  401. // okl.AktivnoW === false ||
  402. //okl.Cleared !== 0
  403. );
  404. oklade.forEach(okl => {
  405. try {
  406. finalOkladeState[key][okl.PozicijaID][okl.Red][0] =
  407. okl.PosebanaVrijednost;
  408.  
  409. if (Object.values(koeficijenti[okl.IDOklada] || {}).length) {
  410. let keys = Object.keys(koeficijenti[okl.IDOklada]).filter(tmpKey =>
  411. (tmpKey || "").match(/^[0-9]+$/)
  412. );
  413. keys.forEach(tmpKey => {
  414. finalOkladeState[key][okl.PozicijaID][okl.Red][
  415. koeficijenti[okl.IDOklada][tmpKey]["Redoslijed"]
  416. ] =
  417. // cl-gray
  418. (koeficijenti[okl.IDOklada][tmpKey]["Omoguciti"] !== false
  419. ? "1"
  420. : "2") +
  421. // cl-transparent
  422. (koeficijenti[okl.IDOklada][tmpKey]["Prikazati"] !== false
  423. ? "1"
  424. : "2") +
  425. this.formatNumber2decs(
  426. koeficijenti[okl.IDOklada][tmpKey]["Vrijednost"].toString()
  427. );
  428. });
  429. }
  430. } catch (e) {
  431. // console.log(
  432. // okl,
  433. // koeficijenti[okl.IDOklada],
  434. // finalOkladeState[key],
  435. // e
  436. // );
  437. }
  438. });
  439. });
  440.  
  441. return finalOkladeState;
  442. }
  443. static newMapOklade(oklade, koeficijenti, oldObj) {
  444. // {IDOKlada:{Oklada}},
  445. // {IDOklada:{IDKoeficijent:{Koeficijent}}}
  446. // {IDUtakmica:{MATRICA}}
  447.  
  448. // ZA PROVJERU RADI LAKSEG RADA
  449. Object.keys(oklade).forEach(key => {
  450. const IDUtakmica = oklade[key].UtakmicaID;
  451. const sameOklade = Object.values(oklade).filter(
  452. okl => okl.UtakmicaID === IDUtakmica
  453. );
  454. const sameKoef = Object.values(koeficijenti).filter(koef => {
  455. const keys = sameOklade
  456. .map(okl => okl.IDOklada)
  457. .filter(key => key === koef.OkladaID);
  458. return !!keys.length;
  459. });
  460. console.log(IDUtakmica, sameOklade, sameKoef);
  461. });
  462.  
  463. const newObj = {};
  464.  
  465. Object.keys(koeficijenti).forEach(IDOklada => {
  466. if (!IDOklada || !oklade[IDOklada]) return;
  467. const IDUtakmica = oklade[IDOklada].UtakmicaID;
  468. const okl = oklade[IDOklada];
  469. const koefs = Object.values(koeficijenti[IDOklada]);
  470.  
  471. if (!newObj[IDUtakmica]) {
  472. newObj[IDUtakmica] = this.getEmptyOkladaObject();
  473. }
  474. // console.log(koefs)
  475. koefs.forEach(koef => {
  476. let RED = +okl.Red + okl.calcRed;
  477. if((RED===3 || RED===2 || RED === 1)){
  478. RED = okl.Red;
  479. }else{
  480. if(RED===1 && okl.calcRed === 0){
  481. RED = 1;
  482. }else if(RED===1 && okl.calcRed === 1){
  483. RED=2;
  484. }else if(RED === 1 && okl.calcRed === 2){
  485. RED=3;
  486. }
  487. }
  488.  
  489.  
  490. // if (okl.DugiNaziv.startsWith("Broj ko")) {
  491. // if (
  492. // okl.DugiNaziv.indexOf("[d!]") !== -1 &&
  493. // (RED !== 1 || okl.VrstaOkladeID !== 249)
  494. // ) {
  495. // RED = 0;
  496. // } else if (
  497. // okl.DugiNaziv.indexOf("[g!]") !== -1 &&
  498. // (RED !== 2 || okl.VrstaOkladeID !== 250)
  499. // ) {
  500. // RED = 0;
  501. // }
  502. // }
  503.  
  504. if (
  505. okl.Aktivno &&
  506. !okl.Cleared &&
  507. okl.Prikazati &&
  508. RED > 0 &&
  509. RED < 4
  510. ) {
  511. // const RED = /*okl.SpanReda ===0 &&*/ okl.calcRed === 0?okl.Red : okl.SpanReda===okl.calcRed?okl.Red:Math.min(okl.Red+1,2);
  512. // console.log(koef,oldObj[IDUtakmica],okl,RED);
  513.  
  514. // oldObj[IDUtakmica][okl['PozicijaID']][RED][0] = okl.PosebanaVrijednost;
  515. if (okl.PosebanaVrijednost) {
  516. newObj[IDUtakmica][okl["PozicijaID"]][RED][0] =
  517. okl.PosebanaVrijednost;
  518. }
  519. newObj[IDUtakmica][okl["PozicijaID"]][RED][
  520. koef["Redoslijed"]
  521. ] = koef.Prikazati
  522. ? `${koef.Omoguciti ? "1" : "2"}${
  523. koef.Prikazati ? "1" : "2"
  524. }${this.formatNumber2decs(koef.Vrijednost)}`
  525. : "";
  526. } else {
  527. // if (okl.PosebanaVrijednost) {
  528. // newObj[IDUtakmica][okl["PozicijaID"]][RED][0] =
  529. // okl.PosebanaVrijednost;
  530. // }
  531. newObj[IDUtakmica][okl["PozicijaID"]][RED] = {
  532. 0: "",
  533. 1: "",
  534. 2: "",
  535. 3: "",
  536. 4: ""
  537. };
  538. // newObj[IDUtakmica][okl["PozicijaID"]][RED][koef["Redoslijed"]] = "";
  539. }
  540. });
  541. });
  542. return newObj;
  543. }
  544. static formatNumber2decs(num) {
  545. num = num.toString();
  546. if (num.match(/^[0-9]+\.[0-9][0-9]$/)) {
  547. return num;
  548. } else {
  549. if (num.indexOf(".") === -1) {
  550. return num + ".00";
  551. } else {
  552. return num + "0";
  553. }
  554. }
  555. }
  556.  
  557. // kreira prazan objekat za mapiranu okladu
  558. static getEmptyOkladaObject() {
  559. return {
  560. 1: {
  561. 1: { 0: "", 1: "", 2: "", 3: "", 4: "" },
  562. 2: { 0: "", 1: "", 2: "", 3: "", 4: "" },
  563. 3: { 0: "", 1: "", 2: "", 3: "", 4: "" }
  564. },
  565. 2: {
  566. 1: { 0: "", 1: "", 2: "", 3: "", 4: "" },
  567. 2: { 0: "", 1: "", 2: "", 3: "", 4: "" },
  568. 3: { 0: "", 1: "", 2: "", 3: "", 4: "" }
  569. },
  570. 3: {
  571. 1: { 0: "", 1: "", 2: "", 3: "", 4: "" },
  572. 2: { 0: "", 1: "", 2: "", 3: "", 4: "" },
  573. 3: { 0: "", 1: "", 2: "", 3: "", 4: "" }
  574. },
  575. 4: {
  576. 1: { 0: "", 1: "", 2: "", 3: "", 4: "" },
  577. 2: { 0: "", 1: "", 2: "", 3: "", 4: "" },
  578. 3: { 0: "", 1: "", 2: "", 3: "", 4: "" }
  579. },
  580. 5: {
  581. 1: { 0: "", 1: "", 2: "", 3: "", 4: "" },
  582. 2: { 0: "", 1: "", 2: "", 3: "", 4: "" },
  583. 3: { 0: "", 1: "", 2: "", 3: "", 4: "" }
  584. }
  585. };
  586. }
  587. // vraca bez duplikata kombinovano sve kljuceve koji se pojavljuju u svim objektima
  588. static getKeys(...arr) {
  589. let keys = arr.map(element => Object.keys(element || {}));
  590. let allKeys = [];
  591. keys.forEach(key => {
  592. allKeys = [...allKeys, ...key];
  593. });
  594. return [...new Set(allKeys)];
  595. }
  596.  
  597. // provjerava jel definisana varijabla i vraca true ili undefined
  598. static isSet(val) {
  599. return val !== undefined || undefined;
  600. }
  601. // filtrira duple elemente iz nizova po key
  602. static filterData(data, key) {
  603. let newData = [];
  604. while (data.length) {
  605. let currItem = data.splice(0, 1)[0];
  606. let currElements = data.filter(element => element[key] === currItem[key]);
  607. if (currElements.length) {
  608. newData.push(currElements.pop());
  609. currElements.forEach(el => {
  610. let ix = data.indexOf(el);
  611. if (ix !== -1) data.splice(ix, 1);
  612. });
  613. } else {
  614. newData.push(currItem);
  615. }
  616. }
  617. return newData;
  618. }
  619.  
  620. // pretvara niz u objekat po key
  621. static convertToObj(data, key) {
  622. let newData = {};
  623. data.forEach(el => (newData[el[key]] = el));
  624. return newData;
  625. }
  626.  
  627. static deepMergeObjects(object1 = {}, object2 = {}) {
  628. const keys = this.getKeys(object1, object2);
  629. let tempObj = {};
  630. keys.forEach(k => {
  631. if (
  632. object1[k] !== undefined &&
  633. (!object2[k] || object2[k] === undefined)
  634. ) {
  635. tempObj[k] = object1[k];
  636. } else {
  637. tempObj[k] = object2[k];
  638. }
  639. });
  640. return tempObj;
  641. }
  642.  
  643. // return random number
  644. static getRandom() {
  645. return Math.round(Math.random() * Date.now() * Math.random());
  646. }
  647. // shallow merge o2 over o1
  648. //vrijedi za sve
  649. static mergeObjects(object1, object2) {
  650. return { ...object1, ...object2 };
  651. }
  652.  
  653. // merger a2 into a1
  654. static mergeArray(array1, array2) {
  655. return [...array1, ...array2];
  656. }
  657.  
  658. // merge two arrays i vraca vrijednosti bez duplikata
  659. static mergeSet(array1, array2) {
  660. return [...new Set([...array1, ...array2])];
  661. }
  662.  
  663. // pretvara objekat u array vrijednosti
  664. static convertToArray(obj) {
  665. return Object.values(obj);
  666. }
  667.  
  668. // static combineTwoKoeficijenta(array1, array2, key1, key2) {
  669. // let combined = {};
  670. // let arr = [];
  671. // arr.push(array1);
  672. // arr.push(array2);
  673. // arr.forEach(a => {
  674. // a.forEach(value => {
  675. // if (combined[value[key1]]) {
  676. // combined[value[key1]] = {
  677. // ...combined[value[key1]],
  678. // [value[key2]]: value
  679. // };
  680. // } else {
  681. // if (value[key1] === undefined) {
  682. // // || val[key2] === undefined) {
  683. // Object.values(value).forEach(element => {
  684. // if (combined[element[key1]]) {
  685. // combined[element[key1]] = {
  686. // ...combined[element[key1]],
  687. // [element[key2]]: element
  688. // // [val[key2]]: el
  689. // };
  690. // } else {
  691. // combined[element[key1]] = {
  692. // [element[key2]]: element
  693. // };
  694. // }
  695. // });
  696. // } else {
  697. // combined[value[key1]] = {
  698. // ...combined[value[key1]],
  699. // [value[key2]]: value
  700. // };
  701. // }
  702. // }
  703. // });
  704. // });
  705. // return combined;
  706. // }
  707.  
  708. static newCombineTwoKoeficijenta(oldObj, newArr, key1, key2) {
  709. // u combined cuvamo staru raspodjelu koeficijnata;
  710. const combined = {}; // oldObj;
  711. // prolazimo kroz nove koeficijente
  712. newArr.forEach(koef => {
  713. // ako ne postroji oklada kreiramo je kao {IDOklade:{IDKoeficijenta:{Koeficijent}}}
  714. if (!combined[koef[key1]]) {
  715. combined[koef[key1]] = {
  716. [koef[key2]]: koef
  717. };
  718. } else {
  719. // ako postroji oklada dopunjavamo je {IDOklade:{IDKoeficijenta:{Koeficijent},IDKoeficijenta:{Koeficijent},...}}
  720.  
  721. combined[koef[key1]] = {
  722. ...combined[koef[key1]],
  723. [koef[key2]]: koef
  724. };
  725. }
  726. });
  727. // vracamo kombinaciju starih i novih koeficijenata
  728. return combined;
  729. }
  730.  
  731. // static rasclaniAndVrijednost(val, slova = ['g', 's']) {
  732. // const regexp = /(\d)+-(\d)+and(\d)+/;
  733. // let res = regexp.exec(val);
  734. // if (res !== null) {
  735. // return `${res[2] === "0" ? 10 : res[2]},${
  736. // res[3] === 0 ? 10 : res[2] === "0" ? 1 + "" + res[3] : res[3]
  737. // }${slova[0]}-${res[1]}${slova[1]}`;
  738. // } else {
  739. // return null;
  740. // }
  741.  
  742. // }
  743.  
  744. static newRasclani(val, template) {
  745. let tmpPosebna = val;
  746. let specNaz = template;
  747.  
  748. console.log("tmpPosebna", val);
  749. if (tmpPosebna.indexOf("-") > 0 && tmpPosebna.indexOf("/-") === -1) {
  750. let tmpstring = tmpPosebna.replace("and", "-").split("-");
  751. let indReplace = 1;
  752.  
  753. tmpstring.forEach(tmp => {
  754. specNaz = specNaz.replace(indReplace.toString() + "$", tmp);
  755. indReplace++;
  756. });
  757. } else {
  758. let tmpstring = tmpPosebna.split("/");
  759. let indReplace = 1;
  760.  
  761. tmpstring.forEach(tmp => {
  762. specNaz = specNaz.replace(indReplace.toString() + "$", tmp);
  763. indReplace++;
  764. });
  765. }
  766.  
  767. return specNaz;
  768. }
  769.  
  770. static flatObject(obj) {
  771. let temp = Object.values(obj);
  772. let temp2 = [];
  773. temp.forEach(t => {
  774. temp2 = [...temp2, ...Object.values(t)];
  775. });
  776. let temp3 = [];
  777. temp2.forEach(t => {
  778. temp3 = [...temp3, ...Object.values(t)];
  779. });
  780. return temp3;
  781. }
  782. static rasclaniOKladeIdatu(oklada, id) {
  783. let niz = [oklada[0], oklada[1], oklada.slice(2)];
  784. return niz[id];
  785. }
  786. // id === 2 za vrijednosti // id === 1 za klase
  787. // static rasclaniObjekatOklada(oklade, id = 2) {
  788. // let newObj = Helper.getEmptyOkladaObject();
  789. // try {
  790. // Object.keys(oklade).forEach(key1 => {
  791. // Object.keys(oklade[key1]).forEach(key2 => {
  792. // Object.keys(oklade[key1][key2]).forEach(key3 => {
  793. // // omoguci
  794. // // prikazi
  795. // // vrijednost
  796. // // [1][2](2.12)
  797. // if (newObj[key1][key2][key3] === null) {
  798. // newObj[key1][key2][key3] = null;
  799. // } else if (id === 2)
  800. // if (oklade[key1][key2][key3] === null) {
  801. // newObj[key1][key2][key3] = null;
  802. // } else if (`${key3}` === "0") {
  803. // newObj[key1][key2][key3] = oklade[key1][key2][key3];
  804. // } else {
  805. // newObj[key1][key2][key3] = oklade[key1][key2][key3].slice(2);
  806. // }
  807. // else if (
  808. // id === 1 &&
  809. // oklade[key1][key2][key3] !== null //&&
  810. // ) {
  811. // let cls =
  812. // oklade[key1][key2][key3][0] === "2" &&
  813. // oklade[key1][key2][key3].length > 5
  814. // ? " cl-grey "
  815. // : "";
  816. // cls +=
  817. // oklade[key1][key2][key3][1] === "2" &&
  818. // oklade[key1][key2][key3].length > 5
  819. // ? " cl-transparent "
  820. // : "";
  821. // // cls +=
  822. // // oklade[key1][key2][key3].length < 3 ? " cl-transparent " : "";
  823. // newObj[key1][key2][key3] = cls;
  824. // } else if (id !== 1 && id !== 2) {
  825. // console.error("Invalid id value: ", id);
  826. // return Helper.getEmptyOkladaObject();
  827. // }
  828. // });
  829. // });
  830. // });
  831. // } catch (e) {
  832. // console.log(e, oklade, newObj, id);
  833. // }
  834. // return newObj;
  835. // }
  836.  
  837. // id === 2 za vrijednosti // id === 1 za klase
  838. static rasclaniObjekatOklada(oklade, id = 2) {
  839. let newObj = Helper.getEmptyOkladaObject();
  840. try {
  841. Object.keys(oklade).forEach(key1 => {
  842. Object.keys(oklade[key1]).forEach(key2 => {
  843. Object.keys(oklade[key1][key2]).forEach(key3 => {
  844. // omoguci
  845. // prikazi
  846. // vrijednost
  847. // [1][2](2.12)
  848. if (newObj[key1][key2][key3] === null) {
  849. newObj[key1][key2][key3] = null;
  850. } else if (id === 2)
  851. if (oklade[key1][key2][key3] === null) {
  852. newObj[key1][key2][key3] = null;
  853. } else if (`${key3}` === "0") {
  854. newObj[key1][key2][key3] = oklade[key1][key2][key3];
  855. } else {
  856. newObj[key1][key2][key3] = oklade[key1][key2][key3].slice(2);
  857. }
  858. else if (
  859. id === 1 &&
  860. oklade[key1][key2][key3] !== null //&&
  861. ) {
  862. let cls =
  863. oklade[key1][key2][key3][0] === "2" &&
  864. oklade[key1][key2][key3].length > 5
  865. ? " cl-grey "
  866. : "";
  867. cls +=
  868. oklade[key1][key2][key3][1] === "2" &&
  869. oklade[key1][key2][key3].length > 5
  870. ? " cl-transparent "
  871. : "";
  872. // cls +=
  873. // oklade[key1][key2][key3].length < 3 ? " cl-transparent " : "";
  874. newObj[key1][key2][key3] = cls;
  875. } else if (id !== 1 && id !== 2) {
  876. console.error("Invalid id value: ", id);
  877. return Helper.getEmptyOkladaObject();
  878. }
  879. });
  880. });
  881. });
  882. } catch (e) {
  883. console.log(e, oklade, newObj, id);
  884. }
  885. return newObj;
  886. }
  887.  
  888. static mapOldToNewObject(oldObj, oklade = this.getEmptyOkladaObject()) {
  889. const newObj = {};
  890.  
  891. newObj.rowCode = {};
  892. newObj.rowCode.code = oldObj.TVSifra;
  893. newObj.rowCode.addditionalCode = ["A", "B"];
  894.  
  895. newObj.matchData = {};
  896.  
  897. newObj.matchData.currentSetScore = {};
  898. newObj.matchData.currentSetScore.first =
  899. oldObj.TrenutniRezultatUtakmiceDomacin;
  900. newObj.matchData.currentSetScore.second =
  901. oldObj.TrenutniRezultatUtakmiceGost;
  902.  
  903. newObj.matchData.hasService = {};
  904. newObj.matchData.hasService.first = oldObj.SpecFlagsDomacin;
  905. newObj.matchData.hasService.second = oldObj.SpecFlagsGost;
  906.  
  907. newObj.matchData.match = {};
  908. newObj.matchData.match.firstPlayer = oldObj.TimDomacinNaziv;
  909. newObj.matchData.match.secondPlayer = oldObj.TimGostNaziv;
  910.  
  911. newObj.matchData.sport =
  912. // [0]
  913. this.sportConfig.filter(val => val.sportID === oldObj.SportID).naziv;
  914. newObj.matchData.timer = oldObj.TrenutnoVrijemeUtakmice;
  915.  
  916. newObj.matchData.totalScore = {};
  917. newObj.matchData.totalScore.first = oldObj.TrenutniRezultatUtakmiceDomacin;
  918. newObj.matchData.totalScore.second = oldObj.TrenutniRezultatUtakmiceGost;
  919.  
  920. newObj.matchData.setScore = {};
  921. newObj.matchData.setScore = oldObj.TenisRezultatSet;
  922. newObj.matchData.quotas = oklade;
  923.  
  924. // for (let i = 1; i < 6; i++) {
  925. // for (let j = 1; j < 3; j++) {
  926. // for (let k = 0; k < 4; k++) {
  927. // try {
  928. // newObj.matchData.quotas.push(oklade[i][j][k]);
  929. // } catch (e) {
  930. // // console.log(i, j, k, oklade);
  931. // }
  932. // }
  933. // }
  934. // }
  935.  
  936. newObj.oldObj = { ...oldObj, oklade };
  937. return newObj;
  938. }
  939.  
  940. static sportConfig = [
  941. {
  942. sportID: 1,
  943. naziv: "football",
  944. redoslijed: 1
  945. },
  946. {
  947. sportID: 5,
  948. naziv: "tennis",
  949. redoslijed: 2
  950. },
  951. {
  952. sportID: 2,
  953. naziv: "basketball",
  954. redoslijed: 3
  955. },
  956. {
  957. sportID: 23,
  958. naziv: "volleyball",
  959. redoslijed: 4
  960. },
  961. {
  962. sportID: 21,
  963. naziv: "beachVolleyball",
  964. redoslijed: 5
  965. },
  966. {
  967. sportID: 4,
  968. naziv: "hockey",
  969. redoslijed: 6
  970. }
  971. ];
  972. static formatDate(date) {
  973. let [datum, sati] = date.split(" ");
  974. let [d, m, g] = datum.split(".");
  975. let newDate = `${m}.${d}.${g} ${sati}`;
  976. return newDate;
  977. }
  978. static Jezici = {
  979. Tenis: {
  980. and: "$2,$3g-1$s",
  981. crtica: "1$g-2$s"
  982. }
  983. };
  984. }
  985.  
  986. export default Helper;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement