diff options
author | vincent-peugnet <v.peugnet@free.fr> | 2020-02-12 21:05:46 +0100 |
---|---|---|
committer | vincent-peugnet <v.peugnet@free.fr> | 2020-02-12 21:09:32 +0100 |
commit | e115875801c2e32399079c4ef92bb11ceb4f2c1d (patch) | |
tree | a5251d843999b7c751c8f040685cc42b4d50f42a /app/class | |
parent | 0893f20446a6645c5f928f2cb41f688a9fc5fcf1 (diff) | |
download | wcms-e115875801c2e32399079c4ef92bb11ceb4f2c1d.tar.gz wcms-e115875801c2e32399079c4ef92bb11ceb4f2c1d.zip |
generate cytoscape datas
Diffstat (limited to 'app/class')
-rw-r--r-- | app/class/Controllerhome.php | 25 | ||||
-rw-r--r-- | app/class/Modelhome.php | 41 |
2 files changed, 59 insertions, 7 deletions
diff --git a/app/class/Controllerhome.php b/app/class/Controllerhome.php index 42ace87..86b2f6f 100644 --- a/app/class/Controllerhome.php +++ b/app/class/Controllerhome.php @@ -86,6 +86,24 @@ class Controllerhome extends Controllerpage } } + /** + * Temporary map display function + */ + public function map() + { + if ($this->user->isadmin()) { + + $pagelist = $this->modelhome->getlister(); + $datas = $this->modelhome->mapdata($pagelist); + + $vars['json'] = json_encode($datas, JSON_PRETTY_PRINT); + + $this->showtemplate('map', $vars); + + } + + } + public function columns() { if (isset($_POST['columns']) && $this->user->iseditor()) { @@ -127,12 +145,7 @@ class Controllerhome extends Controllerpage $this->routedirect('home'); } } - - public function map() - { - - } - + /** * Render every pages in the database */ diff --git a/app/class/Modelhome.php b/app/class/Modelhome.php index 6352282..37eb549 100644 --- a/app/class/Modelhome.php +++ b/app/class/Modelhome.php @@ -130,7 +130,46 @@ class Modelhome extends Modelpage } } return $pageselected; - } + } + + /** + * Transform list of page into list of nodes and edges + */ + public function mapdata(array $pagelist) + { + $nodes = []; + $edges = []; + foreach ($pagelist as $page) { + $node['group'] = 'nodes'; + $node['data']['id'] = $page->id(); + $node['classes'] = [$page->secure('string')]; + $nodes[] = $node; + + + foreach ($page->linkto() as $linkto) { + $edge['group'] = 'edges'; + $edge['data']['id'] = $page->id() . '>' . $linkto; + $edge['data']['source'] = $page->id(); + $edge['data']['target'] = $linkto; + $edges[] = $edge; + } + } + $datas['elements'] = array_merge($nodes, $edges); + + $datas['layout']['name'] = 'preset'; + $datas['style'] = [ + 'selector' => 'node', + 'style' => [ + 'label' => 'data(id)' + ] + ]; + return $datas; + } + + public function cytodata(array $mapdata) + { + + } /** |