58 lines
1.5 KiB
JavaScript
58 lines
1.5 KiB
JavaScript
import fs from "fs";
|
|
import {votes} from "./stateData.js";
|
|
|
|
export async function generateCallManifest(
|
|
data = {
|
|
"NA": {
|
|
"winner": "NODATA",
|
|
"resultNow": "0",
|
|
"resultBlock": "0"
|
|
}
|
|
}
|
|
,
|
|
location = "manifest.txt") {
|
|
|
|
|
|
let manifest = fs.createWriteStream(location,)
|
|
|
|
let now = new Date(Date.now())
|
|
manifest.write(
|
|
"TheElector: automated election call reporting system\n" +
|
|
"-----------\n" +
|
|
"MANIFEST DATA\n" +
|
|
"Generated: " + (now.getMonth() + 1) + "/" + (now.getDay() + 1) + " " + now.getHours() + ":" + now.getMinutes() + ":" + now.getSeconds() + " Hours local\n" +
|
|
"-----------\n"
|
|
)
|
|
|
|
// Alphabetical list
|
|
manifest.write("BY STATE ALPHABETICALLY: \n")
|
|
for (const state in data) {
|
|
let time = new Date(data[state].resultNow * 1000)
|
|
|
|
manifest.write("State: " + state + "\n");
|
|
manifest.write("Call: " + data[state].winner + "\n");
|
|
manifest.write("Time called: " + (time.getMonth() + 1) + "/" + (time.getDay() + 1) + " " +
|
|
time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds() + "\n");
|
|
manifest.write("-----------" + "\n");
|
|
}
|
|
|
|
// Counts up votes per side
|
|
manifest.write("VOTES PER SIDE: \n")
|
|
let trump = 0;
|
|
let biden = 0;
|
|
for (const state in data) {
|
|
if (data[state].winner === "Trump")
|
|
trump = trump + votes[state]
|
|
if (data[state].winner === "Biden")
|
|
biden = biden + votes[state]
|
|
}
|
|
manifest.write("BIDEN:" + biden + "\n")
|
|
manifest.write("TRUMP:" + trump + "\n")
|
|
manifest.write("-----------" + "\n")
|
|
|
|
|
|
//end of file
|
|
manifest.write("Election data provided by the Associated Press")
|
|
manifest.close()
|
|
}
|