PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.12.2
Independent Analytics – WordPress Analytics Plugin v2.12.2
2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / IAWP / Overview / Modules / Pie_Chart_Module.php
independent-analytics / IAWP / Overview / Modules Last commit date
Busiest_Day_Of_Week_Module.php 1 year ago Busiest_Time_Of_Day_Module.php 1 year ago Line_Chart_Module.php 1 year ago Map_Module.php 1 year ago Module.php 11 months ago New_Sessions_Module.php 1 year ago Pie_Chart_Module.php 1 year ago Quick_Stats_Module.php 1 year ago Recent_Conversions_Module.php 1 year ago Recent_Views_Module.php 1 year ago Top_Ten_Module.php 1 year ago
Pie_Chart_Module.php
57 lines
1 <?php
2
3 namespace IAWP\Overview\Modules;
4
5 use IAWP\Date_Range\Relative_Date_Range;
6 use IAWP\Env;
7 use IAWP\Tables\Table;
8 use IAWPSCOPED\Illuminate\Support\Collection;
9 /** @internal */
10 class Pie_Chart_Module extends \IAWP\Overview\Modules\Module
11 {
12 public function module_type() : string
13 {
14 return 'pie-chart';
15 }
16 public function module_name() : string
17 {
18 return \__('Pie Chart', 'independent-analytics');
19 }
20 public function calculate_dataset()
21 {
22 $sort_by = $this->attributes['aggregatable_sort_by'] ?? null;
23 $sort_direction = $this->attributes['sort_direction'] ?? null;
24 $date_range = Relative_Date_Range::range_by_id($this->attributes['date_range'] ?? null);
25 $table_class = Env::get_table($this->report()->type());
26 /** @var Table $table */
27 $table = new $table_class($this->report()->group_name(), \true);
28 $sort_configuration = $table->sanitize_sort_parameters($sort_by, $sort_direction);
29 $metric_column = $sort_configuration->column();
30 if ($this->report()->has_filters()) {
31 $filters = $table->sanitize_filters($this->report()->filters());
32 } else {
33 $filters = null;
34 }
35 $rows_class = $table->group()->rows_class();
36 $rows_query = new $rows_class($date_range, null, $filters, $sort_configuration);
37 $rows = Collection::make($rows_query->rows());
38 $dataset = $rows->take(4)->map(function ($model) use($table, $metric_column) {
39 $title_column = $table->group()->title_column();
40 return ['label' => $model->{$title_column}(), 'unit' => $this->get_field_option_name('aggregatable_sort_by'), 'value' => $model->{$metric_column}(), 'formatted_value' => $table->formatted_csv_cell_content($table->get_column($metric_column), $model->{$metric_column}())];
41 })->all();
42 // Add up the rest of the rows to get value for "Other"
43 $other = $rows->slice(4)->reduce(function ($sum, $model) use($metric_column) {
44 return $sum + $model->{$metric_column}();
45 }, 0);
46 // Include an "Other" wedge if a value was found
47 if ($other > 0) {
48 $dataset[] = ['label' => \__('Other', 'independent-analytics'), 'unit' => $this->get_field_option_name('aggregatable_sort_by'), 'value' => $other, 'formatted_value' => $table->formatted_csv_cell_content($table->get_column($metric_column), $other)];
49 }
50 return $dataset;
51 }
52 protected function module_fields() : array
53 {
54 return ['report', 'aggregatable_sort_by', 'date_range'];
55 }
56 }
57