Fixed calllist by removing the attached data from the tree (fixes #4296)
This commit is contained in:
parent
841d80a35b
commit
17ce91f309
@ -234,7 +234,7 @@ export class ItemRepositoryService extends BaseRepository<ViewItem, Item> {
|
||||
*/
|
||||
public async delete(item: ViewItem): Promise<void> {
|
||||
const restUrl = `/rest/${item.contentObject.collectionString}/${item.contentObject.id}/`;
|
||||
return await this.httpService.delete(restUrl);
|
||||
await this.httpService.delete(restUrl);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -260,7 +260,7 @@ export class ItemRepositoryService extends BaseRepository<ViewItem, Item> {
|
||||
*
|
||||
* @param data The reordered data from the sorting
|
||||
*/
|
||||
public async sortItems(data: OSTreeSortEvent<ViewItem>): Promise<void> {
|
||||
public async sortItems(data: OSTreeSortEvent): Promise<void> {
|
||||
const url = '/rest/agenda/item/sort/';
|
||||
await this.httpService.post(url, data);
|
||||
}
|
||||
|
@ -314,7 +314,7 @@ export class MotionRepositoryService extends BaseRepository<ViewMotion, Motion>
|
||||
*
|
||||
* @param data The reordered data from the sorting
|
||||
*/
|
||||
public async sortMotions(data: OSTreeSortEvent<ViewMotion>): Promise<void> {
|
||||
public async sortMotions(data: OSTreeSortEvent): Promise<void> {
|
||||
const url = '/rest/motions/motion/sort/';
|
||||
await this.httpService.post(url, data);
|
||||
}
|
||||
|
@ -4,11 +4,18 @@ import { Displayable } from 'app/site/base/displayable';
|
||||
import { Identifiable } from 'app/shared/models/base/identifiable';
|
||||
|
||||
/**
|
||||
* A representation of nodes in our tree. Saves the displayed name, the id, the element and children to build a full tree.
|
||||
* A basic representation of a tree node. This node does not stores any data.
|
||||
*/
|
||||
export interface OSTreeNode<T> {
|
||||
export interface OSTreeNodeWithoutItem {
|
||||
name: string;
|
||||
id: number;
|
||||
children?: OSTreeNodeWithoutItem[];
|
||||
}
|
||||
|
||||
/**
|
||||
* A representation of nodes with the item atached.
|
||||
*/
|
||||
export interface OSTreeNode<T> extends OSTreeNodeWithoutItem {
|
||||
item: T;
|
||||
children?: OSTreeNode<T>[];
|
||||
}
|
||||
@ -113,6 +120,25 @@ export class TreeService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes `item` from the tree.
|
||||
*
|
||||
* @param tree The tree with items
|
||||
* @returns The tree without items
|
||||
*/
|
||||
public stripTree<T>(tree: OSTreeNode<T>[]): OSTreeNodeWithoutItem[] {
|
||||
return tree.map(node => {
|
||||
const nodeWithoutItem: OSTreeNodeWithoutItem = {
|
||||
name: node.name,
|
||||
id: node.id
|
||||
};
|
||||
if (node.children) {
|
||||
nodeWithoutItem.children = this.stripTree(node.children);
|
||||
}
|
||||
return nodeWithoutItem;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Traverses items in pre-order givem (implicit) by the weight and parentId.
|
||||
*
|
||||
|
@ -7,16 +7,16 @@ import { Subscription, Observable } from 'rxjs';
|
||||
|
||||
import { Identifiable } from 'app/shared/models/base/identifiable';
|
||||
import { Displayable } from 'app/site/base/displayable';
|
||||
import { OSTreeNode, TreeService } from 'app/core/ui-services/tree.service';
|
||||
import { OSTreeNode, TreeService, OSTreeNodeWithoutItem } from 'app/core/ui-services/tree.service';
|
||||
|
||||
/**
|
||||
* The data representation for the sort event.
|
||||
*/
|
||||
export interface OSTreeSortEvent<T> {
|
||||
export interface OSTreeSortEvent {
|
||||
/**
|
||||
* Gives all nodes to be inserted below the parent_id.
|
||||
*/
|
||||
nodes: OSTreeNode<T>[];
|
||||
nodes: OSTreeNodeWithoutItem[];
|
||||
|
||||
/**
|
||||
* Provides the parent id for the nodes array. Do not provide it, if it's the
|
||||
@ -85,7 +85,7 @@ export class SortingTreeComponent<T extends Identifiable & Displayable> implemen
|
||||
* sorted part of the tree.
|
||||
*/
|
||||
@Output()
|
||||
public readonly sort = new EventEmitter<OSTreeSortEvent<T>>();
|
||||
public readonly sort = new EventEmitter<OSTreeSortEvent>();
|
||||
|
||||
/**
|
||||
* Options for the tree. As a default drag and drop is allowed.
|
||||
@ -159,6 +159,7 @@ export class SortingTreeComponent<T extends Identifiable & Displayable> implemen
|
||||
to.parent.data.children = [];
|
||||
}
|
||||
transferArrayItem(fromArray, to.parent.data.children, from.index, to.index);
|
||||
this.sort.emit({ nodes: to.parent.data.children, parent_id: parentId });
|
||||
const strippedNodes = this.treeService.stripTree(to.parent.data.children);
|
||||
this.sort.emit({ nodes: strippedNodes, parent_id: parentId });
|
||||
}
|
||||
}
|
||||
|
@ -51,7 +51,7 @@ export class AgendaSortComponent extends BaseViewComponent {
|
||||
* @param data The event data. The representation fits the servers requirements, so it can directly
|
||||
* be send to the server via the repository.
|
||||
*/
|
||||
public sort(data: OSTreeSortEvent<ViewItem>): void {
|
||||
public sort(data: OSTreeSortEvent): void {
|
||||
this.agendaRepo.sortItems(data).then(null, this.raiseError);
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,6 @@ import { BaseViewComponent } from '../../../base/base-view';
|
||||
import { MotionRepositoryService } from 'app/core/repositories/motions/motion-repository.service';
|
||||
import { MotionCsvExportService } from '../../services/motion-csv-export.service';
|
||||
import { MotionPdfExportService } from '../../services/motion-pdf-export.service';
|
||||
|
||||
import { ViewMotion } from '../../models/view-motion';
|
||||
import { OSTreeSortEvent } from 'app/shared/components/sorting-tree/sorting-tree.component';
|
||||
|
||||
@ -67,7 +66,7 @@ export class CallListComponent extends BaseViewComponent {
|
||||
* @param data The event data. The representation fits the servers requirements, so it can directly
|
||||
* be send to the server via the repository.
|
||||
*/
|
||||
public sort(data: OSTreeSortEvent<ViewMotion>): void {
|
||||
public sort(data: OSTreeSortEvent): void {
|
||||
this.motionRepo.sortMotions(data).then(null, this.raiseError);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user