diff --git a/src/app/components/drawings-listeners/drawing-dragged/drawing-dragged.component.ts b/src/app/components/drawings-listeners/drawing-dragged/drawing-dragged.component.ts
index 14dccf64..2050a031 100644
--- a/src/app/components/drawings-listeners/drawing-dragged/drawing-dragged.component.ts
+++ b/src/app/components/drawings-listeners/drawing-dragged/drawing-dragged.component.ts
@@ -7,6 +7,7 @@ import { DraggedDataEvent } from '../../../cartography/events/event-source';
import { MapDrawing } from '../../../cartography/models/map/map-drawing';
import { Drawing } from '../../../cartography/models/drawing';
import { DrawingsEventSource } from '../../../cartography/events/drawings-event-source';
+import { Project } from '../../../models/project';
@Component({
selector: 'app-drawing-dragged',
@@ -15,6 +16,7 @@ import { DrawingsEventSource } from '../../../cartography/events/drawings-event-
})
export class DrawingDraggedComponent implements OnInit, OnDestroy {
@Input() server: Server;
+ @Input() project: Project;
private drawingDragged: Subscription;
constructor(
@@ -33,7 +35,7 @@ export class DrawingDraggedComponent implements OnInit, OnDestroy {
drawing.y += draggedEvent.dy;
this.drawingService
- .updatePosition(this.server, drawing, drawing.x, drawing.y)
+ .updatePosition(this.server, this.project, drawing, drawing.x, drawing.y)
.subscribe((serverDrawing: Drawing) => {
this.drawingsDataSource.update(serverDrawing);
});
diff --git a/src/app/components/drawings-listeners/node-dragged/node-dragged.component.ts b/src/app/components/drawings-listeners/node-dragged/node-dragged.component.ts
index 8c976075..695c46c7 100644
--- a/src/app/components/drawings-listeners/node-dragged/node-dragged.component.ts
+++ b/src/app/components/drawings-listeners/node-dragged/node-dragged.component.ts
@@ -7,6 +7,7 @@ import { Server } from '../../../models/server';
import { NodesEventSource } from '../../../cartography/events/nodes-event-source';
import { MapNode } from '../../../cartography/models/map/map-node';
import { Subscription } from 'rxjs';
+import { Project } from '../../../models/project';
@Component({
selector: 'app-node-dragged',
@@ -15,6 +16,7 @@ import { Subscription } from 'rxjs';
})
export class NodeDraggedComponent implements OnInit, OnDestroy {
@Input() server: Server;
+ @Input() project: Project
private nodeDragged: Subscription;
constructor(
@@ -32,7 +34,7 @@ export class NodeDraggedComponent implements OnInit, OnDestroy {
node.x += draggedEvent.dx;
node.y += draggedEvent.dy;
- this.nodeService.updatePosition(this.server, node, node.x, node.y).subscribe((serverNode: Node) => {
+ this.nodeService.updatePosition(this.server, this.project, node, node.x, node.y).subscribe((serverNode: Node) => {
this.nodesDataSource.update(serverNode);
});
}
diff --git a/src/app/components/project-map/project-map.component.html b/src/app/components/project-map/project-map.component.html
index 5db22022..9ef53af4 100644
--- a/src/app/components/project-map/project-map.component.html
+++ b/src/app/components/project-map/project-map.component.html
@@ -158,11 +158,11 @@
-
+
-
+
diff --git a/src/app/services/drawing.service.ts b/src/app/services/drawing.service.ts
index 5542fbd9..cb440fd9 100644
--- a/src/app/services/drawing.service.ts
+++ b/src/app/services/drawing.service.ts
@@ -5,6 +5,7 @@ import { Observable } from 'rxjs';
import 'rxjs/add/operator/map';
import { Server } from '../models/server';
import { HttpServer } from './http-server.service';
+import { Project } from '../models/project';
@Injectable()
export class DrawingService {
@@ -29,10 +30,17 @@ export class DrawingService {
});
}
- updatePosition(server: Server, drawing: Drawing, x: number, y: number): Observable {
+ updatePosition(server: Server, project: Project, drawing: Drawing, x: number, y: number): Observable {
+ let xPosition: number = Math.round(x);
+ let yPosition: number = Math.round(y);
+
+ if (project.snap_to_grid) {
+
+ }
+
return this.httpServer.put(server, `/projects/${drawing.project_id}/drawings/${drawing.drawing_id}`, {
- x: Math.round(x),
- y: Math.round(y)
+ x: xPosition,
+ y: yPosition
});
}
diff --git a/src/app/services/node.service.ts b/src/app/services/node.service.ts
index 8de3b672..8808f03a 100644
--- a/src/app/services/node.service.ts
+++ b/src/app/services/node.service.ts
@@ -53,10 +53,21 @@ export class NodeService {
});
}
- updatePosition(server: Server, node: Node, x: number, y: number): Observable {
+ updatePosition(server: Server, project: Project, node: Node, x: number, y: number): Observable {
+ let xPosition: number = Math.round(x);
+ let yPosition: number = Math.round(y);
+
+ if (project.snap_to_grid) {
+ xPosition = Math.round(xPosition / project.grid_size) * project.grid_size;
+ yPosition = Math.round(yPosition / project.grid_size) * project.grid_size;
+
+ xPosition = Math.round(xPosition - node.width/2);
+ yPosition = Math.round(yPosition - node.height/2);
+ }
+
return this.httpServer.put(server, `/projects/${node.project_id}/nodes/${node.node_id}`, {
- x: Math.round(x),
- y: Math.round(y)
+ x: xPosition,
+ y: yPosition
});
}