diff --git a/.gitignore b/.gitignore index b8a6659..83db789 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,6 @@ sonar.properties **/*.copy.ts **/*.copy.scss **/*.copy.html + +.next/ +next-env.d.ts \ No newline at end of file diff --git a/README.md b/README.md index e2a46f1..15317b2 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# HeadupAngular +# Ad Astra This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.2.2. diff --git a/src/app/components/auth/auth.component.html b/src/app/components/auth/auth.component.html index c914655..6f86fa7 100644 --- a/src/app/components/auth/auth.component.html +++ b/src/app/components/auth/auth.component.html @@ -1,6 +1,6 @@
-
+

{{ title }}

@if (authType === 'register') { diff --git a/src/app/components/home/home.component.ts b/src/app/components/home/home.component.ts index 3cfcda9..147ff34 100644 --- a/src/app/components/home/home.component.ts +++ b/src/app/components/home/home.component.ts @@ -1,14 +1,13 @@ import { DatePipe } from '@angular/common'; +import { Title } from '@angular/platform-browser'; import { trigger, state, style, animate, transition } from '@angular/animations'; import { Component, DestroyRef, inject, OnInit } from '@angular/core'; -import { takeUntilDestroyed } from "@angular/core/rxjs-interop"; import { MatCardModule } from '@angular/material/card'; import { MatDividerModule } from '@angular/material/divider'; -import { Observable, Subscription } from 'rxjs'; import { ListErrorsComponent, } from 'src/app/components/shared'; -import { Errors, Jump } from 'src/app/core/models'; -import { JumpsService } from 'src/app/core/services'; +import { Errors } from 'src/app/core/models'; +//import { UserService } from 'src/app/core/services'; @Component({ selector: 'app-home', @@ -35,28 +34,18 @@ import { JumpsService } from 'src/app/core/services'; ] }) export class HomeComponent implements OnInit { - private _lastjump: Subscription = new Subscription(); - private _lastjump$: Observable = new Observable(); public title = 'Shop bientôt disponible!'; public description = 'Encore un peu de patience, notre shop sera mis en ligne d\'ici peu.'; public errors: Errors = { errors: {} }; - public lastJump: Jump = {} as Jump; public destroyRef = inject(DestroyRef); public now = new Date(); constructor( - private _jumpsService: JumpsService + private titleService: Title + //private _userService: UserService ) { } ngOnInit() { - this._lastjump$ = this._jumpsService.getLastJump().pipe(takeUntilDestroyed(this.destroyRef)); - this._lastjump = this._lastjump$.subscribe((jump) => { - this.lastJump = jump; - }); - } - private _isToday(someDate: Date) { - return someDate.getDate() == this.now.getDate() && - someDate.getMonth() == this.now.getMonth() && - someDate.getFullYear() == this.now.getFullYear() + this.titleService.setTitle(this.title); } } diff --git a/src/app/components/index.ts b/src/app/components/index.ts index dd47667..a3de357 100644 --- a/src/app/components/index.ts +++ b/src/app/components/index.ts @@ -8,6 +8,10 @@ export * from './home/home.component'; export * from './jump/jump.component'; export * from './jumps/jumps.component'; export * from './logbook/logbook.component'; +export * from './page/page.component'; +export * from './pages/pages.component'; +export * from './product/product.component'; +export * from './products/products.component'; export * from './profile/profile.component'; export * from './qcm/qcm.component'; export * from './settings'; diff --git a/src/app/components/jumps/jumps.component.html b/src/app/components/jumps/jumps.component.html index 8dd7a1c..1e587bf 100644 --- a/src/app/components/jumps/jumps.component.html +++ b/src/app/components/jumps/jumps.component.html @@ -23,44 +23,6 @@

- - Types de sauts - - - @if(displayCharts) { -
-
- -
-
- -
- @for (item of getCategories(); track $index) { -
- -
- } - @for (item of getModules(); track $index) { -
- -
- } -
- - - } -
-
- {{ subtitle }} @@ -127,4 +89,42 @@
+
\ No newline at end of file diff --git a/src/app/components/jumps/jumps.component.scss b/src/app/components/jumps/jumps.component.scss index e69de29..60b1a7d 100644 --- a/src/app/components/jumps/jumps.component.scss +++ b/src/app/components/jumps/jumps.component.scss @@ -0,0 +1,12 @@ +element.style { + margin: 1.5rem -1.5rem -1.5rem -1.5rem; + padding: 0.9rem 1.1rem; + border-radius: 0; +} +.banner { + background-color: #202020; + color: #ffffff; + margin: 1.5rem -1.5rem -1.5rem -1.5rem; + padding: 0.9rem 1.1rem; + border-radius: 0; +} \ No newline at end of file diff --git a/src/app/components/logbook/dialogs/jump-view.dialog.html b/src/app/components/logbook/dialogs/jump-view.dialog.html index 308ea26..ac1ebe6 100644 --- a/src/app/components/logbook/dialogs/jump-view.dialog.html +++ b/src/app/components/logbook/dialogs/jump-view.dialog.html @@ -1,10 +1,10 @@ -

+

Saut n° {{jump.numero}}

-
+
Le {{ jump.date | date: 'dd/MM/yyyy' }} à {{ jump.lieu }} {{ jump.zone ? jump.zone : jump.oaci }} :
@@ -20,12 +20,12 @@
-
Aeronef:
+
Aeronef:
{{ jump.aeronef }} {{ jump.imat }}
-
Voile:
+
Voile:
{{ jump.voile }} {{ jump.taille }} ft2
@if (jump.programme) { -
Programme:
+
Programme:
{{ jump.programme }}
}
@@ -33,13 +33,13 @@
@if (!jump.x2data) { -
Hauteur:
+
Hauteur:
{{ jump.hauteur }} m
-
Déploiement:
+
Déploiement:
{{ jump.deploiement }} m
} @for (file of jump.files; track file) { -
Fichier {{ file.type }}
+
Fichier {{ file.type }}
{{ file.name }}
}
diff --git a/src/app/components/logbook/logbook.component.html b/src/app/components/logbook/logbook.component.html index 801b42c..7e74c37 100644 --- a/src/app/components/logbook/logbook.component.html +++ b/src/app/components/logbook/logbook.component.html @@ -44,7 +44,7 @@ - + Filtrer les sauts @if (jumpsCount < lastJump.numero) { diff --git a/src/app/components/page/page.component.html b/src/app/components/page/page.component.html new file mode 100644 index 0000000..098d6db --- /dev/null +++ b/src/app/components/page/page.component.html @@ -0,0 +1,30 @@ +
+
+
+

{{ article.title }}

+
+ +
+ {{ article.createdAt | date: 'dd/MM/yyyy' }} +
+
+ + +
+ {{ article.description }} +
+
+ {{ article.body }} +
+ @if (article.tagList) { + +
+ @for (tag of getArticleTags(); track tag) { + + + {{ tag.name }} + + } +
+ } +
\ No newline at end of file diff --git a/src/app/components/page/page.component.scss b/src/app/components/page/page.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/components/page/page.component.spec.ts b/src/app/components/page/page.component.spec.ts new file mode 100644 index 0000000..c389595 --- /dev/null +++ b/src/app/components/page/page.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PageComponent } from './page.component'; + +describe('PageComponent', () => { + let component: PageComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [PageComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(PageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/components/page/page.component.ts b/src/app/components/page/page.component.ts new file mode 100644 index 0000000..dd5b5bc --- /dev/null +++ b/src/app/components/page/page.component.ts @@ -0,0 +1,69 @@ +import { Title } from '@angular/platform-browser'; +import { trigger, state, style, animate, transition } from '@angular/animations'; +import { Component, DestroyRef, inject, OnInit, OnDestroy } from '@angular/core'; +import { takeUntilDestroyed } from "@angular/core/rxjs-interop"; +import { DatePipe } from '@angular/common'; +import { ActivatedRoute, RouterLink } from '@angular/router'; +import { MatCardModule } from '@angular/material/card'; +import { MatDividerModule } from '@angular/material/divider'; +import { MatIconModule } from '@angular/material/icon'; +import { Observable, Subscription } from 'rxjs'; + +import { ListErrorsComponent, } from 'src/app/components/shared'; +import { Errors, Article, ArticlePageData } from 'src/app/core/models'; + +@Component({ + selector: 'app-page', + standalone: true, + imports: [ + DatePipe, RouterLink, + MatCardModule, MatDividerModule, MatIconModule, + ListErrorsComponent + ], + templateUrl: './page.component.html', + styleUrl: './page.component.scss', + animations: [ + trigger('flyInOut', [ + state('in', style({ transform: 'translateY(0)' })), + transition('void => *', [ + style({ transform: 'translateY(-100%)' }), + animate(200) + ]), + transition('* => void', [ + style({ transform: 'translateY(100%)' }), + animate(200) + ]) + ]) + ] +}) +export class PageComponent implements OnInit, OnDestroy { + private _data: Subscription = new Subscription(); + public title = 'Shop bientôt disponible!'; + public description = 'Encore un peu de patience, notre shop sera mis en ligne d\'ici peu.'; + public errors: Errors = { errors: {} }; + public destroyRef = inject(DestroyRef); + public article: Article = {} as Article; + + constructor( + private route: ActivatedRoute, + private titleService: Title + ) { } + + ngOnInit() { + const data$: Observable<{ pageData: ArticlePageData }> = this.route.data as Observable<{ pageData: ArticlePageData }>; + this._data = data$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data: { pageData: ArticlePageData }) => { + this.article = data.pageData.article; + this.title = this.article.title; + this.titleService.setTitle(this.article.title); + console.log(this.article); + }); + } + + ngOnDestroy() { + this._data.unsubscribe(); + } + + getArticleTags() { + return this.article.tagList; + } +} diff --git a/src/app/components/pages/pages.component.html b/src/app/components/pages/pages.component.html new file mode 100644 index 0000000..c56369e --- /dev/null +++ b/src/app/components/pages/pages.component.html @@ -0,0 +1 @@ +

pages works!

diff --git a/src/app/components/pages/pages.component.scss b/src/app/components/pages/pages.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/components/pages/pages.component.spec.ts b/src/app/components/pages/pages.component.spec.ts new file mode 100644 index 0000000..f69a6b2 --- /dev/null +++ b/src/app/components/pages/pages.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PagesComponent } from './pages.component'; + +describe('PagesComponent', () => { + let component: PagesComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [PagesComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(PagesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/components/pages/pages.component.ts b/src/app/components/pages/pages.component.ts new file mode 100644 index 0000000..874899b --- /dev/null +++ b/src/app/components/pages/pages.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-pages', + standalone: true, + imports: [], + templateUrl: './pages.component.html', + styleUrl: './pages.component.scss' +}) +export class PagesComponent { + +} diff --git a/src/app/components/product/product.component.html b/src/app/components/product/product.component.html new file mode 100644 index 0000000..772b623 --- /dev/null +++ b/src/app/components/product/product.component.html @@ -0,0 +1 @@ +

product works!

diff --git a/src/app/components/product/product.component.scss b/src/app/components/product/product.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/components/product/product.component.spec.ts b/src/app/components/product/product.component.spec.ts new file mode 100644 index 0000000..fe69534 --- /dev/null +++ b/src/app/components/product/product.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProductComponent } from './product.component'; + +describe('ProductComponent', () => { + let component: ProductComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ProductComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ProductComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/components/product/product.component.ts b/src/app/components/product/product.component.ts new file mode 100644 index 0000000..dfd92fe --- /dev/null +++ b/src/app/components/product/product.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-product', + standalone: true, + imports: [], + templateUrl: './product.component.html', + styleUrl: './product.component.scss' +}) +export class ProductComponent { + +} diff --git a/src/app/components/products/products.component.html b/src/app/components/products/products.component.html new file mode 100644 index 0000000..d786d45 --- /dev/null +++ b/src/app/components/products/products.component.html @@ -0,0 +1 @@ +

products works!

diff --git a/src/app/components/products/products.component.scss b/src/app/components/products/products.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/components/products/products.component.spec.ts b/src/app/components/products/products.component.spec.ts new file mode 100644 index 0000000..ca186a4 --- /dev/null +++ b/src/app/components/products/products.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProductsComponent } from './products.component'; + +describe('ProductsComponent', () => { + let component: ProductsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ProductsComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ProductsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/components/products/products.component.ts b/src/app/components/products/products.component.ts new file mode 100644 index 0000000..d26e594 --- /dev/null +++ b/src/app/components/products/products.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-products', + standalone: true, + imports: [], + templateUrl: './products.component.html', + styleUrl: './products.component.scss' +}) +export class ProductsComponent { + +} diff --git a/src/app/components/profile/profile.component.html b/src/app/components/profile/profile.component.html index c10f68f..c5bfe2e 100644 --- a/src/app/components/profile/profile.component.html +++ b/src/app/components/profile/profile.component.html @@ -1,14 +1,14 @@ - @@ -22,63 +22,60 @@
- + -
- Logo UPT - -

Vector 3 - V306 Micron

- -
-
- v306 Navy White Gold -
-
- v306 Navy White Gold preview -
-
-
- -
10
-
-
- -
10
-
-
- -
15.5
-
-
- -
5
-
+
+
+
+
Nom:
+
{{ user.lastname }}
+
Prénom:
+
{{ user.firstname }}
+
+
+
+
+
Email:
+
{{ user.email }}
+
Téléphone:
+
{{ user.phone }}
+
+
+ +
+ + Mes commandes + +
+ +
+
@@ -86,391 +83,80 @@ + + + + + + + + + + + + + + + + + + + + + + + +
- Main Std Fit + Date
- Main Full Fit + Numéro
- Reserve Std Fit + Statut
- Reserve Full Fit + Total
- Crossfire 3 119
- Epicene 130
- Extreme-JFX 94
- Fusion 120
- Horizon 135
- JFX2 90
- Mamba 104
- Neos 94
- Nitron 108
- Omega 119
- Omni 119
- Pilot 104
- Sabre 2 107
- Safire 3 119
- Synergy 108
- Velocity 96
- Spectre 107
- Stiletto 107
- Storm 107
- Katana 107
+ 20/04/2025 13:37
- Crossfire 3 129
- Epicene 150
- Extreme-VX 84
- Horizon 150
- Katana 120
- Neos 104
- Pulse 120
- Sabre 2 120
- Safire 3 129
- Spectre 120
- Stiletto 120
- Valkyrie 96
- Valkyrie Hybrid 96
- Xaos-21 98
- Xaos-27 88
+ #aa2025042013371
- Icarus Reserve 109
- Micro Raven 109
- Optimum 113
- PD 106
- R-Max 108
- Smart 99
- Techno 115
+ Terminé
- Icarus Reserve 119
- Micro Raven 120
- Nano 113
- PD 113
- R-Max 118
- Smart 110
- Speed 120
- Tempo 120
+ 56.00 € +
+ 20/04/2025 13:42 + + #aa2025042013421 + + Expédié + + 224.70 € +
+ 20/04/2025 13:54 + + #aa2025042013541 + + Annulé + + 128.80 € +
+ 14/06/2025 13:37 + + #aa2025061413371 + + En cours de préparation + + 195.30 € +
+ 07/07/2025 14:39 + + #aa2025070714391 + + En attente de paiement + + 64.00 €
- - -
-
-
-
-
RISERS
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-   -
- - -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-   -
- - -
-
-
-
-
-
-
RESERVE HANDLE
-
- -
- -
-
-
-   -
- - -
-
-
-
-
-
-
PILOT CHUTE
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
-
-
-
-
-
MAIN DEPLOYMENT
-
- -
- -
-
-
-   -
- - -
-
-
-
-
-
-
BACK & LEG PADS
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
- -
-
-
- - -
-
- - -
-
- - -
-
-
-
-
-
WINGSUIT OPTIONS
-
- - -
-
- - -
-
- - -
-
-
-
-
-
-
- - -
-
-
-
UPT couleurs séparées (sauf V) :
Oui
-
Bouclerie :
Black
-
UPT anneaux cuissardes :
Oui
-
UPT harnais réglable :
Non
-
UPT Skyhook :
Non
-
UPT Stevens :
Non
-
UPT dosseret mousse 3D :
Oui
-
UPT dosseret luxe :
Oui
-
UPT lombaires mousse 3D :
Oui
-
UPT mode FF :
Oui
-
UPT caches élévateurs aimantés :
Oui
-
UPT Kill line :
Oui
-
UPT boule cuir :
Non
-
UPT poignée FF :
Oui
-
UPT poignée HD corde :
Non
-
UPT poignée secours mousse :
Oui
-
UPT poignées sur avants :
Oui
-
-
-
-
-
UPT pull out :
Non
-
UPT poignée de transport :
Non
-
UPT Liserets sur rabat central :
Non
-
UPT logo supp. plastron :
Oui
-
UPT logo supp. sur côté :
Oui
-
UPT logo sur rabat secours :
Oui
-
UPT nom brodé :
Non
-
UPT POD sans élastiques :
Non
- -
UPT Coupe suspente alu :
Oui
-
UPT coupe suspente plast. :
Non
-
UPT broderie perso (à partir de) :
Non
-
UPT galon contrasté :
Non
-
UPT JC coutures libres :
Non
-
UPT Design special :
Non
-
UPT Coins libres :
Oui
-
Rolled edge legpad :
Oui
-
-
-
-
-
- +
- +
Buttons variants - - turquoise / cyan / navy / purple / raspberry / orange / yellow + + turquoise / cyan / navy / purple / raspberry / orange / yellow / megna / magenta / pink
diff --git a/src/app/components/profile/profile.component.scss b/src/app/components/profile/profile.component.scss index 2c28b99..b30fb18 100644 --- a/src/app/components/profile/profile.component.scss +++ b/src/app/components/profile/profile.component.scss @@ -3,7 +3,7 @@ .banner { background-color: var.$sidebar-footer; - padding: 1.6rem 0 1.3rem 0; + padding: 1.3rem 0 1.1rem 0; margin: -1.5rem -1.5rem 1.5rem -1.5rem; .user-img { width: var.$user-img-size; diff --git a/src/app/components/profile/profile.component.ts b/src/app/components/profile/profile.component.ts index 0d3d6fe..6251b09 100644 --- a/src/app/components/profile/profile.component.ts +++ b/src/app/components/profile/profile.component.ts @@ -30,7 +30,6 @@ export class ProfileComponent implements OnInit, OnDestroy { user: Partial = {} as Partial; errors: Errors = { errors: {} }; btnSettingsTitle = 'Paramètres'; - btnPasswordTitle = 'Changer le mot de passe'; constructor( private titleService: Title, diff --git a/src/app/components/settings/credentials/credentials.component.html b/src/app/components/settings/credentials/credentials.component.html index 5b01ab0..ce608fd 100644 --- a/src/app/components/settings/credentials/credentials.component.html +++ b/src/app/components/settings/credentials/credentials.component.html @@ -1,8 +1,11 @@ -