[Library | Trunk]: Add full page loading. Add promise on get stakeholder
git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-services-library/trunk/ng-openaire-library/src/app@59723 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
parent
7d0851fae7
commit
ed15ef8169
|
@ -5,7 +5,7 @@
|
||||||
{{error}}
|
{{error}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-grid" uk-grid>
|
<div class="uk-grid uk-flex uk-flex-middle" uk-grid>
|
||||||
<div class="uk-width-expand uk-flex uk-flex-left@m uk-flex-center">
|
<div class="uk-width-expand uk-flex uk-flex-left@m uk-flex-center">
|
||||||
<ul class="uk-subnav uk-subnav-pill">
|
<ul class="uk-subnav uk-subnav-pill">
|
||||||
<li [class.uk-active]="showMembers" (click)="showMembers = true">
|
<li [class.uk-active]="showMembers" (click)="showMembers = true">
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
import {Injectable} from "@angular/core";
|
import {Injectable} from "@angular/core";
|
||||||
import {HttpClient} from "@angular/common/http";
|
import {HttpClient} from "@angular/common/http";
|
||||||
import {BehaviorSubject, Observable} from "rxjs";
|
import {BehaviorSubject, from, Observable} from "rxjs";
|
||||||
import {Indicator, Section, Stakeholder, StakeholderInfo, Visibility} from "../entities/stakeholder";
|
import {Indicator, Section, Stakeholder, StakeholderInfo, Visibility} from "../entities/stakeholder";
|
||||||
import {HelperFunctions} from "../../utils/HelperFunctions.class";
|
import {HelperFunctions} from "../../utils/HelperFunctions.class";
|
||||||
import {map} from "rxjs/operators";
|
import {map} from "rxjs/operators";
|
||||||
|
import {ActivatedRoute} from "@angular/router";
|
||||||
|
import {properties} from "../../../../environments/environment";
|
||||||
|
|
||||||
let maps: string[] = ['parameters', 'filters'];
|
let maps: string[] = ['parameters', 'filters'];
|
||||||
|
|
||||||
|
@ -13,19 +15,32 @@ let maps: string[] = ['parameters', 'filters'];
|
||||||
export class StakeholderService {
|
export class StakeholderService {
|
||||||
|
|
||||||
private stakeholderSubject: BehaviorSubject<Stakeholder> = null;
|
private stakeholderSubject: BehaviorSubject<Stakeholder> = null;
|
||||||
|
private promise: Promise<any>;
|
||||||
|
|
||||||
constructor(private http: HttpClient) {
|
constructor(private http: HttpClient, private route: ActivatedRoute) {
|
||||||
this.stakeholderSubject = new BehaviorSubject<Stakeholder>(null);
|
this.stakeholderSubject = new BehaviorSubject<Stakeholder>(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
getStakeholder(url: string, alias:string): Observable<Stakeholder> {
|
getStakeholder(alias:string): Observable<Stakeholder> {
|
||||||
/*return new BehaviorSubject<Stakeholder>(
|
if(!this.stakeholderSubject.value || this.stakeholderSubject.value.alias !== alias) {
|
||||||
StakeholderCreator.createFunderFromDefaultProfile("ec","funder","ec__________::EC",
|
this.promise = new Promise<any>((resolve, reject) => {
|
||||||
"European Commission","EC",
|
this.http.get<Stakeholder>(properties.monitorServiceAPIURL + '/stakeholder/' + encodeURIComponent(alias)).pipe(map(stakeholder => {
|
||||||
false,"ec",true,true)).asObservable();*/
|
return this.formalize(stakeholder);
|
||||||
return this.http.get<Stakeholder>(url + '/stakeholder/' + encodeURIComponent(alias)).pipe(map(stakeholder => {
|
})).subscribe(stakeholder => {
|
||||||
return this.formalize(stakeholder);
|
this.stakeholderSubject.next(stakeholder);
|
||||||
}));
|
resolve();
|
||||||
|
}, error => {
|
||||||
|
this.stakeholderSubject.next(null);
|
||||||
|
reject();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return from(this.getStakeholderAsync());
|
||||||
|
}
|
||||||
|
|
||||||
|
async getStakeholderAsync() {
|
||||||
|
await this.promise;
|
||||||
|
return this.stakeholderSubject.getValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
getAllStakeholders(url: string, type: string = null): Observable<Stakeholder[]> {
|
getAllStakeholders(url: string, type: string = null): Observable<Stakeholder[]> {
|
||||||
|
|
|
@ -3,18 +3,28 @@ import {Component, Input} from "@angular/core";
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'loading',
|
selector: 'loading',
|
||||||
template: `
|
template: `
|
||||||
<div class="uk-flex uk-flex-center uk-margin-small-top">
|
<ng-template [ngIf]="full" [ngIfElse]="loading">
|
||||||
|
<div class="uk-position-relative" style="height: 100vh; width: 100vw; z-index: 1000; background: transparent">
|
||||||
|
<div class="uk-position-center">
|
||||||
|
<ng-container [ngTemplateOutlet]="loading"></ng-container>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ng-template>
|
||||||
|
<ng-template #loading>
|
||||||
|
<div class="uk-flex uk-flex-center uk-margin-small-top">
|
||||||
<span class="portal-color uk-icon uk-spinner">
|
<span class="portal-color uk-icon uk-spinner">
|
||||||
<svg width="60" height="60" viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg" data-svg="spinner"><circle
|
<svg width="60" height="60" viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg" data-svg="spinner"><circle
|
||||||
fill="none" stroke="#000" cx="15" cy="15" r="14" style="stroke-width: 2px;"></circle></svg>
|
fill="none" stroke="#000" cx="15" cy="15" r="14" style="stroke-width: 2px;"></circle></svg>
|
||||||
</span>
|
</span>
|
||||||
</div>`
|
</div>
|
||||||
|
</ng-template>`
|
||||||
})
|
})
|
||||||
export class LoadingComponent {
|
export class LoadingComponent {
|
||||||
/**
|
/**
|
||||||
* Possible values '': blue, 'success': green, 'warning': orange and 'danger': red
|
* Possible values '': blue, 'success': green, 'warning': orange and 'danger': red
|
||||||
*/
|
*/
|
||||||
@Input() color: 'success' | 'warning' | 'danger' = null;
|
@Input() color: 'success' | 'warning' | 'danger' = null;
|
||||||
|
@Input() full: boolean = false;
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue