From 0e620b25e2454a190789970962b21b666f4f293e Mon Sep 17 00:00:00 2001 From: Igor Dunaev Date: Sat, 9 Dec 2023 22:34:43 +0300 Subject: [PATCH] Parts about clearing and selection --- src/jsMain/kotlin/Display.kt | 25 +++++++++++++++++++++---- src/jsMain/kotlin/SolidGenerators.kt | 6 +++--- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/jsMain/kotlin/Display.kt b/src/jsMain/kotlin/Display.kt index 4c799cb..f0b839e 100644 --- a/src/jsMain/kotlin/Display.kt +++ b/src/jsMain/kotlin/Display.kt @@ -1,13 +1,10 @@ import web.cssom.* import emotion.react.Global -import react.FC -import react.Props import emotion.react.css import emotion.react.styles +import react.* import react.dom.html.ReactHTML.div import react.dom.html.ReactHTML.input -import react.useEffect -import react.useState import space.kscience.dataforge.context.Context import space.kscience.dataforge.names.parseAsName import space.kscience.visionforge.Colors @@ -71,11 +68,17 @@ val EventDisplay = FC { eventData?.let { containedVision.setChild(EVENTS_NAME, generateEvents(it)) } + if (eventData == null) { + containedVision.setChild(EVENTS_NAME, null) + } } useEffect(geometryData) { geometryData?.let { containedVision.setChild(GEOMETRY_NAME, generateGeometry(it)) } + if (geometryData == null) { + containedVision.setChild(GEOMETRY_NAME, null) + } } div { @@ -117,6 +120,20 @@ val EventDisplay = FC { geometryData = 4f + 2f * Random.nextFloat() } } + input { + css { + margin = 5.px + padding = 5.px + backgroundColor = NamedColor.lightcoral + color = NamedColor.white + } + type = InputType.button + value = "Clear Scene" + onClick = { + geometryData = null + eventData = null + } + } } div { css { diff --git a/src/jsMain/kotlin/SolidGenerators.kt b/src/jsMain/kotlin/SolidGenerators.kt index e4fd1b4..69c0378 100644 --- a/src/jsMain/kotlin/SolidGenerators.kt +++ b/src/jsMain/kotlin/SolidGenerators.kt @@ -6,7 +6,7 @@ fun generateEvents(radius: Float): SolidGroup { val count = Random.nextInt(10, 20) return SolidGroup { repeat(count) { - sphere(radius) { + sphere(radius, it.toString()) { x = 5.0 * (Random.nextFloat() - 0.5) y = 2.0 * (Random.nextFloat() - 0.5) z = 2.0 * (Random.nextFloat() - 0.5) @@ -18,13 +18,13 @@ fun generateEvents(radius: Float): SolidGroup { fun generateGeometry(distance: Float): SolidGroup { return SolidGroup { - box(10, 3, 3) { + box(10, 3, 3, "Magnet1") { x = 0.0 y = -distance z = 0.0 color(Colors.gray) } - box(10, 3, 3) { + box(10, 3, 3, "Magnet2") { x = 0.0 y = distance z = 0.0