Newer
Older
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { HttpClient } from '@angular/common/http';
import { tap } from 'rxjs/internal/operators/tap';
import { NotificationService } from '../../notification.service';
import { of } from 'rxjs/internal/observable/of';
import { catchError } from 'rxjs/internal/operators/catchError';
@Component({
selector: 'app-prerequisite',
templateUrl: './prerequisite.component.html',
styleUrls: ['./prerequisite.component.scss']
})
export class PrerequisiteComponent implements OnInit {
stepFormGroup: FormGroup;
packagesList: any = {
general: [
{
label: 'phpVersion',
description: 'Version de PHP (7.2, 7.3, ou 7.4) -> 7.2.31-1+ubuntu18.04.1+deb.sury.org+1'
},
{
description: 'Droits de lecture et d\'écriture du répertoire racine de Maarch Courrier'
},
{
description: 'Outils de conversion de documents bureautiques soffice/unoconv installés'
},
{
description: 'Utilitaire permettant d\'ouvrir des connexions réseau (netcat / nmap)'
}
],
libraries: [
{
label: 'pgsql',
description: ''
},
{
label: 'fileinfo',
description: ''
}, {
label: 'pdoPgsql',
description: ''
},
{
label: 'gd',
description: ''
},
{
label: 'imap',
description: ''
},
{
label: 'mbstring',
description: ''
},
{
label: 'xsl',
description: ''
},
{
label: 'gettext',
description: ''
},
{
description: ''
},
{
label: 'curl',
description: ''
},
{
label: 'zip',
description: ''
},
{
description: ''
},
],
phpini: [
{
description: 'error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT '
},
{
description: 'display_errors = On'
},
{
description: 'short_open_tags = On'
},
],
};
constructor(
public http: HttpClient,
private notify: NotificationService,
private _formBuilder: FormBuilder
) { }
ngOnInit(): void {
this.stepFormGroup = this._formBuilder.group({
firstCtrl: ['', Validators.required]
});
// FOR TEST
this.stepFormGroup.controls['firstCtrl'].setValue(this.checkStep());
this.stepFormGroup.controls['firstCtrl'].markAsUntouched();
}
getStepData() {
this.http.get(`../rest/installer/prerequisites`).pipe(
tap((data: any) => {
this.prerequisites = data.prerequisites;
Object.keys(this.packagesList).forEach(group => {
this.packagesList[group].forEach((item: any, key: number) => {
this.packagesList[group][key].state = this.prerequisites[this.packagesList[group][key].label] ? 'ok' : 'ko';
});
});
}),
catchError((err: any) => {
this.notify.handleSoftErrors(err);
return of(false);
})
).subscribe();
}
checkStep() {
let state = 'success';
Object.keys(this.packagesList).forEach((group: any) => {
this.packagesList[group].forEach((item: any) => {
if (item.state === 'ko') {
state = '';
}
});
});
return state;
}
isValidStep() {
return this.stepFormGroup === undefined ? false : this.stepFormGroup.controls['firstCtrl'].value === 'success';
}
getFormGroup() {
return this.stepFormGroup;
}
}