mirror of
https://github.com/pixelfed/pixelfed.git
synced 2024-11-23 06:51:27 +00:00
1041 lines
20 KiB
JavaScript
1041 lines
20 KiB
JavaScript
|
|
||
|
/*!
|
||
|
|
||
|
=========================================================
|
||
|
* Argon Dashboard - v1.2.0
|
||
|
=========================================================
|
||
|
|
||
|
* Product Page: https://www.creative-tim.com/product/argon-dashboard
|
||
|
* Copyright 2020 Creative Tim (https://www.creative-tim.com)
|
||
|
* Licensed under MIT (https://github.com/creativetimofficial/argon-dashboard/blob/master/LICENSE.md)
|
||
|
|
||
|
* Coded by www.creative-tim.com
|
||
|
|
||
|
=========================================================
|
||
|
|
||
|
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||
|
|
||
|
*/
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Layout
|
||
|
//
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
var Layout = (function() {
|
||
|
|
||
|
function pinSidenav() {
|
||
|
$('.sidenav-toggler').addClass('active');
|
||
|
$('.sidenav-toggler').data('action', 'sidenav-unpin');
|
||
|
$('body').removeClass('g-sidenav-hidden').addClass('g-sidenav-show g-sidenav-pinned');
|
||
|
$('body').append('<div class="backdrop d-xl-none" data-action="sidenav-unpin" data-target='+$('#sidenav-main').data('target')+' />');
|
||
|
|
||
|
// Store the sidenav state in a cookie session
|
||
|
Cookies.set('sidenav-state', 'pinned');
|
||
|
}
|
||
|
|
||
|
function unpinSidenav() {
|
||
|
$('.sidenav-toggler').removeClass('active');
|
||
|
$('.sidenav-toggler').data('action', 'sidenav-pin');
|
||
|
$('body').removeClass('g-sidenav-pinned').addClass('g-sidenav-hidden');
|
||
|
$('body').find('.backdrop').remove();
|
||
|
|
||
|
// Store the sidenav state in a cookie session
|
||
|
Cookies.set('sidenav-state', 'unpinned');
|
||
|
}
|
||
|
|
||
|
// Set sidenav state from cookie
|
||
|
|
||
|
var $sidenavState = Cookies.get('sidenav-state') ? Cookies.get('sidenav-state') : 'pinned';
|
||
|
|
||
|
if($(window).width() > 1200) {
|
||
|
if($sidenavState == 'pinned') {
|
||
|
pinSidenav()
|
||
|
}
|
||
|
|
||
|
if(Cookies.get('sidenav-state') == 'unpinned') {
|
||
|
unpinSidenav()
|
||
|
}
|
||
|
|
||
|
$(window).resize(function() {
|
||
|
if( $('body').hasClass('g-sidenav-show') && !$('body').hasClass('g-sidenav-pinned')) {
|
||
|
$('body').removeClass('g-sidenav-show').addClass('g-sidenav-hidden');
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
if($(window).width() < 1200){
|
||
|
$('body').removeClass('g-sidenav-hide').addClass('g-sidenav-hidden');
|
||
|
$('body').removeClass('g-sidenav-show');
|
||
|
$(window).resize(function() {
|
||
|
if( $('body').hasClass('g-sidenav-show') && !$('body').hasClass('g-sidenav-pinned')) {
|
||
|
$('body').removeClass('g-sidenav-show').addClass('g-sidenav-hidden');
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
$("body").on("click", "[data-action]", function(e) {
|
||
|
|
||
|
e.preventDefault();
|
||
|
|
||
|
var $this = $(this);
|
||
|
var action = $this.data('action');
|
||
|
var target = $this.data('target');
|
||
|
|
||
|
|
||
|
// Manage actions
|
||
|
|
||
|
switch (action) {
|
||
|
case 'sidenav-pin':
|
||
|
pinSidenav();
|
||
|
break;
|
||
|
|
||
|
case 'sidenav-unpin':
|
||
|
unpinSidenav();
|
||
|
break;
|
||
|
|
||
|
case 'search-show':
|
||
|
target = $this.data('target');
|
||
|
$('body').removeClass('g-navbar-search-show').addClass('g-navbar-search-showing');
|
||
|
|
||
|
setTimeout(function() {
|
||
|
$('body').removeClass('g-navbar-search-showing').addClass('g-navbar-search-show');
|
||
|
}, 150);
|
||
|
|
||
|
setTimeout(function() {
|
||
|
$('body').addClass('g-navbar-search-shown');
|
||
|
}, 300)
|
||
|
break;
|
||
|
|
||
|
case 'search-close':
|
||
|
target = $this.data('target');
|
||
|
$('body').removeClass('g-navbar-search-shown');
|
||
|
|
||
|
setTimeout(function() {
|
||
|
$('body').removeClass('g-navbar-search-show').addClass('g-navbar-search-hiding');
|
||
|
}, 150);
|
||
|
|
||
|
setTimeout(function() {
|
||
|
$('body').removeClass('g-navbar-search-hiding').addClass('g-navbar-search-hidden');
|
||
|
}, 300);
|
||
|
|
||
|
setTimeout(function() {
|
||
|
$('body').removeClass('g-navbar-search-hidden');
|
||
|
}, 500);
|
||
|
break;
|
||
|
}
|
||
|
})
|
||
|
|
||
|
|
||
|
// Add sidenav modifier classes on mouse events
|
||
|
|
||
|
$('.sidenav').on('mouseenter', function() {
|
||
|
if(! $('body').hasClass('g-sidenav-pinned')) {
|
||
|
$('body').removeClass('g-sidenav-hide').removeClass('g-sidenav-hidden').addClass('g-sidenav-show');
|
||
|
}
|
||
|
})
|
||
|
|
||
|
$('.sidenav').on('mouseleave', function() {
|
||
|
if(! $('body').hasClass('g-sidenav-pinned')) {
|
||
|
$('body').removeClass('g-sidenav-show').addClass('g-sidenav-hide');
|
||
|
|
||
|
setTimeout(function() {
|
||
|
$('body').removeClass('g-sidenav-hide').addClass('g-sidenav-hidden');
|
||
|
}, 300);
|
||
|
}
|
||
|
})
|
||
|
|
||
|
|
||
|
// Make the body full screen size if it has not enough content inside
|
||
|
$(window).on('load resize', function() {
|
||
|
if($('body').height() < 800) {
|
||
|
$('body').css('min-height', '100vh');
|
||
|
$('#footer-main').addClass('footer-auto-bottom')
|
||
|
}
|
||
|
})
|
||
|
|
||
|
})();
|
||
|
|
||
|
//
|
||
|
// 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: true,
|
||
|
mode: 'index',
|
||
|
intersect: false,
|
||
|
}
|
||
|
},
|
||
|
doughnut: {
|
||
|
cutoutPercentage: 83,
|
||
|
legendCallback: function(chart) {
|
||
|
var data = chart.data;
|
||
|
var content = '';
|
||
|
|
||
|
data.labels.forEach(function(label, index) {
|
||
|
var bgColor = data.datasets[0].backgroundColor[index];
|
||
|
|
||
|
content += '<span class="chart-legend-item">';
|
||
|
content += '<i class="chart-legend-indicator" style="background-color: ' + bgColor + '"></i>';
|
||
|
content += label;
|
||
|
content += '</span>';
|
||
|
});
|
||
|
|
||
|
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,
|
||
|
drawOnChartArea: true,
|
||
|
zeroLineWidth: 0,
|
||
|
zeroLineColor: 'rgba(0,0,0,0)',
|
||
|
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 += '<span class="popover-body-label mr-auto">' + label + '</span>';
|
||
|
}
|
||
|
|
||
|
content += '<span class="popover-body-value">' + prefix + yLabel + suffix + '</span>';
|
||
|
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
|
||
|
};
|
||
|
|
||
|
})();
|
||
|
|
||
|
//
|
||
|
// 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);
|
||
|
}
|
||
|
|
||
|
})();
|
||
|
|
||
|
//
|
||
|
// 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 .navbar-custom-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);
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
var navbar_menu_visible = 0;
|
||
|
|
||
|
$( ".sidenav-toggler" ).click(function() {
|
||
|
if(navbar_menu_visible == 1){
|
||
|
$('body').removeClass('nav-open');
|
||
|
navbar_menu_visible = 0;
|
||
|
$('.bodyClick').remove();
|
||
|
|
||
|
} else {
|
||
|
|
||
|
var div = '<div class="bodyClick"></div>';
|
||
|
$(div).appendTo('body').click(function() {
|
||
|
$('body').removeClass('nav-open');
|
||
|
navbar_menu_visible = 0;
|
||
|
$('.bodyClick').remove();
|
||
|
|
||
|
});
|
||
|
|
||
|
$('body').addClass('nav-open');
|
||
|
navbar_menu_visible = 1;
|
||
|
|
||
|
}
|
||
|
|
||
|
});
|
||
|
|
||
|
})();
|
||
|
|
||
|
//
|
||
|
// 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: '<div class="popover ' + $popoverClass + '" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'
|
||
|
};
|
||
|
|
||
|
$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();
|
||
|
}
|
||
|
|
||
|
})();
|
||
|
|
||
|
//
|
||
|
// 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'));
|
||
|
}).trigger('blur');
|
||
|
}
|
||
|
|
||
|
|
||
|
// Events
|
||
|
|
||
|
if ($input.length) {
|
||
|
init($input);
|
||
|
}
|
||
|
|
||
|
})();
|
||
|
|
||
|
|
||
|
//
|
||
|
// Bars chart
|
||
|
//
|
||
|
|
||
|
var BarsChart = (function() {
|
||
|
|
||
|
//
|
||
|
// Variables
|
||
|
//
|
||
|
|
||
|
var $chart = $('#chart-bars');
|
||
|
|
||
|
|
||
|
//
|
||
|
// Methods
|
||
|
//
|
||
|
|
||
|
// Init chart
|
||
|
function initChart($chart) {
|
||
|
|
||
|
// Create chart
|
||
|
var ordersChart = new Chart($chart, {
|
||
|
type: 'bar',
|
||
|
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);
|
||
|
}
|
||
|
|
||
|
})();
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
//
|
||
|
// Sales chart
|
||
|
//
|
||
|
|
||
|
var UsersChart = (function() {
|
||
|
|
||
|
// Variables
|
||
|
|
||
|
var $chart = $('#c1-dark');
|
||
|
|
||
|
|
||
|
// Methods
|
||
|
|
||
|
function init($chart) {
|
||
|
|
||
|
var usersChart = new Chart($chart, {
|
||
|
type: 'line',
|
||
|
options: {
|
||
|
scales: {
|
||
|
yAxes: [{
|
||
|
gridLines: {
|
||
|
lineWidth: 1,
|
||
|
color: Charts.colors.gray[900],
|
||
|
zeroLineColor: Charts.colors.gray[900]
|
||
|
},
|
||
|
ticks: {
|
||
|
callback: function(value) {
|
||
|
if (!(value % 10)) {
|
||
|
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 + ' posts';
|
||
|
return content;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
data: {
|
||
|
labels: ['7', '6', '5', '4', '3', '2', '1'],
|
||
|
datasets: [{
|
||
|
label: '',
|
||
|
data: $('.posts-this-week').data('update').data.datasets[0].data
|
||
|
}]
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// Save to jQuery object
|
||
|
|
||
|
$chart.data('chart', usersChart);
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
// Events
|
||
|
|
||
|
if ($chart.length) {
|
||
|
init($chart);
|
||
|
}
|
||
|
|
||
|
})();
|
||
|
|
||
|
//
|
||
|
// 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));
|
||
|
});
|
||
|
}
|
||
|
|
||
|
})();
|
||
|
|
||
|
//
|
||
|
// 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]
|
||
|
})
|
||
|
}
|
||
|
|
||
|
})();
|
||
|
|
||
|
//
|
||
|
// Scrollbar
|
||
|
//
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
var Scrollbar = (function() {
|
||
|
|
||
|
// Variables
|
||
|
|
||
|
var $scrollbar = $('.scrollbar-inner');
|
||
|
|
||
|
|
||
|
// Methods
|
||
|
|
||
|
function init() {
|
||
|
$scrollbar.scrollbar().scrollLock()
|
||
|
}
|
||
|
|
||
|
|
||
|
// Events
|
||
|
|
||
|
if ($scrollbar.length) {
|
||
|
init();
|
||
|
}
|
||
|
|
||
|
})();
|