Guest User

Untitled

a guest
Dec 18th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.01 KB | None | 0 0
  1. window.analyzer = {
  2. init: function (object, id) {
  3. this.functions.appendTable(id);
  4. this.functions.setupHeaders(object);
  5. this.functions.addData(object);
  6. this.functions.addCaption("Analysis of the stylesheets");
  7. },
  8. data: {},
  9. helpers: {
  10. wrapper: function (id) {
  11. var wrap;
  12. if (document.getElementById(id)) {
  13. wrap = document.getElementById(id);
  14. } else {
  15. wrap = document.createElement('div');
  16. wrap.setAttribute("id", id)
  17. document.body.appendChild(wrap);
  18. }
  19. return wrap;
  20. },
  21. bootstrapTable: function () {
  22. var self = window.analyzer;
  23. self.data.table = document.createElement('table');
  24. self.data.table.sortable = true;
  25. self.data.tBody = document.createElement('tbody');
  26. analyzer.data.table.appendChild(self.data.tBody);
  27. },
  28. createBodyRows: function (list) {
  29. var self = window.analyzer,
  30. ll = list.length,
  31. i;
  32. for (i = 0; i <= ll; i++) {
  33. var row = self.data.tBody.insertRow(i);
  34. self.helpers.createCells(list[0], row, 'td');
  35. }
  36. },
  37. createCells: function (item, row, el) {
  38. var self = window.analyzer,
  39. i = 0,
  40. itemProp;
  41. for (var itemProp in item) {
  42. if (typeof item[itemProp] !== 'function') {
  43. if (el == 'td') {
  44. var cell = row.insertCell(i);
  45. cell.setAttribute('headers', itemProp);
  46. } else {
  47. var th = document.createElement('th');
  48. cell = row.appendChild(th);
  49. }
  50. i++;
  51. }
  52. }
  53. self.data.columnCount = i;
  54. },
  55. loadHeadingData: function (item, row) {
  56. var self = window.analyzer,
  57. colCount = self.data.columnCount,
  58. i = 0;
  59. for (var itemProp in item) {
  60. if (typeof item[itemProp] !== 'function') {
  61. var thisCell = row.cells[i],
  62. val = document.createTextNode(itemProp);
  63. thisCell.appendChild(val);
  64. i++;
  65. }
  66. }
  67. },
  68. createHeader: function (list) {
  69. var self = window.analyzer,
  70. item = list[0];
  71. self.data.table.createTHead();
  72. self.data.table.tHead.className = "table__header";
  73. var tHeadRow = self.data.table.tHead.insertRow(0);
  74. tHeadRow.className = "table__header__row";
  75. self.helpers.createCells(item, tHeadRow, 'th');
  76. self.helpers.loadHeadingData(item, self.data.table.tHead.rows[0]);
  77. },
  78. createFooter: function (list) {
  79. var self = window.analyzer,
  80. item = list[0];
  81. self.data.table.createTFoot();
  82. self.data.table.tFoot.className = "table__footer";
  83. var tHeadRow = self.data.table.tFoot.insertRow(0);
  84. tHeadRow.className = "table__footer__row";
  85. self.helpers.createCells(item, tHeadRow, 'th');
  86. self.helpers.loadHeadingData(item, self.data.table.tFoot.rows[0]);
  87. },
  88. addRowData: function (list) {
  89. var self = window.analyzer,
  90. ll = list.length,
  91. tbody = self.data.table.tBodies[0],
  92. rows = tbody.rows,
  93. i = 0;
  94. for (var row in rows) {
  95. var item = list[i],
  96. z = 0,
  97. thisRow = rows[row];
  98. for (var itemProp in item) {
  99. if (typeof item[itemProp] !== 'function') {
  100. var val = self.helpers.filterDatum(item, itemProp);
  101. var content = self.helpers.convertContent(val),
  102. thisCell = thisRow.cells[z];
  103. thisCell.appendChild(content);
  104. z++;
  105. }
  106. }
  107. i++;
  108. }
  109. },
  110. convertContent: function (val) {
  111. var content;
  112. if (typeof val == 'object' && val !== null) {
  113. var content = document.createElement('ul');
  114. val.forEach(function (el, i) {
  115. var item = document.createElement('li');
  116. item.innerHTML = el;
  117. content.appendChild(item);
  118. });
  119. } else {
  120. content = document.createTextNode(val);
  121. }
  122. return content;
  123. },
  124. convertToArray: function (ruleList) {
  125. ruleList = Array.prototype.slice.call(ruleList);
  126. var newArray = [];
  127. ruleList.forEach(function (el, i) {
  128. if (el.cssText) {
  129. newArray.push(el.cssText);
  130. } else if (el.mediaText) {
  131. newArray.push(el.mediaText)
  132. }
  133. });
  134. console.log(newArray);
  135. return newArray;
  136. },
  137. filterDatum: function (item, itemProp) {
  138. var self = window.analyzer,
  139. value = item[itemProp];
  140. switch (itemProp) {
  141. case "ownerNode":
  142. value = value.nodeName;
  143. break;
  144. case "cssRules":
  145. if (value !== null) {
  146. var value = self.helpers.convertToArray(value);
  147. }
  148. break;
  149. case "rules":
  150. if (value !== null) {
  151. var value = self.helpers.convertToArray(value);
  152. }
  153. break;
  154. case "media":
  155. if (value !== null) {
  156. var value = self.helpers.convertToArray(value);
  157. }
  158. break;
  159. default:
  160. value = value;
  161. break;
  162. }
  163. return value;
  164. }
  165. },
  166. functions: {
  167. appendTable: function (id) {
  168. var self = window.analyzer,
  169. wrapper = self.helpers.wrapper(id);
  170. self.helpers.bootstrapTable();
  171. wrapper.appendChild(self.data.table);
  172. },
  173. setupHeaders: function (list) {
  174. var self = window.analyzer;
  175. self.helpers.createHeader(list);
  176. self.helpers.createFooter(list);
  177. },
  178. addData: function (list) {
  179. var self = window.analyzer;
  180. self.helpers.createBodyRows(list);
  181. self.helpers.addRowData(list);
  182. },
  183. addCaption: function (caption) {
  184. var self = window.analyzer;
  185. caption = document.createTextNode(caption);
  186. self.data.table.createCaption();
  187. self.data.table.caption.appendChild(caption);
  188. }
  189. }
  190. };
  191. window.analyzer.init(document.styleSheets, 'css');
Add Comment
Please, Sign In to add comment