Advertisement
Guest User

Untitled

a guest
Dec 12th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.80 KB | None | 0 0
  1. let data = [{
  2. "id": 1,
  3. "values": [{
  4. "2018-01": 10,
  5.  
  6. },
  7. {
  8. "2018-02": 20
  9. },
  10. {
  11. "2018-03": 30
  12. },
  13. {
  14. "2018-05": 40
  15. }
  16. ]
  17. }, {
  18. "id": 2,
  19. "values": [{
  20. "2018-03": 100
  21. },
  22. {
  23. "2018-04": 200
  24. },
  25. {
  26. "2018-05": 300
  27. },
  28. {
  29. "2018-06": 400
  30. }
  31. ]
  32. }, {
  33. "id": 3,
  34. "values": [{
  35. "2018-01": 1000
  36. },
  37. {
  38. "2018-06": 2000
  39. },
  40. {
  41. "2018-07": 3000
  42. },
  43. {
  44. "2018-09": 4000
  45. }
  46. ]
  47. }, {
  48. "id": 4,
  49. "values": [{
  50. "2018-02": 1000
  51. },
  52. {
  53. "2018-03": 1000
  54. },
  55. {
  56. "2018-08": 1500
  57. },
  58. {
  59. "2018-09": 1000
  60. }
  61. ]
  62. }]
  63.  
  64.  
  65. // get range of data from datapicker and change format
  66.  
  67. let button = document.querySelector("button");
  68.  
  69. button.addEventListener("click", function () {
  70.  
  71. let startDate = document.querySelector("#start").valueAsDate;
  72. let endDate = document.querySelector("#end").valueAsDate;
  73.  
  74.  
  75.  
  76. function monthDiff(d1, d2) {
  77. var months;
  78. months = (d2.getFullYear() - d1.getFullYear()) * 12;
  79. months -= d1.getMonth() + 1;
  80. months += d2.getMonth();
  81. return months <= 0 ? 0 : months;
  82. }
  83.  
  84. function getDate(start, months) {
  85. let dates = [];
  86. let currentDate = startDate;
  87. for (i = 0; i <= months; i++) {
  88. let d = new Date(currentDate);
  89. dates.push(d);
  90. currentDate.setMonth(d.getMonth() + 1)
  91. }
  92.  
  93. return dates;
  94.  
  95. }
  96.  
  97. let months = monthDiff(startDate, endDate);
  98.  
  99. let dateArr = getDate(startDate, months + 1);
  100.  
  101.  
  102.  
  103. //create table headers with startDate and endDate
  104.  
  105.  
  106. let table = document.createElement("table")
  107. let tr = document.createElement("tr")
  108.  
  109. table.appendChild(tr);
  110.  
  111.  
  112. let idTh = document.createElement("th")
  113.  
  114. var text = document.createTextNode("ID");
  115. let idLabel = idTh.appendChild(text);
  116.  
  117.  
  118. tr.appendChild(idTh);
  119.  
  120.  
  121. for (let value of dateArr) {
  122.  
  123. let format = ("0" + (value.getMonth() + 1)).slice(-2) + " " + value.getFullYear();
  124.  
  125.  
  126. let dataHeader = document.createElement("th");
  127. var text = document.createTextNode(format);
  128.  
  129. dataHeader.appendChild(text);
  130.  
  131.  
  132. tr.appendChild(dataHeader);
  133.  
  134. var divContainer = document.getElementById("showData");
  135. divContainer.innerHTML = "";
  136. divContainer.appendChild(table);
  137.  
  138.  
  139. }
  140.  
  141.  
  142.  
  143. //for each object with data
  144.  
  145. for (let i = 0; i < data.length; i++) {
  146. let obj = data[i];
  147.  
  148. console.log(obj)
  149. let itemsId = Object.values(obj)[0]; ///print id
  150.  
  151. console.log(itemsId)
  152.  
  153. let valuesFromJson = Object.values(obj)[1];
  154.  
  155.  
  156.  
  157. //add the first cell from id
  158.  
  159. let td = document.createElement("td")
  160. let tr = document.createElement("tr")
  161. var text = document.createTextNode(itemsId);
  162. td.appendChild(text);
  163. tr.appendChild(td);
  164. table.appendChild(tr);
  165.  
  166.  
  167. let lastAdded = 0;
  168.  
  169.  
  170.  
  171. for (let value of dateArr) {
  172.  
  173. let format = (value.getFullYear() + "-" + ("0" + (value.getMonth() + 1)).slice(-2));
  174. console.log(format)
  175.  
  176.  
  177.  
  178.  
  179.  
  180. for (j = 0; j < valuesFromJson.length; j++) {
  181. let valueFromJson = valuesFromJson[j];
  182.  
  183.  
  184. let key = Object.keys(valueFromJson);
  185.  
  186.  
  187.  
  188. if (format.includes(key[0])) {
  189.  
  190. console.log("zgadza sie")
  191.  
  192. td = document.createElement("td");
  193. text = document.createTextNode(Object.values(valueFromJson));
  194.  
  195. td.appendChild(text);
  196.  
  197. for (let k = 0; k < value.getMonth() - lastAdded; k++) {
  198. tdEmpty = document.createElement("td");
  199. text = document.createTextNode([" "]);
  200. tdEmpty.appendChild(text);
  201. tr.appendChild(tdEmpty);
  202. }
  203.  
  204. tr.appendChild(td)
  205. lastAdded = value.getMonth() + 1;
  206.  
  207.  
  208.  
  209.  
  210. } else {
  211.  
  212. console.log("nie zgadza sie ")
  213. }
  214. }
  215. }
  216. if (lastAdded < 12) {
  217. for (var k = lastAdded; k < 12; k++) {
  218. tdEmpty = document.createElement("td");
  219. text = document.createTextNode([" "]);
  220. tdEmpty.appendChild(text);
  221. tr.appendChild(tdEmpty);
  222. }
  223.  
  224. }
  225. }
  226.  
  227. }, false);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement