diff --git a/README.md b/README.md index e12dc52..10b176f 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,7 @@ La configuration de variables d'environnement propres au Monitor est nécessaire | GPAO_API_URL | Non | localhost | Nom de la machine qui héberge l'API | | GPAO_API_PORT | Non | 8080 | Port de l'API vu par le monitor | | GPAO_API_PROTOCOL | Non | http | Protocole de l'API vu par le monitor | +| GPAO_ACTIVATE_MAP | Non | false | Boolean qui active ou non le volet cartographique de la GPAO sur le monitor | ## Pour les développeurs diff --git a/middlewares/job.js b/middlewares/job.js index 4df8f57..3259986 100644 --- a/middlewares/job.js +++ b/middlewares/job.js @@ -46,7 +46,8 @@ async function getJobs(req, res, next) { title: 'Action', orderable: false, data: null, - defaultContent: '', + defaultContent: '' + + ' ', }, ]); diff --git a/package.json b/package.json index 1a67173..5f6e10c 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,8 @@ "ejs": "^3.0.1", "express": "^4.6.1", "express-validator": "^6.6.1", + "leaflet": "^1.9.4", + "leaflet-geoserver-request": "^1.3.0", "requests": "^0.3.0" }, "devDependencies": { diff --git a/routes/pages/index.js b/routes/pages/index.js index cc78278..490d1fd 100644 --- a/routes/pages/index.js +++ b/routes/pages/index.js @@ -17,6 +17,7 @@ router.get('/', topBar.getInfo, projects.getProjectStatus, (req, res) => { base: req.app.get('baseUrl'), api: req.app.get('apiUrl'), version: req.app.get('version'), + activateMap: req.app.get('activateMap'), }); }); @@ -32,6 +33,7 @@ router.get('/job/:id', topBar.getInfo, jobs.getJob, dependencies.getJobDependenc base: req.app.get('baseUrl'), api: req.app.get('apiUrl'), version: req.app.get('version'), + activateMap: req.app.get('activateMap'), }); }); @@ -49,6 +51,7 @@ router.get('/project/:id', topBar.getInfo, projects.getProject, projects.getJobs base: req.app.get('baseUrl'), api: req.app.get('apiUrl'), version: req.app.get('version'), + activateMap: req.app.get('activateMap'), }); }); @@ -64,6 +67,7 @@ router.get('/jobs', topBar.getInfo, jobs.getJobs, projects.getProjects, (req, re base: req.app.get('baseUrl'), api: req.app.get('apiUrl'), version: req.app.get('version'), + activateMap: req.app.get('activateMap'), }); }); @@ -77,6 +81,7 @@ router.get('/projects', topBar.getInfo, projects.getProjects, (req, res) => { base: req.app.get('baseUrl'), api: req.app.get('apiUrl'), version: req.app.get('version'), + activateMap: req.app.get('activateMap'), }); }); @@ -92,6 +97,7 @@ router.get('/sessions', topBar.getInfo, sessions.getSessions, hosts.getHosts, (r base: req.app.get('baseUrl'), api: req.app.get('apiUrl'), version: req.app.get('version'), + activateMap: req.app.get('activateMap'), }); }); @@ -105,6 +111,21 @@ router.get('/hosts', topBar.getInfo, hosts.getHosts, (req, res) => { base: req.app.get('baseUrl'), api: req.app.get('apiUrl'), version: req.app.get('version'), + activateMap: req.app.get('activateMap'), + }); +}); + +// map page +router.get('/map', topBar.getInfo, projects.getProjects, (req, res) => { + res.render('pages/map', { + topBar: req.topBar, + projects: req.projects, + jobFilter: req.query.jobFilter, + base: req.app.get('baseUrl'), + api: req.app.get('apiUrl'), + server: req.app.get('server'), + version: req.app.get('version'), + activateMap: req.app.get('activateMap'), }); }); diff --git a/serveur.js b/serveur.js index 0208bd9..815db79 100644 --- a/serveur.js +++ b/serveur.js @@ -19,6 +19,8 @@ const API_URL = process.env.GPAO_API_URL || 'localhost'; // accès api via backe const API_PROTOCOL = process.env.GPAO_API_PROTOCOL || 'http'; const API_PORT = process.env.GPAO_API_PORT || 8080; +const ACTIVATE_MAP = process.env.GPAO_ACTIVATE_MAP || false; + // Dans le cas d'un déploiement de la stack via docker les variables d'environnement: // BASE_URL, API, API_PORT, API_PROTOCOL // sont surchargées dans le docker-compose.yml. @@ -26,6 +28,7 @@ const API_PORT = process.env.GPAO_API_PORT || 8080; app.set('baseUrl', `${MONITOR_BASE_URL}`); app.set('apiUrl', `${API_PROTOCOL}://${API_URL}:${API_PORT}`); app.set('version', process.env.npm_package_version); +app.set('activateMap', `${ACTIVATE_MAP}`); // set the view engine to ejs app.set('view engine', 'ejs'); @@ -34,6 +37,8 @@ app.use('/vendor', express.static(`${__dirname}/resources/vendor`)); app.use('/css', express.static(`${__dirname}/resources/css`)); app.use('/js', express.static(`${__dirname}/resources/js`)); app.use('/chart.js', express.static(`${__dirname}/node_modules/chart.js`)); +app.use('/leaflet', express.static(`${__dirname}/node_modules/leaflet`)); +app.use('/leaflet-geoserver-request', express.static(`${__dirname}/node_modules/leaflet-geoserver-request`)); app.use('/images', express.static(`${__dirname}/resources/images`)); // use res.render to load up an ejs view file diff --git a/start.sh b/start.sh index aedf3a3..5cf7e1a 100755 --- a/start.sh +++ b/start.sh @@ -1,5 +1,6 @@ -export GPAO_API_URL=localhost -export GPAO_API_PORT=8080 +export URL_API=localhost +export API_PORT=8080 +export GPAO_ACTIVATE_MAP=true if [ "$(docker ps -aq -f name=monitor-gpao)" ]; then echo "Suppression du container monitor-gpao" diff --git a/views/pages/map.ejs b/views/pages/map.ejs new file mode 100644 index 0000000..be50814 --- /dev/null +++ b/views/pages/map.ejs @@ -0,0 +1,183 @@ + + + +
+ +