lampuotomatis/resources/js/pages/widgets.init.js

798 lines
22 KiB
JavaScript

/*
Template Name: Grenviro Monitoring
Author: Themesbrand
Website: https://Themesbrand.com/
Contact: Themesbrand@gmail.com
File: Widgets init js
*/
// get colors array from the string
function getChartColorsArray(chartId) {
if (document.getElementById(chartId) !== null) {
var colors = document.getElementById(chartId).getAttribute("data-colors");
if (colors) {
colors = JSON.parse(colors);
return colors.map(function (value) {
var newValue = value.replace(" ", "");
if (newValue.indexOf(",") === -1) {
var color = getComputedStyle(document.documentElement).getPropertyValue(newValue);
if (color) return color;
else return newValue;;
} else {
var val = value.split(',');
if (val.length == 2) {
var rgbaColor = getComputedStyle(document.documentElement).getPropertyValue(val[0]);
rgbaColor = "rgba(" + rgbaColor + "," + val[1] + ")";
return rgbaColor;
} else {
return newValue;
}
}
});
} else {
console.warn('data-colors Attribute not found on:', chartId);
}
}
}
// world map with line & markers
var vectorMapWorldLineColors = getChartColorsArray("users-by-country");
if (vectorMapWorldLineColors)
var worldlinemap = new jsVectorMap({
map: "world_merc",
selector: "#users-by-country",
zoomOnScroll: true,
zoomButtons: true,
markers: [{
name: "Greenland",
coords: [72, -42]
},
{
name: "Canada",
coords: [56.1304, -106.3468]
},
{
name: "Brazil",
coords: [-14.2350, -51.9253]
},
{
name: "Egypt",
coords: [26.8206, 30.8025]
},
{
name: "Russia",
coords: [61, 105]
},
{
name: "China",
coords: [35.8617, 104.1954]
},
{
name: "United States",
coords: [37.0902, -95.7129]
},
{
name: "Norway",
coords: [60.472024, 8.468946]
},
{
name: "Ukraine",
coords: [48.379433, 31.16558]
},
],
lines: [{
from: "Canada",
to: "Egypt"
},
{
from: "Russia",
to: "Egypt"
},
{
from: "Greenland",
to: "Egypt"
},
{
from: "Brazil",
to: "Egypt"
},
{
from: "United States",
to: "Egypt"
},
{
from: "China",
to: "Egypt"
},
{
from: "Norway",
to: "Egypt"
},
{
from: "Ukraine",
to: "Egypt"
},
],
regionStyle: {
initial: {
stroke: "#9599ad",
strokeWidth: 0.25,
fill: vectorMapWorldLineColors,
fillOpacity: 1,
},
},
lineStyle: {
animation: true,
strokeDasharray: "6 3 6",
},
})
// Countries charts
var barchartCountriesColors = getChartColorsArray("countries_charts");
if (barchartCountriesColors) {
var options = {
series: [{
data: [1010, 1640, 490, 1255, 1050, 689, 800, 420, 1085, 589],
name: 'Sessions',
}],
chart: {
type: 'bar',
height: 436,
toolbar: {
show: false,
}
},
plotOptions: {
bar: {
borderRadius: 4,
horizontal: true,
distributed: true,
dataLabels: {
position: 'top',
},
}
},
colors: barchartCountriesColors,
dataLabels: {
enabled: true,
offsetX: 32,
style: {
fontSize: '12px',
fontWeight: 400,
colors: ['#adb5bd']
}
},
legend: {
show: false,
},
grid: {
show: false,
},
xaxis: {
categories: ['India', 'United States', 'China', 'Indonesia', 'Russia', 'Bangladesh', 'Canada', 'Brazil', 'Vietnam', 'UK'],
},
};
var chart = new ApexCharts(document.querySelector("#countries_charts"), options);
chart.render();
}
// Audiences metrics column charts
var chartAudienceColumnChartsColors = getChartColorsArray("audiences_metrics_charts");
if (chartAudienceColumnChartsColors) {
var columnoptions = {
series: [{
name: 'Last Year',
data: [25.3, 12.5, 20.2, 18.5, 40.4, 25.4, 15.8, 22.3, 19.2, 25.3, 12.5, 20.2]
}, {
name: 'Current Year',
data: [36.2, 22.4, 38.2, 30.5, 26.4, 30.4, 20.2, 29.6, 10.9, 36.2, 22.4, 38.2]
}],
chart: {
type: 'bar',
height: 306,
stacked: true,
toolbar: {
show: false,
}
},
plotOptions: {
bar: {
horizontal: false,
columnWidth: '30%',
borderRadius: 6,
},
},
dataLabels: {
enabled: false,
},
legend: {
show: true,
position: 'bottom',
horizontalAlign: 'center',
fontWeight: 400,
fontSize: '8px',
offsetX: 0,
offsetY: 0,
markers: {
width: 9,
height: 9,
radius: 4,
},
},
stroke: {
show: true,
width: 2,
colors: ['transparent']
},
grid: {
show: false,
},
colors: chartAudienceColumnChartsColors,
xaxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
axisTicks: {
show: false,
},
axisBorder: {
show: true,
strokeDashArray: 1,
height: 1,
width: '100%',
offsetX: 0,
offsetY: 0
},
},
yaxis: {
show: false
},
fill: {
opacity: 1
}
};
var chart = new ApexCharts(document.querySelector("#audiences_metrics_charts"), columnoptions);
chart.render();
}
// Sales by Locations
var vectorMapUsaColors = getChartColorsArray("sales-by-locations");
if (vectorMapUsaColors)
var usmap = new jsVectorMap({
map: 'us_merc_en',
selector: "#sales-by-locations",
regionStyle: {
initial: {
stroke: "#9599ad",
strokeWidth: 0.25,
fill: vectorMapUsaColors,
fillOpacity: 1,
},
},
zoomOnScroll: false,
zoomButtons: false,
})
// Total Portfolio Donut Charts
var donutchartportfolioColors = getChartColorsArray("portfolio_donut_charts");
if (donutchartportfolioColors) {
var options = {
series: [19405, 40552, 15824, 30635],
labels: ["Bitcoin", "Ethereum", "Litecoin", "Dash"],
chart: {
type: "donut",
height: 210,
},
plotOptions: {
pie: {
size: 100,
offsetX: 0,
offsetY: 0,
donut: {
size: "70%",
labels: {
show: true,
name: {
show: true,
fontSize: '18px',
offsetY: -5,
},
value: {
show: true,
fontSize: '20px',
color: '#343a40',
fontWeight: 500,
offsetY: 5,
formatter: function (val) {
return "$" + val
}
},
total: {
show: true,
fontSize: '13px',
label: 'Total value',
color: '#9599ad',
fontWeight: 500,
formatter: function (w) {
return "$" + w.globals.seriesTotals.reduce(function (a, b) {
return a + b
}, 0)
}
}
}
},
},
},
dataLabels: {
enabled: false,
},
legend: {
show: false,
},
yaxis: {
labels: {
formatter: function (value) {
return "$" + value;
}
}
},
stroke: {
lineCap: "round",
width: 2
},
colors: donutchartportfolioColors,
};
var chart = new ApexCharts(document.querySelector("#portfolio_donut_charts"), options);
chart.render();
}
// Color Range
// Heatmap Charts Generatedata
function generateData(count, yrange) {
var i = 0;
var series = [];
while (i < count) {
var x = 'w' + (i + 1).toString();
var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min;
series.push({
x: x,
y: y
});
i++;
}
return series;
}
var chartHeatMapColors = getChartColorsArray("color_heatmap");
if (chartHeatMapColors) {
var options = {
series: [{
name: 'Jan',
data: generateData(20, {
min: -30,
max: 55
})
},
{
name: 'Feb',
data: generateData(20, {
min: -30,
max: 55
})
},
{
name: 'Mar',
data: generateData(20, {
min: -30,
max: 55
})
},
{
name: 'Apr',
data: generateData(20, {
min: -30,
max: 55
})
},
{
name: 'May',
data: generateData(20, {
min: -30,
max: 55
})
},
{
name: 'Jun',
data: generateData(20, {
min: -30,
max: 55
})
},
{
name: 'Jul',
data: generateData(20, {
min: -30,
max: 55
})
},
{
name: 'Aug',
data: generateData(20, {
min: -30,
max: 55
})
},
{
name: 'Sep',
data: generateData(20, {
min: -30,
max: 55
})
}
],
chart: {
height: 310,
type: 'heatmap',
toolbar: {
show: false
}
},
legend: {
show: false,
},
plotOptions: {
heatmap: {
shadeIntensity: 0.5,
radius: 0,
useFillColorAsStroke: true,
colorScale: {
ranges: [{
from: -30,
to: 5,
name: 'Youtube',
color: chartHeatMapColors[0]
},
{
from: 6,
to: 20,
name: 'Meta',
color: chartHeatMapColors[1]
},
{
from: 21,
to: 45,
name: 'Google',
color: chartHeatMapColors[2]
},
{
from: 46,
to: 55,
name: 'Medium',
color: chartHeatMapColors[3]
},
{
from: 36,
to: 40,
name: 'Other',
color: chartHeatMapColors[4]
}
]
}
}
},
dataLabels: {
enabled: false
},
stroke: {
width: 1
},
title: {
style: {
fontWeight: 500,
},
},
};
var chart = new ApexCharts(document.querySelector("#color_heatmap"), options);
chart.render();
}
// results_sparkline_charts
var areachartbitcoinColors = getChartColorsArray("results_sparkline_charts");
if (areachartbitcoinColors) {
var options = {
series: [{
name: "Results",
data: [0, 68, 35, 90, 99],
},],
chart: {
width: 140,
type: "area",
sparkline: {
enabled: true,
},
toolbar: {
show: false,
},
},
dataLabels: {
enabled: false,
},
stroke: {
curve: "smooth",
width: 1.5,
},
fill: {
type: "gradient",
gradient: {
shadeIntensity: 1,
inverseColors: false,
opacityFrom: 0.45,
opacityTo: 0.05,
stops: [50, 100, 100, 100],
},
},
colors: areachartbitcoinColors,
};
var chart = new ApexCharts(document.querySelector("#results_sparkline_charts"), options);
chart.render();
}
// results_sparkline_charts
var areachartbitcoinColors = getChartColorsArray("results_sparkline_charts2");
if (areachartbitcoinColors) {
var options = {
series: [{
name: "Results",
data: [0, 98, 85, 90, 67],
},],
chart: {
width: 140,
type: "area",
sparkline: {
enabled: true,
},
toolbar: {
show: false,
},
},
dataLabels: {
enabled: false,
},
stroke: {
curve: "smooth",
width: 1.5,
},
fill: {
type: "gradient",
gradient: {
shadeIntensity: 1,
inverseColors: false,
opacityFrom: 0.45,
opacityTo: 0.05,
stops: [50, 100, 100, 100],
},
},
colors: areachartbitcoinColors,
};
var chart = new ApexCharts(document.querySelector("#results_sparkline_charts2"), options);
chart.render();
}
// results_sparkline_charts
var areachartbitcoinColors = getChartColorsArray("results_sparkline_charts3");
if (areachartbitcoinColors) {
var options = {
series: [{
name: "Results",
data: [0, 65, 103, 75, 120],
},],
chart: {
width: 140,
type: "area",
sparkline: {
enabled: true,
},
toolbar: {
show: false,
},
},
dataLabels: {
enabled: false,
},
stroke: {
curve: "smooth",
width: 1.5,
},
fill: {
type: "gradient",
gradient: {
shadeIntensity: 1,
inverseColors: false,
opacityFrom: 0.45,
opacityTo: 0.05,
stops: [50, 100, 100, 100],
},
},
colors: areachartbitcoinColors,
};
var chart = new ApexCharts(document.querySelector("#results_sparkline_charts3"), options);
chart.render();
}
var swiper = new Swiper(".mySwiper", {
slidesPerView: "auto",
spaceBetween: 30,
pagination: {
el: ".swiper-pagination",
clickable: true,
},
autoplay: {
delay: 2500,
disableOnInteraction: false,
},
});
// custom credit card widget
document.addEventListener("DOMContentLoaded", function (e) {
var cardNumInput = document.getElementById("card-num-input");
cardNumElem = document.getElementById("card-num-elem");
var cardHolderInput = document.getElementById("card-holder-input"),
cardHolderElem = document.getElementById("card-holder-elem");
var expiryMonthInput = document.getElementById("expiry-month-input"),
expiryMonthElem = document.getElementById("expiry-month-elem");
var expiryYearInput = document.getElementById("expiry-year-input"),
expiryYearElem = document.getElementById("expiry-year-elem");
var cvcInput = document.getElementById("cvc-input"),
cvcElem = document.getElementById("cvc-elem");
var cardForm = document.getElementById("custom-card-form");
cardNumInput.onkeydown = function (e) {
var key = e.keyCode || e.charCode;
var is_digit = key >= 48 && key <= 57 || key >= 96 && key <= 105;
var is_delete = key == 8 || key == 46;
if (is_digit || is_delete) {
var text = e.target.value;
var len = text.length;
if (is_digit && (len == 4 || len == 9 || len == 14)) cardNumInput.value = text + " ";
} else return false;
};
cardNumInput.onkeyup = function (e) {
var key = e.keyCode || e.charCode;
var is_digit = key >= 48 && key <= 57 || key >= 96 && key <= 105;
var is_delete = key == 8 || key == 46;
if (is_digit || is_delete) {
var text = e.target.value;
var len = text.length;
var digits = "XXXX XXXX XXXX XXXX".split('');
// if (is_digit && (len == 4 || len == 9 || len == 14)) cardNumInput.value = text + " ";
if (is_digit && (len == 4 || len == 9 || len == 14)) digits[len] = " ";
for (var i = 0; i < len; i++) {
digits[i] = text.charAt(i);
} cardNumElem.innerText = digits.join('');
} else return false;
};
cardHolderInput.onkeyup = function (e) {
cardHolderElem.innerText = e.target.value;
};
expiryMonthInput.onchange = function (e) {
if (!e.target.value) expiryMonthElem.innerText = "00";
expiryMonthElem.innerText = e.target.value;
};
expiryYearInput.onchange = function (e) {
if (!e.target.value) expiryYearElem.innerText = "0000";
expiryYearElem.innerText = e.target.value;
};
cvcInput.onkeyup = function (e) {
var text = e.target.value;
var digits = ['_', '_', '_'];
for (var i = 0; i < text.length; i++) {
digits[i] = text.charAt(i);
} cvcElem.innerText = digits.join('');
};
cardForm.onsubmit = function (e) {
e.preventDefault();
};
});
// card js plugin
var card = new Card({
form: document.querySelector('#card-form-elem'),
container: '.card-wrapper',
formSelectors: {
numberInput: 'input#card-number-input',
expiryInput: 'input#card-expiry-input',
cvcInput: 'input#card-cvc-input',
nameInput: 'input#card-name-input'
},
placeholders: {
number: '•••• •••• •••• ••••',
name: 'Full Name',
expiry: '••/••',
cvc: '•••'
},
masks: {
cardNumber: '•' // optional - mask card number
},
});
// candidate-list
Array.from(document.querySelectorAll("#candidate-list li")).forEach(function (item) {
item.querySelector("a").addEventListener("click", function () {
var candidateName = item.querySelector(".candidate-name").innerHTML;
var candidatePosition = item.querySelector(".candidate-position").innerHTML;
var candidateImg = item.querySelector(".candidate-img").src
document.getElementById("candidate-name").innerHTML = candidateName;
document.getElementById("candidate-position").innerHTML = candidatePosition;
document.getElementById("candidate-img").src = candidateImg;
})
});
window.addEventListener("load", () => {
var searchInput = document.getElementById("searchList"), // search box
candidateList = document.querySelectorAll("#candidate-list li"); // all list items
searchInput.onkeyup = () => {
let search = searchInput.value.toLowerCase();
for (let i of candidateList) {
let item = i.querySelector(".candidate-name").innerHTML.toLowerCase();
if (item.indexOf(search) == -1) { i.classList.add("d-none"); }
else { i.classList.remove("d-none"); }
}
};
});
// notification widget
document.getElementById("confirm-btn").addEventListener("click", function () {
if (document.querySelector('input[name=listGroupRadioGrid]:checked')) {
document.getElementById("notification-overlay").style.visibility = "visible";
document.getElementById("notification-overlay").style.opacity = "1";
var checkedElem = document.querySelector('input[name=listGroupRadioGrid]:checked').parentElement;
var payamount = checkedElem.querySelector(".pay-amount").innerHTML
document.querySelector("#notification-overlay .success-pay").innerHTML = payamount
} else {
document.getElementById("notification-warn").classList.remove("d-none");
setTimeout(() => document.getElementById("notification-warn").classList.add("d-none"), 2000);
}
});
document.getElementById("back-btn").addEventListener("click", function () {
document.getElementById("notification-overlay").style.visibility = "hidden";
document.getElementById("notification-overlay").style.opacity = "0";
});