Skip to content

Commit

Permalink
Merge pull request #287 from computas/develop
Browse files Browse the repository at this point in the history
merge 2.1.6 dev into release
  • Loading branch information
Ivan-Computas authored Oct 15, 2024
2 parents 476bddf + d7be33f commit 4a3bd2a
Show file tree
Hide file tree
Showing 3 changed files with 100 additions and 57 deletions.
12 changes: 6 additions & 6 deletions src/app/admin/statistics/statistics.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,15 @@
<app-select-year-component (valueSelected)="onYearSelected($event)"></app-select-year-component>
}


<!-- Confirm Button -->
<button mat-button class="confirm-btn" (click)="confirmSelection()">Hent statistikk</button>

</div>
<div> @if (errorMessage) {
<br>
<p>{{errorMessage}}</p>
}</div>

<!-- Confirm Button -->
</div>

<!-- Display Fetched Data -->
@if (dataFetched()) {
Expand All @@ -39,8 +42,5 @@ <h2>Statistikk for {{ selectedYear }}</h2>

</div>
}

<!-- Close Button -->
<!-- <button mat-button mat-dialog-close class="close-btn" (click)="closeStatistics()">Lukk</button> -->
</div>
</div>
57 changes: 34 additions & 23 deletions src/app/admin/statistics/statistics.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,38 +33,48 @@ export class StatisticsComponent implements OnDestroy {
year= "";
selected = "month";
selectedYear = "";
errorMessage = "";

constructor(
public dialogRef: MatDialogRef<StatisticsComponent>,
private loginService: LoginService,
@Inject(MAT_DIALOG_DATA) public data: string) { }


confirmSelection() {
if (this.selected === "month") {
this.loginService.getStatisticsPerMonth(this.month, this.year).subscribe({
next: (res) => {
this.dataFetched.set(true);
this.scoreCount = res;
confirmSelection() {
this.errorMessage = ""; // Reset error message

},
error: (err) => {
console.error('Failed to fetch statistics', err);
}
});
} else {
this.loginService.getStatisticsPerYear(this.selectedYear).subscribe({
next: (res) => {
this.dataFetched.set(true);
this.scoreCount = res;

},
error: (err) => {
console.error('Failed to fetch statistics', err);
if (this.selected === "month" && this.month !== "") {
this.loginService.getStatisticsPerMonth(this.month, this.year).subscribe({
next: (res) => {
this.dataFetched.set(true);
this.scoreCount = res;
this.month = "";
this.year = "";
},
error: (err) => {
console.error('Failed to fetch statistics', err);
}
});

} else if (this.selected === "year" && this.selectedYear !== "") {
this.loginService.getStatisticsPerYear(this.selectedYear).subscribe({
next: (res) => {
this.dataFetched.set(true);
this.scoreCount = res;
},
error: (err) => {
console.error('Failed to fetch statistics', err);
}
});
} else {
if (this.selected === "month") {
this.errorMessage = "Vennligst velg en dato";
} else if (this.selected === "year") {
this.errorMessage = "Vennligst velg et år";
}
});
}
}
}

closeDialog(): void {
this.dialogRef.close();
Expand All @@ -73,6 +83,7 @@ export class StatisticsComponent implements OnDestroy {
onToggleChanged(value: string) {
this.selected = value;
this.dataFetched.set(false);
this.errorMessage = "";
}

onYearSelected(year: string) {
Expand All @@ -84,7 +95,7 @@ export class StatisticsComponent implements OnDestroy {
this.month = date[0];
this.display_month = date[1]
this.year = date[2];
}
}

ngOnDestroy(): void {
this.dialogRef.close();
Expand Down
88 changes: 60 additions & 28 deletions src/app/game/game-draw/game-draw.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ import { SpeechBubbleComponent } from '../shared-components/speech-bubble/speech
import { OAvatarComponent } from '@/assets/avatars/o-avatar/o-avatar.component';
import { IAvatarComponent } from '@/assets/avatars/i-avatar/i-avatar.component';
import { ViewChild } from '@angular/core';
import { Router } from '@angular/router';
import { routes } from '../../shared/models/routes';
import { MatSnackBar } from '@angular/material/snack-bar';

@Component({
selector: 'app-drawing',
Expand Down Expand Up @@ -105,7 +108,9 @@ export class GameDrawComponent implements OnInit, OnDestroy {
private drawingService: DrawingService,
private imageService: ImageService,
private soundService: SoundService,
private translationService: TranslationService
private translationService: TranslationService,
private router: Router,
private snackBar: MatSnackBar
) {}

ngOnInit(): void {
Expand Down Expand Up @@ -319,6 +324,10 @@ export class GameDrawComponent implements OnInit, OnDestroy {
});
}

goHome() {
this.router.navigate([routes.LANDING]);
}

addTimeUsed() {
this.secondsUsed++;
this.drawingService.setSecondsUsed(this.secondsUsed);
Expand Down Expand Up @@ -350,34 +359,57 @@ export class GameDrawComponent implements OnInit, OnDestroy {

handleSinglePlayerClassification(dataUrl: string, croppedCoordinates: number[]) {
const formData: FormData = this.createFormData(dataUrl);
this.drawingService.classify(formData).subscribe((res) => {
const sortedCertaintyArr = this.sortOnCertainty(res);
this.updateAiGuess(sortedCertaintyArr);
if (this.drawingService.roundIsDone(res.hasWon, res.gameState)) {
this.gameStateService.goToPage(GAMESTATE.intermediateResult);
this.drawingService.sortedCertainty = sortedCertaintyArr;
this.soundService.playResultSound(res.hasWon);
const score = this.score > 0 ? this.score : 0;
this.drawingService.lastResult.score = Math.round(score);
this.imageService
.resize(this.canvas.nativeElement.toDataURL('image/png'), croppedCoordinates, this.resultImageSize)
.subscribe({
next: (dataUrlHighRes) => {
this.drawingService.lastResult.imageData = dataUrlHighRes;
},
});
} else {
this.imageService
.resize(this.canvas.nativeElement.toDataURL('image/png'), croppedCoordinates, this.resultImageSize)
.subscribe({
next: (dataUrlHighRes) => {
if (this.result) {
this.result.imageData = dataUrlHighRes;
}
},
});
}
this.drawingService.classify(formData).subscribe({
next: (res) => {
const sortedCertaintyArr = this.sortOnCertainty(res);
this.updateAiGuess(sortedCertaintyArr);

if (this.drawingService.roundIsDone(res.hasWon, res.gameState)) {
this.gameStateService.goToPage(GAMESTATE.intermediateResult);
this.drawingService.sortedCertainty = sortedCertaintyArr;
this.soundService.playResultSound(res.hasWon);
const score = this.score > 0 ? this.score : 0;
this.drawingService.lastResult.score = Math.round(score);
this.imageService
.resize(this.canvas.nativeElement.toDataURL('image/png'), croppedCoordinates, this.resultImageSize)
.subscribe({
next: (dataUrlHighRes) => {
this.drawingService.lastResult.imageData = dataUrlHighRes;
},
});
} else {
this.imageService
.resize(this.canvas.nativeElement.toDataURL('image/png'), croppedCoordinates, this.resultImageSize)
.subscribe({
next: (dataUrlHighRes) => {
if (this.result) {
this.result.imageData = dataUrlHighRes;
}
},
error: (error) => {
console.log("error");
console.error("An error occurred while classifying the image:", error);
this.snackBar.open('Oops, noe gikk galt. Vennligst prøv igjen senere.', 'Close', {
duration: 3000,
});
setTimeout(() => {
this.goHome();
}, 5000);
},
});
}
},
error: (err) => {
console.log("Error subscribing to classify:", err); // Log the error when subscribing fails
this.snackBar.open('Oops, noe gikk galt. Vennligst prøv igjen senere.', 'Close', {
duration: 3000,
});
setTimeout(() => {
this.goHome();
}, 5000);
},
});

}

classify(isMultiplayer = false) {
Expand Down

0 comments on commit 4a3bd2a

Please sign in to comment.