diff options
author | Stas Vilchik <vilchiks@gmail.com> | 2015-09-28 12:05:18 +0200 |
---|---|---|
committer | Stas Vilchik <vilchiks@gmail.com> | 2015-09-28 12:05:34 +0200 |
commit | eeb6f89aa1a6ed43ae88fa1cfdff49614bf118ed (patch) | |
tree | 5f4fbdafd62013c689ce4e3675e39ff92561f5f6 | |
parent | a76cf43f5fa4ae6c609fda4186a8fcad0a8e1bfa (diff) | |
download | sonarqube-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.js | 5 | ||||
-rw-r--r-- | server/sonar-web/src/main/js/apps/background-tasks/main.js | 9 | ||||
-rw-r--r-- | server/sonar-web/src/main/js/apps/background-tasks/stats.js | 24 |
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()} |