/*! ========================================================= * Argon Dashboard - v1.0.0 ========================================================= * Product Page: https://www.creative-tim.com/product/argon-dashboard * Copyright 2018 Creative Tim (https://www.creative-tim.com) & UPDIVISION (https://www.updivision.com) * Licensed under MIT (https://github.com/creativetimofficial/argon-dashboard/blob/master/LICENSE.md) * Coded by www.creative-tim.com & www.updivision.com ========================================================= * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. */ // // Bootstrap Datepicker // 'use strict'; var Datepicker = (function() { // Variables var $datepicker = $('.datepicker'); // Methods function init($this) { var options = { disableTouchKeyboard: true, autoclose: false }; $this.datepicker(options); } // Events if ($datepicker.length) { $datepicker.each(function() { init($(this)); }); } })(); // // Icon code copy/paste // 'use strict'; var CopyIcon = (function() { // Variables var $element = '.btn-icon-clipboard', $btn = $($element); // Methods function init($this) { $this.tooltip().on('mouseleave', function() { // Explicitly hide tooltip, since after clicking it remains // focused (as it's a button), so tooltip would otherwise // remain visible until focus is moved away $this.tooltip('hide'); }); var clipboard = new ClipboardJS($element); clipboard.on('success', function(e) { $(e.trigger) .attr('title', 'Copied!') .tooltip('_fixTitle') .tooltip('show') .attr('title', 'Copy to clipboard') .tooltip('_fixTitle') e.clearSelection() }); } // Events if ($btn.length) { init($btn); } })(); // // Form control // 'use strict'; var FormControl = (function() { // Variables var $input = $('.form-control'); // Methods function init($this) { $this.on('focus blur', function(e) { $(this).parents('.form-group').toggleClass('focused', (e.type === 'focus' || this.value.length > 0)); }).trigger('blur'); } // Events if ($input.length) { init($input); } })(); // // Google maps // var $map = $('#map-canvas'), map, lat, lng, color = "#5e72e4"; function initMap() { map = document.getElementById('map-canvas'); lat = map.getAttribute('data-lat'); lng = map.getAttribute('data-lng'); var myLatlng = new google.maps.LatLng(lat, lng); var mapOptions = { zoom: 12, scrollwheel: false, center: myLatlng, mapTypeId: google.maps.MapTypeId.ROADMAP, styles: [{"featureType":"administrative","elementType":"labels.text.fill","stylers":[{"color":"#444444"}]},{"featureType":"landscape","elementType":"all","stylers":[{"color":"#f2f2f2"}]},{"featureType":"poi","elementType":"all","stylers":[{"visibility":"off"}]},{"featureType":"road","elementType":"all","stylers":[{"saturation":-100},{"lightness":45}]},{"featureType":"road.highway","elementType":"all","stylers":[{"visibility":"simplified"}]},{"featureType":"road.arterial","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"transit","elementType":"all","stylers":[{"visibility":"off"}]},{"featureType":"water","elementType":"all","stylers":[{"color":color},{"visibility":"on"}]}] } map = new google.maps.Map(map, mapOptions); var marker = new google.maps.Marker({ position: myLatlng, map: map, animation: google.maps.Animation.DROP, title: 'Hello World!' }); var contentString = '

Argon Dashboard

' + '

A beautiful Dashboard for Bootstrap 4. It is Free and Open Source.

