Statistics
| Branch: | Tag: | Revision:

root / ui / templates / standard.html @ ab5282e4

History | View | Annotate | Download (6.6 kB)

1 42f67a2a Dimitris Moraitis
{% load i18n %}
2 42f67a2a Dimitris Moraitis
3 42f67a2a Dimitris Moraitis
<!-- the standard view -->
4 42f67a2a Dimitris Moraitis
<div id="machinesview" class="standard">
5 935bb83f Markos Gogoulos
    <div id="emptymachineslist">{% trans "You have no virtual machines! Press Create New to create some!" %}</div>
6 42f67a2a Dimitris Moraitis
    <div id="spinner"></div>
7 42f67a2a Dimitris Moraitis
    <div class="machine" id="machine-template" style="display:none">
8 42f67a2a Dimitris Moraitis
        <div class="state">
9 42f67a2a Dimitris Moraitis
            <div class="status">{% trans "Running" %}</div>
10 42f67a2a Dimitris Moraitis
            <div class="indicator"></div>
11 42f67a2a Dimitris Moraitis
            <div class="indicator"></div>
12 42f67a2a Dimitris Moraitis
            <div class="indicator"></div>
13 42f67a2a Dimitris Moraitis
            <div class="indicator"></div>
14 42f67a2a Dimitris Moraitis
        </div>
15 42f67a2a Dimitris Moraitis
        <img class="logo" src="" />
16 42f67a2a Dimitris Moraitis
        <a href="#" class="name">
17 42f67a2a Dimitris Moraitis
            <h5>Name: <span class="name">node.name</span><span class="rename"></span></h5>
18 42f67a2a Dimitris Moraitis
        </a>
19 42f67a2a Dimitris Moraitis
        <a href="#" class="ip">
20 42f67a2a Dimitris Moraitis
            <h5>IP: <span class="public">node.public_ip</span></h5>
21 42f67a2a Dimitris Moraitis
        </a>
22 42f67a2a Dimitris Moraitis
        <h5 class="settings">
23 42f67a2a Dimitris Moraitis
            {% trans "Show:" %} <a href="#">{% trans "disks" %}</a> | <a href="#">{% trans "networks" %}</a> | <a href="#">{% trans "group" %}</a>
24 42f67a2a Dimitris Moraitis
        </h5>
25 42f67a2a Dimitris Moraitis
        <div class="actions">
26 42f67a2a Dimitris Moraitis
            <a href="#" class="action-start">{% trans "Start" %}</a>
27 42f67a2a Dimitris Moraitis
            <a href="#" class="action-reboot">{% trans "Reboot" %}</a>
28 42f67a2a Dimitris Moraitis
            <a href="#" class="action-shutdown">{% trans "Shutdown" %}</a>
29 42f67a2a Dimitris Moraitis
            <a href="#" class="more">{% trans "more &hellip;" %}</a>
30 42f67a2a Dimitris Moraitis
        </div>
31 e5b0ba20 Vangelis Koukis
        <div class="separator"></div>
32 42f67a2a Dimitris Moraitis
    </div>
33 42f67a2a Dimitris Moraitis
34 42f67a2a Dimitris Moraitis
    <div class="running"></div>
35 e5b0ba20 Vangelis Koukis
    <div id="mini" class="separator"></div>
36 42f67a2a Dimitris Moraitis
    <div class="terminated"></div>
37 42f67a2a Dimitris Moraitis
</div>
38 42f67a2a Dimitris Moraitis
39 e5b0ba20 Vangelis Koukis
<div id="machines" class="separator"></div>
40 42f67a2a Dimitris Moraitis
41 42f67a2a Dimitris Moraitis
<script>
42 42f67a2a Dimitris Moraitis
// intercept reboot click 
43 42f67a2a Dimitris Moraitis
$("div.actions a.action-reboot").live('click', function(){
44 42f67a2a Dimitris Moraitis
    var serverID = $(this).parent().parent().attr("id");
45 42f67a2a Dimitris Moraitis
    var serverName = $(this).parent().prevAll("a.name").find("span.name").text();
46 42f67a2a Dimitris Moraitis
    confirm_action('reboot', reboot, [serverID], [serverName]);
47 42f67a2a Dimitris Moraitis
    return false;
48 42f67a2a Dimitris Moraitis
});
49 42f67a2a Dimitris Moraitis

