Cloudlog/assets/js/sections/distances.js

178 wiersze
4.0 KiB
JavaScript

$('#distplot_bands').change(function(){
var band = $("#distplot_bands option:selected").text();
if (band != "SAT") {
$("#distplot_sats").prop('disabled', true);
} else {
$("#distplot_sats").prop('disabled', false);
}
});
function distPlot(form) {
$(".alert").remove();
var baseURL= "<?php echo base_url();?>";
$.ajax({
url: base_url+'index.php/distances/get_distances',
type: 'post',
data: {'band': form.distplot_bands.value,
'sat': form.distplot_sats.value},
success: function(tmp) {
if (tmp.ok == 'OK') {
if (!($('#information').length > 0))
$("#distances_div").append('<div id="information"></div><div id="graphcontainer" style="height: 600px; margin: 0 auto"></div>');
var color = ifDarkModeThemeReturn('white', 'grey');
var options = {
chart: {
type: 'column',
zoomType: 'xy',
renderTo: 'graphcontainer',
backgroundColor: getBodyBackground()
},
title: {
text: 'Distance Distribution',
style: {
color: color
}
},
xAxis: {
categories: [],
crosshair: true,
type: "category",
min:0,
max:100,
labels: {
style: {
color: color
}
}
},
yAxis: {
title: {
text: '# QSOs',
style: {
color: color
}
},
labels: {
style: {
color: color
}
}
},
navigator: {
enabled: true,
xAxis: {
labels: {
formatter: function() {
return this.value * '50' + ' ' + tmp.unit;
},
style: {
color: color
}
}
}
},
rangeSelector: {
selected: 1
},
tooltip: {
formatter: function () {
if(this.point) {
return "Distance: " + options.xAxis.categories[this.point.x] +
"<br />Callsign(s) worked (max 5 shown): " + myComments[this.point.x] +
"<br />Number of QSOs: <strong>" + series.data[this.point.x] + "</strong>";
}
}
},
legend: {
itemStyle: {
color: color
}
},
series: []
};
var myComments=[];
var series = {
data: [],
showInNavigator: true,
point: {
events: {
click: function () {
getDistanceQsos(this.category);
}
}
}
};
$.each(tmp.qsodata, function(){
myComments.push(this.calls);
options.xAxis.categories.push(this.dist);
series.name = 'Number of QSOs';
series.data.push(this.count);
});
options.series.push(series);
$('#information').html(tmp.qrb.Qsos + " contacts were plotted.<br /> Your furthest contact was with " + tmp.qrb.Callsign
+ " in gridsquare "+ tmp.qrb.Grid
+"; the distance was "
+tmp.qrb.Distance + tmp.unit +".");
var chart = new Highcharts.Chart(options);
}
else {
if (($('#information').length > 0)) {
$("#information").remove();
$("#graphcontainer").remove();
}
$("#distances_div").append('<div class="alert alert-danger" role="alert"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>' + tmp.Error + '</div>');
}
}
});
}
function getDistanceQsos(distance) {
// alert('Category: ' + distance);
$.ajax({
url: base_url + 'index.php/distances/getDistanceQsos',
type: 'post',
data: {
'distance': distance,
'band': $("#distplot_bands").val(),
'sat' : $("#distplot_sats").val(),
},
success: function (html) {
BootstrapDialog.show({
title: 'QSO Data',
size: BootstrapDialog.SIZE_WIDE,
cssClass: 'qso-dialog',
nl2br: false,
message: html,
onshown: function(dialog) {
$('[data-toggle="tooltip"]').tooltip();
$('.contacttable').DataTable({
"pageLength": 25,
responsive: false,
ordering: false,
"scrollY": "550px",
"scrollCollapse": true,
"paging": false,
"scrollX": true,
dom: 'Bfrtip',
buttons: [
'csv'
]
});
},
buttons: [{
label: 'Close',
action: function (dialogItself) {
dialogItself.close();
}
}]
});
}
});
}