158 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
| /**
 | |
|  * Theme: Attex - Responsive Tailwind CSS 3 Admin Dashboard
 | |
|  * Author: Coderthemes
 | |
|  * Module/App: Profile
 | |
|  */
 | |
| 
 | |
| (function () {
 | |
|     "use strict";
 | |
| 
 | |
|     var Profile = function () {
 | |
|         this.body = document.querySelector("body");
 | |
|         this.charts = [];
 | |
|     };
 | |
| 
 | |
|     Profile.prototype.respChart = function (selector, type, data, options) {
 | |
|         var draw3 = Chart.controllers.bar.prototype.draw;
 | |
|         Chart.controllers.bar.draw = function () {
 | |
|             draw3.apply(this, arguments);
 | |
|             var ctx = this.chart.ctx;
 | |
|             var _fill = ctx.fill;
 | |
|             ctx.fill = function () {
 | |
|                 ctx.save();
 | |
|                 ctx.shadowColor = 'rgba(0,0,0,0.01)';
 | |
|                 ctx.shadowBlur = 5;
 | |
|                 ctx.shadowOffsetX = 4;
 | |
|                 ctx.shadowOffsetY = 5;
 | |
|                 _fill.apply(this, arguments);
 | |
|                 ctx.restore();
 | |
|             };
 | |
|         };
 | |
| 
 | |
|         //default config
 | |
|         Chart.defaults.font.color = "rgba(93,106,120,0.2)";
 | |
|         Chart.defaults.scale.grid.color = "rgba(93,106,120,0.2)";
 | |
| 
 | |
|         var ctx = selector.getContext("2d");
 | |
|         var container = selector.parentNode;
 | |
| 
 | |
|         function generateChart() {
 | |
|             var ww = selector.setAttribute('width', container.offsetWidth);
 | |
|             var chart;
 | |
|             switch (type) {
 | |
|                 case 'Line':
 | |
|                     chart = new Chart(ctx, { type: 'line', data: data, options: options });
 | |
|                     break;
 | |
|                 case 'Doughnut':
 | |
|                     chart = new Chart(ctx, { type: 'doughnut', data: data, options: options });
 | |
|                     break;
 | |
|                 case 'Pie':
 | |
|                     chart = new Chart(ctx, { type: 'pie', data: data, options: options });
 | |
|                     break;
 | |
|                 case 'Bar':
 | |
|                     chart = new Chart(ctx, { type: 'bar', data: data, options: options });
 | |
|                     break;
 | |
|                 case 'Radar':
 | |
|                     chart = new Chart(ctx, { type: 'radar', data: data, options: options });
 | |
|                     break;
 | |
|                 case 'PolarArea':
 | |
|                     chart = new Chart(ctx, { data: data, type: 'polarArea', options: options });
 | |
|                     break;
 | |
|             }
 | |
|             return chart;
 | |
|         }
 | |
| 
 | |
|         return generateChart();
 | |
|     };
 | |
| 
 | |
|     Profile.prototype.initCharts = function () {
 | |
|         var charts = [];
 | |
| 
 | |
|         var highPerformingProduct = document.getElementById('high-performing-product');
 | |
|         if (highPerformingProduct) {
 | |
|             var ctx = highPerformingProduct.getContext("2d");
 | |
|             var gradientStroke = ctx.createLinearGradient(0, 500, 0, 150);
 | |
|             gradientStroke.addColorStop(0, "#409c6b");
 | |
|             gradientStroke.addColorStop(1, "#3e60d5");
 | |
| 
 | |
|             var barChart = {
 | |
|                 labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
 | |
|                 datasets: [
 | |
|                     {
 | |
|                         label: "Orders",
 | |
|                         backgroundColor: gradientStroke,
 | |
|                         borderColor: gradientStroke,
 | |
|                         hoverBackgroundColor: gradientStroke,
 | |
|                         hoverBorderColor: gradientStroke,
 | |
|                         data: [65, 59, 80, 81, 56, 89, 40, 32, 65, 59, 80, 81]
 | |
|                     },
 | |
|                     {
 | |
|                         label: "Revenue",
 | |
|                         backgroundColor: "rgba(93,106,120,0.2)",
 | |
|                         borderColor: "rgba(93,106,120,0.2)",
 | |
|                         hoverBackgroundColor: "rgba(93,106,120,0.2)",
 | |
|                         hoverBorderColor: "rgba(93,106,120,0.2)",
 | |
|                         data: [89, 40, 32, 65, 59, 80, 81, 56, 89, 40, 65, 59]
 | |
|                     }
 | |
|                 ]
 | |
|             };
 | |
| 
 | |
|             var barOpts = {
 | |
|                 maintainAspectRatio: false,
 | |
|                 datasets: {
 | |
|                     bar: {
 | |
|                         barPercentage: 0.7,
 | |
|                         categoryPercentage: 0.5
 | |
|                     }
 | |
|                 },
 | |
|                 plugins: {
 | |
|                     legend: {
 | |
|                         display: false
 | |
|                     }
 | |
|                 },
 | |
|                 scales: {
 | |
|                     y: {
 | |
|                         grid: {
 | |
|                             display: false,
 | |
|                             color: "rgba(0,0,0,0.05)"
 | |
|                         },
 | |
|                         stacked: false,
 | |
|                         ticks: {
 | |
|                             stepSize: 20
 | |
|                         }
 | |
|                     },
 | |
|                     x: {
 | |
|                         stacked: false,
 | |
|                         grid: {
 | |
|                             color: "rgba(0,0,0,0.01)"
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             };
 | |
| 
 | |
|             charts.push(this.respChart(highPerformingProduct, 'Bar', barChart, barOpts));
 | |
|         }
 | |
| 
 | |
|         return charts;
 | |
|     };
 | |
| 
 | |
|     Profile.prototype.init = function () {
 | |
|         var self = this;
 | |
|         Chart.defaults.font.family = '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif';
 | |
| 
 | |
|         self.charts = this.initCharts();
 | |
| 
 | |
|         window.addEventListener('resize', function (e) {
 | |
|             self.charts.forEach(function (chart) {
 | |
|                 try {
 | |
|                     chart.destroy();
 | |
|                 } catch (err) { }
 | |
|             });
 | |
|             self.charts = self.initCharts();
 | |
|         });
 | |
|     };
 | |
| 
 | |
|     var profile = new Profile();
 | |
|     profile.init();
 | |
| })();
 |