Skip to content

Commit 59382e2

Browse files
author
T_S_V
committed
Started migration to Creator V2
1 parent f141b80 commit 59382e2

31 files changed

+9364
-1627
lines changed

demo-surveys.js

+818-803
Large diffs are not rendered by default.

index.js

+27-22
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ var bodyParser = require("body-parser");
33
var session = require("express-session");
44
var dbadapter = require("./dbadapter");
55
var inmemorydbadapter = require("./inmemorydbadapter");
6+
var apiBaseAddress = "/api";
67

78
var app = express();
89
app.use(
@@ -27,74 +28,78 @@ function sendJsonResult(res, obj) {
2728
res.send(JSON.stringify(obj));
2829
}
2930

30-
app.get("/getActive", function(req, res) {
31+
app.get(apiBaseAddress + "/getActive", function (req, res) {
3132
var db = getDBAdapter(req);
32-
db.getSurveys(function(result) {
33+
db.getSurveys(function (result) {
3334
sendJsonResult(res, result);
3435
});
3536
});
3637

37-
app.get("/getSurvey", function(req, res) {
38+
app.get(apiBaseAddress + "/getSurvey", function (req, res) {
3839
var db = getDBAdapter(req);
3940
var surveyId = req.query["surveyId"];
40-
db.getSurvey(surveyId, function(result) {
41+
db.getSurvey(surveyId, function (result) {
4142
sendJsonResult(res, result);
4243
});
4344
});
4445

45-
app.get("/changeName", function(req, res) {
46+
app.get(apiBaseAddress + "/changeName", function (req, res) {
4647
var db = getDBAdapter(req);
4748
var id = req.query["id"];
4849
var name = req.query["name"];
49-
db.changeName(id, name, function(result) {
50+
db.changeName(id, name, function (result) {
5051
sendJsonResult(res, result);
5152
});
5253
});
5354

54-
app.get("/create", function(req, res) {
55+
app.get(apiBaseAddress + "/create", function (req, res) {
5556
var db = getDBAdapter(req);
5657
var name = req.query["name"];
57-
db.addSurvey(name, function(result) {
58-
sendJsonResult(res, { Name: result.name, Id: result.name });
58+
db.addSurvey(name, function (survey) {
59+
sendJsonResult(res, survey);
5960
});
6061
});
6162

62-
app.post("/changeJson", function(req, res) {
63+
app.post(apiBaseAddress + "/changeJson", function (req, res) {
6364
var db = getDBAdapter(req);
64-
var id = req.body.Id;
65-
var json = req.body.Json;
66-
db.storeSurvey(id, json, function(result) {
67-
sendJsonResult(res, result.json);
65+
var id = req.body.id;
66+
var json = req.body.json;
67+
db.storeSurvey(id, null, json, function (survey) {
68+
sendJsonResult(res, survey);
6869
});
6970
});
7071

71-
app.post("/post", function(req, res) {
72+
app.post(apiBaseAddress + "/post", function (req, res) {
7273
var db = getDBAdapter(req);
7374
var postId = req.body.postId;
7475
var surveyResult = req.body.surveyResult;
75-
db.postResults(postId, surveyResult, function(result) {
76+
db.postResults(postId, surveyResult, function (result) {
7677
sendJsonResult(res, result.json);
7778
});
7879
});
7980

80-
app.get("/delete", function(req, res) {
81+
app.get(apiBaseAddress + "/delete", function (req, res) {
8182
var db = getDBAdapter(req);
82-
var surveyId = req.query["id"];
83-
db.deleteSurvey(surveyId, function(result) {
83+
var id = req.query["id"];
84+
db.deleteSurvey(id, function (result) {
8485
sendJsonResult(res, {});
8586
});
8687
});
8788

88-
app.get("/results", function(req, res) {
89+
app.get(apiBaseAddress + "/results", function (req, res) {
8990
var db = getDBAdapter(req);
9091
var postId = req.query["postId"];
91-
db.getResults(postId, function(result) {
92+
db.getResults(postId, function (result) {
9293
sendJsonResult(res, result);
9394
});
9495
});
9596

97+
app.get(["/", "/about", "/run/*", "/edit/*", "/results/*"], function (req, res, next) {
98+
res.sendFile("index.html", { root: __dirname + "/public" });
99+
});
100+
96101
app.use(express.static(__dirname + "/public"));
97102

98-
app.listen(process.env.PORT || 3000, function() {
103+
app.listen(process.env.PORT || 3000, function () {
99104
console.log("Listening!");
100105
});

inmemorydbadapter.js

+54-58
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
var demoData = require("./demo-surveys");
22

3+
var currentId = demoData.surveys.length + 1;
4+
35
function InMemoryDBAdapter(session) {
46
function getTable(tableName) {
57
var table = session[tableName];
@@ -11,18 +13,24 @@ function InMemoryDBAdapter(session) {
1113
}
1214

1315
function getObjectsFromStorage(tableName, callback) {
14-
var objects = {};
16+
// var objects = {};
1517
var table = getTable(tableName);
16-
table.forEach(function(item) {
17-
objects[item.name] = item;
18-
});
19-
callback(objects);
18+
callback(table);
19+
// table.forEach(function(item) {
20+
// objects[item.name] = item;
21+
// });
22+
// callback(objects);
23+
}
24+
25+
function findById(objects, id) {
26+
return objects.filter(function (o) { return o.id === id; })[0];
2027
}
2128

2229
function addSurvey(name, callback) {
2330
var table = getTable("surveys");
2431
var newObj = {
25-
name: name,
32+
id: '' + currentId++,
33+
name: name || demoData.defaultName + " " + currentId,
2634
json: "{}"
2735
};
2836
table.push(newObj);
@@ -31,91 +39,79 @@ function InMemoryDBAdapter(session) {
3139

3240
function postResults(postId, json, callback) {
3341
var table = getTable("results");
34-
var newObj = {
35-
postid: postId,
36-
json: json
37-
};
38-
table.push(newObj);
39-
callback(newObj);
42+
var results = findById(table, postId);
43+
if (!results) {
44+
results = {
45+
id: postId,
46+
data: []
47+
}
48+
table.push(results);
49+
}
50+
results.data.push(json);
51+
callback({});
4052
}
4153

4254
function getResults(postId, callback) {
4355
var table = getTable("results");
44-
var results = table
45-
.filter(function(item) {
46-
return item.postid === postId;
47-
})
48-
.map(function(item) {
49-
return item.json;
50-
});
56+
var results = findById(table, postId);
5157
callback(results);
5258
}
5359

5460
function deleteSurvey(surveyId, callback) {
5561
var table = getTable("surveys");
56-
var result = table.filter(function(item) {
57-
return item.name === surveyId;
58-
})[0];
59-
table.splice(table.indexOf(result), 1);
60-
callback(result);
62+
var survey = findById(table, surveyId);
63+
table.splice(table.indexOf(survey), 1);
64+
callback(survey);
6165
}
6266

63-
function storeSurvey(id, json, callback) {
67+
function storeSurvey(id, name, json, callback) {
6468
var table = getTable("surveys");
65-
var result = table.filter(function(item) {
66-
return item.name === id;
67-
})[0];
68-
if (!!result) {
69-
result.json = json;
69+
var survey = findById(table, id);
70+
if (!!survey) {
71+
survey.json = json;
7072
} else {
71-
result = {
72-
name: id,
73+
survey = {
74+
id: id,
75+
name: name || id,
7376
json: json
7477
};
75-
table.push(result);
78+
table.push(survey);
7679
}
77-
callback && callback(result);
80+
callback && callback(survey);
7881
}
7982

8083
function changeName(id, name, callback) {
8184
var table = getTable("surveys");
82-
var result = table.filter(function(item) {
83-
return item.name === id;
84-
})[0];
85-
if (!!result) {
86-
result.name = name;
85+
var survey = findById(table, id);
86+
if (!!survey) {
87+
survey.name = name;
8788
}
88-
callback && callback(result);
89+
callback && callback(survey);
8990
}
9091

9192
function getSurveys(callback) {
92-
getObjectsFromStorage("surveys", function(objects) {
93-
if (Object.keys(objects).length > 0) {
93+
getObjectsFromStorage("surveys", function (objects) {
94+
if (objects.length > 0) {
9495
callback(objects);
9596
} else {
96-
var table = getTable("results");
97-
Object.keys(demoData.surveys).forEach(function(surveyId) {
98-
storeSurvey(surveyId, JSON.stringify(demoData.surveys[surveyId]));
99-
table.push.apply(
100-
table,
101-
demoData.results[surveyId].map(function(item) {
102-
return {
103-
postid: surveyId,
104-
json: item
105-
};
106-
})
107-
);
108-
});
97+
var surveys = getTable("surveys");
98+
demoData.surveys.forEach(function (survey) {
99+
surveys.push(JSON.parse(JSON.stringify(survey)));
100+
})
101+
var results = getTable("results");
102+
demoData.results.forEach(function (result) {
103+
results.push(JSON.parse(JSON.stringify(result)));
104+
})
109105
getObjectsFromStorage("surveys", callback);
110106
}
111107
});
112108
}
113109

114110
return {
115111
addSurvey: addSurvey,
116-
getSurvey: function(surveyId, callback) {
117-
getSurveys(function(result) {
118-
callback(JSON.parse(result[surveyId].json));
112+
getSurvey: function (surveyId, callback) {
113+
getSurveys(function (surveys) {
114+
callback(findById(surveys, surveyId));
119115
});
120116
},
121117
storeSurvey: storeSurvey,

0 commit comments

Comments
 (0)