Unified SignalR disconnected/error dialogs

Dialogs (with a refresh option) appear whenever the SignalR client
disconnects or encounters an error. Nonsensical error messages replaced.
Page refresh technique changed to allow for urls containing fragment
hashes.
This commit is contained in:
Gary Sharp
2014-09-11 17:21:39 +10:00
parent 4283b62803
commit b1575fa321
20 changed files with 427 additions and 351 deletions
@@ -394,51 +394,51 @@ WriteLiteral("\', null, function (data) {\r\n\r\n var inProce
" try {\r\n $(\'body\').addClass(\'status-error\');\r\n " +
" $.connection.hub.stop();\r\n } catch (e) {\r\n " +
" // Ignore\r\n }\r\n\r\n window.setTimeout(function (" +
") {\r\n window.location.href = window.location.href;\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 koAr" +
"ray.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 removeItemFromArr" +
"ay(koArray, UserId) {\r\n var items = koArray();\r\n f" +
"or (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 findUnsortedArrayTopIndex(" +
"items) {\r\n // Only one Item\r\n if (items.length <= " +
"1)\r\n return 0;\r\n\r\n for (var i = 1; i < items.l" +
"ength; 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 findSor" +
"tedInsertIndex(koArray, heldDeviceItem) {\r\n var items = koArray()" +
";\r\n var startIndex = findUnsortedArrayTopIndex(items);\r\n " +
" for (var i = startIndex; i < items.length; i++) {\r\n va" +
"r s = sortFunction(heldDeviceItem, items[i]);\r\n if (s <= 0)\r\n" +
" return i;\r\n }\r\n if (startI" +
"ndex !== 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.toLowerCase() ? 0 : (l.UserIdFriendly.toLowerCase() < r.UserIdFr" +
"iendly.toLowerCase() ? -1 : 1)\r\n }\r\n function isInProcess(" +
"i) {\r\n return !i.ReadyForReturn && !i.WaitingForUserAction;\r\n " +
" }\r\n function isReadyForReturn(i) {\r\n return i." +
"ReadyForReturn && !i.WaitingForUserAction;\r\n }\r\n function " +
"isWaitingForUserAction(i) {\r\n return i.WaitingForUserAction;\r\n " +
" }\r\n function getQueryStringParameters() {\r\n\r\n " +
" if (window.location.search.length === 0)\r\n return null;\r\n\r\n " +
" var params = {};\r\n window.location.search.substr(1" +
").split(\"&\").forEach(function (pair) {\r\n if (pair === \"\") ret" +
"urn;\r\n var parts = pair.split(\"=\");\r\n para" +
"ms[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");
") {\r\n window.location.reload(true);\r\n }, 10000" +
");\r\n }\r\n\r\n // Helpers\r\n function rotateArray(ko" +
"Array, element) {\r\n var items = koArray();\r\n\r\n if " +
"(items.length <= 1)\r\n return 0;\r\n\r\n if (elemen" +
"t.height() < (element.parent().height() - 30)) {\r\n\r\n if (find" +
"UnsortedArrayTopIndex(items) !== 0)\r\n koArray.sort(sortFu" +
"nction);\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.unsh" +
"ift(item);\r\n }\r\n function removeItemFromArray(koArray, Use" +
"rId) {\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 = k" +
"oArray();\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 " +
" return 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, heldDeviceItem) {\r\n var items = koArray();\r\n " +
" var startIndex = findUnsortedArrayTopIndex(items);\r\n for (var" +
" i = startIndex; i < items.length; i++) {\r\n var s = sortFunct" +
"ion(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 re" +
"turn -1;\r\n }\r\n }\r\n function sortFunction(l," +
" r) {\r\n return l.UserIdFriendly.toLowerCase() == r.UserIdFriendly" +
".toLowerCase() ? 0 : (l.UserIdFriendly.toLowerCase() < r.UserIdFriendly.toLowerC" +
"ase() ? -1 : 1)\r\n }\r\n function isInProcess(i) {\r\n " +
" return !i.ReadyForReturn && !i.WaitingForUserAction;\r\n }\r\n " +
" function isReadyForReturn(i) {\r\n return i.ReadyForReturn " +
"&& !i.WaitingForUserAction;\r\n }\r\n function isWaitingForUse" +
"rAction(i) {\r\n return i.WaitingForUserAction;\r\n }\r\n " +
" function getQueryStringParameters() {\r\n\r\n if (window.loc" +
"ation.search.length === 0)\r\n return null;\r\n\r\n " +
"var params = {};\r\n window.location.search.substr(1).split(\"&\").fo" +
"rEach(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");
}
}