Skip to content

Commit bd69d36

Browse files
authored
Merge pull request #24 from Zicrael/dev-branch
2.4.2 version ( fix onAddItem ) + fix event object
2 parents 6b836b9 + 180aed7 commit bd69d36

File tree

4 files changed

+44
-36
lines changed

4 files changed

+44
-36
lines changed

projects/ngx-tree-dnd/package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ngx-tree-dnd",
3-
"version": "2.4.1",
3+
"version": "2.4.2",
44
"repository": {
55
"type": "git",
66
"url": "https://github.com/Zicrael/ngx-tree-dnd"
@@ -22,7 +22,9 @@
2222
"data-tree",
2323
"ngx-tree-dnd",
2424
"ngx-sortable-dnd",
25-
"ngx-sortable-tree"
25+
"ngx-sortable-tree",
26+
"data-tree",
27+
"ngx-tree"
2628
],
2729
"license": "MIT",
2830
"bugs": {

projects/ngx-tree-dnd/src/lib/models/tree-view.model.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,7 @@ export interface TreeConfig {
5151
setFontSize?: number;
5252
setIconSize?: number;
5353
}
54+
55+
export interface FindingResults {
56+
findedItem: TreeModel, itemsList: TreeModel[], parentItem?: TreeModel
57+
}

projects/ngx-tree-dnd/src/lib/ngx-tree-dnd.service.ts

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,17 @@
55
*/
66
import { Injectable } from '@angular/core';
77
import { Subject, BehaviorSubject, Observable } from 'rxjs';
8-
import { TreeModel, TreeConfig } from './models/tree-view.model';
8+
import { TreeModel, TreeConfig, FindingResults } from './models/tree-view.model';
99

1010
@Injectable({
1111
providedIn: 'root'
1212
})
1313
export class NgxTreeService {
1414
treeStorage: TreeModel[] = [];
15-
listOfSelectedElement: TreeModel[];
16-
parentOfSelected: TreeModel;
17-
private selectedElement: TreeModel;
15+
private findingResults: FindingResults;
16+
// listOfSelectedElement: TreeModel[];
17+
// parentOfSelected: TreeModel;
18+
// private selectedElement: TreeModel;
1819
isDragging: TreeModel;
1920
dragEvent: {};
2021
direction: string;
@@ -78,10 +79,12 @@ export class NgxTreeService {
7879
private elementFinder(list, id, parent?) {
7980
for (const item of list ) {
8081
if (item.id === id) {
81-
this.selectedElement = item; // finded element by id
82-
this.listOfSelectedElement = list;
82+
this.findingResults = {
83+
findedItem: item,
84+
itemsList: list
85+
}
8386
if (parent) {
84-
this.parentOfSelected = item;
87+
this.findingResults.parentItem = parent;
8588
}
8689
break;
8790
} else {
@@ -114,13 +117,13 @@ export class NgxTreeService {
114117
},
115118
childrens: []
116119
};
120+
this.elementFinder(this.treeStorage, parent.id);
121+
this.findingResults.findedItem.childrens.push(createObj);
117122
const eventEmit = {
118123
element: createObj,
119-
parentList: this.selectedElement
124+
parent: this.findingResults.findedItem || 'root'
120125
};
121126
this.onAddItem.next(eventEmit);
122-
this.elementFinder(this.treeStorage, parent.id);
123-
this.selectedElement.childrens.push(createObj);
124127
this.clearAction();
125128
}
126129

@@ -132,12 +135,12 @@ export class NgxTreeService {
132135
public deleteItem(id) {
133136
this.elementFinder(this.treeStorage, id);
134137
const eventEmit = {
135-
element: this.selectedElement,
136-
parentList: this.listOfSelectedElement
138+
element: this.findingResults.findedItem,
139+
parent: this.findingResults.parentItem || 'root'
137140
};
138141
this.onRemoveItem.next(eventEmit);
139-
const i = this.listOfSelectedElement.indexOf(this.selectedElement);
140-
this.listOfSelectedElement.splice(i, 1);
142+
const i = this.findingResults.itemsList.indexOf(this.findingResults.findedItem);
143+
this.findingResults.itemsList.splice(i, 1);
141144
this.clearAction();
142145
this.checkTreeLength();
143146
}
@@ -151,8 +154,8 @@ export class NgxTreeService {
151154
this.elementFinder(this.treeStorage, element.id);
152155
// event emit
153156
const eventEmit = {
154-
element: this.selectedElement,
155-
parentList: this.listOfSelectedElement
157+
element: this.findingResults.findedItem,
158+
parent: this.findingResults.parentItem || 'root'
156159
};
157160
this.onStartRenameItem.next(eventEmit);
158161
}
@@ -164,15 +167,15 @@ export class NgxTreeService {
164167
*/
165168
public finishRenameItem(name, id) {
166169
this.elementFinder(this.treeStorage, id);
170+
// code
171+
this.findingResults.findedItem.name = name;
172+
this.findingResults.findedItem.options.edit = false;
167173
// event emit
168174
const eventEmit = {
169-
element: this.selectedElement,
170-
parentList: this.listOfSelectedElement
175+
element: this.findingResults.findedItem,
176+
parent: this.findingResults.parentItem || 'root'
171177
};
172178
this.onFinishRenameItem.next(eventEmit);
173-
// code
174-
this.selectedElement.name = name;
175-
this.selectedElement.options.edit = false;
176179
this.clearAction();
177180
}
178181

@@ -258,12 +261,12 @@ export class NgxTreeService {
258261
} else {
259262
const dropZoneId = parseInt(eventObj.event.target.getAttribute('data-id'), null);
260263
this.elementFinder(this.treeStorage, this.isDragging.id);
261-
const i = this.listOfSelectedElement.indexOf(this.selectedElement);
262-
const copyItem = this.listOfSelectedElement.splice(i, 1)[0];
264+
const i = this.findingResults.itemsList.indexOf(this.findingResults.findedItem);
265+
const copyItem = this.findingResults.itemsList.splice(i, 1)[0];
263266
this.elementFinder(this.treeStorage, dropZoneId);
264-
this.selectedElement.childrens.push(copyItem);
267+
this.findingResults.findedItem.childrens.push(copyItem);
265268
this.sortTree();
266-
eventObj.target = this.selectedElement;
269+
eventObj.target = this.findingResults.findedItem;
267270
this.onDrop.next(eventObj);
268271
}
269272
this.removeDestenationBorders(this.treeStorage);
@@ -281,35 +284,35 @@ export class NgxTreeService {
281284
private changeItemPosition(el, direction) {
282285
setTimeout( () => {
283286
this.elementFinder(this.treeStorage, this.isDragging.id);
284-
const i = this.listOfSelectedElement.indexOf(this.selectedElement);
285-
const copyItem = this.listOfSelectedElement.splice(i, 1)[0];
287+
const i = this.findingResults.itemsList.indexOf(this.findingResults.findedItem);
288+
const copyItem = this.findingResults.itemsList.splice(i, 1)[0];
286289
// end test
287290
const positionTarget = el.options.position;
288291
this.elementFinder(this.treeStorage, el.id);
289292
if (direction === 'up') {
290-
for (const items of this.listOfSelectedElement) {
293+
for (const items of this.findingResults.itemsList) {
291294
if ( items.options.position >= positionTarget ) {
292295
items.options.position = items.options.position + 1;
293296
copyItem.options.position = positionTarget;
294297
}
295298
}
296299
} else {
297-
for (const items of this.listOfSelectedElement) {
300+
for (const items of this.findingResults.itemsList) {
298301
if ( items.options.position <= positionTarget ) {
299302
items.options.position = items.options.position - 1;
300303
}
301304
}
302305
}
303306
copyItem.options.position = positionTarget;
304-
this.listOfSelectedElement.push(copyItem);
307+
this.findingResults.itemsList.push(copyItem);
305308
this.sortTree();
306309
});
307310
}
308311

309312
// get position of item
310313
getItemPosition(item) {
311314
this.elementFinder(this.treeStorage, item.id);
312-
let position = this.listOfSelectedElement.indexOf(this.selectedElement);
315+
let position = this.findingResults.itemsList.indexOf(this.findingResults.findedItem);
313316
return ++position;
314317
}
315318

@@ -341,8 +344,7 @@ export class NgxTreeService {
341344

342345
// clear selectedElement && isDragging from element finder.
343346
private clearAction() {
344-
this.selectedElement = null;
345-
this.listOfSelectedElement = null;
347+
this.findingResults = null;
346348
}
347349

348350
private removeDestenationBorders(data) {

src/styles.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
/* You can add global styles to this file, and also import other style files */
1+
/* You can add global styles to this file, and also import other style files */

0 commit comments

Comments
 (0)