1273 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			1273 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			JavaScript
		
	
	
| /**
 | |
|  * Theme: Attex - Responsive Tailwind CSS 3 Admin Dashboard
 | |
|  * Author: Coderthemes
 | |
|  * Module/App: Apex Column Charts
 | |
|  */
 | |
| 
 | |
| //
 | |
| // BASIC COLUMN CHART
 | |
| //
 | |
| var colors = ["#3e60d5", "#47ad77", "#fa5c7c"];
 | |
| var dataColors = document.querySelector("#basic-column").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| var options = {
 | |
|     chart: {
 | |
|         height: 396,
 | |
|         type: 'bar',
 | |
|         toolbar: {
 | |
|             show: false
 | |
|         }
 | |
|     },
 | |
|     plotOptions: {
 | |
|         bar: {
 | |
|             horizontal: false,
 | |
|             endingShape: 'rounded',
 | |
|             columnWidth: '55%',
 | |
|         },
 | |
|     },
 | |
|     dataLabels: {
 | |
|         enabled: false
 | |
|     },
 | |
|     stroke: {
 | |
|         show: true,
 | |
|         width: 2,
 | |
|         colors: ['transparent']
 | |
|     },
 | |
|     colors: colors,
 | |
|     series: [{
 | |
|         name: 'Net Profit',
 | |
|         data: [44, 55, 57, 56, 61, 58, 63, 60, 66]
 | |
|     }, {
 | |
|         name: 'Revenue',
 | |
|         data: [76, 85, 101, 98, 87, 105, 91, 114, 94]
 | |
|     }, {
 | |
|         name: 'Free Cash Flow',
 | |
|         data: [35, 41, 36, 26, 45, 48, 52, 53, 41]
 | |
|     }],
 | |
|     xaxis: {
 | |
|         categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct'],
 | |
|     },
 | |
|     legend: {
 | |
|         offsetY: 7,
 | |
|     },
 | |
|     yaxis: {
 | |
|         title: {
 | |
|             text: '$ (thousands)'
 | |
|         }
 | |
|     },
 | |
|     fill: {
 | |
|         opacity: 1
 | |
|     },
 | |
|     grid: {
 | |
|         row: {
 | |
|             colors: ['transparent', 'transparent'], // takes an array which will be repeated on columns
 | |
|             opacity: 0.2
 | |
|         },
 | |
|         borderColor: '#f1f3fa',
 | |
|         padding: {
 | |
|             bottom: 5
 | |
|         }
 | |
|     },
 | |
|     tooltip: {
 | |
|         y: {
 | |
|             formatter: function (val) {
 | |
|                 return "$ " + val + " thousands"
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| var chart = new ApexCharts(
 | |
|     document.querySelector("#basic-column"),
 | |
|     options
 | |
| );
 | |
| 
 | |
| chart.render();
 | |
| 
 | |
| 
 | |
| //
 | |
| // COLUMN CHART WITH DATALABELS
 | |
| //
 | |
| var colors = ["#3e60d5"];
 | |
| var dataColors = document.querySelector("#datalabels-column").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| var options = {
 | |
|     chart: {
 | |
|         height: 380,
 | |
|         type: 'bar',
 | |
|         toolbar: {
 | |
|             show: false
 | |
|         }
 | |
|     },
 | |
|     plotOptions: {
 | |
|         bar: {
 | |
|             borderRadius: 10,
 | |
|             dataLabels: {
 | |
|                 position: 'top', // top, center, bottom
 | |
|             },
 | |
|         }
 | |
|     },
 | |
|     dataLabels: {
 | |
|         enabled: true,
 | |
|         formatter: function (val) {
 | |
|             return val + "%";
 | |
|         },
 | |
|         offsetY: -25,
 | |
|         style: {
 | |
|             fontSize: '12px',
 | |
|             colors: ["#304758"]
 | |
|         }
 | |
|     },
 | |
|     colors: colors,
 | |
|     legend: {
 | |
|         show: true,
 | |
|         horizontalAlign: "center",
 | |
|         offsetX: 0,
 | |
|         offsetY: -5,
 | |
|     },
 | |
|     series: [{
 | |
|         name: 'Inflation',
 | |
|         data: [2.3, 3.1, 4.0, 10.1, 4.0, 3.6, 3.2, 2.3, 1.4, 0.8, 0.5, 0.2]
 | |
|     }],
 | |
|     xaxis: {
 | |
|         categories: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
 | |
|         position: 'top',
 | |
|         labels: {
 | |
|             offsetY: 0,
 | |
|         },
 | |
|         axisBorder: {
 | |
|             show: false
 | |
|         },
 | |
|         axisTicks: {
 | |
|             show: false
 | |
|         },
 | |
|         crosshairs: {
 | |
|             fill: {
 | |
|                 type: 'gradient',
 | |
|                 gradient: {
 | |
|                     colorFrom: '#D8E3F0',
 | |
|                     colorTo: '#BED1E6',
 | |
|                     stops: [0, 100],
 | |
|                     opacityFrom: 0.4,
 | |
|                     opacityTo: 0.5,
 | |
|                 }
 | |
|             }
 | |
|         },
 | |
|         tooltip: {
 | |
|             enabled: true,
 | |
|             offsetY: -10,
 | |
|         }
 | |
|     },
 | |
|     fill: {
 | |
|         gradient: {
 | |
|             enabled: false,
 | |
|             shade: 'light',
 | |
|             type: "horizontal",
 | |
|             shadeIntensity: 0.25,
 | |
|             gradientToColors: undefined,
 | |
|             inverseColors: true,
 | |
|             opacityFrom: 1,
 | |
|             opacityTo: 1,
 | |
|             stops: [50, 0, 100, 100]
 | |
|         },
 | |
|     },
 | |
|     yaxis: {
 | |
|         axisBorder: {
 | |
|             show: false
 | |
|         },
 | |
|         axisTicks: {
 | |
|             show: false,
 | |
|         },
 | |
|         labels: {
 | |
|             show: false,
 | |
|             formatter: function (val) {
 | |
|                 return val + "%";
 | |
|             }
 | |
|         }
 | |
| 
 | |
|     },
 | |
|     title: {
 | |
|         text: 'Monthly Inflation in Argentina, 2002',
 | |
|         floating: true,
 | |
|         offsetY: 360,
 | |
|         align: 'center',
 | |
|         style: {
 | |
|             color: '#444'
 | |
|         }
 | |
|     },
 | |
|     grid: {
 | |
|         row: {
 | |
|             colors: ['transparent', 'transparent'], // takes an array which will be repeated on columns
 | |
|             opacity: 0.2
 | |
|         },
 | |
|         borderColor: '#f1f3fa'
 | |
|     }
 | |
| }
 | |
| 
 | |
| var chart = new ApexCharts(
 | |
|     document.querySelector("#datalabels-column"),
 | |
|     options
 | |
| );
 | |
| 
 | |
| chart.render();
 | |
| 
 | |
| 
 | |
| //
 | |
| // STACKED COLUMN CHART
 | |
| //
 | |
| 
 | |
| var colors = ["#39afd1", "#ffbc00", "#e3eaef"];
 | |
| var dataColors = document.querySelector("#stacked-column").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| var options = {
 | |
|     chart: {
 | |
|         height: 380,
 | |
|         type: 'bar',
 | |
|         stacked: true,
 | |
|         toolbar: {
 | |
|             show: false
 | |
|         }
 | |
|     },
 | |
|     plotOptions: {
 | |
|         bar: {
 | |
|             horizontal: false,
 | |
|             columnWidth: '50%',
 | |
|         },
 | |
|     },
 | |
|     series: [{
 | |
|         name: 'Product A',
 | |
|         data: [44, 55, 41, 67, 22, 43, 21, 49]
 | |
|     }, {
 | |
|         name: 'Product B',
 | |
|         data: [13, 23, 20, 8, 13, 27, 33, 12]
 | |
|     }, {
 | |
|         name: 'Product C',
 | |
|         data: [11, 17, 15, 15, 21, 14, 15, 13]
 | |
|     }],
 | |
|     xaxis: {
 | |
|         categories: ['2011 Q1', '2011 Q2', '2011 Q3', '2011 Q4', '2012 Q1', '2012 Q2', '2012 Q3', '2012 Q4'],
 | |
|     },
 | |
|     colors: colors,
 | |
|     fill: {
 | |
|         opacity: 1
 | |
|     },
 | |
|     legend: {
 | |
|         offsetY: 7,
 | |
|     },
 | |
|     grid: {
 | |
|         row: {
 | |
|             colors: ['transparent', 'transparent'], // takes an array which will be repeated on columns
 | |
|             opacity: 0.2
 | |
|         },
 | |
|         borderColor: '#f1f3fa',
 | |
|         padding: {
 | |
|             bottom: 5
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| var chart = new ApexCharts(
 | |
|     document.querySelector("#stacked-column"),
 | |
|     options
 | |
| );
 | |
| 
 | |
| chart.render();
 | |
| 
 | |
| 
 | |
| //
 | |
| // 100% STACKED COLUMN CHART
 | |
| //
 | |
| var colors = ["#39afd1", "#47ad77", "#e3eaef"];
 | |
| var dataColors = document.querySelector("#full-stacked-column").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| var options = {
 | |
|     chart: {
 | |
|         height: 380,
 | |
|         type: 'bar',
 | |
|         stacked: true,
 | |
|         stackType: '100%',
 | |
|         toolbar: {
 | |
|             show: false
 | |
|         }
 | |
|     },
 | |
|     plotOptions: {
 | |
|         bar: {
 | |
|             columnWidth: '50%',
 | |
|         },
 | |
|     },
 | |
|     series: [{
 | |
|         name: 'Product A',
 | |
|         data: [44, 55, 41, 67, 22, 43, 21, 49]
 | |
|     }, {
 | |
|         name: 'Product B',
 | |
|         data: [13, 23, 20, 8, 13, 27, 33, 12]
 | |
|     }, {
 | |
|         name: 'Product C',
 | |
|         data: [11, 17, 15, 15, 21, 14, 15, 13]
 | |
|     }],
 | |
|     xaxis: {
 | |
|         categories: ['2011 Q1', '2011 Q2', '2011 Q3', '2011 Q4', '2012 Q1', '2012 Q2', '2012 Q3', '2012 Q4'],
 | |
|     },
 | |
|     fill: {
 | |
|         opacity: 1
 | |
|     },
 | |
|     legend: {
 | |
|         offsetY: 7,
 | |
|     },
 | |
|     colors: colors,
 | |
|     grid: {
 | |
|         row: {
 | |
|             colors: ['transparent', 'transparent'], // takes an array which will be repeated on columns
 | |
|             opacity: 0.2
 | |
|         },
 | |
|         borderColor: '#f1f3fa',
 | |
|         padding: {
 | |
|             bottom: 5
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| var chart = new ApexCharts(
 | |
|     document.querySelector("#full-stacked-column"),
 | |
|     options
 | |
| );
 | |
| 
 | |
| chart.render();
 | |
| 
 | |
| //
 | |
| // COLUMN WITH MARKERS
 | |
| //
 | |
| 
 | |
| 
 | |
| var colors = ["#47ad77", "#fa5c7c"];
 | |
| var dataColors = document.querySelector("#column-with-markers").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| 
 | |
| var options = {
 | |
|     series: [{
 | |
|         name: 'Actual',
 | |
|         data: [{
 | |
|                 x: '2011',
 | |
|                 y: 1292,
 | |
|                 goals: [{
 | |
|                     name: 'Expected',
 | |
|                     value: 1400,
 | |
|                     strokeHeight: 5,
 | |
|                     strokeColor: colors[1]
 | |
|                 }]
 | |
|             },
 | |
|             {
 | |
|                 x: '2012',
 | |
|                 y: 4432,
 | |
|                 goals: [{
 | |
|                     name: 'Expected',
 | |
|                     value: 5400,
 | |
|                     strokeHeight: 5,
 | |
|                     strokeColor: colors[1]
 | |
|                 }]
 | |
|             },
 | |
|             {
 | |
|                 x: '2013',
 | |
|                 y: 5423,
 | |
|                 goals: [{
 | |
|                     name: 'Expected',
 | |
|                     value: 5200,
 | |
|                     strokeHeight: 5,
 | |
|                     strokeColor: colors[1]
 | |
|                 }]
 | |
|             },
 | |
|             {
 | |
|                 x: '2014',
 | |
|                 y: 6653,
 | |
|                 goals: [{
 | |
|                     name: 'Expected',
 | |
|                     value: 6500,
 | |
|                     strokeHeight: 5,
 | |
|                     strokeColor: colors[1]
 | |
|                 }]
 | |
|             },
 | |
|             {
 | |
|                 x: '2015',
 | |
|                 y: 8133,
 | |
|                 goals: [{
 | |
|                     name: 'Expected',
 | |
|                     value: 6600,
 | |
|                     strokeHeight: 13,
 | |
|                     strokeWidth: 0,
 | |
|                     strokeLineCap: 'round',
 | |
|                     strokeColor: colors[1]
 | |
|                 }]
 | |
|             },
 | |
|             {
 | |
|                 x: '2016',
 | |
|                 y: 7132,
 | |
|                 goals: [{
 | |
|                     name: 'Expected',
 | |
|                     value: 7500,
 | |
|                     strokeHeight: 5,
 | |
|                     strokeColor: colors[1]
 | |
|                 }]
 | |
|             },
 | |
|             {
 | |
|                 x: '2017',
 | |
|                 y: 7332,
 | |
|                 goals: [{
 | |
|                     name: 'Expected',
 | |
|                     value: 8700,
 | |
|                     strokeHeight: 5,
 | |
|                     strokeColor: colors[1]
 | |
|                 }]
 | |
|             },
 | |
|             {
 | |
|                 x: '2018',
 | |
|                 y: 6553,
 | |
|                 goals: [{
 | |
|                     name: 'Expected',
 | |
|                     value: 7300,
 | |
|                     strokeHeight: 2,
 | |
|                     strokeDashArray: 2,
 | |
|                     strokeColor: colors[1]
 | |
|                 }]
 | |
|             }
 | |
|         ]
 | |
|     }],
 | |
|     chart: {
 | |
|         height: 380,
 | |
|         type: 'bar'
 | |
|     },
 | |
|     plotOptions: {
 | |
|         bar: {
 | |
|             columnWidth: '60%'
 | |
|         }
 | |
|     },
 | |
|     colors: colors,
 | |
|     dataLabels: {
 | |
|         enabled: false
 | |
|     },
 | |
|     legend: {
 | |
|         show: true,
 | |
|         showForSingleSeries: true,
 | |
|         customLegendItems: ['Actual', 'Expected'],
 | |
|         markers: {
 | |
|             fillColors: colors
 | |
|         }
 | |
|     }
 | |
| };
 | |
| 
 | |
| var chart = new ApexCharts(document.querySelector("#column-with-markers"), options);
 | |
| chart.render();
 | |
| 
 | |
| 
 | |
| //
 | |
| // COLUMN WITH GROUP LABEL
 | |
| //
 | |
| 
 | |
| var colors = ["#47ad77", "#fa5c7c"];
 | |
| var dataColors = document.querySelector("#column-with-group-label").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| 
 | |
| dayjs.extend(window.dayjs_plugin_quarterOfYear)
 | |
| var optionsGroup = {
 | |
|     series: [{
 | |
|         name: "Sales",
 | |
|         data: [{
 | |
|             x: '2020/01/01',
 | |
|             y: 400
 | |
|         }, {
 | |
|             x: '2020/04/01',
 | |
|             y: 430
 | |
|         }, {
 | |
|             x: '2020/07/01',
 | |
|             y: 448
 | |
|         }, {
 | |
|             x: '2020/10/01',
 | |
|             y: 470
 | |
|         }, {
 | |
|             x: '2021/01/01',
 | |
|             y: 540
 | |
|         }, {
 | |
|             x: '2021/04/01',
 | |
|             y: 580
 | |
|         }, {
 | |
|             x: '2021/07/01',
 | |
|             y: 690
 | |
|         }, {
 | |
|             x: '2021/10/01',
 | |
|             y: 690
 | |
|         }]
 | |
|     }],
 | |
|     chart: {
 | |
|         type: 'bar',
 | |
|         height: 380,
 | |
|         toolbar: {
 | |
|             show: false,
 | |
|         }
 | |
|     },
 | |
|     plotOptions: {
 | |
|         bar: {
 | |
|             horizontal: false,
 | |
|             columnWidth: '45%',
 | |
|         },
 | |
|     },
 | |
|     colors: colors,
 | |
|     xaxis: {
 | |
|         type: 'category',
 | |
|         labels: {
 | |
|             formatter: function (val) {
 | |
|                 return "Q" + dayjs(val).quarter()
 | |
|             }
 | |
|         },
 | |
|         group: {
 | |
|             style: {
 | |
|                 fontSize: '10px',
 | |
|                 fontWeight: 700
 | |
|             },
 | |
|             groups: [{
 | |
|                     title: '2020',
 | |
|                     cols: 4
 | |
|                 },
 | |
|                 {
 | |
|                     title: '2021',
 | |
|                     cols: 4
 | |
|                 }
 | |
|             ]
 | |
|         }
 | |
|     },
 | |
|     tooltip: {
 | |
|         x: {
 | |
|             formatter: function (val) {
 | |
|                 return "Q" + dayjs(val).quarter() + " " + dayjs(val).format("YYYY")
 | |
|             }
 | |
|         }
 | |
|     },
 | |
| };
 | |
| 
 | |
| var chartGroup = new ApexCharts(document.querySelector("#column-with-group-label"), optionsGroup);
 | |
| chartGroup.render();
 | |
| 
 | |
| 
 | |
| //
 | |
| // COLUMN CHART WITH ROTATED LABELS & ANNOTATIONS
 | |
| //
 | |
| var colors = ["#fa5c7c"];
 | |
| var dataColors = document.querySelector("#rotate-labels-column").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| var options = {
 | |
|     annotations: {
 | |
|         points: [{
 | |
|             x: 'Bananas',
 | |
|             seriesIndex: 0,
 | |
|             label: {
 | |
|                 borderColor: '#3e60d5',
 | |
|                 offsetY: 0,
 | |
|                 style: {
 | |
|                     color: '#fff',
 | |
|                     background: '#3e60d5',
 | |
|                 },
 | |
|                 text: 'Bananas are good',
 | |
|             }
 | |
|         }]
 | |
|     },
 | |
|     chart: {
 | |
|         height: 380,
 | |
|         type: 'bar',
 | |
|         toolbar: {
 | |
|             show: false
 | |
|         }
 | |
|     },
 | |
|     plotOptions: {
 | |
|         bar: {
 | |
|             columnWidth: '50%',
 | |
|             endingShape: 'rounded'
 | |
|         }
 | |
|     },
 | |
|     dataLabels: {
 | |
|         enabled: false
 | |
|     },
 | |
|     stroke: {
 | |
|         width: 2
 | |
|     },
 | |
|     colors: colors,
 | |
|     series: [{
 | |
|         name: 'Servings',
 | |
|         data: [44, 55, 41, 67, 22, 43, 21, 33, 45, 31, 87, 65, 35]
 | |
|     }],
 | |
|     grid: {
 | |
|         borderColor: '#f1f3fa',
 | |
|         padding: {
 | |
|             top: 0,
 | |
|             right: -2,
 | |
|             bottom: -35,
 | |
|             left: 10,
 | |
|         },
 | |
|     },
 | |
|     xaxis: {
 | |
|         labels: {
 | |
|             rotate: -45
 | |
|         },
 | |
|         categories: ['Apples', 'Oranges', 'Strawberries', 'Pineapples', 'Mangoes', 'Bananas',
 | |
|             'Blackberries', 'Pears', 'Watermelons', 'Cherries', 'Pomegranates', 'Tangerines', 'Papayas'
 | |
|         ],
 | |
|     },
 | |
|     yaxis: {
 | |
|         title: {
 | |
|             text: 'Servings',
 | |
|         },
 | |
| 
 | |
|     },
 | |
|     fill: {
 | |
|         type: 'gradient',
 | |
|         gradient: {
 | |
|             shade: 'light',
 | |
|             type: "horizontal",
 | |
|             shadeIntensity: 0.25,
 | |
|             gradientToColors: undefined,
 | |
|             inverseColors: true,
 | |
|             opacityFrom: 0.85,
 | |
|             opacityTo: 0.85,
 | |
|             stops: [50, 0, 100]
 | |
|         },
 | |
|     },
 | |
| 
 | |
| }
 | |
| 
 | |
| var chart = new ApexCharts(
 | |
|     document.querySelector("#rotate-labels-column"),
 | |
|     options
 | |
| );
 | |
| 
 | |
| chart.render();
 | |
| 
 | |
| 
 | |
| //
 | |
| // COLUMN CHART WITH NEGATIVE VALUES
 | |
| //
 | |
| var colors = ["#3e60d5"];
 | |
| var dataColors = document.querySelector("#negative-value-column").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| var options = {
 | |
|     chart: {
 | |
|         height: 380,
 | |
|         type: 'bar',
 | |
|         toolbar: {
 | |
|             show: false
 | |
|         }
 | |
|     },
 | |
|     plotOptions: {
 | |
|         bar: {
 | |
|             colors: {
 | |
|                 ranges: [{
 | |
|                     from: -100,
 | |
|                     to: -46,
 | |
|                     color: '#fa5c7c'
 | |
|                 }, {
 | |
|                     from: -45,
 | |
|                     to: 0,
 | |
|                     color: '#ffbc00'
 | |
|                 }]
 | |
|             },
 | |
|             columnWidth: '80%',
 | |
|         }
 | |
|     },
 | |
|     dataLabels: {
 | |
|         enabled: false,
 | |
|     },
 | |
|     colors: colors,
 | |
|     series: [{
 | |
|         name: 'Cash Flow',
 | |
|         data: [1.45, 5.42, 5.9, -0.42, -12.6, -18.1, -18.2, -14.16, -11.1, -6.09, 0.34, 3.88, 13.07,
 | |
|             5.8, 2, 7.37, 8.1, 13.57, 15.75, 17.1, 19.8, -27.03, -54.4, -47.2, -43.3, -18.6, -
 | |
|             48.6, -41.1, -39.6, -37.6, -29.4, -21.4, -2.4
 | |
|         ]
 | |
|     }],
 | |
|     yaxis: {
 | |
|         title: {
 | |
|             text: 'Growth',
 | |
|         },
 | |
|         labels: {
 | |
|             formatter: function (y) {
 | |
|                 return y.toFixed(0) + "%";
 | |
|             }
 | |
|         }
 | |
| 
 | |
|     },
 | |
|     xaxis: {
 | |
|         // TODO: uncomment below and fix the error
 | |
|         //type: 'datetime',
 | |
|         categories: [
 | |
|             '2011-01-01', '2011-02-01', '2011-03-01', '2011-04-01', '2011-05-01', '2011-06-01',
 | |
|             '2011-07-01', '2011-08-01', '2011-09-01', '2011-10-01', '2011-11-01', '2011-12-01',
 | |
|             '2012-01-01', '2012-02-01', '2012-03-01', '2012-04-01', '2012-05-01', '2012-06-01',
 | |
|             '2012-07-01', '2012-08-01', '2012-09-01', '2012-10-01', '2012-11-01', '2012-12-01',
 | |
|             '2013-01-01', '2013-02-01', '2013-03-01', '2013-04-01', '2013-05-01', '2013-06-01',
 | |
|             '2013-07-01', '2013-08-01', '2013-09-01'
 | |
|         ],
 | |
|         labels: {
 | |
|             rotate: -90
 | |
|         }
 | |
|     },
 | |
|     grid: {
 | |
|         row: {
 | |
|             colors: ['transparent', 'transparent'], // takes an array which will be repeated on columns
 | |
|             opacity: 0.2
 | |
|         },
 | |
|         borderColor: '#f1f3fa'
 | |
|     }
 | |
| }
 | |
| 
 | |
| var chart = new ApexCharts(
 | |
|     document.querySelector("#negative-value-column"),
 | |
|     options
 | |
| );
 | |
| 
 | |
| chart.render();
 | |
| 
 | |
| 
 | |
| //
 | |
| // DISTRIBUTED COLUMN CHART
 | |
| //
 | |
| var colors = ['#3e60d5', '#6c757d', '#47ad77', '#fa5c7c', '#ffbc00', '#39afd1', '#e3eaef', '#313a46'];
 | |
| var dataColors = document.querySelector("#distributed-column").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| var options = {
 | |
|     chart: {
 | |
|         height: 380,
 | |
|         type: 'bar',
 | |
|         toolbar: {
 | |
|             show: false
 | |
|         },
 | |
|         events: {
 | |
|             click: function (chart, w, e) {
 | |
|                 console.log(chart, w, e)
 | |
|             }
 | |
|         },
 | |
|     },
 | |
|     colors: colors,
 | |
|     plotOptions: {
 | |
|         bar: {
 | |
|             columnWidth: '45%',
 | |
|             distributed: true
 | |
|         }
 | |
|     },
 | |
|     dataLabels: {
 | |
|         enabled: false,
 | |
|     },
 | |
|     series: [{
 | |
|         data: [21, 22, 10, 28, 16, 21, 13, 30]
 | |
|     }],
 | |
|     xaxis: {
 | |
|         categories: ['John', 'Joe', 'Jake', 'Amber', 'Peter', 'Mary', 'David', 'Lily'],
 | |
|         labels: {
 | |
|             style: {
 | |
|                 colors: colors,
 | |
|                 fontSize: '14px'
 | |
|             }
 | |
|         }
 | |
|     },
 | |
|     legend: {
 | |
|         offsetY: 7
 | |
|     },
 | |
|     grid: {
 | |
|         row: {
 | |
|             colors: ['transparent', 'transparent'], // takes an array which will be repeated on columns
 | |
|             opacity: 0.2
 | |
|         },
 | |
|         borderColor: '#f1f3fa'
 | |
|     }
 | |
| }
 | |
| 
 | |
| var chart = new ApexCharts(
 | |
|     document.querySelector("#distributed-column"),
 | |
|     options
 | |
| );
 | |
| 
 | |
| chart.render();
 | |
| 
 | |
| 
 | |
| //
 | |
| // Range Column Chart
 | |
| //
 | |
| var colors = ["#47ad77", "#39afd1"];
 | |
| var dataColors = document.querySelector("#range-column").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| var options = {
 | |
|     chart: {
 | |
|         height: 380,
 | |
|         type: 'rangeBar',
 | |
|     },
 | |
|     plotOptions: {
 | |
|         bar: {
 | |
|             horizontal: false
 | |
|         }
 | |
|     },
 | |
|     dataLabels: {
 | |
|         enabled: true
 | |
|     },
 | |
|     legend: {
 | |
|         offsetY: 7
 | |
|     },
 | |
|     colors: colors,
 | |
|     series: [{
 | |
|         name: 'Product A',
 | |
|         data: [{
 | |
|             x: 'Team A',
 | |
|             y: [1, 5]
 | |
|         }, {
 | |
|             x: 'Team B',
 | |
|             y: [4, 6]
 | |
|         }, {
 | |
|             x: 'Team C',
 | |
|             y: [5, 8]
 | |
|         }, {
 | |
|             x: 'Team D',
 | |
|             y: [3, 11]
 | |
|         }]
 | |
|     }, {
 | |
|         name: 'Product B',
 | |
|         data: [{
 | |
|             x: 'Team A',
 | |
|             y: [2, 6]
 | |
|         }, {
 | |
|             x: 'Team B',
 | |
|             y: [1, 3]
 | |
|         }, {
 | |
|             x: 'Team C',
 | |
|             y: [7, 8]
 | |
|         }, {
 | |
|             x: 'Team D',
 | |
|             y: [5, 9]
 | |
|         }]
 | |
|     }],
 | |
| 
 | |
| }
 | |
| 
 | |
| var chart = new ApexCharts(
 | |
|     document.querySelector("#range-column"),
 | |
|     options
 | |
| );
 | |
| 
 | |
| chart.render();
 | |
| 
 | |
| 
 | |
| //
 | |
| // DYNAMIC LOADED CHART
 | |
| //
 | |
| 
 | |
| 
 | |
| var colors = ['#3e60d5', '#6c757d', '#47ad77', '#fa5c7c', '#ffbc00', '#39afd1', '#e3eaef', '#313a46'];
 | |
| var dataColors = document.querySelector("#chart-year").dataset.colors;
 | |
| if (dataColors) {
 | |
|     colors = dataColors.split(",");
 | |
| }
 | |
| 
 | |
| Apex = {
 | |
|     chart: {
 | |
|         toolbar: {
 | |
|             show: false
 | |
|         }
 | |
|     },
 | |
|     tooltip: {
 | |
|         shared: false
 | |
|     },
 | |
|     legend: {
 | |
|         show: false
 | |
|     }
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Randomize array element order in-place.
 | |
|  * Using Durstenfeld shuffle algorithm.
 | |
|  */
 | |
| function shuffleArray(array) {
 | |
|     for (var i = array.length - 1; i > 0; i--) {
 | |
|         var j = Math.floor(Math.random() * (i + 1));
 | |
|         var temp = array[i];
 | |
|         array[i] = array[j];
 | |
|         array[j] = temp;
 | |
|     }
 | |
|     return array;
 | |
| }
 | |
| 
 | |
| var arrayData = [{
 | |
|     y: 400,
 | |
|     quarters: [{
 | |
|         x: 'Q1',
 | |
|         y: 120
 | |
|     }, {
 | |
|         x: 'Q2',
 | |
|         y: 90
 | |
|     }, {
 | |
|         x: 'Q3',
 | |
|         y: 100
 | |
|     }, {
 | |
|         x: 'Q4',
 | |
|         y: 90
 | |
|     }]
 | |
| }, {
 | |
|     y: 430,
 | |
|     quarters: [{
 | |
|         x: 'Q1',
 | |
|         y: 120
 | |
|     }, {
 | |
|         x: 'Q2',
 | |
|         y: 110
 | |
|     }, {
 | |
|         x: 'Q3',
 | |
|         y: 90
 | |
|     }, {
 | |
|         x: 'Q4',
 | |
|         y: 110
 | |
|     }]
 | |
| }, {
 | |
|     y: 448,
 | |
|     quarters: [{
 | |
|         x: 'Q1',
 | |
|         y: 70
 | |
|     }, {
 | |
|         x: 'Q2',
 | |
|         y: 100
 | |
|     }, {
 | |
|         x: 'Q3',
 | |
|         y: 140
 | |
|     }, {
 | |
|         x: 'Q4',
 | |
|         y: 138
 | |
|     }]
 | |
| }, {
 | |
|     y: 470,
 | |
|     quarters: [{
 | |
|         x: 'Q1',
 | |
|         y: 150
 | |
|     }, {
 | |
|         x: 'Q2',
 | |
|         y: 60
 | |
|     }, {
 | |
|         x: 'Q3',
 | |
|         y: 190
 | |
|     }, {
 | |
|         x: 'Q4',
 | |
|         y: 70
 | |
|     }]
 | |
| }, {
 | |
|     y: 540,
 | |
|     quarters: [{
 | |
|         x: 'Q1',
 | |
|         y: 120
 | |
|     }, {
 | |
|         x: 'Q2',
 | |
|         y: 120
 | |
|     }, {
 | |
|         x: 'Q3',
 | |
|         y: 130
 | |
|     }, {
 | |
|         x: 'Q4',
 | |
|         y: 170
 | |
|     }]
 | |
| }, {
 | |
|     y: 580,
 | |
|     quarters: [{
 | |
|         x: 'Q1',
 | |
|         y: 170
 | |
|     }, {
 | |
|         x: 'Q2',
 | |
|         y: 130
 | |
|     }, {
 | |
|         x: 'Q3',
 | |
|         y: 120
 | |
|     }, {
 | |
|         x: 'Q4',
 | |
|         y: 160
 | |
|     }]
 | |
| }];
 | |
| 
 | |
| function makeData() {
 | |
|     var dataSet = shuffleArray(arrayData)
 | |
| 
 | |
|     var dataYearSeries = [{
 | |
|         x: "2011",
 | |
|         y: dataSet[0].y,
 | |
|         color: colors[0],
 | |
|         quarters: dataSet[0].quarters
 | |
|     }, {
 | |
|         x: "2012",
 | |
|         y: dataSet[1].y,
 | |
|         color: colors[1],
 | |
|         quarters: dataSet[1].quarters
 | |
|     }, {
 | |
|         x: "2013",
 | |
|         y: dataSet[2].y,
 | |
|         color: colors[2],
 | |
|         quarters: dataSet[2].quarters
 | |
|     }, {
 | |
|         x: "2014",
 | |
|         y: dataSet[3].y,
 | |
|         color: colors[3],
 | |
|         quarters: dataSet[3].quarters
 | |
|     }, {
 | |
|         x: "2015",
 | |
|         y: dataSet[4].y,
 | |
|         color: colors[4],
 | |
|         quarters: dataSet[4].quarters
 | |
|     }, {
 | |
|         x: "2016",
 | |
|         y: dataSet[5].y,
 | |
|         color: colors[5],
 | |
|         quarters: dataSet[5].quarters
 | |
|     }];
 | |
| 
 | |
|     return dataYearSeries
 | |
| }
 | |
| 
 | |
| function updateQuarterChart(sourceChart, destChartIDToUpdate) {
 | |
|     var series = [];
 | |
|     var seriesIndex = 0;
 | |
|     var colors = []
 | |
| 
 | |
|     if (sourceChart.w.globals.selectedDataPoints[0]) {
 | |
|         var selectedPoints = sourceChart.w.globals.selectedDataPoints;
 | |
|         for (var i = 0; i < selectedPoints[seriesIndex].length; i++) {
 | |
|             var selectedIndex = selectedPoints[seriesIndex][i];
 | |
|             var yearSeries = sourceChart.w.config.series[seriesIndex];
 | |
|             series.push({
 | |
|                 name: yearSeries.data[selectedIndex].x,
 | |
|                 data: yearSeries.data[selectedIndex].quarters
 | |
|             })
 | |
|             colors.push(yearSeries.data[selectedIndex].color)
 | |
|         }
 | |
| 
 | |
|         if (series.length === 0) series = [{
 | |
|             data: []
 | |
|         }]
 | |
| 
 | |
|         return ApexCharts.exec(destChartIDToUpdate, 'updateOptions', {
 | |
|             series: series,
 | |
|             colors: colors,
 | |
|             fill: {
 | |
|                 colors: colors
 | |
|             }
 | |
|         })
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| var options = {
 | |
|     series: [{
 | |
|         data: makeData()
 | |
|     }],
 | |
|     chart: {
 | |
|         id: 'barYear',
 | |
|         height: 400,
 | |
|         width: '100%',
 | |
|         type: 'bar',
 | |
|         events: {
 | |
|             dataPointSelection: function (e, chart, opts) {
 | |
|                 var quarterChartEl = document.querySelector("#chart-quarter");
 | |
|                 var yearChartEl = document.querySelector("#chart-year");
 | |
| 
 | |
|                 if (opts.selectedDataPoints[0].length === 1) {
 | |
|                     if (quarterChartEl.classList.contains("active")) {
 | |
|                         updateQuarterChart(chart, 'barQuarter')
 | |
|                     } else {
 | |
|                         yearChartEl.classList.add("chart-quarter-activated")
 | |
|                         quarterChartEl.classList.add("active");
 | |
|                         updateQuarterChart(chart, 'barQuarter')
 | |
|                     }
 | |
|                 } else {
 | |
|                     updateQuarterChart(chart, 'barQuarter')
 | |
|                 }
 | |
| 
 | |
|                 if (opts.selectedDataPoints[0].length === 0) {
 | |
|                     yearChartEl.classList.remove("chart-quarter-activated")
 | |
|                     quarterChartEl.classList.remove("active");
 | |
|                 }
 | |
| 
 | |
|             },
 | |
|             updated: function (chart) {
 | |
|                 updateQuarterChart(chart, 'barQuarter')
 | |
|             }
 | |
|         }
 | |
|     },
 | |
|     plotOptions: {
 | |
|         bar: {
 | |
|             distributed: true,
 | |
|             horizontal: true,
 | |
|             barHeight: '75%',
 | |
|             dataLabels: {
 | |
|                 position: 'bottom'
 | |
|             }
 | |
|         }
 | |
|     },
 | |
|     dataLabels: {
 | |
|         enabled: true,
 | |
|         textAnchor: 'start',
 | |
|         style: {
 | |
|             colors: ['#fff']
 | |
|         },
 | |
|         formatter: function (val, opt) {
 | |
|             return opt.w.globals.labels[opt.dataPointIndex]
 | |
|         },
 | |
|         offsetX: 0,
 | |
|         dropShadow: {
 | |
|             enabled: true
 | |
|         }
 | |
|     },
 | |
| 
 | |
|     colors: colors,
 | |
| 
 | |
|     states: {
 | |
|         normal: {
 | |
|             filter: {
 | |
|                 type: 'desaturate'
 | |
|             }
 | |
|         },
 | |
|         active: {
 | |
|             allowMultipleDataPointsSelection: true,
 | |
|             filter: {
 | |
|                 type: 'darken',
 | |
|                 value: 1
 | |
|             }
 | |
|         }
 | |
|     },
 | |
|     tooltip: {
 | |
|         x: {
 | |
|             show: false
 | |
|         },
 | |
|         y: {
 | |
|             title: {
 | |
|                 formatter: function (val, opts) {
 | |
|                     return opts.w.globals.labels[opts.dataPointIndex]
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     },
 | |
|     title: {
 | |
|         text: 'Yearly Results',
 | |
|         offsetX: 15
 | |
|     },
 | |
|     subtitle: {
 | |
|         text: '(Click on bar to see details)',
 | |
|         offsetX: 15
 | |
|     },
 | |
|     yaxis: {
 | |
|         labels: {
 | |
|             show: false
 | |
|         }
 | |
|     }
 | |
| };
 | |
| 
 | |
| var chart = new ApexCharts(document.querySelector("#chart-year"), options);
 | |
| chart.render();
 | |
| 
 | |
| var optionsQuarter = {
 | |
|     series: [{
 | |
|         data: []
 | |
|     }],
 | |
|     chart: {
 | |
|         id: 'barQuarter',
 | |
|         height: 400,
 | |
|         width: '100%',
 | |
|         type: 'bar',
 | |
|         stacked: true
 | |
|     },
 | |
|     plotOptions: {
 | |
|         bar: {
 | |
|             columnWidth: '50%',
 | |
|             horizontal: false
 | |
|         }
 | |
|     },
 | |
|     legend: {
 | |
|         show: false
 | |
|     },
 | |
|     grid: {
 | |
|         yaxis: {
 | |
|             lines: {
 | |
|                 show: false,
 | |
|             }
 | |
|         },
 | |
|         xaxis: {
 | |
|             lines: {
 | |
|                 show: true,
 | |
|             }
 | |
|         }
 | |
|     },
 | |
|     yaxis: {
 | |
|         labels: {
 | |
|             show: false
 | |
|         }
 | |
|     },
 | |
|     title: {
 | |
|         text: 'Quarterly Results',
 | |
|         offsetX: 10
 | |
|     },
 | |
|     tooltip: {
 | |
|         x: {
 | |
|             formatter: function (val, opts) {
 | |
|                 return opts.w.globals.seriesNames[opts.seriesIndex]
 | |
|             }
 | |
|         },
 | |
|         y: {
 | |
|             title: {
 | |
|                 formatter: function (val, opts) {
 | |
|                     return opts.w.globals.labels[opts.dataPointIndex]
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| };
 | |
| 
 | |
| var chartQuarter = new ApexCharts(document.querySelector("#chart-quarter"), optionsQuarter);
 | |
| chartQuarter.render();
 | |
| 
 | |
| 
 | |
| chart.addEventListener('dataPointSelection', function (e, chart, opts) {
 | |
|     var quarterChartEl = document.querySelector("#chart-quarter");
 | |
|     var yearChartEl = document.querySelector("#chart-year");
 | |
| 
 | |
|     if (opts.selectedDataPoints[0].length === 1) {
 | |
|         if (quarterChartEl.classList.contains("active")) {
 | |
|             updateQuarterChart(chart, 'barQuarter')
 | |
|         } else {
 | |
|             yearChartEl.classList.add("chart-quarter-activated")
 | |
|             quarterChartEl.classList.add("active");
 | |
|             updateQuarterChart(chart, 'barQuarter')
 | |
|         }
 | |
|     } else {
 | |
|         updateQuarterChart(chart, 'barQuarter')
 | |
|     }
 | |
| 
 | |
|     if (opts.selectedDataPoints[0].length === 0) {
 | |
|         yearChartEl.classList.remove("chart-quarter-activated")
 | |
|         quarterChartEl.classList.remove("active");
 | |
|     }
 | |
| 
 | |
| })
 | |
| 
 | |
| chart.addEventListener('updated', function (chart) {
 | |
|     updateQuarterChart(chart, 'barQuarter')
 | |
| })
 | |
| 
 | |
| document.querySelector("#model").addEventListener("change", function (e) {
 | |
|     chart.updateSeries([{
 | |
|         data: makeData()
 | |
|     }])
 | |
| }) |