mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-26 01:35:41 +03:00
Merge branch 'development'
This commit is contained in:
commit
ae44187fb9
13 changed files with 53 additions and 181 deletions
28
_locales/en/messages.json
Normal file → Executable file
28
_locales/en/messages.json
Normal file → Executable file
|
@ -12,26 +12,7 @@
|
||||||
"options_improve_configurator": {
|
"options_improve_configurator": {
|
||||||
"message": "Send anonymous usage data to the developer team"
|
"message": "Send anonymous usage data to the developer team"
|
||||||
},
|
},
|
||||||
|
|
||||||
"reviewHead": {
|
|
||||||
"message": "Application Review"
|
|
||||||
},
|
|
||||||
"reviewInitial": {
|
|
||||||
"message": "Do you like this app?"
|
|
||||||
},
|
|
||||||
"reviewStore": {
|
|
||||||
"message": "We are glad to hear that, would you like to send a review to make the application more popular?"
|
|
||||||
},
|
|
||||||
"reviewBug": {
|
|
||||||
"message": "We are sorry to hear that, would you like to submit a ticker and tell us what bothers you?"
|
|
||||||
},
|
|
||||||
"reviewYes": {
|
|
||||||
"message": "Yes"
|
|
||||||
},
|
|
||||||
"reviewNo": {
|
|
||||||
"message": "No"
|
|
||||||
},
|
|
||||||
|
|
||||||
"connect": {
|
"connect": {
|
||||||
"message": "Connect"
|
"message": "Connect"
|
||||||
},
|
},
|
||||||
|
@ -818,10 +799,10 @@
|
||||||
"message": "No reboot sequence"
|
"message": "No reboot sequence"
|
||||||
},
|
},
|
||||||
"firmwareFlasherOnlineReleasesDescription": {
|
"firmwareFlasherOnlineReleasesDescription": {
|
||||||
"message": "Available online firmware releases"
|
"message": "Available online firmware releases - Select the correct firmware appropriate for your board."
|
||||||
},
|
},
|
||||||
"firmwareFlasherNoRebootDescription": {
|
"firmwareFlasherNoRebootDescription": {
|
||||||
"message": "Check if you are flashing board with bootloader pins shorted"
|
"message": "Enable if you are flashing board with bootloader pins shorted"
|
||||||
},
|
},
|
||||||
"firmwareFlasherFlashOnConnect": {
|
"firmwareFlasherFlashOnConnect": {
|
||||||
"message": "Flash on connect"
|
"message": "Flash on connect"
|
||||||
|
@ -847,6 +828,9 @@
|
||||||
"firmwareFlasherFlashSlowlyDescription": {
|
"firmwareFlasherFlashSlowlyDescription": {
|
||||||
"message": "Use 115200 baudrate for flashing (useful for flashing via bluetooth)"
|
"message": "Use 115200 baudrate for flashing (useful for flashing via bluetooth)"
|
||||||
},
|
},
|
||||||
|
"firmwareFlasherOptionLabelSelectFirmware": {
|
||||||
|
"message": "Choose a Firmware / Board"
|
||||||
|
},
|
||||||
"firmwareFlasherButtonLoadLocal": {
|
"firmwareFlasherButtonLoadLocal": {
|
||||||
"message": "Load Firmware [Local]"
|
"message": "Load Firmware [Local]"
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
<span>2014.12.06 - 0.57.2 - cleanflight</span>
|
||||||
|
<p>
|
||||||
|
- Force user to select firmware before flashing (pulsar).<br />
|
||||||
|
</p>
|
||||||
<span>2014.12.06 - 0.57.1 - cleanflight</span>
|
<span>2014.12.06 - 0.57.1 - cleanflight</span>
|
||||||
<p>
|
<p>
|
||||||
- Latest firmware <strong>required</strong>.<br />
|
- Latest firmware <strong>required</strong>.<br />
|
||||||
|
|
10
js/libraries/d3.min.js
vendored
10
js/libraries/d3.min.js
vendored
File diff suppressed because one or more lines are too long
4
js/libraries/jquery-2.1.1.min.js
vendored
4
js/libraries/jquery-2.1.1.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
js/libraries/jquery-2.1.3.min.js
vendored
Normal file
4
js/libraries/jquery-2.1.3.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
js/libraries/jquery-2.1.3.min.map
Normal file
1
js/libraries/jquery-2.1.3.min.map
Normal file
File diff suppressed because one or more lines are too long
143
js/review.js
143
js/review.js
|
@ -1,143 +0,0 @@
|
||||||
'use strict';
|
|
||||||
|
|
||||||
$(document).ready(function () {
|
|
||||||
function Dialog(identifier, content, handler) {
|
|
||||||
var self = this;
|
|
||||||
|
|
||||||
this.block = $('<div />').css({
|
|
||||||
'position': 'fixed',
|
|
||||||
'top': 0,
|
|
||||||
'left': 0,
|
|
||||||
'width': '100%',
|
|
||||||
'height': '100%',
|
|
||||||
'background-color': 'rgba(0, 0, 0, 0.25)',
|
|
||||||
'z-index': 1000
|
|
||||||
});
|
|
||||||
|
|
||||||
$('body').append(this.block);
|
|
||||||
|
|
||||||
this.element = $('<div />').prop('id', 'dialog').addClass(identifier).load(content, function () {
|
|
||||||
// position the dialog
|
|
||||||
self.element.css({
|
|
||||||
'top': window.innerHeight / 3,
|
|
||||||
'left': (window.innerWidth - self.element.width()) / 2
|
|
||||||
});
|
|
||||||
|
|
||||||
// display content
|
|
||||||
self.element.fadeIn(100);
|
|
||||||
|
|
||||||
if (handler) handler(self);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('body').append(this.element);
|
|
||||||
|
|
||||||
// handle window resize
|
|
||||||
var resizeHandler = function () {
|
|
||||||
self.element.css({
|
|
||||||
'top': window.innerHeight / 3,
|
|
||||||
'left': (window.innerWidth - self.element.width()) / 2
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
$(window).on('resize', resizeHandler);
|
|
||||||
|
|
||||||
|
|
||||||
// handle confirm/dismiss keys
|
|
||||||
var keyDownHandler = function (e) {
|
|
||||||
if (e.which == 13) {
|
|
||||||
// Enter
|
|
||||||
self.element.find('.yes').click();
|
|
||||||
} else if (e.which == 27) {
|
|
||||||
// ESC
|
|
||||||
self.element.find('.no').click();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
$(document).on('keydown', keyDownHandler);
|
|
||||||
|
|
||||||
// cleanup routine
|
|
||||||
this.cleanup = function () {
|
|
||||||
$(window).off('resize', resizeHandler);
|
|
||||||
$(document).off('keydown', keyDownHandler);
|
|
||||||
|
|
||||||
self.element.empty().remove();
|
|
||||||
self.block.remove();
|
|
||||||
};
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
chrome.storage.sync.get('appReview', function (result) {
|
|
||||||
if (typeof result.appReview !== 'undefined') {
|
|
||||||
var data = result.appReview;
|
|
||||||
|
|
||||||
if (data.launched < 10) {
|
|
||||||
data.launched += 1;
|
|
||||||
|
|
||||||
chrome.storage.sync.set({'appReview': data});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((data.firstStart + 604800000) < new Date().getTime()) {
|
|
||||||
if ((data.refused == 0 || (data.refused + 604800000) < new Date().getTime()) && !data.reviewed) { // needs verifying
|
|
||||||
var dialog = new Dialog('review', './tabs/review.html', function () {
|
|
||||||
localize();
|
|
||||||
|
|
||||||
$('.initial', dialog.element).show();
|
|
||||||
|
|
||||||
var stage = 0;
|
|
||||||
$(dialog.element).on('click', '.yes, .no', function () {
|
|
||||||
if (!stage) {
|
|
||||||
$('p', dialog.element).hide();
|
|
||||||
if ($(this).hasClass('yes')) {
|
|
||||||
$('.storeReview', dialog.element).show();
|
|
||||||
stage = 1;
|
|
||||||
googleAnalytics.sendEvent('Review', 'Likes App', true);
|
|
||||||
} else {
|
|
||||||
$('.bugTicket', dialog.element).show();
|
|
||||||
stage = 2
|
|
||||||
googleAnalytics.sendEvent('Review', 'Likes App', false);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (stage == 1) {
|
|
||||||
if ($(this).hasClass('yes')) {
|
|
||||||
window.open('https://chrome.google.com/webstore/detail/baseflight-configurator/mppkgnedeapfejgfimkdoninnofofigk/reviews');
|
|
||||||
data.reviewed = new Date().getTime();
|
|
||||||
googleAnalytics.sendEvent('Review', 'Submits Review', true);
|
|
||||||
} else {
|
|
||||||
data.refused = new Date().getTime();
|
|
||||||
googleAnalytics.sendEvent('Review', 'Refused', true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (stage == 2) {
|
|
||||||
if ($(this).hasClass('yes')) {
|
|
||||||
window.open('https://chrome.google.com/webstore/detail/baseflight-configurator/mppkgnedeapfejgfimkdoninnofofigk/support');
|
|
||||||
data.refused = new Date().getTime();
|
|
||||||
googleAnalytics.sendEvent('Review', 'Submits Bug Ticket', true);
|
|
||||||
} else {
|
|
||||||
data.refused = new Date().getTime();
|
|
||||||
googleAnalytics.sendEvent('Review', 'Refused', true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
chrome.storage.sync.set({'appReview': data});
|
|
||||||
dialog.cleanup();
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// object not in storage, initial setup
|
|
||||||
chrome.storage.sync.set({'appReview': {
|
|
||||||
'firstStart': new Date().getTime(),
|
|
||||||
'launched': 1,
|
|
||||||
'reviewed': 0,
|
|
||||||
'refused': 0
|
|
||||||
}});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -26,7 +26,7 @@
|
||||||
<link type="text/css" rel="stylesheet" href="./tabs/auxiliary.css" media="all" />
|
<link type="text/css" rel="stylesheet" href="./tabs/auxiliary.css" media="all" />
|
||||||
|
|
||||||
<script type="text/javascript" src="./js/libraries/google-analytics-bundle.js"></script>
|
<script type="text/javascript" src="./js/libraries/google-analytics-bundle.js"></script>
|
||||||
<script type="text/javascript" src="./js/libraries/jquery-2.1.1.min.js"></script>
|
<script type="text/javascript" src="./js/libraries/jquery-2.1.3.min.js"></script>
|
||||||
<script type="text/javascript" src="./js/libraries/d3.min.js"></script>
|
<script type="text/javascript" src="./js/libraries/d3.min.js"></script>
|
||||||
<script type="text/javascript" src="./js/libraries/jquery.nouislider.all.min.js"></script>
|
<script type="text/javascript" src="./js/libraries/jquery.nouislider.all.min.js"></script>
|
||||||
<script type="text/javascript" src="./js/libraries/three/three.min.js"></script>
|
<script type="text/javascript" src="./js/libraries/three/three.min.js"></script>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"minimum_chrome_version": "38",
|
"minimum_chrome_version": "38",
|
||||||
"version": "0.57.1",
|
"version": "0.57.2",
|
||||||
"author": "Hydra",
|
"author": "Hydra",
|
||||||
"name": "Cleanflight - Configurator",
|
"name": "Cleanflight - Configurator",
|
||||||
"short_name": "cleanflight",
|
"short_name": "cleanflight",
|
||||||
|
|
11
tabs/firmware_flasher.css
Normal file → Executable file
11
tabs/firmware_flasher.css
Normal file → Executable file
|
@ -71,7 +71,7 @@
|
||||||
margin-left: 6px;
|
margin-left: 6px;
|
||||||
}
|
}
|
||||||
.tab-firmware_flasher .options select {
|
.tab-firmware_flasher .options select {
|
||||||
width: 180px;
|
width: 280px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
|
|
||||||
border: 1px solid silver;
|
border: 1px solid silver;
|
||||||
|
@ -82,7 +82,7 @@
|
||||||
}
|
}
|
||||||
.tab-firmware_flasher .options .description {
|
.tab-firmware_flasher .options .description {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 200px;
|
left: 300px;
|
||||||
|
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
color: #818181;
|
color: #818181;
|
||||||
|
@ -194,6 +194,13 @@
|
||||||
cursor: default;
|
cursor: default;
|
||||||
background-color: #b8b8b8;
|
background-color: #b8b8b8;
|
||||||
}
|
}
|
||||||
|
.tab-firmware_flasher .buttons a.load_remote_file.locked {
|
||||||
|
background-color: #b8b8b8;
|
||||||
|
}
|
||||||
|
.tab-firmware_flasher .buttons a.load_remote_file.locked:hover {
|
||||||
|
cursor: default;
|
||||||
|
background-color: #b8b8b8;
|
||||||
|
}
|
||||||
.tab-firmware_flasher .buttons a.back {
|
.tab-firmware_flasher .buttons a.back {
|
||||||
float: right;
|
float: right;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
2
tabs/firmware_flasher.html
Normal file → Executable file
2
tabs/firmware_flasher.html
Normal file → Executable file
|
@ -69,7 +69,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<a class="load_file" href="#" i18n="firmwareFlasherButtonLoadLocal"></a>
|
<a class="load_file" href="#" i18n="firmwareFlasherButtonLoadLocal"></a>
|
||||||
<a class="load_remote_file" href="#" i18n="firmwareFlasherButtonLoadOnline"></a>
|
<a class="load_remote_file locked" href="#" i18n="firmwareFlasherButtonLoadOnline"></a>
|
||||||
<a class="flash_firmware locked" href="#" i18n="firmwareFlasherFlashFirmware"></a>
|
<a class="flash_firmware locked" href="#" i18n="firmwareFlasherFlashFirmware"></a>
|
||||||
<a class="back" href="#" i18n="firmwareFlasherButtonLeave"></a>
|
<a class="back" href="#" i18n="firmwareFlasherButtonLeave"></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
22
tabs/firmware_flasher.js
Normal file → Executable file
22
tabs/firmware_flasher.js
Normal file → Executable file
|
@ -32,6 +32,8 @@ TABS.firmware_flasher.initialize = function (callback) {
|
||||||
var processReleases = function (releases){
|
var processReleases = function (releases){
|
||||||
var releases_e = $('select[name="release"]').empty();
|
var releases_e = $('select[name="release"]').empty();
|
||||||
|
|
||||||
|
releases_e.append($("<option value='0'>{0}</option>".format(chrome.i18n.getMessage('firmwareFlasherOptionLabelSelectFirmware'))));
|
||||||
|
|
||||||
for(var releaseIndex = 0; releaseIndex < releases.length; releaseIndex++){
|
for(var releaseIndex = 0; releaseIndex < releases.length; releaseIndex++){
|
||||||
$.get(releases[releaseIndex].assets_url).done(
|
$.get(releases[releaseIndex].assets_url).done(
|
||||||
(function (releases, releaseIndex, releases_e, assets){
|
(function (releases, releaseIndex, releases_e, assets){
|
||||||
|
@ -206,8 +208,26 @@ TABS.firmware_flasher.initialize = function (callback) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lock / Unlock the firmware download button according to the firmware selection dropdown.
|
||||||
|
*/
|
||||||
|
$('select[name="release"]').change(function(evt){
|
||||||
|
if (evt.target.value=="0") {
|
||||||
|
$("a.load_remote_file").addClass('locked');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$("a.load_remote_file").removeClass('locked');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$('a.load_remote_file').click(function () {
|
$('a.load_remote_file').click(function (evt) {
|
||||||
|
|
||||||
|
if ($('select[name="release"]').val() == "0") {
|
||||||
|
GUI.log("<b>No firmware selected to load</b>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
function process_hex(data, summary) {
|
function process_hex(data, summary) {
|
||||||
intel_hex = data;
|
intel_hex = data;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue