Skip to content

Commit 3445516

Browse files
authored
Merge pull request #1 from Rayshor/URCAM-3
feat: URCAM-3 Mise en place socle technique (frontend + mock)
2 parents 43065a2 + fb981dd commit 3445516

62 files changed

Lines changed: 13309 additions & 58 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<component name="ProjectRunConfigurationManager">
2+
<configuration default="false" name="backend/knowledge-base" type="js.build_tools.npm" folderName="Backend">
3+
<package-json value="$PROJECT_DIR$/dev/user-backend-nest/microservices/knowledge-base/package.json" />
4+
<command value="run" />
5+
<scripts>
6+
<script value="start:dev" />
7+
</scripts>
8+
<node-interpreter value="project" />
9+
<envs />
10+
<method v="2" />
11+
</configuration>
12+
</component>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<component name="ProjectRunConfigurationManager">
2+
<configuration default="false" name="frontend/knowledge-base" type="js.build_tools.npm" folderName="Frontend">
3+
<package-json value="$PROJECT_DIR$/dev/user-frontend-ionic/package.json" />
4+
<command value="run" />
5+
<scripts>
6+
<script value="module:watch" />
7+
</scripts>
8+
<arguments value="knowledge-base" />
9+
<node-interpreter value="project" />
10+
<envs />
11+
<method v="2" />
12+
</configuration>
13+
</component>

dev/user-backend-mocks/src/app.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ const cardsRouter = require('./cards/cards.route');
5252
const rssRouter = require('./rss/rss.route');
5353
const statisticsRouter = require('./statistics/statistics.route');
5454
const clockingRouter = require('./clocking/clocking.route');
55+
const knowledgeBaseRouter = require('./knowledge-base/knowledge-base.route');
5556

5657
const app = express();
5758

@@ -73,6 +74,7 @@ app.use('/mocking/cards', cardsRouter);
7374
app.use('/mocking/rss', rssRouter);
7475
app.use('/mocking/statistics', statisticsRouter);
7576
app.use('/mocking/clocking', clockingRouter);
77+
app.use('/mocking/knowledge-base', knowledgeBaseRouter);
7678

