PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.14.2
Independent Analytics – WordPress Analytics Plugin v2.14.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 / javascript-source / modules / module-markup.js
independent-analytics / javascript-source / modules Last commit date
date-picker.js 1 year ago duplicate-field.js 1 year ago email-reports.js 2 years ago module-markup.js 1 year ago notices.js 1 year ago overview.js 9 months ago scroll-to-top.js 2 years ago sticky-sidebar.js 2 years ago support.js 2 years ago user-roles.js 1 year ago
module-markup.js
68 lines
1 // Stores ids for modules to request
2 const requestedModules = new Set()
3
4 // Store the id of the setTimeout currently running
5 let pollingTimeout = null
6
7 let isFirstAttempt = true
8
9 function isPolling() {
10 return Number.isInteger(pollingTimeout) && pollingTimeout > 0
11 }
12
13 function startPolling() {
14 if(isPolling() || requestedModules.size === 0) {
15 return
16 }
17
18 pollingTimeout = setTimeout(() => {
19 isFirstAttempt = false
20 pollingTimeout = null
21 fetchMarkup()
22 }, isFirstAttempt ? 0 : 500)
23 }
24
25 function dispatchEvent(id, moduleHtml) {
26 document.dispatchEvent(
27 new CustomEvent('iawp:module-markup:' + id, {
28 detail: {
29 id,
30 moduleHtml,
31 }
32 })
33 )
34 }
35
36 function fetchMarkup() {
37 const data = {
38 ...iawpActions.get_markup_for_modules,
39 ids: Array.from(requestedModules),
40 }
41
42 jQuery.post(ajaxurl, data, (response) => {
43 if(!Array.isArray(response.data)) {
44 return
45 }
46
47 response.data.forEach(module => {
48 if(module.hasDataset) {
49 dispatchEvent(module.id, module.moduleHtml)
50 requestedModules.delete(module.id)
51 }
52 })
53
54 startPolling()
55 }).fail((error) => {
56 startPolling()
57 })
58 }
59
60 module.exports = {
61 /**
62 * @return Markup for the module or null if markup is still being fetched.
63 */
64 getModuleMarkup(moduleId) {
65 requestedModules.add(moduleId)
66 startPolling()
67 }
68 }