This commit is contained in:
2023-06-17 14:16:09 +03:00
parent 62178f1f32
commit 7ae5d3bc81
180 changed files with 12932 additions and 192 deletions
@@ -0,0 +1,98 @@
// angular
import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';
// libs
import Swal from 'sweetalert2';
import { MatDialog } from '@angular/material/dialog';
// app
import { ApiRoutes } from '../../../api-routes';
import { SettingsMotionEditComponent } from './edit.motion.component';
import { MotionService } from '../../../services/motion.service';
import { MotionModel } from '../../../model/motion.model';
import { MotionCategoryModel } from '../../../model/motion.category.model';
@Component({
templateUrl: './motion.component.html',
styleUrls: ['./motion.component.scss'],
})
export class SettingsMotionComponent {
public motions?: MotionModel[];
public categories?: MotionCategoryModel[];
public selectedCategory?: MotionCategoryModel;
constructor(
private dialogModel: MatDialog,
private httpClient: HttpClient,
private motionService: MotionService,
) {
}
ngOnInit(): void {
this.load();
}
private load(categoryId?: string) {
this.motionService.getCategories()
.subscribe(data => {
this.categories = data;
var selected = data[0];
if (categoryId) {
var categories = this.categories.filter(x => x.id === categoryId);
selected = categories.length === 0
? selected
: categories[0];
}
this.selectCategory(selected);
});
}
public selectCategory(category: MotionCategoryModel) {
this.selectedCategory = category;
this.motionService.getMotions(category.id)
.subscribe(data => {
this.motions = data;
});
}
public edit(motion: MotionModel) {
this.dialogModel.open(SettingsMotionEditComponent, {
width: '640px',
disableClose: true,
data: motion,
}).afterClosed().subscribe(x => {
if (x && x.refresh) {
console.log(x.motion.categoryId);
this.load(x.motion.categoryId);
}
});
}
public remove(category: MotionModel) {
Swal.fire({
title: 'Remove motion ' + category.name,
showCancelButton: true,
confirmButtonText: 'Delete',
showLoaderOnConfirm: true,
preConfirm: (name) => {
return new Promise((resolve, reject) => {
this.httpClient.delete(ApiRoutes.SettingsMotionCategory.replace(':id', category.id!))
.subscribe(data => {
resolve(data);
}, error => {
Swal.showValidationMessage(error.detail);
reject();
});
}).catch(x => {
return false;
});
},
allowOutsideClick: () => !Swal.isLoading(),
}).then((result) => {
this.load();
});
}
}