webspresso 0.0.71 → 0.0.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -191,8 +191,19 @@ var AnalyticsPage = {
191
191
  vnode.state.countries = [];
192
192
  vnode.state.recent = [];
193
193
  vnode.state.chartLoaded = false;
194
+ vnode.state._stopPoll = null;
195
+ vnode.state.chartDataVersion = 0;
194
196
  this.loadData(vnode);
195
197
  this.loadChartJs(vnode);
198
+ if (typeof runAdminAutoRefresh === 'function') {
199
+ vnode.state._stopPoll = runAdminAutoRefresh(function() {
200
+ this.loadData(vnode);
201
+ }.bind(this));
202
+ }
203
+ },
204
+
205
+ onremove: function(vnode) {
206
+ if (vnode.state._stopPoll) vnode.state._stopPoll();
196
207
  },
197
208
 
198
209
  loadChartJs: function(vnode) {
@@ -213,7 +224,7 @@ var AnalyticsPage = {
213
224
  vnode.state.loading = true;
214
225
  var days = vnode.state.days;
215
226
 
216
- Promise.all([
227
+ return Promise.all([
217
228
  analyticsApi('stats', days),
218
229
  analyticsApi('views-over-time', days),
219
230
  analyticsApi('top-pages', days),
@@ -232,6 +243,7 @@ var AnalyticsPage = {
232
243
  vnode.state.clientErrors = results[6];
233
244
  vnode.state.recent = results[7];
234
245
  vnode.state.loading = false;
246
+ vnode.state.chartDataVersion = (vnode.state.chartDataVersion || 0) + 1;
235
247
 
236
248
  if (chartInstance) {
237
249
  chartInstance.destroy();
@@ -267,15 +279,24 @@ var AnalyticsPage = {
267
279
  ]),
268
280
  m('p.text-gray-500.text-sm.mt-1', 'Page view statistics and visitor analytics'),
269
281
  ]),
270
- // Day filter
271
- m('div.flex.gap-1.bg-gray-100.rounded-lg.p-1', [7, 30, 90].map(function(d) {
272
- return m('button.px-3.py-1.5.text-sm.font-medium.rounded-md.transition-colors', {
273
- class: s.days === d
274
- ? 'bg-white text-gray-900 shadow-sm'
275
- : 'text-gray-500 hover:text-gray-700',
276
- onclick: function() { self.setDays(vnode, d); },
277
- }, 'Last ' + d + ' days');
278
- })),
282
+ m('div.flex.items-center.gap-2.flex-wrap.justify-end', [
283
+ typeof RefreshIconButton !== 'undefined'
284
+ ? m(RefreshIconButton, {
285
+ title: 'Refresh analytics',
286
+ spinning: s.loading,
287
+ onclick: function() { self.loadData(vnode); },
288
+ })
289
+ : null,
290
+ // Day filter
291
+ m('div.flex.gap-1.bg-gray-100.rounded-lg.p-1', [7, 30, 90].map(function(d) {
292
+ return m('button.px-3.py-1.5.text-sm.font-medium.rounded-md.transition-colors', {
293
+ class: s.days === d
294
+ ? 'bg-white text-gray-900 shadow-sm'
295
+ : 'text-gray-500 hover:text-gray-700',
296
+ onclick: function() { self.setDays(vnode, d); },
297
+ }, 'Last ' + d + ' days');
298
+ })),
299
+ ]),
279
300
  ]),
280
301
 
281
302
  s.loading
@@ -303,7 +324,7 @@ var AnalyticsPage = {
303
324
  ]),
304
325
  m('div.p-5', [
305
326
  s.chartLoaded && s.viewsOverTime.length > 0
306
- ? m(ViewsChart, { key: 'chart-' + s.days, data: s.viewsOverTime })
327
+ ? m(ViewsChart, { key: 'chart-' + s.days + '-' + (s.chartDataVersion || 0), data: s.viewsOverTime })
307
328
  : m('div.flex.justify-center.py-16.text-gray-400.text-sm', 'Loading chart...'),
308
329
  ]),
309
330
  ]),