diff options
author | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2016-03-24 18:28:36 +0100 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2016-03-25 15:02:45 +0100 |
commit | d4f696ab1e013f3d305b7cb978d65a3ee0937149 (patch) | |
tree | 6551782c8a18ad4dad466a6f1799cdfe23c0c5ea /server/sonar-web/src/main/js | |
parent | 3c0e6beb1a4d64c17f8df3b10d5a4c19389b4615 (diff) | |
download | sonarqube-d4f696ab1e013f3d305b7cb978d65a3ee0937149.tar.gz sonarqube-d4f696ab1e013f3d305b7cb978d65a3ee0937149.zip |
SONAR-7469 SONAR-7202 SONAR-7201 Remove action plan from the UI
Diffstat (limited to 'server/sonar-web/src/main/js')
18 files changed, 5 insertions, 313 deletions
diff --git a/server/sonar-web/src/main/js/apps/issues/controller.js b/server/sonar-web/src/main/js/apps/issues/controller.js index 07ead890dbd..bbca2009db9 100644 --- a/server/sonar-web/src/main/js/apps/issues/controller.js +++ b/server/sonar-web/src/main/js/apps/issues/controller.js @@ -24,7 +24,7 @@ import Controller from '../../components/navigator/controller'; import ComponentViewer from './component-viewer/main'; import HomeView from './workspace-home-view'; -const FACET_DATA_FIELDS = ['components', 'users', 'rules', 'actionPlans', 'languages']; +const FACET_DATA_FIELDS = ['components', 'users', 'rules', 'languages']; export default Controller.extend({ _facetsFromServer () { diff --git a/server/sonar-web/src/main/js/apps/issues/facets-view.js b/server/sonar-web/src/main/js/apps/issues/facets-view.js index 6a27534a049..ef1f4030170 100644 --- a/server/sonar-web/src/main/js/apps/issues/facets-view.js +++ b/server/sonar-web/src/main/js/apps/issues/facets-view.js @@ -29,7 +29,6 @@ import RuleFacet from './facets/rule-facet'; import TagFacet from './facets/tag-facet'; import ResolutionFacet from './facets/resolution-facet'; import CreationDateFacet from './facets/creation-date-facet'; -import ActionPlanFacet from './facets/action-plan-facet'; import FileFacet from './facets/file-facet'; import ReporterFacet from './facets/reporter-facet'; import LanguageFacet from './facets/language-facet'; @@ -49,7 +48,6 @@ const viewsMapping = { moduleUuids: ModuleFacet, rules: RuleFacet, tags: TagFacet, - actionPlans: ActionPlanFacet, fileUuids: FileFacet, reporters: ReporterFacet, languages: LanguageFacet, diff --git a/server/sonar-web/src/main/js/apps/issues/facets/action-plan-facet.js b/server/sonar-web/src/main/js/apps/issues/facets/action-plan-facet.js deleted file mode 100644 index 589329b7c27..00000000000 --- a/server/sonar-web/src/main/js/apps/issues/facets/action-plan-facet.js +++ /dev/null @@ -1,85 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2016 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -import $ from 'jquery'; -import _ from 'underscore'; -import BaseFacet from './base-facet'; -import Template from '../templates/facets/issues-action-plan-facet.hbs'; - -export default BaseFacet.extend({ - template: Template, - - onRender () { - BaseFacet.prototype.onRender.apply(this, arguments); - const value = this.options.app.state.get('query').planned; - if ((value != null) && (!value || value === 'false')) { - return this.$('.js-facet').filter('[data-unplanned]').addClass('active'); - } - }, - - toggleFacet (e) { - const unplanned = $(e.currentTarget).is('[data-unplanned]'); - $(e.currentTarget).toggleClass('active'); - if (unplanned) { - const checked = $(e.currentTarget).is('.active'); - const value = checked ? 'false' : null; - return this.options.app.state.updateFilter({ - planned: value, - actionPlans: null - }); - } else { - return this.options.app.state.updateFilter({ - planned: null, - actionPlans: this.getValue() - }); - } - }, - - getValuesWithLabels () { - const values = this.model.getValues(); - const actionPlans = this.options.app.facets.actionPlans; - values.forEach(function (v) { - const key = v.val; - let label = null; - if (key) { - const actionPlan = _.findWhere(actionPlans, { key }); - if (actionPlan != null) { - label = actionPlan.name; - } - } - v.label = label; - }); - return values; - }, - - disable () { - return this.options.app.state.updateFilter({ - planned: null, - actionPlans: null - }); - }, - - serializeData () { - return _.extend(BaseFacet.prototype.serializeData.apply(this, arguments), { - values: this.getValuesWithLabels() - }); - } -}); - - diff --git a/server/sonar-web/src/main/js/apps/issues/models/issues.js b/server/sonar-web/src/main/js/apps/issues/models/issues.js index bf64834b6a7..6cf78fc7bf6 100644 --- a/server/sonar-web/src/main/js/apps/issues/models/issues.js +++ b/server/sonar-web/src/main/js/apps/issues/models/issues.js @@ -89,7 +89,6 @@ export default Backbone.Collection.extend({ issue = that._injectRelational(issue, r.rules, 'rule', 'key'); issue = that._injectRelational(issue, r.users, 'assignee', 'login'); issue = that._injectRelational(issue, r.users, 'reporter', 'login'); - issue = that._injectRelational(issue, r.actionPlans, 'actionPlan', 'key'); issue = that._injectCommentsRelational(issue, r.users); issue = that._prepareClosed(issue); issue = that.ensureTextRange(issue); diff --git a/server/sonar-web/src/main/js/apps/issues/models/state.js b/server/sonar-web/src/main/js/apps/issues/models/state.js index 26c08a44b5f..049f657f121 100644 --- a/server/sonar-web/src/main/js/apps/issues/models/state.js +++ b/server/sonar-web/src/main/js/apps/issues/models/state.js @@ -44,15 +44,13 @@ export default State.extend({ 'assignees', 'reporters', 'authors', - 'languages', - 'actionPlans' + 'languages' ], facetsFromServer: [ 'types', 'severities', 'statuses', 'resolutions', - 'actionPlans', 'projectUuids', 'directories', 'rules', @@ -68,7 +66,6 @@ export default State.extend({ transform: { 'resolved': 'resolutions', 'assigned': 'assignees', - 'planned': 'actionPlans', 'createdBefore': 'createdAt', 'createdAfter': 'createdAt', 'createdInLast': 'createdAt' diff --git a/server/sonar-web/src/main/js/apps/issues/templates/facets/issues-action-plan-facet.hbs b/server/sonar-web/src/main/js/apps/issues/templates/facets/issues-action-plan-facet.hbs deleted file mode 100644 index 25dace0c91f..00000000000 --- a/server/sonar-web/src/main/js/apps/issues/templates/facets/issues-action-plan-facet.hbs +++ /dev/null @@ -1,22 +0,0 @@ -{{> "_issues-facet-header"}} - -<div class="search-navigator-facet-list"> - {{#each values}} - {{#eq val ""}} - {{! unplanned }} - <a class="facet search-navigator-facet js-facet" data-unplanned title="{{t "issue.unplanned"}}"> - <span class="facet-name">{{t "issue.unplanned"}}</span> - <span class="facet-stat"> - {{formatFacetValue count ../../state.facetMode}} - </span> - </a> - {{else}} - <a class="facet search-navigator-facet js-facet" data-value="{{val}}" title="{{label}}"> - <span class="facet-name">{{label}}</span> - <span class="facet-stat"> - {{formatFacetValue count ../../state.facetMode}} - </span> - </a> - {{/eq}} - {{/each}} -</div> diff --git a/server/sonar-web/src/main/js/apps/issues/templates/issues-issue-filter-form.hbs b/server/sonar-web/src/main/js/apps/issues/templates/issues-issue-filter-form.hbs index 1f37beb04ed..58764e59543 100644 --- a/server/sonar-web/src/main/js/apps/issues/templates/issues-issue-filter-form.hbs +++ b/server/sonar-web/src/main/js/apps/issues/templates/issues-issue-filter-form.hbs @@ -47,18 +47,6 @@ {{/if}} </li> - <li> - {{#if actionPlan}} - <a href="#" data-property="actionPlans" data-value="{{actionPlan}}"> - {{t "issue.planned_for"}} {{actionPlanName}} - </a> - {{else}} - <a href="#" data-property="planned" data-value="false"> - {{t "issue.unplanned"}} - </a> - {{/if}} - </li> - <li class="divider"></li> <li> diff --git a/server/sonar-web/src/main/js/apps/issues/workspace-list-item-view.js b/server/sonar-web/src/main/js/apps/issues/workspace-list-item-view.js index ff9a75d095f..eef64f22edd 100644 --- a/server/sonar-web/src/main/js/apps/issues/workspace-list-item-view.js +++ b/server/sonar-web/src/main/js/apps/issues/workspace-list-item-view.js @@ -29,9 +29,7 @@ const SHOULD_NULL = { resolutions: ['resolved'], resolved: ['resolutions'], assignees: ['assigned'], - assigned: ['assignees'], - actionPlans: ['planned'], - planned: ['actionPlans'] + assigned: ['assignees'] }; export default IssueView.extend({ diff --git a/server/sonar-web/src/main/js/components/issue/collections/action-plans.js b/server/sonar-web/src/main/js/components/issue/collections/action-plans.js deleted file mode 100644 index 5218f57e711..00000000000 --- a/server/sonar-web/src/main/js/components/issue/collections/action-plans.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2016 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -import Backbone from 'backbone'; - -export default Backbone.Collection.extend({ - url () { - return '/api/action_plans/search'; - }, - - parse (r) { - return r.actionPlans; - } -}); - - diff --git a/server/sonar-web/src/main/js/components/issue/collections/issues.js b/server/sonar-web/src/main/js/components/issue/collections/issues.js index d8223896252..f13415e83d1 100644 --- a/server/sonar-web/src/main/js/components/issue/collections/issues.js +++ b/server/sonar-web/src/main/js/components/issue/collections/issues.js @@ -96,7 +96,6 @@ export default Backbone.Collection.extend({ issue = that._injectRelational(issue, r.rules, 'rule', 'key'); issue = that._injectRelational(issue, r.users, 'assignee', 'login'); issue = that._injectRelational(issue, r.users, 'reporter', 'login'); - issue = that._injectRelational(issue, r.actionPlans, 'actionPlan', 'key'); issue = that._injectCommentsRelational(issue, r.users); issue = that._prepareClosed(issue); issue = that.ensureTextRange(issue); diff --git a/server/sonar-web/src/main/js/components/issue/issue-view.js b/server/sonar-web/src/main/js/components/issue/issue-view.js index 9a4fb2e7849..82594682e0f 100644 --- a/server/sonar-web/src/main/js/components/issue/issue-view.js +++ b/server/sonar-web/src/main/js/components/issue/issue-view.js @@ -23,11 +23,9 @@ import Backbone from 'backbone'; import Marionette from 'backbone.marionette'; import ChangeLog from './models/changelog'; import ChangeLogView from './views/changelog-view'; -import ActionPlans from './collections/action-plans'; import TransitionsFormView from './views/transitions-form-view'; import AssignFormView from './views/assign-form-view'; import CommentFormView from './views/comment-form-view'; -import PlanFormView from './views/plan-form-view'; import SetSeverityFormView from './views/set-severity-form-view'; import SetTypeFormView from './views/set-type-form-view'; import TagsFormView from './views/tags-form-view'; @@ -214,26 +212,6 @@ export default Marionette.ItemView.extend({ view.destroy(); }, - plan (e) { - const that = this; - const t = $(e.currentTarget); - const actionPlans = new ActionPlans(); - return actionPlans.fetch({ - reset: true, - data: { project: this.model.get('project') } - }).done(function () { - e.stopPropagation(); - $('body').click(); - that.popup = new PlanFormView({ - triggerEl: t, - bottom: true, - model: that.model, - collection: actionPlans - }); - that.popup.render(); - }); - }, - showRule () { const ruleKey = this.model.get('rule'); Workspace.openRule({ key: ruleKey }); diff --git a/server/sonar-web/src/main/js/components/issue/models/issue.js b/server/sonar-web/src/main/js/components/issue/models/issue.js index 637c78b49c0..7976ba53449 100644 --- a/server/sonar-web/src/main/js/components/issue/models/issue.js +++ b/server/sonar-web/src/main/js/components/issue/models/issue.js @@ -46,7 +46,6 @@ export default Backbone.Model.extend({ issue = this._injectRelational(issue, r.rules, 'rule', 'key'); issue = this._injectRelational(issue, r.users, 'assignee', 'login'); issue = this._injectRelational(issue, r.users, 'reporter', 'login'); - issue = this._injectRelational(issue, r.actionPlans, 'actionPlan', 'key'); issue = this._injectCommentsRelational(issue, r.users); issue = this._prepareClosed(issue); issue = this.ensureTextRange(issue); diff --git a/server/sonar-web/src/main/js/components/issue/templates/issue.hbs b/server/sonar-web/src/main/js/components/issue/templates/issue.hbs index 6ed51a13a82..eb469e40c5f 100644 --- a/server/sonar-web/src/main/js/components/issue/templates/issue.hbs +++ b/server/sonar-web/src/main/js/components/issue/templates/issue.hbs @@ -95,19 +95,6 @@ {{/inArray}} </li> - <li class="issue-meta"> - {{#inArray actions "plan"}} - <button class="button-link issue-action issue-action-with-options js-issue-plan"> - <span - class="issue-meta-label">{{#if actionPlan}}{{default actionPlanName actionPlan}}{{else}}{{t 'issue.unplanned'}}{{/if}}</span> <i - class="icon-dropdown"></i> - </button> - {{else}} - <span - class="issue-meta-label">{{#if actionPlan}}{{default actionPlanName actionPlan}}{{else}}{{t 'issue.unplanned'}}{{/if}}</span> - {{/inArray}} - </li> - {{#if debt}} <li class="issue-meta"> <span class="issue-meta-label"> diff --git a/server/sonar-web/src/main/js/components/issue/views/plan-form-view.js b/server/sonar-web/src/main/js/components/issue/views/plan-form-view.js deleted file mode 100644 index 19daabb80f4..00000000000 --- a/server/sonar-web/src/main/js/components/issue/views/plan-form-view.js +++ /dev/null @@ -1,57 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2016 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -import $ from 'jquery'; -import _ from 'underscore'; -import ActionOptionsView from '../../common/action-options-view'; -import Template from '../templates/issue-plan-form.hbs'; -import { translate } from '../../../helpers/l10n'; - -export default ActionOptionsView.extend({ - template: Template, - - getActionPlan () { - return this.model.get('actionPlan') || ''; - }, - - selectInitialOption () { - this.makeActive(this.getOptions().filter(`[data-value="${this.getActionPlan()}"]`)); - }, - - selectOption (e) { - const actionPlan = $(e.currentTarget).data('value'); - const actionPlanName = $(e.currentTarget).data('text'); - this.submit(actionPlan, actionPlanName); - return ActionOptionsView.prototype.selectOption.apply(this, arguments); - }, - - submit (actionPlan) { - return this.model.plan(actionPlan); - }, - - getActionPlans () { - return [{ key: '', name: translate('issue.unplanned') }].concat(this.collection.toJSON()); - }, - - serializeData () { - return _.extend(ActionOptionsView.prototype.serializeData.apply(this, arguments), { - items: this.getActionPlans() - }); - } -}); diff --git a/server/sonar-web/src/main/js/components/source-viewer/main.js b/server/sonar-web/src/main/js/components/source-viewer/main.js index 58db3aa9ea9..85f628c2751 100644 --- a/server/sonar-web/src/main/js/components/source-viewer/main.js +++ b/server/sonar-web/src/main/js/components/source-viewer/main.js @@ -284,8 +284,8 @@ export default Marionette.LayoutView.extend({ data: { componentUuids: this.model.id, f: 'component,componentId,project,subProject,rule,status,resolution,author,reporter,assignee,debt,' + - 'line,message,severity,actionPlan,creationDate,updateDate,closeDate,tags,comments,attr,actions,' + - 'transitions,actionPlanName', + 'line,message,severity,creationDate,updateDate,closeDate,tags,comments,attr,actions,' + + 'transitions', additionalFields: '_all', resolved: false, s: 'FILE_LINE', diff --git a/server/sonar-web/src/main/js/main/nav/component/component-nav-menu.js b/server/sonar-web/src/main/js/main/nav/component/component-nav-menu.js index eb7223ab3f3..bab9e9325e0 100644 --- a/server/sonar-web/src/main/js/main/nav/component/component-nav-menu.js +++ b/server/sonar-web/src/main/js/main/nav/component/component-nav-menu.js @@ -177,7 +177,6 @@ export default React.createClass({ renderAdministration() { const shouldShowAdministration = - this.props.conf.showActionPlans || this.props.conf.showBackgroundTasks || this.props.conf.showDeletion || this.props.conf.showHistory || @@ -206,7 +205,6 @@ export default React.createClass({ {this.renderProfilesLink()} {this.renderQualityGatesLink()} {this.renderCustomMeasuresLink()} - {this.renderActionPlansLink()} {this.renderLinksLink()} {this.renderPermissionsLink()} {this.renderHistoryLink()} @@ -251,14 +249,6 @@ export default React.createClass({ return this.renderLink(url, translate('custom_measures.page'), '/custom_measures'); }, - renderActionPlansLink() { - if (!this.props.conf.showActionPlans) { - return null; - } - const url = `/action_plans?id=${encodeURIComponent(this.props.component.key)}`; - return this.renderLink(url, translate('action_plans.page'), '/action_plans'); - }, - renderLinksLink() { if (!this.props.conf.showLinks) { return null; diff --git a/server/sonar-web/src/main/js/widgets/issue-filter/templates/widget-issue-filter-action-plans.hbs b/server/sonar-web/src/main/js/widgets/issue-filter/templates/widget-issue-filter-action-plans.hbs deleted file mode 100644 index b5c93283194..00000000000 --- a/server/sonar-web/src/main/js/widgets/issue-filter/templates/widget-issue-filter-action-plans.hbs +++ /dev/null @@ -1,26 +0,0 @@ -<table class="data zebra"> - {{> '_widget-issue-filter-total'}} - {{#each items}} - <tr> - <td> - {{#eq val ''}} - <a href="{{issueFilterItemLink ../../parsedQuery 'planned' 'false' ../../displayMode}}">{{t 'issue.unplanned'}}</a> - {{else}} - <a href="{{issueFilterItemLink ../../parsedQuery 'actionPlans' val ../../displayMode}}">{{default label val}}</a> - {{/eq}} - </td> - <td class="text-right nowrap"> - {{#notNull ../periodDate}}+{{/notNull}}{{issueFilterValue count ../displayMode}} - </td> - <td class="barchart"> - <div class="barchart" style="width: 100%;"> - <div style="width: {{percent count ../total}};"></div> - </div> - </td> - </tr> - {{/each}} -</table> - -{{#if maxResultsReached}} - {{> '_widget-issue-filter-limit'}} -{{/if}} diff --git a/server/sonar-web/src/main/js/widgets/issue-filter/widget.js b/server/sonar-web/src/main/js/widgets/issue-filter/widget.js index 9aa78fa94bf..82cae89822d 100644 --- a/server/sonar-web/src/main/js/widgets/issue-filter/widget.js +++ b/server/sonar-web/src/main/js/widgets/issue-filter/widget.js @@ -24,7 +24,6 @@ import Backbone from 'backbone'; import Marionette from 'backbone.marionette'; import Template from './templates/widget-issue-filter.hbs'; -import ActionPlansTemplate from './templates/widget-issue-filter-action-plans.hbs'; import AssigneesTemplate from './templates/widget-issue-filter-assignees.hbs'; import ResolutionsTemplate from './templates/widget-issue-filter-resolutions.hbs'; import SeveritiesTemplate from './templates/widget-issue-filter-severities.hbs'; @@ -165,24 +164,6 @@ const byDistributionConf = { } } }, - 'actionPlans': { - template: ActionPlansTemplate, - label (item, r) { - if (_.isArray(r.actionPlans)) { - const actionPlan = _.findWhere(r.actionPlans, { key: item.val }); - if (actionPlan != null) { - return actionPlan.name; - } - } - }, - filter (item) { - if ('' + this.query.planned === 'false') { - return item.val === ''; - } else { - return defaultFilter.call(this, item); - } - } - }, 'createdAt': { comparator (item) { return -moment(item.val).unix(); |