|
| 1 | +function showConfirmDialog(database) { |
| 2 | + var deferred = Q.defer(); |
| 3 | + |
| 4 | + var dialog = $("#drop-confirm-template").clone(); |
| 5 | + dialog.removeAttr("id").removeAttr("hidden"); |
| 6 | + |
| 7 | + dialog.find(".field-database").text(database); |
| 8 | + |
| 9 | + dialog.find(".part-cancel-button").click(function () { |
| 10 | + deferred.resolve(false); |
| 11 | + dialog.modal("hide"); |
| 12 | + }); |
| 13 | + dialog.find(".part-confirm-button").click(function () { |
| 14 | + deferred.resolve(true); |
| 15 | + dialog.modal("hide"); |
| 16 | + }); |
| 17 | + |
| 18 | + dialog.on("hidden", function () { |
| 19 | + // In case somehow bootstrap decided to dismiss it for us... |
| 20 | + if (Q.isPending(deferred.promise)) |
| 21 | + deferred.resolve(false); |
| 22 | + dialog.remove(); |
| 23 | + }); |
| 24 | + |
| 25 | + $("body").append(dialog); |
| 26 | + dialog.modal("show"); |
| 27 | + |
| 28 | + return deferred.promise; |
| 29 | +} |
| 30 | + |
| 31 | +function formatSize(bytes) { |
| 32 | + var suffixes = ["bytes", "kB", "MB", |
| 33 | + // Eh, why not? :-D |
| 34 | + "GB", "TB", "PB", "EB", "ZB", "YB"]; |
| 35 | + var index = 0; |
| 36 | + while (index + 1 < suffixes.length && bytes >= 1024) { |
| 37 | + index++; |
| 38 | + bytes /= 1024; |
| 39 | + } |
| 40 | + var bytesStr = bytes.toFixed(index ? 2 : 0); |
| 41 | + return bytesStr + "\xA0" + suffixes[index]; |
| 42 | +} |
| 43 | + |
| 44 | +function createRow(name, size) { |
| 45 | + var tr = $("<tr>"); |
| 46 | + tr.append($("<td>").append( |
| 47 | + $("<code>").addClass("noborder").text(name))); |
| 48 | + tr.append($("<td>").text(formatSize(size))); |
| 49 | + var button = $("<button>").attr("type", "button") |
| 50 | + .addClass("btn btn-danger btn-small") |
| 51 | + .text("Drop"); |
| 52 | + button.click(function() { |
| 53 | + showConfirmDialog(name).then(function(result) { |
| 54 | + if (!result) |
| 55 | + return; |
| 56 | + alert("Yeah, not implementing you yet."); |
| 57 | + }).done(); |
| 58 | + }); |
| 59 | + tr.append($("<td>").append(button)); |
| 60 | + return tr; |
| 61 | +} |
| 62 | + |
| 63 | +function loadInfo() { |
| 64 | + var locker = getCurrentLocker(); |
| 65 | + $(".field-locker-name").text(locker); |
| 66 | + sqlCommand(["database", "list", locker]).then(function(data) { |
| 67 | + var totalSize = 0; |
| 68 | + |
| 69 | + var tbody = $(".field-database-tbody"); |
| 70 | + tbody.empty(); |
| 71 | + for (var i = 0; i < data.databases.length; i++) { |
| 72 | + totalSize += data.databases[i].size; |
| 73 | + tbody.append(createRow(data.databases[i].name, |
| 74 | + data.databases[i].size)); |
| 75 | + } |
| 76 | + |
| 77 | + $(".field-used-size").text(formatSize(totalSize)); |
| 78 | + $(".field-quota").text(formatSize(data.quota)); |
| 79 | + $(".field-used-percent").text(((totalSize / data.quota) * 100).toFixed(1)); |
| 80 | + }, function(err) { |
| 81 | + // FIXME! |
| 82 | + alert(err); |
| 83 | + }); |
| 84 | +} |
| 85 | + |
| 86 | +loadInfo(); |
0 commit comments