This commit is contained in:
2023-10-03 08:51:42 -04:00
parent f6508ca91a
commit a3ee24800c

View File

@@ -28,22 +28,61 @@ function CanId(c)
// Set up data structures for Range Votes and Plur Votes
var Experiment={}
Experiment.RangeVotes=new Map();
Experiment.RangePower=new Map();
Experiment.RangeResult=new Map();
Experiment.PlurVotes=new Map();
Experiment.PlurResult=new Map();
Experiment.PlurCount=0;
for (let c of Candidates)
var Experiment;
fs.readFile('./rangevote.json', 'utf8', (err, data) => {
if (err) {
Experiment={};
Experiment.RangeVotes=new Map();
Experiment.RangePower=new Map();
Experiment.RangeResult=new Map();
Experiment.PlurVotes=new Map();
Experiment.PlurResult=new Map();
Experiment.PlurCount=0;
}
else Experiment=JSON.parse(data,MapReviver);
for (let c of Candidates)
{
let k=CanId(c);
let v=Experiment.RangePower.get(k);
if (typeof(v)!='number' || v==NaN || v==Infinity) Experiment.RangePower.set(k,0);
v=Experiment.RangeResult.get(k);
if (typeof(v)!='number' || v==NaN || v==Infinity) Experiment.RangeResult.set(k,0);
v=Experiment.PlurResult.get(k);
if (typeof(v)!='number' || v==NaN || v==Infinity) Experiment.PlurResult.set(k,0);
}
})
function LogErr(err)
{
let k=CanId(c);
let v=Experiment.RangePower.get(k);
if (typeof(v)!='number' || v==NaN || v==Infinity) Experiment.RangePower.set(k,0);
v=Experiment.RangeResult.get(k);
if (typeof(v)!='number' || v==NaN || v==Infinity) Experiment.RangeResult.set(k,0);
v=Experiment.PlurResult.get(k);
if (typeof(v)!='number' || v==NaN || v==Infinity) Experiment.PlurResult.set(k,0);
if (err) console.log(err);
}
function MapReplacer(key, value) {
if(value instanceof Map) {
return {
dataType: 'Map',
value: Array.from(value.entries()), // or with spread: value: [...value]
};
} else {
return value;
}
}
function MapReviver(key, value) {
if(typeof value === 'object' && value !== null) {
if (value.dataType === 'Map') {
return new Map(value.value);
}
}
return value;
}
function Persist()
{
var str=JSON.stringify(Experiment,MapReplacer);
fs.writeFile("./rangevote.json",str,LogErr);
}
@@ -116,6 +155,8 @@ function AddToRangeResult(vote,mult=1)
}
function RangeVote(ip,entries)
{
console.log('IP: '+ip);
@@ -150,7 +191,7 @@ app.post('/range_vote', urlencodedParser, function (req, res) {
let key=CanId(c);
if (Experiment.RangePower.get(key)>0) str=str+c+': '+Math.round(Experiment.RangeResult.get(key)/Experiment.RangePower.get(key))+'% ('+Experiment.RangePower.get(key)+' Voters)<br>';
}
console.log(JSON.stringify(Experiment));
Persist();
res.send(str);
})
@@ -162,6 +203,7 @@ app.post('/plur_vote', urlencodedParser, function (req, res) {
let key=CanId(c);
if (Experiment.PlurResult.get(key)>0) str=str+c+': '+Math.round(100.0*Experiment.PlurResult.get(key)/Experiment.PlurCount)+'%<br>';
}
Persist();
res.send(str);
})