Skip to content

Commit 0897549

Browse files
amandine-sahlPierre-Narcisi
authored andcommitted
Use currentModuleConfigObs
1 parent 6336ff4 commit 0897549

9 files changed

Lines changed: 167 additions & 199 deletions

File tree

frontend/app/components/monitoring-form/monitoring-form.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ export class MonitoringFormComponent implements OnInit {
161161
// Initialisation des paramètres par défaut du formulaire
162162
this.queryParams = this._route.snapshot.queryParams || {};
163163

164-
this.bChainInput = this._configService.frontendParams()['bChainInput'];
164+
this.bChainInput = this._configService.frontendParams['bChainInput'];
165165

166166
this.meta = {
167167
nomenclatures: this._dataUtilsService.getDataUtil('nomenclature'),

frontend/app/components/monitoring-sites-detail/monitoring-sites-detail.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ export class MonitoringSitesDetailComponent extends MonitoringGeomComponent impl
310310
const moduleCode = $event.id;
311311
//create_object/cheveches_sites_group/visit?id_base_site=47
312312
this._configService.init(moduleCode).subscribe(() => {
313-
const keys = Object.keys(this._configService.config()[moduleCode]);
313+
const keys = Object.keys(this._configService.config());
314314
const parents_path = ['sites_group', 'site'].filter((item) => keys.includes(item));
315315
this.router.navigate([`monitorings/create_object/${moduleCode}/visit`], {
316316
queryParams: { id_base_site: this.site.id_base_site, parents_path: parents_path },

frontend/app/components/monitoring-sitesgroups-detail/monitoring-sitesgroups-detail.component.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ export class MonitoringSitesgroupsDetailComponent
125125
return this.siteGroupId as number;
126126
}),
127127
mergeMap((id: number) => {
128-
this._siteService.setModuleCode(`${this.moduleCode}`);
129-
this._sitesGroupService.setModuleCode(`${this.moduleCode}`);
128+
// this._siteService.setModuleCode(`${this.moduleCode}`);
129+
// this._sitesGroupService.setModuleCode(`${this.moduleCode}`);
130130

131131
const fieldsConfig = this._configService.schema(this.moduleCode, 'site');
132132
// Récupération des sites et résolution des propriétés
@@ -377,7 +377,7 @@ export class MonitoringSitesgroupsDetailComponent
377377
this.modulSelected = event;
378378
this._configService.init(this.modulSelected.id).subscribe(() => {
379379
const moduleCode = this.modulSelected.id;
380-
const keys = Object.keys(this._configService.config()[moduleCode]);
380+
const keys = Object.keys(this._configService.config());
381381
const parents_path = ['sites_group', 'site'].filter((item) => keys.includes(item));
382382
this.router.navigate([`monitorings/create_object/${moduleCode}/visit`], {
383383
queryParams: { id_base_site: this.siteSelectedId, parents_path: parents_path },

frontend/app/components/monitoring-sitesgroups/monitoring-sitesgroups.component.ts

Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -138,16 +138,16 @@ export class MonitoringSitesGroupsComponent extends MonitoringGeomComponent impl
138138
this._objService.loadBreadCrumb(this.moduleCode, 'module', null, queryParams);
139139

140140
this.page = {
141-
count: currentData.count,
142-
limit: currentData.limit,
143-
page: currentData.page - 1,
141+
count: currentData?.count,
142+
limit: currentData?.limit,
143+
page: (currentData?.page || 1) - 1,
144144
};
145145
// this.columns = [data.sitesGroups.data.items, data.sites.data.items]
146146
this.colsname = currentObjConfig.dataTable.colNameObj;
147147

148148
const { route, permission, moduleCode, ...dataToTable } = data;
149149

150-
this.setDataTableObj(dataToTable);
150+
this.setDataTableObj(dataToTable, data.tree);
151151

152152
// Indentify active tab
153153
this.activetabIndex = this.getdataTableIndex(data.route);
@@ -170,22 +170,15 @@ export class MonitoringSitesGroupsComponent extends MonitoringGeomComponent impl
170170
}
171171

172172
if (this.obj) {
173-
return this._configService
174-
.init(this.moduleCode)
175-
.pipe(
176-
mergeMap(() => {
177-
return this.obj.get(0);
178-
})
179-
)
180-
.subscribe(() => {
181-
this.obj.initTemplate();
182-
this.objForm = this._formBuilder.group({});
183-
this.obj.bIsInitialized = true;
184-
this._formService.changeFormMapObj({
185-
frmGp: this.objForm,
186-
obj: this.obj,
187-
});
173+
return this.obj.get(0).subscribe(() => {
174+
this.obj.initTemplate();
175+
this.objForm = this._formBuilder.group({});
176+
this.obj.bIsInitialized = true;
177+
this._formService.changeFormMapObj({
178+
frmGp: this.objForm,
179+
obj: this.obj,
188180
});
181+
});
189182
} else {
190183
this._configService.init(this.moduleCode);
191184
}
@@ -458,13 +451,14 @@ export class MonitoringSitesGroupsComponent extends MonitoringGeomComponent impl
458451
}
459452
}
460453

461-
setDataTableObj(data) {
454+
setDataTableObj(data, tree) {
462455
const objTemp = {};
463456
for (const dataType in data) {
464-
if (!data[dataType].objConfig) {
457+
let objType = data[dataType]?.objConfig?.objectType;
458+
if (!tree.includes(objType)) {
465459
continue;
466460
}
467-
let objType = data[dataType].objConfig.objectType;
461+
468462
Object.assign(objType, objTemp);
469463
objTemp[objType] = { columns: {}, rows: [], page: {} };
470464
this.config = this._configService.configModuleObject(
@@ -473,13 +467,7 @@ export class MonitoringSitesGroupsComponent extends MonitoringGeomComponent impl
473467
);
474468
data[dataType].objConfig['config'] = this.config;
475469
this.dataTableArray.push(data[dataType].objConfig);
476-
}
477470

478-
for (const dataType in data) {
479-
if (!data[dataType].objConfig) {
480-
continue;
481-
}
482-
let objType = data[dataType].objConfig.objectType;
483471
objTemp[objType].columns = data[dataType].objConfig.dataTable.colNameObj;
484472
if (objType == 'site') {
485473
let siteList = data[dataType].data.items;
@@ -534,7 +522,7 @@ export class MonitoringSitesGroupsComponent extends MonitoringGeomComponent impl
534522
this.modulSelected = event;
535523
this._configService.init(this.modulSelected.id).subscribe(() => {
536524
const moduleCode = this.modulSelected.id;
537-
const keys = Object.keys(this._configService.config()[moduleCode]);
525+
const keys = Object.keys(this._configService.config());
538526
const parents_path = ['sites_group', 'site'].filter((item) => keys.includes(item));
539527
this.router.navigate([`monitorings/create_object/${moduleCode}/visit`], {
540528
queryParams: { id_base_site: this.siteSelectedId, parents_path: parents_path },

frontend/app/resolver/sites-groups.resolver.ts

Lines changed: 75 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { Injectable } from '@angular/core';
22
import { Observable, forkJoin, of } from 'rxjs';
3+
34
import { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';
45
import { ISite, ISitesGroup } from '../interfaces/geom';
56
import { IPaginated } from '../interfaces/page';
67
import { IobjObs } from '../interfaces/objObs';
7-
import { concatMap, map, mergeMap } from 'rxjs/operators';
8+
import { concatMap, map, mergeMap, filter, takeWhile } from 'rxjs/operators';
89
import { PermissionService } from '../services/permission.service';
910
import { TPermission } from '../types/permission';
1011
import { MonitoringObjectService } from '../services/monitoring-object.service';
@@ -30,7 +31,7 @@ export class SitesGroupsResolver
3031
currentPermission: TPermission;
3132
// Liste des type d'objets enfants à afficher sur la page
3233
listChildObjectType: string[] = ['sites_group', 'site'];
33-
34+
resolvedData;
3435
constructor(
3536
public serviceSitesGroup: SitesGroupService,
3637
public serviceSite: SitesService,
@@ -54,92 +55,89 @@ export class SitesGroupsResolver
5455
}> {
5556
const moduleCode = route.params.moduleCode || 'generic';
5657
this.listChildObjectType = ['sites_group', 'site'];
57-
// this.serviceSitesGroup.setModuleCode(`${moduleCode}`);
58-
// this.serviceSite.setModuleCode(`${moduleCode}`);
59-
// this.serviceIndividual.setModuleCode(`${moduleCode}`);
60-
61-
// const $configSitesGroups = this.serviceSitesGroup.initConfig();
62-
// const $configSites = this.serviceSite.initConfig();
63-
// const $configIndividuals = this.serviceIndividual.initConfig();
6458

6559
this._permissionService.setPermissionMonitorings(moduleCode);
6660
this.currentPermission = this._permissionService.getPermissionUser();
67-
68-
const resolvedData = this._configService.init(moduleCode).pipe(
69-
70-
map((configs) => {
71-
// Récupération des permissions du module
72-
const module_permissions = this._configService.moduleCruved(moduleCode);
73-
74-
// Si le module n'est pas le module générique affichage des objets
75-
// en fonction de l'objet tree
76-
if (moduleCode !== 'generic') {
77-
const tree = this._configService.configModuleObject(moduleCode, 'tree');
78-
this.listChildObjectType = Object.keys(tree['module']);
79-
}
80-
81-
// S'il n'y a pas de groupe de site et que la page demandée est sites_group
82-
// redirection vers la page des sites.
83-
// TODO le rendre plus robuste
84-
if (
85-
!configs[0] &&
86-
state.url.includes('/monitorings/object/') &&
87-
state.url.includes('sites_group')
88-
) {
89-
this.router.navigate(['monitorings', 'object', route.params.moduleCode, 'site']);
90-
}
91-
92-
// Initialisation des getters et config de chaque type d'objet
93-
const $getSiteGroups = this.buildObjectConfig(
94-
'sites_group',
95-
configs[0],
96-
module_permissions['sites_group'].R,
97-
this.serviceSitesGroup,
98-
moduleCode
99-
);
100-
101-
const $getSites = this.buildObjectConfig(
102-
'site',
103-
configs[1],
104-
module_permissions['site'].R,
105-
this.serviceSite,
106-
moduleCode
107-
);
108-
109-
const $getIndividuals = this.buildObjectConfig(
110-
'individual',
111-
configs[2],
112-
module_permissions['individual'].R,
113-
this.serviceIndividual,
114-
moduleCode
115-
);
116-
117-
return forkJoin([$getSiteGroups, $getSites, $getIndividuals]).pipe(
118-
map(([processedSiteGroups, processedSites, processedIndividuals]) => {
119-
return {
120-
sitesGroups: { data: processedSiteGroups, objConfig: configs[0] },
121-
sites: { data: processedSites, objConfig: configs[1] },
122-
individuals: { data: processedIndividuals, objConfig: configs[2] },
123-
route: route['_urlSegment'].segments[3].path,
124-
permission: this.currentPermission,
125-
moduleCode,
126-
};
127-
})
128-
);
129-
}),
130-
mergeMap((result) => {
131-
return result;
61+
this._configService.currentModuleConfig = null;
62+
this._configService.init(moduleCode);
63+
64+
this.resolvedData = this._configService.currentModuleConfigObs.pipe(
65+
filter((config) => config != null),
66+
takeWhile((config) => config.module.module_code == moduleCode), //Permet de unsubscribe dès que le module est le bon
67+
map((configs) => {
68+
// Récupération des permissions du module
69+
const module_permissions = this._configService.moduleCruved(moduleCode);
70+
71+
// Si le module n'est pas le module générique affichage des objets
72+
// en fonction de l'objet tree
73+
if (moduleCode !== 'generic') {
74+
const tree = this._configService.configModuleObject(moduleCode, 'tree');
75+
this.listChildObjectType = Object.keys(tree['module']);
76+
}
77+
// S'il n'y a pas de groupe de site et que la page demandée est sites_group
78+
// redirection vers la page des sites.
79+
// TODO le rendre plus robuste
80+
if (
81+
!configs[0] &&
82+
state.url.includes('/monitorings/object/') &&
83+
state.url.includes('sites_group')
84+
) {
85+
this.router.navigate(['monitorings', 'object', route.params.moduleCode, 'site']);
86+
}
87+
88+
// Initialisation des getters et config de chaque type d'objet
89+
const $getSiteGroups = this.buildObjectConfig(
90+
'sites_group',
91+
module_permissions['sites_group'].R,
92+
this.serviceSitesGroup
93+
);
94+
95+
const $getSites = this.buildObjectConfig(
96+
'site',
97+
module_permissions['site'].R,
98+
this.serviceSite
99+
);
100+
101+
const $getIndividuals = this.buildObjectConfig(
102+
'individual',
103+
module_permissions['individual'].R,
104+
this.serviceIndividual
105+
);
106+
107+
return forkJoin([$getSiteGroups, $getSites, $getIndividuals]).pipe(
108+
map(([processedSiteGroups, processedSites, processedIndividuals]) => {
109+
return {
110+
sitesGroups: {
111+
data: processedSiteGroups,
112+
objConfig: this.serviceSitesGroup.objectObs,
113+
},
114+
sites: { data: processedSites, objConfig: this.serviceSite.objectObs },
115+
individuals: {
116+
data: processedIndividuals,
117+
objConfig: this.serviceIndividual.objectObs,
118+
},
119+
route: route['_urlSegment'].segments[3].path,
120+
permission: this.currentPermission,
121+
tree: this.listChildObjectType,
122+
moduleCode,
123+
};
132124
})
125+
);
126+
}),
127+
mergeMap((result) => {
128+
return result;
129+
})
133130
);
134-
return resolvedData;
131+
return this.resolvedData;
135132
}
136-
137-
buildObjectConfig(object_type, config, permission, objectService, moduleCode) {
133+
buildObjectConfig(object_type, permission, objectService) {
138134
let configSchemaObjetType = {
139135
sorts: [],
140136
specific: {},
141137
};
138+
const config = objectService.objectObs;
142139
let $getObjetTypes = of(null);
140+
143141
if (this.listChildObjectType.includes(object_type) && config) {
144142
configSchemaObjetType = this._configService.configModuleObject(
145143
config.moduleCode,

0 commit comments

Comments
 (0)