Merge branch 'ls-arq' of github.com:DJ2LS/FreeDATA into ls-arq

This commit is contained in:
Mashintime 2023-02-18 21:05:28 -05:00
commit 3aca773cd6
3 changed files with 317 additions and 33 deletions

View file

@ -44,6 +44,7 @@ var lastIsWritingBroadcast = new Date().getTime();
// -----------------------------------
var chatDB = path.join(configFolder, "chatDB");
var userDB = path.join(configFolder, "chatDB");
// ---- MessageDB
try {
var PouchDB = require("pouchdb");
@ -63,6 +64,7 @@ PouchDB.plugin(require("pouchdb-find"));
//PouchDB.plugin(require('pouchdb-replication'));
var db = new PouchDB(chatDB);
var users = new PouchDB(userDB);
/*
// REMOTE SYNC ATTEMPTS
@ -107,6 +109,7 @@ db.sync('http://172.20.10.4:5984/jojo', {
*/
var dxcallsigns = new Set();
/* -------- CREATE DATABASE INDEXES */
db.createIndex({
index: {
fields: [
@ -133,6 +136,33 @@ db.createIndex({
console.log(err);
});
users
.createIndex({
index: {
fields: [
"timestamp",
"callsign",
"gridsquare",
"name",
"age",
"location",
"radio",
"antenna",
"email",
"website",
"comments",
"_attachments",
],
},
})
.then(function (result) {
// handle result
console.log(result);
})
.catch(function (err) {
console.log(err);
});
db.find({
selector: {
timestamp: {
@ -174,6 +204,67 @@ window.addEventListener("DOMContentLoaded", () => {
document.getElementById("bootstrap_theme").href = theme_path;
}
console.log(config.mycall);
users
.find({
selector: {
callsign: config.mycall,
},
})
.then(function (result) {
// handle result
document.getElementById("user_info_callsign").value =
result.docs[0].callsign;
document.getElementById("user_info_gridsquare").value =
result.docs[0].gridsquare;
document.getElementById("user_info_name").value = result.docs[0].name;
document.getElementById("user_info_age").value = result.docs[0].age;
document.getElementById("user_info_location").value =
result.docs[0].location;
document.getElementById("user_info_radio").value = result.docs[0].radio;
document.getElementById("user_info_antenna").value =
result.docs[0].antenna;
document.getElementById("user_info_email").value = result.docs[0].email;
document.getElementById("user_info_website").value =
result.docs[0].website;
document.getElementById("user_info_comments").value =
result.docs[0].comments;
})
.catch(function (err) {
console.log(err);
});
const userInfoFields = [
"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",
];
// user info bulk event listener for saving settings
userInfoFields.forEach(function (elem) {
try {
document.getElementById(elem).addEventListener("change", function () {
//config[elem] = document.getElementById(elem).value;
let obj = new Object();
userInfoFields.forEach(function (subelem) {
obj[subelem] = document.getElementById(subelem).value;
});
addUserToDatabaseIfNotExists(obj);
});
} catch (e) {
console.log(e);
console.log(elem);
}
});
document
.querySelector("emoji-picker")
.addEventListener("emoji-click", (event) => {
@ -1202,6 +1293,80 @@ add_obj_to_database = function (obj) {
});
};
/* users database functions */
addUserToDatabaseIfNotExists = function (obj) {
/*
"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",
*/
users
.find({
selector: {
callsign: obj.user_info_callsign,
},
})
.then(function (result) {
// handle result
console.log(result);
console.log(result.docs.length);
if (result.docs.length > 0) {
users
.put({
_id: result.docs[0]._id,
_rev: result.docs[0]._rev,
callsign: obj.user_info_callsign,
gridsquare: obj.user_info_gridsquare,
name: obj.user_info_name,
age: obj.user_info_age,
location: obj.user_info_location,
radio: obj.user_info_radio,
antenna: obj.user_info_antenna,
email: obj.user_info_email,
website: obj.user_info_website,
comments: obj.user_info_comments,
})
.then(function (response) {
console.log("UPDATED USER");
})
.catch(function (err) {
console.log(err);
});
} else {
users
.post({
callsign: obj.user_info_callsign,
gridsquare: obj.user_info_gridsquare,
name: obj.user_info_name,
age: obj.user_info_age,
location: obj.user_info_location,
radio: obj.user_info_radio,
antenna: obj.user_info_antenna,
email: obj.user_info_email,
website: obj.user_info_website,
comments: obj.user_info_comments,
})
.then(function (response) {
console.log("NEW USER ADDED");
})
.catch(function (err) {
console.log(err);
});
}
})
.catch(function (err) {
console.log(err);
});
};
// Scroll to bottom of message-container
function scrollMessagesToBottom() {
var messageBody = document.getElementById("message-container");

View file

@ -241,7 +241,125 @@
<div class="container-fluid">
Future feature... be patient :-)
<hr>
<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">
<span class="input-group-text w-25">Name</span>
<input
type="text"
class="form-control"
placeholder="Name"
id="user_info_name"
aria-label="Name"
aria-describedby="basic-addon1"
/>
</div>
<div class="input-group input-group-sm mb-1">
<span class="input-group-text w-25">Age</span>
<input
type="text"
class="form-control"
placeholder="Age"
id="user_info_age"
aria-label="Name"
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 class="input-group input-group-sm mb-1">
<span class="input-group-text w-25">Radio</span>
<input
type="text"
class="form-control"
placeholder="Radio"
id="user_info_radio"
aria-label="Name"
aria-describedby="basic-addon1"
/>
</div>
<div class="input-group input-group-sm mb-1">
<span class="input-group-text w-25">Antenna</span>
<input
type="text"
class="form-control"
placeholder="Antenna"
id="user_info_antenna"
aria-label="Name"
aria-describedby="basic-addon1"
/>
</div>
<div class="input-group input-group-sm mb-1">
<span class="input-group-text w-25">Email</span>
<input
type="text"
class="form-control"
placeholder="Email"
id="user_info_email"
aria-label="Name"
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 class="input-group input-group-sm mb-1">
<span class="input-group-text w-25">Comments</span>
<input
type="text"
class="form-control"
placeholder="Comments"
id="user_info_comments"
aria-label="Name"
aria-describedby="basic-addon1"
/>
</div>
</div>
<div class="modal-footer">
<button

View file

@ -100,12 +100,13 @@ class CONFIG:
"""
for i in range(0,2):
for _ in range(2):
try:
if default in ["True", "true", True, "False", "false", False]:
parameter = self.config[area][key] in ["True", "true", True]
else:
parameter = self.config[area][key]
parameter = (
self.config[area][key] in ["True", "true", True]
if default in ["True", "true", True, "False", "false", False]
else self.config[area][key]
)
except KeyError:
self.config[area][key] = str(default)