500 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			500 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			JavaScript
		
	
	
| /**
 | |
| * Theme: Attex - Responsive Tailwind CSS 3 Admin Dashboard
 | |
| * Author: Coderthemes
 | |
| * Module/App: Dashboard Analytics
 | |
| */
 | |
| 
 | |
| 
 | |
| window.Apex = {
 | |
|     chart: {
 | |
|         parentHeightOffset: 0,
 | |
|         toolbar: {
 | |
|             show: false
 | |
|         }
 | |
|     },
 | |
|     grid: {
 | |
|         padding: {
 | |
|             left: 0,
 | |
|             right: 0
 | |
|         }
 | |
|     },
 | |
|     colors: ["#16a7e9", "#47ad77", "#fa5c7c", "#ffbc00"],
 | |
| };
 | |
| 
 | |
| function getRandomData(number) {
 | |
|     var graphData = [];
 | |
|     for (var idx = 0; idx < number; idx++) {
 | |
|         graphData.push(Math.floor(Math.random() * Math.floor(90)) + 30);
 | |
|     }
 | |
|     return graphData;
 | |
| }
 | |
| 
 | |
| function getDaysInMonth(month, year) {
 | |
|     var date = new Date(year, month, 1);
 | |
|     var days = [];
 | |
|     var idx = 0;
 | |
|     while (date.getMonth() === month && idx < 15) {
 | |
|         var d = new Date(date);
 | |
|         days.push(d.getDate() + " " + d.toLocaleString('en-us', { month: 'short' }));
 | |
|         date.setDate(date.getDate() + 1);
 | |
|         idx += 1;
 | |
|     }
 | |
|     return days;
 | |
| }
 | |
| 
 | |
| var now = new Date();
 | |
| var labels = getDaysInMonth(now.getMonth() + 1, now.getFullYear());
 | |
| 
 | |
| var colors = ["#16a7e9", "#47ad77", "#fa5c7c", "#ffbc00"];
 | |
| var dataColors = document.querySelector("#sessions-overview").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| var options = {
 | |
|     chart: {
 | |
|         height: 240,
 | |
|         type: 'area'
 | |
|     },
 | |
|     dataLabels: {
 | |
|         enabled: false
 | |
|     },
 | |
|     stroke: {
 | |
|         curve: 'smooth',
 | |
|         width: 4
 | |
|     },
 | |
|     series: [{
 | |
|         name: 'Sessions',
 | |
|         data: [10, 20, 5, 15, 10, 20, 15, 25, 20, 30, 25, 40, 30, 50, 35]
 | |
|     }],
 | |
|     zoom: {
 | |
|         enabled: false
 | |
|     },
 | |
|     legend: {
 | |
|         show: false
 | |
|     },
 | |
|     colors: colors,
 | |
|     xaxis: {
 | |
|         type: 'string',
 | |
|         categories: labels,
 | |
|         tooltip: {
 | |
|             enabled: false
 | |
|         },
 | |
|         axisBorder: {
 | |
|             show: false
 | |
|         },
 | |
|         labels: {
 | |
| 
 | |
|         }
 | |
|     },
 | |
|     yaxis: {
 | |
|         labels: {
 | |
|             formatter: function (val) {
 | |
|                 return val + "k"
 | |
|             },
 | |
|             offsetX: -15
 | |
|         }
 | |
|     },
 | |
|     fill: {
 | |
|         type: 'gradient',
 | |
|         gradient: {
 | |
|             type: "vertical",
 | |
|             shadeIntensity: 1,
 | |
|             inverseColors: false,
 | |
|             opacityFrom: 0.45,
 | |
|             opacityTo: 0.05,
 | |
|             stops: [45, 100]
 | |
|         },
 | |
|     },
 | |
| }
 | |
| 
 | |
| var chart = new ApexCharts(
 | |
|     document.querySelector("#sessions-overview"),
 | |
|     options
 | |
| );
 | |
| 
 | |
| chart.render();
 | |
| 
 | |
| // --------------------------------------------------
 | |
| var categories = [];
 | |
| for (var i = 10; i >= 1; i--) {
 | |
|     categories.push(i + ' min ago');
 | |
| }
 | |
| function getRandomData(length) {
 | |
|     var d = [];
 | |
|     for (var idx = 0; idx < length; idx++) {
 | |
|         d.push(Math.floor(Math.random() * 90) + 10);
 | |
|     }
 | |
|     return d;
 | |
| }
 | |
| 
 | |
| var colors = ["#16a7e9", "#47ad77", "#fa5c7c", "#ffbc00"];
 | |
