Skip to content

Commit 4014573

Browse files
committed
Add slider control for continuous demo
1 parent dde75bf commit 4014573

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

demo/constructor/src/jvmMain/kotlin/EnrichmentFacility.kt

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,18 @@ import kotlin.time.Instant
4242

4343

4444
private class EnrichmentFacility(
45-
context: Context
45+
context: Context,
4646
) : ContinuousFlowModel(context) {
4747

4848
val mixture = MixtureAlgebra(Kilograms, Mixture.ofFractions(component1 to 1.0, component2 to 1.0))
4949

50-
val production = MutableDeviceState(
51-
mixture.one
52-
)
50+
val productionValue = MutableDeviceState(Numeric<Kilograms>(1.0))
51+
52+
val production = productionValue.map {
53+
with(mixture) {
54+
one * it.value
55+
}
56+
}
5357

5458
val producer = producer(mixture, production)
5559

@@ -58,7 +62,7 @@ private class EnrichmentFacility(
5862
}
5963

6064
private class MyMixtureSeparationRule(
61-
val fractions: Map<MixtureComponent, Map<String, Double>>
65+
val fractions: Map<MixtureComponent, Map<String, Double>>,
6266
) : SeparationRule<Kilograms, Mixture<Kilograms, Numeric<Kilograms>>> {
6367
override val productionKeys: Collection<String> = fractions.flatMap { it.value.keys }.distinct()
6468

@@ -100,7 +104,7 @@ private class EnrichmentFacility(
100104
)
101105
).apply {
102106
connectProducer(mixer)
103-
mixer.connectProducer(feedbackKey, asProducer(feedbackKey).delayed(this, 100.milliseconds))
107+
mixer.connectProducer(feedbackKey, asProducer(feedbackKey).delayed(this, 200.milliseconds))
104108
}
105109

106110
val discard = consumer(mixture, DeviceState(Numeric(2.0))).apply {
@@ -155,15 +159,19 @@ fun main() {
155159
Text("${it[EnrichmentFacility.component1]?.value}, ${it[EnrichmentFacility.component2]?.value}")
156160
}
157161

158-
model.displayState("Feedback", model.mixer.individualConsumation[EnrichmentFacility.feedbackKey]!!) {
162+
model.displayState(
163+
"Feedback",
164+
model.mixer.individualConsumation[EnrichmentFacility.feedbackKey]!!
165+
) {
159166
Text("${it[EnrichmentFacility.component1]?.value}, ${it[EnrichmentFacility.component2]?.value}")
160167
}
161168

162169
model.displayState("Mixer production", model.mixer.production) {
163170
Text("${it[EnrichmentFacility.component1]?.value}, ${it[EnrichmentFacility.component2]?.value}")
164171
}
165172

166-
model.slider<Kilograms>("Consumption", model.consumption, 0f..4f)
173+
model.slider("Production", model.productionValue, 0f..4f)
174+
model.slider("Consumption", model.consumption, 0f..4f)
167175

168176
}
169177

0 commit comments

Comments
 (0)