MultiSiteReport.jade 5.2 KB

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