7779
// catch 404 and forward to error handler
7880
app.use(function(req, res, next) {
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/*
2+
* Copyright ou © ou Copr. Université de Lorraine, (2022)
3+
*
4+
* Direction du Numérique de l'Université de Lorraine - SIED
5+
6+
* JNESIS ([email protected])
7+
*
8+
* Ce logiciel est un programme informatique servant à rendre accessible
9+
* sur mobile divers services universitaires aux étudiants et aux personnels
10+
* de l'université.
11+
*
12+
* Ce logiciel est régi par la licence CeCILL 2.1, soumise au droit français
13+
* et respectant les principes de diffusion des logiciels libres. Vous pouvez
14+
* utiliser, modifier et/ou redistribuer ce programme sous les conditions
15+
* de la licence CeCILL telle que diffusée par le CEA, le CNRS et INRIA
16+
* sur le site "http://cecill.info".
17+
*
18+
* En contrepartie de l'accessibilité au code source et des droits de copie,
19+
* de modification et de redistribution accordés par cette licence, il n'est
20+
* offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
21+
* seule une responsabilité restreinte pèse sur l'auteur du programme, le
22+
* titulaire des droits patrimoniaux et les concédants successifs.
23+
*
24+
* À cet égard, l'attention de l'utilisateur est attirée sur les risques
25+
* associés au chargement, à l'utilisation, à la modification et/ou au
26+
* développement et à la reproduction du logiciel par l'utilisateur étant
27+
* donné sa spécificité de logiciel libre, qui peut le rendre complexe à
28+
* manipuler et qui le réserve donc à des développeurs et des professionnels
29+
* avertis possédant des connaissances informatiques approfondies. Les
30+
* utilisateurs sont donc invités à charger et à tester l'adéquation du
31+
* logiciel à leurs besoins dans des conditions permettant d'assurer la
32+
* sécurité de leurs systèmes et/ou de leurs données et, plus généralement,
33+
* à l'utiliser et à l'exploiter dans les mêmes conditions de sécurité.
34+
*
35+
* Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
36+
* pris connaissance de la licence CeCILL 2.1, et que vous en avez accepté les
37+
* termes.
38+
*/
39+
40+
module.exports.knowledgeBaseData = [
41+
{
42+
"title": "Première page vers enfant",
43+
"id": 1,
44+
"pageType": "content",
45+
},
46+
{
47+
"title": "Première page vers lien interne map",
48+
"id": 2,
49+
"link": "map",
50+
"pageType": "internal_link"
51+
},
52+
{
53+
"title": "Première page vers lien externe jnesis.com",
54+
"id": 3,
55+
"link": "https://www.jnesis.com",
56+
"pageType": "external_link"
57+
},
58+
{
59+
"title": "Première enfant",
60+
"content": "id Nunc ...",
61+
"id": 4,
62+
"pageType": "content",
63+
"childDisplay": "card",
64+
"parentId": 1
65+
},
66+
{
67+
"title": "Page affiché au format carte",
68+
"content": "id Nunc ...d",
69+
"id": 5,
70+
"pageType": "content",
71+
"childDisplay": "card",
72+
"parentId": 4
73+
},
74+
{
75+
"title": "Autre Page affiché au format carte",
76+
"content": "id Nunc dzdzdzdz zdd z dzdzf fef",
77+
"id": 6,
78+
"pageType": "content",
79+
"childDisplay": "card",
80+
"parentId": 4
81+
}
82+
];
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* Copyright ou © ou Copr. Université de Lorraine, (2022)
3+
*
4+
* Direction du Numérique de l'Université de Lorraine - SIED
5+
6+
* JNESIS ([email protected])
7+
*
8+
* Ce logiciel est un programme informatique servant à rendre accessible
9+
* sur mobile divers services universitaires aux étudiants et aux personnels
10+
* de l'université.
11+
*
12+
* Ce logiciel est régi par la licence CeCILL 2.1, soumise au droit français
13+
* et respectant les principes de diffusion des logiciels libres. Vous pouvez
14+
* utiliser, modifier et/ou redistribuer ce programme sous les conditions
15+
* de la licence CeCILL telle que diffusée par le CEA, le CNRS et INRIA
16+
* sur le site "http://cecill.info".
17+
*
18+
* En contrepartie de l'accessibilité au code source et des droits de copie,
19+
* de modification et de redistribution accordés par cette licence, il n'est
20+
* offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
21+
* seule une responsabilité restreinte pèse sur l'auteur du programme, le
22+
* titulaire des droits patrimoniaux et les concédants successifs.
23+
*
24+
* À cet égard, l'attention de l'utilisateur est attirée sur les risques
25+
* associés au chargement, à l'utilisation, à la modification et/ou au
26+
* développement et à la reproduction du logiciel par l'utilisateur étant
27+
* donné sa spécificité de logiciel libre, qui peut le rendre complexe à
28+
* manipuler et qui le réserve donc à des développeurs et des professionnels
29+
* avertis possédant des connaissances informatiques approfondies. Les
30+
* utilisateurs sont donc invités à charger et à tester l'adéquation du
31+
* logiciel à leurs besoins dans des conditions permettant d'assurer la
32+
* sécurité de leurs systèmes et/ou de leurs données et, plus généralement,
33+
* à l'utiliser et à l'exploiter dans les mêmes conditions de sécurité.
34+
*
35+
* Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
36+
* pris connaissance de la licence CeCILL 2.1, et que vous en avez accepté les
37+
* termes.
38+
*/
39+
40+
const express = require('express');
41+
const router = express.Router();
42+
const { knowledgeBaseData } = require('./knowledge-base.mock');
43+
44+
router.get('/', (req, res) => res.json(knowledgeBaseData));
45+
46+
module.exports = router;

dev/user-backend-nest/main/.env.dist

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ FEATURES_SERVICE_NATS_SERVERS=nats://localhost:4222
2020

2121
IMPORTANT_NEWS_SERVICE_NATS_SERVERS=nats://localhost:4222
2222

23+
KNOWLEDGE_BASE_SERVICE_NATS_SERVERS=nats://localhost:4222
24+
2325
MAIL_CALENDAR_SERVICE_NATS_SERVERS=nats://localhost:4222
2426

2527
MAP_SERVICE_NATS_SERVERS=nats://localhost:4222

dev/user-backend-nest/main/src/app.controller.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ export class AppController {
8181
@Inject('RESTAURANTS_SERVICE') private restaurantsClient: ClientProxy,
8282
@Inject('STATISTICS_SERVICE') private statisticsClient: ClientProxy,
8383
@Inject('MAIL_CALENDAR_SERVICE') private mailCalendarClient: ClientProxy,
84+
@Inject('KNOWLEDGE_BASE_SERVICE') private knowledgeBaseClient: ClientProxy,
8485
) {}
8586

8687
@Post('/features')
@@ -726,6 +727,17 @@ export class AppController {
726727
);
727728
}
728729

730+
@Get('/knowledge-base')
731+
knowledgeBase(@Body() body) {
732+
return this.knowledgeBaseClient
733+
.send(
734+
{
735+
cmd: 'getList',
736+
},
737+
body,
738+
)
739+
}
740+
729741
@Get('/version')
730742
mainVersion() {
731743
return {

dev/user-backend-nest/main/src/app.module.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ import { TerminusModule } from '@nestjs/terminus';
6565
import { LoggerModule } from 'nestjs-pino';
6666
import * as process from 'process';
6767
import { LogsMiddleware } from './logs.middleware';
68+
import microserviceKnowledgeBaseConfig from "./config/microservice-knowledge-base.config";
6869

6970
@Module({
7071
imports: [
@@ -187,6 +188,13 @@ import { LogsMiddleware } from './logs.middleware';
187188
config.get('microservice-mail-calendar'),
188189
inject: [ConfigService],
189190
},
191+
{
192+
name: 'KNOWLEDGE_BASE_SERVICE',
193+
imports: [ConfigModule.forFeature(microserviceKnowledgeBaseConfig)],
194+
useFactory: (config: ConfigService) =>
195+
config.get('microservice-knowledge-base'),
196+
inject: [ConfigService],
197+
},
190198
]),
191199
PassportModule,
192200
TerminusModule,
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
* Copyright ou © ou Copr. Université de Lorraine, (2022)
3+
*
4+
* Direction du Numérique de l'Université de Lorraine - SIED
5+
6+
* JNESIS ([email protected])
7+
*
8+
* Ce logiciel est un programme informatique servant à rendre accessible
9+
* sur mobile divers services universitaires aux étudiants et aux personnels
10+
* de l'université.
11+
*
12+
* Ce logiciel est régi par la licence CeCILL 2.1, soumise au droit français
13+
* et respectant les principes de diffusion des logiciels libres. Vous pouvez
14+
* utiliser, modifier et/ou redistribuer ce programme sous les conditions
15+
* de la licence CeCILL telle que diffusée par le CEA, le CNRS et INRIA
16+
* sur le site "http://cecill.info".
17+
*
18+
* En contrepartie de l'accessibilité au code source et des droits de copie,
19+
* de modification et de redistribution accordés par cette licence, il n'est
20+
* offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
21+
* seule une responsabilité restreinte pèse sur l'auteur du programme, le
22+
* titulaire des droits patrimoniaux et les concédants successifs.
23+
*
24+
* À cet égard, l'attention de l'utilisateur est attirée sur les risques
25+
* associés au chargement, à l'utilisation, à la modification et/ou au
26+
* développement et à la reproduction du logiciel par l'utilisateur étant
27+
* donné sa spécificité de logiciel libre, qui peut le rendre complexe à
28+
* manipuler et qui le réserve donc à des développeurs et des professionnels
29+
* avertis possédant des connaissances informatiques approfondies. Les
30+
* utilisateurs sont donc invités à charger et à tester l'adéquation du
31+
* logiciel à leurs besoins dans des conditions permettant d'assurer la
32+
* sécurité de leurs systèmes et/ou de leurs données et, plus généralement,
33+
* à l'utiliser et à l'exploiter dans les mêmes conditions de sécurité.
34+
*
35+
* Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
36+
* pris connaissance de la licence CeCILL 2.1, et que vous en avez accepté les
37+
* termes.
38+
*/
39+
40+
import { registerAs } from '@nestjs/config';
41+
import { Transport } from '@nestjs/microservices';
42+
43+
export default registerAs('microservice-knowledge-base', () => {
44+
const natsServers = (
45+
process.env.KNOWLEDGE_BASE_SERVICE_NATS_SERVERS || 'nats://localhost:4222'
46+
)
47+
.split(',')
48+
.map((server) => server.trim());
49+
return {
50+
transport: Transport.NATS,
51+
options: {
52+
servers: natsServers,
53+
},
54+
};
55+
});

dev/user-backend-nest/microservices/features/src/features/features.service.ts

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,22 @@
3737
* termes.
3838
*/
3939

40-
import { Injectable, Logger } from '@nestjs/common';
41-
import { catchError, map, Observable } from 'rxjs';
42-
import { FeaturesPositionHelper } from './features-position.helper';
40+
import {Injectable, Logger} from '@nestjs/common';
41+
import {catchError, map, Observable} from 'rxjs';
42+
import {FeaturesPositionHelper} from './features-position.helper';
4343
import {
44+
AccessType,
45+
AppElement,
46+
ContentQueryResponse,
4447
Feature,
4548
GraphQLResponse,
49+
InternalFeature,
4650
Widget,
47-
AppElement,
48-
ContentQueryResponse,
4951
} from './features.dto';
50-
import { CmsApi } from '../config/configuration.interface';
51-
import { ConfigService } from '@nestjs/config';
52-
import { HttpService } from '@nestjs/axios';
53-
import { RpcException } from '@nestjs/microservices';
52+
import {CmsApi} from '../config/configuration.interface';
53+
import {ConfigService} from '@nestjs/config';
54+
import {HttpService} from '@nestjs/axios';
55+
import {RpcException} from '@nestjs/microservices';
5456

5557
@Injectable()
5658
export class FeaturesService {
@@ -150,12 +152,44 @@ export class FeaturesService {
150152
throw new RpcException(errorMessage);
151153
}),
152154
map((response) => {
153-
const features = (response.data.data.features || []).map(
155+
let features = (response.data.data.features || []).map(
154156
(f) => ({ ...f, id: `feature:${f.id}` } as Feature),
155157
);
156158
const widgets = (response.data.data.widgets || []).map(
157159
(w) => ({ ...w, id: `widget:${w.id}` } as Widget),
158160
);
161+
//Hack to add a feature without Wordpress or Directus
162+
let knowledgeBaseFeature:Feature={
163+
icon: "information",
164+
authorization: null,
165+
id: "feature:999",
166+
iconSvgLight: null,
167+
iconSvgDark: null,
168+
menu: "service",
169+
position: 300,
170+
routerLink: "/knowledge-base",
171+
settingsByRole: [],
172+
statisticName: null,
173+
type: AccessType.INTERNAL,
174+
translations: [
175+
{
176+
languagesCode: "fr",
177+
searchKeywords: [
178+
],
179+
title: "Informations"
180+
},
181+
{
182+
languagesCode: "en",
183+
searchKeywords: [
184+
],
185+
title: "Informations"
186+
}
187+
],
188+
};
189+
190+
features.push(knowledgeBaseFeature);
191+
192+
159193

160194
const allElements: AppElement[] = [...features, ...widgets];
161195

0 commit comments

Comments
 (0)