157 行
		
	
	
	
		
			6.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			157 行
		
	
	
	
		
			6.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| $(document).ready(function () {
 | |
|     // Needed for continentstable header fix, will be squished without
 | |
|     $("a[href='#continents']").on('shown.bs.tab', function(e) {
 | |
|         $(".continentstable").DataTable().columns.adjust();
 | |
|     });
 | |
| 
 | |
|     $('#searchForm').submit(function (e) {
 | |
|         $('#searchButton').prop("disabled", true);
 | |
| 
 | |
|         $.ajax({
 | |
|             url: this.action,
 | |
|             type: 'post',
 | |
|             data: {
 | |
|                 mode: this.mode.value,
 | |
|                 band: this.band.value,
 | |
|             },
 | |
|             dataType: 'json',
 | |
|             success: function (data) {
 | |
|                 $('#searchButton').prop("disabled", false);
 | |
|                 totalContinentQsos(data);
 | |
|             },
 | |
|             error: function (data) {
 | |
|                 $('#searchButton').prop("disabled", false);
 | |
|                 BootstrapDialog.alert({
 | |
|                     title: 'ERROR',
 | |
|                     message: 'An error ocurred while making the request',
 | |
|                     type: BootstrapDialog.TYPE_DANGER,
 | |
|                     closable: false,
 | |
|                     draggable: false,
 | |
|                     callback: function (result) {
 | |
|                     }
 | |
|                 });
 | |
|             },
 | |
|         });
 | |
|         return false;
 | |
|     });
 | |
| 
 | |
|     $('#searchForm').submit();
 | |
| });
 | |
| 
 | |
| function totalContinentQsos(data) {
 | |
|     // using this to change color of legend and label according to background color
 | |
|     var color = ifDarkModeThemeReturn('white', 'grey');
 | |
| 
 | |
|             if (data.length > 0) {
 | |
|                 $('.continentstable > tbody').empty();
 | |
|                 $('.tabs').removeAttr('hidden');
 | |
| 
 | |
|                 var labels = [];
 | |
|                 var dataQso = [];
 | |
|                 var totalQso = Number(0);
 | |
| 
 | |
|                 var $myTable = $('.continentstable');
 | |
|                 var i = 1;
 | |
| 
 | |
|                 // building the rows in the table
 | |
|                 var rowElements = data.map(function (row) {
 | |
| 
 | |
|                     var $row = $('<tr></tr>');
 | |
| 
 | |
|                     var $iterator = $('<td></td>').html(i++);
 | |
|                     var $type = $('<td></td>').html(row.cont);
 | |
|                     var $content = $('<td></td>').html(row.count);
 | |
| 
 | |
|                     $row.append($iterator, $type, $content);
 | |
| 
 | |
|                     return $row;
 | |
|                 });
 | |
| 
 | |
|                 // finally inserting the rows
 | |
|                 $myTable.append(rowElements);
 | |
| 
 | |
|                 $.each(data, function () {
 | |
|                     labels.push(this.cont);
 | |
|                     dataQso.push(this.count);
 | |
|                     totalQso = Number(totalQso) + Number(this.count);
 | |
|                 });
 | |
| 
 | |
|                 const COLORS = ["#3366cc", "#dc3912", "#ff9900", "#109618", "#990099", "#0099c6", "#dd4477", "#66aa00", "#b82e2e", "#316395", "#994499"]
 | |
|                 
 | |
|                 let chartStatus = Chart.getChart("continentChart"); // <canvas> id
 | |
|                 if (chartStatus != undefined) {
 | |
|                     chartStatus.destroy();
 | |
|                 }
 | |
|                 
 | |
|                 var ctx = document.getElementById("continentChart").getContext('2d');
 | |
|                 var myChart = new Chart(ctx, {
 | |
|                     plugins: [ChartPieChartOutlabels],
 | |
|                     type: 'doughnut',
 | |
|                     data: {
 | |
|                         labels: labels,
 | |
|                         datasets: [{
 | |
|                             borderColor: 'rgba(54, 162, 235, 1)',
 | |
|                             label: 'Number of QSO\'s worked',
 | |
|                             data: dataQso,
 | |
|                             backgroundColor: ["#3366cc", "#dc3912", "#ff9900", "#109618", "#990099", "#0099c6", "#dd4477", "#66aa00", "#b82e2e", "#316395", "#994499"],
 | |
|                             borderWidth: 1,
 | |
|                             labels: labels,
 | |
|                         }]
 | |
|                     },
 | |
| 
 | |
|                     options: {
 | |
|                         layout: {
 | |
|                             padding: 100
 | |
|                         },
 | |
|                         title: {
 | |
|                             fontColor: color,
 | |
|                             fullSize: true,
 | |
|                         },
 | |
|                         responsive: false,
 | |
|                         maintainAspectRatio: true,
 | |
|                         plugins: {
 | |
|                             legend: {
 | |
|                                 display: false,
 | |
|                                 labels: {
 | |
|                                     boxWidth: 15,
 | |
|                                     color: color,
 | |
|                                     font: {
 | |
|                                         size: 14,
 | |
|                                     }
 | |
|                                 },
 | |
|                                 position: 'right',
 | |
|                                 align: "middle"
 | |
|                             },
 | |
|                             outlabels: {
 | |
|                                 backgroundColor: COLORS,
 | |
|                                 borderColor: COLORS,
 | |
|                                 borderRadius: 2, // Border radius of Label
 | |
|                                 borderWidth: 2, // Thickness of border
 | |
|                                 color: 'white',
 | |
|                                 stretch: 10,
 | |
|                                 padding: 0,
 | |
|                                 font: {
 | |
|                                     resizable: true,
 | |
|                                     minSize: 12,
 | |
|                                     maxSize: 25,
 | |
|                                     family: Chart.defaults.font.family,
 | |
|                                     size: Chart.defaults.font.size,
 | |
|                                     style: Chart.defaults.font.style,
 | |
|                                     lineHeight: Chart.defaults.font.lineHeight,
 | |
|                                 },
 | |
|                                 zoomOutPercentage: 100,
 | |
|                                 textAlign: 'start',
 | |
|                                 backgroundColor: COLORS,
 | |
|                               }
 | |
|                         }
 | |
|                     }
 | |
|                 });
 | |
| 
 | |
|                 // using this to change color of csv-button if dark mode is chosen
 | |
|                 var background = $('body').css("background-color");
 | |
| 
 | |
|                 if (background != ('rgb(255, 255, 255)')) {
 | |
|                     $(".buttons-csv").css("color", "white");
 | |
|                 }
 | |
|             }
 | |
| }
 |