Browse Source

Spruce up user stats graphs

spaghetti 8 years ago
parent
commit
6ce6fadd10
1 changed files with 54 additions and 6 deletions
  1. 54
    6
      sections/stats/users.php

+ 54
- 6
sections/stats/users.php View File

141
 <h3 id="User_Platforms"><a href="#User_Platforms">User Platforms</a></h3>
141
 <h3 id="User_Platforms"><a href="#User_Platforms">User Platforms</a></h3>
142
 <div class="box pad center">
142
 <div class="box pad center">
143
   <canvas class="chart" id="chart_user_platforms"></canvas>
143
   <canvas class="chart" id="chart_user_platforms"></canvas>
144
+  <?
145
+    $AllPlatforms = array_column($PlatformDistribution, 'OperatingSystem');
146
+    $SlicedPlatforms = (count($AllPlatforms) > 14) ? array_slice($AllPlatforms,0,13)+[13=>'Other'] : $AllPlatforms;
147
+    $AllUsers = array_column($PlatformDistribution, 'Users');
148
+    $SlicedUsers = (count($AllUsers) > 14) ? array_slice($AllUsers,0,13)+[13=>array_sum(array_slice($AllUsers,13))] : $AllUsers;
149
+    $Colors = [];
150
+    $Palette = ["blue"=>['#46B','#34A','#239','#128','#117'],"red"=>['#B45','#A34','#923'],"green"=>['#3B3','#2A2','#191','#080'],"purple"=>['#B3B','#A2A','#919','#808','#707','#606','#505','#404']];
151
+    $Counts = [0,0,0,0];
152
+    for ($i = 0; $i < count($SlicedPlatforms); $i++) {
153
+      if (preg_match('/Windows/i', $SlicedPlatforms[$i])) {
154
+        $Colors[] = $Palette["blue"][$Counts[0]];
155
+        $Counts[0]++;
156
+      } else if (preg_match('/Mac|OS ?X/i', $SlicedPlatforms[$i])) {
157
+        $Colors[] = $Palette["red"][$Counts[1]];
158
+        $Counts[1]++;
159
+      } else if (preg_match('/Linux|Ubuntu|Fedora/i', $SlicedPlatforms[$i])) {
160
+        $Colors[] = $Palette["green"][$Counts[2]];
161
+        $Counts[2]++;
162
+      } else {
163
+        $Colors[] = $Palette["purple"][$Counts[3]];
164
+        $Counts[3]++;
165
+      }
166
+    }
167
+  ?>
144
   <script>
168
   <script>
145
     new Chart($('#chart_user_platforms').raw().getContext('2d'), {
169
     new Chart($('#chart_user_platforms').raw().getContext('2d'), {
146
       type: 'pie',
170
       type: 'pie',
147
       data: {
171
       data: {
148
-        labels: <? print '["'.implode('","', array_column($PlatformDistribution, 'OperatingSystem')).'"]'; ?>,
172
+        labels: ["<?=implode('","', $SlicedPlatforms)?>"],
149
         datasets: [ {
173
         datasets: [ {
150
-          data: <? print "[".implode(",", array_column($PlatformDistribution, 'Users'))."]"; ?>,
151
-          backgroundColor: ['#8a00b8','#9416bf','#9f2dc5','#a944cb','#b45bd2','#be71d8','#c988de','#d39fe5','#deb6eb','#e8ccf1', '#ffffff', '#ffffff', '#ffffff', '#ffffff']
174
+          data: [<?=implode(",", $SlicedUsers)?>],
175
+            backgroundColor: ["<?=implode('","', $Colors)?>"]
152
         }]
176
         }]
153
       }
177
       }
154
     })
178
     })
158
 <h3 id="User_Browsers"><a href="#User_Browsers">User Browsers</a></h3>
182
 <h3 id="User_Browsers"><a href="#User_Browsers">User Browsers</a></h3>
159
 <div class="box pad center">
183
 <div class="box pad center">
160
   <canvas class="chart" id="chart_user_browsers"></canvas>
184
   <canvas class="chart" id="chart_user_browsers"></canvas>
185
+  <?
186
+    $AllBrowsers = array_column($BrowserDistribution, 'Browser');
187
+    $SlicedBrowsers = (count($AllBrowsers) > 7) ? array_slice($AllBrowsers,0,6)+[6=>'Other'] : $AllBrowsers;
188
+    $AllUsers = array_column($BrowserDistribution, 'Users');
189
+    $SlicedUsers = (count($AllUsers) > 7) ? array_slice($AllUsers,0,6)+[6=>array_sum(array_slice($AllUsers,6))] : $AllUsers;
190
+    $Colors = [];
191
+    $Palette = ["blue"=>['#46B','#34A'],"orange"=>['#F53','#E42'],"green"=>['#3B3','#2A2'],"purple"=>['#B3B','#A2A','#919','#808','#707','#606','#505','#404']];
192
+    $Counts = [0,0,0,0];
193
+    for ($i = 0; $i < count($SlicedBrowsers); $i++) {
194
+      if (preg_match('/Chrome/i', $SlicedBrowsers[$i])) {
195
+        $Colors[] = $Palette["green"][$Counts[0]];
196
+        $Counts[0]++;
197
+      } else if (preg_match('/Firefox/i', $SlicedBrowsers[$i])) {
198
+        $Colors[] = $Palette["orange"][$Counts[1]];
199
+        $Counts[1]++;
200
+      } else if (preg_match('/Safari/i', $SlicedBrowsers[$i])) {
201
+        $Colors[] = $Palette["blue"][$Counts[2]];
202
+        $Counts[2]++;
203
+      } else {
204
+        $Colors[] = $Palette["purple"][$Counts[3]];
205
+        $Counts[3]++;
206
+      }
207
+    }
208
+  ?>
161
   <script>
209
   <script>
162
     new Chart($('#chart_user_browsers').raw().getContext('2d'), {
210
     new Chart($('#chart_user_browsers').raw().getContext('2d'), {
163
       type: 'pie',
211
       type: 'pie',
164
       data: {
212
       data: {
165
-        labels: <? print '["'.implode('","', array_column($BrowserDistribution, 'Browser')).'"]'; ?>,
213
+        labels: ["<?=implode('","', $SlicedBrowsers)?>"],
166
         datasets: [ {
214
         datasets: [ {
167
-          data: <? print "[".implode(",", array_column($BrowserDistribution, 'Users'))."]"; ?>,
168
-          backgroundColor: ['#8a00b8','#9416bf','#9f2dc5','#a944cb','#b45bd2','#be71d8','#c988de','#d39fe5','#deb6eb','#e8ccf1', '#ffffff', '#ffffff', '#ffffff', '#ffffff']
215
+          data: [<?=implode(",", $SlicedUsers)?>],
216
+          backgroundColor: ["<?=implode('","', $Colors)?>"],
169
         }]
217
         }]
170
       }
218
       }
171
     })
219
     })

Loading…
Cancel
Save