From 73ae17bab5c1e91001774dfc1dae310a77fec34d Mon Sep 17 00:00:00 2001 From: Antoine PRONNIER <44138938+FunixG@users.noreply.github.com> Date: Wed, 17 Jul 2024 22:04:20 +0200 Subject: [PATCH] Vote module page (#64) * wip vote page * wip vote module * made countdown on buttons * done v1 of vote system * lang --- package-lock.json | 8 +- package.json | 2 +- ...cifista-search-player-input.component.html | 15 ++ .../components/navbar/navbar.component.html | 6 +- .../progress-bar/progress-bar.component.html | 3 + .../progress-bar/progress-bar.component.scss | 0 .../progress-bar.component.spec.ts | 23 ++++ .../progress-bar/progress-bar.component.ts | 16 +++ .../news/news-accueil-section.component.ts | 17 +-- .../vote-classement-row.component.html | 37 +++++ .../vote-classement-row.component.scss | 3 + .../vote-classement-row.component.spec.ts | 23 ++++ .../vote-classement-row.component.ts | 44 ++++++ .../vote-top-classement.component.html | 37 +++++ .../vote-top-classement.component.scss | 3 + .../vote-top-classement.component.spec.ts | 23 ++++ .../vote-top-classement.component.ts | 32 +++++ .../vote-user-website.component.html | 28 ++++ .../vote-user-website.component.scss | 0 .../vote-user-website.component.spec.ts | 23 ++++ .../vote-user-website.component.ts | 130 ++++++++++++++++++ .../vote-user/vote-user.component.html | 30 ++++ .../vote-user/vote-user.component.scss | 0 .../vote-user/vote-user.component.spec.ts | 23 ++++ .../vote-user/vote-user.component.ts | 43 ++++++ src/app/pages/vote/vote.component.html | 54 +++++++- src/app/pages/vote/vote.module.ts | 33 +++-- src/assets/img/vote/box-vote-reward-logo.webp | Bin 0 -> 51308 bytes 28 files changed, 627 insertions(+), 29 deletions(-) create mode 100644 src/app/components/progress-bar/progress-bar.component.html create mode 100644 src/app/components/progress-bar/progress-bar.component.scss create mode 100644 src/app/components/progress-bar/progress-bar.component.spec.ts create mode 100644 src/app/components/progress-bar/progress-bar.component.ts create mode 100644 src/app/pages/vote/components/vote-top-classement/vote-classement-row/vote-classement-row.component.html create mode 100644 src/app/pages/vote/components/vote-top-classement/vote-classement-row/vote-classement-row.component.scss create mode 100644 src/app/pages/vote/components/vote-top-classement/vote-classement-row/vote-classement-row.component.spec.ts create mode 100644 src/app/pages/vote/components/vote-top-classement/vote-classement-row/vote-classement-row.component.ts create mode 100644 src/app/pages/vote/components/vote-top-classement/vote-top-classement.component.html create mode 100644 src/app/pages/vote/components/vote-top-classement/vote-top-classement.component.scss create mode 100644 src/app/pages/vote/components/vote-top-classement/vote-top-classement.component.spec.ts create mode 100644 src/app/pages/vote/components/vote-top-classement/vote-top-classement.component.ts create mode 100644 src/app/pages/vote/components/vote-user/vote-user-website/vote-user-website.component.html create mode 100644 src/app/pages/vote/components/vote-user/vote-user-website/vote-user-website.component.scss create mode 100644 src/app/pages/vote/components/vote-user/vote-user-website/vote-user-website.component.spec.ts create mode 100644 src/app/pages/vote/components/vote-user/vote-user-website/vote-user-website.component.ts create mode 100644 src/app/pages/vote/components/vote-user/vote-user.component.html create mode 100644 src/app/pages/vote/components/vote-user/vote-user.component.scss create mode 100644 src/app/pages/vote/components/vote-user/vote-user.component.spec.ts create mode 100644 src/app/pages/vote/components/vote-user/vote-user.component.ts create mode 100644 src/assets/img/vote/box-vote-reward-logo.webp diff --git a/package-lock.json b/package-lock.json index bc64509..8a362ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "@angular/platform-server": "^17.3.7", "@angular/router": "^17.3.7", "@angular/ssr": "^17.3.6", - "@funixproductions/funixproductions-requests": "^0.2.2", + "@funixproductions/funixproductions-requests": "^0.2.5", "@ng-bootstrap/ng-bootstrap": "^16.0.0", "@popperjs/core": "^2.11.8", "bootstrap": "^5.3.0", @@ -3349,9 +3349,9 @@ } }, "node_modules/@funixproductions/funixproductions-requests": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@funixproductions/funixproductions-requests/-/funixproductions-requests-0.2.3.tgz", - "integrity": "sha512-2vd6V6VojuAv2B7JKFvyIK/IiG9s6uz5kKKwu1siHfCYPqONTptHJ2rCdYFlshWi9cYZX0jLXqQa59Gj1xduow==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@funixproductions/funixproductions-requests/-/funixproductions-requests-0.2.5.tgz", + "integrity": "sha512-NoNj2nYPvzF3kxXcGWsFAsU7s+vQoEG3WlbDtnPlYGUBfzQHrC26LHm0LYUOx4FuXNxiWiFd39CQQqDdBIK1rA==", "dependencies": { "tslib": "^2.3.0" }, diff --git a/package.json b/package.json index b2d741e..665cc3b 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@angular/platform-server": "^17.3.7", "@angular/router": "^17.3.7", "@angular/ssr": "^17.3.6", - "@funixproductions/funixproductions-requests": "^0.2.2", + "@funixproductions/funixproductions-requests": "^0.2.5", "@ng-bootstrap/ng-bootstrap": "^16.0.0", "@popperjs/core": "^2.11.8", "bootstrap": "^5.3.0", diff --git a/src/app/components/inputs/pacifista-search-player-input/pacifista-search-player-input.component.html b/src/app/components/inputs/pacifista-search-player-input/pacifista-search-player-input.component.html index 14c3a47..fda2d31 100644 --- a/src/app/components/inputs/pacifista-search-player-input/pacifista-search-player-input.component.html +++ b/src/app/components/inputs/pacifista-search-player-input/pacifista-search-player-input.component.html @@ -10,6 +10,21 @@ (textChange)="onInputTextChange($event)" > +
+ + + + + {{ playerSelected.minecraftUsername }} +
+
diff --git a/src/app/components/navbar/navbar.component.html b/src/app/components/navbar/navbar.component.html index da501dc..46d6e69 100644 --- a/src/app/components/navbar/navbar.component.html +++ b/src/app/components/navbar/navbar.component.html @@ -14,13 +14,13 @@ diff --git a/src/app/components/progress-bar/progress-bar.component.html b/src/app/components/progress-bar/progress-bar.component.html new file mode 100644 index 0000000..5c6b75b --- /dev/null +++ b/src/app/components/progress-bar/progress-bar.component.html @@ -0,0 +1,3 @@ +
+
+
diff --git a/src/app/components/progress-bar/progress-bar.component.scss b/src/app/components/progress-bar/progress-bar.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/components/progress-bar/progress-bar.component.spec.ts b/src/app/components/progress-bar/progress-bar.component.spec.ts new file mode 100644 index 0000000..39b7104 --- /dev/null +++ b/src/app/components/progress-bar/progress-bar.component.spec.ts @@ -0,0 +1,23 @@ +import {ComponentFixture, TestBed} from '@angular/core/testing'; + +import {ProgressBarComponent} from './progress-bar.component'; + +describe('ProgressBarComponent', () => { + let component: ProgressBarComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ProgressBarComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ProgressBarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/components/progress-bar/progress-bar.component.ts b/src/app/components/progress-bar/progress-bar.component.ts new file mode 100644 index 0000000..210e0de --- /dev/null +++ b/src/app/components/progress-bar/progress-bar.component.ts @@ -0,0 +1,16 @@ +import {Component, Input} from '@angular/core'; + +@Component({ + selector: 'progress-bar', + standalone: true, + imports: [], + templateUrl: './progress-bar.component.html', + styleUrl: './progress-bar.component.scss' +}) +export class ProgressBarComponent { + + @Input() progress: number = 0; + @Input() bgClass: string = ''; + @Input() label: string = 'Chargement'; + +} diff --git a/src/app/pages/accueil/components/news/news-accueil-section.component.ts b/src/app/pages/accueil/components/news/news-accueil-section.component.ts index ca558f9..270da9d 100644 --- a/src/app/pages/accueil/components/news/news-accueil-section.component.ts +++ b/src/app/pages/accueil/components/news/news-accueil-section.component.ts @@ -1,20 +1,19 @@ -import {AfterViewInit, Component, Inject, PLATFORM_ID} from '@angular/core'; +import {Component, Inject, OnInit, PLATFORM_ID} from '@angular/core'; import { - PacifistaNewsDTO, - PacifistaNewsService, - PageOption, - QueryBuilder + PacifistaNewsDTO, + PacifistaNewsService, + PageOption, + QueryBuilder } from "@funixproductions/funixproductions-requests"; import {HttpClient} from "@angular/common/http"; import {environment} from "../../../../../environments/environment"; -import {isPlatformBrowser} from "@angular/common"; @Component({ selector: 'news-section', templateUrl: './news-accueil-section.component.html', styleUrls: ['./news-accueil-section.component.scss'] }) -export class NewsAccueilSectionComponent implements AfterViewInit { +export class NewsAccueilSectionComponent implements OnInit { private readonly newsService: PacifistaNewsService; @@ -26,9 +25,7 @@ export class NewsAccueilSectionComponent implements AfterViewInit { this.newsService = new PacifistaNewsService(httpClient, environment.production); } - ngAfterViewInit(): void { - if (!isPlatformBrowser(this.platfomId)) return; - + ngOnInit(): void { const pageOption = new PageOption(); pageOption.elemsPerPage = 3; pageOption.sort = 'createdAt:desc'; diff --git a/src/app/pages/vote/components/vote-top-classement/vote-classement-row/vote-classement-row.component.html b/src/app/pages/vote/components/vote-top-classement/vote-classement-row/vote-classement-row.component.html new file mode 100644 index 0000000..8d39856 --- /dev/null +++ b/src/app/pages/vote/components/vote-top-classement/vote-classement-row/vote-classement-row.component.html @@ -0,0 +1,37 @@ +
+
+
+
+

# {{ position }}

+
+
+ + +
+
+

{{ username }}

+
+
+
+ +
+
+ 10 jours de Pacifista+ +
+
+ 5 jours de Pacifista+ +
+
+ 3 jours de Pacifista+ +
+
+ {{ getMoneyGain() }} PC +
+
+ +
+

{{ votes }}

+
+
diff --git a/src/app/pages/vote/components/vote-top-classement/vote-classement-row/vote-classement-row.component.scss b/src/app/pages/vote/components/vote-top-classement/vote-classement-row/vote-classement-row.component.scss new file mode 100644 index 0000000..2258935 --- /dev/null +++ b/src/app/pages/vote/components/vote-top-classement/vote-classement-row/vote-classement-row.component.scss @@ -0,0 +1,3 @@ +h3 { + font-size: 25px; +} \ No newline at end of file diff --git a/src/app/pages/vote/components/vote-top-classement/vote-classement-row/vote-classement-row.component.spec.ts b/src/app/pages/vote/components/vote-top-classement/vote-classement-row/vote-classement-row.component.spec.ts new file mode 100644 index 0000000..c4973e7 --- /dev/null +++ b/src/app/pages/vote/components/vote-top-classement/vote-classement-row/vote-classement-row.component.spec.ts @@ -0,0 +1,23 @@ +import {ComponentFixture, TestBed} from '@angular/core/testing'; + +import {VoteClassementRowComponent} from './vote-classement-row.component'; + +describe('VoteClassementRowComponent', () => { + let component: VoteClassementRowComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [VoteClassementRowComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(VoteClassementRowComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/vote/components/vote-top-classement/vote-classement-row/vote-classement-row.component.ts b/src/app/pages/vote/components/vote-top-classement/vote-classement-row/vote-classement-row.component.ts new file mode 100644 index 0000000..21d227d --- /dev/null +++ b/src/app/pages/vote/components/vote-top-classement/vote-classement-row/vote-classement-row.component.ts @@ -0,0 +1,44 @@ +import {Component, Input} from '@angular/core'; + +@Component({ + selector: 'app-vote-classement-row', + templateUrl: './vote-classement-row.component.html', + styleUrl: './vote-classement-row.component.scss' +}) +export class VoteClassementRowComponent { + + @Input() position: number = 1; + @Input() username: string = 'Username'; + @Input() votes: number = 1; + + getMoneyGain(): number | undefined { + if (this.position >= 1 && this.position <= 10) { + if (this.position === 1) { + return 15000; + } else if (this.position === 2) { + return 10000; + } else if (this.position === 3) { + return 7500; + } else if (this.position === 4) { + return 5000; + } else if (this.position === 5) { + return 4000; + } else if (this.position === 6) { + return 3000; + } else if (this.position === 7) { + return 2000; + } else if (this.position === 8) { + return 1500; + } else if (this.position === 9) { + return 1000; + } else if (this.position === 10) { + return 500; + } else { + return undefined; + } + } else { + return undefined; + } + } + +} diff --git a/src/app/pages/vote/components/vote-top-classement/vote-top-classement.component.html b/src/app/pages/vote/components/vote-top-classement/vote-top-classement.component.html new file mode 100644 index 0000000..e8af4ea --- /dev/null +++ b/src/app/pages/vote/components/vote-top-classement/vote-top-classement.component.html @@ -0,0 +1,37 @@ +
+
+
+
+
+
+

Rang

+
+
+

Pseudo

+
+
+
+ +
+

Récompenses

+
+ +
+

Votes

+
+
+ +
+ +
+
+ + +

+ Pas encore de votes, soyez le premier à voter ! +

+
diff --git a/src/app/pages/vote/components/vote-top-classement/vote-top-classement.component.scss b/src/app/pages/vote/components/vote-top-classement/vote-top-classement.component.scss new file mode 100644 index 0000000..933b963 --- /dev/null +++ b/src/app/pages/vote/components/vote-top-classement/vote-top-classement.component.scss @@ -0,0 +1,3 @@ +h3 { + font-size: 20px; +} \ No newline at end of file diff --git a/src/app/pages/vote/components/vote-top-classement/vote-top-classement.component.spec.ts b/src/app/pages/vote/components/vote-top-classement/vote-top-classement.component.spec.ts new file mode 100644 index 0000000..56f509b --- /dev/null +++ b/src/app/pages/vote/components/vote-top-classement/vote-top-classement.component.spec.ts @@ -0,0 +1,23 @@ +import {ComponentFixture, TestBed} from '@angular/core/testing'; + +import {VoteTopClassementComponent} from './vote-top-classement.component'; + +describe('VoteTopClassementComponent', () => { + let component: VoteTopClassementComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [VoteTopClassementComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(VoteTopClassementComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/vote/components/vote-top-classement/vote-top-classement.component.ts b/src/app/pages/vote/components/vote-top-classement/vote-top-classement.component.ts new file mode 100644 index 0000000..e313764 --- /dev/null +++ b/src/app/pages/vote/components/vote-top-classement/vote-top-classement.component.ts @@ -0,0 +1,32 @@ +import {AfterViewInit, Component} from '@angular/core'; +import {VotesCountDTO, VoteService} from "@funixproductions/funixproductions-requests"; +import {HttpClient} from "@angular/common/http"; +import NotificationService from "../../../../services/notifications/services/NotificationService"; +import {environment} from "../../../../../environments/environment"; + +@Component({ + selector: 'app-vote-top-classement', + templateUrl: './vote-top-classement.component.html', + styleUrl: './vote-top-classement.component.scss' +}) +export class VoteTopClassementComponent implements AfterViewInit { + + private readonly voteApiService: VoteService; + protected topVoters: VotesCountDTO[] = []; + + constructor(http: HttpClient, + private notificationService: NotificationService) { + this.voteApiService = new VoteService(http, environment.production) + } + + ngAfterViewInit(): void { + let date = new Date(); + + this.voteApiService.getTopVoters(date.getMonth() + 1, date.getFullYear()).subscribe({ + next: (response) => { + this.topVoters = response; + } + }) + } + +} diff --git a/src/app/pages/vote/components/vote-user/vote-user-website/vote-user-website.component.html b/src/app/pages/vote/components/vote-user/vote-user-website/vote-user-website.component.html new file mode 100644 index 0000000..112d652 --- /dev/null +++ b/src/app/pages/vote/components/vote-user/vote-user-website/vote-user-website.component.html @@ -0,0 +1,28 @@ +
+ + + + +
+ + + + \ No newline at end of file diff --git a/src/app/pages/vote/components/vote-user/vote-user-website/vote-user-website.component.scss b/src/app/pages/vote/components/vote-user/vote-user-website/vote-user-website.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/vote/components/vote-user/vote-user-website/vote-user-website.component.spec.ts b/src/app/pages/vote/components/vote-user/vote-user-website/vote-user-website.component.spec.ts new file mode 100644 index 0000000..0ca538c --- /dev/null +++ b/src/app/pages/vote/components/vote-user/vote-user-website/vote-user-website.component.spec.ts @@ -0,0 +1,23 @@ +import {ComponentFixture, TestBed} from '@angular/core/testing'; + +import {VoteUserWebsiteComponent} from './vote-user-website.component'; + +describe('VoteUserWebsiteComponent', () => { + let component: VoteUserWebsiteComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [VoteUserWebsiteComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(VoteUserWebsiteComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/vote/components/vote-user/vote-user-website/vote-user-website.component.ts b/src/app/pages/vote/components/vote-user/vote-user-website/vote-user-website.component.ts new file mode 100644 index 0000000..534ffe1 --- /dev/null +++ b/src/app/pages/vote/components/vote-user/vote-user-website/vote-user-website.component.ts @@ -0,0 +1,130 @@ +import {Component, Input, OnInit} from '@angular/core'; +import {VoteService, VoteWebsiteDTO} from "@funixproductions/funixproductions-requests"; +import {HttpClient} from "@angular/common/http"; +import {environment} from 'src/environments/environment'; +import NotificationService from "../../../../../services/notifications/services/NotificationService"; +import {interval, takeWhile} from "rxjs"; + +@Component({ + selector: 'app-vote-user-website', + templateUrl: './vote-user-website.component.html', + styleUrl: './vote-user-website.component.scss' +}) +export class VoteUserWebsiteComponent implements OnInit { + + @Input('voteWebsite') voteWebsite: VoteWebsiteDTO = new VoteWebsiteDTO("","","", 10); + @Input('voteUser') voteUser: string = ""; + + private readonly voteService: VoteService; + + availableAt?: Date; + countdown: string = '00:00:00'; + loading: boolean = false; + + constructor(httpClient: HttpClient, + private notificationService: NotificationService) { + this.voteService = new VoteService(httpClient, environment.production); + } + + ngOnInit(): void { + this.voteService.checkVote(this.voteWebsite.enumName).subscribe({ + next: (voteDTO) => { + this.availableAt = voteDTO.nextVoteDate; + + if (this.availableAt) { + this.availableAt = new Date(this.availableAt); + + if (this.availableAt > new Date()) { + this.startCountdown(this.availableAt); + } else { + this.availableAt = undefined; + } + } + } + }) + } + + convertMinutesInHours(): string { + const minutes = this.voteWebsite.coolDownInMinutes; + const hours = Math.floor(minutes / 60); + const minutesLeft = minutes % 60; + + if (hours < 1) { + return `${minutes}min`; + } else { + if (minutesLeft < 1) { + return `${hours}h`; + } else { + return `${hours}h${minutesLeft}`; + } + } + } + + makeVote() { + this.loading = true; + + this.voteService.makeVote(this.voteWebsite.enumName, this.voteUser).subscribe({ + next: (voteDTO) => { + this.availableAt = voteDTO.nextVoteDate; + + if (!this.availableAt) { + interval(5000) + .pipe(takeWhile(() => !this.availableAt)) + .subscribe(() => this.checkVote()); + this.openVoteWebsite(); + } + }, + error: err => { + this.notificationService.onErrorRequest(err); + this.loading = false; + } + }) + } + + private checkVote() { + this.voteService.checkVote(this.voteWebsite.enumName).subscribe({ + next: (voteDTO) => { + if (voteDTO.voteValidationDate && voteDTO.nextVoteDate) { + this.loading = false; + + this.availableAt = new Date(voteDTO.nextVoteDate); + + if (this.availableAt > new Date()) { + this.startCountdown(this.availableAt); + } else { + this.availableAt = undefined; + } + } + } + }) + } + + private openVoteWebsite() { + window.open(this.voteWebsite.urlVote, '_blank'); + } + + private startCountdown(targetDate: Date): void { + const intervalId = setInterval(() => { + + const now = new Date(); + const diff = targetDate.getTime() - now.getTime(); + + if (diff <= 0) { + clearInterval(intervalId); + this.countdown = '00:00:00'; + this.availableAt = undefined; + } else { + const hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); + const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60)); + const seconds = Math.floor((diff % (1000 * 60)) / 1000); + + this.countdown = `${this.pad(hours)}:${this.pad(minutes)}:${this.pad(seconds)}`; + } + }, 1000); + } + + private pad(num: number): string { + return num < 10 ? '0' + num : num.toString(); + } + +} diff --git a/src/app/pages/vote/components/vote-user/vote-user.component.html b/src/app/pages/vote/components/vote-user/vote-user.component.html new file mode 100644 index 0000000..eaa2048 --- /dev/null +++ b/src/app/pages/vote/components/vote-user/vote-user.component.html @@ -0,0 +1,30 @@ +
+ +
+ +
+
+

+ Vous pouvez voter pour {{ username }} sur les sites suivants : +

+
+
+
+ +
+
+
+
+ +
+ Aucun site de vote n'est disponible pour le moment. +
+
+
+ diff --git a/src/app/pages/vote/components/vote-user/vote-user.component.scss b/src/app/pages/vote/components/vote-user/vote-user.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/vote/components/vote-user/vote-user.component.spec.ts b/src/app/pages/vote/components/vote-user/vote-user.component.spec.ts new file mode 100644 index 0000000..2841f1f --- /dev/null +++ b/src/app/pages/vote/components/vote-user/vote-user.component.spec.ts @@ -0,0 +1,23 @@ +import {ComponentFixture, TestBed} from '@angular/core/testing'; + +import {VoteUserComponent} from './vote-user.component'; + +describe('VoteUserComponent', () => { + let component: VoteUserComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [VoteUserComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(VoteUserComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/vote/components/vote-user/vote-user.component.ts b/src/app/pages/vote/components/vote-user/vote-user.component.ts new file mode 100644 index 0000000..b632d35 --- /dev/null +++ b/src/app/pages/vote/components/vote-user/vote-user.component.ts @@ -0,0 +1,43 @@ +import {AfterViewInit, Component} from '@angular/core'; +import {VoteService, VoteWebsiteDTO} from "@funixproductions/funixproductions-requests"; +import {environment} from "../../../../../environments/environment"; +import {HttpClient} from "@angular/common/http"; +import NotificationService from "../../../../services/notifications/services/NotificationService"; + +@Component({ + selector: 'app-vote-user', + templateUrl: './vote-user.component.html', + styleUrl: './vote-user.component.scss' +}) +export class VoteUserComponent implements AfterViewInit { + + username?: string; + websites: VoteWebsiteDTO[] = []; + + private readonly service: VoteService; + + constructor(httpClient: HttpClient, + private notificationService: NotificationService) { + this.service = new VoteService(httpClient, environment.production); + } + + setUsername(username?: string) { + if (username) { + this.username = username; + } else { + this.username = undefined; + } + } + + ngAfterViewInit(): void { + this.service.getVoteWebsites().subscribe({ + next: (websites) => { + this.websites = websites; + }, + error: err => { + this.notificationService.onErrorRequest(err); + } + }) + } + +} diff --git a/src/app/pages/vote/vote.component.html b/src/app/pages/vote/vote.component.html index 3205292..8218a07 100644 --- a/src/app/pages/vote/vote.component.html +++ b/src/app/pages/vote/vote.component.html @@ -1,5 +1,53 @@ -
-

Voter pour Pacifista

+
+

Voter pour Pacifista

+

+ Voter permet au projet d'être mieux référencé sur des listes de serveurs + Minecraft et donc permet aux joueurs qui ne connaissent pas Pacifista de rejoindre le serveur ! + Merci de voter et de nous soutenir ❤️ ! +

+ +
+
+
+

Sélection du site de vote

+ + +
+
+ +
+
+ Image d'illustration de la récompense de vote pour Pacifista Minecraft. +
+ 🎁 Récompense par vote +
+
+

+ Une BOX Vote est offerte à chaque vote, elle contient des items et une possibilité de gagner des box payantes.
+ Rendez-vous sur le wiki concernant les box pour plus d'informations.

+ Pacifista + Une box supplémentaire est offerte pour les membres Pacifista+. +

+
+
+
+
+ +
+

Top 50 des meilleurs voteurs

+ +
+ +
+ +
+

Comment fonctionne le vote ?

+

+ Pour voter, il suffit de choisir son pseudo, choisir ensuite parmi les sites de vote disponibles et voter sur le site choisi.
+ Une fois le vote effectué, vous recevrez une récompense en jeu, une box vote, qui contient des items et une possibilité de gagner des box payantes.
+ Le système se base sur votre adresse IP pour voter, si vous avez plusieurs adresses IP, vous pouvez voter plusieurs fois. Exemple une connexion 4G et une Wifi. + Si vous êtes à plusieurs sur la même connexion vous ne pourrez voter que pour un seul compte Minecraft.
+ Les votes sont réinitialisés tous les mois, le classement est remis à zéro et les récompenses sont réinitialisées. +

+
-

En cours de production

diff --git a/src/app/pages/vote/vote.module.ts b/src/app/pages/vote/vote.module.ts index 703acb4..550f302 100644 --- a/src/app/pages/vote/vote.module.ts +++ b/src/app/pages/vote/vote.module.ts @@ -1,16 +1,33 @@ import {NgModule} from '@angular/core'; -import {CommonModule} from '@angular/common'; +import {CommonModule, NgOptimizedImage} from '@angular/common'; import {VoteComponent} from "./vote.component"; import {VoteRoutingModule} from "./vote-routing.module"; +import {VoteUserComponent} from "./components/vote-user/vote-user.component"; +import {VoteTopClassementComponent} from "./components/vote-top-classement/vote-top-classement.component"; +import { + VoteClassementRowComponent +} from "./components/vote-top-classement/vote-classement-row/vote-classement-row.component"; +import { + PacifistaSearchPlayerInputComponent +} from "../../components/inputs/pacifista-search-player-input/pacifista-search-player-input.component"; +import {VoteUserWebsiteComponent} from "./components/vote-user/vote-user-website/vote-user-website.component"; +import {MinecraftHeadComponent} from "../../components/minecraft-head/minecraft-head.component"; @NgModule({ - declarations: [ - VoteComponent - ], - imports: [ - CommonModule, - VoteRoutingModule - ] + declarations: [ + VoteComponent, + VoteUserComponent, + VoteTopClassementComponent, + VoteClassementRowComponent, + VoteUserWebsiteComponent + ], + imports: [ + CommonModule, + VoteRoutingModule, + NgOptimizedImage, + PacifistaSearchPlayerInputComponent, + MinecraftHeadComponent + ] }) export class VoteModule { } diff --git a/src/assets/img/vote/box-vote-reward-logo.webp b/src/assets/img/vote/box-vote-reward-logo.webp new file mode 100644 index 0000000000000000000000000000000000000000..203162df77646c2ab69770dbef56c6e8dd0ae56e GIT binary patch literal 51308 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
s@mt2oib2w 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 Ne`+2u#TNmSHUKvY>qGzm literal 0 HcmV?d00001