PHP Class Piwik\Plugin\ViewDataTable
ViewDataTable instances load analytics data via Piwik's Reporting API and then output some
type of visualization of that data.
Visualizations can be in any format. HTML-based visualizations should extend
{@link Visualization}. Visualizations that use other formats, such as visualizations
that output an image, should extend ViewDataTable directly.
### Creating ViewDataTables
ViewDataTable instances are not created via the new operator, instead the {@link Piwik\ViewDataTable\Factory}
class is used.
The specific subclass to create is determined, first, by the **viewDataTable** query paramater.
If this parameter is not set, then the default visualization type for the report being
displayed is used.
### Configuring ViewDataTables
**Display properties**
ViewDataTable output can be customized by setting one of many available display
properties. Display properties are stored as fields in {@link Piwik\ViewDataTable\Config} objects.
ViewDataTables store a {@link Piwik\ViewDataTable\Config} object in the {@link $config} field.
Display properties can be set at any time before rendering.
**Request properties**
Request properties are similar to display properties in the way they are set. They are,
however, not used to customize ViewDataTable instances, but in the request to Piwik's
API when loading analytics data.
Request properties are set by setting the fields of a {@link Piwik\ViewDataTable\RequestConfig} object stored in
the {@link $requestConfig} field. They can be set at any time before rendering.
Setting them after data is loaded will have no effect.
**Customizing how reports are displayed**
Each individual report should be rendered in its own controller method. There are two
ways to render a report within its controller method. You can either:
1. manually create and configure a ViewDataTable instance
2. invoke {@link Piwik\Plugin\Controller::renderReport} and configure the ViewDataTable instance
in the {@hook ViewDataTable.configure} event.
ViewDataTable instances are configured by setting and modifying display properties and request
properties.
### Creating new visualizations
New visualizations can be created by extending the ViewDataTable class or one of its
descendants. To learn more
read our guide on creating new visualizations.
### Examples
**Manually configuring a ViewDataTable**
a controller method that displays a single report
public function myReport()
{
$view = \Piwik\ViewDataTable\Factory::build('table', 'MyPlugin.myReport');
$view->config->show_limit_control = true;
$view->config->translations['myFancyMetric'] = "My Fancy Metric";
...
return $view->render();
}
**Using {@link Piwik\Plugin\Controller::renderReport}**
First, a controller method that displays a single report:
public function myReport()
{
return $this->renderReport(__FUNCTION__);`
}
Then the event handler for the {@hook ViewDataTable.configure} event:
public function configureViewDataTable(ViewDataTable $view)
{
switch ($view->requestConfig->apiMethodToRequestDataTable) {
case 'MyPlugin.myReport':
$view->config->show_limit_control = true;
$view->config->translations['myFancyMetric'] = "My Fancy Metric";
...
break;
}
}
**Using custom configuration objects in a new visualization**
class MyVisualizationConfig extends Piwik\ViewDataTable\Config
{
public $my_new_property = true;
}
class MyVisualizationRequestConfig extends Piwik\ViewDataTable\RequestConfig
{
public $my_new_property = false;
}
class MyVisualization extends Piwik\Plugin\ViewDataTable
{
public static function getDefaultConfig()
{
return new MyVisualizationConfig();
}
public static function getDefaultRequestConfig()
{
return new MyVisualizationRequestConfig();
}
}
ファイルを表示
Open project: piwik/piwik
Class Usage Examples
Public Properties
Property |
Type |
Description |
|
$config |
Piwik\ViewDataTable\Config |
Contains display properties for this visualization. |
|
$requestConfig |
Piwik\ViewDataTable\RequestConfig |
Contains request properties for this visualization. |
|
Protected Properties
Property |
Type |
Description |
|
$dataTable |
Piwik\DataTable |
DataTable loaded from the API for this ViewDataTable. |
|
$request |
Piwik\ViewDataTable\Request |
|
|
Public Methods
Protected Methods
Private Methods
Method Details
__construct()
public method
Posts the {@hook ViewDataTable.configure} event which plugins can use to configure the
way reports are displayed.
public __construct ( $controllerAction, $apiMethodToRequestDataTable, $overrideParams = [] ) |
canDisplayViewDataTable()
public static method
New visualization classes should override this method if they can only visualize certain
types of data. The evolution graph visualization, for example, can only visualize
sets of DataTables. If the API method used results in a single DataTable, the evolution
graph footer icon should not be displayed.
checkStandardDataTable()
protected method
Checks that the API returned a normal DataTable (as opposed to DataTable\Map)
getDataTable()
public method
Returns the DataTable loaded from the API.
getDefaultConfig()
public static method
Visualizations that define their own display properties should override this method and
return an instance of their new {@link Piwik\ViewDataTable\Config} descendant.
See the last example {@link ViewDataTable here} for more information.
getDefaultDataTableCssClass()
protected method
getDefaultRequestConfig()
public static method
Visualizations that define their own request properties should override this method and
return an instance of their new {@link Piwik\ViewDataTable\RequestConfig} descendant.
See the last example {@link ViewDataTable here} for more information.
getNonOverridableParams()
public method
getOverridableProperties()
protected method
Returns the list of view properties that can be overriden by query parameters.
getPropertyFromQueryParam()
protected method
getViewDataTableId()
public static method
Derived classes should not override this method. They should instead declare a const ID field
with the viewDataTable ID.
isRequestingSingleDataTable()
public method
Returns true if this instance will request a single DataTable, false if requesting
more than one.
isViewDataTableId()
public method
Can be used to test whether a ViewDataTable object is an instance of a certain visualization or not,
without having to know where that visualization is.
loadDataTableFromAPI()
protected method
Requests all needed data and renders the view.
setDataTable()
public method
It won't be loaded from the API in this case.
public setDataTable ( DataTable $dataTable ) : void |
$dataTable |
Piwik\DataTable |
The DataTable to use. |
return |
void |
|
throwWhenSettingNonOverridableParameter()
public method
Display a meaningful error message when any invalid parameter is being set.
Property Details
$config public_oe property
Contains display properties for this visualization.
public Config,Piwik\ViewDataTable $config |
return |
Piwik\ViewDataTable\Config |
|
$dataTable protected_oe property
DataTable loaded from the API for this ViewDataTable.
protected DataTable,Piwik $dataTable |
return |
Piwik\DataTable |
|
$request protected_oe property
protected Request,Piwik\ViewDataTable $request |
return |
Piwik\ViewDataTable\Request |
|
$requestConfig public_oe property
Contains request properties for this visualization.
public RequestConfig,Piwik\ViewDataTable $requestConfig |
return |
Piwik\ViewDataTable\RequestConfig |
|