1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-25 01:05:15 +03:00

Updating analytics to use build server (#3729)

* Updating analytics to use build server

- allows for server side analytics submission to whatever service we plan to use

* Revert to const (artifact left over from some testing)

* Send the changeList object in total
This commit is contained in:
J Blackman 2024-01-05 08:28:28 +11:00 committed by GitHub
parent 072d16c6ba
commit 66d175b030
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 96 additions and 221 deletions

View file

@ -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"
},

View file

@ -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;
}
}

View file

@ -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",
});
}
}

View file

@ -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) {

View file

@ -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() {

View file

@ -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(`<a class="save_firmware" href="#" title="Save Firmware">${i18n.getMessage('firmwareFlasherFirmwareOnlineLoaded', { filename: fileName, bytes: self.parsed_hex.bytes_total })}</a>`,
self.FLASH_MESSAGE_TYPES.NEUTRAL);
self.flashingMessage(`<a class="save_firmware" href="#" title="Save Firmware">${i18n.getMessage('firmwareFlasherFirmwareOnlineLoaded', { filename: filename, bytes: self.parsed_hex.bytes_total })}</a>`, 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($(`<option value='0'>${i18n.getMessage("firmwareFlasherOptionLoading")}</option>`));
.append($(`<option value='0'>${i18n.getMessage("firmwareFlasherOptionLoading")}</option>`));
$('select[name="firmware_version"]').empty()
.append($(`<option value='0'>${i18n.getMessage("firmwareFlasherOptionLoading")}</option>`));
.append($(`<option value='0'>${i18n.getMessage("firmwareFlasherOptionLoading")}</option>`));
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();
};

View file

@ -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;

View file

@ -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"