Refactor of History module (#184)
Co-authored-by: widlam <mikolaj.widla@gmail.com> Co-authored-by: Adam Bem <adam.bem@zoho.eu> Reviewed-on: #184 Reviewed-by: Adam Bem <bema@noreply.example.com> Co-authored-by: Mikolaj Widla <widlam@noreply.example.com> Co-committed-by: Mikolaj Widla <widlam@noreply.example.com>
This commit is contained in:
@@ -470,7 +470,7 @@ function selectMessage(id){
|
||||
$('.tile[tileid="'+id+'"]').addClass("active");
|
||||
|
||||
initializeHistory();
|
||||
refreshHeaderTable(innerHTML);
|
||||
refreshHeaderTable(document.innerHTML);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -46,13 +46,36 @@ function historyToHtml(){
|
||||
for(let i=0; i<iterations; i++){
|
||||
let style = i%2==0 ? ' class="even"' : '';
|
||||
innerHTML += '<tr' + style + '>' +
|
||||
'<td>' + historyJson[i].dateTimeStamp + '</td>' +
|
||||
'<td>' + historyJson[i].interfaceName + '</td>' +
|
||||
'<td>' + parseTimeStamp(historyJson[i].dateTimeStamp) + '</td>' +
|
||||
'<td>' + historyJson[i].httpMethod + '</td>' +
|
||||
'<td>' + parseRequestBody(historyJson[i].requestBody, i) + '</td>' +
|
||||
'<td> <button id="'+i+'" class="showHeaderButton" onClick="showHeadersHistory(this);"> Show headers </button> </td>' +
|
||||
'</tr>';
|
||||
}
|
||||
return innerHTML;
|
||||
}
|
||||
|
||||
function parseRequestBody(requestBody,i){
|
||||
return requestBody.length == 0 ?
|
||||
"No request body" :
|
||||
'<button id="'+i+'" class="showRequestBodyButton" onClick="showRequestBody(this);"> Show request body </button>'
|
||||
}
|
||||
|
||||
function parseTimeStamp(timeStamp){
|
||||
return timeStamp.substring(0,19).replace('T',' ');
|
||||
}
|
||||
|
||||
function parseHeaders(pos){
|
||||
parsedJson = new Map();
|
||||
headers = historyJson[pos].headers
|
||||
Object.keys( headers ).forEach(
|
||||
(jsonKey) => {
|
||||
parsedJson.set( jsonKey , headers[jsonKey] );
|
||||
}
|
||||
)
|
||||
return parsedJson;
|
||||
}
|
||||
|
||||
function displayHistory(){
|
||||
$('#historyTable tbody').html(historyToHtml());
|
||||
}
|
||||
|
||||
34
Frontend/assets/scripts/tools/mock/popup.js
Normal file
34
Frontend/assets/scripts/tools/mock/popup.js
Normal file
@@ -0,0 +1,34 @@
|
||||
|
||||
function switchPopups (neededPopupOption) {
|
||||
$('.hiddable-popup-option').addClass('hidden-popup-type');
|
||||
$('#'+neededPopupOption).removeClass('hidden-popup-type');
|
||||
}
|
||||
|
||||
function showPopup(){
|
||||
$('.popup-flex').removeClass('hiddable-container');
|
||||
}
|
||||
|
||||
function hidePopup(){
|
||||
$('.popup-flex').addClass('hiddable-container');
|
||||
$('.hiddable-popup-option').addClass('hidden-popup-type');
|
||||
}
|
||||
|
||||
/*
|
||||
* Event listener that's close the popup when user clicks out of a popup.
|
||||
*/
|
||||
|
||||
window.addEventListener(
|
||||
'click' ,
|
||||
(clickedElement) => {
|
||||
if(!document.getElementById('popup-body').contains(clickedElement.target) && clickedElement.target.className == 'popup-flex' ) {
|
||||
hidePopup();
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
$('.popup-button-close').click(
|
||||
() => {
|
||||
hidePopup();
|
||||
$('.hiddable-popup-option').addClass('hidden-popup-type')
|
||||
}
|
||||
);
|
||||
@@ -35,7 +35,6 @@ $('#historyTab').click(showHistory);
|
||||
$('#btn-history-filter').click(historyFilterSwitch);
|
||||
|
||||
|
||||
|
||||
const tabitem = $('.tabitem');
|
||||
function showHistory(){
|
||||
$('#headersTab').click(showHeaders);
|
||||
@@ -52,8 +51,6 @@ function initializeHistory(){
|
||||
getLast24hHistoryData();
|
||||
}
|
||||
|
||||
|
||||
|
||||
function showHeaders(){
|
||||
$('#historyTab').click(showHistory);
|
||||
tabitem.removeClass('active');
|
||||
@@ -63,6 +60,109 @@ function showHeaders(){
|
||||
$('#headersTab').off('click');
|
||||
}
|
||||
|
||||
function showHeadersHistory(element){
|
||||
historyTable = '';
|
||||
headers = parseHeaders(element.id)
|
||||
headers.forEach(
|
||||
(value,key) => {
|
||||
historyTable +=
|
||||
'<tr>' +
|
||||
'<td class="history-header-name">'+ key + '</td>' +
|
||||
'<td class="history-header-value">'+ value + '</td>' +
|
||||
'</tr>'
|
||||
}
|
||||
);
|
||||
document.getElementById('header-history-table-body').innerHTML = historyTable;
|
||||
switchPopups('history-headers-table');
|
||||
showPopup();
|
||||
}
|
||||
|
||||
async function formatJSON(json) {
|
||||
const address = window.location.protocol + "//" + window.location.hostname + ":" + 8081 + "/json/formatting";
|
||||
|
||||
var init = {
|
||||
body: json,
|
||||
method: "POST"
|
||||
};
|
||||
var request = new Request(address, init);
|
||||
|
||||
var result = await fetch(request).then(response => {
|
||||
return response.text().then(function (text) {
|
||||
var json = JSON.parse(text);
|
||||
json.status = response.status;
|
||||
return json;
|
||||
});
|
||||
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
async function formatXML(xml) {
|
||||
const address = window.location.protocol + "//" + window.location.hostname + ":" + 8082 + "/prettify";
|
||||
var data = {
|
||||
data: xml,
|
||||
process: "",
|
||||
processor: "libxml",
|
||||
version: "1.0"
|
||||
}
|
||||
|
||||
var init = {
|
||||
body: JSON.stringify(data),
|
||||
method: "POST"
|
||||
};
|
||||
var request = new Request(address, init);
|
||||
|
||||
var result = await fetch(request).then(response => {
|
||||
return response.text().then(function (text) {
|
||||
return JSON.parse(text);
|
||||
});
|
||||
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
function showRequestBody(element){
|
||||
var historyRequestBody = historyJson[element.id].requestBody;
|
||||
const popupContent = document.getElementById('code-highlight-content')
|
||||
|
||||
document.getElementById('code-highlight-content').innerText = "Loading...";
|
||||
switch(historyJson[element.id].headers["content-type"]){
|
||||
case "application/json":{
|
||||
formatJSON(historyRequestBody).then(function(result) {
|
||||
|
||||
if (result.status == "200") {
|
||||
popupContent.innerText = result.data;
|
||||
highlightSyntax('code-highlight-content');
|
||||
}
|
||||
else {
|
||||
popupContent.innerText = historyRequestBody;
|
||||
}
|
||||
});
|
||||
break;
|
||||
}
|
||||
case "application/xml":{
|
||||
formatXML(historyRequestBody).then(function(result) {
|
||||
if (result.status == "OK") {
|
||||
popupContent.innerText = result.result;
|
||||
highlightSyntax('code-highlight-content');
|
||||
}
|
||||
else {
|
||||
popupContent.innerText = historyRequestBody;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
break;
|
||||
}
|
||||
default:{
|
||||
popupContent.innerText = historyRequestBody;
|
||||
highlightSyntax('code-highlight-content');
|
||||
}
|
||||
}
|
||||
switchPopups('history-request-body');
|
||||
showPopup();
|
||||
}
|
||||
|
||||
function focusInTip(element){
|
||||
showTip(element);
|
||||
focusedField = true;
|
||||
@@ -73,6 +173,10 @@ function focusOutTip(element){
|
||||
hidTip(element);
|
||||
}
|
||||
|
||||
function refreshHistoryRecords(){
|
||||
getLast24hHistoryData();
|
||||
}
|
||||
|
||||
function hidTip(element){
|
||||
if(focusedField) return;
|
||||
$('#'+element).removeClass('active');
|
||||
|
||||
Reference in New Issue
Block a user