diff --git a/README.md b/README.md
index f8df9aa..c4de6e8 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,3 @@
# 2024-election-results
-Userscript for the following website:
-
-https://www.reuters.com/graphics/USA-ELECTION/RESULTS/zjpqnemxwvx/
\ No newline at end of file
+Simple page for election results for 2024
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..d501c13
--- /dev/null
+++ b/index.html
@@ -0,0 +1,160 @@
+
+
+
+
+
+ Document
+
+
+
+
+
+ 2024 Election Results
+
+
+
+
+
+ Name
+ Party
+ Votes
+
+
+
+
+
+
+ Breakdown Per State
+
+
+
+
+
diff --git a/index.js b/index.js
deleted file mode 100644
index 078071c..0000000
--- a/index.js
+++ /dev/null
@@ -1,122 +0,0 @@
-(() => {
- let candidates;
- let parties;
- let states;
- let headerContainer = document.querySelector('div.article-block:nth-child(7)');
- headerContainer.innerHTML = '';
- headerContainer.insertAdjacentHTML('afterend', `
`);
- const {
- fetch: originalFetch
- } = window;
- window.fetch = async (...args) => {
- let [resource, config] = args;
- let response = await originalFetch(resource, config);
- if (!response.ok) {
- return response;
- }
- const f = response.url.split('/').pop();
- if (f === "metadata.json") {
- const metadata = await response.json();
- states = new Map(metadata.geo.map((c) => [c.uid, c.name]));
- parties = new Map(metadata.parties.map((c) => [c.code, c.name]));
- candidates = new Map(metadata.candidates.map((c) => [c.uid, [c.fullName, parties.get(c.candidateRaces[0].majorParty)]]));
- } else if (f === "president.json") {
-
- const president = await response.json();
- let data = president[0].state_electionTypes.map((t) => t.state.officeRaces[0].candidateVotes.map((o) => {
- return {
- "name": (candidates) ? candidates.get(o.candidate) : [o.candidate, "?"],
- "votes": o.totalVote
- };
- })).reduce((acc, current) => {
- current.forEach((candidate) => {
- const existingCandidate = acc.find((c) => c.name === candidate.name);
- if (existingCandidate) {
- existingCandidate.votes += candidate.votes;
- } else {
- acc.push(candidate);
- }
- });
- return acc;
- }, []);
-
- let stateVotes = president[0].state_electionTypes.map((t) => {
- return {
- "state": (states) ? states.get(t.state.uid) : t.uid,
- "current": t.state.officeRaces[0].officeVotes[0].totalVote,
- "expected": t.state.officeRaces[0].officeVotes[0].totalExpectedVote,
- "candidates": t.state.officeRaces[0].candidateVotes.map((o) => {
- return {
- "name": (candidates) ? candidates.get(o.candidate) : [o.candidate, "?"],
- "votes": o.totalVote
- };
- })
- };
- });
-
- if (data.length > 0) {
- let tableBody = document.getElementById('table-body');
- tableBody.innerHTML = '';
- data.sort((a, b) => b.votes - a.votes).forEach((row, index) => {
- let rowElement = tableBody.insertRow();
- rowElement.setAttribute('class', `with-state-links row-${index} svelte-woitu6 first-poll-close-row`);
- let nameCell = rowElement.insertCell();
- nameCell.setAttribute('class', `state en svelte-woitu6`);
- let partyCell = rowElement.insertCell();
- partyCell.setAttribute('class', `state en svelte-woitu6`);
- let votesCell = rowElement.insertCell();
- votesCell.setAttribute('class', `state en svelte-woitu6`);
- nameCell.textContent = row.name[0];
- partyCell.textContent = row.name[1];
- votesCell.textContent = row.votes;
- });
- }
-
- if (stateVotes.length > 0) {
- let stateContainer = document.getElementById('state-container');
- stateContainer.innerHTML = '';
- stateVotes.forEach((row) => {
- const table = document.createElement('table');
- const caption = document.createElement('caption');
- caption.innerHTML = `
- ${row.state} (Votes Left: ${row.expected - row.current})
- `;
- table.appendChild(caption);
-
- const thead = document.createElement('thead');
- const headerRow = document.createElement('tr');
- const headers = ['Name', 'Party', 'Votes'];
- headers.forEach(header => {
- const th = document.createElement('th');
- th.textContent = header;
- headerRow.appendChild(th);
- });
- thead.appendChild(headerRow);
- table.appendChild(thead);
-
- const tbody = document.createElement('tbody');
- row.candidates.sort((a, b) => b.votes - a.votes).forEach((candidate) => {
- const rowElement = document.createElement('tr');
-
- const nameCell = document.createElement('td');
- nameCell.textContent = candidate.name[0];
- rowElement.appendChild(nameCell);
-
- const partyCell = document.createElement('td');
- partyCell.textContent = candidate.name[1];
- rowElement.appendChild(partyCell);
-
- const votesCell = document.createElement('td');
- votesCell.textContent = candidate.votes;
- rowElement.appendChild(votesCell);
-
- tbody.appendChild(rowElement);
- });
- table.appendChild(tbody);
- stateContainer.appendChild(table);
- });
- }
- }
- return response;
- };
-})();
\ No newline at end of file