/*
* Copyright 2012 LinkedIn Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
$.namespace('azkaban');
var jmxTableView;
azkaban.JMXTableView = Backbone.View.extend({
events: {
"click .query-btn": "queryJMX",
"click .collapse-btn": "collapseRow"
},
initialize: function(settings) {
},
formatValue: function(value) {
if (String(value).length != TIMESTAMP_LENGTH) {
return value;
}
if (isNaN(parseInt(value))) {
return value;
}
var date = new Date(value);
if (date.getTime() <= 0) {
return value;
}
return value + " (" + date.toISOString() + ")";
},
queryJMX: function(evt) {
var target = evt.currentTarget;
var id = target.id;
var childID = id + "-child";
var tbody = id + "-tbody";
var requestURL = contextURL + "/jmx";
var canonicalName=$(target).attr("domain") + ":name=" + $(target).attr("name");
var data = {
"ajax": "getAllMBeanAttributes",
"mBean": canonicalName
};
if ($(target).attr("hostPort")) {
data.ajax = "getAllExecutorAttributes";
data.hostPort = $(target).attr("hostPort");
}
var view = this;
var successHandler = function(data) {
var table = $('#' + tbody);
$(table).empty();
for (var key in data.attributes) {
var value = data.attributes[key];
var tr = document.createElement("tr");
var tdName = document.createElement("td");
var tdVal = document.createElement("td");
$(tdName).addClass('property-key');
$(tdName).text(key);
value = view.formatValue(value);
$(tdVal).text(value);
$(tr).append(tdName);
$(tr).append(tdVal);
$('#' + tbody).append(tr);
}
var child = $("#" + childID);
$(child).fadeIn();
};
$.get(requestURL, data, successHandler);
},
queryRemote: function(evt) {
var target = evt.currentTarget;
var id = target.id;
var childID = id + "-child";
var tbody = id + "-tbody";
var requestURL = contextURL + "/jmx";
var canonicalName = $(target).attr("domain") + ":name=" + $(target).attr("name");
var hostPort = $(target).attr("hostport");
var requestData = {
"ajax": "getAllExecutorAttributes",
"mBean": canonicalName,
"hostPort": hostPort
};
var view = this;
var successHandler = function(data) {
var table = $('#' + tbody);
$(table).empty();
for (var key in data.attributes) {
var value = data.attributes[key];
var tr = document.createElement("tr");
var tdName = document.createElement("td");
var tdVal = document.createElement("td");
$(tdName).addClass('property-key');
$(tdName).text(key);
value = view.formatValue(value);
$(tdVal).text(value);
$(tr).append(tdName);
$(tr).append(tdVal);
$('#' + tbody).append(tr);
}
var child = $("#" + childID);
$(child).fadeIn();
};
$.get(requestURL, requestData, successHandler);
},
collapseRow: function(evt) {
$(evt.currentTarget).parent().parent().fadeOut();
},
render: function() {
}
});
var remoteTables = new Array();
$(function() {
jmxTableView = new azkaban.JMXTableView({el:$('#all-jmx')});
$(".remoteJMX").each(function(item) {
var newTableView = new azkaban.JMXTableView({el:$(this)});
remoteTables.push(newTableView);
});
});