0.2.0 #71

Merged
altavir merged 139 commits from dev into master 2022-01-24 09:44:18 +03:00
32 changed files with 594 additions and 74 deletions
Showing only changes of commit d504943295 - Show all commits

View File

@ -2,6 +2,19 @@
## [Unreleased]
### Added
### Changed
### Deprecated
### Removed
### Fixed
### Security
## [0.2.0]
### Added
- Server module
- Change collector
- Customizable accessors for colors
@ -9,6 +22,9 @@
- Hexagon interface and GenericHexagon implementation (Box inherits Hexagon)
- Increased the default detail level for spheres and cones to 32
- Simple clipping for Solids in ThreeJs
- Markdown module
- Tables module
### Changed
- Vision does not implement ItemProvider anymore. Property changes are done via `getProperty`/`setProperty` and `property` delegate.
@ -25,12 +41,16 @@
- Property listeners are not triggered if there are no changes.
- Feedback websocket connection in the client.
### Deprecated
### Removed
- Primary modules dependencies on UI
### Fixed
- Version conflicts
### Security

159
README.md
View File

@ -16,9 +16,9 @@
* [Modules contained in this repository](#modules-contained-in-this-repository)
* [Visualization for External Systems](#visualization-for-external-systems)
* [Demonstrations](#demonstrations)
* [Simple Example - Solid Showcase](#simple-example---solid-showcase)
* [Full-Stack Application Example - Muon Monitor](#full-stack-application-example---muon-monitor-visualization)
* [GDML Example](#gdml-example)
* [Simple Example - Solid Showcase](#simple-example---solid-showcase)
* [Full-Stack Application Example - Muon Monitor](#full-stack-application-example---muon-monitor-visualization)
* [GDML Example](#gdml-example)
## Introduction
@ -61,7 +61,158 @@ To learn more about DataForge, please consult the following URLs:
## Modules contained in this repository
$modules
<hr/>
* ### [cern-root-loader](cern-root-loader)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [demo](demo)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [jupyter](jupyter)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [ui](ui)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [visionforge-core](visionforge-core)
>
>
> **Maturity**: DEVELOPMENT
<hr/>
* ### [visionforge-fx](visionforge-fx)
>
>
> **Maturity**: PROTOTYPE
<hr/>
* ### [visionforge-gdml](visionforge-gdml)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [visionforge-markdown](visionforge-markdown)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [visionforge-plotly](visionforge-plotly)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [visionforge-server](visionforge-server)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [visionforge-solid](visionforge-solid)
>
>
> **Maturity**: DEVELOPMENT
<hr/>
* ### [visionforge-tables](visionforge-tables)
>
>
> **Maturity**: PROTOTYPE
<hr/>
* ### [visionforge-threejs](visionforge-threejs)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [gdml](demo/gdml)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [js-playground](demo/js-playground)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [muon-monitor](demo/muon-monitor)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [playground](demo/playground)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [plotly-fx](demo/plotly-fx)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [sat-demo](demo/sat-demo)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [solid-showcase](demo/solid-showcase)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [visionforge-jupyter-gdml](jupyter/visionforge-jupyter-gdml)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [bootstrap](ui/bootstrap)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [react](ui/react)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [ring](ui/ring)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
* ### [visionforge-threejs-server](visionforge-threejs/visionforge-threejs-server)
>
>
> **Maturity**: EXPERIMENTAL
<hr/>
**Class diagram:**

View File

@ -0,0 +1,4 @@
# Module cern-root-loader

4
demo/README.md Normal file
View File

@ -0,0 +1,4 @@
# Module demo

View File

@ -1,13 +1,4 @@
### GDML Example
# Module gdml
Visualization example for geometry defined as GDML file.
##### Building project
To build the app, run `demo/gdml/Tasks/kotlin browser/jsBrowserDistribution` Gradle task, then
drag-and-drop GDML file to the window to see visualization. For an example file, you can use
`demo/gdml/src/jsMain/resources/cubes.gdml`.
##### Example view:
![](../../docs/images/gdml-demo.png)

View File

@ -0,0 +1,4 @@
# Module js-playground

View File

@ -1,33 +1,4 @@
# Module muon-monitor
### Muon Monitor Visualization
This directory contains a full-stack application example built with `visionforge`.
It is visualizing the
[Muon Monitor](http://npm.mipt.ru/projects/physics.html#mounMonitor) experiment set-up,
including experiment's geometry and events (particle tracks).
#### Reusing code and going Full-Stack with Kotlin Multiplatform
The application includes both server back-end generating events, as well as client
visualization front-end.
As is common for Kotlin multiplatform projects, the code base of this simple application
is put in the following main directories:
* `commonMain` - common code, used by both JS client and JVM server. For example, the `Monitor`
object describes general geometry definitions needed in all parts of the application.
* `jsMain` - JavaScript client code. It performs visualization and reads events from the server.
* `jvmMain` - JVM server code. It runs `ktor` HTTP server, responding with event data when
client requests them.
Note that in a more traditional approach when client and server are developed separately
and possibly using different languages, there would be no common code and benefits associated
with it.
##### Building project
To run full-stack Muon Monitor Visualization application (both JVM server and Web browser front-end),
run `demo/muon-monitor/Tasks/application/run` task.
##### Example view:
![](../../docs/images/muon-monitor.png)

View File

@ -0,0 +1,4 @@
# Module playground

View File

@ -1,3 +1,5 @@
@file:Suppress("UNUSED_VARIABLE")
package space.kscience.visionforge.examples
import space.kscience.gdml.*

4
demo/plotly-fx/README.md Normal file
View File

@ -0,0 +1,4 @@
# Module plotly-fx

4
demo/sat-demo/README.md Normal file
View File

@ -0,0 +1,4 @@
# Module sat-demo

View File

@ -1,19 +1,4 @@
### Spatial Showcase
# Module solid-showcase
Contains a simple demonstration with a grid including a few shapes that you can rotate, move camera, and so on.
Some shapes will also periodically change their color and visibility.
##### Building project
To see the JS demo: run `demo/solid-showcase/Tasks/kotlin browser/jsBrowserRun` Gradle task, then open
`build/distribuions/solid-showcase-js-0.1.3-dev/index.html` file in your browser.
To see Java FX demo, run `demo/spatial-showcase/Tasks/application/run` Gradle task, or `main()` from `FXDemoApp.kt`.
##### Example view for JS:
![](../../docs/images/spatial-showcase.png)
##### Example view for Java FX:
![](../../docs/images/spatial-showcase-FX.png)

View File

@ -2,17 +2,6 @@
The Maven coordinates of this project are `${group}:${name}:${version}`.
**Gradle Groovy:**
```gradle
repositories {
maven { url 'https://repo.kotlin.link' }
mavenCentral()
}
dependencies {
implementation '${group}:${name}:${version}'
}
```
**Gradle Kotlin DSL:**
```kotlin
repositories {

View File

@ -61,7 +61,7 @@ To learn more about DataForge, please consult the following URLs:
## Modules contained in this repository
$modules
${modules}
**Class diagram:**
@ -132,6 +132,21 @@ Visualization example for geometry defined as GDML file.
![](docs/images/gdml-demo.png)
## Stability and documentation
VisionForge is a modular library. Different modules provide different features with different API stability guarantees. All core modules are released with the same version, but with different API change policy. The features are described in module definitions below. The module stability could have the following levels:
* **PROTOTYPE**. On this level there are no compatibility guarantees. All methods and classes form those modules could break any moment. You can still use it, but be sure to fix the specific version.
* **EXPERIMENTAL**. The general API is decided, but some changes could be made. Volatile API is marked
with `@DFExperimental` or other stability warning annotations.
* **DEVELOPMENT**. API breaking generally follows semantic versioning ideology. There could be changes in minor
versions, but not in patch versions. API is protected with [binary-compatibility-validator](https://github.com/Kotlin/binary-compatibility-validator) tool.
* **STABLE**. The API stabilized. Breaking changes are allowed only in major releases.
Additionally, one should note that the VisionForge Json format impacts the reproducibility of stored vision fragments. There should not be any breaks of the format between major releases. All problems should be reported.
The documentation for the project is a work in progress. Please report any issues with missing, vague or wrong information. The contributions into documentation are quite welcome.
## Thanks and references
The original three.js bindings were made by [Lars Ivar Hatledal](https://github.com/markaren), but the project is discontinued right now.

View File

@ -9,4 +9,4 @@ org.gradle.parallel=true
publishing.github=false
publishing.sonatype=false
toolsVersion=0.10.9-kotlin-1.6.10
toolsVersion=0.11.0-kotlin-1.6.10

4
jupyter/README.md Normal file
View File

@ -0,0 +1,4 @@
# Module jupyter
Common visionforge jupyter module

View File

@ -0,0 +1,32 @@
# Module visionforge-jupyter-gdml
Jupyter api artifact for GDML rendering
## Usage
## Artifact:
The Maven coordinates of this project are `space.kscience:visionforge-jupyter-gdml:0.2.0`.
**Gradle Groovy:**
```groovy
repositories {
maven { url 'https://repo.kotlin.link' }
mavenCentral()
}
dependencies {
implementation 'space.kscience:visionforge-jupyter-gdml:0.2.0'
}
```
**Gradle Kotlin DSL:**
```kotlin
repositories {
maven("https://repo.kotlin.link")
mavenCentral()
}
dependencies {
implementation("space.kscience:visionforge-jupyter-gdml:0.2.0")
}
```

View File

@ -8,7 +8,7 @@ pluginManagement {
val toolsVersion: String by extra
repositories {
mavenLocal()
//mavenLocal()
maven("https://repo.kotlin.link")
mavenCentral()
gradlePluginPortal()

4
ui/README.md Normal file
View File

@ -0,0 +1,4 @@
# Module ui

4
ui/bootstrap/README.md Normal file
View File

@ -0,0 +1,4 @@
# Module bootstrap

4
ui/react/README.md Normal file
View File

@ -0,0 +1,4 @@
# Module react

4
ui/ring/README.md Normal file
View File

@ -0,0 +1,4 @@
# Module ring

View File

@ -0,0 +1,32 @@
# Module visionforge-core
## Usage
## Artifact:
The Maven coordinates of this project are `space.kscience:visionforge-core:0.2.0`.
**Gradle Groovy:**
```groovy
repositories {
maven { url 'https://repo.kotlin.link' }
mavenCentral()
}
dependencies {
implementation 'space.kscience:visionforge-core:0.2.0'
}
```
**Gradle Kotlin DSL:**
```kotlin
repositories {
maven("https://repo.kotlin.link")
mavenCentral()
}
dependencies {
implementation("space.kscience:visionforge-core:0.2.0")
}
```

32
visionforge-fx/README.md Normal file
View File

@ -0,0 +1,32 @@
# Module visionforge-fx
## Usage
## Artifact:
The Maven coordinates of this project are `space.kscience:visionforge-fx:0.2.0`.
**Gradle Groovy:**
```groovy
repositories {
maven { url 'https://repo.kotlin.link' }
mavenCentral()
}
dependencies {
implementation 'space.kscience:visionforge-fx:0.2.0'
}
```
**Gradle Kotlin DSL:**
```kotlin
repositories {
maven("https://repo.kotlin.link")
mavenCentral()
}
dependencies {
implementation("space.kscience:visionforge-fx:0.2.0")
}
```

View File

@ -0,0 +1,32 @@
# Module visionforge-gdml
## Usage
## Artifact:
The Maven coordinates of this project are `space.kscience:visionforge-gdml:0.2.0`.
**Gradle Groovy:**
```groovy
repositories {
maven { url 'https://repo.kotlin.link' }
mavenCentral()
}
dependencies {
implementation 'space.kscience:visionforge-gdml:0.2.0'
}
```
**Gradle Kotlin DSL:**
```kotlin
repositories {
maven("https://repo.kotlin.link")
mavenCentral()
}
dependencies {
implementation("space.kscience:visionforge-gdml:0.2.0")
}
```

View File

@ -0,0 +1,32 @@
# Module visionforge-markdown
## Usage
## Artifact:
The Maven coordinates of this project are `space.kscience:visionforge-markdown:0.2.0`.
**Gradle Groovy:**
```groovy
repositories {
maven { url 'https://repo.kotlin.link' }
mavenCentral()
}
dependencies {
implementation 'space.kscience:visionforge-markdown:0.2.0'
}
```
**Gradle Kotlin DSL:**
```kotlin
repositories {
maven("https://repo.kotlin.link")
mavenCentral()
}
dependencies {
implementation("space.kscience:visionforge-markdown:0.2.0")
}
```

View File

@ -0,0 +1,32 @@
# Module visionforge-plotly
## Usage
## Artifact:
The Maven coordinates of this project are `space.kscience:visionforge-plotly:0.2.0`.
**Gradle Groovy:**
```groovy
repositories {
maven { url 'https://repo.kotlin.link' }
mavenCentral()
}
dependencies {
implementation 'space.kscience:visionforge-plotly:0.2.0'
}
```
**Gradle Kotlin DSL:**
```kotlin
repositories {
maven("https://repo.kotlin.link")
mavenCentral()
}
dependencies {
implementation("space.kscience:visionforge-plotly:0.2.0")
}
```

View File

@ -0,0 +1,32 @@
# Module visionforge-server
## Usage
## Artifact:
The Maven coordinates of this project are `space.kscience:visionforge-server:0.2.0`.
**Gradle Groovy:**
```groovy
repositories {
maven { url 'https://repo.kotlin.link' }
mavenCentral()
}
dependencies {
implementation 'space.kscience:visionforge-server:0.2.0'
}
```
**Gradle Kotlin DSL:**
```kotlin
repositories {
maven("https://repo.kotlin.link")
mavenCentral()
}
dependencies {
implementation("space.kscience:visionforge-server:0.2.0")
}
```

View File

@ -0,0 +1,32 @@
# Module visionforge-solid
## Usage
## Artifact:
The Maven coordinates of this project are `space.kscience:visionforge-solid:0.2.0`.
**Gradle Groovy:**
```groovy
repositories {
maven { url 'https://repo.kotlin.link' }
mavenCentral()
}
dependencies {
implementation 'space.kscience:visionforge-solid:0.2.0'
}
```
**Gradle Kotlin DSL:**
```kotlin
repositories {
maven("https://repo.kotlin.link")
mavenCentral()
}
dependencies {
implementation("space.kscience:visionforge-solid:0.2.0")
}
```

View File

@ -0,0 +1,32 @@
# Module visionforge-tables
## Usage
## Artifact:
The Maven coordinates of this project are `space.kscience:visionforge-tables:0.2.0`.
**Gradle Groovy:**
```groovy
repositories {
maven { url 'https://repo.kotlin.link' }
mavenCentral()
}
dependencies {
implementation 'space.kscience:visionforge-tables:0.2.0'
}
```
**Gradle Kotlin DSL:**
```kotlin
repositories {
maven("https://repo.kotlin.link")
mavenCentral()
}
dependencies {
implementation("space.kscience:visionforge-tables:0.2.0")
}
```

View File

@ -0,0 +1,32 @@
# Module visionforge-threejs
## Usage
## Artifact:
The Maven coordinates of this project are `space.kscience:visionforge-threejs:0.2.0`.
**Gradle Groovy:**
```groovy
repositories {
maven { url 'https://repo.kotlin.link' }
mavenCentral()
}
dependencies {
implementation 'space.kscience:visionforge-threejs:0.2.0'
}
```
**Gradle Kotlin DSL:**
```kotlin
repositories {
maven("https://repo.kotlin.link")
mavenCentral()
}
dependencies {
implementation("space.kscience:visionforge-threejs:0.2.0")
}
```

View File

@ -0,0 +1,32 @@
# Module visionforge-threejs-server
## Usage
## Artifact:
The Maven coordinates of this project are `space.kscience:visionforge-threejs-server:0.2.0`.
**Gradle Groovy:**
```groovy
repositories {
maven { url 'https://repo.kotlin.link' }
mavenCentral()
}
dependencies {
implementation 'space.kscience:visionforge-threejs-server:0.2.0'
}
```
**Gradle Kotlin DSL:**
```kotlin
repositories {
maven("https://repo.kotlin.link")
mavenCentral()
}
dependencies {
implementation("space.kscience:visionforge-threejs-server:0.2.0")
}
```