diff --git a/StructureHelper/Infrastructure/UI/Resources/ItemEditPanels.xaml b/StructureHelper/Infrastructure/UI/Resources/ItemEditPanels.xaml index 4324620..5dd9a5a 100644 --- a/StructureHelper/Infrastructure/UI/Resources/ItemEditPanels.xaml +++ b/StructureHelper/Infrastructure/UI/Resources/ItemEditPanels.xaml @@ -10,7 +10,7 @@ + ItemTemplate="{Binding ItemDataTemplate}"> @@ -23,7 +23,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/StructureHelper/Windows/BeamShears/BeamShearActionResultView.xaml.cs b/StructureHelper/Windows/BeamShears/BeamShearActionResultView.xaml.cs new file mode 100644 index 0000000..82df597 --- /dev/null +++ b/StructureHelper/Windows/BeamShears/BeamShearActionResultView.xaml.cs @@ -0,0 +1,36 @@ +using StructureHelperLogics.Models.BeamShears; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Shapes; + +namespace StructureHelper.Windows.BeamShears +{ + /// + /// Interaction logic for BeamShearActionResultView.xaml + /// + public partial class BeamShearActionResultView : Window + { + private BeamShearActionResultViewModel viewModel; + + public BeamShearActionResultView(BeamShearActionResultViewModel viewModel) + { + this.viewModel = viewModel; + InitializeComponent(); + this.DataContext = this.viewModel; + } + public BeamShearActionResultView(IBeamShearActionResult result) : this (new BeamShearActionResultViewModel(result)) + { + + } + } +} diff --git a/StructureHelper/Windows/BeamShears/BeamShearActionResultViewModel.cs b/StructureHelper/Windows/BeamShears/BeamShearActionResultViewModel.cs new file mode 100644 index 0000000..7b92a47 --- /dev/null +++ b/StructureHelper/Windows/BeamShears/BeamShearActionResultViewModel.cs @@ -0,0 +1,26 @@ +using StructureHelper.Infrastructure; +using StructureHelper.Windows.CalculationWindows.CalculatorsViews; +using StructureHelperLogics.Models.BeamShears; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelper.Windows.BeamShears +{ + public class BeamShearActionResultViewModel : ViewModelBase + { + private IBeamShearActionResult result; + public IBeamShearSectionLogicResult SelectedResult { get; set; } + public List SectionResults => result.SectionResults; + public ValidResultCounterVM ValidResultCounter { get; } + + public BeamShearActionResultViewModel(IBeamShearActionResult result) + { + this.result = result; + ValidResultCounter = new(this.result.SectionResults); + } + + } +} diff --git a/StructureHelper/Windows/BeamShears/BeamShearCalculatorInputDataViewModel.cs b/StructureHelper/Windows/BeamShears/BeamShearCalculatorInputDataViewModel.cs index 91b6673..964c8ae 100644 --- a/StructureHelper/Windows/BeamShears/BeamShearCalculatorInputDataViewModel.cs +++ b/StructureHelper/Windows/BeamShears/BeamShearCalculatorInputDataViewModel.cs @@ -2,6 +2,9 @@ using StructureHelper.Windows.ViewModels; using StructureHelperCommon.Models.Forces; using StructureHelperLogics.Models.BeamShears; +using System; +using System.ComponentModel; +using System.Runtime.CompilerServices; namespace StructureHelper.Windows.BeamShears { @@ -25,13 +28,23 @@ namespace StructureHelper.Windows.BeamShears { ActionSourceTarget.SetTargetItems(inputData.Actions); ActionSourceTarget.SetSourceItems(shearRepository.Actions); - ActionSourceTarget.ItemDataDemplate = SourceTargetFactory.GetSimpleTemplate(); + ActionSourceTarget.ItemDataTemplate = SourceTargetFactory.GetSimpleTemplate(); StirrupSourceTarget.SetTargetItems(inputData.Stirrups); StirrupSourceTarget.SetSourceItems(shearRepository.Stirrups); - StirrupSourceTarget.ItemDataDemplate = SourceTargetFactory.GetSimpleTemplate(); + StirrupSourceTarget.ItemDataTemplate = SourceTargetFactory.GetSimpleTemplate(); SectionSourceTarget.SetTargetItems(inputData.Sections); SectionSourceTarget.SetSourceItems(shearRepository.Sections); - SectionSourceTarget.ItemDataDemplate = SourceTargetFactory.GetSimpleTemplate(); + SectionSourceTarget.ItemDataTemplate = SourceTargetFactory.GetSimpleTemplate(); + } + + internal void Refresh() + { + inputData.Actions.Clear(); + inputData.Actions.AddRange(ActionSourceTarget.GetTargetItems()); + inputData.Stirrups.Clear(); + inputData.Stirrups.AddRange(StirrupSourceTarget.GetTargetItems()); + inputData.Sections.Clear(); + inputData.Sections.AddRange(SectionSourceTarget.GetTargetItems()); } } } diff --git a/StructureHelper/Windows/BeamShears/BeamShearCalculatorView.xaml b/StructureHelper/Windows/BeamShears/BeamShearCalculatorView.xaml index 782b3ec..7d21aff 100644 --- a/StructureHelper/Windows/BeamShears/BeamShearCalculatorView.xaml +++ b/StructureHelper/Windows/BeamShears/BeamShearCalculatorView.xaml @@ -6,7 +6,7 @@ xmlns:local="clr-namespace:StructureHelper.Windows.BeamShears" d:DataContext="{d:DesignInstance local:BeamShearCalculatorViewModel}" mc:Ignorable="d" - Title="Beam Shear Calculator" Height="300" Width="350" ResizeMode="NoResize" WindowStartupLocation="CenterScreen"> + Title="Beam Shear Calculator" Height="300" Width="350" ResizeMode="NoResize" WindowStartupLocation="CenterScreen" Closing="Window_Closing"> @@ -18,12 +18,14 @@ + + - + diff --git a/StructureHelper/Windows/BeamShears/BeamShearCalculatorView.xaml.cs b/StructureHelper/Windows/BeamShears/BeamShearCalculatorView.xaml.cs index 41a3fe2..34cfe25 100644 --- a/StructureHelper/Windows/BeamShears/BeamShearCalculatorView.xaml.cs +++ b/StructureHelper/Windows/BeamShears/BeamShearCalculatorView.xaml.cs @@ -15,5 +15,10 @@ namespace StructureHelper.Windows.BeamShears this.viewModel.ParentWindow = this; this.DataContext = this.viewModel; } + + private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) + { + viewModel.Refresh(); + } } } diff --git a/StructureHelper/Windows/BeamShears/BeamShearCalculatorViewModel.cs b/StructureHelper/Windows/BeamShears/BeamShearCalculatorViewModel.cs index fb4e275..6fec5c8 100644 --- a/StructureHelper/Windows/BeamShears/BeamShearCalculatorViewModel.cs +++ b/StructureHelper/Windows/BeamShears/BeamShearCalculatorViewModel.cs @@ -1,4 +1,5 @@ using StructureHelper.Windows.ViewModels; +using StructureHelperCommon.Models.Calculators; using StructureHelperLogics.Models.BeamShears; namespace StructureHelper.Windows.BeamShears @@ -7,7 +8,7 @@ namespace StructureHelper.Windows.BeamShears { private readonly IBeamShearRepository shearRepository; private readonly IBeamShearCalculator calculator; - + private bool showTraceData; public string Name { @@ -18,6 +19,18 @@ namespace StructureHelper.Windows.BeamShears OnPropertyChanged(nameof(Name)); } } + public bool ShowTraceData + { + get + { + return calculator.ShowTraceData; + } + set + { + calculator.ShowTraceData = value; + OnPropertyChanged(nameof(ShowTraceData)); + } + } public BeamShearCalculatorInputDataViewModel InputDataViewModel { get; } public BeamShearCalculatorViewModel(IBeamShearRepository shearRepository, IBeamShearCalculator calculator) { @@ -25,5 +38,10 @@ namespace StructureHelper.Windows.BeamShears this.calculator = calculator; InputDataViewModel = new(this.shearRepository, this.calculator.InputData); } + + internal void Refresh() + { + InputDataViewModel.Refresh(); + } } } diff --git a/StructureHelper/Windows/BeamShears/BeamShearCalculatorsViewModel.cs b/StructureHelper/Windows/BeamShears/BeamShearCalculatorsViewModel.cs index 1900b10..037d7c9 100644 --- a/StructureHelper/Windows/BeamShears/BeamShearCalculatorsViewModel.cs +++ b/StructureHelper/Windows/BeamShears/BeamShearCalculatorsViewModel.cs @@ -6,6 +6,7 @@ using StructureHelper.Windows.ViewModels.Errors; using StructureHelperCommon.Infrastructures.Exceptions; using StructureHelperCommon.Models; using StructureHelperCommon.Models.Calculators; +using StructureHelperCommon.Models.Forces.BeamShearActions; using StructureHelperLogics.Models.BeamShears; using System; using System.Windows; @@ -18,6 +19,7 @@ namespace StructureHelper.Windows.BeamShears private object parameter; private readonly IBeamShearRepository shearRepository; private RelayCommand runCommand; + private BeamShearCalculatorUpdateStrategy updateStrategy; public ICommand Run { @@ -69,14 +71,21 @@ namespace StructureHelper.Windows.BeamShears Window window; if (SelectedItem is IBeamShearCalculator beamShearCalculator) { + var tmpCalculator = beamShearCalculator.Clone() as IBeamShearCalculator; var viewModel = new BeamShearCalculatorViewModel(shearRepository, beamShearCalculator); window = new BeamShearCalculatorView(viewModel); + window.ShowDialog(); + if (window.DialogResult != true) + { + updateStrategy ??= new BeamShearCalculatorUpdateStrategy(); + updateStrategy.Update(beamShearCalculator, tmpCalculator); + } + base.EditMethod(parameter); } else { throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(SelectedItem)); } - window.ShowDialog(); } private void RunMethod(object param) { @@ -95,12 +104,18 @@ namespace StructureHelper.Windows.BeamShears if (SelectedItem is IBeamShearCalculator beamShearCalculator) { beamShearCalculator.Run(); + var result = beamShearCalculator.Result as IBeamShearCalculatorResult; + Window window = new BeamShearResultView(result); + window.ShowDialog(); + if (beamShearCalculator.ShowTraceData == true) + { + TraceDocumentService.ShowDocument(SelectedItem.TraceLogger.TraceLoggerEntries); + } } else { throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(SelectedItem)); } - TraceDocumentService.ShowDocument(SelectedItem.TraceLogger.TraceLoggerEntries); } } } diff --git a/StructureHelper/Windows/BeamShears/BeamShearLoadsViewModel.cs b/StructureHelper/Windows/BeamShears/BeamShearLoadsViewModel.cs index 00b9906..fc611a4 100644 --- a/StructureHelper/Windows/BeamShears/BeamShearLoadsViewModel.cs +++ b/StructureHelper/Windows/BeamShears/BeamShearLoadsViewModel.cs @@ -4,13 +4,8 @@ using StructureHelperCommon.Infrastructures.Exceptions; using StructureHelperCommon.Infrastructures.Interfaces; using StructureHelperCommon.Models.Forces; using StructureHelperCommon.Models.Forces.BeamShearActions; -using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows; -using System.Windows.Forms; namespace StructureHelper.Windows.BeamShears { diff --git a/StructureHelper/Windows/BeamShears/BeamShearResultView.xaml b/StructureHelper/Windows/BeamShears/BeamShearResultView.xaml index cb3a808..13e7dc0 100644 --- a/StructureHelper/Windows/BeamShears/BeamShearResultView.xaml +++ b/StructureHelper/Windows/BeamShears/BeamShearResultView.xaml @@ -7,18 +7,38 @@ xmlns:uc="clr-namespace:StructureHelper.Windows.UserControls" d:DataContext="{d:DesignInstance local:BeamShearResultViewModel}" mc:Ignorable="d" - Title="BeamShearResultView" Height="450" Width="800" MinHeight="400" MinWidth="600" MaxHeight="900" MaxWidth="1200"> + Title="Beam Shear Result" Height="450" Width="800" MinHeight="400" MinWidth="600" MaxHeight="900" MaxWidth="1200" WindowStartupLocation="CenterScreen"> - + + @@ -41,6 +61,8 @@ + +