Chat: Fixes on disconection and reconection. Fix scrolling on minimized.
This commit is contained in:
@@ -150,6 +150,7 @@ namespace Scrummer.Code.Controls
|
|||||||
sbCfg.AppendFormat(" Close: \"{0}\",\n", "Close X");
|
sbCfg.AppendFormat(" Close: \"{0}\",\n", "Close X");
|
||||||
sbCfg.AppendFormat(" NewMessages: \"{0}\",\n", "New messages");
|
sbCfg.AppendFormat(" NewMessages: \"{0}\",\n", "New messages");
|
||||||
sbCfg.AppendFormat(" Disconnected: \"{0}\",\n", "Disconnected");
|
sbCfg.AppendFormat(" Disconnected: \"{0}\",\n", "Disconnected");
|
||||||
|
sbCfg.AppendFormat(" StringEmpty: \"\"\n");
|
||||||
sbCfg.AppendFormat(" }}\n");
|
sbCfg.AppendFormat(" }}\n");
|
||||||
sbCfg.AppendFormat("}};\n");
|
sbCfg.AppendFormat("}};\n");
|
||||||
sbCfg.AppendFormat("RunChat({0});\n", strCfgName);
|
sbCfg.AppendFormat("RunChat({0});\n", strCfgName);
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
|
|
||||||
function SendRequest(url, onData, onError) {
|
function SendRequest(url, data, onData, onError) {
|
||||||
var xhr = new XMLHttpRequest();
|
var xhr = new XMLHttpRequest();
|
||||||
|
if (data) {
|
||||||
|
url += "?" + GetDataQueryString(data);
|
||||||
|
}
|
||||||
xhr.open("GET", url, true);
|
xhr.open("GET", url, true);
|
||||||
xhr.onreadystatechange = function () {
|
xhr.onreadystatechange = function () {
|
||||||
if (xhr.readyState == 4) {
|
if (xhr.readyState == 4) {
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
cfg.Minimized = true;
|
cfg.Minimized = true;
|
||||||
cfg.Connected = null;
|
cfg.Connected = null;
|
||||||
cfg.FirstMessages = true;
|
cfg.FirstMessages = true;
|
||||||
|
cfg.ScrollOnRestore = true;
|
||||||
|
cfg.ScrollPosition = 0;
|
||||||
|
|
||||||
cfg.lblTitle.onclick = function () {
|
cfg.lblTitle.onclick = function () {
|
||||||
if (cfg.Minimized) {
|
if (cfg.Minimized) {
|
||||||
@@ -22,8 +24,15 @@
|
|||||||
cfg.lblTitle.innerHTML = cfg.Texts.Close;
|
cfg.lblTitle.innerHTML = cfg.Texts.Close;
|
||||||
cfg.lblTitle.className = "titleChatNormal";
|
cfg.lblTitle.className = "titleChatNormal";
|
||||||
}
|
}
|
||||||
|
if (cfg.ScrollOnRestore) {
|
||||||
|
cfg.divChat.scrollTop = cfg.divChat.scrollHeight;
|
||||||
|
} else {
|
||||||
|
cfg.divChat.scrollTop = cfg.ScrollPosition;
|
||||||
|
}
|
||||||
cfg.Minimized = false;
|
cfg.Minimized = false;
|
||||||
} else {
|
} else {
|
||||||
|
cfg.ScrollPosition = cfg.divChat.scrollTop;
|
||||||
|
cfg.ScrollOnRestore = (cfg.divChat.scrollTop > (cfg.divChat.scrollHeight - cfg.divChat.offsetHeight));
|
||||||
cfg.divChatContainer.style.display = "none";
|
cfg.divChatContainer.style.display = "none";
|
||||||
if (cfg.Connected) {
|
if (cfg.Connected) {
|
||||||
cfg.lblTitle.innerHTML = cfg.Texts.Chat;
|
cfg.lblTitle.innerHTML = cfg.Texts.Chat;
|
||||||
@@ -65,10 +74,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
var RequestChatData = function () {
|
var RequestChatData = function () {
|
||||||
var requestUrl = cfg.ServiceUrl +
|
|
||||||
"?idBoard=" + cfg.IDBoard +
|
|
||||||
"&idMessage=" + cfg.hidIDMessage.value +
|
|
||||||
"&PoolData=" + ((cfg.FirstMessages) ? "0" : "1");
|
|
||||||
var ReciveChatData = function (responseText) {
|
var ReciveChatData = function (responseText) {
|
||||||
|
|
||||||
// Mark as connected
|
// Mark as connected
|
||||||
@@ -86,6 +91,12 @@
|
|||||||
|
|
||||||
recvMsgs = JSON.parse(responseText);
|
recvMsgs = JSON.parse(responseText);
|
||||||
if (recvMsgs) {
|
if (recvMsgs) {
|
||||||
|
var msgCount = 0;
|
||||||
|
var scrollChat = false;
|
||||||
|
if (cfg.Minimized == false && cfg.divChat.scrollTop > (cfg.divChat.scrollHeight - cfg.divChat.offsetHeight)) {
|
||||||
|
scrollChat = true;
|
||||||
|
}
|
||||||
|
|
||||||
var idMessage = parseInt(cfg.hidIDMessage.value);
|
var idMessage = parseInt(cfg.hidIDMessage.value);
|
||||||
var frag = document.createDocumentFragment();
|
var frag = document.createDocumentFragment();
|
||||||
for (var i = 0, n = recvMsgs.length; i < n; i++) {
|
for (var i = 0, n = recvMsgs.length; i < n; i++) {
|
||||||
@@ -98,11 +109,14 @@
|
|||||||
(cfg.hidLastUser.value !== msg.UserName));
|
(cfg.hidLastUser.value !== msg.UserName));
|
||||||
cfg.hidLastUser.value = msg.UserName;
|
cfg.hidLastUser.value = msg.UserName;
|
||||||
frag.appendChild(elemMessage);
|
frag.appendChild(elemMessage);
|
||||||
|
msgCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cfg.divChat.appendChild(frag);
|
cfg.divChat.appendChild(frag);
|
||||||
cfg.divChat.scrollTop = cfg.divChat.scrollHeight;
|
if (scrollChat) {
|
||||||
if (cfg.Minimized && cfg.FirstMessages == false) {
|
cfg.divChat.scrollTop = cfg.divChat.scrollHeight;
|
||||||
|
}
|
||||||
|
if (cfg.Minimized && cfg.FirstMessages == false && msgCount > 0) {
|
||||||
cfg.lblTitle.innerHTML = cfg.Texts.NewMessages;
|
cfg.lblTitle.innerHTML = cfg.Texts.NewMessages;
|
||||||
cfg.lblTitle.className = "titleChatAlert";
|
cfg.lblTitle.className = "titleChatAlert";
|
||||||
}
|
}
|
||||||
@@ -133,7 +147,12 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Pool data
|
// Pool data
|
||||||
SendRequest(requestUrl, ReciveChatData, ErrorChatData);
|
var data = {
|
||||||
|
"idBoard": cfg.IDBoard,
|
||||||
|
"idMessage": cfg.hidIDMessage.value,
|
||||||
|
"PoolData": ((cfg.FirstMessages || cfg.Connected == false) ? "0" : "1")
|
||||||
|
};
|
||||||
|
SendRequest(cfg.ServiceUrl, data, ReciveChatData, ErrorChatData);
|
||||||
};
|
};
|
||||||
RequestChatData();
|
RequestChatData();
|
||||||
}
|
}
|
||||||
@@ -146,12 +165,14 @@ function SendChat(cfg) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Send data
|
||||||
var data = {
|
var data = {
|
||||||
"text": cfg.txtText.value,
|
"text": cfg.txtText.value,
|
||||||
"idBoard": cfg.IDBoard,
|
"idBoard": cfg.IDBoard,
|
||||||
"userName": cfg.hidUserName.value
|
"userName": cfg.hidUserName.value
|
||||||
};
|
};
|
||||||
cfg.txtText.value = "";
|
|
||||||
SendData(cfg.ServiceUrl, data, null, null);
|
SendData(cfg.ServiceUrl, data, null, null);
|
||||||
|
|
||||||
|
cfg.txtText.value = "";
|
||||||
cfg.txtText.focus();
|
cfg.txtText.focus();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user