Identification
This commit is contained in:
		
							parent
							
								
									9fba3faaf6
								
							
						
					
					
						commit
						eb79b0bc42
					
				
							
								
								
									
										2
									
								
								controllers/prototype/dbrequests.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								controllers/prototype/dbrequests.js
									
									
									
									
										vendored
									
									
								
							@ -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;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								controllers/prototype/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								controllers/prototype/index.js
									
									
									
									
										vendored
									
									
								
							@ -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);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										3
									
								
								controllers/prototype/urls.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								controllers/prototype/urls.js
									
									
									
									
										vendored
									
									
								
							@ -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'
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										22
									
								
								controllers/prototype/views/user_study.jade
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								controllers/prototype/views/user_study.jade
									
									
									
									
									
										Normal 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
 | 
			
		||||
@ -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'
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										27
									
								
								posts/identification/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								posts/identification/index.js
									
									
									
									
									
										Normal 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('/');
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										3
									
								
								posts/identification/urls.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								posts/identification/urls.js
									
									
									
									
									
										Normal file
									
								
							@ -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(
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										40
									
								
								views/base.jade
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								views/base.jade
									
									
									
									
									
										Normal 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
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user