forked from NPM/numass-framework
start working on webUI
This commit is contained in:
parent
2baf583473
commit
650e789fc5
42
numass-web-control/.gitignore
vendored
Normal file
42
numass-web-control/.gitignore
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
.gradle
|
||||
build/
|
||||
!gradle/wrapper/gradle-wrapper.jar
|
||||
!**/src/main/**/build/
|
||||
!**/src/test/**/build/
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea/modules.xml
|
||||
.idea/jarRepositories.xml
|
||||
.idea/compiler.xml
|
||||
.idea/libraries/
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
out/
|
||||
!**/src/main/**/out/
|
||||
!**/src/test/**/out/
|
||||
|
||||
### Eclipse ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
bin/
|
||||
!**/src/main/**/bin/
|
||||
!**/src/test/**/bin/
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
/dist/
|
||||
/nbdist/
|
||||
/.nb-gradle/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
||||
|
||||
### Mac OS ###
|
||||
.DS_Store
|
25
numass-web-control/build.gradle.kts
Normal file
25
numass-web-control/build.gradle.kts
Normal file
@ -0,0 +1,25 @@
|
||||
plugins {
|
||||
application
|
||||
}
|
||||
|
||||
group = "inr.numass"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
testImplementation(platform("org.junit:junit-bom:5.9.1"))
|
||||
testImplementation("org.junit.jupiter:junit-jupiter")
|
||||
implementation("io.ktor:ktor-server-core:2.3.7")
|
||||
implementation("io.ktor:ktor-server-netty:2.3.7")
|
||||
|
||||
}
|
||||
|
||||
tasks.test {
|
||||
useJUnitPlatform()
|
||||
}
|
||||
|
||||
application {
|
||||
mainClass.set("inr.numass.webcontrol.ServerKt")
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package inr.numass.webcontrol
|
||||
|
||||
import io.ktor.server.routing.*
|
||||
import io.ktor.http.*
|
||||
import io.ktor.server.application.*
|
||||
import io.ktor.server.response.*
|
||||
import io.ktor.server.request.*
|
||||
import io.ktor.server.engine.*
|
||||
import io.ktor.server.netty.*
|
||||
import java.nio.file.Paths
|
||||
import io.ktor.server.http.content.*
|
||||
fun main() {
|
||||
var clickNumber = 0
|
||||
embeddedServer(Netty, port = 8000) {
|
||||
|
||||
routing {
|
||||
staticFiles("/", Paths.get(this.javaClass.classLoader.getResource("index.html").toURI()).toFile().parentFile)
|
||||
get ("/api") {
|
||||
call.respondText(call.parameters.toString())
|
||||
}
|
||||
get ("/api/clicker") {
|
||||
call.respondText(clickNumber++.toString())
|
||||
}
|
||||
}
|
||||
}.start(wait = true)
|
||||
}
|
44
numass-web-control/src/main/resources/index.html
Normal file
44
numass-web-control/src/main/resources/index.html
Normal file
@ -0,0 +1,44 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Amogus</title>
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
</head>
|
||||
<body>
|
||||
<div>
|
||||
<button id="measure" type="button" class="myButton">Measure</button>
|
||||
<button id="store" type="button" class="myButton">Store</button>
|
||||
|
||||
Update interval:
|
||||
<input type="radio" value="1" name="interval" checked />
|
||||
<input type="radio" value="5" name="interval" />
|
||||
<input type="radio" value="10" name="interval" />
|
||||
<input type="radio" value="15" name="interval" />
|
||||
|
||||
<button id="log" type="button" class="logButton">Log</button>
|
||||
</div>
|
||||
<div id="lower">
|
||||
<canvas id="graph"></canvas>
|
||||
<div id="sidebar">
|
||||
<div class="card">
|
||||
<div class="upperSection">
|
||||
<span>Name</span>
|
||||
<input class="switch" type="checkbox">
|
||||
</div>
|
||||
<hr>
|
||||
<div class="middleSection">
|
||||
<span>Undefined</span>
|
||||
<span>mbar</span>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="powerSection">
|
||||
<span>Power</span>
|
||||
<input class="switch" type="checkbox">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="/script.js"></script>
|
||||
</body>
|
||||
</html>
|
15
numass-web-control/src/main/resources/script.js
Normal file
15
numass-web-control/src/main/resources/script.js
Normal file
@ -0,0 +1,15 @@
|
||||
function clickCounter(e) {
|
||||
fetch("/api/clicker")
|
||||
.then((response) => response.text())
|
||||
.then((text) => { document.querySelector("#click1").innerHTML=text } )
|
||||
}
|
||||
|
||||
function cycle() {
|
||||
console.log("asdffg")
|
||||
|
||||
setTimeout(cycle, document.querySelector("input[name='interval']:checked").value * 1000)
|
||||
}
|
||||
|
||||
|
||||
//document.querySelector("#click1").addEventListener('click', clickCounter)
|
||||
cycle()
|
74
numass-web-control/src/main/resources/styles.css
Normal file
74
numass-web-control/src/main/resources/styles.css
Normal file
@ -0,0 +1,74 @@
|
||||
.myButton {
|
||||
color: bisque;
|
||||
background: crimson;
|
||||
}
|
||||
|
||||
.testButton {
|
||||
color: magenta;
|
||||
background: cyan;
|
||||
}
|
||||
#log {
|
||||
color: magenta;
|
||||
background: cyan;
|
||||
float: right;
|
||||
}
|
||||
#graph {
|
||||
background: burlywood;
|
||||
width: 80%;
|
||||
}
|
||||
body {
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
#lower {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
}
|
||||
.upperSection {
|
||||
background: lightblue
|
||||
}
|
||||
#sidebar {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.card {
|
||||
border: 1px black solid;
|
||||
padding: .25em;
|
||||
}
|
||||
|
||||
input.switch {
|
||||
position: relative;
|
||||
float: right;
|
||||
left: -1em;
|
||||
}
|
||||
|
||||
input.switch:before {
|
||||
content: ' ';
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 3em;
|
||||
height: 1em;
|
||||
background: gray;
|
||||
left: -1em;
|
||||
border-radius: 0.5em;
|
||||
}
|
||||
|
||||
input.switch:after {
|
||||
content: ' ';
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
background: red;
|
||||
left: -1em;
|
||||
border-radius: 0.5em;
|
||||
transition: .25s ease;
|
||||
}
|
||||
|
||||
input.switch:checked:after {
|
||||
left: 1em;
|
||||
background: green;
|
||||
}
|
@ -53,4 +53,4 @@ include("numass-core:numass-data-proto")
|
||||
include("numass-core:numass-signal-processing")
|
||||
|
||||
include(":numass-viewer")
|
||||
|
||||
include("numass-web-control")
|
||||
|
Loading…
Reference in New Issue
Block a user