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