| var dataColors = document.querySelector("#views-min").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| var options = {
 | |
|     chart: {
 | |
|         height: 216,
 | |
|         type: 'bar',
 | |
|         stacked: true
 | |
|     },
 | |
|     plotOptions: {
 | |
|         bar: {
 | |
|             horizontal: false,
 | |
|             endingShape: "rounded",
 | |
|             columnWidth: "22%",
 | |
|             dataLabels: {
 | |
|                 position: 'top', // top, center, bottom
 | |
|             },
 | |
|         },
 | |
|     },
 | |
|     dataLabels: {
 | |
|         enabled: true,
 | |
|         offsetY: -24,
 | |
|         style: {
 | |
|             fontSize: '12px',
 | |
|             colors: ["#8a969c"]
 | |
|         }
 | |
|     },
 | |
|     series: [{
 | |
|         name: 'Views',
 | |
|         data: getRandomData(10)
 | |
|     }],
 | |
|     zoom: {
 | |
|         enabled: false
 | |
|     },
 | |
|     legend: {
 | |
|         show: false
 | |
|     },
 | |
|     colors: colors,
 | |
|     xaxis: {
 | |
|         categories: categories,
 | |
|         labels: {
 | |
|             show: false
 | |
|         },
 | |
|         axisTicks: {
 | |
|             show: false
 | |
|         },
 | |
|         axisBorder: {
 | |
|             show: false
 | |
|         }
 | |
|     },
 | |
|     yaxis: {
 | |
|         labels: {
 | |
|             show: false
 | |
|         }
 | |
|     },
 | |
|     fill: {
 | |
|         type: "gradient",
 | |
|         gradient: {
 | |
|             inverseColors: !0,
 | |
|             shade: "light",
 | |
|             type: "horizontal",
 | |
|             shadeIntensity: .25,
 | |
|             gradientToColors: void 0,
 | |
|             opacityFrom: 1,
 | |
|             opacityTo: 1,
 | |
|             stops: [0, 100, 100, 100]
 | |
|         }
 | |
|     },
 | |
|     tooltip: {
 | |
|         y: {
 | |
|             formatter: function (val) {
 | |
|                 return val;
 | |
|             }
 | |
|         },
 | |
|     },
 | |
| }
 | |
| 
 | |
| var chart2 = new ApexCharts(
 | |
|     document.querySelector("#views-min"),
 | |
|     options
 | |
| );
 | |
| 
 | |
| chart2.render();
 | |
| 
 | |
| 
 | |
| // ------------ sessions by browser
 | |
| var colors = ["#16a7e9", "#47ad77", "#fa5c7c", "#ffbc00"];
 | |
