DF to 0.1.7

This commit is contained in:
Alexander Nozik 2020-04-10 19:25:52 +03:00
parent a8f6fa9dc6
commit 54c42a6a56
25 changed files with 66 additions and 86 deletions
build.gradle.kts
dataforge-vis-common/src
commonMain/kotlin/hep/dataforge/vis
jvmMain/kotlin/hep/dataforge/vis
dataforge-vis-spatial-gdml/src/jvmTest/kotlin/hep/dataforge/vis/spatial/gdml
dataforge-vis-spatial/src
commonMain/kotlin/hep/dataforge/vis/spatial
jsMain/kotlin/hep/dataforge/vis/spatial/three
demo
gdml/src
commonTest/kotlin/hep/dataforge/vis/spatial/gdml
jvmMain/kotlin/hep/dataforge/vis/spatial/gdml/demo
jvmTest/kotlin/hep/dataforge/vis/spatial
muon-monitor
build.gradle.kts
src/jvmTest/kotlin/ru/mipt/npm/muon/monitor
spatial-showcase/src
commonMain/kotlin/hep/dataforge/vis/spatial/demo
jsMain/kotlin/hep/dataforge/vis/spatial/demo

@ -1,10 +1,10 @@
import scientifik.fx import scientifik.fx
import scientifik.serialization import scientifik.serialization
val dataforgeVersion by extra("0.1.6-dev") val dataforgeVersion by extra("0.1.7")
plugins { plugins {
val toolsVersion = "0.4.0" val toolsVersion = "0.4.2"
id("scientifik.mpp") version toolsVersion apply false id("scientifik.mpp") version toolsVersion apply false
id("scientifik.jvm") version toolsVersion apply false id("scientifik.jvm") version toolsVersion apply false
id("scientifik.js") version toolsVersion apply false id("scientifik.js") version toolsVersion apply false
@ -24,7 +24,7 @@ allprojects {
} }
group = "hep.dataforge" group = "hep.dataforge"
version = "0.1.2-dev" version = "0.1.3-dev"
} }
val githubProject by extra("dataforge-vis") val githubProject by extra("dataforge-vis")

@ -1,7 +1,6 @@
package hep.dataforge.vis package hep.dataforge.vis
import hep.dataforge.meta.* import hep.dataforge.meta.*
import hep.dataforge.meta.scheme.setProperty
import hep.dataforge.names.Name import hep.dataforge.names.Name
import hep.dataforge.names.asName import hep.dataforge.names.asName
import hep.dataforge.values.Value import hep.dataforge.values.Value

@ -1,15 +1,13 @@
package hep.dataforge.vis package hep.dataforge.vis
import hep.dataforge.meta.Configurable
import hep.dataforge.meta.Laminate import hep.dataforge.meta.Laminate
import hep.dataforge.meta.Meta import hep.dataforge.meta.Meta
import hep.dataforge.meta.MetaItem import hep.dataforge.meta.MetaItem
import hep.dataforge.meta.descriptors.NodeDescriptor
import hep.dataforge.meta.scheme.Configurable
import hep.dataforge.names.Name import hep.dataforge.names.Name
import hep.dataforge.names.asName import hep.dataforge.names.asName
import hep.dataforge.names.toName import hep.dataforge.names.toName
import hep.dataforge.provider.Type import hep.dataforge.provider.Type
import hep.dataforge.values.ValueType
import hep.dataforge.vis.VisualObject.Companion.TYPE import hep.dataforge.vis.VisualObject.Companion.TYPE
import kotlinx.serialization.Transient import kotlinx.serialization.Transient
@ -66,7 +64,7 @@ interface VisualObject : Configurable {
const val TYPE = "visual" const val TYPE = "visual"
val STYLE_KEY = "@style".asName() val STYLE_KEY = "@style".asName()
//const val META_KEY = "@meta" //const val META_KEY = "@meta"
//const val TAGS_KEY = "@tags" //const val TAGS_KEY = "@tags"
} }

