257 lines
7.3 KiB
JavaScript
257 lines
7.3 KiB
JavaScript
/*
|
|
Template Name: Grenviro Monitoring
|
|
Author: Themesbrand
|
|
Website: https://Themesbrand.com/
|
|
Contact: Themesbrand@gmail.com
|
|
File: Project Dashboard 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);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Projects Overview
|
|
var linechartcustomerColors = getChartColorsArray("projects-overview-chart");
|
|
if (linechartcustomerColors) {
|
|
var options = {
|
|
series: [{
|
|
name: 'Number of Projects',
|
|
type: 'bar',
|
|
data: [34, 65, 46, 68, 49, 61, 42, 44, 78, 52, 63, 67]
|
|
}, {
|
|
name: 'Revenue',
|
|
type: 'area',
|
|
data: [89.25, 98.58, 68.74, 108.87, 77.54, 84.03, 51.24, 28.57, 92.57, 42.36, 88.51, 36.57]
|
|
}, {
|
|
name: 'Active Projects',
|
|
type: 'bar',
|
|
data: [8, 12, 7, 17, 21, 11, 5, 9, 7, 29, 12, 35]
|
|
}],
|
|
chart: {
|
|
height: 374,
|
|
type: 'line',
|
|
toolbar: {
|
|
show: false,
|
|
}
|
|
},
|
|
stroke: {
|
|
curve: 'smooth',
|
|
dashArray: [0, 3, 0],
|
|
width: [0, 1, 0],
|
|
},
|
|
fill: {
|
|
opacity: [1, 0.1, 1]
|
|
},
|
|
markers: {
|
|
size: [0, 4, 0],
|
|
strokeWidth: 2,
|
|
hover: {
|
|
size: 4,
|
|
}
|
|
},
|
|
xaxis: {
|
|
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
|
|
axisTicks: {
|
|
show: false
|
|
},
|
|
axisBorder: {
|
|
show: false
|
|
}
|
|
},
|
|
grid: {
|
|
show: true,
|
|
xaxis: {
|
|
lines: {
|
|
show: true,
|
|
}
|
|
},
|
|
yaxis: {
|
|
lines: {
|
|
show: false,
|
|
}
|
|
},
|
|
padding: {
|
|
top: 0,
|
|
right: -2,
|
|
bottom: 15,
|
|
left: 10
|
|
},
|
|
},
|
|
legend: {
|
|
show: true,
|
|
horizontalAlign: 'center',
|
|
offsetX: 0,
|
|
offsetY: -5,
|
|
markers: {
|
|
width: 9,
|
|
height: 9,
|
|
radius: 6,
|
|
},
|
|
itemMargin: {
|
|
horizontal: 10,
|
|
vertical: 0
|
|
},
|
|
},
|
|
plotOptions: {
|
|
bar: {
|
|
columnWidth: '30%',
|
|
barHeight: '70%'
|
|
}
|
|
},
|
|
colors: linechartcustomerColors,
|
|
tooltip: {
|
|
shared: true,
|
|
y: [{
|
|
formatter: function (y) {
|
|
if (typeof y !== "undefined") {
|
|
return y.toFixed(0);
|
|
}
|
|
return y;
|
|
|
|
}
|
|
}, {
|
|
formatter: function (y) {
|
|
if (typeof y !== "undefined") {
|
|
return "$" + y.toFixed(2) + "k";
|
|
}
|
|
return y;
|
|
|
|
}
|
|
}, {
|
|
formatter: function (y) {
|
|
if (typeof y !== "undefined") {
|
|
return y.toFixed(0);
|
|
}
|
|
return y;
|
|
|
|
}
|
|
}]
|
|
}
|
|
};
|
|
var chart = new ApexCharts(document.querySelector("#projects-overview-chart"), options);
|
|
chart.render();
|
|
}
|
|
|
|
//Radial chart data
|
|
var isApexSeriesData = {};
|
|
var isApexSeries = document.querySelectorAll("[data-chart-series]");
|
|
if (isApexSeries) {
|
|
Array.from(isApexSeries).forEach(function (element) {
|
|
var isApexSeriesVal = element.attributes;
|
|
if (isApexSeriesVal["data-chart-series"]) {
|
|
isApexSeriesData.series = isApexSeriesVal["data-chart-series"].value.toString();
|
|
var radialbarhartoneColors = getChartColorsArray(isApexSeriesVal["id"].value.toString());
|
|
var options = {
|
|
series: [isApexSeriesData.series],
|
|
|
|
chart: {
|
|
type: 'radialBar',
|
|
width: 36,
|
|
height: 36,
|
|
sparkline: {
|
|
enabled: true
|
|
}
|
|
},
|
|
dataLabels: {
|
|
enabled: false
|
|
},
|
|
plotOptions: {
|
|
radialBar: {
|
|
hollow: {
|
|
margin: 0,
|
|
size: '50%'
|
|
},
|
|
track: {
|
|
margin: 1
|
|
},
|
|
dataLabels: {
|
|
show: false
|
|
}
|
|
}
|
|
},
|
|
colors: radialbarhartoneColors
|
|
};
|
|
|
|
var chart = new ApexCharts(document.querySelector("#" + isApexSeriesVal["id"].value.toString()), options);
|
|
chart.render();
|
|
|
|
}
|
|
})
|
|
}
|
|
|
|
// Project Status charts
|
|
var donutchartProjectsStatusColors = getChartColorsArray("prjects-status");
|
|
if (donutchartProjectsStatusColors) {
|
|
var options = {
|
|
series: [125, 42, 58, 89],
|
|
labels: ["Completed", "In Progress", "Yet to Start", "Cancelled"],
|
|
chart: {
|
|
type: "donut",
|
|
height: 230,
|
|
},
|
|
plotOptions: {
|
|
pie: {
|
|
size: 100,
|
|
offsetX: 0,
|
|
offsetY: 0,
|
|
donut: {
|
|
size: "90%",
|
|
labels: {
|
|
show: false,
|
|
}
|
|
},
|
|
},
|
|
},
|
|
dataLabels: {
|
|
enabled: false,
|
|
},
|
|
legend: {
|
|
show: false,
|
|
},
|
|
stroke: {
|
|
lineCap: "round",
|
|
width: 0
|
|
},
|
|
colors: donutchartProjectsStatusColors,
|
|
};
|
|
var chart = new ApexCharts(document.querySelector("#prjects-status"), options);
|
|
chart.render();
|
|
}
|
|
|
|
// chat
|
|
var currentChatId = "users-chat";
|
|
scrollToBottom(currentChatId);
|
|
|
|
// Scroll to Bottom
|
|
function scrollToBottom(id) {
|
|
setTimeout(() => {
|
|
var scrollEl = new SimpleBar(document.getElementById('chat-conversation'));
|
|
scrollEl.getScrollElement().scrollTop = document.getElementById("users-conversation").scrollHeight;
|
|
}, 100);
|
|
} |