PortArea Helper erster Versuch

Ein Bereich in INFO mit Hilfsdaten zur Auswahl der passenden PortArea
This commit is contained in:
Daniel Schick 2023-07-19 09:52:23 +02:00
parent 6e8fdb0d35
commit d596f1f7fb
7 changed files with 130 additions and 5 deletions

View File

@ -96,14 +96,14 @@ namespace ENI2.Controls
tmpList.Sort();
//System.Windows.Application.Current.Dispatcher.Invoke(delegate {
System.Windows.Application.Current.Dispatcher.Invoke(delegate {
foreach (StatusEntry se in tmpList)
entries.Add(se);
//});
});
};
bgWorker.RunWorkerCompleted += (o, e) =>
{
{
// Enumeration parsen und text ausgeben
ServiceControllerStatus excel = (ServiceControllerStatus)serverStatus.Excel;

View File

@ -60,6 +60,7 @@
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textShippingArea}" Name="label_INFOShippingArea" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="2" Content="{x:Static p:Resources.textMaerskSeago}" Name="label_MaerskSeaGo" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textPortArea}" Name="label_INFOPortArea" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="2" Content="Info port area" Name="label_INFOPortAreaInfo" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
<Label HorizontalContentAlignment="Right" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textRequestedPositionInPortOfCall}" Name="label_INFORequestedBerth" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textBowThrusterPower}" Name="label_INFOBowThrusterPower" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
<Label HorizontalContentAlignment="Right" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textSternThrusterPower}" Name="label_INFOSternThrusterPower" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
@ -70,6 +71,18 @@
<ComboBox Grid.Row="0" Grid.Column="1" x:Name="comboBoxShippingArea" Margin="2" SelectedIndex="{Binding ShippingArea, Converter={util:ByteConverter}}" ContextMenu="{DynamicResource ClearContextMenu}" />
<ComboBox Grid.Row="0" Grid.Column="3" x:Name="comboBoxGroup" Margin="0,2,4,2" ItemsSource="{StaticResource arrList}" DisplayMemberPath="Key" SelectedValuePath="Value" SelectionChanged="comboBoxGroup_SelectionChanged"/>
<ComboBox Grid.Row="1" Grid.Column="1" Name="comboBoxPortArea" Margin="2" SelectedValue="{Binding PortArea}" SelectedValuePath="Key" DisplayMemberPath="Value" ContextMenu="{DynamicResource ClearContextMenu}" />
<Grid Grid.Row="1" Grid.Column="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="28" />
</Grid.ColumnDefinitions>
<ComboBox x:Name="comboBoxPortAreaHelper" Margin="2" SelectionChanged="comboBoxPortAreaHelper_SelectionChanged" />
<Button Grid.Column="1" Name="buttonSetPortArea" Margin="2" Click="buttonSetPortArea_Click" BorderThickness="0" Background="Transparent" ToolTip="Set this port area">
<StackPanel Orientation="Horizontal">
<Image Source="../Resources/check.png" Margin="0,0,0,0" Height="20" Width="20" />
</StackPanel>
</Button>
</Grid>
<TextBox Grid.Row="2" Grid.Column="1" Name="textRequestedPostionInPortOfCall" Margin="2" Text="{Binding RequestedPositionInPortOfCall, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
<TextBox Grid.Row="3" Grid.Column="1" Name="textBowThrusterPower" Margin="2" Text="{Binding BowThrusterPower, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
<TextBox Grid.Row="4" Grid.Column="1" Name="textSternThrusterPower" Margin="2" Text="{Binding SternThrusterPower, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>

View File