50 42f67a2a Dimitris Moraitis
// intercept shutdown click
51 42f67a2a Dimitris Moraitis
$("div.actions a.action-shutdown").live('click', function(){ 
52 42f67a2a Dimitris Moraitis
    var serverID = $(this).parent().parent().attr("id");
53 42f67a2a Dimitris Moraitis
    var serverName = $(this).parent().prevAll("a.name").find("span.name").text();
54 42f67a2a Dimitris Moraitis
    confirm_action('shutdown', shutdown, [serverID], [serverName]);
55 42f67a2a Dimitris Moraitis
    return false;
56 42f67a2a Dimitris Moraitis
});
57 eae0a59a Dimitris Moraitis

58 42f67a2a Dimitris Moraitis
// intercept start click
59 42f67a2a Dimitris Moraitis
$("div.actions a.action-start").live('click', function(){ 
60 42f67a2a Dimitris Moraitis
    var serverID = $(this).parent().parent().attr("id");
61 42f67a2a Dimitris Moraitis
    var serverName = $(this).parent().prevAll("a.name").find("span.name").text();
62 2ed4ced5 Markos Gogoulos
//    confirm_action('start', start, [serverID], [serverName]);
63 2ed4ced5 Markos Gogoulos
    start([serverID]);
64 42f67a2a Dimitris Moraitis
    return false;
65 42f67a2a Dimitris Moraitis
});
66 42f67a2a Dimitris Moraitis

