Files
wavelog/assets/js/sections/adif.js
Andreas Kristiansen 872e6241cc 2 check buttons
2025-08-19 09:31:00 +02:00

68 lines
2.0 KiB
JavaScript

$(document).ready(function(){
$('#prepare_sub').click(function(e){
e.preventDefault();
var fi = document.getElementById("userfile");
var file = fi.files[0];;
if (!(file)) {
return;
}
$("#prepare_sub").prop("disabled",true).addClass("running");
if (JSZip.support.blob) { // Check if Browser supports ZIP
var zip = new JSZip();
//add all files to zip
addFileToZip(file);
function addFileToZip(n) {
var arrayBuffer;
var fileReader = new FileReader();
fileReader.onloadend = function() {
arrayBuffer = this.result;
let chker = partof(arrayBuffer,4096);
if (chker.toUpperCase().includes('<CALL')) {
zip.file($("#fhash").val()+'.adif', arrayBuffer, { binary:true });
zip.generateAsync({type:"blob", compression:"DEFLATE"}).then(function(content){
//generated zip content to file type
var files = new File([content], file.name + ".zip");
const dataTransfer = new DataTransfer();
dataTransfer.items.add(files);
//send generated file to server
fi.files=dataTransfer.files;
$("#upform").submit();
return;
});
} else {
$("#prepare_sub").prop("disabled",false).removeClass("running");;
alert("Unsupported File. Must be ADIF");
}
};
fileReader.readAsArrayBuffer(file);
}
} else {
$("#upform").submit();
}
});
$('#markExportedToLotw').click(function(e){
let form = $(this).closest('form');
let station = form.find('select[name=station_profile]');
if (station.val() == 0) {
station.addClass('is-invalid');
}else{
form.submit();
}
})
function partof(buf,size) {
return String.fromCharCode.apply(null, new Uint8Array(buf.slice(0,size-1)));
}
});
function toggleAll(btn) {
const cardBody = btn.closest('.card-body'); // find the card body where the button lives
const boxes = cardBody.querySelectorAll('.form-check-input[type="checkbox"]');
const allChecked = Array.from(boxes).every(cb => cb.checked);
boxes.forEach(cb => cb.checked = !allChecked);
}