11import { Application , Assets } from "pixi.js" ;
22
3- import {
4- AddDevice ,
5- loadFromFile ,
6- saveToFile ,
7- urManager ,
8- } from "./types/viewportManager" ;
3+ import { loadFromFile , saveToFile , urManager } from "./types/viewportManager" ;
94import { DataGraph } from "./types/graphs/datagraph" ;
105import { Packet } from "./types/packet" ;
11- import { DeviceType } from "./types/devices/device" ;
126import { LeftBar } from "./graphics/left_bar" ;
137import { RightBar } from "./graphics/right_bar" ;
148import { Viewport } from "./graphics/viewport" ;
@@ -23,24 +17,29 @@ import PlaySvg from "./assets/play-icon.svg";
2317import PauseSvg from "./assets/pause-icon.svg" ;
2418import UndoSvg from "./assets/left-curve-arrow.svg" ;
2519import RedoSvg from "./assets/right-curve-arrow.svg" ;
26- import { layerToName } from "./types/devices/utils" ;
20+ import { layerToName } from "./types/devices/layer" ;
21+
22+ const assets = [ RouterSvg , ComputerSvg , PlaySvg , PauseSvg , UndoSvg , RedoSvg ] ;
23+
24+ async function loadAssets ( otherPromises : Promise < void > [ ] ) {
25+ await Promise . all ( [ ...otherPromises , ...assets . map ( ( as ) => Assets . load ( as ) ) ] ) ;
26+ }
2727
2828// IIFE to avoid errors
2929( async ( ) => {
3030 // Initialization
3131 const app = new Application ( ) ;
32- await app . init ( {
32+ const appInitPromise = app . init ( {
3333 width : window . innerWidth ,
3434 height : window . innerHeight ,
3535 resolution : window . devicePixelRatio || 1 ,
3636 autoDensity : true ,
3737 antialias : true ,
3838 } ) ;
39+ await loadAssets ( [ appInitPromise ] ) ;
3940
4041 const canvasPlaceholder = document . getElementById ( "canvas" ) ;
4142 canvasPlaceholder . replaceWith ( app . canvas ) ;
42- await Assets . load ( RouterSvg ) ;
43- await Assets . load ( ComputerSvg ) ;
4443
4544 // Background container initialization
4645 const viewport = new Viewport ( app . renderer . events ) ;
@@ -56,38 +55,12 @@ import { layerToName } from "./types/devices/utils";
5655
5756 layerSelect . value = layerToName ( ctx . getCurrentLayer ( ) ) ;
5857
59- // Left bar logic
60- const leftBar = LeftBar . getFrom ( document ) ;
58+ // Initialize RightBar
6159 RightBar . getInstance ( ) ;
6260
63- const addRouterButton = ( ) =>
64- leftBar . addButton (
65- RouterSvg ,
66- ( ) => AddDevice ( ctx , DeviceType . Router ) ,
67- "Add Router" ,
68- ) ;
69-
70- const addHostButton = ( ) =>
71- leftBar . addButton (
72- ComputerSvg ,
73- ( ) => AddDevice ( ctx , DeviceType . Host ) ,
74- "Add Host" ,
75- ) ;
76-
77- function setButtonsByLayer ( layer : string ) {
78- leftBar . clear ( ) ;
79-
80- const buttonConfig : Record < string , ( ( ) => void ) [ ] > = {
81- application : [ addHostButton ] ,
82- transport : [ addHostButton ] ,
83- network : [ addRouterButton , addHostButton ] ,
84- link : [ addRouterButton , addHostButton ] ,
85- } ;
86-
87- buttonConfig [ layer ] ?. forEach ( ( addButton ) => addButton ( ) ) ;
88- }
89-
90- setButtonsByLayer ( layerSelect . value ) ;
61+ // Left bar logic
62+ const leftBar = LeftBar . getFrom ( document , ctx ) ;
63+ leftBar . setButtonsByLayer ( layerSelect . value ) ;
9164
9265 // Ticker logic
9366 // app.ticker.add(() => { });
@@ -168,22 +141,17 @@ import { layerToName } from "./types/devices/utils";
168141
169142 // Add keyboard shortcuts for Undo (Ctrl+Z) and Redo (Ctrl+Y)
170143 document . addEventListener ( "keydown" , ( event ) => {
171- if ( ! event . ctrlKey ) {
172- return ;
173- }
174- switch ( event . key ) {
175- case "Z" : // Ctrl+Shift+Z for Redo
176- event . preventDefault ( ) ; // Prevent default browser action (like undo in text inputs)
177- triggerRedo ( ) ;
178- break ;
179- case "z" : // Ctrl+Z for Undo
180- event . preventDefault ( ) ; // Prevent default browser action (like undo in text inputs)
181- triggerUndo ( ) ;
182- break ;
183- case "y" : // Ctrl+Y for Redo
184- event . preventDefault ( ) ; // Prevent default browser action
185- triggerRedo ( ) ;
186- break ;
144+ if ( event . ctrlKey ) {
145+ switch ( event . key ) {
146+ case "z" : // Ctrl+Z for Undo
147+ event . preventDefault ( ) ; // Prevent default browser action (like undo in text inputs)
148+ triggerUndo ( ) ;
149+ break ;
150+ case "y" : // Ctrl+Y for Redo
151+ event . preventDefault ( ) ; // Prevent default browser action
152+ triggerRedo ( ) ;
153+ break ;
154+ }
187155 }
188156 } ) ;
189157
@@ -223,7 +191,7 @@ import { layerToName } from "./types/devices/utils";
223191 if ( selectedLayer ) {
224192 ctx . changeViewGraph ( selectedLayer ) ;
225193 // LeftBar is reset
226- setButtonsByLayer ( selectedLayer ) ;
194+ leftBar . setButtonsByLayer ( selectedLayer ) ;
227195 }
228196 } ;
229197
0 commit comments