mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 10:04:33 +02:00
Prettified Code!
This commit is contained in:
parent
68e10bad3e
commit
08cb8bb785
|
@ -67,9 +67,8 @@ var db = new PouchDB(chatDB);
|
||||||
var users = new PouchDB(userDB);
|
var users = new PouchDB(userDB);
|
||||||
|
|
||||||
/* -------- CREATE DATABASE INDEXES */
|
/* -------- CREATE DATABASE INDEXES */
|
||||||
createChatIndex()
|
createChatIndex();
|
||||||
createUserIndex()
|
createUserIndex();
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// REMOTE SYNC ATTEMPTS
|
// REMOTE SYNC ATTEMPTS
|
||||||
|
@ -113,17 +112,16 @@ db.sync('http://172.20.10.4:5984/jojo', {
|
||||||
});
|
});
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var dxcallsigns = new Set();
|
var dxcallsigns = new Set();
|
||||||
var chatFilter = [{type:'newchat'}, {type:'received'}, {type:'transmit'}, {type:'ping-ack'}]
|
var chatFilter = [
|
||||||
|
{ type: "newchat" },
|
||||||
|
{ type: "received" },
|
||||||
|
{ type: "transmit" },
|
||||||
|
{ type: "ping-ack" },
|
||||||
|
];
|
||||||
|
|
||||||
updateAllChat(false);
|
updateAllChat(false);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// WINDOW LISTENER
|
// WINDOW LISTENER
|
||||||
window.addEventListener("DOMContentLoaded", () => {
|
window.addEventListener("DOMContentLoaded", () => {
|
||||||
// theme selector
|
// theme selector
|
||||||
|
@ -136,9 +134,6 @@ window.addEventListener("DOMContentLoaded", () => {
|
||||||
document.getElementById("bootstrap_theme").href = theme_path;
|
document.getElementById("bootstrap_theme").href = theme_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const userInfoFields = [
|
const userInfoFields = [
|
||||||
"user_info_callsign",
|
"user_info_callsign",
|
||||||
"user_info_gridsquare",
|
"user_info_gridsquare",
|
||||||
|
@ -152,15 +147,13 @@ window.addEventListener("DOMContentLoaded", () => {
|
||||||
"user_info_comments",
|
"user_info_comments",
|
||||||
];
|
];
|
||||||
|
|
||||||
// add initial entry for own callsign and grid
|
// add initial entry for own callsign and grid
|
||||||
if(document.getElementById("user_info_callsign").value !== config.mycall){
|
if (document.getElementById("user_info_callsign").value !== config.mycall) {
|
||||||
let obj = new Object();
|
let obj = new Object();
|
||||||
obj.user_info_callsign = config.mycall;
|
obj.user_info_callsign = config.mycall;
|
||||||
obj.user_info_gridsquare = config.mygrid;
|
obj.user_info_gridsquare = config.mygrid;
|
||||||
addUserToDatabaseIfNotExists(obj);
|
addUserToDatabaseIfNotExists(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
users
|
users
|
||||||
.find({
|
.find({
|
||||||
|
@ -169,19 +162,17 @@ window.addEventListener("DOMContentLoaded", () => {
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.then(function (result) {
|
.then(function (result) {
|
||||||
if (typeof(result.docs[0]) !== "undefined") {
|
if (typeof result.docs[0] !== "undefined") {
|
||||||
// handle result
|
// handle result
|
||||||
userInfoFields.forEach(function (elem) {
|
userInfoFields.forEach(function (elem) {
|
||||||
document.getElementById(elem).value = result.docs[0][elem];
|
document.getElementById(elem).value = result.docs[0][elem];
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(function (err) {
|
.catch(function (err) {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// user info bulk event listener for saving settings
|
// user info bulk event listener for saving settings
|
||||||
userInfoFields.forEach(function (elem) {
|
userInfoFields.forEach(function (elem) {
|
||||||
try {
|
try {
|
||||||
|
@ -192,7 +183,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
||||||
userInfoFields.forEach(function (subelem) {
|
userInfoFields.forEach(function (subelem) {
|
||||||
obj[subelem] = document.getElementById(subelem).value;
|
obj[subelem] = document.getElementById(subelem).value;
|
||||||
});
|
});
|
||||||
console.log(obj)
|
console.log(obj);
|
||||||
addUserToDatabaseIfNotExists(obj);
|
addUserToDatabaseIfNotExists(obj);
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -202,12 +193,16 @@ window.addEventListener("DOMContentLoaded", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
//Add event listener for filter apply button
|
//Add event listener for filter apply button
|
||||||
document.getElementById("btnFilter").addEventListener("click",() => {
|
document.getElementById("btnFilter").addEventListener("click", () => {
|
||||||
chatFilter=[{type:'newchat'}];
|
chatFilter = [{ type: "newchat" }];
|
||||||
if (document.getElementById('chkMessage').checked == true) chatFilter.push({type:'received'},{type:'transmit'});
|
if (document.getElementById("chkMessage").checked == true)
|
||||||
if (document.getElementById('chkPing').checked == true) chatFilter.push({type:'ping'});
|
chatFilter.push({ type: "received" }, { type: "transmit" });
|
||||||
if (document.getElementById('chkPingAck').checked == true) chatFilter.push({type:'ping-ack'});
|
if (document.getElementById("chkPing").checked == true)
|
||||||
if (document.getElementById('chkBeacon').checked == true) chatFilter.push({type:'beacon'});
|
chatFilter.push({ type: "ping" });
|
||||||
|
if (document.getElementById("chkPingAck").checked == true)
|
||||||
|
chatFilter.push({ type: "ping-ack" });
|
||||||
|
if (document.getElementById("chkBeacon").checked == true)
|
||||||
|
chatFilter.push({ type: "beacon" });
|
||||||
updateAllChat(true);
|
updateAllChat(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -277,12 +272,11 @@ window.addEventListener("DOMContentLoaded", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
document.addEventListener("keyup", function (event) {
|
document.addEventListener("keyup", function (event) {
|
||||||
|
|
||||||
|
|
||||||
// Number 13 == Enter
|
// Number 13 == Enter
|
||||||
if (event.keyCode === 13
|
if (
|
||||||
&& !event.shiftKey
|
event.keyCode === 13 &&
|
||||||
&& document.activeElement.id == 'chatModuleMessage'
|
!event.shiftKey &&
|
||||||
|
document.activeElement.id == "chatModuleMessage"
|
||||||
) {
|
) {
|
||||||
// Cancel the default action, if needed
|
// Cancel the default action, if needed
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
@ -1016,38 +1010,38 @@ update_chat = function (obj) {
|
||||||
//document.getElementById(id).className = message_class;
|
//document.getElementById(id).className = message_class;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Delete message event listener
|
//Delete message event listener
|
||||||
if (
|
if (
|
||||||
document.getElementById("del-msg-" + obj._id) &&
|
document.getElementById("del-msg-" + obj._id) &&
|
||||||
!document
|
!document
|
||||||
.getElementById("del-msg-" + obj._id)
|
.getElementById("del-msg-" + obj._id)
|
||||||
.hasAttribute("listenerOnClick")
|
.hasAttribute("listenerOnClick")
|
||||||
) {
|
) {
|
||||||
// set Attribute to determine if we already created an EventListener for this element
|
// set Attribute to determine if we already created an EventListener for this element
|
||||||
document
|
document
|
||||||
.getElementById("del-msg-" + obj._id)
|
.getElementById("del-msg-" + obj._id)
|
||||||
.setAttribute("listenerOnClick", "true");
|
.setAttribute("listenerOnClick", "true");
|
||||||
document
|
document
|
||||||
.getElementById("del-msg-" + obj._id)
|
.getElementById("del-msg-" + obj._id)
|
||||||
.addEventListener("click", () => {
|
.addEventListener("click", () => {
|
||||||
db.get(obj._id, {
|
db.get(obj._id, {
|
||||||
attachments: true,
|
attachments: true,
|
||||||
})
|
})
|
||||||
.then(function (doc) {
|
.then(function (doc) {
|
||||||
db.remove(doc._id,doc._rev,function (err) {
|
db.remove(doc._id, doc._rev, function (err) {
|
||||||
if (err) console.log("Error removing item " + err);
|
if (err) console.log("Error removing item " + err);
|
||||||
|
});
|
||||||
})
|
})
|
||||||
})
|
.catch(function (err) {
|
||||||
.catch(function (err) {
|
console.log(err);
|
||||||
console.log(err);
|
});
|
||||||
})
|
|
||||||
|
|
||||||
document.getElementById("msg-" + obj._id).remove();
|
document.getElementById("msg-" + obj._id).remove();
|
||||||
document.getElementById("msg-" + obj._id + "-control-area").remove();
|
document.getElementById("msg-" + obj._id + "-control-area").remove();
|
||||||
console.log("Removed message " + obj._id.toString());
|
console.log("Removed message " + obj._id.toString());
|
||||||
})
|
});
|
||||||
//scrollMessagesToBottom();
|
//scrollMessagesToBottom();
|
||||||
};
|
}
|
||||||
|
|
||||||
// CREATE SAVE TO FOLDER EVENT LISTENER
|
// CREATE SAVE TO FOLDER EVENT LISTENER
|
||||||
if (
|
if (
|
||||||
|
@ -1283,7 +1277,7 @@ addUserToDatabaseIfNotExists = function (obj) {
|
||||||
"user_info_website",
|
"user_info_website",
|
||||||
"user_info_comments",
|
"user_info_comments",
|
||||||
*/
|
*/
|
||||||
console.log(obj)
|
console.log(obj);
|
||||||
users
|
users
|
||||||
.find({
|
.find({
|
||||||
selector: {
|
selector: {
|
||||||
|
@ -1394,111 +1388,94 @@ function atob_FD(data) {
|
||||||
return Buffer.from(data, "base64").toString("utf-8");
|
return Buffer.from(data, "base64").toString("utf-8");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function returnObjFromCallsign(database, callsign) {
|
function returnObjFromCallsign(database, callsign) {
|
||||||
|
users
|
||||||
users
|
.find({
|
||||||
.find(
|
selector: {
|
||||||
{
|
user_info_callsign: callsign,
|
||||||
selector: {
|
},
|
||||||
user_info_callsign: callsign,
|
})
|
||||||
},
|
.then(function (result) {
|
||||||
}
|
if (typeof result.docs[0] !== "undefined") {
|
||||||
)
|
return result.docs[0];
|
||||||
.then(
|
} else {
|
||||||
|
return false;
|
||||||
function (result) {
|
}
|
||||||
if (typeof(result.docs[0]) !== "undefined") {
|
})
|
||||||
return result.docs[0];
|
.catch(function (err) {
|
||||||
} else {
|
console.log(err);
|
||||||
return false
|
});
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.catch(function (err) {
|
|
||||||
console.log(err);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function createChatIndex() {
|
||||||
|
db.createIndex({
|
||||||
function createChatIndex(){
|
|
||||||
db.createIndex({
|
|
||||||
index: {
|
|
||||||
fields: [
|
|
||||||
"timestamp",
|
|
||||||
"uuid",
|
|
||||||
"dxcallsign",
|
|
||||||
"dxgrid",
|
|
||||||
"msg",
|
|
||||||
"checksum",
|
|
||||||
"type",
|
|
||||||
"command",
|
|
||||||
"status",
|
|
||||||
"percent",
|
|
||||||
"bytesperminute",
|
|
||||||
"_attachments",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.then(function (result) {
|
|
||||||
// handle result
|
|
||||||
console.log(result);
|
|
||||||
})
|
|
||||||
.catch(function (err) {
|
|
||||||
console.log(err);
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function createUserIndex(){
|
|
||||||
|
|
||||||
users
|
|
||||||
.createIndex({
|
|
||||||
index: {
|
index: {
|
||||||
fields: [
|
fields: [
|
||||||
"timestamp",
|
"timestamp",
|
||||||
"user_info_callsign",
|
"uuid",
|
||||||
"user_info_gridsquare",
|
"dxcallsign",
|
||||||
"user_info_name",
|
"dxgrid",
|
||||||
"user_info_age",
|
"msg",
|
||||||
"user_info_location",
|
"checksum",
|
||||||
"user_info_radio",
|
"type",
|
||||||
"user_info_antenna",
|
"command",
|
||||||
"user_info_email",
|
"status",
|
||||||
"user_info_website",
|
"percent",
|
||||||
"user_info_comments",
|
"bytesperminute",
|
||||||
"_attachments",
|
"_attachments",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.then(function (result) {
|
.then(function (result) {
|
||||||
// handle result
|
// handle result
|
||||||
console.log(result);
|
console.log(result);
|
||||||
return true
|
})
|
||||||
})
|
.catch(function (err) {
|
||||||
.catch(function (err) {
|
console.log(err);
|
||||||
console.log(err);
|
});
|
||||||
return false
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateAllChat(clear){
|
function createUserIndex() {
|
||||||
if (clear == true)
|
users
|
||||||
{
|
.createIndex({
|
||||||
|
index: {
|
||||||
|
fields: [
|
||||||
|
"timestamp",
|
||||||
|
"user_info_callsign",
|
||||||
|
"user_info_gridsquare",
|
||||||
|
"user_info_name",
|
||||||
|
"user_info_age",
|
||||||
|
"user_info_location",
|
||||||
|
"user_info_radio",
|
||||||
|
"user_info_antenna",
|
||||||
|
"user_info_email",
|
||||||
|
"user_info_website",
|
||||||
|
"user_info_comments",
|
||||||
|
"_attachments",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then(function (result) {
|
||||||
|
// handle result
|
||||||
|
console.log(result);
|
||||||
|
return true;
|
||||||
|
})
|
||||||
|
.catch(function (err) {
|
||||||
|
console.log(err);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateAllChat(clear) {
|
||||||
|
if (clear == true) {
|
||||||
filetype = "";
|
filetype = "";
|
||||||
file = "";
|
file = "";
|
||||||
filename = "";
|
filename = "";
|
||||||
callsign_counter = 0;
|
callsign_counter = 0;
|
||||||
selected_callsign = "";
|
selected_callsign = "";
|
||||||
dxcallsigns=new Set();
|
dxcallsigns = new Set();
|
||||||
document.getElementById("list-tab").innerHTML="";
|
document.getElementById("list-tab").innerHTML = "";
|
||||||
document.getElementById("nav-tabContent").innerHTML="";
|
document.getElementById("nav-tabContent").innerHTML = "";
|
||||||
//document.getElementById("list-tab").childNodes.remove();
|
//document.getElementById("list-tab").childNodes.remove();
|
||||||
//document.getElementById("nav-tab-content").childrenNodes.remove();
|
//document.getElementById("nav-tab-content").childrenNodes.remove();
|
||||||
}
|
}
|
||||||
|
@ -1506,17 +1483,14 @@ function updateAllChat(clear){
|
||||||
//We can't rely on the default index existing before we get here...... :'(
|
//We can't rely on the default index existing before we get here...... :'(
|
||||||
db.createIndex({
|
db.createIndex({
|
||||||
index: {
|
index: {
|
||||||
fields: [
|
fields: [{ timestamp: "asc" }],
|
||||||
{"timestamp":"asc"},
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.then(function (result) {
|
.then(function (result) {
|
||||||
// handle result
|
// handle result
|
||||||
db.find({
|
db.find({
|
||||||
selector: {
|
selector: {
|
||||||
$and: [{timestamp: {$exists:true}},
|
$and: [{ timestamp: { $exists: true } }, { $or: chatFilter }],
|
||||||
{$or:chatFilter}],
|
|
||||||
//$or: chatFilter
|
//$or: chatFilter
|
||||||
},
|
},
|
||||||
sort: [
|
sort: [
|
||||||
|
@ -1528,15 +1502,16 @@ function updateAllChat(clear){
|
||||||
.then(async function (result) {
|
.then(async function (result) {
|
||||||
// handle result async
|
// handle result async
|
||||||
if (typeof result !== "undefined") {
|
if (typeof result !== "undefined") {
|
||||||
for (const item of result.docs)
|
for (const item of result.docs) {
|
||||||
{
|
//await otherwise history will not be in chronological order
|
||||||
//await otherwise history will not be in chronological order
|
await db
|
||||||
await db.get(item._id, {
|
.get(item._id, {
|
||||||
attachments: true,
|
attachments: true,
|
||||||
}).then(function (item_with_attachments) {
|
})
|
||||||
|
.then(function (item_with_attachments) {
|
||||||
update_chat(item_with_attachments);
|
update_chat(item_with_attachments);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(function (err) {
|
.catch(function (err) {
|
||||||
|
@ -1546,5 +1521,4 @@ function updateAllChat(clear){
|
||||||
.catch(function (err) {
|
.catch(function (err) {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1575,7 +1575,7 @@ ipcRenderer.on("action-update-transmission-status", (event, arg) => {
|
||||||
" (comp: " +
|
" (comp: " +
|
||||||
formatBytes(arq_bytes_per_minute_compressed, 1) +
|
formatBytes(arq_bytes_per_minute_compressed, 1) +
|
||||||
")</strong>";
|
")</strong>";
|
||||||
document.getElementById("transmission_timeleft").innerHTML = time_left;
|
document.getElementById("transmission_timeleft").innerHTML = time_left;
|
||||||
connectedStation(data);
|
connectedStation(data);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -421,9 +421,10 @@ client.on("data", function (socketdata) {
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ipcRenderer.send("request-update-transmission-status", {
|
ipcRenderer.send("request-update-transmission-status", {
|
||||||
data: [data], });
|
data: [data],
|
||||||
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "received":
|
case "received":
|
||||||
|
|
|
@ -67,27 +67,25 @@
|
||||||
<i class="bi bi-pencil-square" style="font-size: 1.2rem"></i>
|
<i class="bi bi-pencil-square" style="font-size: 1.2rem"></i>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
id="userModalButton"
|
id="userModalButton"
|
||||||
data-bs-toggle="modal"
|
data-bs-toggle="modal"
|
||||||
data-bs-target="#userModal"
|
data-bs-target="#userModal"
|
||||||
class="btn btn-sm btn-primary ms-2"
|
class="btn btn-sm btn-primary ms-2"
|
||||||
><i class="bi bi-person" style="font-size: 1.2rem"></i></button>
|
>
|
||||||
<button
|
<i class="bi bi-person" style="font-size: 1.2rem"></i>
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
id="sharedFolderButton"
|
id="sharedFolderButton"
|
||||||
data-bs-toggle="modal"
|
data-bs-toggle="modal"
|
||||||
data-bs-target="#sharedFolderModal"
|
data-bs-target="#sharedFolderModal"
|
||||||
class="btn btn-sm btn-primary"
|
class="btn btn-sm btn-primary"
|
||||||
><i class="bi bi-files" style="font-size: 1.2rem"></i></button>
|
>
|
||||||
|
<i class="bi bi-files" style="font-size: 1.2rem"></i>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<hr class="m-2" />
|
<hr class="m-2" />
|
||||||
<div class="overflow-auto vh-100">
|
<div class="overflow-auto vh-100">
|
||||||
|
@ -111,83 +109,109 @@
|
||||||
Ping
|
Ping
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
id="chatSettingsDropDown"
|
id="chatSettingsDropDown"
|
||||||
type="button"
|
type="button"
|
||||||
class="btn btn-outline-secondary dropdown-toggle"
|
class="btn btn-outline-secondary dropdown-toggle"
|
||||||
data-bs-toggle="dropdown"
|
data-bs-toggle="dropdown"
|
||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
>
|
>
|
||||||
<i class="bi bi-three-dots-vertical"></i>
|
<i class="bi bi-three-dots-vertical"></i>
|
||||||
</button>
|
</button>
|
||||||
<ul class="dropdown-menu" aria-labelledby="chatSettingsDropDown">
|
<ul class="dropdown-menu" aria-labelledby="chatSettingsDropDown">
|
||||||
<li>
|
<li>
|
||||||
<a
|
<a
|
||||||
class="dropdown-item bg-danger text-white"
|
class="dropdown-item bg-danger text-white"
|
||||||
id="delete_selected_chat"
|
id="delete_selected_chat"
|
||||||
href="#"
|
href="#"
|
||||||
>Delete chat</a
|
>Delete chat</a
|
||||||
>
|
>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
id="userModalDXButton"
|
id="userModalDXButton"
|
||||||
data-bs-toggle="modal"
|
data-bs-toggle="modal"
|
||||||
data-bs-target="#userModalDX"
|
data-bs-target="#userModalDX"
|
||||||
class="btn btn-sm btn-secondary"
|
class="btn btn-sm btn-secondary"
|
||||||
><i class="bi bi-person" style="font-size: 1.2rem"></i></button>
|
>
|
||||||
|
<i class="bi bi-person" style="font-size: 1.2rem"></i>
|
||||||
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
id="sharedFolderDXButton"
|
id="sharedFolderDXButton"
|
||||||
data-bs-toggle="modal"
|
data-bs-toggle="modal"
|
||||||
data-bs-target="#sharedFolderModalDX"
|
data-bs-target="#sharedFolderModalDX"
|
||||||
class="btn btn-sm btn-secondary"
|
class="btn btn-sm btn-secondary"
|
||||||
><i class="bi bi-files" style="font-size: 1.2rem"></i></button>
|
>
|
||||||
|
<i class="bi bi-files" style="font-size: 1.2rem"></i>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
<button type="button" class="btn btn-small btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" data-bs-auto-close="outside">
|
class="btn btn-small btn-primary dropdown-toggle"
|
||||||
<i class="bi bi-funnel-fill"></i>
|
data-bs-toggle="dropdown"
|
||||||
|
aria-expanded="false"
|
||||||
|
data-bs-auto-close="outside"
|
||||||
|
>
|
||||||
|
<i class="bi bi-funnel-fill"></i>
|
||||||
|
</button>
|
||||||
|
<form class="dropdown-menu p-4" id="frmFilter">
|
||||||
|
<div class="mb-1">
|
||||||
|
<div class="form-check">
|
||||||
|
<input
|
||||||
|
checked="true"
|
||||||
|
type="checkbox"
|
||||||
|
class="form-check-input"
|
||||||
|
id="chkMessage"
|
||||||
|
/>
|
||||||
|
<label class="form-check-label" for="chkMessage">
|
||||||
|
Messages
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-1">
|
||||||
|
<div class="form-check">
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
class="form-check-input"
|
||||||
|
id="chkPing"
|
||||||
|
/>
|
||||||
|
<label class="form-check-label" for="chkPing">
|
||||||
|
Pings
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-1">
|
||||||
|
<div class="form-check">
|
||||||
|
<input
|
||||||
|
checked="true"
|
||||||
|
type="checkbox"
|
||||||
|
class="form-check-input"
|
||||||
|
id="chkPingAck"
|
||||||
|
/>
|
||||||
|
<label class="form-check-label" for="chkPingAck">
|
||||||
|
Ping-Acks
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-1">
|
||||||
|
<div class="form-check">
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
class="form-check-input"
|
||||||
|
id="chkBeacon"
|
||||||
|
/>
|
||||||
|
<label class="form-check-label" for="chkBeacon">
|
||||||
|
Beacons
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button type="button" class="btn btn-primary" id="btnFilter">
|
||||||
|
Refresh
|
||||||
</button>
|
</button>
|
||||||
<form class="dropdown-menu p-4" id="frmFilter">
|
</form>
|
||||||
<div class="mb-1">
|
|
||||||
<div class="form-check">
|
|
||||||
<input checked="true" type="checkbox" class="form-check-input" id="chkMessage">
|
|
||||||
<label class="form-check-label" for="chkMessage">
|
|
||||||
Messages
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-1">
|
|
||||||
<div class="form-check">
|
|
||||||
<input type="checkbox" class="form-check-input" id="chkPing">
|
|
||||||
<label class="form-check-label" for="chkPing">
|
|
||||||
Pings
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-1">
|
|
||||||
<div class="form-check">
|
|
||||||
<input checked="true" type="checkbox" class="form-check-input" id="chkPingAck">
|
|
||||||
<label class="form-check-label" for="chkPingAck">
|
|
||||||
Ping-Acks
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-1">
|
|
||||||
<div class="form-check">
|
|
||||||
<input type="checkbox" class="form-check-input" id="chkBeacon">
|
|
||||||
<label class="form-check-label" for="chkBeacon">
|
|
||||||
Beacons
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<button type="button" class="btn btn-primary" id="btnFilter">Refresh</button>
|
|
||||||
|
|
||||||
</form>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<hr class="m-0" />
|
<hr class="m-0" />
|
||||||
|
@ -256,8 +280,8 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- user modal -->
|
<!-- user modal -->
|
||||||
<div
|
<div
|
||||||
class="modal fade"
|
class="modal fade"
|
||||||
id="userModal"
|
id="userModal"
|
||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
|
@ -267,7 +291,9 @@
|
||||||
<div class="modal-dialog">
|
<div class="modal-dialog">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h1 class="modal-title fs-5" id="userModalLabel">My station info</h1>
|
<h1 class="modal-title fs-5" id="userModalLabel">
|
||||||
|
My station info
|
||||||
|
</h1>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
|
@ -275,128 +301,124 @@
|
||||||
data-bs-dismiss="modal"
|
data-bs-dismiss="modal"
|
||||||
aria-label="Close"
|
aria-label="Close"
|
||||||
></button>
|
></button>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
|
|
||||||
<div class="input-group input-group-sm mb-1">
|
|
||||||
<span class="input-group-text w-25">Callsign</span>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
class="form-control"
|
|
||||||
placeholder="Callsign"
|
|
||||||
id="user_info_callsign"
|
|
||||||
aria-label="Name"
|
|
||||||
aria-describedby="basic-addon1"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="input-group input-group-sm mb-1">
|
<div class="input-group input-group-sm mb-1">
|
||||||
<span class="input-group-text w-25">Name</span>
|
<span class="input-group-text w-25">Callsign</span>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
placeholder="Name"
|
placeholder="Callsign"
|
||||||
id="user_info_name"
|
id="user_info_callsign"
|
||||||
aria-label="Name"
|
aria-label="Name"
|
||||||
aria-describedby="basic-addon1"
|
aria-describedby="basic-addon1"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="input-group input-group-sm mb-1">
|
<div class="input-group input-group-sm mb-1">
|
||||||
<span class="input-group-text w-25">Age</span>
|
<span class="input-group-text w-25">Name</span>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
placeholder="Age"
|
placeholder="Name"
|
||||||
id="user_info_age"
|
id="user_info_name"
|
||||||
aria-label="Name"
|
aria-label="Name"
|
||||||
aria-describedby="basic-addon1"
|
aria-describedby="basic-addon1"
|
||||||
/>
|
/>
|
||||||
</div>
|
|
||||||
<div class="input-group input-group-sm mb-1">
|
|
||||||
<span class="input-group-text w-25">Gridsquare</span>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
class="form-control"
|
|
||||||
placeholder="Gridsquare"
|
|
||||||
id="user_info_gridsquare"
|
|
||||||
aria-label="Name"
|
|
||||||
aria-describedby="basic-addon1"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="input-group input-group-sm mb-1">
|
|
||||||
<span class="input-group-text w-25">Location</span>
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
class="form-control"
|
|
||||||
placeholder="Location"
|
|
||||||
id="user_info_location"
|
|
||||||
aria-label="Name"
|
|
||||||
aria-describedby="basic-addon1"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="input-group input-group-sm mb-1">
|
<div class="input-group input-group-sm mb-1">
|
||||||
<span class="input-group-text w-25">Radio</span>
|
<span class="input-group-text w-25">Age</span>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
placeholder="Radio"
|
placeholder="Age"
|
||||||
id="user_info_radio"
|
id="user_info_age"
|
||||||
aria-label="Name"
|
aria-label="Name"
|
||||||
aria-describedby="basic-addon1"
|
aria-describedby="basic-addon1"
|
||||||
/>
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="input-group input-group-sm mb-1">
|
||||||
|
<span class="input-group-text w-25">Gridsquare</span>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
placeholder="Gridsquare"
|
||||||
|
id="user_info_gridsquare"
|
||||||
|
aria-label="Name"
|
||||||
|
aria-describedby="basic-addon1"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="input-group input-group-sm mb-1">
|
||||||
|
<span class="input-group-text w-25">Location</span>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
placeholder="Location"
|
||||||
|
id="user_info_location"
|
||||||
|
aria-label="Name"
|
||||||
|
aria-describedby="basic-addon1"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="input-group input-group-sm mb-1">
|
<div class="input-group input-group-sm mb-1">
|
||||||
<span class="input-group-text w-25">Antenna</span>
|
<span class="input-group-text w-25">Radio</span>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
placeholder="Antenna"
|
placeholder="Radio"
|
||||||
id="user_info_antenna"
|
id="user_info_radio"
|
||||||
aria-label="Name"
|
aria-label="Name"
|
||||||
aria-describedby="basic-addon1"
|
aria-describedby="basic-addon1"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="input-group input-group-sm mb-1">
|
<div class="input-group input-group-sm mb-1">
|
||||||
<span class="input-group-text w-25">Email</span>
|
<span class="input-group-text w-25">Antenna</span>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
placeholder="Email"
|
placeholder="Antenna"
|
||||||
id="user_info_email"
|
id="user_info_antenna"
|
||||||
aria-label="Name"
|
aria-label="Name"
|
||||||
aria-describedby="basic-addon1"
|
aria-describedby="basic-addon1"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="input-group input-group-sm mb-1">
|
<div class="input-group input-group-sm mb-1">
|
||||||
<span class="input-group-text w-25">Website</span>
|
<span class="input-group-text w-25">Email</span>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
placeholder="Website"
|
placeholder="Email"
|
||||||
id="user_info_website"
|
id="user_info_email"
|
||||||
aria-label="Name"
|
aria-label="Name"
|
||||||
aria-describedby="basic-addon1"
|
aria-describedby="basic-addon1"
|
||||||
/>
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="input-group input-group-sm mb-1">
|
||||||
|
<span class="input-group-text w-25">Website</span>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="form-control"
|
||||||
|
placeholder="Website"
|
||||||
|
id="user_info_website"
|
||||||
|
aria-label="Name"
|
||||||
|
aria-describedby="basic-addon1"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-group input-group-sm mb-1">
|
<div class="input-group input-group-sm mb-1">
|
||||||
<span class="input-group-text w-25">Comments</span>
|
<span class="input-group-text w-25">Comments</span>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
placeholder="Comments"
|
placeholder="Comments"
|
||||||
id="user_info_comments"
|
id="user_info_comments"
|
||||||
aria-label="Name"
|
aria-label="Name"
|
||||||
aria-describedby="basic-addon1"
|
aria-describedby="basic-addon1"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
|
@ -412,8 +434,8 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- dx user modal -->
|
<!-- dx user modal -->
|
||||||
<div
|
<div
|
||||||
class="modal fade"
|
class="modal fade"
|
||||||
id="userModalDX"
|
id="userModalDX"
|
||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
|
@ -431,15 +453,9 @@
|
||||||
data-bs-dismiss="modal"
|
data-bs-dismiss="modal"
|
||||||
aria-label="Close"
|
aria-label="Close"
|
||||||
></button>
|
></button>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">Future feature... be patient :-)</div>
|
||||||
|
|
||||||
Future feature... be patient :-)
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
|
@ -455,7 +471,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- user shared folder -->
|
<!-- user shared folder -->
|
||||||
<div
|
<div
|
||||||
class="modal fade"
|
class="modal fade"
|
||||||
id="sharedFolderModal"
|
id="sharedFolderModal"
|
||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
|
@ -465,7 +481,9 @@
|
||||||
<div class="modal-dialog">
|
<div class="modal-dialog">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h1 class="modal-title fs-5" id="sharedFolderModalLabel">My Shared folder</h1>
|
<h1 class="modal-title fs-5" id="sharedFolderModalLabel">
|
||||||
|
My Shared folder
|
||||||
|
</h1>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
|
@ -473,15 +491,9 @@
|
||||||
data-bs-dismiss="modal"
|
data-bs-dismiss="modal"
|
||||||
aria-label="Close"
|
aria-label="Close"
|
||||||
></button>
|
></button>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">Future feature... be patient :-)</div>
|
||||||
|
|
||||||
Future feature... be patient :-)
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
|
@ -497,7 +509,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- dx user shared folder -->
|
<!-- dx user shared folder -->
|
||||||
<div
|
<div
|
||||||
class="modal fade"
|
class="modal fade"
|
||||||
id="sharedFolderModalDX"
|
id="sharedFolderModalDX"
|
||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
|
@ -507,7 +519,9 @@
|
||||||
<div class="modal-dialog">
|
<div class="modal-dialog">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h1 class="modal-title fs-5" id="sharedFolderModalDXLabel">Shared folder</h1>
|
<h1 class="modal-title fs-5" id="sharedFolderModalDXLabel">
|
||||||
|
Shared folder
|
||||||
|
</h1>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
|
@ -515,15 +529,9 @@
|
||||||
data-bs-dismiss="modal"
|
data-bs-dismiss="modal"
|
||||||
aria-label="Close"
|
aria-label="Close"
|
||||||
></button>
|
></button>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">Future feature... be patient :-)</div>
|
||||||
|
|
||||||
Future feature... be patient :-)
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
|
|
Loading…
Reference in a new issue