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 + } +}