Skip to content

Commit e7effee

Browse files
committed
feat(synthese): improve data loading and parsing
Code refactoring and improvements. Move search bar toggle button in the middle of page height (like Validation, and more visible).
1 parent 47537dd commit e7effee

File tree

5 files changed

+234
-198
lines changed

5 files changed

+234
-198
lines changed

frontend/src/app/syntheseModule/services/store.service.ts

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,53 @@ import { Injectable } from '@angular/core';
44
providedIn: 'root',
55
})
66
export class SyntheseStoreService {
7-
public idSyntheseList: Array<number>;
8-
public gridData: Array<any>;
9-
public pointData: Array<any>;
7+
public idSyntheseList: Set<number> = new Set();
8+
private gridData: Object = {};
9+
private pointData: Object = {};
10+
1011
constructor() {}
12+
13+
public hasData(type): boolean {
14+
let hasData = false;
15+
if (type == 'grid') {
16+
hasData = this.gridData && Object.keys(this.gridData).length > 0;
17+
console.log(`Grid data length: ${this.gridData && Object.keys(this.gridData).length > 0}`);
18+
console.log(`Grid data: ${this.gridData}`, this.gridData);
19+
} else if (type == 'point') {
20+
hasData = this.pointData && Object.keys(this.pointData).length > 0;
21+
console.log(`Point data length: ${this.pointData && Object.keys(this.pointData).length > 0}`);
22+
console.log(`Point data: ${this.pointData}`, this.pointData);
23+
} else {
24+
throw new Error(`Unknown data type: ${type}`);
25+
}
26+
return hasData;
27+
}
28+
29+
public getData(type): Object {
30+
let storedData = {};
31+
if (type == 'grid') {
32+
storedData = this.gridData;
33+
} else if (type == 'point') {
34+
storedData = this.pointData;
35+
} else {
36+
throw new Error(`Unknown data type: ${type}`);
37+
}
38+
return storedData;
39+
}
40+
41+
public setData(type, data: Object) {
42+
if (type === 'grid') {
43+
this.gridData = data;
44+
} else if (type === 'point') {
45+
this.pointData = data;
46+
} else {
47+
throw new Error(`Unknown data type: ${type}`);
48+
}
49+
}
50+
51+
public clearData() {
52+
this.idSyntheseList = new Set();
53+
this.gridData = {};
54+
this.pointData = {};
55+
}
1156
}

frontend/src/app/syntheseModule/synthese-results/synthese-list/modal-download/modal-download.component.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,19 @@ export class SyntheseModalDownloadComponent {
2525
}
2626

2727
downloadObservations(format, view_name) {
28-
this._dataService.downloadObservations(this._storeService.idSyntheseList, format, view_name);
28+
this._dataService.downloadObservations(
29+
Array.from(this._storeService.idSyntheseList),
30+
format,
31+
view_name
32+
);
2933
}
3034

3135
downloadTaxons(format, filename) {
32-
this._dataService.downloadTaxons(this._storeService.idSyntheseList, format, filename);
36+
this._dataService.downloadTaxons(
37+
Array.from(this._storeService.idSyntheseList),
38+
format,
39+
filename
40+
);
3341
}
3442

3543
downloadStatusOrMetadata(url, filename) {

frontend/src/app/syntheseModule/synthese.component.html

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,43 +15,40 @@
1515
data-qa="pnx-synthese"
1616
>
1717
<nav
18-
[(ngbCollapse)]="isCollapseSyntheseNavBar"
19-
#navBar
2018
id="sidebar"
19+
#navBar
20+
[(ngbCollapse)]="isSearchBarReduced"
2121
>
2222
<pnx-synthese-search (searchClicked)="onSearchEvent()"></pnx-synthese-search>
2323
</nav>
2424

2525
<div class="row row-sm page-content">
2626
<button
27-
(click)="isCollapseSyntheseNavBar = !isCollapseSyntheseNavBar"
28-
[attr.aria-expanded]="!isCollapseSyntheseNavBar"
29-
#buttonToggle
30-
[style.left.px]="marginButton"
31-
(click)="mooveButton()"
32-
type="button"
3327
id="sidebarCollapse"
3428
class="btn btn-toogle-sidenav box-shadow"
29+
type="button"
30+
(click)="isSearchBarReduced = !isSearchBarReduced"
31+
[attr.aria-expanded]="!isSearchBarReduced"
3532
>
3633
<i
37-
[hidden]="searchBarHidden"
34+
[hidden]="isSearchBarReduced"
3835
class="fa fa-caret-left"
3936
></i>
4037
<i
41-
[hidden]="!searchBarHidden"
38+
[hidden]="!isSearchBarReduced"
4239
class="fa fa-caret-right"
4340
></i>
4441
</button>
4542
<div class="col-sm-12 col-md-7 padding-sm">
4643
<pnx-synthese-carte
4744
(onAreasToggle)="fetchOrRenderData($event)"
48-
[inputSyntheseData]="_mapListService.geojsonData"
45+
[inputSyntheseData]="mapListService.geojsonData"
4946
></pnx-synthese-carte>
5047
</div>
5148
<div class="col-sm-12 col-md-5 padding-sm">
5249
<pnx-synthese-list
53-
[inputSyntheseData]="_mapListService.tableData"
54-
[searchBarHidden]="searchBarHidden"
50+
[inputSyntheseData]="mapListService.tableData"
51+
[searchBarHidden]="isSearchBarReduced"
5552
data-qa="pnx-synthese-list"
5653
></pnx-synthese-list>
5754
</div>

frontend/src/app/syntheseModule/synthese.component.scss

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -17,30 +17,22 @@
1717
@media (min-width: 1000px) {
1818
#sidebar {
1919
width: 250px;
20-
// min-width: 250px;
21-
// max-width: 250px;
2220
}
2321
#sidebar.active {
2422
margin-left: -250px;
2523
}
2624
}
27-
2825
@media (min-width: 1200px) {
2926
#sidebar {
3027
width: 300px;
31-
// min-width: 250px;
32-
// max-width: 250px;
3328
}
3429
#sidebar.active {
3530
margin-left: -300px;
3631
}
3732
}
38-
3933
@media (min-width: 1500px) {
4034
#sidebar {
4135
width: 350px;
42-
// min-width: 250px;
43-
// max-width: 250px;
4436
}
4537
#sidebar.active {
4638
margin-left: -350px;
@@ -50,26 +42,20 @@
5042
.btn-toogle-sidenav {
5143
z-index: 10000;
5244
position: absolute;
53-
//left: 248px;
54-
padding: 0px 5px;
55-
padding: 0px 5px;
56-
border-bottom-left-radius: 0px;
57-
border-top-left-radius: 0px;
45+
top: 50%;
46+
padding: 0 5px;
47+
height: 50px;
48+
border-bottom-left-radius: 0;
49+
border-top-left-radius: 0;
50+
background-color: white;
5851
}
5952
.btn-toogle-sidenav:focus {
6053
box-shadow:
6154
4px 5px 8px 0 rgba(0, 0, 0, 0.2),
6255
0 6px 20px 0 rgba(0, 0, 0, 0.19) !important;
6356
}
64-
6557
#sidebar.active .btn-toogle-sidenav {
66-
z-index: 10000;
67-
position: absolute;
68-
left: 0px;
69-
padding: 0px 5px;
70-
padding: 0px 5px;
71-
border-bottom-left-radius: 0px;
72-
border-top-left-radius: 0px;
58+
left: 0;
7359
}
7460

7561
.page-content {

0 commit comments

Comments
 (0)