Skip to content
GitLab
Explorer
Connexion
S'inscrire
Navigation principale
Rechercher ou aller à…
Projet
S
stats-facil
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Wiki
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Extraits de code
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Déploiement
Releases
Registre de paquets
Registre de conteneur
Registre de modèles
Opération
Environnements
Modules Terraform
Surveillance
Incidents
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse CI/CD
Données d'analyse du dépôt
Expériences du modèle
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
facil
stats-facil
Validations
fd5ee5a9
Valider
fd5ee5a9
rédigé
11 years ago
par
Thomas Steur
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
cleaning up Plugin/ViewDataTable
parent
42d33a16
Aucune branche associée trouvée
Branches contenant la validation
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Modifications
4
Masquer les modifications d'espaces
En ligne
Côte à côte
Affichage de
4 fichiers modifiés
core/API/Request.php
+15
-0
15 ajouts, 0 suppression
core/API/Request.php
core/Common.php
+13
-0
13 ajouts, 0 suppression
core/Common.php
core/Plugin/ViewDataTable.php
+47
-61
47 ajouts, 61 suppressions
core/Plugin/ViewDataTable.php
core/Plugin/Visualization.php
+2
-66
2 ajouts, 66 suppressions
core/Plugin/Visualization.php
avec
77 ajouts
et
127 suppressions
core/API/Request.php
+
15
−
0
Voir le fichier @
fd5ee5a9
...
...
@@ -242,6 +242,21 @@ class Request
return
$GET
;
}
/**
* Returns URL for this report w/o any filter parameters.
*
* @param string $module
* @param string $action
* @param array $queryParams
*
* @return string
*/
public
static
function
getBaseReportUrl
(
$module
,
$action
,
$queryParams
=
array
())
{
$params
=
array_merge
(
$queryParams
,
array
(
'module'
=>
$module
,
'action'
=>
$action
));
return
Request
::
getCurrentUrlWithoutGenericFilters
(
$params
);
}
/**
* Returns the current URL without generic filter query parameters.
*
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
core/Common.php
+
13
−
0
Voir le fichier @
fd5ee5a9
...
...
@@ -597,6 +597,19 @@ class Common
return
json_decode
(
$json
,
$assoc
);
}
/**
* Returns the list of parent classes for the given class.
*
* @param string $klass A class name.
* @return string[] The list of parent classes in order from highest ancestor to the descended class.
*/
public
static
function
getClassLineage
(
$klass
)
{
$klasses
=
array_merge
(
array
(
$klass
),
array_values
(
class_parents
(
$klass
,
$autoload
=
false
)));
return
array_reverse
(
$klasses
);
}
/*
* DataFiles
*/
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
core/Plugin/ViewDataTable.php
+
47
−
61
Voir le fichier @
fd5ee5a9
...
...
@@ -25,6 +25,7 @@ use Piwik\View;
use
Piwik\View\ViewInterface
;
use
Piwik\ViewDataTable\Config
as
VizConfig
;
use
Piwik\ViewDataTable\RequestConfig
as
VizRequest
;
use
\Piwik\ViewDataTable\Request
as
ViewDataTableRequest
;
/**
* This class is used to load (from the API) and customize the output of a given DataTable.
...
...
@@ -78,54 +79,42 @@ abstract class ViewDataTable implements ViewInterface
protected
$dataTable
=
null
;
/**
* @see init()
* @var string
*/
protected
$currentControllerAction
;
/**
* @see init()
* @var string
*/
protected
$currentControllerName
;
/**
* @var null|\Piwik\ViewDataTable\Config
* @var \Piwik\ViewDataTable\Config
*/
public
$config
;
/**
* @var
null|
\Piwik\ViewDataTable\RequestConfig
* @var \Piwik\ViewDataTable\RequestConfig
*/
public
$requestConfig
;
/**
* @var
\Piwik\
ViewDataTable
\
Request
* @var ViewDataTableRequest
*/
protected
$request
;
/**
* Default constructor.
*/
public
function
__construct
(
$c
urrentC
ontrollerAction
,
$apiMethodToRequestDataTable
,
$defaultReportProperties
)
public
function
__construct
(
$controllerAction
,
$apiMethodToRequestDataTable
,
$defaultReportProperties
)
{
list
(
$c
urrentC
ontrollerName
,
$c
urrentC
ontrollerAction
)
=
explode
(
'.'
,
$c
urrentC
ontrollerAction
);
list
(
$controllerName
,
$controllerAction
)
=
explode
(
'.'
,
$controllerAction
);
$this
->
requestConfig
=
$this
->
getDefaultRequestConfig
();
$this
->
config
=
$this
->
getDefaultConfig
();
$this
->
config
->
subtable_controller_action
=
$c
urrentC
ontrollerAction
;
$this
->
config
->
setController
(
$c
urrentC
ontrollerName
,
$c
urrentC
ontrollerAction
);
$this
->
config
->
subtable_controller_action
=
$controllerAction
;
$this
->
config
->
setController
(
$controllerName
,
$controllerAction
);
$this
->
request
=
new
\Piwik\
ViewDataTable
\
Request
(
$this
->
requestConfig
);
$this
->
request
=
new
ViewDataTableRequest
(
$this
->
requestConfig
);
$this
->
setViewProperties
(
$defaultReportProperties
);
$this
->
idSubtable
=
Common
::
getRequestVar
(
'idSubtable'
,
false
,
'int'
);
$this
->
config
->
show_footer_icons
=
(
$this
->
idSubtable
==
false
);
$this
->
requestConfig
->
apiMethodToRequestDataTable
=
$apiMethodToRequestDataTable
;
$this
->
config
->
show_footer_icons
=
(
false
==
$this
->
idSubtable
);
$this
->
config
->
self_url
=
Request
::
getBaseReportUrl
(
$controllerName
,
$controllerAction
)
;
$this
->
config
->
self_url
=
$this
->
getBaseReportUrl
(
$currentControllerName
,
$currentControllerAction
)
;
$this
->
requestConfig
->
apiMethodToRequestDataTable
=
$apiMethodToRequestDataTable
;
// the exclude low population threshold value is sometimes obtained by requesting data.
// to avoid issuing unecessary requests when display properties are determined by metadata,
...
...
@@ -203,6 +192,13 @@ abstract class ViewDataTable implements ViewInterface
$this
->
dataTable
=
$dataTable
;
}
private
function
setViewProperties
(
$values
)
{
foreach
(
$values
as
$name
=>
$value
)
{
$this
->
setViewProperty
(
$name
,
$value
);
}
}
/**
* Sets a view property by name. This function handles special view properties
* like 'translations' & 'related_reports' that store arrays.
...
...
@@ -239,10 +235,8 @@ abstract class ViewDataTable implements ViewInterface
$this
->
requestConfig
->
$name
=
$value
;
}
else
if
(
property_exists
(
$this
->
config
,
$name
))
{
$this
->
config
->
$name
=
$value
;
}
else
if
(
property_exists
(
$this
,
$name
))
{
$this
->
$name
=
$value
;
}
else
{
$report
=
$this
->
c
urrentC
ontrollerName
.
'.'
.
$this
->
c
urrentC
ontrollerAction
;
$report
=
$this
->
c
onfig
->
c
ontrollerName
.
'.'
.
$this
->
c
onfig
->
c
ontrollerAction
;
throw
new
\Exception
(
"Invalid view property '
$name
' specified in view property metadata for '
$report
'."
);
}
}
...
...
@@ -259,25 +253,38 @@ abstract class ViewDataTable implements ViewInterface
}
// TODO parent class should not know anything about children
$visualizationIds
=
Visualiz
ati
on
::
get
Visualization
IdsWithInheritance
(
get_class
(
$this
));
$visualizationIds
=
st
ati
c
::
getIdsWithInheritance
(
get_class
(
$this
));
foreach
(
$visualizationIds
as
$visualizationId
)
{
if
(
empty
(
$properties
[
$visualizationId
]))
{
continue
;
}
foreach
(
$properties
[
$visualizationId
]
as
$key
=>
$value
)
{
if
(
property_exists
(
$this
->
requestConfig
,
$key
))
{
$this
->
requestConfig
->
$key
=
$value
;
}
elseif
(
property_exists
(
$this
->
config
,
$key
))
{
$this
->
config
->
$key
=
$value
;
}
else
{
$this
->
$key
=
$value
;
}
}
$this
->
setViewProperties
(
$properties
[
$visualizationId
]);
}
}
/**
* Returns the viewDataTable IDs of a visualization's class lineage.
*
* @see self::getVisualizationClassLineage
*
* @param string $klass The visualization class.
*
* @return array
*/
public
static
function
getIdsWithInheritance
(
$klass
)
{
$klasses
=
Common
::
getClassLineage
(
$klass
);
$result
=
array
();
foreach
(
$klasses
as
$klass
)
{
$result
[]
=
$klass
::
getViewDataTableId
();
}
return
$result
;
}
/**
* Checks that the API returned a normal DataTable (as opposed to DataTable\Map)
* @throws \Exception
...
...
@@ -291,11 +298,12 @@ abstract class ViewDataTable implements ViewInterface
private
function
addRelatedReport
(
$module
,
$action
,
$title
,
$queryParams
=
array
())
{
// don't add the related report if it references this report
if
(
$this
->
c
urrentC
ontrollerName
==
$module
&&
$this
->
c
urrentC
ontrollerAction
==
$action
)
{
if
(
$this
->
c
onfig
->
c
ontrollerName
==
$module
&&
$this
->
c
onfig
->
c
ontrollerAction
==
$action
)
{
return
;
}
$url
=
$this
->
getBaseReportUrl
(
$module
,
$action
,
$queryParams
);
$url
=
Request
::
getBaseReportUrl
(
$module
,
$action
,
$queryParams
);
$this
->
config
->
related_reports
[
$url
]
=
$title
;
}
...
...
@@ -307,20 +315,6 @@ abstract class ViewDataTable implements ViewInterface
}
}
/**
* Returns URL for this report w/o any filter parameters.
*
* @param string $module
* @param string $action
* @param array $queryParams
* @return string
*/
private
function
getBaseReportUrl
(
$module
,
$action
,
$queryParams
=
array
())
{
$params
=
array_merge
(
$queryParams
,
array
(
'module'
=>
$module
,
'action'
=>
$action
));
return
Request
::
getCurrentUrlWithoutGenericFilters
(
$params
);
}
/**
* Convenience function. Calls main() & renders the view that gets built.
*
...
...
@@ -332,6 +326,7 @@ abstract class ViewDataTable implements ViewInterface
return
$view
->
render
();
}
abstract
protected
function
buildView
();
protected
function
overrideViewProperties
()
{
...
...
@@ -344,8 +339,6 @@ abstract class ViewDataTable implements ViewInterface
}
}
abstract
protected
function
buildView
();
private
function
getDefaultFooterIconsToShow
()
{
$result
=
array
();
...
...
@@ -492,13 +485,6 @@ abstract class ViewDataTable implements ViewInterface
return
'dataTableViz'
.
Piwik
::
getUnnamespacedClassName
(
get_class
(
$this
));
}
private
function
setViewProperties
(
$values
)
{
foreach
(
$values
as
$name
=>
$value
)
{
$this
->
setViewProperty
(
$name
,
$value
);
}
}
/**
* Returns an array mapping visualization IDs with information necessary for adding the
* visualizations to the footer of DataTable views.
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
core/Plugin/Visualization.php
+
2
−
66
Voir le fichier @
fd5ee5a9
...
...
@@ -41,7 +41,7 @@ class Visualization extends ViewDataTable
private
$templateVars
=
array
();
final
public
function
__construct
(
$c
urrentC
ontrollerAction
,
$apiMethodToRequestDataTable
,
$defaultReportProperties
)
final
public
function
__construct
(
$controllerAction
,
$apiMethodToRequestDataTable
,
$defaultReportProperties
)
{
$templateFile
=
static
::
TEMPLATE_FILE
;
...
...
@@ -49,7 +49,7 @@ class Visualization extends ViewDataTable
throw
new
\Exception
(
'You have not defined a constant named TEMPLATE_FILE in your visualization class.'
);
}
parent
::
__construct
(
$c
urrentC
ontrollerAction
,
$apiMethodToRequestDataTable
,
$defaultReportProperties
);
parent
::
__construct
(
$controllerAction
,
$apiMethodToRequestDataTable
,
$defaultReportProperties
);
$this
->
init
();
}
...
...
@@ -534,70 +534,6 @@ class Visualization extends ViewDataTable
// $this->generator = new GeneratorFoo($dataTable);
}
/**
* Returns the list of parents for a Visualization class excluding the
* Visualization class and above.
*
* @param string $klass The class name of the Visualization.
* @return Visualization[] The list of parent classes in order from highest
* ancestor to the descended class.
*/
public
static
function
getVisualizationClassLineage
(
$klass
)
{
$klasses
=
array_merge
(
array
(
$klass
),
array_values
(
class_parents
(
$klass
,
$autoload
=
false
)));
$idx
=
array_search
(
'Piwik\\Plugin\\Visualization'
,
$klasses
);
if
(
$idx
!==
false
)
{
$klasses
=
array_slice
(
$klasses
,
0
,
$idx
);
}
return
array_reverse
(
$klasses
);
}
/**
* Returns the viewDataTable IDs of a visualization's class lineage.
*
* @see self::getVisualizationClassLineage
*
* @param string $klass The visualization class.
*
* @return array
*/
public
static
function
getVisualizationIdsWithInheritance
(
$klass
)
{
$klasses
=
self
::
getVisualizationClassLineage
(
$klass
);
$result
=
array
();
foreach
(
$klasses
as
$klass
)
{
$result
[]
=
$klass
::
getViewDataTableId
();
}
return
$result
;
}
/**
* Helper function that merges the static field values of every class in this
* classes inheritance hierarchy. Uses late-static binding.
*/
protected
function
getPropertyNameListWithMetaProperty
(
$baseProperties
,
$staticFieldName
)
{
if
(
isset
(
static
::
$$staticFieldName
))
{
$result
=
array
();
$lineage
=
static
::
getVisualizationClassLineage
(
get_called_class
());
foreach
(
$lineage
as
$klass
)
{
if
(
isset
(
$klass
::
$$staticFieldName
))
{
$result
=
array_merge
(
$result
,
$klass
::
$$staticFieldName
);
}
}
$result
=
array_merge
(
$baseProperties
,
$result
);
return
array_unique
(
$result
);
}
return
$baseProperties
;
}
private
function
getFiltersToRun
()
{
$priorityFilters
=
array
();
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter