diff --git a/Front/skydivelogs-app/src/app/app.config.ts b/Front/skydivelogs-app/src/app/app.config.ts new file mode 100644 index 0000000..c06b41f --- /dev/null +++ b/Front/skydivelogs-app/src/app/app.config.ts @@ -0,0 +1,177 @@ +import { BrowserModule } from "@angular/platform-browser"; +import { + NgModule, + importProvidersFrom, + inject, + provideAppInitializer, +} from "@angular/core"; +import { ApplicationConfig, provideZoneChangeDetection } from "@angular/core"; +import { TranslateLoader, TranslateModule } from "@ngx-translate/core"; +import { TranslateHttpLoader } from "@ngx-translate/http-loader"; +import { provideRouter, RouterModule } from "@angular/router"; +import { DatePipe } from "@angular/common"; +import { HttpClient, HTTP_INTERCEPTORS } from "@angular/common/http"; + +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 { 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"; +import { ListOfTunnelFlightsComponent } from "./list-of-tunnel-flights/list-of-tunnel-flights.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 { 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 { TunnelFlightService } from "../services/tunnel-flight.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 { provideCharts, withDefaultRegisterables } from "ng2-charts"; + +import { JwtAuthInterceptor } from "../interceptor/jwt-auth.interceptor"; +import { ErrorInterceptor } from "../interceptor/error.interceptor"; +import { environment } from "../environments/environment"; + +import { AppComponent } from "./app.component"; +import { routes } from "./app.routes"; + +// 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); +} + +export const appConfig: ApplicationConfig = { + providers: [ + TunnelService, + TunnelFlightService, + ImageService, + AircraftService, + DropzoneService, + GearService, + JumpService, + JumpTypeService, + StatsService, + ServiceComm, + DateService, + RequestCache, + ConfigurationHelper, + DatePipe, + ServiceCacheApi, + provideAppInitializer(() => { + const initializerFn = initConfig(inject(ConfigurationHelper)); + return initializerFn(); + }), + { provide: HTTP_INTERCEPTORS, useClass: JwtAuthInterceptor, multi: true }, + { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true }, + provideCharts(withDefaultRegisterables()), + provideZoneChangeDetection({ eventCoalescing: true }), + provideRouter(routes), + ], + // declarations: [ + // AppComponent, + // SummaryComponent, + // ListOfJumpsComponent, + // ListOfDzsComponent, + // NewJumpComponent, + // ListOfAircraftsComponent, + // ListOfJumpTypesComponent, + // ListOfGearsComponent, + // NewAircraftComponent, + // NewGearComponent, + // NewDropZoneComponent, + // NewJumpTypeComponent, + // DefaultComponent, + // LoginComponent, + // CreateUserComponent, + // LoginUserComponent, + // UserProfileComponent, + // ListOfImagesComponent, + // JumpInfosComponent, + // NewTunnelFlightComponent, + // ListOfTunnelFlightsComponent, + // ], + // imports: [ + // RouterModule.forRoot(routes, { enableTracing: !environment.production }), + // 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, + // ], +}; diff --git a/Front/skydivelogs-app/src/app/app.module.ts b/Front/skydivelogs-app/src/app/app.module.ts index 76e79d2..4118e8b 100644 --- a/Front/skydivelogs-app/src/app/app.module.ts +++ b/Front/skydivelogs-app/src/app/app.module.ts @@ -172,11 +172,7 @@ export function initConfig(configService: ConfigurationHelper) { ListOfTunnelFlightsComponent, ], imports: [ - RouterModule.forRoot( - appRoutes, - { enableTracing: !environment.production } // <-- debugging purposes only - // { enableTracing: !environment.production, relativeLinkResolution: 'legacy' } // <-- debugging purposes only - ), + RouterModule.forRoot(appRoutes, { enableTracing: !environment.production }), TranslateModule.forRoot({ loader: { provide: TranslateLoader, diff --git a/Front/skydivelogs-app/src/app/app.routes.ts b/Front/skydivelogs-app/src/app/app.routes.ts new file mode 100644 index 0000000..57319bd --- /dev/null +++ b/Front/skydivelogs-app/src/app/app.routes.ts @@ -0,0 +1,76 @@ +import { Routes } from "@angular/router"; + +import { AuthGuardService } from "../services/auth-guard.service"; + +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 { DefaultComponent } from "./default/default.component"; +import { LoginComponent } from "./login/login.component"; +import { UserProfileComponent } from "./user-profile/user-profile.component"; +import { NewTunnelFlightComponent } from "./new-tunnel-flight/new-tunnel-flight.component"; +import { ListOfTunnelFlightsComponent } from "./list-of-tunnel-flights/list-of-tunnel-flights.component"; + +export const routes: 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: "tunnelFlights", + component: ListOfTunnelFlightsComponent, + canActivate: [AuthGuardService], + }, + + { path: "login", component: LoginComponent }, +]; diff --git a/Front/skydivelogs-app/src/index.html b/Front/skydivelogs-app/src/index.html index ce3b1fb..dfcec30 100644 --- a/Front/skydivelogs-app/src/index.html +++ b/Front/skydivelogs-app/src/index.html @@ -1,23 +1,32 @@ - + + + + SkydivelogsApp + + + + - - - SkydivelogsApp - - - - - - - -
- - - - -
-
- - + + +
+ + + + +
+
+ diff --git a/Front/skydivelogs-app/src/main.ts b/Front/skydivelogs-app/src/main.ts index 3ecea68..d1b7207 100644 --- a/Front/skydivelogs-app/src/main.ts +++ b/Front/skydivelogs-app/src/main.ts @@ -1,13 +1,29 @@ +// import { enableProdMode } from "@angular/core"; +// import { platformBrowserDynamic } from "@angular/platform-browser-dynamic"; -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +// import { AppModule } from "./app/app.module"; +// import { environment } from "./environments/environment"; -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; +// if (environment.production) { +// enableProdMode(); +// } + +// platformBrowserDynamic() +// .bootstrapModule(AppModule) +// .catch((err) => console.log(err)); + +import { enableProdMode } from "@angular/core"; +import { bootstrapApplication } from "@angular/platform-browser"; + +import { appConfig } from "./app/app.config"; +import { AppComponent } from "./app/app.component"; + +import { environment } from "./environments/environment"; if (environment.production) { enableProdMode(); } -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.log(err)); +bootstrapApplication(AppComponent, appConfig).catch((err) => + console.error(err) +); diff --git a/Front/skydivelogs-app/src/typings.d.ts b/Front/skydivelogs-app/src/typings.d.ts deleted file mode 100644 index ef5c7bd..0000000 --- a/Front/skydivelogs-app/src/typings.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* SystemJS module definition */ -declare var module: NodeModule; -interface NodeModule { - id: string; -} diff --git a/Front/skydivelogs-app/tsconfig.json b/Front/skydivelogs-app/tsconfig.json index 263b4d7..c91b0d2 100644 --- a/Front/skydivelogs-app/tsconfig.json +++ b/Front/skydivelogs-app/tsconfig.json @@ -4,7 +4,7 @@ "compileOnSave": false, "compilerOptions": { "outDir": "./dist/out-tsc", - "strict": true, + "strict": false, "noImplicitOverride": true, "noPropertyAccessFromIndexSignature": true, "noImplicitReturns": true,