diff --git a/src/js/Analytics.js b/src/js/Analytics.js
index b4a718c1..6df03522 100644
--- a/src/js/Analytics.js
+++ b/src/js/Analytics.js
@@ -1,180 +1,186 @@
-'use strict';
-const Analytics = function (trackingId, userId, appName, appVersion, gitRevision, os, checkForDebugVersions, optOut, debugMode, buildType) {
- this._trackingId = trackingId;
+let tracking = null;
+export { tracking };
- this.setOptOut(optOut);
+export function createAnalytics(ga, settings) {
+ tracking = new Analytics(ga, settings);
+}
- this._googleAnalytics = googleAnalytics;
+class Analytics {
- this._googleAnalytics.initialize(this._trackingId, {
- storage: 'none',
- clientId: userId,
- debug: !!debugMode,
- });
+ constructor (ga, settings) {
+ // trackingId, userId, appName, appVersion, gitRevision, os, checkForDebugVersions, optOut, debugMode, buildType
+ this._trackingId = settings.trackingId;
- // Make it work for the Chrome App:
- this._googleAnalytics.set('forceSSL', true);
- this._googleAnalytics.set('transport', 'xhr');
+ this.setOptOut(settings.optOut);
- // Make it work for NW.js:
- this._googleAnalytics.set('checkProtocolTask', null);
+ this._googleAnalytics = ga;
- this._googleAnalytics.set('appName', appName);
- this._googleAnalytics.set('appVersion', debugMode ? `${appVersion}-debug` : appVersion);
+ this._googleAnalytics.initialize(this._trackingId, {
+ storage: 'none',
+ clientId: settings.userId,
+ debug: !!settings.debugMode,
+ });
- this.EVENT_CATEGORIES = {
- APPLICATION: 'Application',
- FLIGHT_CONTROLLER: 'FlightController',
- FLASHING: 'Flashing',
- };
+ // Make it work for the Chrome App:
+ this._googleAnalytics.set('forceSSL', true);
+ this._googleAnalytics.set('transport', 'xhr');
- this.DATA = {
- BOARD_TYPE: 'boardType',
- API_VERSION: 'apiVersion',
- FIRMWARE_TYPE: 'firmwareType',
- FIRMWARE_VERSION: 'firmwareVersion',
- FIRMWARE_NAME: 'firmwareName',
- FIRMWARE_SOURCE: 'firmwareSource',
- FIRMWARE_CHANNEL: 'firmwareChannel',
- FIRMWARE_ERASE_ALL: 'firmwareEraseAll',
- FIRMWARE_SIZE: 'firmwareSize',
- MCU_ID: 'mcuId',
- LOGGING_STATUS: 'loggingStatus',
- LOG_SIZE: 'logSize',
- TARGET_NAME: 'targetName',
- BOARD_NAME: 'boardName',
- MANUFACTURER_ID: 'manufacturerId',
- MCU_TYPE: 'mcuType',
- };
+ // Make it work for NW.js:
+ this._googleAnalytics.set('checkProtocolTask', null);
- this.DIMENSIONS = {
- CONFIGURATOR_OS: 1,
- BOARD_TYPE: 2,
- FIRMWARE_TYPE: 3,
- FIRMWARE_VERSION: 4,
- API_VERSION: 5,
- FIRMWARE_NAME: 6,
- FIRMWARE_SOURCE: 7,
- FIRMWARE_ERASE_ALL: 8,
- CONFIGURATOR_EXPERT_MODE: 9,
- FIRMWARE_CHANNEL: 10,
- LOGGING_STATUS: 11,
- MCU_ID: 12,
- CONFIGURATOR_CHANGESET_ID: 13,
- CONFIGURATOR_USE_DEBUG_VERSIONS: 14,
- TARGET_NAME: 15,
- BOARD_NAME: 16,
- MANUFACTURER_ID: 17,
- MCU_TYPE: 18,
- CONFIGURATOR_BUILD_TYPE: 19,
- };
+ this._googleAnalytics.set('appName', settings.appName);
+ this._googleAnalytics.set('appVersion', settings.debugMode ? `${settings.appVersion}-debug` : settings.appVersion);
- this.METRICS = {
- FIRMWARE_SIZE: 1,
- LOG_SIZE: 2,
- };
+ this.EVENT_CATEGORIES = {
+ APPLICATION: 'Application',
+ FLIGHT_CONTROLLER: 'FlightController',
+ FLASHING: 'Flashing',
+ };
- this.setDimension(this.DIMENSIONS.CONFIGURATOR_OS, os);
- this.setDimension(this.DIMENSIONS.CONFIGURATOR_CHANGESET_ID, gitRevision);
- this.setDimension(this.DIMENSIONS.CONFIGURATOR_USE_DEBUG_VERSIONS, checkForDebugVersions);
- this.setDimension(this.DIMENSIONS.CONFIGURATOR_BUILD_TYPE, buildType);
+ this.DATA = {
+ BOARD_TYPE: 'boardType',
+ API_VERSION: 'apiVersion',
+ FIRMWARE_TYPE: 'firmwareType',
+ FIRMWARE_VERSION: 'firmwareVersion',
+ FIRMWARE_NAME: 'firmwareName',
+ FIRMWARE_SOURCE: 'firmwareSource',
+ FIRMWARE_CHANNEL: 'firmwareChannel',
+ FIRMWARE_ERASE_ALL: 'firmwareEraseAll',
+ FIRMWARE_SIZE: 'firmwareSize',
+ MCU_ID: 'mcuId',
+ LOGGING_STATUS: 'loggingStatus',
+ LOG_SIZE: 'logSize',
+ TARGET_NAME: 'targetName',
+ BOARD_NAME: 'boardName',
+ MANUFACTURER_ID: 'manufacturerId',
+ MCU_TYPE: 'mcuType',
+ };
- this.resetFlightControllerData();
- this.resetFirmwareData();
-};
+ this.DIMENSIONS = {
+ CONFIGURATOR_OS: 1,
+ BOARD_TYPE: 2,
+ FIRMWARE_TYPE: 3,
+ FIRMWARE_VERSION: 4,
+ API_VERSION: 5,
+ FIRMWARE_NAME: 6,
+ FIRMWARE_SOURCE: 7,
+ FIRMWARE_ERASE_ALL: 8,
+ CONFIGURATOR_EXPERT_MODE: 9,
+ FIRMWARE_CHANNEL: 10,
+ LOGGING_STATUS: 11,
+ MCU_ID: 12,
+ CONFIGURATOR_CHANGESET_ID: 13,
+ CONFIGURATOR_USE_DEBUG_VERSIONS: 14,
+ TARGET_NAME: 15,
+ BOARD_NAME: 16,
+ MANUFACTURER_ID: 17,
+ MCU_TYPE: 18,
+ CONFIGURATOR_BUILD_TYPE: 19,
+ };
-Analytics.prototype.setDimension = function (dimension, value) {
- const dimensionName = `dimension${dimension}`;
- this._googleAnalytics.custom(dimensionName, value);
-};
+ this.METRICS = {
+ FIRMWARE_SIZE: 1,
+ LOG_SIZE: 2,
+ };
-Analytics.prototype.setMetric = function (metric, value) {
- const metricName = `metric${metric}`;
- this._googleAnalytics.custom(metricName, value);
-};
+ this.setDimension(this.DIMENSIONS.CONFIGURATOR_OS, settings.os);
+ this.setDimension(this.DIMENSIONS.CONFIGURATOR_CHANGESET_ID, settings.gitRevision);
+ this.setDimension(this.DIMENSIONS.CONFIGURATOR_USE_DEBUG_VERSIONS, settings.checkForDebugVersions);
+ this.setDimension(this.DIMENSIONS.CONFIGURATOR_BUILD_TYPE, settings.buildType);
-Analytics.prototype.sendEvent = function (category, action, options) {
- this._googleAnalytics.event(category, action, options);
-};
+ this.resetFlightControllerData();
+ this.resetFirmwareData();
+ }
-Analytics.prototype.sendChangeEvents = function (category, changeList) {
- for (const actionName in changeList) {
- if (changeList.hasOwnProperty(actionName)) {
- const actionValue = changeList[actionName];
- if (actionValue !== undefined) {
- this.sendEvent(category, actionName, { eventLabel: actionValue });
+ setDimension(dimension, value) {
+ const dimensionName = `dimension${dimension}`;
+ this._googleAnalytics.custom(dimensionName, value);
+ }
+
+ setMetric(metric, value) {
+ const metricName = `metric${metric}`;
+ this._googleAnalytics.custom(metricName, value);
+ }
+
+ sendEvent(category, action, options) {
+ this._googleAnalytics.event(category, action, options);
+ }
+
+ sendChangeEvents(category, changeList) {
+ for (const actionName in changeList) {
+ if (changeList.hasOwnProperty(actionName)) {
+ const actionValue = changeList[actionName];
+ if (actionValue !== undefined) {
+ this.sendEvent(category, actionName, { eventLabel: actionValue });
+ }
}
}
}
-};
-Analytics.prototype.sendSaveAndChangeEvents = function (category, changeList, tabName) {
- this.sendEvent(category, 'Save', {
- eventLabel: tabName,
- eventValue: Object.keys(changeList).length,
- });
- this.sendChangeEvents(category, changeList);
-};
+ sendSaveAndChangeEvents(category, changeList, tabName) {
+ this.sendEvent(category, 'Save', {
+ eventLabel: tabName,
+ eventValue: Object.keys(changeList).length,
+ });
+ this.sendChangeEvents(category, changeList);
+ }
-Analytics.prototype.sendAppView = function (viewName) {
- this._googleAnalytics.screenview(viewName);
-};
+ sendAppView(viewName) {
+ this._googleAnalytics.screenview(viewName);
+ }
-Analytics.prototype.sendTiming = function (category, timing, value) {
- this._googleAnalytics.timing(category, timing, value);
-};
+ sendTiming(category, timing, value) {
+ this._googleAnalytics.timing(category, timing, value);
+ }
-Analytics.prototype.sendException = function (message) {
- this._googleAnalytics.exception(message);
-};
+ sendException(message) {
+ this._googleAnalytics.exception(message);
+ }
-Analytics.prototype.setOptOut = function (optOut) {
- window[`ga-disable-${this._trackingId}`] = !!optOut;
-};
+ setOptOut(optOut) {
+ window[`ga-disable-${this._trackingId}`] = !!optOut;
+ }
-Analytics.prototype._rebuildFlightControllerEvent = function () {
- this.setDimension(this.DIMENSIONS.BOARD_TYPE, this._flightControllerData[this.DATA.BOARD_TYPE]);
- this.setDimension(this.DIMENSIONS.FIRMWARE_TYPE, this._flightControllerData[this.DATA.FIRMWARE_TYPE]);
- this.setDimension(this.DIMENSIONS.FIRMWARE_VERSION, this._flightControllerData[this.DATA.FIRMWARE_VERSION]);
- this.setDimension(this.DIMENSIONS.API_VERSION, this._flightControllerData[this.DATA.API_VERSION]);
- this.setDimension(this.DIMENSIONS.LOGGING_STATUS, this._flightControllerData[this.DATA.LOGGING_STATUS]);
- this.setDimension(this.DIMENSIONS.MCU_ID, this._flightControllerData[this.DATA.MCU_ID]);
- this.setMetric(this.METRICS.LOG_SIZE, this._flightControllerData[this.DATA.LOG_SIZE]);
- this.setDimension(this.DIMENSIONS.TARGET_NAME, this._flightControllerData[this.DATA.TARGET_NAME]);
- this.setDimension(this.DIMENSIONS.BOARD_NAME, this._flightControllerData[this.DATA.BOARD_NAME]);
- this.setDimension(this.DIMENSIONS.MANUFACTURER_ID, this._flightControllerData[this.DATA.MANUFACTURER_ID]);
- this.setDimension(this.DIMENSIONS.MCU_TYPE, this._flightControllerData[this.DATA.MCU_TYPE]);
-};
+ _rebuildFlightControllerEvent() {
+ this.setDimension(this.DIMENSIONS.BOARD_TYPE, this._flightControllerData[this.DATA.BOARD_TYPE]);
+ this.setDimension(this.DIMENSIONS.FIRMWARE_TYPE, this._flightControllerData[this.DATA.FIRMWARE_TYPE]);
+ this.setDimension(this.DIMENSIONS.FIRMWARE_VERSION, this._flightControllerData[this.DATA.FIRMWARE_VERSION]);
+ this.setDimension(this.DIMENSIONS.API_VERSION, this._flightControllerData[this.DATA.API_VERSION]);
+ this.setDimension(this.DIMENSIONS.LOGGING_STATUS, this._flightControllerData[this.DATA.LOGGING_STATUS]);
+ this.setDimension(this.DIMENSIONS.MCU_ID, this._flightControllerData[this.DATA.MCU_ID]);
+ this.setMetric(this.METRICS.LOG_SIZE, this._flightControllerData[this.DATA.LOG_SIZE]);
+ this.setDimension(this.DIMENSIONS.TARGET_NAME, this._flightControllerData[this.DATA.TARGET_NAME]);
+ this.setDimension(this.DIMENSIONS.BOARD_NAME, this._flightControllerData[this.DATA.BOARD_NAME]);
+ this.setDimension(this.DIMENSIONS.MANUFACTURER_ID, this._flightControllerData[this.DATA.MANUFACTURER_ID]);
+ this.setDimension(this.DIMENSIONS.MCU_TYPE, this._flightControllerData[this.DATA.MCU_TYPE]);
+ }
-Analytics.prototype.setFlightControllerData = function (property, value) {
- this._flightControllerData[property] = value;
+ setFlightControllerData(property, value) {
+ this._flightControllerData[property] = value;
+ this._rebuildFlightControllerEvent();
+ }
- this._rebuildFlightControllerEvent();
-};
+ resetFlightControllerData() {
+ this._flightControllerData = {};
+ this._rebuildFlightControllerEvent();
+ }
-Analytics.prototype.resetFlightControllerData = function () {
- this._flightControllerData = {};
+ _rebuildFirmwareEvent() {
+ this.setDimension(this.DIMENSIONS.FIRMWARE_NAME, this._firmwareData[this.DATA.FIRMWARE_NAME]);
+ this.setDimension(this.DIMENSIONS.FIRMWARE_SOURCE, this._firmwareData[this.DATA.FIRMWARE_SOURCE]);
+ this.setDimension(this.DIMENSIONS.FIRMWARE_ERASE_ALL, this._firmwareData[this.DATA.FIRMWARE_ERASE_ALL]);
+ this.setDimension(this.DIMENSIONS.FIRMWARE_CHANNEL, this._firmwareData[this.DATA.FIRMWARE_CHANNEL]);
+ this.setMetric(this.METRICS.FIRMWARE_SIZE, this._firmwareData[this.DATA.FIRMWARE_SIZE]);
+ }
- this._rebuildFlightControllerEvent();
-};
+ setFirmwareData(property, value) {
+ this._firmwareData[property] = value;
+ this._rebuildFirmwareEvent();
+ }
-Analytics.prototype._rebuildFirmwareEvent = function () {
- this.setDimension(this.DIMENSIONS.FIRMWARE_NAME, this._firmwareData[this.DATA.FIRMWARE_NAME]);
- this.setDimension(this.DIMENSIONS.FIRMWARE_SOURCE, this._firmwareData[this.DATA.FIRMWARE_SOURCE]);
- this.setDimension(this.DIMENSIONS.FIRMWARE_ERASE_ALL, this._firmwareData[this.DATA.FIRMWARE_ERASE_ALL]);
- this.setDimension(this.DIMENSIONS.FIRMWARE_CHANNEL, this._firmwareData[this.DATA.FIRMWARE_CHANNEL]);
- this.setMetric(this.METRICS.FIRMWARE_SIZE, this._firmwareData[this.DATA.FIRMWARE_SIZE]);
-};
-
-Analytics.prototype.setFirmwareData = function (property, value) {
- this._firmwareData[property] = value;
-
- this._rebuildFirmwareEvent();
-};
-
-Analytics.prototype.resetFirmwareData = function () {
- this._firmwareData = {};
-
- this._rebuildFirmwareEvent();
-};
+ resetFirmwareData() {
+ this._firmwareData = {};
+ this._rebuildFirmwareEvent();
+ }
+}
diff --git a/src/js/CliAutoComplete.js b/src/js/CliAutoComplete.js
index fff2866f..67791b15 100644
--- a/src/js/CliAutoComplete.js
+++ b/src/js/CliAutoComplete.js
@@ -51,7 +51,7 @@ CliAutoComplete.setEnabled = function(enable) {
};
CliAutoComplete.initialize = function($textarea, sendLine, writeToOutput) {
- analytics.sendEvent(analytics.EVENT_CATEGORIES.APPLICATION, 'CliAutoComplete', this.configEnabled);
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.APPLICATION, 'CliAutoComplete', this.configEnabled);
this.$textarea = $textarea;
this.forceOpen = false;
diff --git a/src/js/Features.js b/src/js/Features.js
index 40bca380..94af6902 100644
--- a/src/js/Features.js
+++ b/src/js/Features.js
@@ -46,7 +46,7 @@ const Features = function (config) {
Features.prototype.getMask = function () {
const self = this;
- analytics.sendChangeEvents(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self._analyticsChanges);
+ tracking.sendChangeEvents(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self._analyticsChanges);
self._analyticsChanges = {};
return self._featureMask;
diff --git a/src/js/backup_restore.js b/src/js/backup_restore.js
index bb405b13..a1ca6683 100644
--- a/src/js/backup_restore.js
+++ b/src/js/backup_restore.js
@@ -225,7 +225,7 @@ function configuration_backup(callback) {
return;
}
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Backup');
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Backup');
console.log('Write SUCCESSFUL');
if (callback) callback();
};
@@ -308,7 +308,7 @@ function configuration_restore(callback) {
configuration.FEATURE_CONFIG.features = features;
}
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Restore');
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Restore');
configuration_upload(configuration, callback);
} else {
diff --git a/src/js/main.js b/src/js/main.js
index f0a4402d..b90b76a8 100644
--- a/src/js/main.js
+++ b/src/js/main.js
@@ -3,6 +3,7 @@ import { i18n } from './localization.js';
import GUI from './gui.js';
import { get as getConfig, set as setConfig } from './ConfigStorage.js';
import ReleaseChecker from './release_checker.js';
+import { tracking, createAnalytics } from './Analytics.js';
$(document).ready(function () {
@@ -76,17 +77,13 @@ function appReady() {
}
function checkSetupAnalytics(callback) {
- if (!analytics) {
- setTimeout(function () {
- const result = ConfigStorage.get(['userId', 'analyticsOptOut', 'checkForConfiguratorUnstableVersions' ]);
- if (!analytics) {
- setupAnalytics(result);
- }
+ if (!tracking) {
+ const result = getConfig(['userId', 'analyticsOptOut', 'checkForConfiguratorUnstableVersions' ]);
+ setupAnalytics(result);
+ }
- callback(analytics);
- });
- } else if (callback) {
- callback(analytics);
+ if (callback) {
+ callback(tracking);
}
}
@@ -102,7 +99,7 @@ function setupAnalytics(result) {
const uid = new ShortUniqueId();
userId = uid.randomUUID(13);
- ConfigStorage.set({ 'userId': userId });
+ setConfig({ 'userId': userId });
}
const optOut = !!result.analyticsOptOut;
@@ -110,18 +107,30 @@ function setupAnalytics(result) {
const debugMode = typeof process === "object" && process.versions['nw-flavor'] === 'sdk';
- window.analytics = new Analytics('UA-123002063-1', userId, CONFIGURATOR.productName, CONFIGURATOR.version, CONFIGURATOR.gitRevision, GUI.operating_system,
- checkForDebugVersions, optOut, debugMode, getBuildType());
+ const settings = {
+ trackingId: 'UA-123002063-1',
+ userId: userId,
+ appName: CONFIGURATOR.productName,
+ appVersion: CONFIGURATOR.version,
+ gitRevision: CONFIGURATOR.gitRevision,
+ os: GUI.operating_system,
+ checkForDebugVersions: checkForDebugVersions,
+ optOut: optOut,
+ debugMode: debugMode,
+ buildType: getBuildType(),
+ };
+ createAnalytics(googleAnalytics, settings);
+ window.tracking = tracking;
function logException(exception) {
- analytics.sendException(exception.stack);
+ tracking.sendException(exception.stack);
}
if (typeof process === "object") {
process.on('uncaughtException', logException);
}
- analytics.sendEvent(analytics.EVENT_CATEGORIES.APPLICATION, 'AppStart', { sessionControl: 'start' });
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.APPLICATION, 'AppStart', { sessionControl: 'start' });
$('.connect_b a.connect').removeClass('disabled');
$('.firmware_b a.flash').removeClass('disabled');
@@ -187,7 +196,7 @@ function closeHandler() {
this.hide();
}
- analytics.sendEvent(analytics.EVENT_CATEGORIES.APPLICATION, 'AppClose', { sessionControl: 'end' });
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.APPLICATION, 'AppClose', { sessionControl: 'end' });
closeSerial();
@@ -799,7 +808,7 @@ function showErrorDialog(message) {
// TODO: all of these are used as globals in other parts.
// once moved to modules extract to own module.
window.googleAnalytics = analytics;
-window.analytics = null;
+window.tracking = null;
window.showErrorDialog = showErrorDialog;
window.generateFilename = generateFilename;
window.updateTabList = updateTabList;
diff --git a/src/js/serial_backend.js b/src/js/serial_backend.js
index b64ccb5c..49c9779a 100644
--- a/src/js/serial_backend.js
+++ b/src/js/serial_backend.js
@@ -157,15 +157,15 @@ function finishClose(finishedCallback) {
const wasConnected = CONFIGURATOR.connectionValid;
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Disconnected');
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Disconnected');
if (connectionTimestamp) {
const connectedTime = Date.now() - connectionTimestamp;
- analytics.sendTiming(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Connected', connectedTime);
+ tracking.sendTiming(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Connected', connectedTime);
}
// close reset to custom defaults dialog
$('#dialogResetToCustomDefaults')[0].close();
- analytics.resetFlightControllerData();
+ tracking.resetFlightControllerData();
serial.disconnect(onClosed);
@@ -249,17 +249,17 @@ function onOpen(openInfo) {
console.log(`Requesting configuration data`);
MSP.send_message(MSPCodes.MSP_API_VERSION, false, false, function () {
- analytics.setFlightControllerData(analytics.DATA.API_VERSION, FC.CONFIG.apiVersion);
+ tracking.setFlightControllerData(tracking.DATA.API_VERSION, FC.CONFIG.apiVersion);
GUI.log(i18n.getMessage('apiVersionReceived', [FC.CONFIG.apiVersion]));
if (semver.gte(FC.CONFIG.apiVersion, CONFIGURATOR.API_VERSION_ACCEPTED)) {
MSP.send_message(MSPCodes.MSP_FC_VARIANT, false, false, function () {
- analytics.setFlightControllerData(analytics.DATA.FIRMWARE_TYPE, FC.CONFIG.flightControllerIdentifier);
+ tracking.setFlightControllerData(tracking.DATA.FIRMWARE_TYPE, FC.CONFIG.flightControllerIdentifier);
if (FC.CONFIG.flightControllerIdentifier === 'BTFL') {
MSP.send_message(MSPCodes.MSP_FC_VERSION, false, false, function () {
- analytics.setFlightControllerData(analytics.DATA.FIRMWARE_VERSION, FC.CONFIG.flightControllerVersion);
+ tracking.setFlightControllerData(tracking.DATA.FIRMWARE_VERSION, FC.CONFIG.flightControllerVersion);
GUI.log(i18n.getMessage('fcInfoReceived', [FC.CONFIG.flightControllerIdentifier, FC.CONFIG.flightControllerVersion]));
@@ -271,7 +271,7 @@ function onOpen(openInfo) {
});
});
} else {
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'ConnectionRefusedFirmwareType', FC.CONFIG.flightControllerIdentifier);
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'ConnectionRefusedFirmwareType', FC.CONFIG.flightControllerIdentifier);
const dialog = $('.dialogConnectWarning')[0];
@@ -287,7 +287,7 @@ function onOpen(openInfo) {
}
});
} else {
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'ConnectionRefusedFirmwareVersion', FC.CONFIG.apiVersion);
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'ConnectionRefusedFirmwareVersion', FC.CONFIG.apiVersion);
const dialog = $('.dialogConnectWarning')[0];
@@ -303,7 +303,7 @@ function onOpen(openInfo) {
}
});
} else {
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'SerialPortFailed');
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'SerialPortFailed');
console.log('Failed to open serial port');
GUI.log(i18n.getMessage('serialPortOpenFail'));
@@ -341,11 +341,11 @@ function abortConnect() {
}
function processBoardInfo() {
- analytics.setFlightControllerData(analytics.DATA.BOARD_TYPE, FC.CONFIG.boardIdentifier);
- analytics.setFlightControllerData(analytics.DATA.TARGET_NAME, FC.CONFIG.targetName);
- analytics.setFlightControllerData(analytics.DATA.BOARD_NAME, FC.CONFIG.boardName);
- analytics.setFlightControllerData(analytics.DATA.MANUFACTURER_ID, FC.CONFIG.manufacturerId);
- analytics.setFlightControllerData(analytics.DATA.MCU_TYPE, FC.getMcuType());
+ tracking.setFlightControllerData(tracking.DATA.BOARD_TYPE, FC.CONFIG.boardIdentifier);
+ tracking.setFlightControllerData(tracking.DATA.TARGET_NAME, FC.CONFIG.targetName);
+ tracking.setFlightControllerData(tracking.DATA.BOARD_NAME, FC.CONFIG.boardName);
+ tracking.setFlightControllerData(tracking.DATA.MANUFACTURER_ID, FC.CONFIG.manufacturerId);
+ tracking.setFlightControllerData(tracking.DATA.MCU_TYPE, FC.getMcuType());
GUI.log(i18n.getMessage('boardInfoReceived', [FC.getHardwareName(), FC.CONFIG.boardVersion]));
@@ -353,7 +353,7 @@ function processBoardInfo() {
const dialog = $('#dialogResetToCustomDefaults')[0];
$('#dialogResetToCustomDefaults-acceptbtn').click(function() {
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'AcceptResetToCustomDefaults');
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'AcceptResetToCustomDefaults');
const buffer = [];
buffer.push(mspHelper.RESET_TYPES.CUSTOM_DEFAULTS);
@@ -367,7 +367,7 @@ function processBoardInfo() {
});
$('#dialogResetToCustomDefaults-cancelbtn').click(function() {
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'CancelResetToCustomDefaults');
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'CancelResetToCustomDefaults');
dialog.close();
@@ -392,7 +392,7 @@ function checkReportProblems() {
if (bit_check(FC.CONFIG.configurationProblems, FC.CONFIGURATION_PROBLEM_FLAGS[problemName])) {
problemItemTemplate.clone().html(i18n.getMessage(`reportProblemsDialog${problemName}`)).appendTo(problemDialogList);
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, PROBLEM_ANALYTICS_EVENT, problemName);
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, PROBLEM_ANALYTICS_EVENT, problemName);
return true;
}
@@ -411,7 +411,7 @@ function checkReportProblems() {
[CONFIGURATOR.latestVersion, CONFIGURATOR.latestVersionReleaseUrl, CONFIGURATOR.getDisplayVersion(), FC.CONFIG.flightControllerVersion])).appendTo(problemDialogList);
needsProblemReportingDialog = true;
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, PROBLEM_ANALYTICS_EVENT,
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, PROBLEM_ANALYTICS_EVENT,
`${problemName};${CONFIGURATOR.API_VERSION_MAX_SUPPORTED};${FC.CONFIG.apiVersion}`);
}
@@ -440,8 +440,8 @@ function processUid() {
MSP.send_message(MSPCodes.MSP_UID, false, false, function () {
const deviceIdentifier = FC.CONFIG.deviceIdentifier;
- analytics.setFlightControllerData(analytics.DATA.MCU_ID, objectHash.sha1(deviceIdentifier));
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Connected');
+ tracking.setFlightControllerData(tracking.DATA.MCU_ID, objectHash.sha1(deviceIdentifier));
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Connected');
connectionTimestamp = Date.now();
GUI.log(i18n.getMessage('uniqueDeviceIdReceived', [deviceIdentifier]));
diff --git a/src/js/tabs/cli.js b/src/js/tabs/cli.js
index 78f9461d..d50d7af0 100644
--- a/src/js/tabs/cli.js
+++ b/src/js/tabs/cli.js
@@ -2,6 +2,7 @@ import { i18n } from "../localization";
import Clipboard from "../Clipboard";
import GUI from '../gui';
import BuildApi from '../BuildApi';
+import { tracking } from '../Analytics';
const cli = {
lineDelayMs: 15,
@@ -54,7 +55,7 @@ function getCliCommand(command, cliBuffer) {
function copyToClipboard(text) {
function onCopySuccessful() {
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'CliCopyToClipboard', text.length);
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'CliCopyToClipboard', text.length);
const button = TABS.cli.GUI.copyButton;
const origText = button.text();
const origWidth = button.css("width");
@@ -177,7 +178,7 @@ cli.initialize = function (callback) {
if (self.outputHistory.length > 0 && writer.length === 0) {
writer.write(new Blob([self.outputHistory], {type: 'text/plain'}));
} else {
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'CliSave', self.outputHistory.length);
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'CliSave', self.outputHistory.length);
console.log('write complete');
}
@@ -222,7 +223,7 @@ cli.initialize = function (callback) {
function executeSnippet(fileName) {
const commands = previewArea.val();
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'CliExecuteFromFile', fileName);
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'CliExecuteFromFile', fileName);
executeCommands(commands);
self.GUI.snippetPreviewWindow.close();
diff --git a/src/js/tabs/configuration.js b/src/js/tabs/configuration.js
index 867054f4..12b47b9f 100644
--- a/src/js/tabs/configuration.js
+++ b/src/js/tabs/configuration.js
@@ -1,6 +1,7 @@
import semver from 'semver';
import { i18n } from '../localization';
import GUI from '../gui';
+import { tracking } from "../Analytics";
const configuration = {
analyticsChanges: {},
@@ -501,7 +502,7 @@ configuration.initialize = function (callback) {
FC.RX_CONFIG.fpvCamAngleDegrees = parseInt($('input[name="fpvCamAngleDegrees"]').val());
- analytics.sendSaveAndChangeEvents(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges, 'configuration');
+ tracking.sendSaveAndChangeEvents(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges, 'configuration');
self.analyticsChanges = {};
// fill some data
diff --git a/src/js/tabs/firmware_flasher.js b/src/js/tabs/firmware_flasher.js
index d1d7a966..ca79afc1 100644
--- a/src/js/tabs/firmware_flasher.js
+++ b/src/js/tabs/firmware_flasher.js
@@ -4,6 +4,7 @@ import { get as getConfig, set as setConfig } from '../ConfigStorage';
import { get as getStorage, set as setStorage } from '../SessionStorage';
import BuildApi from '../BuildApi';
import ConfigInserter from "../ConfigInserter.js";
+import { tracking } from "../Analytics";
const firmware_flasher = {
targets: null,
@@ -113,7 +114,7 @@ firmware_flasher.initialize = function (callback) {
self.parsed_hex = data;
if (self.parsed_hex) {
- analytics.setFirmwareData(analytics.DATA.FIRMWARE_SIZE, self.parsed_hex.bytes_total);
+ tracking.setFirmwareData(tracking.DATA.FIRMWARE_SIZE, self.parsed_hex.bytes_total);
showLoadedHex(key);
} else {
self.flashingMessage(i18n.getMessage('firmwareFlasherHexCorrupted'), self.FLASH_MESSAGE_TYPES.INVALID);
@@ -246,7 +247,7 @@ firmware_flasher.initialize = function (callback) {
i18n.localizePage();
buildType_e.change(function() {
- analytics.setFirmwareData(analytics.DATA.FIRMWARE_CHANNEL, $('option:selected', this).text());
+ tracking.setFirmwareData(tracking.DATA.FIRMWARE_CHANNEL, $('option:selected', this).text());
$("a.load_remote_file").addClass('disabled');
const build_type = $(this).val();
@@ -472,7 +473,7 @@ firmware_flasher.initialize = function (callback) {
eraseAll = true;
}
- analytics.setFirmwareData(analytics.DATA.FIRMWARE_ERASE_ALL, eraseAll.toString());
+ tracking.setFirmwareData(tracking.DATA.FIRMWARE_ERASE_ALL, eraseAll.toString());
if (!$('option:selected', portPickerElement).data().isDFU) {
if (String(portPickerElement.val()) !== '0') {
@@ -489,7 +490,7 @@ firmware_flasher.initialize = function (callback) {
baud = parseInt($('#flash_manual_baud_rate').val());
}
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLASHING, 'Flashing', self.fileName || null);
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLASHING, 'Flashing', self.fileName || null);
STM32.connect(port, baud, firmware, options);
} else {
@@ -497,7 +498,7 @@ firmware_flasher.initialize = function (callback) {
GUI.log(i18n.getMessage('firmwareFlasherNoValidPort'));
}
} else {
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLASHING, 'Flashing', self.fileName || null);
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLASHING, 'Flashing', self.fileName || null);
STM32DFU.connect(usbDevices, firmware, options);
}
@@ -701,8 +702,8 @@ firmware_flasher.initialize = function (callback) {
self.enableFlashing(false);
self.developmentFirmwareLoaded = false;
- analytics.setFirmwareData(analytics.DATA.FIRMWARE_CHANNEL, undefined);
- analytics.setFirmwareData(analytics.DATA.FIRMWARE_SOURCE, 'file');
+ tracking.setFirmwareData(tracking.DATA.FIRMWARE_CHANNEL, undefined);
+ tracking.setFirmwareData(tracking.DATA.FIRMWARE_SOURCE, 'file');
chrome.fileSystem.chooseEntry({
type: 'openFile',
@@ -725,7 +726,7 @@ firmware_flasher.initialize = function (callback) {
console.log('Loading file from:', path);
fileEntry.file(function (file) {
- analytics.setFirmwareData(analytics.DATA.FIRMWARE_NAME, file.name);
+ tracking.setFirmwareData(tracking.DATA.FIRMWARE_NAME, file.name);
const reader = new FileReader();
reader.onloadend = function(e) {
@@ -739,7 +740,7 @@ firmware_flasher.initialize = function (callback) {
self.parsed_hex = data;
if (self.parsed_hex) {
- analytics.setFirmwareData(analytics.DATA.FIRMWARE_SIZE, self.parsed_hex.bytes_total);
+ tracking.setFirmwareData(tracking.DATA.FIRMWARE_SIZE, self.parsed_hex.bytes_total);
self.localFirmwareLoaded = true;
showLoadedHex(file.name);
@@ -786,7 +787,7 @@ firmware_flasher.initialize = function (callback) {
self.localFirmwareLoaded = false;
self.developmentFirmwareLoaded = buildTypesToShow[$('select[name="build_type"]').val()].tag === 'firmwareFlasherOptionLabelBuildTypeDevelopment';
- analytics.setFirmwareData(analytics.DATA.FIRMWARE_SOURCE, 'http');
+ tracking.setFirmwareData(tracking.DATA.FIRMWARE_SOURCE, 'http');
if ($('select[name="firmware_version"]').val() === "0") {
GUI.log(i18n.getMessage('firmwareFlasherNoFirmwareSelected'));
@@ -874,7 +875,7 @@ firmware_flasher.initialize = function (callback) {
return;
}
- analytics.setFirmwareData(analytics.DATA.FIRMWARE_NAME, response.file);
+ tracking.setFirmwareData(tracking.DATA.FIRMWARE_NAME, response.file);
updateStatus('Pending', response.key, 0, false);
@@ -921,7 +922,7 @@ firmware_flasher.initialize = function (callback) {
if (!exitDfuElement.hasClass('disabled')) {
exitDfuElement.addClass("disabled");
if (!GUI.connect_lock) { // button disabled while flashing is in progress
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLASHING, 'ExitDfu', null);
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLASHING, 'ExitDfu', null);
try {
console.log('Closing DFU');
STM32DFU.connect(usbDevices, self.parsed_hex, { exitDfu: true });
@@ -1079,7 +1080,7 @@ firmware_flasher.initialize = function (callback) {
return;
}
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLASHING, 'SaveFirmware', path);
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLASHING, 'SaveFirmware', path);
};
writer.write(blob);
@@ -1157,7 +1158,7 @@ firmware_flasher.cleanup = function (callback) {
$('div#flashbutton a.flash_state').removeClass('active');
$('div#flashbutton a.flash').removeClass('active');
- analytics.resetFirmwareData();
+ tracking.resetFirmwareData();
if (callback) callback();
};
diff --git a/src/js/tabs/motors.js b/src/js/tabs/motors.js
index 66740816..913910b6 100644
--- a/src/js/tabs/motors.js
+++ b/src/js/tabs/motors.js
@@ -4,6 +4,7 @@ import { get as getConfig, set as setConfig } from '../ConfigStorage';
import MotorOutputReorderConfig from "../../components/MotorOutputReordering/MotorOutputReorderingConfig";
import MotorOutputReorderComponent from "../../components/MotorOutputReordering/MotorOutputReorderingComponent";
import EscDshotDirectionComponent from "../../components/EscDshotDirection/EscDshotDirectionComponent";
+import { tracking } from "../Analytics";
const motors = {
previousDshotBidir: null,
@@ -1142,7 +1143,7 @@ motors.initialize = async function (callback) {
}
await MSP.promise(MSPCodes.MSP_EEPROM_WRITE);
- analytics.sendSaveAndChangeEvents(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges, 'motors');
+ tracking.sendSaveAndChangeEvents(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges, 'motors');
self.analyticsChanges = {};
self.configHasChanged = false;
diff --git a/src/js/tabs/onboard_logging.js b/src/js/tabs/onboard_logging.js
index 1cf54ac6..4ca65d71 100644
--- a/src/js/tabs/onboard_logging.js
+++ b/src/js/tabs/onboard_logging.js
@@ -1,5 +1,6 @@
import { i18n } from "../localization";
import GUI from '../gui';
+import { tracking } from "../Analytics";
let sdcardTimer;
@@ -137,7 +138,7 @@ onboard_logging.initialize = function (callback) {
.toggleClass("msc-supported", true);
$('a.onboardLoggingRebootMsc').click(function () {
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'RebootMsc');
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'RebootMsc');
const buffer = [];
if (GUI.operating_system === "Linux") {
@@ -434,9 +435,9 @@ onboard_logging.initialize = function (callback) {
if (dataflashPresent && FC.SDCARD.state === MSP.SDCARD_STATE_NOT_PRESENT) {
loggingStatus = 'Dataflash';
- analytics.setFlightControllerData(analytics.DATA.LOG_SIZE, FC.DATAFLASH.usedSize);
+ tracking.setFlightControllerData(tracking.DATA.LOG_SIZE, FC.DATAFLASH.usedSize);
}
- analytics.setFlightControllerData(analytics.DATA.LOGGING_STATUS, loggingStatus);
+ tracking.setFlightControllerData(tracking.DATA.LOGGING_STATUS, loggingStatus);
if (FC.SDCARD.supported && !sdcardTimer) {
// Poll for changes in SD card status
@@ -469,7 +470,7 @@ onboard_logging.initialize = function (callback) {
}
function mark_saving_dialog_done(startTime, totalBytes, totalBytesCompressed) {
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'SaveDataflash');
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'SaveDataflash');
const totalTime = (new Date().getTime() - startTime) / 1000;
console.log(`Received ${totalBytes} bytes in ${totalTime.toFixed(2)}s (${
@@ -631,8 +632,8 @@ onboard_logging.initialize = function (callback) {
};
onboard_logging.cleanup = function (callback) {
- analytics.setFlightControllerData(analytics.DATA.LOGGING_STATUS, undefined);
- analytics.setFlightControllerData(analytics.DATA.LOG_SIZE, undefined);
+ tracking.setFlightControllerData(tracking.DATA.LOGGING_STATUS, undefined);
+ tracking.setFlightControllerData(tracking.DATA.LOG_SIZE, undefined);
if (sdcardTimer) {
clearTimeout(sdcardTimer);
diff --git a/src/js/tabs/osd.js b/src/js/tabs/osd.js
index 9ae2db5d..98b2aa94 100644
--- a/src/js/tabs/osd.js
+++ b/src/js/tabs/osd.js
@@ -1,5 +1,6 @@
import { i18n } from "../localization";
import GUI from '../gui';
+import { tracking } from "../Analytics";
const FONT = {};
const SYM = {};
@@ -3259,7 +3260,7 @@ osd.initialize = function(callback) {
}
});
- analytics.sendSaveAndChangeEvents(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges, 'osd');
+ tracking.sendSaveAndChangeEvents(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges, 'osd');
self.analyticsChanges = {};
});
diff --git a/src/js/tabs/pid_tuning.js b/src/js/tabs/pid_tuning.js
index 1425ad70..c65f59fd 100644
--- a/src/js/tabs/pid_tuning.js
+++ b/src/js/tabs/pid_tuning.js
@@ -1,6 +1,7 @@
import { i18n } from "../localization";
import { colorTables, getColorForPercentage } from '../utils/css.js';
import GUI from '../gui';
+import { tracking } from "../Analytics";
const pid_tuning = {
RATE_PROFILE_MASK: 128,
@@ -2263,7 +2264,7 @@ pid_tuning.initialize = function (callback) {
self.refresh();
});
- analytics.sendSaveAndChangeEvents(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges, 'pid_tuning');
+ tracking.sendSaveAndChangeEvents(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges, 'pid_tuning');
self.analyticsChanges = {};
});
diff --git a/src/js/tabs/ports.js b/src/js/tabs/ports.js
index 8e778166..61952827 100644
--- a/src/js/tabs/ports.js
+++ b/src/js/tabs/ports.js
@@ -1,6 +1,7 @@
import semver from 'semver';
import { i18n } from "../localization";
import GUI from '../gui';
+import { tracking } from "../Analytics";
const ports = {
analyticsChanges: {},
@@ -358,7 +359,7 @@ ports.initialize = function (callback) {
}
function on_save_handler() {
- analytics.sendSaveAndChangeEvents(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges, 'ports');
+ tracking.sendSaveAndChangeEvents(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges, 'ports');
self.analyticsChanges = {};
// update configuration based on current ui state
diff --git a/src/js/tabs/power.js b/src/js/tabs/power.js
index b568fd5d..ea58308e 100644
--- a/src/js/tabs/power.js
+++ b/src/js/tabs/power.js
@@ -1,5 +1,6 @@
import { i18n } from '../localization';
import GUI from '../gui';
+import { tracking } from "../Analytics";
const power = {
supported: false,
@@ -11,8 +12,6 @@ power.initialize = function (callback) {
if (GUI.active_tab != 'power') {
GUI.active_tab = 'power';
- // Disabled on merge into betaflight-configurator
- //googleAnalytics.sendAppView('Power');
}
if (GUI.calibrationManager) {
@@ -473,7 +472,7 @@ power.initialize = function (callback) {
FC.BATTERY_CONFIG.vbatwarningcellvoltage = parseFloat($('input[name="warningcellvoltage"]').val());
FC.BATTERY_CONFIG.capacity = parseInt($('input[name="capacity"]').val());
- analytics.sendSaveAndChangeEvents(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges, 'power');
+ tracking.sendSaveAndChangeEvents(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges, 'power');
save_power_config();
});
diff --git a/src/js/tabs/receiver.js b/src/js/tabs/receiver.js
index 825434b6..70f8f6c4 100644
--- a/src/js/tabs/receiver.js
+++ b/src/js/tabs/receiver.js
@@ -1,7 +1,7 @@
import { i18n } from "../localization";
import GUI from '../gui';
import { get as getConfig, set as setConfig } from '../ConfigStorage';
-
+import { tracking } from "../Analytics";
import CryptoES from 'crypto-es';
const receiver = {
@@ -493,7 +493,7 @@ receiver.initialize = function (callback) {
}
}
- analytics.sendSaveAndChangeEvents(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, tab.analyticsChanges, 'receiver');
+ tracking.sendSaveAndChangeEvents(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, tab.analyticsChanges, 'receiver');
tab.analyticsChanges = {};
MSP.send_message(MSPCodes.MSP_SET_RX_MAP, mspHelper.crunch(MSPCodes.MSP_SET_RX_MAP), false, save_rssi_config);
diff --git a/src/js/tabs/setup_osd.js b/src/js/tabs/setup_osd.js
index d7b4a98c..2a0afb38 100644
--- a/src/js/tabs/setup_osd.js
+++ b/src/js/tabs/setup_osd.js
@@ -8,8 +8,6 @@ setup_osd.initialize = function (callback) {
if (GUI.active_tab != 'setup_osd') {
GUI.active_tab = 'setup_osd';
- // Disabled on merge into betaflight-configurator
- //googleAnalytics.sendAppView('Setup OSD');
}
function load_status() {
diff --git a/src/js/tabs/transponder.js b/src/js/tabs/transponder.js
index 339826fc..9452953b 100644
--- a/src/js/tabs/transponder.js
+++ b/src/js/tabs/transponder.js
@@ -110,8 +110,6 @@ transponder.initialize = function(callback) {
/////////////////////////////////////////////
GUI.active_tab = 'transponder';
- // Disabled on merge into betaflight-configurator
- //googleAnalytics.sendAppView('Transponder');
// transponder supported added in MSP API Version 1.16.0
if (FC.CONFIG) {
diff --git a/src/js/tabs/vtx.js b/src/js/tabs/vtx.js
index 0f7fa910..0ee7a9c3 100644
--- a/src/js/tabs/vtx.js
+++ b/src/js/tabs/vtx.js
@@ -1,6 +1,7 @@
import { i18n } from "../localization";
import Clipboard from "../Clipboard";
import GUI from '../gui';
+import { tracking } from "../Analytics";
const vtx = {
supported: false,
@@ -646,7 +647,7 @@ vtx.initialize = function (callback) {
// we get here at the end of the truncate method, change to the new end
writer.onwriteend = function() {
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'VtxTableLuaSave', text.length);
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'VtxTableLuaSave', text.length);
console.log('Write VTX table lua file end');
GUI.log(i18n.getMessage('vtxSavedLuaFileOk'));
};
@@ -697,7 +698,7 @@ vtx.initialize = function (callback) {
// we get here at the end of the truncate method, change to the new end
writer.onwriteend = function() {
- analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'VtxTableSave', text.length);
+ tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'VtxTableSave', text.length);
console.log(vtxConfig);
console.log('Write VTX file end');
GUI.log(i18n.getMessage('vtxSavedFileOk'));
@@ -834,7 +835,7 @@ vtx.initialize = function (callback) {
// Start MSP saving
save_vtx_config();
- analytics.sendSaveAndChangeEvents(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges, 'vtx');
+ tracking.sendSaveAndChangeEvents(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, self.analyticsChanges, 'vtx');
function save_vtx_config() {
MSP.send_message(MSPCodes.MSP_SET_VTX_CONFIG, mspHelper.crunch(MSPCodes.MSP_SET_VTX_CONFIG), false, save_vtx_powerlevels);
diff --git a/src/main.html b/src/main.html
index d963bd79..86e2b3e8 100644
--- a/src/main.html
+++ b/src/main.html
@@ -108,7 +108,6 @@
-
diff --git a/test/tabs/cli.js b/test/tabs/cli.js
index 95da0a2d..54d7f5fd 100644
--- a/test/tabs/cli.js
+++ b/test/tabs/cli.js
@@ -6,7 +6,7 @@ class MockAnalytics {
}
}
-let analytics;
+let tracking;
describe('TABS.cli', () => {
@@ -33,7 +33,7 @@ describe('TABS.cli', () => {
CliAutoComplete.setEnabled(false); // not testing the client-side autocomplete
before(() => {
- analytics = new MockAnalytics();
+ tracking = new MockAnalytics();
$('body').append(cliTab);