'; var infowindow = new google.maps.InfoWindow({ content: contentString }); google.maps.event.addListener(marker, 'click', function() { infowindow.open(map, marker); }); } if($map.length) { google.maps.event.addDomListener(window, 'load', initMap); } // // // // Headroom - show/hide navbar on scroll // // // // 'use strict'; // // var Headroom = (function() { // // // Variables // // var $headroom = $('#navbar-main'); // // // // Methods // // function init($this) { // // var headroom = new Headroom(document.querySelector("#navbar-main"), { // offset: 300, // tolerance: { // up: 30, // down: 30 // }, // }); // // // // // Events // // if ($headroom.length) { // headroom.init(); // } // // })(); // // Navbar // 'use strict'; var Navbar = (function() { // Variables var $nav = $('.navbar-nav, .navbar-nav .nav'); var $collapse = $('.navbar .collapse'); var $dropdown = $('.navbar .dropdown'); // Methods function accordion($this) { $this.closest($nav).find($collapse).not($this).collapse('hide'); } function closeDropdown($this) { var $dropdownMenu = $this.find('.dropdown-menu'); $dropdownMenu.addClass('close'); setTimeout(function() { $dropdownMenu.removeClass('close'); }, 200); } // Events $collapse.on({ 'show.bs.collapse': function() { accordion($(this)); } }) $dropdown.on({ 'hide.bs.dropdown': function() { closeDropdown($(this)); } }) })(); // // Navbar collapse // var NavbarCollapse = (function() { // Variables var $nav = $('.navbar-nav'), $collapse = $('.navbar .collapse'); // Methods function hideNavbarCollapse($this) { $this.addClass('collapsing-out'); } function hiddenNavbarCollapse($this) { $this.removeClass('collapsing-out'); } // Events if ($collapse.length) { $collapse.on({ 'hide.bs.collapse': function() { hideNavbarCollapse($collapse); } }) $collapse.on({ 'hidden.bs.collapse': function() { hiddenNavbarCollapse($collapse); } }) } })(); // // Form control // 'use strict'; var noUiSlider = (function() { // Variables // var $sliderContainer = $('.input-slider-container'), // $slider = $('.input-slider'), // $sliderId = $slider.attr('id'), // $sliderMinValue = $slider.data('range-value-min'); // $sliderMaxValue = $slider.data('range-value-max');; // // Methods // // function init($this) { // $this.on('focus blur', function(e) { // $this.parents('.form-group').toggleClass('focused', (e.type === 'focus' || this.value.length > 0)); // }).trigger('blur'); // } // // // // Events // // if ($input.length) { // init($input); // } if ($(".input-slider-container")[0]) { $('.input-slider-container').each(function() { var slider = $(this).find('.input-slider'); var sliderId = slider.attr('id'); var minValue = slider.data('range-value-min'); var maxValue = slider.data('range-value-max'); var sliderValue = $(this).find('.range-slider-value'); var sliderValueId = sliderValue.attr('id'); var startValue = sliderValue.data('range-value-low'); var c = document.getElementById(sliderId), d = document.getElementById(sliderValueId); noUiSlider.create(c, { start: [parseInt(startValue)], connect: [true, false], //step: 1000, range: { 'min': [parseInt(minValue)], 'max': [parseInt(maxValue)] } }); c.noUiSlider.on('update', function(a, b) { d.textContent = a[b]; }); }) } if ($("#input-slider-range")[0]) { var c = document.getElementById("input-slider-range"), d = document.getElementById("input-slider-range-value-low"), e = document.getElementById("input-slider-range-value-high"), f = [d, e]; noUiSlider.create(c, { start: [parseInt(d.getAttribute('data-range-value-low')), parseInt(e.getAttribute('data-range-value-high'))], connect: !0, range: { min: parseInt(c.getAttribute('data-range-value-min')), max: parseInt(c.getAttribute('data-range-value-max')) } }), c.noUiSlider.on("update", function(a, b) { f[b].textContent = a[b] }) } })(); // // Popover // 'use strict'; var Popover = (function() { // Variables var $popover = $('[data-toggle="popover"]'), $popoverClass = ''; // Methods function init($this) { if ($this.data('color')) { $popoverClass = 'popover-' + $this.data('color'); } var options = { trigger: 'focus', template: '' }; $this.popover(options); } // Events if ($popover.length) { $popover.each(function() { init($(this)); }); } })(); // // Scroll to (anchor links) // 'use strict'; var ScrollTo = (function() { // // Variables // var $scrollTo = $('.scroll-me, [data-scroll-to], .toc-entry a'); // // Methods // function scrollTo($this) { var $el = $this.attr('href'); var offset = $this.data('scroll-to-offset') ? $this.data('scroll-to-offset') : 0; var options = { scrollTop: $($el).offset().top - offset }; // Animate scroll to the selected section $('html, body').stop(true, true).animate(options, 600); event.preventDefault(); } // // Events // if ($scrollTo.length) { $scrollTo.on('click', function(event) { scrollTo($(this)); }); } })(); // // Tooltip // 'use strict'; var Tooltip = (function() { // Variables var $tooltip = $('[data-toggle="tooltip"]'); // Methods function init() { $tooltip.tooltip(); } // Events if ($tooltip.length) { init(); } })(); // // Charts // 'use strict'; var Charts = (function() { // Variable var $toggle = $('[data-toggle="chart"]'); var mode = 'light';//(themeMode) ? themeMode : 'light'; var fonts = { base: 'Open Sans' } // Colors var colors = { gray: { 100: '#f6f9fc', 200: '#e9ecef', 300: '#dee2e6', 400: '#ced4da', 500: '#adb5bd', 600: '#8898aa', 700: '#525f7f', 800: '#32325d', 900: '#212529' }, theme: { 'default': '#172b4d', 'primary': '#5e72e4', 'secondary': '#f4f5f7', 'info': '#11cdef', 'success': '#2dce89', 'danger': '#f5365c', 'warning': '#fb6340' }, black: '#12263F', white: '#FFFFFF', transparent: 'transparent', }; // Methods // Chart.js global options function chartOptions() { // Options var options = { defaults: { global: { responsive: true, maintainAspectRatio: false, defaultColor: (mode == 'dark') ? colors.gray[700] : colors.gray[600], defaultFontColor: (mode == 'dark') ? colors.gray[700] : colors.gray[600], defaultFontFamily: fonts.base, defaultFontSize: 13, layout: { padding: 0 }, legend: { display: false, position: 'bottom', labels: { usePointStyle: true, padding: 16 } }, elements: { point: { radius: 0, backgroundColor: colors.theme['primary'] }, line: { tension: .4, borderWidth: 4, borderColor: colors.theme['primary'], backgroundColor: colors.transparent, borderCapStyle: 'rounded' }, rectangle: { backgroundColor: colors.theme['warning'] }, arc: { backgroundColor: colors.theme['primary'], borderColor: (mode == 'dark') ? colors.gray[800] : colors.white, borderWidth: 4 } }, tooltips: { enabled: false, mode: 'index', intersect: false, custom: function(model) { // Get tooltip var $tooltip = $('#chart-tooltip'); // Create tooltip on first render if (!$tooltip.length) { $tooltip = $(''); // Append to body $('body').append($tooltip); } // Hide if no tooltip if (model.opacity === 0) { $tooltip.css('display', 'none'); return; } function getBody(bodyItem) { return bodyItem.lines; } // Fill with content if (model.body) { var titleLines = model.title || []; var bodyLines = model.body.map(getBody); var html = ''; // Add arrow html += '
'; // Add header titleLines.forEach(function(title) { html += '

