Merge pull request #537 from calzoneman/chatscroll-improvements

Chatscroll improvements
This commit is contained in:
Calvin Montgomery 2015-11-30 17:18:35 -08:00
commit 54cabc04e1
8 changed files with 74 additions and 4 deletions

View File

@ -649,3 +649,17 @@ input#logout[type="submit"] {
input#logout[type="submit"]:hover { input#logout[type="submit"]:hover {
text-decoration: underline; text-decoration: underline;
} }
#newmessages-indicator {
margin-top: -30px;
line-height: 30px;
height: 30px;
text-align: center;
width: 100%;
font-weight: bold;
}
#newmessages-indicator .glyphicon {
margin-left: 10px;
margin-right: 10px;
}

View File

@ -81,3 +81,8 @@ footer {
.queue_entry.queue_active { .queue_entry.queue_active {
background-color: #d9edf7; background-color: #d9edf7;
} }
#newmessages-indicator-bghack {
background: rgb(200, 200, 200);
background: rgba(200, 200, 200, 0.9);
}

View File

@ -85,3 +85,8 @@ input.form-control[type="email"], textarea.form-control {
.queue_entry.queue_active { .queue_entry.queue_active {
background-color: #333333; background-color: #333333;
} }
#newmessages-indicator-bghack {
background: rgb(32, 32, 32);
background: rgba(32, 32, 32, 0.9);
}

View File

@ -75,3 +75,8 @@ footer {
.queue_entry.queue_active { .queue_entry.queue_active {
background-color: #d9edf7; background-color: #d9edf7;
} }
#newmessages-indicator-bghack {
background: rgb(200, 200, 200);
background: rgba(200, 200, 200, 0.9);
}

View File

@ -186,3 +186,8 @@ input.form-control[type="email"], textarea.form-control {
min-height: 20px; min-height: 20px;
padding: 10px 19px !important; padding: 10px 19px !important;
} }
#newmessages-indicator-bghack {
background: rgb(16, 16, 16);
background: rgba(16, 16, 16, 0.9);
}

View File

@ -97,3 +97,8 @@ input.form-control[type="email"], textarea.form-control {
.navbar-inverse .navbar-text-nofloat { .navbar-inverse .navbar-text-nofloat {
color: #ccc; color: #ccc;
} }
#newmessages-indicator-bghack {
background: rgb(0, 0, 0);
background: rgba(0, 0, 0, 0.9);
}

View File

@ -81,8 +81,16 @@ $("#usercount").mouseleave(function () {
$("#usercount").find(".profile-box").remove(); $("#usercount").find(".profile-box").remove();
}); });
$("#messagebuffer").mouseenter(function() { SCROLLCHAT = false; }); $("#messagebuffer").scroll(function () {
$("#messagebuffer").mouseleave(function() { SCROLLCHAT = true; }); var m = $("#messagebuffer");
var isCaughtUp = m.height() + m.scrollTop() >= m.prop("scrollHeight");
if (isCaughtUp) {
SCROLLCHAT = true;
$("#newmessages-indicator").remove();
} else {
SCROLLCHAT = false;
}
});
$("#guestname").keydown(function (ev) { $("#guestname").keydown(function (ev) {
if (ev.keyCode === 13) { if (ev.keyCode === 13) {

View File

@ -821,6 +821,7 @@ function showPollMenu() {
function scrollChat() { function scrollChat() {
$("#messagebuffer").scrollTop($("#messagebuffer").prop("scrollHeight")); $("#messagebuffer").scrollTop($("#messagebuffer").prop("scrollHeight"));
$("#newmessages-indicator").remove();
} }
function hasPermission(key) { function hasPermission(key) {
@ -1482,9 +1483,29 @@ function addChatMessage(data) {
div.mouseleave(function() { div.mouseleave(function() {
$(".nick-hover").removeClass("nick-hover"); $(".nick-hover").removeClass("nick-hover");
}); });
trimChatBuffer(); var numRemoved = trimChatBuffer();
if(SCROLLCHAT) if (SCROLLCHAT) {
scrollChat(); scrollChat();
} else {
var newMessageDiv = $("#newmessages-indicator");
if (!newMessageDiv.length) {
newMessageDiv = $("<div/>").attr("id", "newmessages-indicator")
.insertBefore($("#chatline"));
var bgHack = $("<span/>").attr("id", "newmessages-indicator-bghack")
.appendTo(newMessageDiv);
$("<span/>").addClass("glyphicon glyphicon-chevron-down")
.appendTo(bgHack);
$("<span/>").text("New Messages Below").appendTo(bgHack);
$("<span/>").addClass("glyphicon glyphicon-chevron-down")
.appendTo(bgHack);
}
if (numRemoved > 0) {
$("#messagebuffer").scrollTop(
$("#messagebuffer").scrollTop() - div.height());
}
}
var isHighlight = false; var isHighlight = false;
if (CLIENT.name && data.username != CLIENT.name) { if (CLIENT.name && data.username != CLIENT.name) {
@ -1508,6 +1529,8 @@ function trimChatBuffer() {
for (var i = 0; i < count; i++) { for (var i = 0; i < count; i++) {
buffer.firstChild.remove(); buffer.firstChild.remove();
} }
return count;
} }
function pingMessage(isHighlight) { function pingMessage(isHighlight) {