Make the shutdown/restart/update screens pretty :)

This commit is contained in:
Tim 2015-07-17 23:07:42 +02:00
parent dd90f2e375
commit 5b2d03f496
3 changed files with 101 additions and 8 deletions

View file

@ -276,3 +276,27 @@ function millisecondsToMinutes(ms, roundToMinute) {
} }
} }
} }
// Our countdown plugin takes a callback, a duration, and an optional message
$.fn.countdown = function (callback, duration, message) {
// If no message is provided, we use an empty string
message = message || "";
// Get reference to container, and set initial content
var container = $(this[0]).html(duration + message);
// Get reference to the interval doing the countdown
var countdown = setInterval(function () {
// If seconds remain
if (--duration) {
// Update our container's message
container.html(duration + message);
// Otherwise
} else {
// Clear the countdown interval
clearInterval(countdown);
// And fire the callback passing our container as `this`
callback.call(container);
}
// Run interval every 1000ms (1 second)
}, 1000);
};

View file

@ -1,20 +1,60 @@
<%inherit file="base.html"/> <%inherit file="base.html"/>
<%def name="headIncludes()"> <%def name="headIncludes()">
<meta http-equiv="refresh" content="${timer};url=index">
</%def> </%def>
<%def name="body()"> <%def name="body()">
<div class="container-fluid"> <div class="container-fluid">
<div class="row-fluid"> <div class="row-fluid">
<div class="span12"> <div class="span12">
<div class="wellbg"> <div id="state-change-modal" class="modal hide fade">
<div class="wellheader"> <div class="modal-header">
<div class="dashboard-wellheader"> <h3>${message}</h3>
<h2><i class="fa fa-refresh fa-spin"></i> PlexPy is ${message}</h2> </div>
<div class="modal-body" id="modal-text">
<div align="center">
% if message == "Shutting Down":
<h2><i class="fa fa-refresh fa-spin"></i> PlexPy is ${message}.</h2>
<br/>
% else:
<h2><i class="fa fa-refresh fa-spin"></i> PlexPy is ${message}.</h2>
<br/>
<h3>Restart in <span class="countdown"></span></h3>
% endif
</div> </div>
</div> </div>
<div class="modal-footer">
<div style="float: right;"><span class="muted" id="rquote"></span></div>
</div>
</div> </div>
</div> </div>
</div> </div>
</%def> </%def>
<%def name="javascriptIncludes()">
<script>
// Use p.countdown as container, pass redirect, duration, and optional message
$(".countdown").countdown(reloadPage, ${timer}, "");
$('#state-change-modal').modal({
keyboard: false
})
// Make modal visible
$('#state-change-modal').modal('show')
// Redirect to home page after countdown.
function reloadPage() {
window.location.href = "index";
}
$(document).ready(function () {
$.ajax({
url: 'random_arnold_quotes',
cache: false,
async: true,
success: function (data) {
$("#rquote").html(data);
}
});
});
</script>
</%def>

View file

@ -456,7 +456,7 @@ class WebInterface(object):
@cherrypy.expose @cherrypy.expose
def do_state_change(self, signal, title, timer): def do_state_change(self, signal, title, timer):
plexpy.SIGNAL = signal plexpy.SIGNAL = signal
message = title + '...' message = title
return serve_template(templatename="shutdown.html", title=title, return serve_template(templatename="shutdown.html", title=title,
message=message, timer=timer) message=message, timer=timer)
@ -1022,4 +1022,33 @@ class WebInterface(object):
logger.warn('Unable to retrieve data.') logger.warn('Unable to retrieve data.')
return None return None
else: else:
return None return None
@cherrypy.expose
def random_arnold_quotes(self, **kwargs):
from random import randint
quote_list = ['To crush your enemies, see them driven before you, and to hear the lamentation of their women!',
'Your clothes, give them to me, now!',
'Do it!',
'If it bleeds, we can kill it',
'See you at the party Richter!',
'Let off some steam, Bennett',
'I\'ll be back',
'Get to the chopper!',
'Hasta La Vista, Baby!',
'It\'s not a tumor!',
'Dillon, you son of a bitch!',
'Benny!! Screw you!!',
'Stop whining! You kids are soft. You lack discipline.',
'Nice night for a walk.',
'Stick around!',
'I need your clothes, your boots and your motorcycle.',
'No, it\'s not a tumor. It\'s not a tumor!',
'I LIED!',
'See you at the party, Richter!',
'Are you Sarah Conner?',
'I\'m a cop you idiot!'
]
random_number = randint(0, len(quote_list))
return quote_list[int(random_number)]