PowerShell/ConsoleGuiTools

Show dynamically updating OCGV while pipeline input is being received

maskati opened this issue · 4 comments

Summary of the new feature / enhancement

Compare 1..5|%{Start-Sleep -Seconds 1;$_}|Out-GridView with 1..5|%{Start-Sleep -Seconds 1;$_}|Out-ConsoleGridView. OGV displays records as they are received (ProcessRecord) while OCGV shows records only at the end (EndProcessing).

Proposed technical implementation details (optional)

No response

tig commented

Thanks @maskati. I didn't realize OGV did that!

Can you explain the use case for having the results show up dynamically?

BDisp commented

@tig I think this may be a choice to change how OCGV display the results. Instead displaying on the same terminal, it can be displayed on a separate terminal through using the ProcessStartInfo. If you using various OGV commands it'll open on separated terminals.

@tig anything where you are handling larger or slower to enumerate datasets, and when using the grid view as a filterable view of such records. See for example Stream Application Insights live metrics to a local PowerShell grid view.

tig commented

@tig anything where you are handling larger or slower to enumerate datasets, and when using the grid view as a filterable view of such records. See for example Stream Application Insights live metrics to a local PowerShell grid view.

Thanks for this!

I'll take a closer look at how hard it would be to change OCGV to support this use case. I can't imagine any blockers.

Terminal.Gui now supports a TableView that was designed to support very large data sets, loaded dynamically. When OCGV was first developed this didn't exist and thus it uses ListView which is not great with huge amounts of data, and not ideally suited for dynamic updating. I have an ambition to re-factor OCGV to use TableView. This provides more motivation!