tracman-server/config/routes/map.js

67 lines
1.5 KiB
JavaScript
Raw Normal View History

'use strict';
//TODO: Use promises
2017-03-15 02:08:12 -06:00
const router = require('express').Router(),
2016-05-31 21:54:21 -06:00
mw = require('../middleware.js'),
2017-04-01 11:03:05 -06:00
env = require('../env.js'),
User = require('../models.js').user;
// Redirect to real slug
router.get('/', mw.ensureAuth, (req,res)=>{
2017-04-01 11:03:05 -06:00
res.redirect(`/map/${req.user.slug}`);
});
2016-05-31 21:54:21 -06:00
// Show map
router.get('/:slug?', (req,res,next)=>{
2016-05-31 21:54:21 -06:00
var mapuser='', user='', cbc=0;
// Confirm sucessful queries
function checkQuery(err,found) {
2017-04-12 11:41:27 -06:00
if (err){ mw.throwErr(err,req); }
2016-09-08 05:26:12 -06:00
if (found){ return found; }
2016-05-31 21:54:21 -06:00
}
// Call renderMap() on completion
function checkCBC() {
cbc+=1;
if (cbc>1){ renderMap(); }
}
// QUERIES
// Get logged in user -> user
if (req.isAuthenticated()) {
2017-04-12 11:41:27 -06:00
User.findById(req.user, function(err, found) {
2016-05-31 21:54:21 -06:00
user = checkQuery(err,found);
checkCBC();
});
} else { checkCBC(); }
// Get tracked user -> mapuser
if (req.params.slug) {
User.findOne({slug:req.params.slug}, function(err, found) {
mapuser = checkQuery(err,found);
checkCBC();
});
} else { checkCBC(); }
// Show map
function renderMap() {
// GET /map shows logged-in user's map
2016-09-08 05:26:12 -06:00
if (!mapuser && !user) {
2016-05-31 21:54:21 -06:00
res.redirect('/');
} else {
2016-09-09 21:55:53 -06:00
if (user && !mapuser) { mapuser = user; }
2017-04-01 11:03:05 -06:00
res.render('map', {
2016-05-31 21:54:21 -06:00
mapuser: mapuser,
2017-04-01 11:03:05 -06:00
mapApi: env.googleMapsAPI,
2016-05-31 21:54:21 -06:00
user: user,
noFooter: '1',
noHeader: (req.query.noheader)?req.query.noheader.match(/\d/)[0]:'',
disp: (req.query.disp)?req.query.disp.match(/\d/)[0]:'' // 0=map, 1=streetview, 2=both
});
}
}
});
2017-03-17 08:41:38 -06:00
module.exports = router;