diff --git a/package-lock.json b/package-lock.json index 6e3087732e76d2d096657309fa3763cd63855f91..39968bba3cfff64c3bdff2b2f6e219961564223f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3996,11 +3996,13 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true + "bundled": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4013,15 +4015,18 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "concat-map": { "version": "0.0.1", - "bundled": true + "bundled": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -4124,7 +4129,8 @@ }, "inherits": { "version": "2.0.3", - "bundled": true + "bundled": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -4134,6 +4140,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -4146,17 +4153,20 @@ "minimatch": { "version": "3.0.4", "bundled": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true + "bundled": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -4173,6 +4183,7 @@ "mkdirp": { "version": "0.5.1", "bundled": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -4245,7 +4256,8 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "bundled": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -4255,6 +4267,7 @@ "once": { "version": "1.4.0", "bundled": true, + "optional": true, "requires": { "wrappy": "1" } @@ -4360,6 +4373,7 @@ "string-width": { "version": "1.0.2", "bundled": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", diff --git a/src/app/app.component.css b/src/app/app.component.css index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fc2b98b5d8a2ff2a62b4af4667905278e9d2bd7f 100644 --- a/src/app/app.component.css +++ b/src/app/app.component.css @@ -0,0 +1,6 @@ +#progress { + position: fixed; + top: 0; + left: 0; + width: 100vw; +} diff --git a/src/app/app.component.html b/src/app/app.component.html index b6776580b2eda973de87abed0bf7b424058a2ae3..eb3746107bd5a455352e9a681d346d1efef75728 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,2 +1,2 @@ -<app-splash *ngIf="!active"></app-splash> +<mat-progress-bar id="progress" mode="indeterminate" color="primary" *ngIf="loading"></mat-progress-bar> <router-outlet></router-outlet> diff --git a/src/app/app.component.ts b/src/app/app.component.ts index a2789ff7d0d0769af3d65704c90a47576513bb23..4e340b53cdc5bc0196b33a40cb12608cd7886de0 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,6 +1,6 @@ import { Component, OnInit, OnDestroy } from '@angular/core'; import { Title } from '@angular/platform-browser'; -import { Router, ActivatedRoute, NavigationStart, NavigationEnd } from '@angular/router'; +import { Router, ActivatedRoute, NavigationEnd } from '@angular/router'; import { Observable, Subscription } from 'rxjs'; import { filter, map, mergeMap } from 'rxjs/operators'; import { LoaderService } from './core'; @@ -12,7 +12,7 @@ import { LoaderService } from './core'; }) export class AppComponent implements OnInit, OnDestroy { - active = false; + loading = false; sub = new Subscription(); constructor( @@ -28,18 +28,11 @@ export class AppComponent implements OnInit, OnDestroy { ); this.sub.add( this.loaderService.loading().subscribe(loading => { - this.active = !loading; + this.loading = loading; }) ); } - private active$(): Observable<boolean> { - return this.router.events.pipe( - filter(event => event instanceof NavigationStart || event instanceof NavigationEnd), - map(event => event instanceof NavigationEnd), - ); - } - private title$(): Observable<string> { return this.router.events.pipe( // When a navigation finishes diff --git a/src/app/app.module.ts b/src/app/app.module.ts index ae7dc1bfbcf803c0a3d094710e6dca6548586564..0a79000a449f1af148df3ee14ff6526719bb1653 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -34,14 +34,12 @@ import { LoginComponent } from './login/login.component'; // Services import { MessageService } from './core'; -import { SplashComponent } from './splash/splash.component'; registerLocaleData(localeFR); @NgModule({ declarations: [ AppComponent, - SplashComponent, LoginComponent, ], imports: [ diff --git a/src/app/core/api.ts b/src/app/core/api.ts index 0721be230d3a98be74945cb0f67d4698f512fdaa..792acf9b518cc71868afd67c5940b98b1202b8b0 100644 --- a/src/app/core/api.ts +++ b/src/app/core/api.ts @@ -4,17 +4,14 @@ import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { environment } from 'environments/environment'; - export class ShowcaseApiService { apiUrl = environment.showcaseApiUrl; } - export class ApiService { apiUrl = environment.apiUrl; } - export abstract class ModelApiService<T> extends ApiService { abstract baseUrl: string; diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts index be67d8586e257685732ede189e921f30bce29b39..1788ec7f8895f2ed40eb3df2805daa2da635988d 100644 --- a/src/app/core/core.module.ts +++ b/src/app/core/core.module.ts @@ -6,7 +6,6 @@ import { HTTP_INTERCEPTORS } from '@angular/common/http'; import { MarkdownModule, MarkdownComponent, MarkdownPipe } from 'ngx-markdown'; import { TokenInterceptor } from './auth'; import { LoaderService } from './loader.service'; -import { LoaderInterceptor } from './loader.interceptor'; import { MessageModule } from './messages'; import { FuzzyPipe, LineBreaksPipe } from './pipes'; import { NotFoundComponent } from './not-found'; @@ -33,7 +32,6 @@ import { ErrorPageComponent } from './error-page'; providers: [ LoaderService, { provide: HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true }, - { provide: HTTP_INTERCEPTORS, useClass: LoaderInterceptor, multi: true }, ], exports: [ MessageModule, diff --git a/src/app/core/document.service.ts b/src/app/core/document.service.ts index df836032f68c52e688c8785bae4f3584a602a08f..463c31e3684712b6480e7756a1698f2e64fc869b 100644 --- a/src/app/core/document.service.ts +++ b/src/app/core/document.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable, of } from 'rxjs'; -import { map, tap, catchError } from 'rxjs/operators'; +import { map, catchError } from 'rxjs/operators'; import { environment } from 'environments/environment'; import { ActivatedRouteSnapshot, RouterStateSnapshot, Resolve } from '@angular/router'; diff --git a/src/app/core/geocoding.service.ts b/src/app/core/geocoding.service.ts index e215afd123aa192219c8bfe5be882030cedd68ed..ed6bcb866ed2a51e1b961f4090f55f06000b4b93 100644 --- a/src/app/core/geocoding.service.ts +++ b/src/app/core/geocoding.service.ts @@ -1,8 +1,8 @@ import { Injectable } from '@angular/core'; import { MapsAPILoader } from '@agm/core'; import { Resolve } from '@angular/router'; -import { Observable, BehaviorSubject, from } from 'rxjs'; -import { filter, map, mergeMap } from 'rxjs/operators'; +import { Observable, from } from 'rxjs'; +import { map } from 'rxjs/operators'; declare const google: any; diff --git a/src/app/core/loader.interceptor.ts b/src/app/core/loader.interceptor.ts deleted file mode 100644 index 45556413d290be94ee0290ba61b0b4b7d12a41f9..0000000000000000000000000000000000000000 --- a/src/app/core/loader.interceptor.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Injectable } from '@angular/core'; -import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http'; -import { Observable, timer } from 'rxjs'; -import { tap } from 'rxjs/operators'; -import { LoaderService } from './loader.service'; - - -@Injectable() -export class LoaderInterceptor implements HttpInterceptor { - - constructor(private loaderService: LoaderService) { } - - intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { - this.loaderService.loading$.next(true); - return next.handle(request).pipe( - tap(() => this.loaderService.loading$.next(false)), - ); - } - -} diff --git a/src/app/core/loader.service.ts b/src/app/core/loader.service.ts index 013b0d2c75b0081fc837d20f6dd58b0fc8fe6206..9b349b5ad5cd1bb478e965f9530d88c54e469e54 100644 --- a/src/app/core/loader.service.ts +++ b/src/app/core/loader.service.ts @@ -1,17 +1,19 @@ import { Injectable } from '@angular/core'; +import { Router, NavigationStart, NavigationEnd, NavigationCancel } from '@angular/router'; import { Observable, BehaviorSubject } from 'rxjs'; -import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; +import { map, debounceTime, tap, filter } from 'rxjs/operators'; @Injectable() export class LoaderService { - public loading$: BehaviorSubject<boolean> = new BehaviorSubject(false); + constructor(private router: Router) {} public loading(): Observable<boolean> { - return this.loading$.asObservable().pipe( - // Prevent having multiple false's or multiple true's - distinctUntilChanged(), + return this.router.events.pipe( + filter(e => e instanceof NavigationStart || e instanceof NavigationEnd || e instanceof NavigationCancel), + debounceTime(100), // don't mark fast navigation changes as navigating + map((e) => e instanceof NavigationStart), ); } diff --git a/src/app/core/resolvers/generic.ts b/src/app/core/resolvers/generic.ts index 9a63221deed88501ee4e88031d5835e87c8e519c..a506e79c4aaf9b9b2b31fdb4a52c9a67aabe381e 100644 --- a/src/app/core/resolvers/generic.ts +++ b/src/app/core/resolvers/generic.ts @@ -11,7 +11,6 @@ interface Retrievable<T> { retrieve: (id: any) => Observable<T>; } - export abstract class ObjectListResolver<T> implements Resolve<T[]> { public service: Listable<T>; @@ -23,7 +22,6 @@ export abstract class ObjectListResolver<T> implements Resolve<T[]> { } } - export abstract class ObjectResolver<T> implements Resolve<T> { public service: Retrievable<T>; diff --git a/src/app/core/resolvers/simple.resolver.ts b/src/app/core/resolvers/simple.resolver.ts index 401ec5676c5a6eb84d0d7faafa43a1de37d69660..30dc9ca6a3ce632c7d52ad75e52ff9b7636e05e3 100644 --- a/src/app/core/resolvers/simple.resolver.ts +++ b/src/app/core/resolvers/simple.resolver.ts @@ -3,8 +3,6 @@ import { Observable, of } from 'rxjs'; import { map, tap, catchError } from 'rxjs/operators'; import { HttpClient } from '@angular/common/http'; import { Resolve } from '@angular/router'; -import { environment } from 'environments/environment'; - @Injectable() export abstract class SimpleListResolver<T> implements Resolve<T[]> { diff --git a/src/app/showcase-site/shared/action.service.ts b/src/app/showcase-site/shared/action.service.ts index 545c69c3ab02d9b8c7ff1e60f2b8c4ba6257ca51..e185a6301586bf3d150e01470c3def439dfde088 100644 --- a/src/app/showcase-site/shared/action.service.ts +++ b/src/app/showcase-site/shared/action.service.ts @@ -1,8 +1,7 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs'; -import { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; -import { map, tap, filter } from 'rxjs/operators'; +import { map } from 'rxjs/operators'; import { Action } from './action.model'; import { environment } from 'environments/environment'; import { ObjectListResolver } from 'app/core'; diff --git a/src/app/showcase-site/shared/article.service.ts b/src/app/showcase-site/shared/article.service.ts index d29d8d102966b1f216ccaf68e023f5173d226dd1..796e221b2a6a3b374f3a2f8138b9fd6c5c719efc 100644 --- a/src/app/showcase-site/shared/article.service.ts +++ b/src/app/showcase-site/shared/article.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs'; -import { map, tap } from 'rxjs/operators'; +import { map } from 'rxjs/operators'; import { Article } from './article.model'; import { environment } from 'environments/environment'; import { ObjectListResolver, ObjectResolver } from 'app/core'; diff --git a/src/app/showcase-site/showcase-site-routing.module.ts b/src/app/showcase-site/showcase-site-routing.module.ts index 5f49db97e16685aac7d79031672f5616d426f3b1..df7ddaf805dc88c977134d885bdafbe0b9cfdf09 100644 --- a/src/app/showcase-site/showcase-site-routing.module.ts +++ b/src/app/showcase-site/showcase-site-routing.module.ts @@ -32,7 +32,7 @@ const routes: Routes = [ resolve: { 'actions': ActionsResolver, 'partners': PartnersResolver, - }, + }, data: { title: 'Accueil' }, }, { diff --git a/src/app/splash/splash.component.html b/src/app/splash/splash.component.html deleted file mode 100644 index 569a3dccfe6b0a0f3a92de7395b380418246694d..0000000000000000000000000000000000000000 --- a/src/app/splash/splash.component.html +++ /dev/null @@ -1,3 +0,0 @@ -<div id="splash"> - <mat-progress-bar mode="indeterminate" color="primary"></mat-progress-bar> -</div> diff --git a/src/app/splash/splash.component.scss b/src/app/splash/splash.component.scss deleted file mode 100644 index 0ad89ce139f8c04e2edea29a60c9a4ca37955aec..0000000000000000000000000000000000000000 --- a/src/app/splash/splash.component.scss +++ /dev/null @@ -1,17 +0,0 @@ -#splash { - z-index: 9999999; - position: fixed; - top: 0; - left: 0; - width: 100vw; - - i { - background: white; - border-radius: 50%; - width: 1.3em; - height: 1.3em; - display: flex; - justify-content: center; - align-items: center; - } -} diff --git a/src/app/splash/splash.component.ts b/src/app/splash/splash.component.ts deleted file mode 100644 index 2f403a885cdcc6ed2e373b939125b8333aa44e2c..0000000000000000000000000000000000000000 --- a/src/app/splash/splash.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'app-splash', - templateUrl: './splash.component.html', - styleUrls: ['./splash.component.scss'] -}) -export class SplashComponent implements OnInit { - - constructor() { } - - ngOnInit() { - } - -}