Project

General

Profile

« Previous | Next » 

Revision 57673

[Monitor Dashboard]: Complete indicator save and reorder.

View differences:

stakeholder.service.ts
1 1
import {Injectable} from "@angular/core";
2 2
import {HttpClient} from "@angular/common/http";
3 3
import {BehaviorSubject, Observable} from "rxjs";
4
import {Indicator, Stakeholder} from "../utils/entities/stakeholder";
4
import {Indicator, IndicatorPath, Stakeholder} from "../utils/entities/stakeholder";
5 5
import {HelperFunctions} from "../openaireLibrary/utils/HelperFunctions.class";
6 6
import {map} from "rxjs/operators";
7 7

  
8
let maps: string[] = ['parameters', 'filters'];
9

  
8 10
@Injectable({
9 11
  providedIn: "root"
10 12
})
......
17 19
  }
18 20

  
19 21
  getStakeholder(url: string, alias:string): Observable<Stakeholder> {
20
    return new BehaviorSubject<Stakeholder>(Stakeholder.createECStakeholder()).asObservable();
21
    // return this.http.get<Stakeholder>(url + '/stakeholder/' + encodeURIComponent(alias)).pipe(map(stakeholder => {
22
    //   return this.formalizeStakeholder([stakeholder])[0];
23
    // }));
22
    /*return new BehaviorSubject<Stakeholder>(
23
      StakeholderCreator.createFunderFromDefaultProfile("ec","funder","ec__________::EC",
24
        "European Commission","EC",
25
        false,"ec",true,true)).asObservable();*/
26
    return this.http.get<Stakeholder>(url + '/stakeholder/' + encodeURIComponent(alias)).pipe(map(stakeholder => {
27
      return this.formalize(stakeholder);
28
    }));
24 29
  }
25 30

  
26 31
  getAllStakeholders(url: string, type: string = null): Observable<Stakeholder[]> {
27 32
    return this.http.get<Stakeholder[]>(url + '/stakeholder/all' + (type)?('?type=' + type):'').pipe(map(stakeholders => {
28
      return this.formalizeStakeholder(stakeholders);
33
      return this.formalize(stakeholders);
29 34
    }));
30 35
  }
31 36

  
32 37
  getStakeholders(url: string, type: string = null): Observable<Stakeholder[]> {
33 38
    return this.http.get<Stakeholder[]>(url + '/stakeholder' + (type)?('?type=' + type):'').pipe(map(stakeholders => {
34
      return this.formalizeStakeholder(stakeholders);
39
      return this.formalize(stakeholders);
35 40
    }));
36 41
  }
37 42

  
38 43
  getDefaultStakeholders(url: string, type: string = null): Observable<Stakeholder[]> {
39 44
    return this.http.get<Stakeholder[]>(url + '/stakeholder/default' + (type)?('?type=' + type):'').pipe(map(stakeholders => {
40
      return this.formalizeStakeholder(stakeholders);
45
      return this.formalize(stakeholders);
41 46
    }));
42 47
  }
43 48

  
49
  buildStakeholder(url: string, stakeholder: Stakeholder): Observable<Stakeholder> {
50
    return this.http.post<Stakeholder>(url + '/build-stakeholder', stakeholder).pipe(map(stakeholder => {
51
      return this.formalize(stakeholder);
52
    }));
53
  }
54

  
44 55
  saveStakeholder(url: string, stakeholder: Stakeholder): Observable<Stakeholder> {
45 56
    return this.http.post<Stakeholder>(url + '/stakeholder/save', stakeholder).pipe(map(stakeholder => {
46
      return this.formalizeStakeholder([stakeholder])[0];
57
      return this.formalize(stakeholder);
47 58
    }));
48 59
  }
49 60

  
50
  saveIndicator(url: string, path: string[], indicator: Indicator): Observable<Indicator> {
61
  saveElement(url: string, element: any, path: string[] = []): Observable<any> {
51 62
    path = HelperFunctions.encodeArray(path);
52
    return this.http.post<Indicator>(url + '/' + path.join('/') +
53
      '/indicator/save', indicator);
63
    return this.http.post<any>(url + ((path.length > 0)?'/':'') + path.join('/') +
64
      '/save', element).pipe(map(element => {
65
        return this.formalize(element);
66
    }));
54 67
  }
55 68

  
56 69
  deleteElement(url: string, path: string[]): Observable<any> {
57 70
    path = HelperFunctions.encodeArray(path);
58
    return this.http.delete<any>(url + '/' + path.join('/'))
71
    return this.http.delete<any>(url + '/' + path.join('/') + '/delete');
59 72
  }
60 73

  
74
  reorderIndicators(url: string, path: string[], indicators: Indicator[], type: string = 'chart'): Observable<boolean> {
75
    path = HelperFunctions.encodeArray(path);
76
    return this.http.post<boolean>(url + '/' + path.join('/') + '/' + type + '/reorder', indicators);
77
  }
78

  
61 79
  getStakeholderAsObservable(): Observable<Stakeholder> {
62 80
    return this.stakeholderSubject.asObservable();
63 81
  }
......
70 88
    this.stakeholderSubject.next(stakeholder);
71 89
  }
72 90

  
73
  private formalizeStakeholder(stakeholders: Stakeholder[]): Stakeholder[] {
74
    stakeholders.forEach( stakeholder => {
75
      stakeholder.topics.forEach( topic => {
76
        topic.categories.forEach( category => {
77
          category.subCategories.forEach(subcategory => {
78
            subcategory.charts.forEach(indicator => {
79
              indicator.indicatorPaths.forEach(indicatorPath => {
80
                if(indicatorPath.parameters) {
81
                  indicatorPath.parameters = new Map<string, string>(Object.entries(indicatorPath.parameters));
82
                }
83
                if(indicatorPath.filters) {
84
                  // let filters = new Map<string, Map<string, string>>();
85
                  // Object.entries(indicatorPath.filters).forEach(([key, value]) => {
86
                  //   filters.set(key, new Map<string, string>(Object.entries(value)));
87
                  // });
88
                  indicatorPath.filters =  new Map<string, string>(Object.entries(indicatorPath.filters));
89
                }
90
              });
91
            });
92
          });
93
        });
94
      });
95
    });
96
    return stakeholders;
91
  private formalize(element: any) {
92
    return HelperFunctions.copy(element);
97 93
  }
98 94
}

Also available in: Unified diff