453 lines
15 KiB
JavaScript

var metricsController = null;
App.MetricsRoute = Ember.Route.extend({
setupController: function(controller) {
metricsController = controller;
},
actions: {
getMetrics: function() {
var listUrl = 'api/v1/list/metrics';
$.get(listUrl, function(data) {
if (data && data.status == "ok"){
renderMetricListView(data.nodes);
}
});
var url = 'api/v1/metrics?size=10&page=' + metricsController.get('model.data.page');
currentTab = 'Metrics';
updateActiveTab();
$.get(url, function(data) {
if (data && data.status == "ok"){
metricsController.set('model', data);
metricsController.set('urn', null);
metricsController.set('detailview', false);
}
});
}
}
});
App.MetricspageRoute = Ember.Route.extend({
setupController: function(controller, param) {
var listUrl = 'api/v1/list/metrics';
$.get(listUrl, function(data) {
if (data && data.status == "ok"){
renderMetricListView(data.nodes);
}
});
var url = 'api/v1/metrics?size=10&page=' + param.page;
currentTab = 'Metrics';
updateActiveTab();
var breadcrumbs = [{"title":"METRICS_ROOT", "urn":"page/1"}];
$.get(url, function(data) {
if (data && data.status == "ok"){
metricsController.set('model', data);
metricsController.set('detailview', false);
metricsController.set('breadcrumbs', breadcrumbs);
metricsController.set('urn', null);
metricsController.set('dashboard', null);
metricsController.set('group', null);
}
});
var watcherEndpoint = "/api/v1/urn/watch?urn=METRICS_ROOT";
$.get(watcherEndpoint, function(data){
if(data.id && data.id !== 0) {
metricsController.set('urnWatched', true)
metricsController.set('urnWatchedId', data.id)
} else {
metricsController.set('urnWatched', false)
metricsController.set('urnWatchedId', 0)
}
})
},
actions: {
getMetrics: function() {
var listUrl = 'api/v1/list/metrics';
$.get(listUrl, function(data) {
if (data && data.status == "ok"){
renderMetricListView(data.nodes);
}
});
var url = 'api/v1/metrics?size=10&page=' + metricsController.get('model.data.page');
currentTab = 'Metrics';
updateActiveTab();
$.get(url, function(data) {
if (data && data.status == "ok"){
metricsController.set('model', data);
metricsController.set('urn', null);
metricsController.set('detailview', false);
}
});
}
}
});
var update = function(param)
{
if (param && param.name)
{
var name = param.name;
var val = param.value;
var metricId = param.pk;
var url = '/api/v1/metrics/' + metricId + '/update';
var method = 'POST';
var token = $("#csrfToken").val().replace('/', '');
var data = {"csrfToken": token};
data[name] = val;
$.ajax({
url: url,
method: method,
headers: {
'Csrf-Token': token
},
dataType: 'json',
data: data
}).done(function(data, txt, xhr){
if(data && data.status && data.status == "success")
{
console.log('Done.')
}
else
{
console.log('Failed.')
}
}).fail(function(xhr, txt, err){
Notify.toast("Failed to update data", "Metric Update Failure", "error")
})
}
}
function initializeXEditable(
id,
description,
dashboardName,
sourceType,
grain,
displayFactor,
displayFactorSym)
{
$.fn.editable.defaults.mode = 'inline';
//below code is a walk around for xeditable and ember integration issue
$('.xeditable').editable("disable");
$('.xeditable').editable("destroy");
$('#metricdesc').text(description);
$('#metricdesc').editable({
pk: id,
value: description,
url: update
});
$('#dashboardname').text(dashboardName);
$('#dashboardname').editable({
pk: id,
value: dashboardName,
url: update
});
$('#sourcetype').text(sourceType);
$('#sourcetype').editable({
pk: id,
value: sourceType,
url: update
});
$('#metricgrain').text(grain);
$('#metricgrain').editable({
pk: id,
value: grain,
url: update
});
$('#displayfactor').text(displayFactor);
$('#displayfactor').editable({
pk: id,
value: displayFactor,
url: update
});
$('#displayfactorsym').text(displayFactorSym);
$('#displayfactorsym').editable({
pk: id,
value: displayFactorSym,
url: update
});
}
App.MetricRoute = Ember.Route.extend({
setupController: function(controller, params) {
if(!metricsController)
return;
if (metricsController)
{
metricsController.set('detailview', true);
}
currentTab = 'Metrics';
updateActiveTab();
var name;
var id = 0;
if (params && params.id) {
var url = 'api/v1/metrics/' + params.id;
id = params.id;
if (params.category)
{
name = '{' + params.category + '} ' + params.name;
}
else
{
name = params.name;
}
var breadcrumbs;
$.get(url, function(data) {
if (data && data.status == "ok"){
controller.set("model", data.metric);
var dashboard = data.metric.dashboardName;
if (!dashboard)
{
dashboard = '(Other)';
}
var group = data.metric.group;
if (!group)
{
group = '(Other)';
}
breadcrumbs = [{"title":"METRICS_ROOT", "urn":"page/1"},
{"title":dashboard, "urn":"name/" + dashboard + "/page/1"},
{"title":group, "urn":"name/" + dashboard + "/" + group + "/page/1"},
{"title":data.metric.name, "urn": params.id}];
controller.set('breadcrumbs', breadcrumbs);
setTimeout(initializeXEditable(id,
data.metric.description,
data.metric.dashboardName,
data.metric.sourceType,
data.metric.grain,
data.metric.displayFactor,
data.metric.displayFactorSym), 500);
}
});
}
else if (params && params.metric)
{
id = params.metric.id;
var dashboard = params.metric.dashboardName;
if (!dashboard)
{
dashboard = '(Other)';
}
var group = params.metric.group;
if (!group)
{
group = '(Other)';
}
breadcrumbs = [{"title":"METRICS_ROOT", "urn":"page/1"},
{"title":name, "urn":"name/" + dashboard + "/page/1"},
{"title":group, "urn":"name/" + dashboard + "/" + group + "/page/1"},
{"title":params.metric.name, "urn": params.id}];
controller.set('breadcrumbs', breadcrumbs);
if (params.metric.category)
{
name = '{' + params.metric.category + '} ' + params.metric.name;
}
else
{
name = params.metric.name;
}
setTimeout(initializeXEditable(id,
params.metric.description,
params.metric.dashboardName,
params.metric.sourceType,
params.metric.grain,
params.metric.displayFactor,
params.metric.displayFactorSym), 500);
}
var listUrl = 'api/v1/list/metric/' + id;
$.get(listUrl, function(data) {
if (data && data.status == "ok"){
renderMetricListView(data.nodes, id);
}
});
if (name)
{
findAndActiveMetricNode(name, id);
}
},
actions: {
getMetrics: function() {
var id = this.get('controller.model.id');
var listUrl = 'api/v1/list/metrics/' + id;
$.get(listUrl, function(data) {
if (data && data.status == "ok"){
renderMetricListView(data.nodes, id);
}
});
var url = 'api/v1/metrics/' + this.get('controller.model.id')
var _this = this
currentTab = 'Metrics';
updateActiveTab();
$.get(url, function(data) {
if (data && data.status == "ok"){
_this.set('controller.model', data.metric)
_this.set('controller.detailview', true);
}
});
}
}
});
App.MetricnamepageRoute = Ember.Route.extend({
model: function(params, transition) {
currentTab = 'Metrics';
updateActiveTab();
if (transition
&& transition.resolvedModels
&& transition.resolvedModels.metricname
&& transition.resolvedModels.metricname.name)
{
var name = transition.resolvedModels.metricname.name;
var listUrl = 'api/v1/list/metrics/' + name;
$.get(listUrl, function(data) {
if (data && data.status == "ok"){
renderMetricListView(data.nodes);
}
});
var url = 'api/v1/metrics/name/' + name + '?page=' + params.page;
var breadcrumbs = [{"title":"METRICS_ROOT", "urn":"page/1"},
{"title":name, "urn":"name/" + name + "/page/1"}];
$.get(url, function(data) {
if (data && data.status == "ok"){
metricsController.set('model', data);
metricsController.set('detailview', false);
metricsController.set('breadcrumbs', breadcrumbs);
metricsController.set('urn', name);
metricsController.set('dashboard', name);
metricsController.set('group', null);
}
});
var watcherEndpoint = "/api/v1/urn/watch?urn=" + name;
$.get(watcherEndpoint, function(data){
if(data.id && data.id !== 0) {
metricsController.set('urnWatched', true)
metricsController.set('urnWatchedId', data.id)
} else {
metricsController.set('urnWatched', false)
metricsController.set('urnWatchedId', 0)
}
});
if (name)
{
findAndActiveMetricDashboardNode(name);
}
}
},
actions: {
getMetrics: function() {
var listUrl = 'api/v1/list/metrics/' + metricsController.get('dashboard');
$.get(listUrl, function(data) {
if (data && data.status == "ok"){
renderMetricListView(data.nodes);
}
});
var url = 'api/v1/metrics/name/' + metricsController.get('dashboard')
url += '?size=10&page=' + metricsController.get('model.data.page');
currentTab = 'Metrics';
updateActiveTab();
$.get(url, function(data) {
if (data && data.status == "ok"){
metricsController.set('model', data);
metricsController.set('urn', null);
metricsController.set('detailview', false);
}
});
}
}
});
App.MetricnamesubpageRoute = Ember.Route.extend({
model: function(params, transition) {
currentTab = 'Metrics';
updateActiveTab();
if (transition
&& transition.resolvedModels
&& transition.resolvedModels.metricname
&& transition.resolvedModels.metricname.name)
{
var name = transition.resolvedModels.metricname.name;
var group = '';
var breadcrumbs;
var url = 'api/v1/metrics/name/' + name;
if (transition.resolvedModels.metricgroup && transition.resolvedModels.metricgroup.group)
{
group = transition.resolvedModels.metricgroup.group;
url += '/' + group + '?page=' + params.page;
breadcrumbs = [{"title":"METRICS_ROOT", "urn":"page/1"},
{"title":name, "urn":"name/" + name + "/page/1"},
{"title":group, "urn":"name/" + name + "/" + group + "/page/1"}];
}
var listUrl = 'api/v1/list/metrics/' + name + '/' + group;
$.get(listUrl, function(data) {
if (data && data.status == "ok"){
renderMetricListView(data.nodes);
}
});
$.get(url, function(data) {
if (data && data.status == "ok"){
metricsController.set('breadcrumbs', breadcrumbs);
metricsController.set('model', data);
metricsController.set('detailview', false);
metricsController.set('urn', name + "/" + group);
metricsController.set('dashboard', name);
metricsController.set('group', group);
}
});
var watcherEndpoint = "/api/v1/urn/watch?urn=" + name + "/" + group;
$.get(watcherEndpoint, function(data){
if(data.id && data.id !== 0) {
metricsController.set('urnWatched', true)
metricsController.set('urnWatchedId', data.id)
} else {
metricsController.set('urnWatched', false)
metricsController.set('urnWatchedId', 0)
}
});
if (name && group)
{
findAndActiveMetricGroupNode(name, group);
}
}
},
actions: {
getMetrics: function() {
var listUrl = 'api/v1/list/metrics/' + metricsController.get('dashboard')
+ '/' + metricsController.get('group');
$.get(listUrl, function(data) {
if (data && data.status == "ok"){
renderMetricListView(data.nodes);
}
});
var url = 'api/v1/metrics/name/' + metricsController.get('dashboard')
url += '/' + metricsController.get('group') + '?size=10&page=' + metricsController.get('model.data.page');
currentTab = 'Metrics';
updateActiveTab();
$.get(url, function(data) {
if (data && data.status == "ok"){
metricsController.set('model', data);
metricsController.set('urn', null);
metricsController.set('detailview', false);
}
});
}
}
});