@ -6,6 +6,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
@ -26,6 +27,7 @@ namespace ENI2.DetailViewControls
private Message _infoMessage;
private Message _servMessage;
private Message _ladgMessage;
private Dictionary<string, string> portAreas = null;
private static readonly string[] shippingAreas = {
Properties.Resources.textShippingAreaNORTHBALTIC,
@ -109,11 +111,11 @@ namespace ENI2.DetailViewControls
_infoMessage.Elements.Add(info);
}
Dictionary<string, string> portAreas = LocalizedLookup.getPortAreasForLocode(this.Core.PoC);
portAreas = LocalizedLookup.getPortAreasForLocode(this.Core.PoC);
this.comboBoxPortArea.ItemsSource = portAreas;
this.comboBoxShippingArea.ItemsSource = shippingAreas;
this.infoGroupBox.DataContext = info;
this.infoGroupBox.DataContext = info;
@ -161,6 +163,15 @@ namespace ENI2.DetailViewControls
if (this.Core.IsFlagSet(MessageCore.CoreFlags.HOEGH)) this.comboBoxGroup.SelectedIndex = 4;
#endregion
#region init port area helper
if (LocalizedLookup.getPortAreaInfos().ContainsKey(this.Core.PoC))
{
this.comboBoxPortAreaHelper.ItemsSource = LocalizedLookup.getPortAreaInfos()[this.Core.PoC];
}
#endregion
}
#region datagrid LADG
@ -459,5 +470,31 @@ namespace ENI2.DetailViewControls
#endregion
#region set port area code from selected combobox item
private void buttonSetPortArea_Click(object sender, RoutedEventArgs e)
{
if (this.comboBoxPortAreaHelper.SelectedItem != null)
{
PortAreaInfo pai = this.comboBoxPortAreaHelper.SelectedItem as PortAreaInfo;
if (portAreas.ContainsKey(pai.PortAreaCode))
{
var pair = portAreas.SingleOrDefault(p => p.Key == pai.PortAreaCode);
this.comboBoxPortArea.SelectedItem = pair;
}
}
}
private void comboBoxPortAreaHelper_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (this.comboBoxPortAreaHelper.SelectedItem != null)
{
PortAreaInfo pai = this.comboBoxPortAreaHelper.SelectedItem as PortAreaInfo;
this.comboBoxPortAreaHelper.ToolTip = $"{pai.Remark} Ships: {pai.Ships} Agentur: {pai.Agency} Liegeplatz: {pai.Berth}";
}
}
#endregion
}
}

View File

@ -956,9 +956,15 @@ namespace ENI2.Excel
string portArea = reader.ReadText("INFO.PortArea")?.ToUpper();
if (!portArea.IsNullOrEmpty() && DBManager.Instance.GetPortAreaDict().ContainsKey(portArea))
{
info.PortArea = portArea;
}
else
{
info.PortArea = "";
if (!portArea.IsNullOrEmpty() && info.RequestedPositionInPortOfCall.IsNullOrEmpty())
info.RequestedPositionInPortOfCall = portArea;
}
info.ShippingArea = reader.ReadShippingArea("INFO.ShippingArea"); // enum read func
bool? fumigatedBulkCargo = reader.ReadBoolean("INFO.FumigatedBulkCargo");

View File

@ -16,6 +16,7 @@ namespace ENI2
private static readonly SQLiteConnection _con;
private const string _locode_DB_NAME = "db.sqlite";
private static Dictionary<string, string> _nationalities = null;
private static Dictionary<string, List<PortAreaInfo>> _portAreaInfos = null;
static LocalizedLookup()
{
@ -188,6 +189,8 @@ namespace ENI2
return result;
}
public static Dictionary<string, string> getCargoCodesNST()
{
Dictionary<string, string> result = new Dictionary<string, string>();
@ -304,5 +307,41 @@ namespace ENI2
reader.Close();
return result;
}
public static Dictionary<string, List<PortAreaInfo>> getPortAreaInfos()
{
if(_portAreaInfos == null)
{
_portAreaInfos = new Dictionary<string, List<PortAreaInfo>>();
string query = @"SELECT Locode, Agentur, Schiffe, Liegeplatz, Hafengebiet, `Hafengebiet-Code`, Bemerkungen from INFO_PortArea_Helper";
SQLiteCommand cmd = new SQLiteCommand(query, _con);
IDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
PortAreaInfo pai = new PortAreaInfo();
if (reader.IsDBNull(0)) continue;
pai.Locode = reader.GetString(0);
if (!reader.IsDBNull(1))
pai.Agency = reader.GetString(1);
if (!reader.IsDBNull(2))
pai.Ships = reader.GetString(2);
if (!reader.IsDBNull(3))
pai.Berth = reader.GetString(3);
if (!reader.IsDBNull(4))
pai.PortArea = reader.GetString(4);
if (!reader.IsDBNull(5))
pai.PortAreaCode = reader.GetString(5);
if (!reader.IsDBNull(6))
pai.Remark = reader.GetString(6);
if (!_portAreaInfos.ContainsKey(pai.Locode))
{
_portAreaInfos[pai.Locode] = new List<PortAreaInfo>();
}
_portAreaInfos[pai.Locode].Add(pai);
}
}
return _portAreaInfos;
}
}
}

View File

@ -234,4 +234,34 @@ namespace bsmd.database
#endregion
}
#region class PortAreaInfo
/// <summary>
/// simple helper class container to map support data from sqlite lookup db
/// </summary>
public class PortAreaInfo
{
public string Locode { get; set; }
public string Agency { get; set; }
public string Ships { get; set; }
public string Berth { get; set; }
public string PortArea { get; set; }
public string PortAreaCode { get; set; }
public string Remark { get; set; }
public override string ToString()
{
return string.Format("{0} ({1})", PortArea, PortAreaCode);
}
}
#endregion
}

Binary file not shown.