From 49d8fa74d902aa8b119a3db568ef44fa487889b9 Mon Sep 17 00:00:00 2001
From: Eduard Frankford <e.frankford@student.uibk.ac.at>
Date: Tue, 11 May 2021 09:43:06 +0200
Subject: [PATCH] frontend to backend connection established

---
 src/main/webapp/app/account/account.module.ts |  2 +
 .../app/account/achievements.component.html   | 32 ++++++
 .../app/account/achievements.component.scss   |  7 ++
 .../app/account/achievements.component.ts     | 38 +++++++
 .../account/settings/settings.component.html  | 98 ++++++++++---------
 5 files changed, 131 insertions(+), 46 deletions(-)
 create mode 100644 src/main/webapp/app/account/achievements.component.html
 create mode 100644 src/main/webapp/app/account/achievements.component.scss
 create mode 100644 src/main/webapp/app/account/achievements.component.ts

diff --git a/src/main/webapp/app/account/account.module.ts b/src/main/webapp/app/account/account.module.ts
index 4fae6981c..64f9aed69 100644
--- a/src/main/webapp/app/account/account.module.ts
+++ b/src/main/webapp/app/account/account.module.ts
@@ -11,6 +11,7 @@ import { PasswordResetInitComponent } from './password-reset/init/password-reset
 import { PasswordResetFinishComponent } from './password-reset/finish/password-reset-finish.component';
 import { SettingsComponent } from './settings/settings.component';
 import { accountState } from './account.route';
+import { AchievementsComponent } from './achievements.component';
 
 @NgModule({
   imports: [GitSearchV2SharedModule, RouterModule.forChild(accountState)],
@@ -22,6 +23,7 @@ import { accountState } from './account.route';
     PasswordResetInitComponent,
     PasswordResetFinishComponent,
     SettingsComponent,
+    AchievementsComponent,
   ],
 })
 export class AccountModule {}
diff --git a/src/main/webapp/app/account/achievements.component.html b/src/main/webapp/app/account/achievements.component.html
new file mode 100644
index 000000000..952248d98
--- /dev/null
+++ b/src/main/webapp/app/account/achievements.component.html
@@ -0,0 +1,32 @@
+
+    <h2>Achievements</h2>
+
+    <ul class="list-group">
+        <li class="list-group-item d-flex justify-content-between align-items-center">
+            More than 500 views
+            <span class="badge badge-primary badge-pill">14</span>
+        </li>
+        <li class="list-group-item d-flex justify-content-between align-items-center">
+            More than 100 views
+            <span class="badge badge-primary badge-pill">2</span>
+        </li>
+        <li class="list-group-item d-flex justify-content-between align-items-center">
+            More than 10 views
+            <span class="badge badge-primary badge-pill">1</span>
+        </li>
+        <li class="list-group-item d-flex justify-content-between align-items-center">
+            More than 500 downloads
+            <span class="badge badge-primary badge-pill">14</span>
+        </li>
+        <li class="list-group-item d-flex justify-content-between align-items-center">
+            More than 100 downloads
+            <fa-icon icon="check" class="greeniconcolor"></fa-icon>
+        </li>
+        <li class="list-group-item d-flex justify-content-between align-items-center">
+            More than 10 downloads
+            <fa-icon icon="times-circle" class="rediconcolor"></fa-icon>
+        </li>
+    </ul>
+
+    <button (click) = "getTotalNumberOfViews()" class="btn btn-primary"> Get number of views </button>
+
diff --git a/src/main/webapp/app/account/achievements.component.scss b/src/main/webapp/app/account/achievements.component.scss
new file mode 100644
index 000000000..b51a15995
--- /dev/null
+++ b/src/main/webapp/app/account/achievements.component.scss
@@ -0,0 +1,7 @@
+.greeniconcolor {
+  color: lightgreen;
+}
+
+.rediconcolor {
+  color: darkred;
+}
diff --git a/src/main/webapp/app/account/achievements.component.ts b/src/main/webapp/app/account/achievements.component.ts
new file mode 100644
index 000000000..6a4f9e568
--- /dev/null
+++ b/src/main/webapp/app/account/achievements.component.ts
@@ -0,0 +1,38 @@
+import { Component, OnInit } from '@angular/core';
+import { Injectable } from '@angular/core';
+import { SearchService } from 'app/search/service/search-service';
+
+import { AccountService } from 'app/core/auth/account.service';
+import { Account } from 'app/core/user/account.model';
+
+@Component({
+  selector: 'jhi-achievements',
+  templateUrl: './achievements.component.html',
+  styleUrls: ['./achievements.component.scss'],
+})
+@Injectable({ providedIn: 'root' })
+export class AchievementsComponent implements OnInit {
+  account!: Account;
+
+  constructor(private accountService: AccountService, protected searchService: SearchService) {}
+
+  public getTotalNumberOfViews(): void {
+    // eslint-disable-next-line no-console
+    console.log('I have been called');
+    this.searchService.getStatisticsForUser(this.account.login).subscribe(
+      (data: number) => {
+        // eslint-disable-next-line no-console
+        console.log('Data: ' + data + ' for account ' + this.account.login);
+      },
+      () => alert('Could not load statistics for User')
+    );
+  }
+
+  ngOnInit(): void {
+    this.accountService.identity().subscribe(account => {
+      if (account) {
+        this.account = account;
+      }
+    });
+  }
+}
diff --git a/src/main/webapp/app/account/settings/settings.component.html b/src/main/webapp/app/account/settings/settings.component.html
index 3fa2a75c5..b9b4e3ad4 100644
--- a/src/main/webapp/app/account/settings/settings.component.html
+++ b/src/main/webapp/app/account/settings/settings.component.html
@@ -1,7 +1,8 @@
 <div>
     <div class="row justify-content-center">
         <div class="col-md-8">
