#172 attempt reconnect if signalR disconnects

This commit is contained in:
Gary Sharp
2025-07-17 12:44:06 +10:00
parent f8fd1a58a3
commit 0905a02aea
20 changed files with 539 additions and 524 deletions
@@ -131,9 +131,10 @@
hub.client.setTheme = setTheme;
$.connection.hub.qs = { Noticeboard: '@(Disco.Services.Jobs.Noticeboards.HeldDevicesForUsers.Name)' };
$.connection.hub.error(connectionError);
$.connection.hub.error(function (error) {
console.log('Server connection error: ' + error);
});
$.connection.hub.disconnected(connectionError);
$.connection.hub.reconnected(connectionError);
// Start Connection
$.connection.hub.start().fail(connectionError).done(loadData);
@@ -356,7 +357,6 @@
function connectionError() {
try {
$('body').addClass('status-error');
$.connection.hub.stop();
} catch (e) {
// Ignore
}
@@ -257,9 +257,10 @@ WriteLiteral(">\r\n <li data-bind=\"css: { alert: IsAlert }\">\r\n
#line default
#line hidden
WriteLiteral(@"' };
$.connection.hub.error(connectionError);
$.connection.hub.error(function (error) {
console.log('Server connection error: ' + error);
});
$.connection.hub.disconnected(connectionError);
$.connection.hub.reconnected(connectionError);
// Start Connection
$.connection.hub.start().fail(connectionError).done(loadData);
@@ -270,7 +271,7 @@ WriteLiteral(@"' };
$.getJSON('");
#line 144 "..\..\Areas\Public\Views\UserHeldDevices\Noticeboard.cshtml"
#line 145 "..\..\Areas\Public\Views\UserHeldDevices\Noticeboard.cshtml"
Write(Url.Action(MVC.Public.UserHeldDevices.UserHeldDevices()));
@@ -399,54 +400,53 @@ WriteLiteral("\', null, function (data) {\r\n\r\n var inProce
"lters.length > 0)\r\n itemFilters = filters;\r\n " +
" else\r\n itemFilters = null;\r\n }\r\n " +
" }\r\n\r\n function connectionError() {\r\n try {\r\n " +
" $(\'body\').addClass(\'status-error\');\r\n $.co" +
"nnection.hub.stop();\r\n } catch (e) {\r\n // Igno" +
"re\r\n }\r\n\r\n window.setTimeout(function () {\r\n " +
" window.location.reload(true);\r\n }, 10000);\r\n " +
" }\r\n\r\n // Helpers\r\n function rotateArray(koArray, elem" +
"ent) {\r\n var items = koArray();\r\n\r\n if (items.leng" +
"th <= 1)\r\n return 0;\r\n\r\n if (element.height() " +
"< (element.parent().height() - 30)) {\r\n\r\n if (findUnsortedArr" +
"ayTopIndex(items) !== 0)\r\n koArray.sort(sortFunction);\r\n\r" +
"\n // Don\'t rotate if small & sorted correctly\r\n " +
" return;\r\n }\r\n\r\n // Move Last Item to Top\r\n " +
" var item = koArray.pop();\r\n koArray.unshift(item);\r" +
"\n }\r\n function removeItemFromArray(koArray, UserId) {\r\n " +
" var items = koArray();\r\n for (var i = 0; i < items.l" +
"ength; i++) {\r\n if (items[i].UserId == UserId) {\r\n " +
" koArray.splice(i, 1);\r\n items = koArray();\r\n" +
" i--;\r\n }\r\n }\r\n " +
" }\r\n function findUnsortedArrayTopIndex(items) {\r\n " +
"// Only one Item\r\n if (items.length <= 1)\r\n re" +
"turn 0;\r\n\r\n for (var i = 1; i < items.length; i++) {\r\n " +
" var s = sortFunction(items[i - 1], items[i]);\r\n if (" +
"s > 0)\r\n return i;\r\n }\r\n\r\n " +
"return 0;\r\n }\r\n function findSortedInsertIndex(koArray, he" +
"ldDeviceItem) {\r\n var items = koArray();\r\n var sta" +
"rtIndex = findUnsortedArrayTopIndex(items);\r\n for (var i = startI" +
"ndex; i < items.length; i++) {\r\n var s = sortFunction(heldDev" +
"iceItem, items[i]);\r\n if (s <= 0)\r\n re" +
"turn i;\r\n }\r\n if (startIndex !== 0) {\r\n " +
" for (var i = 0; i < startIndex; i++) {\r\n var s =" +
" sortFunction(heldDeviceItem, items[i]);\r\n if (s <= 0)\r\n " +
" return i;\r\n }\r\n " +
" return startIndex;\r\n } else {\r\n return -1;\r\n " +
" }\r\n }\r\n function sortFunction(l, r) {\r\n " +
" return l.UserIdFriendly.toLowerCase() == r.UserIdFriendly.toLowerCas" +
"e() ? 0 : (l.UserIdFriendly.toLowerCase() < r.UserIdFriendly.toLowerCase() ? -1 " +
": 1)\r\n }\r\n function isInProcess(i) {\r\n retu" +
"rn !i.ReadyForReturn && !i.WaitingForUserAction;\r\n }\r\n fun" +
"ction isReadyForReturn(i) {\r\n return i.ReadyForReturn && !i.Waiti" +
"ngForUserAction;\r\n }\r\n function isWaitingForUserAction(i) " +
"{\r\n return i.WaitingForUserAction;\r\n }\r\n fu" +
"nction getQueryStringParameters() {\r\n\r\n if (window.location.searc" +
"h.length === 0)\r\n return null;\r\n\r\n var params " +
"= {};\r\n window.location.search.substr(1).split(\"&\").forEach(funct" +
"ion (pair) {\r\n if (pair === \"\") return;\r\n " +
"var parts = pair.split(\"=\");\r\n params[parts[0]] = parts[1] &&" +
" decodeURIComponent(parts[1].replace(/\\+/g, \" \"));\r\n });\r\n " +
" return params;\r\n }\r\n\r\n init();\r\n });\r\n " +
"</script>\r\n</body>\r\n</html>\r\n");
" $(\'body\').addClass(\'status-error\');\r\n } catch " +
"(e) {\r\n // Ignore\r\n }\r\n\r\n windo" +
"w.setTimeout(function () {\r\n window.location.reload(true);\r\n " +
" }, 10000);\r\n }\r\n\r\n // Helpers\r\n " +
"function rotateArray(koArray, element) {\r\n var items = koArray();" +
"\r\n\r\n if (items.length <= 1)\r\n return 0;\r\n\r\n " +
" if (element.height() < (element.parent().height() - 30)) {\r\n\r\n " +
" if (findUnsortedArrayTopIndex(items) !== 0)\r\n " +
" koArray.sort(sortFunction);\r\n\r\n // Don\'t rotate if small " +
"& sorted correctly\r\n return;\r\n }\r\n\r\n " +
" // Move Last Item to Top\r\n var item = koArray.pop();\r\n " +
" koArray.unshift(item);\r\n }\r\n function removeIte" +
"mFromArray(koArray, UserId) {\r\n var items = koArray();\r\n " +
" for (var i = 0; i < items.length; i++) {\r\n if (items[i" +
"].UserId == UserId) {\r\n koArray.splice(i, 1);\r\n " +
" items = koArray();\r\n i--;\r\n " +
" }\r\n }\r\n }\r\n function findUnsortedArrayT" +
"opIndex(items) {\r\n // Only one Item\r\n if (items.le" +
"ngth <= 1)\r\n return 0;\r\n\r\n for (var i = 1; i <" +
" items.length; i++) {\r\n var s = sortFunction(items[i - 1], it" +
"ems[i]);\r\n if (s > 0)\r\n return i;\r\n " +
" }\r\n\r\n return 0;\r\n }\r\n function" +
" findSortedInsertIndex(koArray, heldDeviceItem) {\r\n var items = k" +
"oArray();\r\n var startIndex = findUnsortedArrayTopIndex(items);\r\n " +
" for (var i = startIndex; i < items.length; i++) {\r\n " +
" var s = sortFunction(heldDeviceItem, items[i]);\r\n if (s" +
" <= 0)\r\n return i;\r\n }\r\n if" +
" (startIndex !== 0) {\r\n for (var i = 0; i < startIndex; i++) " +
"{\r\n var s = sortFunction(heldDeviceItem, items[i]);\r\n " +
" if (s <= 0)\r\n return i;\r\n " +
" }\r\n return startIndex;\r\n } else {\r" +
"\n return -1;\r\n }\r\n }\r\n f" +
"unction sortFunction(l, r) {\r\n return l.UserIdFriendly.toLowerCas" +
"e() == r.UserIdFriendly.toLowerCase() ? 0 : (l.UserIdFriendly.toLowerCase() < r." +
"UserIdFriendly.toLowerCase() ? -1 : 1)\r\n }\r\n function isIn" +
"Process(i) {\r\n return !i.ReadyForReturn && !i.WaitingForUserActio" +
"n;\r\n }\r\n function isReadyForReturn(i) {\r\n r" +
"eturn i.ReadyForReturn && !i.WaitingForUserAction;\r\n }\r\n f" +
"unction isWaitingForUserAction(i) {\r\n return i.WaitingForUserActi" +
"on;\r\n }\r\n function getQueryStringParameters() {\r\n\r\n " +
" if (window.location.search.length === 0)\r\n return nu" +
"ll;\r\n\r\n var params = {};\r\n window.location.search." +
"substr(1).split(\"&\").forEach(function (pair) {\r\n if (pair ===" +
" \"\") return;\r\n var parts = pair.split(\"=\");\r\n " +
" params[parts[0]] = parts[1] && decodeURIComponent(parts[1].replace(/\\+/g, \" " +
"\"));\r\n });\r\n return params;\r\n }\r\n\r\n " +
" init();\r\n });\r\n </script>\r\n</body>\r\n</html>\r\n");
}
}