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
|
// Set up data structures for Range Votes and Plur Votes
|
||||||
var Experiment={}
|
var Experiment;
|
||||||
Experiment.RangeVotes=new Map();
|
|
||||||
Experiment.RangePower=new Map();
|
fs.readFile('./rangevote.json', 'utf8', (err, data) => {
|
||||||
Experiment.RangeResult=new Map();
|
if (err) {
|
||||||
Experiment.PlurVotes=new Map();
|
Experiment={};
|
||||||
Experiment.PlurResult=new Map();
|
Experiment.RangeVotes=new Map();
|
||||||
Experiment.PlurCount=0;
|
Experiment.RangePower=new Map();
|
||||||
for (let c of Candidates)
|
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);
|
if (err) console.log(err);
|
||||||
let v=Experiment.RangePower.get(k);
|
}
|
||||||
if (typeof(v)!='number' || v==NaN || v==Infinity) Experiment.RangePower.set(k,0);
|
|
||||||
v=Experiment.RangeResult.get(k);
|
function MapReplacer(key, value) {
|
||||||
if (typeof(v)!='number' || v==NaN || v==Infinity) Experiment.RangeResult.set(k,0);
|
if(value instanceof Map) {
|
||||||
v=Experiment.PlurResult.get(k);
|
return {
|
||||||
if (typeof(v)!='number' || v==NaN || v==Infinity) Experiment.PlurResult.set(k,0);
|
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)
|
function RangeVote(ip,entries)
|
||||||
{
|
{
|
||||||
console.log('IP: '+ip);
|
console.log('IP: '+ip);
|
||||||
@@ -150,7 +191,7 @@ app.post('/range_vote', urlencodedParser, function (req, res) {
|
|||||||
let key=CanId(c);
|
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>';
|
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);
|
res.send(str);
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -162,6 +203,7 @@ app.post('/plur_vote', urlencodedParser, function (req, res) {
|
|||||||
let key=CanId(c);
|
let key=CanId(c);
|
||||||
if (Experiment.PlurResult.get(key)>0) str=str+c+': '+Math.round(100.0*Experiment.PlurResult.get(key)/Experiment.PlurCount)+'%<br>';
|
if (Experiment.PlurResult.get(key)>0) str=str+c+': '+Math.round(100.0*Experiment.PlurResult.get(key)/Experiment.PlurCount)+'%<br>';
|
||||||
}
|
}
|
||||||
|
Persist();
|
||||||
res.send(str);
|
res.send(str);
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user