2025-04-02 13:24:56 +05:30

990 lines
23 KiB
JavaScript

/**
* Dashboard CRM
*/
'use strict';
(function () {
let cardColor, headingColor, labelColor, legendColor, shadeColor, borderColor, heatMap1, heatMap2, heatMap3, heatMap4;
if (isDarkStyle) {
cardColor = config.colors_dark.cardColor;
headingColor = config.colors_dark.headingColor;
labelColor = config.colors_dark.textMuted;
legendColor = config.colors_dark.bodyColor;
borderColor = config.colors_dark.borderColor;
shadeColor = 'dark';
heatMap1 = '#333457';
heatMap2 = '#3c3e75';
heatMap3 = '#484b9b';
heatMap4 = '#696cff';
} else {
cardColor = config.colors.white;
headingColor = config.colors.headingColor;
labelColor = config.colors.textMuted;
legendColor = config.colors.bodyColor;
borderColor = config.colors.borderColor;
shadeColor = '';
heatMap1 = '#ededff';
heatMap2 = '#d5d6ff';
heatMap3 = '#b7b9ff';
heatMap4 = '#696cff';
}
// Donut Chart Colors
const chartColors = {
donut: {
series1: '#66C732',
series2: '#8DE45F',
series3: '#AAEB87',
series4: '#E3F8D7'
}
};
// Radial bar chart functions
function radialBarChart(color, value) {
const radialBarChartOpt = {
chart: {
height: 55,
width: 45,
type: 'radialBar'
},
plotOptions: {
radialBar: {
hollow: {
size: '25%'
},
dataLabels: {
show: false
},
track: {
background: config.colors_label.secondary
}
}
},
stroke: {
lineCap: 'round'
},
colors: [color],
grid: {
padding: {
top: -15,
bottom: -15,
left: -5,
right: -15
}
},
series: [value],
labels: ['Progress']
};
return radialBarChartOpt;
}
// Progress Chart
// --------------------------------------------------------------------
// All progress chart
const chartProgressList = document.querySelectorAll('.chart-progress');
if (chartProgressList) {
chartProgressList.forEach(function (chartProgressEl) {
const color = config.colors[chartProgressEl.dataset.color],
series = chartProgressEl.dataset.series;
const optionsBundle = radialBarChart(color, series);
const chart = new ApexCharts(chartProgressEl, optionsBundle);
chart.render();
});
}
// Customer Ratings - Line Charts
// --------------------------------------------------------------------
const customerRatingsChartEl = document.querySelector('#customerRatingsChart'),
customerRatingsChartOptions = {
chart: {
height: 212,
toolbar: { show: false },
zoom: { enabled: false },
type: 'line',
dropShadow: {
enabled: true,
enabledOnSeries: [1],
top: 13,
left: 4,
blur: 3,
color: config.colors.primary,
opacity: 0.09
}
},
series: [
{
name: 'Last Month',
data: [20, 54, 20, 38, 22, 28, 16, 19, 11]
},
{
name: 'This Month',
data: [20, 32, 22, 65, 40, 46, 34, 70, 75]
}
],
stroke: {
curve: 'smooth',
dashArray: [8, 0],
width: [3, 4]
},
legend: {
show: false
},
colors: [borderColor, config.colors.primary],
grid: {
show: false,
borderColor: borderColor,
padding: {
top: -20,
bottom: -10,
left: 0
}
},
markers: {
size: 6,
colors: 'transparent',
strokeColors: 'transparent',
strokeWidth: 5,
hover: {
size: 6
},
discrete: [
{
fillColor: config.colors.white,
seriesIndex: 1,
dataPointIndex: 8,
strokeColor: config.colors.primary,
size: 6
},
{
fillColor: config.colors.white,
seriesIndex: 1,
dataPointIndex: 3,
strokeColor: config.colors.black,
size: 6
}
]
},
xaxis: {
labels: {
style: {
colors: labelColor,
fontSize: '13px'
}
},
axisTicks: {
show: false
},
categories: [' ', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', ' '],
axisBorder: {
show: false
}
},
yaxis: {
show: false
}
};
if (typeof customerRatingsChartEl !== undefined && customerRatingsChartEl !== null) {
const customerRatingsChart = new ApexCharts(customerRatingsChartEl, customerRatingsChartOptions);
customerRatingsChart.render();
}
// Overview & Sales Activity - Staked Bar Chart
// --------------------------------------------------------------------
const salesActivityChartEl = document.querySelector('#salesActivityChart'),
salesActivityChartConfig = {
chart: {
type: 'bar',
height: 275,
stacked: true,
toolbar: {
show: false
}
},
series: [
{
name: 'PRODUCT A',
data: [75, 50, 55, 60, 48, 82, 59]
},
{
name: 'PRODUCT B',
data: [25, 29, 32, 35, 34, 18, 30]
}
],
plotOptions: {
bar: {
horizontal: false,
columnWidth: '40%',
borderRadius: 10,
startingShape: 'rounded',
endingShape: 'rounded'
}
},
dataLabels: {
enabled: false
},
stroke: {
curve: 'smooth',
width: 6,
lineCap: 'round',
colors: [cardColor]
},
legend: {
show: false
},
colors: [config.colors.danger, config.colors.secondary],
fill: {
opacity: 1
},
grid: {
show: false,
strokeDashArray: 7,
padding: {
top: -10,
bottom: -12,
left: 0,
right: 0
}
},
xaxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'],
labels: {
show: true,
style: {
colors: labelColor,
fontSize: '15px',
fontFamily: 'Public Sans'
}
},
axisBorder: {
show: false
},
axisTicks: {
show: false
}
},
yaxis: {
show: false
},
responsive: [
{
breakpoint: 1440,
options: {
plotOptions: {
bar: {
borderRadius: 10,
columnWidth: '50%'
}
}
}
},
{
breakpoint: 1300,
options: {
plotOptions: {
bar: {
borderRadius: 11,
columnWidth: '55%'
}
}
}
},
{
breakpoint: 1200,
options: {
plotOptions: {
bar: {
borderRadius: 10,
columnWidth: '45%'
}
}
}
},
{
breakpoint: 1040,
options: {
plotOptions: {
bar: {
borderRadius: 10,
columnWidth: '50%'
}
}
}
},
{
breakpoint: 992,
options: {
plotOptions: {
bar: {
borderRadius: 12,
columnWidth: '40%'
}
},
chart: {
type: 'bar',
height: 320
}
}
},
{
breakpoint: 768,
options: {
plotOptions: {
bar: {
borderRadius: 11,
columnWidth: '25%'
}
}
}
},
{
breakpoint: 576,
options: {
plotOptions: {
bar: {
borderRadius: 10,
columnWidth: '35%'
}
}
}
},
{
breakpoint: 440,
options: {
plotOptions: {
bar: {
borderRadius: 10,
columnWidth: '45%'
}
}
}
},
{
breakpoint: 360,
options: {
plotOptions: {
bar: {
borderRadius: 8,
columnWidth: '50%'
}
}
}
}
],
states: {
hover: {
filter: {
type: 'none'
}
},
active: {
filter: {
type: 'none'
}
}
}
};
if (typeof salesActivityChartEl !== undefined && salesActivityChartEl !== null) {
const salesActivityChart = new ApexCharts(salesActivityChartEl, salesActivityChartConfig);
salesActivityChart.render();
}
// Session Area Chart
// --------------------------------------------------------------------
const sessionAreaChartEl = document.querySelector('#sessionsChart'),
sessionAreaChartConfig = {
chart: {
height: 80,
type: 'area',
toolbar: {
show: false
},
sparkline: {
enabled: true
}
},
markers: {
size: 6,
colors: 'transparent',
strokeColors: 'transparent',
strokeWidth: 4,
discrete: [
{
fillColor: cardColor,
seriesIndex: 0,
dataPointIndex: 8,
strokeColor: config.colors.warning,
strokeWidth: 2,
size: 6,
radius: 8
}
],
hover: {
size: 7
}
},
grid: {
show: false,
padding: {
right: 8
}
},
colors: [config.colors.warning],
fill: {
type: 'gradient',
gradient: {
shade: shadeColor,
shadeIntensity: 0.8,
opacityFrom: 0.8,
opacityTo: 0.25,
stops: [0, 95, 100]
}
},
dataLabels: {
enabled: false
},
stroke: {
width: 2,
curve: 'straight'
},
series: [
{
data: [280, 280, 240, 240, 200, 200, 260, 260, 310]
}
],
xaxis: {
show: false,
lines: {
show: false
},
labels: {
show: false
},
axisBorder: {
show: false
}
},
yaxis: {
show: false
}
};
if (typeof sessionAreaChartEl !== undefined && sessionAreaChartEl !== null) {
const sessionAreaChart = new ApexCharts(sessionAreaChartEl, sessionAreaChartConfig);
sessionAreaChart.render();
}
// Order Statistics Chart
// --------------------------------------------------------------------
const leadsReportChartEl = document.querySelector('#leadsReportChart'),
leadsReportChartConfig = {
chart: {
height: 157,
width: 135,
parentHeightOffset: 0,
type: 'donut'
},
labels: ['Electronic', 'Sports', 'Decor', 'Fashion'],
series: [20, 30, 20, 30],
colors: [
chartColors.donut.series1,
chartColors.donut.series4,
chartColors.donut.series3,
chartColors.donut.series2
],
stroke: {
width: 0
},
dataLabels: {
enabled: false,
formatter: function (val, opt) {
return parseInt(val) + '%';
}
},
legend: {
show: false
},
tooltip: {
theme: false
},
grid: {
padding: {
top: 5,
bottom: 5
}
},
plotOptions: {
pie: {
donut: {
size: '75%',
labels: {
show: true,
value: {
fontSize: '1.5rem',
fontFamily: 'Public Sans',
color: headingColor,
fontWeight: 500,
offsetY: -15,
formatter: function (val) {
return parseInt(val) + '%';
}
},
name: {
offsetY: 20,
fontFamily: 'Public Sans'
},
total: {
show: true,
fontSize: '15px',
fontFamily: 'Public Sans',
label: 'Average',
color: legendColor,
formatter: function (w) {
return '25%';
}
}
}
}
}
}
};
if (typeof leadsReportChartEl !== undefined && leadsReportChartEl !== null) {
const leadsReportChart = new ApexCharts(leadsReportChartEl, leadsReportChartConfig);
leadsReportChart.render();
}
// Earning Reports Bar Chart
// --------------------------------------------------------------------
const reportBarChartEl = document.querySelector('#reportBarChart'),
reportBarChartConfig = {
chart: {
height: 120,
type: 'bar',
toolbar: {
show: false
}
},
plotOptions: {
bar: {
barHeight: '60%',
columnWidth: '50%',
startingShape: 'rounded',
endingShape: 'rounded',
borderRadius: 4,
distributed: true
}
},
grid: {
show: false,
padding: {
top: -35,
bottom: -10,
left: -10,
right: -10
}
},
colors: [
config.colors_label.primary,
config.colors_label.primary,
config.colors_label.primary,
config.colors_label.primary,
config.colors.primary,
config.colors_label.primary,
config.colors_label.primary
],
dataLabels: {
enabled: false
},
series: [
{
data: [40, 95, 60, 45, 90, 50, 75]
}
],
legend: {
show: false
},
xaxis: {
categories: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],
axisBorder: {
show: false
},
axisTicks: {
show: false
},
labels: {
style: {
colors: labelColor,
fontSize: '13px'
}
}
},
yaxis: {
labels: {
show: false
}
}
};
if (typeof reportBarChartEl !== undefined && reportBarChartEl !== null) {
const barChart = new ApexCharts(reportBarChartEl, reportBarChartConfig);
barChart.render();
}
// Sales Analytics - Heat map chart
// --------------------------------------------------------------------
const salesAnalyticsChartEl = document.querySelector('#salesAnalyticsChart'),
salesAnalyticsChartConfig = {
chart: {
height: 350,
type: 'heatmap',
parentHeightOffset: 0,
offsetX: -10,
toolbar: {
show: false
}
},
series: [
{
name: '1k',
data: [
{ x: 'Jan', y: '250' },
{ x: 'Feb', y: '350' },
{ x: 'Mar', y: '220' },
{ x: 'Apr', y: '290' },
{ x: 'May', y: '650' },
{ x: 'Jun', y: '260' },
{ x: 'Jul', y: '274' },
{ x: 'Aug', y: '850' }
]
},
{
name: '2k',
data: [
{ x: 'Jan', y: '750' },
{ x: 'Feb', y: '3350' },
{ x: 'Mar', y: '1220' },
{ x: 'Apr', y: '1290' },
{ x: 'May', y: '1650' },
{ x: 'Jun', y: '1260' },
{ x: 'Jul', y: '1274' },
{ x: 'Aug', y: '850' }
]
},
{
name: '3k',
data: [
{ x: 'Jan', y: '375' },
{ x: 'Feb', y: '1350' },
{ x: 'Mar', y: '3220' },
{ x: 'Apr', y: '2290' },
{ x: 'May', y: '2650' },
{ x: 'Jun', y: '2260' },
{ x: 'Jul', y: '1274' },
{ x: 'Aug', y: '815' }
]
},
{
name: '4k',
data: [
{ x: 'Jan', y: '575' },
{ x: 'Feb', y: '1350' },
{ x: 'Mar', y: '2220' },
{ x: 'Apr', y: '3290' },
{ x: 'May', y: '3650' },
{ x: 'Jun', y: '2260' },
{ x: 'Jul', y: '1274' },
{ x: 'Aug', y: '315' }
]
},
{
name: '5k',
data: [
{ x: 'Jan', y: '875' },
{ x: 'Feb', y: '1350' },
{ x: 'Mar', y: '2220' },
{ x: 'Apr', y: '3290' },
{ x: 'May', y: '3650' },
{ x: 'Jun', y: '2260' },
{ x: 'Jul', y: '1274' },
{ x: 'Aug', y: '965' }
]
},
{
name: '6k',
data: [
{ x: 'Jan', y: '575' },
{ x: 'Feb', y: '1350' },
{ x: 'Mar', y: '2220' },
{ x: 'Apr', y: '2290' },
{ x: 'May', y: '2650' },
{ x: 'Jun', y: '3260' },
{ x: 'Jul', y: '1274' },
{ x: 'Aug', y: '815' }
]
},
{
name: '7k',
data: [
{ x: 'Jan', y: '575' },
{ x: 'Feb', y: '1350' },
{ x: 'Mar', y: '1220' },
{ x: 'Apr', y: '1290' },
{ x: 'May', y: '1650' },
{ x: 'Jun', y: '1260' },
{ x: 'Jul', y: '3274' },
{ x: 'Aug', y: '815' }
]
},
{
name: '8k',
data: [
{ x: 'Jan', y: '575' },
{ x: 'Feb', y: '350' },
{ x: 'Mar', y: '220' },
{ x: 'Apr', y: '290' },
{ x: 'May', y: '650' },
{ x: 'Jun', y: '260' },
{ x: 'Jul', y: '274' },
{ x: 'Aug', y: '815' }
]
}
],
plotOptions: {
heatmap: {
enableShades: false,
radius: '6px',
colorScale: {
ranges: [
{
from: 0,
to: 1000,
name: '1k',
color: heatMap1
},
{
from: 1001,
to: 2000,
name: '2k',
color: heatMap2
},
{
from: 2001,
to: 3000,
name: '3k',
color: heatMap3
},
{
from: 3001,
to: 4000,
name: '4k',
color: heatMap4
}
]
}
}
},
dataLabels: {
enabled: false
},
stroke: {
width: 4,
colors: [cardColor]
},
legend: {
show: false
},
grid: {
show: false,
padding: {
top: -10,
left: 16,
right: -15,
bottom: 0
}
},
xaxis: {
labels: {
show: true,
style: {
colors: labelColor,
fontSize: '15px',
fontFamily: 'Public Sans'
}
},
axisBorder: {
show: false
},
axisTicks: {
show: false
}
},
yaxis: {
labels: {
style: {
colors: labelColor,
fontSize: '15px',
fontFamily: 'Public Sans'
}
}
},
responsive: [
{
breakpoint: 1441,
options: {
chart: {
height: '325px'
},
grid: {
padding: {
right: -15
}
}
}
},
{
breakpoint: 1045,
options: {
chart: {
height: '300px'
},
grid: {
padding: {
right: -50
}
}
}
},
{
breakpoint: 992,
options: {
chart: {
height: '320px'
},
grid: {
padding: {
right: -50
}
}
}
},
{
breakpoint: 767,
options: {
chart: {
height: '400px'
},
grid: {
padding: {
right: 0
}
}
}
},
{
breakpoint: 568,
options: {
chart: {
height: '330px'
},
grid: {
padding: {
right: -20
}
}
}
}
],
states: {
hover: {
filter: {
type: 'none'
}
},
active: {
filter: {
type: 'none'
}
}
}
};
if (typeof salesAnalyticsChartEl !== undefined && salesAnalyticsChartEl !== null) {
const salesAnalyticsChart = new ApexCharts(salesAnalyticsChartEl, salesAnalyticsChartConfig);
salesAnalyticsChart.render();
}
// Sale Stats - Radial Bar Chart
// --------------------------------------------------------------------
const salesStatsEl = document.querySelector('#salesStats'),
salesStatsOptions = {
chart: {
height: 340,
type: 'radialBar'
},
series: [75],
labels: ['Sales'],
plotOptions: {
radialBar: {
startAngle: 0,
endAngle: 360,
strokeWidth: '70',
hollow: {
margin: 50,
size: '75%',
image: assetsPath + 'img/icons/misc/arrow-star.png',
imageWidth: 65,
imageHeight: 55,
imageOffsetY: -35,
imageClipped: false
},
track: {
strokeWidth: '50%',
background: borderColor
},
dataLabels: {
show: true,
name: {
offsetY: 60,
show: true,
color: legendColor,
fontSize: '15px',
fontFamily: 'Public Sans'
},
value: {
formatter: function (val) {
return parseInt(val) + '%';
},
offsetY: 20,
color: headingColor,
fontSize: '28px',
fontWeight: '500',
fontFamily: 'Public Sans',
show: true
}
}
}
},
fill: {
type: 'solid',
colors: config.colors.success
},
stroke: {
lineCap: 'round'
},
states: {
hover: {
filter: {
type: 'none'
}
},
active: {
filter: {
type: 'none'
}
}
}
};
if (typeof salesStatsEl !== undefined && salesStatsEl !== null) {
const salesStats = new ApexCharts(salesStatsEl, salesStatsOptions);
salesStats.render();
}
})();