582 lines
22 KiB
JavaScript
582 lines
22 KiB
JavaScript
//Global Variables
|
|
$sidebarState = window.localStorage.getItem('sidebarState');
|
|
$ua = navigator.userAgent;
|
|
$.extend($.support, {
|
|
touch: "ontouchend" in document
|
|
});
|
|
if($.support.touch) {
|
|
mouseenterEvent = clickEvent = "touchstart";
|
|
} else {
|
|
clickEvent = "click";
|
|
mouseenterEvent = "mouseenter";
|
|
};
|
|
|
|
|
|
!function ($) {
|
|
// Set sidebarState
|
|
sidebarState = function (v) {
|
|
if(v) {
|
|
window.localStorage.setItem('sidebarState', 1);
|
|
} else {
|
|
window.localStorage.removeItem('sidebarState');
|
|
}
|
|
};
|
|
|
|
// Focus first element
|
|
$.fn.focusFirstField = function(){
|
|
$this = this;
|
|
$this.find(":text:visible:enabled").filter(function(){
|
|
return $(this).parents(":hidden").size() == 0;
|
|
}).slice(0,1).focus();
|
|
return this;
|
|
}
|
|
|
|
|
|
//Checked Toggle
|
|
$.fn.togglebox = function () {
|
|
var $checked = this;
|
|
$checked.each(function() {
|
|
if(!$(this).closest('div').hasClass('togglebox')) {
|
|
$(this).wrap('<div class="toggle-control"/>');
|
|
$(this).wrap('<div class="togglebox" />');
|
|
$('<label><b></b></label>').insertAfter($(this));
|
|
if($(this).data().deploy) {
|
|
switch($(this).data().deploy) {
|
|
case "left":
|
|
$(this).closest('.toggle-control').css('float','left');
|
|
break;
|
|
case "right":
|
|
$(this).closest('.toggle-control').css('float','right');
|
|
break;
|
|
case "inline":
|
|
$(this).closest('.toggle-control').css('display','inline-block');
|
|
break;
|
|
}
|
|
}
|
|
if($(this).data().title) {
|
|
$(this).closest('.toggle-control').append('<p>'+$(this).data().title+'</p>');
|
|
}
|
|
}
|
|
})
|
|
$checked.each(function(i) {
|
|
if($(this).attr('type') == "checkbox") {
|
|
if($(this).data().disabled) {
|
|
$(this).parent('.togglebox').addClass('disabled').closest('li').addClass('disabled');
|
|
if($(this).prop('checked')) {
|
|
$(this).parent('.togglebox').removeClass('disabled').closest('li').removeClass('disabled');
|
|
};
|
|
} else {
|
|
if($(this).prop('checked')) {
|
|
$(this).parent('.togglebox').addClass('disabled').closest('li').addClass('disabled');
|
|
};
|
|
}
|
|
$(this).on({
|
|
change: function() {
|
|
$(this).parent('.togglebox').toggleClass('disabled');
|
|
$(this).closest('tr').toggleClass('disable');
|
|
}
|
|
});
|
|
};
|
|
if($(this).attr('type') == "radio") {
|
|
if(!$(this).prop('checked')) {
|
|
$(this).parent('.togglebox').addClass('disabled').closest('li').addClass('disabled');
|
|
$(this).closest('tr').addClass('disable');
|
|
};
|
|
$(this).on({
|
|
change: function() {
|
|
$checked.not($(".toggle-check[type='checkbox']")).each(function(i) {
|
|
if(!$(this).parent('.togglebox').hasClass('disabled')) {
|
|
$(this).parent('.togglebox').toggleClass('disabled');
|
|
$(this).closest('tr').toggleClass('disable');
|
|
};
|
|
});
|
|
$(this).parent('.togglebox').toggleClass('disabled')
|
|
$(this).closest('tr').toggleClass('disable');
|
|
}
|
|
});
|
|
};
|
|
if($('#sitemap').length) {
|
|
$(this).on({
|
|
change: function() {
|
|
$(this).closest('li').toggleClass('disabled');
|
|
if($(this).prop('checked')) {
|
|
$(this).attr('checked', 'checked');
|
|
$(this).parents('h6')
|
|
.siblings('ul')
|
|
.find('li')
|
|
.addClass('disabled')
|
|
.find('h6 .togglebox')
|
|
.addClass('disabled')
|
|
.find('input[type="checkbox"]')
|
|
.prop('checked', true)
|
|
.attr('checked', 'checked');
|
|
} else {
|
|
$(this).removeAttr('checked');
|
|
$(this).parents('h6')
|
|
.siblings('ul')
|
|
.find('li')
|
|
.removeClass('disabled')
|
|
.find('h6 .togglebox')
|
|
.removeClass('disabled')
|
|
.find('input[type="checkbox"]')
|
|
.prop('checked', false)
|
|
.removeAttr('checked');
|
|
};
|
|
$('.toggle-check').each(function(i) {
|
|
var len = $(this).closest('ul').children('li').length,
|
|
checLen = $(this).closest('ul').children('li').find('input[checked]').length,
|
|
checLen = checLen - $(this).closest('ul').children('li').find('ul').find('input[checked]').length;
|
|
if(len == checLen) {
|
|
$(this).closest('ul')
|
|
.parent('li')
|
|
.addClass('disabled')
|
|
.children('h6')
|
|
.find('.togglebox')
|
|
.addClass('disabled')
|
|
.find('input[type="checkbox"]')
|
|
.prop('checked', true)
|
|
.attr('checked', 'checked');
|
|
} else {
|
|
$(this).closest('ul')
|
|
.parent('li')
|
|
.removeClass('disabled')
|
|
.children('h6')
|
|
.find('.togglebox')
|
|
.removeClass('disabled')
|
|
.find('input[type="checkbox"]')
|
|
.prop('checked', false)
|
|
.removeAttr('checked');
|
|
};
|
|
});
|
|
},
|
|
});
|
|
};
|
|
});
|
|
};
|
|
|
|
|
|
// Search Clear
|
|
$.fn.searchClear = function (param){
|
|
_defaultSettings = {
|
|
inputName: ':input',
|
|
inputIcon: 'inputIcon',
|
|
clearBtnIcon: 'clearBtnIcon',
|
|
liveFilter: false,
|
|
};
|
|
_set = $.extend(_defaultSettings, param);
|
|
$this = this;
|
|
$input = this.find(_set.inputName);
|
|
$tmp = '<i class="'+_set.inputIcon+'"></i><i class="'+_set.clearBtnIcon+' search-clear"></i>';
|
|
$input.wrap('<div class="sc-field" />');
|
|
$this.find('.sc-field').prepend($tmp);
|
|
$searchClear = $this.find(".search-clear");
|
|
function run(e) {
|
|
$searchClear.hide();
|
|
$($input).each(function() {
|
|
if($(this).val().length > 0) {
|
|
$(this).prev($searchClear).show();
|
|
}else {
|
|
$(this).prev($searchClear).hide();
|
|
}
|
|
$(this).on("blur keyup", function(){
|
|
if($(this).val().length > 0) {
|
|
$(this).prev($searchClear).show();
|
|
}else {
|
|
$(this).prev($searchClear).hide();
|
|
}
|
|
});
|
|
if(_set.liveFilter) {
|
|
$(this).prevAll($searchClear).on({
|
|
click: function(){
|
|
$(this).hide();
|
|
$(this).next($input).val("");
|
|
$('.checkbox-card .mark').removeClass('mark')
|
|
},
|
|
});
|
|
} else {
|
|
$(this).prevAll($searchClear).on({
|
|
click: function(){
|
|
$(this).hide();
|
|
$(this).next($input).val("");
|
|
},
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
// Checking IE10
|
|
// if Windows 8 and IE is ture. remove search clear buttom and fix text input padding-right
|
|
if(/Windows NT 6.2/g.test(navigator.userAgent)){
|
|
if(/MSIE/g.test(navigator.userAgent)){
|
|
$searchClear.remove();
|
|
$input.css({
|
|
'padding-right': '5px',
|
|
});
|
|
}else{run()}
|
|
}else{run()}
|
|
}
|
|
|
|
|
|
// Fixed Nav
|
|
fixedNav = function () {
|
|
if($('.fixed-nav').length){
|
|
var $fixedNav = $('.fixed-nav');
|
|
if($sidebarState){
|
|
$fixedNav.addClass('open');
|
|
}
|
|
$fixedNav.on(clickEvent, function() {
|
|
if($sidebarState) {
|
|
window.localStorage.removeItem('sidebarState');
|
|
$fixedNav.removeClass('open');
|
|
}else{
|
|
window.localStorage.setItem('sidebarState', 1);
|
|
$fixedNav.addClass('open');
|
|
}
|
|
$sidebarState = window.localStorage.getItem('sidebarState')
|
|
});
|
|
}
|
|
};
|
|
|
|
|
|
// Sidebar
|
|
sidebarNav = function () {
|
|
var $sidebar = $('#sidebar'),
|
|
$sidebarMenu = $('#sidebar-menu'),
|
|
$scroller = $('.scroller'),
|
|
$sidebarNav = $('.sidebar-nav'),
|
|
$el = $('.sidebar-nav').children('li'),
|
|
$elIndex = null,
|
|
$blockList = $('.sub-nav-block-list'),
|
|
$block = $('.sub-nav-block'),
|
|
$blockIndex = 0,
|
|
$arrow = $('.sub-nav-arrow'),
|
|
$wrap = $('#main-wrap'),
|
|
$wrapLeft = $wrap.css('margin-left'),
|
|
$position = 0,
|
|
$arrowHeightFormat = $('.position').height()-8;
|
|
if($('#sidebar').length>0) {
|
|
$wrap.css({'margin-left': 61});
|
|
$wrapLeft = 61;
|
|
}
|
|
if($el.hasClass('active')) {
|
|
// Menu defaults active
|
|
$elIndex = $el.filter('.active').index();
|
|
if($sidebarState && !$sidebarNav.hasClass('no-sub-nav')) {
|
|
$block.eq($elIndex).addClass('show');
|
|
$blockList.css({'width': 180});
|
|
$wrap.css({
|
|
'margin-left': 241,
|
|
});
|
|
}
|
|
|
|
// Arrow defaults position
|
|
$position = $el.eq($elIndex).offset().top-$el.eq($elIndex).height()/2+$arrowHeightFormat-$(document).scrollTop();
|
|
$arrow.css({
|
|
'top': $position,
|
|
});
|
|
}
|
|
if($.support.touch && !$sidebarNav.hasClass('no-sub-nav')) {
|
|
$el.find('a').removeAttr('href');
|
|
};
|
|
$el.on(mouseenterEvent, function(e) {
|
|
$block.siblings().removeClass('show').eq($(this).index()).addClass('show');
|
|
$arrow.stop(true, false).animate({
|
|
top: ($(this).offset().top-$(this).height()/2)+$arrowHeightFormat-$(document).scrollTop(),
|
|
},{
|
|
duration: 500,
|
|
easing: 'easeInOutBack',
|
|
});
|
|
if(!$sidebarState || !$el.hasClass('active')) {
|
|
$blockList.css({'width': 180});
|
|
if($('#pageslide').length) {
|
|
if($('#pageslide').is(":hidden")) {
|
|
$wrap.css({
|
|
'margin-left': $blockList.width()+$sidebarNav.width(),
|
|
});
|
|
}
|
|
}else{
|
|
$wrap.css({
|
|
'margin-left': $blockList.width()+$sidebarNav.width(),
|
|
});
|
|
}
|
|
// if($('.topnav').length) {
|
|
// $('.topnav').css({
|
|
// 'left': $blockList.width()+$sidebarNav.width()+20,
|
|
// });
|
|
// }
|
|
if($('.bottomnav').length) {
|
|
$('.bottomnav').css({
|
|
'left': $blockList.width()+$sidebarNav.width()+20,
|
|
});
|
|
}
|
|
$sidebar.css({
|
|
'width': $blockList.width()+$sidebarNav.width(),
|
|
});
|
|
}
|
|
});
|
|
if ($sidebarNav.hasClass('no-sub-nav')) {
|
|
$sidebar.on('mouseleave', function() {
|
|
$arrow.stop(true, false).animate({
|
|
'top': $position,
|
|
},{
|
|
duration: 500,
|
|
easing: 'easeInOutBack',
|
|
});
|
|
})
|
|
};
|
|
// $el.on('mouseleave', function() {
|
|
// $el.hasClass('active') ? $position = $el.eq($elIndex).offset().top-$el.eq($elIndex).height()/2+$arrowHeightFormat-$(document).scrollTop() : 0;
|
|
// $(this).hasClass('active') ? '':$(this).children('span').removeClass('hover');
|
|
// });
|
|
$block.on({
|
|
mouseenter: function() {
|
|
$blockIndex = $block.filter('.sub-nav-block show').index();
|
|
$el.eq($blockIndex).hasClass('active') ? '':$el.eq($blockIndex).children('span').addClass('hover');
|
|
},
|
|
mouseleave: function() {
|
|
$block.removeClass('show');
|
|
if(!$sidebarState || !$el.hasClass('active')) {
|
|
$blockList.css({'width': 0});
|
|
if($('#pageslide').length) {
|
|
if($('#pageslide').is(":hidden")) {
|
|
$wrap.css({
|
|
'margin-left': $wrapLeft,
|
|
});
|
|
// if($('.topnav').length) {
|
|
// if($sidebarState) {
|
|
// $('.topnav').css({
|
|
// 'left': 261,
|
|
// });
|
|
// }
|
|
// }
|
|
}
|
|
} else {
|
|
$wrap.css({
|
|
'margin-left': $blockList.width()+$sidebarNav.width(),
|
|
});
|
|
}
|
|
// if($('.topnav').length) {
|
|
// $('.topnav').css({
|
|
// 'left': $blockList.width()+$sidebarNav.width()+20,
|
|
// });
|
|
// }
|
|
if($('.bottomnav').length) {
|
|
$('.bottomnav').css({
|
|
'left': $blockList.width()+$sidebarNav.width()+20,
|
|
});
|
|
}
|
|
$sidebar.css({'width': 61});
|
|
}else{
|
|
$block.eq($elIndex).addClass('show');
|
|
};
|
|
|
|
|
|
if($elIndex === null) {
|
|
$position = 0;
|
|
} else {
|
|
$position = $el.eq($elIndex).offset().top-$el.eq($elIndex).height()/2+$arrowHeightFormat-$(document).scrollTop();
|
|
}
|
|
$arrow.stop(true, false).animate({
|
|
top: $position,
|
|
},{
|
|
duration: 500,
|
|
easing: 'easeInOutBack',
|
|
});
|
|
}
|
|
});
|
|
// Touch Start
|
|
$wrap.on({
|
|
touchstart: function() {
|
|
if(!$sidebarState || !$el.hasClass('active')) {
|
|
if($block.hasClass('show')) {
|
|
$blockIndex = $block.filter('.sub-nav-block show').index();
|
|
$block.removeClass('show');
|
|
$blockList.css({'width': 0});
|
|
$wrap.css({
|
|
'margin-left': $wrapLeft,
|
|
});
|
|
$sidebar.css({'width': 61});
|
|
$arrow.stop().animate({
|
|
top: $position,
|
|
},{
|
|
duration: 500,
|
|
easing: 'easeInOutBack',
|
|
});
|
|
$el.eq($blockIndex).hasClass('active') ? '':$el.eq($blockIndex).children('span').removeClass('hover');
|
|
}
|
|
}
|
|
}
|
|
});
|
|
// Sidebar Nav Drag
|
|
if(/MSIE 8.0/g.test($ua)){
|
|
$sidebarMenu.addClass('nano')
|
|
.css({'position': 'relative', 'top': '0px'})
|
|
.children('.scroller')
|
|
.addClass('content')
|
|
.removeClass('scroller');
|
|
$sidebarMenu.nanoScroller({ scrollTop: 0 });
|
|
} else {
|
|
if($('#sidebar').length) {
|
|
var sidebarMenu = new iScroll('sidebar-menu', {
|
|
vScrollbar: true,
|
|
scrollbarClass: 'myScrollbar',
|
|
onBeforeScrollStart: function (e) {
|
|
var target = e.target;
|
|
clearTimeout(this.hoverTimeout);
|
|
while (target.nodeName != "SPAN") target = target.parentNode;
|
|
$target = $(target.parentNode).index();
|
|
},
|
|
touch: function () {
|
|
if (this.hoverTarget) {
|
|
clearTimeout(this.hoverTimeout);
|
|
$('.sub-nav-block').removeClass('show')
|
|
$('.sub-nav-block').eq($target).addClass('show')
|
|
}
|
|
},
|
|
});
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
|
|
// Initial State
|
|
initialState = function () {
|
|
if($('.bottomnav').length) {
|
|
var $bottomnavHeight = $('.bottomnav').outerHeight();
|
|
$('.wrap-inner').css({
|
|
'padding-bottom': $bottomnavHeight,
|
|
})
|
|
if($sidebarState) {
|
|
if(!$('.sidebar-nav').hasClass('no-sub-nav')) {
|
|
$('.bottomnav').css({
|
|
'left': 261,
|
|
});
|
|
}
|
|
}
|
|
}
|
|
// if($('.topnav').length) {
|
|
// if($sidebarState) {
|
|
// $('.topnav').css({
|
|
// 'left': 261,
|
|
// });
|
|
// }
|
|
// }
|
|
};
|
|
}(window.jQuery);
|
|
|
|
|
|
var ini = function() {
|
|
api = this
|
|
api.modal = function(e) {
|
|
$('#dialog a.delete-item').attr("href", e);
|
|
$('#dialog').modal('show');
|
|
}
|
|
|
|
}
|
|
|
|
// Open Slide
|
|
function openSlide() {
|
|
var $openSlide = $('.open-slide'),
|
|
$pageslideW;
|
|
|
|
$(window).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954;
|
|
$(window).resize(function() {
|
|
$(this).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954;
|
|
})
|
|
$openSlide.each(function() {
|
|
if($(this).hasClass('view-page')) {
|
|
$(this).pageslide({ W: $pageslideW, iframe: true });
|
|
} else if($('#items').length) {
|
|
$(this).pageslide({ W: 324 });
|
|
} else {
|
|
$(this).pageslide();
|
|
};
|
|
});
|
|
$('.bottomnav .open-slide').on('click', function() {
|
|
$('.table tr').removeClass('active');
|
|
$('.filter-item').removeClass('active')
|
|
});
|
|
}
|
|
|
|
function formTip() {
|
|
if($('.main-forms').length && $('.add-on').length) {
|
|
$('.main-forms .add-on, .main-forms .file-link').tooltip({
|
|
position: {
|
|
my: "center bottom-4",
|
|
at: "center top"
|
|
}
|
|
});
|
|
}
|
|
if($('.no-sub-nav').length) {
|
|
$('.no-sub-nav li').tooltip({
|
|
position: {
|
|
my: "left+20 center",
|
|
at: "right center"
|
|
},
|
|
track: true,
|
|
tooltipClass: "sidebar-tooltip",
|
|
});
|
|
}
|
|
}
|
|
function changeStatusHidden() {
|
|
$('#status').find('label.checkbox').each(function() {
|
|
$(this).find('input[type="hidden"]').clone().appendTo($(this));
|
|
$(this).find('input[type="hidden"]').eq(0).remove();
|
|
$(this).find('input[type="checkbox"]').after
|
|
});
|
|
};
|
|
|
|
|
|
// Document Ready
|
|
$(function() {
|
|
new ini();
|
|
$('.delete').on('click', function() {
|
|
api.modal($(this).attr('rel'));
|
|
})
|
|
initialState();
|
|
$('#login').on('shown', function () {
|
|
$(document.body).addClass('modalBlur');
|
|
$('#login').focusFirstField();
|
|
}).on("hide", function() {
|
|
$(document.body).removeClass('modalBlur');
|
|
});
|
|
$('#orbit-bar .searchClear').searchClear({
|
|
inputName: '.search-query',
|
|
inputIcon: 'icon-search',
|
|
clearBtnIcon: 'icons-cross-3',
|
|
|
|
});
|
|
$('#filter .searchClear').searchClear({
|
|
inputName: '.search-query',
|
|
inputIcon: 'icon-search',
|
|
clearBtnIcon: 'icons-cross-3',
|
|
liveFilter: true,
|
|
});
|
|
$('#member-filter').on('shown', function() {
|
|
$(this).find('.nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true });
|
|
});
|
|
if($('#sidebar').length) {
|
|
if(!/MSIE 8.0/g.test(navigator.userAgent)){
|
|
document.getElementById('sidebar').addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
|
|
}
|
|
// demo_fu1();
|
|
}
|
|
if($('#pageslide').length) {
|
|
openSlide();
|
|
}
|
|
if($('.tags').length) {
|
|
$('#filter-input').fastLiveFilter('#tags-list', '.filter-item', '.tag');
|
|
}
|
|
if($('#card-list').length) {
|
|
$('#filter-input').fastLiveFilter('#card-list', '.filter-item', '.user-name');
|
|
}
|
|
if($('.toggle-check').length) {
|
|
$('.toggle-check').togglebox();
|
|
}
|
|
if($('#status').length) {
|
|
changeStatusHidden();
|
|
}
|
|
formTip()
|
|
sidebarNav();
|
|
}); |