/**
* @author Serge Babayan
* @module views/ProbeDropView
* @requires models/Commands
* @requires util/Bitmask
* @requires util/Logger
* @requires models/TelemetryData
* @requires util/Validator
* @requires util/Template
* @requires electron
* @copyright Waterloo Aerial Robotics Group 2016
* @licence https://raw.githubusercontent.com/UWARG/WARG-Ground-Station/master/LICENSE
* @description View that allows a user to drop and reset the probes on the aircraft
*/
var remote = require('electron').remote;
var Commands = remote.require('./app/models/Commands');
var TelemetryData = remote.require('./app/models/TelemetryData');
var Bitmask = require('../util/Bitmask');
var Logger = remote.require('./app/util/Logger');
var Validator = require('../util/Validator');
var Template = require('../util/Template');
module.exports = function (Marionette) {
return Marionette.ItemView.extend({
template: Template('ProbeDropView'),
className: 'exampleView',
ui: {
probe1_status: '#probe1-status',
probe2_status: '#probe2-status',
probe3_status: '#probe3-status'
},
events: {
'click #drop-probe-1-button': 'dropProbe1',
'click #drop-probe-2-button': 'dropProbe2',
'click #drop-probe-3-button': 'dropProbe3',
'click #reset-probe-1-button': 'resetProbe1',
'click #reset-probe-2-button': 'resetProbe2',
'click #reset-probe-3-button': 'resetProbe3'
},
initialize: function () {
this.data_callback = null;
},
onRender: function () {
this.data_callback = this.dataCallback.bind(this);
TelemetryData.on('data_received', this.data_callback);
},
onBeforeDestroy: function () {
},
dataCallback: function (data) {
if (Validator.isValidNumber(data.probe_status)) {
var status = new Bitmask(Number(data.probe_status));
this.ui.probe1_status.text(status.getBit(0) ? 'Dropped' : 'Not Dropped');
this.ui.probe2_status.text(status.getBit(1) ? 'Dropped' : 'Not Dropped');
this.ui.probe3_status.text(status.getBit(2) ? 'Dropped' : 'Not Dropped');
}
else {
Logger.warn('Invalid value for probe_status received. Value: ' + data.probe_status);
}
},
dropProbe1: function () {
Commands.dropProbe(1);
},
dropProbe2: function () {
Commands.dropProbe(2);
},
dropProbe3: function () {
Commands.dropProbe(3);
},
resetProbe1: function () {
Commands.resetProbe(1);
},
resetProbe2: function () {
Commands.resetProbe(2);
},
resetProbe3: function () {
Commands.resetProbe(3);
}
});
};