130 行
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			130 行
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| function accumulatePlot(form) {
 | |
| 	$(".ld-ext-right").addClass('running');
 | |
| 	$(".ld-ext-right").prop('disabled', true);
 | |
| 
 | |
| 	// using this to change color of legend and label according to background color
 | |
| 	var background = $('body').css( "background-color");
 | |
| 	var color = 'grey';
 | |
| 	if (background != ('rgb(255, 255, 255)')) {
 | |
| 		color = 'white';
 | |
| 	}
 | |
| 
 | |
| 	var award = form.awardradio.value;
 | |
| 	var mode = form.mode.value;
 | |
| 	var period = form.periodradio.value;
 | |
| 	$.ajax({
 | |
| 		url: base_url+'index.php/accumulated/get_accumulated_data',
 | |
| 		type: 'post',
 | |
| 		data: {'Band': form.band.value, 'Award': award, 'Mode': mode, 'Period': period},
 | |
| 		success: function(data) {
 | |
| 			// used for switching award text in the table and the chart
 | |
| 			switch(award) {
 | |
| 				case 'dxcc': var awardtext = "DXCC\'s"; break;
 | |
| 				case 'was':  var awardtext = "states";break;
 | |
| 				case 'iota': var awardtext = "IOTA\'s";break;
 | |
| 				case 'waz':  var awardtext = "CQ zones"; break;
 | |
| 			}
 | |
| 
 | |
| 			var periodtext = 'Year';
 | |
| 			if (period == 'month') {
 | |
| 				periodtext += ' + month';
 | |
| 			}
 | |
| 			// removing the old chart so that it will not interfere when loading chart again
 | |
| 			$("#accumulateContainer").empty();
 | |
| 			$("#accumulateContainer").append("<canvas id=\"myChartAccumulate\" width=\"400\" height=\"150\"></canvas><div id=\"accumulateTable\"></div>");
 | |
| 
 | |
| 			// appending table to hold the data
 | |
| 			$("#accumulateTable").append('<table style="width:100%" class="accutable table table-sm table-bordered table-hover table-striped table-condensed text-center"><thead>' +
 | |
| 				'<tr>' +
 | |
| 				'<td>#</td>' +
 | |
| 				'<td>' + periodtext + '</td>' +
 | |
| 				'<td>Accumulated # of ' + awardtext + ' worked </td>'+
 | |
| 				'</tr>' +
 | |
| 				'</thead>' +
 | |
| 				'<tbody></tbody></table>');
 | |
| 			var labels = [];
 | |
| 			var dataDxcc = [];
 | |
| 
 | |
| 			var $myTable = $('.accutable');
 | |
| 			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.year);
 | |
| 				var $content = $('<td></td>').html(row.total);
 | |
| 
 | |
| 				$row.append($iterator, $type, $content);
 | |
| 
 | |
| 				return $row;
 | |
| 			});
 | |
| 
 | |
| 			// finally inserting the rows
 | |
| 			$myTable.append(rowElements);
 | |
| 
 | |
| 			$.each(data, function(){
 | |
| 				labels.push(this.year);
 | |
| 				dataDxcc.push(this.total);
 | |
| 			});
 | |
| 
 | |
| 			var ctx = document.getElementById("myChartAccumulate").getContext('2d');
 | |
| 			var myChart = new Chart(ctx, {
 | |
| 				type: 'bar',
 | |
| 				data: {
 | |
| 					labels: labels,
 | |
| 					datasets: [{
 | |
| 						label: 'Accumulated number of ' + awardtext + ' worked each ' + period,
 | |
| 						data: dataDxcc,
 | |
| 						backgroundColor: 'rgba(54, 162, 235, 0.2)',
 | |
| 						borderColor: 'rgba(54, 162, 235, 1)',
 | |
| 						borderWidth: 2,
 | |
| 					}]
 | |
| 				},
 | |
| 				options: {
 | |
| 					scales: {
 | |
| 						yAxes: [{
 | |
| 							ticks: {
 | |
| 								beginAtZero:true,
 | |
| 								fontColor: color
 | |
| 							}
 | |
| 						}],
 | |
| 						xAxes: [{
 | |
| 							ticks: {
 | |
| 								fontColor: color
 | |
| 							}
 | |
| 						}]
 | |
| 					},
 | |
| 					legend: {
 | |
| 						labels: {
 | |
| 							fontColor: color,
 | |
| 						}
 | |
| 					},
 | |
| 				}
 | |
| 			});
 | |
| 			$(".ld-ext-right").removeClass('running');
 | |
| 			$(".ld-ext-right").prop('disabled', false);
 | |
| 			$('.accutable').DataTable({
 | |
| 				responsive: false,
 | |
| 				ordering: false,
 | |
| 				"scrollY":        "400px",
 | |
| 				"scrollCollapse": true,
 | |
| 				"paging":         false,
 | |
| 				"scrollX": true,
 | |
| 				dom: 'Bfrtip',
 | |
| 				buttons: [
 | |
| 					'csv'
 | |
| 				]
 | |
| 			});
 | |
| 
 | |
| 			// 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");
 | |
| 			}
 | |
| 		}
 | |
| 	});
 | |
| }
 |