@ -1,19 +1,14 @@
package hep.dataforge.vis package hep.dataforge.vis
import hep.dataforge.meta.EmptyMeta import hep.dataforge.meta.*
import hep.dataforge.meta.Meta
import hep.dataforge.meta.descriptors.ValueDescriptor import hep.dataforge.meta.descriptors.ValueDescriptor
import hep.dataforge.meta.node
import hep.dataforge.meta.scheme.getProperty
import hep.dataforge.meta.scheme.setProperty
import hep.dataforge.meta.string
import hep.dataforge.values.asValue import hep.dataforge.values.asValue
/** /**
* Extension property to access the "widget" key of [ValueDescriptor] * Extension property to access the "widget" key of [ValueDescriptor]
*/ */
var ValueDescriptor.widget: Meta var ValueDescriptor.widget: Meta
get() = getProperty("widget").node ?: EmptyMeta get() = getProperty("widget").node ?: Meta.EMPTY
set(value) { set(value) {
setProperty("widget", value) setProperty("widget", value)
} }

@ -1,7 +1,6 @@
package hep.dataforge.vis package hep.dataforge.vis
import hep.dataforge.context.* import hep.dataforge.context.*
import hep.dataforge.meta.EmptyMeta
import hep.dataforge.meta.Meta import hep.dataforge.meta.Meta
import hep.dataforge.meta.boolean import hep.dataforge.meta.boolean
import javafx.application.Application import javafx.application.Application
@ -20,7 +19,7 @@ import kotlin.reflect.KClass
/** /**
* Plugin holding JavaFX application instance and its root stage * Plugin holding JavaFX application instance and its root stage
*/ */
class FXPlugin(meta: Meta = EmptyMeta) : AbstractPlugin(meta) { class FXPlugin(meta: Meta = Meta.EMPTY) : AbstractPlugin(meta) {
override val tag: PluginTag get() = Companion.tag override val tag: PluginTag get() = Companion.tag
private val stages: ObservableSet<Stage> = FXCollections.observableSet() private val stages: ObservableSet<Stage> = FXCollections.observableSet()

@ -174,10 +174,10 @@ private fun <M : MutableMeta<M>> M.createEmptyNode(token: NameToken, append: Boo
val name = token.asName() val name = token.asName()
val index = (getIndexed(name).keys.mapNotNull { it.toIntOrNull() }.max() ?: -1) + 1 val index = (getIndexed(name).keys.mapNotNull { it.toIntOrNull() }.max() ?: -1) + 1
val newName = name.withIndex(index.toString()) val newName = name.withIndex(index.toString())
set(newName, EmptyMeta) set(newName, Meta.EMPTY)
get(newName).node!! get(newName).node!!
} else { } else {
this.setNode(token.asName(), EmptyMeta) this.setNode(token.asName(), Meta.EMPTY)
//FIXME possible concurrency bug //FIXME possible concurrency bug
get(token).node!! get(token).node!!
} }
@ -211,9 +211,9 @@ fun <M : MutableMeta<M>> FXMetaNode<M>.addValue(key: String) {
fun <M : MutableMeta<M>> FXMetaNode<M>.addNode(key: String) { fun <M : MutableMeta<M>> FXMetaNode<M>.addNode(key: String) {
val parent = getOrCreateNode() val parent = getOrCreateNode()
if (descriptor?.multiple == true) { if (descriptor?.multiple == true) {
parent.append(key, EmptyMeta) parent.append(key, Meta.EMPTY)
} else { } else {
parent[key] = EmptyMeta parent[key] = Meta.EMPTY
} }
} }

@ -7,7 +7,6 @@ package hep.dataforge.vis.editor
import hep.dataforge.context.Context import hep.dataforge.context.Context
import hep.dataforge.context.Named import hep.dataforge.context.Named
import hep.dataforge.meta.EmptyMeta
import hep.dataforge.meta.Meta import hep.dataforge.meta.Meta
import hep.dataforge.meta.descriptors.ValueDescriptor import hep.dataforge.meta.descriptors.ValueDescriptor
import hep.dataforge.names.toName import hep.dataforge.names.toName
@ -66,7 +65,7 @@ interface ValueChooser {
@Type("hep.dataforge.vis.fx.valueChooserFactory") @Type("hep.dataforge.vis.fx.valueChooserFactory")
interface Factory : Named { interface Factory : Named {
operator fun invoke(meta: Meta = EmptyMeta): ValueChooser operator fun invoke(meta: Meta = Meta.EMPTY): ValueChooser
} }
companion object { companion object {

@ -1,7 +1,7 @@
package hep.dataforge.vis.spatial.gdml package hep.dataforge.vis.spatial.gdml
import nl.adaptivity.xmlutil.StAXReader import nl.adaptivity.xmlutil.StAXReader
import org.junit.Test import org.junit.jupiter.api.Test
import scientifik.gdml.GDML import scientifik.gdml.GDML
import java.io.File import java.io.File
import java.net.URL import java.net.URL

@ -1,6 +1,5 @@
package hep.dataforge.vis.spatial package hep.dataforge.vis.spatial
import hep.dataforge.meta.EmptyMeta
import hep.dataforge.meta.Meta import hep.dataforge.meta.Meta
/** /**
@ -14,7 +13,7 @@ interface GeometryBuilder<T : Any> {
* @param normal optional external normal to the face * @param normal optional external normal to the face
* @param meta optional additional platform-specific parameters like color or texture index * @param meta optional additional platform-specific parameters like color or texture index
*/ */
fun face(vertex1: Point3D, vertex2: Point3D, vertex3: Point3D, normal: Point3D? = null, meta: Meta = EmptyMeta) fun face(vertex1: Point3D, vertex2: Point3D, vertex3: Point3D, normal: Point3D? = null, meta: Meta = Meta.EMPTY)
fun build(): T fun build(): T
} }
@ -25,7 +24,7 @@ fun GeometryBuilder<*>.face4(
vertex3: Point3D, vertex3: Point3D,
vertex4: Point3D, vertex4: Point3D,
normal: Point3D? = null, normal: Point3D? = null,
meta: Meta = EmptyMeta meta: Meta = Meta.EMPTY
) { ) {
face(vertex1, vertex2, vertex3, normal, meta) face(vertex1, vertex2, vertex3, normal, meta)
face(vertex1, vertex3, vertex4, normal, meta) face(vertex1, vertex3, vertex4, normal, meta)

@ -1,11 +1,7 @@
package hep.dataforge.vis.spatial package hep.dataforge.vis.spatial
import hep.dataforge.meta.*
import hep.dataforge.meta.descriptors.NodeDescriptor import hep.dataforge.meta.descriptors.NodeDescriptor
import hep.dataforge.meta.double
import hep.dataforge.meta.get
import hep.dataforge.meta.node
import hep.dataforge.meta.scheme.*
import hep.dataforge.meta.set
import hep.dataforge.names.asName import hep.dataforge.names.asName
import hep.dataforge.names.plus import hep.dataforge.names.plus
import hep.dataforge.values.ValueType import hep.dataforge.values.ValueType
@ -48,23 +44,26 @@ class Material3D : Scheme() {
internal val WIREFRAME_KEY = "wireframe".asName() internal val WIREFRAME_KEY = "wireframe".asName()
val MATERIAL_WIREFRAME_KEY = MATERIAL_KEY + WIREFRAME_KEY val MATERIAL_WIREFRAME_KEY = MATERIAL_KEY + WIREFRAME_KEY
val descriptor = NodeDescriptor { val descriptor by lazy {
defineValue(VisualObject3D.VISIBLE_KEY) { //must be lazy to avoid initialization bug
type(ValueType.BOOLEAN) NodeDescriptor {
default(true) defineValue(VisualObject3D.VISIBLE_KEY) {
}
defineNode(MATERIAL_KEY) {
defineValue(COLOR_KEY) {
type(ValueType.STRING, ValueType.NUMBER)
default("#ffffff")
}
defineValue(OPACITY_KEY) {
type(ValueType.NUMBER)
default(1.0)
}
defineValue(WIREFRAME_KEY) {
type(ValueType.BOOLEAN) type(ValueType.BOOLEAN)
default(false) default(true)
}
defineNode(MATERIAL_KEY) {
defineValue(COLOR_KEY) {
type(ValueType.STRING, ValueType.NUMBER)
default("#ffffff")
}
defineValue(OPACITY_KEY) {
type(ValueType.NUMBER)
default(1.0)
}
defineValue(WIREFRAME_KEY) {
type(ValueType.BOOLEAN)
default(false)
}
} }
} }
} }

@ -3,7 +3,7 @@
package hep.dataforge.vis.spatial package hep.dataforge.vis.spatial
import hep.dataforge.meta.Config import hep.dataforge.meta.Config
import hep.dataforge.meta.scheme.number import hep.dataforge.meta.number
import hep.dataforge.names.asName import hep.dataforge.names.asName
import hep.dataforge.names.plus import hep.dataforge.names.plus
import hep.dataforge.vis.AbstractVisualObject import hep.dataforge.vis.AbstractVisualObject

@ -4,11 +4,7 @@ import hep.dataforge.context.AbstractPlugin
import hep.dataforge.context.Context import hep.dataforge.context.Context
import hep.dataforge.context.PluginFactory import hep.dataforge.context.PluginFactory
import hep.dataforge.context.PluginTag import hep.dataforge.context.PluginTag
import hep.dataforge.meta.Meta import hep.dataforge.meta.*
import hep.dataforge.meta.float
import hep.dataforge.meta.get
import hep.dataforge.meta.node
import hep.dataforge.meta.scheme.configure
import hep.dataforge.names.Name import hep.dataforge.names.Name
import hep.dataforge.names.toName import hep.dataforge.names.toName
import hep.dataforge.vis.Visual import hep.dataforge.vis.Visual

@ -4,8 +4,6 @@ package hep.dataforge.vis.spatial
import hep.dataforge.meta.* import hep.dataforge.meta.*
import hep.dataforge.meta.descriptors.NodeDescriptor import hep.dataforge.meta.descriptors.NodeDescriptor
import hep.dataforge.meta.scheme.node
import hep.dataforge.meta.scheme.setProperty
import hep.dataforge.names.asName import hep.dataforge.names.asName
import hep.dataforge.names.plus import hep.dataforge.names.plus
import hep.dataforge.output.Renderer import hep.dataforge.output.Renderer
@ -61,18 +59,20 @@ interface VisualObject3D : VisualObject {
val yScale = scale + y val yScale = scale + y
val zScale = scale + z val zScale = scale + z
val descriptor = NodeDescriptor { val descriptor by lazy {
defineValue(VISIBLE_KEY) { NodeDescriptor {
type(ValueType.BOOLEAN) defineValue(VISIBLE_KEY) {
default(true) type(ValueType.BOOLEAN)
} default(true)
}
defineItem(Material3D.MATERIAL_KEY, Material3D.descriptor) defineItem(Material3D.MATERIAL_KEY.toString(), Material3D.descriptor)
// Material3D.MATERIAL_COLOR_KEY put "#ffffff" // Material3D.MATERIAL_COLOR_KEY put "#ffffff"
// Material3D.MATERIAL_OPACITY_KEY put 1.0 // Material3D.MATERIAL_OPACITY_KEY put 1.0
// Material3D.MATERIAL_WIREFRAME_KEY put false // Material3D.MATERIAL_WIREFRAME_KEY put false
}
} }
} }
} }
@ -86,7 +86,7 @@ var VisualObject3D.layer: Int
setProperty(LAYER_KEY, value.asValue()) setProperty(LAYER_KEY, value.asValue())
} }
fun Renderer<VisualObject3D>.render(meta: Meta = EmptyMeta, action: VisualGroup3D.() -> Unit) = fun Renderer<VisualObject3D>.render(meta: Meta = Meta.EMPTY, action: VisualGroup3D.() -> Unit) =
render(VisualGroup3D().apply(action), meta) render(VisualGroup3D().apply(action), meta)
// Common properties // Common properties

