blob: b926fadbf191f615d11f9438c844485049fa1fec [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with this
* work for additional information regarding copyright ownership. The ASF
* licenses this file to you 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.
*/
var date = require('utils/date');
var App = require('app');
App.MainChartsHeatmapHostView = Em.View.extend({
templateName: require('templates/main/charts/heatmap/heatmap_host'),
/** @private */
hostClass: 'hostBlock',
/**
* show Host details block and move it near the cursor
*
* @param {Object}
* e
* @this App.MainChartsHeatmapHostView
*/
mouseEnter: function (e) {
var host = this.get('content');
var view = App.MainChartsHeatmapHostDetailView.create();
$.each(view.get('details'), function(i){
var val = host.get(i);
if (i == 'diskUsage') {
if (val == undefined || isNaN(val) || val == Infinity || val == -Infinity) {
val = null;
} else {
val = val.toFixed(1);
}
} else if (i == 'cpuUsage') {
if (val == undefined || isNaN(val)) {
val = null;
} else {
val = val.toFixed(1);
}
} else if (i == 'memoryUsage') {
if (val == undefined || isNaN(val) || val == Infinity || val == -Infinity) {
val = null;
} else {
val = val.toFixed(1);
}
} else if (i == 'hostComponents') {
if (val == undefined) {
val = null;
} else {
val = val.filterProperty('isMaster').concat(val.filterProperty('isSlave')).mapProperty('displayName').join(', ');
}
}
view.set('details.' + i, val);
});
var selectedMetric = this.get('controller.selectedMetric');
if (selectedMetric) {
var metricName = selectedMetric.get('name');
var h2vMap = selectedMetric.get('hostToValueMap');
if (h2vMap && metricName) {
var value = h2vMap[host.get('hostName')];
if (value == undefined || value == null) {
value = this.t('charts.heatmap.unknown');
} else {
if (metricName == 'Garbage Collection Time') {
value = date.timingFormat(parseInt(value));
} else {
if (isNaN(value)) {
value = this.t('charts.heatmap.unknown');
} else {
value = value + selectedMetric.get('units');
}
}
}
view.set('details.metricName', metricName);
view.set('details.metricValue', value);
}
}
var detailsBlock = $("#heatmapDetailsBlock");
detailsBlock.css('top', e.pageY + 10);
detailsBlock.css('left', e.pageX + 10);
detailsBlock.show();
},
/**
* hide Host details block
*
* @param {Object}
* e
* @this App.MainChartsHeatmapHostView
*/
mouseLeave: function (e) {
$("#heatmapDetailsBlock").hide();
},
hostTemperatureStyle: function () {
var controller = this.get('controller');
var h2sMap = controller.get('hostToSlotMap');
if (h2sMap) {
var hostname = this.get('content.hostName');
if (hostname) {
var slot = h2sMap[hostname];
if (slot > -1) {
var slotDefs = controller.get('selectedMetric.slotDefinitions');
if (slotDefs && slotDefs.length > slot) {
return slotDefs[slot].get('cssStyle');
}
}
}
}
return '';
}.property('controller.hostToSlotMap')
});