diff --git a/package.json b/package.json index acf4bccf..29c2d444 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,6 @@ "short-unique-id": "^4.4.4", "switchery-latest": "^0.8.2", "three": "~0.97.0", - "universal-ga": "^1.2.0", "vite-plugin-pwa": "^0.17.4", "vue": "^2.7.10" }, diff --git a/src/js/Analytics.js b/src/js/Analytics.js index 23bb2bee..9e5115ea 100644 --- a/src/js/Analytics.js +++ b/src/js/Analytics.js @@ -1,5 +1,5 @@ import ShortUniqueId from 'short-unique-id'; -import googleAnalytics from 'universal-ga'; +import BuildApi from './BuildApi'; import { set as setConfig, get as getConfig } from './ConfigStorage'; import GUI from './gui'; import CONFIGURATOR from './data_storage'; @@ -8,32 +8,27 @@ import $ from 'jquery'; let tracking = null; export { tracking }; -export function createAnalytics(ga, settings) { - tracking = new Analytics(ga, settings); +export function createAnalytics(settings) { + tracking = new Analytics(settings); } -function getBuildType() { - return GUI.Mode; -} function setupAnalytics(result) { + const uid = new ShortUniqueId(); + let userId; if (result.userId) { userId = result.userId; } else { - const uid = new ShortUniqueId(); userId = uid.randomUUID(13); - setConfig({ 'userId': userId }); } const optOut = !!result.analyticsOptOut; const checkForDebugVersions = !!result.checkForConfiguratorUnstableVersions; - const debugMode = typeof process === "object" && process.versions['nw-flavor'] === 'sdk'; - const settings = { - trackingId: 'UA-123002063-1', + sessionId: uid.randomUUID(16), userId: userId, appName: CONFIGURATOR.productName, appVersion: CONFIGURATOR.version, @@ -41,10 +36,10 @@ function setupAnalytics(result) { os: GUI.operating_system, checkForDebugVersions: checkForDebugVersions, optOut: optOut, - // debugMode: debugMode, // enable when debugging GA - buildType: getBuildType(), + buildType: GUI.Mode, }; - createAnalytics(googleAnalytics, settings); + + createAnalytics(settings); window.tracking = tracking; function logException(exception) { @@ -74,29 +69,12 @@ export function checkSetupAnalytics(callback) { class Analytics { - constructor (ga, settings) { - // trackingId, userId, appName, appVersion, gitRevision, os, checkForDebugVersions, optOut, debugMode, buildType - this._trackingId = settings.trackingId; + constructor (settings) { this.setOptOut(settings.optOut); - this._googleAnalytics = ga; - - this._googleAnalytics.initialize(this._trackingId, { - storage: 'none', - clientId: settings.userId, - debug: !!settings.debugMode, - }); - - // Make it work for the Chrome App: - this._googleAnalytics.set('forceSSL', true); - this._googleAnalytics.set('transport', 'xhr'); - - // Make it work for NW.js: - this._googleAnalytics.set('checkProtocolTask', null); - - this._googleAnalytics.set('appName', settings.appName); - this._googleAnalytics.set('appVersion', settings.debugMode ? `${settings.appVersion}-debug` : settings.appVersion); + this._settings = settings; + this._api = new BuildApi(); this.EVENT_CATEGORIES = { APPLICATION: 'Application', @@ -104,149 +82,50 @@ class Analytics { FLASHING: 'Flashing', }; - 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.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.METRICS = { - FIRMWARE_SIZE: 1, - LOG_SIZE: 2, - }; - - 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); - - this.resetFlightControllerData(); - this.resetFirmwareData(); + this.sendSettings(); } - setDimension(dimension, value) { - const dimensionName = `dimension${dimension}`; - this._googleAnalytics.custom(dimensionName, value); + send(name, properties) { + if (this._optOut) { + return; + } + + this._api.sendAnalytics(name, { + sessionId: this._settings.sessionId, + userId: this._settings.userId, + [name]: properties, + }); } - setMetric(metric, value) { - const metricName = `metric${metric}`; - this._googleAnalytics.custom(metricName, value); + sendSettings() { + this.send('settings', this._settings); } sendEvent(category, action, options) { - this._googleAnalytics.event(category, action, options); + this.send('event', { category: category, action: action, options: 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 }); - } - } - } + this.sendEvent(category, 'Change', { changes: changeList }); } sendSaveAndChangeEvents(category, changeList, tabName) { - this.sendEvent(category, 'Save', { - eventLabel: tabName, - eventValue: Object.keys(changeList).length, - }); - this.sendChangeEvents(category, changeList); + this.sendEvent(category, 'Save', { tab: tabName, changes: changeList }); } sendAppView(viewName) { - this._googleAnalytics.screenview(viewName); + this.send('view', viewName); } sendTiming(category, timing, value) { - this._googleAnalytics.timing(category, timing, value); + this.send('timing', { category: category, timing: timing, value: value }); } sendException(message) { - this._googleAnalytics.exception(message); + this.send('exception', message); } setOptOut(optOut) { - window[`ga-disable-${this._trackingId}`] = !!optOut; - } - - _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]); - } - - setFlightControllerData(property, value) { - this._flightControllerData[property] = value; - this._rebuildFlightControllerEvent(); - } - - resetFlightControllerData() { - this._flightControllerData = {}; - this._rebuildFlightControllerEvent(); - } - - _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]); - } - - setFirmwareData(property, value) { - this._firmwareData[property] = value; - this._rebuildFirmwareEvent(); - } - - resetFirmwareData() { - this._firmwareData = {}; - this._rebuildFirmwareEvent(); + this._optOut = !!optOut; } } diff --git a/src/js/BuildApi.js b/src/js/BuildApi.js index 43d4c79c..39144018 100644 --- a/src/js/BuildApi.js +++ b/src/js/BuildApi.js @@ -176,4 +176,15 @@ export default class BuildApi { const url = `${this._url}/api/configurator/sponsors/${mode}/${page}`; this.load(url, onSuccess, onFailure); } + + sendAnalytics(type, parcel) { + const url = `${this._url}/analytics/${type}`; + $.ajax({ + url: url, + type: "POST", + data: JSON.stringify(parcel), + contentType: "application/json", + dataType: "json", + }); + } } diff --git a/src/js/main.js b/src/js/main.js index e5df0c5c..e32d1850 100644 --- a/src/js/main.js +++ b/src/js/main.js @@ -570,7 +570,7 @@ function startProcess() { const checked = expertModeCheckbox.is(':checked'); checkSetupAnalytics(function (analyticsService) { - analyticsService.setDimension(analyticsService.DIMENSIONS.CONFIGURATOR_EXPERT_MODE, checked ? 'On' : 'Off'); + analyticsService.sendEvent(analyticsService.EVENT_CATEGORIES.APPLICATION, 'ExpertMode', { status: checked ? 'On' : 'Off' }); }); if (FC.FEATURE_CONFIG && FC.FEATURE_CONFIG.features !== 0) { diff --git a/src/js/serial_backend.js b/src/js/serial_backend.js index c505a29d..2c71a62b 100644 --- a/src/js/serial_backend.js +++ b/src/js/serial_backend.js @@ -214,20 +214,13 @@ function finishClose(finishedCallback) { } const wasConnected = CONFIGURATOR.connectionValid; - - tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Disconnected'); - if (connectionTimestamp) { - const connectedTime = Date.now() - connectionTimestamp; - tracking.sendTiming(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Connected', connectedTime); - } + tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Disconnected', { time: connectionTimestamp ? Date.now() - connectionTimestamp : undefined}); if (semver.lt(FC.CONFIG.apiVersion, API_VERSION_1_46)) { // close reset to custom defaults dialog $('#dialogResetToCustomDefaults')[0].close(); } - tracking.resetFlightControllerData(); - serial.disconnect(onClosed); MSP.disconnect_cleanup(); @@ -349,15 +342,10 @@ function onOpen(openInfo) { return; } - tracking.setFlightControllerData(tracking.DATA.API_VERSION, FC.CONFIG.apiVersion); - if (semver.gte(FC.CONFIG.apiVersion, CONFIGURATOR.API_VERSION_ACCEPTED)) { MSP.send_message(MSPCodes.MSP_FC_VARIANT, false, false, function () { - tracking.setFlightControllerData(tracking.DATA.FIRMWARE_TYPE, FC.CONFIG.flightControllerIdentifier); if (FC.CONFIG.flightControllerIdentifier === 'BTFL') { MSP.send_message(MSPCodes.MSP_FC_VERSION, false, false, function () { - tracking.setFlightControllerData(tracking.DATA.FIRMWARE_VERSION, FC.CONFIG.flightControllerVersion); - gui_log(i18n.getMessage('fcInfoReceived', [FC.CONFIG.flightControllerIdentifier, FC.CONFIG.flightControllerVersion])); MSP.send_message(MSPCodes.MSP_BUILD_INFO, false, false, function () { @@ -459,11 +447,6 @@ function processCustomDefaults() { } function processBoardInfo() { - 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])); @@ -472,18 +455,26 @@ function processBoardInfo() { } else { processCustomDefaults(); } + tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Loaded', { + boardIdentifier: FC.CONFIG.boardIdentifier, + targetName: FC.CONFIG.targetName, + boardName: FC.CONFIG.boardName, + hardware: FC.getHardwareName(), + manufacturerId: FC.CONFIG.manufacturerId, + apiVersion: FC.CONFIG.apiVersion, + flightControllerVersion: FC.CONFIG.flightControllerVersion, + flightControllerIdentifier: FC.CONFIG.flightControllerIdentifier, + mcu: FC.getMcuType(), + }); } function checkReportProblems() { const PROBLEM_ANALYTICS_EVENT = 'ProblemFound'; const problemItemTemplate = $('#dialogReportProblems-listItemTemplate'); - function checkReportProblem(problemName, problemDialogList) { + function checkReportProblem(problemName, problems) { if (bit_check(FC.CONFIG.configurationProblems, FC.CONFIGURATION_PROBLEM_FLAGS[problemName])) { - problemItemTemplate.clone().html(i18n.getMessage(`reportProblemsDialog${problemName}`)).appendTo(problemDialogList); - - tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, PROBLEM_ANALYTICS_EVENT, problemName); - + problems.push({name: problemName, description: i18n.getMessage(`reportProblemsDialog${problemName}`)}); return true; } @@ -495,23 +486,29 @@ function checkReportProblems() { const problemDialogList = $('#dialogReportProblems-list'); problemDialogList.empty(); + let problems = []; + if (semver.gt(FC.CONFIG.apiVersion, CONFIGURATOR.API_VERSION_MAX_SUPPORTED)) { const problemName = 'API_VERSION_MAX_SUPPORTED'; - problemItemTemplate.clone().html(i18n.getMessage(`reportProblemsDialog${problemName}`, - [CONFIGURATOR.latestVersion, CONFIGURATOR.latestVersionReleaseUrl, CONFIGURATOR.getDisplayVersion(), FC.CONFIG.flightControllerVersion])).appendTo(problemDialogList); + problems.push({ name: problemName, description: i18n.getMessage(`reportProblemsDialog${problemName}`, + [CONFIGURATOR.latestVersion, CONFIGURATOR.latestVersionReleaseUrl, CONFIGURATOR.getDisplayVersion(), FC.CONFIG.flightControllerVersion])}); needsProblemReportingDialog = true; - - tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, PROBLEM_ANALYTICS_EVENT, - `${problemName};${CONFIGURATOR.API_VERSION_MAX_SUPPORTED};${FC.CONFIG.apiVersion}`); } - needsProblemReportingDialog = checkReportProblem('MOTOR_PROTOCOL_DISABLED', problemDialogList) || needsProblemReportingDialog; + needsProblemReportingDialog = checkReportProblem('MOTOR_PROTOCOL_DISABLED', problems) || needsProblemReportingDialog; if (have_sensor(FC.CONFIG.activeSensors, 'acc')) { - needsProblemReportingDialog = checkReportProblem('ACC_NEEDS_CALIBRATION', problemDialogList) || needsProblemReportingDialog; + needsProblemReportingDialog = checkReportProblem('ACC_NEEDS_CALIBRATION', problems) || needsProblemReportingDialog; } if (needsProblemReportingDialog) { + + problems.map((problem) => { + problemItemTemplate.clone().html(problem.description).appendTo(problemDialogList); + }); + + tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, PROBLEM_ANALYTICS_EVENT, { problems: problems.map((problem) => problem.name) }); + const problemDialog = $('#dialogReportProblems')[0]; $('#dialogReportProblems-closebtn').click(function() { problemDialog.close(); @@ -547,9 +544,6 @@ async function processBuildConfiguration() { async function processUid() { await MSP.promise(MSPCodes.MSP_UID); - tracking.setFlightControllerData(tracking.DATA.MCU_ID, CryptoES.SHA1(FC.CONFIG.deviceIdentifier)); - tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Connected'); - connectionTimestamp = Date.now(); gui_log(i18n.getMessage('uniqueDeviceIdReceived', FC.CONFIG.deviceIdentifier)); @@ -559,6 +553,10 @@ async function processUid() { } else { processCraftName(); } + + tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Connected', { + deviceIdentifier: CryptoES.SHA1(FC.CONFIG.deviceIdentifier), + }); } async function processCraftName() { diff --git a/src/js/tabs/firmware_flasher.js b/src/js/tabs/firmware_flasher.js index 3ff24b73..c41ccfa8 100644 --- a/src/js/tabs/firmware_flasher.js +++ b/src/js/tabs/firmware_flasher.js @@ -35,6 +35,7 @@ const firmware_flasher = { intel_hex: undefined, // standard intel hex in string format parsed_hex: undefined, // parsed raw hex in array format isConfigLocal: false, // Set to true if the user loads one locally + filename: null, configFilename: null, config: {}, developmentFirmwareLoaded: false, // Is the firmware to be flashed from the development branch? @@ -72,14 +73,21 @@ firmware_flasher.initialize = function (callback) { worker.postMessage(str); } - function showLoadedHex(fileName) { + function showLoadedHex(filename) { + self.filename = filename; + if (self.localFirmwareLoaded) { - self.flashingMessage(i18n.getMessage('firmwareFlasherFirmwareLocalLoaded', { filename: fileName, bytes: self.parsed_hex.bytes_total }), self.FLASH_MESSAGE_TYPES.NEUTRAL); + self.flashingMessage(i18n.getMessage('firmwareFlasherFirmwareLocalLoaded', { filename: filename, bytes: self.parsed_hex.bytes_total }), self.FLASH_MESSAGE_TYPES.NEUTRAL); } else { - self.flashingMessage(`${i18n.getMessage('firmwareFlasherFirmwareOnlineLoaded', { filename: fileName, bytes: self.parsed_hex.bytes_total })}`, - self.FLASH_MESSAGE_TYPES.NEUTRAL); + self.flashingMessage(`${i18n.getMessage('firmwareFlasherFirmwareOnlineLoaded', { filename: filename, bytes: self.parsed_hex.bytes_total })}`, self.FLASH_MESSAGE_TYPES.NEUTRAL); } self.enableFlashButton(true); + + tracking.sendEvent(tracking.EVENT_CATEGORIES.FLASHING, 'FirmwareLoaded', { + firmwareSize: self.parsed_hex.bytes_total, + firmwareName: filename, + firmwareSource: self.localFirmwareLoaded ? 'file' : 'http', + }); } function showReleaseNotes(summary) { @@ -129,7 +137,6 @@ firmware_flasher.initialize = function (callback) { self.parsed_hex = data; if (self.parsed_hex) { - tracking.setFirmwareData(tracking.DATA.FIRMWARE_SIZE, self.parsed_hex.bytes_total); showLoadedHex(key); } else { self.flashingMessage(i18n.getMessage('firmwareFlasherHexCorrupted'), self.FLASH_MESSAGE_TYPES.INVALID); @@ -281,15 +288,13 @@ firmware_flasher.initialize = function (callback) { buildType_e.on('change', function() { self.enableLoadRemoteFileButton(false); - tracking.setFirmwareData(tracking.DATA.FIRMWARE_CHANNEL, $('option:selected', this).text()); - const build_type = buildType_e.val(); $('select[name="board"]').empty() - .append($(``)); + .append($(``)); $('select[name="firmware_version"]').empty() - .append($(``)); + .append($(``)); if (!GUI.connect_lock) { try { @@ -541,7 +546,6 @@ firmware_flasher.initialize = function (callback) { eraseAll = true; } - tracking.setFirmwareData(tracking.DATA.FIRMWARE_ERASE_ALL, eraseAll.toString()); if (!$('option:selected', portPickerElement).data().isDFU) { if (String(portPickerElement.val()) !== '0') { @@ -558,7 +562,7 @@ firmware_flasher.initialize = function (callback) { baud = parseInt($('#flash_manual_baud_rate').val()); } - tracking.sendEvent(tracking.EVENT_CATEGORIES.FLASHING, 'Flashing', self.fileName || null); + tracking.sendEvent(tracking.EVENT_CATEGORIES.FLASHING, 'Flashing', self.filename || null); STM32.connect(port, baud, firmware, options); } else { @@ -566,7 +570,7 @@ firmware_flasher.initialize = function (callback) { gui_log(i18n.getMessage('firmwareFlasherNoValidPort')); } } else { - tracking.sendEvent(tracking.EVENT_CATEGORIES.FLASHING, 'Flashing', self.fileName || null); + tracking.sendEvent(tracking.EVENT_CATEGORIES.FLASHING, 'DFU Flashing', self.filename || null); STM32DFU.connect(usbDevices, firmware, options); } @@ -659,9 +663,6 @@ firmware_flasher.initialize = function (callback) { self.enableFlashButton(false); self.developmentFirmwareLoaded = false; - tracking.setFirmwareData(tracking.DATA.FIRMWARE_CHANNEL, undefined); - tracking.setFirmwareData(tracking.DATA.FIRMWARE_SOURCE, 'file'); - chrome.fileSystem.chooseEntry({ type: 'openFile', accepts: [ @@ -681,7 +682,6 @@ firmware_flasher.initialize = function (callback) { console.log('Loading file from:', path); fileEntry.file(function (file) { - tracking.setFirmwareData(tracking.DATA.FIRMWARE_NAME, file.name); const reader = new FileReader(); reader.onloadend = function(e) { @@ -695,7 +695,6 @@ firmware_flasher.initialize = function (callback) { self.parsed_hex = data; if (self.parsed_hex) { - tracking.setFirmwareData(tracking.DATA.FIRMWARE_SIZE, self.parsed_hex.bytes_total); self.localFirmwareLoaded = true; showLoadedHex(file.name); @@ -747,8 +746,6 @@ firmware_flasher.initialize = function (callback) { self.localFirmwareLoaded = false; self.developmentFirmwareLoaded = buildTypesToShow[$('select[name="build_type"]').val()].tag === 'firmwareFlasherOptionLabelBuildTypeDevelopment'; - tracking.setFirmwareData(tracking.DATA.FIRMWARE_SOURCE, 'http'); - if ($('select[name="firmware_version"]').val() === "0") { gui_log(i18n.getMessage('firmwareFlasherNoFirmwareSelected')); return; @@ -834,8 +831,6 @@ firmware_flasher.initialize = function (callback) { return; } - tracking.setFirmwareData(tracking.DATA.FIRMWARE_NAME, response.file); - updateStatus('Pending', response.key, 0, false); let retries = 1; @@ -1470,8 +1465,6 @@ firmware_flasher.cleanup = function (callback) { $(document).unbind('keypress'); $(document).off('click', 'span.progressLabel a'); - tracking.resetFirmwareData(); - if (callback) callback(); }; diff --git a/src/js/tabs/onboard_logging.js b/src/js/tabs/onboard_logging.js index f53368fc..0a6f4a52 100644 --- a/src/js/tabs/onboard_logging.js +++ b/src/js/tabs/onboard_logging.js @@ -372,9 +372,12 @@ onboard_logging.initialize = function (callback) { if (dataflashPresent && FC.SDCARD.state === MSP.SDCARD_STATE_NOT_PRESENT) { loggingStatus = 'Dataflash'; - tracking.setFlightControllerData(tracking.DATA.LOG_SIZE, FC.DATAFLASH.usedSize); } - tracking.setFlightControllerData(tracking.DATA.LOGGING_STATUS, loggingStatus); + + tracking.sendEvent(tracking.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'DataLogging', { + logSize: FC.DATAFLASH.usedSize, + logStatus: loggingStatus, + }); if (FC.SDCARD.supported && !sdcardTimer) { // Poll for changes in SD card status @@ -569,9 +572,6 @@ onboard_logging.initialize = function (callback) { }; onboard_logging.cleanup = function (callback) { - tracking.setFlightControllerData(tracking.DATA.LOGGING_STATUS, undefined); - tracking.setFlightControllerData(tracking.DATA.LOG_SIZE, undefined); - if (sdcardTimer) { clearTimeout(sdcardTimer); sdcardTimer = false; diff --git a/yarn.lock b/yarn.lock index 1377c6ae..67c28f51 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16281,11 +16281,6 @@ unist-util-visit@2.0.3, unist-util-visit@^2.0.0: unist-util-is "^4.0.0" unist-util-visit-parents "^3.0.0" -universal-ga@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/universal-ga/-/universal-ga-1.2.0.tgz#c893d5d0f7fb2066ff43739e5daed45485c8e23f" - integrity sha512-VSkK/aeymj0XQxNJL+Y/kenQKk2EsfWqi3Cf0EKmmGSuPjpA/R6ofJ6xWfstVqRJPj5RiAnyLpHlcshHRVVHJQ== - universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"