(function ($) { var cascadeMenu = function (menus) { var html = ""; $.each(menus, function (index, menu) { if (menu.Menus.length === 0) { html += $.format('
  • {5}{4}
  • ', menu.Id, menu.Icon, menu.Name, menu.Category, menu.Order, menu.CategoryName); } else { html += $.format('
  • {6}{5}
      {4}
  • ', menu.Id, menu.Icon, menu.Name, menu.Category, cascadeSubMenu(menu.Menus), menu.Order, menu.CategoryName); } }); return html; }; var cascadeSubMenu = function (menus) { var html = ""; $.each(menus, function (index, menu) { html += $.format('
  • {5}{4}
  • ', menu.Id, menu.Icon, menu.Name, menu.Category, menu.Order, menu.CategoryName); }); return html; }; var setBadge = function (source) { var data = $.extend({ TasksCount: 0, AppExceptionsCount: 0, DbExceptionsCount: 0, MessagesCount: 0, NewUsersCount: 0 }, source); $('#msgHeaderTaskBadge').text(data.TasksCount === 0 ? "" : data.TasksCount); $('#msgHeaderUserBadge').text(data.NewUsersCount === 0 ? "" : data.NewUsersCount); $('#msgHeaderAppBadge').text(data.AppExceptionsCount === 0 ? "" : data.AppExceptionsCount); $('#msgHeaderDbBadge').text(data.DbExceptionsCount === 0 ? "" : data.DbExceptionsCount); $('#msgHeaderMsgBadge').text(data.MessagesCount === 0 ? "" : data.MessagesCount); $('#logoutNoti').text(data.NewUsersCount === 0 ? "" : data.NewUsersCount); }; $.fn.extend({ nestMenu: function (callback) { var $this = $(this); $.bc({ id: 0, url: Menu.url, query: { type: "user" }, method: "post", callback: function (result) { var html = ""; if ($.isArray(result)) html = cascadeMenu(result); $this.find('ol:first').html(html); $this.nestable(); callback(); } }); }, clearWidgetItems: function () { setBadge(false); this.children('.dropdown').each(function () { $(this).children('.dropdown-menu').each(function () { $(this).children('a').remove(); }); }); return this; }, reloadWidget: function () { if (this.length === 0) return this; var that = this; $.bc({ url: Notifications.url, callback: function (result) { that.clearWidgetItems(); if (!result) return; setBadge(result); // tasks $('#msgHeaderTask').text(result.TasksCount); var htmlUserTemplate = '{0}-{2}{1}%
    {1}% 完成
    '; var html = result.Tasks.map(function (u) { return $.format(htmlUserTemplate, u.TaskName, u.TaskProgress, u.AssignDisplayName, u.Id, $.formatUrl('Admin/Tasks')); }).join(''); $(html).insertAfter($('#msgHeaderTaskContent')); // new users $('#msgHeaderUser').text(result.NewUsersCount); htmlUserTemplate = '
    {1}({0})
    {3}
    '; html = result.Users.map(function (u) { return $.format(htmlUserTemplate, u.UserName, u.DisplayName, u.Description, u.Period, $.formatUrl('Admin/Notifications')); }).join(''); $(html).insertAfter($('#msgHeaderUserContent')); // apps $('#msgHeaderApp').text(result.AppExceptionsCount); htmlUserTemplate = '
    {0}
    {2}
    '; html = result.Apps.map(function (u) { return $.format(htmlUserTemplate, u.ExceptionType, u.Message, u.Period, $.formatUrl('Admin/Exceptions')); }).join(''); $(html).insertAfter($('#msgHeaderAppContent')); // dbs $('#msgHeaderDb').text(result.DbExceptionsCount); htmlUserTemplate = '
    {0}
    {2}
    '; html = result.Dbs.map(function (u) { return $.format(htmlUserTemplate, u.ErrorPage, u.Message, u.Period, $.formatUrl('Admin/Exceptions')); }).join(''); $(html).insertAfter($('#msgHeaderDbContent')); // messages $('#msgHeaderMsg').text(result.MessagesCount); htmlUserTemplate = 'avatar{2}{4}{3}'; html = result.Messages.map(function (u) { return $.format(htmlUserTemplate, u.Id, u.FromIcon, u.FromDisplayName, u.Title, u.Period, u.Content, $.formatUrl('Admin/Messages')); }).join(''); $(html).insertAfter($('#msgHeaderMsgContent')); } }); return this; } }); })(jQuery); $(function () { toastr.options = { "closeButton": true, "debug": false, "progressBar": true, "positionClass": "toast-bottom-right", "onclick": null, "showDuration": "600", "hideDuration": "2000", "timeOut": "4000", "extendedTimeOut": "1000", "showEasing": "swing", "hideEasing": "linear", "showMethod": "fadeIn", "hideMethod": "fadeOut" }; var $sidebar = $("#sidebar"); var $sideMenu = $sidebar.find('.sidebar-menu'); var $main = $('#main-content'); var $breadNav = $('#breadNav'); $sideMenu.dcAccordion({ autoExpand: true }); // custom scrollbar if (!$.browser.versions.ios) $("#sidebar").niceScroll({ cursorcolor: "#e8403f", cursorwidth: '3px', background: '#2a3542', spacebarenabled: false, cursorborder: '' }); $("#gotoTop").on('click', function (e) { e.preventDefault(); $('#main-content, .content-body, body').animate({ scrollTop: 0 }, 200); }); // breadcrumb var arch = $sideMenu.find('a.active').last(); if (arch.text() !== "") $breadNav.removeClass('d-none').text(arch.text()); // sidebar scroll animate var top = (arch.offset() || { top: 0 }).top; if (top > 0) { var middle = $('header').outerHeight() + $sidebar.outerHeight() / 2; if (top > middle) $sidebar.animate({ scrollTop: top + arch.outerHeight() / 2 - middle }, 500); } $sidebar.on('click', 'a.dcjq-parent', function () { var o = $(this).offset(); diff = 110 - o.top; if (diff > 0) $sidebar.scrollTo("-=" + Math.abs(diff), 500); else $sidebar.scrollTo("+=" + Math.abs(diff), 500); // resize nicscroll $sidebar.getNiceScroll().resize(); }); $('.sidebar-toggle-box').on('click', function () { if ($sidebar.is(":visible")) { $main.addClass('closed').removeClass('open'); $sidebar.parent().toggleClass('open'); $(window).width() <= 768 ? setTimeout(function () { $sidebar.hide(); }, 400) : $sidebar.hide(); } else { $sidebar.show(); $sidebar.parent().toggleClass('open'); $(window).width() <= 768 ? setTimeout(function () { $main.addClass('open').removeClass('closed'); }, 400) : $main.addClass('open').removeClass('closed'); } }); $('[data-toggle="dropdown"].dropdown-select').dropdown('select'); // tooltip $('[data-toggle="tooltip"]').tooltip(); // load widget data $('.header .nav').reloadWidget().socketHandler({ onmessage: function (e) { var result = JSON.parse(e.data); for (index in result) { var cate = result[index].Category; var msg = result[index].Message; switch (cate) { case "DB": toastr.error(msg, "数据库操作发生异常"); break; case "Users": toastr.success(msg, "新用户注册"); break; case "App": toastr.warning(msg, "应用程序发生异常"); break; } } if (result.length > 0) this.reloadWidget(); } }); });