allerta-vvf/frontend/src/app/_routes/admin/options/admin-options.component.ts

81 lines
2.3 KiB
TypeScript

import { Component, OnInit } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { ApiClientService } from 'src/app/_services/api-client.service';
import { AuthService } from 'src/app/_services/auth.service';
import { ToastrService } from 'ngx-toastr';
import Swal from 'sweetalert2';
@Component({
selector: 'app-admin-options',
templateUrl: './admin-options.component.html',
styleUrls: ['./admin-options.component.scss']
})
export class AdminOptionsComponent implements OnInit {
options: any[] = [];
constructor(
private translateService: TranslateService,
private api: ApiClientService,
public auth: AuthService,
private toastr: ToastrService
) { }
getOptions() {
this.api.get('admin/options').then((res: any) => {
res.forEach((option: any) => {
switch (option.type) {
case 'boolean':
option.value = option.value === '1' || option.value === 'true';
break;
case 'number':
option.value = parseFloat(option.value);
break;
case 'string':
option.value = option.value.toString();
break;
}
//Add properties used in the UI
option._origValue = option.value;
option._updating = false;
});
this.options = res;
console.log(this.options);
}).catch((err: any) => {
console.error(err);
Swal.fire({
title: this.translateService.instant("error_title"),
text: err.error.message,
icon: 'error',
confirmButtonText: 'Ok'
});
});
}
ngOnInit() {
this.getOptions();
}
updateOption(optionId: number) {
let option = this.options.find(o => o.id === optionId);
option._updating = true;
console.log(option);
this.api.put('admin/options/'+option.id, {
value: option.value
}).then((res: any) => {
console.log(res);
option._origValue = option.value;
this.toastr.success(this.translateService.instant("admin.option_update_success"));
}).catch((err: any) => {
console.error(err);
Swal.fire({
title: this.translateService.instant("error_title"),
text: err.error.message,
icon: 'error',
confirmButtonText: 'Ok'
});
}).finally(() => {
option._updating = false;
});
}
}