feat: implement ETL pipeline redesign and ConfigManager improvements
- Add pipeline registry with JSON-based configuration and hot-reload support - Implement manual sync request feature with API, client UI, and database - Improve ConfigManager: connection string dropdown in pipeline editor, step delete/reorder functionality, and fix JSON parsing for ConnectionStrings
This commit is contained in:
@@ -39,12 +39,13 @@
|
||||
Foreground="#9BA8B8" FontSize="12" FontWeight="Medium"/>
|
||||
<TextBlock Text="*" Foreground="#FF6B6B" FontSize="12"/>
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding Connection}"
|
||||
Background="#232A35" Foreground="#E6EDF5"
|
||||
BorderBrush="#3D4550" Height="36"
|
||||
FontFamily="JetBrains Mono"
|
||||
Watermark="jde"/>
|
||||
<TextBlock Text="Connection string name (e.g., jde, cms, giw)"
|
||||
<ComboBox ItemsSource="{Binding AvailableConnections}"
|
||||
SelectedItem="{Binding Connection}"
|
||||
Background="#232A35" Foreground="#E6EDF5"
|
||||
BorderBrush="#3D4550" Height="36"
|
||||
HorizontalAlignment="Stretch"
|
||||
PlaceholderText="Select connection..."/>
|
||||
<TextBlock Text="Connection string name from Settings > ConnectionStrings"
|
||||
Foreground="#5C6A7A" FontSize="11"/>
|
||||
</StackPanel>
|
||||
|
||||
|
||||
+65
-34
@@ -279,40 +279,71 @@
|
||||
</Border>
|
||||
</StackPanel>
|
||||
|
||||
<!-- DataGrid -->
|
||||
<DataGrid ItemsSource="{Binding Connections}"
|
||||
SelectedItem="{Binding SelectedConnection}"
|
||||
SelectionMode="Single"
|
||||
Height="200"
|
||||
Background="#0D0F12"
|
||||
RowBackground="#0D0F12"
|
||||
BorderBrush="#2D3540"
|
||||
BorderThickness="1"
|
||||
GridLinesVisibility="Horizontal"
|
||||
HorizontalGridLinesBrush="#2D3540"
|
||||
HeadersVisibility="Column"
|
||||
AutoGenerateColumns="False"
|
||||
CanUserReorderColumns="False"
|
||||
CanUserResizeColumns="True"
|
||||
CanUserSortColumns="True">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Name"
|
||||
Binding="{Binding Name}"
|
||||
Width="*"
|
||||
IsReadOnly="True"
|
||||
Foreground="#E6EDF5"/>
|
||||
<DataGridTextColumn Header="Provider"
|
||||
Binding="{Binding ProviderDisplay}"
|
||||
Width="100"
|
||||
IsReadOnly="True"
|
||||
Foreground="#9BA8B8"/>
|
||||
<DataGridTextColumn Header="Server"
|
||||
Binding="{Binding ServerDisplay}"
|
||||
Width="150"
|
||||
IsReadOnly="True"
|
||||
Foreground="#9BA8B8"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
<!-- Connection List -->
|
||||
<Border BorderBrush="#2D3540" BorderThickness="1" CornerRadius="4">
|
||||
<StackPanel>
|
||||
<!-- Header Row -->
|
||||
<Grid Background="#151920" Height="32">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="100"/>
|
||||
<ColumnDefinition Width="150"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0" Text="Name" Foreground="#9BA8B8"
|
||||
FontSize="12" FontWeight="Medium"
|
||||
VerticalAlignment="Center" Margin="12,0"/>
|
||||
<TextBlock Grid.Column="1" Text="Provider" Foreground="#9BA8B8"
|
||||
FontSize="12" FontWeight="Medium"
|
||||
VerticalAlignment="Center" Margin="8,0"/>
|
||||
<TextBlock Grid.Column="2" Text="Server" Foreground="#9BA8B8"
|
||||
FontSize="12" FontWeight="Medium"
|
||||
VerticalAlignment="Center" Margin="8,0"/>
|
||||
</Grid>
|
||||
<!-- List Items -->
|
||||
<ListBox ItemsSource="{Binding Connections}"
|
||||
SelectedItem="{Binding SelectedConnection}"
|
||||
SelectionMode="Single"
|
||||
Background="#0D0F12"
|
||||
MaxHeight="180"
|
||||
MinHeight="100">
|
||||
<ListBox.Styles>
|
||||
<Style Selector="ListBoxItem">
|
||||
<Setter Property="Padding" Value="0"/>
|
||||
<Setter Property="Margin" Value="0"/>
|
||||
<Setter Property="Background" Value="Transparent"/>
|
||||
</Style>
|
||||
<Style Selector="ListBoxItem:selected /template/ ContentPresenter">
|
||||
<Setter Property="Background" Value="#2563EB"/>
|
||||
</Style>
|
||||
<Style Selector="ListBoxItem:pointerover /template/ ContentPresenter">
|
||||
<Setter Property="Background" Value="#1E3A5F"/>
|
||||
</Style>
|
||||
</ListBox.Styles>
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid Height="36" Background="Transparent">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="100"/>
|
||||
<ColumnDefinition Width="150"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0" Text="{Binding Name}"
|
||||
Foreground="#E6EDF5" FontSize="13"
|
||||
VerticalAlignment="Center" Margin="12,0"/>
|
||||
<TextBlock Grid.Column="1" Text="{Binding ProviderDisplay}"
|
||||
Foreground="#9BA8B8" FontSize="13"
|
||||
VerticalAlignment="Center" Margin="8,0"/>
|
||||
<TextBlock Grid.Column="2" Text="{Binding ServerDisplay}"
|
||||
Foreground="#9BA8B8" FontSize="13"
|
||||
VerticalAlignment="Center" Margin="8,0"/>
|
||||
<Border Grid.ColumnSpan="3" BorderBrush="#2D3540"
|
||||
BorderThickness="0,0,0,1" VerticalAlignment="Bottom"/>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
</ListBox>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<!-- Toolbar -->
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
|
||||
@@ -188,12 +188,49 @@
|
||||
<Border Grid.Column="4" Background="#0D0F12" Padding="16">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Spacing="16">
|
||||
<!-- Properties Header -->
|
||||
<StackPanel>
|
||||
<TextBlock Text="PROPERTIES"
|
||||
Foreground="#5C6A7A" FontSize="11" FontWeight="Medium"/>
|
||||
<Border Height="1" Background="#2D3540" Margin="0,8,0,0"/>
|
||||
</StackPanel>
|
||||
<!-- Properties Header with Action Buttons -->
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0" Text="PROPERTIES"
|
||||
Foreground="#5C6A7A" FontSize="11" FontWeight="Medium"
|
||||
VerticalAlignment="Center"/>
|
||||
<StackPanel Grid.Column="1" Orientation="Horizontal" Spacing="4">
|
||||
<!-- Move Up Button -->
|
||||
<Button Command="{Binding MoveSelectedStepUpCommand}"
|
||||
Background="#1F2937" Foreground="#9BA8B8"
|
||||
BorderBrush="#3D4550" BorderThickness="1"
|
||||
Height="28" Width="28" Padding="0"
|
||||
ToolTip.Tip="Move step up"
|
||||
IsVisible="{Binding CanDeleteSelectedStep}">
|
||||
<TextBlock Text="▲" FontSize="10" HorizontalAlignment="Center"/>
|
||||
</Button>
|
||||
<!-- Move Down Button -->
|
||||
<Button Command="{Binding MoveSelectedStepDownCommand}"
|
||||
Background="#1F2937" Foreground="#9BA8B8"
|
||||
BorderBrush="#3D4550" BorderThickness="1"
|
||||
Height="28" Width="28" Padding="0"
|
||||
ToolTip.Tip="Move step down"
|
||||
IsVisible="{Binding CanDeleteSelectedStep}">
|
||||
<TextBlock Text="▼" FontSize="10" HorizontalAlignment="Center"/>
|
||||
</Button>
|
||||
<!-- Delete Button -->
|
||||
<Button Command="{Binding DeleteSelectedStepCommand}"
|
||||
Background="#3D1F1F" Foreground="#FF6B6B"
|
||||
BorderBrush="#5C2D2D" BorderThickness="1"
|
||||
Height="28" Padding="12,0"
|
||||
ToolTip.Tip="Delete selected step"
|
||||
IsVisible="{Binding CanDeleteSelectedStep}">
|
||||
<StackPanel Orientation="Horizontal" Spacing="6">
|
||||
<TextBlock Text="🗑" FontSize="12"/>
|
||||
<TextBlock Text="Delete" FontSize="11"/>
|
||||
</StackPanel>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
<Border Height="1" Background="#2D3540" Margin="0,8,0,0"/>
|
||||
|
||||
<!-- Step Editor Content (changes based on selection) -->
|
||||
<!-- Shows placeholder text when nothing selected, otherwise uses DataTemplates from MainWindow -->
|
||||
|
||||
@@ -36,6 +36,9 @@
|
||||
<DataTemplate DataType="{x:Type forms:ExcelExportFormViewModel}">
|
||||
<views:ExcelExportFormView/>
|
||||
</DataTemplate>
|
||||
<DataTemplate DataType="{x:Type forms:ConnectionStringsFormViewModel}">
|
||||
<views:ConnectionStringsFormView/>
|
||||
</DataTemplate>
|
||||
|
||||
<!-- Pipeline Editor (replaces PipelineFormViewModel) -->
|
||||
<DataTemplate DataType="{x:Type forms:PipelineEditorViewModel}">
|
||||
|
||||
Reference in New Issue
Block a user