From: Stas Vilchik Date: Fri, 18 Apr 2014 09:42:34 +0000 (+0600) Subject: Component Viewer: workspace X-Git-Tag: 4.4-RC1~1434^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=13c50f0db16a2384bdc8bdc6df9eb8eb14705240;p=sonarqube.git Component Viewer: workspace --- diff --git a/sonar-server/src/main/coffee/component-viewer/coverage-popup.coffee b/sonar-server/src/main/coffee/component-viewer/coverage-popup.coffee new file mode 100644 index 00000000000..a0f5454c1fe --- /dev/null +++ b/sonar-server/src/main/coffee/component-viewer/coverage-popup.coffee @@ -0,0 +1,34 @@ +define [ + 'backbone.marionette' + 'templates/component-viewer' +], ( + Marionette + Templates +) -> + + $ = jQuery + + + class CoveragePopupView extends Marionette.ItemView + className: 'component-viewer-popup' + template: Templates['coveragePopup'] + + + events: + 'click a[data-key]': 'goToFile' + + + onRender: -> + @$el.detach().appendTo $('body') + @$el.css + top: @options.triggerEl.offset().top + left: @options.triggerEl.offset().left + @options.triggerEl.outerWidth() + + $('body').on 'click.coverage-popup', => + $('body').off 'click.coverage-popup' + @close() + + + goToFile: (e) -> + key = $(e.currentTarget).data 'key' + @options.main.addTransition key, 'coverage' diff --git a/sonar-server/src/main/coffee/component-viewer/header.coffee b/sonar-server/src/main/coffee/component-viewer/header.coffee index 0e2dbd7040a..ae4f05b4ebe 100644 --- a/sonar-server/src/main/coffee/component-viewer/header.coffee +++ b/sonar-server/src/main/coffee/component-viewer/header.coffee @@ -27,3 +27,7 @@ define [ el.toggleClass 'active' if active then @options.main.hideCoverage() else @options.main.showCoverage() + + serializeData: -> + _.extend super, workspace: @options.workspace.toJSON() + diff --git a/sonar-server/src/main/coffee/component-viewer/main.coffee b/sonar-server/src/main/coffee/component-viewer/main.coffee index 3eef7c58c28..f9b20cb334a 100644 --- a/sonar-server/src/main/coffee/component-viewer/main.coffee +++ b/sonar-server/src/main/coffee/component-viewer/main.coffee @@ -29,8 +29,12 @@ define [ initialize: -> + @workspace = new Backbone.Collection() @component = new Backbone.Model() - @headerView = new HeaderView model: @component, main: @ + @headerView = new HeaderView + model: @component + workspace: @workspace + main: @ @source = new Backbone.Model() @sourceView = new SourceView model: @source, main: @ @@ -70,13 +74,19 @@ define [ open: (key) -> + @workspace.reset [ key: key ] + @_open key + + + _open: (key) -> @key = key @sourceView.showSpinner() source = @requestSource key component = @requestComponent key $.when(source, component).done => + @workspace.findWhere(key: key).set 'component': @component.toJSON() @render() - @hideCoverage() + @showCoverage() showCoverage: -> @@ -90,4 +100,9 @@ define [ hideCoverage: -> - @sourceView.hideCoverage() \ No newline at end of file + @sourceView.hideCoverage() + + + addTransition: (key, transition) -> + @workspace.add key: key, transition: transition + @_open key \ No newline at end of file diff --git a/sonar-server/src/main/coffee/component-viewer/source.coffee b/sonar-server/src/main/coffee/component-viewer/source.coffee index ae09ad17837..a81aeb67bdc 100644 --- a/sonar-server/src/main/coffee/component-viewer/source.coffee +++ b/sonar-server/src/main/coffee/component-viewer/source.coffee @@ -1,16 +1,29 @@ define [ 'backbone.marionette' 'templates/component-viewer' + 'component-viewer/coverage-popup' 'common/handlebars-extensions' ], ( Marionette Templates + CoveragePopupView ) -> + $ = jQuery + + class SourceView extends Marionette.ItemView template: Templates['source'] + events: + 'click .coverage a': 'showCoveragePopup' + + + onRender: -> + @delegateEvents() + + showSpinner: -> @$el.html '
' @@ -19,6 +32,14 @@ define [ @$('.coverage').hide() + showCoveragePopup: (e) -> + e.stopPropagation() + popup = new CoveragePopupView + triggerEl: $(e.currentTarget).closest('td') + main: @options.main + popup.render() + + serializeData: -> source = @model.get 'source' coverage = @model.get 'coverage' diff --git a/sonar-server/src/main/hbs/component-viewer/coveragePopup.hbs b/sonar-server/src/main/hbs/component-viewer/coveragePopup.hbs new file mode 100644 index 00000000000..1e8d81aa27d --- /dev/null +++ b/sonar-server/src/main/hbs/component-viewer/coveragePopup.hbs @@ -0,0 +1,20 @@ +
+ + src/test/java/org/sonar/api/resources/ResourceTypeTreeTest.java + + +
+ +
+ + src/test/java/org/sonar/api/resources/ResourceTypesTest.java + + +
\ No newline at end of file diff --git a/sonar-server/src/main/hbs/component-viewer/header.hbs b/sonar-server/src/main/hbs/component-viewer/header.hbs index 454b8519022..953880f5be2 100644 --- a/sonar-server/src/main/hbs/component-viewer/header.hbs +++ b/sonar-server/src/main/hbs/component-viewer/header.hbs @@ -1,4 +1,17 @@ -

{{name}}

+
+ +
diff --git a/sonar-server/src/main/hbs/component-viewer/source.hbs b/sonar-server/src/main/hbs/component-viewer/source.hbs index c473d5a10d2..5692d126f2a 100644 --- a/sonar-server/src/main/hbs/component-viewer/source.hbs +++ b/sonar-server/src/main/hbs/component-viewer/source.hbs @@ -2,7 +2,7 @@ {{#each source}} - {{#if coverage}}{{coverage}}{{/if}} + {{#if coverage}}{{coverage}}{{/if}} {{#if coverageConditions}} diff --git a/sonar-server/src/main/less/component-viewer.less b/sonar-server/src/main/less/component-viewer.less index e6700dac01a..439a1ea54dd 100644 --- a/sonar-server/src/main/less/component-viewer.less +++ b/sonar-server/src/main/less/component-viewer.less @@ -6,10 +6,12 @@ width: 100%; min-width: 600px; border: 1px solid @barBorderColor; + .box-sizing(border-box); } .component-viewer-header { + position: relative; height: 40px; padding: 0 10px; border-bottom: 1px solid @barBorderColor; @@ -17,17 +19,28 @@ } -.component-viewer-component { - float: left; +.component-viewer-workspace { + height: 40px; line-height: 40px; - font-weight: bold; + font-size: 0; +} + +.component-viewer-workspace-item { + display: inline-block; + vertical-align: middle; + font-size: @baseFontSize; + + &:last-child { font-weight: bold; } +} + +.component-viewer-workspace-transition { + padding: 0 10px; } .component-viewer-options { - float: right; - line-height: 1; - padding-top: 9px; + position: absolute; + top: 8px; right: 10px; } @@ -59,6 +72,8 @@ &.coverage-green { background-color: @green;} &.coverage-red { background-color: @red; } &.coverage-orange { background-color: @orange; } + + a { color: #fff; } } .sources2 .row:hover { @@ -73,6 +88,28 @@ } +.component-viewer-popup { + position: absolute; + z-index: 100; + padding: 10px; + border: 1px solid @barBorderColor; + background-color: @barBackgroundColor; +} + +.component-viewer-popup-section + .component-viewer-popup-section { + margin-top: 10px; +} + +.component-viewer-popup-section-title { + +} + +.component-viewer-popup-list { + margin-top: 5px; + font-size: @smallFontSize; +} + + @font-face { font-family: 'inconsolata-bold'; src: url('../fonts/inconsolata-bold-webfont.woff') format('woff'), diff --git a/sonar-server/src/main/webapp/fonts/inconsolata-bold-webfont.eot b/sonar-server/src/main/webapp/fonts/inconsolata-bold-webfont.eot new file mode 100755 index 00000000000..da21f2ff657 Binary files /dev/null and b/sonar-server/src/main/webapp/fonts/inconsolata-bold-webfont.eot differ diff --git a/sonar-server/src/main/webapp/fonts/inconsolata-bold-webfont.svg b/sonar-server/src/main/webapp/fonts/inconsolata-bold-webfont.svg new file mode 100755 index 00000000000..f338af43d5a --- /dev/null +++ b/sonar-server/src/main/webapp/fonts/inconsolata-bold-webfont.svg @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sonar-server/src/main/webapp/fonts/inconsolata-bold-webfont.ttf b/sonar-server/src/main/webapp/fonts/inconsolata-bold-webfont.ttf new file mode 100755 index 00000000000..4eff562aeec Binary files /dev/null and b/sonar-server/src/main/webapp/fonts/inconsolata-bold-webfont.ttf differ diff --git a/sonar-server/src/main/webapp/fonts/inconsolata-bold-webfont.woff b/sonar-server/src/main/webapp/fonts/inconsolata-bold-webfont.woff new file mode 100755 index 00000000000..9d54523d93b Binary files /dev/null and b/sonar-server/src/main/webapp/fonts/inconsolata-bold-webfont.woff differ diff --git a/sonar-server/src/main/webapp/fonts/inconsolata-regular-webfont.eot b/sonar-server/src/main/webapp/fonts/inconsolata-regular-webfont.eot new file mode 100755 index 00000000000..df6e264322b Binary files /dev/null and b/sonar-server/src/main/webapp/fonts/inconsolata-regular-webfont.eot differ diff --git a/sonar-server/src/main/webapp/fonts/inconsolata-regular-webfont.svg b/sonar-server/src/main/webapp/fonts/inconsolata-regular-webfont.svg new file mode 100755 index 00000000000..cb0fa46d45c --- /dev/null +++ b/sonar-server/src/main/webapp/fonts/inconsolata-regular-webfont.svg @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sonar-server/src/main/webapp/fonts/inconsolata-regular-webfont.ttf b/sonar-server/src/main/webapp/fonts/inconsolata-regular-webfont.ttf new file mode 100755 index 00000000000..587638a9588 Binary files /dev/null and b/sonar-server/src/main/webapp/fonts/inconsolata-regular-webfont.ttf differ diff --git a/sonar-server/src/main/webapp/fonts/inconsolata-regular-webfont.woff b/sonar-server/src/main/webapp/fonts/inconsolata-regular-webfont.woff new file mode 100755 index 00000000000..c838c3486fc Binary files /dev/null and b/sonar-server/src/main/webapp/fonts/inconsolata-regular-webfont.woff differ