-            <h2 jhiTranslate="settings.title" [translateValues]="{ username: account.login }" *ngIf="account">User settings for [<b>{{ account.login }}</b>]</h2>
+            <h2 jhiTranslate="settings.title" [translateValues]="{ username: account.login }" *ngIf="account">User
+                settings for [<b>{{ account.login }}</b>]</h2>
 
             <div class="alert alert-success" *ngIf="success" jhiTranslate="settings.messages.success">
                 <strong>Settings saved!</strong>
@@ -11,52 +12,51 @@
 
             <form name="form" role="form" (ngSubmit)="save()" [formGroup]="settingsForm" *ngIf="account" novalidate>
                 <div class="form-group">
-                    <label class="form-control-label" for="firstName" jhiTranslate="settings.form.firstname">First Name</label>
-                    <input type="text" class="form-control" id="firstName" name="firstName" placeholder="{{ 'settings.form.firstname.placeholder' | translate }}"
-                           formControlName="firstName">
-
-                    <div *ngIf="settingsForm.get('firstName')!.invalid && (settingsForm.get('firstName')!.dirty || settingsForm.get('firstName')!.touched)">
-                        <small class="form-text text-danger"
-                               *ngIf="settingsForm.get('firstName')?.errors?.required"
-                               jhiTranslate="settings.messages.validate.firstname.required">
+                    <label class="form-control-label" for="firstName" jhiTranslate="settings.form.firstname">First
+                        Name</label>
+                    <input type="text" class="form-control" id="firstName" name="firstName"
+                        placeholder="{{ 'settings.form.firstname.placeholder' | translate }}"
+                        formControlName="firstName">
+
+                    <div
+                        *ngIf="settingsForm.get('firstName')!.invalid && (settingsForm.get('firstName')!.dirty || settingsForm.get('firstName')!.touched)">
+                        <small class="form-text text-danger" *ngIf="settingsForm.get('firstName')?.errors?.required"
+                            jhiTranslate="settings.messages.validate.firstname.required">
                             Your first name is required.
                         </small>
 
-                        <small class="form-text text-danger"
-                               *ngIf="settingsForm.get('firstName')?.errors?.minlength"
-                               jhiTranslate="settings.messages.validate.firstname.minlength">
+                        <small class="form-text text-danger" *ngIf="settingsForm.get('firstName')?.errors?.minlength"
+                            jhiTranslate="settings.messages.validate.firstname.minlength">
                             Your first name is required to be at least 1 character.
                         </small>
 
-                        <small class="form-text text-danger"
-                               *ngIf="settingsForm.get('firstName')?.errors?.maxlength"
-                               jhiTranslate="settings.messages.validate.firstname.maxlength">
+                        <small class="form-text text-danger" *ngIf="settingsForm.get('firstName')?.errors?.maxlength"
+                            jhiTranslate="settings.messages.validate.firstname.maxlength">
                             Your first name cannot be longer than 50 characters.
                         </small>
                     </div>
                 </div>
 
                 <div class="form-group">
-                    <label class="form-control-label" for="lastName" jhiTranslate="settings.form.lastname">Last Name</label>
-                    <input type="text" class="form-control" id="lastName" name="lastName" placeholder="{{ 'settings.form.lastname.placeholder' | translate }}"
-                           formControlName="lastName">
-
-                    <div *ngIf="settingsForm.get('lastName')!.invalid && (settingsForm.get('lastName')!.dirty || settingsForm.get('lastName')!.touched)">
-                        <small class="form-text text-danger"
-                               *ngIf="settingsForm.get('lastName')?.errors?.required"
-                               jhiTranslate="settings.messages.validate.lastname.required">
+                    <label class="form-control-label" for="lastName" jhiTranslate="settings.form.lastname">Last
+                        Name</label>
+                    <input type="text" class="form-control" id="lastName" name="lastName"
+                        placeholder="{{ 'settings.form.lastname.placeholder' | translate }}" formControlName="lastName">
+
+                    <div
+                        *ngIf="settingsForm.get('lastName')!.invalid && (settingsForm.get('lastName')!.dirty || settingsForm.get('lastName')!.touched)">
+                        <small class="form-text text-danger" *ngIf="settingsForm.get('lastName')?.errors?.required"
+                            jhiTranslate="settings.messages.validate.lastname.required">
                             Your last name is required.
                         </small>
 
