blob: 7ade9bb7d49e2713abe103337a329c166cb9e3bd [file]
// Copyright (c) 2000-2017 Ericsson Telecom AB //
// All rights reserved. This program and the accompanying materials are made available under the //
// terms of the Eclipse Public License v2.0 which accompanies this distribution, and is available at //
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html //
///////////////////////////////////////////////////////////////////////////////////////////////////////
function GuiEditor_Imports_View(p_viewModel, p_parentId, p_viewId, p_parent, p_desktopData) {
"use strict";
var base = new GuiEditor_BaseEditor_View(p_viewModel, p_parentId, p_viewId, p_parent, p_desktopData, this);
var v_requestTree = base.parent.getRequestTree();
var v_requestConnectionPresent = false;
var v_selectedNode;
var v_this = this;
///////////////////// GENERAL VIEW FUNCTIONS //////////////////////////////
this.init = function(callback) {
base.init(callback, "GuiEditor_ImportEditor", 800);
v_requestConnectionPresent = base.viewmodel.getRequestPath() != undefined;
};
this.destroy = base.destroy;
this.setDefaultZidx = base.setDefaultZidx;
this.setZidx = base.setZidx;
this.deletePressed = function() {
var node = base.tree.jstree("get_selected");
if (node.length > 0) {
deleteNode(node);
}
};
///////////////////// GENERAL EDITOR VIEW FUNCTIONS //////////////////////////////
this.disabled = base.disabled;
this.search = base.search;
///////////////////// IMPORT EDITOR SPECIFIC FUNCTIONS //////////////////////////////
this.updatePaths = function(path, amount) {
var connectionRemoved = base.viewmodel.updatePaths(path, amount);
if (connectionRemoved) {
v_requestConnectionPresent = false;
base.parent.deleteEndpoint(requestConnectionEndpoint);
}
};
this.pathsMoved = base.viewmodel.pathsMoved;
this.importAddedInRequestTree = function(requestNodeId, parentId) {
var parent = base.tree.jstree("get_node", parentId);
if (base.jsTreeUtils.isNodeFromTree(parent, base.tree)) {
var data = {
"parent": parent,
"position": 0,
"original": {
"id": requestNodeId
}
};
requestAdded(data, false);
return true;
} else {
return false;
}
};
///////////////////// CREATING THE VIEW //////////////////////////////
base.fillHeader = function(header) {
var labelText = document.createElement("label");
labelText.setAttribute("id", base.id + "_HeaderText");
labelText.setAttribute("class", "GuiEditor_ImportEditorHeaderLabel");
header.appendChild(labelText);
base.addButtonToHeader(header, "_Button_Minimize", "GuiEditor_EditorButtonRight", " ");
};
base.createTree = function(p_callback) {
var data = base.viewmodel.getTreeData();
base.tree.jstree("destroy");
base.tree.jstree({
"core": {
"data": data,
"check_callback": function(operation, node, node_parent, node_position, more) {
if (operation === "copy_node" && base.jsTreeUtils.isNodeFromTree(node, v_requestTree) && !base.jsTreeUtils.isRoot(node_parent) && base.jsTreeUtils.getIndexOfNode(node_parent, base.tree) === 1) {
return true;
} else if (operation === "copy_node") {
return false;
} else {
return true;
}
},
"multiple": false,
"animation": false,
"worker": false
},
"plugins" : ["contextmenu", "dnd"],
"dnd": {
"always_copy": true
},
"contextmenu": {
"items": function($node) {
return {
"Delete": {
"label": "Delete",
"action": function(data) {
deleteNode(data.reference);
}
},
"AddParam": {
"label": "Add Parameter",
"action": function(data) {
paramAdded(data.reference);
}
},
"RenameParam": {
"label": "Rename Parameter",
"action": function(data) {
paramRenamed(data.reference);
}
}
};
},
"select_node": false
}
});
base.tree.bind("copy_node.jstree", function(e, data) {
requestAdded(data, true);
});
base.tree.bind("select_node.jstree", function(e, data) {
if (v_selectedNode == data.node.id) {
data.instance.deselect_node(data.node);
v_selectedNode = undefined;
} else {
v_selectedNode = data.node.id;
}
});
base.tree.bind("redraw.jstree", function(e, data) {
document.getElementById(base.id).style.height = "auto";
document.getElementById(base.id).style.width = "auto";
});
base.tree.bind("ready.jstree", function(e, data) {
p_callback(true);
});
base.openNodes();
base.tree.bind("after_open.jstree after_close.jstree", function(e, data) {
document.getElementById(base.id).style.height = "auto";
document.getElementById(base.id).style.width = "auto";
base.saveOpenNodes();
});
};
///////////////////// HANDLING EVENTS //////////////////////////////
base.setupCallbacks = function() {
$("#" + base.id + "_Header").on('contextmenu', function(event) {
var list = [
{
"text": "change setup",
"callback": changeSetup
},
{
"text": "show only this",
"callback": base.showOnlyThis
},
{
"text": "show all",
"callback": base.showAll
},
{
"text": "delete",
"callback": base.remove
}
];
base.parent.openContextMenu(list, $("#" + base.id).offset());
event.preventDefault();
return false;
});
base.setupMinimizedCallback();
};
base.editorDeleted = function() {
base.parent.editorDeleted("Import", v_this);
};
///////////////////// HANDLING OWN EVENTS //////////////////////////////
function changeSetup() {
function callback(setupName) {
base.viewmodel.setupNameChanged(setupName);
base.setHeaderText();
}
base.parent.getSetups(callback);
}
function requestAdded(data, deleteNeeded) {
if (deleteNeeded) {
base.tree.jstree("delete_node", data.node.id);
}
var requestPath = base.jsTreeUtils.getPath(v_requestTree.jstree("get_node", data.original.id)).path;
base.viewmodel.setRequestPath(requestPath);
if (v_requestConnectionPresent) {
base.refreshConnections();
} else {
v_requestConnectionPresent = true;
base.parent.addEndpoint(requestConnectionEndpoint);
base.refreshConnections();
}
}
function deleteNode(data) {
var treeNode = base.tree.jstree("get_node", data);
var path = base.jsTreeUtils.getPath(base.tree.jstree("get_node", treeNode.id)).path;
if (path[0] == 1 && v_requestConnectionPresent) {
v_requestConnectionPresent = false;
base.viewmodel.setRequestPath(undefined);
base.parent.deleteEndpoint(requestConnectionEndpoint);
} else if (path[0] == 2 && path.length == 2) {
base.viewmodel.removeSetupParam(treeNode.text.split(": ")[0]);
base.tree.jstree("delete_node", treeNode);
}
base.saveOpenNodes();
}
function paramAdded(data) {
var name = prompt("Param name: ");
if (name != undefined) {
var value = prompt("Param value: ");
if (value != undefined) {
base.viewmodel.addSetupParam(name, value);
var id = base.jsTreeUtils.getNodeIdFromPath(base.tree, [2]);
base.tree.jstree("create_node", id, name + ": " + value);
}
}
}
function paramRenamed(data) {
var treeNode = base.tree.jstree("get_node", data);
var path = base.jsTreeUtils.getPath(base.tree.jstree("get_node", treeNode.id)).path;
if (path.length == 2) {
var old_name = treeNode.text.split(": ")[0];
var value = treeNode.text.split(": ")[1];
var name = prompt("New param name: ", old_name);
if (name != undefined) {
value = prompt("New param value: ", value);
if (value != undefined) {
base.viewmodel.removeSetupParam(old_name);
base.viewmodel.addSetupParam(name, value);
base.tree.jstree("rename_node", treeNode, name + ": " + value);
}
}
}
}
///////////////////// HANDLING CONNECTIONS //////////////////////////////
var viewConnectionPoint = {
"getOffset": function() {
var htmlObj;
if (!base.isVisible) {
var id = base.id + "_Header";
htmlObj = $("#" + id);
} else {
var id = base.jsTreeUtils.getLastNodeIdFromPath(base.tree, [0]);
htmlObj = $("#" + id + "_anchor");
}
var offset = htmlObj.offset();
offset.left += htmlObj.width();
offset.top += htmlObj.height() / 2;
return offset;
},
"getZIndex": function() {
return base.zIndex + 1;
},
"isEnabled": function() {
return base.isEnabled;
},
"object": v_this
};
var requestConnectionEndpoint = {
"getOffset": function() {
var htmlObj;
if (!base.isVisible) {
var id = base.id + "_Header";
htmlObj = $("#" + id);
} else {
var id = base.jsTreeUtils.getLastNodeIdFromPath(base.tree, [1]);
htmlObj = $("#" + id + "_anchor");
}
var offset = htmlObj.offset();
offset.top += htmlObj.height() / 2;
return offset;
},
"getZIndex": function() {
return base.zIndex + 1;
},
"isEnabled": function() {
return base.isEnabled;
},
"endpointType": "source",
"connectionType": "R_I",
"object": v_this,
"options": {
"stroke": "#cc9c5c"
},
"identifier": function() {
return base.viewmodel.getRequestPath();
}
};
this.getEndpoint = function(identifier) {
if (identifier == base.viewmodel.getParentId()) {
return viewConnectionPoint;
} else {
return undefined;
}
};
this.getConnectionInformation = function(identifier) {
var parentId = base.viewmodel.getParentId();
if (identifier.type == "set" && base.tree.jstree("get_node", identifier.treeId)) {
base.viewmodel.setParentId(identifier.parentId);
return parentId;
} else if (identifier.type == "get" && identifier.parentId == base.viewmodel.getParentId()) {
return parentId;
} else {
return undefined;
}
};
this.getEndpoints = function() {
if (v_requestConnectionPresent) {
return [requestConnectionEndpoint];
} else {
return [];
}
};
}
//# sourceURL=GuiEditor\Views\View_Imports.js