mirror of
https://github.com/cwinfo/powerdns-admin.git
synced 2024-11-14 01:20:27 +00:00
630 lines
23 KiB
JavaScript
630 lines
23 KiB
JavaScript
|
var Index = function () {
|
||
|
|
||
|
return {
|
||
|
|
||
|
//main function
|
||
|
init: function () {
|
||
|
Metronic.addResizeHandler(function () {
|
||
|
jQuery('.vmaps').each(function () {
|
||
|
var map = jQuery(this);
|
||
|
map.width(map.parent().width());
|
||
|
});
|
||
|
});
|
||
|
},
|
||
|
|
||
|
initJQVMAP: function () {
|
||
|
if (!jQuery().vectorMap) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var showMap = function (name) {
|
||
|
jQuery('.vmaps').hide();
|
||
|
jQuery('#vmap_' + name).show();
|
||
|
}
|
||
|
|
||
|
var setMap = function (name) {
|
||
|
var data = {
|
||
|
map: 'world_en',
|
||
|
backgroundColor: null,
|
||
|
borderColor: '#333333',
|
||
|
borderOpacity: 0.5,
|
||
|
borderWidth: 1,
|
||
|
color: '#c6c6c6',
|
||
|
enableZoom: true,
|
||
|
hoverColor: '#c9dfaf',
|
||
|
hoverOpacity: null,
|
||
|
values: sample_data,
|
||
|
normalizeFunction: 'linear',
|
||
|
scaleColors: ['#b6da93', '#909cae'],
|
||
|
selectedColor: '#c9dfaf',
|
||
|
selectedRegion: null,
|
||
|
showTooltip: true,
|
||
|
onLabelShow: function (event, label, code) {
|
||
|
|
||
|
},
|
||
|
onRegionOver: function (event, code) {
|
||
|
if (code == 'ca') {
|
||
|
event.preventDefault();
|
||
|
}
|
||
|
},
|
||
|
onRegionClick: function (element, code, region) {
|
||
|
var message = 'You clicked "' + region + '" which has the code: ' + code.toUpperCase();
|
||
|
alert(message);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
data.map = name + '_en';
|
||
|
var map = jQuery('#vmap_' + name);
|
||
|
if (!map) {
|
||
|
return;
|
||
|
}
|
||
|
map.width(map.parent().parent().width());
|
||
|
map.show();
|
||
|
map.vectorMap(data);
|
||
|
map.hide();
|
||
|
}
|
||
|
|
||
|
setMap("world");
|
||
|
setMap("usa");
|
||
|
setMap("europe");
|
||
|
setMap("russia");
|
||
|
setMap("germany");
|
||
|
showMap("world");
|
||
|
|
||
|
jQuery('#regional_stat_world').click(function () {
|
||
|
showMap("world");
|
||
|
});
|
||
|
|
||
|
jQuery('#regional_stat_usa').click(function () {
|
||
|
showMap("usa");
|
||
|
});
|
||
|
|
||
|
jQuery('#regional_stat_europe').click(function () {
|
||
|
showMap("europe");
|
||
|
});
|
||
|
jQuery('#regional_stat_russia').click(function () {
|
||
|
showMap("russia");
|
||
|
});
|
||
|
jQuery('#regional_stat_germany').click(function () {
|
||
|
showMap("germany");
|
||
|
});
|
||
|
|
||
|
$('#region_statistics_loading').hide();
|
||
|
$('#region_statistics_content').show();
|
||
|
},
|
||
|
|
||
|
initCalendar: function () {
|
||
|
if (!jQuery().fullCalendar) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var date = new Date();
|
||
|
var d = date.getDate();
|
||
|
var m = date.getMonth();
|
||
|
var y = date.getFullYear();
|
||
|
|
||
|
var h = {};
|
||
|
|
||
|
if ($('#calendar').width() <= 400) {
|
||
|
$('#calendar').addClass("mobile");
|
||
|
h = {
|
||
|
left: 'title, prev, next',
|
||
|
center: '',
|
||
|
right: 'today,month,agendaWeek,agendaDay'
|
||
|
};
|
||
|
} else {
|
||
|
$('#calendar').removeClass("mobile");
|
||
|
if (Metronic.isRTL()) {
|
||
|
h = {
|
||
|
right: 'title',
|
||
|
center: '',
|
||
|
left: 'prev,next,today,month,agendaWeek,agendaDay'
|
||
|
};
|
||
|
} else {
|
||
|
h = {
|
||
|
left: 'title',
|
||
|
center: '',
|
||
|
right: 'prev,next,today,month,agendaWeek,agendaDay'
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
$('#calendar').fullCalendar('destroy'); // destroy the calendar
|
||
|
$('#calendar').fullCalendar({ //re-initialize the calendar
|
||
|
disableDragging : false,
|
||
|
header: h,
|
||
|
editable: true,
|
||
|
events: [{
|
||
|
title: 'All Day',
|
||
|
start: new Date(y, m, 1),
|
||
|
backgroundColor: Metronic.getBrandColor('yellow')
|
||
|
}, {
|
||
|
title: 'Long Event',
|
||
|
start: new Date(y, m, d - 5),
|
||
|
end: new Date(y, m, d - 2),
|
||
|
backgroundColor: Metronic.getBrandColor('blue')
|
||
|
}, {
|
||
|
title: 'Repeating Event',
|
||
|
start: new Date(y, m, d - 3, 16, 0),
|
||
|
allDay: false,
|
||
|
backgroundColor: Metronic.getBrandColor('red')
|
||
|
}, {
|
||
|
title: 'Repeating Event',
|
||
|
start: new Date(y, m, d + 6, 16, 0),
|
||
|
allDay: false,
|
||
|
backgroundColor: Metronic.getBrandColor('green')
|
||
|
}, {
|
||
|
title: 'Meeting',
|
||
|
start: new Date(y, m, d+9, 10, 30),
|
||
|
allDay: false
|
||
|
}, {
|
||
|
title: 'Lunch',
|
||
|
start: new Date(y, m, d, 14, 0),
|
||
|
end: new Date(y, m, d, 14, 0),
|
||
|
backgroundColor: Metronic.getBrandColor('grey'),
|
||
|
allDay: false
|
||
|
}, {
|
||
|
title: 'Birthday',
|
||
|
start: new Date(y, m, d + 1, 19, 0),
|
||
|
end: new Date(y, m, d + 1, 22, 30),
|
||
|
backgroundColor: Metronic.getBrandColor('purple'),
|
||
|
allDay: false
|
||
|
}, {
|
||
|
title: 'Click for Google',
|
||
|
start: new Date(y, m, 28),
|
||
|
end: new Date(y, m, 29),
|
||
|
backgroundColor: Metronic.getBrandColor('yellow'),
|
||
|
url: 'http://google.com/'
|
||
|
}]
|
||
|
});
|
||
|
},
|
||
|
|
||
|
initCharts: function () {
|
||
|
if (!jQuery.plot) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
function showChartTooltip(x, y, xValue, yValue) {
|
||
|
$('<div id="tooltip" class="chart-tooltip">' + yValue + '<\/div>').css({
|
||
|
position: 'absolute',
|
||
|
display: 'none',
|
||
|
top: y - 40,
|
||
|
left: x - 40,
|
||
|
border: '0px solid #ccc',
|
||
|
padding: '2px 6px',
|
||
|
'background-color': '#fff'
|
||
|
}).appendTo("body").fadeIn(200);
|
||
|
}
|
||
|
|
||
|
var data = [];
|
||
|
var totalPoints = 250;
|
||
|
|
||
|
// random data generator for plot charts
|
||
|
|
||
|
function getRandomData() {
|
||
|
if (data.length > 0) data = data.slice(1);
|
||
|
// do a random walk
|
||
|
while (data.length < totalPoints) {
|
||
|
var prev = data.length > 0 ? data[data.length - 1] : 50;
|
||
|
var y = prev + Math.random() * 10 - 5;
|
||
|
if (y < 0) y = 0;
|
||
|
if (y > 100) y = 100;
|
||
|
data.push(y);
|
||
|
}
|
||
|
// zip the generated y values with the x values
|
||
|
var res = [];
|
||
|
for (var i = 0; i < data.length; ++i) res.push([i, data[i]])
|
||
|
return res;
|
||
|
}
|
||
|
|
||
|
function randValue() {
|
||
|
return (Math.floor(Math.random() * (1 + 50 - 20))) + 10;
|
||
|
}
|
||
|
|
||
|
var visitors = [
|
||
|
['02/2013', 1500],
|
||
|
['03/2013', 2500],
|
||
|
['04/2013', 1700],
|
||
|
['05/2013', 800],
|
||
|
['06/2013', 1500],
|
||
|
['07/2013', 2350],
|
||
|
['08/2013', 1500],
|
||
|
['09/2013', 1300],
|
||
|
['10/2013', 4600]
|
||
|
];
|
||
|
|
||
|
|
||
|
if ($('#site_statistics').size() != 0) {
|
||
|
|
||
|
$('#site_statistics_loading').hide();
|
||
|
$('#site_statistics_content').show();
|
||
|
|
||
|
var plot_statistics = $.plot($("#site_statistics"),
|
||
|
[{
|
||
|
data: visitors,
|
||
|
lines: {
|
||
|
fill: 0.6,
|
||
|
lineWidth: 0
|
||
|
},
|
||
|
color: ['#f89f9f']
|
||
|
}, {
|
||
|
data: visitors,
|
||
|
points: {
|
||
|
show: true,
|
||
|
fill: true,
|
||
|
radius: 5,
|
||
|
fillColor: "#f89f9f",
|
||
|
lineWidth: 3
|
||
|
},
|
||
|
color: '#fff',
|
||
|
shadowSize: 0
|
||
|
}],
|
||
|
|
||
|
{
|
||
|
xaxis: {
|
||
|
tickLength: 0,
|
||
|
tickDecimals: 0,
|
||
|
mode: "categories",
|
||
|
min: 0,
|
||
|
font: {
|
||
|
lineHeight: 14,
|
||
|
style: "normal",
|
||
|
variant: "small-caps",
|
||
|
color: "#6F7B8A"
|
||
|
}
|
||
|
},
|
||
|
yaxis: {
|
||
|
ticks: 5,
|
||
|
tickDecimals: 0,
|
||
|
tickColor: "#eee",
|
||
|
font: {
|
||
|
lineHeight: 14,
|
||
|
style: "normal",
|
||
|
variant: "small-caps",
|
||
|
color: "#6F7B8A"
|
||
|
}
|
||
|
},
|
||
|
grid: {
|
||
|
hoverable: true,
|
||
|
clickable: true,
|
||
|
tickColor: "#eee",
|
||
|
borderColor: "#eee",
|
||
|
borderWidth: 1
|
||
|
}
|
||
|
});
|
||
|
|
||
|
var previousPoint = null;
|
||
|
$("#site_statistics").bind("plothover", function (event, pos, item) {
|
||
|
$("#x").text(pos.x.toFixed(2));
|
||
|
$("#y").text(pos.y.toFixed(2));
|
||
|
if (item) {
|
||
|
if (previousPoint != item.dataIndex) {
|
||
|
previousPoint = item.dataIndex;
|
||
|
|
||
|
$("#tooltip").remove();
|
||
|
var x = item.datapoint[0].toFixed(2),
|
||
|
y = item.datapoint[1].toFixed(2);
|
||
|
|
||
|
showChartTooltip(item.pageX, item.pageY, item.datapoint[0], item.datapoint[1] + ' visits');
|
||
|
}
|
||
|
} else {
|
||
|
$("#tooltip").remove();
|
||
|
previousPoint = null;
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
if ($('#site_activities').size() != 0) {
|
||
|
//site activities
|
||
|
var previousPoint2 = null;
|
||
|
$('#site_activities_loading').hide();
|
||
|
$('#site_activities_content').show();
|
||
|
|
||
|
var data1 = [
|
||
|
['DEC', 300],
|
||
|
['JAN', 600],
|
||
|
['FEB', 1100],
|
||
|
['MAR', 1200],
|
||
|
['APR', 860],
|
||
|
['MAY', 1200],
|
||
|
['JUN', 1450],
|
||
|
['JUL', 1800],
|
||
|
['AUG', 1200],
|
||
|
['SEP', 600]
|
||
|
];
|
||
|
|
||
|
|
||
|
var plot_statistics = $.plot($("#site_activities"),
|
||
|
|
||
|
[{
|
||
|
data: data1,
|
||
|
lines: {
|
||
|
fill: 0.2,
|
||
|
lineWidth: 0,
|
||
|
},
|
||
|
color: ['#BAD9F5']
|
||
|
}, {
|
||
|
data: data1,
|
||
|
points: {
|
||
|
show: true,
|
||
|
fill: true,
|
||
|
radius: 4,
|
||
|
fillColor: "#9ACAE6",
|
||
|
lineWidth: 2
|
||
|
},
|
||
|
color: '#9ACAE6',
|
||
|
shadowSize: 1
|
||
|
}, {
|
||
|
data: data1,
|
||
|
lines: {
|
||
|
show: true,
|
||
|
fill: false,
|
||
|
lineWidth: 3
|
||
|
},
|
||
|
color: '#9ACAE6',
|
||
|
shadowSize: 0
|
||
|
}],
|
||
|
|
||
|
{
|
||
|
|
||
|
xaxis: {
|
||
|
tickLength: 0,
|
||
|
tickDecimals: 0,
|
||
|
mode: "categories",
|
||
|
min: 0,
|
||
|
font: {
|
||
|
lineHeight: 18,
|
||
|
style: "normal",
|
||
|
variant: "small-caps",
|
||
|
color: "#6F7B8A"
|
||
|
}
|
||
|
},
|
||
|
yaxis: {
|
||
|
ticks: 5,
|
||
|
tickDecimals: 0,
|
||
|
tickColor: "#eee",
|
||
|
font: {
|
||
|
lineHeight: 14,
|
||
|
style: "normal",
|
||
|
variant: "small-caps",
|
||
|
color: "#6F7B8A"
|
||
|
}
|
||
|
},
|
||
|
grid: {
|
||
|
hoverable: true,
|
||
|
clickable: true,
|
||
|
tickColor: "#eee",
|
||
|
borderColor: "#eee",
|
||
|
borderWidth: 1
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$("#site_activities").bind("plothover", function (event, pos, item) {
|
||
|
$("#x").text(pos.x.toFixed(2));
|
||
|
$("#y").text(pos.y.toFixed(2));
|
||
|
if (item) {
|
||
|
if (previousPoint2 != item.dataIndex) {
|
||
|
previousPoint2 = item.dataIndex;
|
||
|
$("#tooltip").remove();
|
||
|
var x = item.datapoint[0].toFixed(2),
|
||
|
y = item.datapoint[1].toFixed(2);
|
||
|
showChartTooltip(item.pageX, item.pageY, item.datapoint[0], item.datapoint[1] + 'M$');
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$('#site_activities').bind("mouseleave", function () {
|
||
|
$("#tooltip").remove();
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
|
||
|
initMiniCharts: function () {
|
||
|
if (!jQuery().easyPieChart || !jQuery().sparkline) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// IE8 Fix: function.bind polyfill
|
||
|
if (Metronic.isIE8() && !Function.prototype.bind) {
|
||
|
Function.prototype.bind = function (oThis) {
|
||
|
if (typeof this !== "function") {
|
||
|
// closest thing possible to the ECMAScript 5 internal IsCallable function
|
||
|
throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
|
||
|
}
|
||
|
|
||
|
var aArgs = Array.prototype.slice.call(arguments, 1),
|
||
|
fToBind = this,
|
||
|
fNOP = function () {},
|
||
|
fBound = function () {
|
||
|
return fToBind.apply(this instanceof fNOP && oThis ? this : oThis,
|
||
|
aArgs.concat(Array.prototype.slice.call(arguments)));
|
||
|
};
|
||
|
|
||
|
fNOP.prototype = this.prototype;
|
||
|
fBound.prototype = new fNOP();
|
||
|
|
||
|
return fBound;
|
||
|
};
|
||
|
}
|
||
|
|
||
|
$('.easy-pie-chart .number.transactions').easyPieChart({
|
||
|
animate: 1000,
|
||
|
size: 75,
|
||
|
lineWidth: 3,
|
||
|
barColor: Metronic.getBrandColor('yellow')
|
||
|
});
|
||
|
|
||
|
$('.easy-pie-chart .number.visits').easyPieChart({
|
||
|
animate: 1000,
|
||
|
size: 75,
|
||
|
lineWidth: 3,
|
||
|
barColor: Metronic.getBrandColor('green')
|
||
|
});
|
||
|
|
||
|
$('.easy-pie-chart .number.bounce').easyPieChart({
|
||
|
animate: 1000,
|
||
|
size: 75,
|
||
|
lineWidth: 3,
|
||
|
barColor: Metronic.getBrandColor('red')
|
||
|
});
|
||
|
|
||
|
$('.easy-pie-chart-reload').click(function () {
|
||
|
$('.easy-pie-chart .number').each(function () {
|
||
|
var newValue = Math.floor(100 * Math.random());
|
||
|
$(this).data('easyPieChart').update(newValue);
|
||
|
$('span', this).text(newValue);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
$("#sparkline_bar").sparkline([8, 9, 10, 11, 10, 10, 12, 10, 10, 11, 9, 12, 11, 10, 9, 11, 13, 13, 12], {
|
||
|
type: 'bar',
|
||
|
width: '100',
|
||
|
barWidth: 5,
|
||
|
height: '55',
|
||
|
barColor: '#35aa47',
|
||
|
negBarColor: '#e02222'
|
||
|
});
|
||
|
|
||
|
$("#sparkline_bar2").sparkline([9, 11, 12, 13, 12, 13, 10, 14, 13, 11, 11, 12, 11, 11, 10, 12, 11, 10], {
|
||
|
type: 'bar',
|
||
|
width: '100',
|
||
|
barWidth: 5,
|
||
|
height: '55',
|
||
|
barColor: '#ffb848',
|
||
|
negBarColor: '#e02222'
|
||
|
});
|
||
|
|
||
|
$("#sparkline_line").sparkline([9, 10, 9, 10, 10, 11, 12, 10, 10, 11, 11, 12, 11, 10, 12, 11, 10, 12], {
|
||
|
type: 'line',
|
||
|
width: '100',
|
||
|
height: '55',
|
||
|
lineColor: '#ffb848'
|
||
|
});
|
||
|
|
||
|
},
|
||
|
|
||
|
initChat: function () {
|
||
|
|
||
|
var cont = $('#chats');
|
||
|
var list = $('.chats', cont);
|
||
|
var form = $('.chat-form', cont);
|
||
|
var input = $('input', form);
|
||
|
var btn = $('.btn', form);
|
||
|
|
||
|
var handleClick = function (e) {
|
||
|
e.preventDefault();
|
||
|
|
||
|
var text = input.val();
|
||
|
if (text.length == 0) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var time = new Date();
|
||
|
var time_str = (time.getHours() + ':' + time.getMinutes());
|
||
|
var tpl = '';
|
||
|
tpl += '<li class="out">';
|
||
|
tpl += '<img class="avatar" alt="" src="' + Layout.getLayoutImgPath() + 'avatar1.jpg"/>';
|
||
|
tpl += '<div class="message">';
|
||
|
tpl += '<span class="arrow"></span>';
|
||
|
tpl += '<a href="#" class="name">Bob Nilson</a> ';
|
||
|
tpl += '<span class="datetime">at ' + time_str + '</span>';
|
||
|
tpl += '<span class="body">';
|
||
|
tpl += text;
|
||
|
tpl += '</span>';
|
||
|
tpl += '</div>';
|
||
|
tpl += '</li>';
|
||
|
|
||
|
var msg = list.append(tpl);
|
||
|
input.val("");
|
||
|
|
||
|
var getLastPostPos = function () {
|
||
|
var height = 0;
|
||
|
cont.find("li.out, li.in").each(function () {
|
||
|
height = height + $(this).outerHeight();
|
||
|
});
|
||
|
|
||
|
return height;
|
||
|
}
|
||
|
|
||
|
cont.find('.scroller').slimScroll({
|
||
|
scrollTo: getLastPostPos()
|
||
|
});
|
||
|
}
|
||
|
|
||
|
$('body').on('click', '.message .name', function (e) {
|
||
|
e.preventDefault(); // prevent click event
|
||
|
|
||
|
var name = $(this).text(); // get clicked user's full name
|
||
|
input.val('@' + name + ':'); // set it into the input field
|
||
|
Metronic.scrollTo(input); // scroll to input if needed
|
||
|
});
|
||
|
|
||
|
btn.click(handleClick);
|
||
|
|
||
|
input.keypress(function (e) {
|
||
|
if (e.which == 13) {
|
||
|
handleClick(e);
|
||
|
return false; //<---- Add this line
|
||
|
}
|
||
|
});
|
||
|
},
|
||
|
|
||
|
initDashboardDaterange: function () {
|
||
|
|
||
|
if (!jQuery().daterangepicker) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$('#dashboard-report-range').daterangepicker({
|
||
|
opens: (Metronic.isRTL() ? 'right' : 'left'),
|
||
|
startDate: moment().subtract('days', 29),
|
||
|
endDate: moment(),
|
||
|
minDate: '01/01/2012',
|
||
|
maxDate: '12/31/2014',
|
||
|
dateLimit: {
|
||
|
days: 60
|
||
|
},
|
||
|
showDropdowns: false,
|
||
|
showWeekNumbers: true,
|
||
|
timePicker: false,
|
||
|
timePickerIncrement: 1,
|
||
|
timePicker12Hour: true,
|
||
|
ranges: {
|
||
|
'Today': [moment(), moment()],
|
||
|
'Yesterday': [moment().subtract('days', 1), moment().subtract('days', 1)],
|
||
|
'Last 7 Days': [moment().subtract('days', 6), moment()],
|
||
|
'Last 30 Days': [moment().subtract('days', 29), moment()],
|
||
|
'This Month': [moment().startOf('month'), moment().endOf('month')],
|
||
|
'Last Month': [moment().subtract('month', 1).startOf('month'), moment().subtract('month', 1).endOf('month')]
|
||
|
},
|
||
|
buttonClasses: ['btn btn-sm'],
|
||
|
applyClass: ' blue',
|
||
|
cancelClass: 'default',
|
||
|
format: 'MM/DD/YYYY',
|
||
|
separator: ' to ',
|
||
|
locale: {
|
||
|
applyLabel: 'Apply',
|
||
|
fromLabel: 'From',
|
||
|
toLabel: 'To',
|
||
|
customRangeLabel: 'Custom Range',
|
||
|
daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
|
||
|
monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
|
||
|
firstDay: 1
|
||
|
}
|
||
|
},
|
||
|
function (start, end) {
|
||
|
$('#dashboard-report-range span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
|
||
|
}
|
||
|
);
|
||
|
|
||
|
|
||
|
$('#dashboard-report-range span').html(moment().subtract('days', 29).format('MMMM D, YYYY') + ' - ' + moment().format('MMMM D, YYYY'));
|
||
|
$('#dashboard-report-range').show();
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
}();
|