-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
90 lines (78 loc) · 3.31 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
const correctPassword = "123456"; // Set your password here
function checkPassword() {
const input = document.getElementById("passwordInput").value;
if (input === correctPassword) {
document.getElementById("passwordScreen").classList.add("hidden");
document.getElementById("mainContent").classList.remove("hidden");
} else {
alert("Incorrect password, please try again.");
}
}
let selectedOptionText = ""; // Variable to hold the selected option's text
function selectOption(optionNumber) {
// Assuming your options are buttons as shown in your HTML
const option = document.querySelector(`.option-button:nth-child(${optionNumber})`);
selectedOptionText = option.textContent; // Get the text content of the selected option
document.getElementById("numberInput").classList.remove("hidden");
document.getElementById("submitButton").classList.remove("hidden");
// Display the selected option
const selectedOptionDisplay = document.getElementById("selectedOption");
selectedOptionDisplay.textContent = "Selected Category: " + selectedOptionText;
selectedOptionDisplay.classList.remove("hidden");
}
async function fetchAndDisplayJSON() {
try {
const team_dict = {
"Public Health, Social Sciences, and Humanities": "team1_llm_results.json",
"Biological & Chemical Sciences | Physical Sciences & Engineering": "team2_llm_results.json",
"Medical Sciences": "team3_llm_results.json",
};
const response = await fetch("tables/" + team_dict[selectedOptionText]);
let jsonData = await response.json(); // Parse the response as JSON
// Get the number of rows the user wants to display
const numberOfRows = parseInt(document.getElementById("numberInput").value, 10);
// If the input is a number, slice the jsonData to that length
if (!isNaN(numberOfRows)) {
jsonData = jsonData.slice(0, numberOfRows);
}
generateTableFromJSON(jsonData); // Use a modified function to generate table from JSON
} catch (error) {
console.error("Failed to fetch JSON:", error);
}
}
function generateTableFromJSON(data) {
const input = document.getElementById("passwordInput").value;
if (input !== correctPassword) {
alert("Please enter the correct password first.");
return;
}
const table = document.createElement("table");
table.setAttribute("class", "data-table");
table.style.width = "100%";
table.style.borderCollapse = "collapse";
table.style.marginTop = "20px";
// Assuming the first object's keys can be headers
if (data.length > 0) {
const headers = Object.keys(data[0]);
generateTableRow(table, headers, true); // Generate the header row
}
// Generate table rows from JSON data
data.forEach((item) => {
const row = Object.values(item);
generateTableRow(table, row, false);
});
const output = document.getElementById("outputTable");
output.innerHTML = ""; // Clear previous content
output.appendChild(table);
output.classList.remove("hidden");
}
function generateTableRow(table, rowData, isHeader) {
const tr = document.createElement("tr");
rowData.forEach((cell, index) => {
const cellElement = document.createElement(isHeader ? "th" : "td");
cellElement.textContent = cell;
// Apply styling as needed, similar to the original function
tr.appendChild(cellElement);
});
table.appendChild(tr);
}