@ -1,10 +1,6 @@
package hep.dataforge.vis.spatial.specifications package hep.dataforge.vis.spatial.specifications
import hep.dataforge.meta.isEmpty import hep.dataforge.meta.*
import hep.dataforge.meta.scheme.Scheme
import hep.dataforge.meta.scheme.SchemeSpec
import hep.dataforge.meta.scheme.boolean
import hep.dataforge.meta.scheme.double
class Axes : Scheme() { class Axes : Scheme() {
var visible by boolean(!config.isEmpty()) var visible by boolean(!config.isEmpty())

@ -1,9 +1,9 @@
package hep.dataforge.vis.spatial.specifications package hep.dataforge.vis.spatial.specifications
import hep.dataforge.meta.scheme.Scheme import hep.dataforge.meta.Scheme
import hep.dataforge.meta.scheme.SchemeSpec import hep.dataforge.meta.SchemeSpec
import hep.dataforge.meta.scheme.double import hep.dataforge.meta.double
import hep.dataforge.meta.scheme.int import hep.dataforge.meta.int
import kotlin.math.PI import kotlin.math.PI
class Camera : Scheme() { class Camera : Scheme() {

@ -1,9 +1,9 @@
package hep.dataforge.vis.spatial.specifications package hep.dataforge.vis.spatial.specifications
import hep.dataforge.meta.scheme.Scheme import hep.dataforge.meta.Scheme
import hep.dataforge.meta.scheme.SchemeSpec import hep.dataforge.meta.SchemeSpec
import hep.dataforge.meta.scheme.int import hep.dataforge.meta.int
import hep.dataforge.meta.scheme.spec import hep.dataforge.meta.spec
class Canvas : Scheme() { class Canvas : Scheme() {
var axes by spec(Axes, Axes.empty()) var axes by spec(Axes, Axes.empty())

@ -1,7 +1,7 @@
package hep.dataforge.vis.spatial.specifications package hep.dataforge.vis.spatial.specifications
import hep.dataforge.meta.scheme.Scheme import hep.dataforge.meta.Scheme
import hep.dataforge.meta.scheme.SchemeSpec import hep.dataforge.meta.SchemeSpec
class Controls : Scheme() { class Controls : Scheme() {

@ -2,7 +2,7 @@ package hep.dataforge.vis.spatial.three
import hep.dataforge.context.Context import hep.dataforge.context.Context
import hep.dataforge.meta.Meta import hep.dataforge.meta.Meta
import hep.dataforge.meta.scheme.getProperty import hep.dataforge.meta.getProperty
import hep.dataforge.meta.string import hep.dataforge.meta.string
import hep.dataforge.names.Name import hep.dataforge.names.Name
import hep.dataforge.names.plus import hep.dataforge.names.plus

@ -1,6 +1,6 @@
package hep.dataforge.vis.spatial.gdml package hep.dataforge.vis.spatial.gdml
import hep.dataforge.meta.scheme.setProperty import hep.dataforge.meta.setProperty
import hep.dataforge.meta.string import hep.dataforge.meta.string
import hep.dataforge.names.toName import hep.dataforge.names.toName
import hep.dataforge.values.asValue import hep.dataforge.values.asValue

@ -1,6 +1,6 @@
package hep.dataforge.vis.spatial.gdml.demo package hep.dataforge.vis.spatial.gdml.demo
import hep.dataforge.meta.scheme.setProperty import hep.dataforge.meta.setProperty
import hep.dataforge.values.asValue import hep.dataforge.values.asValue
import hep.dataforge.vis.spatial.Material3D import hep.dataforge.vis.spatial.Material3D
import hep.dataforge.vis.spatial.Visual3D import hep.dataforge.vis.spatial.Visual3D

@ -1,7 +1,7 @@
package hep.dataforge.vis.spatial package hep.dataforge.vis.spatial
import hep.dataforge.names.asName import hep.dataforge.names.asName
import org.junit.Test import org.junit.jupiter.api.Test
import kotlin.test.Ignore import kotlin.test.Ignore
class FileSerializationTest { class FileSerializationTest {

@ -46,6 +46,7 @@ kotlin {
implementation(npm("abort-controller")) implementation(npm("abort-controller"))
implementation(npm("bufferutil")) implementation(npm("bufferutil"))
implementation(npm("utf-8-validate")) implementation(npm("utf-8-validate"))
implementation(npm("fs"))
// implementation(npm("jquery")) // implementation(npm("jquery"))
// implementation(npm("popper.js")) // implementation(npm("popper.js"))
// implementation(npm("react-is")) // implementation(npm("react-is"))

@ -1,7 +1,6 @@
package ru.mipt.npm.muon.monitor package ru.mipt.npm.muon.monitor
import org.junit.Test import kotlin.test.*
import kotlin.test.assertTrue
class GeometryTest { class GeometryTest {

@ -1,7 +1,7 @@
package hep.dataforge.vis.spatial.demo package hep.dataforge.vis.spatial.demo
import hep.dataforge.meta.Meta import hep.dataforge.meta.Meta
import hep.dataforge.meta.scheme.invoke import hep.dataforge.meta.invoke
import hep.dataforge.names.toName import hep.dataforge.names.toName
import hep.dataforge.output.OutputManager import hep.dataforge.output.OutputManager
import hep.dataforge.vis.Colors import hep.dataforge.vis.Colors

@ -4,7 +4,7 @@ package hep.dataforge.vis.spatial.demo
import hep.dataforge.meta.int import hep.dataforge.meta.int
import hep.dataforge.meta.number import hep.dataforge.meta.number
import hep.dataforge.meta.scheme.setProperty import hep.dataforge.meta.setProperty
import hep.dataforge.names.plus import hep.dataforge.names.plus
import hep.dataforge.names.startsWith import hep.dataforge.names.startsWith
import hep.dataforge.values.asValue import hep.dataforge.values.asValue