Идеи о том, что может отсутствовать или если моя идея просто не сработает?
Код: Выделить всё
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
WebView webView = new WebView();
WebEngine webEngine = webView.getEngine();
webEngine.setOnError(event -> LOGGER.warning("[Frontend] An error occured on the frontend: " + event.getMessage()));
File htmlFile = new File(getClass().getResource("/html/index.html").getFile());
webEngine.load(htmlFile.toURI().toString());
webEngine.setJavaScriptEnabled(true);
// Wait until WebView is fully loaded before injecting WeaknessController
webEngine.getLoadWorker().stateProperty().addListener((obs, oldState, newState) -> {
if (newState == javafx.concurrent.Worker.State.SUCCEEDED) {
JSObject window = (JSObject) webEngine.executeScript("window");
window.setMember("fileController", FileController.getInstance());
window.setMember("weaknessController", WeaknessController.getInstance());
window.setMember("vulnerabilityController", VulnerabilityController.getInstance());
window.setMember("fileReader", FileReaderUtility.getInstance());
// TODO: remove later - just for debugging purposes
window.setMember("javaConsole", new JSConsoleBridge());
webEngine.executeScript("""
console.log = function(msg) {
javaConsole.log(msg);
};
console.error = function(msg) {
javaConsole.error(msg);
};
""");
}
});
StackPane root = new StackPane(webView);
Scene scene = new Scene(root, 1500, 900);
stage.setScene(scene);
stage.setTitle("Sage UI");
stage.getIcons().add(new Image(getClass().getResourceAsStream("/logos/taskbar_icon.png")));
stage.show();
}
< /code>
function processFile() {
let filePath = window.fileReader.getFilePath();
console.log("Processing file called");
if (filePath) {
const result = JSON.parse(window.fileController.process(filePath));
console.log(result)
displayStatistics(result);
} else {
console.log(filePath);
}
}
function displayStatistics(statistics) {
console.log(statistics);
let statisticsList = document.getElementById("statistics");
statisticsList.innerHTML = "";
statistics.forEach(severity => {
let li = document.createElement("li");
li.textContent = `${severity.key} ${severity.value}`
statisticsList.appendChild(li);
});
}
function fetchAllVulnerabilities() {
const vulnerabilities = JSON.parse(window.fileController.fetchAllVulnerabilities());
updateList(vulnerabilities);
}
function updateList(entities) {
console.log(entities);
let entityList = document.getElementById("list");
entityList.innerHTML = "";
entities.forEach(entity => {
let li = document.createElement("li");
li.textContent = `${entity.name}`;
entityList.appendChild(li);
});
}
function fetchWeakness(id) {
let list = document.getElementById("weaknessList");
const weakness = JSON.parse(window.weaknessController.fetchById(id));
// TODO: implement
}
< /code>
SAGE UI
[*]
SAGE
Dashboard
[list][/list]
[img]../icons/add-document.png[/img]
Select File
Fetch
Choose File
[list]
List Item 1
[*]List Item 2
[*]List Item 3
[*]List Item 4
[*]List Item 5
[*]List Item 7
[/list]
Vulnerabilities
< /code>
PS: calling processFile()Подробнее здесь: https://stackoverflow.com/questions/796 ... javascript
Мобильная версия