Files
Kine-frontend/src/app/components/home/workspace/parametres/parametres.component.ts
2022-12-02 10:37:56 +01:00

139 lines
3.8 KiB
TypeScript

import { Component, OnInit } from '@angular/core';
import { ThemePalette } from '@angular/material/core';
import { FormBuilder, FormGroup, Validators, ValidatorFn, ValidationErrors, AbstractControl } from '@angular/forms';
import { Router } from '@angular/router';
import { BackendService } from '../../../../services/backend/backend.service';
import { Parameters } from '../../../../models/parameters.model';
import { ToastrService } from 'ngx-toastr';
@Component({
selector: 'app-parametres',
templateUrl: './parametres.component.html',
styleUrls: ['./parametres.component.css']
})
export class ParametresComponent implements OnInit {
paramsFG:FormGroup;
submitted:boolean=false;
slideDisable:boolean=false;
pinChecked:boolean=false;
pinNumber:string="0000";
isProcessing:boolean = true;
isDisabled:boolean = true;
timeLeft:number = 0;
buttonText:string = "Mise à jour";
interval:any;
constructor(private fb:FormBuilder,
private bs:BackendService,
private router:Router,
private toast:ToastrService) { }
ngOnInit(): void {
this.paramsFG=this.fb.group({
num_accepted:["", [
Validators.required,
Validators.pattern('^[0-9]{15}$'),
]],
num_tone:["", [
Validators.required,
Validators.pattern('^[1-5]{1}$'),
]],
dtmf_code:["", [
Validators.required,
Validators.pattern('^[0-9A-D#*]{1}$'),
]],
dtmf_duration:["", [
Validators.required,
Validators.pattern('^[1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5]$'),
]],
});
this.bs.retreiveParams().subscribe(
(data:Parameters) => {
this.paramsFG.get('num_accepted').setValue(data.num_autorized);
this.paramsFG.get('num_tone').setValue(data.tone_duration);
this.paramsFG.get('dtmf_code').setValue(data.dtmf_code);
this.paramsFG.get('dtmf_duration').setValue(data.dtmf_duration);
this.slideDisable = data.pin_actif;
this.pinChecked = data.pin_actif;
this.pinNumber = data.code_pin;
this.isProcessing = false;
this.isDisabled = false;
}, err => {
if(err.status == 401) {
this.router.navigateByUrl("/login");
} else {
this.toast.error(err.error.description);
}
}
);
}
onSlideChanged(event: any): void {
console.log("checked ?", event.checked);
this.pinChecked=event.checked;
}
onCodeChanged(code: string): void {
// this called every time when user changed the code
}
onCodeCompleted(code: string): void {
// this called only if user entered full code
this.pinNumber = code;
}
setTimeoutDisabledButton(timeout:number): void {
this.timeLeft = timeout;
this.isDisabled = true;
this.buttonText = "Mise à jour" + " ... (" + this.timeLeft + ")";
this.interval = setInterval(() => {
if(this.timeLeft > 0) {
this.timeLeft--;
this.buttonText = "Mise à jour" + " ... (" + this.timeLeft + ")";
} else {
this.isDisabled = false;
this.buttonText = "Mise à jour";
clearInterval(this.interval);
}
},1000)
}
onUpdate(): void {
if(this.paramsFG.invalid) {
console.log("Form invalid !!");
return;
}
let params:Parameters = {
pin_actif:false,
code_pin:'',
num_autorized:'',
tone_duration:0,
dtmf_code:'',
dtmf_duration:0};
params.pin_actif = this.pinChecked;
if (this.pinChecked == false) {
params.code_pin = '0000';
} else {
params.code_pin = this.pinNumber;
}
params.num_autorized = this.paramsFG.get('num_accepted').value;
params.tone_duration = this.paramsFG.get('num_tone').value;
params.dtmf_code = this.paramsFG.get('dtmf_code').value;
params.dtmf_duration = this.paramsFG.get('dtmf_duration').value;
this.setTimeoutDisabledButton(5);
this.bs.updateParams(params).subscribe(
data => {
this.toast.success("Mise à jour des paramètres réussie");
}, err => {
if(err.status == 401) {
this.router.navigateByUrl("/login");
} else {
this.toast.error(err.error.description);
}
}
);
}
}