Files
SkydiveLogs/Front/skydivelogs-app/src/app/app.module.ts
2023-05-05 17:59:11 +02:00

219 lines
7.8 KiB
TypeScript

import { BrowserModule } from "@angular/platform-browser";
import { APP_INITIALIZER, NgModule } from "@angular/core";
import { RouterModule, Routes } from "@angular/router";
import { HttpClient, HttpClientModule, HTTP_INTERCEPTORS } from "@angular/common/http";
import { DatePipe } from '@angular/common';
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { AppComponent } from "./app.component";
import { environment } from "../environments/environment";
import { SummaryComponent } from "./summary/summary.component";
import { ListOfJumpsComponent } from "./list-of-jumps/list-of-jumps.component";
import { ListOfDzsComponent } from "./list-of-dzs/list-of-dzs.component";
import { NewJumpComponent } from "./new-jump/new-jump.component";
import { ListOfAircraftsComponent } from "./list-of-aircrafts/list-of-aircrafts.component";
import { ListOfJumpTypesComponent } from "./list-of-jump-types/list-of-jump-types.component";
import { ListOfGearsComponent } from "./list-of-gears/list-of-gears.component";
import { NewAircraftComponent } from "./new-aircraft/new-aircraft.component";
import { NewGearComponent } from "./new-gear/new-gear.component";
import { NewDropZoneComponent } from "./new-drop-zone/new-drop-zone.component";
import { NewJumpTypeComponent } from "./new-jump-type/new-jump-type.component";
import { DefaultComponent } from "./default/default.component";
import { LoginComponent } from "./login/login.component";
import { CreateUserComponent } from "./create-user/create-user.component";
import { LoginUserComponent } from "./login-user/login-user.component";
import { DateService } from "../services/date.service";
import { AircraftService } from "../services/aircraft.service";
import { DropzoneService } from "../services/dropzone.service";
import { GearService } from "../services/gear.service";
import { JumpService } from "../services/jump.service";
import { JumpTypeService } from "../services/jump-type.service";
import { StatsService } from "../services/stats.service";
import { ServiceComm } from "../services/service-comm.service";
import { RequestCache } from "../services/request-cache.service";
import { AuthGuardService } from "../services/auth-guard.service";
import { ImageService } from "../services/image.service";
import { ConfigurationHelper } from "../services/configuration-helper";
import { ServiceCacheApi } from "../services/service-cache-api.service";
import { TunnelService } from "../services/tunnel.service";
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
import { MatAutocompleteModule } from "@angular/material/autocomplete";
import { MatButtonModule } from "@angular/material/button";
import { MatCheckboxModule } from "@angular/material/checkbox";
import { MatOptionModule, MatNativeDateModule } from "@angular/material/core";
import { MatDatepickerModule } from "@angular/material/datepicker";
import { MatFormFieldModule } from "@angular/material/form-field";
import { MatIconModule } from "@angular/material/icon";
import { MatInputModule } from "@angular/material/input";
import { MatPaginatorModule } from "@angular/material/paginator";
import { MatProgressSpinnerModule } from "@angular/material/progress-spinner";
import { MatProgressBarModule } from "@angular/material/progress-bar";
import { MatSelectModule } from "@angular/material/select";
import { MatTableModule } from "@angular/material/table";
import { MatTabsModule } from "@angular/material/tabs";
import { MatDialogModule } from "@angular/material/dialog";
import { MatCardModule } from "@angular/material/card";
import { MatRadioModule } from "@angular/material/radio";
import { MatSidenavModule } from '@angular/material/sidenav';
import { MatListModule } from '@angular/material/list';
import { MatToolbarModule } from '@angular/material/toolbar';
import { JwtAuthInterceptor } from "../interceptor/jwt-auth.interceptor";
import { ErrorInterceptor } from "../interceptor/error.interceptor";
import { UserProfileComponent } from "./user-profile/user-profile.component";
import { ListOfImagesComponent } from "./list-of-images/list-of-images.component";
import { JumpInfosComponent } from './jump-infos/jump-infos.component';
import { NewTunnelFlightComponent } from './new-tunnel-flight/new-tunnel-flight.component';
const appRoutes: Routes = [
{ path: "", component: DefaultComponent, canActivate: [AuthGuardService] },
{
path: "summary",
component: SummaryComponent,
canActivate: [AuthGuardService]
},
{
path: "jumps",
component: ListOfJumpsComponent,
canActivate: [AuthGuardService]
},
{
path: "dzs",
component: ListOfDzsComponent,
canActivate: [AuthGuardService]
},
{
path: "newjump",
component: NewJumpComponent,
canActivate: [AuthGuardService]
},
{
path: "aircrafts",
component: ListOfAircraftsComponent,
canActivate: [AuthGuardService]
},
{
path: "jumpTypes",
component: ListOfJumpTypesComponent,
canActivate: [AuthGuardService]
},
{
path: "gears",
component: ListOfGearsComponent,
canActivate: [AuthGuardService]
},
{
path: "user",
component: UserProfileComponent,
canActivate: [AuthGuardService]
},
{
path: "newTunnelFlight",
component: NewTunnelFlightComponent,
canActivate: [AuthGuardService]
},
{ path: "login", component: LoginComponent },
];
// AOT compilation support
export function httpTranslateLoader(http: HttpClient) {
return new TranslateHttpLoader(http);
}
// Déclaration de la fonction d'initialisation de la configuration
export function initConfig(configService: ConfigurationHelper) {
return () => configService.load(environment.env);
}
@NgModule({
declarations: [
AppComponent,
SummaryComponent,
ListOfJumpsComponent,
ListOfDzsComponent,
NewJumpComponent,
ListOfAircraftsComponent,
ListOfJumpTypesComponent,
ListOfGearsComponent,
NewAircraftComponent,
NewGearComponent,
NewDropZoneComponent,
NewJumpTypeComponent,
DefaultComponent,
LoginComponent,
CreateUserComponent,
LoginUserComponent,
UserProfileComponent,
ListOfImagesComponent,
JumpInfosComponent,
NewTunnelFlightComponent,
],
imports: [
RouterModule.forRoot(
appRoutes,
{ enableTracing: !environment.production } // <-- debugging purposes only
// { enableTracing: !environment.production, relativeLinkResolution: 'legacy' } // <-- debugging purposes only
),
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: httpTranslateLoader,
deps: [HttpClient]
}
}),
ReactiveFormsModule,
FormsModule,
BrowserModule,
BrowserAnimationsModule,
MatPaginatorModule,
MatTableModule,
MatSelectModule,
MatOptionModule,
MatFormFieldModule,
MatCheckboxModule,
MatDatepickerModule,
MatNativeDateModule,
MatInputModule,
MatButtonModule,
MatIconModule,
MatAutocompleteModule,
MatProgressSpinnerModule,
MatProgressBarModule,
MatTabsModule,
MatDialogModule,
MatCardModule,
MatRadioModule,
MatSidenavModule,
MatListModule,
MatToolbarModule
],
exports: [HttpClientModule],
providers: [
TunnelService,
ImageService,
AircraftService,
DropzoneService,
GearService,
JumpService,
JumpTypeService,
StatsService,
ServiceComm,
DateService,
RequestCache,
ConfigurationHelper,
DatePipe,
ServiceCacheApi,
{ provide: APP_INITIALIZER, useFactory: initConfig, deps: [ConfigurationHelper], multi: true },
{ provide: HTTP_INTERCEPTORS, useClass: JwtAuthInterceptor, multi: true },
{ provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true }
],
bootstrap: [AppComponent],
})
export class AppModule {
}