Commit 96f1d71c by Őry Máté

Merge branch 'master' into issue-139

Conflicts:
	circle/dashboard/templates/dashboard/_notifications-timeline.html
	circle/dashboard/templates/dashboard/node-detail/_activity-timeline.html
	circle/dashboard/templates/dashboard/notifications/ownership-offer.html
	circle/dashboard/templates/dashboard/notifications/vm-destroyed.html
	circle/dashboard/templates/dashboard/notifications/vm-expiring.html
	circle/dashboard/templates/dashboard/notifications/vm-suspended.html
	circle/dashboard/templates/dashboard/vm-detail/_activity-timeline.html
parents 66805404 b4b966f0
...@@ -131,7 +131,7 @@ class VmCustomizeForm(forms.Form): ...@@ -131,7 +131,7 @@ class VmCustomizeForm(forms.Form):
"button", "button",
AnyTag( AnyTag(
"i", "i",
css_class="icon-play" css_class="fa fa-play"
), ),
HTML(" Start"), HTML(" Start"),
css_id="vm-create-customized-start", css_id="vm-create-customized-start",
...@@ -163,7 +163,7 @@ class VmCustomizeForm(forms.Form): ...@@ -163,7 +163,7 @@ class VmCustomizeForm(forms.Form):
Div( # cpu priority Div( # cpu priority
Div( Div(
HTML('<label for="vm-cpu-priority-slider">' HTML('<label for="vm-cpu-priority-slider">'
'<i class="icon-trophy"></i> CPU priority' '<i class="fa fa-trophy"></i> CPU priority'
'</label>'), '</label>'),
css_class="col-sm-3" css_class="col-sm-3"
), ),
...@@ -182,7 +182,7 @@ class VmCustomizeForm(forms.Form): ...@@ -182,7 +182,7 @@ class VmCustomizeForm(forms.Form):
Div( # cpu count Div( # cpu count
Div( Div(
HTML('<label for="cpu-count-slider">' HTML('<label for="cpu-count-slider">'
'<i class="icon-cogs"></i> CPU count' '<i class="fa fa-cogs"></i> CPU count'
'</label>'), '</label>'),
css_class="col-sm-3" css_class="col-sm-3"
), ),
...@@ -201,7 +201,7 @@ class VmCustomizeForm(forms.Form): ...@@ -201,7 +201,7 @@ class VmCustomizeForm(forms.Form):
Div( # ram size Div( # ram size
Div( Div(
HTML('<label for="ram-slider">' HTML('<label for="ram-slider">'
'<i class="icon-ticket"></i> RAM amount' '<i class="fa fa-ticket"></i> RAM amount'
'</label>'), '</label>'),
css_class="col-sm-3" css_class="col-sm-3"
), ),
...@@ -313,7 +313,7 @@ class VmCustomizeForm(forms.Form): ...@@ -313,7 +313,7 @@ class VmCustomizeForm(forms.Form):
"a", "a",
AnyTag( AnyTag(
"i", "i",
css_class="icon-plus-sign", css_class="fa fa-plus-circle",
), ),
css_id=("vm-create-network-add" css_id=("vm-create-network-add"
"-button"), "-button"),
...@@ -556,7 +556,7 @@ class NodeForm(forms.ModelForm): ...@@ -556,7 +556,7 @@ class NodeForm(forms.ModelForm):
"button", "button",
AnyTag( AnyTag(
"i", "i",
css_class="icon-play" css_class="fa fa-play"
), ),
HTML("Start"), HTML("Start"),
css_id="node-create-submit", css_id="node-create-submit",
...@@ -958,7 +958,7 @@ class CircleAuthenticationForm(AuthenticationForm): ...@@ -958,7 +958,7 @@ class CircleAuthenticationForm(AuthenticationForm):
"span", "span",
AnyTag( AnyTag(
"i", "i",
css_class="icon-user", css_class="fa fa-user",
), ),
css_class="input-group-addon", css_class="input-group-addon",
), ),
...@@ -972,7 +972,7 @@ class CircleAuthenticationForm(AuthenticationForm): ...@@ -972,7 +972,7 @@ class CircleAuthenticationForm(AuthenticationForm):
"span", "span",
AnyTag( AnyTag(
"i", "i",
css_class="icon-lock", css_class="fa fa-lock",
), ),
css_class="input-group-addon", css_class="input-group-addon",
), ),
...@@ -1000,7 +1000,7 @@ class CirclePasswordResetForm(PasswordResetForm): ...@@ -1000,7 +1000,7 @@ class CirclePasswordResetForm(PasswordResetForm):
"span", "span",
AnyTag( AnyTag(
"i", "i",
css_class="icon-envelope", css_class="fa fa-envelope",
), ),
css_class="input-group-addon", css_class="input-group-addon",
), ),
......
...@@ -146,10 +146,10 @@ ...@@ -146,10 +146,10 @@
height: 26px; height: 26px;
margin-top: -4px!important; margin-top: -4px!important;
margin-left: -6px !important; margin-left: -6px !important;
border-radius: 0px; border-radius: 0px;
-moz-border-radius: 0px; -moz-border-radius: 0px;
-webkit-border-radius: 0px; -webkit-border-radius: 0px;
text-shadow: 0 1px 0 #fff; text-shadow: 0 1px 0 #fff;
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3071a9)); background-image: -webkit-gradient(linear, left 0%, left 100%, from(#428bca), to(#3071a9));
...@@ -196,10 +196,10 @@ ...@@ -196,10 +196,10 @@
} }
.vm-slider { .vm-slider {
width: 300px; width: 300px;
} }
.output { .output {
padding-left: 10px; padding-left: 10px;
font-weight: bold; font-weight: bold;
} }
...@@ -145,13 +145,13 @@ html { ...@@ -145,13 +145,13 @@ html {
background-color: transparent; background-color: transparent;
} }
.sub-timeline { .sub-timeline {
} }
.sub-activity { .sub-activity {
margin-left: 30px; margin-left: 30px;
padding-left: 10px; padding-left: 10px;
border-left: 3px solid green; border-left: 3px solid green;
} }
.sub-activity-active { .sub-activity-active {
...@@ -235,7 +235,7 @@ html { ...@@ -235,7 +235,7 @@ html {
#vm-details-rename, #vm-details-h1-name, #vm-details-rename , #vm-details-rename, #vm-details-h1-name, #vm-details-rename ,
#node-details-rename, #node-details-rename *, #node-details-h1-name, #node-list-rename, #node-list-rename *#group-details-rename, #group-details-rename *, #group-details-h1-name, #group-list-rename, #group-list-rename * { #node-details-rename, #node-details-rename *, #node-details-h1-name, #node-list-rename, #node-list-rename *#group-details-rename, #group-details-rename *, #group-details-h1-name, #group-list-rename, #group-list-rename * {
display: inline; display: inline;
} }
...@@ -302,8 +302,8 @@ html { ...@@ -302,8 +302,8 @@ html {
} }
/* port add buttons */ /* port add buttons */
.vm-details-network-port-add .input-group-addon, .vm-details-network-port-add .input-group-btn { .vm-details-network-port-add .input-group-addon, .vm-details-network-port-add .input-group-btn {
width: inherit ; width: inherit ;
} }
/* vm-create */ /* vm-create */
...@@ -426,12 +426,12 @@ a.hover-black { ...@@ -426,12 +426,12 @@ a.hover-black {
cursor: pointer; cursor: pointer;
} }
#vm-migrate-node-list { #vm-migrate-node-list {
list-style: none; list-style: none;
} }
#vm-migrate-node-list li { #vm-migrate-node-list li {
padding-bottom: 10px; padding-bottom: 10px;
} }
.vm-migrate-node-property { .vm-migrate-node-property {
...@@ -446,7 +446,7 @@ a.hover-black { ...@@ -446,7 +446,7 @@ a.hover-black {
/* fancy stuff /* fancy stuff
border: 1px solid #ccc; border: 1px solid #ccc;
box-shadow: 0 0 10px rgba(0,0,0,0.2); box-shadow: 0 0 10px rgba(0,0,0,0.2);
border-radius: 8px; border-radius: 8px;
*/ */
} }
...@@ -460,25 +460,25 @@ a.hover-black { ...@@ -460,25 +460,25 @@ a.hover-black {
/* footer */ /* footer */
footer { footer {
position: absolute; position: absolute;
bottom: 0; bottom: 0;
width: 100%; width: 100%;
/* Set the fixed height of the footer here */ /* Set the fixed height of the footer here */
height: 30px; height: 30px;
background-color: #101010; background-color: #101010;
color: white; color: white;
font-size: 13px; font-size: 13px;
padding: 5px 5px 0 5px; padding: 5px 5px 0 5px;
box-shadow: 0 0 30px rgba(0, 0, 0, 0.4); box-shadow: 0 0 30px rgba(0, 0, 0, 0.4);
text-align: center; text-align: center;
} }
footer a, footer a:hover, footer a:visited { footer a, footer a:hover, footer a:visited {
color: white; color: white;
text-decoration: underline; text-decoration: underline;
} }
.template-disk-list { .template-disk-list {
list-style: none; list-style: none;
padding-left: 0; padding-left: 0;
...@@ -513,15 +513,15 @@ footer a, footer a:hover, footer a:visited { ...@@ -513,15 +513,15 @@ footer a, footer a:hover, footer a:visited {
} }
/* template create vm help */ /* template create vm help */
.alert-new-template { .alert-new-template {
background: #3071a9; background: #3071a9;
color: white; color: white;
font-size: 22px; font-size: 22px;
} }
.alert-new-template ol { .alert-new-template ol {
margin-left: 25px; margin-left: 25px;
} }
/* bootstrap tour */ /* bootstrap tour */
.tour-template { .tour-template {
...@@ -542,11 +542,11 @@ footer a, footer a:hover, footer a:visited { ...@@ -542,11 +542,11 @@ footer a, footer a:hover, footer a:visited {
} }
.index-vm-list-name { .index-vm-list-name {
display: inline-block; display: inline-block;
max-width: 70%; max-width: 70%;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
float: left; float: left;
} }
...@@ -555,11 +555,11 @@ footer a, footer a:hover, footer a:visited { ...@@ -555,11 +555,11 @@ footer a, footer a:hover, footer a:visited {
} }
.index-template-list-name { .index-template-list-name {
display: inline-block; display: inline-block;
max-width: 50%; max-width: 50%;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
float: left; float: left;
} }
...@@ -574,7 +574,7 @@ footer a, footer a:hover, footer a:visited { ...@@ -574,7 +574,7 @@ footer a, footer a:hover, footer a:visited {
} }
#vm-details-home-description { #vm-details-home-description {
display: inline-block; display: inline-block;
position: relative; position: relative;
} }
...@@ -588,8 +588,8 @@ footer a, footer a:hover, footer a:visited { ...@@ -588,8 +588,8 @@ footer a, footer a:hover, footer a:visited {
} }
.vm-details-description-submit { .vm-details-description-submit {
position: absolute; position: absolute;
bottom: 10px; bottom: 10px;
right: 20px; right: 20px;
} }
...@@ -670,25 +670,25 @@ textarea[name="list-new-namelist"] { ...@@ -670,25 +670,25 @@ textarea[name="list-new-namelist"] {
} }
/* vm list css */ /* vm list css */
.vm-list-selected, .vm-list-selected td { .vm-list-selected, .vm-list-selected td {
background-color: #e8e8e8 !important; background-color: #e8e8e8 !important;
} }
.vm-list-selected:hover, .vm-list-selected:hover td { .vm-list-selected:hover, .vm-list-selected:hover td {
background-color: #d0d0d0 !important; background-color: #d0d0d0 !important;
} }
.vm-list-selected td:first-child { .vm-list-selected td:first-child {
font-weight: bold; font-weight: bold;
} }
.vm-list-table-thin { .vm-list-table-thin {
width: 10px; width: 10px;
} }
.vm-list-table-admin { .vm-list-table-admin {
width: 130px; width: 130px;
} }
#vm-details-connection-string-copy { #vm-details-connection-string-copy {
cursor: pointer; cursor: pointer;
...@@ -705,9 +705,9 @@ textarea[name="list-new-namelist"] { ...@@ -705,9 +705,9 @@ textarea[name="list-new-namelist"] {
} }
#group-detail-user-table td:nth-child(2) a, #group-detail-user-table td:nth-child(2) a,
#group-detail-perm-table td:nth-child(2) a, #group-detail-perm-table td:nth-child(2) a,
#template-access-table td:nth-child(2) a, #template-access-table td:nth-child(2) a,
#vm-access-table td:nth-child(2) a, #vm-access-table td:nth-child(2) a,
.no-style-link, .no-style-link:hover { .no-style-link, .no-style-link:hover {
color: #555 !important; color: #555 !important;
text-decoration: none; text-decoration: none;
...@@ -733,7 +733,7 @@ textarea[name="list-new-namelist"] { ...@@ -733,7 +733,7 @@ textarea[name="list-new-namelist"] {
border: 1px solid #ccc; border: 1px solid #ccc;
} }
#group-detail-permissions .selector-available h2, #group-detail-permissions .selector-available h2,
#group-detail-permissions .selector-chosen h2 { #group-detail-permissions .selector-chosen h2 {
margin: 0; margin: 0;
padding: 5px 8px 5px 8px; padding: 5px 8px 5px 8px;
...@@ -749,5 +749,5 @@ textarea[name="list-new-namelist"] { ...@@ -749,5 +749,5 @@ textarea[name="list-new-namelist"] {
} }
#group-detail-permissions input[type="submit"]{ #group-detail-permissions input[type="submit"]{
margin-top: -6px; margin-top: -6px;
} }
...@@ -121,11 +121,11 @@ $(function () { ...@@ -121,11 +121,11 @@ $(function () {
$("#dashboard-vm-list").on('click', '.dashboard-vm-favourite', function(e) { $("#dashboard-vm-list").on('click', '.dashboard-vm-favourite', function(e) {
var star = $(this).children("i"); var star = $(this).children("i");
var pk = $(this).data("vm"); var pk = $(this).data("vm");
if(star.hasClass("icon-star-empty")) { if(star.hasClass("fa-star-o")) {
star.removeClass("icon-star-empty").addClass("icon-star"); star.removeClass("fa-star-o").addClass("fa-star");
star.prop("title", "Unfavourite"); star.prop("title", "Unfavourite");
} else { } else {
star.removeClass("icon-star").addClass("icon-star-empty"); star.removeClass("fa-star").addClass("fa-star-o");
star.prop("title", "Mark as favourite"); star.prop("title", "Mark as favourite");
} }
$.ajax({ $.ajax({
...@@ -381,12 +381,12 @@ function generateVmHTML(pk, name, host, icon, _status, fav, is_last) { ...@@ -381,12 +381,12 @@ function generateVmHTML(pk, name, host, icon, _status, fav, is_last) {
return '<a href="/dashboard/vm/' + pk + '/" class="list-group-item' + return '<a href="/dashboard/vm/' + pk + '/" class="list-group-item' +
(is_last ? ' list-group-item-last' : '') + '">' + (is_last ? ' list-group-item-last' : '') + '">' +
'<span class="index-vm-list-name">' + '<span class="index-vm-list-name">' +
'<i class="' + icon + '" title="' + _status + '"></i> ' + name + '<i class="fa ' + icon + '" title="' + _status + '"></i> ' + name +
'</span>' + '</span>' +
'<small class="text-muted"> ' + host + '</small>' + '<small class="text-muted"> ' + host + '</small>' +
'<div class="pull-right dashboard-vm-favourite" data-vm="' + pk + '">' + '<div class="pull-right dashboard-vm-favourite" data-vm="' + pk + '">' +
(fav ? '<i class="icon-star text-primary title-favourite" title="Unfavourite"></i>' : (fav ? '<i class="fa fa-star text-primary title-favourite" title="Unfavourite"></i>' :
'<i class="icon-star-empty text-primary title-favourite" title="Mark as favorite"></i>' ) + '<i class="fa fa-star-o text-primary title-favourite" title="Mark as favorite"></i>' ) +
'</div>' + '</div>' +
'<div style="clear: both;"></div>' + '<div style="clear: both;"></div>' +
'</a>'; '</a>';
...@@ -394,14 +394,14 @@ function generateVmHTML(pk, name, host, icon, _status, fav, is_last) { ...@@ -394,14 +394,14 @@ function generateVmHTML(pk, name, host, icon, _status, fav, is_last) {
function generateGroupHTML(url, name) { function generateGroupHTML(url, name) {
return '<a href="' + url + '" class="list-group-item real-link">'+ return '<a href="' + url + '" class="list-group-item real-link">'+
'<i class="icon-group"></i> '+ name + '<i class="fa fa-users"></i> '+ name +
'</a>'; '</a>';
} }
function generateNodeHTML(name, icon, _status, url, is_last) { function generateNodeHTML(name, icon, _status, url, is_last) {
return '<a href="' + url + '" class="list-group-item real-link' + (is_last ? ' list-group-item-last' : '') + '">' + return '<a href="' + url + '" class="list-group-item real-link' + (is_last ? ' list-group-item-last' : '') + '">' +
'<span class="index-node-list-name">' + '<span class="index-node-list-name">' +
'<i class="' + icon + '" title="' + _status + '"></i> ' + name + '<i class="fa ' + icon + '" title="' + _status + '"></i> ' + name +
'</span>' + '</span>' +
'<div style="clear: both;"></div>' + '<div style="clear: both;"></div>' +
'</a>'; '</a>';
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
<script src="js/simple-slider.js"></script> <script src="js/simple-slider.js"></script>
<link href="css/simple-slider.css" rel="stylesheet" type="text/css" /> <link href="css/simple-slider.css" rel="stylesheet" type="text/css" />
<link href="css/simple-slider-volume.css" rel="stylesheet" type="text/css" /> <link href="css/simple-slider-volume.css" rel="stylesheet" type="text/css" />
<!-- These styles are only used for this page, not required for the slider --> <!-- These styles are only used for this page, not required for the slider -->
<style> <style>
body { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } body { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; }
......
...@@ -31,7 +31,7 @@ $(function() { ...@@ -31,7 +31,7 @@ $(function() {
ttable.on("aftertablesort", function(event, data) { ttable.on("aftertablesort", function(event, data) {
$(".template-list-table thead th i").remove(); $(".template-list-table thead th i").remove();
var icon_html = '<i class="icon-sort-' + (data.direction == "desc" ? "up" : "down") + ' pull-right" style="position: absolute;"></i>'; var icon_html = '<i class="fa fa-sort-' + (data.direction == "desc" ? "desc" : "asc") + ' pull-right" style="position: absolute;"></i>';
$(".template-list-table thead th").eq(data.column).append(icon_html); $(".template-list-table thead th").eq(data.column).append(icon_html);
}); });
......
...@@ -4,13 +4,13 @@ $(function() { ...@@ -4,13 +4,13 @@ $(function() {
/* vm operations */ /* vm operations */
$('#ops, #vm-details-resources-disk').on('click', '.operation.btn', function(e) { $('#ops, #vm-details-resources-disk').on('click', '.operation.btn', function(e) {
var icon = $(this).children("i").addClass('icon-spinner icon-spin'); var icon = $(this).children("i").addClass('fa-spinner fa-spin');
$.ajax({ $.ajax({
type: 'GET', type: 'GET',
url: $(this).attr('href'), url: $(this).attr('href'),
success: function(data) { success: function(data) {
icon.removeClass("icon-spinner icon-spin"); icon.removeClass("fa-spinner fa-spin");
$('body').append(data); $('body').append(data);
$('#confirmation-modal').modal('show'); $('#confirmation-modal').modal('show');
$('#confirmation-modal').on('hidden.bs.modal', function() { $('#confirmation-modal').on('hidden.bs.modal', function() {
......
...@@ -288,11 +288,11 @@ function vmCustomizeLoaded() { ...@@ -288,11 +288,11 @@ function vmCustomizeLoaded() {
function vmCreateNetworkLabel(pk, name, managed) { function vmCreateNetworkLabel(pk, name, managed) {
return '<span id="vlan-' + pk + '" class="label label-' + (managed ? 'primary' : 'default') + '"><i class="icon-' + (managed ? 'globe' : 'link') + '"></i> ' + name + ' <a href="#" class="hover-black vm-create-remove-network"><i class="icon-remove-sign"></i></a></span> '; return '<span id="vlan-' + pk + '" class="label label-' + (managed ? 'primary' : 'default') + '"><i class="fa fa-' + (managed ? 'globe' : 'link') + '"></i> ' + name + ' <a href="#" class="hover-black vm-create-remove-network"><i class="fa fa-times-circle"></i></a></span> ';
} }
function vmCreateDiskLabel(pk, name) { function vmCreateDiskLabel(pk, name) {
var style = "float: left; margin: 5px 5px 5px 0;"; var style = "float: left; margin: 5px 5px 5px 0;";
return '<span id="disk-' + pk + '" class="label label-primary" style="' + style + '"><i class="icon-file"></i> ' + name + ' <a href="#" class="hover-black vm-create-remove-disk"><i class="icon-remove-sign"></i></a></span> '; return '<span id="disk-' + pk + '" class="label label-primary" style="' + style + '"><i class="fa fa-file"></i> ' + name + ' <a href="#" class="hover-black vm-create-remove-disk"><i class="fa fa-times-circle"></i></a></span> ';
} }
...@@ -4,24 +4,24 @@ $(function() { ...@@ -4,24 +4,24 @@ $(function() {
checkNewActivity(false, 1); checkNewActivity(false, 1);
} }
$('a[href="#activity"]').click(function(){ $('a[href="#activity"]').click(function(){
$('a[href="#activity"] i').addClass('icon-spin'); $('a[href="#activity"] i').addClass('fa-spin');
checkNewActivity(false, 1); checkNewActivity(false, 1);
}); });
/* save resources */ /* save resources */
$('#vm-details-resources-save').click(function() { $('#vm-details-resources-save').click(function() {
$('i.icon-save', this).removeClass("icon-save").addClass("icon-refresh icon-spin"); $('i.fa-floppy-o', this).removeClass("fa-floppy-o").addClass("fa-refresh fa-spin");
var vm = $(this).data("vm"); var vm = $(this).data("vm");
$.ajax({ $.ajax({
type: 'POST', type: 'POST',
url: "/dashboard/vm/" + vm + "/op/resources_change/", url: "/dashboard/vm/" + vm + "/op/resources_change/",
data: $('#vm-details-resources-form').serialize(), data: $('#vm-details-resources-form').serialize(),
success: function(data, textStatus, xhr) { success: function(data, textStatus, xhr) {
$("#vm-details-resources-save i").removeClass('icon-refresh icon-spin').addClass("icon-save"); $("#vm-details-resources-save i").removeClass('fa-refresh fa-spin').addClass("fa-floppy-o");
$('a[href="#activity"]').trigger("click"); $('a[href="#activity"]').trigger("click");
}, },
error: function(xhr, textStatus, error) { error: function(xhr, textStatus, error) {
$("#vm-details-resources-save i").removeClass('icon-refresh icon-spin').addClass("icon-save"); $("#vm-details-resources-save i").removeClass('fa-refresh fa-spin').addClass("fa-floppy-o");
if (xhr.status == 500) { if (xhr.status == 500) {
addMessage("500 Internal Server Error", "danger"); addMessage("500 Internal Server Error", "danger");
} else { } else {
...@@ -76,13 +76,13 @@ $(function() { ...@@ -76,13 +76,13 @@ $(function() {
var eye = $(this).children("#vm-details-pw-eye"); var eye = $(this).children("#vm-details-pw-eye");
eye.tooltip("destroy") eye.tooltip("destroy")
if(eye.hasClass("icon-eye-open")) { if(eye.hasClass("fa-eye")) {
eye.removeClass("icon-eye-open").addClass("icon-eye-close"); eye.removeClass("fa-eye").addClass("fa-eye-slash");
input.prop("type", "text"); input.prop("type", "text");
input.focus(); input.focus();
eye.prop("title", "Hide password"); eye.prop("title", "Hide password");
} else { } else {
eye.removeClass("icon-eye-close").addClass("icon-eye-open"); eye.removeClass("fa-eye-slash").addClass("fa-eye");
input.prop("type", "password"); input.prop("type", "password");
eye.prop("title", "Show password"); eye.prop("title", "Show password");
} }
...@@ -269,7 +269,7 @@ $(function() { ...@@ -269,7 +269,7 @@ $(function() {
$("#getScreenshotButton").click(function() { $("#getScreenshotButton").click(function() {
var vm = $(this).data("vm-pk"); var vm = $(this).data("vm-pk");
var ct = $("#vm-console-screenshot"); var ct = $("#vm-console-screenshot");
$("i", this).addClass("icon-spinner icon-spin"); $("i", this).addClass("fa-spinner fa-spin");
$(this).prop("disabled", true); $(this).prop("disabled", true);
ct.slideDown(); ct.slideDown();
var img = $("img", ct).prop("src", '/dashboard/vm/' + vm + '/screenshot/'); var img = $("img", ct).prop("src", '/dashboard/vm/' + vm + '/screenshot/');
...@@ -280,7 +280,7 @@ $(function() { ...@@ -280,7 +280,7 @@ $(function() {
// see: http://stackoverflow.com/a/3877079/1112653 // see: http://stackoverflow.com/a/3877079/1112653
$("#vm-console-screenshot img").load(function(e) { $("#vm-console-screenshot img").load(function(e) {
$("#getScreenshotButton").prop("disabled", false) $("#getScreensh