Workflow actions for multiple entities
This commit is contained in:
parent
567de98f30
commit
28a6b735f7
@ -14,7 +14,7 @@ import {
|
||||
ViewChildren,
|
||||
} from '@angular/core';
|
||||
import { ListingComponent } from '../listing-component.directive';
|
||||
import { CdkDrag, CdkDragDrop, CdkDragStart, CdkDropList } from '@angular/cdk/drag-drop';
|
||||
import { CdkDragDrop, CdkDragStart, CdkDropList } from '@angular/cdk/drag-drop';
|
||||
import { AutoUnsubscribe, Debounce, Required } from '../../utils';
|
||||
import { LoadingService } from '../../loading';
|
||||
import { IListable } from '../models';
|
||||
@ -26,8 +26,8 @@ export interface WorkflowColumn<T extends IListable, K> {
|
||||
key: K;
|
||||
label: string;
|
||||
color: string;
|
||||
enterFn: (entity: T) => Promise<void> | void;
|
||||
enterPredicate: (entity: T) => boolean;
|
||||
enterFn: (entities: T[]) => Promise<void> | void;
|
||||
enterPredicate: (entities: T[]) => boolean;
|
||||
entities: BehaviorSubject<T[]>;
|
||||
}
|
||||
|
||||
@ -112,9 +112,7 @@ export class WorkflowComponent<T extends IListable, K extends string> extends Au
|
||||
async move(event: CdkDragDrop<T[]>): Promise<void> {
|
||||
if (event.previousContainer !== event.container) {
|
||||
const column = this._getColumnByKey((<unknown>event.container.id) as K);
|
||||
|
||||
// TODO: Improve this
|
||||
await Promise.all(this.draggingEntities$.value.map(entity => column.enterFn(entity)));
|
||||
await column.enterFn(this.draggingEntities$.value);
|
||||
this.listingService.setSelected([]); // TODO: Clear only when moving selected???
|
||||
}
|
||||
}
|
||||
@ -133,8 +131,8 @@ export class WorkflowComponent<T extends IListable, K extends string> extends Au
|
||||
this._setupResizeObserver();
|
||||
}
|
||||
|
||||
canMoveTo(column: WorkflowColumn<T, K>): (item: CdkDrag<T>) => boolean {
|
||||
return (item: CdkDrag<T>) => column.enterPredicate(item.data);
|
||||
canMoveTo(column: WorkflowColumn<T, K>): () => boolean {
|
||||
return () => column.enterPredicate(this.draggingEntities$.value);
|
||||
}
|
||||
|
||||
startDragging(column: WorkflowColumn<T, K>, $event: CdkDragStart): void {
|
||||
@ -148,6 +146,7 @@ export class WorkflowComponent<T extends IListable, K extends string> extends Au
|
||||
this.sourceColumn = column;
|
||||
}
|
||||
|
||||
@Debounce(0)
|
||||
stopDragging(): void {
|
||||
this.draggingEntities$.next([]);
|
||||
this.dragging = false;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user