mirror of
https://github.com/betaflight/betaflight-configurator.git
synced 2025-07-23 16:25:22 +03:00
Added more metrics, fixed bug in CLI save.
This commit is contained in:
parent
8762dbc553
commit
d9e8330997
5 changed files with 53 additions and 8 deletions
|
@ -31,15 +31,18 @@ var Analytics = function (trackingId, userId, appName, appVersion, buildType, op
|
||||||
|
|
||||||
this.DATA = {
|
this.DATA = {
|
||||||
BOARD_TYPE: 'boardType',
|
BOARD_TYPE: 'boardType',
|
||||||
|
API_VERSION: 'apiVersion',
|
||||||
FIRMWARE_TYPE: 'firmwareType',
|
FIRMWARE_TYPE: 'firmwareType',
|
||||||
FIRMWARE_VERSION: 'firmwareVersion',
|
FIRMWARE_VERSION: 'firmwareVersion',
|
||||||
API_VERSION: 'apiVersion',
|
|
||||||
MCU_ID: 'mcuId',
|
|
||||||
FIRMWARE_NAME: 'firmwareName',
|
FIRMWARE_NAME: 'firmwareName',
|
||||||
FIRMWARE_CHECKSUM: 'firmwareChecksum',
|
FIRMWARE_CHECKSUM: 'firmwareChecksum',
|
||||||
FIRMWARE_SOURCE: 'firmwareSource',
|
FIRMWARE_SOURCE: 'firmwareSource',
|
||||||
FIRMWARE_CHANNEL: 'firmwareChannel',
|
FIRMWARE_CHANNEL: 'firmwareChannel',
|
||||||
FIRMWARE_ERASE_ALL: 'firmwareEraseAll',
|
FIRMWARE_ERASE_ALL: 'firmwareEraseAll',
|
||||||
|
FIRMWARE_SIZE: 'firmwareSize',
|
||||||
|
MCU_ID: 'mcuId',
|
||||||
|
LOGGING_STATUS: 'loggingStatus',
|
||||||
|
LOG_SIZE: 'logSize',
|
||||||
};
|
};
|
||||||
|
|
||||||
this.DIMENSIONS = {
|
this.DIMENSIONS = {
|
||||||
|
@ -53,6 +56,13 @@ var Analytics = function (trackingId, userId, appName, appVersion, buildType, op
|
||||||
FIRMWARE_ERASE_ALL: 8,
|
FIRMWARE_ERASE_ALL: 8,
|
||||||
CONFIGURATOR_EXPERT_MODE: 9,
|
CONFIGURATOR_EXPERT_MODE: 9,
|
||||||
FIRMWARE_CHANNEL: 10,
|
FIRMWARE_CHANNEL: 10,
|
||||||
|
LOGGING_STATUS: 11,
|
||||||
|
MCU_ID: 12,
|
||||||
|
};
|
||||||
|
|
||||||
|
this.METRICS = {
|
||||||
|
FIRMWARE_SIZE: 1,
|
||||||
|
LOG_SIZE: 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
this.setDimension(this.DIMENSIONS.CONFIGURATOR_BUILD_TYPE, buildType);
|
this.setDimension(this.DIMENSIONS.CONFIGURATOR_BUILD_TYPE, buildType);
|
||||||
|
@ -66,6 +76,11 @@ Analytics.prototype.setDimension = function (dimension, value) {
|
||||||
this._googleAnalytics.custom(dimensionName, value);
|
this._googleAnalytics.custom(dimensionName, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Analytics.prototype.setMetric = function (metric, value) {
|
||||||
|
var metricName = 'metric' + metric;
|
||||||
|
this._googleAnalytics.custom(metricName, value);
|
||||||
|
}
|
||||||
|
|
||||||
Analytics.prototype.sendEvent = function (category, action, options) {
|
Analytics.prototype.sendEvent = function (category, action, options) {
|
||||||
this._googleAnalytics.event(category, action, options);
|
this._googleAnalytics.event(category, action, options);
|
||||||
}
|
}
|
||||||
|
@ -102,7 +117,9 @@ Analytics.prototype._rebuildFlightControllerEvent = function () {
|
||||||
this.setDimension(this.DIMENSIONS.FIRMWARE_TYPE, this._flightControllerData[this.DATA.FIRMWARE_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.FIRMWARE_VERSION, this._flightControllerData[this.DATA.FIRMWARE_VERSION]);
|
||||||
this.setDimension(this.DIMENSIONS.API_VERSION, this._flightControllerData[this.DATA.API_VERSION]);
|
this.setDimension(this.DIMENSIONS.API_VERSION, this._flightControllerData[this.DATA.API_VERSION]);
|
||||||
this._googleAnalytics.set('eventLabel', this._flightControllerData[this.DATA.MCU_ID]);
|
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]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Analytics.prototype.setFlightControllerData = function (property, value) {
|
Analytics.prototype.setFlightControllerData = function (property, value) {
|
||||||
|
@ -122,6 +139,7 @@ Analytics.prototype._rebuildFirmwareEvent = function () {
|
||||||
this.setDimension(this.DIMENSIONS.FIRMWARE_SOURCE, this._firmwareData[this.DATA.FIRMWARE_SOURCE]);
|
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_ERASE_ALL, this._firmwareData[this.DATA.FIRMWARE_ERASE_ALL]);
|
||||||
this.setDimension(this.DIMENSIONS.FIRMWARE_CHANNEL, this._firmwareData[this.DATA.FIRMWARE_CHANNEL]);
|
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._googleAnalytics.set('eventLabel', this._firmwareData[this.DATA.FIRMWARE_CHECKSUM]);
|
this._googleAnalytics.set('eventLabel', this._firmwareData[this.DATA.FIRMWARE_CHECKSUM]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -254,6 +254,7 @@ function configuration_backup(callback) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Backup');
|
||||||
console.log('Write SUCCESSFUL');
|
console.log('Write SUCCESSFUL');
|
||||||
if (callback) callback();
|
if (callback) callback();
|
||||||
};
|
};
|
||||||
|
@ -337,6 +338,8 @@ function configuration_restore(callback) {
|
||||||
configuration.FEATURE_CONFIG.features = features;
|
configuration.FEATURE_CONFIG.features = features;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'Restore');
|
||||||
|
|
||||||
configuration_upload(configuration, callback);
|
configuration_upload(configuration, callback);
|
||||||
} else {
|
} else {
|
||||||
GUI.log(i18n.getMessage('backupFileIncompatible'));
|
GUI.log(i18n.getMessage('backupFileIncompatible'));
|
||||||
|
|
|
@ -60,7 +60,6 @@ TABS.cli.initialize = function (callback) {
|
||||||
var textarea = $('.tab-cli textarea');
|
var textarea = $('.tab-cli textarea');
|
||||||
|
|
||||||
$('.tab-cli .save').click(function() {
|
$('.tab-cli .save').click(function() {
|
||||||
|
|
||||||
var prefix = 'cli';
|
var prefix = 'cli';
|
||||||
var suffix = 'txt';
|
var suffix = 'txt';
|
||||||
|
|
||||||
|
@ -87,9 +86,11 @@ TABS.cli.initialize = function (callback) {
|
||||||
};
|
};
|
||||||
|
|
||||||
writer.onwriteend = function () {
|
writer.onwriteend = function () {
|
||||||
if (writer.length === 0) {
|
if (self.outputHistory.length > 0 && writer.length === 0) {
|
||||||
writer.write(new Blob([self.outputHistory], {type: 'text/plain'}));
|
writer.write(new Blob([self.outputHistory], {type: 'text/plain'}));
|
||||||
} else {
|
} else {
|
||||||
|
analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'CliSave', self.outputHistory.length);
|
||||||
|
|
||||||
console.log('write complete');
|
console.log('write complete');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -56,12 +56,12 @@ TABS.firmware_flasher.initialize = function (callback) {
|
||||||
parsed_hex = data;
|
parsed_hex = data;
|
||||||
|
|
||||||
if (parsed_hex) {
|
if (parsed_hex) {
|
||||||
|
analytics.setFirmwareData(analytics.DATA.FIRMWARE_SIZE, parsed_hex.bytes_total);
|
||||||
|
|
||||||
if (!FirmwareCache.has(summary)) {
|
if (!FirmwareCache.has(summary)) {
|
||||||
FirmwareCache.put(summary, intel_hex);
|
FirmwareCache.put(summary, intel_hex);
|
||||||
}
|
}
|
||||||
|
|
||||||
var url;
|
|
||||||
|
|
||||||
$('span.progressLabel').html('<a class="save_firmware" href="#" title="Save Firmware">Loaded Online Firmware: (' + parsed_hex.bytes_total + ' bytes)</a>');
|
$('span.progressLabel').html('<a class="save_firmware" href="#" title="Save Firmware">Loaded Online Firmware: (' + parsed_hex.bytes_total + ' bytes)</a>');
|
||||||
|
|
||||||
$('a.flash_firmware').removeClass('disabled');
|
$('a.flash_firmware').removeClass('disabled');
|
||||||
|
@ -367,6 +367,8 @@ TABS.firmware_flasher.initialize = function (callback) {
|
||||||
parsed_hex = data;
|
parsed_hex = data;
|
||||||
|
|
||||||
if (parsed_hex) {
|
if (parsed_hex) {
|
||||||
|
analytics.setFirmwareData(analytics.DATA.FIRMWARE_SIZE, parsed_hex.bytes_total);
|
||||||
|
|
||||||
$('a.flash_firmware').removeClass('disabled');
|
$('a.flash_firmware').removeClass('disabled');
|
||||||
|
|
||||||
$('span.progressLabel').text(i18n.getMessage('firmwareFlasherFirmwareLocalLoaded', parsed_hex.bytes_total));
|
$('span.progressLabel').text(i18n.getMessage('firmwareFlasherFirmwareLocalLoaded', parsed_hex.bytes_total));
|
||||||
|
|
|
@ -153,6 +153,8 @@ TABS.onboard_logging.initialize = function (callback) {
|
||||||
.toggleClass("msc-supported", true);
|
.toggleClass("msc-supported", true);
|
||||||
|
|
||||||
$('a.onboardLoggingRebootMsc').click(function () {
|
$('a.onboardLoggingRebootMsc').click(function () {
|
||||||
|
analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'RebootMsc');
|
||||||
|
|
||||||
var buffer = [];
|
var buffer = [];
|
||||||
buffer.push(2);
|
buffer.push(2);
|
||||||
MSP.send_message(MSPCodes.MSP_SET_REBOOT, buffer, false);
|
MSP.send_message(MSPCodes.MSP_SET_REBOOT, buffer, false);
|
||||||
|
@ -298,6 +300,8 @@ TABS.onboard_logging.initialize = function (callback) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function update_html() {
|
function update_html() {
|
||||||
|
var dataflashPresent = DATAFLASH.totalSize > 0;
|
||||||
|
|
||||||
update_bar_width($(".tab-onboard_logging .dataflash-used"), DATAFLASH.usedSize, DATAFLASH.totalSize, i18n.getMessage('dataflashUsedSpace'), false);
|
update_bar_width($(".tab-onboard_logging .dataflash-used"), DATAFLASH.usedSize, DATAFLASH.totalSize, i18n.getMessage('dataflashUsedSpace'), false);
|
||||||
update_bar_width($(".tab-onboard_logging .dataflash-free"), DATAFLASH.totalSize - DATAFLASH.usedSize, DATAFLASH.totalSize, i18n.getMessage('dataflashFreeSpace'), false);
|
update_bar_width($(".tab-onboard_logging .dataflash-free"), DATAFLASH.totalSize - DATAFLASH.usedSize, DATAFLASH.totalSize, i18n.getMessage('dataflashFreeSpace'), false);
|
||||||
|
|
||||||
|
@ -312,7 +316,7 @@ TABS.onboard_logging.initialize = function (callback) {
|
||||||
.toggleClass("sdcard-ready", SDCARD.state === MSP.SDCARD_STATE_READY);
|
.toggleClass("sdcard-ready", SDCARD.state === MSP.SDCARD_STATE_READY);
|
||||||
|
|
||||||
if (semver.gte(CONFIG.apiVersion, "1.40.0")) {
|
if (semver.gte(CONFIG.apiVersion, "1.40.0")) {
|
||||||
var mscIsReady = (DATAFLASH.totalSize > 0) || (SDCARD.state === MSP.SDCARD_STATE_READY);
|
var mscIsReady = dataflashPresent || (SDCARD.state === MSP.SDCARD_STATE_READY);
|
||||||
$(".tab-onboard_logging")
|
$(".tab-onboard_logging")
|
||||||
.toggleClass("msc-not-ready", !mscIsReady);
|
.toggleClass("msc-not-ready", !mscIsReady);
|
||||||
|
|
||||||
|
@ -323,26 +327,38 @@ TABS.onboard_logging.initialize = function (callback) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var loggingStatus
|
||||||
switch (SDCARD.state) {
|
switch (SDCARD.state) {
|
||||||
case MSP.SDCARD_STATE_NOT_PRESENT:
|
case MSP.SDCARD_STATE_NOT_PRESENT:
|
||||||
$(".sdcard-status").text(i18n.getMessage('sdcardStatusNoCard'));
|
$(".sdcard-status").text(i18n.getMessage('sdcardStatusNoCard'));
|
||||||
|
loggingStatus = 'SdCard: NotPresent';
|
||||||
break;
|
break;
|
||||||
case MSP.SDCARD_STATE_FATAL:
|
case MSP.SDCARD_STATE_FATAL:
|
||||||
$(".sdcard-status").html(i18n.getMessage('sdcardStatusReboot'));
|
$(".sdcard-status").html(i18n.getMessage('sdcardStatusReboot'));
|
||||||
|
loggingStatus = 'SdCard: Error';
|
||||||
break;
|
break;
|
||||||
case MSP.SDCARD_STATE_READY:
|
case MSP.SDCARD_STATE_READY:
|
||||||
$(".sdcard-status").text(i18n.getMessage('sdcardStatusReady'));
|
$(".sdcard-status").text(i18n.getMessage('sdcardStatusReady'));
|
||||||
|
loggingStatus = 'SdCard: Ready';
|
||||||
break;
|
break;
|
||||||
case MSP.SDCARD_STATE_CARD_INIT:
|
case MSP.SDCARD_STATE_CARD_INIT:
|
||||||
$(".sdcard-status").text(i18n.getMessage('sdcardStatusStarting'));
|
$(".sdcard-status").text(i18n.getMessage('sdcardStatusStarting'));
|
||||||
|
loggingStatus = 'SdCard: Init';
|
||||||
break;
|
break;
|
||||||
case MSP.SDCARD_STATE_FS_INIT:
|
case MSP.SDCARD_STATE_FS_INIT:
|
||||||
$(".sdcard-status").text(i18n.getMessage('sdcardStatusFileSystem'));
|
$(".sdcard-status").text(i18n.getMessage('sdcardStatusFileSystem'));
|
||||||
|
loggingStatus = 'SdCard: FsInit';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$(".sdcard-status").text(i18n.getMessage('sdcardStatusUnknown',[SDCARD.state]));
|
$(".sdcard-status").text(i18n.getMessage('sdcardStatusUnknown',[SDCARD.state]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dataflashPresent && SDCARD.state === MSP.SDCARD_STATE_NOT_PRESENT) {
|
||||||
|
loggingStatus = 'Dataflash';
|
||||||
|
analytics.setFlightControllerData(analytics.DATA.LOG_SIZE, DATAFLASH.usedSize);
|
||||||
|
}
|
||||||
|
analytics.setFlightControllerData(analytics.DATA.LOGGING_STATUS, loggingStatus);
|
||||||
|
|
||||||
if (SDCARD.supported && !sdcardTimer) {
|
if (SDCARD.supported && !sdcardTimer) {
|
||||||
// Poll for changes in SD card status
|
// Poll for changes in SD card status
|
||||||
sdcardTimer = setTimeout(function() {
|
sdcardTimer = setTimeout(function() {
|
||||||
|
@ -374,6 +390,8 @@ TABS.onboard_logging.initialize = function (callback) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function mark_saving_dialog_done(startTime, totalBytes, totalBytesCompressed) {
|
function mark_saving_dialog_done(startTime, totalBytes, totalBytesCompressed) {
|
||||||
|
analytics.sendEvent(analytics.EVENT_CATEGORIES.FLIGHT_CONTROLLER, 'SaveDataflash');
|
||||||
|
|
||||||
var totalTime = (new Date().getTime() - startTime) / 1000;
|
var totalTime = (new Date().getTime() - startTime) / 1000;
|
||||||
console.log('Received ' + totalBytes + ' bytes in ' + totalTime.toFixed(2) + 's ('
|
console.log('Received ' + totalBytes + ' bytes in ' + totalTime.toFixed(2) + 's ('
|
||||||
+ (totalBytes / totalTime / 1024).toFixed(2) + 'kB / s) with block size ' + self.blockSize + '.');
|
+ (totalBytes / totalTime / 1024).toFixed(2) + 'kB / s) with block size ' + self.blockSize + '.');
|
||||||
|
@ -539,6 +557,9 @@ TABS.onboard_logging.initialize = function (callback) {
|
||||||
};
|
};
|
||||||
|
|
||||||
TABS.onboard_logging.cleanup = function (callback) {
|
TABS.onboard_logging.cleanup = function (callback) {
|
||||||
|
analytics.setFlightControllerData(analytics.DATA.LOGGING_STATUS, undefined);
|
||||||
|
analytics.setFlightControllerData(analytics.DATA.LOG_SIZE, undefined);
|
||||||
|
|
||||||
if (sdcardTimer) {
|
if (sdcardTimer) {
|
||||||
clearTimeout(sdcardTimer);
|
clearTimeout(sdcardTimer);
|
||||||
sdcardTimer = false;
|
sdcardTimer = false;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue