diff options
Diffstat (limited to 'server/sonar-web/src/main/js/coding-rules/layout.js')
-rw-r--r-- | server/sonar-web/src/main/js/coding-rules/layout.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/server/sonar-web/src/main/js/coding-rules/layout.js b/server/sonar-web/src/main/js/coding-rules/layout.js new file mode 100644 index 00000000000..f6386fa375a --- /dev/null +++ b/server/sonar-web/src/main/js/coding-rules/layout.js @@ -0,0 +1,58 @@ +define([ + 'backbone.marionette', + 'templates/coding-rules' +], function (Marionette, Templates) { + + var $ = jQuery; + + return Marionette.Layout.extend({ + template: Templates['coding-rules-layout'], + topOffset: 30, + + regions: { + filtersRegion: '.search-navigator-filters', + facetsRegion: '.search-navigator-facets', + workspaceHeaderRegion: '.search-navigator-workspace-header', + workspaceListRegion: '.search-navigator-workspace-list', + workspaceDetailsRegion: '.search-navigator-workspace-details' + }, + + initialize: function () { + var that = this; + $(window).on('scroll.search-navigator-layout', function () { + that.onScroll(); + }); + }, + + onClose: function () { + $(window).off('scroll.search-navigator-layout'); + }, + + onRender: function () { + this.$('.search-navigator-side').isolatedScroll(); + }, + + onScroll: function () { + var scrollTop = $(window).scrollTop(); + $('.search-navigator').toggleClass('sticky', scrollTop >= this.topOffset); + this.$('.search-navigator-side').css({ + top: Math.max(0, Math.min(this.topOffset - scrollTop, this.topOffset)) + }); + }, + + showDetails: function () { + this.scroll = $(window).scrollTop(); + $('.search-navigator').addClass('search-navigator-extended-view'); + }, + + + hideDetails: function () { + $('.search-navigator').removeClass('search-navigator-extended-view'); + if (this.scroll != null) { + $(window).scrollTop(this.scroll); + } + } + + }); + +}); |