cafeg/public/assets/js/cards-analytics.js
2025-01-09 16:56:00 +08:00

1589 lines
37 KiB
JavaScript

/**
* Analytics Cards
*/
'use strict';
(function () {
let cardColor, labelColor, headingColor, borderColor, grayColor, currentTheme, bodyColorLabel;
if (isDarkStyle) {
cardColor = config.colors_dark.cardColor;
labelColor = config.colors_dark.textMuted;
headingColor = config.colors_dark.headingColor;
borderColor = config.colors_dark.borderColor;
grayColor = '#3b3e59';
currentTheme = 'dark';
bodyColorLabel = config.colors_dark.bodyColor;
} else {
cardColor = config.colors.cardColor;
labelColor = config.colors.textMuted;
headingColor = config.colors.headingColor;
borderColor = config.colors.borderColor;
grayColor = '#f4f4f6';
currentTheme = 'light';
bodyColorLabel = config.colors.bodyColor;
}
const chartColors = {
donut: {
series1: config.colors.warning,
series2: '#fdb528cc',
series3: '#fdb52899',
series4: '#fdb52866',
series5: config.colors_label.warning
},
donut2: {
series1: config.colors.success,
series2: '#8EE753',
series3: '#AAED7E',
series4: '#C7F3A9'
},
line: {
series1: config.colors.warning,
series2: config.colors.primary,
series3: '#7367f029'
}
};
// Total Transactions Bar Chart
// --------------------------------------------------------------------
const totalTransactionChartEl = document.querySelector('#totalTransactionChart'),
totalTransactionChartConfig = {
chart: {
height: 218,
stacked: true,
type: 'bar',
parentHeightOffset: 0,
toolbar: {
show: false
}
},
tooltip: {
y: {
formatter: function (val) {
return Math.abs(val);
}
}
},
legend: { show: false },
dataLabels: { enabled: false },
colors: [config.colors.primary, config.colors.success],
grid: {
borderColor,
xaxis: { lines: { show: true } },
yaxis: { lines: { show: false } },
padding: {
top: -5,
bottom: -25
}
},
states: {
hover: { filter: { type: 'none' } },
active: { filter: { type: 'none' } }
},
plotOptions: {
bar: {
borderRadius: 5,
barHeight: '30%',
horizontal: true,
endingShape: 'flat',
startingShape: 'rounded'
}
},
xaxis: {
position: 'top',
axisTicks: { show: false },
axisBorder: { show: false },
categories: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
labels: {
style: {
colors: labelColor,
fontSize: '13px',
fontFamily: 'Inter'
},
formatter: function (val) {
return Math.abs(Math.round(val));
}
}
},
yaxis: { labels: { show: false } },
series: [
{
name: 'Last Week',
data: [83, 153, 213, 279, 213, 153, 83]
},
{
name: 'This Week',
data: [-84, -156, -216, -282, -216, -156, -84]
}
]
};
if (typeof totalTransactionChartEl !== undefined && totalTransactionChartEl !== null) {
const totalTransactionChart = new ApexCharts(totalTransactionChartEl, totalTransactionChartConfig);
totalTransactionChart.render();
}
// Performance Overview Line Chart
// --------------------------------------------------------------------
const performanceOverviewChartEl = document.querySelector('#performanceOverviewChart'),
performanceOverviewChartConfig = {
chart: {
height: 218,
type: 'line',
parentHeightOffset: 0,
toolbar: {
show: false
}
},
series: [
{
data: [7, 65, 40, 7, 40, 80, 45, 65, 65]
}
],
stroke: {
curve: 'stepline'
},
tooltip: {
enabled: false
},
colors: [config.colors.warning],
grid: {
yaxis: {
lines: {
show: false
}
}
},
xaxis: {
labels: {
show: false
},
axisTicks: {
show: false
},
axisBorder: {
show: false
}
},
yaxis: {
labels: {
show: false
}
},
responsive: [
{
breakpoint: 1200,
options: {
chart: {
height: 268
}
}
}
]
};
if (typeof performanceOverviewChartEl !== undefined && performanceOverviewChartEl !== null) {
const performanceOverviewChart = new ApexCharts(performanceOverviewChartEl, performanceOverviewChartConfig);
performanceOverviewChart.render();
}
// Visits By Day Bar Chart
// --------------------------------------------------------------------
const visitsByDayChartEl = document.querySelector('#visitsByDayChart'),
visitsByDayChartConfig = {
chart: {
height: 240,
type: 'bar',
parentHeightOffset: 0,
toolbar: {
show: false
}
},
plotOptions: {
bar: {
borderRadius: 8,
distributed: true,
columnWidth: '55%',
endingShape: 'rounded',
startingShape: 'rounded'
}
},
series: [
{
data: [38, 55, 48, 65, 80, 38, 48]
}
],
tooltip: {
enabled: false
},
legend: {
show: false
},
dataLabels: {
enabled: false
},
colors: [
config.colors_label.primary,
config.colors.primary,
config.colors_label.primary,
config.colors.primary,
config.colors.primary,
config.colors_label.primary,
config.colors_label.primary
],
grid: {
show: false,
padding: {
top: -15,
left: -7,
right: -4
}
},
states: {
hover: {
filter: {
type: 'none'
}
},
active: {
filter: {
type: 'none'
}
}
},
xaxis: {
axisTicks: {
show: false
},
axisBorder: {
show: false
},
categories: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
labels: {
style: {
colors: labelColor,
fontSize: '13px',
fontFamily: 'Inter'
}
}
},
yaxis: { show: false },
responsive: [
{
breakpoint: 1025,
options: {
chart: {
height: 210
}
}
}
]
};
if (typeof visitsByDayChartEl !== undefined && visitsByDayChartEl !== null) {
const visitsByDayChart = new ApexCharts(visitsByDayChartEl, visitsByDayChartConfig);
visitsByDayChart.render();
}
// Organic Sessions Donut Chart
// --------------------------------------------------------------------
const organicSessionsEl = document.querySelector('#organicSessionsChart'),
organicSessionsConfig = {
chart: {
height: 355,
type: 'donut',
parentHeightOffset: 0
},
labels: ['USA', 'India', 'Canada', 'Japan', 'France'],
tooltip: { enabled: false },
dataLabels: { enabled: false },
stroke: {
width: 3,
lineCap: 'round',
colors: [cardColor]
},
states: {
hover: {
filter: { type: 'none' }
},
active: {
filter: { type: 'none' }
}
},
plotOptions: {
pie: {
endAngle: 130,
startAngle: -130,
customScale: 0.9,
donut: {
size: '83%',
labels: {
show: true,
name: {
offsetY: 25,
fontSize: '50rem',
fontFamily: 'Inter',
color: bodyColorLabel
},
value: {
offsetY: -15,
fontWeight: 500,
fontSize: '1.75rem',
fontFamily: 'Inter',
color: headingColor,
formatter: function (val) {
return parseInt(val) + 'K';
}
},
total: {
show: true,
label: '2022',
fontSize: '0.9375rem',
fontFamily: 'Inter',
color: bodyColorLabel,
formatter: function (w) {
return '89K';
}
}
}
}
}
},
series: [13, 18, 18, 24, 16],
tooltip: {
enabled: false
},
legend: {
position: 'bottom',
fontFamily: 'Inter',
fontSize: '15px',
markers: { offsetX: -5 },
itemMargin: {
horizontal: 24,
vertical: 8
},
labels: {
colors: headingColor
}
},
colors: [
chartColors.donut.series1,
chartColors.donut.series2,
chartColors.donut.series3,
chartColors.donut.series4,
chartColors.donut.series5
]
};
if (typeof organicSessionsEl !== undefined && organicSessionsEl !== null) {
const organicSessions = new ApexCharts(organicSessionsEl, organicSessionsConfig);
organicSessions.render();
}
// Weekly Sales Line Chart
// --------------------------------------------------------------------
const weeklySalesEl = document.querySelector('#weeklySalesChart'),
weeklySalesConfig = {
chart: {
stacked: true,
type: 'line',
height: 235,
parentHeightOffset: 0,
toolbar: {
show: false
}
},
tooltip: { enabled: false },
series: [
{
type: 'column',
name: 'Earning',
data: [90, 52, 67, 45, 75, 55, 48]
},
{
type: 'column',
name: 'Expense',
data: [-53, -29, -67, -84, -60, -40, -77]
},
{
type: 'line',
name: 'Expense',
data: [73, 20, 50, -20, 58, 15, 31]
}
],
plotOptions: {
bar: {
borderRadius: 8,
columnWidth: '57%',
endingShape: 'flat',
startingShape: 'rounded'
}
},
markers: {
size: 4,
strokeWidth: 3,
fillOpacity: 1,
strokeOpacity: 1,
colors: [cardColor],
strokeColors: config.colors.warning
},
stroke: {
curve: 'smooth',
width: [0, 0, 3],
colors: [config.colors.warning]
},
dataLabels: {
enabled: false
},
legend: {
show: false
},
colors: [config.colors.primary, config.colors_label.primary],
grid: {
yaxis: { lines: { show: false } },
padding: {
top: -28,
left: -6,
right: -8,
bottom: -5
}
},
xaxis: {
axisTicks: { show: false },
axisBorder: { show: false },
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'],
labels: {
style: {
colors: labelColor,
fontFamily: 'Inter',
fontSize: '13px'
}
}
},
yaxis: {
max: 100,
min: -100,
show: false
},
states: {
hover: {
filter: {
type: 'none'
}
},
active: {
filter: {
type: 'none'
}
}
}
};
if (typeof weeklySalesEl !== undefined && weeklySalesEl !== null) {
const weeklySales = new ApexCharts(weeklySalesEl, weeklySalesConfig);
weeklySales.render();
}
// Project Timeline Range Bar Chart
// --------------------------------------------------------------------
const projectTimelineEl = document.querySelector('#projectTimelineChart'),
labels = ['Development Apps', 'UI Design', 'IOS Application', 'Web App Wireframing', 'Prototyping'],
labelsResponsive = ['Development', 'UI Design', 'Application', 'App Wireframing', 'Prototyping'],
projectTimelineConfig = {
chart: {
height: 230,
type: 'rangeBar',
parentHeightOffset: 0,
toolbar: { show: false }
},
series: [
{
data: [
{
x: 'Catherine',
y: [
new Date(`${new Date().getFullYear()}-01-01`).getTime(),
new Date(`${new Date().getFullYear()}-05-02`).getTime()
],
fillColor: config.colors.primary
},
{
x: 'Janelle',
y: [
new Date(`${new Date().getFullYear()}-02-18`).getTime(),
new Date(`${new Date().getFullYear()}-05-30`).getTime()
],
fillColor: config.colors.success
},
{
x: 'Wellington',
y: [
new Date(`${new Date().getFullYear()}-02-07`).getTime(),
new Date(`${new Date().getFullYear()}-05-31`).getTime()
],
fillColor: config.colors.secondary
},
{
x: 'Blake',
y: [
new Date(`${new Date().getFullYear()}-01-14`).getTime(),
new Date(`${new Date().getFullYear()}-06-30`).getTime()
],
fillColor: config.colors.info
},
{
x: 'Quinn',
y: [
new Date(`${new Date().getFullYear()}-04-01`).getTime(),
new Date(`${new Date().getFullYear()}-07-31`).getTime()
],
fillColor: config.colors.warning
}
]
}
],
tooltip: { enabled: false },
plotOptions: {
bar: {
horizontal: true,
borderRadius: 15,
distributed: true,
endingShape: 'rounded',
startingShape: 'rounded',
dataLabels: {
hideOverflowingLabels: false
}
}
},
fill: {
opacity: 1
},
stroke: {
width: 2,
colors: [cardColor]
},
dataLabels: {
enabled: true,
style: {
fontWeight: 400,
fontFamily: 'Inter',
fontSize: '13px'
},
formatter: function (val, opts) {
return labels[opts.dataPointIndex];
}
},
states: {
hover: { filter: { type: 'none' } },
active: { filter: { type: 'none' } }
},
legend: { show: false },
grid: {
strokeDashArray: 6,
borderColor,
xaxis: { lines: { show: true } },
yaxis: { lines: { show: false } },
padding: {
top: -32,
left: 15,
right: 18,
bottom: 4
}
},
xaxis: {
type: 'datetime',
axisTicks: { show: false },
axisBorder: { show: false },
labels: {
style: {
colors: labelColor,
fontFamily: 'Inter',
fontSize: '13px'
},
datetimeFormatter: {
year: 'MMM',
month: 'MMM'
}
}
},
yaxis: {
labels: {
show: true,
align: 'left',
style: {
fontFamily: 'Inter',
fontSize: '13px',
colors: bodyColorLabel
}
}
},
responsive: [
{
breakpoint: 446,
options: {
dataLabels: {
formatter: function (val, opts) {
return labelsResponsive[opts.dataPointIndex];
}
}
}
}
]
};
if (typeof projectTimelineEl !== undefined && projectTimelineEl !== null) {
const projectTimeline = new ApexCharts(projectTimelineEl, projectTimelineConfig);
projectTimeline.render();
}
// Monthly Budget Area Chart
// --------------------------------------------------------------------
const monthlyBudgetEl = document.querySelector('#monthlyBudgetChart'),
monthlyBudgetConfig = {
chart: {
height: 181,
type: 'area',
parentHeightOffset: 0,
offsetY: -8,
toolbar: { show: false }
},
tooltip: { enabled: false },
dataLabels: { enabled: false },
stroke: {
width: 5,
curve: 'smooth'
},
series: [
{
data: [0, 85, 25, 125, 90, 250, 200, 350]
}
],
grid: {
show: false,
padding: {
left: 10,
top: 0,
right: 12
}
},
fill: {
type: 'gradient',
gradient: {
opacityTo: 0.7,
opacityFrom: 0.5,
shadeIntensity: 1,
stops: [0, 90, 100],
colorStops: [
[
{
offset: 0,
opacity: 0.6,
color: config.colors.success
},
{
offset: 100,
opacity: 0.1,
color: cardColor
}
]
]
}
},
theme: {
monochrome: {
enabled: true,
shadeTo: 'light',
shadeIntensity: 1,
color: config.colors.success
}
},
xaxis: {
type: 'numeric',
labels: { show: false },
axisTicks: { show: false },
axisBorder: { show: false }
},
yaxis: { show: false },
markers: {
size: 1,
offsetY: 1,
offsetX: -5,
strokeWidth: 4,
strokeOpacity: 1,
colors: ['transparent'],
strokeColors: 'transparent',
discrete: [
{
size: 7,
seriesIndex: 0,
dataPointIndex: 7,
strokeColor: config.colors.success,
fillColor: cardColor
}
]
},
responsive: [
{
breakpoint: 1200,
options: {
chart: {
height: 255
}
}
}
]
};
if (typeof monthlyBudgetEl !== undefined && monthlyBudgetEl !== null) {
const monthlyBudget = new ApexCharts(monthlyBudgetEl, monthlyBudgetConfig);
monthlyBudget.render();
}
// Performance Radar Chart
// --------------------------------------------------------------------
const performanceChartEl = document.querySelector('#performanceChart'),
performanceChartConfig = {
chart: {
height: 300,
type: 'radar',
toolbar: {
show: false
}
},
legend: {
show: true,
markers: { offsetX: -5 },
itemMargin: { horizontal: 16 },
fontFamily: 'Inter',
fontSize: '15px',
labels: {
colors: bodyColorLabel,
useSeriesColors: false
}
},
plotOptions: {
radar: {
polygons: {
strokeColors: borderColor,
connectorColors: borderColor
}
}
},
yaxis: {
show: false
},
series: [
{
name: 'Income',
data: [70, 90, 80, 95, 75, 90]
},
{
name: 'Net Worth',
data: [110, 72, 62, 65, 100, 75]
}
],
colors: [config.colors.warning, config.colors.primary],
xaxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
labels: {
show: true,
style: {
colors: [labelColor, labelColor, labelColor, labelColor, labelColor, labelColor],
fontSize: '13px',
fontFamily: 'Inter'
}
}
},
fill: {
opacity: [1, 0.9]
},
stroke: {
show: false,
width: 0
},
markers: {
size: 0
},
grid: {
show: false,
padding: {
top: 0,
bottom: -10
}
}
};
if (typeof performanceChartEl !== undefined && performanceChartEl !== null) {
const performanceChart = new ApexCharts(performanceChartEl, performanceChartConfig);
performanceChart.render();
}
// External Links Stacked Bar Chart
// --------------------------------------------------------------------
const externalLinksChartEl = document.querySelector('#externalLinksChart'),
externalLinksChartConfig = {
chart: {
type: 'bar',
height: 232,
parentHeightOffset: 0,
stacked: true,
toolbar: {
show: false
}
},
series: [
{
name: 'Google Analytics',
data: [155, 135, 320, 100, 150, 335, 160]
},
{
name: 'Facebook Ads',
data: [110, 235, 125, 230, 215, 115, 200]
}
],
plotOptions: {
bar: {
horizontal: false,
columnWidth: '40%',
borderRadius: 10,
startingShape: 'rounded',
endingShape: 'rounded'
}
},
dataLabels: {
enabled: false
},
tooltip: {
enabled: false
},
stroke: {
curve: 'smooth',
width: 6,
lineCap: 'round',
colors: [cardColor]
},
legend: {
show: false
},
colors: [config.colors.primary, config.colors.secondary],
grid: {
strokeDashArray: 10,
borderColor,
padding: {
top: -12,
left: -4,
right: -5,
bottom: 5
}
},
xaxis: {
categories: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
labels: {
show: false
},
axisBorder: {
show: false
},
axisTicks: {
show: false
}
},
yaxis: {
show: false
},
states: {
hover: {
filter: {
type: 'none'
}
},
active: {
filter: {
type: 'none'
}
}
},
responsive: [
{
breakpoint: 1441,
options: {
plotOptions: {
bar: {
columnWidth: '50%'
}
}
}
},
{
breakpoint: 1025,
options: {
plotOptions: {
bar: {
columnWidth: '45%'
}
}
}
},
{
breakpoint: 577,
options: {
plotOptions: {
bar: {
columnWidth: '35%'
}
}
}
},
{
breakpoint: 426,
options: {
plotOptions: {
bar: {
columnWidth: '50%'
}
}
}
}
]
};
if (typeof externalLinksChartEl !== undefined && externalLinksChartEl !== null) {
const externalLinksChart = new ApexCharts(externalLinksChartEl, externalLinksChartConfig);
externalLinksChart.render();
}
// Sales Country Bar Chart
// --------------------------------------------------------------------
const salesCountryChartEl = document.querySelector('#salesCountryChart'),
salesCountryChartConfig = {
chart: {
type: 'bar',
height: 295,
parentHeightOffset: 0,
toolbar: {
show: false
}
},
series: [
{
name: 'Sales',
data: [17165, 13850, 12375, 9567, 7880]
}
],
plotOptions: {
bar: {
borderRadius: 8,
barHeight: '60%',
horizontal: true,
distributed: true,
startingShape: 'rounded',
dataLabels: {
position: 'bottom'
}
}
},
dataLabels: {
enabled: true,
textAnchor: 'start',
offsetY: 8,
offsetX: 11,
style: {
fontWeight: 500,
fontSize: '0.9375rem',
fontFamily: 'Inter'
}
},
tooltip: {
enabled: false
},
legend: {
show: false
},
colors: [
config.colors.primary,
config.colors.success,
config.colors.warning,
config.colors.info,
config.colors.danger
],
grid: {
strokeDashArray: 8,
borderColor,
xaxis: { lines: { show: true } },
yaxis: { lines: { show: false } },
padding: {
top: -18,
left: 21,
right: 33,
bottom: 10
}
},
xaxis: {
categories: ['US', 'IN', 'JA', 'CA', 'AU'],
labels: {
formatter: function (val) {
return Number(val / 1000) + 'K';
},
style: {
fontSize: '13px',
colors: labelColor,
fontFamily: 'Inter'
}
},
axisBorder: {
show: false
},
axisTicks: {
show: false
}
},
yaxis: {
labels: {
style: {
fontWeight: 500,
fontSize: '0.9375rem',
colors: headingColor,
fontFamily: 'Inter'
}
}
},
states: {
hover: {
filter: {
type: 'none'
}
},
active: {
filter: {
type: 'none'
}
}
}
};
if (typeof salesCountryChartEl !== undefined && salesCountryChartEl !== null) {
const salesCountryChart = new ApexCharts(salesCountryChartEl, salesCountryChartConfig);
salesCountryChart.render();
}
// Weekly Overview Line Chart
// --------------------------------------------------------------------
const weeklyOverviewChartEl = document.querySelector('#weeklyOverviewChart'),
weeklyOverviewChartConfig = {
chart: {
type: 'line',
height: 230,
offsetY: -9,
offsetX: -16,
parentHeightOffset: 0,
toolbar: {
show: false
}
},
series: [
{
name: 'Sales',
type: 'column',
data: [83, 68, 56, 65, 65, 50, 39]
},
{
name: 'Sales',
type: 'line',
data: [63, 38, 31, 45, 46, 27, 18]
}
],
plotOptions: {
bar: {
borderRadius: 9,
columnWidth: '50%',
endingShape: 'rounded',
startingShape: 'rounded',
colors: {
ranges: [
{
to: 50,
from: 40,
color: config.colors.primary
}
]
}
}
},
markers: {
size: 3.5,
strokeWidth: 2,
fillOpacity: 1,
strokeOpacity: 1,
colors: [cardColor],
strokeColors: config.colors.primary
},
stroke: {
width: [0, 2],
colors: [config.colors.primary]
},
dataLabels: {
enabled: false
},
legend: {
show: false
},
colors: [grayColor],
grid: {
strokeDashArray: 10,
borderColor,
padding: {
bottom: -10
}
},
xaxis: {
categories: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
tickPlacement: 'on',
labels: {
show: false
},
axisBorder: {
show: false
},
axisTicks: {
show: false
}
},
yaxis: {
min: 0,
max: 90,
show: true,
tickAmount: 3,
labels: {
formatter: function (val) {
return parseInt(val) + 'K';
},
style: {
fontSize: '13px',
fontFamily: 'Inter',
colors: labelColor
}
}
},
states: {
hover: {
filter: {
type: 'none'
}
},
active: {
filter: {
type: 'none'
}
}
}
};
if (typeof weeklyOverviewChartEl !== undefined && weeklyOverviewChartEl !== null) {
const weeklyOverviewChart = new ApexCharts(weeklyOverviewChartEl, weeklyOverviewChartConfig);
weeklyOverviewChart.render();
}
// datatbale bar chart
const horizontalBarChartEl = document.querySelector('#horizontalBarChart'),
horizontalBarChartConfig = {
chart: {
height: 270,
type: 'bar',
toolbar: {
show: false
}
},
plotOptions: {
bar: {
horizontal: true,
barHeight: '70%',
distributed: true,
startingShape: 'rounded',
borderRadius: 7
}
},
grid: {
strokeDashArray: 10,
borderColor: borderColor,
xaxis: {
lines: {
show: true
}
},
yaxis: {
lines: {
show: false
}
},
padding: {
top: -35,
bottom: -12
}
},
fill: {
opacity: 1
},
colors: [
config.colors.primary,
config.colors.info,
config.colors.success,
config.colors.secondary,
config.colors.danger,
config.colors.warning
],
dataLabels: {
enabled: true,
style: {
colors: ['#fff'],
fontWeight: 500,
fontSize: '13px',
fontFamily: 'Inter'
},
formatter: function (val, opts) {
return horizontalBarChartConfig.labels[opts.dataPointIndex];
},
offsetX: 0,
dropShadow: {
enabled: false
}
},
labels: ['UI Design', 'UX Design', 'Music', 'Animation', 'React', 'SEO'],
series: [
{
data: [35, 20, 14, 12, 10, 9]
}
],
xaxis: {
categories: ['6', '5', '4', '3', '2', '1'],
axisBorder: {
show: false
},
axisTicks: {
show: false
},
labels: {
style: {
colors: labelColor,
fontFamily: 'Inter',
fontSize: '13px'
},
formatter: function (val) {
return `${val}%`;
}
}
},
yaxis: {
max: 35,
labels: {
style: {
colors: [labelColor],
fontFamily: 'Inter',
fontSize: '13px'
}
}
},
tooltip: {
enabled: true,
style: {
fontSize: '12px'
},
onDatasetHover: {
highlightDataSeries: false
},
custom: function ({ series, seriesIndex, dataPointIndex, w }) {
return '<div class="px-3 py-2">' + '<span>' + series[seriesIndex][dataPointIndex] + '%</span>' + '</div>';
}
},
legend: {
show: false
}
};
if (typeof horizontalBarChartEl !== undefined && horizontalBarChartEl !== null) {
const horizontalBarChart = new ApexCharts(horizontalBarChartEl, horizontalBarChartConfig);
horizontalBarChart.render();
}
// Shipment statistics Chart
// --------------------------------------------------------------------
const shipmentEl = document.querySelector('#shipmentStatisticsChart'),
shipmentConfig = {
series: [
{
name: 'Shipment',
type: 'column',
data: [38, 45, 33, 38, 32, 50, 48, 40, 42, 37]
},
{
name: 'Delivery',
type: 'line',
data: [23, 28, 23, 32, 28, 44, 32, 38, 26, 34]
}
],
chart: {
height: 270,
type: 'line',
stacked: false,
parentHeightOffset: 0,
toolbar: {
show: false
},
zoom: {
enabled: false
}
},
markers: {
size: 5,
colors: [config.colors.white],
strokeColors: chartColors.line.series2,
hover: {
size: 6
},
borderRadius: 4
},
stroke: {
curve: 'smooth',
width: [0, 3],
lineCap: 'round'
},
legend: {
show: true,
position: 'bottom',
markers: {
width: 8,
height: 8,
offsetX: -3
},
height: 40,
offsetY: 10,
itemMargin: {
horizontal: 8,
vertical: 0
},
fontSize: '15px',
fontFamily: 'Inter',
fontWeight: 400,
labels: {
colors: headingColor,
useSeriesColors: false
},
offsetY: 10
},
grid: {
strokeDashArray: 8,
borderColor
},
colors: [chartColors.line.series1, chartColors.line.series2],
fill: {
opacity: [1, 1]
},
plotOptions: {
bar: {
columnWidth: '30%',
startingShape: 'rounded',
endingShape: 'rounded',
borderRadius: 4
}
},
dataLabels: {
enabled: false
},
xaxis: {
tickAmount: 10,
categories: ['1 Jan', '2 Jan', '3 Jan', '4 Jan', '5 Jan', '6 Jan', '7 Jan', '8 Jan', '9 Jan', '10 Jan'],
labels: {
style: {
colors: labelColor,
fontSize: '13px',
fontFamily: 'Inter',
fontWeight: 400
}
},
axisBorder: {
show: false
},
axisTicks: {
show: false
}
},
yaxis: {
tickAmount: 4,
min: 10,
max: 50,
labels: {
style: {
colors: labelColor,
fontSize: '13px',
fontFamily: 'Inter',
fontWeight: 400
},
formatter: function (val) {
return val + '%';
}
}
},
responsive: [
{
breakpoint: 1400,
options: {
chart: {
height: 270
},
xaxis: {
labels: {
style: {
fontSize: '10px'
}
}
},
legend: {
itemMargin: {
vertical: 0,
horizontal: 10
},
fontSize: '13px',
offsetY: 12
}
}
},
{
breakpoint: 1025,
options: {
chart: {
height: 415
},
plotOptions: {
bar: {
columnWidth: '50%'
}
}
}
},
{
breakpoint: 982,
options: {
plotOptions: {
bar: {
columnWidth: '30%'
}
}
}
},
{
breakpoint: 480,
options: {
chart: {
height: 250
},
legend: {
offsetY: 7
}
}
}
]
};
if (typeof shipmentEl !== undefined && shipmentEl !== null) {
const shipment = new ApexCharts(shipmentEl, shipmentConfig);
shipment.render();
}
// Reasons for delivery exceptions Chart
// --------------------------------------------------------------------
const deliveryExceptionsChartE1 = document.querySelector('#deliveryExceptionsChart'),
deliveryExceptionsChartConfig = {
chart: {
height: 420,
parentHeightOffset: 0,
type: 'donut'
},
labels: ['Incorrect address', 'Weather conditions', 'Federal Holidays', 'Damage during transit'],
series: [13, 25, 22, 40],
colors: [
chartColors.donut2.series1,
chartColors.donut2.series2,
chartColors.donut2.series3,
chartColors.donut2.series4
],
stroke: {
width: 0
},
dataLabels: {
enabled: false,
formatter: function (val, opt) {
return parseInt(val) + '%';
}
},
legend: {
show: true,
position: 'bottom',
offsetY: 10,
markers: {
width: 8,
height: 8,
offsetX: -5
},
itemMargin: {
horizontal: 16,
vertical: 5
},
fontSize: '13px',
fontFamily: 'Inter',
fontWeight: 400,
labels: {
colors: headingColor,
useSeriesColors: false
}
},
tooltip: {
theme: currentTheme
},
grid: {
padding: {
top: 15
}
},
plotOptions: {
pie: {
donut: {
size: '75%',
labels: {
show: true,
value: {
fontSize: '24px',
fontFamily: 'Inter',
color: headingColor,
fontWeight: 500,
offsetY: -30,
formatter: function (val) {
return parseInt(val) + '%';
}
},
name: {
offsetY: 20,
fontFamily: 'Inter'
},
total: {
show: true,
fontSize: '15px',
fontFamily: 'Inter',
label: 'AVG. Exceptions',
color: bodyColorLabel,
formatter: function (w) {
return '30%';
}
}
}
}
}
},
responsive: [
{
breakpoint: 420,
options: {
chart: {
height: 360
}
}
}
]
};
if (typeof deliveryExceptionsChartE1 !== undefined && deliveryExceptionsChartE1 !== null) {
const deliveryExceptionsChart = new ApexCharts(deliveryExceptionsChartE1, deliveryExceptionsChartConfig);
deliveryExceptionsChart.render();
}
})();