/**
* This file holds the event for parsing a new version.
*
* @module scripts/events/main/parse
*/
import RequestHandler from "../../request_handler.js";
import PageHandler from "../../page_handler.js";
import EventHandler from "../../event_handler.js";
/**
* Parses and adds a new version.
*
* @function parse_event
*
* @param {HTMLElement} target - Is the targeted UI element that was clicked.
* @param {object} args - The data attributes of the targeted element.
* @param {RequestHandler} requestHandler - The handler for HTTP requests.
* @param {PageHandler} pageHandler - The handler for UI updates.
* @param {EventHandler} eventHandler - The handler for the events.
*/
function parse_event(target, args, requestHandler, pageHandler, eventHandler, selectVersion=false) {
function callbackAfterFileInput(inputElem) {
requestHandler.GET("/api/current", [], (resCurr) => {
if (resCurr.type) {
requestHandler.POST("/api/parse", [ "False" ], inputElem, (res) => {
if (res.type) {
let newVersionElement = pageHandler.addVersion(res.payload, resCurr.payload);
pageHandler.addError(res.message, false);
if (selectVersion) {
let selectVersionCallback = eventHandler.events[eventHandler.SELECT_VERSION_EVENT_TAG];
selectVersionCallback(newVersionElement.children[0], args, requestHandler, pageHandler, eventHandler);
}
} else {
pageHandler.addError(res.error);
}
});
} else {
pageHandler.addError(resCurr.error);
}
});
}
pageHandler.requestFile((inputElem) => {
if (inputElem != null && inputElem.files[0] != null) {
callbackAfterFileInput(inputElem);
} else {
pageHandler.addError(eventHandler.ERROR_FORMAT(eventHandler.NOT_A_VALID_FILE_ERROR));
eventHandler.isHandlingEvent = false;
}
});
if (!selectVersion) eventHandler.isHandlingEvent = false;
}
export default parse_event;