aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStas Vilchik <vilchiks@gmail.com>2015-09-28 12:05:18 +0200
committerStas Vilchik <vilchiks@gmail.com>2015-09-28 12:05:34 +0200
commiteeb6f89aa1a6ed43ae88fa1cfdff49614bf118ed (patch)
tree5f4fbdafd62013c689ce4e3675e39ff92561f5f6
parenta76cf43f5fa4ae6c609fda4186a8fcad0a8e1bfa (diff)
downloadsonarqube-eeb6f89aa1a6ed43ae88fa1cfdff49614bf118ed.tar.gz
sonarqube-eeb6f89aa1a6ed43ae88fa1cfdff49614bf118ed.zip
SONAR-6798 add ability to empty the CE queue
-rw-r--r--server/sonar-web/src/main/js/api/ce.js5
-rw-r--r--server/sonar-web/src/main/js/apps/background-tasks/main.js9
-rw-r--r--server/sonar-web/src/main/js/apps/background-tasks/stats.js24
3 files changed, 34 insertions, 4 deletions
diff --git a/server/sonar-web/src/main/js/api/ce.js b/server/sonar-web/src/main/js/api/ce.js
index 2c019eff3b5..d2bed547a4a 100644
--- a/server/sonar-web/src/main/js/api/ce.js
+++ b/server/sonar-web/src/main/js/api/ce.js
@@ -20,6 +20,11 @@ export function cancelTask (id) {
return $.post(url, { id }).then(getTask.bind(null, id));
}
+export function cancelAllTasks () {
+ let url = baseUrl + '/api/ce/cancel_all';
+ return $.post(url);
+}
+
export function getTasksForComponent(componentId) {
let url = baseUrl + '/api/ce/project';
return $.get(url, { componentId });
diff --git a/server/sonar-web/src/main/js/apps/background-tasks/main.js b/server/sonar-web/src/main/js/apps/background-tasks/main.js
index 71a81a66cc4..a92d1c23ba1 100644
--- a/server/sonar-web/src/main/js/apps/background-tasks/main.js
+++ b/server/sonar-web/src/main/js/apps/background-tasks/main.js
@@ -1,6 +1,6 @@
import _ from 'underscore';
import React from 'react';
-import {getQueue, getActivity, cancelTask} from '../../api/ce';
+import {getQueue, getActivity, cancelTask, cancelAllTasks} from '../../api/ce';
import {STATUSES, CURRENTS} from './constants';
import Header from './header';
import Stats from './stats';
@@ -17,7 +17,6 @@ export default React.createClass({
activity: [],
activityTotal: 0,
activityPage: 1,
- pendingCount: 0,
statusFilter: STATUSES.ALL,
currentsFilter: CURRENTS.ALL
};
@@ -121,11 +120,15 @@ export default React.createClass({
});
},
+ cancelPending() {
+ cancelAllTasks().then(this.requestData);
+ },
+
render() {
return (
<div className="page">
<Header/>
- <Stats {...this.state} showFailures={this.showFailures}/>
+ <Stats {...this.state} cancelPending={this.cancelPending} showFailures={this.showFailures}/>
<Search {...this.state} onStatusChange={this.onStatusChange} onCurrentsChange={this.onCurrentsChange}/>
<Tasks tasks={[].concat(this.state.queue, this.state.activity)} onTaskCanceled={this.onTaskCanceled}/>
<ListFooter count={this.state.queue.length + this.state.activity.length}
diff --git a/server/sonar-web/src/main/js/apps/background-tasks/stats.js b/server/sonar-web/src/main/js/apps/background-tasks/stats.js
index 367dbaea3ad..719b789fa73 100644
--- a/server/sonar-web/src/main/js/apps/background-tasks/stats.js
+++ b/server/sonar-web/src/main/js/apps/background-tasks/stats.js
@@ -1,6 +1,11 @@
import React from 'react';
export default React.createClass({
+ onPendingCanceled(e) {
+ e.preventDefault();
+ this.props.cancelPending();
+ },
+
onFailuresClick(e) {
e.preventDefault();
this.props.showFailures();
@@ -18,6 +23,23 @@ export default React.createClass({
);
},
+ renderPending() {
+ if (this.props.pendingCount == null) {
+ return null;
+ }
+ if (this.props.pendingCount > 0) {
+ return (
+ <span>
+ <span className="emphasised-measure">{this.props.pendingCount}</span> pending
+ <a onClick={this.onPendingCanceled} className="icon-delete spacer-left" title="Cancel Pending Tasks"
+ data-toggle="tooltip" href="#"></a>
+ </span>
+ );
+ } else {
+ return <span><span className="emphasised-measure">{this.props.pendingCount}</span> pending</span>;
+ }
+ },
+
renderFailures() {
if (this.props.failuresCount == null) {
return null;
@@ -33,7 +55,7 @@ export default React.createClass({
return (
<section className="big-spacer-top big-spacer-bottom">
<span>
- <span className="emphasised-measure">{this.props.pendingCount}</span> pending
+ {this.renderPending()}
</span>
<span className="huge-spacer-left">
{this.renderFailures()}