diff options
| author | Caleb Mabry <36182383+caleb-mabry@users.noreply.github.com> | 2023-02-01 15:54:26 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-01 15:54:26 -0500 |
| commit | 39edb1077725a6b9db58b4c32323e847ece5f2f6 (patch) | |
| tree | 2ab4e9d3c0a007684cb3fb706f70fc677e0f7eca /webAO/client/appendICLog.ts | |
| parent | 0eabb5da1759439fd01e54dc986900448f483330 (diff) | |
| parent | f8ea065b5e6bccbebb918293e13cab4adb536b70 (diff) | |
Merge branch 'master' into fix-pipeline
Diffstat (limited to 'webAO/client/appendICLog.ts')
| -rw-r--r-- | webAO/client/appendICLog.ts | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/webAO/client/appendICLog.ts b/webAO/client/appendICLog.ts new file mode 100644 index 0000000..f8b7852 --- /dev/null +++ b/webAO/client/appendICLog.ts @@ -0,0 +1,57 @@ +import { lastICMessageTime, setLastICMessageTime } from "../client"; + + + +/** + * Appends a message to the in-character chat log. + * @param {string} msg the string to be added + * @param {string} name the name of the sender + */ +export function appendICLog( + msg: string, + showname = "", + nameplate = "", + time = new Date() +) { + const entry = document.createElement("p"); + const shownameField = document.createElement("span"); + const nameplateField = document.createElement("span"); + const textField = document.createElement("span"); + nameplateField.className = "iclog_name iclog_nameplate"; + nameplateField.appendChild(document.createTextNode(nameplate)); + + shownameField.className = "iclog_name iclog_showname"; + if (showname === "" || !showname) { + shownameField.appendChild(document.createTextNode(nameplate)); + } else { + shownameField.appendChild(document.createTextNode(showname)); + } + + textField.className = "iclog_text"; + textField.appendChild(document.createTextNode(msg)); + + entry.appendChild(shownameField); + entry.appendChild(nameplateField); + entry.appendChild(textField); + + // Only put a timestamp if the minute has changed. + if (lastICMessageTime.getMinutes() !== time.getMinutes()) { + const timeStamp = document.createElement("span"); + timeStamp.className = "iclog_time"; + timeStamp.innerText = time.toLocaleTimeString(undefined, { + hour: "numeric", + minute: "2-digit", + }); + entry.appendChild(timeStamp); + } + + const clientLog = document.getElementById("client_log")!; + clientLog.appendChild(entry); + + /* This is a little buggy - some troubleshooting might be desirable */ + if (clientLog.scrollTop > clientLog.scrollHeight - 800) { + clientLog.scrollTop = clientLog.scrollHeight; + } + + setLastICMessageTime(new Date()); +}
\ No newline at end of file |
