jak-project/goalc/make/CompilerReport.h

42 lines
2.8 KiB
C
Raw Normal View History

#pragma once
#include <string>
const std::string compiler_report_base =
"<!doctypehtml><html lang=en><meta charset=UTF-8><meta "
"content=\"width=device-width,initial-scale=1\"name=viewport><title>OpenGOALc "
"Report</"
"title><style>html{font-size:10pt;font-family:sans-serif}table{width:100%;border-collapse:"
"collapse;margin:20px 0;box-shadow:0 2px 3px rgba(0,0,0,.1)}thead "
"th{background-color:#4caf50;color:#fff;text-align:left;padding:12px "
"15px;font-weight:700}tbody tr{border-bottom:1px solid #ddd}tbody td{padding:12px 15px}tbody "
"tr:nth-child(even){background-color:#f2f2f2}tbody "
"tr:hover{background-color:#f1f1f1}table{margin:20px 0}</style><canvas height=75vh "
"id=chart></canvas><br>Compare Against: <select id=compare></select> Accepted Margin of Error "
"%: <input id=margin type=number value=15>File Regex: <input id=regex><button "
"onclick=renderData()>Apply</button><table id=table><thead><tr "
"id=table-head-row><th>File<tbody id=table-body></table><script "
"src=https://cdn.jsdelivr.net/npm/chart.js></script><script>\n// DATA BEGINS\nconst tests = "
"[]\n// DATA ENDS\nlet testOrder=[],tableData={};for(const test of "
"tests)for(const[fileName,fileTime]of(testOrder.push(test.name),document.getElementById("
"\"compare\").innerHTML+=`<option "
"value=\"${test.name}\">${test.name}</"
"option>`,Object.entries(test.files)))Object.keys(tableData).includes(fileName)||(tableData["
"fileName]={}),tableData[fileName][test.name]=fileTime;const "
"tableHeadRow=document.getElementById(\"table-head-row\");let tableHeadContents=\"\";for(const "
"testName of testOrder)tableHeadContents+=`<th>${testName}</th>`;function renderData(){let "
"e=parseInt(document.getElementById(\"margin\").value)/"
"100,t=document.getElementById(\"regex\").value;t=\"\"!==t?RegExp(t):void 0;let "
"a=document.getElementById(\"compare\").value;\"\"!==a&&a||(a=testOrder[0]);let "
"l=document.getElementById(\"table-body\");for(let[n,d]of(l.innerHTML=\"\",Object.entries("
"tableData)))if(void 0===t||t.test(n)){var o=`<tr><td>${n}</td>`;for(let r of "
"testOrder)Object.keys(d).includes(r)?a!==r&&Object.keys(d).includes(a)?d[r]>d[a]*(1+e)?o+=`<"
"td style=\"background-color: #faa;\">${d[r]}</td>`:d[r]<d[a]*(1-e)?o+=`<td "
"style=\"background-color: "
"#c7ffc7;\">${d[r]}</td>`:o+=`<td>${d[r]}</td>`:o+=`<td>${d[r]}</td>`:o+=\"<td>--</"
"td>\";l.innerHTML+=o+\"</tr>\"}}tableHeadRow.innerHTML+=tableHeadContents,renderData();const "
"ctx=document.getElementById(\"chart\");new "
"Chart(ctx,{type:\"bar\",data:{labels:tests.map(e=>e.name),datasets:[{label:\"Total "
"Time\",data:tests.map(e=>e.total),borderWidth:1}]},options:{scales:{y:{beginAtZero:!0,type:"
"\"logarithmic\",title:{display:!0,text:\"Seconds\"}}}}});</script>";