使用Vue-echarts在单行中显示事件

问题描述 投票:0回答:1

有人可以指出我使用 vue-echarts 创建图表的方向吗?

我有一组代表 24 小时内事件的数据。该数据将从 API 中获取,它是一个对象数组,如下所示:

[
  {
    start: "2023-11-01T01:47:09.930Z"
    end: "2023-11-01T02:47:09.930Z"
    duration: 60 // in minutes
  },
  {
    start: "2023-11-01T02:47:09.930Z"
    end: "2023-11-01T02:57:09.930Z"
    duration: 10
  },
  {
    start: "2023-11-01T02:57:09.930Z"
    end: "2023-11-01T03:27:09.930Z"
    duration: 30
  },
  {
    start: "2023-11-01T03:27:09.930Z"
    end: null
    duration: 30
  },

日期之间没有间隙,最新事件的结尾可能为空。

我想创建一个单行图表,其中事件从最旧到最新依次堆叠,x 轴标签显示日期 + 时间。

Similar to this image

我按照这个示例echarts堆叠水平条创建了一个条形图,但我无法让标签工作。

如果更容易实现我的目标,我可以尝试使用不同的包。

vue.js charts echarts gantt-chart apache-echarts
1个回答
0
投票

要在 Vue 表中显示提供的数据(假设您指的是基本表,而不是像 Vuetify 中的

v-data-table
这样的任何特定组件),您可以使用以下代码:

首先,在脚本部分中,定义您提供的数据:

<script>
export default {
  data() {
    return {
      timeEntries: [
        {
          start: "2023-11-01T01:47:09.930Z",
          end: "2023-11-01T02:47:09.930Z",
          duration: 60 // in minutes
        },
        {
          start: "2023-11-01T02:47:09.930Z",
          end: "2023-11-01T02:57:09.930Z",
          duration: 10
        },
        {
          start: "2023-11-01T02:57:09.930Z",
          end: "2023-11-01T03:27:09.930Z",
          duration: 30
        },
        {
          start: "2023-11-01T03:27:09.930Z",
          end: null,
          duration: 30
        },
      ]
    };
  }
};
</script>

然后,在模板部分中,使用表格来显示数据:

<template>
  <div>
    <table>
      <thead>
        <tr>
          <th>Start Time</th>
          <th>End Time</th>
          <th>Duration (minutes)</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="entry in timeEntries" :key="entry.start">
          <td>{{ entry.start }}</td>
          <td>{{ entry.end ? entry.end : 'N/A' }}</td>
          <td>{{ entry.duration }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

这将生成一个包含“开始时间”、“结束时间”和“持续时间”列的表格。表的每一行将显示

timeEntries
数组中的相应值。如果
end
值为
null
,则会在“结束时间”栏中显示“N/A”。

© www.soinside.com 2019 - 2024. All rights reserved.