-                        <small class="form-text text-danger"
-                               *ngIf="settingsForm.get('lastName')?.errors?.minlength"
-                               jhiTranslate="settings.messages.validate.lastname.minlength">
+                        <small class="form-text text-danger" *ngIf="settingsForm.get('lastName')?.errors?.minlength"
+                            jhiTranslate="settings.messages.validate.lastname.minlength">
                             Your last name is required to be at least 1 character.
                         </small>
 
-                        <small class="form-text text-danger"
-                               *ngIf="settingsForm.get('lastName')?.errors?.maxlength"
-                               jhiTranslate="settings.messages.validate.lastname.maxlength">
+                        <small class="form-text text-danger" *ngIf="settingsForm.get('lastName')?.errors?.maxlength"
+                            jhiTranslate="settings.messages.validate.lastname.maxlength">
                             Your last name cannot be longer than 50 characters.
                         </small>
                     </div>
@@ -64,31 +64,28 @@
 
                 <div class="form-group">
                     <label class="form-control-label" for="email" jhiTranslate="global.form.email.label">Email</label>
-                    <input type="email" class="form-control" id="email" name="email" placeholder="{{ 'global.form.email.placeholder' | translate }}"
-                           formControlName="email">
+                    <input type="email" class="form-control" id="email" name="email"
+                        placeholder="{{ 'global.form.email.placeholder' | translate }}" formControlName="email">
 
-                    <div *ngIf="settingsForm.get('email')!.invalid && (settingsForm.get('email')!.dirty || settingsForm.get('email')!.touched)">
-                        <small class="form-text text-danger"
-                               *ngIf="settingsForm.get('email')?.errors?.required"
-                               jhiTranslate="global.messages.validate.email.required">
+                    <div
+                        *ngIf="settingsForm.get('email')!.invalid && (settingsForm.get('email')!.dirty || settingsForm.get('email')!.touched)">
+                        <small class="form-text text-danger" *ngIf="settingsForm.get('email')?.errors?.required"
+                            jhiTranslate="global.messages.validate.email.required">
                             Your email is required.
                         </small>
 
-                        <small class="form-text text-danger"
-                               *ngIf="settingsForm.get('email')?.errors?.email"
-                               jhiTranslate="global.messages.validate.email.invalid">
+                        <small class="form-text text-danger" *ngIf="settingsForm.get('email')?.errors?.email"
+                            jhiTranslate="global.messages.validate.email.invalid">
                             Your email is invalid.
                         </small>
 
-                        <small class="form-text text-danger"
-                               *ngIf="settingsForm.get('email')?.errors?.minlength"
-                               jhiTranslate="global.messages.validate.email.minlength">
+                        <small class="form-text text-danger" *ngIf="settingsForm.get('email')?.errors?.minlength"
+                            jhiTranslate="global.messages.validate.email.minlength">
                             Your email is required to be at least 5 characters.
                         </small>
 
-                        <small class="form-text text-danger"
-                               *ngIf="settingsForm.get('email')?.errors?.maxlength"
-                               jhiTranslate="global.messages.validate.email.maxlength">
+                        <small class="form-text text-danger" *ngIf="settingsForm.get('email')?.errors?.maxlength"
+                            jhiTranslate="global.messages.validate.email.maxlength">
                             Your email cannot be longer than 100 characters.
                         </small>
                     </div>
@@ -97,12 +94,21 @@
                 <div class="form-group" *ngIf="languages && languages.length > 0">
                     <label for="langKey" jhiTranslate="settings.form.language">Language</label>
                     <select class="form-control" id="langKey" name="langKey" formControlName="langKey">
-                        <option *ngFor="let fileFormat of languages" [value]="fileFormat">{{ fileFormat | findLanguageFromKey }}</option>
+                        <option *ngFor="let fileFormat of languages" [value]="fileFormat">{{ fileFormat |
+                            findLanguageFromKey }}</option>
                     </select>
                 </div>
 
-                <button type="submit" [disabled]="settingsForm.invalid" class="btn btn-primary" jhiTranslate="settings.form.button">Save</button>
+                <button type="submit" [disabled]="settingsForm.invalid" class="btn btn-primary"
+                    jhiTranslate="settings.form.button">Save</button>
             </form>
         </div>
     </div>
+    <div style="padding-top: 50px;">
+    <div class="row justify-content-center">
+        <div class="col-md-8">
+            <jhi-achievements></jhi-achievements>
+        </div>
+    </div>
 </div>
+</div>
\ No newline at end of file
-- 
GitLab