Fix local exports for temporary files.

This commit is contained in:
Alexander Nozik 2020-12-12 21:33:40 +03:00
parent 651a875eee
commit f4970955cb
3 changed files with 18 additions and 17 deletions

View File

@ -1,5 +1,6 @@
package ru.mipt.npm.sat
import hep.dataforge.vision.ResourceLocation
import hep.dataforge.vision.VisionManager
import hep.dataforge.vision.html.fragment
import hep.dataforge.vision.solid.box
@ -15,5 +16,5 @@ fun main() {
}
}
fragment.makeFile()
fragment.makeFile(resourceLocation = ResourceLocation.LOCAL)
}

View File

@ -102,23 +102,21 @@ internal fun fileCssHeader(
@DFExperimental
public fun Context.Companion.scriptHeader(
scriptResource: String,
basePath: Path?,
basePath: Path,
resourceLocation: ResourceLocation,
): HtmlFragment {
val targetPath = if (basePath == null) null else {
when (resourceLocation) {
ResourceLocation.LOCAL -> checkOrStoreFile(
basePath,
Path.of(DATAFORGE_ASSETS_PATH),
scriptResource
)
ResourceLocation.SYSTEM -> checkOrStoreFile(
Path.of("."),
Path.of(System.getProperty("user.home")).resolve(DATAFORGE_ASSETS_PATH),
scriptResource
)
ResourceLocation.EMBED -> null
}
val targetPath = when (resourceLocation) {
ResourceLocation.LOCAL -> checkOrStoreFile(
basePath,
Path.of(DATAFORGE_ASSETS_PATH),
scriptResource
)
ResourceLocation.SYSTEM -> checkOrStoreFile(
Path.of("."),
Path.of(System.getProperty("user.home")).resolve(DATAFORGE_ASSETS_PATH),
scriptResource
)
ResourceLocation.EMBED -> null
}
return if (targetPath == null) {
embedScriptHeader(scriptResource)

View File

@ -10,6 +10,7 @@ import hep.dataforge.vision.makeFile
import hep.dataforge.vision.scriptHeader
import hep.dataforge.vision.solid.SolidGroup
import hep.dataforge.vision.solid.SolidManager
import java.nio.file.Files
import java.nio.file.Path
public actual val visionContext: Context = Global.context("vision-server") {
@ -38,6 +39,7 @@ public fun HtmlVisionFragment.makeFile(
resourceLocation: ResourceLocation = ResourceLocation.SYSTEM,
show: Boolean = true,
) {
val scriptHeader = Context.scriptHeader("/js/visionforge-three.js", path, resourceLocation)
val actualPath = path ?: Files.createTempFile("tempPlot", ".html")
val scriptHeader = Context.scriptHeader("/js/visionforge-three.js", actualPath, resourceLocation)
makeFile(visionManager, path = path, show = show, title = title, headers = arrayOf(scriptHeader))
}