1
0
Fork 0
mirror of https://github.com/iNavFlight/inav-configurator.git synced 2025-07-17 21:35:30 +03:00

menu icons

This commit is contained in:
Pawel Spychalski (DzikuVx) 2017-03-05 21:48:17 +01:00
parent 1b0de34a1d
commit 1b4cf23986
4 changed files with 524 additions and 252 deletions

View file

@ -9698,6 +9698,10 @@ var mspHelper = (function (gui) {
break; break;
case MSPCodes.MSP_ALTITUDE: case MSPCodes.MSP_ALTITUDE:
SENSOR_DATA.altitude = parseFloat((data.getInt32(0, true) / 100.0).toFixed(2)); // correct scale factor SENSOR_DATA.altitude = parseFloat((data.getInt32(0, true) / 100.0).toFixed(2)); // correct scale factor
// On 1.6 and above this provides also baro raw altitude
if (semver.gte(CONFIG.flightControllerVersion, "1.6.0")) {
SENSOR_DATA.barometer = parseFloat((data.getInt32(6, true) / 100.0).toFixed(2)); // correct scale factor
}
break; break;
case MSPCodes.MSP_SONAR: case MSPCodes.MSP_SONAR:
SENSOR_DATA.sonar = data.getInt32(0, true); SENSOR_DATA.sonar = data.getInt32(0, true);
@ -9777,7 +9781,6 @@ var mspHelper = (function (gui) {
_3D.deadband3d_high = data.getUint16(offset, true); _3D.deadband3d_high = data.getUint16(offset, true);
offset += 2; offset += 2;
_3D.neutral3d = data.getUint16(offset, true); _3D.neutral3d = data.getUint16(offset, true);
if (semver.lt(CONFIG.apiVersion, "1.17.0")) { if (semver.lt(CONFIG.apiVersion, "1.17.0")) {
offset += 2; offset += 2;
_3D.deadband3d_throttle = data.getUint16(offset, true); _3D.deadband3d_throttle = data.getUint16(offset, true);
@ -9856,6 +9859,9 @@ var mspHelper = (function (gui) {
RC_deadband.deadband = data.getUint8(offset++); RC_deadband.deadband = data.getUint8(offset++);
RC_deadband.yaw_deadband = data.getUint8(offset++); RC_deadband.yaw_deadband = data.getUint8(offset++);
RC_deadband.alt_hold_deadband = data.getUint8(offset++); RC_deadband.alt_hold_deadband = data.getUint8(offset++);
if (semver.gte(CONFIG.apiVersion, "1.24.0")) {
_3D.deadband3d_throttle = data.getUint16(offset, true);
}
break; break;
case MSPCodes.MSP_SENSOR_ALIGNMENT: case MSPCodes.MSP_SENSOR_ALIGNMENT:
SENSOR_ALIGNMENT.align_gyro = data.getUint8(offset++); SENSOR_ALIGNMENT.align_gyro = data.getUint8(offset++);
@ -9938,6 +9944,7 @@ var mspHelper = (function (gui) {
BF_CONFIG.currentoffset = data.getUint16(14, true); BF_CONFIG.currentoffset = data.getUint16(14, true);
break; break;
case MSPCodes.MSP_SET_BF_CONFIG: case MSPCodes.MSP_SET_BF_CONFIG:
console.log('BF_CONFIG saved');
break; break;
case MSPCodes.MSP_SET_REBOOT: case MSPCodes.MSP_SET_REBOOT:
console.log('Reboot request accepted'); console.log('Reboot request accepted');
@ -10693,6 +10700,10 @@ var mspHelper = (function (gui) {
buffer.push(RC_deadband.deadband); buffer.push(RC_deadband.deadband);
buffer.push(RC_deadband.yaw_deadband); buffer.push(RC_deadband.yaw_deadband);
buffer.push(RC_deadband.alt_hold_deadband); buffer.push(RC_deadband.alt_hold_deadband);
if (semver.gte(CONFIG.apiVersion, "1.24.0")) {
buffer.push(lowByte(_3D.deadband3d_throttle));
buffer.push(highByte(_3D.deadband3d_throttle));
}
break; break;
case MSPCodes.MSP_SET_SENSOR_ALIGNMENT: case MSPCodes.MSP_SET_SENSOR_ALIGNMENT:
@ -12149,9 +12160,9 @@ var serial = {
*/ */
getTimeout: function () { getTimeout: function () {
if (serial.bitrate >= 57600) { if (serial.bitrate >= 57600) {
return 1000;
} else {
return 1500; return 1500;
} else {
return 2500;
} }
} }
@ -12921,6 +12932,7 @@ var FC = {
accelerometer: [0, 0, 0], accelerometer: [0, 0, 0],
magnetometer: [0, 0, 0], magnetometer: [0, 0, 0],
altitude: 0, altitude: 0,
barometer: 0,
sonar: 0, sonar: 0,
kinematics: [0.0, 0.0, 0.0], kinematics: [0.0, 0.0, 0.0],
debug: [0, 0, 0, 0] debug: [0, 0, 0, 0]
@ -13122,14 +13134,11 @@ var FC = {
var features = [ var features = [
{bit: 0, group: 'rxMode', mode: 'group', name: 'RX_PPM'}, {bit: 0, group: 'rxMode', mode: 'group', name: 'RX_PPM'},
{bit: 1, group: 'batteryVoltage', name: 'VBAT'}, {bit: 1, group: 'batteryVoltage', name: 'VBAT'},
{bit: 2, group: 'other', name: 'INFLIGHT_ACC_CAL', showNameInTip: true},
{bit: 3, group: 'rxMode', mode: 'group', name: 'RX_SERIAL'}, {bit: 3, group: 'rxMode', mode: 'group', name: 'RX_SERIAL'},
{bit: 4, group: 'esc', name: 'MOTOR_STOP'}, {bit: 4, group: 'esc', name: 'MOTOR_STOP'},
{bit: 5, group: 'other', name: 'SERVO_TILT', showNameInTip: true}, {bit: 5, group: 'other', name: 'SERVO_TILT', showNameInTip: true},
{bit: 6, group: 'other', name: 'SOFTSERIAL', haveTip: true, showNameInTip: true}, {bit: 6, group: 'other', name: 'SOFTSERIAL', haveTip: true, showNameInTip: true},
{bit: 7, group: 'gps', name: 'GPS', haveTip: true}, {bit: 7, group: 'gps', name: 'GPS', haveTip: true},
{bit: 8, group: 'rxFailsafe', name: 'FAILSAFE'},
{bit: 9, group: 'other', name: 'SONAR', showNameInTip: true},
{bit: 10, group: 'other', name: 'TELEMETRY', showNameInTip: true}, {bit: 10, group: 'other', name: 'TELEMETRY', showNameInTip: true},
{bit: 11, group: 'batteryCurrent', name: 'CURRENT_METER'}, {bit: 11, group: 'batteryCurrent', name: 'CURRENT_METER'},
{bit: 12, group: 'other', name: '3D', showNameInTip: true}, {bit: 12, group: 'other', name: '3D', showNameInTip: true},
@ -13142,6 +13151,14 @@ var FC = {
{bit: 20, group: 'other', name: 'CHANNEL_FORWARDING', showNameInTip: true} {bit: 20, group: 'other', name: 'CHANNEL_FORWARDING', showNameInTip: true}
]; ];
if (semver.lt(CONFIG.flightControllerVersion, "1.6.0")) {
features.push(
{bit: 2, group: 'other', name: 'INFLIGHT_ACC_CAL', showNameInTip: true},
{bit: 9, group: 'other', name: 'SONAR', showNameInTip: true},
{bit: 8, group: 'rxFailsafe', name: 'FAILSAFE'}
);
}
if (semver.lt(CONFIG.flightControllerVersion, "1.3.0")) { if (semver.lt(CONFIG.flightControllerVersion, "1.3.0")) {
features.push( features.push(
{bit: 18, group: 'esc', name: 'ONESHOT125', haveTip: true} {bit: 18, group: 'esc', name: 'ONESHOT125', haveTip: true}
@ -13156,7 +13173,10 @@ var FC = {
$('.features.esc-priority').parent().hide(); $('.features.esc-priority').parent().hide();
} }
if (semver.gte(CONFIG.apiVersion, "1.16.0")) { /*
* Transponder disabled until not implemented in firmware
*/
if (false && semver.gte(CONFIG.apiVersion, "1.16.0")) {
features.push( features.push(
{bit: 21, group: 'other', name: 'TRANSPONDER', haveTip: true, showNameInTip: true} {bit: 21, group: 'other', name: 'TRANSPONDER', haveTip: true, showNameInTip: true}
); );
@ -13174,6 +13194,13 @@ var FC = {
{bit: 27, group: 'other', name: 'PWM_SERVO_DRIVER', haveTip: true, showNameInTip: true} {bit: 27, group: 'other', name: 'PWM_SERVO_DRIVER', haveTip: true, showNameInTip: true}
); );
} }
if (semver.gte(CONFIG.flightControllerVersion, '1.5.0')) {
features.push(
{bit: 29, group: 'other', name: 'OSD', haveTip: false, showNameInTip: false}
);
}
return features.reverse(); return features.reverse();
}, },
isFeatureEnabled: function (featureName, features) { isFeatureEnabled: function (featureName, features) {
@ -13299,7 +13326,7 @@ var FC = {
]; ];
}, },
getSerialRxTypes: function () { getSerialRxTypes: function () {
return [ var data = [
'SPEKTRUM1024', 'SPEKTRUM1024',
'SPEKTRUM2048', 'SPEKTRUM2048',
'SBUS', 'SBUS',
@ -13309,6 +13336,13 @@ var FC = {
'XBUS_MODE_B_RJ01', 'XBUS_MODE_B_RJ01',
'IBUS' 'IBUS'
]; ];
if (semver.gte(CONFIG.flightControllerVersion, "1.6.0")) {
data.push('JETI EXBUS');
data.push('TBS Crossfire');
}
return data;
}, },
getNrf24ProtocolTypes: function () { getNrf24ProtocolTypes: function () {
return [ return [
@ -13391,8 +13425,8 @@ var FC = {
50: "50Hz", 50: "50Hz",
60: "60Hz", 60: "60Hz",
100: "100Hz", 100: "100Hz",
200: "200Hz", 160: "160Hz",
400: "400Hz" 330: "330Hz"
}; };
}, },
getAsyncModes: function () { getAsyncModes: function () {
@ -13683,6 +13717,13 @@ var MSP = {
message.onFinish = callback_msp; message.onFinish = callback_msp;
message.onSend = callback_sent; message.onSend = callback_sent;
/*
* In case of MSP_REBOOT special procedure is required
*/
if (code == MSPCodes.MSP_SET_REBOOT || code == MSPCodes.MSP_EEPROM_WRITE) {
message.retryCounter = 10;
}
helper.mspQueue.put(message); helper.mspQueue.put(message);
return true; return true;
@ -15393,6 +15434,10 @@ var BOARD_DEFINITIONS = [
name: "Omnibus F4", name: "Omnibus F4",
identifier: "OBF4", identifier: "OBF4",
vcp: true vcp: true
}, {
name: "Omnibus F4 Pro",
identifier: "OBSD",
vcp: true
} }
]; ];
@ -21435,6 +21480,72 @@ OSD.constants = {
default_position: -1, default_position: -1,
positionable: true, positionable: true,
preview: FONT.symbol(SYM.GPS_SAT) + '14' preview: FONT.symbol(SYM.GPS_SAT) + '14'
},
ROLL_PIDS: {
name: 'ROLL_PIDS',
default_position: -1,
positionable: true,
preview: 'ROL 40 30 23'
},
PITCH_PIDS: {
name: 'PITCH_PIDS',
default_position: -1,
positionable: true,
preview: 'PIT 40 30 23'
},
YAW_PIDS: {
name: 'YAW_PIDS',
default_position: -1,
positionable: true,
preview: 'YAW 85 45 0'
},
POWER: {
name: 'POWER',
default_position: -1,
positionable: true,
preview: '50W'
},
GPS_LON: {
name: 'LONGITUDE',
default_position: -1,
positionable: true,
preview: '14.7652'
},
GPS_LAT: {
name: 'LATITUDE',
default_position: -1,
positionable: true,
preview: '52.9872'
},
HOME_DIR: {
name: 'DIRECTION_TO_HOME',
default_position: -1,
positionable: true,
preview: '165'
},
HOME_DIST: {
name: 'DISTANCE_TO_HOME',
default_position: -1,
positionable: true,
preview: '300m'
},
HEADING: {
name: 'HEADING',
default_position: -1,
positionable: true,
preview: '175'
},
VARIO: {
name: 'VARIO',
default_position: -1,
positionable: true,
preview: '-'
},
VARIO_NUM: {
name: 'VARIO_NUM',
default_position: -1,
positionable: true,
preview: '2'
} }
} }
}; };
@ -21459,7 +21570,22 @@ OSD.chooseFields = function () {
F.GPS_SPEED, F.GPS_SPEED,
F.GPS_SATS, F.GPS_SATS,
F.ALTITUDE F.ALTITUDE
] ];
if (semver.gte(CONFIG.flightControllerVersion, "1.6.0")) {
OSD.constants.DISPLAY_FIELDS.push(F.ROLL_PIDS);
OSD.constants.DISPLAY_FIELDS.push(F.PITCH_PIDS);
OSD.constants.DISPLAY_FIELDS.push(F.YAW_PIDS);
OSD.constants.DISPLAY_FIELDS.push(F.POWER);
OSD.constants.DISPLAY_FIELDS.push(F.GPS_LON);
OSD.constants.DISPLAY_FIELDS.push(F.GPS_LAT);
OSD.constants.DISPLAY_FIELDS.push(F.HOME_DIR);
OSD.constants.DISPLAY_FIELDS.push(F.HOME_DIST);
OSD.constants.DISPLAY_FIELDS.push(F.HEADING);
OSD.constants.DISPLAY_FIELDS.push(F.VARIO);
OSD.constants.DISPLAY_FIELDS.push(F.VARIO_NUM);
}
}; };
@ -22598,21 +22724,34 @@ presets.elementHelper = function (group, field, value) {
}; };
presets.defaultValues = { presets.defaultValues = {
PIDs: [ PIDs: {
mr: [
[40, 30, 23], [40, 30, 23],
[40, 30, 23], [40, 30, 23],
[85, 45, 0], [85, 45, 0],
[50, 0, 0], [50, 0, 0],
[65, 120, 10], [65, 120, 10],
[180, 15, 100], [180, 15, 100],
[10, 5, 8], [0, 0, 0],
[20, 15, 75], [20, 15, 75],
[60, 0, 0], [60, 0, 0],
[100, 50, 10] [100, 50, 10]
], ],
fw: [
[25, 35, 10],
[20, 35, 10],
[50, 45, 0],
[50, 0, 0],
[75, 5, 8],
[0, 0, 0],
[0, 0, 0],
[20, 15, 75],
[60, 0, 0],
[0, 0, 0]
]},
INAV_PID_CONFIG: {"asynchronousMode": "0", "accelerometerTaskFrequency": 500, "attitudeTaskFrequency": 250, "magHoldRateLimit": 90, "magHoldErrorLpfFrequency": 2, "yawJumpPreventionLimit": 200, "gyroscopeLpf": "3", "accSoftLpfHz": 15}, INAV_PID_CONFIG: {"asynchronousMode": "0", "accelerometerTaskFrequency": 500, "attitudeTaskFrequency": 250, "magHoldRateLimit": 90, "magHoldErrorLpfFrequency": 2, "yawJumpPreventionLimit": 200, "gyroscopeLpf": "3", "accSoftLpfHz": 15},
ADVANCED_CONFIG: {"gyroSyncDenominator": 2, "pidProcessDenom": 1, "useUnsyncedPwm": 1, "motorPwmProtocol": 0, "motorPwmRate": 400, "servoPwmRate": 50, "gyroSync": 0}, ADVANCED_CONFIG: {"gyroSyncDenominator": 2, "pidProcessDenom": 1, "useUnsyncedPwm": 1, "motorPwmProtocol": 0, "motorPwmRate": 400, "servoPwmRate": 50, "gyroSync": 0},
RC_tuning: {"RC_RATE": 0, "RC_EXPO": 0, "roll_pitch_rate": 0, "roll_rate": 0, "pitch_rate": 0, "yaw_rate": 0, "dynamic_THR_PID": 0, "throttle_MID": 0, "throttle_EXPO": 0, "dynamic_THR_breakpoint": 0, "RC_YAW_EXPO": 0}, RC_tuning: {"RC_RATE": 1, "RC_EXPO": 0.7, "roll_pitch_rate": 0, "roll_rate": 200, "pitch_rate": 200, "yaw_rate": 200, "dynamic_THR_PID": 0, "throttle_MID": 0.5, "throttle_EXPO": 0, "dynamic_THR_breakpoint": 1500, "RC_YAW_EXPO": 0.2},
PID_ADVANCED: {"rollPitchItermIgnoreRate": 200, "yawItermIgnoreRate": 50, "yawPLimit": 300, "axisAccelerationLimitRollPitch": 0, "axisAccelerationLimitYaw": 1000}, PID_ADVANCED: {"rollPitchItermIgnoreRate": 200, "yawItermIgnoreRate": 50, "yawPLimit": 300, "axisAccelerationLimitRollPitch": 0, "axisAccelerationLimitYaw": 1000},
FILTER_CONFIG: {"gyroSoftLpfHz": 60, "dtermLpfHz": 40, "yawLpfHz": 30, "gyroNotchHz1": 0, "gyroNotchCutoff1": 0, "dtermNotchHz": 0, "dtermNotchCutoff": 0, "gyroNotchHz2": 0, "gyroNotchCutoff2": 0}, FILTER_CONFIG: {"gyroSoftLpfHz": 60, "dtermLpfHz": 40, "yawLpfHz": 30, "gyroNotchHz1": 0, "gyroNotchCutoff1": 0, "dtermNotchHz": 0, "dtermNotchCutoff": 0, "gyroNotchHz2": 0, "gyroNotchCutoff2": 0},
FC_CONFIG: {"loopTime": 2000} FC_CONFIG: {"loopTime": 2000}
@ -22624,6 +22763,15 @@ presets.defaultValues = {
* BF_CONFIG::mixerConfiguration * BF_CONFIG::mixerConfiguration
* *
*/ */
/**
* When defining a preset, following fields are required:
*
* BF_CONFIG::mixerConfiguration
*
* @type {{name: string, description: string, features: string[], applyDefaults: string[], settings: *[], type: string}[]}
*/
presets.presets = [ presets.presets = [
{ {
name: 'Default Preset', name: 'Default Preset',
@ -22677,7 +22825,7 @@ presets.presets = [
}, },
{ {
name: '10" General Purpose', name: '10" General Purpose',
description: "450-600 class general purpose multirotor <br><span>10.kg - 1.4kg weight, 10 inch propellers, <br>F1, F3 or F4 CPU, MPU6000 or MPU6050 gyro, GPS optional.</span>", description: "450-600 class general purpose multirotor <br><span>1.0kg - 1.4kg weight, 10 inch propellers, <br>F1, F3 or F4 CPU, MPU6000 or MPU6050 gyro, GPS optional.</span>",
features: [ features: [
"Asynchronous gyro processing", "Asynchronous gyro processing",
"400dps rates", "400dps rates",
@ -22754,6 +22902,83 @@ presets.presets = [
], ],
type: 'multirotor' type: 'multirotor'
}, },
{
name: '280mm Tricopter',
description: "280mm class tricopter with F3/F4 CPU<br>" +
"<span>Fast digital tail servo</span>",
features: [
"Asynchronous processing",
"Dterm and gyro notch filter",
"Increased LPF cutoff frequencies",
"Improved PID defaults"
],
applyDefaults: ["PIDs", "INAV_PID_CONFIG", "ADVANCED_CONFIG", "RC_tuning", "PID_ADVANCED", "FILTER_CONFIG", "FC_CONFIG"],
settings: [
presets.elementHelper("BF_CONFIG", "mixerConfiguration", 1),
presets.elementHelper("INAV_PID_CONFIG", "asynchronousMode", 1),
presets.elementHelper("FC_CONFIG", "loopTime", 1000),
presets.elementHelper("INAV_PID_CONFIG", "gyroscopeLpf", 0),
presets.elementHelper("ADVANCED_CONFIG", "gyroSync", 1),
presets.elementHelper("ADVANCED_CONFIG", "gyroSyncDenominator", 8),
presets.elementHelper("ADVANCED_CONFIG", "motorPwmProtocol", 0),
presets.elementHelper("ADVANCED_CONFIG", "motorPwmRate", 490),
presets.elementHelper("ADVANCED_CONFIG", "servoPwmRate", 300),
presets.elementHelper("FILTER_CONFIG", "gyroSoftLpfHz", 90),
presets.elementHelper("FILTER_CONFIG", "dtermLpfHz", 80),
presets.elementHelper("RC_tuning", "roll_rate", 700),
presets.elementHelper("RC_tuning", "pitch_rate", 550),
presets.elementHelper("RC_tuning", "yaw_rate", 250),
presets.elementHelper("RC_tuning", "dynamic_THR_PID", 20),
presets.elementHelper("RC_tuning", "dynamic_THR_breakpoint", 1650),
presets.elementHelper("FILTER_CONFIG", "dtermNotchHz", 260),
presets.elementHelper("FILTER_CONFIG", "dtermNotchCutoff", 160),
presets.elementHelper("FILTER_CONFIG", "gyroNotchHz1", 400),
presets.elementHelper("FILTER_CONFIG", "gyroNotchCutoff1", 300),
presets.elementHelper("FILTER_CONFIG", "gyroNotchHz2", 200),
presets.elementHelper("FILTER_CONFIG", "gyroNotchCutoff2", 100),
presets.elementHelper("PIDs", 0, [55, 40, 15]), //ROLL PIDs
presets.elementHelper("PIDs", 1, [55, 40, 15]), //PITCH PIDs
presets.elementHelper("PIDs", 2, [90, 20, 0]) //YAW PIDs
],
type: 'multirotor'
},
{
name: '600mm Tricopter',
description: "600mm class tricopter with F3/F4 CPU<br>" +
"<span>Fast digital tail servo</span>",
features: [
"Asynchronous processing",
"Dterm and gyro notch filter",
"GPS ready",
"Improved PID defaults"
],
applyDefaults: ["PIDs", "INAV_PID_CONFIG", "ADVANCED_CONFIG", "RC_tuning", "PID_ADVANCED", "FILTER_CONFIG", "FC_CONFIG"],
settings: [
presets.elementHelper("BF_CONFIG", "mixerConfiguration", 1),
presets.elementHelper("FC_CONFIG", "loopTime", 1000),
presets.elementHelper("INAV_PID_CONFIG", "gyroscopeLpf", 0),
presets.elementHelper("ADVANCED_CONFIG", "gyroSync", 1),
presets.elementHelper("ADVANCED_CONFIG", "gyroSyncDenominator", 8),
presets.elementHelper("ADVANCED_CONFIG", "motorPwmProtocol", 1),
presets.elementHelper("ADVANCED_CONFIG", "motorPwmRate", 2000),
presets.elementHelper("ADVANCED_CONFIG", "servoPwmRate", 160),
presets.elementHelper("FILTER_CONFIG", "gyroSoftLpfHz", 70),
presets.elementHelper("RC_tuning", "roll_rate", 550),
presets.elementHelper("RC_tuning", "pitch_rate", 480),
presets.elementHelper("RC_tuning", "dynamic_THR_PID", 20),
presets.elementHelper("RC_tuning", "dynamic_THR_breakpoint", 1650),
presets.elementHelper("FILTER_CONFIG", "dtermNotchHz", 125),
presets.elementHelper("FILTER_CONFIG", "dtermNotchCutoff", 90),
presets.elementHelper("FILTER_CONFIG", "gyroNotchHz1", 170),
presets.elementHelper("FILTER_CONFIG", "gyroNotchCutoff1", 125),
presets.elementHelper("FILTER_CONFIG", "gyroNotchHz2", 85),
presets.elementHelper("FILTER_CONFIG", "gyroNotchCutoff2", 43),
presets.elementHelper("PIDs", 0, [110, 20, 52]), //ROLL PIDs
presets.elementHelper("PIDs", 1, [110, 20, 52]), //PITCH PIDs
presets.elementHelper("PIDs", 2, [75, 20, 0]) //YAW PIDs
],
type: 'multirotor'
},
{ {
name: "Airplane General", name: "Airplane General",
description: "General setup for airplanes", description: "General setup for airplanes",
@ -22796,6 +23021,30 @@ presets.presets = [
presets.elementHelper("INAV_PID_CONFIG", "gyroscopeLpf", 1) presets.elementHelper("INAV_PID_CONFIG", "gyroscopeLpf", 1)
], ],
type: 'flyingwing' type: 'flyingwing'
},
{
name: "Flying wing Z84",
description: "Small flying wing on multirotor racer parts<br>" +
"<span>300g-500g weight, 3S-4S battery</span>",
features: [
"Adjusted gyro filtering",
"Adjusted PIDs",
"Adjusted rates"
],
applyDefaults: ["PIDs", "INAV_PID_CONFIG", "ADVANCED_CONFIG", "RC_tuning", "PID_ADVANCED", "FILTER_CONFIG", "FC_CONFIG"],
settings: [
presets.elementHelper("BF_CONFIG", "mixerConfiguration", 8),
presets.elementHelper("PIDs", 0, [2, 15, 30]), //ROLL PIDs
presets.elementHelper("PIDs", 1, [2, 15, 70]), //PITCH PIDs
presets.elementHelper("PIDs", 7, [10, 15, 75]), //LEVEL PIDs
presets.elementHelper("RC_tuning", "roll_rate", 350),
presets.elementHelper("RC_tuning", "pitch_rate", 90),
presets.elementHelper("RC_tuning", "dynamic_THR_PID", 33),
presets.elementHelper("RC_tuning", "dynamic_THR_breakpoint", 1300),
presets.elementHelper("ADVANCED_CONFIG", "gyroSync", 1),
presets.elementHelper("INAV_PID_CONFIG", "gyroscopeLpf", 4)
],
type: 'flyingwing'
} }
]; ];
@ -22806,14 +23055,25 @@ presets.model = (function () {
/** /**
* @param {Array} toApply * @param {Array} toApply
* @param {Object} defaults * @param {Object} defaults
* @param {String} mixerType
*/ */
self.applyDefaults = function (toApply, defaults) { self.applyDefaults = function (toApply, defaults, mixerType) {
for (var settingToApply in toApply) { for (var settingToApply in toApply) {
if (toApply.hasOwnProperty(settingToApply)) { if (toApply.hasOwnProperty(settingToApply)) {
var settingName = toApply[settingToApply], var settingName = toApply[settingToApply],
values;
if (settingName == 'PIDs') {
if (mixerType == 'multirotor') {
values = defaults[settingName]['mr'];
} else {
values = defaults[settingName]['fw'];
}
} else {
values = defaults[settingName]; values = defaults[settingName];
}
for (var key in values) { for (var key in values) {
if (values.hasOwnProperty(key)) { if (values.hasOwnProperty(key)) {
@ -22825,7 +23085,7 @@ presets.model = (function () {
} }
}; };
self.extractPresetNames = function(presets) { self.extractPresetNames = function (presets) {
var retVal = {}; var retVal = {};
@ -22869,6 +23129,7 @@ TABS.profiles.initialize = function (callback, scrollPosition) {
loadChainer.execute(); loadChainer.execute();
saveChainer.setChain([ saveChainer.setChain([
mspHelper.saveBfConfig,
mspHelper.saveINAVPidConfig, mspHelper.saveINAVPidConfig,
mspHelper.saveLooptimeConfig, mspHelper.saveLooptimeConfig,
mspHelper.saveAdvancedConfig, mspHelper.saveAdvancedConfig,
@ -22876,7 +23137,6 @@ TABS.profiles.initialize = function (callback, scrollPosition) {
mspHelper.savePidData, mspHelper.savePidData,
mspHelper.saveRcTuningData, mspHelper.saveRcTuningData,
mspHelper.savePidAdvanced, mspHelper.savePidAdvanced,
mspHelper.saveBfConfig,
mspHelper.saveToEeprom mspHelper.saveToEeprom
]); ]);
saveChainer.setExitPoint(reboot); saveChainer.setExitPoint(reboot);
@ -22901,7 +23161,7 @@ TABS.profiles.initialize = function (callback, scrollPosition) {
function applyAndSave() { function applyAndSave() {
presets.model.applyDefaults(currentPreset.applyDefaults, presets.defaultValues); presets.model.applyDefaults(currentPreset.applyDefaults, presets.defaultValues, currentPreset.type);
var setting; var setting;
@ -22945,8 +23205,10 @@ TABS.profiles.initialize = function (callback, scrollPosition) {
var presetsList = presets.model.extractPresetNames(presets.presets); var presetsList = presets.model.extractPresetNames(presets.presets);
for(var preset in presetsList) { for (var preset in presetsList) {
$presetList.append( '<li class="preset__element-wrapper"><a href="#" class="preset__element-link" data-val="' + preset + '">' + presetsList[preset] + '</a></li>'); if (presetsList.hasOwnProperty(preset)) {
$presetList.append('<li class="preset__element-wrapper"><a href="#" class="preset__element-link" data-val="' + preset + '">' + presetsList[preset] + '</a></li>');
}
} }
$('.preset__element-link').click(function () { $('.preset__element-link').click(function () {
@ -23033,7 +23295,6 @@ TABS.receiver.initialize = function (callback) {
$('.tunings .throttle input[name="mid"]').val(RC_tuning.throttle_MID.toFixed(2)); $('.tunings .throttle input[name="mid"]').val(RC_tuning.throttle_MID.toFixed(2));
$('.tunings .throttle input[name="expo"]').val(RC_tuning.throttle_EXPO.toFixed(2)); $('.tunings .throttle input[name="expo"]').val(RC_tuning.throttle_EXPO.toFixed(2));
$('.tunings .rate input[name="rate"]').val(RC_tuning.RC_RATE.toFixed(2));
$('.tunings .rate input[name="expo"]').val(RC_tuning.RC_EXPO.toFixed(2)); $('.tunings .rate input[name="expo"]').val(RC_tuning.RC_EXPO.toFixed(2));
$('.tunings .yaw_rate input[name="yaw_expo"]').val(RC_tuning.RC_YAW_EXPO.toFixed(2)); $('.tunings .yaw_rate input[name="yaw_expo"]').val(RC_tuning.RC_YAW_EXPO.toFixed(2));
@ -23217,31 +23478,24 @@ TABS.receiver.initialize = function (callback) {
$('.tunings .rate input').on('input change', function () { $('.tunings .rate input').on('input change', function () {
setTimeout(function () { // let global validation trigger and adjust the values first setTimeout(function () { // let global validation trigger and adjust the values first
var rateE = $('.tunings .rate input[name="rate"]'), var expoE = $('.tunings .rate input[name="expo"]'),
expoE = $('.tunings .rate input[name="expo"]'),
rate = parseFloat(rateE.val()),
expo = parseFloat(expoE.val()), expo = parseFloat(expoE.val()),
pitch_roll_curve = $('.pitch_roll_curve canvas').get(0), pitch_roll_curve = $('.pitch_roll_curve canvas').get(0),
context = pitch_roll_curve.getContext("2d"); context = pitch_roll_curve.getContext("2d");
// local validation to deal with input event // local validation to deal with input event
if (rate >= parseFloat(rateE.prop('min')) && if (expo >= parseFloat(expoE.prop('min')) &&
rate <= parseFloat(rateE.prop('max')) &&
expo >= parseFloat(expoE.prop('min')) &&
expo <= parseFloat(expoE.prop('max'))) { expo <= parseFloat(expoE.prop('max'))) {
// continue // continue
} else { } else {
return; return;
} }
// math magic by englishman
var ratey = rateHeight * rate;
// draw // draw
context.clearRect(0, 0, 200, rateHeight); context.clearRect(0, 0, 200, rateHeight);
context.beginPath(); context.beginPath();
context.moveTo(0, rateHeight); context.moveTo(0, rateHeight);
context.quadraticCurveTo(110, rateHeight - ((ratey / 2) * (1 - expo)), 200, rateHeight - ratey); context.quadraticCurveTo(110, rateHeight - ((rateHeight / 2) * (1 - expo)), 200, 0);
context.lineWidth = 2; context.lineWidth = 2;
context.strokeStyle = '#37a8db'; context.strokeStyle = '#37a8db';
context.stroke(); context.stroke();
@ -23256,7 +23510,6 @@ TABS.receiver.initialize = function (callback) {
$('.tunings .throttle input[name="mid"]').val(RC_tuning.throttle_MID.toFixed(2)); $('.tunings .throttle input[name="mid"]').val(RC_tuning.throttle_MID.toFixed(2));
$('.tunings .throttle input[name="expo"]').val(RC_tuning.throttle_EXPO.toFixed(2)); $('.tunings .throttle input[name="expo"]').val(RC_tuning.throttle_EXPO.toFixed(2));
$('.tunings .rate input[name="rate"]').val(RC_tuning.RC_RATE.toFixed(2));
$('.tunings .rate input[name="expo"]').val(RC_tuning.RC_EXPO.toFixed(2)); $('.tunings .rate input[name="expo"]').val(RC_tuning.RC_EXPO.toFixed(2));
// update visual representation // update visual representation
@ -23270,7 +23523,6 @@ TABS.receiver.initialize = function (callback) {
RC_tuning.throttle_MID = parseFloat($('.tunings .throttle input[name="mid"]').val()); RC_tuning.throttle_MID = parseFloat($('.tunings .throttle input[name="mid"]').val());
RC_tuning.throttle_EXPO = parseFloat($('.tunings .throttle input[name="expo"]').val()); RC_tuning.throttle_EXPO = parseFloat($('.tunings .throttle input[name="expo"]').val());
RC_tuning.RC_RATE = parseFloat($('.tunings .rate input[name="rate"]').val());
RC_tuning.RC_EXPO = parseFloat($('.tunings .rate input[name="expo"]').val()); RC_tuning.RC_EXPO = parseFloat($('.tunings .rate input[name="expo"]').val());
RC_tuning.RC_YAW_EXPO = parseFloat($('.tunings .yaw_rate input[name="yaw_expo"]').val()); RC_tuning.RC_YAW_EXPO = parseFloat($('.tunings .yaw_rate input[name="yaw_expo"]').val());
@ -23809,11 +24061,11 @@ TABS.sensors.initialize = function (callback) {
} }
} }
function plot_baro(enable) { function plot_altitude(enable) {
if (enable) { if (enable) {
$('.wrapper.baro').show(); $('.wrapper.altitude').show();
} else { } else {
$('.wrapper.baro').hide(); $('.wrapper.altitude').hide();
} }
} }
@ -23839,9 +24091,6 @@ TABS.sensors.initialize = function (callback) {
// disable graphs for sensors that are missing // disable graphs for sensors that are missing
var checkboxes = $('.tab-sensors .info .checkboxes input'); var checkboxes = $('.tab-sensors .info .checkboxes input');
if (!bit_check(CONFIG.activeSensors, 1)) { // baro
checkboxes.eq(3).prop('disabled', true);
}
if (!bit_check(CONFIG.activeSensors, 2)) { // mag if (!bit_check(CONFIG.activeSensors, 2)) { // mag
checkboxes.eq(2).prop('disabled', true); checkboxes.eq(2).prop('disabled', true);
} }
@ -23864,7 +24113,7 @@ TABS.sensors.initialize = function (callback) {
plot_mag(enable); plot_mag(enable);
break; break;
case 3: case 3:
plot_baro(enable); plot_altitude(enable);
break; break;
case 4: case 4:
plot_sonar(enable); plot_sonar(enable);
@ -23902,13 +24151,13 @@ TABS.sensors.initialize = function (callback) {
var samples_gyro_i = 0, var samples_gyro_i = 0,
samples_accel_i = 0, samples_accel_i = 0,
samples_mag_i = 0, samples_mag_i = 0,
samples_baro_i = 0, samples_altitude_i = 0,
samples_sonar_i = 0, samples_sonar_i = 0,
samples_debug_i = 0, samples_debug_i = 0,
gyro_data = initDataArray(3), gyro_data = initDataArray(3),
accel_data = initDataArray(3), accel_data = initDataArray(3),
mag_data = initDataArray(3), mag_data = initDataArray(3),
baro_data = initDataArray(1), altitude_data = (semver.gte(CONFIG.flightControllerVersion, "1.6.0")) ? initDataArray(2) : initDataArray(1),
sonar_data = initDataArray(1), sonar_data = initDataArray(1),
debug_data = [ debug_data = [
initDataArray(1), initDataArray(1),
@ -23920,7 +24169,7 @@ TABS.sensors.initialize = function (callback) {
var gyroHelpers = initGraphHelpers('#gyro', samples_gyro_i, [-2000, 2000]); var gyroHelpers = initGraphHelpers('#gyro', samples_gyro_i, [-2000, 2000]);
var accelHelpers = initGraphHelpers('#accel', samples_accel_i, [-2, 2]); var accelHelpers = initGraphHelpers('#accel', samples_accel_i, [-2, 2]);
var magHelpers = initGraphHelpers('#mag', samples_mag_i, [-1, 1]); var magHelpers = initGraphHelpers('#mag', samples_mag_i, [-1, 1]);
var baroHelpers = initGraphHelpers('#baro', samples_baro_i); var altitudeHelpers = initGraphHelpers('#altitude', samples_altitude_i);
var sonarHelpers = initGraphHelpers('#sonar', samples_sonar_i); var sonarHelpers = initGraphHelpers('#sonar', samples_sonar_i);
var debugHelpers = [ var debugHelpers = [
initGraphHelpers('#debug1', samples_debug_i), initGraphHelpers('#debug1', samples_debug_i),
@ -24105,11 +24354,17 @@ TABS.sensors.initialize = function (callback) {
} }
function update_altitude_graph() { function update_altitude_graph() {
updateGraphHelperSize(baroHelpers); updateGraphHelperSize(altitudeHelpers);
samples_baro_i = addSampleToData(baro_data, samples_baro_i, [SENSOR_DATA.altitude]); if (semver.gte(CONFIG.flightControllerVersion, "1.6.0")) {
drawGraph(baroHelpers, baro_data, samples_baro_i); samples_altitude_i = addSampleToData(altitude_data, samples_altitude_i, [SENSOR_DATA.altitude, SENSOR_DATA.barometer]);
}
else {
samples_altitude_i = addSampleToData(altitude_data, samples_altitude_i, [SENSOR_DATA.altitude]);
}
drawGraph(altitudeHelpers, altitude_data, samples_altitude_i);
raw_data_text_ements.x[3].text(SENSOR_DATA.altitude.toFixed(2)); raw_data_text_ements.x[3].text(SENSOR_DATA.altitude.toFixed(2));
raw_data_text_ements.y[3].text(SENSOR_DATA.barometer.toFixed(2));
} }
function update_sonar_graphs() { function update_sonar_graphs() {
@ -25029,6 +25284,23 @@ helper.mspQueue = (function (serial, MSP) {
privateScope.lockMethod = 'soft'; privateScope.lockMethod = 'soft';
privateScope.queueLocked = false;
/**
* Method locks queue
* All future put requests will be rejected
*/
publicScope.lock = function () {
privateScope.queueLocked = true;
};
/**
* Method unlocks queue making it possible to put new requests in it
*/
publicScope.unlock = function () {
privateScope.queueLocked = false;
};
publicScope.setLockMethod = function (method) { publicScope.setLockMethod = function (method) {
privateScope.lockMethod = method; privateScope.lockMethod = method;
}; };
@ -25059,6 +25331,14 @@ helper.mspQueue = (function (serial, MSP) {
}; };
privateScope.getTimeout = function (code) {
if (code == MSPCodes.MSP_SET_REBOOT || code == MSPCodes.MSP_EEPROM_WRITE) {
return 5000;
} else {
return serial.getTimeout();
}
};
/** /**
* This method is periodically executed and moves MSP request * This method is periodically executed and moves MSP request
* from a queue to serial port. This allows to throttle requests, * from a queue to serial port. This allows to throttle requests,
@ -25116,7 +25396,7 @@ helper.mspQueue = (function (serial, MSP) {
publicScope.put(request); publicScope.put(request);
} }
}, serial.getTimeout()); }, privateScope.getTimeout(request.code));
if (request.sentOn === null) { if (request.sentOn === null) {
request.sentOn = new Date().getTime(); request.sentOn = new Date().getTime();
@ -25154,8 +25434,19 @@ helper.mspQueue = (function (serial, MSP) {
privateScope.queue = []; privateScope.queue = [];
}; };
/**
* Method puts new request into queue
* @param {MspMessageClass} mspRequest
* @returns {boolean} true on success, false when queue is locked
*/
publicScope.put = function (mspRequest) { publicScope.put = function (mspRequest) {
if (privateScope.queueLocked === true) {
return false;
}
privateScope.queue.push(mspRequest); privateScope.queue.push(mspRequest);
return true;
}; };
publicScope.getLength = function () { publicScope.getLength = function () {

View file

@ -45,14 +45,14 @@ a.disabled {
height: 14px; height: 14px;
width: 14px; width: 14px;
opacity: 0.2; opacity: 0.2;
background: url(images/icons/cf_icon_info_grey.svg) center; background: url("../images/icons/cf_icon_info_grey.svg") center;
background-size: contain; background-size: contain;
transition: none; transition: none;
} }
.helpicon:hover { .helpicon:hover {
opacity: 0.9; opacity: 0.9;
background-image: url(images/icons/cf_icon_info_green.svg); background-image: url("../images/icons/cf_icon_info_green.svg");
transition: none; transition: none;
} }
@ -501,7 +501,7 @@ input[type="number"]::-webkit-inner-spin-button {
top: 113px; top: 113px;
height: 27px; height: 27px;
width: 27px; width: 27px;
background: url(images/icons/scroll.svg) no-repeat; background: url("../images/icons/scroll.svg") no-repeat;
background-size: 100%; background-size: 100%;
opacity: 0.0; opacity: 0.0;
transition: all ease 0.3s; transition: all ease 0.3s;
@ -639,292 +639,292 @@ input[type="number"]::-webkit-inner-spin-button {
/* Tab-Icons */ /* Tab-Icons */
.ic_setup { .ic_setup {
background-image: url(images/icons/cf_icon_setup_grey.svg); background-image: url("../images/icons/cf_icon_setup_grey.svg");
} }
.ic_setup:hover { .ic_setup:hover {
background-image: url(images/icons/cf_icon_setup_white.svg); background-image: url("../images/icons/cf_icon_setup_white.svg");
} }
li.active .ic_setup { li.active .ic_setup {
background-image: url(images/icons/cf_icon_setup_white.svg); background-image: url("../images/icons/cf_icon_setup_white.svg");
} }
.ic_ports { .ic_ports {
background-image: url(images/icons/cf_icon_ports_grey.svg); background-image: url("../images/icons/cf_icon_ports_grey.svg");
} }
.ic_ports:hover { .ic_ports:hover {
background-image: url(images/icons/cf_icon_ports_white.svg); background-image: url("../images/icons/cf_icon_ports_white.svg");
} }
li.active .ic_ports { li.active .ic_ports {
background-image: url(images/icons/cf_icon_ports_white.svg); background-image: url("../images/icons/cf_icon_ports_white.svg");
} }
.ic_config { .ic_config {
background-image: url(images/icons/cf_icon_config_grey.svg); background-image: url("../images/icons/cf_icon_config_grey.svg");
} }
.ic_config:hover { .ic_config:hover {
background-image: url(images/icons/cf_icon_config_white.svg); background-image: url("../images/icons/cf_icon_config_white.svg");
} }
li.active .ic_config { li.active .ic_config {
background-image: url(images/icons/cf_icon_config_white.svg); background-image: url("../images/icons/cf_icon_config_white.svg");
} }
.ic_pid { .ic_pid {
background-image: url(images/icons/cf_icon_pid_grey.svg); background-image: url("../images/icons/cf_icon_pid_grey.svg");
} }
.ic_pid:hover { .ic_pid:hover {
background-image: url(images/icons/cf_icon_pid_white.svg); background-image: url("../images/icons/cf_icon_pid_white.svg");
} }
li.active .ic_pid { li.active .ic_pid {
background-image: url(images/icons/cf_icon_pid_white.svg); background-image: url("../images/icons/cf_icon_pid_white.svg");
} }
.ic_rx { .ic_rx {
background-image: url(images/icons/cf_icon_rx_grey.svg); background-image: url("../images/icons/cf_icon_rx_grey.svg");
} }
.ic_rx:hover { .ic_rx:hover {
background-image: url(images/icons/cf_icon_rx_white.svg); background-image: url("../images/icons/cf_icon_rx_white.svg");
} }
li.active .ic_rx { li.active .ic_rx {
background-image: url(images/icons/cf_icon_rx_white.svg); background-image: url("../images/icons/cf_icon_rx_white.svg");
} }
.ic_modes { .ic_modes {
background-image: url(images/icons/cf_icon_modes_grey.svg); background-image: url("../images/icons/cf_icon_modes_grey.svg");
} }
.ic_modes:hover { .ic_modes:hover {
background-image: url(images/icons/cf_icon_modes_white.svg); background-image: url("../images/icons/cf_icon_modes_white.svg");
} }
li.active .ic_modes { li.active .ic_modes {
background-image: url(images/icons/cf_icon_modes_white.svg); background-image: url("../images/icons/cf_icon_modes_white.svg");
} }
.ic_adjust { .ic_adjust {
background-image: url(images/icons/cf_icon_adjust_grey.svg); background-image: url("../images/icons/cf_icon_adjust_grey.svg");
} }
.ic_adjust:hover { .ic_adjust:hover {
background-image: url(images/icons/cf_icon_adjust_white.svg); background-image: url("../images/icons/cf_icon_adjust_white.svg");
} }
li.active .ic_adjust { li.active .ic_adjust {
background-image: url(images/icons/cf_icon_adjust_white.svg); background-image: url("../images/icons/cf_icon_adjust_white.svg");
} }
.ic_servo { .ic_servo {
background-image: url(images/icons/cf_icon_servo_grey.svg); background-image: url("../images/icons/cf_icon_servo_grey.svg");
} }
.ic_servo:hover { .ic_servo:hover {
background-image: url(images/icons/cf_icon_servo_white.svg); background-image: url("../images/icons/cf_icon_servo_white.svg");
} }
li.active .ic_servo { li.active .ic_servo {
background-image: url(images/icons/cf_icon_servo_white.svg); background-image: url("../images/icons/cf_icon_servo_white.svg");
} }
.ic_gps { .ic_gps {
background-image: url(images/icons/cf_icon_gps_grey.svg); background-image: url("../images/icons/cf_icon_gps_grey.svg");
} }
.ic_gps:hover { .ic_gps:hover {
background-image: url(images/icons/cf_icon_gps_white.svg); background-image: url("../images/icons/cf_icon_gps_white.svg");
} }
li.active .ic_gps { li.active .ic_gps {
background-image: url(images/icons/cf_icon_gps_white.svg); background-image: url("../images/icons/cf_icon_gps_white.svg");
} }
.ic_led { .ic_led {
background-image: url(images/icons/cf_icon_led_grey.svg); background-image: url("../images/icons/cf_icon_led_grey.svg");
} }
.ic_led:hover { .ic_led:hover {
background-image: url(images/icons/cf_icon_led_white.svg); background-image: url("../images/icons/cf_icon_led_white.svg");
} }
li.active .ic_led { li.active .ic_led {
background-image: url(images/icons/cf_icon_led_white.svg); background-image: url("../images/icons/cf_icon_led_white.svg");
} }
.ic_sensors { .ic_sensors {
background-image: url(images/icons/cf_icon_sensors_grey.svg); background-image: url("../images/icons/cf_icon_sensors_grey.svg");
} }
.ic_sensors:hover { .ic_sensors:hover {
background-image: url(images/icons/cf_icon_sensors_white.svg); background-image: url("../images/icons/cf_icon_sensors_white.svg");
} }
li.active .ic_sensors { li.active .ic_sensors {
background-image: url(images/icons/cf_icon_sensors_white.svg); background-image: url("../images/icons/cf_icon_sensors_white.svg");
} }
.ic_log { .ic_log {
background-image: url(images/icons/cf_icon_log_grey.svg); background-image: url("../images/icons/cf_icon_log_grey.svg");
} }
.ic_log:hover { .ic_log:hover {
background-image: url(images/icons/cf_icon_log_white.svg); background-image: url("../images/icons/cf_icon_log_white.svg");
} }
li.active .ic_log { li.active .ic_log {
background-image: url(images/icons/cf_icon_log_white.svg); background-image: url("../images/icons/cf_icon_log_white.svg");
} }
.ic_data { .ic_data {
background-image: url(images/icons/cf_icon_data_grey.svg); background-image: url("../images/icons/cf_icon_data_grey.svg");
} }
.ic_data:hover { .ic_data:hover {
background-image: url(images/icons/cf_icon_data_white.svg); background-image: url("../images/icons/cf_icon_data_white.svg");
} }
li.active .ic_data { li.active .ic_data {
background-image: url(images/icons/cf_icon_data_white.svg); background-image: url("../images/icons/cf_icon_data_white.svg");
} }
.ic_cli { .ic_cli {
background-image: url(images/icons/cf_icon_cli_grey.svg); background-image: url("../images/icons/cf_icon_cli_grey.svg");
} }
.ic_cli:hover { .ic_cli:hover {
background-image: url(images/icons/cf_icon_cli_white.svg); background-image: url("../images/icons/cf_icon_cli_white.svg");
} }
li.active .ic_cli { li.active .ic_cli {
background-image: url(images/icons/cf_icon_cli_white.svg); background-image: url("../images/icons/cf_icon_cli_white.svg");
} }
.ic_motor { .ic_motor {
background-image: url(images/icons/cf_icon_motor_grey.svg); background-image: url("../images/icons/cf_icon_motor_grey.svg");
} }
.ic_motor:hover { .ic_motor:hover {
background-image: url(images/icons/cf_icon_motor_white.svg); background-image: url("../images/icons/cf_icon_motor_white.svg");
} }
li.active .ic_motor { li.active .ic_motor {
background-image: url(images/icons/cf_icon_motor_white.svg); background-image: url("../images/icons/cf_icon_motor_white.svg");
} }
.ic_welcome { .ic_welcome {
background-image: url(images/icons/cf_icon_welcome_grey.svg); background-image: url("../images/icons/cf_icon_welcome_grey.svg");
} }
.ic_welcome:hover { .ic_welcome:hover {
background-image: url(images/icons/cf_icon_welcome_white.svg); background-image: url("../images/icons/cf_icon_welcome_white.svg");
} }
li.active .ic_welcome { li.active .ic_welcome {
background-image: url(images/icons/cf_icon_welcome_white.svg); background-image: url("../images/icons/cf_icon_welcome_white.svg");
} }
.ic_help { .ic_help {
background-image: url(images/icons/cf_icon_help_grey.svg); background-image: url("../images/icons/cf_icon_help_grey.svg");
} }
.ic_help:hover { .ic_help:hover {
background-image: url(images/icons/cf_icon_help_white.svg); background-image: url("../images/icons/cf_icon_help_white.svg");
} }
li.active .ic_help { li.active .ic_help {
background-image: url(images/icons/cf_icon_help_white.svg); background-image: url("../images/icons/cf_icon_help_white.svg");
} }
.ic_flasher { .ic_flasher {
background-image: url(images/icons/cf_icon_flasher_grey.svg); background-image: url("../images/icons/cf_icon_flasher_grey.svg");
} }
.ic_flasher:hover { .ic_flasher:hover {
background-image: url(images/icons/cf_icon_flasher_white.svg); background-image: url("../images/icons/cf_icon_flasher_white.svg");
} }
li.active .ic_flasher { li.active .ic_flasher {
background-image: url(images/icons/cf_icon_flasher_white.svg); background-image: url("../images/icons/cf_icon_flasher_white.svg");
} }
.ic_transponder { .ic_transponder {
background-image: url(images/icons/cf_icon_transponder_grey.svg); background-image: url("../images/icons/cf_icon_transponder_grey.svg");
} }
.ic_transponder:hover { .ic_transponder:hover {
background-image: url(images/icons/cf_icon_transponder_white.svg); background-image: url("../images/icons/cf_icon_transponder_white.svg");
} }
li.active .ic_transponder { li.active .ic_transponder {
background-image: url(images/icons/cf_icon_transponder_white.svg); background-image: url("../images/icons/cf_icon_transponder_white.svg");
} }
/* SPARE Tab-Icons */ /* SPARE Tab-Icons */
.ic_failsafe { .ic_failsafe {
background-image: url(images/icons/cf_icon_failsafe_grey.svg); background-image: url("../images/icons/cf_icon_failsafe_grey.svg");
} }
.ic_failsafe:hover { .ic_failsafe:hover {
background-image: url(images/icons/cf_icon_failsafe_white.svg); background-image: url("../images/icons/cf_icon_failsafe_white.svg");
} }
li.active .ic_failsafe { li.active .ic_failsafe {
background-image: url(images/icons/cf_icon_failsafe_white.svg); background-image: url("../images/icons/cf_icon_failsafe_white.svg");
} }
.ic_backup { .ic_backup {
background-image: url(images/icons/cf_icon_backup_grey.svg); background-image: url("../images/icons/cf_icon_backup_grey.svg");
} }
.ic_backup:hover { .ic_backup:hover {
background-image: url(images/icons/cf_icon_backup_white.svg); background-image: url("../images/icons/cf_icon_backup_white.svg");
} }
li.active .ic_backup { li.active .ic_backup {
background-image: url(images/icons/cf_icon_backup_white.svg); background-image: url("../images/icons/cf_icon_backup_white.svg");
} }
.ic_wizzard { .ic_wizzard {
background-image: url(images/icons/cf_icon_wizard_grey.svg); background-image: url("../images/icons/cf_icon_wizard_grey.svg");
} }
.ic_wizzard:hover { .ic_wizzard:hover {
background-image: url(images/icons/cf_icon_wizard_white.svg); background-image: url("../images/icons/cf_icon_wizard_white.svg");
} }
li.active .ic_wizzard { li.active .ic_wizzard {
background-image: url(images/icons/cf_icon_wizard_white.svg); background-image: url("../images/icons/cf_icon_wizard_white.svg");
} }
.ic_advanced { .ic_advanced {
background-image: url(images/icons/cf_icon_advanced_grey.svg); background-image: url("../images/icons/cf_icon_advanced_grey.svg");
} }
.ic_advanced:hover { .ic_advanced:hover {
background-image: url(images/icons/cf_icon_advanced_white.svg); background-image: url("../images/icons/cf_icon_advanced_white.svg");
} }
li.active .ic_advanced { li.active .ic_advanced {
background-image: url(images/icons/cf_icon_advanced_white.svg); background-image: url("../images/icons/cf_icon_advanced_white.svg");
} }
.ic_mission { .ic_mission {
background-image: url(images/icons/cf_icon_mission_grey.svg); background-image: url("../images/icons/cf_icon_mission_grey.svg");
} }
.ic_mission:hover { .ic_mission:hover {
background-image: url(images/icons/cf_icon_mission_white.svg); background-image: url("../images/icons/cf_icon_mission_white.svg");
} }
li.active .ic_mission { li.active .ic_mission {
background-image: url(images/icons/cf_icon_mission_white.svg); background-image: url("../images/icons/cf_icon_mission_white.svg");
} }
#content { #content {
@ -1411,7 +1411,6 @@ dialog {
.noboarder td { .noboarder td {
border: none; border: none;
border-bottom: none;
} }
.cf_table tr:last-child td { .cf_table tr:last-child td {
@ -1503,7 +1502,7 @@ dialog {
/* fixing padding for all Tabs*/ /* fixing padding for all Tabs*/
.tab-setup, .tab-landing, .tab-adjustments, .tab-auxiliary, .tab-cli, .tab-configuration, .tab-failsafe, .tab-onboard_logging, .tab-setup, .tab-landing, .tab-adjustments, .tab-auxiliary, .tab-cli, .tab-configuration, .tab-failsafe, .tab-onboard_logging,
.tab-firmware_flasher, .tab-gps, .tab-help, .tab-led-strip, .tab-logging, .tab-modes, .tab-motors, .tab-pid_tuning, .tab-firmware_flasher, .tab-gps, .tab-help, .tab-led-strip, .tab-logging, .tab-modes, .tab-motors, .tab-pid_tuning,
.tab-ports, .tab-receiver, .tab-sensors, .tab-servos { .tab-ports, .tab-receiver, .tab-sensors, .tab-servos, .tab-osd {
height: 100%; height: 100%;
position: relative; position: relative;
} }
@ -5198,6 +5197,9 @@ button {
} }
} }
.osd__elements {
margin-bottom: 3em;
}
/*.rate-tpa.rate-tpa--inav input[type="number"],*/ /*.rate-tpa.rate-tpa--inav input[type="number"],*/
.rate-tpa_input { .rate-tpa_input {
margin: 4px; margin: 4px;
@ -5980,7 +5982,7 @@ button {
} }
.tab-receiver .tunings .yaw_rate { .tab-receiver .tunings .yaw_rate {
margin-left: 0px; margin-left: 0;
margin-bottom: 10px; margin-bottom: 10px;
} }
@ -6003,7 +6005,7 @@ button {
.tab-receiver .tunings table th:last-child { .tab-receiver .tunings table th:last-child {
border-top-right-radius: 3px; border-top-right-radius: 3px;
border-right: 0px; border-right: 0;
} }
.tab-receiver .tunings table td { .tab-receiver .tunings table td {
@ -6252,19 +6254,11 @@ button {
fill: #828885; fill: #828885;
font-size: 10px; font-size: 10px;
} }
body {
font-family: 'Segoe UI', Tahoma, sans-serif;
font-size: 12px;
color: #303030;
margin: 10px;
}
.control-gimbals { .control-gimbals {
/* A generous padding around the window edges ensures that we continue to receive mousemove events (since /* A generous padding around the window edges ensures that we continue to receive mousemove events (since
* cursor stays in the window for longer) * cursor stays in the window for longer)
*/ */
padding: 25px; padding: 25px 25px 0;
padding-bottom: 0;
text-align: center; text-align: center;
} }
@ -6355,7 +6349,7 @@ body {
a { a {
text-decoration: none; text-decoration: none;
color: #000; color: #000;
font-family: 'open_sanssemibold', Arial; font-family: 'open_sanssemibold', Arial,serif;
} }
a:hover { a:hover {
@ -6364,23 +6358,21 @@ a:hover {
.button-enable a { .button-enable a {
/* common styles for content toolbar buttons */ /* common styles for content toolbar buttons */
margin-top: 0px; margin-top: 0;
margin-bottom: 0px; margin-bottom: 0;
margin-left: 0px; margin-left: 0;
background-color: #37a8db; background-color: #37a8db;
border-radius: 3px; border-radius: 3px;
border: 1px solid #37a8db; border: 1px solid #37a8db;
color: #fff; color: #fff;
float: left; float: left;
font-family: 'open_sansbold', Arial; font-family: 'open_sansbold', Arial,serif;
font-size: 12px; font-size: 12px;
text-shadow: 0px 1px rgba(0, 0, 0, 0.25); text-shadow: 0 1px rgba(0, 0, 0, 0.25);
display: block; display: block;
cursor: pointer; cursor: pointer;
transition: all ease 0.2s; transition: all ease 0.2s;
padding: 0px; padding: 0 9px;
padding-left: 9px;
padding-right: 9px;
line-height: 28px; line-height: 28px;
} }
@ -6391,7 +6383,7 @@ a:hover {
.button-enable a:active { .button-enable a:active {
background-color: #37a8db; background-color: #37a8db;
transition: all ease 0.0s; transition: all ease 0.0s;
box-shadow: inset 0px 1px 5px rgba(0, 0, 0, 0.35); box-shadow: inset 0 1px 5px rgba(0, 0, 0, 0.35);
} }
.tab-sensors .info { .tab-sensors .info {
margin-bottom: 10px; margin-bottom: 10px;

151
main.css
View file

@ -45,14 +45,14 @@ a.disabled {
height: 14px; height: 14px;
width: 14px; width: 14px;
opacity: 0.2; opacity: 0.2;
background: url(images/icons/cf_icon_info_grey.svg) center; background: url("../images/icons/cf_icon_info_grey.svg") center;
background-size: contain; background-size: contain;
transition: none; transition: none;
} }
.helpicon:hover { .helpicon:hover {
opacity: 0.9; opacity: 0.9;
background-image: url(images/icons/cf_icon_info_green.svg); background-image: url("../images/icons/cf_icon_info_green.svg");
transition: none; transition: none;
} }
@ -501,7 +501,7 @@ input[type="number"]::-webkit-inner-spin-button {
top: 113px; top: 113px;
height: 27px; height: 27px;
width: 27px; width: 27px;
background: url(images/icons/scroll.svg) no-repeat; background: url("../images/icons/scroll.svg") no-repeat;
background-size: 100%; background-size: 100%;
opacity: 0.0; opacity: 0.0;
transition: all ease 0.3s; transition: all ease 0.3s;
@ -639,292 +639,292 @@ input[type="number"]::-webkit-inner-spin-button {
/* Tab-Icons */ /* Tab-Icons */
.ic_setup { .ic_setup {
background-image: url(images/icons/cf_icon_setup_grey.svg); background-image: url("../images/icons/cf_icon_setup_grey.svg");
} }
.ic_setup:hover { .ic_setup:hover {
background-image: url(images/icons/cf_icon_setup_white.svg); background-image: url("../images/icons/cf_icon_setup_white.svg");
} }
li.active .ic_setup { li.active .ic_setup {
background-image: url(images/icons/cf_icon_setup_white.svg); background-image: url("../images/icons/cf_icon_setup_white.svg");
} }
.ic_ports { .ic_ports {
background-image: url(images/icons/cf_icon_ports_grey.svg); background-image: url("../images/icons/cf_icon_ports_grey.svg");
} }
.ic_ports:hover { .ic_ports:hover {
background-image: url(images/icons/cf_icon_ports_white.svg); background-image: url("../images/icons/cf_icon_ports_white.svg");
} }
li.active .ic_ports { li.active .ic_ports {
background-image: url(images/icons/cf_icon_ports_white.svg); background-image: url("../images/icons/cf_icon_ports_white.svg");
} }
.ic_config { .ic_config {
background-image: url(images/icons/cf_icon_config_grey.svg); background-image: url("../images/icons/cf_icon_config_grey.svg");
} }
.ic_config:hover { .ic_config:hover {
background-image: url(images/icons/cf_icon_config_white.svg); background-image: url("../images/icons/cf_icon_config_white.svg");
} }
li.active .ic_config { li.active .ic_config {
background-image: url(images/icons/cf_icon_config_white.svg); background-image: url("../images/icons/cf_icon_config_white.svg");
} }
.ic_pid { .ic_pid {
background-image: url(images/icons/cf_icon_pid_grey.svg); background-image: url("../images/icons/cf_icon_pid_grey.svg");
} }
.ic_pid:hover { .ic_pid:hover {
background-image: url(images/icons/cf_icon_pid_white.svg); background-image: url("../images/icons/cf_icon_pid_white.svg");
} }
li.active .ic_pid { li.active .ic_pid {
background-image: url(images/icons/cf_icon_pid_white.svg); background-image: url("../images/icons/cf_icon_pid_white.svg");
} }
.ic_rx { .ic_rx {
background-image: url(images/icons/cf_icon_rx_grey.svg); background-image: url("../images/icons/cf_icon_rx_grey.svg");
} }
.ic_rx:hover { .ic_rx:hover {
background-image: url(images/icons/cf_icon_rx_white.svg); background-image: url("../images/icons/cf_icon_rx_white.svg");
} }
li.active .ic_rx { li.active .ic_rx {
background-image: url(images/icons/cf_icon_rx_white.svg); background-image: url("../images/icons/cf_icon_rx_white.svg");
} }
.ic_modes { .ic_modes {
background-image: url(images/icons/cf_icon_modes_grey.svg); background-image: url("../images/icons/cf_icon_modes_grey.svg");
} }
.ic_modes:hover { .ic_modes:hover {
background-image: url(images/icons/cf_icon_modes_white.svg); background-image: url("../images/icons/cf_icon_modes_white.svg");
} }
li.active .ic_modes { li.active .ic_modes {
background-image: url(images/icons/cf_icon_modes_white.svg); background-image: url("../images/icons/cf_icon_modes_white.svg");
} }
.ic_adjust { .ic_adjust {
background-image: url(images/icons/cf_icon_adjust_grey.svg); background-image: url("../images/icons/cf_icon_adjust_grey.svg");
} }
.ic_adjust:hover { .ic_adjust:hover {
background-image: url(images/icons/cf_icon_adjust_white.svg); background-image: url("../images/icons/cf_icon_adjust_white.svg");
} }
li.active .ic_adjust { li.active .ic_adjust {
background-image: url(images/icons/cf_icon_adjust_white.svg); background-image: url("../images/icons/cf_icon_adjust_white.svg");
} }
.ic_servo { .ic_servo {
background-image: url(images/icons/cf_icon_servo_grey.svg); background-image: url("../images/icons/cf_icon_servo_grey.svg");
} }
.ic_servo:hover { .ic_servo:hover {
background-image: url(images/icons/cf_icon_servo_white.svg); background-image: url("../images/icons/cf_icon_servo_white.svg");
} }
li.active .ic_servo { li.active .ic_servo {
background-image: url(images/icons/cf_icon_servo_white.svg); background-image: url("../images/icons/cf_icon_servo_white.svg");
} }
.ic_gps { .ic_gps {
background-image: url(images/icons/cf_icon_gps_grey.svg); background-image: url("../images/icons/cf_icon_gps_grey.svg");
} }
.ic_gps:hover { .ic_gps:hover {
background-image: url(images/icons/cf_icon_gps_white.svg); background-image: url("../images/icons/cf_icon_gps_white.svg");
} }
li.active .ic_gps { li.active .ic_gps {
background-image: url(images/icons/cf_icon_gps_white.svg); background-image: url("../images/icons/cf_icon_gps_white.svg");
} }
.ic_led { .ic_led {
background-image: url(images/icons/cf_icon_led_grey.svg); background-image: url("../images/icons/cf_icon_led_grey.svg");
} }
.ic_led:hover { .ic_led:hover {
background-image: url(images/icons/cf_icon_led_white.svg); background-image: url("../images/icons/cf_icon_led_white.svg");
} }
li.active .ic_led { li.active .ic_led {
background-image: url(images/icons/cf_icon_led_white.svg); background-image: url("../images/icons/cf_icon_led_white.svg");
} }
.ic_sensors { .ic_sensors {
background-image: url(images/icons/cf_icon_sensors_grey.svg); background-image: url("../images/icons/cf_icon_sensors_grey.svg");
} }
.ic_sensors:hover { .ic_sensors:hover {
background-image: url(images/icons/cf_icon_sensors_white.svg); background-image: url("../images/icons/cf_icon_sensors_white.svg");
} }
li.active .ic_sensors { li.active .ic_sensors {
background-image: url(images/icons/cf_icon_sensors_white.svg); background-image: url("../images/icons/cf_icon_sensors_white.svg");
} }
.ic_log { .ic_log {
background-image: url(images/icons/cf_icon_log_grey.svg); background-image: url("../images/icons/cf_icon_log_grey.svg");
} }
.ic_log:hover { .ic_log:hover {
background-image: url(images/icons/cf_icon_log_white.svg); background-image: url("../images/icons/cf_icon_log_white.svg");
} }
li.active .ic_log { li.active .ic_log {
background-image: url(images/icons/cf_icon_log_white.svg); background-image: url("../images/icons/cf_icon_log_white.svg");
} }
.ic_data { .ic_data {
background-image: url(images/icons/cf_icon_data_grey.svg); background-image: url("../images/icons/cf_icon_data_grey.svg");
} }
.ic_data:hover { .ic_data:hover {
background-image: url(images/icons/cf_icon_data_white.svg); background-image: url("../images/icons/cf_icon_data_white.svg");
} }
li.active .ic_data { li.active .ic_data {
background-image: url(images/icons/cf_icon_data_white.svg); background-image: url("../images/icons/cf_icon_data_white.svg");
} }
.ic_cli { .ic_cli {
background-image: url(images/icons/cf_icon_cli_grey.svg); background-image: url("../images/icons/cf_icon_cli_grey.svg");
} }
.ic_cli:hover { .ic_cli:hover {
background-image: url(images/icons/cf_icon_cli_white.svg); background-image: url("../images/icons/cf_icon_cli_white.svg");
} }
li.active .ic_cli { li.active .ic_cli {
background-image: url(images/icons/cf_icon_cli_white.svg); background-image: url("../images/icons/cf_icon_cli_white.svg");
} }
.ic_motor { .ic_motor {
background-image: url(images/icons/cf_icon_motor_grey.svg); background-image: url("../images/icons/cf_icon_motor_grey.svg");
} }
.ic_motor:hover { .ic_motor:hover {
background-image: url(images/icons/cf_icon_motor_white.svg); background-image: url("../images/icons/cf_icon_motor_white.svg");
} }
li.active .ic_motor { li.active .ic_motor {
background-image: url(images/icons/cf_icon_motor_white.svg); background-image: url("../images/icons/cf_icon_motor_white.svg");
} }
.ic_welcome { .ic_welcome {
background-image: url(images/icons/cf_icon_welcome_grey.svg); background-image: url("../images/icons/cf_icon_welcome_grey.svg");
} }
.ic_welcome:hover { .ic_welcome:hover {
background-image: url(images/icons/cf_icon_welcome_white.svg); background-image: url("../images/icons/cf_icon_welcome_white.svg");
} }
li.active .ic_welcome { li.active .ic_welcome {
background-image: url(images/icons/cf_icon_welcome_white.svg); background-image: url("../images/icons/cf_icon_welcome_white.svg");
} }
.ic_help { .ic_help {
background-image: url(images/icons/cf_icon_help_grey.svg); background-image: url("../images/icons/cf_icon_help_grey.svg");
} }
.ic_help:hover { .ic_help:hover {
background-image: url(images/icons/cf_icon_help_white.svg); background-image: url("../images/icons/cf_icon_help_white.svg");
} }
li.active .ic_help { li.active .ic_help {
background-image: url(images/icons/cf_icon_help_white.svg); background-image: url("../images/icons/cf_icon_help_white.svg");
} }
.ic_flasher { .ic_flasher {
background-image: url(images/icons/cf_icon_flasher_grey.svg); background-image: url("../images/icons/cf_icon_flasher_grey.svg");
} }
.ic_flasher:hover { .ic_flasher:hover {
background-image: url(images/icons/cf_icon_flasher_white.svg); background-image: url("../images/icons/cf_icon_flasher_white.svg");
} }
li.active .ic_flasher { li.active .ic_flasher {
background-image: url(images/icons/cf_icon_flasher_white.svg); background-image: url("../images/icons/cf_icon_flasher_white.svg");
} }
.ic_transponder { .ic_transponder {
background-image: url(images/icons/cf_icon_transponder_grey.svg); background-image: url("../images/icons/cf_icon_transponder_grey.svg");
} }
.ic_transponder:hover { .ic_transponder:hover {
background-image: url(images/icons/cf_icon_transponder_white.svg); background-image: url("../images/icons/cf_icon_transponder_white.svg");
} }
li.active .ic_transponder { li.active .ic_transponder {
background-image: url(images/icons/cf_icon_transponder_white.svg); background-image: url("../images/icons/cf_icon_transponder_white.svg");
} }
/* SPARE Tab-Icons */ /* SPARE Tab-Icons */
.ic_failsafe { .ic_failsafe {
background-image: url(images/icons/cf_icon_failsafe_grey.svg); background-image: url("../images/icons/cf_icon_failsafe_grey.svg");
} }
.ic_failsafe:hover { .ic_failsafe:hover {
background-image: url(images/icons/cf_icon_failsafe_white.svg); background-image: url("../images/icons/cf_icon_failsafe_white.svg");
} }
li.active .ic_failsafe { li.active .ic_failsafe {
background-image: url(images/icons/cf_icon_failsafe_white.svg); background-image: url("../images/icons/cf_icon_failsafe_white.svg");
} }
.ic_backup { .ic_backup {
background-image: url(images/icons/cf_icon_backup_grey.svg); background-image: url("../images/icons/cf_icon_backup_grey.svg");
} }
.ic_backup:hover { .ic_backup:hover {
background-image: url(images/icons/cf_icon_backup_white.svg); background-image: url("../images/icons/cf_icon_backup_white.svg");
} }
li.active .ic_backup { li.active .ic_backup {
background-image: url(images/icons/cf_icon_backup_white.svg); background-image: url("../images/icons/cf_icon_backup_white.svg");
} }
.ic_wizzard { .ic_wizzard {
background-image: url(images/icons/cf_icon_wizard_grey.svg); background-image: url("../images/icons/cf_icon_wizard_grey.svg");
} }
.ic_wizzard:hover { .ic_wizzard:hover {
background-image: url(images/icons/cf_icon_wizard_white.svg); background-image: url("../images/icons/cf_icon_wizard_white.svg");
} }
li.active .ic_wizzard { li.active .ic_wizzard {
background-image: url(images/icons/cf_icon_wizard_white.svg); background-image: url("../images/icons/cf_icon_wizard_white.svg");
} }
.ic_advanced { .ic_advanced {
background-image: url(images/icons/cf_icon_advanced_grey.svg); background-image: url("../images/icons/cf_icon_advanced_grey.svg");
} }
.ic_advanced:hover { .ic_advanced:hover {
background-image: url(images/icons/cf_icon_advanced_white.svg); background-image: url("../images/icons/cf_icon_advanced_white.svg");
} }
li.active .ic_advanced { li.active .ic_advanced {
background-image: url(images/icons/cf_icon_advanced_white.svg); background-image: url("../images/icons/cf_icon_advanced_white.svg");
} }
.ic_mission { .ic_mission {
background-image: url(images/icons/cf_icon_mission_grey.svg); background-image: url("../images/icons/cf_icon_mission_grey.svg");
} }
.ic_mission:hover { .ic_mission:hover {
background-image: url(images/icons/cf_icon_mission_white.svg); background-image: url("../images/icons/cf_icon_mission_white.svg");
} }
li.active .ic_mission { li.active .ic_mission {
background-image: url(images/icons/cf_icon_mission_white.svg); background-image: url("../images/icons/cf_icon_mission_white.svg");
} }
#content { #content {
@ -1411,7 +1411,6 @@ dialog {
.noboarder td { .noboarder td {
border: none; border: none;
border-bottom: none;
} }
.cf_table tr:last-child td { .cf_table tr:last-child td {

View file

@ -1,16 +1,8 @@
body {
font-family: 'Segoe UI', Tahoma, sans-serif;
font-size: 12px;
color: #303030;
margin: 10px;
}
.control-gimbals { .control-gimbals {
/* A generous padding around the window edges ensures that we continue to receive mousemove events (since /* A generous padding around the window edges ensures that we continue to receive mousemove events (since
* cursor stays in the window for longer) * cursor stays in the window for longer)
*/ */
padding: 25px; padding: 25px 25px 0;
padding-bottom: 0;
text-align: center; text-align: center;
} }
@ -101,7 +93,7 @@ body {
a { a {
text-decoration: none; text-decoration: none;
color: #000; color: #000;
font-family: 'open_sanssemibold', Arial; font-family: 'open_sanssemibold', Arial,serif;
} }
a:hover { a:hover {
@ -110,23 +102,21 @@ a:hover {
.button-enable a { .button-enable a {
/* common styles for content toolbar buttons */ /* common styles for content toolbar buttons */
margin-top: 0px; margin-top: 0;
margin-bottom: 0px; margin-bottom: 0;
margin-left: 0px; margin-left: 0;
background-color: #37a8db; background-color: #37a8db;
border-radius: 3px; border-radius: 3px;
border: 1px solid #37a8db; border: 1px solid #37a8db;
color: #fff; color: #fff;
float: left; float: left;
font-family: 'open_sansbold', Arial; font-family: 'open_sansbold', Arial,serif;
font-size: 12px; font-size: 12px;
text-shadow: 0px 1px rgba(0, 0, 0, 0.25); text-shadow: 0 1px rgba(0, 0, 0, 0.25);
display: block; display: block;
cursor: pointer; cursor: pointer;
transition: all ease 0.2s; transition: all ease 0.2s;
padding: 0px; padding: 0 9px;
padding-left: 9px;
padding-right: 9px;
line-height: 28px; line-height: 28px;
} }
@ -137,5 +127,5 @@ a:hover {
.button-enable a:active { .button-enable a:active {
background-color: #37a8db; background-color: #37a8db;
transition: all ease 0.0s; transition: all ease 0.0s;
box-shadow: inset 0px 1px 5px rgba(0, 0, 0, 0.35); box-shadow: inset 0 1px 5px rgba(0, 0, 0, 0.35);
} }