diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 86d933e..8644bf0 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -7751,6 +7751,11 @@
"integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
"dev": true
},
+ "ngx-spinner": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/ngx-spinner/-/ngx-spinner-9.0.2.tgz",
+ "integrity": "sha512-Yoed+9389GMxHhyPavBA7S3JY5XF38hIhW+qcJuPcxwOJHkhnr6hZFtuSlp1oXMp3HySQPEskWks1joMtmztMA=="
+ },
"nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
diff --git a/frontend/package.json b/frontend/package.json
index 81f2777..ebf5cee 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -24,6 +24,7 @@
"@ngx-translate/core": "^12.1.2",
"@ngx-translate/http-loader": "^4.0.0",
"@types/googlemaps": "^3.39.7",
+ "ngx-spinner": "^9.0.2",
"rxjs": "~6.5.4",
"tslib": "^1.10.0",
"zone.js": "~0.10.2"
diff --git a/frontend/src/app/app.component.html b/frontend/src/app/app.component.html
index 0c1ec05..20c9ff9 100644
--- a/frontend/src/app/app.component.html
+++ b/frontend/src/app/app.component.html
@@ -1,2 +1,4 @@
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts
index 2a6c9ba..a31c4f6 100644
--- a/frontend/src/app/app.module.ts
+++ b/frontend/src/app/app.module.ts
@@ -12,7 +12,11 @@ import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { DialogErrorComponent } from './dialogs/dialog-error/dialog-error.component';
import { DialogInformationsComponent } from './dialogs/dialog-informations/dialog-informations.component';
-
+import {MatFormFieldModule} from '@angular/material/form-field';
+import {MatInputModule, MatInput} from '@angular/material/input';
+import { FindServerFieldComponent } from './find-server-field/find-server-field.component';
+import { ReactiveFormsModule } from '@angular/forms';
+import { NgxSpinnerModule } from "ngx-spinner";
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http);
}
@@ -21,7 +25,8 @@ export function HttpLoaderFactory(http: HttpClient) {
declarations: [
AppComponent,
DialogErrorComponent,
- DialogInformationsComponent
+ DialogInformationsComponent,
+ FindServerFieldComponent
],
imports: [
BrowserModule,
@@ -31,6 +36,10 @@ export function HttpLoaderFactory(http: HttpClient) {
MatButtonModule,
MatIconModule,
HttpClientModule,
+ MatFormFieldModule,
+ MatInputModule,
+ ReactiveFormsModule,
+ NgxSpinnerModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
diff --git a/frontend/src/app/find-server-field/find-server-field.component.css b/frontend/src/app/find-server-field/find-server-field.component.css
new file mode 100644
index 0000000..9a56965
--- /dev/null
+++ b/frontend/src/app/find-server-field/find-server-field.component.css
@@ -0,0 +1,11 @@
+.find-server-container{
+ text-align: center;
+}
+
+.find-server-button-container{
+ margin-top: 10px;
+}
+
+.find-server-button-container > button {
+ padding: 0 20px;
+}
\ No newline at end of file
diff --git a/frontend/src/app/find-server-field/find-server-field.component.html b/frontend/src/app/find-server-field/find-server-field.component.html
new file mode 100644
index 0000000..9fd068b
--- /dev/null
+++ b/frontend/src/app/find-server-field/find-server-field.component.html
@@ -0,0 +1,23 @@
+
+
+ Check details about server
+
+
+
+ IP address
+
+
+ IP address is required
+ IP address is not valid
+
+
+
+
+
+
+
Loading...
+
+
diff --git a/frontend/src/app/find-server-field/find-server-field.component.spec.ts b/frontend/src/app/find-server-field/find-server-field.component.spec.ts
new file mode 100644
index 0000000..9f1d8ca
--- /dev/null
+++ b/frontend/src/app/find-server-field/find-server-field.component.spec.ts
@@ -0,0 +1,28 @@
+/* tslint:disable:no-unused-variable */
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+import { By } from '@angular/platform-browser';
+import { DebugElement } from '@angular/core';
+
+import { FindServerFieldComponent } from './find-server-field.component';
+
+describe('FindServerFieldComponent', () => {
+ let component: FindServerFieldComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ FindServerFieldComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(FindServerFieldComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/frontend/src/app/find-server-field/find-server-field.component.ts b/frontend/src/app/find-server-field/find-server-field.component.ts
new file mode 100644
index 0000000..dce08c5
--- /dev/null
+++ b/frontend/src/app/find-server-field/find-server-field.component.ts
@@ -0,0 +1,26 @@
+import { Component, OnInit } from '@angular/core';
+import { FormControl, Validators } from '@angular/forms';
+import { NgxSpinnerService } from 'ngx-spinner';
+
+@Component({
+ selector: 'app-find-server-field',
+ templateUrl: './find-server-field.component.html',
+ styleUrls: ['./find-server-field.component.css'],
+})
+export class FindServerFieldComponent implements OnInit {
+ private readonly addressIpPattern =
+ '^((25[0-5]|(2[0-4]|1[0-9]|[1-9]|)[0-9])(.(?!$)|$)){4}$';
+ addressFormControl = new FormControl('', [
+ Validators.required,
+ Validators.pattern(this.addressIpPattern),
+ ]);
+ constructor(private spinner: NgxSpinnerService) {}
+
+ ngOnInit() {}
+
+ onCheckServer(): void {
+ this.spinner.show();
+ setTimeout(_=> this.spinner.hide(), 3000);
+ // TODO do request to backend
+ }
+}