Files
wavelog/assets/js/sections/stationsetup.js
2024-07-03 07:54:42 +02:00

666 lines
18 KiB
JavaScript

$(document).ready(function () {
reloadStations();
$("#station_locations_table").DataTable({
stateSave: true,
language: {
url: getDataTablesLanguageUrl(),
},
});
$(document).on('click','.newLogbook', function (e) { // Dynamic binding, since element doesn't exists when loading this JS
$.ajax({
url: base_url + 'index.php/stationsetup/newLogbook_json',
type: 'post',
data: {
'stationLogbook_Name': $("#logbook_name").val(),
},
success: function(data) {
jdata=JSON.parse(data);
if (jdata.success == 1) {
$("#NewStationLogbookModal").modal('hide');
reloadLogbooks();
} else {
$("#flashdata").html(jdata.flashdata);
}
},
error: function(e) {
$("#flashdata").html("An unknown Error occured");
}
});
});
$(document).on('click', '.deleteLogbook', async function (e) { // Dynamic binding, since element doesn't exists when loading this JS
await do_ajax('deleteLogbook_json', 'id2delete', reloadLogbooks,e);
});
$(document).on('click', '.setActiveLogbook', async function (e) { // Dynamic binding, since element doesn't exists when loading this JS
await do_ajax('setActiveLogbook_json', 'id2setActive', reloadLogbooks,e);
});
$(document).on('click', '.setActiveStation', async function (e) { // Dynamic binding, since element doesn't exists when loading this JS
await do_ajax('setActiveStation_json', 'id2setActive', reloadStations,e);
});
$(document).on('click', '.DeleteStation', async function (e) { // Dynamic binding, since element doesn't exists when loading this JS
await do_ajax('DeleteStation_json', 'id2del', reloadStations,e);
});
$(document).on('click', '.EmptyStation', async function (e) { // Dynamic binding, since element doesn't exists when loading this JS
await do_ajax('EmptyStation_json', 'id2Empty', reloadStations,e);
});
$(document).on('click', '.setFavorite', async function (e) { // Dynamic binding, since element doesn't exists when loading this JS
await do_ajax('setFavorite_json', 'id2Favorite', reloadStations,e);
});
$(document).on('click', '.editContainerName', async function (e) { // Dynamic binding, since element doesn't exists when loading this JS
editContainerDialog(e);
});
$(document).on('click', '.editLinkedLocations', async function (e) { // Dynamic binding, since element doesn't exists when loading this JS
editLinkedLocations(e);
});
$(document).on('click', '.editVisitorLink', async function (e) { // Dynamic binding, since element doesn't exists when loading this JS
editVisitorLink(e);
});
$(document).on('click', '.deletePublicSlug', async function (e) { // Dynamic binding, since element doesn't exists when loading this JS
await do_ajax('remove_publicslug', 'id', reloadLogbooks, e);
});
$(document).on('click', '.publicSearchCheckbox', async function (e) { // Dynamic binding, since element doesn't exists when loading this JS
togglePublicSearch(e.currentTarget.id, this);
});
$(document).on('click', '.editExportmapOptions', async function (e) { // Dynamic binding, since element doesn't exists when loading this JS
editExportmapDialog(e.currentTarget.id);
});
$("#station_logbooks_table").DataTable({
stateSave: true,
language: {
url: getDataTablesLanguageUrl(),
},
});
});
async function do_ajax(ajax_uri, ajax_field, succ_callback, event_target) {
if (event_target.currentTarget.attributes.cnftext) {
if (!(confirm(event_target.currentTarget.attributes.cnftext.value))) {
return false;
}
}
$.ajax({
url: base_url + 'index.php/stationsetup/' + ajax_uri,
type: 'post',
data: {
[ajax_field]: event_target.currentTarget.id,
},
success: function(data) {
jdata=JSON.parse(data);
if (jdata.success == 1) {
succ_callback();
// we also want to switch the active badge in the quickswitcher if a new active location is set
if (ajax_uri == 'setActiveStation_json') {
set_active_loc_quickswitcher(event_target.currentTarget.id);
}
} else {
$("#flashdata").html(jdata.flashdata);
}
},
error: function(e) {
$("#flashdata").html("An unknown Error occured");
}
});
}
function togglePublicSearch(id, thisvar) {
$.ajax({
url: base_url + 'index.php/stationsetup/togglePublicSearch',
type: 'post',
data: {
id: id,
checked: $(thisvar).is(':checked')
},
success: function (data) {
reloadLogbooks();
},
error: function (data) {
},
});
return false;
}
function editExportmapDialog(id) {
$.ajax({
url: base_url + 'index.php/stationsetup/editExportmapOptions',
type: 'post',
data: {
id: id,
},
success: function (data) {
BootstrapDialog.show({
title: 'Edit Export Map options',
size: BootstrapDialog.SIZE_NORMAL,
cssClass: 'options',
id: "NewStationLogbookModal",
nl2br: false,
message: data,
onshown: function(dialog) {
},
buttons: [{
label: 'Save',
cssClass: 'btn-primary btn-sm saveExportmapOptions',
action: function (dialogItself) {
saveExportmapOptions();
dialogItself.close();
}
},
{
label: lang_admin_close,
cssClass: 'btn-sm',
id: 'closeButton',
action: function (dialogItself) {
dialogItself.close();
}
}],
});
},
error: function (data) {
},
});
return false;
}
function saveExportmapOptions() {
$('#saveButton').prop("disabled", true);
$('#closeButton').prop("disabled", true);
$.ajax({
url: base_url + 'index.php/stationsetup/saveExportmapOptions',
type: 'post',
data: {
gridsquare_layer: $('input[name="gridsquare_layer"]').is(':checked') ? true : false,
path_lines: $('input[name="path_lines"]').is(':checked') ? true : false,
cqzone_layer: $('input[name="cqzone_layer"]').is(':checked') ? true : false,
nightshadow_layer: $('input[name="nightshadow_layer"]').is(':checked') ? true : false,
qsocount: $('#qsocount').val(),
band: $('#band').val(),
id: $('#logbookid').val(),
},
success: function(data) {
$('#saveButton').prop("disabled", false);
$('#closeButton').prop("disabled", false);
},
error: function() {
$('#saveButton').prop("disabled", false);
},
});
}
function editContainerDialog(e) {
$.ajax({
url: base_url + 'index.php/stationsetup/editContainerName',
type: 'post',
data: {
id: e.currentTarget.id,
},
success: function (data) {
BootstrapDialog.show({
title: 'Edit container name',
size: BootstrapDialog.SIZE_NORMAL,
cssClass: 'options',
id: "NewStationLogbookModal",
nl2br: false,
message: data,
onshown: function(dialog) {
},
buttons: [{
label: 'Save',
cssClass: 'btn-primary btn-sm saveContainerName',
action: function (dialogItself) {
saveContainerName();
dialogItself.close();
}
},
{
label: lang_admin_close,
cssClass: 'btn-sm',
id: 'closeButton',
action: function (dialogItself) {
dialogItself.close();
}
}],
});
},
error: function (data) {
},
});
return false;
}
function saveContainerName() {
$.ajax({
url: base_url + 'index.php/stationsetup/saveContainerName',
type: 'post',
data: {
id: $('#logbookid').val(),
name: $('#logbook_name').val()
},
success: function (data) {
reloadLogbooks();
},
error: function (data) {
},
});
}
function editLinkedLocations(e) {
$.ajax({
url: base_url + 'index.php/stationsetup/editLinkedLocations',
type: 'post',
data: {
id: e.currentTarget.id,
},
success: function (data) {
BootstrapDialog.show({
title: 'Edit linked locations',
size: BootstrapDialog.SIZE_WIDE,
cssClass: 'options',
id: "NewStationLogbookModal",
nl2br: false,
message: data,
closable: false,
closeByBackdrop: false,
closeByKeyboard: false,
onshown: function(dialog) {
},
buttons: [{
label: lang_admin_close,
cssClass: 'btn-sm',
id: 'closeButton',
action: function (dialogItself) {
dialogItself.close();
reloadStations();
}
}],
});
},
error: function (data) {
},
});
return false;
}
function editVisitorLink(e) {
$.ajax({
url: base_url + 'index.php/stationsetup/editVisitorLink',
type: 'post',
data: {
id: e.currentTarget.id,
},
success: function (data) {
BootstrapDialog.show({
title: 'Edit visitor link',
size: BootstrapDialog.SIZE_NORMAL,
cssClass: 'options',
id: "NewStationLogbookModal",
nl2br: false,
message: data,
onshown: function(dialog) {
},
buttons: [{
label: 'Save',
cssClass: 'btn-primary btn-sm visitorSaveButton',
action: function (dialogItself) {
saveVisitorLink(dialogItself);
}
},
{
label: lang_admin_close,
cssClass: 'btn-sm',
id: 'closeButton',
action: function (dialogItself) {
dialogItself.close();
}
}],
});
},
error: function (data) {
},
});
return false;
}
function saveVisitorLink(dialogItself) {
$('.visitorSaveButton').prop("disabled", true);
$('.alertvisitor').remove();
if (/^([a-zA-Z0-9-]+)$/.test($('#publicSlugInput').val())) {
$.ajax({
url: base_url + 'index.php/stationsetup/saveVisitorLink',
type: 'post',
data: {
id: $('#logbook_id').val(),
name: $('#publicSlugInput').val()
},
success: function (data) {
jdata=JSON.parse(data);
if (jdata.success == 1) {
dialogItself.close();
reloadLogbooks();
} else {
$('#visitorLinkInfo').append('<div class="alertvisitor alert alert-danger" role="alert">'+jdata.flashdata+'</div>');
$('.visitorSaveButton').prop("disabled", false);
}
},
error: function (data) {
$('.visitorSaveButton').prop("disabled", false);
},
});
} else {
$('.visitorSaveButton').prop("disabled", false);
$('#visitorLinkInfo').append('<div class="alertvisitor alert alert-danger" role="alert">Invalid characters entered in link!</div>');
}
return false;
}
function reloadLogbooks() {
$.ajax({
url: base_url + 'index.php/stationsetup/fetchLogbooks',
type: 'post',
dataType: 'json',
success: function (data) {
loadLogbookTable(data);
reloadStations();
},
error: function (data) {
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;
}
function reloadStations() {
$.ajax({
url: base_url + 'index.php/stationsetup/fetchLocations',
type: 'post',
dataType: 'json',
success: function (data) {
loadLocationTable(data);
},
error: function (data) {
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;
}
function createStationLogbook() {
$.ajax({
url: base_url + 'index.php/stationsetup/newLogbook',
type: 'post',
success: function (html) {
BootstrapDialog.show({
title: 'Create a new station logbook',
size: BootstrapDialog.SIZE_NORMAL,
cssClass: 'options',
id: "NewStationLogbookModal",
nl2br: false,
message: html,
onshown: function(dialog) {
},
buttons: [{
label: 'Save',
cssClass: 'btn-primary btn-sm newLogbook',
id: 'saveButtonNewLogbook',
},
{
label: lang_admin_close,
cssClass: 'btn-sm',
id: 'closeButton',
action: function (dialogItself) {
dialogItself.close();
}
}],
onhide: function(dialogRef){
$('#optionButton').prop("disabled", false);
},
});
}
});
}
function createStationLocation() {
$.ajax({
url: base_url + 'index.php/stationsetup/newLocation',
type: 'post',
success: function (html) {
BootstrapDialog.show({
title: 'Create a new station location',
size: BootstrapDialog.SIZE_EXTRAWIDE,
cssClass: 'options',
nl2br: false,
message: html,
onshown: function(dialog) {
},
buttons: [{
label: 'Save',
cssClass: 'btn-primary btn-sm',
id: 'saveButton',
action: function (dialogItself) {
dialogItself.close();
}
},
{
label: lang_admin_close,
cssClass: 'btn-sm',
id: 'closeButton',
action: function (dialogItself) {
dialogItself.close();
}
}],
onhide: function(dialogRef){
$('#optionButton').prop("disabled", false);
},
});
}
});
}
function loadLogbookTable(rows) {
var uninitialized = $('#station_logbooks_table').filter(function() {
return !$.fn.DataTable.fnIsDataTable(this);
});
uninitialized.each(function() {
$(this).DataTable({
searching: false,
responsive: false,
ordering: true,
"scrollY": window.innerHeight - $('#searchForm').innerHeight() - 250,
"scrollCollapse": true,
"paging": false,
"scrollX": true,
"language": {
url: getDataTablesLanguageUrl(),
},
});
});
var table = $('#station_logbooks_table').DataTable();
table.clear();
for (i = 0; i < rows.length; i++) {
let logbook = rows[i];
var data = [];
data.push(logbook.logbook_name);
data.push(logbook.logbook_state);
data.push(logbook.logbook_edit);
data.push(logbook.logbook_delete);
data.push(logbook.logbook_link);
data.push(logbook.logbook_publicsearch);
let createdRow = table.row.add(data).index();
}
table.draw();
$('[data-bs-toggle="tooltip"]').tooltip();
}
function loadLocationTable(rows) {
var uninitialized = $('#station_locations_table').filter(function() {
return !$.fn.DataTable.fnIsDataTable(this);
});
uninitialized.each(function() {
$(this).DataTable({
searching: false,
responsive: false,
ordering: true,
"scrollY": window.innerHeight - $('#searchForm').innerHeight() - 250,
"scrollCollapse": true,
"paging": false,
"scrollX": true,
"language": {
url: getDataTablesLanguageUrl(),
},
'columnDefs': [
{ 'targets':0,
'createdCell': function (td, cellData, rowData, row, col) {
(td).attr('data-order', 1); // not sure how to add ID dynamic here
}
}
]
});
});
var table = $('#station_locations_table').DataTable();
table.clear();
for (i = 0; i < rows.length; i++) {
let locations = rows[i];
var data = [];
data.push(locations.station_id);
data.push(locations.station_name);
data.push(locations.station_callsign);
data.push(locations.station_country);
data.push(locations.station_gridsquare);
data.push(locations.station_badge);
data.push(locations.station_linked);
data.push(locations.station_edit);
data.push(locations.station_copylog);
if (locations.station_favorite != ''){
data.push(locations.station_favorite);
}
data.push(locations.station_emptylog);
data.push(locations.station_delete);
let createdRow = table.row.add(data).index();
}
table.draw();
$('[data-bs-toggle="tooltip"]').tooltip();
}
function linkLocations() {
$('.linkLocationButton').prop("disabled", true);
var locationid = $('#StationLocationSelect').val();
var containerid = $('#station_logbook_id').val();
var locationtext = $('#StationLocationSelect option:selected').text();
var locationarray = locationtext.split(" ");
if (locationid == null) return;
$.ajax({
url: base_url + 'index.php/stationsetup/linkLocations',
type: 'post',
data: {
containerid: containerid,
locationid: locationid
},
success: function(data) {
jdata=JSON.parse(data);
if (jdata.success == 1) {
$("#StationLocationSelect").find('[value="'+ locationid +'"]').remove();
// add to table
$('#station_logbooks_linked_table').append($('<tr id="locationid_'+locationid+'">')
.append($('<td style="text-align: center; vertical-align: middle;">').append(jdata.locationdata[0].station_profile_name))
.append($('<td style="text-align: center; vertical-align: middle;">').append(jdata.locationdata[0].station_callsign))
.append($('<td style="text-align: center; vertical-align: middle;">').append(jdata.locationdata[0].station_country+(jdata.locationdata[0].dxcc_end == null ? '' : ' <span class="badge bg-danger">Deleted DXCC</span>')))
.append($('<td style="text-align: center; vertical-align: middle;">').append('<button class="btn btn-sm btn-danger unlinkbutton" onclick="unLinkLocations('+containerid+','+locationid+');"><i class="fas fa-unlink"></i></button>'))
)
} else {
$("#flashdata").html(jdata.flashdata);
}
$('.linkLocationButton').prop("disabled", false);
},
error: function(e) {
$("#flashdata").html("An unknown Error occured");
$('.linkLocationButton').prop("disabled", false);
}
});
}
function unLinkLocations(containerid, locationid) {
$('.unlinkbutton').prop("disabled", true);
$.ajax({
url: base_url + 'index.php/stationsetup/unLinkLocations',
type: 'post',
data: {
containerid: containerid,
locationid: locationid
},
success: function (data) {
jdata=JSON.parse(data);
if (jdata.success == 1) {
let row = $('#locationid_'+locationid);
let cells = row.find('td');
var items = [];
items.push(
'<option value="' + locationid + '">' + cells.eq(0).text() + ' (Callsign: ' + cells.eq(1).text() + ' DXCC: ' + cells.eq(2).text() + ')</option>'
);
$('#StationLocationSelect').append(items.join( "" ));
$('#locationid_'+locationid).remove();
$('.unlinkbutton').prop("disabled", false);
} else {
$("#flashdata").data(jdata.flashdata);
$('.unlinkbutton').prop("disabled", false);
}
},
error: function(e) {
$("#flashdata").html("An unknown Error occured");
}
});
}