Как отфильтровать линейный график echarts за неделю в angular. В настоящее время он отображает все записи примера 2019-10-27 10:15:00, 2019-10-27 10:15:30, 2019-10-27 10:16:00, 2019-10-27 10:19:00. Это должно быть 2019-10-27, если есть 2019-28-10 00:00:15, 2019-28-10 00:10:00, вывод должен быть 2019-10-27, 2019-10-28.

Вот код list.component.html

<button nz-button nzType="default" (click)="dataFilter('prevWeek')">Previous week</button>
<button nz-button nzType="default" (click)="dataFilter('currWeek')">Current week</button>
<button nz-button nzType="default" (click)="dataFilter('all')">All</button>
<div echarts [options]="trendOption" id="trendChart" [autoResize]="true" style="height: 280px;"></div>

list.component.ts

dataFilter(event: any) {
    switch (event) {
      case 'prevWeek':
        console.log('diplay the previous/last week');
        break;
      case 'currWeek':
        console.log('display current week list')
        break;
      case 'all':
        console.log('display all records');
        break;
      default: break;
    }
  }
    getRoomTrend() {
        const _THIS = this;
        const dateTime: any = [];
        const tempY: any = [];
        const humidY: any = [];

        this.global
          .getData(`/conditions?length=100&sensor=${this.roomTitle}`)
          .pipe(take(1))
          .subscribe((res: any) => {
            const record = res['data'];

            for (let i = record.length - 1; i >= 0; i--) {
              const date = format(record[i].date, 'MM/DD/YYYY[\n]HH:mm');
              const temperature = parseFloat(record[i].temperature);
              const humidity = parseFloat(record[i].humidity);

              dateTime.push(date);
              tempY.push(temperature);
              humidY.push(humidity);
            }
            if (this.initialLoad.trendStatus) {
              this.trendOption = {
                tooltip: {
                  trigger: 'axis',
                  axisPointer: {
                    animation: false
                  }
                },
                legend: {
                  top: '10',
                  data: ['Temperature', 'Humidity']
                },
                grid: {
                  left: '3%',
                  bottom: '15%',
                  containLabel: true
                },
                dataZoom: [
                  {
                    minValueSpan: 4,
                    startValue: record.length - 3
                  },
                  {
                    type: 'inside'
                  }
                ],
                xAxis: {
                  type: 'category',
                  boundaryGap: false,
                  splitLine: {
                    show: false
                  },
                  data: dateTime
                },
                yAxis: [
                  {
                    type: 'value',
                    boundaryGap: [0, '100%'],
                    axisLabel: {
                      formatter: '{value} °'
                    },
                    splitLine: {
                      show: false
                    }
                  },
                  {
                    type: 'value',
                    boundaryGap: [0, '100%'],
                    position: 'right',
                    axisLabel: {
                      formatter: '{value} °'
                    },
                    splitLine: {
                      show: false
                    }
                  }
                ],
                series: [
                  {
                    name: 'Temperature',
                    type: 'line',
                    color: '#006ec7',
                    data: tempY
                  },
                  {
                    name: 'Humidity',
                    type: 'line',
                    color: '#8c0000',
                    data: humidY
                  }
                ]
              };
            }
          });
      }

Например, у меня есть запись 30,000, и дата такая же, но другое время. вывод должен быть только ```2019-15-10, 2019-18-10, 2019-22-10. Заранее спасибо.

0
ABC 30 Окт 2019 в 05:53

1 ответ

let uniqueDates = new Set();

record.forEach(value => {
    let date = new Date(value.date.getFullYear(), value.date.getMonth(), value.date.getDate());
    uniqueDates.add(date);
});

Set по определению представляет собой набор уникальных значений. Таким образом, вы получаете дату без времени из записей и добавляете их в набор. Вы получите список уникальных дат.

0
Antediluvian 30 Окт 2019 в 06:02