1- $ ( function ( ) {
2- createVMlist ( ) ;
1+ $ ( function ( ) {
2+ drawHistory ( ) ;
33} ) ;
4-
5- var offset = 0 ;
6- var numvms = 0 ;
7- var pagesize = 5 ;
8-
94var MONTHS = [ "Jan" , "Feb" , "Mar" , "Apr" , "May" , "Jun" , "Jul" , "Aug" , "Sep" , "Oct" , "Nov" , "Dec" ] ;
105
116function formatDate ( timestamp )
127{
13- if ( timestamp === 0 ) {
14- return "-" ;
15- }
16-
178 var date = new Date ( timestamp * 1000 ) ;
189 var datestring = "" ;
19- datestring += date . getUTCDate ( ) + " " ;
10+ datestring += ( "0" + date . getUTCDate ( ) ) . slice ( - 2 ) + " " ;
2011 datestring += MONTHS [ date . getUTCMonth ( ) ] + " " ;
2112 datestring += date . getUTCFullYear ( ) + " " ;
22- datestring += ( "0" + date . getUTCHours ( ) ) . slice ( - 2 ) + ":" ;
23- datestring += ( "0" + date . getUTCMinutes ( ) ) . slice ( - 2 ) + ":" ;
24- datestring += ( "0" + date . getUTCSeconds ( ) ) . slice ( - 2 ) ;
13+ datestring += ( "0" + date . getUTCHours ( ) ) . slice ( - 2 ) + ":" ;
14+ datestring += ( "0" + date . getUTCMinutes ( ) ) . slice ( - 2 ) + ":" ;
15+ datestring += ( "0" + date . getUTCSeconds ( ) ) . slice ( - 2 ) ;
2516 return datestring ;
2617}
2718
28- function createVMlist ( )
19+ var vmhistory = $ ( '#vm-history' ) . DataTable ( {
20+ "columns" : [
21+ { data : 'name' } ,
22+ { data : 'hostname' } ,
23+ { data : 'state' } ,
24+ { data : 'type' } ,
25+ { data : 'stime' } ,
26+ { data : 'etime' } ,
27+ { data : 'cpu' } ,
28+ { data : 'memory' } ,
29+ ]
30+ } ) ;
31+ $ . fn . dataTable . ext . errMode = 'throw' ;
32+ function drawHistory ( )
2933{
3034 $ . ajax ( {
3135 type : "GET" ,
@@ -42,14 +46,15 @@ function createVMlist()
4246 $ ( "#error" ) . show ( ) ;
4347 }
4448 }
45- } ) . done ( function ( json ) {
46- var html = "" ;
49+ } ) . done ( function ( data ) {
50+ vmhistory . clear ( ) ;
4751
48- $ . each ( json , function ( index , vm ) {
49- state = vm [ 'state' ] ;
52+ for ( row of data [ "data" ] ) {
53+ state = row [ 'state' ] ;
54+ // var state_val;
5055 disabled = ( state != "RUNNING" ? "disabled" : "" ) ;
5156
52- if ( state === "POWERED OFF" ) {
57+ if ( state === "POWERED OFF" || state === "DONE" ) {
5358 state_val = 0 ;
5459 }
5560 else if ( state === "PENDING" || state === "DELETING" ) {
@@ -64,24 +69,82 @@ function createVMlist()
6469 else if ( state === "RUNNING" ) {
6570 state_val = 4 ;
6671 }
67- else {
68- state_val = 0 ;
69- }
70- html += '<tr>' ;
71- html += '<td>' + vm [ 'name' ] + '</td>' ;
72- html += '<td>' + vm [ 'hostname' ] + '</td>' ;
73- html += '<td><progress max="4" value="' + state_val + '"></progress><span class="status-label">' + state + '</span></td>' ;
74- html += '<td>' + vm [ 'type' ] + '</td>' ;
75- html += '<td>' + formatDate ( vm [ 'stime' ] ) + '</td>' ;
76- html += '<td>' + formatDate ( vm [ 'etime' ] ) + '</td>' ;
77- html += '<td>' + vm [ 'cpu' ] + '</td>' ;
78- html += '<td>' + ( vm [ 'memory' ] / 1024 ) + "GB" + '</td>' ;
79- html += '</tr>' ;
80- } ) ;
81- if ( html !== "" ) {
82- $ ( "#vms" ) . empty ( ) ;
83- $ ( "#vms" ) . append ( html ) ;
72+
73+ row [ 'memory' ] = row [ 'memory' ] / 1024 + "GB" ;
74+
75+ row [ 'state' ] = '<span class="status-label status-label-' + state_val + '">' + state + '</span><progress max="4" value="' + state_val + '"></progress>' ;
76+
77+ row [ 'stime' ] = formatDate ( row [ 'stime' ] ) ;
78+
79+ row [ 'etime' ] = formatDate ( row [ 'etime' ] ) ;
80+
81+ delete row [ 'id' ] ;
82+
83+ delete row [ 'token' ] ;
84+
85+ vmhistory . row . add ( row ) ;
8486 }
85- $ ( "#error" ) . hide ( ) ;
87+ vmhistory . draw ( false ) ; // 'false' saves the paging position
8688 } ) ;
8789}
90+
91+ // function createVMlist()
92+ // {
93+ // $.ajax({
94+ // type: "GET",
95+ // url: "/api/vm?history=1&size=999",
96+ // statusCode: {
97+ // 403: function() {
98+ // Cookie.remove('session', {path : '/'});
99+ // Cookie.remove('name', {path : '/'});
100+ // Cookie.remove('fedid', {path : '/'});
101+ // window.location.replace("/login");
102+ // },
103+ // 500: function() {
104+ // $("#errormessage").html("The cloud may be experiencing problems. Please try again later.");
105+ // $("#error").show();
106+ // }
107+ // }
108+ // }).done(function(json) {
109+ // var html = "";
110+ //
111+ // $.each(json, function(index, vm) {
112+ // state = vm['state'];
113+ // disabled = (state != "RUNNING" ? "disabled" : "");
114+ //
115+ // if (state === "POWERED OFF") {
116+ // state_val = 0;
117+ // }
118+ // else if (state === "PENDING" || state === "DELETING") {
119+ // state_val = 1;
120+ // }
121+ // else if (state === "TRANSFER") {
122+ // state_val = 2;
123+ // }
124+ // else if (state === "BUILDING" || state === "EPILOG") {
125+ // state_val = 3;
126+ // }
127+ // else if (state === "RUNNING") {
128+ // state_val = 4;
129+ // }
130+ // else {
131+ // state_val = 0;
132+ // }
133+ // html += '<tr>';
134+ // html += '<td>' + vm['name'] + '</td>';
135+ // html += '<td>' + vm['hostname'] + '</td>';
136+ // html += '<td><progress max="4" value="'+state_val+'"></progress><span class="status-label">'+state+'</span></td>';
137+ // html += '<td>' + vm['type'] + '</td>';
138+ // html += '<td>' + formatDate(vm['stime']) + '</td>';
139+ // html += '<td>' + formatDate(vm['etime']) + '</td>';
140+ // html += '<td>' + vm['cpu'] + '</td>';
141+ // html += '<td>' + (vm['memory']/1024) + "GB" + '</td>';
142+ // html += '</tr>';
143+ // });
144+ // if (html !== "") {
145+ // $("#vms").empty();
146+ // $("#vms").append(html);
147+ // }
148+ // $("#error").hide();
149+ // });
150+ // }
0 commit comments