+
diff --git a/tabs/firmware_flasher.js b/tabs/firmware_flasher.js
index 31b62b3c..62d57233 100644
--- a/tabs/firmware_flasher.js
+++ b/tabs/firmware_flasher.js
@@ -29,6 +29,52 @@ TABS.firmware_flasher.initialize = function (callback) {
worker.postMessage(str);
}
+ // Fetch Releases
+ $.get('http://firmware.baseflight.net/listing.json', function (data) {
+ var releases = [],
+ releases_e = $('select[name="release"]').empty(),
+ d, date, offset;
+
+ // filter out what we need
+ for (var i = 0; i < data.length; i++) {
+ if (data[i].target == 'NAZE') {
+ releases.push(data[i]);
+ }
+ }
+
+ // reorder the array by time
+ releases.sort(function (a, b) {
+ return b.time - a.time;
+ });
+
+ // reorder the array by release flag TODO needs to be tested
+ releases.sort(function (a, b) {
+ if (a.release < b.release) {
+ return 1;
+ } else {
+ return 0;
+ }
+ });
+
+ // populate select
+ for (var i = 0; i < releases.length; i++) {
+ d = new Date(releases[i].time * 1000);
+ date = ('0' + (d.getMonth() + 1)).slice(-2) + '.' + ('0' + (d.getDate())).slice(-2) + '.' + d.getFullYear();
+ date += ' - ' + ('0' + d.getHours()).slice(-2) + ':' + ('0' + d.getMinutes()).slice(-2);
+
+ var element = $('').data('obj', releases[i]);
+ releases_e.append(element);
+ }
+
+ // bind events
+ $('select[name="release"]').change(function() {
+ // hide github info (if it exists)
+ $('div.git_info').slideUp();
+ });
+ }).fail(function () {
+ // Failed to load release list, offline?
+ });
+
// UI Hooks
$('a.load_file').click(function () {
chrome.fileSystem.chooseEntry({type: 'openFile', accepts: [{extensions: ['hex']}]}, function (fileEntry) {
@@ -83,7 +129,7 @@ TABS.firmware_flasher.initialize = function (callback) {
});
$('a.load_remote_file').click(function () {
- function process_hex(data, development) {
+ function process_hex(data, obj) {
intel_hex = data;
parse_hex(intel_hex, function (data) {
@@ -97,14 +143,8 @@ TABS.firmware_flasher.initialize = function (callback) {
$('a.flash_firmware').removeClass('locked');
- if (!development) {
- url = 'https://api.github.com/repos/multiwii/baseflight/commits?page=1&per_page=1&path=obj/baseflight.hex';
- } else {
- url = 'https://api.github.com/repos/multiwii/baseflight/commits/' + development.commit;
- }
-
- $.get(url, function (data) {
- var data = (development) ? data : data[0],
+ $.get('https://api.github.com/repos/multiwii/baseflight/commits/' + obj.commit, function (data) {
+ var data = data,
d = new Date(data.commit.author.date),
offset = d.getTimezoneOffset() / 60,
date;
@@ -115,6 +155,7 @@ TABS.firmware_flasher.initialize = function (callback) {
$('div.git_info .committer').text(data.commit.author.name);
$('div.git_info .date').text(date);
+ $('div.git_info .hash').text(data.sha.slice(-7)).prop('href', 'https://github.com/multiwii/baseflight/commit/' + data.sha);
$('div.git_info .message').text(data.commit.message);
$('div.git_info').slideDown();
@@ -130,40 +171,10 @@ TABS.firmware_flasher.initialize = function (callback) {
$('a.flash_firmware').addClass('locked');
}
- if (!$('input.flash_development_firmware').is(':checked')) {
- $.get('https://raw.githubusercontent.com/multiwii/baseflight/master/obj/baseflight.hex', function (data) {
- process_hex(data, false);
- }).fail(failed_to_load);
- } else {
- $.get('http://firmware.baseflight.net/listing.json', function (data) {
- var filter = [],
- time = 0,
- obj = null;
-
- // filter out what we need
- for (var i = 0; i < data.length; i++) {
- if (data[i].target == 'NAZE') {
- filter.push(data[i]);
- }
- }
-
- if (filter.length > 1) {
- for (var i = 0; i < filter.length; i++) {
- if (time < filter[i].time) {
- time = filter[i].time;
- obj = filter[i];
- }
- }
- } else {
- obj = filter[0];
- }
-
- $.get('http://firmware.baseflight.net/' + obj.file, function (data) {
- process_hex(data, obj);
- }).fail(failed_to_load);
-
- }).fail(failed_to_load);
- }
+ var obj = $('select[name="release"] option:selected').data('obj');
+ $.get('http://firmware.baseflight.net/' + obj.file, function (data) {
+ process_hex(data, obj);
+ }).fail(failed_to_load);
});
$('a.flash_firmware').click(function () {
@@ -340,24 +351,6 @@ TABS.firmware_flasher.initialize = function (callback) {
});
});
- chrome.storage.local.get('flash_development_firmware', function (result) {
- if (result.flash_development_firmware) {
- $('input.flash_development_firmware').prop('checked', true);
- } else {
- $('input.flash_development_firmware').prop('checked', false);
- }
-
- // bind UI hook so the status is saved on change
- $('input.flash_development_firmware').change(function () {
- // hide github info (if it exists)
- $('a.flash_firmware').addClass('locked');
- $('div.git_info').slideUp();
- $('span.progressLabel').text(chrome.i18n.getMessage('firmwareFlasherLoadFirmwareFile'));
-
- chrome.storage.local.set({'flash_development_firmware': $(this).is(':checked')});
- });
- });
-
chrome.storage.local.get('flash_slowly', function (result) {
if (result.flash_slowly) {
$('input.flash_slowly').prop('checked', true);