diff --git a/ui/src/app/admin/admin.component.html b/ui/src/app/admin/admin.component.html index 66f5ab5..39889e9 100644 --- a/ui/src/app/admin/admin.component.html +++ b/ui/src/app/admin/admin.component.html @@ -1,21 +1,22 @@ + + + + + -
- Small content -
+
-
- Big content -
+
diff --git a/ui/src/app/admin/admin.component.sass b/ui/src/app/admin/admin.component.sass index 98ec9a2..60b98b3 100644 --- a/ui/src/app/admin/admin.component.sass +++ b/ui/src/app/admin/admin.component.sass @@ -6,6 +6,14 @@ app-roles float: left width: 100% height: 100% +mat-tab-group + width: 100% + height: 100% + overflow: auto +app-resources-management + width: 100% + height: 100% + overflow: auto .roles width: 100% padding: 16px diff --git a/ui/src/app/admin/admin.module.ts b/ui/src/app/admin/admin.module.ts index eac8110..5fbd81d 100644 --- a/ui/src/app/admin/admin.module.ts +++ b/ui/src/app/admin/admin.module.ts @@ -7,9 +7,13 @@ import {FormsModule} from '@angular/forms'; import {InMemoryDataService} from '../timetable/in-memory-data.service'; import {AdminComponent} from './admin.component'; -import {RolesComponent} from './roles/roles.component'; -import {SelectFeatureDialogComponent} from './roles/roles.component'; -import {AddRoleDialogComponent} from './roles/roles.component'; +import {RolesComponent, AddRoleDialogComponent, SelectFeatureDialogComponent} from './roles/roles.component'; +import {UsersManagementComponent} from './users-management/users-management.component'; +import {GroupsManagementComponent} from './groups-management/groups-management.component'; +import { + ResourcesManagementComponent, + MessageDialogComponent, +} from './resources-management/resources-management.component'; import {MatTabsModule} from '@angular/material/tabs'; import {MatIconModule} from '@angular/material/icon'; @@ -26,7 +30,16 @@ import {MatDialogModule} from '@angular/material/dialog'; import {MatCheckboxModule} from '@angular/material/checkbox'; @NgModule({ - declarations: [AdminComponent, RolesComponent, SelectFeatureDialogComponent, AddRoleDialogComponent], + declarations: [ + AdminComponent, + RolesComponent, + SelectFeatureDialogComponent, + AddRoleDialogComponent, + UsersManagementComponent, + GroupsManagementComponent, + ResourcesManagementComponent, + MessageDialogComponent, + ], imports: [ CommonModule, HttpClientModule, @@ -56,6 +69,10 @@ import {MatCheckboxModule} from '@angular/material/checkbox'; RolesComponent, SelectFeatureDialogComponent, AddRoleDialogComponent, + UsersManagementComponent, + GroupsManagementComponent, + ResourcesManagementComponent, + MessageDialogComponent, MatTabsModule, MatIconModule, diff --git a/ui/src/app/admin/groups-management/groups-management.component.html b/ui/src/app/admin/groups-management/groups-management.component.html new file mode 100644 index 0000000..b8ab0bd --- /dev/null +++ b/ui/src/app/admin/groups-management/groups-management.component.html @@ -0,0 +1 @@ +

groups-management works!

diff --git a/ui/src/app/admin/groups-management/groups-management.component.sass b/ui/src/app/admin/groups-management/groups-management.component.sass new file mode 100644 index 0000000..e69de29 diff --git a/ui/src/app/admin/groups-management/groups-management.component.spec.ts b/ui/src/app/admin/groups-management/groups-management.component.spec.ts new file mode 100644 index 0000000..2c85ed7 --- /dev/null +++ b/ui/src/app/admin/groups-management/groups-management.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GroupsManagementComponent } from './groups-management.component'; + +describe('GroupsManagementComponent', () => { + let component: GroupsManagementComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ GroupsManagementComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(GroupsManagementComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/ui/src/app/admin/groups-management/groups-management.component.ts b/ui/src/app/admin/groups-management/groups-management.component.ts new file mode 100644 index 0000000..07d9495 --- /dev/null +++ b/ui/src/app/admin/groups-management/groups-management.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-groups-management', + templateUrl: './groups-management.component.html', + styleUrls: ['./groups-management.component.sass'] +}) +export class GroupsManagementComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/ui/src/app/admin/resources-management/message.html b/ui/src/app/admin/resources-management/message.html new file mode 100644 index 0000000..c4ddb9b --- /dev/null +++ b/ui/src/app/admin/resources-management/message.html @@ -0,0 +1,8 @@ +{{data.message}} + + + diff --git a/ui/src/app/admin/resources-management/resources-management.component.html b/ui/src/app/admin/resources-management/resources-management.component.html new file mode 100644 index 0000000..592a214 --- /dev/null +++ b/ui/src/app/admin/resources-management/resources-management.component.html @@ -0,0 +1,18 @@ + + + + + + +
+
+ +
+ + + + + + +
+
diff --git a/ui/src/app/admin/resources-management/resources-management.component.sass b/ui/src/app/admin/resources-management/resources-management.component.sass new file mode 100644 index 0000000..6b2c80a --- /dev/null +++ b/ui/src/app/admin/resources-management/resources-management.component.sass @@ -0,0 +1,54 @@ +.btn + margin-right: 8px +.resource + width: 450px + height: 300px + float: left + background-image: url('../../../assets/img/projector.jpg') + background-size: cover + margin: 8px + padding: 0px +.resName + width: calc( 100% - 48px ) + position: absolute + bottom: 33% +.nameInput + width: 100% + color: white + font-weight: 500 + font-size: 1.4em + box-sizing: border-box + border: none +.resDescription + width: calc( 100% - 48px ) + height: 30% + color: white + position: absolute + bottom: 0 +.descriptionInput + width: 100% + height: 100% + padding: 4px + background-color: rgba(0,0,0,0) + color: white + font-weight: 300 + font-size: 1.2em + box-sizing: border-box + border: none + &:active + border: none + outline: none +.shadow + width: 100% + height: 100% + background-color: rgba(0,0,0,0.5) + border-radius: 4px + padding: 16px +.checkbox + float: left + width: 40px + height: 40px + border-radius: 0px 0px 40px 0px + padding-left: 5px + padding-top: 5px + background-color: #3f51b5 \ No newline at end of file diff --git a/ui/src/app/admin/resources-management/resources-management.component.spec.ts b/ui/src/app/admin/resources-management/resources-management.component.spec.ts new file mode 100644 index 0000000..12301c8 --- /dev/null +++ b/ui/src/app/admin/resources-management/resources-management.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ResourcesManagementComponent } from './resources-management.component'; + +describe('ResourcesManagementComponent', () => { + let component: ResourcesManagementComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ResourcesManagementComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ResourcesManagementComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/ui/src/app/admin/resources-management/resources-management.component.ts b/ui/src/app/admin/resources-management/resources-management.component.ts new file mode 100644 index 0000000..4f2db54 --- /dev/null +++ b/ui/src/app/admin/resources-management/resources-management.component.ts @@ -0,0 +1,143 @@ +import {Component, OnInit, Inject} from '@angular/core'; +import {ResourcesService} from './resources.service'; +import {MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog'; +import {DeleteDialogComponent} from '../../timetable/slider-menu/slider-menu.component'; +import {AddRoleDialogComponent} from '../roles/roles.component'; + +import {Resource} from '../../models/Resource'; + +@Component({ + selector: 'app-resources-management', + templateUrl: './resources-management.component.html', + styleUrls: ['./resources-management.component.sass'], +}) +export class ResourcesManagementComponent implements OnInit { + resources: Resource[]; + selectedResources: Resource[] = []; + + isDelete = false; + constructor(private resourcesService: ResourcesService, public dialog: MatDialog) {} + + ngOnInit(): void { + this.getResources(); + } + + getResources(): void { + this.resourcesService.getResources().subscribe(res => (this.resources = res)); + } + + deleteResources(): void { + if (this.selectedResources.length === 0) { + const dialogRef = this.dialog.open(MessageDialogComponent, { + width: '250px', + data: {message: 'You must select at least 1 element!'}, + }); + + dialogRef.afterClosed().subscribe(); + } else { + const dialogRef = this.dialog.open(DeleteDialogComponent, { + width: '250px', + data: {isDelete: this.isDelete}, + }); + + dialogRef.afterClosed().subscribe(result => { + this.isDelete = result; + if (this.isDelete) { + this.executeDeleteResources(); + this.isDelete = false; + } + }); + } + } + + private executeDeleteResources(): void { + this.selectedResources.map(res => { + this.resourcesService.deleteResources(res); + }); + this.resources = this.resources.filter(el => !this.selectedResources.find(f => f.resourceId === el.resourceId)); + this.selectedResources = []; + } + + updateResources() { + if (this.selectedResources.length === 0) { + const dialogRef = this.dialog.open(MessageDialogComponent, { + width: '250px', + data: {message: 'You must select at least 1 element!'}, + }); + + dialogRef.afterClosed().subscribe(); + } else { + const dialogRef = this.dialog.open(DeleteDialogComponent, { + width: '250px', + data: {isDelete: this.isDelete}, + }); + + dialogRef.afterClosed().subscribe(result => { + this.isDelete = result; + if (this.isDelete) { + this.executeUpdateResources(); + this.isDelete = false; + } + }); + } + } + + private executeUpdateResources() { + this.selectedResources.map(res => { + this.resourcesService.updateResources(res); + }); + this.selectedResources = []; + } + + addNewResource() { + const newResource = { + resourceName: '', + resourceDescription: '', + } as Resource; + const dialogRef = this.dialog.open(AddRoleDialogComponent, { + width: '250px', + data: {message: 'Name of resource:'}, + }); + + dialogRef.afterClosed().subscribe(result => { + if (result) { + newResource.resourceName = result; + const dialogRef = this.dialog.open(AddRoleDialogComponent, { + width: '300px', + data: {message: 'Description of resource:'}, + }); + + dialogRef.afterClosed().subscribe(description => { + if (description) { + newResource.resourceDescription = description; + } + this.executeAddNewResource(newResource); + }); + } + }); + } + + private executeAddNewResource(res) { + this.resourcesService.addResources(res).subscribe(r => this.resources.push(r)); + } + + selectUnselectResource(resource) { + if (this.selectedResources.find(f => f === resource)) { + this.selectedResources = this.selectedResources.filter(f => f !== resource); + } else { + this.selectedResources.push(resource); + } + } +} + +@Component({ + selector: 'app-message-dialog', + templateUrl: 'message.html', +}) +export class MessageDialogComponent { + constructor(public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data) {} + + onNoClick(): void { + this.dialogRef.close(); + } +} diff --git a/ui/src/app/admin/resources-management/resources.service.spec.ts b/ui/src/app/admin/resources-management/resources.service.spec.ts new file mode 100644 index 0000000..af4d902 --- /dev/null +++ b/ui/src/app/admin/resources-management/resources.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { ResourcesService } from './resources.service'; + +describe('ResourcesService', () => { + let service: ResourcesService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ResourcesService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/ui/src/app/admin/resources-management/resources.service.ts b/ui/src/app/admin/resources-management/resources.service.ts new file mode 100644 index 0000000..a5999f8 --- /dev/null +++ b/ui/src/app/admin/resources-management/resources.service.ts @@ -0,0 +1,38 @@ +import {Injectable} from '@angular/core'; +import {HttpClient, HttpHeaders} from '@angular/common/http'; +import {Observable} from 'rxjs'; + +import {Resource} from '../../models/Resource'; + +@Injectable({ + providedIn: 'root', +}) +export class ResourcesService { + private resourcesUrl = 'api/resources'; + private httpOptions = { + headers: new HttpHeaders({'Content-Type': 'application/json'}), + }; + + constructor(private http: HttpClient) {} + + getResources(): Observable { + console.log('get'); + return this.http.get(this.resourcesUrl); + } + + addResources(Resource: Resource): Observable { + console.log('added'); + return this.http.post(this.resourcesUrl, Resource, this.httpOptions); + } + + deleteResources(Resource: Resource): Observable { + console.log('deleted'); + const url = `api/Resources/${Resource.resourceId}`; + return this.http.delete(url, this.httpOptions); + } + + updateResources(Resource): Observable { + console.log('updated'); + return this.http.put(this.resourcesUrl, Resource, this.httpOptions); + } +} diff --git a/ui/src/app/admin/roles/add-role.html b/ui/src/app/admin/roles/add-role.html index 83de0fb..9dbf7d0 100644 --- a/ui/src/app/admin/roles/add-role.html +++ b/ui/src/app/admin/roles/add-role.html @@ -1,4 +1,4 @@ -

Name of role:

+

{{data.message}}

diff --git a/ui/src/app/admin/roles/roles.component.ts b/ui/src/app/admin/roles/roles.component.ts index 8cc2e36..354cd19 100644 --- a/ui/src/app/admin/roles/roles.component.ts +++ b/ui/src/app/admin/roles/roles.component.ts @@ -1,6 +1,6 @@ import {Component, OnInit, Inject} from '@angular/core'; import {MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog'; -import {RolesService} from '../roles.service'; +import {RolesService} from './roles.service'; import {Role, FeatureEntry} from '../../models/role'; import {DeleteDialogComponent} from '../../timetable/slider-menu/slider-menu.component'; @@ -97,7 +97,7 @@ export class RolesComponent implements OnInit { } as Role; const roleRef = this.dialog.open(AddRoleDialogComponent, { width: '300px', - data: {}, + data: {message: 'Name:'}, }); roleRef.afterClosed().subscribe(result => { if (result) { @@ -110,8 +110,8 @@ export class RolesComponent implements OnInit { featuresRef.afterClosed().subscribe(res => { if (res) { role.entries = role.entries.concat(res); - this.executeAddRole(role); } + this.executeAddRole(role); }); } }); @@ -124,7 +124,7 @@ export class RolesComponent implements OnInit { changeName(role): void { const roleRef = this.dialog.open(AddRoleDialogComponent, { width: '300px', - data: {}, + data: {message: 'New name is:'}, }); roleRef.afterClosed().subscribe(result => { if (result) { diff --git a/ui/src/app/admin/roles.service.spec.ts b/ui/src/app/admin/roles/roles.service.spec.ts similarity index 100% rename from ui/src/app/admin/roles.service.spec.ts rename to ui/src/app/admin/roles/roles.service.spec.ts diff --git a/ui/src/app/admin/roles.service.ts b/ui/src/app/admin/roles/roles.service.ts similarity index 95% rename from ui/src/app/admin/roles.service.ts rename to ui/src/app/admin/roles/roles.service.ts index 9dacf4e..afa31a1 100644 --- a/ui/src/app/admin/roles.service.ts +++ b/ui/src/app/admin/roles/roles.service.ts @@ -2,7 +2,7 @@ import {Injectable} from '@angular/core'; import {HttpClient, HttpHeaders} from '@angular/common/http'; import {Observable} from 'rxjs'; -import {Role, FeatureEntry} from '../models/role'; +import {Role, FeatureEntry} from '../../models/role'; @Injectable({ providedIn: 'root', diff --git a/ui/src/app/admin/users-management/users-management.component.html b/ui/src/app/admin/users-management/users-management.component.html new file mode 100644 index 0000000..4e14488 --- /dev/null +++ b/ui/src/app/admin/users-management/users-management.component.html @@ -0,0 +1 @@ +

users-management works!

diff --git a/ui/src/app/admin/users-management/users-management.component.sass b/ui/src/app/admin/users-management/users-management.component.sass new file mode 100644 index 0000000..e69de29 diff --git a/ui/src/app/admin/users-management/users-management.component.spec.ts b/ui/src/app/admin/users-management/users-management.component.spec.ts new file mode 100644 index 0000000..75e2b70 --- /dev/null +++ b/ui/src/app/admin/users-management/users-management.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UsersManagementComponent } from './users-management.component'; + +describe('UsersManagementComponent', () => { + let component: UsersManagementComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ UsersManagementComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(UsersManagementComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/ui/src/app/admin/users-management/users-management.component.ts b/ui/src/app/admin/users-management/users-management.component.ts new file mode 100644 index 0000000..d81a51f --- /dev/null +++ b/ui/src/app/admin/users-management/users-management.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-users-management', + templateUrl: './users-management.component.html', + styleUrls: ['./users-management.component.sass'] +}) +export class UsersManagementComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/ui/src/app/app.module.ts b/ui/src/app/app.module.ts index 18fcde4..e59456f 100644 --- a/ui/src/app/app.module.ts +++ b/ui/src/app/app.module.ts @@ -8,31 +8,10 @@ import {TimetableModule} from './timetable/timetable.module'; import {SignInModule} from './sign-in/sign-in.module'; import {LandingPageModule} from './landing-page/landing-page.module'; import {ErrorPageModule} from './error-page/error-page.module'; -<<<<<<< HEAD -import {AdminModule} from './admin/admin.module'; - -import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; -import {AppComponent} from './app.component'; -======= +import {AdminModule} from './admin/admin.module'; import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; -import {MatDatepickerModule} from '@angular/material/datepicker'; -import {MatFormFieldModule} from '@angular/material/form-field'; -import {MatNativeDateModule} from '@angular/material/core'; -import {MatInputModule} from '@angular/material/input'; -import {MatSelectModule} from '@angular/material/select'; -import {MatSliderModule} from '@angular/material/slider'; -import {MatSlideToggleModule} from '@angular/material/slide-toggle'; -import {MatButtonModule} from '@angular/material/button'; -import {MatBottomSheetModule} from '@angular/material/bottom-sheet'; -import {MatIconModule} from '@angular/material/icon'; -import {MatProgressBarModule} from '@angular/material/progress-bar'; -import {MatCardModule} from '@angular/material/card'; -import {MatSidenavModule} from '@angular/material/sidenav'; -import {MatDialogModule} from '@angular/material/dialog'; -import {MatExpansionModule} from '@angular/material/expansion'; ->>>>>>> issue-96, ui structure of component rewrited, created sign-in/up, error and landing pages import {AppComponent} from './app.component'; @@ -43,11 +22,7 @@ import {AppComponent} from './app.component'; TimetableModule, LandingPageModule, ErrorPageModule, -<<<<<<< HEAD AdminModule, -======= ->>>>>>> issue-96, ui structure of component rewrited, created sign-in/up, error and landing pages - BrowserModule, HttpClientModule, AppRoutingModule, diff --git a/ui/src/app/landing-page/landing-page.component.html b/ui/src/app/landing-page/landing-page.component.html index d5ba659..2b4a475 100644 --- a/ui/src/app/landing-page/landing-page.component.html +++ b/ui/src/app/landing-page/landing-page.component.html @@ -1,7 +1,3 @@ -<<<<<<< HEAD -======= -

landing-page works!

->>>>>>> issue-96, ui structure of component rewrited, created sign-in/up, error and landing pages diff --git a/ui/src/app/models/Group.ts b/ui/src/app/models/Group.ts index ab568b1..4316199 100644 --- a/ui/src/app/models/Group.ts +++ b/ui/src/app/models/Group.ts @@ -1,4 +1,9 @@ +import {User} from './User'; export interface Group { - id: string; - name: string; + id: number; + specialisation: string; + yearOfEducation: number; + groupNumber: number; + curator: User; + students: User[]; } diff --git a/ui/src/app/models/GroupAsResource.ts b/ui/src/app/models/GroupAsResource.ts new file mode 100644 index 0000000..0e0a795 --- /dev/null +++ b/ui/src/app/models/GroupAsResource.ts @@ -0,0 +1,4 @@ +export interface GroupAsResource { + id: string; + name: string; +} diff --git a/ui/src/app/models/Lesson.ts b/ui/src/app/models/Lesson.ts index 868cc07..b743fb2 100644 --- a/ui/src/app/models/Lesson.ts +++ b/ui/src/app/models/Lesson.ts @@ -1,13 +1,13 @@ import * as moment from 'moment'; -import {Group} from './Group'; -import {User} from './User'; +import {GroupAsResource} from './GroupAsResource'; +import {UserAsResource} from './UserAsResource'; import {Room} from './Room'; import {iSubject} from './Subject'; export interface Lesson { readonly id: string; subject: iSubject; - lecturer: User; - group: Group; + lecturer: UserAsResource; + group: GroupAsResource; startAt: moment.Moment; endAt: moment.Moment; room: Room; diff --git a/ui/src/app/models/Resource.ts b/ui/src/app/models/Resource.ts new file mode 100644 index 0000000..1b2c123 --- /dev/null +++ b/ui/src/app/models/Resource.ts @@ -0,0 +1,5 @@ +export interface Resource { + readonly resourceId: number; + resourceName: string; + resourceDescription: string; +} diff --git a/ui/src/app/models/User.ts b/ui/src/app/models/User.ts index 93da7e7..447460d 100644 --- a/ui/src/app/models/User.ts +++ b/ui/src/app/models/User.ts @@ -1,8 +1,13 @@ -type Role = 'student' | 'lecturer' | 'parent' | 'director'; +import * as moment from 'moment'; + export interface User { - id: string; + userId: number; firstName: string; lastName: string; - surname: string; - role: Role; + dateOFBirth: moment.Moment; + email: string; + mobilePhone: string; + createdAt: moment.Moment; + modifiedAt: moment.Moment; + userPhoto: any; } diff --git a/ui/src/app/models/UserAsResource.ts b/ui/src/app/models/UserAsResource.ts new file mode 100644 index 0000000..c5633d3 --- /dev/null +++ b/ui/src/app/models/UserAsResource.ts @@ -0,0 +1,8 @@ +type Role = 'student' | 'lecturer' | 'parent' | 'director'; +export interface UserAsResource { + id: string; + firstName: string; + lastName: string; + surname: string; + role: Role; +} diff --git a/ui/src/app/sign-in/autorisation.service.ts b/ui/src/app/sign-in/autorisation.service.ts index 5a9c059..749f5e7 100644 --- a/ui/src/app/sign-in/autorisation.service.ts +++ b/ui/src/app/sign-in/autorisation.service.ts @@ -10,12 +10,14 @@ export class AutorisationService { httpOptions = { headers: new HttpHeaders({'Content-Type': 'application/json'}), }; + constructor(private http: HttpClient) {} signIn(value: SignIn): Observable { console.log('sign in'); return this.http.post('api/signIn', value, this.httpOptions); } + signUp(value): Observable { console.log('sign up'); return this.http.post('api/signUp', value, this.httpOptions); diff --git a/ui/src/app/sign-in/sign-in/sign-in.component.html b/ui/src/app/sign-in/sign-in/sign-in.component.html index 91ccf59..98bdf81 100644 --- a/ui/src/app/sign-in/sign-in/sign-in.component.html +++ b/ui/src/app/sign-in/sign-in/sign-in.component.html @@ -8,6 +8,7 @@ Login is required You have more than 60 characters
+ {{ hide ? 'visibility_off' : 'visibility' }} + Not more then 255 characters long. Password is required You have more than 255 characters +