aboutsummaryrefslogtreecommitdiffstats
path: root/dbdocs/bower/admin-lte/dist/js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--dbdocs/bower/admin-lte/dist/js/app.js772
-rw-r--r--dbdocs/bower/admin-lte/dist/js/app.min.js13
-rw-r--r--dbdocs/bower/admin-lte/dist/js/demo.js340
-rw-r--r--dbdocs/bower/admin-lte/dist/js/pages/dashboard.js210
-rw-r--r--dbdocs/bower/admin-lte/dist/js/pages/dashboard2.js274
5 files changed, 1609 insertions, 0 deletions
diff --git a/dbdocs/bower/admin-lte/dist/js/app.js b/dbdocs/bower/admin-lte/dist/js/app.js
new file mode 100644
index 0000000..8759426
--- /dev/null
+++ b/dbdocs/bower/admin-lte/dist/js/app.js
@@ -0,0 +1,772 @@
+/*! AdminLTE app.js
+ * ================
+ * Main JS application file for AdminLTE v2. This file
+ * should be included in all pages. It controls some layout
+ * options and implements exclusive AdminLTE plugins.
+ *
+ * @Author Almsaeed Studio
+ * @Support <http://www.almsaeedstudio.com>
+ * @Email <abdullah@almsaeedstudio.com>
+ * @version 2.3.8
+ * @license MIT <http://opensource.org/licenses/MIT>
+ */
+
+//Make sure jQuery has been loaded before app.js
+if (typeof jQuery === "undefined") {
+ throw new Error("AdminLTE requires jQuery");
+}
+
+/* AdminLTE
+ *
+ * @type Object
+ * @description $.AdminLTE is the main object for the template's app.
+ * It's used for implementing functions and options related
+ * to the template. Keeping everything wrapped in an object
+ * prevents conflict with other plugins and is a better
+ * way to organize our code.
+ */
+$.AdminLTE = {};
+
+/* --------------------
+ * - AdminLTE Options -
+ * --------------------
+ * Modify these options to suit your implementation
+ */
+$.AdminLTE.options = {
+ //Add slimscroll to navbar menus
+ //This requires you to load the slimscroll plugin
+ //in every page before app.js
+ navbarMenuSlimscroll: true,
+ navbarMenuSlimscrollWidth: "3px", //The width of the scroll bar
+ navbarMenuHeight: "200px", //The height of the inner menu
+ //General animation speed for JS animated elements such as box collapse/expand and
+ //sidebar treeview slide up/down. This options accepts an integer as milliseconds,
+ //'fast', 'normal', or 'slow'
+ animationSpeed: 500,
+ //Sidebar push menu toggle button selector
+ sidebarToggleSelector: "[data-toggle='offcanvas']",
+ //Activate sidebar push menu
+ sidebarPushMenu: true,
+ //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin)
+ sidebarSlimScroll: true,
+ //Enable sidebar expand on hover effect for sidebar mini
+ //This option is forced to true if both the fixed layout and sidebar mini
+ //are used together
+ sidebarExpandOnHover: false,
+ //BoxRefresh Plugin
+ enableBoxRefresh: true,
+ //Bootstrap.js tooltip
+ enableBSToppltip: true,
+ BSTooltipSelector: "[data-toggle='tooltip']",
+ //Enable Fast Click. Fastclick.js creates a more
+ //native touch experience with touch devices. If you
+ //choose to enable the plugin, make sure you load the script
+ //before AdminLTE's app.js
+ enableFastclick: false,
+ //Control Sidebar Tree views
+ enableControlTreeView: true,
+ //Control Sidebar Options
+ enableControlSidebar: true,
+ controlSidebarOptions: {
+ //Which button should trigger the open/close event
+ toggleBtnSelector: "[data-toggle='control-sidebar']",
+ //The sidebar selector
+ selector: ".control-sidebar",
+ //Enable slide over content
+ slide: true
+ },
+ //Box Widget Plugin. Enable this plugin
+ //to allow boxes to be collapsed and/or removed
+ enableBoxWidget: true,
+ //Box Widget plugin options
+ boxWidgetOptions: {
+ boxWidgetIcons: {
+ //Collapse icon
+ collapse: 'fa-minus',
+ //Open icon
+ open: 'fa-plus',
+ //Remove icon
+ remove: 'fa-times'
+ },
+ boxWidgetSelectors: {
+ //Remove button selector
+ remove: '[data-widget="remove"]',
+ //Collapse button selector
+ collapse: '[data-widget="collapse"]'
+ }
+ },
+ //Direct Chat plugin options
+ directChat: {
+ //Enable direct chat by default
+ enable: true,
+ //The button to open and close the chat contacts pane
+ contactToggleSelector: '[data-widget="chat-pane-toggle"]'
+ },
+ //Define the set of colors to use globally around the website
+ colors: {
+ lightBlue: "#3c8dbc",
+ red: "#f56954",
+ green: "#00a65a",
+ aqua: "#00c0ef",
+ yellow: "#f39c12",
+ blue: "#0073b7",
+ navy: "#001F3F",
+ teal: "#39CCCC",
+ olive: "#3D9970",
+ lime: "#01FF70",
+ orange: "#FF851B",
+ fuchsia: "#F012BE",
+ purple: "#8E24AA",
+ maroon: "#D81B60",
+ black: "#222222",
+ gray: "#d2d6de"
+ },
+ //The standard screen sizes that bootstrap uses.
+ //If you change these in the variables.less file, change
+ //them here too.
+ screenSizes: {
+ xs: 480,
+ sm: 768,
+ md: 992,
+ lg: 1200
+ }
+};
+
+/* ------------------
+ * - Implementation -
+ * ------------------
+ * The next block of code implements AdminLTE's
+ * functions and plugins as specified by the
+ * options above.
+ */
+$(function () {
+ "use strict";
+
+ //Fix for IE page transitions
+ $("body").removeClass("hold-transition");
+
+ //Extend options if external options exist
+ if (typeof AdminLTEOptions !== "undefined") {
+ $.extend(true,
+ $.AdminLTE.options,
+ AdminLTEOptions);
+ }
+
+ //Easy access to options
+ var o = $.AdminLTE.options;
+
+ //Set up the object
+ _init();
+
+ //Activate the layout maker
+ $.AdminLTE.layout.activate();
+
+ //Enable sidebar tree view controls
+ if (o.enableControlTreeView) {
+ $.AdminLTE.tree('.sidebar');
+ }
+
+ //Enable control sidebar
+ if (o.enableControlSidebar) {
+ $.AdminLTE.controlSidebar.activate();
+ }
+
+ //Add slimscroll to navbar dropdown
+ if (o.navbarMenuSlimscroll && typeof $.fn.slimscroll != 'undefined') {
+ $(".navbar .menu").slimscroll({
+ height: o.navbarMenuHeight,
+ alwaysVisible: false,
+ size: o.navbarMenuSlimscrollWidth
+ }).css("width", "100%");
+ }
+
+ //Activate sidebar push menu
+ if (o.sidebarPushMenu) {
+ $.AdminLTE.pushMenu.activate(o.sidebarToggleSelector);
+ }
+
+ //Activate Bootstrap tooltip
+ if (o.enableBSToppltip) {
+ $('body').tooltip({
+ selector: o.BSTooltipSelector,
+ container: 'body'
+ });
+ }
+
+ //Activate box widget
+ if (o.enableBoxWidget) {
+ $.AdminLTE.boxWidget.activate();
+ }
+
+ //Activate fast click
+ if (o.enableFastclick && typeof FastClick != 'undefined') {
+ FastClick.attach(document.body);
+ }
+
+ //Activate direct chat widget
+ if (o.directChat.enable) {
+ $(document).on('click', o.directChat.contactToggleSelector, function () {
+ var box = $(this).parents('.direct-chat').first();
+ box.toggleClass('direct-chat-contacts-open');
+ });
+ }
+
+ /*
+ * INITIALIZE BUTTON TOGGLE
+ * ------------------------
+ */
+ $('.btn-group[data-toggle="btn-toggle"]').each(function () {
+ var group = $(this);
+ $(this).find(".btn").on('click', function (e) {
+ group.find(".btn.active").removeClass("active");
+ $(this).addClass("active");
+ e.preventDefault();
+ });
+
+ });
+});
+
+/* ----------------------------------
+ * - Initialize the AdminLTE Object -
+ * ----------------------------------
+ * All AdminLTE functions are implemented below.
+ */
+function _init() {
+ 'use strict';
+ /* Layout
+ * ======
+ * Fixes the layout height in case min-height fails.
+ *
+ * @type Object
+ * @usage $.AdminLTE.layout.activate()
+ * $.AdminLTE.layout.fix()
+ * $.AdminLTE.layout.fixSidebar()
+ */
+ $.AdminLTE.layout = {
+ activate: function () {
+ var _this = this;
+ _this.fix();
+ _this.fixSidebar();
+ $('body, html, .wrapper').css('height', 'auto');
+ $(window, ".wrapper").resize(function () {
+ _this.fix();
+ _this.fixSidebar();
+ });
+ },
+ fix: function () {
+ // Remove overflow from .wrapper if layout-boxed exists
+ $(".layout-boxed > .wrapper").css('overflow', 'hidden');
+ //Get window height and the wrapper height
+ var footer_height = $('.main-footer').outerHeight() || 0;
+ var neg = $('.main-header').outerHeight() + footer_height;
+ var window_height = $(window).height();
+ var sidebar_height = $(".sidebar").height() || 0;
+ //Set the min-height of the content and sidebar based on the
+ //the height of the document.
+ if ($("body").hasClass("fixed")) {
+ $(".content-wrapper, .right-side").css('min-height', window_height - footer_height);
+ } else {
+ var postSetWidth;
+ if (window_height >= sidebar_height) {
+ $(".content-wrapper, .right-side").css('min-height', window_height - neg);
+ postSetWidth = window_height - neg;
+ } else {
+ $(".content-wrapper, .right-side").css('min-height', sidebar_height);
+ postSetWidth = sidebar_height;
+ }
+
+ //Fix for the control sidebar height
+ var controlSidebar = $($.AdminLTE.options.controlSidebarOptions.selector);
+ if (typeof controlSidebar !== "undefined") {
+ if (controlSidebar.height() > postSetWidth)
+ $(".content-wrapper, .right-side").css('min-height', controlSidebar.height());
+ }
+
+ }
+ },
+ fixSidebar: function () {
+ //Make sure the body tag has the .fixed class
+ if (!$("body").hasClass("fixed")) {
+ if (typeof $.fn.slimScroll != 'undefined') {
+ $(".sidebar").slimScroll({destroy: true}).height("auto");
+ }
+ return;
+ } else if (typeof $.fn.slimScroll == 'undefined' && window.console) {
+ window.console.error("Error: the fixed layout requires the slimscroll plugin!");
+ }
+ //Enable slimscroll for fixed layout
+ if ($.AdminLTE.options.sidebarSlimScroll) {
+ if (typeof $.fn.slimScroll != 'undefined') {
+ //Destroy if it exists
+ $(".sidebar").slimScroll({destroy: true}).height("auto");
+ //Add slimscroll
+ $(".sidebar").slimScroll({
+ height: ($(window).height() - $(".main-header").height()) + "px",
+ color: "rgba(0,0,0,0.2)",
+ size: "3px"
+ });
+ }
+ }
+ }
+ };
+
+ /* PushMenu()
+ * ==========
+ * Adds the push menu functionality to the sidebar.
+ *
+ * @type Function
+ * @usage: $.AdminLTE.pushMenu("[data-toggle='offcanvas']")
+ */
+ $.AdminLTE.pushMenu = {
+ activate: function (toggleBtn) {
+ //Get the screen sizes
+ var screenSizes = $.AdminLTE.options.screenSizes;
+
+ //Enable sidebar toggle
+ $(document).on('click', toggleBtn, function (e) {
+ e.preventDefault();
+
+ //Enable sidebar push menu
+ if ($(window).width() > (screenSizes.sm - 1)) {
+ if ($("body").hasClass('sidebar-collapse')) {
+ $("body").removeClass('sidebar-collapse').trigger('expanded.pushMenu');
+ } else {
+ $("body").addClass('sidebar-collapse').trigger('collapsed.pushMenu');
+ }
+ }
+ //Handle sidebar push menu for small screens
+ else {
+ if ($("body").hasClass('sidebar-open')) {
+ $("body").removeClass('sidebar-open').removeClass('sidebar-collapse').trigger('collapsed.pushMenu');
+ } else {
+ $("body").addClass('sidebar-open').trigger('expanded.pushMenu');
+ }
+ }
+ });
+
+ $(".content-wrapper").click(function () {
+ //Enable hide menu when clicking on the content-wrapper on small screens
+ if ($(window).width() <= (screenSizes.sm - 1) && $("body").hasClass("sidebar-open")) {
+ $("body").removeClass('sidebar-open');
+ }
+ });
+
+ //Enable expand on hover for sidebar mini
+ if ($.AdminLTE.options.sidebarExpandOnHover
+ || ($('body').hasClass('fixed')
+ && $('body').hasClass('sidebar-mini'))) {
+ this.expandOnHover();
+ }
+ },
+ expandOnHover: function () {
+ var _this = this;
+ var screenWidth = $.AdminLTE.options.screenSizes.sm - 1;
+ //Expand sidebar on hover
+ $('.main-sidebar').hover(function () {
+ if ($('body').hasClass('sidebar-mini')
+ && $("body").hasClass('sidebar-collapse')
+ && $(window).width() > screenWidth) {
+ _this.expand();
+ }
+ }, function () {
+ if ($('body').hasClass('sidebar-mini')
+ && $('body').hasClass('sidebar-expanded-on-hover')
+ && $(window).width() > screenWidth) {
+ _this.collapse();
+ }
+ });
+ },
+ expand: function () {
+ $("body").removeClass('sidebar-collapse').addClass('sidebar-expanded-on-hover');
+ },
+ collapse: function () {
+ if ($('body').hasClass('sidebar-expanded-on-hover')) {
+ $('body').removeClass('sidebar-expanded-on-hover').addClass('sidebar-collapse');
+ }
+ }
+ };
+
+ /* Tree()
+ * ======
+ * Converts the sidebar into a multilevel
+ * tree view menu.
+ *
+ * @type Function
+ * @Usage: $.AdminLTE.tree('.sidebar')
+ */
+ $.AdminLTE.tree = function (menu) {
+ var _this = this;
+ var animationSpeed = $.AdminLTE.options.animationSpeed;
+ $(document).off('click', menu + ' li a')
+ .on('click', menu + ' li a', function (e) {
+ //Get the clicked link and the next element
+ var $this = $(this);
+ var checkElement = $this.next();
+
+ //Check if the next element is a menu and is visible
+ if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible')) && (!$('body').hasClass('sidebar-collapse'))) {
+ //Close the menu
+ checkElement.slideUp(animationSpeed, function () {
+ checkElement.removeClass('menu-open');
+ //Fix the layout in case the sidebar stretches over the height of the window
+ //_this.layout.fix();
+ });
+ checkElement.parent("li").removeClass("active");
+ }
+ //If the menu is not visible
+ else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) {
+ //Get the parent menu
+ var parent = $this.parents('ul').first();
+ //Close all open menus within the parent
+ var ul = parent.find('ul:visible').slideUp(animationSpeed);
+ //Remove the menu-open class from the parent
+ ul.removeClass('menu-open');
+ //Get the parent li
+ var parent_li = $this.parent("li");
+
+ //Open the target menu and add the menu-open class
+ checkElement.slideDown(animationSpeed, function () {
+ //Add the class active to the parent li
+ checkElement.addClass('menu-open');
+ parent.find('li.active').removeClass('active');
+ parent_li.addClass('active');
+ //Fix the layout in case the sidebar stretches over the height of the window
+ _this.layout.fix();
+ });
+ }
+ //if this isn't a link, prevent the page from being redirected
+ if (checkElement.is('.treeview-menu')) {
+ e.preventDefault();
+ }
+ });
+ };
+
+ /* ControlSidebar
+ * ==============
+ * Adds functionality to the right sidebar
+ *
+ * @type Object
+ * @usage $.AdminLTE.controlSidebar.activate(options)
+ */
+ $.AdminLTE.controlSidebar = {
+ //instantiate the object
+ activate: function () {
+ //Get the object
+ var _this = this;
+ //Update options
+ var o = $.AdminLTE.options.controlSidebarOptions;
+ //Get the sidebar
+ var sidebar = $(o.selector);
+ //The toggle button
+ var btn = $(o.toggleBtnSelector);
+
+ //Listen to the click event
+ btn.on('click', function (e) {
+ e.preventDefault();
+ //If the sidebar is not open
+ if (!sidebar.hasClass('control-sidebar-open')
+ && !$('body').hasClass('control-sidebar-open')) {
+ //Open the sidebar
+ _this.open(sidebar, o.slide);
+ } else {
+ _this.close(sidebar, o.slide);
+ }
+ });
+
+ //If the body has a boxed layout, fix the sidebar bg position
+ var bg = $(".control-sidebar-bg");
+ _this._fix(bg);
+
+ //If the body has a fixed layout, make the control sidebar fixed
+ if ($('body').hasClass('fixed')) {
+ _this._fixForFixed(sidebar);
+ } else {
+ //If the content height is less than the sidebar's height, force max height
+ if ($('.content-wrapper, .right-side').height() < sidebar.height()) {
+ _this._fixForContent(sidebar);
+ }
+ }
+ },
+ //Open the control sidebar
+ open: function (sidebar, slide) {
+ //Slide over content
+ if (slide) {
+ sidebar.addClass('control-sidebar-open');
+ } else {
+ //Push the content by adding the open class to the body instead
+ //of the sidebar itself
+ $('body').addClass('control-sidebar-open');
+ }
+ },
+ //Close the control sidebar
+ close: function (sidebar, slide) {
+ if (slide) {
+ sidebar.removeClass('control-sidebar-open');
+ } else {
+ $('body').removeClass('control-sidebar-open');
+ }
+ },
+ _fix: function (sidebar) {
+ var _this = this;
+ if ($("body").hasClass('layout-boxed')) {
+ sidebar.css('position', 'absolute');
+ sidebar.height($(".wrapper").height());
+ if (_this.hasBindedResize) {
+ return;
+ }
+ $(window).resize(function () {
+ _this._fix(sidebar);
+ });
+ _this.hasBindedResize = true;
+ } else {
+ sidebar.css({
+ 'position': 'fixed',
+ 'height': 'auto'
+ });
+ }
+ },
+ _fixForFixed: function (sidebar) {
+ sidebar.css({
+ 'position': 'fixed',
+ 'max-height': '100%',
+ 'overflow': 'auto',
+ 'padding-bottom': '50px'
+ });
+ },
+ _fixForContent: function (sidebar) {
+ $(".content-wrapper, .right-side").css('min-height', sidebar.height());
+ }
+ };
+
+ /* BoxWidget
+ * =========
+ * BoxWidget is a plugin to handle collapsing and
+ * removing boxes from the screen.
+ *
+ * @type Object
+ * @usage $.AdminLTE.boxWidget.activate()
+ * Set all your options in the main $.AdminLTE.options object
+ */
+ $.AdminLTE.boxWidget = {
+ selectors: $.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors,
+ icons: $.AdminLTE.options.boxWidgetOptions.boxWidgetIcons,
+ animationSpeed: $.AdminLTE.options.animationSpeed,
+ activate: function (_box) {
+ var _this = this;
+ if (!_box) {
+ _box = document; // activate all boxes per default
+ }
+ //Listen for collapse event triggers
+ $(_box).on('click', _this.selectors.collapse, function (e) {
+ e.preventDefault();
+ _this.collapse($(this));
+ });
+
+ //Listen for remove event triggers
+ $(_box).on('click', _this.selectors.remove, function (e) {
+ e.preventDefault();
+ _this.remove($(this));
+ });
+ },
+ collapse: function (element) {
+ var _this = this;
+ //Find the box parent
+ var box = element.parents(".box").first();
+ //Find the body and the footer
+ var box_content = box.find("> .box-body, > .box-footer, > form >.box-body, > form > .box-footer");
+ if (!box.hasClass("collapsed-box")) {
+ //Convert minus into plus
+ element.children(":first")
+ .removeClass(_this.icons.collapse)
+ .addClass(_this.icons.open);
+ //Hide the content
+ box_content.slideUp(_this.animationSpeed, function () {
+ box.addClass("collapsed-box");
+ });
+ } else {
+ //Convert plus into minus
+ element.children(":first")
+ .removeClass(_this.icons.open)
+ .addClass(_this.icons.collapse);
+ //Show the content
+ box_content.slideDown(_this.animationSpeed, function () {
+ box.removeClass("collapsed-box");
+ });
+ }
+ },
+ remove: function (element) {
+ //Find the box parent
+ var box = element.parents(".box").first();
+ box.slideUp(this.animationSpeed);
+ }
+ };
+}
+
+/* ------------------
+ * - Custom Plugins -
+ * ------------------
+ * All custom plugins are defined below.
+ */
+
+/*
+ * BOX REFRESH BUTTON
+ * ------------------
+ * This is a custom plugin to use with the component BOX. It allows you to add
+ * a refresh button to the box. It converts the box's state to a loading state.
+ *
+ * @type plugin
+ * @usage $("#box-widget").boxRefresh( options );
+ */
+(function ($) {
+
+ "use strict";
+
+ $.fn.boxRefresh = function (options) {
+
+ // Render options
+ var settings = $.extend({
+ //Refresh button selector
+ trigger: ".refresh-btn",
+ //File source to be loaded (e.g: ajax/src.php)
+ source: "",
+ //Callbacks
+ onLoadStart: function (box) {
+ return box;
+ }, //Right after the button has been clicked
+ onLoadDone: function (box) {
+ return box;
+ } //When the source has been loaded
+
+ }, options);
+
+ //The overlay
+ var overlay = $('<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>');
+
+ return this.each(function () {
+ //if a source is specified
+ if (settings.source === "") {
+ if (window.console) {
+ window.console.log("Please specify a source first - boxRefresh()");
+ }
+ return;
+ }
+ //the box
+ var box = $(this);
+ //the button
+ var rBtn = box.find(settings.trigger).first();
+
+ //On trigger click
+ rBtn.on('click', function (e) {
+ e.preventDefault();
+ //Add loading overlay
+ start(box);
+
+ //Perform ajax call
+ box.find(".box-body").load(settings.source, function () {
+ done(box);
+ });
+ });
+ });
+
+ function start(box) {
+ //Add overlay and loading img
+ box.append(overlay);
+
+ settings.onLoadStart.call(box);
+ }
+
+ function done(box) {
+ //Remove overlay and loading img
+ box.find(overlay).remove();
+
+ settings.onLoadDone.call(box);
+ }
+
+ };
+
+})(jQuery);
+
+/*
+ * EXPLICIT BOX CONTROLS
+ * -----------------------
+ * This is a custom plugin to use with the component BOX. It allows you to activate
+ * a box inserted in the DOM after the app.js was loaded, toggle and remove box.
+ *
+ * @type plugin
+ * @usage $("#box-widget").activateBox();
+ * @usage $("#box-widget").toggleBox();
+ * @usage $("#box-widget").removeBox();
+ */
+(function ($) {
+
+ 'use strict';
+
+ $.fn.activateBox = function () {
+ $.AdminLTE.boxWidget.activate(this);
+ };
+
+ $.fn.toggleBox = function () {
+ var button = $($.AdminLTE.boxWidget.selectors.collapse, this);
+ $.AdminLTE.boxWidget.collapse(button);
+ };
+
+ $.fn.removeBox = function () {
+ var button = $($.AdminLTE.boxWidget.selectors.remove, this);
+ $.AdminLTE.boxWidget.remove(button);
+ };
+
+})(jQuery);
+
+/*
+ * TODO LIST CUSTOM PLUGIN
+ * -----------------------
+ * This plugin depends on iCheck plugin for checkbox and radio inputs
+ *
+ * @type plugin
+ * @usage $("#todo-widget").todolist( options );
+ */
+(function ($) {
+
+ 'use strict';
+
+ $.fn.todolist = function (options) {
+ // Render options
+ var settings = $.extend({
+ //When the user checks the input
+ onCheck: function (ele) {
+ return ele;
+ },
+ //When the user unchecks the input
+ onUncheck: function (ele) {
+ return ele;
+ }
+ }, options);
+
+ return this.each(function () {
+
+ if (typeof $.fn.iCheck != 'undefined') {
+ $('input', this).on('ifChecked', function () {
+ var ele = $(this).parents("li").first();
+ ele.toggleClass("done");
+ settings.onCheck.call(ele);
+ });
+
+ $('input', this).on('ifUnchecked', function () {
+ var ele = $(this).parents("li").first();
+ ele.toggleClass("done");
+ settings.onUncheck.call(ele);
+ });
+ } else {
+ $('input', this).on('change', function () {
+ var ele = $(this).parents("li").first();
+ ele.toggleClass("done");
+ if ($('input', ele).is(":checked")) {
+ settings.onCheck.call(ele);
+ } else {
+ settings.onUncheck.call(ele);
+ }
+ });
+ }
+ });
+ };
+}(jQuery));
diff --git a/dbdocs/bower/admin-lte/dist/js/app.min.js b/dbdocs/bower/admin-lte/dist/js/app.min.js
new file mode 100644
index 0000000..4851def
--- /dev/null
+++ b/dbdocs/bower/admin-lte/dist/js/app.min.js
@@ -0,0 +1,13 @@
+/*! AdminLTE app.js
+ * ================
+ * Main JS application file for AdminLTE v2. This file
+ * should be included in all pages. It controls some layout
+ * options and implements exclusive AdminLTE plugins.
+ *
+ * @Author Almsaeed Studio
+ * @Support <http://www.almsaeedstudio.com>
+ * @Email <abdullah@almsaeedstudio.com>
+ * @version 2.3.8
+ * @license MIT <http://opensource.org/licenses/MIT>
+ */
+function _init(){"use strict";$.AdminLTE.layout={activate:function(){var a=this;a.fix(),a.fixSidebar(),$("body, html, .wrapper").css("height","auto"),$(window,".wrapper").resize(function(){a.fix(),a.fixSidebar()})},fix:function(){$(".layout-boxed > .wrapper").css("overflow","hidden");var a=$(".main-footer").outerHeight()||0,b=$(".main-header").outerHeight()+a,c=$(window).height(),d=$(".sidebar").height()||0;if($("body").hasClass("fixed"))$(".content-wrapper, .right-side").css("min-height",c-a);else{var e;c>=d?($(".content-wrapper, .right-side").css("min-height",c-b),e=c-b):($(".content-wrapper, .right-side").css("min-height",d),e=d);var f=$($.AdminLTE.options.controlSidebarOptions.selector);"undefined"!=typeof f&&f.height()>e&&$(".content-wrapper, .right-side").css("min-height",f.height())}},fixSidebar:function(){return $("body").hasClass("fixed")?("undefined"==typeof $.fn.slimScroll&&window.console&&window.console.error("Error: the fixed layout requires the slimscroll plugin!"),void($.AdminLTE.options.sidebarSlimScroll&&"undefined"!=typeof $.fn.slimScroll&&($(".sidebar").slimScroll({destroy:!0}).height("auto"),$(".sidebar").slimScroll({height:$(window).height()-$(".main-header").height()+"px",color:"rgba(0,0,0,0.2)",size:"3px"})))):void("undefined"!=typeof $.fn.slimScroll&&$(".sidebar").slimScroll({destroy:!0}).height("auto"))}},$.AdminLTE.pushMenu={activate:function(a){var b=$.AdminLTE.options.screenSizes;$(document).on("click",a,function(a){a.preventDefault(),$(window).width()>b.sm-1?$("body").hasClass("sidebar-collapse")?$("body").removeClass("sidebar-collapse").trigger("expanded.pushMenu"):$("body").addClass("sidebar-collapse").trigger("collapsed.pushMenu"):$("body").hasClass("sidebar-open")?$("body").removeClass("sidebar-open").removeClass("sidebar-collapse").trigger("collapsed.pushMenu"):$("body").addClass("sidebar-open").trigger("expanded.pushMenu")}),$(".content-wrapper").click(function(){$(window).width()<=b.sm-1&&$("body").hasClass("sidebar-open")&&$("body").removeClass("sidebar-open")}),($.AdminLTE.options.sidebarExpandOnHover||$("body").hasClass("fixed")&&$("body").hasClass("sidebar-mini"))&&this.expandOnHover()},expandOnHover:function(){var a=this,b=$.AdminLTE.options.screenSizes.sm-1;$(".main-sidebar").hover(function(){$("body").hasClass("sidebar-mini")&&$("body").hasClass("sidebar-collapse")&&$(window).width()>b&&a.expand()},function(){$("body").hasClass("sidebar-mini")&&$("body").hasClass("sidebar-expanded-on-hover")&&$(window).width()>b&&a.collapse()})},expand:function(){$("body").removeClass("sidebar-collapse").addClass("sidebar-expanded-on-hover")},collapse:function(){$("body").hasClass("sidebar-expanded-on-hover")&&$("body").removeClass("sidebar-expanded-on-hover").addClass("sidebar-collapse")}},$.AdminLTE.tree=function(a){var b=this,c=$.AdminLTE.options.animationSpeed;$(document).off("click",a+" li a").on("click",a+" li a",function(a){var d=$(this),e=d.next();if(e.is(".treeview-menu")&&e.is(":visible")&&!$("body").hasClass("sidebar-collapse"))e.slideUp(c,function(){e.removeClass("menu-open")}),e.parent("li").removeClass("active");else if(e.is(".treeview-menu")&&!e.is(":visible")){var f=d.parents("ul").first(),g=f.find("ul:visible").slideUp(c);g.removeClass("menu-open");var h=d.parent("li");e.slideDown(c,function(){e.addClass("menu-open"),f.find("li.active").removeClass("active"),h.addClass("active"),b.layout.fix()})}e.is(".treeview-menu")&&a.preventDefault()})},$.AdminLTE.controlSidebar={activate:function(){var a=this,b=$.AdminLTE.options.controlSidebarOptions,c=$(b.selector),d=$(b.toggleBtnSelector);d.on("click",function(d){d.preventDefault(),c.hasClass("control-sidebar-open")||$("body").hasClass("control-sidebar-open")?a.close(c,b.slide):a.open(c,b.slide)});var e=$(".control-sidebar-bg");a._fix(e),$("body").hasClass("fixed")?a._fixForFixed(c):$(".content-wrapper, .right-side").height()<c.height()&&a._fixForContent(c)},open:function(a,b){b?a.addClass("control-sidebar-open"):$("body").addClass("control-sidebar-open")},close:function(a,b){b?a.removeClass("control-sidebar-open"):$("body").removeClass("control-sidebar-open")},_fix:function(a){var b=this;if($("body").hasClass("layout-boxed")){if(a.css("position","absolute"),a.height($(".wrapper").height()),b.hasBindedResize)return;$(window).resize(function(){b._fix(a)}),b.hasBindedResize=!0}else a.css({position:"fixed",height:"auto"})},_fixForFixed:function(a){a.css({position:"fixed","max-height":"100%",overflow:"auto","padding-bottom":"50px"})},_fixForContent:function(a){$(".content-wrapper, .right-side").css("min-height",a.height())}},$.AdminLTE.boxWidget={selectors:$.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors,icons:$.AdminLTE.options.boxWidgetOptions.boxWidgetIcons,animationSpeed:$.AdminLTE.options.animationSpeed,activate:function(a){var b=this;a||(a=document),$(a).on("click",b.selectors.collapse,function(a){a.preventDefault(),b.collapse($(this))}),$(a).on("click",b.selectors.remove,function(a){a.preventDefault(),b.remove($(this))})},collapse:function(a){var b=this,c=a.parents(".box").first(),d=c.find("> .box-body, > .box-footer, > form >.box-body, > form > .box-footer");c.hasClass("collapsed-box")?(a.children(":first").removeClass(b.icons.open).addClass(b.icons.collapse),d.slideDown(b.animationSpeed,function(){c.removeClass("collapsed-box")})):(a.children(":first").removeClass(b.icons.collapse).addClass(b.icons.open),d.slideUp(b.animationSpeed,function(){c.addClass("collapsed-box")}))},remove:function(a){var b=a.parents(".box").first();b.slideUp(this.animationSpeed)}}}if("undefined"==typeof jQuery)throw new Error("AdminLTE requires jQuery");$.AdminLTE={},$.AdminLTE.options={navbarMenuSlimscroll:!0,navbarMenuSlimscrollWidth:"3px",navbarMenuHeight:"200px",animationSpeed:500,sidebarToggleSelector:"[data-toggle='offcanvas']",sidebarPushMenu:!0,sidebarSlimScroll:!0,sidebarExpandOnHover:!1,enableBoxRefresh:!0,enableBSToppltip:!0,BSTooltipSelector:"[data-toggle='tooltip']",enableFastclick:!1,enableControlTreeView:!0,enableControlSidebar:!0,controlSidebarOptions:{toggleBtnSelector:"[data-toggle='control-sidebar']",selector:".control-sidebar",slide:!0},enableBoxWidget:!0,boxWidgetOptions:{boxWidgetIcons:{collapse:"fa-minus",open:"fa-plus",remove:"fa-times"},boxWidgetSelectors:{remove:'[data-widget="remove"]',collapse:'[data-widget="collapse"]'}},directChat:{enable:!0,contactToggleSelector:'[data-widget="chat-pane-toggle"]'},colors:{lightBlue:"#3c8dbc",red:"#f56954",green:"#00a65a",aqua:"#00c0ef",yellow:"#f39c12",blue:"#0073b7",navy:"#001F3F",teal:"#39CCCC",olive:"#3D9970",lime:"#01FF70",orange:"#FF851B",fuchsia:"#F012BE",purple:"#8E24AA",maroon:"#D81B60",black:"#222222",gray:"#d2d6de"},screenSizes:{xs:480,sm:768,md:992,lg:1200}},$(function(){"use strict";$("body").removeClass("hold-transition"),"undefined"!=typeof AdminLTEOptions&&$.extend(!0,$.AdminLTE.options,AdminLTEOptions);var a=$.AdminLTE.options;_init(),$.AdminLTE.layout.activate(),a.enableControlTreeView&&$.AdminLTE.tree(".sidebar"),a.enableControlSidebar&&$.AdminLTE.controlSidebar.activate(),a.navbarMenuSlimscroll&&"undefined"!=typeof $.fn.slimscroll&&$(".navbar .menu").slimscroll({height:a.navbarMenuHeight,alwaysVisible:!1,size:a.navbarMenuSlimscrollWidth}).css("width","100%"),a.sidebarPushMenu&&$.AdminLTE.pushMenu.activate(a.sidebarToggleSelector),a.enableBSToppltip&&$("body").tooltip({selector:a.BSTooltipSelector,container:"body"}),a.enableBoxWidget&&$.AdminLTE.boxWidget.activate(),a.enableFastclick&&"undefined"!=typeof FastClick&&FastClick.attach(document.body),a.directChat.enable&&$(document).on("click",a.directChat.contactToggleSelector,function(){var a=$(this).parents(".direct-chat").first();a.toggleClass("direct-chat-contacts-open")}),$('.btn-group[data-toggle="btn-toggle"]').each(function(){var a=$(this);$(this).find(".btn").on("click",function(b){a.find(".btn.active").removeClass("active"),$(this).addClass("active"),b.preventDefault()})})}),function(a){"use strict";a.fn.boxRefresh=function(b){function c(a){a.append(f),e.onLoadStart.call(a)}function d(a){a.find(f).remove(),e.onLoadDone.call(a)}var e=a.extend({trigger:".refresh-btn",source:"",onLoadStart:function(a){return a},onLoadDone:function(a){return a}},b),f=a('<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>');return this.each(function(){if(""===e.source)return void(window.console&&window.console.log("Please specify a source first - boxRefresh()"));var b=a(this),f=b.find(e.trigger).first();f.on("click",function(a){a.preventDefault(),c(b),b.find(".box-body").load(e.source,function(){d(b)})})})}}(jQuery),function(a){"use strict";a.fn.activateBox=function(){a.AdminLTE.boxWidget.activate(this)},a.fn.toggleBox=function(){var b=a(a.AdminLTE.boxWidget.selectors.collapse,this);a.AdminLTE.boxWidget.collapse(b)},a.fn.removeBox=function(){var b=a(a.AdminLTE.boxWidget.selectors.remove,this);a.AdminLTE.boxWidget.remove(b)}}(jQuery),function(a){"use strict";a.fn.todolist=function(b){var c=a.extend({onCheck:function(a){return a},onUncheck:function(a){return a}},b);return this.each(function(){"undefined"!=typeof a.fn.iCheck?(a("input",this).on("ifChecked",function(){var b=a(this).parents("li").first();b.toggleClass("done"),c.onCheck.call(b)}),a("input",this).on("ifUnchecked",function(){var b=a(this).parents("li").first();b.toggleClass("done"),c.onUncheck.call(b)})):a("input",this).on("change",function(){var b=a(this).parents("li").first();b.toggleClass("done"),a("input",b).is(":checked")?c.onCheck.call(b):c.onUncheck.call(b)})})}}(jQuery); \ No newline at end of file
diff --git a/dbdocs/bower/admin-lte/dist/js/demo.js b/dbdocs/bower/admin-lte/dist/js/demo.js
new file mode 100644
index 0000000..b18b9bb
--- /dev/null
+++ b/dbdocs/bower/admin-lte/dist/js/demo.js
@@ -0,0 +1,340 @@
+/**
+ * AdminLTE Demo Menu
+ * ------------------
+ * You should not use this file in production.
+ * This file is for demo purposes only.
+ */
+(function ($, AdminLTE) {
+
+ "use strict";
+
+ /**
+ * List of all the available skins
+ *
+ * @type Array
+ */
+ var my_skins = [
+ "skin-blue",
+ "skin-black",
+ "skin-red",
+ "skin-yellow",
+ "skin-purple",
+ "skin-green",
+ "skin-blue-light",
+ "skin-black-light",
+ "skin-red-light",
+ "skin-yellow-light",
+ "skin-purple-light",
+ "skin-green-light"
+ ];
+
+ //Create the new tab
+ var tab_pane = $("<div />", {
+ "id": "control-sidebar-theme-demo-options-tab",
+ "class": "tab-pane active"
+ });
+
+ //Create the tab button
+ var tab_button = $("<li />", {"class": "active"})
+ .html("<a href='#control-sidebar-theme-demo-options-tab' data-toggle='tab'>"
+ + "<i class='fa fa-wrench'></i>"
+ + "</a>");
+
+ //Add the tab button to the right sidebar tabs
+ $("[href='#control-sidebar-home-tab']")
+ .parent()
+ .before(tab_button);
+
+ //Create the menu
+ var demo_settings = $("<div />");
+
+ //Layout options
+ demo_settings.append(
+ "<h4 class='control-sidebar-heading'>"
+ + "Layout Options"
+ + "</h4>"
+ //Fixed layout
+ + "<div class='form-group'>"
+ + "<label class='control-sidebar-subheading'>"
+ + "<input type='checkbox' data-layout='fixed' class='pull-right'/> "
+ + "Fixed layout"
+ + "</label>"
+ + "<p>Activate the fixed layout. You can't use fixed and boxed layouts together</p>"
+ + "</div>"
+ //Boxed layout
+ + "<div class='form-group'>"
+ + "<label class='control-sidebar-subheading'>"
+ + "<input type='checkbox' data-layout='layout-boxed'class='pull-right'/> "
+ + "Boxed Layout"
+ + "</label>"
+ + "<p>Activate the boxed layout</p>"
+ + "</div>"
+ //Sidebar Toggle
+ + "<div class='form-group'>"
+ + "<label class='control-sidebar-subheading'>"
+ + "<input type='checkbox' data-layout='sidebar-collapse' class='pull-right'/> "
+ + "Toggle Sidebar"
+ + "</label>"
+ + "<p>Toggle the left sidebar's state (open or collapse)</p>"
+ + "</div>"
+ //Sidebar mini expand on hover toggle
+ + "<div class='form-group'>"
+ + "<label class='control-sidebar-subheading'>"
+ + "<input type='checkbox' data-enable='expandOnHover' class='pull-right'/> "
+ + "Sidebar Expand on Hover"
+ + "</label>"
+ + "<p>Let the sidebar mini expand on hover</p>"
+ + "</div>"
+ //Control Sidebar Toggle
+ + "<div class='form-group'>"
+ + "<label class='control-sidebar-subheading'>"
+ + "<input type='checkbox' data-controlsidebar='control-sidebar-open' class='pull-right'/> "
+ + "Toggle Right Sidebar Slide"
+ + "</label>"
+ + "<p>Toggle between slide over content and push content effects</p>"
+ + "</div>"
+ //Control Sidebar Skin Toggle
+ + "<div class='form-group'>"
+ + "<label class='control-sidebar-subheading'>"
+ + "<input type='checkbox' data-sidebarskin='toggle' class='pull-right'/> "
+ + "Toggle Right Sidebar Skin"
+ + "</label>"
+ + "<p>Toggle between dark and light skins for the right sidebar</p>"
+ + "</div>"
+ );
+ var skins_list = $("<ul />", {"class": 'list-unstyled clearfix'});
+
+ //Dark sidebar skins
+ var skin_blue =
+ $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
+ .append("<a href='javascript:void(0);' data-skin='skin-blue' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 7px; background: #367fa9;'></span><span class='bg-light-blue' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222d32;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
+ + "</a>"
+ + "<p class='text-center no-margin'>Blue</p>");
+ skins_list.append(skin_blue);
+ var skin_black =
+ $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
+ .append("<a href='javascript:void(0);' data-skin='skin-black' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
+ + "<div style='box-shadow: 0 0 2px rgba(0,0,0,0.1)' class='clearfix'><span style='display:block; width: 20%; float: left; height: 7px; background: #fefefe;'></span><span style='display:block; width: 80%; float: left; height: 7px; background: #fefefe;'></span></div>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
+ + "</a>"
+ + "<p class='text-center no-margin'>Black</p>");
+ skins_list.append(skin_black);
+ var skin_purple =
+ $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
+ .append("<a href='javascript:void(0);' data-skin='skin-purple' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-purple-active'></span><span class='bg-purple' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222d32;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
+ + "</a>"
+ + "<p class='text-center no-margin'>Purple</p>");
+ skins_list.append(skin_purple);
+ var skin_green =
+ $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
+ .append("<a href='javascript:void(0);' data-skin='skin-green' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-green-active'></span><span class='bg-green' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222d32;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
+ + "</a>"
+ + "<p class='text-center no-margin'>Green</p>");
+ skins_list.append(skin_green);
+ var skin_red =
+ $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
+ .append("<a href='javascript:void(0);' data-skin='skin-red' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-red-active'></span><span class='bg-red' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222d32;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
+ + "</a>"
+ + "<p class='text-center no-margin'>Red</p>");
+ skins_list.append(skin_red);
+ var skin_yellow =
+ $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
+ .append("<a href='javascript:void(0);' data-skin='skin-yellow' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-yellow-active'></span><span class='bg-yellow' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222d32;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
+ + "</a>"
+ + "<p class='text-center no-margin'>Yellow</p>");
+ skins_list.append(skin_yellow);
+
+ //Light sidebar skins
+ var skin_blue_light =
+ $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
+ .append("<a href='javascript:void(0);' data-skin='skin-blue-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 7px; background: #367fa9;'></span><span class='bg-light-blue' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
+ + "</a>"
+ + "<p class='text-center no-margin' style='font-size: 12px'>Blue Light</p>");
+ skins_list.append(skin_blue_light);
+ var skin_black_light =
+ $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
+ .append("<a href='javascript:void(0);' data-skin='skin-black-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
+ + "<div style='box-shadow: 0 0 2px rgba(0,0,0,0.1)' class='clearfix'><span style='display:block; width: 20%; float: left; height: 7px; background: #fefefe;'></span><span style='display:block; width: 80%; float: left; height: 7px; background: #fefefe;'></span></div>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
+ + "</a>"
+ + "<p class='text-center no-margin' style='font-size: 12px'>Black Light</p>");
+ skins_list.append(skin_black_light);
+ var skin_purple_light =
+ $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
+ .append("<a href='javascript:void(0);' data-skin='skin-purple-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-purple-active'></span><span class='bg-purple' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
+ + "</a>"
+ + "<p class='text-center no-margin' style='font-size: 12px'>Purple Light</p>");
+ skins_list.append(skin_purple_light);
+ var skin_green_light =
+ $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
+ .append("<a href='javascript:void(0);' data-skin='skin-green-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-green-active'></span><span class='bg-green' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
+ + "</a>"
+ + "<p class='text-center no-margin' style='font-size: 12px'>Green Light</p>");
+ skins_list.append(skin_green_light);
+ var skin_red_light =
+ $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
+ .append("<a href='javascript:void(0);' data-skin='skin-red-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-red-active'></span><span class='bg-red' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
+ + "</a>"
+ + "<p class='text-center no-margin' style='font-size: 12px'>Red Light</p>");
+ skins_list.append(skin_red_light);
+ var skin_yellow_light =
+ $("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
+ .append("<a href='javascript:void(0);' data-skin='skin-yellow-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-yellow-active'></span><span class='bg-yellow' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
+ + "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
+ + "</a>"
+ + "<p class='text-center no-margin' style='font-size: 12px;'>Yellow Light</p>");
+ skins_list.append(skin_yellow_light);
+
+ demo_settings.append("<h4 class='control-sidebar-heading'>Skins</h4>");
+ demo_settings.append(skins_list);
+
+ tab_pane.append(demo_settings);
+ $("#control-sidebar-home-tab").after(tab_pane);
+
+ setup();
+
+ /**
+ * Toggles layout classes
+ *
+ * @param String cls the layout class to toggle
+ * @returns void
+ */
+ function change_layout(cls) {
+ $("body").toggleClass(cls);
+ AdminLTE.layout.fixSidebar();
+ //Fix the problem with right sidebar and layout boxed
+ if (cls == "layout-boxed")
+ AdminLTE.controlSidebar._fix($(".control-sidebar-bg"));
+ if ($('body').hasClass('fixed') && cls == 'fixed') {
+ AdminLTE.pushMenu.expandOnHover();
+ AdminLTE.layout.activate();
+ }
+ AdminLTE.controlSidebar._fix($(".control-sidebar-bg"));
+ AdminLTE.controlSidebar._fix($(".control-sidebar"));
+ }
+
+ /**
+ * Replaces the old skin with the new skin
+ * @param String cls the new skin class
+ * @returns Boolean false to prevent link's default action
+ */
+ function change_skin(cls) {
+ $.each(my_skins, function (i) {
+ $("body").removeClass(my_skins[i]);
+ });
+
+ $("body").addClass(cls);
+ store('skin', cls);
+ return false;
+ }
+
+ /**
+ * Store a new settings in the browser
+ *
+ * @param String name Name of the setting
+ * @param String val Value of the setting
+ * @returns void
+ */
+ function store(name, val) {
+ if (typeof (Storage) !== "undefined") {
+ localStorage.setItem(name, val);
+ } else {
+ window.alert('Please use a modern browser to properly view this template!');
+ }
+ }
+
+ /**
+ * Get a prestored setting
+ *
+ * @param String name Name of of the setting
+ * @returns String The value of the setting | null
+ */
+ function get(name) {
+ if (typeof (Storage) !== "undefined") {
+ return localStorage.getItem(name);
+ } else {
+ window.alert('Please use a modern browser to properly view this template!');
+ }
+ }
+
+ /**
+ * Retrieve default settings and apply them to the template
+ *
+ * @returns void
+ */
+ function setup() {
+ var tmp = get('skin');
+ if (tmp && $.inArray(tmp, my_skins))
+ change_skin(tmp);
+
+ //Add the change skin listener
+ $("[data-skin]").on('click', function (e) {
+ if($(this).hasClass('knob'))
+ return;
+ e.preventDefault();
+ change_skin($(this).data('skin'));
+ });
+
+ //Add the layout manager
+ $("[data-layout]").on('click', function () {
+ change_layout($(this).data('layout'));
+ });
+
+ $("[data-controlsidebar]").on('click', function () {
+ change_layout($(this).data('controlsidebar'));
+ var slide = !AdminLTE.options.controlSidebarOptions.slide;
+ AdminLTE.options.controlSidebarOptions.slide = slide;
+ if (!slide)
+ $('.control-sidebar').removeClass('control-sidebar-open');
+ });
+
+ $("[data-sidebarskin='toggle']").on('click', function () {
+ var sidebar = $(".control-sidebar");
+ if (sidebar.hasClass("control-sidebar-dark")) {
+ sidebar.removeClass("control-sidebar-dark")
+ sidebar.addClass("control-sidebar-light")
+ } else {
+ sidebar.removeClass("control-sidebar-light")
+ sidebar.addClass("control-sidebar-dark")
+ }
+ });
+
+ $("[data-enable='expandOnHover']").on('click', function () {
+ $(this).attr('disabled', true);
+ AdminLTE.pushMenu.expandOnHover();
+ if (!$('body').hasClass('sidebar-collapse'))
+ $("[data-layout='sidebar-collapse']").click();
+ });
+
+ // Reset options
+ if ($('body').hasClass('fixed')) {
+ $("[data-layout='fixed']").attr('checked', 'checked');
+ }
+ if ($('body').hasClass('layout-boxed')) {
+ $("[data-layout='layout-boxed']").attr('checked', 'checked');
+ }
+ if ($('body').hasClass('sidebar-collapse')) {
+ $("[data-layout='sidebar-collapse']").attr('checked', 'checked');
+ }
+
+ }
+})(jQuery, $.AdminLTE);
diff --git a/dbdocs/bower/admin-lte/dist/js/pages/dashboard.js b/dbdocs/bower/admin-lte/dist/js/pages/dashboard.js
new file mode 100644
index 0000000..0f7c007
--- /dev/null
+++ b/dbdocs/bower/admin-lte/dist/js/pages/dashboard.js
@@ -0,0 +1,210 @@
+/*
+ * Author: Abdullah A Almsaeed
+ * Date: 4 Jan 2014
+ * Description:
+ * This is a demo file used only for the main dashboard (index.html)
+ **/
+
+$(function () {
+
+ "use strict";
+
+ //Make the dashboard widgets sortable Using jquery UI
+ $(".connectedSortable").sortable({
+ placeholder: "sort-highlight",
+ connectWith: ".connectedSortable",
+ handle: ".box-header, .nav-tabs",
+ forcePlaceholderSize: true,
+ zIndex: 999999
+ });
+ $(".connectedSortable .box-header, .connectedSortable .nav-tabs-custom").css("cursor", "move");
+
+ //jQuery UI sortable for the todo list
+ $(".todo-list").sortable({
+ placeholder: "sort-highlight",
+ handle: ".handle",
+ forcePlaceholderSize: true,
+ zIndex: 999999
+ });
+
+ //bootstrap WYSIHTML5 - text editor
+ $(".textarea").wysihtml5();
+
+ $('.daterange').daterangepicker({
+ ranges: {
+ 'Today': [moment(), moment()],
+ 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
+ 'Last 7 Days': [moment().subtract(6, 'days'), moment()],
+ 'Last 30 Days': [moment().subtract(29, 'days'), moment()],
+ 'This Month': [moment().startOf('month'), moment().endOf('month')],
+ 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
+ },
+ startDate: moment().subtract(29, 'days'),
+ endDate: moment()
+ }, function (start, end) {
+ window.alert("You chose: " + start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
+ });
+
+ /* jQueryKnob */
+ $(".knob").knob();
+
+ //jvectormap data
+ var visitorsData = {
+ "US": 398, //USA
+ "SA": 400, //Saudi Arabia
+ "CA": 1000, //Canada
+ "DE": 500, //Germany
+ "FR": 760, //France
+ "CN": 300, //China
+ "AU": 700, //Australia
+ "BR": 600, //Brazil
+ "IN": 800, //India
+ "GB": 320, //Great Britain
+ "RU": 3000 //Russia
+ };
+ //World map by jvectormap
+ $('#world-map').vectorMap({
+ map: 'world_mill_en',
+ backgroundColor: "transparent",
+ regionStyle: {
+ initial: {
+ fill: '#e4e4e4',
+ "fill-opacity": 1,
+ stroke: 'none',
+ "stroke-width": 0,
+ "stroke-opacity": 1
+ }
+ },
+ series: {
+ regions: [{
+ values: visitorsData,
+ scale: ["#92c1dc", "#ebf4f9"],
+ normalizeFunction: 'polynomial'
+ }]
+ },
+ onRegionLabelShow: function (e, el, code) {
+ if (typeof visitorsData[code] != "undefined")
+ el.html(el.html() + ': ' + visitorsData[code] + ' new visitors');
+ }
+ });
+
+ //Sparkline charts
+ var myvalues = [1000, 1200, 920, 927, 931, 1027, 819, 930, 1021];
+ $('#sparkline-1').sparkline(myvalues, {
+ type: 'line',
+ lineColor: '#92c1dc',
+ fillColor: "#ebf4f9",
+ height: '50',
+ width: '80'
+ });
+ myvalues = [515, 519, 520, 522, 652, 810, 370, 627, 319, 630, 921];
+ $('#sparkline-2').sparkline(myvalues, {
+ type: 'line',
+ lineColor: '#92c1dc',
+ fillColor: "#ebf4f9",
+ height: '50',
+ width: '80'
+ });
+ myvalues = [15, 19, 20, 22, 33, 27, 31, 27, 19, 30, 21];
+ $('#sparkline-3').sparkline(myvalues, {
+ type: 'line',
+ lineColor: '#92c1dc',
+ fillColor: "#ebf4f9",
+ height: '50',
+ width: '80'
+ });
+
+ //The Calender
+ $("#calendar").datepicker();
+
+ //SLIMSCROLL FOR CHAT WIDGET
+ $('#chat-box').slimScroll({
+ height: '250px'
+ });
+
+ /* Morris.js Charts */
+ // Sales chart
+ var area = new Morris.Area({
+ element: 'revenue-chart',
+ resize: true,
+ data: [
+ {y: '2011 Q1', item1: 2666, item2: 2666},
+ {y: '2011 Q2', item1: 2778, item2: 2294},
+ {y: '2011 Q3', item1: 4912, item2: 1969},
+ {y: '2011 Q4', item1: 3767, item2: 3597},
+ {y: '2012 Q1', item1: 6810, item2: 1914},
+ {y: '2012 Q2', item1: 5670, item2: 4293},
+ {y: '2012 Q3', item1: 4820, item2: 3795},
+ {y: '2012 Q4', item1: 15073, item2: 5967},
+ {y: '2013 Q1', item1: 10687, item2: 4460},
+ {y: '2013 Q2', item1: 8432, item2: 5713}
+ ],
+ xkey: 'y',
+ ykeys: ['item1', 'item2'],
+ labels: ['Item 1', 'Item 2'],
+ lineColors: ['#a0d0e0', '#3c8dbc'],
+ hideHover: 'auto'
+ });
+ var line = new Morris.Line({
+ element: 'line-chart',
+ resize: true,
+ data: [
+ {y: '2011 Q1', item1: 2666},
+ {y: '2011 Q2', item1: 2778},
+ {y: '2011 Q3', item1: 4912},
+ {y: '2011 Q4', item1: 3767},
+ {y: '2012 Q1', item1: 6810},
+ {y: '2012 Q2', item1: 5670},
+ {y: '2012 Q3', item1: 4820},
+ {y: '2012 Q4', item1: 15073},
+ {y: '2013 Q1', item1: 10687},
+ {y: '2013 Q2', item1: 8432}
+ ],
+ xkey: 'y',
+ ykeys: ['item1'],
+ labels: ['Item 1'],
+ lineColors: ['#efefef'],
+ lineWidth: 2,
+ hideHover: 'auto',
+ gridTextColor: "#fff",
+ gridStrokeWidth: 0.4,
+ pointSize: 4,
+ pointStrokeColors: ["#efefef"],
+ gridLineColor: "#efefef",
+ gridTextFamily: "Open Sans",
+ gridTextSize: 10
+ });
+
+ //Donut Chart
+ var donut = new Morris.Donut({
+ element: 'sales-chart',
+ resize: true,
+ colors: ["#3c8dbc", "#f56954", "#00a65a"],
+ data: [
+ {label: "Download Sales", value: 12},
+ {label: "In-Store Sales", value: 30},
+ {label: "Mail-Order Sales", value: 20}
+ ],
+ hideHover: 'auto'
+ });
+
+ //Fix for charts under tabs
+ $('.box ul.nav a').on('shown.bs.tab', function () {
+ area.redraw();
+ donut.redraw();
+ line.redraw();
+ });
+
+ /* The todo list plugin */
+ $(".todo-list").todolist({
+ onCheck: function (ele) {
+ window.console.log("The element has been checked");
+ return ele;
+ },
+ onUncheck: function (ele) {
+ window.console.log("The element has been unchecked");
+ return ele;
+ }
+ });
+
+});
diff --git a/dbdocs/bower/admin-lte/dist/js/pages/dashboard2.js b/dbdocs/bower/admin-lte/dist/js/pages/dashboard2.js
new file mode 100644
index 0000000..cc67785
--- /dev/null
+++ b/dbdocs/bower/admin-lte/dist/js/pages/dashboard2.js
@@ -0,0 +1,274 @@
+$(function () {
+
+ 'use strict';
+
+ /* ChartJS
+ * -------
+ * Here we will create a few charts using ChartJS
+ */
+
+ //-----------------------
+ //- MONTHLY SALES CHART -
+ //-----------------------
+
+ // Get context with jQuery - using jQuery's .get() method.
+ var salesChartCanvas = $("#salesChart").get(0).getContext("2d");
+ // This will get the first returned node in the jQuery collection.
+ var salesChart = new Chart(salesChartCanvas);
+
+ var salesChartData = {
+ labels: ["January", "February", "March", "April", "May", "June", "July"],
+ datasets: [
+ {
+ label: "Electronics",
+ fillColor: "rgb(210, 214, 222)",
+ strokeColor: "rgb(210, 214, 222)",
+ pointColor: "rgb(210, 214, 222)",
+ pointStrokeColor: "#c1c7d1",
+ pointHighlightFill: "#fff",
+ pointHighlightStroke: "rgb(220,220,220)",
+ data: [65, 59, 80, 81, 56, 55, 40]
+ },
+ {
+ label: "Digital Goods",
+ fillColor: "rgba(60,141,188,0.9)",
+ strokeColor: "rgba(60,141,188,0.8)",
+ pointColor: "#3b8bba",
+ pointStrokeColor: "rgba(60,141,188,1)",
+ pointHighlightFill: "#fff",
+ pointHighlightStroke: "rgba(60,141,188,1)",
+ data: [28, 48, 40, 19, 86, 27, 90]
+ }
+ ]
+ };
+
+ var salesChartOptions = {
+ //Boolean - If we should show the scale at all
+ showScale: true,
+ //Boolean - Whether grid lines are shown across the chart
+ scaleShowGridLines: false,
+ //String - Colour of the grid lines
+ scaleGridLineColor: "rgba(0,0,0,.05)",
+ //Number - Width of the grid lines
+ scaleGridLineWidth: 1,
+ //Boolean - Whether to show horizontal lines (except X axis)
+ scaleShowHorizontalLines: true,
+ //Boolean - Whether to show vertical lines (except Y axis)
+ scaleShowVerticalLines: true,
+ //Boolean - Whether the line is curved between points
+ bezierCurve: true,
+ //Number - Tension of the bezier curve between points
+ bezierCurveTension: 0.3,
+ //Boolean - Whether to show a dot for each point
+ pointDot: false,
+ //Number - Radius of each point dot in pixels
+ pointDotRadius: 4,
+ //Number - Pixel width of point dot stroke
+ pointDotStrokeWidth: 1,
+ //Number - amount extra to add to the radius to cater for hit detection outside the drawn point
+ pointHitDetectionRadius: 20,
+ //Boolean - Whether to show a stroke for datasets
+ datasetStroke: true,
+ //Number - Pixel width of dataset stroke
+ datasetStrokeWidth: 2,
+ //Boolean - Whether to fill the dataset with a color
+ datasetFill: true,
+ //String - A legend template
+ legendTemplate: "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].lineColor%>\"></span><%=datasets[i].label%></li><%}%></ul>",
+ //Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container
+ maintainAspectRatio: true,
+ //Boolean - whether to make the chart responsive to window resizing
+ responsive: true
+ };
+
+ //Create the line chart
+ salesChart.Line(salesChartData, salesChartOptions);
+
+ //---------------------------
+ //- END MONTHLY SALES CHART -
+ //---------------------------
+
+ //-------------
+ //- PIE CHART -
+ //-------------
+ // Get context with jQuery - using jQuery's .get() method.
+ var pieChartCanvas = $("#pieChart").get(0).getContext("2d");
+ var pieChart = new Chart(pieChartCanvas);
+ var PieData = [
+ {
+ value: 700,
+ color: "#f56954",
+ highlight: "#f56954",
+ label: "Chrome"
+ },
+ {
+ value: 500,
+ color: "#00a65a",
+ highlight: "#00a65a",
+ label: "IE"
+ },
+ {
+ value: 400,
+ color: "#f39c12",
+ highlight: "#f39c12",
+ label: "FireFox"
+ },
+ {
+ value: 600,
+ color: "#00c0ef",
+ highlight: "#00c0ef",
+ label: "Safari"
+ },
+ {
+ value: 300,
+ color: "#3c8dbc",
+ highlight: "#3c8dbc",
+ label: "Opera"
+ },
+ {
+ value: 100,
+ color: "#d2d6de",
+ highlight: "#d2d6de",
+ label: "Navigator"
+ }
+ ];
+ var pieOptions = {
+ //Boolean - Whether we should show a stroke on each segment
+ segmentShowStroke: true,
+ //String - The colour of each segment stroke
+ segmentStrokeColor: "#fff",
+ //Number - The width of each segment stroke
+ segmentStrokeWidth: 1,
+ //Number - The percentage of the chart that we cut out of the middle
+ percentageInnerCutout: 50, // This is 0 for Pie charts
+ //Number - Amount of animation steps
+ animationSteps: 100,
+ //String - Animation easing effect
+ animationEasing: "easeOutBounce",
+ //Boolean - Whether we animate the rotation of the Doughnut
+ animateRotate: true,
+ //Boolean - Whether we animate scaling the Doughnut from the centre
+ animateScale: false,
+ //Boolean - whether to make the chart responsive to window resizing
+ responsive: true,
+ // Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container
+ maintainAspectRatio: false,
+ //String - A legend template
+ legendTemplate: "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>",
+ //String - A tooltip template
+ tooltipTemplate: "<%=value %> <%=label%> users"
+ };
+ //Create pie or douhnut chart
+ // You can switch between pie and douhnut using the method below.
+ pieChart.Doughnut(PieData, pieOptions);
+ //-----------------
+ //- END PIE CHART -
+ //-----------------
+
+ /* jVector Maps
+ * ------------
+ * Create a world map with markers
+ */
+ $('#world-map-markers').vectorMap({
+ map: 'world_mill_en',
+ normalizeFunction: 'polynomial',
+ hoverOpacity: 0.7,
+ hoverColor: false,
+ backgroundColor: 'transparent',
+ regionStyle: {
+ initial: {
+ fill: 'rgba(210, 214, 222, 1)',
+ "fill-opacity": 1,
+ stroke: 'none',
+ "stroke-width": 0,
+ "stroke-opacity": 1
+ },
+ hover: {
+ "fill-opacity": 0.7,
+ cursor: 'pointer'
+ },
+ selected: {
+ fill: 'yellow'
+ },
+ selectedHover: {}
+ },
+ markerStyle: {
+ initial: {
+ fill: '#00a65a',
+ stroke: '#111'
+ }
+ },
+ markers: [
+ {latLng: [41.90, 12.45], name: 'Vatican City'},
+ {latLng: [43.73, 7.41], name: 'Monaco'},
+ {latLng: [-0.52, 166.93], name: 'Nauru'},
+ {latLng: [-8.51, 179.21], name: 'Tuvalu'},
+ {latLng: [43.93, 12.46], name: 'San Marino'},
+ {latLng: [47.14, 9.52], name: 'Liechtenstein'},
+ {latLng: [7.11, 171.06], name: 'Marshall Islands'},
+ {latLng: [17.3, -62.73], name: 'Saint Kitts and Nevis'},
+ {latLng: [3.2, 73.22], name: 'Maldives'},
+ {latLng: [35.88, 14.5], name: 'Malta'},
+ {latLng: [12.05, -61.75], name: 'Grenada'},
+ {latLng: [13.16, -61.23], name: 'Saint Vincent and the Grenadines'},
+ {latLng: [13.16, -59.55], name: 'Barbados'},
+ {latLng: [17.11, -61.85], name: 'Antigua and Barbuda'},
+ {latLng: [-4.61, 55.45], name: 'Seychelles'},
+ {latLng: [7.35, 134.46], name: 'Palau'},
+ {latLng: [42.5, 1.51], name: 'Andorra'},
+ {latLng: [14.01, -60.98], name: 'Saint Lucia'},
+ {latLng: [6.91, 158.18], name: 'Federated States of Micronesia'},
+ {latLng: [1.3, 103.8], name: 'Singapore'},
+ {latLng: [1.46, 173.03], name: 'Kiribati'},
+ {latLng: [-21.13, -175.2], name: 'Tonga'},
+ {latLng: [15.3, -61.38], name: 'Dominica'},
+ {latLng: [-20.2, 57.5], name: 'Mauritius'},
+ {latLng: [26.02, 50.55], name: 'Bahrain'},
+ {latLng: [0.33, 6.73], name: 'São Tomé and Príncipe'}
+ ]
+ });
+
+ /* SPARKLINE CHARTS
+ * ----------------
+ * Create a inline charts with spark line
+ */
+
+ //-----------------
+ //- SPARKLINE BAR -
+ //-----------------
+ $('.sparkbar').each(function () {
+ var $this = $(this);
+ $this.sparkline('html', {
+ type: 'bar',
+ height: $this.data('height') ? $this.data('height') : '30',
+ barColor: $this.data('color')
+ });
+ });
+
+ //-----------------
+ //- SPARKLINE PIE -
+ //-----------------
+ $('.sparkpie').each(function () {
+ var $this = $(this);
+ $this.sparkline('html', {
+ type: 'pie',
+ height: $this.data('height') ? $this.data('height') : '90',
+ sliceColors: $this.data('color')
+ });
+ });
+
+ //------------------
+ //- SPARKLINE LINE -
+ //------------------
+ $('.sparkline').each(function () {
+ var $this = $(this);
+ $this.sparkline('html', {
+ type: 'line',
+ height: $this.data('height') ? $this.data('height') : '90',
+ width: '100%',
+ lineColor: $this.data('linecolor'),
+ fillColor: $this.data('fillcolor'),
+ spotColor: $this.data('spotcolor')
+ });
+ });
+});