| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548 |
- var App = function() {
- var basePath = '/content/';
- var imgPath = 'ui/img/';
- var pluginsPath = 'plugins/';
- var cssPath = 'ui/css/';
- //初始化内容页layout组件高度
- var handleIframeLayoutHeight = function () {
- var height = App.getViewPort().height - $('.main-footer').outerHeight() - $('.main-header').outerHeight() - $(".content-tabs").outerHeight();
- // $("#layout").css({ "height": height });
- return height;
- }
- //初始化iframe内容页高度
- var handleIframeLayoutContent = function () {
- var height = App.getViewPort().height - $('.main-footer').outerHeight() - $('.main-header').outerHeight() - $(".content-tabs").outerHeight();
- $(".tab_iframe").css({
- height: height
- });
- //var width = App.getViewPort().width- $(".page-sidebar-menu").width();
- $(".tab_iframe").css({
- width: "100%"
- });
- }
- //处理全屏
- var handleFullScreen = function () {
- var de = document.documentElement;
- if (de.requestFullscreen) {
- de.requestFullscreen();
- } else if (de.mozRequestFullScreen) {
- de.mozRequestFullScreen();
- } else if (de.webkitRequestFullScreen) {
- de.webkitRequestFullScreen();
- } else if (de.msRequestFullscreen) {
- de.msRequestFullscreen();
- }
- else {
- // App.alert({ message: "该浏览器不支持全屏!", type: "danger" });
- alert("当前浏览器不支持全屏!");
- }
- };
- // 判断浏览器种类
- var exitFullscreen=function() {
- if(document.exitFullscreen) {
- document.exitFullscreen();
- } else if(document.mozCancelFullScreen) {
- document.mozCancelFullScreen();
- } else if(document.webkitExitFullscreen) {
- document.webkitExitFullscreen();
- }
- }
- // Handles custom checkboxes & radios using jQuery iCheck plugin
- var handleiCheck = function () {
- if (!$().iCheck) {
- return;
- }
- $('.icheck').each(function () {
- var checkboxClass = $(this).attr('data-checkbox') ? $(this).attr('data-checkbox') : 'icheckbox_minimal-grey';
- var radioClass = $(this).attr('data-radio') ? $(this).attr('data-radio') : 'iradio_minimal-grey';
- if (checkboxClass.indexOf('_line') > -1 || radioClass.indexOf('_line') > -1) {
- $(this).iCheck({
- checkboxClass: checkboxClass,
- radioClass: radioClass,
- insert: '<div class="icheck_line-icon"></div>' + $(this).attr("data-label")
- });
- } else {
- $(this).iCheck({
- checkboxClass: checkboxClass,
- radioClass: radioClass
- });
- }
- });
- };
- // Handles Bootstrap switches
- var handleBootstrapSwitch = function () {
- if (!$().bootstrapSwitch) {
- return;
- }
- $('.make-switch').bootstrapSwitch();
- };
- // Handles Bootstrap confirmations
- var handleBootstrapConfirmation = function () {
- if (!$().confirmation) {
- return;
- }
- $('[data-toggle=confirmation]').confirmation({ container: 'body', btnOkClass: 'btn btn-sm btn-success', btnCancelClass: 'btn btn-sm btn-danger' });
- }
- // Handles Bootstrap Accordions.
- var handleAccordions = function () {
- $('body').on('shown.bs.collapse', '.accordion.scrollable', function (e) {
- App.scrollTo($(e.target));
- });
- };
- // Handles Bootstrap Tabs.
- var handleTabs = function () {
- //activate tab if tab id provided in the URL
- if (location.hash) {
- var tabid = encodeURI(location.hash.substr(1));
- $('a[href="#' + tabid + '"]').parents('.tab-pane:hidden').each(function () {
- var tabid = $(this).attr("id");
- $('a[href="#' + tabid + '"]').click();
- });
- $('a[href="#' + tabid + '"]').click();
- }
- if ($().tabdrop) {
- $('.tabbable-tabdrop .nav-pills, .tabbable-tabdrop .nav-tabs').tabdrop({
- text: '<i class="fa fa-ellipsis-v"></i> <i class="fa fa-angle-down"></i>'
- });
- }
- };
- // Handles Bootstrap Modals.
- var handleModals = function () {
- // fix stackable modal issue: when 2 or more modals opened, closing one of modal will remove .modal-open class.
- $('body').on('hide.bs.modal', function () {
- if ($('.modal:visible').size() > 1 && $('html').hasClass('modal-open') === false) {
- $('html').addClass('modal-open');
- } else if ($('.modal:visible').size() <= 1) {
- $('html').removeClass('modal-open');
- }
- });
- // fix page scrollbars issue
- $('body').on('show.bs.modal', '.modal', function () {
- if ($(this).hasClass("modal-scroll")) {
- $('body').addClass("modal-open-noscroll");
- }
- });
- // fix page scrollbars issue
- $('body').on('hide.bs.modal', '.modal', function () {
- $('body').removeClass("modal-open-noscroll");
- });
- // remove ajax content and remove cache on modal closed
- $('body').on('hidden.bs.modal', '.modal:not(.modal-cached)', function () {
- $(this).removeData('bs.modal');
- });
- };
- // Handles Bootstrap Tooltips.
- var handleTooltips = function () {
- // global tooltips
- $('.tooltips').tooltip();
- // portlet tooltips
- $('.portlet > .portlet-title .fullscreen').tooltip({
- container: 'body',
- title: 'Fullscreen'
- });
- $('.portlet > .portlet-title > .tools > .reload').tooltip({
- container: 'body',
- title: 'Reload'
- });
- $('.portlet > .portlet-title > .tools > .remove').tooltip({
- container: 'body',
- title: 'Remove'
- });
- $('.portlet > .portlet-title > .tools > .config').tooltip({
- container: 'body',
- title: 'Settings'
- });
- $('.portlet > .portlet-title > .tools > .collapse, .portlet > .portlet-title > .tools > .expand').tooltip({
- container: 'body',
- title: 'Collapse/Expand'
- });
- };
- // Handles Bootstrap Dropdowns
- var handleDropdowns = function () {
- /*
- Hold dropdown on click
- */
- $('body').on('click', '.dropdown-menu.hold-on-click', function (e) {
- e.stopPropagation();
- });
- };
- var handleAlerts = function () {
- $('body').on('click', '[data-close="alert"]', function (e) {
- $(this).parent('.alert').hide();
- $(this).closest('.note').hide();
- e.preventDefault();
- });
- $('body').on('click', '[data-close="note"]', function (e) {
- $(this).closest('.note').hide();
- e.preventDefault();
- });
- $('body').on('click', '[data-remove="note"]', function (e) {
- $(this).closest('.note').remove();
- e.preventDefault();
- });
- };
- // Handle Hower Dropdowns
- var handleDropdownHover = function () {
- $('[data-hover="dropdown"]').not('.hover-initialized').each(function () {
- $(this).dropdownHover();
- $(this).addClass('hover-initialized');
- });
- };
-
- // Fix input placeholder issue for IE8 and IE9
- var handleFixInputPlaceholderForIE = function () {
- var isIe8 = !!navigator.userAgent.match(/MSIE 8.0/);
- var isIe9 = !!navigator.userAgent.match(/MSIE 9.0/);
- var isIe10 = !!navigator.userAgent.match(/MSIE 10.0/);
- //fix html5 placeholder attribute for ie7 & ie8
- if (isIe8 || isIe9) { // ie8 & ie9
- // this is html5 placeholder fix for inputs, inputs with placeholder-no-fix class will be skipped(e.g: we need this for password fields)
- $('input[placeholder]:not(.placeholder-no-fix), textarea[placeholder]:not(.placeholder-no-fix)').each(function () {
- var input = $(this);
- if (input.val() === '' && input.attr("placeholder") !== '') {
- input.addClass("placeholder").val(input.attr('placeholder'));
- }
- input.focus(function () {
- if (input.val() == input.attr('placeholder')) {
- input.val('');
- }
- });
- input.blur(function () {
- if (input.val() === '' || input.val() == input.attr('placeholder')) {
- input.val(input.attr('placeholder'));
- }
- });
- });
- }
- };
- // last popep popover
- var lastPopedPopover;
- var handlePopovers = function () {
- $('.popovers').popover();
- // close last displayed popover
- $(document).on('click.bs.popover.data-api', function (e) {
- if (lastPopedPopover) {
- lastPopedPopover.popover('hide');
- }
- });
- };
- // Handles scrollable contents using jQuery SlimScroll plugin.
- var handleScrollers = function () {
- App.initSlimScroll('.scroller');
- };
- var handleInitFullScreen = function() {
- fullScreenClickCount = 0;
- $(".fullscreen").bind("click", function() {
- if (fullScreenClickCount % 2 === 0) {
- handleFullScreen();
- } else {
- exitFullscreen();
- }
- fullScreenClickCount++;
- });
- };
- return {
- init: function () {
- //IMPORTANT!!!: Do not modify the core handlers call order.
- //UI Component handlers
-
- handleiCheck(); // handles custom icheck radio and checkboxes
- handleBootstrapSwitch(); // handle bootstrap switch plugin
- handleScrollers(); // handles slim scrolling contents
-
- handleAlerts(); //handle closabled alerts
- handleDropdowns(); // handle dropdowns
- handleTabs(); // handle tabs
- handleTooltips(); // handle bootstrap tooltips
- handlePopovers(); // handles bootstrap popovers
- handleAccordions(); //handles accordions
- handleModals(); // handle modals
- handleBootstrapConfirmation(); // handle bootstrap confirmations
- handleFixInputPlaceholderForIE(); //IE8 & IE9 input placeholder issue fix
- handleInitFullScreen();
- },
-
- initSlimScroll: function (el) {
- $(el).each(function () {
- if ($(this).attr("data-initialized")) {
- return; // exit
- }
- var height;
- if ($(this).attr("data-height")) {
- height = $(this).attr("data-height");
- } else {
- height = $(this).css('height');
- }
- $(this).slimScroll({
- allowPageScroll: true, // allow page scroll when the element scroll is ended
- size: '7px',
- color: ($(this).attr("data-handle-color") ? $(this).attr("data-handle-color") : '#bbb'),
- wrapperClass: ($(this).attr("data-wrapper-class") ? $(this).attr("data-wrapper-class") : 'slimScrollDiv'),
- railColor: ($(this).attr("data-rail-color") ? $(this).attr("data-rail-color") : '#eaeaea'),
- position: isRTL ? 'left' : 'right',
- height: height,
- alwaysVisible: ($(this).attr("data-always-visible") == "1" ? true : false),
- railVisible: ($(this).attr("data-rail-visible") == "1" ? true : false),
- disableFadeOut: true
- });
- $(this).attr("data-initialized", "1");
- });
- },
- destroySlimScroll: function (el) {
- $(el).each(function () {
- if ($(this).attr("data-initialized") === "1") { // destroy existing instance before updating the height
- $(this).removeAttr("data-initialized");
- $(this).removeAttr("style");
- var attrList = {};
- // store the custom attribures so later we will reassign.
- if ($(this).attr("data-handle-color")) {
- attrList["data-handle-color"] = $(this).attr("data-handle-color");
- }
- if ($(this).attr("data-wrapper-class")) {
- attrList["data-wrapper-class"] = $(this).attr("data-wrapper-class");
- }
- if ($(this).attr("data-rail-color")) {
- attrList["data-rail-color"] = $(this).attr("data-rail-color");
- }
- if ($(this).attr("data-always-visible")) {
- attrList["data-always-visible"] = $(this).attr("data-always-visible");
- }
- if ($(this).attr("data-rail-visible")) {
- attrList["data-rail-visible"] = $(this).attr("data-rail-visible");
- }
- $(this).slimScroll({
- wrapperClass: ($(this).attr("data-wrapper-class") ? $(this).attr("data-wrapper-class") : 'slimScrollDiv'),
- destroy: true
- });
- var the = $(this);
- // reassign custom attributes
- $.each(attrList, function (key, value) {
- the.attr(key, value);
- });
- }
- });
- },
- getIframeLayoutHeight: function () {
- return handleIframeLayoutHeight();
- },
- requestFullScreen:function() {
- return handleFullScreen();
- },
- //处理iframe内容
- handleIframeContent:function() {
- return handleIframeLayoutContent();
- },
- //处理sidebar ajax方式加载
- handleSidebarAjaxContent:function() {
- jQuery('.sidebar-menu').on('click', ' li > a.ajaxify', function (e) {
- e.preventDefault();
- var url = $(this).attr("href");
- var pageContentBody = $('#tab-page-content');
- App.startPageLoading({ message: '加载中...' });
- $.get(url, {}, function (res) {
- pageContentBody.html(res);
- // App.fixContentHeight(); // fix content height
- App.stopPageLoading();
- });
- });
- },
- fixIframeCotent: function () {
- setInterval(function () {
- //_runResizeHandlers();
- handleIframeLayoutContent();
- }, 200);
- return;
- },
- blockUI: function (options) {
- options = $.extend(true, {}, options);
- var html = '';
- if (options.animate) {
- html = '<div class="loading-message ' + (options.boxed ? 'loading-message-boxed' : '') + '">' + '<div class="block-spinner-bar"><div class="bounce1"></div><div class="bounce2"></div><div class="bounce3"></div></div>' + '</div>';
- } else if (options.iconOnly) {
- html = '<div class="loading-message ' + (options.boxed ? 'loading-message-boxed' : '') + '"><img src="' + this.getGlobalImgPath() + 'loading-spinner-blue.gif" align=""></div>';
- } else if (options.textOnly) {
- html = '<div class="loading-message ' + (options.boxed ? 'loading-message-boxed' : '') + '"><span> ' + (options.message ? options.message : 'LOADING...') + '</span></div>';
- } else {
- html = '<div class="loading-message ' + (options.boxed ? 'loading-message-boxed' : '') + '"><img src="' + this.getGlobalImgPath() + 'loading-spinner-blue.gif" align=""><span> ' + (options.message ? options.message : 'LOADING...') + '</span></div>';
- }
- if (options.target) { // element blocking
- var el = $(options.target);
- if (el.height() <= ($(window).height())) {
- options.cenrerY = true;
- }
- el.block({
- message: html,
- baseZ: options.zIndex ? options.zIndex : 1000,
- centerY: options.cenrerY !== undefined ? options.cenrerY : false,
- css: {
- top: '10%',
- border: '0',
- padding: '0',
- backgroundColor: 'none'
- },
- overlayCSS: {
- backgroundColor: options.overlayColor ? options.overlayColor : '#555',
- opacity: options.boxed ? 0.05 : 0.1,
- cursor: 'wait'
- }
- });
- } else { // page blocking
- $.blockUI({
- message: html,
- baseZ: options.zIndex ? options.zIndex : 1000,
- css: {
- border: '0',
- padding: '0',
- backgroundColor: 'none'
- },
- overlayCSS: {
- backgroundColor: options.overlayColor ? options.overlayColor : '#555',
- opacity: options.boxed ? 0.05 : 0.1,
- cursor: 'wait'
- }
- });
- }
- },
- // wrApper function to un-block element(finish loading)
- unblockUI: function (target) {
- if (target) {
- $(target).unblock({
- onUnblock: function () {
- $(target).css('position', '');
- $(target).css('zoom', '');
- }
- });
- } else {
- $.unblockUI();
- }
- },
- startPageLoading: function (options) {
- if (options && options.animate) {
- $('.page-spinner-bar').remove();
- $('body').append('<div class="page-spinner-bar"><div class="bounce1"></div><div class="bounce2"></div><div class="bounce3"></div></div>');
- } else {
- $('.page-loading').remove();
- $('body').append('<div class="page-loading"><img src="' + this.getGlobalImgPath() + 'loading-spinner-blue.gif"/> <span>' + (options && options.message ? options.message : 'Loading...') + '</span></div>');
- }
- },
- stopPageLoading: function () {
- $('.page-loading, .page-spinner-bar').remove();
- },
- getViewPort: function () {
- var e = window,
- a = 'inner';
- if (!('innerWidth' in window)) {
- a = 'client';
- e = document.documentElement || document.body;
- }
- return {
- width: e[a + 'Width'],
- height: e[a + 'Height']
- };
- },
- getbasePath: function () {
- return basePath;
- },
- setbasePath: function (path) {
- basePath = path;
- },
- setGlobalImgPath: function (path) {
- imgPath = path;
- },
- getGlobalImgPath: function () {
- return basePath + imgPath;
- },
- setGlobalPluginsPath: function (path) {
- pluginsPath = path;
- },
- getGlobalPluginsPath: function () {
- return basePath + pluginsPath;
- },
- getGlobalCssPath: function () {
- return basePath + cssPath;
- }
- };
- }();
- jQuery(document).ready(function () {
- App.init(); // init metronic core componets
- });
- /*修复IE11 bug*/
- (function () {
- function CustomEvent(event, params) {
- params = params || { bubbles: false, cancelable: false, detail: undefined };
- var evt = document.createEvent('CustomEvent');
- evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
- return evt;
- };
- CustomEvent.prototype = window.Event.prototype;
- window.CustomEvent = CustomEvent;
- })();
|