From 24679faf85c509e04c86f00dae1e6dbc08ce6e2a Mon Sep 17 00:00:00 2001 From: Sonja Galovic Date: Sun, 13 Mar 2022 23:30:29 +0100 Subject: Doradjen login-modal.component i uradjen register-modal.component (stilski uredjen modal register forme) --- .../dataset-load/dataset-load.component.ts | 2 +- .../_modals/login-modal/login-modal.component.html | 15 +- .../_modals/login-modal/login-modal.component.ts | 20 +-- .../register-modal/register-modal.component.css | 0 .../register-modal/register-modal.component.html | 85 +++++++++++ .../register-modal.component.spec.ts | 25 ++++ .../register-modal/register-modal.component.ts | 166 +++++++++++++++++++++ .../_pages/login-page/login-page.component.html | 68 ++------- .../app/_pages/login-page/login-page.component.ts | 50 +------ .../register-page/register-page.component.html | 80 ---------- .../register-page/register-page.component.ts | 126 ---------------- frontend/src/app/app-routing.module.ts | 4 +- frontend/src/app/app.module.ts | 4 +- 13 files changed, 307 insertions(+), 338 deletions(-) create mode 100644 frontend/src/app/_modals/register-modal/register-modal.component.css create mode 100644 frontend/src/app/_modals/register-modal/register-modal.component.html create mode 100644 frontend/src/app/_modals/register-modal/register-modal.component.spec.ts create mode 100644 frontend/src/app/_modals/register-modal/register-modal.component.ts (limited to 'frontend/src/app') diff --git a/frontend/src/app/_elements/dataset-load/dataset-load.component.ts b/frontend/src/app/_elements/dataset-load/dataset-load.component.ts index 843a5709..cde3e8b1 100644 --- a/frontend/src/app/_elements/dataset-load/dataset-load.component.ts +++ b/frontend/src/app/_elements/dataset-load/dataset-load.component.ts @@ -38,7 +38,7 @@ export class DatasetLoadComponent { this.ngxCsvParser.parse(this.files[0], { header: false, delimiter: (this.delimiter == "razmak") ? " " : (this.delimiter == "") ? "," : this.delimiter}) .pipe().subscribe((result) => { - //console.log('Result', result); + console.log('Result', result); if (result.constructor === Array) { this.csvRecords = result; if (this.hasHeader) diff --git a/frontend/src/app/_modals/login-modal/login-modal.component.html b/frontend/src/app/_modals/login-modal/login-modal.component.html index 22f50de2..eb6f0c53 100644 --- a/frontend/src/app/_modals/login-modal/login-modal.component.html +++ b/frontend/src/app/_modals/login-modal/login-modal.component.html @@ -1,14 +1,9 @@ - - - - - + \ No newline at end of file diff --git a/frontend/src/app/_modals/login-modal/login-modal.component.ts b/frontend/src/app/_modals/login-modal/login-modal.component.ts index 3a6fd8f1..3ee2c7fe 100644 --- a/frontend/src/app/_modals/login-modal/login-modal.component.ts +++ b/frontend/src/app/_modals/login-modal/login-modal.component.ts @@ -1,11 +1,7 @@ import { Component, OnInit, ViewChild } from '@angular/core'; -import { FormControl, FormGroup } from '@angular/forms'; import { Router } from '@angular/router'; import { CookieService } from 'ngx-cookie-service'; import { AuthService } from 'src/app/_services/auth.service'; -import { ElementRef } from '@angular/core'; - -declare var window: any; @Component({ selector: 'app-login-modal', @@ -27,25 +23,21 @@ export class LoginModalComponent implements OnInit { ) { } ngOnInit(): void { - this.loginModal = new window.bootstrap.Modal( - document.getElementById("modalForLogin") - ); } - openModal() { - this.loginModal.show(); - //console.log("ok"); - //(document.getElementById("exampleModal")).style.display = "block"; - } doLogin() { this.authService.login(this.username, this.password).subscribe((response) => { //ako nisu ok podaci, ne ide hide nego mora opet da ukucava!!!!podesi console.log(response); this.cookie.set('token', response); + this.resetData(); //dodato this.loginModal.hide(); //dodato this.router.navigate(['add-model']); + }, error => { + console.warn(error); //NETACNI PODACI }); } - sendToRegister() { - + resetData() { + this.username = ''; + this.password = ''; } } diff --git a/frontend/src/app/_modals/register-modal/register-modal.component.css b/frontend/src/app/_modals/register-modal/register-modal.component.css new file mode 100644 index 00000000..e69de29b diff --git a/frontend/src/app/_modals/register-modal/register-modal.component.html b/frontend/src/app/_modals/register-modal/register-modal.component.html new file mode 100644 index 00000000..d20b199f --- /dev/null +++ b/frontend/src/app/_modals/register-modal/register-modal.component.html @@ -0,0 +1,85 @@ + + + + \ No newline at end of file diff --git a/frontend/src/app/_modals/register-modal/register-modal.component.spec.ts b/frontend/src/app/_modals/register-modal/register-modal.component.spec.ts new file mode 100644 index 00000000..e371b3d8 --- /dev/null +++ b/frontend/src/app/_modals/register-modal/register-modal.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RegisterModalComponent } from './register-modal.component'; + +describe('RegisterModalComponent', () => { + let component: RegisterModalComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ RegisterModalComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(RegisterModalComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/_modals/register-modal/register-modal.component.ts b/frontend/src/app/_modals/register-modal/register-modal.component.ts new file mode 100644 index 00000000..d86345b5 --- /dev/null +++ b/frontend/src/app/_modals/register-modal/register-modal.component.ts @@ -0,0 +1,166 @@ +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { AuthService } from 'src/app/_services/auth.service'; + +declare var window: any; + +@Component({ + selector: 'app-register-modal', + templateUrl: './register-modal.component.html', + styleUrls: ['./register-modal.component.css'] +}) +export class RegisterModalComponent implements OnInit { + + registerModal: any; + + firstName: string = ''; + lastName: string = ''; + username: string = ''; + email: string = ''; + pass1: string = ''; + pass2: string = ''; + + wrongFirstNameBool: boolean = false; + wrongLastNameBool: boolean = false; + wrongUsernameBool: boolean = false; + wrongEmailBool: boolean = false; + wrongPass1Bool: boolean = false; + wrongPass2Bool: boolean = false; + + pattName: RegExp = /^[a-zA-ZšŠđĐčČćĆžŽ]+([ \-][a-zA-ZšŠđĐčČćĆžŽ]+)*$/; + pattUsername: RegExp = /^[a-zA-Z0-9](_(?!(\.|_))|\.(?!(_|\.))|[a-zA-Z0-9]){6,18}[a-zA-Z0-9]$/; + pattTwoSpaces: RegExp = / /; + pattEmail: RegExp = /^[a-zA-Z0-9]+([\.\-\+][a-zA-Z0-9]+)*\@([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}$/; + pattPassword: RegExp = /.{6,30}$/; + + constructor( + private router: Router, + private authService: AuthService + ) { } + + ngOnInit(): void { + this.registerModal = new window.bootstrap.Modal( + document.getElementById("modalForRegister") + ); + } + + openModal() { + this.registerModal.show(); + } + doRegister() { + this.validation(); + } + resetData() { + this.firstName = this.lastName = this.username = this.email = this.pass1 = this.pass2 = ''; + this.wrongFirstNameBool = this.wrongLastNameBool = this.wrongUsernameBool = this.wrongEmailBool = this.wrongPass1Bool = this.wrongPass2Bool = false; + } + + isCorrectName(element: string): boolean { + if (this.pattName.test(element) && !(this.pattTwoSpaces.test(element)) && (element.length >= 1 && element.length <= 30)) + return true; + return false; + } + isCorrectUsername(element: string) : boolean { + if (this.pattUsername.test(element) && !(this.pattTwoSpaces.test(element)) && (element.length >= 1 && element.length <= 30)) + return true; + return false; + } + isCorrectEmail(element: string): boolean { + if (this.pattEmail.test(element.toLowerCase()) && element.length <= 320) + return true; + return false; + } + isCorrectPassword(element: string): boolean { + if (this.pattPassword.test(element)) + return true; + return false; + } + + firstNameValidation() { + if (this.isCorrectName(this.firstName) == true) { + this.wrongFirstNameBool = false; + return; + } + (document.getElementById('firstName')).focus(); + this.wrongFirstNameBool = true; + } + lastNameValidation() { + if (this.isCorrectName(this.lastName) == true) { + this.wrongLastNameBool = false; + return; + } + (document.getElementById('lastName')).focus(); + this.wrongLastNameBool = true; + } + usernameValidation() { + if (this.isCorrectUsername(this.username) == true) { + this.wrongUsernameBool = false; + return; + } + (document.getElementById('username')).focus(); + this.wrongUsernameBool = true; + } + emailValidation() { + if (this.isCorrectEmail(this.email) == true) { + this.wrongEmailBool = false; + return; + } + (document.getElementById('email')).focus(); + this.wrongEmailBool = true; + } + passwordValidation() { + if (this.isCorrectPassword(this.pass1) && this.isCorrectPassword(this.pass2) && this.pass1 == this.pass2) { + this.wrongPass1Bool = false; + this.wrongPass2Bool = false; + return; + } + this.pass1 = ''; //brisi obe ukucane lozinke + this.pass2 = ''; + (document.getElementById('pass1')).focus(); + this.wrongPass1Bool = true; + this.wrongPass2Bool = true; + } + + validation() { + this.firstName = this.firstName.trim(); + this.lastName = this.lastName.trim(); + this.username = this.username.trim(); + this.email = this.email.trim(); + + this.firstNameValidation(); + this.lastNameValidation(); + this.usernameValidation(); + this.emailValidation(); + this.passwordValidation(); + + if (!(this.wrongFirstNameBool || this.wrongLastNameBool || this.wrongUsernameBool || + this.wrongEmailBool || this.wrongPass1Bool || this.wrongPass2Bool)) { //sve ok, registruj ga + + let user = { + firstName: this.firstName, + lastName: this.lastName, + username: this.username, + password: this.pass1, + email: this.email + } + + this.authService.register(user) + .subscribe( + (response) => { + console.log(response); + if (response === 'User added') { + this.resetData(); //DODATO + this.registerModal.hide(); //dodato + this.router.navigate(['/login']); //registracija uspesna, idi na LOGIN MODAL, SREDITI + } + else if (response === 'Email Already Exists') + alert('Nalog sa unetim email-om već postoji!'); + else if (response === 'Username Already Exists') + alert('Nalog sa unetim korisnićkim imenom već postoji!'); + } + ); + } + } + + +} diff --git a/frontend/src/app/_pages/login-page/login-page.component.html b/frontend/src/app/_pages/login-page/login-page.component.html index 8deb5290..3a4244fc 100644 --- a/frontend/src/app/_pages/login-page/login-page.component.html +++ b/frontend/src/app/_pages/login-page/login-page.component.html @@ -1,55 +1,13 @@ - - - - - - \ No newline at end of file + + + + + + + + + diff --git a/frontend/src/app/_pages/login-page/login-page.component.ts b/frontend/src/app/_pages/login-page/login-page.component.ts index e5366283..23ce4df0 100644 --- a/frontend/src/app/_pages/login-page/login-page.component.ts +++ b/frontend/src/app/_pages/login-page/login-page.component.ts @@ -1,10 +1,5 @@ -import { Component, OnInit } from '@angular/core'; -import { Router } from '@angular/router'; -import { CookieService } from 'ngx-cookie-service'; -import { AuthService } from 'src/app/_services/auth.service'; +import { Component } from '@angular/core'; -import { LoginModalComponent } from 'src/app/_modals/login-modal/login-modal.component'; -import { MDBModalRef, MDBModalService } from 'ng-uikit-pro-standard'; declare var window: any; @@ -17,47 +12,4 @@ declare var window: any; }) export class LoginPageComponent{ - modalRef?: MDBModalRef; - - //email: string = ''; - username: string = ''; - password: string = ''; - - public wrongCreds: boolean = false; //RAZMOTRITI - //public notApproved: boolean = false; //RAZMOTRITI - - formModal: any; - - constructor( - private authService: AuthService, - private cookie: CookieService, - private router: Router, - private modalService: MDBModalService - ) { } - - openModal() { - //this.modalRef = this.modalService.show(LoginModalComponent); - } - /* - ngOnInit(): void { - this.formModal = new window.bootstrap.Modal( - document.getElementById("exampleModal") - ); - } - - openModal() { - this.formModal.show(); - //console.log("ok"); - //(document.getElementById("exampleModal")).style.display = "block"; - } - - onSubmit() { - - this.authService.login(this.username, this.password).subscribe((response) => { - console.log(response); - this.cookie.set('token', response); - this.router.navigate(['add-model']); - }); - } -*/ } diff --git a/frontend/src/app/_pages/register-page/register-page.component.html b/frontend/src/app/_pages/register-page/register-page.component.html index f8ae046e..e69de29b 100644 --- a/frontend/src/app/_pages/register-page/register-page.component.html +++ b/frontend/src/app/_pages/register-page/register-page.component.html @@ -1,80 +0,0 @@ -
- - - -
-
-
-
-

Registracija

- -
- -
-
- - -

Unesite ispravno ime. (minimum 1, maksimum 30 karaktera)

-
- -
- - -

Unesite ispravno prezime. (minimum 1, maksimum 30 karaktera)

-
-
-
- -
- -
- - -

Unesite ispravno korisničko ime.

-
- -
- - -

Unesite ispravnu e-mail adresu.

-
-
-
- -
- -
- - -

Lozinka se mora sastojati od najmanje 6 karaktera.

-
- - -
- - -

Lozinke se ne podudaraju.

-
-
- -


- -
- -
- -
- -
-
-
-
-
-
- - - -
\ No newline at end of file diff --git a/frontend/src/app/_pages/register-page/register-page.component.ts b/frontend/src/app/_pages/register-page/register-page.component.ts index 712fc55e..3add63a4 100644 --- a/frontend/src/app/_pages/register-page/register-page.component.ts +++ b/frontend/src/app/_pages/register-page/register-page.component.ts @@ -8,133 +8,7 @@ import { AuthService } from 'src/app/_services/auth.service'; styleUrls: ['./register-page.component.css'] }) export class RegisterPageComponent implements OnInit { - firstName: string = ''; - lastName: string = ''; - nickName: string = ''; - email: string = ''; - pass1: string = ''; - pass2: string = ''; - - wrongFirstNameBool: boolean = false; - wrongLastNameBool: boolean = false; - wrongNickNameBool: boolean = false; - wrongEmailBool: boolean = false; - wrongPass1Bool: boolean = false; - wrongPass2Bool: boolean = false; - - pattName: RegExp = /^[a-zA-ZšŠđĐčČćĆžŽ]+([ \-][a-zA-ZšŠđĐčČćĆžŽ]+)*$/; - pattTwoSpaces: RegExp = / /; - pattEmail: RegExp = /^[a-zA-Z0-9]+([\.\-\+][a-zA-Z0-9]+)*\@([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}$/; - pattPassword: RegExp = /.{6,30}$/; - - constructor( - private router: Router, - private authService: AuthService, - ) { } ngOnInit(): void { } - - isCorrectName(element: string): boolean { - if (this.pattName.test(element) && !(this.pattTwoSpaces.test(element)) && (element.length >= 1 && element.length <= 30)) - return true; - return false; - } - isCorrectEmail(element: string): boolean { - if (this.pattEmail.test(element.toLowerCase()) && element.length <= 320) - return true; - return false; - } - isCorrectPassword(element: string): boolean { - if (this.pattPassword.test(element)) - return true; - return false; - } - - firstNameValidation() { - if (this.isCorrectName(this.firstName) == true) { - this.wrongFirstNameBool = false; - return; - } - (document.getElementById('firstName')).focus(); - this.wrongFirstNameBool = true; - } - lastNameValidation() { - if (this.isCorrectName(this.lastName) == true) { - this.wrongLastNameBool = false; - return; - } - (document.getElementById('lastName')).focus(); - this.wrongLastNameBool = true; - } - nickNameValidation() { - if (this.isCorrectName(this.nickName) == true) { - this.wrongNickNameBool = false; - return; - } - (document.getElementById('nickName')).focus(); - this.wrongNickNameBool = true; - } - emailValidation() { - if (this.isCorrectEmail(this.email) == true) { - this.wrongEmailBool = false; - return; - } - (document.getElementById('email')).focus(); - this.wrongEmailBool = true; - } - passwordValidation() { - if (this.isCorrectPassword(this.pass1) && this.isCorrectPassword(this.pass2) && this.pass1 == this.pass2) { - this.wrongPass1Bool = false; - this.wrongPass2Bool = false; - return; - } - this.pass1 = ''; //brisi obe ukucane lozinke - this.pass2 = ''; - (document.getElementById('pass1')).focus(); - this.wrongPass1Bool = true; - this.wrongPass2Bool = true; - } - - validation() { - this.firstName = this.firstName.trim(); - this.lastName = this.lastName.trim(); - this.nickName = this.nickName.trim(); - this.email = this.email.trim(); - - this.firstNameValidation(); - this.lastNameValidation(); - //this.nickNameValidation(); - this.emailValidation(); - this.passwordValidation(); - - if (!(this.wrongFirstNameBool || this.wrongLastNameBool || this.wrongNickNameBool || - this.wrongEmailBool || this.wrongPass1Bool || this.wrongPass2Bool)) { //sve ok, registruj ga - - let user = { - firstName: this.firstName, - lastName: this.lastName, - username: this.nickName, - password: this.pass1, - email: this.email - } - - this.authService.register(user) - .subscribe( - (response) => { - console.log(response); - if (response === 'User added') - this.router.navigate(['/login']); //registracija uspesna, idi na login - else if (response === 'Email Already Exists') - alert('Nalog sa unetim email-om već postoji!'); - else if (response === 'Username Already Exists') - alert('Nalog sa unetim korisnićkim imenom već postoji!'); - } - ); - } - } - - - - } diff --git a/frontend/src/app/app-routing.module.ts b/frontend/src/app/app-routing.module.ts index cd86ef5c..d053a9a5 100644 --- a/frontend/src/app/app-routing.module.ts +++ b/frontend/src/app/app-routing.module.ts @@ -7,6 +7,7 @@ import { OnlyAuthorizedComponent } from './_pages/only-authorized/only-authorize import { RegisterPageComponent } from './_pages/register-page/register-page.component'; import { AddModelComponent } from './_pages/add-model/add-model.component'; import { LoginModalComponent } from './_modals/login-modal/login-modal.component'; +import { RegisterModalComponent } from './_modals/register-modal/register-modal.component'; const routes: Routes = [ { path: '', redirectTo: '/login', pathMatch: 'full' }, @@ -14,7 +15,8 @@ const routes: Routes = [ { path: 'register', component: RegisterPageComponent }, { path: 'only-authorized', component: OnlyAuthorizedComponent, canActivate: [AuthGuardService] }, { path: 'add-model', component: AddModelComponent }, - { path: 'login-modal-test', component: LoginModalComponent } + { path: 'login-modal-test', component: LoginModalComponent }, + { path: 'register-modal-test', component: RegisterModalComponent } ]; @NgModule({ diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index d95252ad..553ff513 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -13,6 +13,7 @@ import { DatasetLoadComponent } from './_elements/dataset-load/dataset-load.comp import { AddModelComponent } from './_pages/add-model/add-model.component'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { LoginModalComponent } from './_modals/login-modal/login-modal.component'; +import { RegisterModalComponent } from './_modals/register-modal/register-modal.component'; import { MaterialModule } from './material.module'; import { ReactiveFormsModule } from '@angular/forms'; @@ -25,7 +26,8 @@ import { ReactiveFormsModule } from '@angular/forms'; OnlyAuthorizedComponent, DatasetLoadComponent, AddModelComponent, - LoginModalComponent + LoginModalComponent, + RegisterModalComponent ], imports: [ BrowserModule, -- cgit v1.2.3 From 5d9b17d69acc8dfbe30859610c6ba2fa5d9d963f Mon Sep 17 00:00:00 2001 From: Sonja Galovic Date: Mon, 14 Mar 2022 19:03:36 +0100 Subject: Sredjeni modali za login i register. Dodat folder images u src/assets. --- .../_modals/login-modal/login-modal.component.html | 6 ++-- .../_modals/login-modal/login-modal.component.ts | 4 +-- .../register-modal/register-modal.component.html | 37 ++++++--------------- .../register-modal/register-modal.component.ts | 29 ++++++---------- frontend/src/assets/images/logo.png | Bin 0 -> 13315 bytes frontend/src/assets/images/logo_crop.png | Bin 0 -> 11447 bytes frontend/src/assets/images/logo_dark.png | Bin 0 -> 15736 bytes frontend/src/assets/images/logo_dark_crop.png | Bin 0 -> 10987 bytes 8 files changed, 25 insertions(+), 51 deletions(-) create mode 100644 frontend/src/assets/images/logo.png create mode 100644 frontend/src/assets/images/logo_crop.png create mode 100644 frontend/src/assets/images/logo_dark.png create mode 100644 frontend/src/assets/images/logo_dark_crop.png (limited to 'frontend/src/app') diff --git a/frontend/src/app/_modals/login-modal/login-modal.component.html b/frontend/src/app/_modals/login-modal/login-modal.component.html index eb6f0c53..d694ea58 100644 --- a/frontend/src/app/_modals/login-modal/login-modal.component.html +++ b/frontend/src/app/_modals/login-modal/login-modal.component.html @@ -2,8 +2,8 @@