client/data/simple-persist.js
author rougeronj
Tue, 22 Sep 2015 15:14:10 +0200
changeset 543 5f7bebdcfc0d
parent 356 763c925e7a9c
child 647 eaaa1efce396
permissions -rw-r--r--
Improve the way we init the view. The data loader send a "loaded" event, hooked by the scene.py and initializing the backbone.history and the view. We don't use redraw_active in save-once and full-json, because it was making the view initialization dependent of these file which are externals. Small fix to hide the "set saved view" button when there is only one view.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
295
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
// Simple persist middle ware
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
var path = require('path'),
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
    fs = require('fs');
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
var jsonFile = path.join(__dirname,"example-cinema.json");
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
var resetFile = path.join(__dirname,"example-cinema-src.json");
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
exports.middleware = function(req, res, next) {
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
    'use strict';
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
    if (req.url !== '/simple-persist') {
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
      return next();
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
    }
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
    res.setHeader('Content-Type', 'application/json; charset=utf-8');
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
    res.statusCode = 200;
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
355
fa39654e7084 Add Post option to simple persist to be able to simulate "Save Once" which uses Post request
rougeronj
parents: 295
diff changeset
    18
    if(req.method === "PUT" || req.method === "POST") {
295
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
      req.pipe(fs.createWriteStream(jsonFile));
356
763c925e7a9c Add 3 second before sending back the result to simulate some latency
rougeronj
parents: 355
diff changeset
    20
      setTimeout(function () {
763c925e7a9c Add 3 second before sending back the result to simulate some latency
rougeronj
parents: 355
diff changeset
    21
    	  res.end(JSON.stringify({result: "OK"}));
763c925e7a9c Add 3 second before sending back the result to simulate some latency
rougeronj
parents: 355
diff changeset
    22
      }, 3000);
295
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
    }
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
    else {
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
      var params = require('url').parse(req.url),
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
          readStream;
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
      if('reset' in params && params.reset) {
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
        readStream = fs.createReadStream(resetFile);
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
        readStream.pipe(fs.createWriteStream(jsonFile));
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
      }
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
      else {
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
        readStream = fs.createReadStream(jsonFile);
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
        readStream.on('error',function() {
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
          var srcFile = fs.createReadStream(resetFile);
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
          srcFile.pipe(fs.createWriteStream(jsonFile));
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
          srcFile.pipe(res);
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
        });
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
      }
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
      readStream.pipe(res);
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
    }
bcac9ea07d04 add simple-persist in grunt connect
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
};