Migrate to new build tools and DF 0.6

This commit is contained in:
Alexander Nozik 2022-07-06 11:11:48 +03:00
parent 86935ce52a
commit 4b1149b99b
No known key found for this signature in database
GPG Key ID: F7FCF2DD25C71357
25 changed files with 77 additions and 43 deletions

View File

@ -3,12 +3,12 @@ plugins {
// id("org.jetbrains.kotlinx.kover") version "0.5.0"
}
val dataforgeVersion by extra("0.5.2")
val dataforgeVersion by extra("0.6.0-dev-10")
val fxVersion by extra("11")
allprojects{
group = "space.kscience"
version = "0.3.0-dev-1"
version = "0.3.0-dev-2"
}
subprojects {
@ -19,6 +19,12 @@ subprojects {
mavenCentral()
maven("https://maven.jzy3d.org/releases")
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>{
kotlinOptions{
freeCompilerArgs = freeCompilerArgs + "-Xcontext-receivers"
}
}
}
ksciencePublish {

View File

@ -2,12 +2,13 @@ package space.kscience.visionforge.gdml.demo
import kotlinx.browser.document
import kotlinx.css.*
import react.dom.render
import react.dom.client.createRoot
import space.kscience.dataforge.context.Context
import space.kscience.gdml.GdmlShowCase
import space.kscience.visionforge.Application
import space.kscience.visionforge.Colors
import space.kscience.visionforge.gdml.toVision
import space.kscience.visionforge.react.render
import space.kscience.visionforge.solid.ambientLight
import space.kscience.visionforge.solid.invoke
import space.kscience.visionforge.solid.three.ThreePlugin
@ -42,7 +43,7 @@ private class GDMLDemoApp : Application {
val element = document.getElementById("application") ?: error("Element with id 'application' not found on page")
render(element) {
createRoot(element).render {
child(GDMLApp) {
val vision = GdmlShowCase.cubes().toVision().apply {
ambientLight {

View File

@ -1,6 +1,6 @@
import kotlinx.browser.document
import kotlinx.css.*
import react.dom.render
import react.dom.client.createRoot
import ringui.SmartTabs
import ringui.Tab
import space.kscience.dataforge.context.Context
@ -10,6 +10,7 @@ import space.kscience.visionforge.Application
import space.kscience.visionforge.Colors
import space.kscience.visionforge.VisionClient
import space.kscience.visionforge.plotly.PlotlyPlugin
import space.kscience.visionforge.react.render
import space.kscience.visionforge.ring.ThreeCanvasWithControls
import space.kscience.visionforge.ring.ThreeWithControlsPlugin
import space.kscience.visionforge.ring.solid
@ -38,7 +39,7 @@ private class JsPlaygroundApp : Application {
val element = document.getElementById("playground") ?: error("Element with id 'playground' not found on page")
render(element) {
createRoot(element).render {
styledDiv {
css {
padding(0.pt)

View File

@ -1,11 +1,12 @@
package ru.mipt.npm.muon.monitor
import kotlinx.browser.document
import react.dom.render
import react.dom.client.createRoot
import space.kscience.dataforge.context.Context
import space.kscience.dataforge.context.fetch
import space.kscience.visionforge.Application
import space.kscience.visionforge.VisionManager
import space.kscience.visionforge.react.render
import space.kscience.visionforge.solid.three.ThreePlugin
import space.kscience.visionforge.startApplication
@ -21,7 +22,7 @@ private class MMDemoApp : Application {
val model = Model(visionManager)
val element = document.getElementById("app") ?: error("Element with id 'app' not found on page")
render(element) {
createRoot(element).render {
child(MMApp) {
attrs {
this.model = model

View File

@ -6,4 +6,4 @@ kotlin.jupyter.add.scanner=false
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx4G
toolsVersion=0.11.4-kotlin-1.6.20
toolsVersion=0.11.7-kotlin-1.7.0

View File

@ -8,4 +8,8 @@ dependencies{
api("org.jetbrains.kotlin-wrappers:kotlin-react-dom")
// implementation(npm("react-select","4.3.0"))
implementation(project(":visionforge-threejs"))
}
rootProject.extensions.configure<org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension> {
versions.webpackCli.version = "4.10.0"
}

View File

@ -7,7 +7,7 @@ import org.w3c.dom.Element
import org.w3c.dom.events.Event
import react.*
import react.dom.attrs
import react.dom.render
import react.dom.client.createRoot
import space.kscience.dataforge.meta.*
import space.kscience.dataforge.meta.descriptors.MetaDescriptor
import space.kscience.dataforge.meta.descriptors.ValueRequirement
@ -235,6 +235,6 @@ public fun Element.configEditor(
default: Meta = config,
descriptor: MetaDescriptor? = null,
key: Any? = null,
): Unit = render(this) {
): Unit = createRoot(this).render {
configEditor(config, default, descriptor, key = key)
}

View File

@ -0,0 +1,10 @@
package space.kscience.visionforge.react
import react.Props
import react.RBuilder
import react.createElement
import react.dom.client.Root
public fun Root.render(block: RBuilder.() -> Unit) {
render(createElement<Props>(block))
}

View File

@ -2,7 +2,7 @@ package space.kscience.visionforge.ring
import kotlinx.coroutines.async
import org.w3c.dom.Element
import react.child
import react.dom.client.createRoot
import space.kscience.dataforge.context.AbstractPlugin
import space.kscience.dataforge.context.Context
import space.kscience.dataforge.context.PluginFactory
@ -12,6 +12,7 @@ import space.kscience.dataforge.names.Name
import space.kscience.dataforge.names.asName
import space.kscience.visionforge.ElementVisionRenderer
import space.kscience.visionforge.Vision
import space.kscience.visionforge.react.render
import space.kscience.visionforge.solid.Solid
import space.kscience.visionforge.solid.three.ThreePlugin
import kotlin.reflect.KClass
@ -25,7 +26,7 @@ public class ThreeWithControlsPlugin : AbstractPlugin(), ElementVisionRenderer {
if (vision is Solid) ElementVisionRenderer.DEFAULT_RATING * 2 else ElementVisionRenderer.ZERO_RATING
override fun render(element: Element, vision: Vision, meta: Meta) {
react.dom.render(element) {
createRoot(element).render {
child(ThreeCanvasWithControls) {
attrs {
this.context = this@ThreeWithControlsPlugin.context
@ -45,6 +46,7 @@ public class ThreeWithControlsPlugin : AbstractPlugin(), ElementVisionRenderer {
public companion object : PluginFactory<ThreeWithControlsPlugin> {
override val tag: PluginTag = PluginTag("vision.threejs.withControls", PluginTag.DATAFORGE_GROUP)
override val type: KClass<ThreeWithControlsPlugin> = ThreeWithControlsPlugin::class
override fun invoke(meta: Meta, context: Context): ThreeWithControlsPlugin = ThreeWithControlsPlugin()
override fun build(context: Context, meta: Meta): ThreeWithControlsPlugin = ThreeWithControlsPlugin()
}
}

View File

@ -2,8 +2,8 @@ package space.kscience.visionforge.ring
import org.w3c.dom.Element
import react.RBuilder
import react.dom.client.createRoot
import react.dom.p
import react.dom.render
import ringui.Island
import ringui.SmartTabs
import ringui.Tab
@ -14,6 +14,7 @@ import space.kscience.visionforge.getStyle
import space.kscience.visionforge.react.flexColumn
import space.kscience.visionforge.react.metaViewer
import space.kscience.visionforge.react.propertyEditor
import space.kscience.visionforge.react.render
import space.kscience.visionforge.solid.SolidReference
import space.kscience.visionforge.styles
@ -72,6 +73,6 @@ public fun RBuilder.ringPropertyEditor(
public fun Element.ringPropertyEditor(
item: Vision,
descriptor: MetaDescriptor? = item.descriptor,
): Unit = render(this) {
): Unit = createRoot(this).render {
ringPropertyEditor(item, descriptor = descriptor)
}

View File

@ -63,7 +63,7 @@ public class VisionManager(meta: Meta) : AbstractPlugin(meta) {
public const val VISION_SERIALIZER_MODULE_TARGET: String = "visionSerializerModule"
override fun invoke(meta: Meta, context: Context): VisionManager = VisionManager(meta)
override fun build(context: Context, meta: Meta): VisionManager = VisionManager(meta)
private val defaultSerialModule: SerializersModule = SerializersModule {
polymorphic(Vision::class) {

View File

@ -203,8 +203,7 @@ public class VisionClient : AbstractPlugin() {
) else super.content(target)
public companion object : PluginFactory<VisionClient> {
override fun invoke(meta: Meta, context: Context): VisionClient = VisionClient()
override fun build(context: Context, meta: Meta): VisionClient = VisionClient()
override val tag: PluginTag = PluginTag(name = "vision.client", group = PluginTag.DATAFORGE_GROUP)

View File

@ -95,8 +95,9 @@ public class FXPlugin(meta: Meta = Meta.EMPTY) : AbstractPlugin(meta) {
public companion object : PluginFactory<FXPlugin> {
override val type: KClass<out FXPlugin> = FXPlugin::class
override val tag: PluginTag = PluginTag("vis.fx", group = PluginTag.DATAFORGE_GROUP)
override fun invoke(meta: Meta, context: Context): FXPlugin =
FXPlugin(meta)
override fun build(context: Context, meta: Meta): FXPlugin = FXPlugin(meta)
}
}

View File

@ -138,7 +138,8 @@ public class FX3DPlugin : AbstractPlugin() {
public companion object : PluginFactory<FX3DPlugin> {
override val tag: PluginTag = PluginTag("vision.fx3D", PluginTag.DATAFORGE_GROUP)
override val type: KClass<FX3DPlugin> = FX3DPlugin::class
override fun invoke(meta: Meta, context: Context): FX3DPlugin = FX3DPlugin()
override fun build(context: Context, meta: Meta): FX3DPlugin = FX3DPlugin()
}
}

View File

@ -47,6 +47,8 @@ public class MarkupPlugin : VisionPlugin(), ElementVisionRenderer {
public companion object : PluginFactory<MarkupPlugin> {
override val tag: PluginTag = PluginTag("vision.markup", PluginTag.DATAFORGE_GROUP)
override val type: KClass<MarkupPlugin> = MarkupPlugin::class
override fun invoke(meta: Meta, context: Context): MarkupPlugin = MarkupPlugin()
override fun build(context: Context, meta: Meta): MarkupPlugin = MarkupPlugin()
}
}

View File

@ -42,6 +42,8 @@ public actual class PlotlyPlugin : VisionPlugin(), ElementVisionRenderer {
public actual companion object : PluginFactory<PlotlyPlugin> {
override val tag: PluginTag = PluginTag("vision.plotly.js", PluginTag.DATAFORGE_GROUP)
override val type: KClass<PlotlyPlugin> = PlotlyPlugin::class
override fun invoke(meta: Meta, context: Context): PlotlyPlugin = PlotlyPlugin()
override fun build(context: Context, meta: Meta): PlotlyPlugin = PlotlyPlugin()
}
}

View File

@ -2,7 +2,6 @@ package space.kscience.visionforge.plotly
import kotlinx.serialization.modules.SerializersModule
import space.kscience.dataforge.context.Context
import space.kscience.dataforge.context.Plugin
import space.kscience.dataforge.context.PluginFactory
import space.kscience.dataforge.context.PluginTag
import space.kscience.dataforge.meta.Meta
@ -18,6 +17,8 @@ public actual class PlotlyPlugin : VisionPlugin() {
public actual companion object : PluginFactory<PlotlyPlugin> {
override val tag: PluginTag = PluginTag("vision.plotly", PluginTag.DATAFORGE_GROUP)
override val type: KClass<PlotlyPlugin> = PlotlyPlugin::class
override fun invoke(meta: Meta, context: Context): PlotlyPlugin = PlotlyPlugin()
override fun build(context: Context, meta: Meta): PlotlyPlugin = PlotlyPlugin()
}
}

View File

@ -24,7 +24,8 @@ public class Solids(meta: Meta) : VisionPlugin(meta) {
public companion object : PluginFactory<Solids> {
override val tag: PluginTag = PluginTag(name = "vision.solid", group = PluginTag.DATAFORGE_GROUP)
override val type: KClass<out Solids> = Solids::class
override fun invoke(meta: Meta, context: Context): Solids = Solids(meta)
override fun build(context: Context, meta: Meta): Solids = Solids(meta)
private fun PolymorphicModuleBuilder<Solid>.solids() {
subclass(SolidGroup.serializer())

View File

@ -2,7 +2,7 @@ plugins {
id("ru.mipt.npm.gradle.mpp")
}
val tablesVersion = "0.1.4"
val tablesVersion = "0.2.0-dev-1"
kscience {
useSerialization()

View File

@ -8,7 +8,6 @@ import space.kscience.dataforge.context.PluginFactory
import space.kscience.dataforge.context.PluginTag
import space.kscience.dataforge.meta.Meta
import space.kscience.visionforge.Vision
import space.kscience.visionforge.VisionManager
import space.kscience.visionforge.VisionPlugin
import kotlin.reflect.KClass
@ -25,6 +24,7 @@ public class TableVisionPlugin : VisionPlugin() {
public companion object : PluginFactory<TableVisionPlugin> {
override val tag: PluginTag = PluginTag("vision.table", PluginTag.DATAFORGE_GROUP)
override val type: KClass<TableVisionPlugin> = TableVisionPlugin::class
override fun invoke(meta: Meta, context: Context): TableVisionPlugin = TableVisionPlugin()
override fun build(context: Context, meta: Meta): TableVisionPlugin = TableVisionPlugin()
}
}

View File

@ -86,7 +86,7 @@ public fun Table<Number>.toVision(): VisionOfTable = toVision { (it ?: Double.Na
@DFExperimental
public inline fun VisionOutput.table(
vararg headers: ColumnHeader<Value>,
block: MutableRowTable<Value>.() -> Unit,
block: RowTableBuilder<Value>.() -> Unit,
): VisionOfTable {
requirePlugin(TableVisionPlugin)
return RowTable(*headers, block = block).toVision()
@ -94,8 +94,8 @@ public inline fun VisionOutput.table(
@DFExperimental
public inline fun VisionOutput.columnTable(
columnSize: UInt,
block: MutableColumnTable<Value>.() -> Unit,
columnSize: Int,
block: ColumnTableBuilder<Value>.() -> Unit,
): VisionOfTable = ColumnTable(columnSize, block).toVision()
@DFExperimental

View File

@ -17,7 +17,7 @@ internal class VisionOfTableTest {
val x by ColumnHeader.typed<Value>()
val y by ColumnHeader.typed<Value>()
val table = ColumnTable<Value>(100U) {
val table = ColumnTable(100) {
x.fill { it.asValue() }
y.values = x.values.map { it?.double?.pow(2)?.asValue() }
}
@ -27,6 +27,6 @@ internal class VisionOfTableTest {
val rows = vision.rowSequence().toList()
assertEquals(50, rows[50][x]?.int)
assertEquals(50, rows[50][x].int)
}
}

View File

@ -7,7 +7,6 @@ import space.kscience.dataforge.context.AbstractPlugin
import space.kscience.dataforge.context.Context
import space.kscience.dataforge.context.PluginFactory
import space.kscience.dataforge.context.PluginTag
import space.kscience.dataforge.meta.DynamicMeta
import space.kscience.dataforge.meta.Meta
import space.kscience.dataforge.meta.toDynamic
import space.kscience.dataforge.names.Name
@ -49,15 +48,15 @@ public class TableVisionJsPlugin : AbstractPlugin(), ElementVisionRenderer {
}
}.toTypedArray()
columns = Array(table.headers.size + 1){
if(it==0){
columns = Array(table.headers.size + 1) {
if (it == 0) {
jso {
field = "@index"
title = "#"
resizable = false
}
} else {
val header = table.headers[it-1]
val header = table.headers[it - 1]
jso {
field = header.name
title = header.properties.title ?: header.name
@ -67,7 +66,7 @@ public class TableVisionJsPlugin : AbstractPlugin(), ElementVisionRenderer {
}
data = table.rows.mapIndexed { index, row->
data = table.rows.mapIndexed { index, row ->
val d = row.meta.toDynamic()
d["@index"] = index
d
@ -91,6 +90,7 @@ public class TableVisionJsPlugin : AbstractPlugin(), ElementVisionRenderer {
public companion object : PluginFactory<TableVisionJsPlugin> {
override val tag: PluginTag = PluginTag("vision.table.js", PluginTag.DATAFORGE_GROUP)
override val type: KClass<TableVisionJsPlugin> = TableVisionJsPlugin::class
override fun invoke(meta: Meta, context: Context): TableVisionJsPlugin = TableVisionJsPlugin()
override fun build(context: Context, meta: Meta): TableVisionJsPlugin = TableVisionJsPlugin()
}
}

View File

@ -4,7 +4,7 @@ package space.kscience.visionforge.solid.three
import info.laht.threekt.core.Object3D
import info.laht.threekt.geometries.TextBufferGeometry
import info.laht.threekt.objects.Mesh
import kotlinext.js.jso
import kotlinx.js.jso
import space.kscience.dataforge.context.logger
import space.kscience.dataforge.context.warn
import space.kscience.visionforge.onPropertyChange

View File

@ -151,7 +151,8 @@ public class ThreePlugin : AbstractPlugin(), ElementVisionRenderer {
public companion object : PluginFactory<ThreePlugin> {
override val tag: PluginTag = PluginTag("vision.threejs", PluginTag.DATAFORGE_GROUP)
override val type: KClass<ThreePlugin> = ThreePlugin::class
override fun invoke(meta: Meta, context: Context): ThreePlugin = ThreePlugin()
override fun build(context: Context, meta: Meta): ThreePlugin = ThreePlugin()
}
}