Update dependencies and compatibility
This commit is contained in:
parent
d28873e796
commit
2bdaea2e82
@ -21,7 +21,9 @@ kotlin {
|
|||||||
useCommonJs()
|
useCommonJs()
|
||||||
browser {
|
browser {
|
||||||
commonWebpackConfig {
|
commonWebpackConfig {
|
||||||
cssSupport.enabled = false
|
cssSupport{
|
||||||
|
enabled.set(false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,13 +2,13 @@ package space.kscience.visionforge.gdml.demo
|
|||||||
|
|
||||||
import kotlinx.css.*
|
import kotlinx.css.*
|
||||||
import org.w3c.dom.Document
|
import org.w3c.dom.Document
|
||||||
import react.dom.client.createRoot
|
|
||||||
import space.kscience.dataforge.context.Context
|
import space.kscience.dataforge.context.Context
|
||||||
import space.kscience.dataforge.context.fetch
|
import space.kscience.dataforge.context.fetch
|
||||||
import space.kscience.gdml.GdmlShowCase
|
import space.kscience.gdml.GdmlShowCase
|
||||||
import space.kscience.visionforge.Application
|
import space.kscience.visionforge.Application
|
||||||
import space.kscience.visionforge.Colors
|
import space.kscience.visionforge.Colors
|
||||||
import space.kscience.visionforge.gdml.toVision
|
import space.kscience.visionforge.gdml.toVision
|
||||||
|
import space.kscience.visionforge.react.createRoot
|
||||||
import space.kscience.visionforge.react.render
|
import space.kscience.visionforge.react.render
|
||||||
import space.kscience.visionforge.solid.Solids
|
import space.kscience.visionforge.solid.Solids
|
||||||
import space.kscience.visionforge.solid.ambientLight
|
import space.kscience.visionforge.solid.ambientLight
|
||||||
|
@ -12,7 +12,9 @@ kotlin{
|
|||||||
useCommonJs()
|
useCommonJs()
|
||||||
browser {
|
browser {
|
||||||
commonWebpackConfig {
|
commonWebpackConfig {
|
||||||
cssSupport.enabled = false
|
cssSupport{
|
||||||
|
enabled.set(false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import kotlinx.css.*
|
import kotlinx.css.*
|
||||||
import org.w3c.dom.Document
|
import org.w3c.dom.Document
|
||||||
import react.dom.client.createRoot
|
|
||||||
import ringui.SmartTabs
|
import ringui.SmartTabs
|
||||||
import ringui.Tab
|
import ringui.Tab
|
||||||
import space.kscience.dataforge.context.Context
|
import space.kscience.dataforge.context.Context
|
||||||
@ -11,6 +10,7 @@ import space.kscience.visionforge.Application
|
|||||||
import space.kscience.visionforge.Colors
|
import space.kscience.visionforge.Colors
|
||||||
import space.kscience.visionforge.VisionClient
|
import space.kscience.visionforge.VisionClient
|
||||||
import space.kscience.visionforge.plotly.PlotlyPlugin
|
import space.kscience.visionforge.plotly.PlotlyPlugin
|
||||||
|
import space.kscience.visionforge.react.createRoot
|
||||||
import space.kscience.visionforge.react.render
|
import space.kscience.visionforge.react.render
|
||||||
import space.kscience.visionforge.ring.ThreeCanvasWithControls
|
import space.kscience.visionforge.ring.ThreeCanvasWithControls
|
||||||
import space.kscience.visionforge.ring.ThreeWithControlsPlugin
|
import space.kscience.visionforge.ring.ThreeWithControlsPlugin
|
||||||
|
@ -22,7 +22,7 @@ kotlin {
|
|||||||
browser {
|
browser {
|
||||||
commonWebpackConfig {
|
commonWebpackConfig {
|
||||||
cssSupport {
|
cssSupport {
|
||||||
enabled = false
|
enabled.set(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package ru.mipt.npm.muon.monitor
|
package ru.mipt.npm.muon.monitor
|
||||||
|
|
||||||
import org.w3c.dom.Document
|
import org.w3c.dom.Document
|
||||||
import react.dom.client.createRoot
|
|
||||||
import space.kscience.dataforge.context.Context
|
import space.kscience.dataforge.context.Context
|
||||||
import space.kscience.dataforge.context.fetch
|
import space.kscience.dataforge.context.fetch
|
||||||
import space.kscience.visionforge.Application
|
import space.kscience.visionforge.Application
|
||||||
import space.kscience.visionforge.VisionManager
|
import space.kscience.visionforge.VisionManager
|
||||||
|
import space.kscience.visionforge.react.createRoot
|
||||||
import space.kscience.visionforge.react.render
|
import space.kscience.visionforge.react.render
|
||||||
import space.kscience.visionforge.solid.Solids
|
import space.kscience.visionforge.solid.Solids
|
||||||
import space.kscience.visionforge.solid.three.ThreePlugin
|
import space.kscience.visionforge.solid.three.ThreePlugin
|
||||||
|
@ -16,11 +16,13 @@ kotlin {
|
|||||||
useCommonJs()
|
useCommonJs()
|
||||||
browser {
|
browser {
|
||||||
webpackTask {
|
webpackTask {
|
||||||
this.outputFileName = "js/visionforge-playground.js"
|
outputFileName = "js/visionforge-playground.js"
|
||||||
}
|
}
|
||||||
commonWebpackConfig {
|
commonWebpackConfig {
|
||||||
sourceMaps = true
|
sourceMaps = true
|
||||||
cssSupport.enabled = false
|
cssSupport{
|
||||||
|
enabled.set(false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
binaries.executable()
|
binaries.executable()
|
||||||
|
@ -16,7 +16,11 @@ public fun makeVisionFile(
|
|||||||
val actualPath = VisionPage(Global.visionManager, content = content).makeFile(path) { actualPath ->
|
val actualPath = VisionPage(Global.visionManager, content = content).makeFile(path) { actualPath ->
|
||||||
mapOf(
|
mapOf(
|
||||||
"title" to VisionPage.title(title),
|
"title" to VisionPage.title(title),
|
||||||
"playground" to VisionPage.importScriptHeader("js/visionforge-playground.js", resourceLocation, actualPath),
|
"playground" to VisionPage.importScriptHeader(
|
||||||
|
"js/visionforge-playground.js",
|
||||||
|
resourceLocation,
|
||||||
|
actualPath
|
||||||
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if (show) Desktop.getDesktop().browse(actualPath.toFile().toURI())
|
if (show) Desktop.getDesktop().browse(actualPath.toFile().toURI())
|
||||||
|
@ -15,7 +15,7 @@ group = "ru.mipt.npm"
|
|||||||
|
|
||||||
dependencies{
|
dependencies{
|
||||||
implementation(project(":visionforge-threejs:visionforge-threejs-server"))
|
implementation(project(":visionforge-threejs:visionforge-threejs-server"))
|
||||||
implementation("ch.qos.logback:logback-classic:1.2.11")
|
implementation("ch.qos.logback:logback-classic:1.4.5")
|
||||||
}
|
}
|
||||||
|
|
||||||
application {
|
application {
|
||||||
|
21
demo/sat-demo/src/main/kotlin/ru/mipt/npm/sat/static.kt
Normal file
21
demo/sat-demo/src/main/kotlin/ru/mipt/npm/sat/static.kt
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package ru.mipt.npm.sat
|
||||||
|
|
||||||
|
import space.kscience.dataforge.misc.DFExperimental
|
||||||
|
import space.kscience.visionforge.html.ResourceLocation
|
||||||
|
import space.kscience.visionforge.solid.box
|
||||||
|
import space.kscience.visionforge.solid.material
|
||||||
|
import space.kscience.visionforge.solid.set
|
||||||
|
import space.kscience.visionforge.solid.solid
|
||||||
|
import space.kscience.visionforge.three.makeThreeJsFile
|
||||||
|
|
||||||
|
@OptIn(DFExperimental::class)
|
||||||
|
fun main() = makeThreeJsFile(resourceLocation = ResourceLocation.SYSTEM) {
|
||||||
|
vision ("canvas") {
|
||||||
|
solid {
|
||||||
|
box(100, 100, 100)
|
||||||
|
material {
|
||||||
|
emissiveColor.set("red")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,9 +1,8 @@
|
|||||||
kotlin.code.style=official
|
kotlin.code.style=official
|
||||||
kotlin.mpp.stability.nowarn=true
|
kotlin.mpp.stability.nowarn=true
|
||||||
kotlin.jupyter.add.scanner=false
|
|
||||||
kotlin.incremental.js.ir=true
|
kotlin.incremental.js.ir=true
|
||||||
|
|
||||||
org.gradle.parallel=true
|
org.gradle.parallel=true
|
||||||
org.gradle.jvmargs=-Xmx4G
|
org.gradle.jvmargs=-Xmx4G
|
||||||
|
|
||||||
toolsVersion=0.13.3-kotlin-1.7.20
|
toolsVersion=0.13.4-kotlin-1.8.0
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,5 +1,5 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
@ -14,7 +14,9 @@ kotlin {
|
|||||||
}
|
}
|
||||||
commonWebpackConfig {
|
commonWebpackConfig {
|
||||||
sourceMaps = false
|
sourceMaps = false
|
||||||
cssSupport.enabled = false
|
cssSupport{
|
||||||
|
enabled.set(false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
binaries.executable()
|
binaries.executable()
|
||||||
|
@ -2,7 +2,6 @@ package space.kscience.visionforge.bootstrap
|
|||||||
|
|
||||||
import org.w3c.dom.Element
|
import org.w3c.dom.Element
|
||||||
import react.RBuilder
|
import react.RBuilder
|
||||||
import react.dom.client.createRoot
|
|
||||||
import space.kscience.dataforge.meta.descriptors.MetaDescriptor
|
import space.kscience.dataforge.meta.descriptors.MetaDescriptor
|
||||||
import space.kscience.dataforge.meta.isEmpty
|
import space.kscience.dataforge.meta.isEmpty
|
||||||
import space.kscience.visionforge.Vision
|
import space.kscience.visionforge.Vision
|
||||||
@ -67,6 +66,6 @@ public fun RBuilder.visionPropertyEditor(
|
|||||||
public fun Element.visionPropertyEditor(
|
public fun Element.visionPropertyEditor(
|
||||||
item: Vision,
|
item: Vision,
|
||||||
descriptor: MetaDescriptor? = item.descriptor,
|
descriptor: MetaDescriptor? = item.descriptor,
|
||||||
): Unit = createRoot(this).render {
|
): Unit = space.kscience.visionforge.react.createRoot(this).render {
|
||||||
visionPropertyEditor(item, descriptor = descriptor)
|
visionPropertyEditor(item, descriptor = descriptor)
|
||||||
}
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
@file:JsModule("react-dom/client")
|
||||||
|
@file:JsNonModule
|
||||||
|
|
||||||
|
package space.kscience.visionforge.react
|
||||||
|
|
||||||
|
import org.w3c.dom.Element
|
||||||
|
import react.dom.client.Root
|
||||||
|
import react.dom.client.RootOptions
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compatibility method to work with old browser API
|
||||||
|
*/
|
||||||
|
public external fun createRoot(
|
||||||
|
container: Element,
|
||||||
|
options: RootOptions = definedExternally,
|
||||||
|
): Root
|
@ -9,7 +9,9 @@ kotlin{
|
|||||||
useCommonJs()
|
useCommonJs()
|
||||||
browser {
|
browser {
|
||||||
commonWebpackConfig {
|
commonWebpackConfig {
|
||||||
cssSupport.enabled = false
|
cssSupport{
|
||||||
|
enabled.set(false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@ package space.kscience.visionforge.ring
|
|||||||
|
|
||||||
import kotlinx.coroutines.async
|
import kotlinx.coroutines.async
|
||||||
import org.w3c.dom.Element
|
import org.w3c.dom.Element
|
||||||
import react.dom.client.createRoot
|
|
||||||
import space.kscience.dataforge.context.AbstractPlugin
|
import space.kscience.dataforge.context.AbstractPlugin
|
||||||
import space.kscience.dataforge.context.Context
|
import space.kscience.dataforge.context.Context
|
||||||
import space.kscience.dataforge.context.PluginFactory
|
import space.kscience.dataforge.context.PluginFactory
|
||||||
@ -26,7 +25,7 @@ public class ThreeWithControlsPlugin : AbstractPlugin(), ElementVisionRenderer {
|
|||||||
if (vision is Solid) ElementVisionRenderer.DEFAULT_RATING * 2 else ElementVisionRenderer.ZERO_RATING
|
if (vision is Solid) ElementVisionRenderer.DEFAULT_RATING * 2 else ElementVisionRenderer.ZERO_RATING
|
||||||
|
|
||||||
override fun render(element: Element, name: Name, vision: Vision, meta: Meta) {
|
override fun render(element: Element, name: Name, vision: Vision, meta: Meta) {
|
||||||
createRoot(element).render {
|
space.kscience.visionforge.react.createRoot(element).render {
|
||||||
child(ThreeCanvasWithControls) {
|
child(ThreeCanvasWithControls) {
|
||||||
attrs {
|
attrs {
|
||||||
this.solids = three.solids
|
this.solids = three.solids
|
||||||
|
@ -2,7 +2,6 @@ package space.kscience.visionforge.ring
|
|||||||
|
|
||||||
import org.w3c.dom.Element
|
import org.w3c.dom.Element
|
||||||
import react.RBuilder
|
import react.RBuilder
|
||||||
import react.dom.client.createRoot
|
|
||||||
import react.dom.p
|
import react.dom.p
|
||||||
import ringui.Island
|
import ringui.Island
|
||||||
import ringui.SmartTabs
|
import ringui.SmartTabs
|
||||||
|
@ -4,12 +4,10 @@ import kotlinx.html.link
|
|||||||
import kotlinx.html.script
|
import kotlinx.html.script
|
||||||
import kotlinx.html.unsafe
|
import kotlinx.html.unsafe
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
import space.kscience.visionforge.VisionManager
|
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import java.nio.file.StandardOpenOption
|
import java.nio.file.StandardOpenOption
|
||||||
import java.security.MessageDigest
|
import java.security.MessageDigest
|
||||||
import kotlin.io.path.ExperimentalPathApi
|
|
||||||
import kotlin.io.path.readText
|
import kotlin.io.path.readText
|
||||||
|
|
||||||
|
|
||||||
@ -47,15 +45,14 @@ private fun ByteArray.toHexString() = asUByteArray().joinToString("") { it.toStr
|
|||||||
* Check if the asset exists in given local location and put it there if it does not
|
* Check if the asset exists in given local location and put it there if it does not
|
||||||
* @param
|
* @param
|
||||||
*/
|
*/
|
||||||
@OptIn(ExperimentalPathApi::class)
|
internal fun checkOrStoreFile(htmlPath: Path, filePath: Path, resource: String, classLoader: ClassLoader): Path {
|
||||||
internal fun checkOrStoreFile(htmlPath: Path, filePath: Path, resource: String): Path {
|
|
||||||
val logger = LoggerFactory.getLogger("")
|
val logger = LoggerFactory.getLogger("")
|
||||||
|
|
||||||
logger.info("Resolving or storing resource file $resource")
|
logger.info("Resolving or storing resource file $resource")
|
||||||
val fullPath = htmlPath.resolveSibling(filePath).toAbsolutePath().resolve(resource)
|
val fullPath = htmlPath.resolveSibling(filePath).toAbsolutePath().resolve(resource)
|
||||||
logger.debug("Full path to resource file $resource: $fullPath")
|
logger.debug("Full path to resource file $resource: $fullPath")
|
||||||
|
|
||||||
val bytes = VisionManager.Companion::class.java.getResourceAsStream("/$resource")?.readAllBytes()
|
val bytes = classLoader.getResourceAsStream(resource)?.readAllBytes()
|
||||||
?: error("Resource $resource not found on classpath")
|
?: error("Resource $resource not found on classpath")
|
||||||
val md = MessageDigest.getInstance("MD5")
|
val md = MessageDigest.getInstance("MD5")
|
||||||
|
|
||||||
@ -66,8 +63,20 @@ internal fun checkOrStoreFile(htmlPath: Path, filePath: Path, resource: String):
|
|||||||
if (!skip) {
|
if (!skip) {
|
||||||
logger.debug("File $fullPath does not exist or wrong checksum. Writing file")
|
logger.debug("File $fullPath does not exist or wrong checksum. Writing file")
|
||||||
Files.createDirectories(fullPath.parent)
|
Files.createDirectories(fullPath.parent)
|
||||||
Files.write(fullPath, bytes, StandardOpenOption.CREATE,StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.WRITE)
|
Files.write(
|
||||||
Files.write(md5File, checksum.encodeToByteArray(), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.WRITE)
|
fullPath,
|
||||||
|
bytes,
|
||||||
|
StandardOpenOption.CREATE,
|
||||||
|
StandardOpenOption.TRUNCATE_EXISTING,
|
||||||
|
StandardOpenOption.WRITE
|
||||||
|
)
|
||||||
|
Files.write(
|
||||||
|
md5File,
|
||||||
|
checksum.encodeToByteArray(),
|
||||||
|
StandardOpenOption.CREATE,
|
||||||
|
StandardOpenOption.TRUNCATE_EXISTING,
|
||||||
|
StandardOpenOption.WRITE
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
return if (htmlPath.isAbsolute && fullPath.startsWith(htmlPath.parent)) {
|
return if (htmlPath.isAbsolute && fullPath.startsWith(htmlPath.parent)) {
|
||||||
@ -89,11 +98,11 @@ internal fun fileScriptHeader(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun embedScriptHeader(resource: String): HtmlFragment = {
|
internal fun embedScriptHeader(resource: String, classLoader: ClassLoader): HtmlFragment = {
|
||||||
script {
|
script {
|
||||||
type = "text/javascript"
|
type = "text/javascript"
|
||||||
unsafe {
|
unsafe {
|
||||||
val bytes = VisionManager::class.java.getResourceAsStream("/$resource")!!.readAllBytes()
|
val bytes = classLoader.getResourceAsStream(resource)!!.readAllBytes()
|
||||||
+bytes.toString(Charsets.UTF_8)
|
+bytes.toString(Charsets.UTF_8)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -103,8 +112,9 @@ internal fun fileCssHeader(
|
|||||||
basePath: Path,
|
basePath: Path,
|
||||||
cssPath: Path,
|
cssPath: Path,
|
||||||
resource: String,
|
resource: String,
|
||||||
|
classLoader: ClassLoader,
|
||||||
): HtmlFragment = {
|
): HtmlFragment = {
|
||||||
val relativePath = checkOrStoreFile(basePath, cssPath, resource)
|
val relativePath = checkOrStoreFile(basePath, cssPath, resource, classLoader)
|
||||||
link {
|
link {
|
||||||
rel = "stylesheet"
|
rel = "stylesheet"
|
||||||
href = relativePath.toString()
|
href = relativePath.toString()
|
||||||
@ -118,22 +128,26 @@ public fun VisionPage.Companion.importScriptHeader(
|
|||||||
scriptResource: String,
|
scriptResource: String,
|
||||||
resourceLocation: ResourceLocation,
|
resourceLocation: ResourceLocation,
|
||||||
htmlPath: Path? = null,
|
htmlPath: Path? = null,
|
||||||
|
classLoader: ClassLoader = Thread.currentThread().contextClassLoader,
|
||||||
): HtmlFragment {
|
): HtmlFragment {
|
||||||
val targetPath = when (resourceLocation) {
|
val targetPath = when (resourceLocation) {
|
||||||
ResourceLocation.LOCAL -> checkOrStoreFile(
|
ResourceLocation.LOCAL -> checkOrStoreFile(
|
||||||
htmlPath ?: Path.of("."),
|
htmlPath ?: Path.of("."),
|
||||||
Path.of(VISIONFORGE_ASSETS_PATH),
|
Path.of(VISIONFORGE_ASSETS_PATH),
|
||||||
scriptResource
|
scriptResource,
|
||||||
|
classLoader
|
||||||
)
|
)
|
||||||
|
|
||||||
ResourceLocation.SYSTEM -> checkOrStoreFile(
|
ResourceLocation.SYSTEM -> checkOrStoreFile(
|
||||||
Path.of("."),
|
Path.of("."),
|
||||||
Path.of(System.getProperty("user.home")).resolve(VISIONFORGE_ASSETS_PATH),
|
Path.of(System.getProperty("user.home")).resolve(VISIONFORGE_ASSETS_PATH),
|
||||||
scriptResource
|
scriptResource, classLoader
|
||||||
)
|
)
|
||||||
|
|
||||||
ResourceLocation.EMBED -> null
|
ResourceLocation.EMBED -> null
|
||||||
}
|
}
|
||||||
return if (targetPath == null) {
|
return if (targetPath == null) {
|
||||||
embedScriptHeader(scriptResource)
|
embedScriptHeader(scriptResource, classLoader)
|
||||||
} else {
|
} else {
|
||||||
fileScriptHeader(targetPath)
|
fileScriptHeader(targetPath)
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,9 @@ kotlin {
|
|||||||
binaries.library()
|
binaries.library()
|
||||||
browser{
|
browser{
|
||||||
commonWebpackConfig{
|
commonWebpackConfig{
|
||||||
cssSupport.enabled = true
|
cssSupport{
|
||||||
|
enabled.set(true)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package space.kscience.visionforge.tables
|
package space.kscience.visionforge.tables
|
||||||
|
|
||||||
import kotlinx.js.jso
|
import js.core.jso
|
||||||
import org.w3c.dom.Element
|
import org.w3c.dom.Element
|
||||||
import org.w3c.dom.HTMLElement
|
import org.w3c.dom.HTMLElement
|
||||||
import space.kscience.dataforge.context.AbstractPlugin
|
import space.kscience.dataforge.context.AbstractPlugin
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package space.kscience.visionforge.solid.three
|
package space.kscience.visionforge.solid.three
|
||||||
|
|
||||||
|
|
||||||
import kotlinx.js.jso
|
import js.core.jso
|
||||||
import space.kscience.dataforge.context.logger
|
import space.kscience.dataforge.context.logger
|
||||||
import space.kscience.dataforge.context.warn
|
import space.kscience.dataforge.context.warn
|
||||||
import space.kscience.visionforge.onPropertyChange
|
import space.kscience.visionforge.onPropertyChange
|
||||||
|
@ -6,8 +6,6 @@ import space.kscience.visionforge.solid.three.ThreePlugin
|
|||||||
|
|
||||||
|
|
||||||
@DFExperimental
|
@DFExperimental
|
||||||
public fun main(): Unit {
|
public fun main(): Unit = runVisionClient {
|
||||||
runVisionClient {
|
plugin(ThreePlugin)
|
||||||
plugin(ThreePlugin)
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -10,7 +10,6 @@ import java.nio.file.Path
|
|||||||
|
|
||||||
public val VisionPage.Companion.threeJsHeader: HtmlFragment get() = scriptHeader("js/visionforge-three.js")
|
public val VisionPage.Companion.threeJsHeader: HtmlFragment get() = scriptHeader("js/visionforge-three.js")
|
||||||
|
|
||||||
|
|
||||||
@DFExperimental
|
@DFExperimental
|
||||||
public fun makeThreeJsFile(
|
public fun makeThreeJsFile(
|
||||||
path: Path? = null,
|
path: Path? = null,
|
||||||
@ -22,7 +21,11 @@ public fun makeThreeJsFile(
|
|||||||
val actualPath = VisionPage(Global.visionManager, content = content).makeFile(path) { actualPath ->
|
val actualPath = VisionPage(Global.visionManager, content = content).makeFile(path) { actualPath ->
|
||||||
mapOf(
|
mapOf(
|
||||||
"title" to VisionPage.title(title),
|
"title" to VisionPage.title(title),
|
||||||
"threeJs" to VisionPage.importScriptHeader("js/visionforge-three.js", resourceLocation, actualPath)
|
"threeJs" to VisionPage.importScriptHeader(
|
||||||
|
"js/visionforge-three.js",
|
||||||
|
resourceLocation,
|
||||||
|
actualPath,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if (show) Desktop.getDesktop().browse(actualPath.toFile().toURI())
|
if (show) Desktop.getDesktop().browse(actualPath.toFile().toURI())
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
package space.kscience.visionforge.three
|
||||||
|
|
||||||
|
import kotlinx.html.stream.createHTML
|
||||||
|
import space.kscience.visionforge.html.ResourceLocation
|
||||||
|
import space.kscience.visionforge.html.VisionPage
|
||||||
|
import space.kscience.visionforge.html.importScriptHeader
|
||||||
|
import kotlin.test.Test
|
||||||
|
|
||||||
|
class TestServerExtensions {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun testServerHeader(){
|
||||||
|
val string = createHTML().apply {
|
||||||
|
VisionPage.importScriptHeader(
|
||||||
|
"js/visionforge-three.js",
|
||||||
|
ResourceLocation.SYSTEM
|
||||||
|
).invoke(this)
|
||||||
|
}.finalize()
|
||||||
|
|
||||||
|
|
||||||
|
//println(string)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user