").addClass("output").html($(this).val()).insertAfter($(this));
});
$('.vm-slider').slider()
.on('slide', function(e) {
$(this).val(e.value);
$(this).parent('div').nextAll("span").html(e.value)
});
refreshSliders();
}
// ehhh
function refreshSliders() {
$('.vm-slider').each(function() {
$(this).val($(this).slider().data('slider').getValue());
$(this).parent('div').nextAll("span").html($(this).val());
});
}
/* deletes the VM with the pk
* if dir is true, then redirect to the dashboard landing page
* else it adds a success message */
function deleteObject(data) {
$.ajax({
type: 'POST',
data: {'redirect': data['redirect']},
url: data['url'],
headers: {"X-CSRFToken": getCookie('csrftoken')},
success: function(re, textStatus, xhr) {
if(!data['redirect']) {
selected = [];
addMessage(re['message'], 'success');
if(data.type === "disk") {
// no need to remove them from DOM
$('a[data-disk-pk="' + data.pk + '"]').parent("li").fadeOut();
$('a[data-disk-pk="' + data.pk + '"]').parent("h4").fadeOut();
}
else {
$('a[data-'+data['type']+'-pk="' + data['pk'] + '"]').closest('tr').fadeOut(function() {
$(this).remove();
});
}
} else {
window.location.replace('/dashboard');
}
},
error: function(xhr, textStatus, error) {
addMessage('Uh oh :(', 'danger')
}
});
}
function massDeleteVm(data) {
$.ajax({
traditional: true,
url: data['url'],
headers: {"X-CSRFToken": getCookie('csrftoken')},
type: 'POST',
data: {'vms': data['data']['v']},
success: function(re, textStatus, xhr) {
for(var i=0; i< data['data']['v'].length; i++)
$('.vm-list-table tbody tr[data-vm-pk="' + data['data']['v'][i] + '"]').fadeOut(500, function() {
selected = [];
// reset group buttons
$('.vm-list-group-control a').attr('disabled', true);
$(this).remove();
});
addMessage(re['message'], 'success');
},
error: function(xhr, textStatus, error) {
// TODO this
}
});
}
function addMessage(text, type) {
$('body').animate({scrollTop: 0});
div = '' + text + '
';
$('.messagelist').html('').append(div);
$('.messagelist div').fadeIn();
}
function addModalConfirmation(func, data) {
$.ajax({
type: 'GET',
url: data['url'],
data: jQuery.param(data['data']),
success: function(result) {
$('body').append(result);
$('#confirmation-modal').modal('show');
$('#confirmation-modal').on('hidden.bs.modal', function() {
$('#confirmation-modal').remove();
});
$('#confirmation-modal-button').click(function() {
func(data);
$('#confirmation-modal').modal('hide');
});
}
});
}
// for AJAX calls
/**
* Getter for user cookies
* @param {String} name Cookie name
* @return {String} Cookie value
*/
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
disk-list.js 0000664 0000000 0000000 00000001400 12343620514 0035713 0 ustar 00root root 0000000 0000000 cloud-41ec590aeb415aca44e9ee36927e52736eb46407-41ec590aeb415aca44e9ee36927e52736eb46407/circle/dashboard/static/dashboard $(function() {
$(".disk-list-disk-percentage").each(function() {
var disk = $(this).data("disk-pk");
var element = $(this);
refreshDisk(disk, element);
});
});
function refreshDisk(disk, element) {
$.get("/dashboard/disk/" + disk + "/status/", function(result) {
if(result.percentage == null || result.failed == "True") {
location.reload();
} else {
var diff = result.percentage - parseInt(element.html());
var refresh = 5 - diff;
refresh = refresh < 1 ? 1 : (result.percentage == 0 ? 1 : refresh);
if(isNaN(refresh)) refresh = 2; // this should not happen
element.html(result.percentage);
setTimeout(function() {refreshDisk(disk, element)}, refresh * 1000);
}
});
}
group-details.js 0000664 0000000 0000000 00000003524 12343620514 0036600 0 ustar 00root root 0000000 0000000 cloud-41ec590aeb415aca44e9ee36927e52736eb46407-41ec590aeb415aca44e9ee36927e52736eb46407/circle/dashboard/static/dashboard /* rename */
$("#group-details-h1-name, .group-details-rename-button").click(function() {
$("#group-details-h1-name").hide();
$("#group-details-rename").css('display', 'inline');
$("#group-details-rename-name").focus();
});
/* rename ajax */
$('#group-details-rename-submit').click(function() {
var name = $('#group-details-rename-name').val();
$.ajax({
method: 'POST',
url: location.href,
data: {'new_name': name},
headers: {"X-CSRFToken": getCookie('csrftoken')},
success: function(data, textStatus, xhr) {
$("#group-details-h1-name").html(data['new_name']).show();
$('#group-details-rename').hide();
// addMessage(data['message'], "success");
},
error: function(xhr, textStatus, error) {
addMessage("Error during renaming!", "danger");
}
});
return false;
});
$(".group-details-help-button").click(function() {
$(".group-details-help").stop().slideToggle();
});
/* for Node removes buttons */
$('.delete-from-group').click(function() {
var href = $(this).attr('href');
var tr = $(this).closest('tr');
var group = $(this).data('group_pk');
var member = $(this).data('member_pk');
var dir = window.location.pathname.indexOf('list') == -1;
addModalConfirmation(removeMember,
{ 'url': href,
'data': [],
'tr': tr,
'group_pk': group,
'member_pk': member,
'type': "user",
'redirect': dir});
return false;
});
function removeMember(data) {
$.ajax({
type: 'POST',
url: data['url'],
headers: {"X-CSRFToken": getCookie('csrftoken')},
success: function(re, textStatus, xhr) {
data['tr'].fadeOut(function() {
$(this).remove();});
},
error: function(xhr, textStatus, error) {
addMessage('Uh oh :(', 'danger')
}
});
}
group-list.js 0000664 0000000 0000000 00000010713 12343620514 0036124 0 ustar 00root root 0000000 0000000 cloud-41ec590aeb415aca44e9ee36927e52736eb46407-41ec590aeb415aca44e9ee36927e52736eb46407/circle/dashboard/static/dashboard var ctrlDown, shiftDown = false;
var ctrlKey = 17;
var shiftKey = 16;
var selected = [];
$(function() {
$(document).keydown(function(e) {
if (e.keyCode == ctrlKey) ctrlDown = true;
if (e.keyCode == shiftKey) shiftDown = true;
}).keyup(function(e) {
if (e.keyCode == ctrlKey) ctrlDown = false;
if (e.keyCode == shiftKey) shiftDown = false;
});
$('.group-list-table tbody').find('tr').mousedown(function() {
var retval = true;
if (ctrlDown) {
setRowColor($(this));
if(!$(this).hasClass('group-list-selected')) {
selected.splice(selected.indexOf($(this).index()), 1);
} else {
selected.push($(this).index());
}
retval = false;
} else if(shiftDown) {
if(selected.length > 0) {
start = selected[selected.length - 1] + 1;
end = $(this).index();
if(start > end) {
var tmp = start - 1; start = end; end = tmp - 1;
}
for(var i = start; i <= end; i++) {
if(selected.indexOf(i) < 0) {
selected.push(i);
setRowColor($('.group-list-table tbody tr').eq(i));
}
}
}
retval = false;
} else {
$('.group-list-selected').removeClass('group-list-selected');
$(this).addClass('group-list-selected');
selected = [$(this).index()];
}
// reset btn disables
$('.group-list-table tbody tr .btn').attr('disabled', false);
// show/hide group controls
if(selected.length > 1) {
$('.group-list-group-control a').attr('disabled', false);
for(var i = 0; i < selected.length; i++) {
$('.group-list-table tbody tr').eq(selected[i]).find('.btn').attr('disabled', true);
}
} else {
$('.group-list-group-control a').attr('disabled', true);
}
return retval;
});
$('#group-list-group-migrate').click(function() {
console.log(collectIds(selected));
});
$('tbody a').mousedown(function(e) {
// parent tr doesn't get selected when clicked
e.stopPropagation();
});
$('tbody a').click(function(e) {
// browser doesn't jump to top when clicked the buttons
if(!$(this).hasClass('real-link')) {
return false;
}
});
/* rename */
$("#group-list-rename-button, .group-details-rename-button").click(function() {
$("#group-list-column-name", $(this).closest("tr")).hide();
$("#group-list-rename", $(this).closest("tr")).css('display', 'inline');
});
/* rename ajax */
$('.group-list-rename-submit').click(function() {
var row = $(this).closest("tr")
var name = $('#group-list-rename-name', row).val();
var url = '/dashboard/group/' + row.children("td:first-child").text().replace(" ", "") + '/';
$.ajax({
method: 'POST',
url: url,
data: {'new_name': name},
headers: {"X-CSRFToken": getCookie('csrftoken')},
success: function(data, textStatus, xhr) {
$("#group-list-column-name", row).html(
$("", {
'class': "real-link",
href: "/dashboard/group/" + data['group_pk'] + "/",
text: data['new_name']
})
).show();
$('#group-list-rename', row).hide();
// addMessage(data['message'], "success");
},
error: function(xhr, textStatus, error) {
addMessage("uhoh", "danger");
}
});
return false;
});
/* group actions */
/* select all */
$('#group-list-group-select-all').click(function() {
$('.group-list-table tbody tr').each(function() {
var index = $(this).index();
if(selected.indexOf(index) < 0) {
selected.push(index);
$(this).addClass('group-list-selected');
}
});
if(selected.length > 0)
$('.group-list-group-control a').attr('disabled', false);
return false;
});
/* mass vm delete */
$('#group-list-group-delete').click(function() {
addModalConfirmation(massDeleteVm,
{
'url': '/dashboard/group/mass-delete/',
'data': {
'selected': selected,
'v': collectIds(selected)
}
}
);
return false;
});
});
function collectIds(rows) {
var ids = [];
for(var i = 0; i < rows.length; i++) {
var div = $('td:first-child div', $('.group-list-table tbody tr').eq(rows[i]));
ids.push(div.prop('id').replace('node-', ''));
}
return ids;
}
function setRowColor(row) {
if(!row.hasClass('group-list-selected')) {
row.addClass('group-list-selected');
} else {
row.removeClass('group-list-selected');
}
}
img/ 0000775 0000000 0000000 00000000000 12343620514 0034233 5 ustar 00root root 0000000 0000000 cloud-41ec590aeb415aca44e9ee36927e52736eb46407-41ec590aeb415aca44e9ee36927e52736eb46407/circle/dashboard/static/dashboard favicon.png 0000664 0000000 0000000 00000004572 12343620514 0036376 0 ustar 00root root 0000000 0000000 cloud-41ec590aeb415aca44e9ee36927e52736eb46407-41ec590aeb415aca44e9ee36927e52736eb46407/circle/dashboard/static/dashboard/img ‰PNG
IHDR @ @ ªiqÞ sBIT|dˆ pHYs 7] 7]€F] tEXtSoftware www.inkscape.org›î< ÷IDATxœí›{pTÕÇ?¿³‚(4…%¨`-*bDªÖ1¢Y¦ÚtFd²ÁGëkŠãTLp¡j['f¦m•d¦±OT6Žµ c Ô:ÕZ7+*¥’€Â¨å±aï¯ÜÝÍf³Ä<îîõõ™Ù=çþîï÷=¿½sÏ9WT•\P×Ü>ª pB‘ªgŠˆ5ÞB»0ÞŽCOOì®ÅʉˆH6°²¥sb®Te@àÉ`öè_PÖ÷äG×ßY6õ@Öe + mÝ_‹ÆîA¸‰Ì>ï©ðcÏèžÐ²O>츰8ž€úÍÝ7#Z¯pâ°ÿµ«V”OzÖAi™C9•€æf<»»€¥Ž8„¨·Ü^î{È!1N9Ú]Øõ;œk<À(UÖÜßÚu›ƒ>ûáÈpk×]¢üÈ=™ˆ¡Rœ7é¯Ùp>âÔoÞ[®"›pðhê°ŒÌ\qéĽN{‘èº:Œ"õ#õóáè³ê²áyDG@}k÷7Uõ7ꈘDzJcÆŒ® Φ EÀ`ÐüØôû:ãtD XÙÒõçtCËÞóUõ÷|²P
\)µÐÖýE–ÊÀh·Tå˜ZHI@ì˜u/B‘{zrÎi+[ºÎ1
›ºJPý†ÛŠ\`°<|ÿ=~8\â)¼àÚü˜'ÿA`”Ûj\ ÇDóü@ÛJ\¢È€Ìu[…‹Ð“ÜVá"ÝdŠÛ*\¤Ã ƒ`ø¤²Ó 8>Ðø1b£AePcgŸ@bÀ“F¾æ¶—ØôûÞ1ª²Ñm%.¾`Vø'½´»«'ç<ôû¶C¼ÿ/*kÜÕ“S¶·'
/úÞÏ€ÿ¸¥(‡tWý¾`iÅô£ªÜ隬ÜðöXàîÔÊä#ðòy¾GA™sY¹ap~Ðïëwë3ð™¼hÉ•ªAò¾(¿ÂÍ*»€k€Ë‚~ß»™ú
ÿ|˾‚Öµ–Æ|ÀQÐ…Aÿä§V¶tM® ç°Ï!ìü àá ß7`â2ÎÔÕa
ævß‹ê
Ü›ûëPáÊå徤oXÙÒu0ƒÌ³Ã/ý¾A/°pj¬aKç—-5÷¡\:Dñ#CÙèåùVÍÅ_èÌv¨AMŽÖ·vͳ R”+°³ž…íYOXyÖ¹¹Gaêô¼ ªwÜ>orëöC—ЦÎ=ÆsŠkŠŠLÀ’nÁêPÑ7ƒþ¢>}‰º:̘²îŒ°@Q?p
öt›¢@'ð¦Š>eaÿNù”œ?—du¥h&š›ñ¼Q´{ÜeSb/dp•œ'à£Æ§q. Ÿ%ÀmnãM¯4µOÕó@ÏT8MÐNE"F¬¶³”¶×ÖbV½z 1Y€Gÿ^ZòtrÿP$”êOE-ƒ¨ì³Ð??VSòæ@‚
¯–ˆ‘Y*ÌP(ôu‰™6Í‹E·–¾hŒ¬@±‡óõý»ÂË.ÌØñ 4FJ€›•€@Ãs'¨û}åš2M¦ñŽ ¥†¶q¯œ³öhÌÌÑj ™]@2Õ©$Ñ‘0ˆUÕiXW]¼<]È¢Ðö"¯Äê1²XíÀñ=5
1³˜u
Â,€N¸{T&¾}õdLÀÂÐËãóÌئ'Û
;A·ƒb¯Ì›0æX÷@ÎÒ8l@( ÊP>…`eèÕ—škJÖ&‡¶ëÓª0.^v ¯ƒÎ ™‰ÝÕ {ì6õÅkyBô6þ-Unl®)Þ’0š¿úÅGuÞKæô:œ²/\S¼ ÐÜì¡cæÐ
c¤XðõU;óD~K¢ñ"[‰Éáe3“b«^šhË›6”Öfà±puqMz¥7ÐÔ^&"×ÅËQ°*škJûôÈÖ/™sˆÔÃ|ˆ„++cU‘‡* M.Á)ˆYŽÈÙñâ[GFùZ<^ïþKgïö
7þ@µ¬‹“%aM¸º4+ÝQ……É0–y¼7¦–¥Ä¯Mo|¶ñÃىΠZò/Ç<ã*Cm5“ë2sâ6‰zŸì543’=bµžw,~ª‘¯¤ÕmôªòŤc99K4ADìŸ ¢rõºš³IH%zJ¢<º‡·ŒŸÎäø'•F!y_Vätö`/]OÒ¢¢«
íÉõÅjÿõÉAÊh¾g:ÙãŸÀOÒ>½$îõ(|7\]|ÑÍ«_Ì;p8p9P(»¸#i%´?
cªsŒ«ºàÙpuq¿‘o<—R^TÕÔVîdÔ–Ìé±^ÕÔv]ºá¢Ðö¢@]û°R=vkÉ”Mñâøчó¯Jl;rBô~ì1{€ Çào¦ö²Ôý$ÐÔ>”‘¥AãPý6VÞ\ÀŒWÕ_#÷‰»Â9ÁgÆÆÎþ=œ@*ú —Å‹· kÀîcT6l»AŒÙäÓQkk ±mÊ+ˆVÂ,ìîn¿£#O¼k‘¾4åépMñ/ÒL+‘ô‹ ý4^:{Ÿ÷بbTVCòEæ‰Øçíå‰À–ÉöÛ rÐóGàxqN ¡ýüĶæe¥[24eNBOEtö;Çc9þJ¶+ªÔ¢d°;#ݨJ>=