mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-28 16:24:54 +02:00
Update networkmap class with simple map
Former-commit-id: cb6bd489ba973cf0f9c6eda8dee062518f33f382
This commit is contained in:
parent
7e345035e1
commit
8a7702e054
@ -117,6 +117,16 @@ class NetworkMap
|
|||||||
*/
|
*/
|
||||||
public $mapOptions;
|
public $mapOptions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* loadfile function array
|
||||||
|
* file path
|
||||||
|
* function name
|
||||||
|
* extra parameter(cluster)
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public $loadfile;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base constructor.
|
* Base constructor.
|
||||||
@ -154,6 +164,15 @@ class NetworkMap
|
|||||||
$this->mapOptions['strict_user'] = false;
|
$this->mapOptions['strict_user'] = false;
|
||||||
$this->mapOptions['size_canvas'] = null;
|
$this->mapOptions['size_canvas'] = null;
|
||||||
$this->mapOptions['old_mode'] = false;
|
$this->mapOptions['old_mode'] = false;
|
||||||
|
$this->mapOptions['baseurl'] = ui_get_full_url(false, false, false, false);
|
||||||
|
$this->mapOptions['width'] = '100%';
|
||||||
|
$this->mapOptions['height'] = 600;
|
||||||
|
$this->mapOptions['node_radius'] = 40;
|
||||||
|
$this->mapOptions['id_cluster'] = null;
|
||||||
|
$this->mapOptions['tooltip'] = false;
|
||||||
|
$this->mapOptions['size_image'] = 40;
|
||||||
|
$this->mapOptions['page_tooltip'] = null;
|
||||||
|
|
||||||
$this->mapOptions['map_filter'] = [
|
$this->mapOptions['map_filter'] = [
|
||||||
'dont_show_subgroups' => 0,
|
'dont_show_subgroups' => 0,
|
||||||
'node_radius' => 40,
|
'node_radius' => 40,
|
||||||
@ -206,6 +225,14 @@ class NetworkMap
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// loadfile options
|
||||||
|
// This is only used while generating simple maps
|
||||||
|
if (is_array($options['loadfile'])) {
|
||||||
|
foreach ($options['loadfile'] as $k => $v) {
|
||||||
|
$this->loadfile[$k] = $v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Load from tmap.
|
// Load from tmap.
|
||||||
if ($options['id_map']) {
|
if ($options['id_map']) {
|
||||||
$this->idMap = $options['id_map'];
|
$this->idMap = $options['id_map'];
|
||||||
@ -482,6 +509,22 @@ class NetworkMap
|
|||||||
public function generateDotGraph()
|
public function generateDotGraph()
|
||||||
{
|
{
|
||||||
if (!isset($this->dotGraph)) {
|
if (!isset($this->dotGraph)) {
|
||||||
|
if (isset($this->mode) && $this->mode === 'simple') {
|
||||||
|
include_once $config['homedir'].'/include/functions_maps.php';
|
||||||
|
$graph .= open_graph();
|
||||||
|
|
||||||
|
foreach ($this->nodes as $key => $value) {
|
||||||
|
$graph .= create_node($value, $this->mapOptions['font_size']);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($this->relations as $key => $relation) {
|
||||||
|
$graph .= create_edge($key, $relation);
|
||||||
|
}
|
||||||
|
|
||||||
|
$graph .= close_graph();
|
||||||
|
|
||||||
|
$this->dotGraph = $graph;
|
||||||
|
} else {
|
||||||
// Generate dot file.
|
// Generate dot file.
|
||||||
$this->dotGraph = networkmap_generate_dot(
|
$this->dotGraph = networkmap_generate_dot(
|
||||||
get_product_name(),
|
get_product_name(),
|
||||||
@ -510,7 +553,7 @@ class NetworkMap
|
|||||||
$this->mapOptions['map_filter']
|
$this->mapOptions['map_filter']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -652,6 +695,19 @@ class NetworkMap
|
|||||||
|
|
||||||
unlink($filename_dot);
|
unlink($filename_dot);
|
||||||
|
|
||||||
|
if (isset($this->mode) && $this->mode === 'simple') {
|
||||||
|
if (isset($this->loadfile)) {
|
||||||
|
include_once $this->loadfile[0];
|
||||||
|
$func = $this->loadfile[1];
|
||||||
|
// Extra parameter. Used in clustermap.
|
||||||
|
if (isset($this->mapOptions['id_cluster'])) {
|
||||||
|
$this->graph = $func($filename_plain, $this->dotGraph, $this->mapOptions['id_cluster']);
|
||||||
|
} else {
|
||||||
|
$this->graph = $func($filename_plain, $this->dotGraph);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
} else {
|
||||||
$nodes = networkmap_loadfile(
|
$nodes = networkmap_loadfile(
|
||||||
$this->idMap,
|
$this->idMap,
|
||||||
$filename_plain,
|
$filename_plain,
|
||||||
@ -803,7 +859,7 @@ class NetworkMap
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->graph = $nodes_and_relations;
|
$this->graph = $nodes_and_relations;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -814,6 +870,29 @@ class NetworkMap
|
|||||||
*/
|
*/
|
||||||
public function loadMapData()
|
public function loadMapData()
|
||||||
{
|
{
|
||||||
|
if (isset($this->mode) && $this->mode === 'simple') {
|
||||||
|
$output .= '<script type="text/javascript">';
|
||||||
|
$output .= "var controller_map = null;\n";
|
||||||
|
$output .= 'var size_image ='.json_encode($this->mapOptions['size_image']).";\n";
|
||||||
|
$output .= 'var tooltipster ='.json_encode($this->mapOptions['tootltip']).";\n";
|
||||||
|
$output .= 'var nodes = '.json_encode($this->graph['nodes']).";\n";
|
||||||
|
$output .= 'var arrows = '.json_encode($this->graph['arrows']).";\n";
|
||||||
|
$output .= 'var height = '.json_encode($this->mapOptions['height']).";\n";
|
||||||
|
$output .= 'var node_radius ='.json_encode($this->mapOptions['node_radius']).";\n";
|
||||||
|
$output .= 'var font_size ='.json_encode($this->mapOptions['font_size']).";\n";
|
||||||
|
$output .= 'var homedir ='.json_encode($this->mapOptions['baseurl']).";\n";
|
||||||
|
$output .= "var custom_params = {};\n";
|
||||||
|
$output .= "custom_params['get_tooltip_info'] = 1;\n";
|
||||||
|
if ($this->mapOptions['id_cluster'] != null) {
|
||||||
|
$output .= "custom_params['id_cluster'] = ".$this->mapOptions['id_cluster'].";\n";
|
||||||
|
$output .= 'var id_cluster ='.json_encode($this->mapOptions['id_cluster']).";\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$output .= "custom_params['page'] = 'enterprise/include/ajax/clustermap';\n";
|
||||||
|
$output .= '</script>';
|
||||||
|
|
||||||
|
return $output;
|
||||||
|
} else {
|
||||||
$networkmap = $this->map;
|
$networkmap = $this->map;
|
||||||
|
|
||||||
$simulate = false;
|
$simulate = false;
|
||||||
@ -1030,6 +1109,7 @@ class NetworkMap
|
|||||||
|
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1446,6 +1526,16 @@ class NetworkMap
|
|||||||
{
|
{
|
||||||
$output = '';
|
$output = '';
|
||||||
|
|
||||||
|
if (isset($this->mode) && $this->mode === 'simple') {
|
||||||
|
$output .= '<script type="text/javascript">
|
||||||
|
var controller = null
|
||||||
|
$(function() {
|
||||||
|
controller = new SimpleMapController("#simple_map");
|
||||||
|
controller.init_map();
|
||||||
|
});
|
||||||
|
</script>';
|
||||||
|
echo $output;
|
||||||
|
} else {
|
||||||
// Generate JS for advanced controller.
|
// Generate JS for advanced controller.
|
||||||
$output .= '
|
$output .= '
|
||||||
|
|
||||||
@ -1486,6 +1576,7 @@ class NetworkMap
|
|||||||
}
|
}
|
||||||
|
|
||||||
return $output;
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1499,10 +1590,27 @@ class NetworkMap
|
|||||||
{
|
{
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
|
$output = '';
|
||||||
|
|
||||||
|
if (isset($this->mode) && $this->mode === 'simple') {
|
||||||
|
$output .= '<script type="text/javascript" src="'.$config['homeurl'].'include/javascript/d3.3.5.14.js" charset="utf-8"></script>';
|
||||||
|
$output .= '<script type="text/javascript" src="'.$config['homeurl'].'enterprise/include/javascript/SimpleMapController.js"></script>';
|
||||||
|
$output .= '<script type="text/javascript" src="'.$config['homeurl'].'enterprise/include/javascript/tooltipster.bundle.min.js"></script>';
|
||||||
|
$output .= '<script type="text/javascript" src="'.$config['homeurl'].'include/javascript/jquery.svg.js"></script>';
|
||||||
|
$output .= '<script type="text/javascript" src="'.$config['homeurl'].'include/javascript/jquery.svgdom.js"></script>';
|
||||||
|
$output .= '<link rel="stylesheet" type="text/css" href="'.$this->mapOptions['baseurl'].'/enterprise/include/styles/tooltipster.bundle.min.css" />'."\n";
|
||||||
|
|
||||||
|
$output .= '<div id="simple_map" data-id="<?php echo $this->name;?>" style="border: 1px #dddddd solid;">';
|
||||||
|
$output .= '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" pointer-events="all" width="'.$this->mapOptions['width'].'" height="'.$this->mapOptions['height'].'px">';
|
||||||
|
|
||||||
|
$output .= '</svg>';
|
||||||
|
$output .= '</div>';
|
||||||
|
|
||||||
|
return $output;
|
||||||
|
} else {
|
||||||
ui_require_css_file('networkmap');
|
ui_require_css_file('networkmap');
|
||||||
ui_require_css_file('jquery.contextMenu', 'include/styles/js/');
|
ui_require_css_file('jquery.contextMenu', 'include/styles/js/');
|
||||||
|
|
||||||
$output = '';
|
|
||||||
$minimap_display = '';
|
$minimap_display = '';
|
||||||
if ($this->mapOptions['pure']) {
|
if ($this->mapOptions['pure']) {
|
||||||
$minimap_display = 'none';
|
$minimap_display = 'none';
|
||||||
@ -1549,6 +1657,7 @@ class NetworkMap
|
|||||||
|
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user