mirror of
https://github.com/datahub-project/datahub.git
synced 2025-07-29 04:20:00 +00:00
453 lines
15 KiB
JavaScript
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);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|