Commit 90cd25d9 by Johannes Stelzer

Add proper endpoint detection for /logfile and /activiti using a single request to /configprops

parent 11a37713
......@@ -17,12 +17,4 @@
module.exports = function ($scope, application) {
$scope.application = application;
application.getActiviti()
.success(function () {
$scope.application.providesActiviti = true;
})
.error(function () {
$scope.application.providesActiviti = false;
});
};
......@@ -60,24 +60,6 @@ module.exports = function ($scope, $location, $interval, $q, $state, Application
}
});
};
var getLogfile = function (app) {
return app.hasLogfile()
.success(function () {
app.providesLogfile = true;
})
.error(function () {
app.providesLogfile = false;
});
};
var getActiviti = function (app) {
return app.getActiviti()
.success(function () {
app.providesActiviti = true;
})
.error(function () {
app.providesActiviti = false;
});
};
$scope.loadData = function () {
Application.query(function (applications) {
......@@ -88,13 +70,11 @@ module.exports = function ($scope, $location, $interval, $q, $state, Application
app.info = $scope.applications[j].info;
app.version = $scope.applications[j].version;
app.status = $scope.applications[j].status;
app.providesLogfile = $scope.applications[j].providesLogfile;
app.providesActiviti = $scope.applications[j].providesActiviti;
break;
}
}
app.refreshing = true;
$q.all(getInfo(app), getHealth(app), getLogfile(app), getActiviti(app))
$q.all(getInfo(app), getHealth(app))
.finally(function () {
app.refreshing = false;
});
......
......@@ -14,53 +14,73 @@
* limitations under the License.
*/
'use strict';
var angular = require('angular');
module.exports = function ($resource, $http) {
var isEndpointEnabled = function(endpoint, configprops) {
if (configprops[endpoint]) {
return configprops[endpoint].properties.enabled;
}
return false;
};
var getCapabilities = function(application) {
application.capabilities = {};
$http.get('api/applications/' + application.id + '/configprops').success(function(configprops) {
application.capabilities.logfile = isEndpointEnabled('logfileEndpoint', configprops);
application.capabilities.activiti = isEndpointEnabled('processEngineEndpoint', configprops);
});
};
module.exports = function ($resource, $http, $rootScope) {
var Application = $resource(
'api/applications/:id', { id: '@id' }, {
query: { method: 'GET', isArray: true },
get: { method: 'GET' },
query: { method: 'GET',
isArray: true,
transformResponse: function(data) {
var apps = angular.fromJson(data);
for (var i = 0; i < apps.length; i++) {
getCapabilities(apps[i]);
}
return apps;
}
},
get: { method: 'GET',
transformResponse: function(data) {
var app = angular.fromJson(data);
getCapabilities(app);
return app;
}
},
remove: { method: 'DELETE' }
});
var AuthInterceptor = function (application) {
return function (data, status, headers) {
if (status === 401) {
$rootScope.$emit('application-auth-required', application, headers('WWW-Authenticate').split(' ')[0]);
}
};
};
Application.prototype.getHealth = function () {
return $http.get('api/applications/' + this.id + '/health').error(new AuthInterceptor(this));
return $http.get('api/applications/' + this.id + '/health');
};
Application.prototype.getInfo = function () {
return $http.get('api/applications/' + this.id + '/info').error(new AuthInterceptor(this));
return $http.get('api/applications/' + this.id + '/info');
};
Application.prototype.getMetrics = function () {
return $http.get('api/applications/' + this.id + '/metrics').error(new AuthInterceptor(this));
return $http.get('api/applications/' + this.id + '/metrics');
};
Application.prototype.getEnv = function () {
return $http.get('api/applications/' + this.id + '/env').error(new AuthInterceptor(this));
return $http.get('api/applications/' + this.id + '/env');
};
Application.prototype.getThreadDump = function () {
return $http.get('api/applications/' + this.id + '/dump').error(new AuthInterceptor(this));
return $http.get('api/applications/' + this.id + '/dump');
};
Application.prototype.getTraces = function () {
return $http.get('api/applications/' + this.id + '/trace').error(new AuthInterceptor(this));
return $http.get('api/applications/' + this.id + '/trace');
};
Application.prototype.getActiviti = function () {
return $http.get('api/applications/' + this.id + '/activiti').error(new AuthInterceptor(this));
};
Application.prototype.hasLogfile = function () {
return $http.head('api/applications/' + this.id + '/logfile').error(new AuthInterceptor(this));
return $http.get('api/applications/' + this.id + '/activiti');
};
return Application;
......
......@@ -8,7 +8,7 @@
<li class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.jmx({id: application.id})">JMX</a></li>
<li class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.threads({id: application.id})">Threads</a></li>
<li class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.trace({id: application.id})">Trace</a></li>
<li ng-show="application.providesActiviti" class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.activiti({id: application.id})">Activiti</a></li>
<li ng-show="application.capabilities.activiti" class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.activiti({id: application.id})">Activiti</a></li>
</ul>
</div>
</div>
......
......@@ -23,7 +23,7 @@
<span ng-show="application.refreshing" class="refresh"></span></td>
<td style="text-align: right;">
<div class="btn-group" ng-hide="application.managementUrl == null || application.status == null || application.status == 'OFFLINE'">
<a ng-disabled="!application.providesLogfile" target="_self" class="btn btn-success" ng-href="{{application.providesLogfile ? application.url + '/logfile' :''}}"><i class="icon-file icon-white"></i>Log</a>
<a ng-disabled="!application.capabilities.logfile" target="_self" class="btn btn-success" ng-href="{{application.capabilities.logfile ? application.managementUrl + '/logfile' :''}}"><i class="icon-file icon-white"></i>Log</a>
<a ui-sref="apps.details.metrics({id: application.id})" class="btn btn-success">Details</a>
<a class="btn btn-success dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
......@@ -34,7 +34,7 @@
<li><a ui-sref="apps.jmx({id: application.id})" >JMX</a></li>
<li><a ui-sref="apps.threads({id: application.id})" >Threads</a></li>
<li><a ui-sref="apps.trace({id: application.id})" >Trace</a></li>
<li ng-show="application.providesActiviti"><a ui-sref="apps.activiti({id: application.id})" >Activiti</a></li>
<li ng-show="application.capabilities.activiti"><a ui-sref="apps.activiti({id: application.id})" >Activiti</a></li>
</ul>
</div>
<div class="btn-group" title="remove">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment