Files
IntuneManagement/UI/Avalonia/XAML/BulkExportForm.axaml
T

177 lines
9.1 KiB
XML

<Grid xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Margin="5">
<!--
Avalonia port of UI/WPF/XAML/BulkExportForm.xaml. Hosted via Show-ModalForm
— Save / Export / Close live in this Grid and call back into
Show-GraphBulkExportForm.
WPF -> Avalonia translations applied:
- Window/UserControl host -> Grid (modal-form host owns the chrome).
- Grid.IsSharedSizeScope / SharedSizeGroup dropped — single-grid
ColumnDefinition Width="Auto"/"*" keeps rows aligned.
- InfoIcon Rectangles are rendered as the info-icon glyph (Themes/Styles.axaml);
the description sits on the wrapping StackPanel so hovering the label shows it too.
- {Binding ExportFolder, Mode=TwoWay} et al replaced by
imperative property assignment in Show-GraphBulkExportForm —
IntuneManagerExportSettings has no INotifyPropertyChanged so
two-way bindings would render but never round-trip. Same
convention as ExportForm.axaml / ImportForm.axaml.
- chkAddObjectType is forced IsChecked=true and IsEnabled=false
(matches WPF — bulk export always pushes a per-type subfolder).
- DataGrid Columns are declared inline — WPF used
Get-GridCheckboxColumn (header-checkbox toggle-all) which has
no Avalonia bindable equivalent. The "Select all" toolbar
checkbox under spExportSubMenu replaces it (same convention
as ImportForm.axaml).
- DataGrid Background DynamicResource binding dropped — Avalonia
theme keys differ; default works.
- Per-type AddUIExportExtensions (per-policy-type checkboxes)
NOT wired — same constraint as Slice 3c.
-->
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid Name="grdExportProperties">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Row="0" Grid.Column="0" Orientation="Horizontal" Margin="0,0,5,0" VerticalAlignment="Center" ToolTip.Tip="The root folder where exported files will be stored">
<Label Content="Export root"/>
<TextBlock Classes="info-icon"/>
</StackPanel>
<Grid Grid.Row="0" Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBox Name="txtExportPath" Grid.Column="0"/>
<Button Name="browseExportPath" Grid.Column="2" Content="..."
Padding="5,0,5,0" Width="50"
ToolTip.Tip="Browse for folder"/>
</Grid>
<StackPanel Grid.Row="1" Grid.Column="0" Orientation="Horizontal" Margin="0,5,5,0" VerticalAlignment="Center" ToolTip.Tip="Specify name filter for the objects to export">
<Label Content="Name filter"/>
<TextBlock Classes="info-icon"/>
</StackPanel>
<TextBox Name="txtExportNameFilter" Grid.Row="1" Grid.Column="1"
Margin="0,5,0,0"/>
<StackPanel Grid.Row="2" Grid.Column="0" Orientation="Horizontal" Margin="0,5,5,0" VerticalAlignment="Center" ToolTip.Tip="This will export all objects to a sub-directory of the export path with name based on object type">
<Label Content="Add object name to path"/>
<TextBlock Classes="info-icon"/>
</StackPanel>
<CheckBox Name="chkAddObjectType" Grid.Row="2" Grid.Column="1"
Margin="0,5,0,0" VerticalAlignment="Center"
IsChecked="True" IsEnabled="False"/>
<StackPanel Grid.Row="3" Grid.Column="0" Orientation="Horizontal" Margin="0,5,5,0" VerticalAlignment="Center" ToolTip.Tip="Export object assignments">
<Label Content="Export Assignments"/>
<TextBlock Classes="info-icon"/>
</StackPanel>
<CheckBox Name="chkExportAssignments" Grid.Row="3" Grid.Column="1"
Margin="0,5,0,0" VerticalAlignment="Center"/>
<StackPanel Grid.Row="4" Grid.Column="0" Orientation="Horizontal" Margin="0,5,5,0" VerticalAlignment="Center" ToolTip.Tip="This will add the company name in Azure to the export path">
<Label Content="Add company name to path"/>
<TextBlock Classes="info-icon"/>
</StackPanel>
<CheckBox Name="chkAddCompanyName" Grid.Row="4" Grid.Column="1"
Margin="0,5,0,0" VerticalAlignment="Center"/>
<StackPanel Grid.Row="5" Grid.Column="0" Orientation="Horizontal" Margin="0,5,5,0" VerticalAlignment="Center" ToolTip.Tip="Depth of group-membership recursion. 1 (default) exports only the group directly assigned to the policy. 2 also exports groups that are direct members of the assigned group. Higher values mean more Graph calls and may hit throttling on large group trees.">
<Label Content="Export nested group levels"/>
<TextBlock Classes="info-icon"/>
</StackPanel>
<TextBox Name="txtNestedGroupLevels" Grid.Row="5" Grid.Column="1"
Margin="0,5,0,0" Width="60" HorizontalAlignment="Left"
VerticalAlignment="Center"/>
<StackPanel Grid.Row="6" Grid.Column="0" Orientation="Horizontal" Margin="0,5,5,0" VerticalAlignment="Center" ToolTip.Tip="Group: pick whole categories (Configuration, Compliance, ...). API: pick individual policy types.">
<Label Content="List by"/>
<TextBlock Classes="info-icon"/>
</StackPanel>
<StackPanel Grid.Row="6" Grid.Column="1" Orientation="Horizontal"
Margin="0,5,0,0" VerticalAlignment="Center">
<RadioButton Name="rbBulkExportViewGroup" Content="Group"
GroupName="BulkExportView" IsChecked="True"
VerticalAlignment="Center"/>
<RadioButton Name="rbBulkExportViewType" Content="API"
GroupName="BulkExportView" Margin="15,0,0,0"
VerticalAlignment="Center"/>
</StackPanel>
</Grid>
<Grid Grid.Row="1" Margin="0,5,0,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Row="0" Grid.Column="0" Orientation="Horizontal" Margin="0,5,5,0" VerticalAlignment="Center" ToolTip.Tip="Select the object types that should be exported">
<Label Content="Objects to export"/>
<TextBlock Classes="info-icon"/>
</StackPanel>
<DataGrid CanUserResizeColumns="True" Grid.Row="1" Grid.Column="1" Name="dgObjectsToExport"
AutoGenerateColumns="False"
CanUserReorderColumns="True"
CanUserSortColumns="True"
Margin="0,0,0,5">
<DataGrid.Columns>
<DataGridTemplateColumn Width="Auto" CanUserSort="False">
<DataGridTemplateColumn.Header>
<CheckBox IsChecked="True"
HorizontalAlignment="Left" VerticalAlignment="Center"
ToolTip.Tip="Select/deselect all listed items"/>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Selected, Mode=TwoWay}"
HorizontalAlignment="Left" VerticalAlignment="Center" Margin="12,0,0,0"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Object type" Binding="{Binding Title}" IsReadOnly="True" Width="*"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
</StackPanel>
<StackPanel Name="spExportSubMenu" Grid.Column="1" Orientation="Horizontal"
HorizontalAlignment="Right">
<Button Name="btnExport" Content="Export" Width="100" Margin="5,0,0,0"/>
<Button Name="btnClose" Content="Close" Width="100" Margin="5,0,0,0"/>
</StackPanel>
</Grid>
</Grid>