diff --git a/static/js/core/black-dashboard.js b/static/js/core/black-dashboard.js
new file mode 100644
index 0000000..8162bd9
--- /dev/null
+++ b/static/js/core/black-dashboard.js
@@ -0,0 +1,432 @@
+"use strict";
+
+/*!
+
+=========================================================
+* Black Dashboard Pro - v1.1.1
+=========================================================
+
+* Product Page: https://themes.getbootstrap.com/product/black-dashboard-pro-premium-bootstrap-4-admin/
+* Copyright 2019 Creative Tim (https://www.creative-tim.com)
+* Coded by Creative Tim
+
+=========================================================
+
+* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+*/
+
+var transparent = true;
+var transparentDemo = true;
+var fixedTop = false;
+
+var navbar_initialized = false;
+var backgroundOrange = false;
+var sidebar_mini_active = false;
+var toggle_initialized = false;
+
+var $html = $('html');
+var $body = $('body');
+var $navbar_minimize_fixed = $('.navbar-minimize-fixed');
+var $collapse = $('.collapse');
+var $navbar = $('.navbar');
+var $tagsinput = $('.tagsinput');
+var $selectpicker = $('.selectpicker');
+var $navbar_color = $('.navbar[color-on-scroll]');
+var $full_screen_map = $('.full-screen-map');
+var $datetimepicker = $('.datetimepicker');
+var $datepicker = $('.datepicker');
+var $timepicker = $('.timepicker');
+
+var seq = 0,
+ delays = 80,
+ durations = 500;
+var seq2 = 0,
+ delays2 = 80,
+ durations2 = 500;
+
+// Returns a function, that, as long as it continues to be invoked, will not
+// be triggered. The function will be called after it stops being called for
+// N milliseconds. If `immediate` is passed, trigger the function on the
+// leading edge, instead of the trailing.
+
+function debounce(func, wait, immediate) {
+ var timeout;
+ return function() {
+ var context = this,
+ args = arguments;
+ clearTimeout(timeout);
+ timeout = setTimeout(function() {
+ timeout = null;
+ if (!immediate) func.apply(context, args);
+ }, wait);
+ if (immediate && !timeout) func.apply(context, args);
+ };
+};
+
+(function() {
+ var isWindows = navigator.platform.indexOf('Win') > -1 ? true : false;
+
+ if (isWindows) {
+ // if we are on windows OS we activate the perfectScrollbar function
+ if ($('.main-panel').length != 0) {
+ var ps = new PerfectScrollbar('.main-panel', {
+ wheelSpeed: 2,
+ wheelPropagation: true,
+ minScrollbarLength: 20,
+ suppressScrollX: true
+ });
+ }
+
+ if ($('.sidebar .sidebar-wrapper').length != 0) {
+
+ var ps1 = new PerfectScrollbar('.sidebar .sidebar-wrapper');
+ $('.table-responsive').each(function() {
+ var ps2 = new PerfectScrollbar($(this)[0]);
+ });
+ }
+
+
+
+ $html.addClass('perfect-scrollbar-on');
+ } else {
+ $html.addClass('perfect-scrollbar-off');
+ }
+})();
+
+$(document).ready(function() {
+
+ var scroll_start = 0;
+ var startchange = $('.row');
+ var offset = startchange.offset();
+ var scrollElement = navigator.platform.indexOf('Win') > -1 ? $(".ps") : $(window);
+ scrollElement.scroll(function() {
+
+ scroll_start = $(this).scrollTop();
+
+ if (scroll_start > 50) {
+ $navbar_minimize_fixed.css('opacity', '1');
+ } else {
+ $navbar_minimize_fixed.css('opacity', '0');
+ }
+ });
+
+ // hide the siblings opened collapse
+
+ $collapse.on('show.bs.collapse', function() {
+ $(this).parent().siblings().children('.collapse').each(function() {
+ $(this).collapse('hide');
+ });
+ });
+
+ // Activate the Tooltips
+ $('[data-toggle="tooltip"], [rel="tooltip"]').tooltip();
+
+ // Activate Popovers and set color for popovers
+ $('[data-toggle="popover"]').each(function() {
+ color_class = $(this).data('color');
+ $(this).popover({
+ template: '
'
+ });
+ });
+
+ var tagClass = $tagsinput.data('color');
+
+ if ($tagsinput.length != 0) {
+ $tagsinput.tagsinput();
+ }
+
+ $('.bootstrap-tagsinput').find('.tag').addClass('badge-' + tagClass);
+
+ // Activate bootstrap-select
+ if ($selectpicker.length != 0) {
+ $selectpicker.selectpicker({
+ iconBase: "tim-icons",
+ tickIcon: "icon-check-2"
+ });
+ }
+
+ //when you click the modal search button the navbar will not be collapsed
+ $("#search-button").click(function() {
+ $(this).closest('.navbar-collapse').removeClass('show');
+ $navbar.addClass('navbar-transparent').removeClass('bg-white');
+ $('#inlineFormInputGroup').focus();
+ });
+
+
+
+ blackDashboard.initMinimizeSidebar();
+
+ var scroll_distance = $navbar_color.attr('color-on-scroll') || 500;
+
+ // Check if we have the class "navbar-color-on-scroll" then add the function to remove the class "navbar-transparent" so it will transform to a plain color.
+ if ($navbar_color.length != 0) {
+ blackDashboard.checkScrollForTransparentNavbar();
+ $(window).on('scroll', blackDashboard.checkScrollForTransparentNavbar)
+ }
+
+ if ($full_screen_map.length == 0 && $('.bd-docs').length == 0) {
+ // On click navbar-collapse the menu will be white not transparent
+ $('.navbar-toggler').click(function() {
+ $collapse.on('show.bs.collapse', function() {
+ $(this).closest('.navbar').removeClass('navbar-transparent').addClass('bg-white');
+ }).on('hide.bs.collapse', function() {
+ $(this).closest('.navbar').addClass('navbar-transparent').removeClass('bg-white');
+ });
+ $navbar.css('transition', '');
+
+ });
+ }
+
+ $navbar.css({
+ 'top': '0',
+ 'transition': 'all .5s linear'
+ });
+
+ $('.form-control').on("focus", function() {
+ $(this).parent('.input-group').addClass("input-group-focus");
+ }).on("blur", function() {
+ $(this).parent(".input-group").removeClass("input-group-focus");
+ });
+
+ // Activate bootstrapSwitch
+ $('.bootstrap-switch').each(function() {
+ var data_on_label = $(this).data('on-label') || '';
+ var data_off_label = $(this).data('off-label') || '';
+
+ $(this).bootstrapSwitch({
+ onText: data_on_label,
+ offText: data_off_label
+ });
+ });
+});
+
+$(document).on('click', '.navbar-toggle', function() {
+ var $toggle = $(this);
+
+ if (blackDashboard.misc.navbar_menu_visible == 1) {
+ $html.removeClass('nav-open');
+ blackDashboard.misc.navbar_menu_visible = 0;
+ setTimeout(function() {
+ $toggle.removeClass('toggled');
+ $('.bodyClick').remove();
+ }, 550);
+
+ } else {
+ setTimeout(function() {
+ $toggle.addClass('toggled');
+ }, 580);
+
+ var div = '';
+ $(div).appendTo('body').click(function() {
+ $html.removeClass('nav-open');
+ blackDashboard.misc.navbar_menu_visible = 0;
+ setTimeout(function() {
+ $toggle.removeClass('toggled');
+ $('.bodyClick').remove();
+ }, 550);
+ });
+
+ $html.addClass('nav-open');
+ blackDashboard.misc.navbar_menu_visible = 1;
+ }
+});
+
+$(window).resize(function() {
+ // reset the seq for charts drawing animations
+ seq = seq2 = 0;
+
+ if ($full_screen_map.length == 0 && $('.bd-docs').length == 0) {
+ var isExpanded = $navbar.find('[data-toggle="collapse"]').attr("aria-expanded");
+ if ($navbar.hasClass('bg-white') && $(window).width() > 991) {
+ $navbar.removeClass('bg-white').addClass('navbar-transparent');
+ } else if ($navbar.hasClass('navbar-transparent') && $(window).width() < 991 && isExpanded != "false") {
+ $navbar.addClass('bg-white').removeClass('navbar-transparent');
+ }
+ }
+});
+
+var blackDashboard = {
+ misc: {
+ navbar_menu_visible: 0
+ },
+
+ checkScrollForTransparentNavbar: debounce(function() {
+ if ($(document).scrollTop() > scroll_distance) {
+ if (transparent) {
+ transparent = false;
+ $navbar_color.removeClass('navbar-transparent');
+ }
+ } else {
+ if (!transparent) {
+ transparent = true;
+ $navbar_color.addClass('navbar-transparent');
+ }
+ }
+ }, 17),
+
+
+
+ // Activate DateTimePicker
+
+ initDateTimePicker: function() {
+ if ($datetimepicker.length != 0) {
+ $datetimepicker.datetimepicker({
+ format: 'YYYY-MM-DD H:mm',
+ icons: {
+ time: "tim-icons icon-watch-time",
+ date: "tim-icons icon-calendar-60",
+ up: "fa fa-chevron-up",
+ down: "fa fa-chevron-down",
+ previous: 'tim-icons icon-minimal-left',
+ next: 'tim-icons icon-minimal-right',
+ today: 'fa fa-screenshot',
+ clear: 'fa fa-trash',
+ close: 'fa fa-remove'
+ }
+ });
+ }
+
+ if ($datepicker.length != 0) {
+ $datepicker.datetimepicker({
+ format: 'YYYY-MM-DD',
+ icons: {
+ time: "tim-icons icon-watch-time",
+ date: "tim-icons icon-calendar-60",
+ up: "fa fa-chevron-up",
+ down: "fa fa-chevron-down",
+ previous: 'tim-icons icon-minimal-left',
+ next: 'tim-icons icon-minimal-right',
+ today: 'fa fa-screenshot',
+ clear: 'fa fa-trash',
+ close: 'fa fa-remove'
+ }
+ });
+ }
+
+ if ($timepicker.length != 0) {
+ $timepicker.datetimepicker({
+ format: 'H:mm', // use this format if you want the 24hours timepicker
+ // format: 'h:mm A', //use this format if you want the 12hours timpiecker with AM/PM toggle
+ icons: {
+ time: "tim-icons icon-watch-time",
+ date: "tim-icons icon-calendar-60",
+ up: "fa fa-chevron-up",
+ down: "fa fa-chevron-down",
+ previous: 'tim-icons icon-minimal-left',
+ next: 'tim-icons icon-minimal-right',
+ today: 'fa fa-screenshot',
+ clear: 'fa fa-trash',
+ close: 'fa fa-remove'
+ }
+ });
+ }
+ },
+
+ initMinimizeSidebar: function() {
+ if ($('.sidebar-mini').length != 0) {
+ sidebar_mini_active = true;
+ }
+
+ $('.minimize-sidebar').click(function() {
+
+ if (sidebar_mini_active == true) {
+ $body.removeClass('sidebar-mini');
+ sidebar_mini_active = false;
+ blackDashboard.showSidebarMessage('Sidebar mini deactivated...');
+ } else {
+ $body.addClass('sidebar-mini');
+ sidebar_mini_active = true;
+ blackDashboard.showSidebarMessage('Sidebar mini activated...');
+ }
+
+ // we simulate the window Resize so the charts will get updated in realtime.
+ var simulateWindowResize = setInterval(function() {
+ window.dispatchEvent(new Event('resize'));
+ }, 180);
+
+ // we stop the simulation of Window Resize after the animations are completed
+ setTimeout(function() {
+ clearInterval(simulateWindowResize);
+ }, 1000);
+ });
+ },
+
+ startAnimationForLineChart: function(chart) {
+ chart.on('draw', function(data) {
+ if (data.type === 'line' || data.type === 'area') {
+ data.element.animate({
+ d: {
+ begin: 600,
+ dur: 700,
+ from: data.path.clone().scale(1, 0).translate(0, data.chartRect.height()).stringify(),
+ to: data.path.clone().stringify(),
+ easing: Chartist.Svg.Easing.easeOutQuint
+ }
+ });
+ } else if (data.type === 'point') {
+ seq++;
+ data.element.animate({
+ opacity: {
+ begin: seq * delays,
+ dur: durations,
+ from: 0,
+ to: 1,
+ easing: 'ease'
+ }
+ });
+ }
+ });
+
+ seq = 0;
+ },
+ startAnimationForBarChart: function(chart) {
+
+ chart.on('draw', function(data) {
+ if (data.type === 'bar') {
+ seq2++;
+ data.element.animate({
+ opacity: {
+ begin: seq2 * delays2,
+ dur: durations2,
+ from: 0,
+ to: 1,
+ easing: 'ease'
+ }
+ });
+ }
+ });
+
+ seq2 = 0;
+ },
+ showSidebarMessage: function(message) {
+ try {
+ $.notify({
+ icon: "tim-icons icon-bell-55",
+ message: message
+ }, {
+ type: 'primary',
+ timer: 4000,
+ placement: {
+ from: 'top',
+ align: 'right'
+ }
+ });
+ } catch (e) {
+ console.log('Notify library is missing, please make sure you have the notifications library added.');
+ }
+
+ }
+};
+
+function hexToRGB(hex, alpha) {
+ var r = parseInt(hex.slice(1, 3), 16),
+ g = parseInt(hex.slice(3, 5), 16),
+ b = parseInt(hex.slice(5, 7), 16);
+
+ if (alpha) {
+ return "rgba(" + r + ", " + g + ", " + b + ", " + alpha + ")";
+ } else {
+ return "rgb(" + r + ", " + g + ", " + b + ")";
+ }
+}
diff --git a/static/js/core/black-dashboard.js.map b/static/js/core/black-dashboard.js.map
new file mode 100644
index 0000000..eba650c
--- /dev/null
+++ b/static/js/core/black-dashboard.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["_site_dashboard_pro/assets/js/dashboard-pro.js"],"names":["transparent","transparentDemo","fixedTop","navbar_initialized","backgroundOrange","sidebar_mini_active","toggle_initialized","$html","$","$body","$navbar_minimize_fixed","$collapse","$navbar","$tagsinput","$selectpicker","$navbar_color","$full_screen_map","$datetimepicker","$datepicker","$timepicker","seq","delays","durations","seq2","delays2","durations2","debounce","func","wait","immediate","timeout","context","this","args","arguments","clearTimeout","setTimeout","apply","navigator","platform","indexOf","length","PerfectScrollbar","wheelSpeed","wheelPropagation","minScrollbarLength","suppressScrollX","each","addClass","document","ready","offset","window","scroll","scrollTop","css","on","parent","siblings","children","collapse","tooltip","color_class","data","popover","template","tagClass","tagsinput","find","selectpicker","iconBase","tickIcon","click","closest","removeClass","blackDashboard","initMinimizeSidebar","attr","checkScrollForTransparentNavbar","top","transition","data_on_label","data_off_label","bootstrapSwitch","onText","offText","resize","isExpanded","hasClass","width","misc","navbar_menu_visible","scroll_distance","initDateTimePicker","datetimepicker","icons","time","date","up","down","previous","next","today","clear","close","format","showSidebarMessage","simulateWindowResize","setInterval","dispatchEvent","Event","clearInterval","startAnimationForLineChart","chart","type","element","animate","d","begin","dur","from","path","clone","scale","translate","chartRect","height","stringify","to","easing","Chartist","Svg","Easing","easeOutQuint","opacity","startAnimationForBarChart","message","notify","icon","timer","placement","align","e","console","log","hexToRGB","hex","alpha","r","parseInt","slice","g","b"],"mappings":"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"}
\ No newline at end of file
diff --git a/static/js/core/black-dashboard.min.js b/static/js/core/black-dashboard.min.js
new file mode 100644
index 0000000..40106f0
--- /dev/null
+++ b/static/js/core/black-dashboard.min.js
@@ -0,0 +1,17 @@
+/*!
+
+=========================================================
+* Black Dashboard Pro - v1.1.1
+=========================================================
+
+* Product Page: https://themes.getbootstrap.com/product/black-dashboard-pro-premium-bootstrap-4-admin/
+* Copyright 2019 Creative Tim (https://www.creative-tim.com)
+* Coded by Creative Tim
+
+=========================================================
+
+* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+*/
+
+"use strict";var transparent=!0,transparentDemo=!0,fixedTop=!1,navbar_initialized=!1,backgroundOrange=!1,sidebar_mini_active=!1,toggle_initialized=!1,$html=$("html"),$body=$("body"),$navbar_minimize_fixed=$(".navbar-minimize-fixed"),$collapse=$(".collapse"),$navbar=$(".navbar"),$tagsinput=$(".tagsinput"),$selectpicker=$(".selectpicker"),$navbar_color=$(".navbar[color-on-scroll]"),$full_screen_map=$(".full-screen-map"),$datetimepicker=$(".datetimepicker"),$datepicker=$(".datepicker"),$timepicker=$(".timepicker"),seq=0,delays=80,durations=500,seq2=0,delays2=80,durations2=500;function debounce(a,e,i){var n;return function(){var t=this,o=arguments;clearTimeout(n),n=setTimeout(function(){n=null,i||a.apply(t,o)},e),i&&!n&&a.apply(t,o)}}!function(){if(navigator.platform.indexOf("Win")>-1){if(0!=$(".main-panel").length)new PerfectScrollbar(".main-panel",{wheelSpeed:2,wheelPropagation:!0,minScrollbarLength:20,suppressScrollX:!0});if(0!=$(".sidebar .sidebar-wrapper").length){new PerfectScrollbar(".sidebar .sidebar-wrapper");$(".table-responsive").each(function(){new PerfectScrollbar($(this)[0])})}$html.addClass("perfect-scrollbar-on")}else $html.addClass("perfect-scrollbar-off")}(),$(document).ready(function(){$(".row").offset();(navigator.platform.indexOf("Win")>-1?$(".ps"):$(window)).scroll(function(){$(this).scrollTop()>50?$navbar_minimize_fixed.css("opacity","1"):$navbar_minimize_fixed.css("opacity","0")}),$collapse.on("show.bs.collapse",function(){$(this).parent().siblings().children(".collapse").each(function(){$(this).collapse("hide")})}),$('[data-toggle="tooltip"], [rel="tooltip"]').tooltip(),$('[data-toggle="popover"]').each(function(){color_class=$(this).data("color"),$(this).popover({template:''})});var a=$tagsinput.data("color");0!=$tagsinput.length&&$tagsinput.tagsinput(),$(".bootstrap-tagsinput").find(".tag").addClass("badge-"+a),0!=$selectpicker.length&&$selectpicker.selectpicker({iconBase:"tim-icons",tickIcon:"icon-check-2"}),$("#search-button").click(function(){$(this).closest(".navbar-collapse").removeClass("show"),$navbar.addClass("navbar-transparent").removeClass("bg-white")}),blackDashboard.initMinimizeSidebar();$navbar_color.attr("color-on-scroll");0!=$navbar_color.length&&(blackDashboard.checkScrollForTransparentNavbar(),$(window).on("scroll",blackDashboard.checkScrollForTransparentNavbar)),0==$full_screen_map.length&&0==$(".bd-docs").length&&$(".navbar-toggler").click(function(){$collapse.on("show.bs.collapse",function(){$(this).closest(".navbar").removeClass("navbar-transparent").addClass("bg-white")}).on("hide.bs.collapse",function(){$(this).closest(".navbar").addClass("navbar-transparent").removeClass("bg-white")}),$navbar.css("transition","")}),$navbar.css({top:"0",transition:"all .5s linear"}),$(".form-control").on("focus",function(){$(this).parent(".input-group").addClass("input-group-focus")}).on("blur",function(){$(this).parent(".input-group").removeClass("input-group-focus")}),$(".bootstrap-switch").each(function(){var a=$(this).data("on-label")||"",e=$(this).data("off-label")||"";$(this).bootstrapSwitch({onText:a,offText:e})})}),$(document).on("click",".navbar-toggle",function(){var a=$(this);if(1==blackDashboard.misc.navbar_menu_visible)$html.removeClass("nav-open"),blackDashboard.misc.navbar_menu_visible=0,setTimeout(function(){a.removeClass("toggled"),$(".bodyClick").remove()},550);else{setTimeout(function(){a.addClass("toggled")},580);$('').appendTo("body").click(function(){$html.removeClass("nav-open"),blackDashboard.misc.navbar_menu_visible=0,setTimeout(function(){a.removeClass("toggled"),$(".bodyClick").remove()},550)}),$html.addClass("nav-open"),blackDashboard.misc.navbar_menu_visible=1}}),$(window).resize(function(){if(seq=seq2=0,0==$full_screen_map.length&&0==$(".bd-docs").length){var a=$navbar.find('[data-toggle="collapse"]').attr("aria-expanded");$navbar.hasClass("bg-white")&&$(window).width()>991?$navbar.removeClass("bg-white").addClass("navbar-transparent"):$navbar.hasClass("navbar-transparent")&&$(window).width()<991&&"false"!=a&&$navbar.addClass("bg-white").removeClass("navbar-transparent")}});var blackDashboard={misc:{navbar_menu_visible:0},checkScrollForTransparentNavbar:debounce(function(){$(document).scrollTop()>scroll_distance?transparent&&(transparent=!1,$navbar_color.removeClass("navbar-transparent")):transparent||(transparent=!0,$navbar_color.addClass("navbar-transparent"))},17),initDateTimePicker:function(){0!=$datetimepicker.length&&$datetimepicker.datetimepicker({icons:{time:"tim-icons icon-watch-time",date:"tim-icons icon-calendar-60",up:"fa fa-chevron-up",down:"fa fa-chevron-down",previous:"tim-icons icon-minimal-left",next:"tim-icons icon-minimal-right",today:"fa fa-screenshot",clear:"fa fa-trash",close:"fa fa-remove"}}),0!=$datepicker.length&&$datepicker.datetimepicker({format:"MM/DD/YYYY",icons:{time:"tim-icons icon-watch-time",date:"tim-icons icon-calendar-60",up:"fa fa-chevron-up",down:"fa fa-chevron-down",previous:"tim-icons icon-minimal-left",next:"tim-icons icon-minimal-right",today:"fa fa-screenshot",clear:"fa fa-trash",close:"fa fa-remove"}}),0!=$timepicker.length&&$timepicker.datetimepicker({format:"h:mm A",icons:{time:"tim-icons icon-watch-time",date:"tim-icons icon-calendar-60",up:"fa fa-chevron-up",down:"fa fa-chevron-down",previous:"tim-icons icon-minimal-left",next:"tim-icons icon-minimal-right",today:"fa fa-screenshot",clear:"fa fa-trash",close:"fa fa-remove"}})},initMinimizeSidebar:function(){0!=$(".sidebar-mini").length&&(sidebar_mini_active=!0),$(".minimize-sidebar").click(function(){1==sidebar_mini_active?($body.removeClass("sidebar-mini"),sidebar_mini_active=!1,blackDashboard.showSidebarMessage("Sidebar mini deactivated...")):($body.addClass("sidebar-mini"),sidebar_mini_active=!0,blackDashboard.showSidebarMessage("Sidebar mini activated..."));var a=setInterval(function(){window.dispatchEvent(new Event("resize"))},180);setTimeout(function(){clearInterval(a)},1e3)})},startAnimationForLineChart:function(a){a.on("draw",function(a){"line"===a.type||"area"===a.type?a.element.animate({d:{begin:600,dur:700,from:a.path.clone().scale(1,0).translate(0,a.chartRect.height()).stringify(),to:a.path.clone().stringify(),easing:Chartist.Svg.Easing.easeOutQuint}}):"point"===a.type&&(seq++,a.element.animate({opacity:{begin:seq*delays,dur:durations,from:0,to:1,easing:"ease"}}))}),seq=0},startAnimationForBarChart:function(a){a.on("draw",function(a){"bar"===a.type&&(seq2++,a.element.animate({opacity:{begin:seq2*delays2,dur:durations2,from:0,to:1,easing:"ease"}}))}),seq2=0},showSidebarMessage:function(a){try{$.notify({icon:"tim-icons icon-bell-55",message:a},{type:"primary",timer:4e3,placement:{from:"top",align:"right"}})}catch(a){console.log("Notify library is missing, please make sure you have the notifications library added.")}}};function hexToRGB(a,e){var i=parseInt(a.slice(1,3),16),n=parseInt(a.slice(3,5),16),t=parseInt(a.slice(5,7),16);return e?"rgba("+i+", "+n+", "+t+", "+e+")":"rgb("+i+", "+n+", "+t+")"}