
let inputField = document.getElementById("keyword_data");
let sendButton = document.getElementById("send_data");

function sendButtonClickHandler() {
  console.log(inputField.value);
  let input_text_value = inputField.value;
  get_data(input_text_value);
}

sendButton.addEventListener("click", sendButtonClickHandler);

inputField.addEventListener("keyup", function (event) {
  // 判斷是否按下 Enter 鍵 (key code: 13)
  if (event.key === "Enter") {
    // 呼叫按鈕點擊事件處理函數
    sendButtonClickHandler();

  }
});

function apiLoading() {
  document.getElementById('chartDataLoading').style.display = 'block';
}

function apiHideLoading() {
  document.getElementById('chartDataLoading').style.display = 'none';

}

let labelDependent = "";

function get_data(input_text_value) {
  apiLoading();

  axios.get('https://cmm.ai:8080/answer?question=' + input_text_value)
    .then(response => {
      apiHideLoading();
      console.log(response);

      chartType = response.data.chart_info.Chart_type;

      switch (chartType) {
        case "line":
          document.getElementById("inlineRadio4").checked = true; // 折線圖
          break;
        case "bar":
          document.getElementById("inlineRadio5").checked = true; // 柱狀圖
          break;
        case "pie":
          document.getElementById("inlineRadio6").checked = true; // 圓餅圖
          break;
        case "table":
          document.getElementById("inlineRadio7").checked = true; // 表格
          break;
        default:
        // 默認情況
      }

      let dataArray = response.data.data;
      labelDependent = response.data.chart_info.Label_dependent_variable;
      generateChart(dataArray);
    })
    .catch(error => {
      apiHideLoading();
      console.error('發生錯誤:', error);
    });
}
// generateChart();
// 模板2
function generateChart(dataArray) {
  console.log('labelDependent', labelDependent);
  // Themes begin
  am4core.useTheme(am4themes_animated);
  // Themes end

  // Create chart instance
  var chart = am4core.create("chartdiv", am4charts.XYChart3D);

  console.log(dataArray);

  chart.data = dataArray;

  chart.angle = 30; // 圖表角度
  chart.depth = 25;  // 圖表深度


  let categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());
  categoryAxis.dataFields.category = "stock_name";
  categoryAxis.renderer.labels.template.rotation = 0;
  categoryAxis.renderer.labels.template.hideOversized = false;
  categoryAxis.renderer.minGridDistance = 20; // 間距
  // categoryAxis.renderer.labels.template.horizontalCenter = "left";
  // categoryAxis.renderer.labels.template.verticalCenter = "middle";
  // categoryAxis.tooltip.label.rotation = 90;
  // categoryAxis.tooltip.label.horizontalCenter = "right";
  // categoryAxis.tooltip.label.verticalCenter = "middle";

  // label 換行
  let label = categoryAxis.renderer.labels.template;
  label.wrap = true;
  label.maxWidth = 100;


  categoryAxis.renderer.cellEndLocation = 0.5; // 減少值可以增加間距

  let valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
  valueAxis.title.text = labelDependent; // Y軸
  valueAxis.title.fontWeight = "bold";

  // Create series
  var series = chart.series.push(new am4charts.ColumnSeries3D());
  series.dataFields.valueY = "total_volume";
  series.dataFields.categoryX = "stock_name";
  series.name = "total_volume";
  series.tooltipText = "{categoryX}: [bold]{valueY}[/]";
  series.columns.template.fillOpacity = .8;

  let columnTemplate = series.columns.template;
  columnTemplate.strokeWidth = 2;
  columnTemplate.strokeOpacity = 1;
  columnTemplate.stroke = am4core.color("#FFFFFF");

  // columnTemplate.adapter.add("fill", function (fill, target) {
  //     return chart.colors.getIndex(target.dataItem.index);
  // })

  // 設置基數和偶數顏色
  columnTemplate.adapter.add("fill", function (fill, target) {
    return target.dataItem.index % 2 === 0 ? am4core.color("#288D97") : am4core.color("#427D7E");
  });

  columnTemplate.adapter.add("stroke", function (stroke, target) {
    return chart.colors.getIndex(target.dataItem.index);
  })

  // // 加上白色線條
  // series.columns.template.events.on("validated", function (event) {
  //   let column = event.target;
  //   let whiteLine = column.createChild(am4core.Line);

  //   whiteLine.stroke = am4core.color("#ffffff");

  //   whiteLine.strokeWidth = 1.3; // 線條寬度
  //   whiteLine.strokeOpacity = 0.5;// 透明度
  //   whiteLine.x1 = column.pixelWidth / 1;
  //   whiteLine.y1 = 0;
  //   whiteLine.x2 = column.pixelWidth / 1;
  //   whiteLine.y2 = column.pixelHeight;
  // });

  chart.cursor = new am4charts.XYCursor();
  chart.cursor.lineX.strokeOpacity = 0;
  chart.cursor.lineY.strokeOpacity = 0;

  categoryAxis.renderer.grid.template.strokeOpacity = 0; // 隱藏 X 軸
  valueAxis.renderer.grid.template.strokeOpacity = 0; // 隱藏 Y 軸
  valueAxis.renderer.line.strokeOpacity = 0;

  // LineSeries 底部線條
  var lineSeries = chart.series.push(new am4charts.LineSeries());
  lineSeries.dataFields.valueY = "bottom";
  lineSeries.dataFields.categoryX = "stock_name";
  lineSeries.stroke = am4core.color("#000000")
  lineSeries.strokeWidth = 2;
  lineSeries.strokeOpacity = 1

  var bottomData = [];
  for (var i = 0; i < dataArray.length; i++) {
    bottomData.push({ "stock_name": dataArray[i].stock_name, "bottom": 0 });
  }
  lineSeries.data = bottomData;

  // 底部線條
  // let rectElements = document.querySelectorAll("rect");
  // // let widthValue = 0;
  // let fifthRectElement = rectElements[3];
  // // fifthRectElement.style.position = "relative";
  // setTimeout(() => {
  //   let width = fifthRectElement.getAttribute("width");
  //   // widthValue = parseFloat(width);
  //   console.log('rectElements', rectElements);
  //   console.log('fifthRectElement', fifthRectElement);
  //   console.log('width', width);

  //   let line = document.createElement("div");
  //   line.style.position = "absolute";
  //   line.style.bottom = "162px";
  //   line.style.right = "40px";
  //   line.style.width = `${parseFloat(width)}px`;
  //   line.style.height = "2px";
  //   line.style.backgroundColor = "#000000";

  //   document.getElementById("chartdiv").appendChild(line);
  // }, 10)



  // end am4core.ready()
}


