private getDataTable()

in frontend/app/components/kernel_stats/kernel_stats_chart/kernel_stats_chart.ts [46:105]


  private getDataTable(): google.visualization.DataTable|null {
    if (!this.kernelStatsData) {
      return null;
    }

    if (this.dataTable) {
      return this.dataTable;
    }

    const dataTable = new google.visualization.DataTable(this.kernelStatsData);
    const columns: KernelStatsColumn = {
      kernelName: 0,
      totalDurationUs: 0,
    };
    for (let i = 0; i < dataTable.getNumberOfColumns(); i++) {
      switch (dataTable.getColumnId(i)) {
        case 'kernel_name':
          columns.kernelName = i;
          break;
        case 'total_duration_us':
          columns.totalDurationUs = i;
          break;
        default:
          break;
      }
    }

    // tslint:disable-next-line:no-any
    const dataGroup = new (google.visualization as any)['data']['group'](
        dataTable, [columns.kernelName], [
          {
            'column': columns.totalDurationUs,
            // tslint:disable-next-line:no-any
            'aggregation': (google.visualization as any)['data']['sum'],
            'type': 'number',
          },
        ]);
    dataGroup.sort([
      {
        column: TOTAL_DURATION_US_COLUMN_INDEX,
        desc: true,
      },
      {
        column: KERNEL_NAME_COLUMN_INDEX,
        asc: true,
      },
    ]);
    dataGroup.addColumn({
      type: 'string',
      role: 'tooltip',
      p: {'html': true},
    });

    this.total = dataGroup.getNumberOfRows();
    this.count = Math.min(this.total, 10);

    this.dataTable = new google.visualization.DataView(dataGroup).toDataTable();

    return this.dataTable;
  }