Fix plugin resolution. Remove Global.visionManager
This commit is contained in:
@@ -2,14 +2,14 @@ import org.jetbrains.compose.web.css.*
|
||||
import org.jetbrains.compose.web.dom.Div
|
||||
import org.jetbrains.compose.web.renderComposable
|
||||
import space.kscience.dataforge.context.Context
|
||||
import space.kscience.plotly.PlotlyJSPlugin
|
||||
import space.kscience.plotly.PlotlyJsPlugin
|
||||
import space.kscience.plotly.models.Trace
|
||||
import space.kscience.plotly.models.scatter
|
||||
import space.kscience.visionforge.Colors
|
||||
import space.kscience.visionforge.html.Tabs
|
||||
import space.kscience.visionforge.html.VisionForgeStyles
|
||||
import space.kscience.visionforge.html.startApplication
|
||||
import space.kscience.visionforge.markup.MarkupPlugin
|
||||
import space.kscience.visionforge.markup.MarkupJsPlugin
|
||||
import space.kscience.visionforge.solid.*
|
||||
import space.kscience.visionforge.solid.three.ThreePlugin
|
||||
import space.kscience.visionforge.solid.three.compose.ThreeView
|
||||
@@ -25,8 +25,8 @@ fun Trace.appendXYLatest(x: Number, y: Number, history: Int = 400, xErr: Number?
|
||||
public fun main() {
|
||||
val playgroundContext = Context {
|
||||
plugin(ThreePlugin)
|
||||
plugin(PlotlyJSPlugin)
|
||||
plugin(MarkupPlugin)
|
||||
plugin(PlotlyJsPlugin)
|
||||
plugin(MarkupJsPlugin)
|
||||
}
|
||||
startApplication { document ->
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import space.kscience.dataforge.misc.DFExperimental
|
||||
import space.kscience.plotly.PlotlyJSPlugin
|
||||
import space.kscience.plotly.PlotlyJsPlugin
|
||||
import space.kscience.visionforge.html.runVisionClient
|
||||
import space.kscience.visionforge.jupyter.VFNotebookClient
|
||||
import space.kscience.visionforge.markup.MarkupPlugin
|
||||
import space.kscience.visionforge.markup.MarkupJsPlugin
|
||||
import space.kscience.visionforge.solid.three.ThreePlugin
|
||||
import space.kscience.visionforge.tables.TableVisionJsPlugin
|
||||
|
||||
@DFExperimental
|
||||
fun main() = runVisionClient {
|
||||
plugin(ThreePlugin)
|
||||
plugin(PlotlyJSPlugin)
|
||||
plugin(MarkupPlugin)
|
||||
plugin(PlotlyJsPlugin)
|
||||
plugin(MarkupJsPlugin)
|
||||
plugin(TableVisionJsPlugin)
|
||||
plugin(VFNotebookClient)
|
||||
}
|
||||
@@ -5,7 +5,6 @@ import io.ktor.server.engine.embeddedServer
|
||||
import io.ktor.server.http.content.staticResources
|
||||
import io.ktor.server.routing.routing
|
||||
import space.kscience.dataforge.context.Context
|
||||
import space.kscience.dataforge.context.Global
|
||||
import space.kscience.plotly.PlotlyPlugin
|
||||
import space.kscience.visionforge.html.*
|
||||
import space.kscience.visionforge.markup.MarkupPlugin
|
||||
@@ -19,6 +18,13 @@ import space.kscience.visionforge.visionManager
|
||||
import java.awt.Desktop
|
||||
import java.nio.file.Path
|
||||
|
||||
val context = Context("playground") {
|
||||
plugin(Solids)
|
||||
plugin(PlotlyPlugin)
|
||||
plugin(MarkupPlugin)
|
||||
plugin(TableVisionPlugin)
|
||||
}
|
||||
|
||||
|
||||
public fun makeVisionFile(
|
||||
path: Path? = null,
|
||||
@@ -27,7 +33,7 @@ public fun makeVisionFile(
|
||||
show: Boolean = true,
|
||||
content: HtmlVisionFragment,
|
||||
): Unit {
|
||||
val actualPath = VisionPage(Global.visionManager, content = content).makeFile(path) { actualPath ->
|
||||
val actualPath = VisionPage(context.visionManager, content = content).makeFile(path) { actualPath ->
|
||||
mapOf(
|
||||
"title" to VisionPage.title(title),
|
||||
"playground" to VisionPage.importScriptHeader(
|
||||
@@ -46,13 +52,6 @@ public suspend fun serve(
|
||||
routeConfiguration: VisionRoute.() -> Unit = {},
|
||||
content: HtmlVisionFragment,
|
||||
) {
|
||||
val context = Context("playground") {
|
||||
plugin(Solids)
|
||||
plugin(PlotlyPlugin)
|
||||
plugin(MarkupPlugin)
|
||||
plugin(TableVisionPlugin)
|
||||
}
|
||||
|
||||
val server = embeddedServer(CIO, port = 7779) {
|
||||
routing {
|
||||
staticResources("", null, null)
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
package ru.mipt.npm.sat
|
||||
|
||||
import space.kscience.dataforge.context.Context
|
||||
import space.kscience.dataforge.context.request
|
||||
import space.kscience.dataforge.misc.DFExperimental
|
||||
import space.kscience.visionforge.html.ResourceLocation
|
||||
import space.kscience.visionforge.solid.box
|
||||
import space.kscience.visionforge.solid.invoke
|
||||
import space.kscience.visionforge.solid.material
|
||||
import space.kscience.visionforge.solid.solid
|
||||
import space.kscience.visionforge.solid.*
|
||||
import space.kscience.visionforge.three.makeThreeJsFile
|
||||
|
||||
val context = Context("Sat-server") {
|
||||
plugin(Solids)
|
||||
}
|
||||
|
||||
|
||||
@OptIn(DFExperimental::class)
|
||||
fun main() = makeThreeJsFile(resourceLocation = ResourceLocation.SYSTEM) {
|
||||
vision ("canvas") {
|
||||
fun main() = context.request(Solids).makeThreeJsFile(resourceLocation = ResourceLocation.SYSTEM) {
|
||||
vision("canvas") {
|
||||
solid {
|
||||
box(100, 100, 100)
|
||||
material {
|
||||
|
||||
@@ -28,11 +28,13 @@ public object Plotly : ContextAware {
|
||||
"x", "y", "z", "text", "hovertext", "close", "high", "low", "open", "locations", "lon", "lat", "ids"
|
||||
)
|
||||
|
||||
override val context: Context = Context("Plotly") {
|
||||
plugin(PlotlyPlugin)
|
||||
override val context: Context by lazy {
|
||||
Context("Plotly") {
|
||||
plugin(PlotlyPlugin)
|
||||
}
|
||||
}
|
||||
|
||||
public val plugin: PlotlyPlugin = context.request(PlotlyPlugin)
|
||||
public val plugin: PlotlyPlugin by lazy { context.request(PlotlyPlugin) }
|
||||
|
||||
public inline fun plot(block: Plot.() -> Unit): Plot = Plot().apply(block)
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import space.kscience.dataforge.context.Context
|
||||
import space.kscience.dataforge.context.PluginFactory
|
||||
import space.kscience.dataforge.context.PluginTag
|
||||
import space.kscience.dataforge.meta.Meta
|
||||
import space.kscience.plotly.models.Trace
|
||||
import space.kscience.visionforge.Vision
|
||||
import space.kscience.visionforge.VisionPlugin
|
||||
|
||||
@@ -27,5 +28,6 @@ public class PlotlyPlugin : VisionPlugin() {
|
||||
internal val plotlySerializersModule = SerializersModule {
|
||||
polymorphic(Vision::class) {
|
||||
subclass(Plot.serializer())
|
||||
subclass(Trace.serializer())
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,7 @@ import space.kscience.visionforge.VisionPlugin
|
||||
import space.kscience.visionforge.html.ElementVisionRenderer
|
||||
import space.kscience.visionforge.html.JsVisionClient
|
||||
|
||||
public class PlotlyJSPlugin : VisionPlugin(), ElementVisionRenderer {
|
||||
public class PlotlyJsPlugin : VisionPlugin(), ElementVisionRenderer {
|
||||
public val plotly: PlotlyPlugin by require(PlotlyPlugin)
|
||||
public val visionClient: JsVisionClient by require(JsVisionClient)
|
||||
|
||||
@@ -39,10 +39,10 @@ public class PlotlyJSPlugin : VisionPlugin(), ElementVisionRenderer {
|
||||
else -> super.content(target)
|
||||
}
|
||||
|
||||
public companion object : PluginFactory<PlotlyJSPlugin> {
|
||||
public companion object : PluginFactory<PlotlyJsPlugin> {
|
||||
override val tag: PluginTag = PluginTag("vision.plotly.js", PluginTag.DATAFORGE_GROUP)
|
||||
|
||||
override fun build(context: Context, meta: Meta): PlotlyJSPlugin = PlotlyJSPlugin()
|
||||
override fun build(context: Context, meta: Meta): PlotlyJsPlugin = PlotlyJsPlugin()
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package space.kscience.visionforge.plotly
|
||||
|
||||
import space.kscience.dataforge.misc.DFExperimental
|
||||
import space.kscience.plotly.PlotlyJSPlugin
|
||||
import space.kscience.plotly.PlotlyJsPlugin
|
||||
import space.kscience.visionforge.html.runVisionClient
|
||||
|
||||
|
||||
@DFExperimental
|
||||
public fun main(): Unit = runVisionClient {
|
||||
plugin(PlotlyJSPlugin)
|
||||
plugin(PlotlyJsPlugin)
|
||||
}
|
||||
@@ -4,8 +4,6 @@ import kotlinx.html.body
|
||||
import kotlinx.html.head
|
||||
import kotlinx.html.meta
|
||||
import kotlinx.html.stream.createHTML
|
||||
import space.kscience.dataforge.context.Global
|
||||
import space.kscience.visionforge.visionManager
|
||||
import java.awt.Desktop
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Path
|
||||
@@ -23,7 +21,7 @@ public fun VisionPage.makeString(additionalHeaders: Map<String, HtmlFragment> =
|
||||
}
|
||||
}
|
||||
body {
|
||||
visionFragment(Global.visionManager, fragment = content)
|
||||
visionFragment(visionManager, fragment = content)
|
||||
}
|
||||
}.finalize()
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
package space.kscience.visionforge.gdml.jupyter
|
||||
|
||||
import space.kscience.plotly.PlotlyJSPlugin
|
||||
import space.kscience.plotly.PlotlyJsPlugin
|
||||
import space.kscience.visionforge.html.runVisionClient
|
||||
import space.kscience.visionforge.jupyter.VFNotebookClient
|
||||
import space.kscience.visionforge.markup.MarkupPlugin
|
||||
import space.kscience.visionforge.markup.MarkupJsPlugin
|
||||
import space.kscience.visionforge.solid.three.ThreePlugin
|
||||
import space.kscience.visionforge.tables.TableVisionJsPlugin
|
||||
|
||||
public fun main(): Unit = runVisionClient {
|
||||
plugin(ThreePlugin)
|
||||
plugin(PlotlyJSPlugin)
|
||||
plugin(MarkupPlugin)
|
||||
plugin(PlotlyJsPlugin)
|
||||
plugin(MarkupJsPlugin)
|
||||
plugin(TableVisionJsPlugin)
|
||||
plugin(VFNotebookClient)
|
||||
}
|
||||
|
||||
@@ -7,14 +7,15 @@ import space.kscience.dataforge.context.PluginTag
|
||||
import space.kscience.dataforge.meta.Meta
|
||||
import space.kscience.visionforge.VisionPlugin
|
||||
|
||||
public expect class MarkupPlugin: VisionPlugin{
|
||||
public class MarkupPlugin : VisionPlugin() {
|
||||
override val visionSerializersModule: SerializersModule get() = markupSerializersModule
|
||||
|
||||
override val tag: PluginTag
|
||||
override val visionSerializersModule: SerializersModule
|
||||
override val tag: PluginTag get() = Companion.tag
|
||||
|
||||
public companion object : PluginFactory<MarkupPlugin>{
|
||||
override val tag: PluginTag
|
||||
public companion object : PluginFactory<MarkupPlugin> {
|
||||
override val tag: PluginTag = PluginTag("vision.markup", PluginTag.DATAFORGE_GROUP)
|
||||
|
||||
override fun build(context: Context, meta: Meta): MarkupPlugin = MarkupPlugin()
|
||||
|
||||
override fun build(context: Context, meta: Meta): MarkupPlugin
|
||||
}
|
||||
}
|
||||
@@ -21,10 +21,12 @@ import space.kscience.visionforge.markup.VisionOfMarkup.Companion.COMMONMARK_FOR
|
||||
import space.kscience.visionforge.markup.VisionOfMarkup.Companion.GFM_FORMAT
|
||||
import space.kscience.visionforge.useProperty
|
||||
|
||||
public actual class MarkupPlugin : VisionPlugin(), ElementVisionRenderer {
|
||||
public class MarkupJsPlugin : VisionPlugin(), ElementVisionRenderer {
|
||||
public val markupPlugin: MarkupPlugin by require(MarkupPlugin)
|
||||
public val visionClient: JsVisionClient by require(JsVisionClient)
|
||||
actual override val tag: PluginTag get() = Companion.tag
|
||||
actual override val visionSerializersModule: SerializersModule get() = markupSerializersModule
|
||||
|
||||
override val tag: PluginTag get() = Companion.tag
|
||||
override val visionSerializersModule: SerializersModule get() = markupSerializersModule
|
||||
|
||||
override fun rateVision(vision: Vision): Int = when (vision) {
|
||||
is VisionOfMarkup -> ElementVisionRenderer.DEFAULT_RATING
|
||||
@@ -56,10 +58,10 @@ public actual class MarkupPlugin : VisionPlugin(), ElementVisionRenderer {
|
||||
else -> super.content(target)
|
||||
}
|
||||
|
||||
public actual companion object : PluginFactory<MarkupPlugin> {
|
||||
actual override val tag: PluginTag = PluginTag("vision.markup.js", PluginTag.DATAFORGE_GROUP)
|
||||
public companion object : PluginFactory<MarkupPlugin> {
|
||||
override val tag: PluginTag = PluginTag("vision.markup.js", PluginTag.DATAFORGE_GROUP)
|
||||
|
||||
actual override fun build(context: Context, meta: Meta): MarkupPlugin = MarkupPlugin()
|
||||
override fun build(context: Context, meta: Meta): MarkupPlugin = MarkupPlugin()
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
package space.kscience.visionforge.markup
|
||||
|
||||
import kotlinx.serialization.modules.SerializersModule
|
||||
import org.intellij.lang.annotations.Language
|
||||
import space.kscience.dataforge.context.Context
|
||||
import space.kscience.dataforge.context.PluginFactory
|
||||
import space.kscience.dataforge.context.PluginTag
|
||||
import space.kscience.dataforge.meta.Meta
|
||||
import space.kscience.visionforge.VisionPlugin
|
||||
|
||||
public actual class MarkupPlugin : VisionPlugin() {
|
||||
actual override val visionSerializersModule: SerializersModule get() = markupSerializersModule
|
||||
|
||||
actual override val tag: PluginTag get() = Companion.tag
|
||||
|
||||
public actual companion object : PluginFactory<MarkupPlugin> {
|
||||
actual override val tag: PluginTag = PluginTag("vision.markup.jvm", PluginTag.DATAFORGE_GROUP)
|
||||
|
||||
actual override fun build(context: Context, meta: Meta): MarkupPlugin = MarkupPlugin()
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public fun VisionOfMarkup.content(@Language("markdown") text: String) {
|
||||
content = text
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package space.kscience.visionforge.markup
|
||||
|
||||
import org.intellij.lang.annotations.Language
|
||||
|
||||
public fun VisionOfMarkup.content(@Language("markdown") text: String) {
|
||||
content = text
|
||||
}
|
||||
@@ -1,9 +1,8 @@
|
||||
package space.kscience.visionforge.three
|
||||
|
||||
import space.kscience.dataforge.context.Global
|
||||
import space.kscience.dataforge.misc.DFExperimental
|
||||
import space.kscience.visionforge.html.*
|
||||
import space.kscience.visionforge.visionManager
|
||||
import space.kscience.visionforge.solid.Solids
|
||||
import java.awt.Desktop
|
||||
import java.nio.file.Path
|
||||
|
||||
@@ -11,14 +10,14 @@ import java.nio.file.Path
|
||||
public val VisionPage.Companion.threeJsHeader: HtmlFragment get() = scriptHeader("js/visionforge-three.js")
|
||||
|
||||
@DFExperimental
|
||||
public fun makeThreeJsFile(
|
||||
public fun Solids.makeThreeJsFile(
|
||||
path: Path? = null,
|
||||
title: String = "VisionForge page",
|
||||
resourceLocation: ResourceLocation = ResourceLocation.SYSTEM,
|
||||
show: Boolean = true,
|
||||
content: HtmlVisionFragment,
|
||||
): Unit {
|
||||
val actualPath = VisionPage(Global.visionManager, content = content).makeFile(path) { actualPath ->
|
||||
val actualPath = VisionPage(visionManager, content = content).makeFile(path) { actualPath ->
|
||||
mapOf(
|
||||
"title" to VisionPage.title(title),
|
||||
"threeJs" to VisionPage.importScriptHeader(
|
||||
|
||||
Reference in New Issue
Block a user