1 |
|
2 |
|
3 |
|
4 | import dataLayerPush from "./helpers/dataLayerPush"
|
5 | import forEach from "lodash-es/forEach"
|
6 | import isUndefined from "lodash-es/isUndefined"
|
7 | import isFunction from "lodash-es/isFunction"
|
8 |
|
9 | class MeasurementFramework {
|
10 |
|
11 | constructor() {
|
12 | this.registered = []
|
13 | this.vars = {}
|
14 | this.a = "__mf_lock"
|
15 | }
|
16 |
|
17 | register(func) {
|
18 | if (isFunction(func)) {
|
19 | this.registered.push(func)
|
20 | } else {
|
21 | console.warn("Measurement Framework received a non-function.", func)
|
22 | }
|
23 |
|
24 | }
|
25 |
|
26 | init() {
|
27 | let self = this
|
28 | if (isUndefined(window[this.a])) {
|
29 | console.log("Measurement Framework Loaded with " + this.registered.length + " tasks.")
|
30 | forEach(this.registered, function (registeredFunc) {
|
31 | let funcInitDataLayer = registeredFunc()
|
32 | forEach(funcInitDataLayer, function (value, key) {
|
33 | self.vars[key] = value
|
34 | })
|
35 | })
|
36 | window[this.a] = true
|
37 | dataLayerPush("Measurement Framework Loaded", {
|
38 | "mfDebug": this.registered.length + " tasks registered."
|
39 | })
|
40 | return self.vars
|
41 | } else {
|
42 | console.log("Measurement Framework already loaded. Skipping initialization")
|
43 | }
|
44 |
|
45 | }
|
46 | }
|
47 |
|
48 |
|
49 | export default new MeasurementFramework() |
\ | No newline at end of file |