You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
6.1 KiB
198 lines
6.1 KiB
<!doctype html> |
|
<html> |
|
<head> |
|
<meta charset="utf-8"> |
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
|
<link type="text/css" rel="stylesheet" href="jsmind.css" /> |
|
|
|
<script type="text/javascript" src="jsmind.js"></script> |
|
<script type="text/javascript" src="jsmind.draggable.js"></script> |
|
<script type="text/javascript" src="jsmind.screenshot.js"></script> |
|
</head> |
|
<body> |
|
<div id="jsmind_container"></div> |
|
|
|
<script type="text/javascript"> |
|
var _jm = null; |
|
|
|
var options = { |
|
container:'jsmind_container', |
|
editable:true |
|
} |
|
|
|
function select_root_node() { |
|
_jm.select_node("root"); |
|
} |
|
|
|
function init_root_node() { |
|
_jm = jsMind.show(options); |
|
select_root_node(); |
|
|
|
var selected_node = _jm.get_selected_node(); // as parent of new node |
|
if (selected_node) { |
|
_jm.view.edit_node_begin(selected_node); |
|
} |
|
} |
|
|
|
function get_root_node_topic() { |
|
return _jm.get_node("root").topic; |
|
} |
|
|
|
function add_sub_node(){ |
|
var selected_node = _jm.get_selected_node(); // as parent of new node |
|
if(!selected_node) { |
|
_jm.move_node(selected_id,'_first_'); |
|
} |
|
|
|
var nodeid = jsMind.util.uuid.newid(); |
|
var node = _jm.add_node(selected_node, nodeid, 'Topic'); |
|
_jm.select_node(node); |
|
_jm.view.edit_node_begin(node); |
|
} |
|
|
|
function get_selected_nodeid(){ |
|
var selected_node = _jm.get_selected_node(); |
|
if(!!selected_node){ |
|
return selected_node.id; |
|
}else{ |
|
return null; |
|
} |
|
} |
|
|
|
function remove_node(){ |
|
var selected_id = get_selected_nodeid(); |
|
if(selected_id) { |
|
_jm.select_node(_jm.get_selected_node().parent); |
|
_jm.remove_node(selected_id); |
|
} |
|
} |
|
|
|
function update_node_topic(topic) { |
|
var selected_id = get_selected_nodeid(); |
|
if (selected_id) { |
|
_jm.update_node(selected_id, topic); |
|
} |
|
} |
|
|
|
function zoom_in() { |
|
_jm.view.zoom_in(); |
|
}; |
|
|
|
function zoom_out() { |
|
_jm.view.zoom_out(); |
|
}; |
|
|
|
function zoom_reset() { |
|
_jm.view.set_zoom(1); |
|
} |
|
|
|
function select_up_node(){ |
|
var selected_node = _jm.get_selected_node(); |
|
if(!!selected_node){ |
|
var up_node = _jm.find_node_before(selected_node); |
|
if(!up_node){ |
|
var np = _jm.find_node_before(selected_node.parent); |
|
if(!!np && np.children.length > 0){ |
|
up_node = np.children[np.children.length-1]; |
|
} |
|
} |
|
if(!!up_node){ |
|
_jm.select_node(up_node); |
|
} |
|
} |
|
} |
|
|
|
function select_down_node(){ |
|
var selected_node = _jm.get_selected_node(); |
|
if(!!selected_node){ |
|
var down_node = _jm.find_node_after(selected_node); |
|
if(!down_node){ |
|
var np = _jm.find_node_after(selected_node.parent); |
|
if(!!np && np.children.length > 0){ |
|
down_node = np.children[0]; |
|
} |
|
} |
|
if(!!down_node){ |
|
_jm.select_node(down_node); |
|
} |
|
} |
|
} |
|
|
|
function select_left_node(){ |
|
select_relative_node(-1); |
|
} |
|
|
|
function select_right_node(){ |
|
select_relative_node(1); |
|
} |
|
|
|
function select_relative_node(d){ |
|
var selected_node = _jm.get_selected_node(); |
|
var node = null; |
|
if(!!selected_node){ |
|
if(selected_node.isroot){ |
|
var c = selected_node.children; |
|
var children = []; |
|
for(var i=0;i<c.length;i++){ |
|
if(c[i].direction === d){ |
|
children.push(i) |
|
} |
|
} |
|
node = c[children[Math.floor((children.length-1)/2)]]; |
|
} |
|
else if(selected_node.direction === d){ |
|
var children = selected_node.children; |
|
var childrencount = children.length; |
|
if(childrencount > 0){ |
|
node = children[Math.floor((childrencount-1)/2)] |
|
} |
|
}else{ |
|
node = selected_node.parent; |
|
} |
|
if(!!node){ |
|
_jm.select_node(node); |
|
} |
|
} |
|
} |
|
|
|
function node_is_focus() { |
|
return _jm.view.is_editing(); |
|
} |
|
|
|
function toggle_node() { |
|
var selected_node = _jm.get_selected_node(); // as parent of new node |
|
if (selected_node) { |
|
_jm.toggle_node(selected_node); |
|
} |
|
} |
|
|
|
function save_screenshot() { |
|
_jm.screenshot.shootDownload(); |
|
} |
|
|
|
function open_file(file_base64_content) { |
|
_jm = jsMind.show(options); |
|
|
|
var file_data = decodeURIComponent(escape(window.atob(file_base64_content))); |
|
var mind = jsMind.util.json.string2json(file_data); |
|
|
|
if(!!mind){ |
|
_jm.show(mind); |
|
|
|
select_root_node(); |
|
} |
|
} |
|
|
|
function save_file() { |
|
return jsMind.util.json.json2string(_jm.get_data()); |
|
} |
|
|
|
function change_node_background(image) { |
|
var selected_id = get_selected_nodeid(); |
|
if(selected_id) { |
|
_jm.set_node_background_image(selected_id, "file://" + image); |
|
} |
|
} |
|
</script> |
|
</body> |
|
</html>
|
|
|