pw_console: Log pane table view

- Table view option for log panes that renders each metadata field in
  it's own justified column.
- Move LogLine class out of log_container.py to it's own file
- Create table_test.py to check correct column size, header, and row
  formatting.
- Fix typos in text_formatting_test.py
- Clean up and split LogContainer.render_content() code (was named
  LogContainer.draw)

Bug: 412
Change-Id: I7354a659a2bb4486e8a84df5618ca3e8121f4413
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/51522
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
Pigweed-Auto-Submit: Anthony DiGirolamo <tonymd@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
10 files changed
tree: afd14f271beca1fd7af6853cfb6f481f7ae6b623
  1. build_overrides/
  2. docker/
  3. docs/
  4. pw_allocator/
  5. pw_analog/
  6. pw_arduino_build/
  7. pw_assert/
  8. pw_assert_basic/
  9. pw_assert_log/
  10. pw_base64/
  11. pw_bloat/
  12. pw_blob_store/
  13. pw_boot_armv7m/
  14. pw_build/
  15. pw_bytes/
  16. pw_checksum/
  17. pw_chrono/
  18. pw_chrono_embos/
  19. pw_chrono_freertos/
  20. pw_chrono_stl/
  21. pw_chrono_threadx/
  22. pw_cli/
  23. pw_console/
  24. pw_containers/
  25. pw_cpu_exception/
  26. pw_cpu_exception_cortex_m/
  27. pw_docgen/
  28. pw_doctor/
  29. pw_env_setup/
  30. pw_function/
  31. pw_fuzzer/
  32. pw_hdlc/
  33. pw_hex_dump/
  34. pw_i2c/
  35. pw_interrupt/
  36. pw_interrupt_cortex_m/
  37. pw_kvs/
  38. pw_libc/
  39. pw_log/
  40. pw_log_basic/
  41. pw_log_multisink/
  42. pw_log_null/
  43. pw_log_rpc/
  44. pw_log_sink/
  45. pw_log_tokenized/
  46. pw_malloc/
  47. pw_malloc_freelist/
  48. pw_metric/
  49. pw_minimal_cpp_stdlib/
  50. pw_module/
  51. pw_multisink/
  52. pw_package/
  53. pw_persistent_ram/
  54. pw_polyfill/
  55. pw_preprocessor/
  56. pw_presubmit/
  57. pw_protobuf/
  58. pw_protobuf_compiler/
  59. pw_random/
  60. pw_result/
  61. pw_ring_buffer/
  62. pw_router/
  63. pw_rpc/
  64. pw_snapshot/
  65. pw_span/
  66. pw_status/
  67. pw_stm32cube_build/
  68. pw_stream/
  69. pw_string/
  70. pw_sync/
  71. pw_sync_baremetal/
  72. pw_sync_embos/
  73. pw_sync_freertos/
  74. pw_sync_stl/
  75. pw_sync_threadx/
  76. pw_sys_io/
  77. pw_sys_io_arduino/
  78. pw_sys_io_baremetal_lm3s6965evb/
  79. pw_sys_io_baremetal_stm32f429/
  80. pw_sys_io_stdio/
  81. pw_target_runner/
  82. pw_thread/
  83. pw_thread_embos/
  84. pw_thread_freertos/
  85. pw_thread_stl/
  86. pw_thread_threadx/
  87. pw_tls_client/
  88. pw_tls_client_mbedtls/
  89. pw_tokenizer/
  90. pw_tool/
  91. pw_toolchain/
  92. pw_trace/
  93. pw_trace_tokenized/
  94. pw_transfer/
  95. pw_unit_test/
  96. pw_varint/
  97. pw_watch/
  98. pw_web_ui/
  99. targets/
  100. third_party/
  101. .bazelignore
  102. .bazelrc
  103. .clang-format
  104. .eslintrc.json
  105. .gitattributes
  106. .gitignore
  107. .gn
  108. .prettierrc.js
  109. .pylintrc
  110. activate.bat
  111. AUTHORS
  112. bootstrap.bat
  113. bootstrap.sh
  114. BUILD
  115. BUILD.gn
  116. BUILDCONFIG.gn
  117. CMakeLists.txt
  118. LICENSE
  119. modules.gni
  120. OWNERS
  121. package.json
  122. PW_PLUGINS
  123. README.md
  124. tsconfig.json
  125. WORKSPACE
  126. yarn.lock
README.md

See our website: http://pigweed.dev