' + title + '

'; }); // Add body bodyLines.forEach(function(body, i) { var colors = model.labelColors[i]; var styles = 'background-color: ' + colors.backgroundColor; var indicator = ''; var align = (bodyLines.length > 1) ? 'justify-content-left' : 'justify-content-center'; html += '
' + indicator + body + '
'; }); $tooltip.html(html); } // Get tooltip position var $canvas = $(this._chart.canvas); var canvasWidth = $canvas.outerWidth(); var canvasHeight = $canvas.outerHeight(); var canvasTop = $canvas.offset().top; var canvasLeft = $canvas.offset().left; var tooltipWidth = $tooltip.outerWidth(); var tooltipHeight = $tooltip.outerHeight(); var top = canvasTop + model.caretY - tooltipHeight - 16; var left = canvasLeft + model.caretX - tooltipWidth / 2; // Display tooltip $tooltip.css({ 'top': top + 'px', 'left': left + 'px', 'display': 'block', 'z-index': '100' }); }, callbacks: { label: function(item, data) { var label = data.datasets[item.datasetIndex].label || ''; var yLabel = item.yLabel; var content = ''; if (data.datasets.length > 1) { content += '' + label + ''; } content += '' + yLabel + '' ; return content; } } } }, doughnut: { cutoutPercentage: 83, tooltips: { callbacks: { title: function(item, data) { var title = data.labels[item[0].index]; return title; }, label: function(item, data) { var value = data.datasets[0].data[item.index]; var content = ''; content += '' + value + ''; return content; } } }, legendCallback: function(chart) { var data = chart.data; var content = ''; data.labels.forEach(function(label, index) { var bgColor = data.datasets[0].backgroundColor[index]; content += ''; content += ''; content += label; content += ''; }); return content; } } } } // yAxes Chart.scaleService.updateScaleDefaults('linear', { gridLines: { borderDash: [2], borderDashOffset: [2], color: (mode == 'dark') ? colors.gray[900] : colors.gray[300], drawBorder: false, drawTicks: false, lineWidth: 0, zeroLineWidth: 0, zeroLineColor: (mode == 'dark') ? colors.gray[900] : colors.gray[300], zeroLineBorderDash: [2], zeroLineBorderDashOffset: [2] }, ticks: { beginAtZero: true, padding: 10, callback: function(value) { if (!(value % 10)) { return value } } } }); // xAxes Chart.scaleService.updateScaleDefaults('category', { gridLines: { drawBorder: false, drawOnChartArea: false, drawTicks: false }, ticks: { padding: 20 }, maxBarThickness: 10 }); return options; } // Parse global options function parseOptions(parent, options) { for (var item in options) { if (typeof options[item] !== 'object') { parent[item] = options[item]; } else { parseOptions(parent[item], options[item]); } } } // Push options function pushOptions(parent, options) { for (var item in options) { if (Array.isArray(options[item])) { options[item].forEach(function(data) { parent[item].push(data); }); } else { pushOptions(parent[item], options[item]); } } } // Pop options function popOptions(parent, options) { for (var item in options) { if (Array.isArray(options[item])) { options[item].forEach(function(data) { parent[item].pop(); }); } else { popOptions(parent[item], options[item]); } } } // Toggle options function toggleOptions(elem) { var options = elem.data('add'); var $target = $(elem.data('target')); var $chart = $target.data('chart'); if (elem.is(':checked')) { // Add options pushOptions($chart, options); // Update chart $chart.update(); } else { // Remove options popOptions($chart, options); // Update chart $chart.update(); } } // Update options function updateOptions(elem) { var options = elem.data('update'); var $target = $(elem.data('target')); var $chart = $target.data('chart'); // Parse options parseOptions($chart, options); // Toggle ticks toggleTicks(elem, $chart); // Update chart $chart.update(); } // Toggle ticks function toggleTicks(elem, $chart) { if (elem.data('prefix') !== undefined || elem.data('prefix') !== undefined) { var prefix = elem.data('prefix') ? elem.data('prefix') : ''; var suffix = elem.data('suffix') ? elem.data('suffix') : ''; // Update ticks $chart.options.scales.yAxes[0].ticks.callback = function(value) { if (!(value % 10)) { return prefix + value + suffix; } } // Update tooltips $chart.options.tooltips.callbacks.label = function(item, data) { var label = data.datasets[item.datasetIndex].label || ''; var yLabel = item.yLabel; var content = ''; if (data.datasets.length > 1) { content += '' + label + ''; } content += '' + prefix + yLabel + suffix + ''; return content; } } } // Events // Parse global options if (window.Chart) { parseOptions(Chart, chartOptions()); } // Toggle options $toggle.on({ 'change': function() { var $this = $(this); if ($this.is('[data-add]')) { toggleOptions($this); } }, 'click': function() { var $this = $(this); if ($this.is('[data-update]')) { updateOptions($this); } } }); // Return return { colors: colors, fonts: fonts, mode: mode }; })(); // // Orders chart // var OrdersChart = (function() { // // Variables // var $chart = $('#chart-orders'); var $ordersSelect = $('[name="ordersSelect"]'); // // Methods // // Init chart function initChart($chart) { // Create chart var ordersChart = new Chart($chart, { type: 'bar', options: { scales: { yAxes: [{ ticks: { callback: function(value) { if (!(value % 10)) { //return '$' + value + 'k' return value } } } }] }, tooltips: { callbacks: { label: function(item, data) { var label = data.datasets[item.datasetIndex].label || ''; var yLabel = item.yLabel; var content = ''; if (data.datasets.length > 1) { content += '' + label + ''; } content += '' + yLabel + ''; return content; } } } }, data: { labels: ['Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], datasets: [{ label: 'Sales', data: [25, 20, 30, 22, 17, 29] }] } }); // Save to jQuery object $chart.data('chart', ordersChart); } // Init chart if ($chart.length) { initChart($chart); } })(); // // Charts // 'use strict'; // // Sales chart // var SalesChart = (function() { // Variables var $chart = $('#chart-sales'); // Methods function init($chart) { var salesChart = new Chart($chart, { type: 'line', options: { scales: { yAxes: [{ gridLines: { color: Charts.colors.gray[900], zeroLineColor: Charts.colors.gray[900] }, ticks: { callback: function(value) { if (!(value % 10)) { return '$' + value + 'k'; } } } }] }, tooltips: { callbacks: { label: function(item, data) { var label = data.datasets[item.datasetIndex].label || ''; var yLabel = item.yLabel; var content = ''; if (data.datasets.length > 1) { content += '' + label + ''; } content += '$' + yLabel + 'k'; return content; } } } }, data: { labels: ['May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], datasets: [{ label: 'Performance', data: [0, 20, 10, 30, 15, 40, 20, 60, 60] }] } }); // Save to jQuery object $chart.data('chart', salesChart); }; // Events if ($chart.length) { init($chart); } })();