Changeset 463 for Dev/trunk/src


Ignore:
Timestamp:
06/23/13 13:59:15 (12 years ago)
Author:
hendrikvanantwerpen
Message:

Working towards Heroku deployment, restructuring for that and to allow coffee builds.

Location:
Dev/trunk/src
Files:
5 added
3 deleted
7 edited
1 moved

Legend:

Unmodified
Added
Removed
  • Dev/trunk/src/client/client.profile.js

    r453 r463  
    22    return {
    33        basePath: '.',
    4         releaseDir: '../../build',
    54        releaseName: 'client',
    65        action: 'release',
  • Dev/trunk/src/client/qed-client/index.js

    r443 r463  
    11define([
    2     'dojo/_base/array',
    3     'dojo/parser',
    4     './app/Content',
    5     './app/Page',
    6     './app/Router',
    7     './ui/MainMenu',
    8     './routes',
    9     './store',
    10     'dojo/domReady!',
    11     './stddeps'
    12 ],function(array,parser,Content,Page,Router,MainMenu,routes,store) {
     2    "./app/Content",
     3    "./app/Page",
     4    "./app/Router",
     5    "./routes",
     6    "./store",
     7    "./store/request",
     8    "./ui/MainMenu",
     9    "dojo/_base/array",
     10    "dojo/parser",
     11    "dojo/request/registry",
     12    "./stddeps",
     13    "dojo/domReady!"
     14], function(Content, Page, Router, routes, store, request, MainMenu, array, parser, registry) {
     15
     16    registry.register(/.*/,request);
     17   
    1318    parser.parse();
    14 
    1519    store.info()
    1620    .then(function(){
  • Dev/trunk/src/client/qed-client/pages/surveyRun.js

    r457 r463  
    7272            var surveyRun = this.surveyRunWidget.get('value');
    7373            if ( surveyRun.mode === "open" ) {
    74                 this.runURLNode.innerHTML = this._link(this._getGeneralURL(store.getIdentity(this.surveyRun)));
     74                this.runURLNode.innerHTML =
     75                    this._link(this._getGeneralURL(store.getIdentity(this.surveyRun)));
    7576            } else {
    76                 this.runURLNode.innerHTML = "No general URL. Add individual respondents below.";
     77                this.runURLNode.innerHTML =
     78                    "No general URL. Add individual respondents below.";
    7779            }
    7880        },
     
    102104                });
    103105            }
    104             event.stop(evt);
     106            if ( evt ) { event.stop(evt); }
    105107            return false;
    106108        },
    107109        _onDiscard: function(evt) {
    108110            Router.go('/surveys');
     111            if ( evt ) { event.stop(evt); }
     112            return false;
     113        },
     114        _onExport: function(evt) {
     115            if ( evt ) { event.stop(evt); }
     116            return false;
    109117        }
    110118    });
  • Dev/trunk/src/client/qed-client/pages/templates/response.html

    r461 r463  
    11<div class="blue">
    22
    3     <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'">
     3    <div data-dojo-type="dijit/layout/ContentPane"
     4         data-dojo-props="region:'top'">
    45        <h2>
    56            <span class="rftIcon rftIconSurvey"></span>
     
    910    </div>
    1011   
    11     <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'" data-dojo-attach-point="content">
    12         <div name="answers" data-dojo-type="../model/widgets/SurveyRenderWidget" data-dojo-attach-point="surveyWidget"></div>
     12    <div data-dojo-type="dijit/layout/ContentPane"
     13         data-dojo-props="region:'center'" data-dojo-attach-point="content">
     14        <div name="answers"
     15             data-dojo-type="../model/widgets/SurveyRenderWidget"
     16             data-dojo-attach-point="surveyWidget"></div>
    1317    </div>
    1418   
    1519
    16     <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'bottom'">
     20    <div data-dojo-type="dijit/layout/ContentPane"
     21         data-dojo-props="region:'bottom'">
    1722        <button data-dojo-type="dijit/form/Button"
    1823                type="submit"
  • Dev/trunk/src/client/qed-client/pages/templates/surveyRun.html

    r457 r463  
    11<div class="blue">
    22
    3     <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'">
     3    <div data-dojo-type="dijit/layout/ContentPane"
     4         data-dojo-props="region:'top'">
    45        <h2>
    56            <span class="rftIcon rftIconSurvey"></span>
    6             <span class="headerText" data-dojo-attach-point="titleNode">SurveyRun Editor</span>
     7            <span class="headerText"
     8                  data-dojo-attach-point="titleNode">SurveyRun Editor</span>
    79        </h2>
    810    </div>
    911   
    10     <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'">
     12    <div data-dojo-type="dijit/layout/ContentPane"
     13         data-dojo-props="region:'center'">
    1114        <fieldset class="qedFieldset">
    1215            <legend>Survey</legend>
    13             <div data-dojo-type="../model/widgets/SurveySummary" data-dojo-attach-point="surveySummaryWidget"></div>
     16            <div data-dojo-type="../model/widgets/SurveySummary"
     17                 data-dojo-attach-point="surveySummaryWidget"></div>
    1418        </fieldset>
    1519        <fieldset class="qedFieldset">
    1620            <legend>Run Details</legend>
    17             <div data-dojo-type="../model/widgets/SurveyRunWidget" data-dojo-attach-point="surveyRunWidget"></div>
     21            <div data-dojo-type="../model/widgets/SurveyRunWidget"
     22                 data-dojo-attach-point="surveyRunWidget"></div>
    1823        </fieldset>
    1924        <fieldset class="qedFieldset">
    2025            <legend>Response Details</legend>
    21             <div><div class="qedLabel">General URL</div><div class="qedField" data-dojo-attach-point="runURLNode" style="overflow: ellipsis"></div></div>
    22             <div><div class="qedLabel">Responses <span data-dojo-attach-point="responsesCountNode"></span></div><div class="qedField qedFill" data-dojo-attach-point="responsesNode"></div></div>
     26            <div>
     27                <div class="qedLabel">General URL</div>
     28                <div class="qedField"
     29                     data-dojo-attach-point="runURLNode"
     30                     style="overflow: ellipsis"></div>
     31            </div>
     32            <div>
     33                <div class="qedLabel">Response count</div>
     34                <div data-dojo-attach-point="responsesCountNode"></div>
     35            </div>
     36            <div>
     37                <div class="qedLabel">In progress count</div>
     38                <div data-dojo-attach-point="inprogressCountNode"></div>
     39            </div>
     40            <div>
     41                <div class="qedLabel">Responses (including partial)</div>
     42                <div class="qedField qedFill"
     43                     data-dojo-attach-point="responsesNode"></div>
     44            </div>
     45            <div>
     46                <div class="qedLabel">Export results</div>
     47                <button data-dojo-type="dijit/form/Button"
     48                        class="qedField blue"
     49                        data-dojo-props="baseClass: 'rftBlockButton', iconClass: 'rftIcon rftIconSave'"
     50                        data-dojo-attach-event="onClick:_onExport">To CSV</button>
     51            </div>
    2352        </fieldset>
    2453    </div>
    2554   
    26     <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region: 'bottom'" style="height: 40px;">
     55    <div data-dojo-type="dijit/layout/ContentPane"
     56         data-dojo-props="region: 'bottom'" style="height: 40px;">
    2757        <button data-dojo-type="dijit/form/Button"
    2858                class="blue"
  • Dev/trunk/src/client/qed-client/store/CouchStore.js

    r461 r463  
    55    "dojo/_base/json",
    66    "dojo/_base/lang",
    7     "dojo/request",
     7    "dojo/request/registry",
    88    "dojo/store/util/QueryResults"
    99], function(Deferred, array, declare, json, lang, request, QueryResults) {
  • Dev/trunk/src/package.json

    r458 r463  
    11{
    2   "name": "qed-full",
     2  "name": "qed-server",
    33  "version": "0.0.1",
    4   "description": "QED Full",
    5   "devDependencies": {
    6     "grunt": "~0.4.0",
    7     "grunt-contrib-copy": "~0.4.1",
    8     "grunt-contrib-jshint": "~0.2.0",
    9     "grunt-contrib-less": "~0.5.0",
    10     "grunt-dojo": "~0.2.3",
    11     "grunt-exec": "~0.4.1",
    12     "grunt-htmlhint": "~0.4.0",
    13     "grunt-contrib-clean": "~0.4.1",
    14     "grunt-zip": "~0.9.0",
    15     "grunt-curl": "~1.1.0"
     4  "description": "QED Server",
     5  "dependencies": {
     6    "simple-http-proxy": "~0.5.2",
     7    "express": "~3.2.3",
     8    "underscore": "~1.4.4",
     9    "passport": "~0.1.17",
     10    "passport-local": "~0.1.6"
    1611  },
    17   "dependencies": {
    18     "underscore": "~1.4.4",
    19     "q": "~0.9.4",
    20     "q-io": "~1.7.0"
     12  "engines": {
     13    "node": "0.10.x",
     14    "npm": "1.2.x"
    2115  }
    2216}
  • Dev/trunk/src/server/app.js

    r462 r463  
    11var express = require("express");
     2var passport = require("passport"),
     3    passportLocal = require("passport-local");
    24var fs = require("fs");
    3 var https = require("https");
    4 var os = require("os");
    55var path = require("path");
    66var proxy = require("simple-http-proxy");
    77var _ = require("underscore");
    88
    9 function clientPath(relativePath) {
    10     return path.resolve('../client/'+relativePath);
     9function assertSetting(name, settings, validate) {
     10    if ( typeof settings[name] === 'undefined' ) {
     11        throw new Error("Required setting '"+name+"' undefined.");
     12    }
     13    if ( _.isFunction(validate) && !validate(settings[name]) ) {
     14        throw new Error("Setting '"+name+"' with value '"+settings[name]+"' is invalid.");
     15    }
    1116}
    1217
    13 var httpsOptions = {
    14     key: fs.readFileSync(path.resolve('../qed-server.key')),
    15     cert: fs.readFileSync(path.resolve('../qed-server.pem'))
     18exports.App = function(settings) {
     19
     20    assertSetting("couchDbURL", settings, _.isString);
     21   
     22    function clientPath(relativePath) {
     23        return path.resolve(__dirname+'/../client/'+relativePath);
     24    }
     25
     26    passport.use(new passportLocal.Strategy(function(username, password, done){
     27        if ( username === "igor" && password === "mayer" ) {
     28            done(null,{ username: "igor" });
     29        } else {
     30            done(null,false,{ message: 'Invalid credentials.' });
     31        }
     32    }));
     33
     34    var app = express();
     35    app.use(express.logger());
     36    app.use(express.compress());
     37    app.use(express.favicon());
     38
     39    app.use(express.cookieParser());
     40    app.use(express.bodyParser());
     41    app.use(express.session({ secret: "quasi experimental design" }));
     42
     43    // initialize passport
     44    app.use(passport.initialize());
     45    app.use(passport.session());
     46
     47    // static resources
     48    app.get('/', function(request, response){
     49        response.sendfile(clientPath('index.html'));
     50    });
     51    app.get('/*.html', function(request, response) {
     52        response.sendfile(clientPath(request.path));
     53    });
     54    _.each(['/dojo', '/dijit', '/dojox', '/qed', '/qed-client'], function(dir){
     55        app.use(dir, express.static(clientPath(dir)));
     56    });
     57
     58    // url to login (might work on others as well?)
     59    // you should then have a session to work with
     60    app.post('/api/login', passport.authenticate('local'));
     61
     62    // forward to couch
     63    app.use('/data/couch', passport.authenticate('local'), proxy(settings.couchDbURL));
     64
     65    return app;
     66
    1667};
    17 
    18 var app = express();
    19 app.use(express.logger());
    20 app.use(express.compress());
    21 app.use(express.favicon());
    22 app.get('/', function(request, response){
    23     response.sendfile(clientPath('index.html'));
    24 });
    25 app.get('/*.html', function(request, response) {
    26     response.sendfile(clientPath(request.path));
    27 });
    28 _.each(['/dojo', '/dijit', '/dojox', '/qed', '/qed-client'], function(dir){
    29     app.use(dir, express.static(clientPath(dir)));
    30 });
    31 app.use('/data/couch', proxy('http://localhost:5984/qed'));
    32 
    33 var server = https.createServer(httpsOptions, app);
    34 server.listen(8443);
    35 
    36 console.log(
    37     "Listening on " +
    38     _.chain(os.networkInterfaces())
    39      .map(function(value,key){ return value; })
    40      .flatten()
    41      .filter(function(intf){ return intf.family === "IPv4" && !intf.internal; })
    42      .reduce(function(urls, intf){ return urls+', http://'+intf.address+':8443/'; }, "http://127.0.0.1:8443/")
    43      .value() + ".");
Note: See TracChangeset for help on using the changeset viewer.