From 36e853fcda53977ee044d66dd62d215095be195a Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Tue, 25 Jun 2024 08:22:25 +0200 Subject: [PATCH 01/25] Enter Agency Time as highlighted suggestion for other participants (not terminal) --- src/BreCalClient/EditTimesControl.xaml.cs | 22 +++++++++++++++++++--- src/BreCalClient/MainWindow.xaml.cs | 4 ++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/BreCalClient/EditTimesControl.xaml.cs b/src/BreCalClient/EditTimesControl.xaml.cs index b09a40e..09d421d 100644 --- a/src/BreCalClient/EditTimesControl.xaml.cs +++ b/src/BreCalClient/EditTimesControl.xaml.cs @@ -7,6 +7,7 @@ using BreCalClient.misc.Model; using System; using System.Windows; using System.Windows.Media.Imaging; +using Xceed.Wpf.Toolkit; namespace BreCalClient { @@ -27,7 +28,9 @@ namespace BreCalClient #region Properties - public Times Times { get; set; } = new(); + public Times Times { get; set; } = new(); + + public Times? AgencyTimes { get; set; } = new(); public ShipcallControlModel ShipcallModel { get; set; } = new(); @@ -36,9 +39,9 @@ namespace BreCalClient #region event handler private void Window_Loaded(object sender, RoutedEventArgs e) - { - this.CopyToControls(); + { this.EnableControls(); + this.CopyToControls(); } private void buttonOK_Click(object sender, RoutedEventArgs e) @@ -93,7 +96,20 @@ namespace BreCalClient { this.textBoxRemarks.Text = this.Times.Remarks; this.datePickerETABerth.Value = this.Times.EtaBerth; + if(this.datePickerETABerth.IsEnabled && (this.Times.EtaBerth == null) && (this.AgencyTimes?.EtaBerth != null) && (ShipcallModel.Shipcall?.Type == ShipcallType.Arrival)) + { + this.datePickerETABerth.Value = this.AgencyTimes.EtaBerth; + WatermarkTextBox? tb = this.datePickerETABerth.Template.FindName("PART_TextBox", this.datePickerETABerth) as WatermarkTextBox; + if (tb != null) { tb.Focus(); tb.SelectAll(); } + } this.datePickerETDBerth.Value = this.Times.EtdBerth; + if(this.datePickerETDBerth.IsEnabled && (this.Times.EtdBerth == null) && (this.AgencyTimes?.EtdBerth != null) && ((ShipcallModel.Shipcall?.Type == ShipcallType.Departure) || (ShipcallModel.Shipcall?.Type == ShipcallType.Shifting))) + { + this.datePickerETDBerth.Value = this.AgencyTimes.EtdBerth; + WatermarkTextBox? tb = this.datePickerETDBerth.Template.FindName("PART_TextBox", this.datePickerETDBerth) as WatermarkTextBox; + if (tb != null) tb.SelectAll(); + } + this.datePickerLockTime.Value = this.Times.LockTime; this.datePickerZoneEntry.Value = this.Times.ZoneEntry; this.datePickerATA.Value = this.Times.Ata; diff --git a/src/BreCalClient/MainWindow.xaml.cs b/src/BreCalClient/MainWindow.xaml.cs index 38aa748..8c79de2 100644 --- a/src/BreCalClient/MainWindow.xaml.cs +++ b/src/BreCalClient/MainWindow.xaml.cs @@ -854,10 +854,14 @@ namespace BreCalClient if( obj.ShipcallControlModel == null) { return; } if (!obj.ShipcallControlModel.AssignedParticipants.ContainsKey(participantType)) return; // no assigment means no dialog my friend + Times? agencyTimes = obj.ShipcallControlModel.GetTimesForParticipantType(ParticipantType.AGENCY); + // show a dialog that lets the user create / update times for the given shipcall IEditTimesControl etc = (participantType == ParticipantType.TERMINAL) ? new EditTimesTerminalControl() : new EditTimesControl(); etc.Title = obj.ShipcallControlModel.Title; etc.ShipcallModel = obj.ShipcallControlModel; + if (etc is EditTimesControl control) + control.AgencyTimes = agencyTimes; bool wasEdit = false; if (times != null) From 71a8b445329e0558b8b3040d69d787074257eb53 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Thu, 27 Jun 2024 16:41:33 +0200 Subject: [PATCH 02/25] fixed bug in search filter where time component wasnt cut of (as expected) --- src/BreCalClient/SearchFilterControl.xaml | 2 +- src/BreCalClient/SearchFilterControl.xaml.cs | 11 +++-------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/BreCalClient/SearchFilterControl.xaml b/src/BreCalClient/SearchFilterControl.xaml index e964861..b2a941a 100644 --- a/src/BreCalClient/SearchFilterControl.xaml +++ b/src/BreCalClient/SearchFilterControl.xaml @@ -8,7 +8,7 @@ xmlns:api="clr-namespace:BreCalClient.misc.Model" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" mc:Ignorable="d" - d:DesignHeight="56" d:DesignWidth="800" Loaded="UserControl_Loaded"> + d:DesignHeight="56" d:DesignWidth="800"> diff --git a/src/BreCalClient/SearchFilterControl.xaml.cs b/src/BreCalClient/SearchFilterControl.xaml.cs index 73f8b83..92ac773 100644 --- a/src/BreCalClient/SearchFilterControl.xaml.cs +++ b/src/BreCalClient/SearchFilterControl.xaml.cs @@ -128,22 +128,17 @@ namespace BreCalClient private void logoImage_MouseUp(object sender, MouseButtonEventArgs e) { LogoImageClicked?.Invoke(); - } - - private void UserControl_Loaded(object sender, System.Windows.RoutedEventArgs e) - { - - } + } private void datePickerETAFrom_SelectedDateChanged(object sender, SelectionChangedEventArgs e) { - this._model.EtaFrom = this.datePickerETAFrom.SelectedDate; + this._model.EtaFrom = this.datePickerETAFrom.SelectedDate?.Date; SearchFilterChanged?.Invoke(); } private void datePickerETATo_SelectedDateChanged(object sender, SelectionChangedEventArgs e) { - this._model.EtaTo = datePickerETATo.SelectedDate; + this._model.EtaTo = datePickerETATo.SelectedDate?.Date; SearchFilterChanged?.Invoke(); } From bb956d479266574ff05ba9421903ac33579b1c82 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Thu, 27 Jun 2024 16:47:09 +0200 Subject: [PATCH 03/25] include last minute for day filter --- src/BreCalClient/MainWindow.xaml.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/BreCalClient/MainWindow.xaml.cs b/src/BreCalClient/MainWindow.xaml.cs index 8c79de2..c564a67 100644 --- a/src/BreCalClient/MainWindow.xaml.cs +++ b/src/BreCalClient/MainWindow.xaml.cs @@ -513,7 +513,7 @@ namespace BreCalClient this.FilterShipcalls(); await uiLock.WaitAsync(); - this.UpdateUI(); + this.UpdateUI(); } } catch(Exception ex) @@ -707,7 +707,7 @@ namespace BreCalClient _ = this._visibleControlModels.RemoveAll(x => { Times? t = x.GetTimesForParticipantType(ParticipantType.AGENCY); - DateTime refValue = sfm.EtaTo.Value.AddMinutes(1439); // 23:59 + DateTime refValue = sfm.EtaTo.Value.AddMinutes(1440); // including 23:59 switch (x.Shipcall?.Type) { case ShipcallType.Arrival: From 570a227b783b7bd09d0a1f99c3359347643f7967 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Fri, 28 Jun 2024 10:46:15 +0200 Subject: [PATCH 04/25] Simplified input text filtering: If user enters 10 digits, then these are split up for the date --- src/BreCalClient/DateTimePickerExt.cs | 11 +++++ .../EditTimesAgencyOutgoingControl.xaml | 2 +- .../EditTimesAgencyOutgoingControl.xaml.cs | 45 +------------------ 3 files changed, 14 insertions(+), 44 deletions(-) diff --git a/src/BreCalClient/DateTimePickerExt.cs b/src/BreCalClient/DateTimePickerExt.cs index e448d34..a86fd47 100644 --- a/src/BreCalClient/DateTimePickerExt.cs +++ b/src/BreCalClient/DateTimePickerExt.cs @@ -15,6 +15,15 @@ namespace BreCalClient string text = this.Text + e.Text; if (this.Template.FindName("PART_TextBox", this) is not WatermarkTextBox tb) return; + if (Regex.IsMatch(text, @"^\d{10}")) + { + e.Handled = true; + tb.Text = Regex.Replace(text, @"(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})", "$1.$2.20$3 $4:$5"); + tb.CaretIndex = tb.Text.Length; + tb.SelectedText = ""; + } + + /* if (Regex.IsMatch(text, @"^\d{3}")) { e.Handled = true; @@ -39,6 +48,8 @@ namespace BreCalClient tb.Text = Regex.Replace(text, @"(\d{2}\.\d{2}\.\d{4} \d{2})(\d)", "$1:$2"); tb.CaretIndex = tb.Text.Length; } + */ + } } } diff --git a/src/BreCalClient/EditTimesAgencyOutgoingControl.xaml b/src/BreCalClient/EditTimesAgencyOutgoingControl.xaml index 92c0ed8..5de2857 100644 --- a/src/BreCalClient/EditTimesAgencyOutgoingControl.xaml +++ b/src/BreCalClient/EditTimesAgencyOutgoingControl.xaml @@ -45,7 +45,7 @@ - +