Newer
Older
import jQuery from "jquery";
import { NodeNeighborOverlay } from "./neighbors";
import * as Helpers from "../helpers";
import * as Config from "../../config";
export { NodeInfoOverlay };
/**
* An overlay displaying the information which is connected with each node.
*/
class NodeInfoOverlay {
/**
* Constructs a new info overlay for the given graph object.
* @param {Graph} graph
*/
constructor(graph) {
this.graph = graph;
this.bottomMenu = null;
}
/**
* Creates the visible elements of the overlay.
* Must be called after the graph has been initialized.
*/
create() {
const overlayDiv = this.createOverlayMainDiv();
this.createOverlayElements(overlayDiv);

Matthias Konitzny
committed
this.bottomMenu = new NodeNeighborOverlay(
this.graph,
overlayDiv,
this,
"node"
);
this.bottomMenu.create();
jQuery("#infoOverlayCloseButton").click(function () {
jQuery("#infoOverlay").slideUp("fast");
});
}
createOverlayMainDiv() {
const sceneNode = Helpers.getCanvasDivNode();
const overlayNode = document.createElement("div");
overlayNode.id = "infoOverlay";
overlayNode.className = "detail-view";
sceneNode.insertBefore(overlayNode, sceneNode.childNodes[2]);
return overlayNode;
}
createOverlayElements(overlayNode) {
Helpers.createDiv("close-button", overlayNode, {
id: "infoOverlayCloseButton",
innerHTML: "<p>✖</p>",
});
const infoArea = Helpers.createDiv(
"detail-view-info-area",
overlayNode
);
const topArea = Helpers.createDiv("detail-view-top-area", infoArea);
Helpers.createHTMLElement("img", topArea, {
id: "infoOverlayImage",
src: Config.PLUGIN_PATH + "datasets/images/default.jpg",
className: "detail-view-image",
});
Helpers.createHTMLElement("h2", topArea, {
id: "infoOverlayHeadline",
innerText: "Default Text",
className: "detail-view-headline",
});
const textArea = Helpers.createDiv("detail-view-text-area", infoArea);
Helpers.createHTMLElement("p", textArea, {
id: "infoOverlayDescription",
innerText: "Default Text",
});
/**
* Updates the overlay (and its children) to display information on the given node.
* @param node
*/
updateInfoOverlay(node) {
jQuery("#infoOverlayHeadline").text(node.name);
if ("image" in node) {
jQuery("#infoOverlayImage").attr(
"src",
Config.PLUGIN_PATH + "datasets/images/" + node.image
);
} else {
jQuery("#infoOverlayImage").attr(
"src",
Config.PLUGIN_PATH + "datasets/images/default.jpg"
);
}
if ("description" in node) {
jQuery("#infoOverlayDescription").text(node.description);
} else {
jQuery("#infoOverlayDescription").text("Default Text");
}
this.bottomMenu.updateTabs(node);
jQuery("#infoOverlay").slideDown("fast");
}
}