MultiSiteReport.jade 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. head
  2. script(type='text/javascript').
  3. let url = '/api/defaultObservable'; //'!{jadeargument.url}';
  4. const params = '!{jadeargument.data}';
  5. const defaultQueryValue = '!{jadeargument.defaultQueryValue}';
  6. let sites = Array();
  7. const options = {
  8. mode: 'cors',
  9. headers: {
  10. "Content-Type": "application/json",
  11. "Access-Control-Allow-Origin": "*"
  12. },
  13. method: 'POST',
  14. body: params,
  15. }
  16. let tempBuffer = "";
  17. fetch(url,options)
  18. .then(async (response) =>
  19. {
  20. let reader = response.body.getReader();
  21. let result = "";
  22. let count = 0;
  23. result = reader.read().then(function processText({done, value}){
  24. let x = new TextDecoder("utf-8").decode(value);
  25. try{
  26. if(x > ""){
  27. let temp = tempBuffer + x;
  28. let identifier = "[{\"header\":{\"messageType\":";
  29. const tempArray = temp.split(identifier);
  30. //- console.log(tempArray);
  31. if(tempArray.length > 2){
  32. for(let ind=1; ind <= tempArray.length-2; ind++){
  33. console.count("x");
  34. temp = JSON.parse(identifier+tempArray[ind]);
  35. if(temp[0]){
  36. temp = temp[0];
  37. }
  38. tempBuffer = "";
  39. sites.push(temp.header.messageProducerInformation.origin.programName);
  40. count++;
  41. tableCreate(temp.header.messageProducerInformation.origin.programName,temp.data.data)
  42. }
  43. temp = identifier+tempArray[tempArray.length-1];
  44. }
  45. temp = JSON.parse(temp)
  46. if(temp[0]){
  47. temp = temp[0];
  48. }
  49. tempBuffer = "";
  50. sites.push(temp.header.messageProducerInformation.origin.programName);
  51. tableCreate(temp.header.messageProducerInformation.origin.programName,temp.data.data)
  52. return reader.read().then(processText)
  53. }
  54. }catch(e){
  55. tempBuffer = tempBuffer + x;
  56. console.log(e)
  57. }
  58. }).then(res=>{
  59. var sitesHeader = document.getElementById('sites');
  60. var bold = document.createElement('b');
  61. sitesHeader.innerHTML = "("+ sites.toString() + ") " + defaultQueryValue;
  62. sitesHeader.appendChild(bold)
  63. })
  64. })
  65. function tableCreate (servername,arr) {
  66. var myTable = document.getElementById('multiSiteTable');
  67. var table = document.createElement('table');
  68. table.border = '1';
  69. var tblBody = document.createElement('tbody');
  70. let column = [];
  71. var headerTag = document.createElement("p");
  72. var headerNode = document.createTextNode(servername);
  73. headerTag.appendChild(headerNode);
  74. for(var i = 0; i < arr.length; i++){
  75. var tr = document.createElement('tr');
  76. tblBody.appendChild(tr)
  77. for(var j=0; j< Object.keys(arr[i]).length; j++) {
  78. Object.keys(arr[i]).forEach((c)=>{
  79. if(column.indexOf(c)==-1) column.push(c);
  80. });
  81. var td = document.createElement('td');
  82. td.innerHTML = arr[i][Object.keys(arr[i])[j]];
  83. tr.appendChild(td);
  84. }
  85. }
  86. var header = document.createElement('thead');
  87. column.forEach((c)=>{
  88. var th = document.createElement("th");
  89. th.innerHTML = c;
  90. header.appendChild(th);
  91. })
  92. table.appendChild(header);
  93. table.appendChild(tblBody);
  94. myTable.appendChild(headerTag)
  95. myTable.appendChild(table);
  96. }
  97. meta(charset='UTF-8')
  98. title MultiSite Report
  99. link(rel='stylesheet', href='/stylesheets/style.css')
  100. body
  101. div
  102. h1 MultiSiteReport
  103. form(method='POST' action=jadeargument['action'])
  104. select(name="defaultQuery" onchange="this.form.submit()")
  105. each item in jadeargument['defaultQuery']
  106. if(item.queryName === jadeargument['defaultQueryValue'])
  107. option(value = item.queryName selected) #{item.queryName}
  108. else
  109. option(value = item.queryName) #{item.queryName}
  110. h3(id="sites")
  111. div(id="multiSiteTable")