- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
function report1(req, res, next, type) {
if (!req.query || !req.query.name) {
var ct = "Income statement";
if (type == 'pieflow')
ct = 'Pie flow chart';
else if (type == 'barflow')
ct = 'Bar flow chart';
res.redirect(req.url + "?name=" + ctx.i18n(req.session.apiToken, 'cash', ct));
return;
}
var pid = "reports-" + type + "-" + req.query.name;
var vtabs,data,reportSettings;
async.waterfall([
function (cb1) {
async.series([
function(cb2) {
webapp.guessTab(req, {pid: pid, name:req.query.name, url:req.url}, cb2);
},
function(cb2) {
webapp.getTabSettings(req.session.apiToken, pid, cb2);
}
],
function (err, results) {
cb1(null, results[0], results[1]);
});
},
function (vtabs_, reportSettings_, cb1) {
vtabs = vtabs_;
reportSettings = reportSettings_;
if (_.isEmpty(reportSettings) || !reportSettings.version || (reportSettings.version != reportSettingsVersion)){
reportSettings = getDefaultSettings(req.query.name);
webapp.saveTabSettings(req.session.apiToken, pid, reportSettings, function(err){
if (err) console.log(err);
});
}
calculateGraphData(req.session.apiToken,type,reportSettings,cb1);
},
function(data_,cb1){
data = data_;
cb1()
},
function(){
data.tabs = vtabs;
data.pmenu = {name:req.query.name,
items:[{name:webapp.ctx.i18n(req.session.apiToken, 'cash','Page settings'),id:"settings",href:"#"}]}
data.reportSettings = reportSettings;
res.render(__dirname+"/../res/views/report", data);
}],
next
);
};
Прислали мне, значит, вступительное задание на должность разработчика node.js, а там гигантский проект, в который нужно дописать модуль, который выглядит весь так же ужасно, как эта функция. Долго порывался написать, что это самый ужасный код, который я когда-либо видел. http://pastebin.com/4NYccg3Y вот ссылка на весь файл, кому интересно, весь проект палить не буду, но скажу, что он большой и ужасный.