Merge pull request #46 from danieldupriest/show-report-history

Show report history
This commit is contained in:
hui2018 2019-01-30 17:02:01 -08:00 committed by GitHub
commit 9e6f08675d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -25,34 +25,92 @@ function getEndpointDomain() {
return domain; return domain;
} }
function displayListOfReports(listOfReports) { function getDataFromEndpoint(url, callback) {
const token = localStorage.getItem("token");
const xhr = new XMLHttpRequest();
console.log(`Attempting a connection to the following endpoint: ${url}`);
xhr.open("GET", url, true);
xhr.onreadystatechange = function() {
if (this.readyState === 4) {
if (this.status === 200) {
console.log("GET SUCCESS!");
console.log(`Server response:\n${this.response}`);
parsedData = JSON.parse(this.response);
callback(parsedData);
} else {
console.error("GET FAILURE!");
console.error(`Server status: ${this.status}`);
console.error(`Server response:\n${this.response}`);
}
}
};
xhr.onerror = function() {
alert("Connection error!");
};
xhr.send();
}
function displayListOfReports(parsedData) {
const cardBody = document.querySelector(".card-body"); const cardBody = document.querySelector(".card-body");
const table = document.createElement("table"); const table = document.createElement("table");
const reports = listOfReports.reports; const reports = parsedData.reports;
let rowsInserted = 0; let reportsAdded = 0;
// Create report table
for (let i = 0; i < reports.length; i++) { for (let i = 0; i < reports.length; i++) {
let title = reports[i].title; let title = reports[i].title;
let dateCreated = new Date(reports[i].date_created).toLocaleDateString("en-US"); let dateCreated = new Date(reports[i].date_created).toLocaleDateString("en-US");
let state = reports[i].state; let state = reports[i].state;
let dateSubmitted = (state === "created") ? "TBD": new Date(reports[i].date_submitted).toLocaleDateString("en-US"); let dateSubmitted;
let bodyRow = table.insertRow(i);
// Create edit/view button
bodyRow.insertCell(0).innerHTML = title; let actionButton = document.createElement("button");
bodyRow.insertCell(1).innerHTML = dateCreated; actionButton.type = "submit";
bodyRow.insertCell(2).innerHTML = state; actionButton.classList.add("btn");
bodyRow.insertCell(3).innerHTML = dateSubmitted;
rowsInserted++; if (state === "created") {
// Edit button
dateSubmitted = "TBD";
actionButton.classList.add("btn-primary");
actionButton.innerHTML = "Edit";
} else {
// View button
dateSubmitted = new Date(reports[i].date_submitted).toLocaleDateString("en-US");
actionButton.classList.add("btn-success");
actionButton.innerHTML = "View";
}
// Insert data into the table object
let bodyRow = table.insertRow(i);
bodyRow.insertCell(0).innerHTML = title;
bodyRow.insertCell(1).innerHTML = dateCreated;
let stateCell = bodyRow.insertCell(2);
stateCell.innerHTML = state;
stateCell.classList.add("d-none", "d-lg-table-cell"); // Column visible only on large displays
let dateSubmittedCell = bodyRow.insertCell(3);
dateSubmittedCell.innerHTML = dateSubmitted;
dateSubmittedCell.classList.add("d-none", "d-md-table-cell"); // Column visible on medium and larger displays
bodyRow.insertCell(4).appendChild(actionButton);
reportsAdded++;
} }
if (rowsInserted === 0) { if (reportsAdded === 0) {
// Empty report list // Report list is empty
const p = document.createElement("p"); const p = document.createElement("p");
p.innerHTML = "No reports found."; p.innerHTML = "No reports found.";
cardBody.appendChild(p); cardBody.appendChild(p);
} else { } else {
// Create table header, add to table, and append result to the card body // Report list exists and table rows have been created
const thead = document.createElement("thead"); // Create table header, add it to the table, and append the result to the card body
const tr = document.createElement("tr"); const tr = document.createElement("tr");
const headTitle = document.createElement("th"); const headTitle = document.createElement("th");
@ -65,12 +123,19 @@ function displayListOfReports(listOfReports) {
const headState = document.createElement("th"); const headState = document.createElement("th");
headState.innerHTML = "State"; headState.innerHTML = "State";
headState.classList.add("d-none", "d-lg-table-cell"); // Column visible only on large displays
tr.appendChild(headState); tr.appendChild(headState);
const headDateSubmitted = document.createElement("th") const headDateSubmitted = document.createElement("th")
headDateSubmitted.innerHTML = "Date Submitted"; headDateSubmitted.innerHTML = "Date Submitted";
headDateSubmitted.classList.add("d-none", "d-md-table-cell"); // Column visible on medium and larger displays
tr.appendChild(headDateSubmitted); tr.appendChild(headDateSubmitted);
const headAction = document.createElement("th")
headAction.innerHTML = "Action";
tr.appendChild(headAction);
const thead = document.createElement("thead");
thead.appendChild(tr); thead.appendChild(tr);
table.prepend(thead); table.prepend(thead);
table.classList.add("table", "table-striped", "table-responsive-sm"); table.classList.add("table", "table-striped", "table-responsive-sm");
@ -79,34 +144,8 @@ function displayListOfReports(listOfReports) {
} }
function getReportHistory(event) { function getReportHistory(event) {
const token = localStorage.getItem("token"); const url = getEndpointDomain() + "api/v1/reports";
const url = getEndpointDomain() + "backend/list_report"; getDataFromEndpoint(url, displayListOfReports);
const xhr = new XMLHttpRequest();
console.log(`Attempting a connection to the following endpoint: ${url}`);
xhr.open("GET", url, true);
//xhr.setRequestHeader("Authorization", `Token ${token}`);
xhr.onreadystatechange = function() {
if (this.readyState === 4) {
if (this.status === 200) {
console.log("GET list_report SUCCESS!");
console.log(`Server response:\n${this.response}`);
listOfReports = JSON.parse(this.response);
displayListOfReports(listOfReports);
} else {
console.log("GET list_report FAILURE!");
console.log(`Server status: ${this.status}`);
console.log(`Server response:\n${this.response}`);
}
}
};
xhr.onerror = function() {
alert("Connection error!");
};
xhr.send();
} }
document.addEventListener("DOMContentLoaded", getReportHistory); document.addEventListener("DOMContentLoaded", getReportHistory);