Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
Executable
+4
@@ -0,0 +1,4 @@
|
||||
[Dolphin]
|
||||
Timestamp=2022,3,16,16,32,14
|
||||
Version=4
|
||||
ViewMode=1
|
||||
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
|
After Width: | Height: | Size: 113 KiB |
Executable
+40
@@ -0,0 +1,40 @@
|
||||
body{
|
||||
width: 99%;
|
||||
height: auto;
|
||||
margin: 10px;
|
||||
|
||||
}
|
||||
h1 {
|
||||
margin-left: 10px;
|
||||
color: white;
|
||||
padding: 10px;
|
||||
}
|
||||
#header {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
background-color: rgb(90, 90, 90)
|
||||
}
|
||||
.list-lvl1 {
|
||||
font-size: large;
|
||||
font-weight: bold;
|
||||
list-style-type: none;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.list-lvl2 {
|
||||
font-size: medium;
|
||||
font-weight: normal;
|
||||
list-style-type: disc;
|
||||
padding-top: 0px;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.list-lvl3{
|
||||
font-size: medium;
|
||||
list-style-type: circle;
|
||||
padding-top: 0px;
|
||||
}
|
||||
|
||||
.table-condensed{
|
||||
font-size: 12px;
|
||||
}
|
||||
Executable
+50
@@ -0,0 +1,50 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>wsTool</title>
|
||||
<link rel="stylesheet" href="../include/bootstrap/css/bootstrap.css">
|
||||
<link rel="stylesheet" href="index.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<h1 id="headline">
|
||||
WebSocket Tool
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<!--Connect-->
|
||||
<div class="form-control">
|
||||
<div class="m-1">
|
||||
<label class="form-label">IP-Adresse eingeben:</label>
|
||||
</div>
|
||||
<div class="row g-3">
|
||||
|
||||
<div class="col-auto">
|
||||
<input class="form-control border-danger" type="text" name="" id="IpInputForm" value="ws://localhost:7300">
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<button class="btn btn-primary mb-1" onclick="webSocketConnect()">Connect</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<!--Button-->
|
||||
<div id="ButtonContainer" hidden>
|
||||
<button class="btn btn-primary btn-lg" onclick="servicePortsInformationRequest()">Send <i>servicePortsInformationRequest</i></button>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<!--Liste-->
|
||||
<div class="form-control" id="ListContainer" hidden>
|
||||
<ul class="list-lvl1" id="ExerciseList" >
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<script src="../include/bootstrap/js/bootstrap.js"></script>
|
||||
<script src="script.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Executable
+71
@@ -0,0 +1,71 @@
|
||||
var ws;
|
||||
var thisURL = window.location;
|
||||
|
||||
//HTML-ELemente get
|
||||
var searchContent = new URLSearchParams (thisURL.search);
|
||||
|
||||
var ipInputForm = document.getElementById('iIpInputForm');
|
||||
var exerciseListContainer = document.getElementById('ExerciseList');
|
||||
|
||||
webSocketConnect = function () {
|
||||
|
||||
ws = new WebSocket (document.getElementById("IpInputForm").value);
|
||||
ws.onopen = function () {
|
||||
document.getElementById("IpInputForm").classList.replace("border-danger", "border-success");
|
||||
document.getElementById('ButtonContainer').hidden = false;
|
||||
}
|
||||
|
||||
ws.onmessage = function (msg) {
|
||||
document.getElementById('ListContainer').hidden = false;
|
||||
var object = (JSON.parse(msg.data)).data;
|
||||
object.forEach((item, index, array) => {
|
||||
var exerciseEntry = document.createElement('li');
|
||||
var managementList = document.createElement('ul');
|
||||
managementList.id = object[index].exerciseId;
|
||||
managementList.className = "list-lvl2";
|
||||
exerciseEntry.innerHTML = "Exercise: " + object[index].exerciseId;
|
||||
exerciseListContainer.appendChild(exerciseEntry); //Reihenfolge?
|
||||
exerciseListContainer.appendChild(managementList); //Reihenfolge?
|
||||
(object[index].services).forEach((item, index2, array) => {
|
||||
var managementListContainer = document.getElementById (object[index].exerciseId);
|
||||
var managementEntry = document.createElement('li');
|
||||
var portList = document.createElement('ul');
|
||||
portList.id = object[index].exerciseId + object[index].services[index2].name;
|
||||
portList.className = "list-lvl3";
|
||||
managementEntry.innerHTML = "Service: " + object[index].services[index2].name;
|
||||
managementListContainer.appendChild(managementEntry); //Reihenfolge?
|
||||
managementListContainer.appendChild(portList); //Reihenfolge?
|
||||
(object[index].services[index2].ports).forEach((item, index3, array) => {
|
||||
//Query String konstruieren
|
||||
var queryString = new URLSearchParams();
|
||||
queryString.append ('exc', object[index].exerciseId);
|
||||
queryString.append ('svc', object[index].services[index2].nameAbbrevation);
|
||||
queryString.append ('port', object[index].services[index2].ports[index3].number);
|
||||
queryString.append ('typeid', object[index].services[index2].ports[index3].typeId);
|
||||
var portListContainer = document.getElementById (object[index].exerciseId + object[index].services[index2].name);
|
||||
//Port-Element erstellen
|
||||
var portLink = document.createElement('a');
|
||||
portLink.href = 'wsTool.html' + '?' + queryString;
|
||||
portLink.innerHTML = object[index].services[index2].ports[index3].number;
|
||||
var portEntry = document.createElement('li');
|
||||
portEntry.innerHTML = "Port: ";
|
||||
portEntry.innerHTML += '<a href=' + portLink.toString() +' target="_blank">'+ object[index].services[index2].ports[index3].number; +'</a>';
|
||||
portEntry.innerHTML += " (TypeID: "+object[index].services[index2].ports[index3].typeId+")";
|
||||
portListContainer.appendChild(portEntry);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
ws.onclose = function () {
|
||||
document.getElementById("IpInputForm").classList.replace("border-success", "border-danger");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function servicePortsInformationRequest() {
|
||||
|
||||
ws.send(JSON.stringify({
|
||||
type: "servicePortsInformationRequest",
|
||||
uuid: "UUID"
|
||||
}));
|
||||
}
|
||||
Executable
+161
@@ -0,0 +1,161 @@
|
||||
var buttonsAdded = false;
|
||||
|
||||
export function getLongName () {
|
||||
return "Asset Management";
|
||||
}
|
||||
|
||||
export function createButtons (webSocket) {
|
||||
//Container
|
||||
if (!buttonsAdded){
|
||||
//Base Dl Request
|
||||
var baseDlRequestContainer = document.createElement("div");
|
||||
baseDlRequestContainer.id = "BaseDlRequestContainer";
|
||||
baseDlRequestContainer.className = "py-1";
|
||||
//Button
|
||||
var baseDlRequestBtn = document.createElement("button");
|
||||
baseDlRequestBtn.id = "BaseDlRequestBtn";
|
||||
baseDlRequestBtn.classList.add ("btn", "btn-primary");
|
||||
baseDlRequestBtn.innerHTML = "Send <i>BaseDlRequest</i>";
|
||||
//Append
|
||||
(document.getElementById ("RequestButtonContainer")).appendChild (baseDlRequestContainer);
|
||||
(document.getElementById ("BaseDlRequestContainer")).appendChild (baseDlRequestBtn);
|
||||
//Funktion
|
||||
document.getElementById("BaseDlRequestBtn").addEventListener('click', function() {
|
||||
baseDlRequest(webSocket);
|
||||
});
|
||||
|
||||
/*
|
||||
//get Asset State
|
||||
var getAssetStateContainer = document.createElement("div");
|
||||
getAssetStateContainer.id = "GetAssetStateContainer";
|
||||
getAssetStateContainer.className = "py-1";
|
||||
//Form
|
||||
var string = '<div class="input-group"><input id="GetAssetState1" type="text" class="form-control border-primary" placeholder="Asset ID"><input id="GetAssetState2" type="text" class="form-control border-primary" placeholder="Asset Tag"><input id="GetAssetState3" type="text" class="form-control border-primary" placeholder="UUID"><button id= "GetAssetStateBtn" class="btn btn-primary" type="button" id="button-addon2">get Asset State</button></div>'
|
||||
getAssetStateContainer.innerHTML = string;
|
||||
//Append
|
||||
(document.getElementById ("RequestButtonContainer")).appendChild (getAssetStateContainer);
|
||||
//Funktion
|
||||
document.getElementById("GetAssetStateBtn").addEventListener('click', function() {
|
||||
getAssetState(webSocket);
|
||||
});
|
||||
|
||||
//get Building State
|
||||
var getBuildingStateContainer = document.createElement("div");
|
||||
getBuildingStateContainer.id = "GetBuildingStateContainer";
|
||||
getBuildingStateContainer.className = "py-1";
|
||||
//Form
|
||||
var string = '<div class="input-group"><input id="GetBuildingState1" type="text" class="form-control border-primary" placeholder="Building ID"><input id="GetBuildingState2" type="text" class="form-control border-primary" placeholder="UUID"><button id= "GetBuildingStateBtn" class="btn btn-primary" type="button" id="button-addon2">get Building State</button></div>'
|
||||
getBuildingStateContainer.innerHTML = string;
|
||||
//Append
|
||||
(document.getElementById ("RequestButtonContainer")).appendChild (getBuildingStateContainer);
|
||||
//Funktion
|
||||
document.getElementById("GetBuildingStateBtn").addEventListener('click', function() {
|
||||
getBuildingState(webSocket);
|
||||
});
|
||||
|
||||
//get Building State
|
||||
var getAssetsContainer = document.createElement("div");
|
||||
getAssetsContainer.id = "GetAssetsContainer";
|
||||
getAssetsContainer.className = "py-1";
|
||||
//Form
|
||||
var string = '<div class="input-group"><input id="GetAssets1" type="text" class="form-control border-primary" placeholder="Asset Type ID"><input id="GetAssets2" type="text" class="form-control border-primary" placeholder="UUID"><button id= "GetAssetsBtn" class="btn btn-primary" type="button" id="button-addon2">get Assets</button></div>'
|
||||
getAssetsContainer.innerHTML = string;
|
||||
//Append
|
||||
(document.getElementById ("RequestButtonContainer")).appendChild (getAssetsContainer);
|
||||
//Funktion
|
||||
document.getElementById("GetAssetsBtn").addEventListener('click', function() {
|
||||
sendGetAssets(webSocket);
|
||||
});
|
||||
*/
|
||||
|
||||
buttonsAdded = true;
|
||||
}
|
||||
}
|
||||
|
||||
export function decryptMessage (message) {
|
||||
document.getElementById("OutputContainer").hidden = false
|
||||
|
||||
var table = document.createElement ("table");
|
||||
table.classList.add("table","table-hover", "table-condensed");
|
||||
var tHead = document.createElement ("thead");
|
||||
var tBody = document.createElement ("tbody");
|
||||
var headRow = document.createElement ("tr");
|
||||
var accordionItem = document.createElement ("div")
|
||||
accordionItem.className = "accordion-item";
|
||||
accordionItem.innerHTML = `<h2 class="accordion-header" id="heading-${JSON.parse(message.data).type}">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-${JSON.parse(message.data).type}">
|
||||
${JSON.parse(message.data).type}
|
||||
</button>
|
||||
</h2>
|
||||
<div id="collapse-${JSON.parse(message.data).type}" class="accordion-collapse collapse show" data-bs-parent="#Output">
|
||||
<div id="body-${JSON.parse(message.data).type}" class="accordion-body"></div>
|
||||
</div>
|
||||
</div>`
|
||||
|
||||
var keys = new Map;
|
||||
JSON.parse(message.data).data.forEach ((item, index, array) => {
|
||||
var keyIndexCounter = keys.size;
|
||||
for (var key in item){
|
||||
if (!keys.has(key)){
|
||||
var headCell = headRow.insertCell(keys.size);
|
||||
headCell.innerHTML = key;
|
||||
keys.set(key, keyIndexCounter);
|
||||
keyIndexCounter++;
|
||||
}
|
||||
}
|
||||
var row = tBody.insertRow();
|
||||
for (var key of keys) {
|
||||
var cell = row.insertCell (keys.get(key));
|
||||
if (typeof item[key[0]] === 'object') { //Objekt formatieren, falls erforderlich - Funktion rekursiv aufrufen?
|
||||
cell.innerHTML = JSON.stringify(item[key[0]])
|
||||
}
|
||||
else cell.innerHTML = item[key[0]];
|
||||
}
|
||||
});
|
||||
tHead.appendChild (headRow);
|
||||
table.appendChild (tHead);
|
||||
table.appendChild (tBody);
|
||||
document.getElementById("Output").appendChild (accordionItem);
|
||||
document.getElementById("body-" + JSON.parse(message.data).type).appendChild(table);
|
||||
}
|
||||
|
||||
//Requests
|
||||
function baseDlRequest(webSocket) {
|
||||
webSocket.send(JSON.stringify({
|
||||
type: "baseDlRequest",
|
||||
uuid: "UUID"
|
||||
}));
|
||||
}
|
||||
|
||||
function sendGetAssets(webSocket) {
|
||||
webSocket.send(JSON.stringify({
|
||||
type: "getAssets",
|
||||
uuid: document.getElementById("GetAssets2").value,
|
||||
data: {
|
||||
assetTypeId: document.getElementById("GetAssets1").value
|
||||
}
|
||||
}));
|
||||
|
||||
}
|
||||
|
||||
function getAssetState(webSocket) {
|
||||
webSocket.send(JSON.stringify({
|
||||
type: "getAssetState",
|
||||
assetId: document.getElementById("GetAssetState1").value,
|
||||
assetTag: document.getElementById("GetAssetState2").value,
|
||||
uuid: document.getElementById("GetAssetState3").value
|
||||
}));
|
||||
}
|
||||
|
||||
function getBuildingState(webSocket) {
|
||||
webSocket.send(JSON.stringify({
|
||||
type: "getBuildingState",
|
||||
uuid: document.getElementById("GetBuildingState2").value,
|
||||
data: {
|
||||
buildingId: document.getElementById("GetBuildingState1").value
|
||||
}
|
||||
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
Executable
+87
@@ -0,0 +1,87 @@
|
||||
var buttonsAdded = false;
|
||||
|
||||
|
||||
export function getLongName () {
|
||||
return "Building";
|
||||
}
|
||||
|
||||
export function createButtons (webSocket) {
|
||||
//Container
|
||||
if (!buttonsAdded){
|
||||
|
||||
//Base Dl Request
|
||||
var buildingRequestContainer = document.createElement("div");
|
||||
buildingRequestContainer.id = "buildingRequestContainer";
|
||||
buildingRequestContainer.className = "py-1";
|
||||
//Button
|
||||
var buildingRequestBtn = document.createElement("button");
|
||||
buildingRequestBtn.id = "buildingRequestBtn";
|
||||
buildingRequestBtn.classList.add ("btn", "btn-primary");
|
||||
buildingRequestBtn.innerHTML = "Send <i>BuildingRequest</i>";
|
||||
//Append
|
||||
(document.getElementById ("RequestButtonContainer")).appendChild (buildingRequestContainer);
|
||||
(document.getElementById ("buildingRequestContainer")).appendChild (buildingRequestBtn);
|
||||
//Funktion
|
||||
document.getElementById("buildingRequestBtn").addEventListener('click', function() {
|
||||
buildingRequest(webSocket);
|
||||
});
|
||||
buttonsAdded = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export function decryptMessage (message) {
|
||||
document.getElementById("OutputContainer").hidden = false
|
||||
|
||||
var table = document.createElement ("table");
|
||||
table.classList.add("table","table-hover", "table-condensed");
|
||||
var tHead = document.createElement ("thead");
|
||||
var tBody = document.createElement ("tbody");
|
||||
var headRow = document.createElement ("tr");
|
||||
var accordionItem = document.createElement ("div")
|
||||
accordionItem.className = "accordion-item";
|
||||
accordionItem.innerHTML = `<h2 class="accordion-header" id="heading-${JSON.parse(message.data).type}">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-${JSON.parse(message.data).type}">
|
||||
${JSON.parse(message.data).type}
|
||||
</button>
|
||||
</h2>
|
||||
<div id="collapse-${JSON.parse(message.data).type}" class="accordion-collapse collapse show" data-bs-parent="#Output">
|
||||
<div id="body-${JSON.parse(message.data).type}" class="accordion-body"></div>
|
||||
</div>
|
||||
</div>`
|
||||
|
||||
var keys = new Map;
|
||||
JSON.parse(message.data).data.forEach ((item, index, array) => {
|
||||
var keyIndexCounter = keys.size;
|
||||
for (var key in item){
|
||||
if (!keys.has(key)){
|
||||
var headCell = headRow.insertCell(keys.size);
|
||||
headCell.innerHTML = key;
|
||||
keys.set(key, keyIndexCounter);
|
||||
keyIndexCounter++;
|
||||
}
|
||||
}
|
||||
var row = tBody.insertRow();
|
||||
for (var key of keys) {
|
||||
var cell = row.insertCell (keys.get(key));
|
||||
if (typeof item[key[0]] === 'object') { //Objekt formatieren, falls erforderlich - Funktion rekursiv aufrufen?
|
||||
cell.innerHTML = JSON.stringify(item[key[0]])
|
||||
}
|
||||
else cell.innerHTML = item[key[0]];
|
||||
}
|
||||
});
|
||||
tHead.appendChild (headRow);
|
||||
table.appendChild (tHead);
|
||||
table.appendChild (tBody);
|
||||
document.getElementById("Output").appendChild (accordionItem);
|
||||
document.getElementById("body-" + JSON.parse(message.data).type).appendChild(table);
|
||||
}
|
||||
|
||||
//Requests
|
||||
function buildingRequest(webSocket) {
|
||||
|
||||
webSocket.send(JSON.stringify({
|
||||
type: "buildingRequest",
|
||||
uuid: "UUID"
|
||||
}));
|
||||
}
|
||||
Executable
+86
@@ -0,0 +1,86 @@
|
||||
var buttonsAdded = false;
|
||||
|
||||
export function getLongName () {
|
||||
return "Exercise Event Management";
|
||||
}
|
||||
|
||||
export function createButtons (webSocket) {
|
||||
//Container
|
||||
if (!buttonsAdded){
|
||||
|
||||
//Base Dl Request
|
||||
var baseDlRequestContainer = document.createElement("div");
|
||||
baseDlRequestContainer.id = "BaseDlRequestContainer";
|
||||
baseDlRequestContainer.className = "py-1";
|
||||
//Button
|
||||
var baseDlRequestBtn = document.createElement("button");
|
||||
baseDlRequestBtn.id = "BaseDlRequestBtn";
|
||||
baseDlRequestBtn.classList.add ("btn", "btn-primary");
|
||||
baseDlRequestBtn.innerHTML = "Send <i>BaseDlRequest</i>";
|
||||
//Append
|
||||
(document.getElementById ("RequestButtonContainer")).appendChild (baseDlRequestContainer);
|
||||
(document.getElementById ("BaseDlRequestContainer")).appendChild (baseDlRequestBtn);
|
||||
//Funktion
|
||||
document.getElementById("BaseDlRequestBtn").addEventListener('click', function() {
|
||||
baseDlRequest(webSocket);
|
||||
});
|
||||
buttonsAdded = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export function decryptMessage (message) {
|
||||
document.getElementById("OutputContainer").hidden = false
|
||||
|
||||
var table = document.createElement ("table");
|
||||
table.classList.add("table","table-hover", "table-condensed");
|
||||
var tHead = document.createElement ("thead");
|
||||
var tBody = document.createElement ("tbody");
|
||||
var headRow = document.createElement ("tr");
|
||||
var accordionItem = document.createElement ("div")
|
||||
accordionItem.className = "accordion-item";
|
||||
accordionItem.innerHTML = `<h2 class="accordion-header" id="heading-${JSON.parse(message.data).type}">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-${JSON.parse(message.data).type}">
|
||||
${JSON.parse(message.data).type}
|
||||
</button>
|
||||
</h2>
|
||||
<div id="collapse-${JSON.parse(message.data).type}" class="accordion-collapse collapse show" data-bs-parent="#Output">
|
||||
<div id="body-${JSON.parse(message.data).type}" class="accordion-body"></div>
|
||||
</div>
|
||||
</div>`
|
||||
|
||||
var keys = new Map;
|
||||
JSON.parse(message.data).data.forEach ((item, index, array) => {
|
||||
var keyIndexCounter = keys.size;
|
||||
for (var key in item){
|
||||
if (!keys.has(key)){
|
||||
var headCell = headRow.insertCell(keys.size);
|
||||
headCell.innerHTML = key;
|
||||
keys.set(key, keyIndexCounter);
|
||||
keyIndexCounter++;
|
||||
}
|
||||
}
|
||||
var row = tBody.insertRow();
|
||||
for (var key of keys) {
|
||||
var cell = row.insertCell (keys.get(key));
|
||||
if (typeof item[key[0]] === 'object') { //Objekt formatieren, falls erforderlich - Funktion rekursiv aufrufen?
|
||||
cell.innerHTML = JSON.stringify(item[key[0]])
|
||||
}
|
||||
else cell.innerHTML = item[key[0]];
|
||||
}
|
||||
});
|
||||
tHead.appendChild (headRow);
|
||||
table.appendChild (tHead);
|
||||
table.appendChild (tBody);
|
||||
document.getElementById("Output").appendChild (accordionItem);
|
||||
document.getElementById("body-" + JSON.parse(message.data).type).appendChild(table);
|
||||
}
|
||||
|
||||
//Requests
|
||||
function baseDlRequest(webSocket) {
|
||||
|
||||
webSocket.send(JSON.stringify({
|
||||
type: "baseDlRequest",
|
||||
uuid: "UUID"
|
||||
}));
|
||||
}
|
||||
Executable
+110
@@ -0,0 +1,110 @@
|
||||
var buttonsAdded = false;
|
||||
|
||||
export function getLongName () {
|
||||
return "Exercise Management";
|
||||
}
|
||||
|
||||
export function createButtons (webSocket) {
|
||||
//Container
|
||||
if (!buttonsAdded){
|
||||
//Exercise Information Request
|
||||
var ExerciseInformationRequestContainer = document.createElement("div");
|
||||
ExerciseInformationRequestContainer.id = "ExerciseInformationRequestContainer";
|
||||
ExerciseInformationRequestContainer.className = "py-1";
|
||||
//Button
|
||||
var ExerciseInformationRequestBtn = document.createElement("button");
|
||||
ExerciseInformationRequestBtn.id = "ExerciseInformationRequestBtn";
|
||||
ExerciseInformationRequestBtn.classList.add ("btn", "btn-primary");
|
||||
ExerciseInformationRequestBtn.innerHTML = "Send <i>ExerciseInformationRequest</i>";
|
||||
//Append
|
||||
(document.getElementById ("RequestButtonContainer")).appendChild (ExerciseInformationRequestContainer);
|
||||
(document.getElementById ("ExerciseInformationRequestContainer")).appendChild (ExerciseInformationRequestBtn);
|
||||
//Funktion
|
||||
document.getElementById("ExerciseInformationRequestBtn").addEventListener('click', function() {
|
||||
exerciseInformationRequest(webSocket);
|
||||
});
|
||||
|
||||
//Base Dl Request
|
||||
var baseDlRequestContainer = document.createElement("div");
|
||||
baseDlRequestContainer.id = "BaseDlRequestContainer";
|
||||
baseDlRequestContainer.className = "py-1";
|
||||
//Button
|
||||
var baseDlRequestBtn = document.createElement("button");
|
||||
baseDlRequestBtn.id = "BaseDlRequestBtn";
|
||||
baseDlRequestBtn.classList.add ("btn", "btn-primary");
|
||||
baseDlRequestBtn.innerHTML = "Send <i>BaseDlRequest</i>";
|
||||
//Append
|
||||
(document.getElementById ("RequestButtonContainer")).appendChild (baseDlRequestContainer);
|
||||
(document.getElementById ("BaseDlRequestContainer")).appendChild (baseDlRequestBtn);
|
||||
//Funktion
|
||||
document.getElementById("BaseDlRequestBtn").addEventListener('click', function() {
|
||||
baseDlRequest(webSocket);
|
||||
});
|
||||
buttonsAdded = true;
|
||||
}
|
||||
}
|
||||
|
||||
export function decryptMessage (message) {
|
||||
document.getElementById("OutputContainer").hidden = false
|
||||
|
||||
//Container fuer Accordion und Table erzeugen
|
||||
var table = document.createElement ("table");
|
||||
table.classList.add("table","table-hover", "table-condensed");
|
||||
var tHead = document.createElement ("thead");
|
||||
var tBody = document.createElement ("tbody");
|
||||
var headRow = document.createElement ("tr");
|
||||
var accordionItem = document.createElement ("div")
|
||||
accordionItem.className = "accordion-item";
|
||||
accordionItem.innerHTML = `<h2 class="accordion-header" id="heading-${JSON.parse(message.data).type}">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-${JSON.parse(message.data).type}">
|
||||
${JSON.parse(message.data).type}
|
||||
</button>
|
||||
</h2>
|
||||
<div id="collapse-${JSON.parse(message.data).type}" class="accordion-collapse collapse show" data-bs-parent="#Output">
|
||||
<div id="body-${JSON.parse(message.data).type}" class="accordion-body"></div>
|
||||
</div>
|
||||
</div>`
|
||||
|
||||
//WebSocket-Message in Table
|
||||
var keys = new Map;
|
||||
JSON.parse(message.data).data.forEach ((item, index, array) => {
|
||||
var keyIndexCounter = keys.size;
|
||||
for (var key in item){
|
||||
if (!keys.has(key)){
|
||||
var headCell = headRow.insertCell(keys.size);
|
||||
headCell.innerHTML = key;
|
||||
keys.set(key, keyIndexCounter);
|
||||
keyIndexCounter++;
|
||||
}
|
||||
}
|
||||
var row = tBody.insertRow();
|
||||
for (var key of keys) {
|
||||
var cell = row.insertCell (keys.get(key));
|
||||
cell.innerHTML = item[key[0]];
|
||||
}
|
||||
});
|
||||
|
||||
//Append
|
||||
tHead.appendChild (headRow);
|
||||
table.appendChild (tHead);
|
||||
table.appendChild (tBody);
|
||||
document.getElementById("Output").appendChild (accordionItem);
|
||||
document.getElementById("body-" + JSON.parse(message.data).type).appendChild(table);
|
||||
}
|
||||
|
||||
//Requests
|
||||
function exerciseInformationRequest (webSocket) {
|
||||
|
||||
webSocket.send(JSON.stringify({
|
||||
type: "exerciseInformationRequest",
|
||||
uuid: "UUID"
|
||||
}));
|
||||
}
|
||||
|
||||
function baseDlRequest(webSocket) {
|
||||
|
||||
webSocket.send(JSON.stringify({
|
||||
type: "baseDlRequest",
|
||||
uuid: "UUID"
|
||||
}));
|
||||
}
|
||||
Executable
+110
@@ -0,0 +1,110 @@
|
||||
var buttonsAdded = false;
|
||||
|
||||
export function getLongName () {
|
||||
return "File Management";
|
||||
}
|
||||
|
||||
export function createButtons (webSocket) {
|
||||
//Container
|
||||
if (!buttonsAdded){
|
||||
//PDF List Request
|
||||
var pdfListRequestContainer = document.createElement("div");
|
||||
pdfListRequestContainer.id = "pdfListRequestContainer";
|
||||
pdfListRequestContainer.className = "py-1";
|
||||
//Button
|
||||
var pdfListRequestBtn = document.createElement("button");
|
||||
pdfListRequestBtn.id = "pdfListRequestBtn";
|
||||
pdfListRequestBtn.classList.add ("btn", "btn-primary");
|
||||
pdfListRequestBtn.innerHTML = "Send <i>pdfListRequest</i>";
|
||||
//Append
|
||||
(document.getElementById ("RequestButtonContainer")).appendChild (pdfListRequestContainer);
|
||||
(document.getElementById ("pdfListRequestContainer")).appendChild (pdfListRequestBtn);
|
||||
//Funktion
|
||||
document.getElementById("pdfListRequestBtn").addEventListener('click', function() {
|
||||
pdfListRequest(webSocket);
|
||||
});
|
||||
|
||||
/*
|
||||
//get Building State
|
||||
var pdfDataContainer = document.createElement("div");
|
||||
pdfDataContainer.id = "pdfDataContainer";
|
||||
pdfDataContainer.className = "py-1";
|
||||
//Form
|
||||
var string = '<div class="input-group"><input id="PdfData1" type="text" class="form-control border-primary" placeholder="Exercise ID"><input id="PdfData2" type="text" class="form-control border-primary" placeholder="UUID"><button id= "PdfDataBtn" class="btn btn-primary" type="button" id="button-addon2">get PDF Data</button></div>'
|
||||
pdfDataContainer.innerHTML = string;
|
||||
//Append
|
||||
(document.getElementById ("RequestButtonContainer")).appendChild (pdfDataContainer);
|
||||
//Funktion
|
||||
document.getElementById("PdfDataBtn").addEventListener('click', function() {
|
||||
pdfListData(webSocket);
|
||||
});
|
||||
*/
|
||||
|
||||
buttonsAdded = true;
|
||||
}
|
||||
}
|
||||
|
||||
export function decryptMessage (message) {
|
||||
document.getElementById("OutputContainer").hidden = false
|
||||
|
||||
var table = document.createElement ("table");
|
||||
table.classList.add("table","table-hover", "table-condensed");
|
||||
var tHead = document.createElement ("thead");
|
||||
var tBody = document.createElement ("tbody");
|
||||
var headRow = document.createElement ("tr");
|
||||
var accordionItem = document.createElement ("div")
|
||||
accordionItem.className = "accordion-item";
|
||||
accordionItem.innerHTML = `<h2 class="accordion-header" id="heading-${JSON.parse(message.data).type}">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-${JSON.parse(message.data).type}">
|
||||
${JSON.parse(message.data).type}
|
||||
</button>
|
||||
</h2>
|
||||
<div id="collapse-${JSON.parse(message.data).type}" class="accordion-collapse collapse show" data-bs-parent="#Output">
|
||||
<div id="body-${JSON.parse(message.data).type}" class="accordion-body"></div>
|
||||
</div>
|
||||
</div>`
|
||||
|
||||
var keys = new Map;
|
||||
JSON.parse(message.data).data.forEach ((item, index, array) => {
|
||||
var keyIndexCounter = keys.size;
|
||||
for (var key in item){
|
||||
if (!keys.has(key)){
|
||||
var headCell = headRow.insertCell(keys.size);
|
||||
headCell.innerHTML = key;
|
||||
keys.set(key, keyIndexCounter);
|
||||
keyIndexCounter++;
|
||||
}
|
||||
}
|
||||
var row = tBody.insertRow();
|
||||
for (var key of keys) {
|
||||
var cell = row.insertCell (keys.get(key));
|
||||
cell.innerHTML = item[key[0]];
|
||||
}
|
||||
});
|
||||
tHead.appendChild (headRow);
|
||||
table.appendChild (tHead);
|
||||
table.appendChild (tBody);
|
||||
document.getElementById("Output").appendChild (accordionItem);
|
||||
document.getElementById("body-" + JSON.parse(message.data).type).appendChild(table);
|
||||
}
|
||||
|
||||
//Requests
|
||||
function pdfListRequest(webSocket) {
|
||||
webSocket.send(JSON.stringify({
|
||||
type: "pdfListRequest",
|
||||
uuid: "UUID"
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
function pdfListData(webSocket) {
|
||||
webSocket.send(JSON.stringify({
|
||||
type: "pdfListData",
|
||||
uuid: document.getElementById("PdfData2").value,
|
||||
data: {
|
||||
exerciseId: document.getElementById("PdfData1").value
|
||||
}
|
||||
}));
|
||||
}
|
||||
*/
|
||||
Executable
+87
@@ -0,0 +1,87 @@
|
||||
var buttonsAdded = false;
|
||||
|
||||
|
||||
export function getLongName () {
|
||||
return "Infrastructure Management";
|
||||
}
|
||||
|
||||
export function createButtons (webSocket) {
|
||||
//Container
|
||||
if (!buttonsAdded){
|
||||
|
||||
//Base Dl Request
|
||||
var baseDlRequestContainer = document.createElement("div");
|
||||
baseDlRequestContainer.id = "BaseDlRequestContainer";
|
||||
baseDlRequestContainer.className = "py-1";
|
||||
//Button
|
||||
var baseDlRequestBtn = document.createElement("button");
|
||||
baseDlRequestBtn.id = "BaseDlRequestBtn";
|
||||
baseDlRequestBtn.classList.add ("btn", "btn-primary");
|
||||
baseDlRequestBtn.innerHTML = "Send <i>BaseDlRequest</i>";
|
||||
//Append
|
||||
(document.getElementById ("RequestButtonContainer")).appendChild (baseDlRequestContainer);
|
||||
(document.getElementById ("BaseDlRequestContainer")).appendChild (baseDlRequestBtn);
|
||||
//Funktion
|
||||
document.getElementById("BaseDlRequestBtn").addEventListener('click', function() {
|
||||
baseDlRequest(webSocket);
|
||||
});
|
||||
buttonsAdded = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export function decryptMessage (message) {
|
||||
document.getElementById("OutputContainer").hidden = false
|
||||
|
||||
var table = document.createElement ("table");
|
||||
table.classList.add("table","table-hover", "table-condensed");
|
||||
var tHead = document.createElement ("thead");
|
||||
var tBody = document.createElement ("tbody");
|
||||
var headRow = document.createElement ("tr");
|
||||
var accordionItem = document.createElement ("div")
|
||||
accordionItem.className = "accordion-item";
|
||||
accordionItem.innerHTML = `<h2 class="accordion-header" id="heading-${JSON.parse(message.data).type}">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-${JSON.parse(message.data).type}">
|
||||
${JSON.parse(message.data).type}
|
||||
</button>
|
||||
</h2>
|
||||
<div id="collapse-${JSON.parse(message.data).type}" class="accordion-collapse collapse show" data-bs-parent="#Output">
|
||||
<div id="body-${JSON.parse(message.data).type}" class="accordion-body"></div>
|
||||
</div>
|
||||
</div>`
|
||||
|
||||
var keys = new Map;
|
||||
JSON.parse(message.data).data.forEach ((item, index, array) => {
|
||||
var keyIndexCounter = keys.size;
|
||||
for (var key in item){
|
||||
if (!keys.has(key)){
|
||||
var headCell = headRow.insertCell(keys.size);
|
||||
headCell.innerHTML = key;
|
||||
keys.set(key, keyIndexCounter);
|
||||
keyIndexCounter++;
|
||||
}
|
||||
}
|
||||
var row = tBody.insertRow();
|
||||
for (var key of keys) {
|
||||
var cell = row.insertCell (keys.get(key));
|
||||
if (typeof item[key[0]] === 'object') { //Objekt formatieren, falls erforderlich - Funktion rekursiv aufrufen?
|
||||
cell.innerHTML = JSON.stringify(item[key[0]])
|
||||
}
|
||||
else cell.innerHTML = item[key[0]];
|
||||
}
|
||||
});
|
||||
tHead.appendChild (headRow);
|
||||
table.appendChild (tHead);
|
||||
table.appendChild (tBody);
|
||||
document.getElementById("Output").appendChild (accordionItem);
|
||||
document.getElementById("body-" + JSON.parse(message.data).type).appendChild(table);
|
||||
}
|
||||
|
||||
//Requests
|
||||
function baseDlRequest(webSocket) {
|
||||
|
||||
webSocket.send(JSON.stringify({
|
||||
type: "baseDlRequest",
|
||||
uuid: "UUID"
|
||||
}));
|
||||
}
|
||||
Executable
+123
@@ -0,0 +1,123 @@
|
||||
var buttonsAdded = false;
|
||||
|
||||
export function getLongName () {
|
||||
return "Operator Management";
|
||||
}
|
||||
|
||||
export function createButtons (webSocket) {
|
||||
//Container
|
||||
if (!buttonsAdded){
|
||||
//Base Dl Request
|
||||
var baseDlRequestContainer = document.createElement("div");
|
||||
baseDlRequestContainer.id = "BaseDlRequestContainer";
|
||||
baseDlRequestContainer.className = "py-1";
|
||||
//Button
|
||||
var baseDlRequestBtn = document.createElement("button");
|
||||
baseDlRequestBtn.id = "BaseDlRequestBtn";
|
||||
baseDlRequestBtn.classList.add ("btn", "btn-primary");
|
||||
baseDlRequestBtn.innerHTML = "Send <i>BaseDlRequest</i>";
|
||||
//Append
|
||||
(document.getElementById ("RequestButtonContainer")).appendChild (baseDlRequestContainer);
|
||||
(document.getElementById ("BaseDlRequestContainer")).appendChild (baseDlRequestBtn);
|
||||
//Funktion
|
||||
document.getElementById("BaseDlRequestBtn").addEventListener('click', function() {
|
||||
baseDlRequest(webSocket);
|
||||
});
|
||||
buttonsAdded = true;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
export function decryptMessage (message) {
|
||||
document.getElementById("OutputContainer").hidden = false
|
||||
document.getElementById("Output").innerHTML += `<p class= "pt-4 h6"> Message Type: <i>${JSON.parse(message.data).type}</i></p>`;
|
||||
|
||||
var table = document.createElement ("table");
|
||||
table.classList.add("table","table-hover", "table-condensed");
|
||||
var tHead = document.createElement ("thead");
|
||||
var tBody = document.createElement ("tbody");
|
||||
var headRow = document.createElement ("tr");
|
||||
|
||||
var keys = new Map;
|
||||
|
||||
JSON.parse(message.data).data.forEach ((item, index, array) => {
|
||||
var keyIndexCounter = keys.size;
|
||||
for (var key in item){
|
||||
if (!keys.has(key)){
|
||||
var headCell = headRow.insertCell(keys.size);
|
||||
headCell.innerHTML = key;
|
||||
keys.set(key, keyIndexCounter);
|
||||
keyIndexCounter++;
|
||||
}
|
||||
}
|
||||
var row = tBody.insertRow();
|
||||
for (var key of keys) {
|
||||
var cell = row.insertCell (keys.get(key));
|
||||
if (key[0] == "image") { //Base64 dekodieren, falls "Image"
|
||||
cell.innerHTML = `<img src='data:image/png;base64, ${item[key[0]]}' onerror='this.style.display="none"'>`
|
||||
}
|
||||
else cell.innerHTML = item[key[0]];
|
||||
}
|
||||
});
|
||||
tHead.appendChild (headRow);
|
||||
table.appendChild (tHead);
|
||||
table.appendChild (tBody);
|
||||
document.getElementById("Output").appendChild (table);
|
||||
}
|
||||
*/
|
||||
|
||||
export function decryptMessage (message) {
|
||||
document.getElementById("OutputContainer").hidden = false
|
||||
|
||||
var table = document.createElement ("table");
|
||||
table.classList.add("table","table-hover", "table-condensed");
|
||||
var tHead = document.createElement ("thead");
|
||||
var tBody = document.createElement ("tbody");
|
||||
var headRow = document.createElement ("tr");
|
||||
var accordionItem = document.createElement ("div")
|
||||
accordionItem.className = "accordion-item";
|
||||
accordionItem.innerHTML = `<h2 class="accordion-header" id="heading-${JSON.parse(message.data).type}">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-${JSON.parse(message.data).type}">
|
||||
${JSON.parse(message.data).type}
|
||||
</button>
|
||||
</h2>
|
||||
<div id="collapse-${JSON.parse(message.data).type}" class="accordion-collapse collapse show" data-bs-parent="#Output">
|
||||
<div id="body-${JSON.parse(message.data).type}" class="accordion-body"></div>
|
||||
</div>
|
||||
</div>`
|
||||
|
||||
var keys = new Map;
|
||||
JSON.parse(message.data).data.forEach ((item, index, array) => {
|
||||
var keyIndexCounter = keys.size;
|
||||
for (var key in item){
|
||||
if (!keys.has(key)){
|
||||
var headCell = headRow.insertCell(keys.size);
|
||||
headCell.innerHTML = key;
|
||||
keys.set(key, keyIndexCounter);
|
||||
keyIndexCounter++;
|
||||
}
|
||||
}
|
||||
var row = tBody.insertRow();
|
||||
for (var key of keys) {
|
||||
var cell = row.insertCell (keys.get(key));
|
||||
if (key[0] == "image") { //Base64 dekodieren, falls "Image"
|
||||
cell.innerHTML = `<img src='data:image/png;base64, ${item[key[0]]}' onerror='this.style.display="none"'>`
|
||||
}
|
||||
else cell.innerHTML = item[key[0]];
|
||||
}
|
||||
});
|
||||
tHead.appendChild (headRow);
|
||||
table.appendChild (tHead);
|
||||
table.appendChild (tBody);
|
||||
document.getElementById("Output").appendChild (accordionItem);
|
||||
document.getElementById("body-" + JSON.parse(message.data).type).appendChild(table);
|
||||
}
|
||||
|
||||
//Requests
|
||||
function baseDlRequest(webSocket) {
|
||||
|
||||
webSocket.send(JSON.stringify({
|
||||
type: "baseDlRequest",
|
||||
uuid: "UUID"
|
||||
}));
|
||||
}
|
||||
Executable
+87
@@ -0,0 +1,87 @@
|
||||
var buttonsAdded = false;
|
||||
|
||||
|
||||
export function getLongName () {
|
||||
return "Participant Management";
|
||||
}
|
||||
|
||||
export function createButtons (webSocket) {
|
||||
//Container
|
||||
if (!buttonsAdded){
|
||||
|
||||
//Base Dl Request
|
||||
var baseDlRequestContainer = document.createElement("div");
|
||||
baseDlRequestContainer.id = "BaseDlRequestContainer";
|
||||
baseDlRequestContainer.className = "py-1";
|
||||
//Button
|
||||
var baseDlRequestBtn = document.createElement("button");
|
||||
baseDlRequestBtn.id = "BaseDlRequestBtn";
|
||||
baseDlRequestBtn.classList.add ("btn", "btn-primary");
|
||||
baseDlRequestBtn.innerHTML = "Send <i>BaseDlRequest</i>";
|
||||
//Append
|
||||
(document.getElementById ("RequestButtonContainer")).appendChild (baseDlRequestContainer);
|
||||
(document.getElementById ("BaseDlRequestContainer")).appendChild (baseDlRequestBtn);
|
||||
//Funktion
|
||||
document.getElementById("BaseDlRequestBtn").addEventListener('click', function() {
|
||||
baseDlRequest(webSocket);
|
||||
});
|
||||
buttonsAdded = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export function decryptMessage (message) {
|
||||
document.getElementById("OutputContainer").hidden = false
|
||||
|
||||
var table = document.createElement ("table");
|
||||
table.classList.add("table","table-hover", "table-condensed");
|
||||
var tHead = document.createElement ("thead");
|
||||
var tBody = document.createElement ("tbody");
|
||||
var headRow = document.createElement ("tr");
|
||||
var accordionItem = document.createElement ("div")
|
||||
accordionItem.className = "accordion-item";
|
||||
accordionItem.innerHTML = `<h2 class="accordion-header" id="heading-${JSON.parse(message.data).type}">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-${JSON.parse(message.data).type}">
|
||||
${JSON.parse(message.data).type}
|
||||
</button>
|
||||
</h2>
|
||||
<div id="collapse-${JSON.parse(message.data).type}" class="accordion-collapse collapse show" data-bs-parent="#Output">
|
||||
<div id="body-${JSON.parse(message.data).type}" class="accordion-body"></div>
|
||||
</div>
|
||||
</div>`
|
||||
|
||||
var keys = new Map;
|
||||
JSON.parse(message.data).data.forEach ((item, index, array) => {
|
||||
var keyIndexCounter = keys.size;
|
||||
for (var key in item){
|
||||
if (!keys.has(key)){
|
||||
var headCell = headRow.insertCell(keys.size);
|
||||
headCell.innerHTML = key;
|
||||
keys.set(key, keyIndexCounter);
|
||||
keyIndexCounter++;
|
||||
}
|
||||
}
|
||||
var row = tBody.insertRow();
|
||||
for (var key of keys) {
|
||||
var cell = row.insertCell (keys.get(key));
|
||||
if (typeof item[key[0]] === 'object') { //Objekt formatieren, falls erforderlich - Funktion rekursiv aufrufen?
|
||||
cell.innerHTML = JSON.stringify(item[key[0]])
|
||||
}
|
||||
else cell.innerHTML = item[key[0]];
|
||||
}
|
||||
});
|
||||
tHead.appendChild (headRow);
|
||||
table.appendChild (tHead);
|
||||
table.appendChild (tBody);
|
||||
document.getElementById("Output").appendChild (accordionItem);
|
||||
document.getElementById("body-" + JSON.parse(message.data).type).appendChild(table);
|
||||
}
|
||||
|
||||
//Requests
|
||||
function baseDlRequest(webSocket) {
|
||||
|
||||
webSocket.send(JSON.stringify({
|
||||
type: "baseDlRequest",
|
||||
uuid: "UUID"
|
||||
}));
|
||||
}
|
||||
Executable
+59
@@ -0,0 +1,59 @@
|
||||
var searchContent = new URLSearchParams (window.location.search);
|
||||
var exc = searchContent.get('exc');
|
||||
var buttonsAdded = false;
|
||||
var headCellBuilt = false;
|
||||
|
||||
export function getLongName () {
|
||||
return "Participant Management";
|
||||
}
|
||||
|
||||
export function createButtons (webSocket) {
|
||||
//Container
|
||||
if (!buttonsAdded){
|
||||
(document.getElementById ("RequestButtonContainer")).innerHTML = `<div class='px-3 pt-2 h5'>Dieser Port empfängt Positonsdaten der Exercise ${exc}.</div>`
|
||||
buttonsAdded = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Positionsdaten tabellarisch abbilden
|
||||
var table = document.createElement ("table");
|
||||
var tHead = document.createElement ("thead");
|
||||
var tBody = document.createElement ("tbody");
|
||||
tBody.id = 'tBody';
|
||||
|
||||
//leert den Table-Body mit allen bisherigen Positionen durch Clear-Button
|
||||
document.getElementById("ClearBtn").addEventListener ('click', function () {
|
||||
document.getElementById("tBody").innerHTML = "";
|
||||
});
|
||||
|
||||
export function decryptMessage (message) {
|
||||
document.getElementById("OutputContainer").hidden = false
|
||||
//erstellt Table body einmalig
|
||||
table.classList.add("table","table-hover", "table-condensed");
|
||||
var headRow = document.createElement ("tr");
|
||||
var keys = new Map;
|
||||
var keyIndexCounter = 0;
|
||||
if (!headCellBuilt) {
|
||||
for (var key in JSON.parse(message.data)) {
|
||||
var headCell = headRow.insertCell(keys.get(key));
|
||||
headCell.innerHTML = key;
|
||||
keys.set(key, keyIndexCounter);
|
||||
keyIndexCounter++;
|
||||
}
|
||||
headCellBuilt = true;
|
||||
tHead.appendChild (headRow);
|
||||
table.appendChild (tHead);
|
||||
}
|
||||
//fuegt Table Body je Positonsmeldung an
|
||||
var bodyRow = document.createElement ("tr");
|
||||
for (var key in JSON.parse(message.data)) {
|
||||
var bodyCell = bodyRow.insertCell(keys.get(key));
|
||||
bodyCell.innerHTML = JSON.parse(message.data)[key];
|
||||
}
|
||||
tBody.appendChild (bodyRow)
|
||||
table.appendChild (tBody);
|
||||
document.getElementById("Output").appendChild (table);
|
||||
}
|
||||
|
||||
|
||||
Executable
+17
@@ -0,0 +1,17 @@
|
||||
//"Service Template"
|
||||
|
||||
var buttonsAdded = false;
|
||||
|
||||
export function getLongName () {
|
||||
throw new console.error("Methodenrumpf muss definiert werden.");
|
||||
}
|
||||
|
||||
|
||||
export function createButtons (webSocket) {
|
||||
throw new console.error("Methodenrumpf muss definiert werden.");
|
||||
}
|
||||
|
||||
|
||||
export function decryptMessage (message) {
|
||||
throw new console.error("Methodenrumpf muss definiert werden.");
|
||||
}
|
||||
Executable
+86
@@ -0,0 +1,86 @@
|
||||
var buttonsAdded = false;
|
||||
|
||||
export function getLongName () {
|
||||
return "Warehouse Guez";
|
||||
}
|
||||
|
||||
export function createButtons (webSocket) {
|
||||
//Container
|
||||
if (!buttonsAdded){
|
||||
|
||||
//equipmentTypesRequest
|
||||
var baseDlRequestContainer = document.createElement("div");
|
||||
baseDlRequestContainer.id = "BaseDlRequestContainer";
|
||||
baseDlRequestContainer.className = "py-1";
|
||||
//Button
|
||||
var baseDlRequestBtn = document.createElement("button");
|
||||
baseDlRequestBtn.id = "BaseDlRequestBtn";
|
||||
baseDlRequestBtn.classList.add ("btn", "btn-primary");
|
||||
baseDlRequestBtn.innerHTML = "Send <i>EquipmentTypesRequest</i>";
|
||||
//Append
|
||||
(document.getElementById ("RequestButtonContainer")).appendChild (baseDlRequestContainer);
|
||||
(document.getElementById ("BaseDlRequestContainer")).appendChild (baseDlRequestBtn);
|
||||
//Funktion
|
||||
document.getElementById("BaseDlRequestBtn").addEventListener('click', function() {
|
||||
equipmentTypesRequest(webSocket);
|
||||
});
|
||||
buttonsAdded = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export function decryptMessage (message) {
|
||||
document.getElementById("OutputContainer").hidden = false
|
||||
|
||||
var table = document.createElement ("table");
|
||||
table.classList.add("table","table-hover", "table-condensed");
|
||||
var tHead = document.createElement ("thead");
|
||||
var tBody = document.createElement ("tbody");
|
||||
var headRow = document.createElement ("tr");
|
||||
var accordionItem = document.createElement ("div")
|
||||
accordionItem.className = "accordion-item";
|
||||
accordionItem.innerHTML = `<h2 class="accordion-header" id="heading-${JSON.parse(message.data).type}">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-${JSON.parse(message.data).type}">
|
||||
${JSON.parse(message.data).type}
|
||||
</button>
|
||||
</h2>
|
||||
<div id="collapse-${JSON.parse(message.data).type}" class="accordion-collapse collapse show" data-bs-parent="#Output">
|
||||
<div id="body-${JSON.parse(message.data).type}" class="accordion-body"></div>
|
||||
</div>
|
||||
</div>`
|
||||
|
||||
var keys = new Map;
|
||||
JSON.parse(message.data).data.etMap.forEach ((item, index, array) => {
|
||||
var keyIndexCounter = keys.size;
|
||||
for (var key in item){
|
||||
if (!keys.has(key)){
|
||||
var headCell = headRow.insertCell(keys.size);
|
||||
headCell.innerHTML = key;
|
||||
keys.set(key, keyIndexCounter);
|
||||
keyIndexCounter++;
|
||||
}
|
||||
}
|
||||
var row = tBody.insertRow();
|
||||
for (var key of keys) {
|
||||
var cell = row.insertCell (keys.get(key));
|
||||
if (typeof item[key[0]] === 'object') { //Objekt formatieren, falls erforderlich - Funktion rekursiv aufrufen?
|
||||
cell.innerHTML = JSON.stringify(item[key[0]])
|
||||
}
|
||||
else cell.innerHTML = item[key[0]];
|
||||
}
|
||||
});
|
||||
tHead.appendChild (headRow);
|
||||
table.appendChild (tHead);
|
||||
table.appendChild (tBody);
|
||||
document.getElementById("Output").appendChild (accordionItem);
|
||||
document.getElementById("body-" + JSON.parse(message.data).type).appendChild(table);
|
||||
}
|
||||
|
||||
//Requests
|
||||
function equipmentTypesRequest(webSocket) {
|
||||
|
||||
webSocket.send(JSON.stringify({
|
||||
type: "equipmentTypesRequest",
|
||||
uuid: "UUID"
|
||||
}));
|
||||
}
|
||||
Executable
+73
@@ -0,0 +1,73 @@
|
||||
var ws;
|
||||
var thisURL = window.location;
|
||||
|
||||
//HTML-ELemente get
|
||||
var searchContent = new URLSearchParams (thisURL.search);
|
||||
|
||||
var ipInputForm = document.getElementById('iIpInputForm');
|
||||
var exerciseListContainer = document.getElementById('ExerciseList');
|
||||
|
||||
webSocketConnect = function () {
|
||||
|
||||
ws = new WebSocket (document.getElementById("IpInputForm").value);
|
||||
ws.onopen = function () {
|
||||
document.getElementById("IpInputForm").classList.replace("border-danger", "border-success");
|
||||
document.getElementById('ButtonContainer').hidden = false;
|
||||
}
|
||||
|
||||
ws.onmessage = function (msg) {
|
||||
console.log(msg)
|
||||
document.getElementById('ListContainer').hidden = false;
|
||||
var object = (JSON.parse(msg.data)).data;
|
||||
object.forEach((item, index, array) => {
|
||||
var exerciseEntry = document.createElement('li');
|
||||
var managementList = document.createElement('ul');
|
||||
managementList.id = object[index].exerciseId;
|
||||
managementList.className = "list-lvl2";
|
||||
exerciseEntry.innerHTML = "Exercise: " + object[index].exerciseId;
|
||||
exerciseListContainer.appendChild(exerciseEntry); //Reihenfolge?
|
||||
exerciseListContainer.appendChild(managementList); //Reihenfolge?
|
||||
(object[index].services).forEach((item, index2, array) => {
|
||||
var managementListContainer = document.getElementById (object[index].exerciseId);
|
||||
var managementEntry = document.createElement('li');
|
||||
var portList = document.createElement('ul');
|
||||
portList.id = object[index].exerciseId + object[index].services[index2].name;
|
||||
portList.className = "list-lvl3";
|
||||
managementEntry.innerHTML = "Service: " + object[index].services[index2].name;
|
||||
managementListContainer.appendChild(managementEntry); //Reihenfolge?
|
||||
managementListContainer.appendChild(portList); //Reihenfolge?
|
||||
(object[index].services[index2].ports).forEach((item, index3, array) => {
|
||||
//Query String konstruieren
|
||||
var queryString = new URLSearchParams();
|
||||
queryString.append ('exc', object[index].exerciseId);
|
||||
queryString.append ('svc', object[index].services[index2].nameAbbrevation);
|
||||
queryString.append ('port', object[index].services[index2].ports[index3].number);
|
||||
queryString.append ('typeid', object[index].services[index2].ports[index3].typeId);
|
||||
var portListContainer = document.getElementById (object[index].exerciseId + object[index].services[index2].name);
|
||||
//Port-Element erstellen
|
||||
var portLink = document.createElement('a');
|
||||
portLink.href = 'wsTool.html' + '?' + queryString;
|
||||
portLink.innerHTML = object[index].services[index2].ports[index3].number;
|
||||
var portEntry = document.createElement('li');
|
||||
portEntry.innerHTML = "Port: ";
|
||||
portEntry.innerHTML += '<a href=' + portLink.toString() +' target="_blank">'+ object[index].services[index2].ports[index3].number; +'</a>';
|
||||
portEntry.innerHTML += " | TypeID: "+object[index].services[index2].ports[index3].typeId+" ";
|
||||
portEntry.innerHTML += " | Properties: "+object[index].services[index2].ports[index3].properties;
|
||||
portListContainer.appendChild(portEntry);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
ws.onclose = function () {
|
||||
document.getElementById("IpInputForm").classList.replace("border-success", "border-danger");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function servicePortsInformationRequest() {
|
||||
|
||||
ws.send(JSON.stringify({
|
||||
type: "servicePortsInformationRequest",
|
||||
uuid: "UUID"
|
||||
}));
|
||||
}
|
||||
Executable
+54
@@ -0,0 +1,54 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>wsTool</title>
|
||||
<link rel="stylesheet" href="../include/bootstrap/css/bootstrap.css">
|
||||
<link rel="stylesheet" href="index.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<h1 id="headline">
|
||||
WebSocket Tool
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<!--Connect-->
|
||||
<div class="form-control">
|
||||
<div class="m-1">
|
||||
<label class="form-label">IP-Adresse eingeben:</label>
|
||||
</div>
|
||||
<div class="row g-3">
|
||||
|
||||
<div class="col-auto">
|
||||
<input class="form-control border-danger" type="text" name="" id="IpInputForm">
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<button id="ConnectButton" class="btn btn-primary mb-1">Connect</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<!--Request Buttons-->
|
||||
<div id="RequestContainer" class="container-fluid form-control" hidden>
|
||||
<div id="RequestButtonContainer" class="row">
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<!--Message Output-->
|
||||
<div id="OutputContainer" class="form-control" hidden>
|
||||
<div class="d-flex justify-content-between">
|
||||
<span><b>Messages:</b></span>
|
||||
<button id="ClearBtn" class="btn btn-sm btn-outline-secondary">Clear</button>
|
||||
</div><br>
|
||||
<p id="Output" class="accordion"></p>
|
||||
|
||||
</div>
|
||||
|
||||
<script src="../include/bootstrap/js/bootstrap.js"></script>
|
||||
<script type="module" src="wsTool.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Executable
+108
@@ -0,0 +1,108 @@
|
||||
var ws;
|
||||
//Port-Informationen
|
||||
var searchContent = new URLSearchParams (window.location.search);
|
||||
var svc = searchContent.get('svc');
|
||||
var typeId = searchContent.get('typeid');
|
||||
var port = searchContent.get('port');
|
||||
|
||||
//Modul importieren
|
||||
const importPath = './modules/' + svc + typeId + '.js'
|
||||
const module = await import (importPath);
|
||||
|
||||
//HTML-Elemente get/set
|
||||
var serverConnect = document.getElementById('Serverconnect');
|
||||
var requestContainer = document.getElementById('RequestContainer');
|
||||
document.getElementById('headline').innerHTML += " - " + module.getLongName(); //Import
|
||||
document.title += " - " + module.getLongName(); //Import
|
||||
|
||||
//IP-Adresse ausfuellen
|
||||
document.getElementById("IpInputForm").value = "ws://localhost:" + port;
|
||||
|
||||
//Connect
|
||||
document.getElementById("ConnectButton").addEventListener ('click', webSocketConnect);
|
||||
|
||||
function webSocketConnect () {
|
||||
|
||||
ws = new WebSocket (document.getElementById("IpInputForm").value);
|
||||
ws.onopen = function () {
|
||||
document.getElementById("IpInputForm").classList.replace("border-danger", "border-success");
|
||||
document.getElementById('RequestContainer').hidden = false;
|
||||
|
||||
module.createButtons(ws); //Import
|
||||
}
|
||||
|
||||
ws.onmessage = function (msg) {
|
||||
console.log(JSON.parse(msg.data));
|
||||
module.decryptMessage (msg); //Import
|
||||
}
|
||||
|
||||
ws.onclose = function () {
|
||||
document.getElementById("IpInputForm").classList.replace("border-success", "border-danger");
|
||||
}
|
||||
}
|
||||
|
||||
//Clear Button
|
||||
document.getElementById("ClearBtn").addEventListener('click', () => {
|
||||
document.getElementById("Output").innerHTML = "";
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
//Request-Funktionen
|
||||
function customRequest() {
|
||||
|
||||
ws.send(JSON.stringify({
|
||||
type: document.getElementById("CustomRequestType").value,
|
||||
uuid: document.getElementById("CustomRequestUUID").value
|
||||
}));
|
||||
}
|
||||
|
||||
function servicePortsInformationRequest() {
|
||||
|
||||
ws.send(JSON.stringify({
|
||||
type: "servicePortsInformationRequest",
|
||||
uuid: "UUID"
|
||||
}));
|
||||
}
|
||||
|
||||
function baseDlRequest() {
|
||||
|
||||
ws.send(JSON.stringify({
|
||||
type: "baseDlRequest",
|
||||
uuid: "UUID"
|
||||
}));
|
||||
}
|
||||
|
||||
function exerciseInformationRequest() {
|
||||
|
||||
ws.send(JSON.stringify({
|
||||
type: "exerciseInformationRequest",
|
||||
uuid: "UUID"
|
||||
}));
|
||||
}
|
||||
|
||||
function pdfListRequest() {
|
||||
|
||||
ws.send(JSON.stringify({
|
||||
type: "pdfListRequest",
|
||||
uuid: "UUID"
|
||||
}));
|
||||
}
|
||||
|
||||
function equipmentTypesRequest() {
|
||||
|
||||
ws.send(JSON.stringify({
|
||||
type: "equipmentTypesRequest",
|
||||
uuid: "UUID"
|
||||
}));
|
||||
}
|
||||
|
||||
//baseDlRequest
|
||||
//exerciseInformationRequest
|
||||
//pdfListRequest
|
||||
//servicePortsInformationRequest
|
||||
//exercisesRequest
|
||||
//participantsRequest
|
||||
//equipmentTypesRequest
|
||||
//participantRegisterInExconRequest
|
||||
Reference in new issue
Block a user