sPaginationType: 'bootstrap',
// Handle the null values & the error : Datatables warning Requested unknown parameter
// http://datatables.net/forums/discussion/5331/datatables-warning-...-requested-unknown-parameter/p2
- aoColumnDefs: [{sDefaultContent: '', aTargets: [ '_all' ]}],
+ aoColumnDefs: [{sDefaultContent: '', aTargets: [ '_all' ], "sType": "mysort"}],
// WARNING: this one causes tables in a 'tabs' that are not exposed at the time this is run to show up empty
// sScrollX: '100%', /* Horizontal scrolling */
bProcessing: true, /* Loading */
$('table.dataTable').delegate('a.resource-info','click',function() {
var aPos = sTable.fnGetPosition( this.parentNode );
var aData = sTable.fnGetData( aPos[0] );
- //console.log(aData);
+ console.log(aData);
var index = {}
// XXX Loic @ Hardcoded !!! Maybe a loop over all fields would be better
index['hostname'] = self.getColIndex('hostname',cols);
index['urn'] = self.getColIndex('urn',cols);
index['type'] = self.getColIndex('type',cols);
- index['status'] = self.getColIndex('boot_state',cols);
+ //index['status'] = self.getColIndex('boot_state',cols);
+ index['available'] = self.getColIndex('available',cols);
index['testbed'] = self.getColIndex('testbed_name',cols);
index['facility'] = self.getColIndex('facility_name',cols);
var resourceData = {
'hostname' : strip(aData[index['hostname']]),
'urn' : aData[index['urn']],
'type' : aData[index['type']],
- 'status' : aData[index['status']],
+ //'status' : aData[index['status']],
+ 'available' : aData[index['available']],
'testbed' : aData[index['testbed']],
'facility' : aData[index['facility']],
};
} else {
var logo = resourceData['testbed'];
var resourceLocation = {
- 'longitude' : aData[13],
- 'latitude' : aData[23],
+ 'longitude' : aData[20],
+ 'latitude' : aData[17],
};
var coordinates = resourceLocation['latitude']+','+resourceLocation['longitude'];
+ console.log(coordinates);
}
var modal = $('#resource-info-modal');
modal.find('.modal-title').text(resourceData['testbed'] + ': ' +resourceData['hostname']);
table = modal.find('.modal-resource-info');
- table.html('<tr><td colspan="2"><img class="img-responsive" src="/static/img/testbeds/'+logo+'.png" alt="'+resourceData['facility']+' - '+resourceData['testbed']+'" /></td></tr>');
+ table.html('<tr><td colspan="2"><center><img class="img-responsive" src="/static/img/testbeds/'+logo+'.png" alt="'+resourceData['facility']+' - '+resourceData['testbed']+'" /></center></td></tr>');
for (var j in resourceData) {
table.append('<tr><td>' + j + '</td><td>' + resourceData[j] + '</td></tr>');
}
return result=$('td:eq('+iColumn+') input', tr).prop('checked') ? '1' : '0';
});
};
+
+ // use sType: "mysort" for any columns you wish to use these routines
+ // http://datatables.net/forums/discussion/7546/alpha-numeric-sort
+ jQuery.fn.dataTableExt.oSort['mysort-asc'] = function(a,b) {
+ var r = new RegExp("<([a-zA-Z]+).*?>(.*?)</\\1>");
+ if (r.exec(a) != null){
+ a = r.exec(a)[2];
+ }
+ if (r.exec(b) != null){
+ b = r.exec(b)[2];
+ }
+ a = a.replace(/[^A-Za-z0-9]/, "");
+ b = b.replace(/[^A-Za-z0-9]/, "");
+ var re = new RegExp("^([a-zA-Z]*)(.*)");
+ var x = re.exec(a);
+ var y = re.exec(b);
+
+ // you might want to force the first portion to lowercase
+ // for case insensitive matching
+ // x[1] = x[1].toLowerCase();
+ // y[1] = y[1].toLowerCase();
+
+ if (x[1] > y[1]) return 1;
+ if (x[1] < y[1]) return -1;
+
+ // if you want to force the 2nd part to only be numeric:
+ x[2] = parseInt(x[2]);
+ y[2] = parseInt(y[2]);
+
+ return ((x[2] < y[2]) ? -1 : ((x[2] > y[2]) ? 1 : 0));
+ };
+
+ jQuery.fn.dataTableExt.oSort['mysort-desc'] = function(a,b) {
+ var r = new RegExp("<([a-zA-Z]+).*?>(.*?)</\\1>");
+ if (r.exec(a) != null){
+ a = r.exec(a)[2];
+ }
+ if (r.exec(b) != null){
+ b = r.exec(b)[2];
+ }
+ a = a.replace(/[^A-Za-z0-9]/, "");
+ b = b.replace(/[^A-Za-z0-9]/, "");
+ var re = new RegExp("^([a-zA-Z]*)(.*)");
+ var x = re.exec(a);
+ var y = re.exec(b);
+
+ // you might want to force the first portion to lowercase
+ // for case insensitive matching
+ // x[1] = x[1].toLowerCase();
+ // y[1] = y[1].toLowerCase();
+
+ if (x[1] > y[1]) return -1;
+ if (x[1] < y[1]) return 1;
+
+ // if you want to force the 2nd part to only be numeric:
+ x[2] = parseInt(x[2]);
+ y[2] = parseInt(y[2]);
+
+ return ((x[2] < y[2]) ? 1 : ((x[2] > y[2]) ? -1 : 0));
+ };