initialize: (options) ->
@settings = new Backbone.Model
issues: false
- coverage: false
+ coverage: true
duplications: false
scm: false
workspace: false
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
requestSource: (key) ->
$.get API_SOURCES, key: key, (data) =>
+ @source.clear()
@source.set source: data.sources
@sourceView.render()
+ toggleWorkspace: ->
+ if @settings.get 'workspace' then @hideWorkspace() else @showWorkspace()
+
+
showWorkspace: ->
@settings.set 'workspace', true
@render()
events:
+ 'click .js-toggle-workspace': 'toggleWorkspace'
+
'click .component-viewer-workspace-item > a[data-key]': 'goToWorkspaceItem'
'click .component-viewer-workspace-option > a[data-key]': 'goToWorkspaceOption'
@delegateEvents()
+ toggleWorkspace: ->
+ @options.main.toggleWorkspace()
+
+
goToWorkspaceItem: (e) ->
key = $(e.currentTarget).data 'key'
workspace = @options.main.workspace
-<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
+<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">
@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%;
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;
+}
/*