<template>
  <custom-modal v-model="visible" :width="1280" title="Energy Calibration" :footer="null">
    <div class="energy-calibration">
      <div class="left">
        <!-- Calibration Data -->
        <title-over-border title="Calibration Data">
          <div class="calibration-data">
            <a-form-model
              :colon="false"
              :labelCol="{
                style: {
                  width: '70px',
                  textAlign: 'left',
                  flexShrink: 0
                }
              }"
              :wrapperCol="{
                style: {
                  flex: 1
                }
              }"
            >
              <a-form-model-item label="Channel">
                <a-input></a-input>
              </a-form-model-item>
              <a-form-model-item label="Energy">
                <a-input></a-input>
              </a-form-model-item>
              <a-form-model-item :label="' '">
                <a-button type="primary">Insert</a-button>
              </a-form-model-item>
              <a-form-model-item :label="' '">
                <a-button type="primary">Modify</a-button>
              </a-form-model-item>
              <a-form-model-item :label="' '">
                <a-button type="primary">Delete</a-button>
              </a-form-model-item>
            </a-form-model>
            <!-- 表格 -->
            <a-table
              :columns="columns"
              :dataSource="list"
              :pagination="false"
              :class="list.length ? 'has-data' : ''"
              :scroll="{ y: 182 }"
            ></a-table>
            <!-- 表格结束 -->
            <div class="operators">
              <div>
                <a-button type="primary">Call</a-button>
                <a-button type="primary">Save</a-button>
              </div>
              <div>
                <a-button type="primary">Apply</a-button>
              </div>
            </div>
          </div>
        </title-over-border>
        <!-- Equation -->
        <title-over-border class="mt-20" title="Equation">
          <div class="equation">
            Energy = -0.056137 + C * 0.334493 + C<sup>2</sup> * 3.10365e - 08 + C<sup>3</sup> * -4.05186e - 12
          </div>
        </title-over-border>
        <!-- curve -->
        <title-over-border class="mt-20" title="curve">
          <div class="curve">
            <custom-chart :option="option" />
          </div>
        </title-over-border>
      </div>
      <div class="right">
        <title-over-border title="Data Source" style="height: 100%">
          <div class="data-source">
            <div class="data-source-main">
              <div class="title">PHD</div>
              <div class="content"></div>
            </div>
            <div class="footer mt-20">
              <a-button type="primary">Set to Current</a-button>
              <div class="mt-20">CallUpdate2</div>
            </div>
          </div>
        </title-over-border>
      </div>
    </div>
  </custom-modal>
</template>

<script>
import ModalMixin from '@/mixins/ModalMixin'
import TitleOverBorder from '../TitleOverBorder.vue'
import CustomChart from '@/components/CustomChart/index.vue'

const columns = [
  {
    title: 'Channel',
    dataIndex: 'channel'
  },
  {
    title: 'Energy(keV)',
    dataIndex: 'energy'
  },
  {
    title: 'Fit(keV)',
    dataIndex: 'fit'
  },
  {
    title: 'Delta(%)',
    dataIndex: 'delta'
  }
]

const initialOption = {
  grid: {
    top: 20,
    right: 20,
    bottom: 50,
    left: 70
  },
  title: {
    text: 'Channel',
    textStyle: {
      color: '#8FD4F8',
      fontSize: 14,
      fontWeight: 'normal'
    },
    right: 10,
    bottom: 0
  },
  xAxis: {
    min: 42,
    max: 2740,
    axisLabel: {
      color: '#fff'
    },
    axisLine: {
      lineStyle: {
        color: '#fff'
      }
    },
    splitLine: {
      show: false
    }
  },
  yAxis: {
    axisLabel: {
      color: '#fff'
    },
    axisTick: {
      show: false
    },
    axisLine: {
      lineStyle: {
        color: '#fff'
      }
    },
    splitLine: {
      show: false
    },
    name: 'keV',
    nameLocation: 'center',
    nameGap: 50,
    nameTextStyle: {
      color: '#8FD4F8',
      fontSize: 14
    }
  },
  series: [
    {
      type: 'line',
      symbol: 'square',
      itemStyle: {
        color: '#FF0000' // 设置符号的颜色
      },
      lineStyle: {
        color: '#C2CC11' // 设置折线的颜色
      },
      data: [
        [42, 0],
        [100, 0.2],
        [978, 0.1]
      ]
    }
  ]
}

export default {
  components: { TitleOverBorder, CustomChart },
  mixins: [ModalMixin],
  data() {
    this.columns = columns
    return {
      list: [
        {
          energy: 'energy',
          channel: 'channel',
          fit: 'fit',
          delta: 'delta'
        }
      ],
      option: initialOption
    }
  }
}
</script>

<style lang="less" scoped>
.energy-calibration {
  display: flex;

  .left {
    flex: 1;

    .calibration-data {
      display: flex;
      gap: 20px;

      .ant-form {
        width: 25%;

        ::v-deep {
          .ant-form-item {
            margin-bottom: 15px;

            &-label,
            &-control {
              line-height: 32px;
            }

            &:last-child {
              margin-bottom: 0;
            }
          }
        }

        .ant-btn {
          width: 100%;
        }
      }

      .ant-table-wrapper {
        width: 50%;

        &.has-data {
          ::v-deep {
            .ant-table-body {
              height: 182px;
              background-color: #06282a;
            }
          }
        }

        ::v-deep {
          .ant-table-placeholder {
            height: 183px;
            display: flex;
            justify-content: center;
            align-items: center;
          }
        }
      }

      .operators {
        width: 25%;
        display: flex;
        flex-direction: column;
        justify-content: space-between;

        .ant-select {
          width: 100%;
        }
        .ant-btn {
          width: 100%;

          &:last-child {
            margin-top: 10px;
          }
        }
      }
    }

    .equation {
      height: 32px;
      line-height: 32px;
      text-align: center;
      background-color: #1b5465;
    }

    .curve {
      height: 400px;
    }
  }

  .right {
    width: 20%;
    margin-left: 20px;

    .data-source {
      .title {
        height: 32px;
        line-height: 32px;
        background-color: #296d81;
        padding: 0 5px;
      }

      .content {
        height: 300px;
        background-color: #275466;
      }

      .footer {
        .ant-btn {
          width: 100%;
        }

        > div {
          text-align: center;
          height: 32px;
          line-height: 32px;
          background-color: #285367;
        }
      }
    }
  }
}

.mt-20 {
  margin-top: 20px;
}
</style>
