diff options
| author | Danijel Andjelkovic <adanijel99@gmail.com> | 2022-03-22 22:49:29 +0100 | 
|---|---|---|
| committer | Danijel Andjelkovic <adanijel99@gmail.com> | 2022-03-22 22:49:29 +0100 | 
| commit | 1e945887ec22158c517c33afab0a38cb713eb144 (patch) | |
| tree | 2ed31144dfe52de50813e1a8cd105c0cb0573214 /frontend/src/app/_pages/profile | |
| parent | 480bd1db98f08266fcc3c8f499eaea0365bde6b5 (diff) | |
| parent | 2d02d336687d7780cd3c122f10933a772a0a3d1a (diff) | |
Merge branch 'dev' of http://gitlab.pmf.kg.ac.rs/igrannonica/neuronstellar into dev
Diffstat (limited to 'frontend/src/app/_pages/profile')
| -rw-r--r-- | frontend/src/app/_pages/profile/profile.component.css | 42 | ||||
| -rw-r--r-- | frontend/src/app/_pages/profile/profile.component.html | 118 | ||||
| -rw-r--r-- | frontend/src/app/_pages/profile/profile.component.ts | 73 | 
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) => { + +    });    }  }  | 
