Corrected long last page with dynamic reloading

This commit is contained in:
Thomas FORGIONE 2015-10-05 09:50:04 +02:00
parent 837baa6673
commit 5006d1d71d
8 changed files with 140 additions and 20 deletions

View File

@ -1270,7 +1270,13 @@ DBReq.UserVerifier.prototype.execute = function() {
},
function(err, result) {
var ok = result.reduce(function(prev, next) { return prev && next; });
self.finish(ok);
self.client.query(
"UPDATE Users SET valid = $1 WHERE id = $2",
[ok, self.userId],
function(err, result) {
self.finish(ok);
}
);
}
);
}
@ -1286,7 +1292,40 @@ DBReq.UserVerifier.prototype.finish = function(finalResult) {
this.finishAction(finalResult);
};
DBReq.UserGetter = function(userId, finishAction) {
this.userId = userId;
this.finishAction = finishAction;
var self = this;
pg.connect(pgc.url, function(err, client, release) {
self.client = client;
self.release = release;
self.execute();
});
};
DBReq.UserGetter.prototype.execute = function() {
var self = this;
this.client.query(
'SELECT worker_id AS "workerId", valid FROM Users WHERE id = $1',
[self.userId],
function(err, result) {
self.finish(result.rows[0].workerId, result.rows[0].valid);
}
);
};
DBReq.UserGetter.prototype.finish = function(workerId, valid) {
this.release();
this.release = null;
this.client = null;
this.finishAction(workerId, valid);
};
/**
* Try to get a user by id, and creates it if it doesn't exists
@ -1386,4 +1425,8 @@ DBReq.verifyUser = function(id, callback) {
new DBReq.UserVerifier(id, callback);
};
DBReq.getUser = function(id, callback) {
new DBReq.UserGetter(id, callback);
}
module.exports = DBReq;

View File

@ -3,24 +3,23 @@ var vcode = require('../../lib/vcode.js');
module.exports.index = function(req, res) {
db.verifyUser(req.session.userId, function(ok) {
// If not micro-worker
if (req.session.workerId === undefined) {
if (ok) {
res.setHead('Content-Type', 'text/html');
res.locals.vcode = vcode(req.session.workerId, req.session.campaignIp);
}
res.locals.workerId = req.session.workerId;
req.session = null;
res.locals.session = null;
res.setHeader('Content-Type', 'text/html');
res.render('index.jade', res.locals, function(err, result) {
res.render('normal.jade', res.locals, function(err, result) {
res.send(result);
});
return;
}
res.setHeader('Content-Type', 'text/html');
res.render('vcode.jade', res.locals, function(err, result) {
console.log(err);
res.send(result);
});
};

View File

@ -6,8 +6,3 @@ block content
source(src="/static/data/music/thankyou.ogg")
source(src="/static/data/music/thankyou.mp3")
if (vcode !== undefined)
p Your vcode is #{vcode}.
else if (workerId !== undefined)
p You have no vcode because you're bad

View File

@ -0,0 +1,36 @@
extends ../../../views/base.jade
block content
h1 Thank you for everything !
audio(autoplay)
source(src="/static/data/music/thankyou.ogg")
source(src="/static/data/music/thankyou.mp3")
p We are verifying that the experiment was correctly done...
#vcode
script.
function tryVcode() {
var xhr = new XMLHttpRequest();
xhr.open('GET', '/vcode', true);
xhr.onreadystatechange = function (aEvt) {
if (xhr.readyState == 4) {
if(xhr.status == 200) {
changeHtml(xhr.responseText);
}
}
};
xhr.send(null);
}
function changeHtml(vcode) {
if (vcode === 'not ready') {
setTimeout(tryVcode, 1000);
} else if (vcode === 'no vcode') {
$('#vcode').html('Sorry, the experiment has not been correctly done ! You have no vcode.');
} else {
$('#vcode').html('Your vcode is ' + vcode);
}
}
tryVcode();

View File

@ -0,0 +1,39 @@
var db = require('../prototype/dbrequests.js');
var vcode = require('../../lib/vcode.js');
module.exports.index = function(req, res) {
// If not micro-worker
if (req.session.workerId === undefined) {
res.setHeader('Content-Type', 'text/html');
res.send(null);
return;
}
// Else, check that exp was correctly done
db.getUser(req.session.userId, function(workerId, ok) {
res.setHeader('Content-Type', 'text/html');
if (ok === true) {
var code = vcode(req.session.workerId);
res.send(code);
} else if (ok === false) {
res.send('no vcode');
} else {
res.send('not ready');
}
});
};

View File

@ -0,0 +1,3 @@
module.exports = {
'/vcode': 'index',
};

View File

@ -1,16 +1,20 @@
var pg = require('pg');
var pgc = require('../../private.js');
var db = require('../../controllers/prototype/dbrequests.js');
var mail = require('../../lib/mail.js');
var Log = require('../../lib/NodeLog.js');
module.exports.index = function(req, res) {
db.verifyUser(req.session.userId, function() {});
var text = '';
for (var i in req.body) {
text += i + ' : ' + req.body[i] + '\n';
}
pg.connect(pgc.url, function(err, client, release) {
client.query(

View File

@ -42,7 +42,8 @@ CREATE TABLE Users(
age VARCHAR(10),
rating INT,
lasttime INT,
male BOOLEAN
male BOOLEAN,
valid BOOLEAN DEFAULT NULL
);
CREATE TABLE Scene(