From ed6104ed21c252615a1c7286c4686402c4c61ef4 Mon Sep 17 00:00:00 2001 From: Rampeur Date: Tue, 19 Aug 2025 05:12:16 +0200 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20articles=20et=20produits?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 + README.md | 2 +- src/app/components/auth/auth.component.html | 2 +- src/app/components/home/home.component.ts | 23 +- src/app/components/index.ts | 4 + src/app/components/jumps/jumps.component.html | 76 +-- src/app/components/jumps/jumps.component.scss | 12 + .../logbook/dialogs/jump-view.dialog.html | 16 +- .../components/logbook/logbook.component.html | 2 +- src/app/components/page/page.component.html | 30 + src/app/components/page/page.component.scss | 0 .../components/page/page.component.spec.ts | 23 + src/app/components/page/page.component.ts | 69 +++ src/app/components/pages/pages.component.html | 1 + src/app/components/pages/pages.component.scss | 0 .../components/pages/pages.component.spec.ts | 23 + src/app/components/pages/pages.component.ts | 12 + .../components/product/product.component.html | 1 + .../components/product/product.component.scss | 0 .../product/product.component.spec.ts | 23 + .../components/product/product.component.ts | 12 + .../products/products.component.html | 1 + .../products/products.component.scss | 0 .../products/products.component.spec.ts | 23 + .../components/products/products.component.ts | 12 + .../components/profile/profile.component.html | 522 ++++-------------- .../components/profile/profile.component.scss | 2 +- .../components/profile/profile.component.ts | 1 - .../credentials/credentials.component.html | 15 +- .../credentials/credentials.component.scss | 2 +- .../settings/settings.component.html | 81 ++- .../settings/settings.component.scss | 15 +- .../components/settings/settings.component.ts | 25 +- .../shared/layout/full.component.html | 87 ++- .../shared/layout/full.component.ts | 38 +- src/app/components/shared/menu-items.ts | 81 +-- .../core/models/article-list-config.model.ts | 12 + src/app/core/models/article-list.model.ts | 6 + src/app/core/models/article.model.ts | 28 + src/app/core/models/email.model.ts | 10 + src/app/core/models/index.ts | 8 + src/app/core/models/jump.model.ts | 12 +- src/app/core/models/menu.model.ts | 2 + .../core/models/product-list-config.model.ts | 18 + src/app/core/models/product-list.model.ts | 6 + src/app/core/models/product.model.ts | 86 +++ src/app/core/models/shared.model.ts | 10 + src/app/core/models/tag.model.ts | 5 + src/app/core/models/user.model.ts | 2 +- .../resolvers/article-resolver.service.ts | 12 + .../resolvers/articles-resolver.service.ts | 10 + src/app/core/resolvers/index.ts | 4 + .../resolvers/product-resolver.service.ts | 12 + .../resolvers/products-resolver.service.ts | 10 + src/app/core/services/articles.service.ts | 65 +++ src/app/core/services/index.ts | 2 + src/app/core/services/products.service.ts | 94 ++++ src/app/core/services/user.service.ts | 2 +- src/app/routes/auth.routes.ts | 62 ++- src/app/routes/noauth.routes.ts | 19 +- src/assets/favicon/android-icon-144x144.png | Bin 0 -> 7448 bytes src/assets/favicon/android-icon-192x192.png | Bin 0 -> 8544 bytes src/assets/favicon/android-icon-36x36.png | Bin 0 -> 1896 bytes src/assets/favicon/android-icon-48x48.png | Bin 0 -> 2523 bytes src/assets/favicon/android-icon-72x72.png | Bin 0 -> 3697 bytes src/assets/favicon/android-icon-96x96.png | Bin 0 -> 4826 bytes src/assets/favicon/apple-icon-114x114.png | Bin 0 -> 5699 bytes src/assets/favicon/apple-icon-120x120.png | Bin 0 -> 6039 bytes src/assets/favicon/apple-icon-144x144.png | Bin 0 -> 7448 bytes src/assets/favicon/apple-icon-152x152.png | Bin 0 -> 7911 bytes src/assets/favicon/apple-icon-180x180.png | Bin 0 -> 9810 bytes src/assets/favicon/apple-icon-57x57.png | Bin 0 -> 2978 bytes src/assets/favicon/apple-icon-60x60.png | Bin 0 -> 3109 bytes src/assets/favicon/apple-icon-72x72.png | Bin 0 -> 3697 bytes src/assets/favicon/apple-icon-76x76.png | Bin 0 -> 3878 bytes src/assets/favicon/apple-icon-precomposed.png | Bin 0 -> 9065 bytes src/assets/favicon/apple-icon.png | Bin 0 -> 9065 bytes src/assets/favicon/browserconfig.xml | 11 + src/assets/favicon/favicon-128x128.png | Bin 0 -> 3236 bytes src/assets/favicon/favicon-144x144.png | Bin 0 -> 3001 bytes src/assets/favicon/favicon-152x152.png | Bin 0 -> 3290 bytes src/assets/favicon/favicon-16x16.png | Bin 0 -> 465 bytes src/assets/favicon/favicon-192x192.png | Bin 0 -> 3565 bytes src/assets/favicon/favicon-32x32.png | Bin 0 -> 800 bytes src/assets/favicon/favicon-384x384.png | Bin 0 -> 9314 bytes src/assets/favicon/favicon-512x512.png | Bin 0 -> 13649 bytes src/assets/favicon/favicon-72x72.png | Bin 0 -> 1566 bytes src/assets/favicon/favicon-96x96.png | Bin 0 -> 2020 bytes src/assets/favicon/favicon.ico | Bin 0 -> 1150 bytes src/assets/favicon/favicon.png | Bin 0 -> 13649 bytes src/assets/favicon/favicon.svg | 3 + src/assets/favicon/ms-icon-144x144.png | Bin 0 -> 7448 bytes src/assets/favicon/ms-icon-150x150.png | Bin 0 -> 7832 bytes src/assets/favicon/ms-icon-310x310.png | Bin 0 -> 21548 bytes src/assets/favicon/ms-icon-70x70.png | Bin 0 -> 3608 bytes src/assets/images/avatars/animal_001.jpg | Bin 0 -> 17449 bytes src/assets/images/avatars/animal_002.jpg | Bin 0 -> 13698 bytes src/assets/images/avatars/animal_003.jpg | Bin 0 -> 17587 bytes src/assets/images/avatars/animal_004.jpg | Bin 0 -> 20366 bytes src/assets/images/avatars/animal_005.jpg | Bin 0 -> 19195 bytes src/assets/images/avatars/animal_006.jpg | Bin 0 -> 15363 bytes src/assets/images/avatars/animal_007.jpg | Bin 0 -> 21448 bytes src/assets/images/avatars/animal_008.jpg | Bin 0 -> 16827 bytes src/assets/images/avatars/animal_009.jpg | Bin 0 -> 17581 bytes src/assets/images/avatars/animal_010.jpg | Bin 0 -> 21336 bytes src/assets/images/avatars/animal_011.jpg | Bin 0 -> 24046 bytes src/assets/images/avatars/animal_012.jpg | Bin 0 -> 14959 bytes src/assets/images/avatars/animal_013.jpg | Bin 0 -> 15065 bytes src/assets/images/avatars/animal_014.jpg | Bin 0 -> 17941 bytes src/assets/images/avatars/animal_015.jpg | Bin 0 -> 22564 bytes src/assets/images/avatars/animal_016.jpg | Bin 0 -> 18506 bytes src/assets/images/avatars/default.jpg | Bin 0 -> 17449 bytes src/assets/images/big/img1.jpg | Bin 83968 -> 0 bytes src/assets/images/big/img2.jpg | Bin 127340 -> 0 bytes src/assets/images/big/img3.jpg | Bin 30932 -> 0 bytes src/assets/images/big/img4.jpg | Bin 90110 -> 0 bytes src/assets/images/big/img5.jpg | Bin 60400 -> 0 bytes src/assets/images/big/img6.jpg | Bin 83707 -> 0 bytes src/assets/manifest.json | 71 +++ src/environments/environment.development.ts | 2 +- src/environments/environment.local.ts | 2 +- src/environments/environment.ts | 2 +- src/favicon.ico | Bin 15086 -> 15086 bytes src/index.html | 26 +- src/manifest.webmanifest | 34 +- src/styles/_header.scss | 2 +- src/styles/_icomoon.scss | 198 +++++++ src/styles/_sidebar.scss | 2 +- src/styles/app.scss | 10 +- src/styles/fonts/icomoon.eot | Bin 0 -> 12824 bytes src/styles/fonts/icomoon.svg | 67 +++ src/styles/fonts/icomoon.ttf | Bin 0 -> 12660 bytes src/styles/fonts/icomoon.woff | Bin 0 -> 12736 bytes src/styles/responsive.scss | 2 +- src/styles/styles.scss | 5 +- src/styles/tables.scss | 2 +- src/styles/variable.scss | 4 +- 137 files changed, 1498 insertions(+), 681 deletions(-) create mode 100644 src/app/components/page/page.component.html create mode 100644 src/app/components/page/page.component.scss create mode 100644 src/app/components/page/page.component.spec.ts create mode 100644 src/app/components/page/page.component.ts create mode 100644 src/app/components/pages/pages.component.html create mode 100644 src/app/components/pages/pages.component.scss create mode 100644 src/app/components/pages/pages.component.spec.ts create mode 100644 src/app/components/pages/pages.component.ts create mode 100644 src/app/components/product/product.component.html create mode 100644 src/app/components/product/product.component.scss create mode 100644 src/app/components/product/product.component.spec.ts create mode 100644 src/app/components/product/product.component.ts create mode 100644 src/app/components/products/products.component.html create mode 100644 src/app/components/products/products.component.scss create mode 100644 src/app/components/products/products.component.spec.ts create mode 100644 src/app/components/products/products.component.ts create mode 100755 src/app/core/models/article-list-config.model.ts create mode 100644 src/app/core/models/article-list.model.ts create mode 100755 src/app/core/models/article.model.ts create mode 100755 src/app/core/models/email.model.ts create mode 100644 src/app/core/models/product-list-config.model.ts create mode 100644 src/app/core/models/product-list.model.ts create mode 100644 src/app/core/models/product.model.ts create mode 100644 src/app/core/models/tag.model.ts create mode 100644 src/app/core/resolvers/article-resolver.service.ts create mode 100644 src/app/core/resolvers/articles-resolver.service.ts create mode 100644 src/app/core/resolvers/product-resolver.service.ts create mode 100644 src/app/core/resolvers/products-resolver.service.ts create mode 100755 src/app/core/services/articles.service.ts create mode 100644 src/app/core/services/products.service.ts create mode 100644 src/assets/favicon/android-icon-144x144.png create mode 100644 src/assets/favicon/android-icon-192x192.png create mode 100644 src/assets/favicon/android-icon-36x36.png create mode 100644 src/assets/favicon/android-icon-48x48.png create mode 100644 src/assets/favicon/android-icon-72x72.png create mode 100644 src/assets/favicon/android-icon-96x96.png create mode 100644 src/assets/favicon/apple-icon-114x114.png create mode 100644 src/assets/favicon/apple-icon-120x120.png create mode 100644 src/assets/favicon/apple-icon-144x144.png create mode 100644 src/assets/favicon/apple-icon-152x152.png create mode 100644 src/assets/favicon/apple-icon-180x180.png create mode 100644 src/assets/favicon/apple-icon-57x57.png create mode 100644 src/assets/favicon/apple-icon-60x60.png create mode 100644 src/assets/favicon/apple-icon-72x72.png create mode 100644 src/assets/favicon/apple-icon-76x76.png create mode 100644 src/assets/favicon/apple-icon-precomposed.png create mode 100644 src/assets/favicon/apple-icon.png create mode 100644 src/assets/favicon/browserconfig.xml create mode 100644 src/assets/favicon/favicon-128x128.png create mode 100644 src/assets/favicon/favicon-144x144.png create mode 100644 src/assets/favicon/favicon-152x152.png create mode 100644 src/assets/favicon/favicon-16x16.png create mode 100644 src/assets/favicon/favicon-192x192.png create mode 100644 src/assets/favicon/favicon-32x32.png create mode 100644 src/assets/favicon/favicon-384x384.png create mode 100644 src/assets/favicon/favicon-512x512.png create mode 100644 src/assets/favicon/favicon-72x72.png create mode 100644 src/assets/favicon/favicon-96x96.png create mode 100644 src/assets/favicon/favicon.ico create mode 100644 src/assets/favicon/favicon.png create mode 100644 src/assets/favicon/favicon.svg create mode 100644 src/assets/favicon/ms-icon-144x144.png create mode 100644 src/assets/favicon/ms-icon-150x150.png create mode 100644 src/assets/favicon/ms-icon-310x310.png create mode 100644 src/assets/favicon/ms-icon-70x70.png create mode 100644 src/assets/images/avatars/animal_001.jpg create mode 100644 src/assets/images/avatars/animal_002.jpg create mode 100644 src/assets/images/avatars/animal_003.jpg create mode 100644 src/assets/images/avatars/animal_004.jpg create mode 100644 src/assets/images/avatars/animal_005.jpg create mode 100644 src/assets/images/avatars/animal_006.jpg create mode 100644 src/assets/images/avatars/animal_007.jpg create mode 100644 src/assets/images/avatars/animal_008.jpg create mode 100644 src/assets/images/avatars/animal_009.jpg create mode 100644 src/assets/images/avatars/animal_010.jpg create mode 100644 src/assets/images/avatars/animal_011.jpg create mode 100644 src/assets/images/avatars/animal_012.jpg create mode 100644 src/assets/images/avatars/animal_013.jpg create mode 100644 src/assets/images/avatars/animal_014.jpg create mode 100644 src/assets/images/avatars/animal_015.jpg create mode 100644 src/assets/images/avatars/animal_016.jpg create mode 100644 src/assets/images/avatars/default.jpg delete mode 100755 src/assets/images/big/img1.jpg delete mode 100755 src/assets/images/big/img2.jpg delete mode 100755 src/assets/images/big/img3.jpg delete mode 100755 src/assets/images/big/img4.jpg delete mode 100755 src/assets/images/big/img5.jpg delete mode 100755 src/assets/images/big/img6.jpg create mode 100644 src/assets/manifest.json create mode 100644 src/styles/_icomoon.scss create mode 100644 src/styles/fonts/icomoon.eot create mode 100644 src/styles/fonts/icomoon.svg create mode 100644 src/styles/fonts/icomoon.ttf create mode 100644 src/styles/fonts/icomoon.woff 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 @@ -