/plugins/ExampleUI/Controller.php
PHP | 202 lines | 153 code | 40 blank | 9 comment | 5 complexity | 12c2743dcdbab03c82dd0e9ced36298a MD5 | raw file
Possible License(s): LGPL-3.0, JSON, MIT, GPL-3.0, LGPL-2.1, GPL-2.0, AGPL-1.0, BSD-2-Clause, BSD-3-Clause
- <?php
- /**
- * Piwik - free/libre analytics platform
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
- */
- namespace Piwik\Plugins\ExampleUI;
- use Piwik\Common;
- use Piwik\Notification;
- use Piwik\Piwik;
- use Piwik\View;
- use Piwik\ViewDataTable\Factory as ViewDataTableFactory;
- /**
- */
- class Controller extends \Piwik\Plugin\Controller
- {
- public function dataTables()
- {
- $controllerAction = $this->pluginName . '.' . __FUNCTION__;
- $apiAction = 'ExampleUI.getTemperatures';
- $view = ViewDataTableFactory::build('table', $apiAction, $controllerAction);
- $view->config->translations['value'] = 'Temperature in 째C';
- $view->config->translations['label'] = 'Hour of day';
- $view->requestConfig->filter_sort_column = 'label';
- $view->requestConfig->filter_sort_order = 'asc';
- $view->requestConfig->filter_limit = 24;
- $view->config->columns_to_display = array('label', 'value');
- $view->config->y_axis_unit = '째C'; // useful if the user requests the bar graph
- $view->config->show_exclude_low_population = false;
- $view->config->show_table_all_columns = false;
- $view->config->disable_row_evolution = true;
- $view->config->max_graph_elements = 24;
- $view->config->metrics_documentation = array('value' => 'Documentation for temperature metric');
- return $view->render();
- }
- public function evolutionGraph()
- {
- $view = new View('@ExampleUI/evolutiongraph');
- $this->setPeriodVariablesView($view);
- $view->evolutionGraph = $this->getEvolutionGraph(array(), array('server1', 'server2'));
- return $view->render();
- }
- public function notifications()
- {
- $notification = new Notification('Lorem ipsum dolor sit amet, consectetur adipiscing elit.');
- Notification\Manager::notify('ExampleUI_InfoSimple', $notification);
- $notification = new Notification('Neque porro quisquam est qui dolorem ipsum quia dolor sit amet.');
- $notification->title = 'Warning:';
- $notification->context = Notification::CONTEXT_WARNING;
- $notification->flags = null;
- Notification\Manager::notify('ExampleUI_warningWithClose', $notification);
- $notification = new Notification('Phasellus tincidunt arcu at justo faucibus, et lacinia est accumsan. ');
- $notification->title = 'Well done';
- $notification->context = Notification::CONTEXT_SUCCESS;
- $notification->type = Notification::TYPE_TOAST;
- Notification\Manager::notify('ExampleUI_successToast', $notification);
- $notification = new Notification('Phasellus tincidunt arcu at justo <a href="#">faucibus</a>, et lacinia est accumsan. ');
- $notification->raw = true;
- $notification->context = Notification::CONTEXT_ERROR;
- Notification\Manager::notify('ExampleUI_error', $notification);
- $view = new View('@ExampleUI/notifications');
- $this->setGeneralVariablesView($view);
- return $view->render();
- }
- public function getEvolutionGraph(array $columns = array(), array $defaultColumns = array())
- {
- if (empty($columns)) {
- $columns = Common::getRequestVar('columns', false);
- if (false !== $columns) {
- $columns = Piwik::getArrayFromApiParameter($columns);
- }
- }
- $view = $this->getLastUnitGraphAcrossPlugins($this->pluginName, __FUNCTION__, $columns,
- $selectableColumns = array('server1', 'server2'), 'My documentation', 'ExampleUI.getTemperaturesEvolution');
- $view->requestConfig->filter_sort_column = 'label';
- if (empty($view->config->columns_to_display) && !empty($defaultColumns)) {
- $view->config->columns_to_display = $defaultColumns;
- }
- return $this->renderView($view);
- }
- public function barGraph()
- {
- $view = ViewDataTableFactory::build(
- 'graphVerticalBar', 'ExampleUI.getTemperatures', $controllerAction = 'ExampleUI.barGraph');
- $view->config->y_axis_unit = '째C';
- $view->config->show_footer = false;
- $view->config->translations['value'] = "Temperature";
- $view->config->selectable_columns = array("value");
- $view->config->max_graph_elements = 24;
- return $view->render();
- }
- public function pieGraph()
- {
- $view = ViewDataTableFactory::build(
- 'graphPie', 'ExampleUI.getPlanetRatios', $controllerAction = 'ExampleUI.pieGraph');
- $view->config->columns_to_display = array('value');
- $view->config->translations['value'] = "times the diameter of Earth";
- $view->config->show_footer_icons = false;
- $view->config->selectable_columns = array("value");
- $view->config->max_graph_elements = 10;
- return $view->render();
- }
- public function tagClouds()
- {
- $output = "<h2>Simple tag cloud</h2>";
- $output .= $this->echoSimpleTagClouds();
- $output .= "<br /><br /><h2>Advanced tag cloud: with logos and links</h2>
- <ul style='list-style-type:disc;margin-left:50px'>
- <li>The logo size is proportional to the value returned by the API</li>
- <li>The logo is linked to a specific URL</li>
- </ul><br /><br />";
- $output .= $this->echoAdvancedTagClouds();
- return $output;
- }
- public function echoSimpleTagClouds()
- {
- $view = ViewDataTableFactory::build(
- 'cloud', 'ExampleUI.getPlanetRatios', $controllerAction = 'ExampleUI.echoSimpleTagClouds');
- $view->config->columns_to_display = array('label', 'value');
- $view->config->translations['value'] = "times the diameter of Earth";
- $view->config->show_footer = false;
- return $view->render();
- }
- public function echoAdvancedTagClouds()
- {
- $view = ViewDataTableFactory::build(
- 'cloud', 'ExampleUI.getPlanetRatiosWithLogos', $controllerAction = 'ExampleUI.echoAdvancedTagClouds');
- $view->config->display_logo_instead_of_label = true;
- $view->config->columns_to_display = array('label', 'value');
- $view->config->translations['value'] = "times the diameter of Earth";
- return $view->render();
- }
- public function sparklines()
- {
- $view = new View('@ExampleUI/sparklines');
- $view->urlSparkline1 = $this->getUrlSparkline('generateSparkline', array('server' => 'server1', 'rand' => mt_rand()));
- $view->urlSparkline2 = $this->getUrlSparkline('generateSparkline', array('server' => 'server2', 'rand' => mt_rand()));
- return $view->render();
- }
- public function generateSparkline()
- {
- $view = ViewDataTableFactory::build(
- 'sparkline', 'ExampleUI.getTemperaturesEvolution', $controllerAction = 'ExampleUI.generateSparkline');
- $serverRequested = Common::getRequestVar('server', false);
- if (false !== $serverRequested) {
- $view->config->columns_to_display = array($serverRequested);
- }
- return $view->render();
- }
- public function treemap()
- {
- $view = ViewDataTableFactory::build(
- 'infoviz-treemap', 'ExampleUI.getTemperatures', $controllerAction = 'ExampleUI.treemap');
- $view->config->translations['value'] = "Temperature";
- $view->config->columns_to_display = array("label", "value");
- $view->config->selectable_columns = array("value");
- $view->config->show_evolution_values = 0;
- return $view->render();
- }
- }