aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/app/_pages/profile
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/app/_pages/profile')
-rw-r--r--frontend/src/app/_pages/profile/profile.component.css42
-rw-r--r--frontend/src/app/_pages/profile/profile.component.html118
-rw-r--r--frontend/src/app/_pages/profile/profile.component.ts73
3 files changed, 231 insertions, 2 deletions
diff --git a/frontend/src/app/_pages/profile/profile.component.css b/frontend/src/app/_pages/profile/profile.component.css
index e69de29b..8c2ffa88 100644
--- a/frontend/src/app/_pages/profile/profile.component.css
+++ b/frontend/src/app/_pages/profile/profile.component.css
@@ -0,0 +1,42 @@
+body{margin-top:20px;
+background-color:#f2f6fc;
+color:#69707a;
+}
+.img-account-profile {
+ height: 10rem;
+}
+.rounded-circle {
+ border-radius: 50% !important;
+}
+.card {
+ box-shadow: 0 0.15rem 1.75rem 0 rgb(33 40 50 / 15%);
+}
+.card .card-header {
+ font-weight: 500;
+}
+.card-header:first-child {
+ border-radius: 0.35rem 0.35rem 0 0;
+}
+.card-header {
+ padding: 1rem 1.35rem;
+ margin-bottom: 0;
+ background-color: rgba(33, 40, 50, 0.03);
+ border-bottom: 1px solid rgba(33, 40, 50, 0.125);
+}
+.form-control, .dataTable-input {
+ display: block;
+ width: 100%;
+ padding: 0.875rem 1.125rem;
+ font-size: 0.875rem;
+ font-weight: 400;
+ line-height: 1;
+ color: #69707a;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 1px solid #c5ccd6;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ border-radius: 0.35rem;
+ transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+}
diff --git a/frontend/src/app/_pages/profile/profile.component.html b/frontend/src/app/_pages/profile/profile.component.html
index 9df0576d..bece7c46 100644
--- a/frontend/src/app/_pages/profile/profile.component.html
+++ b/frontend/src/app/_pages/profile/profile.component.html
@@ -1 +1,117 @@
-<p>profile works!</p>
+<div class="container-xl px-4 mt-4">
+ <hr class="mt-0 mb-4">
+
+ <div class="row">
+ <div class="col-xl-4">
+ <!-- Profile picture card-->
+ <div class="card mb-4 mb-xl-0">
+ <div class="card-header">Moj profil</div>
+ <div class="card-body text-center">
+ <!-- Profile picture image-->
+ <img class="img-account-profile rounded-circle mb-2" src="http://bootdey.com/img/Content/avatar/avatar1.png" alt="">
+ <!-- Profile picture help block-->
+ <div class="small font-italic text-muted mb-4">JPG or PNG no larger than 5 MB</div>
+ <!-- Profile picture upload button-->
+ <button class="btn btn-primary" type="button">Upload new image</button>
+ </div>
+ </div>
+ </div>
+ <div class="col-xl-8">
+ <!-- Account details card-->
+ <div class="card mb-4">
+ <div class="card-header">Osnovni podaci</div>
+ <div class="card-body">
+ <form>
+ <!-- Form Row-->
+ <div class="row gx-3 mb-3">
+ <!-- Form Group (username)-->
+ <div class="col-md-6">
+ <label class="small mb-1" for="inputUsername">Korisničko ime (kako će ostali korisnici videti tvoje ime)</label>
+ <input class="form-control" id="inputUsername" name="inputUsername" type="text" [(ngModel)]="this.username">
+ </div>
+ <!-- Form Group (email address)-->
+ <div class="col-md-6">
+ <label class="small mb-1" for="inputEmailAddress">Email adresa</label>
+ <input class="form-control" id="inputEmailAddress" name="inputEmailAddress" type="email" [(ngModel)]="this.email">
+ </div>
+ </div>
+
+ <!-- Form Row-->
+ <div class="row gx-3 mb-3">
+ <!-- Form Group (first name)-->
+ <div class="col-md-6">
+ <label class="small mb-1" for="inputFirstName">Ime</label>
+ <input class="form-control" id="inputFirstName" name="inputFirstName" type="text" [(ngModel)]="this.firstName">
+ </div>
+ <!-- Form Group (last name)-->
+ <div class="col-md-6">
+ <label class="small mb-1" for="inputLastName">Prezime</label>
+ <input class="form-control" id="inputLastName" name="inputLastName" type="text" [(ngModel)]="this.lastName">
+ </div>
+ </div>
+
+ <div class="row mt-5">
+ <div class="col text-center">
+ <!-- Save changes button-->
+ <button class="btn btn-primary text-center" type="button" (click)="saveInfoChanges()">Sačuvaj izmene</button>
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
+ </div>
+ </div>
+
+
+ <div class="row">
+ <div class="col-xl-4">
+ <div class="card mb-4">
+ <div class="card-header">Promena lozinke</div>
+ <div class="card-body">
+ <form>
+
+ <div class="row">
+ <!-- Form Row-->
+ <div class="row gx-3 mb-3">
+ <!-- Form Group (password)-->
+ <div class="col-md-6">
+ <label class="small mb-1" for="inputPassword">Važeća lozinka</label>
+ <input class="form-control" id="inputPassword" name="inputPassword" type="password" [(ngModel)]="this.oldPass" placeholder="Trenutna lozinka">
+ <small *ngIf="wrongPassBool" class="form-text text-danger">Neispravna lozinka.</small>
+ </div>
+ <!-- Form Group (new password)-->
+ <div class="col-md-6">
+ <label class="small mb-1" for="inputNewPassword">Nova lozinka</label>
+ <input class="form-control" id="inputNewPassword" name="inputNewPassword" type="password" [(ngModel)]="this.newPass1" placeholder="Ukucaj novu lozinku">
+ <small *ngIf="wrongNewPassBool" class="form-text text-danger">Lozinke se ne podudaraju.</small>
+ </div>
+ </div>
+
+ <!-- Form Row-->
+ <div class="row gx-3 mb-3">
+ <div class="col-md-6">
+ <div class="col text-center">
+ <!-- Save changes button-->
+ <button class="btn btn-primary text-center mt-4" type="button" (click)="savePasswordChanges()">Promeni lozinku</button>
+ </div>
+ </div>
+ <!-- Form Group (new password again)-->
+ <div class="col-md-6">
+ <label class="small mb-1" for="inputNewPasswordAgain">Ponovo nova lozinka</label>
+ <input class="form-control" id="inputNewPasswordAgain" name="inputNewPasswordAgain" type="password" [(ngModel)]="this.newPass2" placeholder="Ukucaj novu lozinku">
+ <small *ngIf="wrongNewPassBool" class="form-text text-danger">Lozinke se ne podudaraju.</small>
+ </div>
+ </div>
+ </div>
+
+ </form>
+ </div>
+ </div>
+ </div>
+ </div>
+
+
+
+
+
+</div> \ No newline at end of file
diff --git a/frontend/src/app/_pages/profile/profile.component.ts b/frontend/src/app/_pages/profile/profile.component.ts
index 93040f3e..4b474678 100644
--- a/frontend/src/app/_pages/profile/profile.component.ts
+++ b/frontend/src/app/_pages/profile/profile.component.ts
@@ -1,4 +1,6 @@
import { Component, OnInit } from '@angular/core';
+import User from 'src/app/_data/User';
+import { UserInfoService } from 'src/app/_services/user-info.service';
@Component({
selector: 'app-profile',
@@ -7,9 +9,78 @@ import { Component, OnInit } from '@angular/core';
})
export class ProfileComponent implements OnInit {
- constructor() { }
+ user: User = new User();
+
+ username: string = '';
+ email: string = '';
+ firstName : string = '';
+ lastName : string = '';
+ oldPass: string = '';
+ newPass1: string = '';
+ newPass2: string = '';
+ photoId: string = '';
+
+ wrongPassBool: boolean = false;
+ wrongNewPassBool: boolean = false;
+
+ constructor(private userInfoService: UserInfoService) { }
ngOnInit(): void {
+ this.userInfoService.getUsersInfo().subscribe((response) => {
+
+ this.user = response;
+
+ this.user.password = 'sonja123';
+
+ this.username = this.user.username;
+ this.email = this.user.email;
+ this.firstName = this.user.firstName;
+ this.lastName = this.user.lastName;
+ this.photoId = this.user.photoId;
+ console.log(this.user);
+ });
+ }
+
+ saveInfoChanges() {
+ let editedUser: User = {
+ _id: this.user._id,
+ username: this.username,
+ email: this.email,
+ password: this.user.password,
+ firstName: this.firstName,
+ lastName: this.lastName,
+ photoId: "1"
+ }
+
+ this.userInfoService.changeUserInfo(editedUser).subscribe((response: any) =>{
+ this.user = editedUser;
+ console.log(this.user);
+ }, (error: any) =>{
+ console.log(error);
+ });
+ }
+
+ savePasswordChanges() {
+ if (this.newPass1 == '' && this.newPass2 == '') //ne zeli da promeni lozinku
+ return;
+ console.log("zeli da promeni lozinku");
+ if (this.newPass1 != this.newPass2) { //netacno ponovio novu lozinku
+ this.wrongNewPassBool = true;
+ this.newPass1 = '';
+ this.newPass2 = '';
+ console.log("Netacno ponovljena lozinka");
+ return;
+ }
+
+ this.wrongPassBool = false;
+ this.wrongNewPassBool = false;
+
+ this.userInfoService.changeUserPassword(this.oldPass, this.newPass1).subscribe((response) => {
+ this.user = response;
+ console.log(this.user);
+ }, (error: any) => {
+
+ });
}
}