import React, { Component } from "react"; import * as am5 from "@amcharts/amcharts5"; import * as am5xy from "@amcharts/amcharts5/xy"; import am5themes_Animated from "@amcharts/amcharts5/themes/Animated"; import CommonUtil from "../../../resources/js/CommonUtil"; export default function Chart9({ data }) { const createChart = () => { console.log('createChart9 data : ', data); let root = am5.Root.new("Chart9"); root._logo.dispose(); // Set themes // https://www.amcharts.com/docs/v5/concepts/themes/ root.setThemes([ am5themes_Animated.new(root) ]); // Create chart // https://www.amcharts.com/docs/v5/charts/xy-chart/ let chart = root.container.children.push(am5xy.XYChart.new(root, { panX: true, panY: true, wheelX: "panX", wheelY: "zoomX", pinchZoomX: true })); // Add cursor // https://www.amcharts.com/docs/v5/charts/xy-chart/cursor/ let cursor = chart.set("cursor", am5xy.XYCursor.new(root, { behavior: "none" })); cursor.lineY.set("visible", false); // Create axes // https://www.amcharts.com/docs/v5/charts/xy-chart/axes/ let xAxis = chart.xAxes.push(am5xy.DateAxis.new(root, { baseInterval: { timeUnit: "day", count: 1 }, renderer: am5xy.AxisRendererX.new(root, {}), tooltip: am5.Tooltip.new(root, {}) })); let yAxis = chart.yAxes.push(am5xy.ValueAxis.new(root, { min: 0, max: 100, renderer: am5xy.AxisRendererY.new(root, {}) })); // Add series // https://www.amcharts.com/docs/v5/charts/xy-chart/series/ let series = chart.series.push(am5xy.LineSeries.new(root, { name: "Series", xAxis: xAxis, yAxis: yAxis, valueYField: "percent", valueXField: "xName", tooltip: am5.Tooltip.new(root, { labelText: "{valueY}" }) })); series.strokes.template.setAll({ strokeWidth: 2, strokeDasharray: [3, 3], }); // Add scrollbar // https://www.amcharts.com/docs/v5/charts/xy-chart/scrollbars/ chart.set("scrollbarX", am5.Scrollbar.new(root, { orientation: "horizontal" })); // Set data series.data.setAll(data); // Make stuff animate on load // https://www.amcharts.com/docs/v5/concepts/animations/ series.appear(1000); chart.appear(1000, 100); } React.useEffect(() => { console.log('React.useEffect chart2 data : ', data); if (CommonUtil.isEmpty(data) == false) { createChart(); } }, [data]) return (
) }