diff options
author | Marvin Borner | 2018-07-13 19:06:45 +0200 |
---|---|---|
committer | Marvin Borner | 2018-07-13 19:06:45 +0200 |
commit | 6fcfb7c04d32e1c8b26a312295bf7ac3ec2d2ad7 (patch) | |
tree | dbc87ef16fa01d5d99116de283592b8fe5e02944 /public/bower_components/admin-lte/dist/js | |
parent | dfd839f27146df0ad0494e11734fc7d310c70ebf (diff) |
Fixed many permissions and began admin interface
Diffstat (limited to 'public/bower_components/admin-lte/dist/js')
5 files changed, 1976 insertions, 0 deletions
diff --git a/public/bower_components/admin-lte/dist/js/adminlte.js b/public/bower_components/admin-lte/dist/js/adminlte.js new file mode 100644 index 0000000..c413316 --- /dev/null +++ b/public/bower_components/admin-lte/dist/js/adminlte.js @@ -0,0 +1,1129 @@ +/*! 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 <https://www.almsaeedstudio.com> +* @Email <abdullah@almsaeedstudio.com> +* @version 2.4.2 +* @repository git://github.com/almasaeed2010/AdminLTE.git +* @license MIT <http://opensource.org/licenses/MIT> +*/ + +// Make sure jQuery has been loaded +if (typeof jQuery === 'undefined') { +throw new Error('AdminLTE requires jQuery') +} + +/* BoxRefresh() + * ========= + * Adds AJAX content control to a box. + * + * @Usage: $('#my-box').boxRefresh(options) + * or add [data-widget="box-refresh"] to the box element + * Pass any option as data-option="value" + */ ++function ($) { + 'use strict'; + + var DataKey = 'lte.boxrefresh'; + + var Default = { + source : '', + params : {}, + trigger : '.refresh-btn', + content : '.box-body', + loadInContent : true, + responseType : '', + overlayTemplate: '<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>', + onLoadStart : function () { + }, + onLoadDone : function (response) { + return response; + } + }; + + var Selector = { + data: '[data-widget="box-refresh"]' + }; + + // BoxRefresh Class Definition + // ========================= + var BoxRefresh = function (element, options) { + this.element = element; + this.options = options; + this.$overlay = $(options.overlay); + + if (options.source === '') { + throw new Error('Source url was not defined. Please specify a url in your BoxRefresh source option.'); + } + + this._setUpListeners(); + this.load(); + }; + + BoxRefresh.prototype.load = function () { + this._addOverlay(); + this.options.onLoadStart.call($(this)); + + $.get(this.options.source, this.options.params, function (response) { + if (this.options.loadInContent) { + $(this.options.content).html(response); + } + this.options.onLoadDone.call($(this), response); + this._removeOverlay(); + }.bind(this), this.options.responseType !== '' && this.options.responseType); + }; + + // Private + + BoxRefresh.prototype._setUpListeners = function () { + $(this.element).on('click', Selector.trigger, function (event) { + if (event) event.preventDefault(); + this.load(); + }.bind(this)); + }; + + BoxRefresh.prototype._addOverlay = function () { + $(this.element).append(this.$overlay); + }; + + BoxRefresh.prototype._removeOverlay = function () { + $(this.element).remove(this.$overlay); + }; + + // Plugin Definition + // ================= + function Plugin(option) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DataKey); + + if (!data) { + var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); + $this.data(DataKey, (data = new BoxRefresh($this, options))); + } + + if (typeof data == 'string') { + if (typeof data[option] == 'undefined') { + throw new Error('No method named ' + option); + } + data[option](); + } + }); + } + + var old = $.fn.boxRefresh; + + $.fn.boxRefresh = Plugin; + $.fn.boxRefresh.Constructor = BoxRefresh; + + // No Conflict Mode + // ================ + $.fn.boxRefresh.noConflict = function () { + $.fn.boxRefresh = old; + return this; + }; + + // BoxRefresh Data API + // ================= + $(window).on('load', function () { + $(Selector.data).each(function () { + Plugin.call($(this)); + }); + }); + +}(jQuery); + + +/* BoxWidget() + * ====== + * Adds box widget functions to boxes. + * + * @Usage: $('.my-box').boxWidget(options) + * This plugin auto activates on any element using the `.box` class + * Pass any option as data-option="value" + */ ++function ($) { + 'use strict'; + + var DataKey = 'lte.boxwidget'; + + var Default = { + animationSpeed : 500, + collapseTrigger: '[data-widget="collapse"]', + removeTrigger : '[data-widget="remove"]', + collapseIcon : 'fa-minus', + expandIcon : 'fa-plus', + removeIcon : 'fa-times' + }; + + var Selector = { + data : '.box', + collapsed: '.collapsed-box', + header : '.box-header', + body : '.box-body', + footer : '.box-footer', + tools : '.box-tools' + }; + + var ClassName = { + collapsed: 'collapsed-box' + }; + + var Event = { + collapsed: 'collapsed.boxwidget', + expanded : 'expanded.boxwidget', + removed : 'removed.boxwidget' + }; + + // BoxWidget Class Definition + // ===================== + var BoxWidget = function (element, options) { + this.element = element; + this.options = options; + + this._setUpListeners(); + }; + + BoxWidget.prototype.toggle = function () { + var isOpen = !$(this.element).is(Selector.collapsed); + + if (isOpen) { + this.collapse(); + } else { + this.expand(); + } + }; + + BoxWidget.prototype.expand = function () { + var expandedEvent = $.Event(Event.expanded); + var collapseIcon = this.options.collapseIcon; + var expandIcon = this.options.expandIcon; + + $(this.element).removeClass(ClassName.collapsed); + + $(this.element) + .children(Selector.header + ', ' + Selector.body + ', ' + Selector.footer) + .children(Selector.tools) + .find('.' + expandIcon) + .removeClass(expandIcon) + .addClass(collapseIcon); + + $(this.element).children(Selector.body + ', ' + Selector.footer) + .slideDown(this.options.animationSpeed, function () { + $(this.element).trigger(expandedEvent); + }.bind(this)); + }; + + BoxWidget.prototype.collapse = function () { + var collapsedEvent = $.Event(Event.collapsed); + var collapseIcon = this.options.collapseIcon; + var expandIcon = this.options.expandIcon; + + $(this.element) + .children(Selector.header + ', ' + Selector.body + ', ' + Selector.footer) + .children(Selector.tools) + .find('.' + collapseIcon) + .removeClass(collapseIcon) + .addClass(expandIcon); + + $(this.element).children(Selector.body + ', ' + Selector.footer) + .slideUp(this.options.animationSpeed, function () { + $(this.element).addClass(ClassName.collapsed); + $(this.element).trigger(collapsedEvent); + }.bind(this)); + }; + + BoxWidget.prototype.remove = function () { + var removedEvent = $.Event(Event.removed); + + $(this.element).slideUp(this.options.animationSpeed, function () { + $(this.element).trigger(removedEvent); + $(this.element).remove(); + }.bind(this)); + }; + + // Private + + BoxWidget.prototype._setUpListeners = function () { + var that = this; + + $(this.element).on('click', this.options.collapseTrigger, function (event) { + if (event) event.preventDefault(); + that.toggle($(this)); + return false; + }); + + $(this.element).on('click', this.options.removeTrigger, function (event) { + if (event) event.preventDefault(); + that.remove($(this)); + return false; + }); + }; + + // Plugin Definition + // ================= + function Plugin(option) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DataKey); + + if (!data) { + var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); + $this.data(DataKey, (data = new BoxWidget($this, options))); + } + + if (typeof option == 'string') { + if (typeof data[option] == 'undefined') { + throw new Error('No method named ' + option); + } + data[option](); + } + }); + } + + var old = $.fn.boxWidget; + + $.fn.boxWidget = Plugin; + $.fn.boxWidget.Constructor = BoxWidget; + + // No Conflict Mode + // ================ + $.fn.boxWidget.noConflict = function () { + $.fn.boxWidget = old; + return this; + }; + + // BoxWidget Data API + // ================== + $(window).on('load', function () { + $(Selector.data).each(function () { + Plugin.call($(this)); + }); + }); +}(jQuery); + + +/* ControlSidebar() + * =============== + * Toggles the state of the control sidebar + * + * @Usage: $('#control-sidebar-trigger').controlSidebar(options) + * or add [data-toggle="control-sidebar"] to the trigger + * Pass any option as data-option="value" + */ ++function ($) { + 'use strict'; + + var DataKey = 'lte.controlsidebar'; + + var Default = { + slide: true + }; + + var Selector = { + sidebar: '.control-sidebar', + data : '[data-toggle="control-sidebar"]', + open : '.control-sidebar-open', + bg : '.control-sidebar-bg', + wrapper: '.wrapper', + content: '.content-wrapper', + boxed : '.layout-boxed' + }; + + var ClassName = { + open : 'control-sidebar-open', + fixed: 'fixed' + }; + + var Event = { + collapsed: 'collapsed.controlsidebar', + expanded : 'expanded.controlsidebar' + }; + + // ControlSidebar Class Definition + // =============================== + var ControlSidebar = function (element, options) { + this.element = element; + this.options = options; + this.hasBindedResize = false; + + this.init(); + }; + + ControlSidebar.prototype.init = function () { + // Add click listener if the element hasn't been + // initialized using the data API + if (!$(this.element).is(Selector.data)) { + $(this).on('click', this.toggle); + } + + this.fix(); + $(window).resize(function () { + this.fix(); + }.bind(this)); + }; + + ControlSidebar.prototype.toggle = function (event) { + if (event) event.preventDefault(); + + this.fix(); + + if (!$(Selector.sidebar).is(Selector.open) && !$('body').is(Selector.open)) { + this.expand(); + } else { + this.collapse(); + } + }; + + ControlSidebar.prototype.expand = function () { + if (!this.options.slide) { + $('body').addClass(ClassName.open); + } else { + $(Selector.sidebar).addClass(ClassName.open); + } + + $(this.element).trigger($.Event(Event.expanded)); + }; + + ControlSidebar.prototype.collapse = function () { + $('body, ' + Selector.sidebar).removeClass(ClassName.open); + $(this.element).trigger($.Event(Event.collapsed)); + }; + + ControlSidebar.prototype.fix = function () { + if ($('body').is(Selector.boxed)) { + this._fixForBoxed($(Selector.bg)); + } + }; + + // Private + + ControlSidebar.prototype._fixForBoxed = function (bg) { + bg.css({ + position: 'absolute', + height : $(Selector.wrapper).height() + }); + }; + + // Plugin Definition + // ================= + function Plugin(option) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DataKey); + + if (!data) { + var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); + $this.data(DataKey, (data = new ControlSidebar($this, options))); + } + + if (typeof option == 'string') data.toggle(); + }); + } + + var old = $.fn.controlSidebar; + + $.fn.controlSidebar = Plugin; + $.fn.controlSidebar.Constructor = ControlSidebar; + + // No Conflict Mode + // ================ + $.fn.controlSidebar.noConflict = function () { + $.fn.controlSidebar = old; + return this; + }; + + // ControlSidebar Data API + // ======================= + $(document).on('click', Selector.data, function (event) { + if (event) event.preventDefault(); + Plugin.call($(this), 'toggle'); + }); + +}(jQuery); + + +/* DirectChat() + * =============== + * Toggles the state of the control sidebar + * + * @Usage: $('#my-chat-box').directChat() + * or add [data-widget="direct-chat"] to the trigger + */ ++function ($) { + 'use strict'; + + var DataKey = 'lte.directchat'; + + var Selector = { + data: '[data-widget="chat-pane-toggle"]', + box : '.direct-chat' + }; + + var ClassName = { + open: 'direct-chat-contacts-open' + }; + + // DirectChat Class Definition + // =========================== + var DirectChat = function (element) { + this.element = element; + }; + + DirectChat.prototype.toggle = function ($trigger) { + $trigger.parents(Selector.box).first().toggleClass(ClassName.open); + }; + + // Plugin Definition + // ================= + function Plugin(option) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DataKey); + + if (!data) { + $this.data(DataKey, (data = new DirectChat($this))); + } + + if (typeof option == 'string') data.toggle($this); + }); + } + + var old = $.fn.directChat; + + $.fn.directChat = Plugin; + $.fn.directChat.Constructor = DirectChat; + + // No Conflict Mode + // ================ + $.fn.directChat.noConflict = function () { + $.fn.directChat = old; + return this; + }; + + // DirectChat Data API + // =================== + $(document).on('click', Selector.data, function (event) { + if (event) event.preventDefault(); + Plugin.call($(this), 'toggle'); + }); + +}(jQuery); + + +/* Layout() + * ======== + * Implements AdminLTE layout. + * Fixes the layout height in case min-height fails. + * + * @usage activated automatically upon window load. + * Configure any options by passing data-option="value" + * to the body tag. + */ ++function ($) { + 'use strict'; + + var DataKey = 'lte.layout'; + + var Default = { + slimscroll : true, + resetHeight: true + }; + + var Selector = { + wrapper : '.wrapper', + contentWrapper: '.content-wrapper', + layoutBoxed : '.layout-boxed', + mainFooter : '.main-footer', + mainHeader : '.main-header', + sidebar : '.sidebar', + controlSidebar: '.control-sidebar', + fixed : '.fixed', + sidebarMenu : '.sidebar-menu', + logo : '.main-header .logo' + }; + + var ClassName = { + fixed : 'fixed', + holdTransition: 'hold-transition' + }; + + var Layout = function (options) { + this.options = options; + this.bindedResize = false; + this.activate(); + }; + + Layout.prototype.activate = function () { + this.fix(); + this.fixSidebar(); + + $('body').removeClass(ClassName.holdTransition); + + if (this.options.resetHeight) { + $('body, html, ' + Selector.wrapper).css({ + 'height' : 'auto', + 'min-height': '100%' + }); + } + + if (!this.bindedResize) { + $(window).resize(function () { + this.fix(); + this.fixSidebar(); + + $(Selector.logo + ', ' + Selector.sidebar).one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function () { + this.fix(); + this.fixSidebar(); + }.bind(this)); + }.bind(this)); + + this.bindedResize = true; + } + + $(Selector.sidebarMenu).on('expanded.tree', function () { + this.fix(); + this.fixSidebar(); + }.bind(this)); + + $(Selector.sidebarMenu).on('collapsed.tree', function () { + this.fix(); + this.fixSidebar(); + }.bind(this)); + }; + + Layout.prototype.fix = function () { + // Remove overflow from .wrapper if layout-boxed exists + $(Selector.layoutBoxed + ' > ' + Selector.wrapper).css('overflow', 'hidden'); + + // Get window height and the wrapper height + var footerHeight = $(Selector.mainFooter).outerHeight() || 0; + var neg = $(Selector.mainHeader).outerHeight() + footerHeight; + var windowHeight = $(window).height(); + var sidebarHeight = $(Selector.sidebar).height() || 0; + + // Set the min-height of the content and sidebar based on + // the height of the document. + if ($('body').hasClass(ClassName.fixed)) { + $(Selector.contentWrapper).css('min-height', windowHeight - footerHeight); + } else { + var postSetHeight; + + if (windowHeight >= sidebarHeight) { + $(Selector.contentWrapper).css('min-height', windowHeight - neg); + postSetHeight = windowHeight - neg; + } else { + $(Selector.contentWrapper).css('min-height', sidebarHeight); + postSetHeight = sidebarHeight; + } + + // Fix for the control sidebar height + var $controlSidebar = $(Selector.controlSidebar); + if (typeof $controlSidebar !== 'undefined') { + if ($controlSidebar.height() > postSetHeight) + $(Selector.contentWrapper).css('min-height', $controlSidebar.height()); + } + } + }; + + Layout.prototype.fixSidebar = function () { + // Make sure the body tag has the .fixed class + if (!$('body').hasClass(ClassName.fixed)) { + if (typeof $.fn.slimScroll !== 'undefined') { + $(Selector.sidebar).slimScroll({ destroy: true }).height('auto'); + } + return; + } + + // Enable slimscroll for fixed layout + if (this.options.slimscroll) { + if (typeof $.fn.slimScroll !== 'undefined') { + // Destroy if it exists + // $(Selector.sidebar).slimScroll({ destroy: true }).height('auto') + + // Add slimscroll + $(Selector.sidebar).slimScroll({ + height: ($(window).height() - $(Selector.mainHeader).height()) + 'px' + }); + } + } + }; + + // Plugin Definition + // ================= + function Plugin(option) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DataKey); + + if (!data) { + var options = $.extend({}, Default, $this.data(), typeof option === 'object' && option); + $this.data(DataKey, (data = new Layout(options))); + } + + if (typeof option === 'string') { + if (typeof data[option] === 'undefined') { + throw new Error('No method named ' + option); + } + data[option](); + } + }); + } + + var old = $.fn.layout; + + $.fn.layout = Plugin; + $.fn.layout.Constuctor = Layout; + + // No conflict mode + // ================ + $.fn.layout.noConflict = function () { + $.fn.layout = old; + return this; + }; + + // Layout DATA-API + // =============== + $(window).on('load', function () { + Plugin.call($('body')); + }); +}(jQuery); + + +/* PushMenu() + * ========== + * Adds the push menu functionality to the sidebar. + * + * @usage: $('.btn').pushMenu(options) + * or add [data-toggle="push-menu"] to any button + * Pass any option as data-option="value" + */ ++function ($) { + 'use strict'; + + var DataKey = 'lte.pushmenu'; + + var Default = { + collapseScreenSize : 767, + expandOnHover : false, + expandTransitionDelay: 200 + }; + + var Selector = { + collapsed : '.sidebar-collapse', + open : '.sidebar-open', + mainSidebar : '.main-sidebar', + contentWrapper: '.content-wrapper', + searchInput : '.sidebar-form .form-control', + button : '[data-toggle="push-menu"]', + mini : '.sidebar-mini', + expanded : '.sidebar-expanded-on-hover', + layoutFixed : '.fixed' + }; + + var ClassName = { + collapsed : 'sidebar-collapse', + open : 'sidebar-open', + mini : 'sidebar-mini', + expanded : 'sidebar-expanded-on-hover', + expandFeature: 'sidebar-mini-expand-feature', + layoutFixed : 'fixed' + }; + + var Event = { + expanded : 'expanded.pushMenu', + collapsed: 'collapsed.pushMenu' + }; + + // PushMenu Class Definition + // ========================= + var PushMenu = function (options) { + this.options = options; + this.init(); + }; + + PushMenu.prototype.init = function () { + if (this.options.expandOnHover + || ($('body').is(Selector.mini + Selector.layoutFixed))) { + this.expandOnHover(); + $('body').addClass(ClassName.expandFeature); + } + + $(Selector.contentWrapper).click(function () { + // Enable hide menu when clicking on the content-wrapper on small screens + if ($(window).width() <= this.options.collapseScreenSize && $('body').hasClass(ClassName.open)) { + this.close(); + } + }.bind(this)); + + // __Fix for android devices + $(Selector.searchInput).click(function (e) { + e.stopPropagation(); + }); + }; + + PushMenu.prototype.toggle = function () { + var windowWidth = $(window).width(); + var isOpen = !$('body').hasClass(ClassName.collapsed); + + if (windowWidth <= this.options.collapseScreenSize) { + isOpen = $('body').hasClass(ClassName.open); + } + + if (!isOpen) { + this.open(); + } else { + this.close(); + } + }; + + PushMenu.prototype.open = function () { + var windowWidth = $(window).width(); + + if (windowWidth > this.options.collapseScreenSize) { + $('body').removeClass(ClassName.collapsed) + .trigger($.Event(Event.expanded)); + } + else { + $('body').addClass(ClassName.open) + .trigger($.Event(Event.expanded)); + } + }; + + PushMenu.prototype.close = function () { + var windowWidth = $(window).width(); + if (windowWidth > this.options.collapseScreenSize) { + $('body').addClass(ClassName.collapsed) + .trigger($.Event(Event.collapsed)); + } else { + $('body').removeClass(ClassName.open + ' ' + ClassName.collapsed) + .trigger($.Event(Event.collapsed)); + } + }; + + PushMenu.prototype.expandOnHover = function () { + $(Selector.mainSidebar).hover(function () { + if ($('body').is(Selector.mini + Selector.collapsed) + && $(window).width() > this.options.collapseScreenSize) { + this.expand(); + } + }.bind(this), function () { + if ($('body').is(Selector.expanded)) { + this.collapse(); + } + }.bind(this)); + }; + + PushMenu.prototype.expand = function () { + setTimeout(function () { + $('body').removeClass(ClassName.collapsed) + .addClass(ClassName.expanded); + }, this.options.expandTransitionDelay); + }; + + PushMenu.prototype.collapse = function () { + setTimeout(function () { + $('body').removeClass(ClassName.expanded) + .addClass(ClassName.collapsed); + }, this.options.expandTransitionDelay); + }; + + // PushMenu Plugin Definition + // ========================== + function Plugin(option) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DataKey); + + if (!data) { + var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); + $this.data(DataKey, (data = new PushMenu(options))); + } + + if (option === 'toggle') data.toggle(); + }); + } + + var old = $.fn.pushMenu; + + $.fn.pushMenu = Plugin; + $.fn.pushMenu.Constructor = PushMenu; + + // No Conflict Mode + // ================ + $.fn.pushMenu.noConflict = function () { + $.fn.pushMenu = old; + return this; + }; + + // Data API + // ======== + $(document).on('click', Selector.button, function (e) { + e.preventDefault(); + Plugin.call($(this), 'toggle'); + }); + $(window).on('load', function () { + Plugin.call($(Selector.button)); + }); +}(jQuery); + + +/* TodoList() + * ========= + * Converts a list into a todoList. + * + * @Usage: $('.my-list').todoList(options) + * or add [data-widget="todo-list"] to the ul element + * Pass any option as data-option="value" + */ ++function ($) { + 'use strict'; + + var DataKey = 'lte.todolist'; + + var Default = { + onCheck : function (item) { + return item; + }, + onUnCheck: function (item) { + return item; + } + }; + + var Selector = { + data: '[data-widget="todo-list"]' + }; + + var ClassName = { + done: 'done' + }; + + // TodoList Class Definition + // ========================= + var TodoList = function (element, options) { + this.element = element; + this.options = options; + + this._setUpListeners(); + }; + + TodoList.prototype.toggle = function (item) { + item.parents(Selector.li).first().toggleClass(ClassName.done); + if (!item.prop('checked')) { + this.unCheck(item); + return; + } + + this.check(item); + }; + + TodoList.prototype.check = function (item) { + this.options.onCheck.call(item); + }; + + TodoList.prototype.unCheck = function (item) { + this.options.onUnCheck.call(item); + }; + + // Private + + TodoList.prototype._setUpListeners = function () { + var that = this; + $(this.element).on('change ifChanged', 'input:checkbox', function () { + that.toggle($(this)); + }); + }; + + // Plugin Definition + // ================= + function Plugin(option) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DataKey); + + if (!data) { + var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); + $this.data(DataKey, (data = new TodoList($this, options))); + } + + if (typeof data == 'string') { + if (typeof data[option] == 'undefined') { + throw new Error('No method named ' + option); + } + data[option](); + } + }); + } + + var old = $.fn.todoList; + + $.fn.todoList = Plugin; + $.fn.todoList.Constructor = TodoList; + + // No Conflict Mode + // ================ + $.fn.todoList.noConflict = function () { + $.fn.todoList = old; + return this; + }; + + // TodoList Data API + // ================= + $(window).on('load', function () { + $(Selector.data).each(function () { + Plugin.call($(this)); + }); + }); + +}(jQuery); + + +/* Tree() + * ====== + * Converts a nested list into a multilevel + * tree view menu. + * + * @Usage: $('.my-menu').tree(options) + * or add [data-widget="tree"] to the ul element + * Pass any option as data-option="value" + */ ++function ($) { + 'use strict'; + + var DataKey = 'lte.tree'; + + var Default = { + animationSpeed: 500, + accordion : true, + followLink : false, + trigger : '.treeview a' + }; + + var Selector = { + tree : '.tree', + treeview : '.treeview', + treeviewMenu: '.treeview-menu', + open : '.menu-open, .active', + li : 'li', + data : '[data-widget="tree"]', + active : '.active' + }; + + var ClassName = { + open: 'menu-open', + tree: 'tree' + }; + + var Event = { + collapsed: 'collapsed.tree', + expanded : 'expanded.tree' + }; + + // Tree Class Definition + // ===================== + var Tree = function (element, options) { + this.element = element; + this.options = options; + + $(this.element).addClass(ClassName.tree); + + $(Selector.treeview + Selector.active, this.element).addClass(ClassName.open); + + this._setUpListeners(); + }; + + Tree.prototype.toggle = function (link, event) { + var treeviewMenu = link.next(Selector.treeviewMenu); + var parentLi = link.parent(); + var isOpen = parentLi.hasClass(ClassName.open); + + if (!parentLi.is(Selector.treeview)) { + return; + } + + if (!this.options.followLink || link.attr('href') === '#') { + event.preventDefault(); + } + + if (isOpen) { + this.collapse(treeviewMenu, parentLi); + } else { + this.expand(treeviewMenu, parentLi); + } + }; + + Tree.prototype.expand = function (tree, parent) { + var expandedEvent = $.Event(Event.expanded); + + if (this.options.accordion) { + var openMenuLi = parent.siblings(Selector.open); + var openTree = openMenuLi.children(Selector.treeviewMenu); + this.collapse(openTree, openMenuLi); + } + + parent.addClass(ClassName.open); + tree.slideDown(this.options.animationSpeed, function () { + $(this.element).trigger(expandedEvent); + }.bind(this)); + }; + + Tree.prototype.collapse = function (tree, parentLi) { + var collapsedEvent = $.Event(Event.collapsed); + + tree.find(Selector.open).removeClass(ClassName.open); + parentLi.removeClass(ClassName.open); + tree.slideUp(this.options.animationSpeed, function () { + tree.find(Selector.open + ' > ' + Selector.treeview).slideUp(); + $(this.element).trigger(collapsedEvent); + }.bind(this)); + }; + + // Private + + Tree.prototype._setUpListeners = function () { + var that = this; + + $(this.element).on('click', this.options.trigger, function (event) { + that.toggle($(this), event); + }); + }; + + // Plugin Definition + // ================= + function Plugin(option) { + return this.each(function () { + var $this = $(this); + var data = $this.data(DataKey); + + if (!data) { + var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option); + $this.data(DataKey, new Tree($this, options)); + } + }); + } + + var old = $.fn.tree; + + $.fn.tree = Plugin; + $.fn.tree.Constructor = Tree; + + // No Conflict Mode + // ================ + $.fn.tree.noConflict = function () { + $.fn.tree = old; + return this; + }; + + // Tree Data API + // ============= + $(window).on('load', function () { + $(Selector.data).each(function () { + Plugin.call($(this)); + }); + }); + +}(jQuery); diff --git a/public/bower_components/admin-lte/dist/js/adminlte.min.js b/public/bower_components/admin-lte/dist/js/adminlte.min.js new file mode 100644 index 0000000..fc356e4 --- /dev/null +++ b/public/bower_components/admin-lte/dist/js/adminlte.min.js @@ -0,0 +1,14 @@ +/*! 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 <https://www.almsaeedstudio.com> +* @Email <abdullah@almsaeedstudio.com> +* @version 2.4.2 +* @repository git://github.com/almasaeed2010/AdminLTE.git +* @license MIT <http://opensource.org/licenses/MIT> +*/ +if("undefined"==typeof jQuery)throw new Error("AdminLTE requires jQuery");+function(a){"use strict";function b(b){return this.each(function(){var e=a(this),g=e.data(c);if(!g){var h=a.extend({},d,e.data(),"object"==typeof b&&b);e.data(c,g=new f(e,h))}if("string"==typeof g){if(void 0===g[b])throw new Error("No method named "+b);g[b]()}})}var c="lte.boxrefresh",d={source:"",params:{},trigger:".refresh-btn",content:".box-body",loadInContent:!0,responseType:"",overlayTemplate:'<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>',onLoadStart:function(){},onLoadDone:function(a){return a}},e={data:'[data-widget="box-refresh"]'},f=function(b,c){if(this.element=b,this.options=c,this.$overlay=a(c.overlay),""===c.source)throw new Error("Source url was not defined. Please specify a url in your BoxRefresh source option.");this._setUpListeners(),this.load()};f.prototype.load=function(){this._addOverlay(),this.options.onLoadStart.call(a(this)),a.get(this.options.source,this.options.params,function(b){this.options.loadInContent&&a(this.options.content).html(b),this.options.onLoadDone.call(a(this),b),this._removeOverlay()}.bind(this),""!==this.options.responseType&&this.options.responseType)},f.prototype._setUpListeners=function(){a(this.element).on("click",e.trigger,function(a){a&&a.preventDefault(),this.load()}.bind(this))},f.prototype._addOverlay=function(){a(this.element).append(this.$overlay)},f.prototype._removeOverlay=function(){a(this.element).remove(this.$overlay)};var g=a.fn.boxRefresh;a.fn.boxRefresh=b,a.fn.boxRefresh.Constructor=f,a.fn.boxRefresh.noConflict=function(){return a.fn.boxRefresh=g,this},a(window).on("load",function(){a(e.data).each(function(){b.call(a(this))})})}(jQuery),function(a){"use strict";function b(b){return this.each(function(){var e=a(this),f=e.data(c);if(!f){var g=a.extend({},d,e.data(),"object"==typeof b&&b);e.data(c,f=new h(e,g))}if("string"==typeof b){if(void 0===f[b])throw new Error("No method named "+b);f[b]()}})}var c="lte.boxwidget",d={animationSpeed:500,collapseTrigger:'[data-widget="collapse"]',removeTrigger:'[data-widget="remove"]',collapseIcon:"fa-minus",expandIcon:"fa-plus",removeIcon:"fa-times"},e={data:".box",collapsed:".collapsed-box",header:".box-header",body:".box-body",footer:".box-footer",tools:".box-tools"},f={collapsed:"collapsed-box"},g={collapsed:"collapsed.boxwidget",expanded:"expanded.boxwidget",removed:"removed.boxwidget"},h=function(a,b){this.element=a,this.options=b,this._setUpListeners()};h.prototype.toggle=function(){a(this.element).is(e.collapsed)?this.expand():this.collapse()},h.prototype.expand=function(){var b=a.Event(g.expanded),c=this.options.collapseIcon,d=this.options.expandIcon;a(this.element).removeClass(f.collapsed),a(this.element).children(e.header+", "+e.body+", "+e.footer).children(e.tools).find("."+d).removeClass(d).addClass(c),a(this.element).children(e.body+", "+e.footer).slideDown(this.options.animationSpeed,function(){a(this.element).trigger(b)}.bind(this))},h.prototype.collapse=function(){var b=a.Event(g.collapsed),c=this.options.collapseIcon,d=this.options.expandIcon;a(this.element).children(e.header+", "+e.body+", "+e.footer).children(e.tools).find("."+c).removeClass(c).addClass(d),a(this.element).children(e.body+", "+e.footer).slideUp(this.options.animationSpeed,function(){a(this.element).addClass(f.collapsed),a(this.element).trigger(b)}.bind(this))},h.prototype.remove=function(){var b=a.Event(g.removed);a(this.element).slideUp(this.options.animationSpeed,function(){a(this.element).trigger(b),a(this.element).remove()}.bind(this))},h.prototype._setUpListeners=function(){var b=this;a(this.element).on("click",this.options.collapseTrigger,function(c){return c&&c.preventDefault(),b.toggle(a(this)),!1}),a(this.element).on("click",this.options.removeTrigger,function(c){return c&&c.preventDefault(),b.remove(a(this)),!1})};var i=a.fn.boxWidget;a.fn.boxWidget=b,a.fn.boxWidget.Constructor=h,a.fn.boxWidget.noConflict=function(){return a.fn.boxWidget=i,this},a(window).on("load",function(){a(e.data).each(function(){b.call(a(this))})})}(jQuery),function(a){"use strict";function b(b){return this.each(function(){var e=a(this),f=e.data(c);if(!f){var g=a.extend({},d,e.data(),"object"==typeof b&&b);e.data(c,f=new h(e,g))}"string"==typeof b&&f.toggle()})}var c="lte.controlsidebar",d={slide:!0},e={sidebar:".control-sidebar",data:'[data-toggle="control-sidebar"]',open:".control-sidebar-open",bg:".control-sidebar-bg",wrapper:".wrapper",content:".content-wrapper",boxed:".layout-boxed"},f={open:"control-sidebar-open",fixed:"fixed"},g={collapsed:"collapsed.controlsidebar",expanded:"expanded.controlsidebar"},h=function(a,b){this.element=a,this.options=b,this.hasBindedResize=!1,this.init()};h.prototype.init=function(){a(this.element).is(e.data)||a(this).on("click",this.toggle),this.fix(),a(window).resize(function(){this.fix()}.bind(this))},h.prototype.toggle=function(b){b&&b.preventDefault(),this.fix(),a(e.sidebar).is(e.open)||a("body").is(e.open)?this.collapse():this.expand()},h.prototype.expand=function(){this.options.slide?a(e.sidebar).addClass(f.open):a("body").addClass(f.open),a(this.element).trigger(a.Event(g.expanded))},h.prototype.collapse=function(){a("body, "+e.sidebar).removeClass(f.open),a(this.element).trigger(a.Event(g.collapsed))},h.prototype.fix=function(){a("body").is(e.boxed)&&this._fixForBoxed(a(e.bg))},h.prototype._fixForBoxed=function(b){b.css({position:"absolute",height:a(e.wrapper).height()})};var i=a.fn.controlSidebar;a.fn.controlSidebar=b,a.fn.controlSidebar.Constructor=h,a.fn.controlSidebar.noConflict=function(){return a.fn.controlSidebar=i,this},a(document).on("click",e.data,function(c){c&&c.preventDefault(),b.call(a(this),"toggle")})}(jQuery),function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data(c);e||d.data(c,e=new f(d)),"string"==typeof b&&e.toggle(d)})}var c="lte.directchat",d={data:'[data-widget="chat-pane-toggle"]',box:".direct-chat"},e={open:"direct-chat-contacts-open"},f=function(a){this.element=a};f.prototype.toggle=function(a){a.parents(d.box).first().toggleClass(e.open)};var g=a.fn.directChat;a.fn.directChat=b,a.fn.directChat.Constructor=f,a.fn.directChat.noConflict=function(){return a.fn.directChat=g,this},a(document).on("click",d.data,function(c){c&&c.preventDefault(),b.call(a(this),"toggle")})}(jQuery),function(a){"use strict";function b(b){return this.each(function(){var e=a(this),f=e.data(c);if(!f){var h=a.extend({},d,e.data(),"object"==typeof b&&b);e.data(c,f=new g(h))}if("string"==typeof b){if(void 0===f[b])throw new Error("No method named "+b);f[b]()}})}var c="lte.layout",d={slimscroll:!0,resetHeight:!0},e={wrapper:".wrapper",contentWrapper:".content-wrapper",layoutBoxed:".layout-boxed",mainFooter:".main-footer",mainHeader:".main-header",sidebar:".sidebar",controlSidebar:".control-sidebar",fixed:".fixed",sidebarMenu:".sidebar-menu",logo:".main-header .logo"},f={fixed:"fixed",holdTransition:"hold-transition"},g=function(a){this.options=a,this.bindedResize=!1,this.activate()};g.prototype.activate=function(){this.fix(),this.fixSidebar(),a("body").removeClass(f.holdTransition),this.options.resetHeight&&a("body, html, "+e.wrapper).css({height:"auto","min-height":"100%"}),this.bindedResize||(a(window).resize(function(){this.fix(),this.fixSidebar(),a(e.logo+", "+e.sidebar).one("webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend",function(){this.fix(),this.fixSidebar()}.bind(this))}.bind(this)),this.bindedResize=!0),a(e.sidebarMenu).on("expanded.tree",function(){this.fix(),this.fixSidebar()}.bind(this)),a(e.sidebarMenu).on("collapsed.tree",function(){this.fix(),this.fixSidebar()}.bind(this))},g.prototype.fix=function(){a(e.layoutBoxed+" > "+e.wrapper).css("overflow","hidden");var b=a(e.mainFooter).outerHeight()||0,c=a(e.mainHeader).outerHeight()+b,d=a(window).height(),g=a(e.sidebar).height()||0;if(a("body").hasClass(f.fixed))a(e.contentWrapper).css("min-height",d-b);else{var h;d>=g?(a(e.contentWrapper).css("min-height",d-c),h=d-c):(a(e.contentWrapper).css("min-height",g),h=g);var i=a(e.controlSidebar);void 0!==i&&i.height()>h&&a(e.contentWrapper).css("min-height",i.height())}},g.prototype.fixSidebar=function(){if(!a("body").hasClass(f.fixed))return void(void 0!==a.fn.slimScroll&&a(e.sidebar).slimScroll({destroy:!0}).height("auto"));this.options.slimscroll&&void 0!==a.fn.slimScroll&&a(e.sidebar).slimScroll({height:a(window).height()-a(e.mainHeader).height()+"px"})};var h=a.fn.layout;a.fn.layout=b,a.fn.layout.Constuctor=g,a.fn.layout.noConflict=function(){return a.fn.layout=h,this},a(window).on("load",function(){b.call(a("body"))})}(jQuery),function(a){"use strict";function b(b){return this.each(function(){var e=a(this),f=e.data(c);if(!f){var g=a.extend({},d,e.data(),"object"==typeof b&&b);e.data(c,f=new h(g))}"toggle"===b&&f.toggle()})}var c="lte.pushmenu",d={collapseScreenSize:767,expandOnHover:!1,expandTransitionDelay:200},e={collapsed:".sidebar-collapse",open:".sidebar-open",mainSidebar:".main-sidebar",contentWrapper:".content-wrapper",searchInput:".sidebar-form .form-control",button:'[data-toggle="push-menu"]',mini:".sidebar-mini",expanded:".sidebar-expanded-on-hover",layoutFixed:".fixed"},f={collapsed:"sidebar-collapse",open:"sidebar-open",mini:"sidebar-mini",expanded:"sidebar-expanded-on-hover",expandFeature:"sidebar-mini-expand-feature",layoutFixed:"fixed"},g={expanded:"expanded.pushMenu",collapsed:"collapsed.pushMenu"},h=function(a){this.options=a,this.init()};h.prototype.init=function(){(this.options.expandOnHover||a("body").is(e.mini+e.layoutFixed))&&(this.expandOnHover(),a("body").addClass(f.expandFeature)),a(e.contentWrapper).click(function(){a(window).width()<=this.options.collapseScreenSize&&a("body").hasClass(f.open)&&this.close()}.bind(this)),a(e.searchInput).click(function(a){a.stopPropagation()})},h.prototype.toggle=function(){var b=a(window).width(),c=!a("body").hasClass(f.collapsed);b<=this.options.collapseScreenSize&&(c=a("body").hasClass(f.open)),c?this.close():this.open()},h.prototype.open=function(){a(window).width()>this.options.collapseScreenSize?a("body").removeClass(f.collapsed).trigger(a.Event(g.expanded)):a("body").addClass(f.open).trigger(a.Event(g.expanded))},h.prototype.close=function(){a(window).width()>this.options.collapseScreenSize?a("body").addClass(f.collapsed).trigger(a.Event(g.collapsed)):a("body").removeClass(f.open+" "+f.collapsed).trigger(a.Event(g.collapsed))},h.prototype.expandOnHover=function(){a(e.mainSidebar).hover(function(){a("body").is(e.mini+e.collapsed)&&a(window).width()>this.options.collapseScreenSize&&this.expand()}.bind(this),function(){a("body").is(e.expanded)&&this.collapse()}.bind(this))},h.prototype.expand=function(){setTimeout(function(){a("body").removeClass(f.collapsed).addClass(f.expanded)},this.options.expandTransitionDelay)},h.prototype.collapse=function(){setTimeout(function(){a("body").removeClass(f.expanded).addClass(f.collapsed)},this.options.expandTransitionDelay)};var i=a.fn.pushMenu;a.fn.pushMenu=b,a.fn.pushMenu.Constructor=h,a.fn.pushMenu.noConflict=function(){return a.fn.pushMenu=i,this},a(document).on("click",e.button,function(c){c.preventDefault(),b.call(a(this),"toggle")}),a(window).on("load",function(){b.call(a(e.button))})}(jQuery),function(a){"use strict";function b(b){return this.each(function(){var e=a(this),f=e.data(c);if(!f){var h=a.extend({},d,e.data(),"object"==typeof b&&b);e.data(c,f=new g(e,h))}if("string"==typeof f){if(void 0===f[b])throw new Error("No method named "+b);f[b]()}})}var c="lte.todolist",d={onCheck:function(a){return a},onUnCheck:function(a){return a}},e={data:'[data-widget="todo-list"]'},f={done:"done"},g=function(a,b){this.element=a,this.options=b,this._setUpListeners()};g.prototype.toggle=function(a){if(a.parents(e.li).first().toggleClass(f.done),!a.prop("checked"))return void this.unCheck(a);this.check(a)},g.prototype.check=function(a){this.options.onCheck.call(a)},g.prototype.unCheck=function(a){this.options.onUnCheck.call(a)},g.prototype._setUpListeners=function(){var b=this;a(this.element).on("change ifChanged","input:checkbox",function(){b.toggle(a(this))})};var h=a.fn.todoList;a.fn.todoList=b,a.fn.todoList.Constructor=g,a.fn.todoList.noConflict=function(){return a.fn.todoList=h,this},a(window).on("load",function(){a(e.data).each(function(){b.call(a(this))})})}(jQuery),function(a){"use strict";function b(b){return this.each(function(){var e=a(this);if(!e.data(c)){var f=a.extend({},d,e.data(),"object"==typeof b&&b);e.data(c,new h(e,f))}})}var c="lte.tree",d={animationSpeed:500,accordion:!0,followLink:!1,trigger:".treeview a"},e={tree:".tree",treeview:".treeview",treeviewMenu:".treeview-menu",open:".menu-open, .active",li:"li",data:'[data-widget="tree"]',active:".active"},f={open:"menu-open",tree:"tree"},g={collapsed:"collapsed.tree",expanded:"expanded.tree"},h=function(b,c){this.element=b,this.options=c,a(this.element).addClass(f.tree),a(e.treeview+e.active,this.element).addClass(f.open),this._setUpListeners()};h.prototype.toggle=function(a,b){var c=a.next(e.treeviewMenu),d=a.parent(),g=d.hasClass(f.open);d.is(e.treeview)&&(this.options.followLink&&"#"!==a.attr("href")||b.preventDefault(),g?this.collapse(c,d):this.expand(c,d))},h.prototype.expand=function(b,c){var d=a.Event(g.expanded);if(this.options.accordion){var h=c.siblings(e.open),i=h.children(e.treeviewMenu);this.collapse(i,h)}c.addClass(f.open),b.slideDown(this.options.animationSpeed,function(){a(this.element).trigger(d)}.bind(this))},h.prototype.collapse=function(b,c){var d=a.Event(g.collapsed);b.find(e.open).removeClass(f.open),c.removeClass(f.open),b.slideUp(this.options.animationSpeed,function(){b.find(e.open+" > "+e.treeview).slideUp(),a(this.element).trigger(d)}.bind(this))},h.prototype._setUpListeners=function(){var b=this;a(this.element).on("click",this.options.trigger,function(c){b.toggle(a(this),c)})};var i=a.fn.tree;a.fn.tree=b,a.fn.tree.Constructor=h,a.fn.tree.noConflict=function(){return a.fn.tree=i,this},a(window).on("load",function(){a(e.data).each(function(){b.call(a(this))})})}(jQuery);
\ No newline at end of file diff --git a/public/bower_components/admin-lte/dist/js/demo.js b/public/bower_components/admin-lte/dist/js/demo.js new file mode 100644 index 0000000..24e54bd --- /dev/null +++ b/public/bower_components/admin-lte/dist/js/demo.js @@ -0,0 +1,349 @@ +/** + * AdminLTE Demo Menu + * ------------------ + * You should not use this file in production. + * This file is for demo purposes only. + */ +$(function () { + 'use strict' + + /** + * Get access to plugins + */ + + $('[data-toggle="control-sidebar"]').controlSidebar() + $('[data-toggle="push-menu"]').pushMenu() + + var $pushMenu = $('[data-toggle="push-menu"]').data('lte.pushmenu') + var $controlSidebar = $('[data-toggle="control-sidebar"]').data('lte.controlsidebar') + var $layout = $('body').data('lte.layout') + + /** + * List of all the available skins + * + * @type Array + */ + var mySkins = [ + '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' + ] + + /** + * 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!') + } + } + + /** + * 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!') + } + } + + /** + * Toggles layout classes + * + * @param String cls the layout class to toggle + * @returns void + */ + function changeLayout(cls) { + $('body').toggleClass(cls) + $layout.fixSidebar() + if ($('body').hasClass('fixed') && cls == 'fixed') { + $pushMenu.expandOnHover() + $layout.activate() + } + $controlSidebar.fix() + } + + /** + * 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 changeSkin(cls) { + $.each(mySkins, function (i) { + $('body').removeClass(mySkins[i]) + }) + + $('body').addClass(cls) + store('skin', cls) + return false + } + + /** + * Retrieve default settings and apply them to the template + * + * @returns void + */ + function setup() { + var tmp = get('skin') + if (tmp && $.inArray(tmp, mySkins)) + changeSkin(tmp) + + // Add the change skin listener + $('[data-skin]').on('click', function (e) { + if ($(this).hasClass('knob')) + return + e.preventDefault() + changeSkin($(this).data('skin')) + }) + + // Add the layout manager + $('[data-layout]').on('click', function () { + changeLayout($(this).data('layout')) + }) + + $('[data-controlsidebar]').on('click', function () { + changeLayout($(this).data('controlsidebar')) + var slide = !$controlSidebar.options.slide + + $controlSidebar.options.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) + $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') + } + + } + + // Create the new tab + var $tabPane = $('<div />', { + 'id' : 'control-sidebar-theme-demo-options-tab', + 'class': 'tab-pane active' + }) + + // Create the tab button + var $tabButton = $('<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($tabButton) + + // Create the menu + var $demoSettings = $('<div />') + + // Layout options + $demoSettings.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 $skinsList = $('<ul />', { 'class': 'list-unstyled clearfix' }) + + // Dark sidebar skins + var $skinBlue = + $('<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>') + $skinsList.append($skinBlue) + var $skinBlack = + $('<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>') + $skinsList.append($skinBlack) + var $skinPurple = + $('<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>') + $skinsList.append($skinPurple) + var $skinGreen = + $('<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>') + $skinsList.append($skinGreen) + var $skinRed = + $('<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>') + $skinsList.append($skinRed) + var $skinYellow = + $('<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>') + $skinsList.append($skinYellow) + + // Light sidebar skins + var $skinBlueLight = + $('<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>') + $skinsList.append($skinBlueLight) + var $skinBlackLight = + $('<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>') + $skinsList.append($skinBlackLight) + var $skinPurpleLight = + $('<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>') + $skinsList.append($skinPurpleLight) + var $skinGreenLight = + $('<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>') + $skinsList.append($skinGreenLight) + var $skinRedLight = + $('<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>') + $skinsList.append($skinRedLight) + var $skinYellowLight = + $('<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>') + $skinsList.append($skinYellowLight) + + $demoSettings.append('<h4 class="control-sidebar-heading">Skins</h4>') + $demoSettings.append($skinsList) + + $tabPane.append($demoSettings) + $('#control-sidebar-home-tab').after($tabPane) + + setup() + + $('[data-toggle="tooltip"]').tooltip() +}) diff --git a/public/bower_components/admin-lte/dist/js/pages/dashboard.js b/public/bower_components/admin-lte/dist/js/pages/dashboard.js new file mode 100644 index 0000000..75e77b9 --- /dev/null +++ b/public/bower_components/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 () { + window.console.log($(this), 'The element has been checked'); + }, + onUnCheck: function () { + window.console.log($(this), 'The element has been unchecked'); + } + }); + +}); diff --git a/public/bower_components/admin-lte/dist/js/pages/dashboard2.js b/public/bower_components/admin-lte/dist/js/pages/dashboard2.js new file mode 100644 index 0000000..2b8d9b4 --- /dev/null +++ b/public/bower_components/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') + }); + }); +}); |