tracman-server/config/routes/map.js

80 lines
1.8 KiB
JavaScript

'use strict';
const router = require('express').Router(),
mw = require('../middleware.js'),
env = require('../env/env.js'),
User = require('../models.js').user;
// Redirect to real slug
router.get('/', mw.ensureAuth, (req,res)=>{
if (req.query.new){
res.redirect(`/map/${req.user.slug}?new=1`);
}
else {
res.redirect(`/map/${req.user.slug}`);
}
});
// Demo
router.get('/demo', (req,res,next)=>{
res.render('map', {
active: 'demo',
mapuser: {
_id: 'demo',
name: 'Demo',
last: {
lat: 40.1165853,
lon: -87.5417312,
dir: 249.0,
spd: 19.015747
},
settings: {
marker: 'marker-red',
showAlt: false,
showTemp: false,
showSpeed: false,
showScale: false,
showStreetview: true,
defaultZoom: 13,
defaultMap: 'road',
units: 'standard'
},
},
mapApi: env.googleMapsAPI,
user: req.user,
noFooter: '1',
noHeader: (req.query.noheader)?req.query.noheader.match(/\d/)[0]:0,
disp: (req.query.disp)?req.query.disp.match(/\d/)[0]:2, // 0=map, 1=streetview, 2=both
newuserurl: (req.query.new)? env.url+'/map/'+req.params.slug : ''
});
});
// Show map
router.get('/:slug?', (req,res,next)=>{
User.findOne({slug:req.params.slug})
.then( (mapuser)=>{
if (!mapuser){ next(); } //404
else {
var active = ''; // For header nav
if (req.user && req.user.id===mapuser.id){ active='map'; }
res.render('map', {
active: active,
mapuser: mapuser,
mapApi: env.googleMapsAPI,
user: req.user,
noFooter: '1',
noHeader: (req.query.noheader)?req.query.noheader.match(/\d/)[0]:0,
disp: (req.query.disp)?req.query.disp.match(/\d/)[0]:2, // 0=map, 1=streetview, 2=both
newuserurl: (req.query.new)? env.url+'/map/'+req.params.slug : ''
});
}
}).catch( (err)=>{
mw.throwErr(err,req);
});
});
module.exports = router;