Skip to content

Commit 190d29e

Browse files
feat: data inclusion api call (#521)
1 parent 4d87a24 commit 190d29e

File tree

6 files changed

+130
-125
lines changed

6 files changed

+130
-125
lines changed

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,9 @@
3232
"publishConfig": {
3333
"access": "public",
3434
"registry": "https://registry.npmjs.org/"
35+
},
36+
"volta": {
37+
"node": "20.18.0",
38+
"yarn": "1.22.10"
3539
}
3640
}

src/features/cartographie/components/lieux-mediation-numerique-details/lieux-mediation-numerique-details.component.ts

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { MatomoTracker } from 'ngx-matomo';
12
import {
23
ChangeDetectionStrategy,
34
Component,
@@ -6,22 +7,25 @@ import {
67
Input,
78
Output,
89
ViewChild,
9-
Optional
10+
Optional,
11+
OnInit
1012
} from '@angular/core';
13+
import { FormGroup } from '@angular/forms';
14+
import { HttpClient } from '@angular/common/http';
1115
import { DispositifProgrammeNational } from '@gouvfr-anct/lieux-de-mediation-numerique';
1216
import { LieuMediationNumeriqueDetailsPresentation } from '../../presenters';
1317
import { OrientationSheetForm, SendLieuByEmail } from '../../models';
1418
import { FilterPresentation } from '../../../core/presenters';
15-
import { FormGroup } from '@angular/forms';
16-
import { MatomoTracker } from 'ngx-matomo';
1719
import { environment } from 'projects/client-application/src/environments/environment';
1820

21+
const authorizationToken = (token?: string) => (token ? { headers: { Authorization: `Bearer ${token}` } } : {});
22+
1923
@Component({
2024
changeDetection: ChangeDetectionStrategy.OnPush,
2125
selector: 'app-lieux-mediation-numerique-details',
2226
templateUrl: './lieux-mediation-numerique-details.component.html'
2327
})
24-
export class LieuxMediationNumeriqueDetailsComponent {
28+
export class LieuxMediationNumeriqueDetailsComponent implements OnInit {
2529
@ViewChild('source') sourceRef!: ElementRef;
2630

2731
@Input() public lieuMediationNumerique!: LieuMediationNumeriqueDetailsPresentation;
@@ -49,17 +53,23 @@ export class LieuxMediationNumeriqueDetailsComponent {
4953

5054
@Output() public showLabelInvokingContext: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();
5155

52-
public constructor(@Optional() private readonly _matomoTracker?: MatomoTracker) {}
56+
public constructor(private readonly _http: HttpClient, @Optional() private readonly _matomoTracker?: MatomoTracker) {}
57+
58+
public ngOnInit(): void {
59+
this.lieuMediationNumerique.source?.forEach((source) => {
60+
if (source.origin == null) return;
61+
this._http.get(source.origin.api, authorizationToken(source.origin.token)).subscribe();
62+
});
63+
}
5364

5465
onScrollToSource = (): void => {
5566
this.sourceRef.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'end', inline: 'start' });
5667
};
5768

5869
public onPrintFromBandeau(): void {
59-
if (environment.production) {
60-
this._matomoTracker?.trackEvent('fiche détail', 'bandeau footer', `impression fiche`);
61-
const sourceLabels = this.lieuMediationNumerique.source?.map((source) => source.label).join(', ');
62-
this._matomoTracker?.trackEvent('fiche détail', sourceLabels ?? 'Source inconnue', 'bandeau footer - impression fiche');
63-
}
70+
if (!environment.production) return;
71+
this._matomoTracker?.trackEvent('fiche détail', 'bandeau footer', `impression fiche`);
72+
const sourceLabels = this.lieuMediationNumerique.source?.map((source) => source.label).join(', ');
73+
this._matomoTracker?.trackEvent('fiche détail', sourceLabels ?? 'Source inconnue', 'bandeau footer - impression fiche');
6474
}
6575
}

src/features/cartographie/components/lieux-mediation-numerique-details/score-completion/score-completion.presenter.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ describe('score completion presenter', (): void => {
101101

102102
const scoreCompletionTotal: number = scoreCompletionRate(structure);
103103

104-
expect(scoreCompletionTotal).toStrictEqual(95);
104+
expect(scoreCompletionTotal).toStrictEqual(98);
105105
});
106106

107107
it('should return low score completion', async (): Promise<void> => {

src/features/cartographie/presenters/lieu-mediation-numerique-details/lieu-mediation-numerique-details.presentation.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export type SourcePresentation = {
1919
detail?: string;
2020
update_link?: string;
2121
logo?: string;
22+
origin?: { api: string; token?: string };
2223
};
2324

2425
export type LieuMediationNumeriqueDetailsPresentation = {

src/features/cartographie/presenters/lieu-mediation-numerique-details/lieux-mediation-numerique-details.presenter.spec.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ describe('lieux médiation numérique details presenter', (): void => {
141141
Samedi: '08h30 - 12h00',
142142
Dimanche: 'Fermé'
143143
},
144+
source: [],
144145
status: {
145146
label: 'Ouvert',
146147
limite: 'Ferme à 18h30'
@@ -241,6 +242,7 @@ describe('lieux médiation numérique details presenter', (): void => {
241242
adresse: `12 BIS RUE DE LECLERCQ Le patio du bois de l'Aulne 51100 Reims`,
242243
code_postal: '51100',
243244
commune: 'reims',
245+
source: [],
244246
services: [Service.MaitriseDesOutilsNumeriquesDuQuotidien, Service.AccesInternetEtMaterielInformatique]
245247
});
246248
});
@@ -284,6 +286,7 @@ describe('lieux médiation numérique details presenter', (): void => {
284286
adresse: `12 BIS RUE DE LECLERCQ Le patio du bois de l'Aulne 51100 Reims`,
285287
code_postal: '51100',
286288
commune: 'reims',
289+
source: [],
287290
services: [Service.MaitriseDesOutilsNumeriquesDuQuotidien, Service.AccesInternetEtMaterielInformatique],
288291
horaires: {
289292
Lundi: '09h00 - 12h00\n14h00 - 18h30',
@@ -340,6 +343,7 @@ describe('lieux médiation numérique details presenter', (): void => {
340343
adresse: `12 BIS RUE DE LECLERCQ Le patio du bois de l'Aulne 51100 Reims`,
341344
code_postal: '51100',
342345
commune: 'reims',
346+
source: [],
343347
services: [Service.MaitriseDesOutilsNumeriquesDuQuotidien, Service.AccesInternetEtMaterielInformatique],
344348
localisation: Localisation({ latitude: 45.7689958, longitude: 4.8343466 }),
345349
distance: 0

0 commit comments

Comments
 (0)