Merge pull request #711 from CendioOssman/spinners

Blocking transition screen when connecting/disconnecting
This commit is contained in:
Samuel Mannehed 2016-11-10 08:47:23 +01:00 committed by GitHub
commit f3d25df048
8 changed files with 85 additions and 14 deletions

View File

@ -5,7 +5,7 @@ Language = {
"Disconnect timeout": "Timeout beim trennen", "Disconnect timeout": "Timeout beim trennen",
"Password is required": "Passwort ist erforderlich", "Password is required": "Passwort ist erforderlich",
"Forcing clipping mode since scrollbars aren't supported by IE in fullscreen": "'Clipping-Modus' aktiviert, Scrollbalken in 'IE-Vollbildmodus' werden nicht unterstützt", "Forcing clipping mode since scrollbars aren't supported by IE in fullscreen": "'Clipping-Modus' aktiviert, Scrollbalken in 'IE-Vollbildmodus' werden nicht unterstützt",
"Connecting": "Verbunden", "Connecting...": "Verbunden...",
"Disconnecting": "Verbindung trennen", "Disconnecting...": "Verbindung trennen...",
"Disconnected": "Verbindung zum Server getrennt", "Disconnected": "Verbindung zum Server getrennt",
}; };

View File

@ -5,7 +5,7 @@ Language = {
"Disconnect timeout": "Παρέλευση χρονικού ορίου αποσύνδεσης", "Disconnect timeout": "Παρέλευση χρονικού ορίου αποσύνδεσης",
"Password is required": "Απαιτείται ο κωδικός", "Password is required": "Απαιτείται ο κωδικός",
"Forcing clipping mode since scrollbars aren't supported by IE in fullscreen": "Εφαρμογή λειτουργίας αποκοπής αφού δεν υποστηρίζονται οι λωρίδες κύλισης σε πλήρη οθόνη στον IE", "Forcing clipping mode since scrollbars aren't supported by IE in fullscreen": "Εφαρμογή λειτουργίας αποκοπής αφού δεν υποστηρίζονται οι λωρίδες κύλισης σε πλήρη οθόνη στον IE",
"Connecting": "Συνδέεται", "Connecting...": "Συνδέεται...",
"Disconnecting": "Aποσυνδέεται", "Disconnecting...": "Aποσυνδέεται...",
"Disconnected": "Αποσυνδέθηκε", "Disconnected": "Αποσυνδέθηκε",
}; };

View File

@ -5,7 +5,7 @@ Language = {
"Disconnect timeout": "Disconnect timeout", "Disconnect timeout": "Disconnect timeout",
"Password is required": "Password is required", "Password is required": "Password is required",
"Forcing clipping mode since scrollbars aren't supported by IE in fullscreen": "Forcing clipping mode since scrollbars aren't supported by IE in fullscreen", "Forcing clipping mode since scrollbars aren't supported by IE in fullscreen": "Forcing clipping mode since scrollbars aren't supported by IE in fullscreen",
"Connecting": "Connecting", "Connecting...": "Connecting...",
"Disconnecting": "Disconnecting", "Disconnecting...": "Disconnecting...",
"Disconnected": "Disconnected", "Disconnected": "Disconnected",
}; };

View File

@ -5,7 +5,7 @@ Language = {
"Disconnect timeout": "Timeout tijdens verbreken van verbinding", "Disconnect timeout": "Timeout tijdens verbreken van verbinding",
"Password is required": "Wachtwoord is vereist", "Password is required": "Wachtwoord is vereist",
"Forcing clipping mode since scrollbars aren't supported by IE in fullscreen": "''Clipping mode' ingeschakeld, omdat schuifbalken in volledige-scherm-modus in IE niet worden ondersteund", "Forcing clipping mode since scrollbars aren't supported by IE in fullscreen": "''Clipping mode' ingeschakeld, omdat schuifbalken in volledige-scherm-modus in IE niet worden ondersteund",
"Connecting": "Verbinden", "Connecting...": "Verbinden...",
"Disconnecting": "Verbinding verbreken", "Disconnecting...": "Verbinding verbreken...",
"Disconnected": "Verbinding verbroken", "Disconnected": "Verbinding verbroken",
}; };

View File

@ -5,7 +5,7 @@ Language = {
"Disconnect timeout": "Det tog för lång tid att koppla ner", "Disconnect timeout": "Det tog för lång tid att koppla ner",
"Password is required": "Lösenord krävs", "Password is required": "Lösenord krävs",
"Forcing clipping mode since scrollbars aren't supported by IE in fullscreen": "Tvingar 'Clipping mode' eftersom skrollning inte stödjs av IE i fullskärm", "Forcing clipping mode since scrollbars aren't supported by IE in fullscreen": "Tvingar 'Clipping mode' eftersom skrollning inte stödjs av IE i fullskärm",
"Connecting": "Ansluter", "Connecting...": "Ansluter...",
"Disconnecting": "Kopplar ner", "Disconnecting...": "Kopplar ner...",
"Disconnected": "Frånkopplad", "Disconnected": "Frånkopplad",
}; };

