blob: def4c129a9e4d5f3e54c7cb70fd3f8e5ae49abce [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.
*/
import Ember from 'ember';
import TableDef from 'em-table/utils/table-definition';
import ColumnDef from 'em-table/utils/column-definition';
import Converter from 'yarn-ui/utils/converter';
function createColumn() {
var columns = [];
// Generate columns
columns.push({
id: 'runid',
headerTitle: 'Run ID',
contentPath: 'runid',
cellComponentName: 'em-table-linked-cell',
minWidth: "300px",
getCellContent: function (row) {
return {
routeName: 'yarn-flowrun.info',
id: row.get('uid'),
displayText: row.get('shownid')
};
}
});
columns.push({
id: 'runDurationTs',
headerTitle: 'Run Duration',
contentPath: 'runDurationTs',
getCellContent: function(row) {
return Converter.msToElapsedTimeUnit(row.get('runDurationTs'));
}
});
columns.push({
id: 'cpuVCores',
headerTitle: 'CPU VCores',
contentPath: 'cpuVCores',
getCellContent: function(row) {
if (row.get('cpuVCores') > -1) {
return row.get('cpuVCores');
}
return 'N/A';
}
});
columns.push({
id: 'memoryUsed',
headerTitle: 'Memory Used',
contentPath: 'memoryUsed',
getCellContent: function(row) {
if (row.get('memoryUsed') > -1) {
return Converter.memoryBytesToMB(row.get('memoryUsed'));
}
return 'N/A';
}
});
columns.push({
id: 'createTime',
headerTitle: 'Creation Time',
contentPath: 'createTime'
});
columns.push({
id: 'endTime',
headerTitle: 'End Time',
contentPath: 'endTime'
});
return ColumnDef.make(columns);
}
export default Ember.Controller.extend({
vizWidgets: {
runDuration: true,
cpuVcores: false,
memoryUsed: false
},
actions: {
addVizWidget(widget) {
Ember.set(this.vizWidgets, widget, true);
},
removeVizWidget(widget) {
Ember.set(this.vizWidgets, widget, false);
}
},
columns: createColumn(),
tableDefinition: TableDef.create({
sortColumnId: 'createTime',
sortOrder: 'desc'
}),
elapsedTimeVizData: function() {
var data = [];
this.get('model.flowRuns').forEach(function(run) {
var vizData = run.getElapsedTimeVizDataForBarChart();
if (vizData.value > 0) {
data.push(vizData);
}
});
data = this.getSortedVizDataInDesc(data);
return this.getRefactoredVizData(data);
}.property('model.flowRuns'),
elapsedTimeFormatter: function(tick) {
return Converter.msToElapsedTimeUnit(tick, true);
},
cpuVCoresVizData: function() {
var data = [];
this.get('model.flowRuns').forEach(function(run) {
var vizData = run.getCpuVCoresVizDataForBarChart();
if (vizData.value > 0) {
data.push(vizData);
}
});
data = this.getSortedVizDataInDesc(data);
return this.getRefactoredVizData(data);
}.property('model.flowRuns'),
memoryVizData: function() {
var data = [];
this.get('model.flowRuns').forEach(function(run) {
var vizData = run.getMemoryVizDataForBarChart();
if (vizData.value > 0) {
data.push(vizData);
}
});
data = this.getSortedVizDataInDesc(data);
return this.getRefactoredVizData(data);
}.property('model.flowRuns'),
memoryFormatter: function(tick) {
return Converter.memoryBytesToMB(tick);
},
onBarChartClick: function() {
var self = this;
return function(data) {
self.transitionToRoute('yarn-flowrun.info', data.flowrunUid);
};
}.property(),
getSortedVizDataInDesc: function(data) {
return data.sort(function(d1, d2) {
return d2.value - d1.value;
});
},
getRefactoredVizData: function(data) {
data.forEach(function(viz, idx) {
viz.label = "Run " + (++idx);
}, this);
return data;
}
});