diff --git a/frontend/src/app/app-routing.module.ts b/frontend/src/app/app-routing.module.ts index 690daa3..0569996 100644 --- a/frontend/src/app/app-routing.module.ts +++ b/frontend/src/app/app-routing.module.ts @@ -1,3 +1,4 @@ +import { CreateSlaveComponent } from './pages/create-slave/create-slave.component'; import { EditSlaveComponent } from './pages/edit-slave/edit-slave.component'; import { PasswordComponent } from './pages/password/password.component'; import { AuthGuard } from './services/auth-guard.service'; @@ -35,6 +36,10 @@ const routes: Routes = [ path: 'domains/auth/:domainId', component: EditAuthComponent }, + { + path: 'domains/create/slave', + component: CreateSlaveComponent + }, { path: 'password', component: PasswordComponent diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index e569420..de148be 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -28,6 +28,7 @@ import { PasswordComponent } from './pages/password/password.component'; import { EditSlaveComponent } from './pages/edit-slave/edit-slave.component'; import { EditAuthComponent } from './pages/edit-auth/edit-auth.component'; import { SelectComponent } from './partials/select/select.component'; +import { CreateSlaveComponent } from './pages/create-slave/create-slave.component'; @NgModule({ declarations: [ @@ -48,7 +49,8 @@ import { SelectComponent } from './partials/select/select.component'; EditSlaveComponent, EditAuthComponent, SelectComponent, - StopPropagateClickDirective + StopPropagateClickDirective, + CreateSlaveComponent ], imports: [ BrowserModule, diff --git a/frontend/src/app/operations/domains.operations.ts b/frontend/src/app/operations/domains.operations.ts index c003cfb..309d963 100644 --- a/frontend/src/app/operations/domains.operations.ts +++ b/frontend/src/app/operations/domains.operations.ts @@ -57,4 +57,27 @@ export class DomainsOperation { return false; } } + + public async create(name: string, type: string, master?: string): Promise { + let result: DomainApitype; + try { + if (type === 'SLAVE') { + result = new DomainApitype(await this.http.post('/domains', { + name: name, + type: type, + master: master + })); + } else { + result = new DomainApitype(await this.http.post('/domains', { + name: name, + type: type + })); + } + + return result; + } catch (e) { + console.error(e); + return new DomainApitype({}); + } + } } diff --git a/frontend/src/app/pages/create-slave/create-slave.component.html b/frontend/src/app/pages/create-slave/create-slave.component.html new file mode 100644 index 0000000..4d606d2 --- /dev/null +++ b/frontend/src/app/pages/create-slave/create-slave.component.html @@ -0,0 +1,26 @@ +
+
+

Create slave zone

+ +
+ +
+ + +
+ Name can not be empty. +
+
+ +
+ + +
+ Master can not be empty. +
+
+ + +
+
+
\ No newline at end of file diff --git a/frontend/src/app/pages/create-slave/create-slave.component.scss b/frontend/src/app/pages/create-slave/create-slave.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/app/pages/create-slave/create-slave.component.ts b/frontend/src/app/pages/create-slave/create-slave.component.ts new file mode 100644 index 0000000..b89c785 --- /dev/null +++ b/frontend/src/app/pages/create-slave/create-slave.component.ts @@ -0,0 +1,34 @@ +import { DomainsOperation } from './../../operations/domains.operations'; +import { ActivatedRoute, ParamMap, Router } from '@angular/router'; +import { FormGroup, Validators, FormBuilder } from '@angular/forms'; +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-create-slave', + templateUrl: './create-slave.component.html', + styleUrls: ['./create-slave.component.scss'] +}) +export class CreateSlaveComponent implements OnInit { + + public slaveForm: FormGroup; + + constructor(private fb: FormBuilder, private route: ActivatedRoute, private domains: DomainsOperation, private router: Router) { } + + ngOnInit() { + this.createForm(); + } + + private createForm() { + this.slaveForm = this.fb.group({ + name: ['', Validators.required], + master: ['', Validators.required] + }); + } + + public async onSubmit() { + const v = this.slaveForm.value; + const newDomain = await this.domains.create(v.name, 'SLAVE', v.master); + this.slaveForm.reset(); + this.router.navigate(['/domains/slave', newDomain.id.toString()]); + } +} diff --git a/frontend/src/app/pages/domains/domains.component.html b/frontend/src/app/pages/domains/domains.component.html index 8bd3657..942e24d 100644 --- a/frontend/src/app/pages/domains/domains.component.html +++ b/frontend/src/app/pages/domains/domains.component.html @@ -4,7 +4,7 @@ - +