diff --git a/gui/preload-chat.js b/gui/preload-chat.js index eb4ee186..68bd5d4e 100644 --- a/gui/preload-chat.js +++ b/gui/preload-chat.js @@ -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) => { @@ -439,7 +530,7 @@ ipcRenderer.on("return-selected-files", (event, arg) => { document.getElementById("selectFilesButton").innerHTML = ` New file selected - + `; }); ipcRenderer.on("action-update-transmission-status", (event, arg) => { @@ -483,7 +574,7 @@ ipcRenderer.on("action-show-feciswriting", (event, arg) => { var new_message = `

${dxcallsign} is typing....

- +
`; var id = "chat-" + dxcallsign; @@ -669,7 +760,7 @@ update_chat = function (obj) { `; var controlarea_receive = ` - +
@@ -708,14 +799,14 @@ update_chat = function (obj) { var new_callsign = ` - +
${dxcallsign}
- ${dxgrid} + ${dxgrid} ${timestampHours} ${shortmsg}
@@ -727,7 +818,7 @@ update_chat = function (obj) { .getElementById("list-tab") .insertAdjacentHTML("beforeend", new_callsign); var message_area = ` -
+
`; document .getElementById("nav-tabContent") @@ -761,15 +852,15 @@ update_chat = function (obj) { if (!document.getElementById("msg-" + obj._id)) { if (obj.type == "ping") { var new_message = ` -
+

snr: ${obj.snr} - ${timestamp}

- +
`; } if (obj.type == "beacon") { var new_message = ` -
+

snr: ${obj.snr} - ${timestamp}

`; @@ -777,7 +868,7 @@ update_chat = function (obj) { if (obj.type == "newchat") { var new_message = ` -
+

new chat opened - ${timestamp}

`; @@ -789,17 +880,17 @@ update_chat = function (obj) { if (obj.type == "received") { var new_message = `
- -
+ +
${fileheader} - +

${message_html}

- ${timestamp} - + ${timestamp} +

@@ -826,9 +917,9 @@ update_chat = function (obj) { var new_message = `
- + ${controlarea_transmit} - +
@@ -836,12 +927,12 @@ update_chat = function (obj) { obj._id }"> ${fileheader} - +

${message_html}

${timestamp} - - + ${get_icon_for_state( @@ -851,9 +942,9 @@ update_chat = function (obj) { - +

- +
${obj.percent} % - ${obj.bytesperminute} Bpm - +

- - - + + +
- +
- +
`; @@ -1069,7 +1160,7 @@ if ( // error console.log(err); binaryString = blobUtil.arrayBufferToBinaryString(data); - + }).then(function(){ console.log(binaryString) @@ -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"); diff --git a/gui/src/chat-module.html b/gui/src/chat-module.html index 26ee8f98..f118b0bb 100644 --- a/gui/src/chat-module.html +++ b/gui/src/chat-module.html @@ -241,7 +241,125 @@
Future feature... be patient :-) +
+
+ Callsign + +
+ + +
+ Name + +
+ +
+ Age + +
+
+ Gridsquare + +
+
+ Location + +
+ +
+ Radio + +
+ +
+ Antenna + +
+ +
+ Email + +
+ +
+ Website + +
+
+ Comments + +