Orbit/app/assets/javascripts/basic/orbit_js_1.0.1.js

587 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')) {
if($('#basic-info').length) {
$('.bottomnav').css({
'left': 631,
});
} else {
$('.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($('.item-groups').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);
};
}
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();
});