changes
This commit is contained in:
74
rangevote.js
74
rangevote.js
@@ -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);
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user