property: 'rule_key'
type: ReadOnlyFilterView
enabled: false
- inactive: true
optional: true
$ = jQuery
API_ISSUE = "#{baseUrl}/api/issues/show"
App = new Marionette.Application()
+ el = $('#body')
App.addRegions
viewerRegion: '#component-viewer'
+ App.resizeContainer = ->
+ width = $(window).width()
+ height = $(window).height()
+ el.innerWidth(width).innerHeight(height)
+
+
App.requestComponentViewer = (s) ->
if s?
settings = issues: false, coverage: false, duplications: false, scm: false, workspace: false
s.split(',').forEach (d) -> settings[d] = true
else settings = null
unless App.componentViewer?
- App.componentViewer = new ComponentViewer settings: settings
+ @resizeContainer()
+ $(window).on 'resize', => @resizeContainer()
+ App.componentViewer = new ComponentViewer
+ settings: settings
+ elementToFit: el
App.viewerRegion.show App.componentViewer
App.componentViewer
@ui.expandLinks.removeClass 'active'
@ui.expandedBar.removeClass 'active'
@barRegion.reset()
+ @options.main.fitIntoElement()
enableBar: (scope) ->
activeHeaderItem = @state.get 'activeHeaderItem'
if activeHeaderItem
@$(activeHeaderItem).addClass 'active'
+ @options.main.fitIntoElement()
enableBarItem: (item, silent = false) ->
@settings.set options.settings
@settings.set 'scm', !!localStorage.getItem('componentViewerSCM')
@shouldStoreSettings = options.shouldStoreSettings
+ @elementToFit = options.elementToFit
@state = new State()
localStorage.setItem 'componentViewerSettings', JSON.stringify @settings.toJSON()
+ fitIntoElement: ->
+ return unless @elementToFit
+ source = @$(@sourceRegion.$el)
+ workspace = @$(@workspaceRegion.$el)
+
+ width = @elementToFit.width()
+ height = @elementToFit.height()
+ availableWidth = width - workspace.outerWidth(true)
+ availableHeight = height - @$(@headerRegion.$el).outerHeight(true)
+
+ source.removeClass 'overflow'
+ source.width(availableWidth).css('max-height', availableHeight)
+ source.addClass 'overflow'
+ workspace.removeClass 'overflow'
+ workspace.height availableHeight
+ workspace.addClass 'overflow'
+
+
onRender: ->
@workspaceRegion.show @workspaceView
@$el.toggleClass 'component-viewer-workspace-enabled', @settings.get 'workspace'
@sourceRegion.show @sourceView
@headerRegion.show @headerView
+ @fitIntoElement()
+ resizeEvent = 'resize.componentViewer'
+ $(window).off(resizeEvent).on resizeEvent, =>
+ setTimeout (=> @fitIntoElement()), 100
requestComponent: (key, clear = false, full = true) ->
toggleWorkspace: (store = false) ->
if @settings.get 'workspace' then @hideWorkspace() else @showWorkspace()
+ @fitIntoElement()
@storeSettings() if store
$ = jQuery
App = new Marionette.Application()
+ el = $('#accordion-panel')
App.addRegions
viewerRegion: '#accordion-panel'
+ App.resizeContainer = ->
+ width = $(window).width()
+ height = $(window).height() - el.offset().top - $('#footer').height() - 10
+ el.innerWidth(width).innerHeight(height)
+
+
App.requestComponentViewer = ->
unless App.componentViewer?
- App.componentViewer = new ComponentViewer()
+ @resizeContainer()
+ $(window).on 'resize', => @resizeContainer()
+ App.componentViewer = new ComponentViewer
+ elementToFit: el
App.viewerRegion.show App.componentViewer
App.componentViewer
$ = jQuery
App = new Marionette.Application()
+ el = $('#accordion-panel')
App.addRegions
viewerRegion: '#accordion-panel'
+ App.resizeContainer = ->
+ height = Math.min 780, ($(window).height() - 20)
+ el.innerHeight(height)
+
+
App.requestComponentViewer = ->
unless App.componentViewer?
- App.componentViewer = new ComponentViewer()
+ @resizeContainer()
+ $(window).on 'resize', => @resizeContainer()
+ App.componentViewer = new ComponentViewer
+ elementToFit: el
App.viewerRegion.show App.componentViewer
App.componentViewer
-
App.addInitializer ->
# Define parameters
drilldown = window.drilldown || {}
var that = this,
app = this.options.app,
settings = localStorage.getItem('componentViewerSettings'),
+ navigatorDetails = jQuery('.navigator-details'),
componentViewer = new ComponentViewer({
settings: settings,
shouldStoreSettings: true,
+ elementToFit: navigatorDetails,
component: {
project: this.model.get('project'),
projectLongName: this.model.get('projectLongName')
}
}),
showCallback = function () {
- jQuery('.navigator-details').removeClass('navigator-fetching');
+ navigatorDetails.removeClass('navigator-fetching');
app.detailsRegion.show(componentViewer);
componentViewer.settings.set('issues', false);
componentViewer.open(that.model.get('component'));
});
};
- jQuery('.navigator-details').empty().addClass('navigator-fetching');
+ navigatorDetails.empty().addClass('navigator-fetching');
var issueKey = this.model.get('key');
this.model.clear({ silent: true });
this.model.set({ key: issueKey }, { silent: true });
min-width: 600px;
border-left-width: 0;
.box-sizing(border-box);
+ .clearfix;
}
.component-viewer-workspace-enabled {
.component-viewer-workspace {
position: relative;
- display: table-cell;
- vertical-align: top;
+ float: left;
min-width: 30px;
+ margin-right: 10px;
border: 1px solid @barBorderColor;
background-color: @barBackgroundColor;
+
+ &.overflow {
+ .box-sizing(border-box);
+ }
}
.component-viewer-workspace-header {
.component-viewer-source {
- display: table-cell;
- vertical-align: top;
- width: 100%;
- padding-left: 10px;
+ float: left;
+ border: 1px solid @barBorderColor;
+
+ &.overflow {
+ .box-sizing(border-box);
+ overflow: auto;
+ }
.code {
width: 100%;
- border: 1px solid @barBorderColor;
}
.code th {
.navigator-details {
position: relative;
- margin: 0 @navigatorPadding;
-
- .component-viewer { margin-bottom: 10px; }
+ margin: 0 @navigatorPadding @navigatorPadding;
}
.navigator-resizer {