From cc871d7b8c4af1f66234830719d27e45d4136334 Mon Sep 17 00:00:00 2001 From: Stas Vilchik Date: Tue, 4 Aug 2015 17:53:08 +0200 Subject: [PATCH] SONAR-6331 add project overview --- server/sonar-web/Gruntfile.coffee | 3 + .../coding-rules/rule/rule-issues-view.js | 4 +- .../js/apps/issues/component-viewer/main.js | 2 +- .../js/apps/issues/workspace-home-view.js | 4 +- .../main/js/apps/nav/context-navbar-view.js | 6 +- .../apps/nav/templates/nav-context-navbar.hbs | 8 +- .../src/main/js/apps/overview/app.jsx | 18 ++ .../src/main/js/apps/overview/card.jsx | 7 + .../src/main/js/apps/overview/cards.jsx | 7 + .../main/js/apps/overview/gate-condition.jsx | 35 ++++ .../main/js/apps/overview/gate-conditions.jsx | 21 ++ .../src/main/js/apps/overview/gate.jsx | 24 +++ .../main/js/apps/overview/helpers/donut.jsx | 41 ++++ .../apps/overview/helpers/drilldown-link.jsx | 96 +++++++++ .../js/apps/overview/helpers/gate-link.jsx | 8 + .../js/apps/overview/helpers/issues-link.jsx | 11 + .../overview/helpers/measure-variation.jsx | 11 + .../main/js/apps/overview/helpers/measure.jsx | 11 + .../js/apps/overview/helpers/period-label.jsx | 15 ++ .../js/apps/overview/helpers/profile-link.jsx | 8 + .../main/js/apps/overview/helpers/rating.jsx | 12 ++ .../main/js/apps/overview/leak-coverage.jsx | 46 +++++ .../src/main/js/apps/overview/leak-dups.jsx | 43 ++++ .../src/main/js/apps/overview/leak-issues.jsx | 70 +++++++ .../src/main/js/apps/overview/leak-size.jsx | 31 +++ .../src/main/js/apps/overview/leak.jsx | 32 +++ .../src/main/js/apps/overview/main.jsx | 101 ++++++++++ .../src/main/js/apps/overview/meta.jsx | 67 ++++++ .../js/apps/overview/nutshell-coverage.jsx | 47 +++++ .../main/js/apps/overview/nutshell-dups.jsx | 47 +++++ .../main/js/apps/overview/nutshell-issues.jsx | 69 +++++++ .../main/js/apps/overview/nutshell-size.jsx | 35 ++++ .../src/main/js/apps/overview/nutshell.jsx | 23 +++ .../common/handlebars-extensions.js | 4 + .../js/components/shared/severity-helper.jsx | 17 ++ .../js/components/shared/severity-icon.jsx | 11 + .../js/components/shared/status-helper.jsx | 26 +++ .../main/js/components/shared/status-icon.jsx | 11 + .../main/js/components/source-viewer/main.js | 4 +- .../source-viewer/measures-overlay.js | 4 +- .../sonar-web/src/main/js/libs/application.js | 4 + .../main/js/widgets/issue-filter/widget.js | 4 +- .../src/main/less/components/badges.less | 11 +- .../src/main/less/components/measures.less | 14 +- .../sonar-web/src/main/less/init/icons.less | 1 + server/sonar-web/src/main/less/pages.less | 20 +- .../src/main/less/pages/overview.less | 190 ++++++++++++++++++ .../app/controllers/dashboard_controller.rb | 5 + .../app/controllers/overview_controller.rb | 29 +++ .../WEB-INF/app/views/overview/index.html.erb | 164 +++++++++++++++ .../resources/org/sonar/l10n/core.properties | 32 +++ 51 files changed, 1469 insertions(+), 45 deletions(-) create mode 100644 server/sonar-web/src/main/js/apps/overview/app.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/card.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/cards.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/gate-condition.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/gate-conditions.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/gate.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/helpers/donut.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/helpers/drilldown-link.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/helpers/gate-link.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/helpers/issues-link.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/helpers/measure-variation.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/helpers/measure.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/helpers/period-label.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/helpers/profile-link.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/helpers/rating.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/leak-coverage.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/leak-dups.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/leak-issues.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/leak-size.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/leak.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/main.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/meta.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/nutshell-coverage.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/nutshell-dups.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/nutshell-issues.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/nutshell-size.jsx create mode 100644 server/sonar-web/src/main/js/apps/overview/nutshell.jsx create mode 100644 server/sonar-web/src/main/js/components/shared/severity-helper.jsx create mode 100644 server/sonar-web/src/main/js/components/shared/severity-icon.jsx create mode 100644 server/sonar-web/src/main/js/components/shared/status-helper.jsx create mode 100644 server/sonar-web/src/main/js/components/shared/status-icon.jsx create mode 100644 server/sonar-web/src/main/less/pages/overview.less create mode 100644 server/sonar-web/src/main/webapp/WEB-INF/app/controllers/overview_controller.rb create mode 100644 server/sonar-web/src/main/webapp/WEB-INF/app/views/overview/index.html.erb diff --git a/server/sonar-web/Gruntfile.coffee b/server/sonar-web/Gruntfile.coffee index d324e5b63fc..a74b6f86171 100644 --- a/server/sonar-web/Gruntfile.coffee +++ b/server/sonar-web/Gruntfile.coffee @@ -38,6 +38,8 @@ module.exports = (grunt) -> babel: build: + options: + modules: 'amd' files: [ expand: true cwd: '<%= SOURCE_PATH %>/js' @@ -142,6 +144,7 @@ module.exports = (grunt) -> 'build-app:measures' 'build-app:metrics' 'build-app:nav' + 'build-app:overview' 'build-app:provisioning' 'build-app:quality-gates' 'build-app:quality-profiles' diff --git a/server/sonar-web/src/main/js/apps/coding-rules/rule/rule-issues-view.js b/server/sonar-web/src/main/js/apps/coding-rules/rule/rule-issues-view.js index e25e8be81de..182e3b988d6 100644 --- a/server/sonar-web/src/main/js/apps/coding-rules/rule/rule-issues-view.js +++ b/server/sonar-web/src/main/js/apps/coding-rules/rule/rule-issues-view.js @@ -30,12 +30,12 @@ define([ var that = this; this.total = null; this.projects = []; - this.requestIssues().done(function () { + this.requestNutshellIssues().done(function () { that.render(); }); }, - requestIssues: function () { + requestNutshellIssues: function () { var that = this, url = baseUrl + '/api/issues/search', options = { diff --git a/server/sonar-web/src/main/js/apps/issues/component-viewer/main.js b/server/sonar-web/src/main/js/apps/issues/component-viewer/main.js index 1e79d92e45d..5eabc8b76fd 100644 --- a/server/sonar-web/src/main/js/apps/issues/component-viewer/main.js +++ b/server/sonar-web/src/main/js/apps/issues/component-viewer/main.js @@ -158,7 +158,7 @@ define([ }); }, - requestIssues: function () { + requestNutshellIssues: function () { var that = this; var r; if (this.options.app.list.last().get('component') === this.model.get('key')) { diff --git a/server/sonar-web/src/main/js/apps/issues/workspace-home-view.js b/server/sonar-web/src/main/js/apps/issues/workspace-home-view.js index 942e86e4ba7..dac3eb0bc5f 100644 --- a/server/sonar-web/src/main/js/apps/issues/workspace-home-view.js +++ b/server/sonar-web/src/main/js/apps/issues/workspace-home-view.js @@ -32,7 +32,7 @@ define([ initialize: function () { this.model = new Backbone.Model(); - this.requestIssues(); + this.requestNutshellIssues(); this.requestMyIssues(); }, @@ -75,7 +75,7 @@ define([ } }, - requestIssues: function () { + requestNutshellIssues: function () { var that = this; var url = baseUrl + '/api/issues/search', options = { diff --git a/server/sonar-web/src/main/js/apps/nav/context-navbar-view.js b/server/sonar-web/src/main/js/apps/nav/context-navbar-view.js index 95351c828ba..960599e1d21 100644 --- a/server/sonar-web/src/main/js/apps/nav/context-navbar-view.js +++ b/server/sonar-web/src/main/js/apps/nav/context-navbar-view.js @@ -23,7 +23,7 @@ define([ var $ = jQuery, MORE_URLS = [ - '/dashboards', '/plugins/resource' + '/dashboards', '/dashboard', '/plugins/resource' ], SETTINGS_URLS = [ '/project/settings', '/project/profile', '/project/qualitygate', '/manual_measures/index', @@ -72,13 +72,11 @@ define([ }) || (href.indexOf('/dashboard') !== -1 && search.indexOf('did=') !== -1), isSettingsActive = _.some(SETTINGS_URLS, function (url) { return href.indexOf(url) !== -1; - }), - isOverviewActive = !isMoreActive && href.indexOf('/dashboard') !== -1 && search.indexOf('did=') === -1; + }); return _.extend(Marionette.LayoutView.prototype.serializeData.apply(this, arguments), { canManageContextDashboards: !!window.SS.user, contextKeyEncoded: encodeURIComponent(this.model.get('componentKey')), - isOverviewActive: isOverviewActive, isSettingsActive: isSettingsActive, isMoreActive: isMoreActive }); diff --git a/server/sonar-web/src/main/js/apps/nav/templates/nav-context-navbar.hbs b/server/sonar-web/src/main/js/apps/nav/templates/nav-context-navbar.hbs index e6eeb5cf547..a3504814f63 100644 --- a/server/sonar-web/src/main/js/apps/nav/templates/nav-context-navbar.hbs +++ b/server/sonar-web/src/main/js/apps/nav/templates/nav-context-navbar.hbs @@ -21,8 +21,8 @@