Skip to content
Viktor edited this page Jan 21, 2015 · 2 revisions

Данное представление более всего подходит в случае, когда отладочная информация предствляет из себя плоский список.

Использование

Простая таблица

Для примера выведем информацию о файлах в текущем каталоге

// подключим нужные пакеты
import "package:dlog/dlog.dart" as dlog;
import "dart:io";

// функция чтения чекущего каталога
List ls() =>
  new Directory(".").listSync();


main() {

  // создаем объект табличного представления данных
  // в конструкторе обязательно указываем количество колонок
  var debug = new dlog.Table(3); // порядковый номер, тип и путь

  // получаем содержимое текущей директории
  List items = ls();

  for (int i = 0; i < items.length; i++) {

    // порядковый номер
    debug.data.add(i + 1);

    // определяем тип
    String type = items[i] is Directory ? "d" : "f";

    // тип и путь
    debug.data.addAll([type, items[i].path]);

    // количество данных должно соответствовать количеству
    // колонок указанных в конструкторе
  }

  // вывод в консоль
  print(debug);

}

Результат

┌───┬───┬─────────────┐
│ 1 │ f │ ./main.dart │
├───┼───┼─────────────┤
│ 2 │ d │ ./packages  │
└───┴───┴─────────────┘

Таблица с заголовками

Названия колонок в таблице в принципе не нужны. Можно сразу же после создания таблицы первой строкой добавить строку с заголовками. Но в таблице есть возможность вырезать небольшую часть строк и в этом случае заголовки могут не попасть в эту часть. Тогда нужно объявлять заголовки явно.

Пример использования явных заголовков

import "package:dlog/dlog.dart" as dlog;
import "dart:math" as Math;

main() {

    // создадим таблицу из набора колонок
    // в этом случае указывать кол-во колонок не нужно
    var debug = new dlog.Table.fromHeader(["Угол"]);
    
    // добавляем еще...
    debug.columns.addAll(["Радиан", "Вектор"]);
    
    for (int angle = 0; angle < 360; angle++) {
        double rad = angle * (Math.PI/180),
               x = 1 * Math.sin(rad),
               y = 1 * Math.cos(rad);
       
       debug.data.addAll([angle, rad, "$x, $y"]);
    
    }

    // вырезаем часть таблицы: 10 строк, начиная с 310 строки
    debug.crop(310, 10);

    print(debug);
}

Результат

┌──────┬───────────────────┬─────────────────────────────────────────┐
│ УГОЛ │ РАДИАН            │ ВЕКТОР                                  │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 310  │ 5.410520681182422 │ -0.7660444431189781, 0.6427876096865393 │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 311  │ 5.427973973702365 │ -0.7547095802227722, 0.656059028990507  │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 312  │ 5.445427266222308 │ -0.7431448254773946, 0.6691306063588578 │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 313  │ 5.462880558742252 │ -0.7313537016191703, 0.6819983600624986 │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 314  │ 5.480333851262195 │ -0.7193398003386512, 0.6946583704589973 │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 315  │ 5.497787143782138 │ -0.7071067811865477, 0.7071067811865474 │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 316  │ 5.515240436302081 │ -0.6946583704589976, 0.7193398003386509 │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 317  │ 5.532693728822025 │ -0.6819983600624983, 0.7313537016191707 │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 318  │ 5.550147021341968 │ -0.6691306063588581, 0.7431448254773942 │
├──────┼───────────────────┼─────────────────────────────────────────┤
│ 319  │ 5.567600313861911 │ -0.6560590289905074, 0.7547095802227719 │
└──────┴───────────────────┴─────────────────────────────────────────┘