浏览代码

0.0.7 增加开关

gemercheung 3 年之前
父节点
当前提交
213606f350
共有 3 个文件被更改,包括 103 次插入67 次删除
  1. 18 9
      README.md
  2. 76 58
      packages/core/src/basicTrack.ts
  3. 9 0
      packages/core/src/sdk.ts

+ 18 - 9
README.md

@@ -62,20 +62,29 @@ medici.init({
 
 > 隐藏带上 SDK version
 
-## 页面(采集)
+## 全局方法
 
-#### 实现两种方法()
 
-1. 全局注册页面
+1. setConfig 设置config参数,可后补
 
 ```js
-medici.setPages([
-    {
-        scene: '/scene',
-        setting: '/setting',
-    },
-]);
+medici.setConfig({
+    ... 
+})
+
+
+```
+2. stop 停止追踪 (全局)
+
+```js
+medici.stop()
+
 ```
+3. resume 恢复追踪 (全局)
+
+```js
+medici.resume()
+
 
 > 简单的 key:value, 影射页面采集
 

+ 76 - 58
packages/core/src/basicTrack.ts

@@ -3,6 +3,7 @@ import type { SDKInitConfig, PlatformType, SDKConfigType } from './sdk';
 import type { IHistory } from './history';
 import { collect } from './collector';
 import { cloneDeep } from 'lodash-es';
+import { SDK } from './sdk';
 
 export class BaseTrack implements IBaseAction, ICustomAction {
     protected _platform: PlatformType;
@@ -20,83 +21,100 @@ export class BaseTrack implements IBaseAction, ICustomAction {
         this._endPoint = params.endPoint;
         this._trackEndPoint = params.trackEndPoint;
     }
+    get _stopTrack() {
+        return SDK._stopTrack;
+    }
+
     public trackView(url: string, referrer: string, uuid: string): Promise<XMLHttpRequestResponseType> {
         console.log('BaseTrack-trackView', url, referrer, uuid);
-        this._history.playload.url = url;
-        const historyPlayload = cloneDeep(this._history.playload);
-        const payload = Object.assign(historyPlayload, {
-            ...this._config,
-            referrer: this._history.currentRef,
-            url: url,
-        });
-        console.log('send-playload', payload);
-        return collect(this._endPoint, 'pageview', payload);
+        if (!this._stopTrack) {
+            this._history.playload.url = url;
+            const historyPlayload = cloneDeep(this._history.playload);
+            const payload = Object.assign(historyPlayload, {
+                ...this._config,
+                referrer: this._history.currentRef,
+                url: url,
+            });
+            console.log('send-playload', payload);
+            return collect(this._endPoint, 'pageview', payload);
+        }
     }
 
     public trackEvent(event_name: string, event_data: string, url?: string, uuid?: string): Promise<XMLHttpRequestResponseType> {
-        console.log('BaseTrack-TrackEvent', event_name, event_data, url, uuid);
-        this._history.playload.url = url;
-        const historyPlayload = cloneDeep(this._history.playload);
-        const payload = Object.assign(historyPlayload, {
-            referrer: this._history.currentRef,
-            event_name: event_name,
-            url: url,
-            event_data: event_data,
-            ...this._config,
-        });
-        console.log('send-playload', payload);
-        return collect(this._endPoint, 'event', payload);
+        if (!this._stopTrack) {
+            console.log('BaseTrack-TrackEvent', event_name, event_data, url, uuid);
+            this._history.playload.url = url;
+            const historyPlayload = cloneDeep(this._history.playload);
+            const payload = Object.assign(historyPlayload, {
+                referrer: this._history.currentRef,
+                event_name: event_name,
+                url: url,
+                event_data: event_data,
+                ...this._config,
+            });
+            console.log('send-playload', payload);
+            return collect(this._endPoint, 'event', payload);
+        }
     }
 
     public sendEvent(value: string, type: string, url?: string, uuid?: string): Promise<XMLHttpRequestResponseType> {
-        console.log('BaseTrack-sendEvent', value, type, url, uuid);
-        const payload = Object.assign(this._history.playload, {
-            referrer: this._history.currentRef,
-            url: url,
-            event_name: type,
-            event_data: value,
-            ...this._config,
-        });
-        return collect(this._endPoint, 'event', payload);
+        if (!this._stopTrack) {
+            console.log('BaseTrack-sendEvent', value, type, url, uuid);
+            const payload = Object.assign(this._history.playload, {
+                referrer: this._history.currentRef,
+                url: url,
+                event_name: type,
+                event_data: value,
+                ...this._config,
+            });
+            return collect(this._endPoint, 'event', payload);
+        }
+
     }
 
     public track(trackActionName: string, trackActionOption?: TrackActionOption): Promise<XMLHttpRequestResponseType> {
-        const historyPlayload = cloneDeep(this._history.playload);
-        const payload = Object.assign(historyPlayload, {
-            referrer: this._history.currentRef,
-            ...trackActionOption,
-            trackActionName,
-            ...this._config,
-        });
-        return collect(this._trackEndPoint, 'track', payload);
+        if (!this._stopTrack) {
+            const historyPlayload = cloneDeep(this._history.playload);
+            const payload = Object.assign(historyPlayload, {
+                referrer: this._history.currentRef,
+                ...trackActionOption,
+                trackActionName,
+                ...this._config,
+            });
+            return collect(this._trackEndPoint, 'track', payload);
+        }
     }
 
     public startTrack(trackActionName: string, trackActionOption?: TrackActionOption): Promise<XMLHttpRequestResponseType> {
-        const historyPlayload = cloneDeep(this._history.playload);
-        const payload = Object.assign(historyPlayload, {
-            referrer: this._history.currentRef,
-            ...trackActionOption,
-            trackActionName,
-            ...this._config,
-        });
+        if (!this._stopTrack) {
+            const historyPlayload = cloneDeep(this._history.playload);
+            const payload = Object.assign(historyPlayload, {
+                referrer: this._history.currentRef,
+                ...trackActionOption,
+                trackActionName,
+                ...this._config,
+            });
 
-        if (trackActionOption.maxWaitTime) {
-            this._timeOut = setTimeout(() => {
-                this.endTrack(trackActionName, trackActionOption);
-            }, trackActionOption.maxWaitTime);
+            if (trackActionOption.maxWaitTime) {
+                this._timeOut = setTimeout(() => {
+                    this.endTrack(trackActionName, trackActionOption);
+                }, trackActionOption.maxWaitTime);
+            }
+            return collect(this._trackEndPoint, 'startTrack', payload);
         }
-        return collect(this._trackEndPoint, 'startTrack', payload);
     }
 
     public endTrack(trackActionName: string, trackActionOption?: TrackActionOption): Promise<XMLHttpRequestResponseType> {
         clearTimeout(this._timeOut);
-        const historyPlayload = cloneDeep(this._history.playload);
-        const payload = Object.assign(historyPlayload, {
-            referrer: this._history.currentRef,
-            ...trackActionOption,
-            trackActionName,
-            ...this._config,
-        });
-        return collect(this._trackEndPoint, 'endTrack', payload);
+        if (!this._stopTrack) {
+            const historyPlayload = cloneDeep(this._history.playload);
+            const payload = Object.assign(historyPlayload, {
+                referrer: this._history.currentRef,
+                ...trackActionOption,
+                trackActionName,
+                ...this._config,
+            });
+            return collect(this._trackEndPoint, 'endTrack', payload);
+        }
     }
 }

+ 9 - 0
packages/core/src/sdk.ts

@@ -22,6 +22,8 @@ export class SDK extends BaseTrack {
     protected _platform: PlatformType;
     protected _config: SDKInitConfig;
 
+    static _stopTrack = false;
+
     public eventer = new Eventer(this);
     public _history: IHistory;
 
@@ -35,4 +37,11 @@ export class SDK extends BaseTrack {
         this._config = config;
         super._config = this._config;
     }
+
+    public stop(): void {
+        SDK._stopTrack = true;
+    }
+    public resume(): void {
+        SDK._stopTrack = false;
+    }
 }