mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
first attempt moving chat to main - still broken
This commit is contained in:
parent
f3e9a54216
commit
d74ff49b55
4 changed files with 855 additions and 22 deletions
40
gui/main.js
40
gui/main.js
|
@ -212,7 +212,7 @@ function createWindow() {
|
|||
})
|
||||
*/
|
||||
win.loadFile("src/index.html");
|
||||
|
||||
/*
|
||||
chat = new BrowserWindow({
|
||||
height: 600,
|
||||
width: 1000,
|
||||
|
@ -226,6 +226,8 @@ function createWindow() {
|
|||
|
||||
chat.loadFile("src/chat-module.html");
|
||||
chat.setMenuBarVisibility(false);
|
||||
*/
|
||||
|
||||
|
||||
logViewer = new BrowserWindow({
|
||||
height: 900,
|
||||
|
@ -297,13 +299,15 @@ function createWindow() {
|
|||
//autoUpdater.quitAndInstall();
|
||||
});
|
||||
|
||||
chat.on("closed", function () {});
|
||||
//chat.on("closed", function () {});
|
||||
|
||||
// https://stackoverflow.com/questions/44258831/only-hide-the-window-when-closing-it-electron
|
||||
/*
|
||||
chat.on("close", function (evt) {
|
||||
evt.preventDefault();
|
||||
chat.hide();
|
||||
});
|
||||
*/
|
||||
}
|
||||
|
||||
app.whenReady().then(() => {
|
||||
|
@ -399,7 +403,7 @@ app.on("window-all-closed", () => {
|
|||
ipcMain.on("set-config-global", (event, data) => {
|
||||
config = data;
|
||||
win.webContents.send("update-config", config);
|
||||
chat.webContents.send("update-config", config);
|
||||
//chat.webContents.send("update-config", config);
|
||||
//console.log("set-config-global called");
|
||||
});
|
||||
|
||||
|
@ -409,12 +413,12 @@ ipcMain.on("request-show-electron-progressbar", (event, data) => {
|
|||
});
|
||||
|
||||
ipcMain.on("request-show-chat-window", () => {
|
||||
chat.show();
|
||||
//chat.show();
|
||||
});
|
||||
|
||||
ipcMain.on("request-clear-chat-connected", () => {
|
||||
//Clear chat window's connected with text
|
||||
chat.webContents.send("action-clear-reception-status");
|
||||
//chat.webContents.send("action-clear-reception-status");
|
||||
});
|
||||
|
||||
ipcMain.on("request-update-dbclean-spinner", () => {
|
||||
|
@ -478,26 +482,26 @@ ipcMain.on("request-update-rx-buffer", (event, arg) => {
|
|||
|
||||
/*
|
||||
ipcMain.on('request-update-rx-msg-buffer', (event, arg) => {
|
||||
chat.webContents.send('action-update-rx-msg-buffer', arg);
|
||||
//chat.webContents.send('action-update-rx-msg-buffer', arg);
|
||||
});
|
||||
*/
|
||||
ipcMain.on("request-new-msg-received", (event, arg) => {
|
||||
chat.webContents.send("action-new-msg-received", arg);
|
||||
//chat.webContents.send("action-new-msg-received", arg);
|
||||
});
|
||||
ipcMain.on("request-update-transmission-status", (event, arg) => {
|
||||
chat.webContents.send("action-update-transmission-status", arg);
|
||||
//chat.webContents.send("action-update-transmission-status", arg);
|
||||
win.webContents.send("action-update-transmission-status", arg);
|
||||
});
|
||||
|
||||
ipcMain.on("request-update-reception-status", (event, arg) => {
|
||||
win.webContents.send("action-update-reception-status", arg);
|
||||
chat.webContents.send("action-update-reception-status", arg);
|
||||
//chat.webContents.send("action-update-reception-status", arg);
|
||||
});
|
||||
|
||||
//Called by main to query chat if there are new messages
|
||||
ipcMain.on("request-update-unread-messages", () => {
|
||||
//mainLog.info("Got request to check if chat has new messages")
|
||||
chat.webContents.send("action-update-unread-messages");
|
||||
//chat.webContents.send("action-update-unread-messages");
|
||||
});
|
||||
//Called by chat to notify main if there are new messages
|
||||
ipcMain.on("request-update-unread-messages-main", (event, arg) => {
|
||||
|
@ -507,7 +511,7 @@ ipcMain.on("request-update-unread-messages-main", (event, arg) => {
|
|||
|
||||
//Called by main to notify chat we should clean the DB
|
||||
ipcMain.on("request-clean-db", () => {
|
||||
chat.webContents.send("action-clean-db");
|
||||
//chat.webContents.send("action-clean-db");
|
||||
});
|
||||
|
||||
ipcMain.on("request-open-tnc-log", () => {
|
||||
|
@ -579,11 +583,13 @@ ipcMain.on("select-file", (event, data) => {
|
|||
if (mimeType == "" || mimeType == null) {
|
||||
mimeType = "plain/text";
|
||||
}
|
||||
/*
|
||||
chat.webContents.send("return-selected-files", {
|
||||
data: data,
|
||||
mime: mimeType,
|
||||
filename: filename,
|
||||
});
|
||||
*/
|
||||
});
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
|
@ -611,12 +617,13 @@ ipcMain.on("select-user-image", (event, data) => {
|
|||
if (mimeType == "" || mimeType == null) {
|
||||
mimeType = "plain/text";
|
||||
}
|
||||
|
||||
/*
|
||||
chat.webContents.send("return-select-user-image", {
|
||||
data: data,
|
||||
mime: mimeType,
|
||||
filename: filename,
|
||||
});
|
||||
*/
|
||||
});
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
|
@ -629,9 +636,11 @@ ipcMain.on("read-files-in-folder", (event, data) => {
|
|||
let fileList = [];
|
||||
if (config["enable_request_shared_folder"].toLowerCase() == "false") {
|
||||
//mainLog.info("Shared file folder is disable, not populating fileList");
|
||||
/*
|
||||
chat.webContents.send("return-shared-folder-files", {
|
||||
files: fileList,
|
||||
});
|
||||
*/
|
||||
return;
|
||||
}
|
||||
let folder = data.folder;
|
||||
|
@ -654,10 +663,11 @@ ipcMain.on("read-files-in-folder", (event, data) => {
|
|||
console.log(err);
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
chat.webContents.send("return-shared-folder-files", {
|
||||
files: fileList,
|
||||
});
|
||||
*/
|
||||
});
|
||||
|
||||
//save file to folder
|
||||
|
@ -689,7 +699,7 @@ ipcMain.on("save-file-to-folder", (event, data) => {
|
|||
// FEC iswriting received
|
||||
ipcMain.on("request-show-fec-toast-iswriting", (event, data) => {
|
||||
win.webContents.send("action-show-fec-toast-iswriting", data);
|
||||
chat.webContents.send("action-show-feciswriting", data);
|
||||
//chat.webContents.send("action-show-feciswriting", data);
|
||||
});
|
||||
|
||||
// CQ TRANSMITTING
|
||||
|
@ -934,7 +944,7 @@ function close_all() {
|
|||
mainLog.warn("quitting app");
|
||||
|
||||
win.destroy();
|
||||
chat.destroy();
|
||||
//chat.destroy();
|
||||
logViewer.destroy();
|
||||
meshViewer.destroy();
|
||||
|
||||
|
|
|
@ -1258,13 +1258,13 @@ update_chat = function (obj) {
|
|||
`;
|
||||
|
||||
document
|
||||
.getElementById("list-tab")
|
||||
.getElementById("list-tab-chat")
|
||||
.insertAdjacentHTML("beforeend", new_callsign);
|
||||
var message_area = `
|
||||
<div class="tab-pane fade ${callsign_selected}" id="chat-${dxcallsign}" role="tabpanel" aria-labelledby="chat-${dxcallsign}-list"></div>
|
||||
`;
|
||||
document
|
||||
.getElementById("nav-tabContent")
|
||||
.getElementById("nav-tabContent-Chat")
|
||||
.insertAdjacentHTML("beforeend", message_area);
|
||||
|
||||
// finally get and set user information to first selected item
|
||||
|
@ -2246,9 +2246,9 @@ async function updateAllChat(clear) {
|
|||
callsign_counter = 0;
|
||||
//selected_callsign = "";
|
||||
dxcallsigns.clear();
|
||||
document.getElementById("list-tab").innerHTML = "";
|
||||
document.getElementById("nav-tabContent").innerHTML = "";
|
||||
//document.getElementById("list-tab").childNodes.remove();
|
||||
document.getElementById("list-tab-chat").innerHTML = "";
|
||||
document.getElementById("nav-tabContent-Chat").innerHTML = "";
|
||||
//document.getElementById("list-tab-chat").childNodes.remove();
|
||||
//document.getElementById("nav-tab-content").childrenNodes.remove();
|
||||
}
|
||||
//Ensure we create an index before running db.find
|
||||
|
|
|
@ -3,6 +3,12 @@ const { ipcRenderer, shell, clipboard } = require("electron");
|
|||
const exec = require("child_process").spawn;
|
||||
const sock = require("./sock.js");
|
||||
const daemon = require("./daemon.js");
|
||||
|
||||
|
||||
require("./preload-chat.js");
|
||||
|
||||
|
||||
|
||||
const fs = require("fs");
|
||||
const FD = require("./freedata");
|
||||
const {
|
||||
|
@ -1751,7 +1757,7 @@ window.addEventListener("DOMContentLoaded", () => {
|
|||
let Data = {
|
||||
command: "openRFChat",
|
||||
};
|
||||
ipcRenderer.send("request-show-chat-window", Data);
|
||||
//ipcRenderer.send("request-show-chat-window", Data);
|
||||
});
|
||||
|
||||
document.getElementById("thTime").addEventListener("click", () => {
|
||||
|
|
|
@ -1286,7 +1286,815 @@
|
|||
</div>
|
||||
|
||||
</div>
|
||||
<div class="tab-pane fade" id="list-messages" role="tabpanel" aria-labelledby="list-messages-list">...</div>
|
||||
<div class="tab-pane fade" id="list-messages" role="tabpanel" aria-labelledby="list-messages-list">
|
||||
|
||||
<div
|
||||
class="position-absolute container w-100 h-100 bottom-0 end-0 mb-5"
|
||||
style="z-index: 100; display: none"
|
||||
id="emojipickercontainer"
|
||||
>
|
||||
<emoji-picker
|
||||
locale="en"
|
||||
class="position-absolute bottom-0 end-0 p-1 mb-2"
|
||||
data-source="../node_modules/emoji-picker-element-data/en/emojibase/data.json"
|
||||
></emoji-picker>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
<div class="row h-100">
|
||||
<div class="col-4 p-2">
|
||||
<! ------Chats area ---------------------------------------------------------------------->
|
||||
<div class="container-fluid m-0 p-0">
|
||||
<div class="input-group bottom-0 m-0 w-100">
|
||||
<input
|
||||
class="form-control w-50"
|
||||
maxlength="9"
|
||||
style="text-transform: uppercase"
|
||||
id="chatModuleNewDxCall"
|
||||
placeholder="DX CALL"
|
||||
/>
|
||||
<button
|
||||
class="btn btn-sm btn-success"
|
||||
id="createNewChatButton"
|
||||
type="button"
|
||||
title="Start a new chat (enter dx call sign first)"
|
||||
>
|
||||
<i class="bi bi-pencil-square" style="font-size: 1.2rem"></i>
|
||||
</button>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
id="userModalButton"
|
||||
data-bs-toggle="modal"
|
||||
data-bs-target="#userModal"
|
||||
class="btn btn-sm btn-primary ms-2"
|
||||
title="My station info"
|
||||
>
|
||||
<i class="bi bi-person" style="font-size: 1.2rem"></i>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
id="sharedFolderButton"
|
||||
data-bs-toggle="modal"
|
||||
data-bs-target="#sharedFolderModal"
|
||||
class="btn btn-sm btn-primary"
|
||||
title="My shared folder"
|
||||
>
|
||||
<i class="bi bi-files" style="font-size: 1.2rem"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="m-2" />
|
||||
<div class="overflow-auto vh-100">
|
||||
<div
|
||||
class="list-group overflow-auto"
|
||||
id="list-tab-chat"
|
||||
role="tablist"
|
||||
style="height: calc(100vh - 70px)"
|
||||
></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-8 border vh-100 p-0">
|
||||
<! ------ chat navbar ---------------------------------------------------------------------->
|
||||
<div class="container-fluid m-2 p-0">
|
||||
<div class="input-group bottom-0">
|
||||
<button
|
||||
class="btn btn-sm btn-outline-secondary me"
|
||||
id="ping"
|
||||
type="button"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-trigger="hover"
|
||||
data-bs-html="false"
|
||||
title="Ping remote station"
|
||||
>
|
||||
Ping
|
||||
</button>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
id="userModalDXButton"
|
||||
data-bs-toggle="modal"
|
||||
data-bs-target="#userModalDX"
|
||||
class="btn btn-sm btn-outline-secondary"
|
||||
title="Request remote station's information"
|
||||
>
|
||||
<i class="bi bi-person" style="font-size: 1.2rem"></i>
|
||||
</button>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
id="sharedFolderDXButton"
|
||||
data-bs-toggle="modal"
|
||||
data-bs-target="#sharedFolderModalDX"
|
||||
class="btn btn-sm btn-outline-secondary me-2"
|
||||
title="Request remote station's shared files"
|
||||
>
|
||||
<i class="bi bi-files" style="font-size: 1.2rem"></i>
|
||||
</button>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-small btn-outline-primary dropdown-toggle me-2"
|
||||
data-bs-toggle="dropdown"
|
||||
aria-expanded="false"
|
||||
data-bs-auto-close="outside"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-trigger="hover"
|
||||
data-bs-html="false"
|
||||
title="Message filter"
|
||||
>
|
||||
<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">
|
||||
All Messages
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-1">
|
||||
<div class="form-check">
|
||||
<input
|
||||
checked="false"
|
||||
type="checkbox"
|
||||
class="form-check-input"
|
||||
id="chkNewMessage"
|
||||
/>
|
||||
|
||||
<label class="form-check-label" for="chkNewMessage">
|
||||
Unread 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>
|
||||
<div class="mb-1">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="checkbox"
|
||||
class="form-check-input"
|
||||
id="chkRequest"
|
||||
/>
|
||||
<label class="form-check-label" for="chkRequest">
|
||||
Requests
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-1">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="checkbox"
|
||||
class="form-check-input"
|
||||
id="chkResponse"
|
||||
/>
|
||||
<label class="form-check-label" for="chkResponse">
|
||||
Responses
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<button type="button" class="btn btn-primary" id="btnFilter">
|
||||
Refresh
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<button
|
||||
id="chatSettingsDropDown"
|
||||
type="button"
|
||||
class="btn btn-outline-secondary dropdown-toggle"
|
||||
data-bs-toggle="dropdown"
|
||||
aria-expanded="false"
|
||||
title="More options...."
|
||||
>
|
||||
<i class="bi bi-three-dots-vertical"></i>
|
||||
</button>
|
||||
<ul class="dropdown-menu" aria-labelledby="chatSettingsDropDown">
|
||||
<li>
|
||||
<a
|
||||
class="dropdown-item bg-danger text-white"
|
||||
id="delete_selected_chat"
|
||||
href="#"
|
||||
><i class="bi bi-person-x" style="font-size: 1rem"></i>
|
||||
Delete chat</a
|
||||
>
|
||||
</li>
|
||||
<div class="dropdown-divider"></div>
|
||||
<li>
|
||||
<button
|
||||
class="dropdown-item"
|
||||
id="openHelpModalchat"
|
||||
data-bs-toggle="modal"
|
||||
data-bs-target="#chatHelpModal"
|
||||
>
|
||||
<i
|
||||
class="bi bi-question-circle"
|
||||
style="font-size: 1rem"
|
||||
></i>
|
||||
Help
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<span
|
||||
class="input-group-text ms-2"
|
||||
id="txtConnectedWithChat"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-trigger="hover"
|
||||
title="Connected with"
|
||||
>------</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class="m-0" />
|
||||
<! ------messages area ---------------------------------------------------------------------->
|
||||
<div
|
||||
class="container overflow-auto"
|
||||
id="message-container"
|
||||
style="height: calc(100% - 150px)"
|
||||
>
|
||||
<div class="tab-content" id="nav-tabContent-Chat"></div>
|
||||
<!--<div class="container position-absolute bottom-0">-->
|
||||
</div>
|
||||
<!-- </div>-->
|
||||
<div class="container-fluid mt-2 p-0">
|
||||
<input
|
||||
type="checkbox"
|
||||
id="expand_textarea"
|
||||
class="btn-check"
|
||||
autocomplete="off"
|
||||
/>
|
||||
<label
|
||||
class="btn d-flex justify-content-center"
|
||||
id="expand_textarea_label"
|
||||
for="expand_textarea"
|
||||
><i
|
||||
id="expand_textarea_button"
|
||||
class="bi bi-chevron-compact-up"
|
||||
></i
|
||||
></label>
|
||||
|
||||
<div class="input-group bottom-0 ms-2">
|
||||
<!--<input class="form-control" maxlength="8" style="max-width: 6rem; text-transform:uppercase; display:none" id="chatModuleDxCall" placeholder="DX CALL"></input>-->
|
||||
<!--<button class="btn btn-sm btn-primary me-2" id="emojipickerbutton" type="button">-->
|
||||
<div class="input-group-text">
|
||||
<i
|
||||
id="emojipickerbutton"
|
||||
class="bi bi-emoji-smile p-0"
|
||||
style="font-size: 1rem"
|
||||
></i>
|
||||
</div>
|
||||
|
||||
<textarea
|
||||
class="form-control"
|
||||
rows="1"
|
||||
id="chatModuleMessage"
|
||||
placeholder="Message - Send with [Enter]"
|
||||
></textarea>
|
||||
|
||||
<div class="input-group-text me-3">
|
||||
<i
|
||||
class="bi bi-paperclip"
|
||||
style="font-size: 1rem"
|
||||
id="selectFilesButton"
|
||||
></i>
|
||||
|
||||
<button
|
||||
class="btn btn-sm btn-secondary d-none invisible"
|
||||
id="sendMessage"
|
||||
type="button"
|
||||
>
|
||||
<i class="bi bi-send" style="font-size: 1.2rem"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- user modal -->
|
||||
|
||||
<div
|
||||
class="modal fade"
|
||||
id="userModal"
|
||||
tabindex="-1"
|
||||
aria-labelledby="userModalLabel"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="modal-dialog" style="max-width: 600px">
|
||||
<div class="modal-content">
|
||||
<div class="card mb-1 border-0">
|
||||
<div class="row g-0">
|
||||
<div class="col-md-4">
|
||||
<div class="row position-relative p-0 m-0">
|
||||
<div class="col p-0 m-0">
|
||||
<img
|
||||
src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktcGVyc29uLWJvdW5kaW5nLWJveCIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBkPSJNMS41IDFhLjUuNSAwIDAgMC0uNS41djNhLjUuNSAwIDAgMS0xIDB2LTNBMS41IDEuNSAwIDAgMSAxLjUgMGgzYS41LjUgMCAwIDEgMCAxaC0zek0xMSAuNWEuNS41IDAgMCAxIC41LS41aDNBMS41IDEuNSAwIDAgMSAxNiAxLjV2M2EuNS41IDAgMCAxLTEgMHYtM2EuNS41IDAgMCAwLS41LS41aC0zYS41LjUgMCAwIDEtLjUtLjV6TS41IDExYS41LjUgMCAwIDEgLjUuNXYzYS41LjUgMCAwIDAgLjUuNWgzYS41LjUgMCAwIDEgMCAxaC0zQTEuNSAxLjUgMCAwIDEgMCAxNC41di0zYS41LjUgMCAwIDEgLjUtLjV6bTE1IDBhLjUuNSAwIDAgMSAuNS41djNhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0zYS41LjUgMCAwIDEgMC0xaDNhLjUuNSAwIDAgMCAuNS0uNXYtM2EuNS41IDAgMCAxIC41LS41eiIvPgogIDxwYXRoIGQ9Ik0zIDE0cy0xIDAtMS0xIDEtNCA2LTQgNiAzIDYgNC0xIDEtMSAxSDN6bTgtOWEzIDMgMCAxIDEtNiAwIDMgMyAwIDAgMSA2IDB6Ii8+Cjwvc3ZnPg=="
|
||||
class="img-fluid rounded-start w-100"
|
||||
alt="..."
|
||||
id="user_info_image"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
class="col position-absolute image-overlay text-white justify-content-center align-items-center d-flex align-middle h-100 opacity-0"
|
||||
id="userImageSelector"
|
||||
>
|
||||
<i class="bi bi-upload" style="font-size: 2.2rem"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="card-body">
|
||||
<div class="input-group input-group-sm mb-1">
|
||||
<span class="input-group-text"
|
||||
><i class="bi bi-pass"></i
|
||||
></span>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
placeholder="Callsign"
|
||||
id="user_info_callsign"
|
||||
aria-label="Call"
|
||||
aria-describedby="basic-addon1"
|
||||
/>
|
||||
<span class="input-group-text"
|
||||
><i class="bi bi-person-vcard"></i
|
||||
></span>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
placeholder="name"
|
||||
id="user_info_name"
|
||||
aria-label="Name"
|
||||
aria-describedby="basic-addon1"
|
||||
/>
|
||||
<span class="input-group-text"
|
||||
><i class="bi bi-sunrise"></i
|
||||
></span>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
placeholder="age"
|
||||
id="user_info_age"
|
||||
aria-label="age"
|
||||
aria-describedby="basic-addon1"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="input-group input-group-sm mb-1">
|
||||
<span class="input-group-text"
|
||||
><i class="bi bi-house"></i
|
||||
></span>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
placeholder="Location"
|
||||
id="user_info_location"
|
||||
aria-label="Name"
|
||||
aria-describedby="basic-addon1"
|
||||
/>
|
||||
<span class="input-group-text"
|
||||
><i class="bi bi-pin-map"></i
|
||||
></span>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
placeholder="Grid"
|
||||
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"
|
||||
><i class="bi bi-projector"></i
|
||||
></span>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
placeholder="Radio"
|
||||
id="user_info_radio"
|
||||
aria-label="Name"
|
||||
aria-describedby="basic-addon1"
|
||||
/>
|
||||
|
||||
<span class="input-group-text"
|
||||
><i class="bi bi-broadcast-pin"></i
|
||||
></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"
|
||||
><i class="bi bi-envelope"></i
|
||||
></span>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
placeholder="Email"
|
||||
id="user_info_email"
|
||||
aria-label="Name"
|
||||
aria-describedby="basic-addon1"
|
||||
/>
|
||||
|
||||
<span class="input-group-text"
|
||||
><i class="bi bi-globe"></i
|
||||
></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"
|
||||
><i class="bi bi-info-circle"></i
|
||||
></span>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
placeholder="Comments"
|
||||
id="user_info_comments"
|
||||
aria-label="Comments"
|
||||
aria-describedby="basic-addon1"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-primary"
|
||||
data-bs-dismiss="modal"
|
||||
aria-label="Close"
|
||||
id="userInfoSave"
|
||||
>
|
||||
Save & Close
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- dx user modal -->
|
||||
<div
|
||||
class="modal fade"
|
||||
id="userModalDX"
|
||||
tabindex="-1"
|
||||
aria-labelledby="userModalDXLabel"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="modal-dialog" style="max-width: 600px">
|
||||
<div class="modal-content">
|
||||
<div class="card mb-1 border-0">
|
||||
<div class="row g-0">
|
||||
<div class="col-md-4">
|
||||
<img
|
||||
src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktcGVyc29uLWJvdW5kaW5nLWJveCIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBkPSJNMS41IDFhLjUuNSAwIDAgMC0uNS41djNhLjUuNSAwIDAgMS0xIDB2LTNBMS41IDEuNSAwIDAgMSAxLjUgMGgzYS41LjUgMCAwIDEgMCAxaC0zek0xMSAuNWEuNS41IDAgMCAxIC41LS41aDNBMS41IDEuNSAwIDAgMSAxNiAxLjV2M2EuNS41IDAgMCAxLTEgMHYtM2EuNS41IDAgMCAwLS41LS41aC0zYS41LjUgMCAwIDEtLjUtLjV6TS41IDExYS41LjUgMCAwIDEgLjUuNXYzYS41LjUgMCAwIDAgLjUuNWgzYS41LjUgMCAwIDEgMCAxaC0zQTEuNSAxLjUgMCAwIDEgMCAxNC41di0zYS41LjUgMCAwIDEgLjUtLjV6bTE1IDBhLjUuNSAwIDAgMSAuNS41djNhMS41IDEuNSAwIDAgMS0xLjUgMS41aC0zYS41LjUgMCAwIDEgMC0xaDNhLjUuNSAwIDAgMCAuNS0uNXYtM2EuNS41IDAgMCAxIC41LS41eiIvPgogIDxwYXRoIGQ9Ik0zIDE0cy0xIDAtMS0xIDEtNCA2LTQgNiAzIDYgNC0xIDEtMSAxSDN6bTgtOWEzIDMgMCAxIDEtNiAwIDMgMyAwIDAgMSA2IDB6Ii8+Cjwvc3ZnPg=="
|
||||
class="img-fluid rounded-start w-100"
|
||||
alt="..."
|
||||
id="dx_user_info_image"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="card-body">
|
||||
<h5>
|
||||
<span
|
||||
class="badge bg-secondary"
|
||||
id="dx_user_info_callsign"
|
||||
></span>
|
||||
-
|
||||
<span
|
||||
class="badge bg-secondary"
|
||||
id="dx_user_info_name"
|
||||
></span>
|
||||
<span
|
||||
class="badge bg-secondary"
|
||||
id="dx_user_info_age"
|
||||
></span>
|
||||
</h5>
|
||||
|
||||
<ul class="card-text list-unstyled">
|
||||
<li>
|
||||
<strong class="col"><i class="bi bi-house"></i> </strong
|
||||
><span id="dx_user_info_location"></span> (<span
|
||||
id="dx_user_info_gridsquare"
|
||||
></span
|
||||
>)
|
||||
</li>
|
||||
<li>
|
||||
<strong class="col"
|
||||
><i class="bi bi-envelope"></i> </strong
|
||||
><span id="dx_user_info_email"></span>
|
||||
</li>
|
||||
<li>
|
||||
<strong class="col"><i class="bi bi-globe"></i> </strong
|
||||
><span id="dx_user_info_website"></span>
|
||||
</li>
|
||||
<li>
|
||||
<strong class="col"
|
||||
><i class="bi bi-broadcast-pin"></i> </strong
|
||||
><span id="dx_user_info_antenna"></span>
|
||||
</li>
|
||||
<li>
|
||||
<strong class="col"
|
||||
><i class="bi bi-projector"></i> </strong
|
||||
><span id="dx_user_info_radio"></span>
|
||||
</li>
|
||||
<li>
|
||||
<strong class="col"
|
||||
><i class="bi bi-info-circle"></i> </strong
|
||||
><span id="dx_user_info_comments"></span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-group input-group-sm m-0 p-0">
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-warning w-75"
|
||||
aria-label="Request"
|
||||
id="requestUserInfo"
|
||||
>
|
||||
Request user data (about 20kBytes!)
|
||||
</button>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-primary w-25"
|
||||
data-bs-dismiss="modal"
|
||||
aria-label="Close"
|
||||
>
|
||||
Close
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- user shared folder -->
|
||||
<div
|
||||
class="modal fade"
|
||||
id="sharedFolderModal"
|
||||
tabindex="-1"
|
||||
aria-labelledby="sharedFolderModalLabel"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="modal-dialog modal-dialog-scrollable">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5" id="sharedFolderModalLabel">
|
||||
My Shared folder
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-primary"
|
||||
id="openSharedFilesFolder"
|
||||
>
|
||||
<i class="bi bi-archive"></i>
|
||||
</button>
|
||||
</h1>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
class="btn-close"
|
||||
data-bs-dismiss="modal"
|
||||
aria-label="Close"
|
||||
></button>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<div class="container-fluid p-0">
|
||||
<div class="center mb-1">
|
||||
<div class="badge text-bg-info">
|
||||
<i class="bi bi-info"></i> Change folder in settings!
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<!-- START OF TABLE FOR SHARED FOLDER -->
|
||||
<table
|
||||
class="table table-sm table-hover table-bordered align-middle"
|
||||
>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">#</th>
|
||||
<th scope="col">Name</th>
|
||||
<th scope="col">Type</th>
|
||||
<th scope="col">Size</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="sharedFolderTable"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- HELP MODAL -->
|
||||
<div
|
||||
class="modal fade"
|
||||
data-bs-backdrop="static"
|
||||
tabindex="-1"
|
||||
id="chatHelpModal"
|
||||
>
|
||||
<div class="modal-dialog modal-dialog-scrollable">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Chat Help</h5>
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-close"
|
||||
data-bs-dismiss="modal"
|
||||
aria-label="Close"
|
||||
></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="card mb-3">
|
||||
<div class="card-body">
|
||||
<p class="card-text">
|
||||
Welcome to the chat window. Heard stations are listed in the
|
||||
list on the left. Clicking on a station will show messages
|
||||
sent and/or received from the selected station. Additional
|
||||
help is available on various extra features below.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card mb-3">
|
||||
<div class="card-body">
|
||||
<button type="button" class="btn btn-sm btn-primary ms-2">
|
||||
<i class="bi bi-person" style="font-size: 1.2rem"></i>
|
||||
</button>
|
||||
<p class="card-text">
|
||||
Set your station information and picture. This information can
|
||||
be requested by a remote station and can be enabled/disabled
|
||||
via settings.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card mb-3">
|
||||
<div class="card-body">
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-sm btn-outline-secondary ms-2"
|
||||
>
|
||||
<i class="bi bi-person" style="font-size: 1.2rem"></i>
|
||||
</button>
|
||||
<p class="card-text">
|
||||
Request the selected station's information.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card mb-3">
|
||||
<div class="card-body">
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-sm btn-outline-secondary ms-2"
|
||||
>
|
||||
<i class="bi bi-files" style="font-size: 1.2rem"></i>
|
||||
</button>
|
||||
<p class="card-text">
|
||||
Request the selected station's shared file(s) list. Clicking
|
||||
<button type="button" class="btn btn-sm btn-primary ms-2">
|
||||
<i class="bi bi-files" style="font-size: 1.2rem"></i>
|
||||
</button>
|
||||
will allow you to preview your shared files. Shared file can
|
||||
be enabled/disabled in settings.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card mb-3">
|
||||
<div class="card-body">
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-small btn-outline-primary dropdown-toggle me-2"
|
||||
>
|
||||
<i class="bi bi-funnel-fill"></i>
|
||||
</button>
|
||||
<p class="card-text">
|
||||
The filter button allows you to show or hide certain types of
|
||||
messages. A lot of data is logged and this allows you to
|
||||
modify what is shown. By default sent and received messages
|
||||
and ping acknowlegements are displayed.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- dx user shared folder -->
|
||||
<div
|
||||
class="modal fade"
|
||||
id="sharedFolderModalDX"
|
||||
tabindex="-1"
|
||||
aria-labelledby="sharedFolderModalDXLabel"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="modal-dialog modal-dialog-scrollable">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5" id="sharedFolderModalDXLabel">
|
||||
Shared folder
|
||||
</h1>
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-primary m-2"
|
||||
aria-label="Request"
|
||||
id="requestSharedFolderList"
|
||||
>
|
||||
<i class="bi bi-arrow-repeat"></i>
|
||||
</button>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
class="btn-close"
|
||||
data-bs-dismiss="modal"
|
||||
aria-label="Close"
|
||||
></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="container-fluid">
|
||||
<div class="table-responsive">
|
||||
<!-- START OF TABLE FOR SHARED FOLDER DX -->
|
||||
<table
|
||||
class="table table-sm table-hover table-bordered align-middle"
|
||||
>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">#</th>
|
||||
<th scope="col">Name</th>
|
||||
<th scope="col">Type</th>
|
||||
<th scope="col">Size</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="sharedFolderTableDX"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="input-group input-group-sm m-0 p-0"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="tab-pane fade" id="list-logger" role="tabpanel" aria-labelledby="list-logger-list">...</div>
|
||||
<div class="tab-pane fade" id="list-settings" role="tabpanel" aria-labelledby="list-settings-list">
|
||||
|
||||
|
@ -2977,6 +3785,15 @@
|
|||
<script src="../node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
|
||||
<!-- chart.js -->
|
||||
<script src="../node_modules/chart.js/dist/chart.umd.js"></script>
|
||||
<script
|
||||
type="module"
|
||||
src="../node_modules/emoji-picker-element/picker.js"
|
||||
></script>
|
||||
<script
|
||||
type="module"
|
||||
src="../node_modules/emoji-picker-element/database.js"
|
||||
></script>
|
||||
|
||||
<!--<script src="../node_modules/chartjs-plugin-annotation/dist/chartjs-plugin-annotation.min.js"></script>-->
|
||||
<!-- WATERFALL -->
|
||||
<script src="waterfall/colormap.js"></script>
|
||||
|
|
Loading…
Reference in a new issue