Identification
This commit is contained in:
parent
9fba3faaf6
commit
eb79b0bc42
|
@ -477,7 +477,7 @@ DBReq.UserCreator = function(finishAction) {
|
|||
DBReq.UserCreator.prototype.execute = function() {
|
||||
var self = this;
|
||||
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) {
|
||||
self.finalResult = result.rows[0].currval;
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
|
||||
};
|
||||
|
|
|
@ -9,5 +9,6 @@ module.exports = {
|
|||
'/prototype/tutorial': 'tutorial',
|
||||
'/prototype/sponza': 'sponza',
|
||||
'/prototype/coin-creator/:scene': 'clicker',
|
||||
'/prototype/coin-viewer/:scene': 'viewer'
|
||||
'/prototype/coin-viewer/:scene': 'viewer',
|
||||
'/user-study': 'userstudy'
|
||||
};
|
||||
|
|
|
@ -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
|
|
@ -31,7 +31,6 @@ module.exports = function(parent){
|
|||
|
||||
for (var key in urls) {
|
||||
app.get(key, obj[urls[key]]);
|
||||
|
||||
Log.debug(' ' + key + ' -> ' + name + '.' + urls[key]);
|
||||
|
||||
}
|
||||
|
|
|
@ -30,9 +30,9 @@ module.exports = function(parent){
|
|||
Log.debug(' ' + name + ':');
|
||||
|
||||
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();
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
module.exports = {
|
||||
'/arrow-clicked': 'index'
|
||||
'/posts/arrow-clicked': 'index'
|
||||
};
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
module.exports = {
|
||||
'/coin-clicked': 'index'
|
||||
'/posts/coin-clicked': 'index'
|
||||
};
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
module.exports = {
|
||||
'/coin-id': 'index'
|
||||
'/posts/coin-id': 'index'
|
||||
};
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
module.exports = {
|
||||
'/coin-info': 'index'
|
||||
'/posts/coin-info': 'index'
|
||||
};
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
module.exports = {
|
||||
'/fps': 'index'
|
||||
'/posts/fps': 'index'
|
||||
};
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
module.exports = {
|
||||
'/hovered': 'index'
|
||||
'/posts/hovered': 'index'
|
||||
};
|
||||
|
|
|
@ -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('/');
|
||||
});
|
||||
|
||||
};
|
|
@ -0,0 +1,3 @@
|
|||
module.exports = {
|
||||
'/identification': 'index'
|
||||
};
|
|
@ -1,3 +1,3 @@
|
|||
module.exports = {
|
||||
'/keyboard-event': 'index'
|
||||
'/posts/keyboard-event': 'index'
|
||||
};
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
module.exports = {
|
||||
'/pointer-locked': 'index'
|
||||
'/posts/pointer-locked': 'index'
|
||||
};
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
module.exports = {
|
||||
'/previous-next-clicked': 'index'
|
||||
'/posts/previous-next-clicked': 'index'
|
||||
};
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
module.exports = {
|
||||
'/reset-clicked': 'index'
|
||||
'/posts/reset-clicked': 'index'
|
||||
};
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
module.exports = {
|
||||
'/switched-lock-option': 'index'
|
||||
'/posts/switched-lock-option': 'index'
|
||||
};
|
||||
|
|
|
@ -36,7 +36,9 @@ CREATE TYPE CAMERA AS(
|
|||
-- Base tables
|
||||
CREATE TABLE Users(
|
||||
id SERIAL PRIMARY KEY,
|
||||
name CHAR(50)
|
||||
worker_id varchar(50),
|
||||
age INTEGER,
|
||||
male BOOLEAN
|
||||
);
|
||||
|
||||
CREATE TABLE Scene(
|
||||
|
|
|
@ -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
|
||||
|
128
views/main.jade
128
views/main.jade
|
@ -1,91 +1,55 @@
|
|||
extends ./base.jade
|
||||
|
||||
mixin button_link(href)
|
||||
form.navbar-form.navbar-left(role="search", action="#{href}", method='GET')
|
||||
button.btn.btn-default(type="submit")
|
||||
block
|
||||
|
||||
|
||||
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
|
||||
|
||||
div.navbar-collapse.collapse
|
||||
ul.nav.navbar-nav
|
||||
li
|
||||
a(href="#{urls.bouncing}") Bouncing cube
|
||||
li
|
||||
a(href="#{urls.multisphere}") Multisphere
|
||||
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
|
||||
block links
|
||||
div.navbar-collapse.collapse
|
||||
ul.nav.navbar-nav
|
||||
li
|
||||
a(href="#{urls.bouncing}") Bouncing cube
|
||||
li
|
||||
a(href="#{urls.multisphere}") Multisphere
|
||||
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
|
||||
li
|
||||
+button_link('https://github.com/tforgione/3dinterface')
|
||||
img(src="/static/GitHub-Mark/PNG/GitHub-Mark-32px.png", width="17px", style={align:vertical})
|
||||
span(style={'margin-left':'5px', align:vertical}) Github Repo
|
||||
li
|
||||
+button_link('https://github.com/tforgione/3dinterface/wiki')
|
||||
span.glyphicon.glyphicon-book(aria-hidden=true)
|
||||
span(style={'margin-left':'5px'}) Github wiki
|
||||
ul.nav.navbar-nav.navbar-right
|
||||
li
|
||||
+button_link('https://github.com/tforgione/3dinterface')
|
||||
img(src="/static/GitHub-Mark/PNG/GitHub-Mark-32px.png", width="17px", style={align:vertical})
|
||||
span(style={'margin-left':'5px', align:vertical}) Github Repo
|
||||
li
|
||||
+button_link('https://github.com/tforgione/3dinterface/wiki')
|
||||
span.glyphicon.glyphicon-book(aria-hidden=true)
|
||||
span(style={'margin-left':'5px'}) Github wiki
|
||||
|
||||
li
|
||||
+button_link('mailto:thomas.forgione@gmail.com')
|
||||
span.glyphicon.glyphicon-envelope(aria-hidden=true)
|
||||
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") ×
|
||||
<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
|
||||
li
|
||||
+button_link('mailto:thomas.forgione@gmail.com')
|
||||
span.glyphicon.glyphicon-envelope(aria-hidden=true)
|
||||
span(style={'margin-left':'5px'}) Contact
|
||||
|
||||
|
|
Loading…
Reference in New Issue