From 34d0b6f70b70d53c0143a70ce3c705c3cffb28bf Mon Sep 17 00:00:00 2001
From: Justin Hubert <135236159+Jstn2004@users.noreply.github.com>
Date: Fri, 3 May 2024 21:08:19 +0200
Subject: [PATCH] Redesign of the loginpage and formatting code (#156)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* style: upgrade login and sign up page
* feat: loader hinzugefügt
* feat: implemented landing page
* format code
* format code
---
frontend/src/app/app-routing.module.ts | 26 +++-
frontend/src/app/app.component.html | 2 +-
frontend/src/app/app.component.spec.ts | 12 +-
frontend/src/app/app.module.ts | 6 +
.../challenge-button.component.html | 2 +-
.../challenge-button.component.ts | 12 +-
.../inputfield/inputfield.component.html | 3 +-
.../inputfield/inputfield.component.scss | 35 +++--
.../inputfield/inputfield.component.spec.ts | 7 +-
.../atoms/inputfield/inputfield.component.ts | 10 +-
.../atoms/loader/loader.component.html | 3 +-
.../atoms/loader/loader.component.scss | 91 ++++++-----
.../atoms/loader/loader.component.ts | 6 +-
.../stopbutton/stopbutton.component.scss | 147 +++++++++---------
.../atoms/timer/timer.component.html | 2 +-
.../atoms/timer/timer.component.scss | 10 +-
.../atoms/timer/timer.component.spec.ts | 7 +-
.../components/atoms/timer/timer.component.ts | 11 +-
.../atoms/toast/toast.component.html | 9 +-
.../atoms/toast/toast.component.scss | 77 +++++----
.../challenge-dialog.component.html | 10 +-
.../challenge-dialog.component.scss | 2 +-
.../loginform/loginform.component.html | 46 +++---
.../loginform/loginform.component.scss | 2 +-
.../signupform/signupform.component.html | 15 +-
.../signupform/signupform.component.scss | 96 ++++++++++++
.../statistic-header.component.html | 3 +-
.../authenticationpage.component.html | 11 +-
.../authenticationpage.component.scss | 62 +++++---
.../friendpage/friendpage.component.html | 4 +
.../friendpage/friendpage.component.scss | 6 +
.../friendpage/friendpage.component.spec.ts | 23 +++
.../pages/friendpage/friendpage.component.ts | 10 ++
.../landingpage/landingpage.component.html | 9 ++
.../landingpage/landingpage.component.scss | 48 ++++++
.../landingpage/landingpage.component.spec.ts | 23 +++
.../landingpage/landingpage.component.ts | 25 +++
.../pages/mainpage/mainpage.component.html | 8 +-
.../pages/mainpage/mainpage.component.scss | 22 +--
frontend/src/app/pipes/timer.pipe.ts | 3 +-
frontend/src/app/services/event.service.ts | 40 ++---
frontend/src/index.html | 2 +-
42 files changed, 628 insertions(+), 320 deletions(-)
create mode 100644 frontend/src/app/components/pages/friendpage/friendpage.component.html
create mode 100644 frontend/src/app/components/pages/friendpage/friendpage.component.scss
create mode 100644 frontend/src/app/components/pages/friendpage/friendpage.component.spec.ts
create mode 100644 frontend/src/app/components/pages/friendpage/friendpage.component.ts
create mode 100644 frontend/src/app/components/pages/landingpage/landingpage.component.html
create mode 100644 frontend/src/app/components/pages/landingpage/landingpage.component.scss
create mode 100644 frontend/src/app/components/pages/landingpage/landingpage.component.spec.ts
create mode 100644 frontend/src/app/components/pages/landingpage/landingpage.component.ts
diff --git a/frontend/src/app/app-routing.module.ts b/frontend/src/app/app-routing.module.ts
index dbfa6bd..cd7a74e 100644
--- a/frontend/src/app/app-routing.module.ts
+++ b/frontend/src/app/app-routing.module.ts
@@ -4,17 +4,27 @@ import { MainpageComponent } from './components/pages/mainpage/mainpage.componen
import { AuthenticationpageComponent } from './components/pages/authenticationpage/authenticationpage.component';
import { LoginformComponent } from './components/organisms/loginform/loginform.component';
import { SignupformComponent } from './components/organisms/signupform/signupform.component';
+import { LandingpageComponent } from './components/pages/landingpage/landingpage.component';
+import { FriendpageComponent } from './components/pages/friendpage/friendpage.component';
const routes: Routes = [
- {path:"main", component: MainpageComponent},
- {path:"auth", component : AuthenticationpageComponent, children : [
- {path: "signup", component: SignupformComponent},
- {path: "login", component: LoginformComponent}
- ]}
-];
+ { path: '', redirectTo: '/home', pathMatch: 'full' },
+ { path: 'home', component: LandingpageComponent },
+ { path: 'main', component: MainpageComponent },
+ {
+ path: 'auth',
+ component: AuthenticationpageComponent,
+ children: [
+ { path: 'signup', component: SignupformComponent },
+ { path: 'login', component: LoginformComponent },
+ ],
+ },
+ {path: 'friends', component: FriendpageComponent},
+ { path: '**', redirectTo: '/home' },
+
@NgModule({
imports: [RouterModule.forRoot(routes)],
- exports: [RouterModule]
+ exports: [RouterModule],
})
-export class AppRoutingModule { }
+export class AppRoutingModule {}
diff --git a/frontend/src/app/app.component.html b/frontend/src/app/app.component.html
index b1aee0a..ad89891 100644
--- a/frontend/src/app/app.component.html
+++ b/frontend/src/app/app.component.html
@@ -1,3 +1,3 @@
-
+
\ No newline at end of file
diff --git a/frontend/src/app/app.component.spec.ts b/frontend/src/app/app.component.spec.ts
index 4b69620..a1d7283 100644
--- a/frontend/src/app/app.component.spec.ts
+++ b/frontend/src/app/app.component.spec.ts
@@ -5,12 +5,8 @@ import { AppComponent } from './app.component';
describe('AppComponent', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
- imports: [
- RouterTestingModule
- ],
- declarations: [
- AppComponent
- ],
+ imports: [RouterTestingModule],
+ declarations: [AppComponent],
}).compileComponents();
});
@@ -30,6 +26,8 @@ describe('AppComponent', () => {
const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement as HTMLElement;
- expect(compiled.querySelector('h1')?.textContent).toContain('Hello, frontend');
+ expect(compiled.querySelector('h1')?.textContent).toContain(
+ 'Hello, frontend'
+ );
});
});
diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts
index 88596c6..eb2f79a 100644
--- a/frontend/src/app/app.module.ts
+++ b/frontend/src/app/app.module.ts
@@ -19,6 +19,9 @@ import { LoginformComponent } from './components/organisms/loginform/loginform.c
import { InputfieldComponent } from './components/atoms/inputfield/inputfield.component';
import { SignupformComponent } from './components/organisms/signupform/signupform.component';
import { LoaderComponent } from './components/atoms/loader/loader.component';
+import { LandingpageComponent } from './components/pages/landingpage/landingpage.component';
+import { FriendpageComponent } from './components/pages/friendpage/friendpage.component';
+
@NgModule({
declarations: [
@@ -37,6 +40,9 @@ import { LoaderComponent } from './components/atoms/loader/loader.component';
InputfieldComponent,
SignupformComponent,
LoaderComponent,
+ LandingpageComponent,
+ FriendpageComponent,
+
],
imports: [BrowserModule, AppRoutingModule, BrowserAnimationsModule],
providers: [provideAnimations()],
diff --git a/frontend/src/app/components/atoms/challenge-button/challenge-button.component.html b/frontend/src/app/components/atoms/challenge-button/challenge-button.component.html
index d6cbbdf..b1fa316 100644
--- a/frontend/src/app/components/atoms/challenge-button/challenge-button.component.html
+++ b/frontend/src/app/components/atoms/challenge-button/challenge-button.component.html
@@ -8,7 +8,7 @@
();
buttonIsclicked: boolean = false;
-
-
- constructor(public eventService:EventService)
- {
- this.eventService = eventService;
+
+ constructor(public eventService: EventService) {
+ this.eventService = eventService;
}
challengeButtonIsClicked() {
diff --git a/frontend/src/app/components/atoms/inputfield/inputfield.component.html b/frontend/src/app/components/atoms/inputfield/inputfield.component.html
index ac5eb98..370a696 100644
--- a/frontend/src/app/components/atoms/inputfield/inputfield.component.html
+++ b/frontend/src/app/components/atoms/inputfield/inputfield.component.html
@@ -1,2 +1,3 @@
-
\ No newline at end of file
+
+
diff --git a/frontend/src/app/components/atoms/inputfield/inputfield.component.scss b/frontend/src/app/components/atoms/inputfield/inputfield.component.scss
index 1772d31..68fa0af 100644
--- a/frontend/src/app/components/atoms/inputfield/inputfield.component.scss
+++ b/frontend/src/app/components/atoms/inputfield/inputfield.component.scss
@@ -1,19 +1,20 @@
.input {
- border: 0;
- outline: none;
- box-shadow: none;
- display: block;
- height: 30px;
- line-height: 30px;
- padding: 8px 15px;
- border-bottom: 1px solid #eee;
- width: 80%;
- font-size: 12px;
+ border: 0;
+ outline: none;
+ box-shadow: none;
+ display: block;
+ height: 30px;
+ line-height: 30px;
+ padding: 8px 15px;
+ border-bottom: 1px solid #eee;
+ width: 80%;
+ font-size: 12px;
+
+ &:last-child {
+ border-bottom: 0;
+ }
+ &::-webkit-input-placeholder {
+ color: rgba(0, 0, 0, 0.4);
+ }
+}
- &:last-child {
- border-bottom: 0;
- }
- &::-webkit-input-placeholder {
- color: rgba(0,0,0,0.4);
- }
-}
\ No newline at end of file
diff --git a/frontend/src/app/components/atoms/inputfield/inputfield.component.spec.ts b/frontend/src/app/components/atoms/inputfield/inputfield.component.spec.ts
index 511e088..7f61758 100644
--- a/frontend/src/app/components/atoms/inputfield/inputfield.component.spec.ts
+++ b/frontend/src/app/components/atoms/inputfield/inputfield.component.spec.ts
@@ -8,10 +8,9 @@ describe('InputfieldComponent', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
- declarations: [InputfieldComponent]
- })
- .compileComponents();
-
+ declarations: [InputfieldComponent],
+ }).compileComponents();
+
fixture = TestBed.createComponent(InputfieldComponent);
component = fixture.componentInstance;
fixture.detectChanges();
diff --git a/frontend/src/app/components/atoms/inputfield/inputfield.component.ts b/frontend/src/app/components/atoms/inputfield/inputfield.component.ts
index 5246b24..ee25eca 100644
--- a/frontend/src/app/components/atoms/inputfield/inputfield.component.ts
+++ b/frontend/src/app/components/atoms/inputfield/inputfield.component.ts
@@ -3,12 +3,10 @@ import { Component, Input } from '@angular/core';
@Component({
selector: 'app-inputfield',
templateUrl: './inputfield.component.html',
- styleUrl: './inputfield.component.scss'
+ styleUrl: './inputfield.component.scss',
})
export class InputfieldComponent {
- @Input() typetext: string = "Hallo";
- @Input() placeholder: string = "";
- @Input() labeltext: string = "";
-
-
+ @Input() typetext: string = 'Hallo';
+ @Input() placeholder: string = '';
+ @Input() labeltext: string = '';
}
diff --git a/frontend/src/app/components/atoms/loader/loader.component.html b/frontend/src/app/components/atoms/loader/loader.component.html
index ab61891..f2394e5 100644
--- a/frontend/src/app/components/atoms/loader/loader.component.html
+++ b/frontend/src/app/components/atoms/loader/loader.component.html
@@ -1 +1,2 @@
-
\ No newline at end of file
+
+
diff --git a/frontend/src/app/components/atoms/loader/loader.component.scss b/frontend/src/app/components/atoms/loader/loader.component.scss
index 3097992..4211f51 100644
--- a/frontend/src/app/components/atoms/loader/loader.component.scss
+++ b/frontend/src/app/components/atoms/loader/loader.component.scss
@@ -1,42 +1,51 @@
.loader {
- width: 10px;
- height: 10px;
- border-radius: 50%;
- display: block;
- margin:15px auto;
- position: relative;
- color: #FFF;
- left: -100px;
- box-sizing: border-box;
- animation: shadowRolling 2s linear infinite;
- }
-
- @keyframes shadowRolling {
- 0% {
- box-shadow: 0px 0 rgba(255, 255, 255, 0), 0px 0 rgba(255, 255, 255, 0), 0px 0 rgba(255, 255, 255, 0), 0px 0 rgba(255, 255, 255, 0);
- }
- 12% {
- box-shadow: 100px 0 white, 0px 0 rgba(255, 255, 255, 0), 0px 0 rgba(255, 255, 255, 0), 0px 0 rgba(255, 255, 255, 0);
- }
- 25% {
- box-shadow: 110px 0 white, 100px 0 white, 0px 0 rgba(255, 255, 255, 0), 0px 0 rgba(255, 255, 255, 0);
- }
- 36% {
- box-shadow: 120px 0 white, 110px 0 white, 100px 0 white, 0px 0 rgba(255, 255, 255, 0);
- }
- 50% {
- box-shadow: 130px 0 white, 120px 0 white, 110px 0 white, 100px 0 white;
- }
- 62% {
- box-shadow: 200px 0 rgba(255, 255, 255, 0), 130px 0 white, 120px 0 white, 110px 0 white;
- }
- 75% {
- box-shadow: 200px 0 rgba(255, 255, 255, 0), 200px 0 rgba(255, 255, 255, 0), 130px 0 white, 120px 0 white;
- }
- 87% {
- box-shadow: 200px 0 rgba(255, 255, 255, 0), 200px 0 rgba(255, 255, 255, 0), 200px 0 rgba(255, 255, 255, 0), 130px 0 white;
- }
- 100% {
- box-shadow: 200px 0 rgba(255, 255, 255, 0), 200px 0 rgba(255, 255, 255, 0), 200px 0 rgba(255, 255, 255, 0), 200px 0 rgba(255, 255, 255, 0);
- }
- }
\ No newline at end of file
+ width: 10px;
+ height: 10px;
+ border-radius: 50%;
+ display: block;
+ margin: 15px auto;
+ position: relative;
+ color: #fff;
+ left: -100px;
+ box-sizing: border-box;
+ animation: shadowRolling 2s linear infinite;
+}
+
+@keyframes shadowRolling {
+ 0% {
+ box-shadow: 0px 0 rgba(255, 255, 255, 0), 0px 0 rgba(255, 255, 255, 0),
+ 0px 0 rgba(255, 255, 255, 0), 0px 0 rgba(255, 255, 255, 0);
+ }
+ 12% {
+ box-shadow: 100px 0 white, 0px 0 rgba(255, 255, 255, 0),
+ 0px 0 rgba(255, 255, 255, 0), 0px 0 rgba(255, 255, 255, 0);
+ }
+ 25% {
+ box-shadow: 110px 0 white, 100px 0 white, 0px 0 rgba(255, 255, 255, 0),
+ 0px 0 rgba(255, 255, 255, 0);
+ }
+ 36% {
+ box-shadow: 120px 0 white, 110px 0 white, 100px 0 white,
+ 0px 0 rgba(255, 255, 255, 0);
+ }
+ 50% {
+ box-shadow: 130px 0 white, 120px 0 white, 110px 0 white, 100px 0 white;
+ }
+ 62% {
+ box-shadow: 200px 0 rgba(255, 255, 255, 0), 130px 0 white, 120px 0 white,
+ 110px 0 white;
+ }
+ 75% {
+ box-shadow: 200px 0 rgba(255, 255, 255, 0), 200px 0 rgba(255, 255, 255, 0),
+ 130px 0 white, 120px 0 white;
+ }
+ 87% {
+ box-shadow: 200px 0 rgba(255, 255, 255, 0), 200px 0 rgba(255, 255, 255, 0),
+ 200px 0 rgba(255, 255, 255, 0), 130px 0 white;
+ }
+ 100% {
+ box-shadow: 200px 0 rgba(255, 255, 255, 0), 200px 0 rgba(255, 255, 255, 0),
+ 200px 0 rgba(255, 255, 255, 0), 200px 0 rgba(255, 255, 255, 0);
+ }
+}
+
diff --git a/frontend/src/app/components/atoms/loader/loader.component.ts b/frontend/src/app/components/atoms/loader/loader.component.ts
index 27e2fcf..8cb81dc 100644
--- a/frontend/src/app/components/atoms/loader/loader.component.ts
+++ b/frontend/src/app/components/atoms/loader/loader.component.ts
@@ -3,8 +3,6 @@ import { Component } from '@angular/core';
@Component({
selector: 'app-loader',
templateUrl: './loader.component.html',
- styleUrl: './loader.component.scss'
+ styleUrl: './loader.component.scss',
})
-export class LoaderComponent {
-
-}
+export class LoaderComponent {}
diff --git a/frontend/src/app/components/atoms/stopbutton/stopbutton.component.scss b/frontend/src/app/components/atoms/stopbutton/stopbutton.component.scss
index c31b3d9..19b44ac 100644
--- a/frontend/src/app/components/atoms/stopbutton/stopbutton.component.scss
+++ b/frontend/src/app/components/atoms/stopbutton/stopbutton.component.scss
@@ -1,75 +1,74 @@
-
.stopbutton {
- appearance: button;
- background-color: #f55959e5;
- border: solid transparent;
- border-radius: 16px;
- border-width: 0 0 5px;
- box-sizing: border-box;
- color: var(--white);
- cursor: pointer;
- display: inline-block;
- font-size: 12px;
- font-weight: 700;
- letter-spacing: 0.8px;
- line-height: 20px;
- margin: 0;
- outline: none;
- padding: 13px 13px;
- text-align: center;
- text-transform: uppercase;
- touch-action: manipulation;
- transform: translateZ(0);
- transition: filter 0.2s;
- user-select: none;
- -webkit-user-select: none;
- vertical-align: middle;
- white-space: nowrap;
- width: 20vw;
- height: 5vh;
- margin-top: 15px;
- position: fixed;
- top: 20vh;
- right: 0;
- margin-right: 3vw;
- padding: 2vw;
- }
-
- .stopbutton:after {
- background-clip: padding-box;
- background-color: #ff4646;
- border: solid transparent;
- border-radius: 16px;
- border-width: 0 0 4px;
- bottom: -4px;
- content: "";
- left: 0;
- position: absolute;
- right: 0;
- top: 0;
- z-index: -1;
- }
-
- .stopbutton:main,
- .stopbutton:focus {
- user-select: auto;
- }
-
- .stopbutton:hover:not(:disabled) {
- filter: brightness(1.1);
- -webkit-filter: brightness(1.1);
- }
-
- .stopbutton:disabled {
- cursor: auto;
- }
-
- .stopbutton:active {
- border-width: 4px 0 0;
- background: none;
- }
-
- #button-top {
- font-weight: 100;
- font-size: 10px;
- }
\ No newline at end of file
+ appearance: button;
+ background-color: #f55959e5;
+ border: solid transparent;
+ border-radius: 16px;
+ border-width: 0 0 5px;
+ box-sizing: border-box;
+ color: var(--white);
+ cursor: pointer;
+ display: inline-block;
+ font-size: 12px;
+ font-weight: 700;
+ letter-spacing: 0.8px;
+ line-height: 20px;
+ margin: 0;
+ outline: none;
+ padding: 13px 13px;
+ text-align: center;
+ text-transform: uppercase;
+ touch-action: manipulation;
+ transform: translateZ(0);
+ transition: filter 0.2s;
+ user-select: none;
+ -webkit-user-select: none;
+ vertical-align: middle;
+ white-space: nowrap;
+ width: 20vw;
+ height: 5vh;
+ margin-top: 15px;
+ position: fixed;
+ top: 20vh;
+ right: 0;
+ margin-right: 3vw;
+ padding: 2vw;
+}
+
+.stopbutton:after {
+ background-clip: padding-box;
+ background-color: #ff4646;
+ border: solid transparent;
+ border-radius: 16px;
+ border-width: 0 0 4px;
+ bottom: -4px;
+ content: "";
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: -1;
+}
+
+.stopbutton:main,
+.stopbutton:focus {
+ user-select: auto;
+}
+
+.stopbutton:hover:not(:disabled) {
+ filter: brightness(1.1);
+ -webkit-filter: brightness(1.1);
+}
+
+.stopbutton:disabled {
+ cursor: auto;
+}
+
+.stopbutton:active {
+ border-width: 4px 0 0;
+ background: none;
+}
+
+#button-top {
+ font-weight: 100;
+ font-size: 10px;
+}
diff --git a/frontend/src/app/components/atoms/timer/timer.component.html b/frontend/src/app/components/atoms/timer/timer.component.html
index 105d6e3..cd0a465 100644
--- a/frontend/src/app/components/atoms/timer/timer.component.html
+++ b/frontend/src/app/components/atoms/timer/timer.component.html
@@ -1 +1 @@
-{{ eventService.time |timer}}
\ No newline at end of file
+{{ eventService.time | timer }}
diff --git a/frontend/src/app/components/atoms/timer/timer.component.scss b/frontend/src/app/components/atoms/timer/timer.component.scss
index 2502705..5fce922 100644
--- a/frontend/src/app/components/atoms/timer/timer.component.scss
+++ b/frontend/src/app/components/atoms/timer/timer.component.scss
@@ -1,5 +1,5 @@
-h2{
- margin: 0;
- margin-top: 10px;
- font-size: 5vw;
-}
\ No newline at end of file
+h2 {
+ margin: 0;
+ margin-top: 10px;
+ font-size: 5vw;
+}
diff --git a/frontend/src/app/components/atoms/timer/timer.component.spec.ts b/frontend/src/app/components/atoms/timer/timer.component.spec.ts
index 590f05b..12cce71 100644
--- a/frontend/src/app/components/atoms/timer/timer.component.spec.ts
+++ b/frontend/src/app/components/atoms/timer/timer.component.spec.ts
@@ -8,10 +8,9 @@ describe('TimerComponent', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
- declarations: [TimerComponent]
- })
- .compileComponents();
-
+ declarations: [TimerComponent],
+ }).compileComponents();
+
fixture = TestBed.createComponent(TimerComponent);
component = fixture.componentInstance;
fixture.detectChanges();
diff --git a/frontend/src/app/components/atoms/timer/timer.component.ts b/frontend/src/app/components/atoms/timer/timer.component.ts
index 8269f0a..b61a84c 100644
--- a/frontend/src/app/components/atoms/timer/timer.component.ts
+++ b/frontend/src/app/components/atoms/timer/timer.component.ts
@@ -4,15 +4,10 @@ import { EventService } from 'app/services/event.service';
@Component({
selector: 'app-timer',
templateUrl: './timer.component.html',
- styleUrl: './timer.component.scss'
+ styleUrl: './timer.component.scss',
})
export class TimerComponent {
-
- constructor(public eventService:EventService)
- {
- this.eventService = eventService;
+ constructor(public eventService: EventService) {
+ this.eventService = eventService;
}
-
-
-
}
diff --git a/frontend/src/app/components/atoms/toast/toast.component.html b/frontend/src/app/components/atoms/toast/toast.component.html
index b3f9654..e11ea85 100644
--- a/frontend/src/app/components/atoms/toast/toast.component.html
+++ b/frontend/src/app/components/atoms/toast/toast.component.html
@@ -1,2 +1,7 @@
-
-{{eventservice.snackbarText}}
\ No newline at end of file
+
+ {{ eventservice.snackbarText }}
+
diff --git a/frontend/src/app/components/atoms/toast/toast.component.scss b/frontend/src/app/components/atoms/toast/toast.component.scss
index a7c506c..faaf38c 100644
--- a/frontend/src/app/components/atoms/toast/toast.component.scss
+++ b/frontend/src/app/components/atoms/toast/toast.component.scss
@@ -1,47 +1,68 @@
-
-
#snackbar {
- visibility: hidden; /* Hidden by default. Visible on click */
- min-width: 250px; /* Set a default minimum width */
- margin-left: -140px; /* Divide value of min-width by 2 */
- background-color: #67b402; /* Black background color */
- color: #fff; /* White text color */
- text-align: center; /* Centered text */
- border-radius: 2px; /* Rounded borders */
- padding: 16px; /* Padding */
- position: fixed; /* Sit on top of the screen */
- z-index: 1; /* Add a z-index if needed */
- left: 50%; /* Center the snackbar */
- bottom: 30px; /* 30px from the bottom */
+ visibility: hidden;
+ min-width: 250px;
+ margin-left: -140px;
+ background-color: #67b402;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+ padding: 16px;
+ position: fixed;
+ z-index: 1;
+ left: 50%;
+ bottom: 30px;
}
-/* Show the snackbar when clicking on a button (class added with JavaScript) */
.show {
- visibility: visible !important; /* Show the snackbar */
+ visibility: visible !important; /* Show the snackbar */
-/* Add animation: Take 0.5 seconds to fade in and out the snackbar.
+ /* Add animation: Take 0.5 seconds to fade in and out the snackbar.
However, delay the fade out process for 2.5 seconds */
- -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
- animation: fadein 0.5s, fadeout 0.5s 2.5s;
+ -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
+ animation: fadein 0.5s, fadeout 0.5s 2.5s;
}
/* Animations to fade the snackbar in and out */
@-webkit-keyframes fadein {
- from {bottom: 0; opacity: 0;}
- to {bottom: 30px; opacity: 1;}
+ from {
+ bottom: 0;
+ opacity: 0;
+ }
+ to {
+ bottom: 30px;
+ opacity: 1;
+ }
}
@keyframes fadein {
- from {bottom: 0; opacity: 0;}
- to {bottom: 30px; opacity: 1;}
+ from {
+ bottom: 0;
+ opacity: 0;
+ }
+ to {
+ bottom: 30px;
+ opacity: 1;
+ }
}
@-webkit-keyframes fadeout {
- from {bottom: 30px; opacity: 1;}
- to {bottom: 0; opacity: 0;}
+ from {
+ bottom: 30px;
+ opacity: 1;
+ }
+ to {
+ bottom: 0;
+ opacity: 0;
+ }
}
@keyframes fadeout {
- from {bottom: 30px; opacity: 1;}
- to {bottom: 0; opacity: 0;}
-}
\ No newline at end of file
+ from {
+ bottom: 30px;
+ opacity: 1;
+ }
+ to {
+ bottom: 0;
+ opacity: 0;
+ }
+}
diff --git a/frontend/src/app/components/organisms/challenge-dialog/challenge-dialog.component.html b/frontend/src/app/components/organisms/challenge-dialog/challenge-dialog.component.html
index 83a353c..a21c622 100644
--- a/frontend/src/app/components/organisms/challenge-dialog/challenge-dialog.component.html
+++ b/frontend/src/app/components/organisms/challenge-dialog/challenge-dialog.component.html
@@ -1,5 +1,5 @@
-
-
+
+
-
+
-
-
diff --git a/frontend/src/app/components/organisms/challenge-dialog/challenge-dialog.component.scss b/frontend/src/app/components/organisms/challenge-dialog/challenge-dialog.component.scss
index 090dbea..1e9345d 100644
--- a/frontend/src/app/components/organisms/challenge-dialog/challenge-dialog.component.scss
+++ b/frontend/src/app/components/organisms/challenge-dialog/challenge-dialog.component.scss
@@ -5,7 +5,7 @@
background-color: inherit;
z-index: 2;
left: 0;
- height: auto;
+ height: auto;
display: flex;
flex-direction: column;
align-items: center;
diff --git a/frontend/src/app/components/organisms/loginform/loginform.component.html b/frontend/src/app/components/organisms/loginform/loginform.component.html
index 22e4266..57a8f5d 100644
--- a/frontend/src/app/components/organisms/loginform/loginform.component.html
+++ b/frontend/src/app/components/organisms/loginform/loginform.component.html
@@ -1,20 +1,30 @@
-
+
diff --git a/frontend/src/app/components/organisms/loginform/loginform.component.scss b/frontend/src/app/components/organisms/loginform/loginform.component.scss
index 02764c2..630476a 100644
--- a/frontend/src/app/components/organisms/loginform/loginform.component.scss
+++ b/frontend/src/app/components/organisms/loginform/loginform.component.scss
@@ -35,7 +35,7 @@ p.create-account {
left: 50%;
-webkit-transform: translate(-50%, -50%);
width: 65%;
- z-index: 5;
+ z-index: 1;
-webkit-transition: all 0.3s ease;
background-color: var(--background-black);
padding: 15px;
diff --git a/frontend/src/app/components/organisms/signupform/signupform.component.html b/frontend/src/app/components/organisms/signupform/signupform.component.html
index 0d342bd..c7158f5 100644
--- a/frontend/src/app/components/organisms/signupform/signupform.component.html
+++ b/frontend/src/app/components/organisms/signupform/signupform.component.html
@@ -13,11 +13,18 @@
[placeholder]="'Enter Email'"
>
-
-
-
+
+
+
+
-
+
Already an account? Sign in
diff --git a/frontend/src/app/components/organisms/signupform/signupform.component.scss b/frontend/src/app/components/organisms/signupform/signupform.component.scss
index 7c3dc27..2632ff8 100644
--- a/frontend/src/app/components/organisms/signupform/signupform.component.scss
+++ b/frontend/src/app/components/organisms/signupform/signupform.component.scss
@@ -1,4 +1,100 @@
+p.create-account {
+ font-size: 0.8rem;
+ text-align: center;
+ margin-top: 20px;
+
+ a {
+ font-weight: bold;
+ color: var(--white);
+ text-decoration: none;
+ margin-top: 20px;
+ }
+ a:hover {
+ text-decoration: underline;
+ }
+}
+
+.eyeimg {
+ justify-content: center;
+ align-self: center;
+ margin-right: 8px;
+
+ .img {
+ height: 15px;
+ width: 15px;
+ }
+}
+
+.login {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ .center {
+ position: absolute;
+ top: calc(50% - 10%);
+ left: 50%;
+ -webkit-transform: translate(-50%, -50%);
+ width: 65%;
+ z-index: 1;
+ -webkit-transition: all 0.3s ease;
+ background-color: var(--background-black);
+ padding: 15px;
+ border-radius: 16px;
+ margin-top: 14%;
+
+ .form-title {
+ color: var(--white);
+ font-size: 1.7em;
+ text-align: center;
+ margin-top: 30px;
+ }
+
+ .form-holder {
+ border-radius: 15px;
+ background-color: #fff;
+ border: 1px solid #eee;
+ overflow: hidden;
+ margin-top: 50px;
+ opacity: 1;
+ visibility: visible;
+ -webkit-transition: all 0.3s ease;
+ }
+
+ .button {
+ background-color: var(--green);
+ color: var(--font);
+ border: 0;
+ font-weight: bolder;
+ border-radius: 15px;
+ display: block;
+ margin: 15px auto;
+ margin-top: 10px;
+ padding: 15px 45px;
+ width: 100%;
+ font-size: 13px;
+ cursor: pointer;
+ opacity: 1;
+ visibility: visible;
+ -webkit-transition: all 0.3s ease;
+
+ &:hover {
+ transition: all 0.1s ease;
+ background-color: var(--white);
+ color: var(--font);
+ }
+ }
+ }
+
+ .password {
+ display: flex;
+ width: 100%;
+ justify-content: space-between;
+ }
+}
+=======
+
p.create-account {
font-size: 0.8rem;
diff --git a/frontend/src/app/components/organisms/statistic-header/statistic-header.component.html b/frontend/src/app/components/organisms/statistic-header/statistic-header.component.html
index a7dc212..e311da7 100644
--- a/frontend/src/app/components/organisms/statistic-header/statistic-header.component.html
+++ b/frontend/src/app/components/organisms/statistic-header/statistic-header.component.html
@@ -14,7 +14,7 @@
Remaining
Steps
- {{ eventservice.steps}}
+ {{ eventservice.steps }}
@@ -23,4 +23,3 @@
0000
-
diff --git a/frontend/src/app/components/pages/authenticationpage/authenticationpage.component.html b/frontend/src/app/components/pages/authenticationpage/authenticationpage.component.html
index dc45e7a..5fe24ef 100644
--- a/frontend/src/app/components/pages/authenticationpage/authenticationpage.component.html
+++ b/frontend/src/app/components/pages/authenticationpage/authenticationpage.component.html
@@ -1,4 +1,7 @@
-
\ No newline at end of file
+
+
+
+
+
+
+
diff --git a/frontend/src/app/components/pages/authenticationpage/authenticationpage.component.scss b/frontend/src/app/components/pages/authenticationpage/authenticationpage.component.scss
index c5b5ca5..307aabc 100644
--- a/frontend/src/app/components/pages/authenticationpage/authenticationpage.component.scss
+++ b/frontend/src/app/components/pages/authenticationpage/authenticationpage.component.scss
@@ -1,25 +1,48 @@
+.main {
+ width: 100%;
+ height: 100vh;
+ background-color: var(--background-black);
-.main{
+ background-repeat: no-repeat;
+ background-position: left top; /* Horizontale und vertikale Zentrierung */
+ background-size: auto;
+ margin: 0;
+ padding: 0;
+ top: 0;
+ display: flex;
+ align-items: start;
+ flex-direction: column;
+
+ .logo-contaier {
+ width: 100%;
+ }
+
+ p.welcome {
+ color: var(--primary-color);
+ font-size: 16px;
+ text-align: center;
+ height: 20px;
width: 100%;
- height: 100vh;
- background-color: var(--black-2);
- background-image: url(../../../../assets/logo/Logo_2_black.svg);
- background-repeat: repeat;
- background-position: center top; /* Horizontale und vertikale Zentrierung */
- background-size: auto;
- margin: 0;
+ margin-top: 20px;
+ font-weight: bold;
+ font-style: normal;
+ font-size: 20px;
padding: 0;
- top: 0;
- display: flex;
- align-items: center;
- flex-direction: column;
-
-
- .logo-contaier
- {
- width: 100%;
- }
+ margin-bottom: 0;
+ }
+
+
+ .logo {
+ filter: invert(100%);
+ margin-top: 50px;
+ }
+
+
+ .img {
+ z-index: 2;
+ }
+}
p.welcome {
color: var(--primary-color);
@@ -40,4 +63,5 @@
filter: invert(100%);
margin-top: 50px;
}
-}
\ No newline at end of file
+}
+
diff --git a/frontend/src/app/components/pages/friendpage/friendpage.component.html b/frontend/src/app/components/pages/friendpage/friendpage.component.html
new file mode 100644
index 0000000..73dbe4e
--- /dev/null
+++ b/frontend/src/app/components/pages/friendpage/friendpage.component.html
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/frontend/src/app/components/pages/friendpage/friendpage.component.scss b/frontend/src/app/components/pages/friendpage/friendpage.component.scss
new file mode 100644
index 0000000..3c31331
--- /dev/null
+++ b/frontend/src/app/components/pages/friendpage/friendpage.component.scss
@@ -0,0 +1,6 @@
+.main {
+ width: 100%;
+ height: 100vh;
+ background-color: var(--background-black);
+ display: flex;
+}
diff --git a/frontend/src/app/components/pages/friendpage/friendpage.component.spec.ts b/frontend/src/app/components/pages/friendpage/friendpage.component.spec.ts
new file mode 100644
index 0000000..c473607
--- /dev/null
+++ b/frontend/src/app/components/pages/friendpage/friendpage.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { FriendpageComponent } from './friendpage.component';
+
+describe('FriendpageComponent', () => {
+ let component: FriendpageComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [FriendpageComponent]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(FriendpageComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/frontend/src/app/components/pages/friendpage/friendpage.component.ts b/frontend/src/app/components/pages/friendpage/friendpage.component.ts
new file mode 100644
index 0000000..03d0544
--- /dev/null
+++ b/frontend/src/app/components/pages/friendpage/friendpage.component.ts
@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'app-friendpage',
+ templateUrl: './friendpage.component.html',
+ styleUrl: './friendpage.component.scss'
+})
+export class FriendpageComponent {
+
+}
diff --git a/frontend/src/app/components/pages/landingpage/landingpage.component.html b/frontend/src/app/components/pages/landingpage/landingpage.component.html
new file mode 100644
index 0000000..947b8b0
--- /dev/null
+++ b/frontend/src/app/components/pages/landingpage/landingpage.component.html
@@ -0,0 +1,9 @@
+
+
Welcome to
+
+
Lets Start
+
+
+
+
+
diff --git a/frontend/src/app/components/pages/landingpage/landingpage.component.scss b/frontend/src/app/components/pages/landingpage/landingpage.component.scss
new file mode 100644
index 0000000..9e8a7ce
--- /dev/null
+++ b/frontend/src/app/components/pages/landingpage/landingpage.component.scss
@@ -0,0 +1,48 @@
+.main {
+ width: 100%;
+ height: 100vh;
+ background-color: var(--background-black);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ .h1-1 {
+ margin: 0;
+ text-align: center;
+ margin-top: 15%;
+ }
+
+ .h1-2 {
+ margin: 0;
+ text-align: center;
+ font-size: 20px;
+ }
+
+ .img {
+ width: 300px;
+ height: 300px;
+ }
+
+ .auth {
+ display: flex;
+ width: 50%;
+ justify-content: space-between;
+ margin-top: 10%;
+ gap: 2em;
+ }
+
+ .button {
+ background-color: var(--green);
+ color: var(--font);
+ border: 0;
+ font-weight: bolder;
+ border-radius: 15px;
+ margin: 15px auto;
+ margin-top: 10px;
+ padding: 10px;
+ width: 100%;
+ font-size: 13px;
+ cursor: pointer;
+ opacity: 1;
+ }
+}
diff --git a/frontend/src/app/components/pages/landingpage/landingpage.component.spec.ts b/frontend/src/app/components/pages/landingpage/landingpage.component.spec.ts
new file mode 100644
index 0000000..77fa177
--- /dev/null
+++ b/frontend/src/app/components/pages/landingpage/landingpage.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { LandingpageComponent } from './landingpage.component';
+
+describe('LandingpageComponent', () => {
+ let component: LandingpageComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [LandingpageComponent]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(LandingpageComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/frontend/src/app/components/pages/landingpage/landingpage.component.ts b/frontend/src/app/components/pages/landingpage/landingpage.component.ts
new file mode 100644
index 0000000..eb2c695
--- /dev/null
+++ b/frontend/src/app/components/pages/landingpage/landingpage.component.ts
@@ -0,0 +1,25 @@
+import { Component } from '@angular/core';
+import { Router } from '@angular/router';
+
+@Component({
+ selector: 'app-landingpage',
+ templateUrl: './landingpage.component.html',
+ styleUrl: './landingpage.component.scss'
+})
+export class LandingpageComponent {
+
+ constructor( private router: Router) {
+
+ this.router = router;
+ }
+
+ login()
+ {
+ this.router.navigate(['/auth/login']);
+ }
+
+ signup()
+ {
+ this.router.navigate(['/auth/signup']);
+ }
+}
diff --git a/frontend/src/app/components/pages/mainpage/mainpage.component.html b/frontend/src/app/components/pages/mainpage/mainpage.component.html
index 326421d..1d756c8 100644
--- a/frontend/src/app/components/pages/mainpage/mainpage.component.html
+++ b/frontend/src/app/components/pages/mainpage/mainpage.component.html
@@ -1,7 +1,5 @@
-
diff --git a/frontend/src/app/components/pages/mainpage/mainpage.component.scss b/frontend/src/app/components/pages/mainpage/mainpage.component.scss
index e4ccdde..7ae5fbc 100644
--- a/frontend/src/app/components/pages/mainpage/mainpage.component.scss
+++ b/frontend/src/app/components/pages/mainpage/mainpage.component.scss
@@ -1,13 +1,13 @@
-.main{
- width: 100%;
- height: 100%;
- background-color: var(--background-black);
+.main {
+ width: 100%;
+ height: 100%;
+ background-color: var(--background-black);
+ margin: 0;
+ padding: 0;
+ top: 0;
+
+ p {
margin: 0;
padding: 0;
- top: 0;
-
- p{
- margin: 0;
- padding: 0;
- }
-}
\ No newline at end of file
+ }
+}
diff --git a/frontend/src/app/pipes/timer.pipe.ts b/frontend/src/app/pipes/timer.pipe.ts
index 8e0e433..3fd2204 100644
--- a/frontend/src/app/pipes/timer.pipe.ts
+++ b/frontend/src/app/pipes/timer.pipe.ts
@@ -1,7 +1,7 @@
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
- name: 'timer'
+ name: 'timer',
})
export class TimerPipe implements PipeTransform {
transform(value: number): string {
@@ -20,4 +20,3 @@ export class TimerPipe implements PipeTransform {
return hoursString + ':' + minutesString + ':' + secondsString;
}
}
-
diff --git a/frontend/src/app/services/event.service.ts b/frontend/src/app/services/event.service.ts
index 105591a..9a8928d 100644
--- a/frontend/src/app/services/event.service.ts
+++ b/frontend/src/app/services/event.service.ts
@@ -1,39 +1,31 @@
import { Injectable } from '@angular/core';
-
@Injectable({
providedIn: 'root',
})
export class EventService {
disabled: boolean = false;
- toggleStopButton: boolean = false;
- time: number = 0;
- steps: number = 0;
- interval: any;
- classNameToast: string = "";
- snackbarBackgroundColor: string = "";
- snackbarText: string = ""
-
- reduceTimer()
- {
+ toggleStopButton: boolean = false;
+ time: number = 0;
+ steps: number = 0;
+ interval: any;
+ classNameToast: string = '';
+ snackbarBackgroundColor: string = '';
+ snackbarText: string = '';
+
+ reduceTimer() {
this.interval = setInterval(() => {
this.time--;
- if (this.time == 0) {
- clearInterval(this.interval);
- console.log("Zeit abgelaufen!");
+ if (this.time == 0) {
+ clearInterval(this.interval);
+ console.log('Zeit abgelaufen!');
}
- }, 1000);
+ }, 1000);
}
- stopTraining()
- {
+ stopTraining() {
clearInterval(this.interval);
- this.steps = 0;
- this.time = 0;
+ this.steps = 0;
+ this.time = 0;
}
-
-
-
-
-
}
diff --git a/frontend/src/index.html b/frontend/src/index.html
index 6bb0d2c..3cdbbd3 100644
--- a/frontend/src/index.html
+++ b/frontend/src/index.html
@@ -2,7 +2,7 @@
- duogradus. - Sammle Schritte, Tritt gegen Freunde an und steig in der Liga auf
+ duogradus. | Sammle Schritte, Tritt gegen Freunde an und steig in der Liga auf