You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

189 lines
5.5 KiB

/*
* @copyright Leyun internet Technology(Shanghai)Co.,Ltd
* @license http://www.dzzoffice.com/licenses/license.txt
* @package DzzOffice
* @link http://www.dzzoffice.com
* @author zyx(zyx@dzz.cc)
*/
(function($)
{
//左右分栏时,调用此,可以实现点击隐藏左侧分栏,拖动改变左侧分栏的宽度
$.fn.leftDrager_layout = function(resizefunc,options)
{
var opt={
'cookieid':null, //记忆左侧大小和关闭状态的cookie标志符
'cookietime':60*60*24*30,
'leftHide':700
}
options=$.extend(opt,options);
var self=this;
var $this=$(this);
var timer=null;
var dragerWidth=$this.width();
var $leftContainer=$('.bs-left-container');
var $mainContainer=$('.bs-main-container');
var oleft=((options.cookieid && getcookie(options.cookieid+'_width'))?parseInt(getcookie(options.cookieid+'_width')):$leftContainer.outerWidth(true))|| 0;
var left=oleft;
var clientWidth = document.documentElement.clientWidth;
var setPosition=function(xx,flag){
xx=xx*1;
if(flag===true){
if(xx<10){
left=oleft;
dragerClick('hide');
return;
}else{
dragerClick('show');
}
}
/*判断最小宽度*/
var mainWidth=$mainContainer.outerWidth(true);
var minWidth=parseInt($mainContainer.css('minWidth')) ||0;
if(mainWidth-xx<minWidth){
xx=mainWidth-minWidth;
}
left=xx;
if(flag===true){
oleft=left;
}
$leftContainer.css('width',left);
$mainContainer.css('marginLeft',left);
var currentRightWidth = mainWidth - xx;
$mainContainer.trigger('leftDrager_layout.changeWidthValue',[currentRightWidth]);
$this.css('left',left);
if(options.cookieid){
setcookie(options.cookieid+'_width',left,options.cookietime);
}
};
var dragerClick=function(flag,nocookie){
if(flag==='hide'){
$leftContainer.css('display','none');
$mainContainer.css('marginLeft',0);
$this.css({'left':0,'cursor':'default'});
if(options.cookieid && !nocookie) setcookie(options.cookieid+'_isshow','hide',options.cookietime);
jQuery('.left-drager-op').addClass('left-drager-op2');
}else if(flag==='show'){
$leftContainer.css({width:left,'display':'block'});
$mainContainer.css('marginLeft',document.documentElement.clientWidth<opt.leftHide?0:left);
$this.css({'left':left,'cursor':'w-resize'});
if(options.cookieid && !nocookie) setcookie(options.cookieid+'_isshow','show',options.cookietime);
jQuery('.left-drager-op').removeClass('left-drager-op2');
}else{
if($leftContainer.width()<10 || $leftContainer.is(':hidden')){
dragerClick('show');
}else{
dragerClick('hide');
}
}
};
var dragging=function(){
$this.off('mousedown').on('mousedown',function(e){
e.preventDefault();
var x=e.clientX;
var ox=x-$this.offset().left;
var width=$this.width();
$(document).mousemove(function(e){
e.preventDefault();
var xx=e.clientX;
if((xx-ox+width)>clientWidth){
xx=clientWidth+ox-width;
}
if(xx-ox<=0){
xx=ox;
}
setPosition(xx-ox);
});
$(document).mouseup(function(e) {
$(document).off('mouseup').off('mousemove');
var xx=e.clientX;
if((xx-ox+width)>clientWidth){
xx=clientWidth+ox-width;
}
if(xx-ox<=0){
xx=ox;
}
setPosition(xx-ox,true);
});
});
};
var Layout = function () {
var headerHeight = jQuery('.bs-top-container').outerHeight(true);
var isTopFixed = jQuery('.bs-top-container').hasClass('navbar-fixed-top');
var clientHeight = Math.max(document.documentElement.clientHeight, document.body.clientHeight);
var footerHeight = jQuery('.bs-footer-container').length ? jQuery('.bs-footer-container').outerHeight(true) : 0;
jQuery('.bs-container').css('padding-top', isTopFixed ? headerHeight : 0);
jQuery('.bs-left-container,.bs-main-container,.left-drager').css('height', clientHeight - headerHeight - footerHeight);
jQuery('.left-drager,.bs-left-container').css('top', isTopFixed ? headerHeight : 0);
if (typeof (resizefunc) === 'function') {
resizefunc();
}
leftHide();
};
var leftHide=function(){
if(document.documentElement.clientWidth<opt.leftHide){
dragerClick('hide',true);
}else{
if(options.cookieid && getcookie(options.cookieid+'_isshow')){
var isshow=getcookie(options.cookieid+'_isshow');
if(isshow==='hide'){
dragerClick('hide',true);
}else{
dragerClick('show',true);
}
}else{
dragerClick('show',true);
}
}
};
var init=function(){
Layout();
$this.find('.left-drager-op').off('click').on('click',function(){
dragerClick();
});
jQuery('.leftTopmenu').off('click').on('click',function(){
if($leftContainer.width()<10 || $leftContainer.is(':hidden')){
dragerClick('hide');
}else{
dragerClick('show');
}
});
var isshow='';
if(options.cookieid && getcookie(options.cookieid+'_isshow')){
isshow=getcookie(options.cookieid+'_isshow');
if(isshow==='hide'){
dragerClick('hide',true);
}else{
dragerClick('show');
}
}else{
if($leftContainer.width()<10 || $leftContainer.is(':hidden')){
dragerClick('hide');
}else{
dragerClick('show');
}
}
dragging();
var resizeTimer=null;
window.onresize=function(){
if(resizeTimer){
window.clearTimeout(resizeTimer);
}
window.setTimeout(function(){Layout();},100);
};
leftHide();
};
init();
};
})(jQuery);