import { Window } from '../../ui/Window.js';
import { DASFForm } from "../../data/dasf/DASFForm.js";
import { responseHandlerRegistry } from '../../data/dasf/responseHandlerRegistry.js';
/**
* A function that creates the DASF loader form
*
* @memberof vef.viewer.loader
*
* @param {object} options
* @param {Viewer} viewer
*/
export function DASFLoader(options, viewer) {
const element = new DASFForm(null, {});
viewer.addElement(options.id, element);
import('@dasf/dasf-messaging').then(mod => {
const dasfConnection = new mod.DASFConnection(new mod.WebsocketUrlBuilder(options.websocketUrl, options.topic));
element.on("invalid", e => console.log(e));
element.on("submit", (data) => {
const plotWindow = new Window(null, {
width: "500px",
height: "unset",
open: true,
center: true,
title: "Data Analytics Software Framework"
});
plotWindow.setContent("Request submitted...")
dasfConnection.sendRequest(
data).then(
(response) => {
var responseHandler;
if (response.response_type) {
responseHandler = responseHandlerRegistry[response.response_type];
responseHandler(response, plotWindow);
} else {
responseHandler = responseHandlerRegistry.default;
responseHandler(response, plotWindow);
}
}
).catch(
(error) => {
const responseHandler = responseHandlerRegistry.default;
responseHandler(error, plotWindow);
}
)
});
dasfConnection.getApiInfo().then(
(api_info) => {
element.initForm(api_info.functions.map((info) => info.rpcSchema));
}
)
});
}