blob: abfcd2f634d41db5b27fd0fad8b7b74036a5b904 [file] [log] [blame]
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
// This file creates a set of helper functions that will be loaded for all html
// templates. These functions should be self contained and not rely on any
// external dependencies as they are loaded prior to the application. We may
// want to change this later, but for now this should be thought of as a
// "purely functional" helper system.
define([
"api"
],
function(FauxtonAPI) {
var Resize = function(options){
this.options = options;
this.options.selectorElements = options.selectorElements || ".window-resizeable";
};
Resize.prototype = {
getPrimaryNavWidth: function(){
var primaryNavWidth = $('body').hasClass('closeMenu')? 64:224;
return primaryNavWidth;
},
getPanelWidth: function(){
var sidebarWidth = $('#sidebar-content').length > 0 ? $('#sidebar-content').width(): 0;
return (this.getPrimaryNavWidth() + sidebarWidth);
},
initialize: function(){
// $(window).off('resize');
var that = this;
//add throttler :)
this.lazyLayout = _.debounce(that.onResizeHandler, 300).bind(this);
FauxtonAPI.utils.addWindowResize(this.lazyLayout,"animation");
FauxtonAPI.utils.initWindowResize();
this.onResizeHandler();
},
updateOptions:function(options){
this.options = {};
this.options = options;
this.options.selectorElements = options.selectorElements || ".window-resizeable";
},
turnOff:function(){
FauxtonAPI.utils.removeWindowResize("animation");
},
cleanupCallback: function(){
this.callback = null;
},
onResizeHandler: function (){
//if there is an override, do that instead
if (this.options.onResizeHandler){
this.options.onResizeHandler();
} else {
var combinedWidth = window.innerWidth - this.getPanelWidth(),
smallWidthConstraint = ($('#sidebar-content').length > 0)? 470:800,
panelWidth;
if( combinedWidth > smallWidthConstraint && combinedWidth < 1400){
panelWidth = window.innerWidth - this.getPanelWidth();
} else if (combinedWidth < smallWidthConstraint){
panelWidth = smallWidthConstraint;
} else if(combinedWidth > 1400){
panelWidth = 1400;
}
$(this.options.selectorElements).innerWidth(panelWidth);
}
//if there is a callback, run that
if(this.options.callback) {
this.options.callback();
}
}
};
return Resize;
});