diff --git a/src/assets/left-curve-arrow.svg b/src/assets/left-curve-arrow.svg new file mode 100644 index 00000000..8866736e --- /dev/null +++ b/src/assets/left-curve-arrow.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/src/assets/right-curve-arrow.svg b/src/assets/right-curve-arrow.svg new file mode 100644 index 00000000..ecd0095c --- /dev/null +++ b/src/assets/right-curve-arrow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/context.ts b/src/context.ts index e4b6a1b0..569fc27d 100644 --- a/src/context.ts +++ b/src/context.ts @@ -4,6 +4,7 @@ import { ViewGraph } from "./types/graphs/viewgraph"; import { loadFromLocalStorage, saveToLocalStorage, + urManager, } from "./types/viewportManager"; import { Layer } from "./types/devices/device"; import { IpAddress, IpAddressGenerator } from "./packets/ip"; @@ -40,6 +41,7 @@ export class GlobalContext { this.setNetwork(datagraph, layer); this.setupAutoSave(); saveToLocalStorage(this); + urManager.reset(); } getViewport() { diff --git a/src/graphics/renderables/device_info.ts b/src/graphics/renderables/device_info.ts index ecb426ad..b7a5ad5f 100644 --- a/src/graphics/renderables/device_info.ts +++ b/src/graphics/renderables/device_info.ts @@ -1,8 +1,11 @@ import { Device } from "../../types/devices"; import { DeviceType } from "../../types/devices/device"; +import { CreateDevice } from "../../types/devices/utils"; import { RoutingTableEntry } from "../../types/graphs/datagraph"; import { ViewGraph } from "../../types/graphs/viewgraph"; import { sendPacket } from "../../types/packet"; +import { RemoveDeviceMove } from "../../types/undo-redo"; +import { urManager } from "../../types/viewportManager"; import { createDropdown, createToggleTable, @@ -38,7 +41,22 @@ export class DeviceInfo extends StyledInfo { ), createRightBarButton( "Delete device", - () => this.device.delete(), + () => { + const deviceData: CreateDevice = { + id: this.device.id, + type: this.device.getType(), + x: this.device.x, + y: this.device.y, + ip: this.device.ip.toString(), + mask: this.device.ipMask.toString(), + }; + const move = new RemoveDeviceMove( + deviceData, + this.device.getConnections(), + ); + this.device.delete(); + urManager.push(move); + }, "right-bar-delete-button", ), ); diff --git a/src/index.ejs b/src/index.ejs index 7f229e09..3997d77e 100644 --- a/src/index.ejs +++ b/src/index.ejs @@ -16,6 +16,8 @@