View File

@ -27,6 +27,37 @@ html {
display: none; display: none;
} }
/* ----------------------------------------
* Spinner
* ----------------------------------------
*/
.noVNC_spinner {
position: relative;
}
.noVNC_spinner, .noVNC_spinner::before, .noVNC_spinner::after {
width: 10px;
height: 10px;
border-radius: 50%;
animation: noVNC_spinner 1.0s ease-in-out alternate infinite;
}
.noVNC_spinner::before {
content: "";
position: absolute;
left: -20px;
animation-delay: -0.2s;
}
.noVNC_spinner::after {
content: "";
position: absolute;
left: 20px;
animation-delay: 0.2s;
}
@keyframes noVNC_spinner {
0% { box-shadow: 0 10px 0 white; }
100% { box-shadow: 0 30px 0 white; }
}
/* ---------------------------------------- /* ----------------------------------------
* Input Elements * Input Elements
* ---------------------------------------- * ----------------------------------------
@ -499,6 +530,34 @@ input[type=button]:active, select:active {
* ---------------------------------------- * ----------------------------------------
*/ */
/* Transition screen */
#noVNC_transition {
display: none;
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
color: white;
background: rgba(0, 0, 0, 0.5);
z-index: 1000;
/*display: flex;*/
align-items: center;
justify-content: center;
flex-direction: column;
}
:root.noVNC_connecting #noVNC_transition,
:root.noVNC_disconnecting #noVNC_transition {
display: flex;
}
#noVNC_transition_text {
font-size: 1.5em;
}
/* Main container */
#noVNC_container { #noVNC_container {
display: table; display: table;
width: 100%; width: 100%;

View File

@ -367,12 +367,19 @@ var UI;
updateState: function(rfb, state, oldstate) { updateState: function(rfb, state, oldstate) {
var msg; var msg;
document.documentElement.classList.remove("noVNC_connecting");
document.documentElement.classList.remove("noVNC_connected");
document.documentElement.classList.remove("noVNC_disconnecting");
switch (state) { switch (state) {
case 'connecting': case 'connecting':
UI.showStatus(Util.Localisation.get("Connecting")); document.getElementById("noVNC_transition_text").innerHTML = Util.Localisation.get("Connecting...");
document.documentElement.classList.add("noVNC_connecting");
break; break;
case 'connected': case 'connected':
UI.connected = true; UI.connected = true;
document.documentElement.classList.add("noVNC_connected");
if (rfb && rfb.get_encrypt()) { if (rfb && rfb.get_encrypt()) {
msg = Util.Localisation.get("Connected (encrypted) to ") + UI.desktopName; msg = Util.Localisation.get("Connected (encrypted) to ") + UI.desktopName;
} else { } else {
@ -381,7 +388,8 @@ var UI;
UI.showStatus(msg); UI.showStatus(msg);
break; break;
case 'disconnecting': case 'disconnecting':
UI.showStatus(Util.Localisation.get("Disconnecting")); document.getElementById("noVNC_transition_text").innerHTML = Util.Localisation.get("Disconnecting...");
document.documentElement.classList.add("noVNC_disconnecting");
break; break;
case 'disconnected': case 'disconnected':
UI.connected = false; UI.connected = false;
@ -417,14 +425,12 @@ var UI;
document.getElementById('noVNC_setting_repeaterID').disabled = UI.connected; document.getElementById('noVNC_setting_repeaterID').disabled = UI.connected;
if (UI.connected) { if (UI.connected) {
document.documentElement.classList.add("noVNC_connected");
UI.updateViewClip(); UI.updateViewClip();
UI.setMouseButton(1); UI.setMouseButton(1);
// Hide the controlbar after 2 seconds // Hide the controlbar after 2 seconds
UI.closeControlbarTimeout = setTimeout(UI.closeControlbar, 2000); UI.closeControlbarTimeout = setTimeout(UI.closeControlbar, 2000);
} else { } else {
document.documentElement.classList.remove("noVNC_connected");
UI.updateXvpButton(0); UI.updateXvpButton(0);
UI.keepControlbar(); UI.keepControlbar();
} }

View File

@ -291,6 +291,12 @@
</div> </div>
</div> </div>
<!-- Transition Screens -->
<div id="noVNC_transition">
<div id="noVNC_transition_text"></div>
<div class="noVNC_spinner"></div>
</div>
<div id="noVNC_container"> <div id="noVNC_container">
<h1 id="noVNC_logo" class="noVNC_logo"><span>no</span><br />VNC</h1> <h1 id="noVNC_logo" class="noVNC_logo"><span>no</span><br />VNC</h1>