PowerShell / ConsoleGuiTools

Modules that mix PowerShell and GUIs/CUIs!
https://www.powershellgallery.com/packages/Microsoft.PowerShell.ConsoleGuiTools
MIT License
759 stars 52 forks source link

Show dynamically updating OCGV while pipeline input is being received #209

Open maskati opened 11 months ago

maskati commented 11 months ago

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 11 months ago

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

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

BDisp commented 11 months ago

@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.

maskati commented 11 months ago

@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 11 months ago

@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!