@@ -3,8 +3,13 @@ import { InputTabs } from "./components/InputTabs";
33import { GraphCanvas } from "./components/GraphCanvas" ;
44import { GraphSettings } from "./components/GraphSettings" ;
55
6+ import { InitScreen } from "./components/InitScreen" ;
7+ import { RandomizerScreen } from "./components/RandomizerScreen" ;
8+
69import { Settings } from "./types" ;
10+ import { SettingsFormat } from "./types" ;
711import { TestCase , TestCases } from "./types" ;
12+ import { Randomizer } from "./types" ;
813
914import { getDefaultGraph } from "./components/utils" ;
1015
@@ -62,6 +67,19 @@ function App() {
6267 localStorage . getItem ( "edgeLabelSeparation" ) !== null
6368 ? Number . parseFloat ( localStorage . getItem ( "edgeLabelSeparation" ) ! )
6469 : 10 ,
70+ penThickness :
71+ localStorage . getItem ( "penThickness" ) !== null
72+ ? Number . parseFloat ( localStorage . getItem ( "penThickness" ) ! )
73+ : 1 ,
74+ penTransparency :
75+ localStorage . getItem ( "penTransparency" ) !== null
76+ ? Number . parseFloat ( localStorage . getItem ( "penTransparency" ) ! )
77+ : 0 ,
78+ eraserRadius :
79+ localStorage . getItem ( "eraserRadius" ) !== null
80+ ? Number . parseFloat ( localStorage . getItem ( "eraserRadius" ) ! )
81+ : 10 ,
82+ testCaseBoundingBoxes : true ,
6583 showComponents : false ,
6684 showBridges : false ,
6785 showMSTs : false ,
@@ -74,17 +92,72 @@ function App() {
7492 : false ,
7593 fixedMode : false ,
7694 multiedgeMode : true ,
77- settingsFormat : "general" ,
95+ settingsFormat :
96+ localStorage . getItem ( "settingsFormat" ) !== null
97+ ? ( localStorage . getItem ( "settingsFormat" ) as SettingsFormat )
98+ : "general" ,
7899 gridMode : false ,
79100 } ) ;
80101
102+ const [ init , setInit ] = useState < boolean > ( false ) ;
103+ const [ randomizer , setRandomizer ] = useState < boolean > ( false ) ;
104+
105+ const [ randomizerConfig , setRandomizerConfig ] = useState < Randomizer > ( {
106+ indexing :
107+ localStorage . getItem ( "randomizerIndexing" ) !== null
108+ ? parseInt ( localStorage . getItem ( "randomizerIndexing" ) ! )
109+ : 0 ,
110+ nodeCount :
111+ localStorage . getItem ( "randomizerNodeCount" ) !== null
112+ ? localStorage . getItem ( "randomizerNodeCount" ) !
113+ : "" ,
114+ edgeCount :
115+ localStorage . getItem ( "randomizerEdgeCount" ) !== null
116+ ? localStorage . getItem ( "randomizerEdgeCount" ) !
117+ : "" ,
118+ connected :
119+ localStorage . getItem ( "randomizerConnected" ) !== null
120+ ? localStorage . getItem ( "randomizerConnected" ) ! == "true"
121+ : false ,
122+ tree :
123+ localStorage . getItem ( "randomizerTree" ) !== null
124+ ? localStorage . getItem ( "randomizerTree" ) ! == "true"
125+ : false ,
126+ hasNodeLabel :
127+ localStorage . getItem ( "randomizerHasNodeLabel" ) !== null
128+ ? localStorage . getItem ( "randomizerHasNodeLabel" ) ! == "true"
129+ : false ,
130+ nodeLabelMin :
131+ localStorage . getItem ( "randomizerNodeLabelMin" ) !== null
132+ ? localStorage . getItem ( "randomizerNodeLabelMin" ) !
133+ : "" ,
134+ nodeLabelMax :
135+ localStorage . getItem ( "randomizerNodeLabelMax" ) !== null
136+ ? localStorage . getItem ( "randomizerNodeLabelMax" ) !
137+ : "" ,
138+ hasEdgeLabel :
139+ localStorage . getItem ( "randomizerHasEdgeLabel" ) !== null
140+ ? localStorage . getItem ( "randomizerHasEdgeLabel" ) ! == "true"
141+ : false ,
142+ edgeLabelMin :
143+ localStorage . getItem ( "randomizerEdgeLabelMin" ) !== null
144+ ? localStorage . getItem ( "randomizerEdgeLabelMin" ) !
145+ : "" ,
146+ edgeLabelMax :
147+ localStorage . getItem ( "randomizerEdgeLabelMax" ) !== null
148+ ? localStorage . getItem ( "randomizerEdgeLabelMax" ) !
149+ : "" ,
150+ } ) ;
151+
81152 return (
82153 < >
83154 < div
84155 className = {
85156 settings . darkMode
86- ? "dark bg-ovr text-text absolute w-full overflow-scroll"
87- : "light bg-ovr text-text absolute w-full overflow-scroll"
157+ ? `dark bg-ovr text-text absolute w-full overflow-scroll
158+ no-scrollbar`
159+ : `light bg-ovr text-text absolute w-full overflow-scroll
160+ no-scrollbar`
88161 }
89162 >
90163 < div
@@ -99,6 +172,13 @@ function App() {
99172 rounded-lg bg-block left-0 top-8 w-100 invisible
100173 group-hover:visible max-h-28 no-scrollbar overflow-scroll"
101174 >
175+ < p > 5 June 2025</ p >
176+ < ul className = "list-disc list-inside" >
177+ < li > Improve annotation experience</ li >
178+ < li > Add randomizer config</ li >
179+ < li > Add "Init" system</ li >
180+ </ ul >
181+ < hr className = "border-dashed border-border" />
102182 < p > 24 Feb 2025</ p >
103183 < ul className = "list-disc list-inside" >
104184 < li > Use SVG icons instead</ li >
@@ -221,6 +301,31 @@ function App() {
221301 </ a >
222302 </ div >
223303
304+ { init ? (
305+ < InitScreen
306+ settings = { settings }
307+ setInit = { setInit }
308+ testCaseNumber = { testCaseNumber }
309+ setTestCaseNumber = { setTestCaseNumber }
310+ setTestCases = { setTestCases }
311+ setTabs = { setTabs }
312+ setCurrentId = { setCurrentId }
313+ />
314+ ) : (
315+ < > </ >
316+ ) }
317+
318+ { randomizer ? (
319+ < RandomizerScreen
320+ settings = { settings }
321+ setRandomizer = { setRandomizer }
322+ randomizerConfig = { randomizerConfig }
323+ setRandomizerConfig = { setRandomizerConfig }
324+ />
325+ ) : (
326+ < > </ >
327+ ) }
328+
224329 < InputTabs
225330 settings = { settings }
226331 tabs = { tabs }
@@ -235,6 +340,9 @@ function App() {
235340 setCurrentId = { setCurrentId }
236341 directed = { directed }
237342 setDirected = { setDirected }
343+ setInit = { setInit }
344+ setRandomizer = { setRandomizer }
345+ randomizerConfig = { randomizerConfig }
238346 />
239347
240348 < div className = "relative z-0" >
0 commit comments