diff --git a/src/main/webapp/app/account/account.module.ts b/src/main/webapp/app/account/account.module.ts index 4fae6981c9436f4ff984ba56888e13a89a9d3668..64f9aed69040f0cf5d6a6041724c65c20c719d55 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 0000000000000000000000000000000000000000..952248d98cbb027ac6094474bdfcc5965e9af2df --- /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 0000000000000000000000000000000000000000..b51a15995063b6fde98b2db57c12c210f15f5042 --- /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 0000000000000000000000000000000000000000..6a4f9e568ee9fee5e94756b8b5039e46741c149f --- /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 3fa2a75c5ed2e0e8adc629362a9402be4c01bb1c..b9b4e3ad4cc80cac62896237e63ee11b61cdc3a0 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