| var dataColors = document.querySelector("#sessions-browser").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| var options = {
 | |
|     chart: {
 | |
|         height: 364,
 | |
|         type: 'radar',
 | |
|     },
 | |
|     series: [{
 | |
|         name: 'Usage',
 | |
|         data: [80, 50, 30, 40, 60, 20],
 | |
|     }],
 | |
|     labels: ['Chrome', 'Firefox', 'Safari', 'Opera', 'Edge', 'Explorer'],
 | |
|     plotOptions: {
 | |
|         radar: {
 | |
|             size: 130,
 | |
|             polygons: {
 | |
|                 strokeColor: '#e9e9e9',
 | |
|                 fill: {
 | |
|                     colors: ['#f8f8f8', '#fff']
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     },
 | |
|     colors: colors,
 | |
|     yaxis: {
 | |
|         labels: {
 | |
|             formatter: function (val) {
 | |
|                 return val + "%";
 | |
|             }
 | |
|         },
 | |
|     },
 | |
|     dataLabels: {
 | |
|         enabled: true
 | |
|     },
 | |
|     markers: {
 | |
|         size: 4,
 | |
|         colors: ['#fff'],
 | |
|         strokeColor: colors[0],
 | |
|         strokeWidth: 2,
 | |
|     }
 | |
| }
 | |
| 
 | |
| var chart = new ApexCharts(
 | |
|     document.querySelector("#sessions-browser"),
 | |
|     options
 | |
| );
 | |
| 
 | |
| chart.render();
 | |
| 
 | |
| /* ------------- visitors by os */
 | |
| var colors = ["#16a7e9", "#47ad77", "#fa5c7c", "#ffbc00"];
 | |
| var dataColors = document.querySelector("#sessions-os").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| var options = {
 | |
|     chart: {
 | |
|         height: 315,
 | |
|         type: 'radialBar',
 | |
|     },
 | |
|     plotOptions: {
 | |
|         radialBar: {
 | |
|             dataLabels: {
 | |
|                 name: {
 | |
|                     fontSize: '22px',
 | |
|                 },
 | |
|                 value: {
 | |
|                     fontSize: '16px',
 | |
|                 },
 | |
|                 total: {
 | |
|                     show: true,
 | |
|                     label: 'OS',
 | |
|                     formatter: function (w) {
 | |
|                         // By default this function returns the average of all series. The below is just an example to show the use of custom formatter function
 | |
|                         return 8541
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     },
 | |
|     colors: colors,
 | |
|     series: [44, 55, 67, 83],
 | |
|     labels: ['Windows', 'Macintosh', 'Linux', 'Android']
 | |
| }
 | |
| 
 | |
| var chart = new ApexCharts(
 | |
|     document.querySelector("#sessions-os"),
 | |
|     options
 | |
| );
 | |
| 
 | |
| chart.render();
 | |
| 
 | |
| //
 | |
| // Campaign Sent Chart
 | |
| //
 | |
| var colors = ["#16a7e9"];
 | |
| var dataColors = document.querySelector("#campaign-sent-chart").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| var options1 = {
 | |
|     chart: {
 | |
|         type: 'bar',
 | |
|         height: 60,
 | |
|         sparkline: {
 | |
|             enabled: true
 | |
|         }
 | |
|     },
 | |
|     plotOptions: {
 | |
|         bar: {
 | |
|             columnWidth: '60%'
 | |
|         }
 | |
|     },
 | |
|     colors: colors,
 | |
|     series: [{
 | |
|         data: [25, 66, 41, 89, 63, 25, 44, 12, 36, 9, 54]
 | |
|     }],
 | |
|     labels: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
 | |
|     xaxis: {
 | |
|         crosshairs: {
 | |
|             width: 1
 | |
|         },
 | |
|     },
 | |
|     tooltip: {
 | |
|         fixed: {
 | |
|             enabled: false
 | |
|         },
 | |
|         x: {
 | |
|             show: false
 | |
|         },
 | |
|         y: {
 | |
|             title: {
 | |
|                 formatter: function (seriesName) {
 | |
|                     return ''
 | |
|                 }
 | |
|             }
 | |
|         },
 | |
|         marker: {
 | |
|             show: false
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| new ApexCharts(document.querySelector("#campaign-sent-chart"), options1).render();
 | |
| 
 | |
| // 
 | |
| // New Leads Chart
 | |
| //
 | |
| var colors = ["#16a7e9"];
 | |
| var dataColors = document.querySelector("#new-leads-chart").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| var options2 = {
 | |
|     chart: {
 | |
|         type: 'line',
 | |
|         height: 60,
 | |
|         sparkline: {
 | |
|             enabled: true
 | |
|         }
 | |
|     },
 | |
|     series: [{
 | |
|         data: [25, 66, 41, 89, 63, 25, 44, 12, 36, 9, 54]
 | |
|     }],
 | |
|     stroke: {
 | |
|         width: 2,
 | |
|         curve: 'smooth'
 | |
|     },
 | |
|     markers: {
 | |
|         size: 0
 | |
|     },
 | |
|     colors: colors,
 | |
|     tooltip: {
 | |
|         fixed: {
 | |
|             enabled: false
 | |
|         },
 | |
|         x: {
 | |
|             show: false
 | |
|         },
 | |
|         y: {
 | |
|             title: {
 | |
|                 formatter: function (seriesName) {
 | |
|                     return ''
 | |
|                 }
 | |
|             }
 | |
|         },
 | |
|         marker: {
 | |
|             show: false
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| new ApexCharts(document.querySelector("#new-leads-chart"), options2).render();
 | |
| 
 | |
| 
 | |
| // active counts
 | |
| setInterval(function () {
 | |
|     var ac = Math.floor(Math.random() * 600 + 150);
 | |
|     document.getElementById("active-users-count").textContent = ac;
 | |
|     document.getElementById("active-views-count").textContent = Math.floor(Math.random() * ac + 200);
 | |
| }, 2000);
 | |
| 
 | |
| 
 | |
| /* ------------- visitors by country */
 | |
| var colors = ["#3e60d5", "#47ad77", "#fa5c7c", "#ffbc00"];
 | |
| var dataColors = document.querySelector("#country-chart").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| var options = {
 | |
|     chart: {
 | |
|         height: 390,
 | |
|         type: 'bar',
 | |
|     },
 | |
|     plotOptions: {
 | |
|         bar: {
 | |
|             horizontal: true,
 | |
|         }
 | |
|     },
 | |
|     colors: colors,
 | |
|     dataLabels: {
 | |
|         enabled: false
 | |
|     },
 | |
|     series: [{
 | |
|         name: 'Orders',
 | |
|         data: [90, 75, 60, 50, 45, 36, 28, 20, 15, 12]
 | |
|     }],
 | |
|     xaxis: {
 | |
|         categories: ["India", "China", "United States", "Japan", "France", "Italy", "Netherlands", "United Kingdom", "Canada", "South Korea"],
 | |
|         axisBorder: {
 | |
|             show: false,
 | |
|         },
 | |
|         labels: {
 | |
|             formatter: function (val) {
 | |
|                 return val + "%";
 | |
|             }
 | |
|         }
 | |
|     },
 | |
|     grid: {
 | |
|         strokeDashArray: [5]
 | |
|     }
 | |
| }
 | |
| 
 | |
| var chart = new ApexCharts(
 | |
|     document.querySelector("#country-chart"),
 | |
|     options
 | |
| );
 | |
| 
 | |
| chart.render();
 | |
| 
 | |
| 
 | |
| // World Map
 | |
| const map = new jsVectorMap({
 | |
|     map: 'world',
 | |
|     selector: '#world-map-markers',
 | |
|     zoomOnScroll: false, 
 | |
|     zoomButtons: true,
 | |
|     markersSelectable: 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] },
 | |
|     ],
 | |
|     markerStyle: {
 | |
|         initial: { fill: "#3e60d5" },
 | |
|         selected: { fill: "#3e60d56e" }
 | |
|     },
 | |
|     labels: {
 | |
|         markers: {
 | |
|             render: marker => marker.name
 | |
|         }
 | |
|     }
 | |
| }); |