]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-5209 Workspace
authorStas Vilchik <vilchiks@gmail.com>
Mon, 19 May 2014 15:35:30 +0000 (17:35 +0200)
committerStas Vilchik <vilchiks@gmail.com>
Mon, 19 May 2014 15:35:37 +0000 (17:35 +0200)
sonar-server/src/main/coffee/component-viewer/main.coffee
sonar-server/src/main/coffee/component-viewer/workspace.coffee
sonar-server/src/main/hbs/component-viewer/layout.hbs
sonar-server/src/main/hbs/component-viewer/workspace.hbs
sonar-server/src/main/less/component-viewer.less
sonar-server/src/main/less/icons.less
sonar-server/src/main/webapp/fonts/sonar.woff

index 25d2ca5775b2aec69e44aada19d25a454476ed8f..07924a1ae086e45358f49c40830e901d02731537 100644 (file)
@@ -59,7 +59,7 @@ define [
     initialize: (options) ->
       @settings = new Backbone.Model
         issues: false
-        coverage: false
+        coverage: true
         duplications: false
         scm: false
         workspace: false
@@ -86,11 +86,8 @@ define [
 
 
     onRender: ->
-      if @settings.get 'workspace'
-        @workspaceRegion.show @workspaceView
-        @$el.addClass 'component-viewer-workspace-enabled'
-      else
-        @$el.removeClass 'component-viewer-workspace-enabled'
+      @workspaceRegion.show @workspaceView
+      @$el.toggleClass 'component-viewer-workspace-enabled', @settings.get 'workspace'
       @sourceRegion.show @sourceView
       @headerRegion.show @headerView
 
@@ -124,6 +121,7 @@ define [
 
     requestSource: (key) ->
       $.get API_SOURCES, key: key, (data) =>
+        @source.clear()
         @source.set source: data.sources
 
 
@@ -176,6 +174,10 @@ define [
       @sourceView.render()
 
 
+    toggleWorkspace: ->
+      if @settings.get 'workspace' then @hideWorkspace() else @showWorkspace()
+
+
     showWorkspace: ->
       @settings.set 'workspace', true
       @render()
index ab7662452dff9342afee1c945d704c9d59dc83b7..4e36162ca8e40c8a9cbc2d12a90a88ab75a43620 100644 (file)
@@ -14,6 +14,8 @@ define [
 
 
     events:
+      'click .js-toggle-workspace': 'toggleWorkspace'
+
       'click .component-viewer-workspace-item > a[data-key]': 'goToWorkspaceItem'
       'click .component-viewer-workspace-option > a[data-key]': 'goToWorkspaceOption'
 
@@ -22,6 +24,10 @@ define [
       @delegateEvents()
 
 
+    toggleWorkspace: ->
+      @options.main.toggleWorkspace()
+
+
     goToWorkspaceItem: (e) ->
       key = $(e.currentTarget).data 'key'
       workspace = @options.main.workspace
index 9bba8ff0a78632804eda5f7b2a9781aa24c2dd4b..a010e4c4803a1e3e2d0742832364807ea884e9be 100644 (file)
@@ -1,3 +1,3 @@
-<div class="component-viewer-workspace"></div>
 <div class="component-viewer-header"></div>
+<div class="component-viewer-workspace"></div>
 <div class="component-viewer-source"></div>
\ No newline at end of file
index f1a83c5688190ccaa105b735d02bf594e6ba59a5..f409ed28d5e9ffaf7c91267018c01262bd7a700a 100644 (file)
@@ -1,3 +1,12 @@
+<button class="button-clean component-viewer-workspace-toggle js-toggle-workspace">
+  {{#if settings.workspace}}
+    <i class="icon-double-chevron-left"></i>
+  {{else}}
+    <i class="icon-double-chevron-right"></i>
+  {{/if}}
+
+</button>
+
 <ul class="component-viewer-workspace-list">
   {{#eachReverse workspace}}
     <li class="component-viewer-workspace-item">
index 00d001142748fc7d806079e947e1a86814b7d323..2b2bd42c6aa3aab98b9d764e3bb5aee175cccc9a 100644 (file)
@@ -1,7 +1,7 @@
 @import "variables";
 @import "mixins";
 
-@workspaceWidth: 260px;
+@workspaceWidth: 220px;
 
 
 .component-viewer {
 }
 
 .component-viewer-workspace-enabled {
-  border-left-width: 1px;
-
-  .component-viewer-workspace { display: block; }
-  .component-viewer-source { border-left: @workspaceWidth solid @barBackgroundColor; }
+  .component-viewer-workspace .component-viewer-workspace-list { display: block; }
 }
 
 
 
 
 .component-viewer-workspace {
-  display: none;
-  float: left;
-  width: @workspaceWidth;
-  .box-sizing(border-box);
+  position: relative;
+  display: table-cell;
+  vertical-align: top;
+  padding-right: 30px;
+  border: 1px solid @barBorderColor;
+  background-color: @barBackgroundColor;
 
   a:hover { text-decoration: underline; }
 }
 
 .component-viewer-workspace-list {
-  margin: 8px 0;
+  display: none;
+  width: @workspaceWidth;
+  padding: 8px 0;
+  .box-sizing(border-box);
 }
 
 .component-viewer-workspace-item {
   padding: 0 10px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
 
   &:first-child > a { font-weight: bold; }
 }
   &.active > a { font-weight: bold; }
 }
 
+.component-viewer-workspace-toggle {
+  position: absolute;
+  top: 0; right: 0;
+  .size(30px, 30px);
+  .trans;
+
+  &:hover { background-color: @barBorderColor; }
+}
+
 
 .component-viewer-source {
+  display: table-cell;
+  vertical-align: top;
+  width: 100%;
+  padding-left: 10px;
 
   .code {
     width: 100%;
index e3a950917fba617d371d8fee28204041666d2136..695fe31a8d39a4342ef7f62a075ff127aedbfed0 100644 (file)
@@ -435,6 +435,14 @@ a[class^="icon-"], a[class*=" icon-"] {
   content: "\f105";
   font-size: @iconSmallFontSize;
 }
+.icon-double-chevron-left:before {
+  content: "\f100";
+  font-size: @iconSmallFontSize;
+}
+.icon-double-chevron-right:before {
+  content: "\f101";
+  font-size: @iconSmallFontSize;
+}
 
 
 /*
index fd856e1f43202e5c245440b4c13e7f01f2cf8de4..964b6c782678181de43906d6b58cc075af554b86 100755 (executable)
Binary files a/sonar-server/src/main/webapp/fonts/sonar.woff and b/sonar-server/src/main/webapp/fonts/sonar.woff differ