issue-106 #107
@ -401,6 +401,63 @@ export class TaskService {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param taskID internal id of task
|
||||||
|
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
||||||
|
* @param reportProgress flag to report request and response progress.
|
||||||
|
*/
|
||||||
|
public tasksTaskIDSubtasksDelete(taskID: number, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<SimpleStatusResponse>;
|
||||||
|
public tasksTaskIDSubtasksDelete(taskID: number, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpResponse<SimpleStatusResponse>>;
|
||||||
|
public tasksTaskIDSubtasksDelete(taskID: number, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<HttpEvent<SimpleStatusResponse>>;
|
||||||
|
public tasksTaskIDSubtasksDelete(taskID: number, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext}): Observable<any> {
|
||||||
|
if (taskID === null || taskID === undefined) {
|
||||||
|
throw new Error('Required parameter taskID was null or undefined when calling tasksTaskIDSubtasksDelete.');
|
||||||
|
}
|
||||||
|
|
||||||
|
let localVarHeaders = this.defaultHeaders;
|
||||||
|
|
||||||
|
let localVarCredential: string | undefined;
|
||||||
|
// authentication (API_TOKEN) required
|
||||||
|
localVarCredential = this.configuration.lookupCredential('API_TOKEN');
|
||||||
|
if (localVarCredential) {
|
||||||
|
localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential);
|
||||||
|
}
|
||||||
|
|
||||||
|
let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;
|
||||||
|
if (localVarHttpHeaderAcceptSelected === undefined) {
|
||||||
|
// to determine the Accept header
|
||||||
|
const httpHeaderAccepts: string[] = [
|
||||||
|
'application/json'
|
||||||
|
];
|
||||||
|
localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
||||||
|
}
|
||||||
|
if (localVarHttpHeaderAcceptSelected !== undefined) {
|
||||||
|
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
|
||||||
|
}
|
||||||
|
|
||||||
|
let localVarHttpContext: HttpContext | undefined = options && options.context;
|
||||||
|
if (localVarHttpContext === undefined) {
|
||||||
|
localVarHttpContext = new HttpContext();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
let responseType_: 'text' | 'json' = 'json';
|
||||||
|
if(localVarHttpHeaderAcceptSelected && localVarHttpHeaderAcceptSelected.startsWith('text')) {
|
||||||
|
responseType_ = 'text';
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.httpClient.delete<SimpleStatusResponse>(`${this.configuration.basePath}/tasks/${encodeURIComponent(String(taskID))}/subtasks`,
|
||||||
|
{
|
||||||
|
context: localVarHttpContext,
|
||||||
|
responseType: <any>responseType_,
|
||||||
|
withCredentials: this.configuration.withCredentials,
|
||||||
|
headers: localVarHeaders,
|
||||||
|
observe: observe,
|
||||||
|
reportProgress: reportProgress
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param taskID internal id of task
|
* @param taskID internal id of task
|
||||||
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
import {Component, Inject, OnInit} from '@angular/core';
|
import {Component, Inject, OnInit} from '@angular/core';
|
||||||
import {TaskEditorData} from "../task-editor/TaskEditorData";
|
import {TaskEditorData} from "../task-editor/TaskEditorData";
|
||||||
import {TaskEntityInfo, TaskgroupService} from "../../../api";
|
import {TaskEntityInfo, TaskgroupService, TaskService} from "../../../api";
|
||||||
import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog";
|
import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog";
|
||||||
import {MatSnackBar} from "@angular/material/snack-bar";
|
import {MatSnackBar} from "@angular/material/snack-bar";
|
||||||
|
|
||||||
export interface ClearTaskDialogData {
|
export interface ClearTaskDialogData {
|
||||||
taskgroupID: number,
|
taskgroupID: number | undefined,
|
||||||
tasks: TaskEntityInfo[]
|
parentTaskID: number | undefined
|
||||||
|
tasks: TaskEntityInfo[],
|
||||||
|
subtasks: boolean
|
||||||
}
|
}
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-clear-task-dialog',
|
selector: 'app-clear-task-dialog',
|
||||||
@ -23,7 +25,8 @@ export class ClearTaskDialogComponent implements OnInit{
|
|||||||
constructor(@Inject(MAT_DIALOG_DATA) public editorData: ClearTaskDialogData,
|
constructor(@Inject(MAT_DIALOG_DATA) public editorData: ClearTaskDialogData,
|
||||||
private taskgroupService: TaskgroupService,
|
private taskgroupService: TaskgroupService,
|
||||||
private dialogRef: MatDialogRef<ClearTaskDialogComponent>,
|
private dialogRef: MatDialogRef<ClearTaskDialogComponent>,
|
||||||
private snackbar: MatSnackBar) {
|
private snackbar: MatSnackBar,
|
||||||
|
private taskService: TaskService) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
@ -48,7 +51,26 @@ export class ClearTaskDialogComponent implements OnInit{
|
|||||||
}
|
}
|
||||||
|
|
||||||
clearTasks() {
|
clearTasks() {
|
||||||
this.taskgroupService.taskgroupsTaskgroupIDClearDelete(this.editorData.taskgroupID).subscribe({
|
if(this.editorData.subtasks) {
|
||||||
|
this.taskService.tasksTaskIDSubtasksDelete(this.editorData.parentTaskID!).subscribe({
|
||||||
|
next: resp => {
|
||||||
|
if(resp.status == "success") {
|
||||||
|
const deletedTasks = this.editorData.tasks;
|
||||||
|
this.dialogRef.close(deletedTasks);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: err => {
|
||||||
|
if(err.status == 403) {
|
||||||
|
this.snackbar.open("No permission", "", {duration: 2000});
|
||||||
|
} else if(err.status == 404) {
|
||||||
|
this.snackbar.open("Not found", "", {duration: 2000});
|
||||||
|
} else {
|
||||||
|
this.snackbar.open("Unexpected error", "", {duration: 2000});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.taskgroupService.taskgroupsTaskgroupIDClearDelete(this.editorData.taskgroupID!).subscribe({
|
||||||
next: resp => {
|
next: resp => {
|
||||||
if(resp.status == "success") {
|
if(resp.status == "success") {
|
||||||
const deletedTasks = this.editorData.tasks;
|
const deletedTasks = this.editorData.tasks;
|
||||||
@ -66,4 +88,6 @@ export class ClearTaskDialogComponent implements OnInit{
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ import {TaskWeeklySeriesCreatorComponent} from "../task-weekly-series-creator/ta
|
|||||||
})
|
})
|
||||||
export class TaskDashboardComponent implements OnChanges{
|
export class TaskDashboardComponent implements OnChanges{
|
||||||
ngOnChanges(): void {
|
ngOnChanges(): void {
|
||||||
if(this.taskgroupID != undefined) {
|
if(this.subTasks.length == 0 && this.taskgroupID != undefined) {
|
||||||
this.fetchTasks()
|
this.fetchTasks()
|
||||||
} else if(this.subTasks.length > 0) {
|
} else if(this.subTasks.length > 0) {
|
||||||
this.datasource.data = this.subTasks;
|
this.datasource.data = this.subTasks;
|
||||||
@ -33,6 +33,7 @@ export class TaskDashboardComponent implements OnChanges{
|
|||||||
|
|
||||||
@Input("taskgroupID") taskgroupID: number | undefined
|
@Input("taskgroupID") taskgroupID: number | undefined
|
||||||
@Input("subTasks") subTasks: TaskEntityInfo[] = []
|
@Input("subTasks") subTasks: TaskEntityInfo[] = []
|
||||||
|
@Input("parentTaskID") parentTaskID: number | undefined
|
||||||
@ViewChild(MatPaginator) paginator: MatPaginator | undefined
|
@ViewChild(MatPaginator) paginator: MatPaginator | undefined
|
||||||
@ViewChild(MatSort) sort: MatSort | undefined
|
@ViewChild(MatSort) sort: MatSort | undefined
|
||||||
|
|
||||||
@ -111,9 +112,11 @@ export class TaskDashboardComponent implements OnChanges{
|
|||||||
}
|
}
|
||||||
|
|
||||||
clearTasks() {
|
clearTasks() {
|
||||||
const clearTaskData: ClearTaskDialogData = {
|
let clearTaskData: ClearTaskDialogData = {
|
||||||
tasks: this.datasource.data,
|
tasks: this.datasource.data,
|
||||||
taskgroupID: this.taskgroupID!
|
taskgroupID: this.taskgroupID,
|
||||||
|
parentTaskID: this.parentTaskID,
|
||||||
|
subtasks: this.subTasks.length > 0
|
||||||
}
|
}
|
||||||
const dialogRef = this.dialog.open(ClearTaskDialogComponent, {data: clearTaskData, width: "600px"});
|
const dialogRef = this.dialog.open(ClearTaskDialogComponent, {data: clearTaskData, width: "600px"});
|
||||||
dialogRef.afterClosed().subscribe(res => {
|
dialogRef.afterClosed().subscribe(res => {
|
||||||
|
@ -44,8 +44,8 @@
|
|||||||
|
|
||||||
<mat-expansion-panel *ngIf="subTasks.length > 0" style="margin-top: 20px" expanded>
|
<mat-expansion-panel *ngIf="subTasks.length > 0" style="margin-top: 20px" expanded>
|
||||||
<mat-expansion-panel-header>Subtasks</mat-expansion-panel-header>
|
<mat-expansion-panel-header>Subtasks</mat-expansion-panel-header>
|
||||||
<div>
|
<div *ngIf="task != undefined">
|
||||||
<app-task-dashboard [subTasks]="subTasks"></app-task-dashboard>
|
<app-task-dashboard [subTasks]="subTasks" [taskgroupID]="taskgroupID" [parentTaskID]="task!.taskID"></app-task-dashboard>
|
||||||
</div>
|
</div>
|
||||||
</mat-expansion-panel>
|
</mat-expansion-panel>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user