PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 1.5
Independent Analytics – WordPress Analytics Plugin v1.5
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 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 / inc / chart.php
independent-analytics / inc Last commit date
models 4 years ago queries 4 years ago utils 4 years ago chart.php 4 years ago db.php 4 years ago delete_data_ajax.php 4 years ago filters.php 4 years ago filters_ajax.php 4 years ago rest_api.php 4 years ago settings.php 4 years ago settings_ajax.php 4 years ago super_secret_content_generator.php 4 years ago table.php 4 years ago table_referrers.php 4 years ago table_views.php 4 years ago track_resource_changes.php 4 years ago
chart.php
138 lines
1 <?php
2
3 namespace IAWP;
4
5 class Chart
6 {
7 public function output_chart(Views $views)
8 {
9 $labels = array_map(function ($data_point) {
10 return $data_point[0]->format('M j');
11 }, $views->daily_views());
12
13 $data = array_map(function ($data_point) {
14 return $data_point[1];
15 }, $views->daily_views());
16
17 return $this->chart_html($labels, $data);
18 }
19
20 public function chart_html(array $labels, array $views)
21 {
22 $tick_color = get_option('iawp_dark_mode') ? '#ffffff' : '#18141F';
23 ob_start(); ?>
24 <div class="chart-container">
25 <div class="chart-inner">
26 <canvas id="myChart" width="800" height="300"></canvas>
27 <script>
28 (function () {
29 const labels = <?php echo Security::json_encode($labels); ?>;
30 const data = {
31 labels: labels,
32 datasets: [{
33 label: 'Views',
34 data: <?php echo Security::json_encode($views); ?>,
35 borderColor: '#6C46AE',
36 fill: true,
37 backgroundColor: 'rgba(108,70,174,0.3)',
38 pointBackgroundColor: 'rgba(108,70,174,1)',
39 tension: 0.4
40 }]
41 };
42 const options = {
43 interaction: {
44 intersect: false,
45 mode: 'index'
46 },
47 scales: {
48 y: {
49 beginAtZero: true,
50 grace: '25%',
51 grid: {
52 display: false,
53 color: '#220F42',
54 lineWidth: 3,
55 },
56 ticks: {
57 color: "<?php echo Security::hex($tick_color); ?>",
58 font: {
59 size: 14
60 }
61 },
62 },
63 x: {
64 ticks: {
65 color: "<?php echo Security::hex($tick_color); ?>",
66 autoSkip: true,
67 maxTicksLimit: 20,
68 font: {
69 size: 14
70 }
71 },
72 grid: {
73 display: false
74 }
75 }
76 },
77 plugins: {
78 legend: {
79 display: false,
80 align: 'start',
81 labels: {
82 color: '#ffffff',
83 padding: 4
84 }
85 }
86 }
87 }
88
89 const config = {
90 type: 'line',
91 data: data,
92 options: options
93 };
94
95 const canvas = document.getElementById('myChart');
96 const myChart = new Chart(canvas, config);
97 })();
98 </script>
99 </div>
100 </div><?php
101
102 $html = ob_get_contents();
103 ob_end_clean();
104
105 return $html;
106 }
107
108 public function quick_stats(Views $views)
109 {
110 $html = '<div id="quick-stats" class="quick-stats">';
111 $html .= '<div class="total stat">';
112 $html .= '<span class="title-med">' . number_format(absint($views->views())) . ' ' . esc_html__('Views', 'iawp') . '</span>';
113 $html .= '<span class="subtitle-small">' . Security::string($views->start()->format(Date_Format::php())) . ' - ' . Security::string($views->end()->format(Date_Format::php())) . '</span>';
114 $html .= '</div>';
115 $class = $views->views_percentage_growth() >= 0 ? 'positive' : 'negative';
116 $html .= '<div class="difference stat ' . esc_attr($class) . '">';
117 $html .= '<span class="title-med">' . Security::html($this->get_percentage_markup($views->views_percentage_growth())) . '</span>';
118 $html .= '<span class="subtitle-small">' . Security::string($views->prev_period_start()->format(Date_Format::php())) . ' - ' . Security::string($views->prev_period_end()->format(Date_Format::php())) . '</span>';
119 $html .= '</div>';
120 $html .= '</div>';
121
122 return $html;
123 }
124
125 private function get_percentage_markup(float $percentage) : string
126 {
127 $html = '<span class="percentage">';
128 if ($percentage >= 0) {
129 $html .= '<span class="icon-med dashicons dashicons-arrow-up-alt"></span> ' . absint($percentage) . '% ' . esc_html__('Increase', 'iawp');
130 } else {
131 $html .= '<span class="icon-med dashicons dashicons-arrow-own-alt"></span> ' . absint($percentage) . '% ' . esc_html__('Decrease', 'iawp');
132 }
133 $html .= '</span>';
134
135 return $html;
136 }
137 }
138