Identification

This commit is contained in:
Thomas FORGIONE 2015-07-23 17:19:53 +02:00
parent 9fba3faaf6
commit eb79b0bc42
22 changed files with 166 additions and 99 deletions

View File

@ -477,7 +477,7 @@ DBReq.UserCreator = function(finishAction) {
DBReq.UserCreator.prototype.execute = function() { DBReq.UserCreator.prototype.execute = function() {
var self = this; var self = this;
this.client.query( this.client.query(
"INSERT INTO users(name) VALUES('anonymous'); SELECT currval('users_id_seq');", "INSERT INTO users DEFAULT VALUES; SELECT currval('users_id_seq');",
[], [],
function(err, result) { function(err, result) {
self.finalResult = result.rows[0].currval; self.finalResult = result.rows[0].currval;

View File

@ -207,3 +207,12 @@ module.exports.viewer = function(req, res, next) {
}); });
}; };
module.exports.userstudy = function(req, res) {
res.setHeader('Content-Type', 'text/html');
res.render('user_study.jade', res.lcals, function(err, result) {
res.send(result);
});
};

View File

@ -9,5 +9,6 @@ module.exports = {
'/prototype/tutorial': 'tutorial', '/prototype/tutorial': 'tutorial',
'/prototype/sponza': 'sponza', '/prototype/sponza': 'sponza',
'/prototype/coin-creator/:scene': 'clicker', '/prototype/coin-creator/:scene': 'clicker',
'/prototype/coin-viewer/:scene': 'viewer' '/prototype/coin-viewer/:scene': 'viewer',
'/user-study': 'userstudy'
}; };

View File

@ -0,0 +1,22 @@
extends ../../../views/base.jade
block extrahead
link(rel="stylesheet", href="/static/css/signin.css")
block content
form.form-signin(method="POST", action='/identification')
h2 Please sign in
label(for='inputId').sr-only Id
input#inputId.form-control(name="inputId", type="text", placeholder='Id', required, autofocus)
label(for='inputAge').sr-only Age
input#inputAge.form-control(name="inputAge", type="number", placeholder='Age', min="18", required)
div(style={'text-align': 'center', 'margin-top':'10px', 'margin-bottom':'10px'})
label.radio-inline
input(type='radio', name='inputGender', value="male")
| Male
label.radio-inline
input(type='radio', name='inputGender', value="female")
| Female
button.btn.btn-lg.btn-primary.btn-block(type='submit') Sign in

View File

@ -31,7 +31,6 @@ module.exports = function(parent){
for (var key in urls) { for (var key in urls) {
app.get(key, obj[urls[key]]); app.get(key, obj[urls[key]]);
Log.debug(' ' + key + ' -> ' + name + '.' + urls[key]); Log.debug(' ' + key + ' -> ' + name + '.' + urls[key]);
} }

View File

@ -30,9 +30,9 @@ module.exports = function(parent){
Log.debug(' ' + name + ':'); Log.debug(' ' + name + ':');
for (var key in urls) { for (var key in urls) {
app.post('/posts' + key, obj[urls[key]]); app.post(key, obj[urls[key]]);
Log.debug(' /posts' + key + ' -> posts.' + name + '.' + urls[key]); Log.debug(' ' + key + ' -> ' + name + '.' + urls[key]);
} }
Log.debug(); Log.debug();

View File

@ -1,3 +1,3 @@
module.exports = { module.exports = {
'/arrow-clicked': 'index' '/posts/arrow-clicked': 'index'
}; };

View File

@ -1,3 +1,3 @@
module.exports = { module.exports = {
'/coin-clicked': 'index' '/posts/coin-clicked': 'index'
}; };

View File

@ -1,3 +1,3 @@
module.exports = { module.exports = {
'/coin-id': 'index' '/posts/coin-id': 'index'
}; };

View File

@ -1,3 +1,3 @@
module.exports = { module.exports = {
'/coin-info': 'index' '/posts/coin-info': 'index'
}; };

View File

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

View File

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

View File

@ -0,0 +1,27 @@
var pg = require('pg');
var secret = require('../../private');
var db = require('../../controllers/prototype/dbrequests.js');
var Log = require('../../lib/NodeLog.js');
module.exports.index = function(req, res) {
db.tryUser(req.session.user_id, function(id) {
req.session.user_id = id;
req.session.save();
pg.connect(secret.url, function(err, client, release) {
client.query(
"UPDATE Users SET worker_id = $1, age = $2, male = $3 WHERE id = $4;",
[req.body.inputId, req.body.inputAge, req.body.inputGender === 'male', req.session.user_id],
function(err, result) {
if (err !== null)
Log.dberror(err + ' in identfication');
release();
}
);
});
res.redirect('/');
});
};

View File

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

View File

@ -1,3 +1,3 @@
module.exports = { module.exports = {
'/keyboard-event': 'index' '/posts/keyboard-event': 'index'
}; };

View File

@ -1,3 +1,3 @@
module.exports = { module.exports = {
'/pointer-locked': 'index' '/posts/pointer-locked': 'index'
}; };

View File

@ -1,3 +1,3 @@
module.exports = { module.exports = {
'/previous-next-clicked': 'index' '/posts/previous-next-clicked': 'index'
}; };

View File

@ -1,3 +1,3 @@
module.exports = { module.exports = {
'/reset-clicked': 'index' '/posts/reset-clicked': 'index'
}; };

View File

@ -1,3 +1,3 @@
module.exports = { module.exports = {
'/switched-lock-option': 'index' '/posts/switched-lock-option': 'index'
}; };

View File

@ -36,7 +36,9 @@ CREATE TYPE CAMERA AS(
-- Base tables -- Base tables
CREATE TABLE Users( CREATE TABLE Users(
id SERIAL PRIMARY KEY, id SERIAL PRIMARY KEY,
name CHAR(50) worker_id varchar(50),
age INTEGER,
male BOOLEAN
); );
CREATE TABLE Scene( CREATE TABLE Scene(

40
views/base.jade Normal file
View File

@ -0,0 +1,40 @@
doctype html
html(lang='fr')
head
meta(charset='utf-8')
meta(name='viewport', content='width=device-width, initial-scale=1')
link(rel="stylesheet", href="/static/bootstrap/css/bootstrap.css")
link(rel="stylesheet", href="/static/css/style.css")
link(rel="stylesheet", href="/static/css/syntax.css")
block extrahead
link(rel="stylesheet", href="http://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic")
link(rel="icon", type="image/x-icon", href="/favicon.ico")
block title
title Hello
body
nav#nav.navbar.navbar-inverse.navbar-fixed-top(role="navigation")
.container
#navbar.navbar-header
button.navbar-toggle(type="button", data-toggle="collapse" data-target=".navbar-collapse")
span.sr-only Toggle navigation
span.icon-bar
span.icon-bar
a.navbar-brand(href="#{urls.index}") 3DUI
block links
section#main-section.container
if alertCookie
.alert.alert-warning.alert-dismissible(role="alert", style={'margin-top':'20px'})
button.close(type="button", data-dismiss="alert", aria-label="Close")
span(aria-hidden="true") ×
<strong>Warning</strong> : this website use cookies !
block content
script(src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js")
script(src="/static/bootstrap/js/bootstrap.min.js")
block js
block extrajs

View File

@ -1,91 +1,55 @@
extends ./base.jade
mixin button_link(href) mixin button_link(href)
form.navbar-form.navbar-left(role="search", action="#{href}", method='GET') form.navbar-form.navbar-left(role="search", action="#{href}", method='GET')
button.btn.btn-default(type="submit") button.btn.btn-default(type="submit")
block block
block links
doctype html div.navbar-collapse.collapse
html(lang='fr') ul.nav.navbar-nav
head li
meta(charset='utf-8') a(href="#{urls.bouncing}") Bouncing cube
meta(name='viewport', content='width=device-width, initial-scale=1') li
link(rel="stylesheet", href="/static/bootstrap/css/bootstrap.css") a(href="#{urls.multisphere}") Multisphere
link(rel="stylesheet", href="/static/css/style.css") li
link(rel="stylesheet", href="/static/css/syntax.css") a.dropdown-toggle(href="#", data-toggle="dropdown", role="button", aria-expanded="false") Prototype
block extrahead span.caret
link(rel="stylesheet", href="http://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic") ul.dropdown-menu(role="menu")
link(rel="icon", type="image/x-icon", href="/favicon.ico") li
block title a(href="#{urls.arrows}") Arrows
title Hello li
a(href="#{urls.reverse}") Reverse arrows
body li
nav#nav.navbar.navbar-inverse.navbar-fixed-top(role="navigation") a(href="#{urls.viewports}") Viewports
.container li.divider
#navbar.navbar-header li
button.navbar-toggle(type="button", data-toggle="collapse" data-target=".navbar-collapse") a(href="#{urls.replay_index}") Replays
span.sr-only Toggle navigation li.divider
span.icon-bar li
span.icon-bar a(href="#{urls.tutorial}") Tutorial
a.navbar-brand(href="#{urls.index}") 3DUI li
a(href="#{urls.stream}") Sphere streaming
div.navbar-collapse.collapse li.divider
ul.nav.navbar-nav if (session && session.user_id)
li li
a(href="#{urls.bouncing}") Bouncing cube +button_link(urls.logout)
li span.glyphicon.glyphicon-log-out(aria-hidden=true, style={"margin-right":"10px"})
a(href="#{urls.multisphere}") Multisphere span Log out
li
a.dropdown-toggle(href="#", data-toggle="dropdown", role="button", aria-expanded="false") Prototype
span.caret
ul.dropdown-menu(role="menu")
li
a(href="#{urls.arrows}") Arrows
li
a(href="#{urls.reverse}") Reverse arrows
li
a(href="#{urls.viewports}") Viewports
li.divider
li
a(href="#{urls.replay_index}") Replays
li.divider
li
a(href="#{urls.tutorial}") Tutorial
li
a(href="#{urls.stream}") Sphere streaming
li.divider
if (session && session.user_id)
li
+button_link(urls.logout)
span.glyphicon.glyphicon-log-out(aria-hidden=true, style={"margin-right":"10px"})
span Log out
ul.nav.navbar-nav.navbar-right ul.nav.navbar-nav.navbar-right
li li
+button_link('https://github.com/tforgione/3dinterface') +button_link('https://github.com/tforgione/3dinterface')
img(src="/static/GitHub-Mark/PNG/GitHub-Mark-32px.png", width="17px", style={align:vertical}) img(src="/static/GitHub-Mark/PNG/GitHub-Mark-32px.png", width="17px", style={align:vertical})
span(style={'margin-left':'5px', align:vertical}) Github Repo span(style={'margin-left':'5px', align:vertical}) Github Repo
li li
+button_link('https://github.com/tforgione/3dinterface/wiki') +button_link('https://github.com/tforgione/3dinterface/wiki')
span.glyphicon.glyphicon-book(aria-hidden=true) span.glyphicon.glyphicon-book(aria-hidden=true)
span(style={'margin-left':'5px'}) Github wiki span(style={'margin-left':'5px'}) Github wiki
li li
+button_link('mailto:thomas.forgione@gmail.com') +button_link('mailto:thomas.forgione@gmail.com')
span.glyphicon.glyphicon-envelope(aria-hidden=true) span.glyphicon.glyphicon-envelope(aria-hidden=true)
span(style={'margin-left':'5px'}) Contact span(style={'margin-left':'5px'}) Contact
section#main-section.container
if alertCookie
.alert.alert-warning.alert-dismissible(role="alert", style={'margin-top':'20px'})
button.close(type="button", data-dismiss="alert", aria-label="Close")
span(aria-hidden="true") &times;
<strong>Warning</strong> : this website use cookies !
block content
script(src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js")
script(src="/static/bootstrap/js/bootstrap.min.js")
block js
block extrajs