tune dashboard layout

This commit is contained in:
andreas 2021-11-10 16:28:55 +01:00
parent 48c57a1610
commit b02290d4d6
2 changed files with 50 additions and 3 deletions

View File

@ -184,6 +184,7 @@ body{
margin: 0; margin: 0;
box-sizing: border-box; box-sizing: border-box;
font-size: 1.2em; font-size: 1.2em;
justify-content: space-between;
} }
div#dashboardPage { div#dashboardPage {
display: flex; display: flex;
@ -197,7 +198,12 @@ body{
.dashValue{ .dashValue{
font-size: 1.6em; font-size: 1.6em;
text-align: center; text-align: center;
flex: 1; }
.dashValue.formatLatitude {
font-size: 1.1em;
}
.dashValue.formatLongitude {
font-size: 1.1em;
} }
.footer { .footer {
display: flex; display: flex;

View File

@ -428,6 +428,44 @@ function handleTab(el) {
el.classList.add('active'); el.classList.add('active');
activeTab.classList.remove('hidden'); activeTab.classList.remove('hidden');
} }
/**
*
* @param {number} coordinate
* @param axis
* @returns {string}
*/
function formatLonLatsDecimal(coordinate,axis){
coordinate = (coordinate+540)%360 - 180; // normalize for sphere being round
let abscoordinate = Math.abs(coordinate);
let coordinatedegrees = Math.floor(abscoordinate);
let coordinateminutes = (abscoordinate - coordinatedegrees)/(1/60);
let numdecimal=2;
//correctly handle the toFixed(x) - will do math rounding
if (coordinateminutes.toFixed(numdecimal) == 60){
coordinatedegrees+=1;
coordinateminutes=0;
}
if( coordinatedegrees < 10 ) {
coordinatedegrees = "0" + coordinatedegrees;
}
if (coordinatedegrees < 100 && axis == 'lon'){
coordinatedegrees = "0" + coordinatedegrees;
}
let str = coordinatedegrees + "\u00B0";
if( coordinateminutes < 10 ) {
str +="0";
}
str += coordinateminutes.toFixed(numdecimal) + "'";
if (axis == "lon") {
str += coordinate < 0 ? "W" :"E";
} else {
str += coordinate < 0 ? "S" :"N";
}
return str;
};
let valueFormatters = { let valueFormatters = {
formatCourse: { formatCourse: {
f: function (v) { f: function (v) {
@ -489,14 +527,16 @@ let valueFormatters = {
formatLatitude: { formatLatitude: {
f: function (v) { f: function (v) {
let x = parseFloat(v); let x = parseFloat(v);
return x.toFixed(4); if (isNaN(x)) return '-----';
return formatLonLatsDecimal(x,'lat');
}, },
u: '°' u: '°'
}, },
formatLongitude: { formatLongitude: {
f: function (v) { f: function (v) {
let x = parseFloat(v); let x = parseFloat(v);
return x.toFixed(4); if (isNaN(x)) return '-----';
return formatLonLatsDecimal(x,'lon');
}, },
u: '' u: ''
}, },
@ -507,6 +547,7 @@ function createDashboardItem(name, def, parent) {
let value = addEl('span', 'dashValue', frame); let value = addEl('span', 'dashValue', frame);
value.setAttribute('id', 'data_' + name); value.setAttribute('id', 'data_' + name);
let fmt=valueFormatters[def.format]; let fmt=valueFormatters[def.format];
if (def.format) value.classList.add(def.format);
let footer = addEl('div','footer',frame); let footer = addEl('div','footer',frame);
let src= addEl('span','source',footer); let src= addEl('span','source',footer);
src.setAttribute('id','source_'+name); src.setAttribute('id','source_'+name);