@igea/oac_frontend 1.0.5 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@igea/oac_frontend",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "Frontend service for the OAC project",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -23,6 +23,7 @@
23
23
  "axios": "1.10.0",
24
24
  "express": "5.1.0",
25
25
  "get-port": "7.1.0",
26
+ "i18n": "^0.15.1",
26
27
  "twig": "1.17.1"
27
28
  },
28
29
  "devDependencies": {
package/src/index.js CHANGED
@@ -3,42 +3,71 @@ const express = require("express");
3
3
  const axios = require("axios");
4
4
  const getPort = require('get-port');
5
5
  const path = require("path");
6
+ const i18n = require('i18n');
7
+
8
+
9
+ i18n.configure({
10
+ locales: ['en', 'it'],
11
+ defaultLocale: 'it',
12
+ directory: path.join(__dirname, 'locales'),
13
+ queryParameter: 'lang',
14
+ autoReload: true,
15
+ updateFiles: false, // don't auto-create keys
16
+ api: {
17
+ '__': 't'
18
+ }
19
+ });
20
+
6
21
  const serviceName = "frontend"
7
22
 
8
23
  const app = express();
24
+ let newPort = null
9
25
 
10
- app.use(express.static(path.join(__dirname, 'public')));
26
+ app.use(i18n.init);
27
+ app.use(`/${serviceName}`, express.static(path.join(__dirname, 'public')));
11
28
  app.use(express.json());
12
29
 
13
30
  app.set('view engine', 'twig');
14
31
  app.set('views', path.join(__dirname, 'views'));
15
32
 
33
+ app.use((req, res, next) => {
34
+ res.locals.t = req.t;
35
+ next();
36
+ });
37
+
38
+ const register = async function(){
39
+ try {
40
+ console.log(`Registering ${serviceName}...`);
41
+ await axios.post(config.url_register, {
42
+ name: serviceName,
43
+ host: "localhost",
44
+ port: newPort
45
+ });
46
+ console.log(`Registered ${serviceName}`);
47
+ } catch (err) {
48
+ console.error(`Failed to register ${serviceName}: ${err.message}`);
49
+ setTimeout(register, 10*1000)
50
+ }
51
+ }
52
+
16
53
  getPort.default({
17
54
  port: getPort.portNumbers(config.port_range.min, config.port_range.max) }
18
- ).then((newPort)=>{
19
-
55
+ ).then((port)=>{
56
+ newPort = port
57
+
20
58
  // Defining routers
21
59
  const healthRouter = require('./controllers/health.js');
22
- app.use('/health', healthRouter);
60
+ app.use(`/${serviceName}/health`, healthRouter);
23
61
 
24
62
 
25
- app.get('/', (req, res) => {
26
- res.render('base', { title: 'Home Page', message: 'Hello from Twig!' });
63
+ app.get(`/${serviceName}`, (req, res) => {
64
+ res.render('base', { root: serviceName, title: 'Home Page', message: 'Hello from Twig!' });
27
65
  });
28
66
 
29
67
  // Start listing on the specified port
30
- app.listen(newPort, async () => {
31
- console.log(`${serviceName} listening on port ${newPort}`);
32
- try {
33
- await axios.post(config.url_register, {
34
- name: serviceName,
35
- host: "localhost",
36
- port: newPort
37
- });
38
- console.log(`Registered ${serviceName}`);
39
- } catch (err) {
40
- console.error(`Failed to register ${serviceName}: ${err.message}`);
41
- }
68
+ app.listen(port, async () => {
69
+ console.log(`${serviceName} listening on port ${port}`);
70
+ await register()
42
71
  });
43
72
 
44
73
  })
@@ -0,0 +1,3 @@
1
+ {
2
+ "welcome": "Welcome"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "welcome": "Benvenuto"
3
+ }
@@ -2,9 +2,10 @@
2
2
  <html>
3
3
  <head>
4
4
  <title>{{ title }}</title>
5
- <link rel="stylesheet" type="text/css" href="/frontend/css/style.css">
5
+ <link rel="stylesheet" type="text/css" href="/{{ root }}/css/style.css">
6
6
  </head>
7
7
  <body>
8
8
  <h1>{{ message }}</h1>
9
+ <h2>{{ t('welcome') }}</h2>
9
10
  </body>
10
11
  </html>