]> git.scottworley.com Git - reliable-chat/blobdiff - webclient/rc.html
Separate count, timestamp, and message with spaces
[reliable-chat] / webclient / rc.html
index d91d3a611c9e069c26ad1c2746dd0d46da63a3d3..8c08c7921eb98a7c30fa0c78c6ffceb4f70e8699 100644 (file)
@@ -31,6 +31,9 @@
                color: silver;
                font-family: monospace;
        }
+       a {
+               color: white;
+       }
        #container {
                height: 100%;
        }
                padding: 0px 5px 55px 5px;
                vertical-align: bottom
        }
+       .banner {
+               font-size: 85%;
+               text-align: right;
+       }
        .servercount {
-               margin-right: 0.5em;
+               margin-right: -0.5em;
                font-size: 70%;
        }
-       .timestamp {
-               margin-right: 0.8em;
-       }
        .timestamp:hover, .timestamp:hover .servertimestamps {
                background-color: #556;
        }
                }
        }
 
+       function rcpad2(x) {
+               return (x < 10 ? "0" : "") + x;
+       }
+       function rcpad3(x) {
+               return (x < 10 ? "00" : (x < 100 ? "0" : "")) + x;
+       }
+
        function rcformattime(t) {
                var d = t.getDay();
                d = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][d];
                var h = t.getHours();
                var m = t.getMinutes();
                var s = t.getSeconds();
-               function pad(x) {
-                       return (x < 10 ? "0" : "") + x;
-               }
-               return d + " " + pad(h) + ":" + pad(m) + ":" + pad(s);
+               return d + " " + rcpad2(h) + ":" + rcpad2(m) + ":" + rcpad2(s);
        }
 
        function rcaddservertimestamptohover(message, server) {
                var divs = message.UI.getElementsByTagName("div");
+               var t = message.ServerTimes[server];
                for (var i in divs) {
                        if (divs[i].getAttribute && divs[i].getAttribute("class") == "servertimestamps") {
                                var d = document.createElement("div");
-                               function pad(x) {
-                                       return (x < 10 ? "00" : (x < 100 ? "0" : "")) + x;
-                               }
-                               var text = rcformattime(message.ServerTimes[server]) + "." + pad(message.ServerTimes[server].getUTCMilliseconds()) + " " + server;
+                               var text = t.getFullYear() + "-" +
+                                       rcpad2(t.getMonth()) + "-" +
+                                       rcpad2(t.getDay()) + " " +
+                                       rcformattime(t) + "." +
+                                       rcpad3(t.getMilliseconds()) + " " +
+                                       server;
                                d.appendChild(document.createTextNode(text));
                                divs[i].appendChild(d);
                        }
                servercount.setAttribute("class", "servercount");
                servercount.appendChild(document.createTextNode(Object.keys(message.ServerTimes).length));
                message.UI.appendChild(servercount);
+               message.UI.appendChild(document.createTextNode(" "));
 
                // Timestamp
                var timestamp_text = message.Time ? rcformattime(message.Time) : "";
                timestamp.setAttribute("class", "timestamp");
                timestamp.appendChild(document.createTextNode(timestamp_text));
                message.UI.appendChild(timestamp);
+               message.UI.appendChild(document.createTextNode(" "));
 
                // Timestamp hover
                var timestamp_hover = document.createElement("div");
                        type += " self";
                }
                text_span.setAttribute("class", type);
-               text_span.appendChild(document.createTextNode(message.Text));
+
+               // URL detection
+               var text = message.Text;
+               var URL_re = /\bhttps?:\/\/\S+/;
+               while (URL_re.test(text)) {
+                       var match = URL_re.exec(text);
+                       var leading_text = text.substr(0, match.index);
+                       if (leading_text) {
+                               text_span.appendChild(document.createTextNode(leading_text));
+                       }
+                       var anchor = document.createElement("a");
+                       anchor.setAttribute("rel", "nofollow");
+                       anchor.setAttribute("href", encodeURI(match[0]));
+                       anchor.appendChild(document.createTextNode(match[0]));
+                       text_span.appendChild(anchor);
+                       text = text.substr(match.index + match[0].length);
+               }
+               if (text) {
+                       text_span.appendChild(document.createTextNode(text));
+               }
+
                message.UI.appendChild(text_span);
        }
 
 
 <body onload="rcconnect()">
        <div id="container">
+               <div class="banner">(You are using <a href="https://github.com/chkno/reliable-chat">Reliable Chat</a>)</div>
                <div id="history"></div>
                <div id="client">
                        <div id="input">