67 eae0a59a Dimitris Moraitis
// update the servers list
68 eae0a59a Dimitris Moraitis
function update_machines_view(data){
69 eae0a59a Dimitris Moraitis
    /* 
70 1a49199e Dimitris Moraitis
    Go through the servers in the input data. Update existing entries, add
71 eae0a59a Dimitris Moraitis
    new ones to the list
72 eae0a59a Dimitris Moraitis
    */    
73 eae0a59a Dimitris Moraitis
    $.each(data.servers, function(i,server){
74 eae0a59a Dimitris Moraitis
        
75 150eb972 Christodoulos Psaltis
        existing = $('#' + server.id);
76 eae0a59a Dimitris Moraitis
        
77 81d48bff Christodoulos Psaltis
        if (existing.length > 1){
78 eae0a59a Dimitris Moraitis
            existing.remove();
79 eae0a59a Dimitris Moraitis
            existing = [];
80 eae0a59a Dimitris Moraitis
        }
81 eae0a59a Dimitris Moraitis
        
82 1a49199e Dimitris Moraitis
        if (existing.length){
83 ab5282e4 Dimitris Moraitis
            $("div.machine:last-child").find("div.separator").show();                
84 ab5282e4 Dimitris Moraitis

85 1a49199e Dimitris Moraitis
            // If the machine already exists in the DOM then simply update or delete it
86 1a49199e Dimitris Moraitis
            if (server.deleted == true) {
87 1a49199e Dimitris Moraitis
                existing.remove();            
88 81d48bff Christodoulos Psaltis
                try {
89 1a49199e Dimitris Moraitis
                    console.info(existing.find("a.name span.name").text() + ' removed');
90 1a49199e Dimitris Moraitis
                } catch(err) {}            
91 1a49199e Dimitris Moraitis
            } else if (existing.find(".status").text() != STATUS_MESSAGES[server.status]) {
92 1a49199e Dimitris Moraitis
                
93 1a49199e Dimitris Moraitis
                try { // firebug console logging
94 150eb972 Christodoulos Psaltis
                    console.info(existing.find("a.name span.name").text() + ' from ' 
95 150eb972 Christodoulos Psaltis
                                + existing.find(".status").text() + ' to ' + STATUS_MESSAGES[server.status]);
96 81d48bff Christodoulos Psaltis
                } catch(err) {}
97 1a49199e Dimitris Moraitis
                
98 1a49199e Dimitris Moraitis
                if (['BUILD','ACTIVE','REBOOT'].indexOf(server.status) >= 0 &&
99 1a49199e Dimitris Moraitis
                    [STATUS_MESSAGES['STOPPED'], STATUS_MESSAGES['ERROR']].indexOf(existing.find(".status").text()) >= 0) {
100 1a49199e Dimitris Moraitis
                    // from stopped to running
101 1a49199e Dimitris Moraitis
                    moved = existing.clone().appendTo(".running");
102 1a49199e Dimitris Moraitis
                    moved.find("img.logo").attr("src","static/machines/"+image_tags[server.imageRef]+'.png');
103 1a49199e Dimitris Moraitis
                    existing.remove();
104 1a49199e Dimitris Moraitis
                    existing = moved;
105 1a49199e Dimitris Moraitis
                } else if (['STOPPED','ERROR'].indexOf(server.status) >= 0 &&
106 1a49199e Dimitris Moraitis
                           [STATUS_MESSAGES['ACTIVE'], STATUS_MESSAGES['BUILD'], STATUS_MESSAGES['REBOOT']].indexOf(existing.find(".status").text()) >= 0) {
107 1a49199e Dimitris Moraitis
                    moved = existing.clone().appendTo(".terminated");
108 1a49199e Dimitris Moraitis
                    moved.find("img.logo").attr("src","static/machines/"+image_tags[server.imageRef]+'-off.png');
109 1a49199e Dimitris Moraitis
                    existing.remove();
110 1a49199e Dimitris Moraitis
                    existing = moved;
111 1a49199e Dimitris Moraitis
                } 
112 eae0a59a Dimitris Moraitis
                existing.find(".status").text(STATUS_MESSAGES[server.status]);
113 1a49199e Dimitris Moraitis
            
114 eae0a59a Dimitris Moraitis
            }
115 eae0a59a Dimitris Moraitis
            existing.find("a.name span.name").text(server.name);
116 eae0a59a Dimitris Moraitis
            existing.find("a.ip span.public").text(String(server.addresses.public.ip.addr).replace(',',' '));
117 1a49199e Dimitris Moraitis
        } else if (server.deleted != true) {
118 1a49199e Dimitris Moraitis
            // If it does not exist and it's not deleted, we should create it
119 eae0a59a Dimitris Moraitis
            var machine = $("#machine-template").clone().attr("id", server.id).fadeIn("slow");
120 eae0a59a Dimitris Moraitis
            machine.find("a.name span.name").text(server.name);
121 b335768e Markos Gogoulos
            machine.find("img.logo").attr("src","static/machines/"+image_tags[server.imageRef]+'.png');
122 b335768e Markos Gogoulos
            machine.find("span.imagetag").text(image_tags[server.imageRef]);
123 eae0a59a Dimitris Moraitis
            machine.find("a.ip span.public").text(String(server.addresses.public.ip.addr).replace(',',' '));            
124 eae0a59a Dimitris Moraitis
            machine.find(".status").text(STATUS_MESSAGES[server.status]);
125 eae0a59a Dimitris Moraitis
            if (['BUILD', 'ACTIVE', 'REBOOT'].indexOf(server.status) >= 0){
126 eae0a59a Dimitris Moraitis
                machine.appendTo(".running");
127 eae0a59a Dimitris Moraitis
            } else {
128 b335768e Markos Gogoulos
                machine.find("img.logo").attr("src","static/machines/"+image_tags[server.imageRef]+'-off.png');
129 eae0a59a Dimitris Moraitis
                machine.appendTo(".terminated");
130 eae0a59a Dimitris Moraitis
            }
131 eae0a59a Dimitris Moraitis

132 eae0a59a Dimitris Moraitis
        }
133 eae0a59a Dimitris Moraitis
    });
134 eae0a59a Dimitris Moraitis

135 eae0a59a Dimitris Moraitis
    $("#spinner").hide();
136 e5b0ba20 Vangelis Koukis
    $("div.machine:last-child").find("div.separator").hide();
137 e5b0ba20 Vangelis Koukis
    // the separator shows only when running and terminated machines are available
138 c58db69b Christodoulos Psaltis
    if ($(".terminated a.name").length > 0 && $(".running a.name").length > 0) {
139 e5b0ba20 Vangelis Koukis
        $("#mini.separator").fadeIn("slow");
140 e5b0ba20 Vangelis Koukis
    } else {
141 e5b0ba20 Vangelis Koukis
        $("#mini.separator").fadeOut("slow");
142 eae0a59a Dimitris Moraitis
    }
143 935bb83f Markos Gogoulos
    // show message in case user has no servers!
144 935bb83f Markos Gogoulos
    if (servers.length == 0) {
145 935bb83f Markos Gogoulos
        $("#emptymachineslist").fadeIn("slow");
146 935bb83f Markos Gogoulos
    }
147 eae0a59a Dimitris Moraitis
}
148 eae0a59a Dimitris Moraitis

149 146b6003 Dimitris Moraitis
if (images.length == 0) {
150 146b6003 Dimitris Moraitis
    // populate image list
151 146b6003 Dimitris Moraitis
    update_images();
152 146b6003 Dimitris Moraitis
}
153 146b6003 Dimitris Moraitis
if (flavors.length == 0) {
154 146b6003 Dimitris Moraitis
    // configure flavors
155 146b6003 Dimitris Moraitis
    update_flavors(); 
156 146b6003 Dimitris Moraitis
}
157 146b6003 Dimitris Moraitis

158 146b6003 Dimitris Moraitis
update_vms(UPDATE_INTERVAL);
159 2ed4ced5 Markos Gogoulos
</script>