diff --git a/StructureHelper/Infrastructure/UI/Resources/ItemEditPanels.xaml b/StructureHelper/Infrastructure/UI/Resources/ItemEditPanels.xaml
index b38d70e..0d0fd96 100644
--- a/StructureHelper/Infrastructure/UI/Resources/ItemEditPanels.xaml
+++ b/StructureHelper/Infrastructure/UI/Resources/ItemEditPanels.xaml
@@ -8,7 +8,13 @@
-
+
+
+
@@ -16,7 +22,12 @@
+ SelectedItem="{Binding SelectedTargetItem}"
+ ItemTemplate="{Binding ItemDataDemplate}">
+
+
diff --git a/StructureHelper/StructureHelper.csproj.user b/StructureHelper/StructureHelper.csproj.user
index 45632a9..dff02ba 100644
--- a/StructureHelper/StructureHelper.csproj.user
+++ b/StructureHelper/StructureHelper.csproj.user
@@ -15,6 +15,9 @@
Code
+
+ Code
+
Code
@@ -74,6 +77,9 @@
Designer
+
+ Designer
+
Designer
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/InteractionDiagramLogic.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/InteractionDiagramLogic.cs
index 348636d..e9f89ac 100644
--- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/InteractionDiagramLogic.cs
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/InteractionDiagramLogic.cs
@@ -45,6 +45,7 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu
{
InputData = inputData;
stepCount = InputData.PointCount;
+ stepCount *= inputData.PrimitiveSeries.Count;
stepCount *= InputData.LimitStates.Count();
stepCount *= InputData.CalcTerms.Count();
stepCount *= InputData.PredicateEntries.Count();
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataService.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataService.cs
new file mode 100644
index 0000000..09c9fa1
--- /dev/null
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataService.cs
@@ -0,0 +1,14 @@
+using StructureHelperLogics.NdmCalculations.Analyses.ByForces.LimitCurve;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalculatorViews.ForceResultLogic
+{
+ internal static class LimitCurveDataService
+ {
+
+ }
+}
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataView.xaml b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataView.xaml
index f909c40..e1923e7 100644
--- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataView.xaml
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataView.xaml
@@ -6,49 +6,14 @@
xmlns:local="clr-namespace:StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalculatorViews.ForceResultLogic"
xmlns:uc="clr-namespace:StructureHelper.Windows.UserControls"
xmlns:fc="clr-namespace:StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalculatorViews"
- d:DataContext ="{d:DesignInstance local:LimitCurveDataViewModel}"
mc:Ignorable="d"
Title="Diagram properties" Height="360" Width="400" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataView.xaml.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataView.xaml.cs
index 5aed1a6..9594969 100644
--- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataView.xaml.cs
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataView.xaml.cs
@@ -1,5 +1,6 @@
using StructureHelper.Windows.UserControls;
using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
+using StructureHelperLogics.NdmCalculations.Analyses.ByForces.LimitCurve;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -22,25 +23,13 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu
public partial class LimitCurveDataView : Window
{
private LimitCurveDataViewModel viewModel;
- public LimitCurveDataView(SurroundData surroundData) : this(new LimitCurveDataViewModel(surroundData)) { }
public LimitCurveDataView(LimitCurveDataViewModel vm)
{
viewModel = vm;
viewModel.ParentWindow = this;
DataContext = viewModel;
InitializeComponent();
- SurData.SurroundData = vm.SurroundData;
- }
- private void PointCountChanged(object sender, EventArgs e)
- {
- viewModel.PointCount = Convert.ToInt32(viewModel.PointCount * ChangeValue(sender));
- }
-
- private double ChangeValue(object sender)
- {
- var obj = (MultiplyDouble)sender;
- var factor = obj.DoubleFactor;
- return factor;
+ CurveData.LimitCurveViewModel = viewModel;
}
}
}
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataViewModel.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataViewModel.cs
index 8a00902..12819ac 100644
--- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataViewModel.cs
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataViewModel.cs
@@ -1,4 +1,5 @@
using StructureHelper.Infrastructure.UI.Converters.Units;
+using StructureHelper.Infrastructure.UI.DataContexts;
using StructureHelper.Windows.ViewModels;
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Exceptions;
@@ -23,84 +24,76 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu
{
public class LimitCurveDataViewModel : OkCancelViewModelBase, IDataErrorInfo
{
- private int pointCount;
+ private LimitCurveInputData inputData;
+
//public SurroundDataViewModel SurroundDataViewModel { get; private set; }
- public SurroundData SurroundData { get; set; }
- public List Primitives { get; set; }
- public SelectItemsViewModel PredicateItems { get; private set; }
- public SelectItemsViewModel LimitStateItems { get; private set; }
- public SelectItemsViewModel CalcTermITems { get; private set; }
+ public SurroundData SurroundData { get => inputData.SurroundData; }
+ public SelectPrimitivesSourceTarget PrimitiveSeries { get; private set; }
+ public SelectItemsVM PredicateItems { get; private set; }
+ public SelectItemsVM LimitStateItems { get; private set; }
+ public SelectItemsVM CalcTermITems { get; private set; }
+ public bool ShowPrimitivesTab { get; set; }
+
public int PointCount
{
- get => pointCount; set
+ get => inputData.PointCount; set
{
try
{
- pointCount = value;
+ inputData.PointCount = value;
}
catch (Exception)
{
- pointCount = 40;
+ inputData.PointCount = 40;
}
OnPropertyChanged(nameof(PointCount));
}
}
- public LimitCurveDataViewModel(SurroundData surroundData)
+ public IEnumerable AllowedPrimitives { get; set; }
+
+ public LimitCurveDataViewModel(LimitCurveInputData inputData, IEnumerable allowedPrimitives)
{
- //SurroundDataViewModel = new(surroundData);
- SurroundData = surroundData;
+ this.inputData = inputData;
+ AllowedPrimitives = allowedPrimitives;
+ List>> namedCollection = new List>>();
+ foreach (var item in inputData.PrimitiveSeries)
+ {
+ var viewModel = SourceTargetFactory.GetSourceTargetVM(AllowedPrimitives, item.Collection);
+ var namedViewModel = new NamedValue>()
+ {
+ Name = item.Name,
+ Value = viewModel
+ };
+ namedCollection.Add(namedViewModel);
+ }
+ PrimitiveSeries = new SelectPrimitivesSourceTarget(namedCollection);
+ PrimitiveSeries.AllowedPrimitives = allowedPrimitives.ToList();
GetPredicates();
GetLimitStates();
GetCalcTerms();
- pointCount = 80;
}
- private void GetCalcTerms()
+ public void RefreshInputData()
{
- CalcTermITems = new SelectItemsViewModel(ProgramSetting.CalcTermList.CalcTerms);
- CalcTermITems.ShowButtons = true;
- }
-
- private void GetLimitStates()
- {
- LimitStateItems = new SelectItemsViewModel(ProgramSetting.LimitStatesList.LimitStates);
- LimitStateItems.ShowButtons = true;
- }
-
- private void GetPredicates()
- {
- PredicateItems = new SelectItemsViewModel(
- new List()
- {
- new PredicateEntry()
- { Name = "Strength", PredicateType = PredicateTypes.Strength },
- new PredicateEntry()
- { Name = "Cracking", PredicateType = PredicateTypes.Cracking },
- }
- );
- PredicateItems.ShowButtons = true;
- }
-
- public LimitCurveDataViewModel() : this (new SurroundData())
- {
- }
-
- public LimitCurveInputData GetLimitCurveInputData()
- {
- LimitCurveInputData inputData = new()
- {
- SurroundData = SurroundData,
- PointCount = pointCount
- };
inputData.LimitStates.AddRange(LimitStateItems.SelectedItems.Select(x => x.LimitState));
inputData.CalcTerms.AddRange(CalcTermITems.SelectedItems.Select(x => x.CalcTerm));
inputData.PredicateEntries.AddRange(PredicateItems.SelectedItems);
- inputData.Primitives = Primitives;
- return inputData;
+ inputData.PrimitiveSeries.Clear();
+ foreach (var item in PrimitiveSeries.Collection)
+ {
+ var selectesPrimitives = item.Value.TargetItems.Select(x => x.NdmPrimitive).ToList();
+ inputData.PrimitiveSeries.Add
+ (
+ new NamedCollection()
+ {
+ Name = item.Name,
+ Collection = selectesPrimitives
+ }
+ );
+ }
}
-
public bool Check()
{
if (PredicateItems.SelectedCount == 0 ||
@@ -111,9 +104,9 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu
}
return true;
}
-
public string Error => throw new NotImplementedException();
+
public string this[string columnName]
{
get
@@ -131,5 +124,31 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu
return error;
}
}
+ private void GetCalcTerms()
+ {
+ CalcTermITems = new SelectItemsVM(ProgramSetting.CalcTermList.CalcTerms);
+ CalcTermITems.SelectedItems = ProgramSetting.CalcTermList.CalcTerms.Where(x => inputData.CalcTerms.Contains(x.CalcTerm));
+ CalcTermITems.ShowButtons = true;
+ }
+ private void GetLimitStates()
+ {
+ LimitStateItems = new SelectItemsVM(ProgramSetting.LimitStatesList.LimitStates);
+ LimitStateItems.SelectedItems = ProgramSetting.LimitStatesList.LimitStates.Where(x => inputData.LimitStates.Contains(x.LimitState));
+ LimitStateItems.ShowButtons = true;
+
+ }
+ private void GetPredicates()
+ {
+ PredicateItems = new SelectItemsVM(
+ new List()
+ {
+ new PredicateEntry()
+ { Name = "Strength", PredicateType = PredicateTypes.Strength },
+ new PredicateEntry()
+ { Name = "Cracking", PredicateType = PredicateTypes.Cracking },
+ }
+ );
+ PredicateItems.ShowButtons = true;
+ }
}
}
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsViewModel.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsViewModel.cs
index 7e220e4..ea4cb33 100644
--- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsViewModel.cs
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsViewModel.cs
@@ -84,18 +84,25 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu
private void ShowInteractionDiagram()
{
- var surroundDdata = new SurroundData();
- var vm = new LimitCurveDataViewModel(surroundDdata);
+ var inputData = new LimitCurveInputData(ndmPrimitives);
+ var vm = new LimitCurveDataViewModel(inputData, ndmPrimitives);
+ vm.LimitStateItems.SetIsSelected();
+ vm.CalcTermITems.SetIsSelected();
+ vm.ShowPrimitivesTab = true;
+ var wnd = new LimitCurveDataView(vm);
+ wnd.ShowDialog();
+ if (wnd.DialogResult != true) return;
if (vm.Check() == false)
{
MessageBox.Show(ErrorStrings.DataIsInCorrect + ": nothing selected"); ;
return;
}
- vm.Primitives = ndmPrimitives.ToList();
- var wnd = new LimitCurveDataView(vm);
- wnd.ShowDialog();
- if (wnd.DialogResult != true) return;
- var inputData = vm.GetLimitCurveInputData();
+ vm.RefreshInputData();
+ ShowInteractionDiagramByInputData(inputData);
+ }
+
+ private void ShowInteractionDiagramByInputData(LimitCurveInputData inputData)
+ {
interactionDiagramLogic = new(inputData);
showProgressLogic = new(interactionDiagramLogic)
{
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/InteractionDiagramCalculatorView.xaml b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/LimitCurveCalculatorView.xaml
similarity index 56%
rename from StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/InteractionDiagramCalculatorView.xaml
rename to StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/LimitCurveCalculatorView.xaml
index 3268bdb..ada70f2 100644
--- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/InteractionDiagramCalculatorView.xaml
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/LimitCurveCalculatorView.xaml
@@ -4,9 +4,10 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalculatorViews"
- d:DataContext ="{d:DesignInstance local:InteractionDiagramCalculatorViewModel}"
+ xmlns:fc="clr-namespace:StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalculatorViews"
+ d:DataContext ="{d:DesignInstance local:LimitCurveCalculatorViewModel}"
mc:Ignorable="d"
- Title="Interaction Diagram Calculator" Height="300" Width="400" MinHeight="300" MinWidth="400">
+ Title="Limit Curve Calculator" Height="300" Width="400" MinHeight="300" MinWidth="400">
@@ -17,7 +18,25 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/InteractionDiagramCalculatorView.xaml.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/LimitCurveCalculatorView.xaml.cs
similarity index 100%
rename from StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/InteractionDiagramCalculatorView.xaml.cs
rename to StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/LimitCurveCalculatorView.xaml.cs
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/InteractionDiagramCalculatorViewModel.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/LimitCurveCalculatorViewModel.cs
similarity index 81%
rename from StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/InteractionDiagramCalculatorViewModel.cs
rename to StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/LimitCurveCalculatorViewModel.cs
index b9655f8..71507af 100644
--- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/InteractionDiagramCalculatorViewModel.cs
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/LimitCurveCalculatorViewModel.cs
@@ -10,7 +10,8 @@ using System.Threading.Tasks;
namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalculatorViews
{
- internal class InteractionDiagramCalculatorViewModel : OkCancelViewModelBase
+ internal class LimitCurveCalculatorViewModel : OkCancelViewModelBase
{
+
}
}
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/LimitCurveControl.xaml b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/LimitCurveControl.xaml
new file mode 100644
index 0000000..e576762
--- /dev/null
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/LimitCurveControl.xaml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/LimitCurveControl.xaml.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/LimitCurveControl.xaml.cs
new file mode 100644
index 0000000..b2301a1
--- /dev/null
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/LimitCurveControl.xaml.cs
@@ -0,0 +1,52 @@
+using StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalculatorViews.ForceResultLogic;
+using StructureHelper.Windows.UserControls;
+using StructureHelper.Windows.ViewModels.Materials;
+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.Navigation;
+using System.Windows.Shapes;
+
+namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalculatorViews
+{
+ ///
+ /// Логика взаимодействия для LimitCurveControl.xaml
+ ///
+ public partial class LimitCurveControl : UserControl
+ {
+ public static readonly DependencyProperty LimitCurveViewModelProperty =
+ DependencyProperty.Register("LimitCurveViewModel", typeof(LimitCurveDataViewModel), typeof(LimitCurveControl));
+
+ public LimitCurveDataViewModel LimitCurveViewModel
+ {
+ get { return (LimitCurveDataViewModel)GetValue(LimitCurveViewModelProperty); }
+ set { SetValue(LimitCurveViewModelProperty, value); }
+ }
+ public LimitCurveControl()
+ {
+ InitializeComponent();
+ DataContext = this;
+ }
+
+ private void PointCountChanged(object sender, EventArgs e)
+ {
+ LimitCurveViewModel.PointCount = Convert.ToInt32(LimitCurveViewModel.PointCount * ChangeValue(sender));
+ }
+
+ private double ChangeValue(object sender)
+ {
+ var obj = (MultiplyDouble)sender;
+ var factor = obj.DoubleFactor;
+ return factor;
+ }
+ }
+}
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/SurroundDataControl.xaml b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/SurroundDataControl.xaml
index 8be3f3f..19b1af7 100644
--- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/SurroundDataControl.xaml
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/SurroundDataControl.xaml
@@ -24,7 +24,6 @@
-
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/SurroundDataControl.xaml.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/SurroundDataControl.xaml.cs
index af71278..75408af 100644
--- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/SurroundDataControl.xaml.cs
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/SurroundDataControl.xaml.cs
@@ -28,7 +28,7 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu
public static readonly DependencyProperty SurroundDataProperty =
DependencyProperty.Register(
"SurroundData",
- typeof(SurroundData), // Change to the actual type of SurroundData
+ typeof(SurroundData),
typeof(SurroundDataControl),
new PropertyMetadata(null, OnSurroundDataChanged));
diff --git a/StructureHelper/Windows/Graphs/GraphViewModel.cs b/StructureHelper/Windows/Graphs/GraphViewModel.cs
index 65f7762..acc89a6 100644
--- a/StructureHelper/Windows/Graphs/GraphViewModel.cs
+++ b/StructureHelper/Windows/Graphs/GraphViewModel.cs
@@ -38,8 +38,8 @@ namespace StructureHelper.Windows.Graphs
private bool invertYValues;
private RelayCommand saveImageCommand;
- public SelectedItemViewModel> XItems { get; private set; }
- public SelectItemsViewModel> YItems { get; set; }
+ public SelectItemVM> XItems { get; private set; }
+ public SelectItemsVM> YItems { get; set; }
public ObservableCollection Columns { get; } = new ObservableCollection();
public ObservableCollection Series { get;}
diff --git a/StructureHelper/Windows/Graphs/MaterialDiagramViewModel.cs b/StructureHelper/Windows/Graphs/MaterialDiagramViewModel.cs
index cb7c14f..085a518 100644
--- a/StructureHelper/Windows/Graphs/MaterialDiagramViewModel.cs
+++ b/StructureHelper/Windows/Graphs/MaterialDiagramViewModel.cs
@@ -80,9 +80,9 @@ namespace StructureHelper.Windows.Graphs
OnPropertyChanged(nameof(MaxValue));
}
}
- public SelectItemsViewModel MaterialsModel { get; private set; }
- public SelectItemsViewModel LimitStatesModel { get; private set; }
- public SelectItemsViewModel CalcTermsModel { get; private set; }
+ public SelectItemsVM MaterialsModel { get; private set; }
+ public SelectItemsVM LimitStatesModel { get; private set; }
+ public SelectItemsVM CalcTermsModel { get; private set; }
public SeriesCollection SeriesCollection { get; set; }
public List Labels { get; set; }
public Func YFormatter { get; set; }
@@ -103,9 +103,9 @@ namespace StructureHelper.Windows.Graphs
public MaterialDiagramViewModel(IEnumerable headMaterials, IHeadMaterial material)
{
- MaterialsModel = new SelectItemsViewModel(headMaterials) { ShowButtons = true };
- LimitStatesModel = new SelectItemsViewModel(ProgramSetting.LimitStatesList.LimitStates) { ShowButtons = false };
- CalcTermsModel = new SelectItemsViewModel(ProgramSetting.CalcTermList.CalcTerms) { ShowButtons = false };
+ MaterialsModel = new SelectItemsVM(headMaterials) { ShowButtons = true };
+ LimitStatesModel = new SelectItemsVM(ProgramSetting.LimitStatesList.LimitStates) { ShowButtons = false };
+ CalcTermsModel = new SelectItemsVM(ProgramSetting.CalcTermList.CalcTerms) { ShowButtons = false };
foreach (var item in MaterialsModel.CollectionItems)
{
if (item.Item == material)
diff --git a/StructureHelper/Windows/Graphs/Series.cs b/StructureHelper/Windows/Graphs/Series.cs
index fa80717..290f35d 100644
--- a/StructureHelper/Windows/Graphs/Series.cs
+++ b/StructureHelper/Windows/Graphs/Series.cs
@@ -26,8 +26,8 @@ namespace StructureHelper.Windows.Graphs
private bool invertXValues;
private bool invertYValues;
- public SelectedItemViewModel> XItems { get; }
- public SelectItemsViewModel> YItems { get; }
+ public SelectItemVM> XItems { get; }
+ public SelectItemsVM> YItems { get; }
public bool InvertXValues
{
get { return invertXValues; }
@@ -58,8 +58,8 @@ namespace StructureHelper.Windows.Graphs
{
this.arrayParameter = arrayParameter;
valueParameters = GetParameters();
- XItems = new SelectedItemViewModel>(valueParameters);
- YItems = new SelectItemsViewModel>(valueParameters);
+ XItems = new SelectItemVM>(valueParameters);
+ YItems = new SelectItemsVM>(valueParameters);
YItems.ShowButtons = true;
XItems.SelectedItem = XItems.Collection[0];
YItems.UnSelectAllCommand.Execute(null);
diff --git a/StructureHelper/Windows/MainWindow/MainViewModel.cs b/StructureHelper/Windows/MainWindow/MainViewModel.cs
index c81f1de..df67429 100644
--- a/StructureHelper/Windows/MainWindow/MainViewModel.cs
+++ b/StructureHelper/Windows/MainWindow/MainViewModel.cs
@@ -326,7 +326,7 @@ namespace StructureHelper.Windows.MainWindow
});
}
- private void afterMaterialEdit(SelectedItemViewModel sender, CRUDVMEventArgs e)
+ private void afterMaterialEdit(SelectItemVM sender, CRUDVMEventArgs e)
{
foreach (var primitive in primitiveLogic.Items)
{
diff --git a/StructureHelper/Windows/PrimitivePropertiesWindow/SelectPrimitivesViewModel.cs b/StructureHelper/Windows/PrimitivePropertiesWindow/SelectPrimitivesViewModel.cs
index 9644309..9432be8 100644
--- a/StructureHelper/Windows/PrimitivePropertiesWindow/SelectPrimitivesViewModel.cs
+++ b/StructureHelper/Windows/PrimitivePropertiesWindow/SelectPrimitivesViewModel.cs
@@ -12,12 +12,12 @@ namespace StructureHelper.Windows.PrimitivePropertiesWindow
{
public class SelectPrimitivesViewModel : OkCancelViewModelBase
{
- public SelectItemsViewModel Items { get; }
+ public SelectItemsVM Items { get; }
public SelectPrimitivesViewModel(IEnumerable primitives)
{
var primitiveViews = PrimitiveOperations.ConvertNdmPrimitivesToPrimitiveBase(primitives);
- Items = new SelectItemsViewModel(primitiveViews) { ShowButtons = true };
+ Items = new SelectItemsVM(primitiveViews) { ShowButtons = true };
Items.ItemDataTemplate = Application.Current.Resources["ColoredItemTemplate"] as DataTemplate;
}
}
diff --git a/StructureHelper/Windows/ViewModels/Calculations/Calculators/ForceCalculatorViewModel.cs b/StructureHelper/Windows/ViewModels/Calculations/Calculators/ForceCalculatorViewModel.cs
index 7347556..0845292 100644
--- a/StructureHelper/Windows/ViewModels/Calculations/Calculators/ForceCalculatorViewModel.cs
+++ b/StructureHelper/Windows/ViewModels/Calculations/Calculators/ForceCalculatorViewModel.cs
@@ -1,15 +1,10 @@
-using StructureHelper.Infrastructure;
-using StructureHelper.Infrastructure.UI.DataContexts;
+using StructureHelper.Infrastructure.UI.DataContexts;
using StructureHelper.Windows.ViewModels.NdmCrossSections;
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Models.Forces;
using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
using StructureHelperLogics.NdmCalculations.Primitives;
using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using System.Windows;
-using System.Windows.Input;
//Copyright (c) 2023 Redikultsev Evgeny, Ekaterinburg, Russia
@@ -20,8 +15,6 @@ namespace StructureHelper.Windows.ViewModels.Calculations.Calculators
{
public class ForceCalculatorViewModel : OkCancelViewModelBase
{
- IEnumerable allowedPrimitives;
- IEnumerable allowedForceCombinations;
ForceCalculator forcesCalculator;
SecondOrderViewModel secondOrderViewModel;
@@ -50,119 +43,15 @@ namespace StructureHelper.Windows.ViewModels.Calculations.Calculators
public bool ShortTerm { get; set; }
public bool LongTerm { get; set; }
- public ISourceToTargetViewModel CombinationViewModel { get; }
- public ISourceToTargetViewModel PrimitivesViewModel { get; }
+ public SourceTargetVM CombinationViewModel { get; }
+ public SourceTargetVM PrimitivesViewModel { get; private set; }
- public PrimitiveBase SelectedAllowedPrimitive { get; set; }
- public PrimitiveBase SelectedPrimitive { get; set; }
-
- public ObservableCollection AllowedPrimitives
+ public ForceCalculatorViewModel(IEnumerable allowedPrimitives, IEnumerable allowedCombinations, ForceCalculator forcesCalculator)
{
- get
- {
- var sourceItems = forcesCalculator.Primitives;
- var rejectedItems = allowedPrimitives.Where(x => sourceItems.Contains(x));
- var filteredItems = allowedPrimitives.Except(rejectedItems);
- return PrimitiveOperations.ConvertNdmPrimitivesToPrimitiveBase(filteredItems);
- }
- }
- public ObservableCollection Primitives
- {
- get
- {
- var sourceItems = forcesCalculator.Primitives;
- return PrimitiveOperations.ConvertNdmPrimitivesToPrimitiveBase(sourceItems);
- }
- }
-
- private ICommand addAllPrimitivesCommand;
- private ICommand clearAllPrimitivesCommand;
- private RelayCommand addSelectedPrimitiveCommand;
- private RelayCommand removeSelectedPrimitive;
-
- public ICommand AddAllPrimitivesCommand
- {
- get
- {
- return addAllPrimitivesCommand ??
- (
- addAllPrimitivesCommand = new RelayCommand(o =>
- {
- AddAllPrimitives();
- OnPropertyChanged(nameof(AllowedPrimitives));
- OnPropertyChanged(nameof(Primitives));
- },o => allowedPrimitives.Count() > 0
- ));
- }
- }
- private void AddAllPrimitives()
- {
- forcesCalculator.Primitives.Clear();
- forcesCalculator.Primitives.AddRange(allowedPrimitives);
- }
- public ICommand ClearAllPrimitivesCommand
- {
- get
- {
- return clearAllPrimitivesCommand ??
- (
- clearAllPrimitivesCommand = new RelayCommand(o =>
- {
- forcesCalculator.Primitives.Clear();
- OnPropertyChanged(nameof(AllowedPrimitives));
- OnPropertyChanged(nameof(Primitives));
- }, o => forcesCalculator.Primitives.Count > 0 ));
- }
- }
- public ICommand AddSelectedPrimitiveCommand
- {
- get
- {
- return addSelectedPrimitiveCommand ??
- (
- addSelectedPrimitiveCommand = new RelayCommand(o =>
- {
- forcesCalculator.Primitives.Add(SelectedAllowedPrimitive.GetNdmPrimitive());
- OnPropertyChanged(nameof(AllowedPrimitives));
- OnPropertyChanged(nameof(Primitives));
- }, o => SelectedAllowedPrimitive != null));
- }
- }
- public RelayCommand RemoveSelectedPrimitiveCommand
- {
- get
- {
- return removeSelectedPrimitive ??
- (
- removeSelectedPrimitive = new RelayCommand(o =>
- {
- forcesCalculator.Primitives.Remove(SelectedPrimitive.GetNdmPrimitive());
- OnPropertyChanged(nameof(AllowedPrimitives));
- OnPropertyChanged(nameof(Primitives));
- }, o => SelectedPrimitive != null));
- }
- }
-
- public ForceCalculatorViewModel(IEnumerable _allowedPrimitives, IEnumerable _allowedForceCombinations, ForceCalculator _forcesCalculator)
- {
- allowedPrimitives = _allowedPrimitives;
- allowedForceCombinations = _allowedForceCombinations;
- forcesCalculator = _forcesCalculator;
- secondOrderViewModel = new SecondOrderViewModel(forcesCalculator.CompressedMember);
-
- CombinationViewModel = new SourceToTargetViewModel();
- CombinationViewModel.SetTargetItems(forcesCalculator.ForceActions);
- CombinationViewModel.SetSourceItems(allowedForceCombinations);
- CombinationViewModel.ItemDataDemplate = Application.Current.Resources["SimpleItemTemplate"] as DataTemplate;
-
- PrimitivesViewModel = new SourceToTargetViewModel();
- var targetItems = forcesCalculator.Primitives;
- var sourceViewPrimitives = PrimitiveOperations.ConvertNdmPrimitivesToPrimitiveBase(allowedPrimitives);
- var viewPrimitives = sourceViewPrimitives.Where(x => targetItems.Contains(x.GetNdmPrimitive()));
- PrimitivesViewModel.SetTargetItems(viewPrimitives);
- PrimitivesViewModel.SetSourceItems(sourceViewPrimitives);
- PrimitivesViewModel.ItemDataDemplate = Application.Current.Resources["ColoredItemTemplate"] as DataTemplate;
-
+ this.forcesCalculator = forcesCalculator;
+ secondOrderViewModel = new SecondOrderViewModel(this.forcesCalculator.CompressedMember);
+ CombinationViewModel = SourceTargetFactory.GetSourceTargetVM(allowedCombinations, this.forcesCalculator.ForceActions);
+ PrimitivesViewModel = SourceTargetFactory.GetSourceTargetVM(allowedPrimitives, this.forcesCalculator.Primitives);
InputRefresh();
}
diff --git a/StructureHelper/Windows/ViewModels/Calculations/Calculators/ICombinationSourceToTargetViewModel.cs b/StructureHelper/Windows/ViewModels/Calculations/Calculators/ICombinationSourceToTargetViewModel.cs
deleted file mode 100644
index c216edd..0000000
--- a/StructureHelper/Windows/ViewModels/Calculations/Calculators/ICombinationSourceToTargetViewModel.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-using StructureHelperCommon.Models.Forces;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StructureHelper.Windows.ViewModels.Calculations.Calculators
-{
- public interface ICombinationSourceToTargetViewModel : ISourceToTargetViewModel
- {
- }
-}
diff --git a/StructureHelper/Windows/ViewModels/Factories/SourceTargetFactory.cs b/StructureHelper/Windows/ViewModels/Factories/SourceTargetFactory.cs
new file mode 100644
index 0000000..73daa84
--- /dev/null
+++ b/StructureHelper/Windows/ViewModels/Factories/SourceTargetFactory.cs
@@ -0,0 +1,59 @@
+using StructureHelper.Infrastructure.UI.DataContexts;
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Models.Forces;
+using StructureHelperLogics.NdmCalculations.Primitives;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace StructureHelper.Windows.ViewModels
+{
+ internal static class SourceTargetFactory
+ {
+ const string ColoredItemTemplate = "ColoredItemTemplate";
+ const string SimpleItemTemplate = "SimpleItemTemplate";
+ public static SourceTargetVM GetSourceTargetVM(IEnumerable allowedPrimitives, IEnumerable targetPrimitives)
+ {
+ var sourceViewPrimitives = PrimitiveOperations.ConvertNdmPrimitivesToPrimitiveBase(allowedPrimitives);
+ var result = new SourceTargetVM();
+ if (targetPrimitives is not null)
+ {
+ var viewPrimitives = sourceViewPrimitives.Where(x => targetPrimitives.Contains(x.GetNdmPrimitive()));
+ result.SetTargetItems(viewPrimitives);
+ }
+ result.SetSourceItems(sourceViewPrimitives);
+ result.ItemDataDemplate = GetDataTemplate(ColoredItemTemplate);
+ return result;
+ }
+
+ public static SourceTargetVM GetSourceTargetVM(IEnumerable allowedCombinations, IEnumerable targetCombinations)
+ {
+ var result = new SourceTargetVM();
+ result.SetTargetItems(targetCombinations);
+ result.SetSourceItems(allowedCombinations);
+ result.ItemDataDemplate = GetDataTemplate(SimpleItemTemplate);
+ return result;
+ }
+
+ private static DataTemplate GetDataTemplate(string dataTemplateName)
+ {
+ DataTemplate dataTemplate;
+ try
+ {
+ dataTemplate = Application.Current.Resources[dataTemplateName] as DataTemplate;
+ }
+ catch (Exception ex)
+ {
+ throw new StructureHelperException(ErrorStrings.ObjectNotFound);
+ }
+ if (dataTemplate is null)
+ {
+ throw new StructureHelperException(ErrorStrings.NullReference);
+ }
+ return dataTemplate;
+ }
+ }
+}
diff --git a/StructureHelper/Windows/ViewModels/Forces/ActionsViewModel.cs b/StructureHelper/Windows/ViewModels/Forces/ActionsViewModel.cs
index 86ee3d5..0a829bf 100644
--- a/StructureHelper/Windows/ViewModels/Forces/ActionsViewModel.cs
+++ b/StructureHelper/Windows/ViewModels/Forces/ActionsViewModel.cs
@@ -17,7 +17,7 @@ using System.Windows.Forms;
namespace StructureHelper.Windows.ViewModels.Forces
{
- public class ActionsViewModel : SelectedItemViewModel
+ public class ActionsViewModel : SelectItemVM
{
readonly IUpdateStrategy updateStrategy = new ActionUpdateStrategy();
ICrossSectionRepository repository;
diff --git a/StructureHelper/Windows/ViewModels/Forces/ForceTuplesViewModel.cs b/StructureHelper/Windows/ViewModels/Forces/ForceTuplesViewModel.cs
index b1195d9..6b71865 100644
--- a/StructureHelper/Windows/ViewModels/Forces/ForceTuplesViewModel.cs
+++ b/StructureHelper/Windows/ViewModels/Forces/ForceTuplesViewModel.cs
@@ -9,7 +9,7 @@ using System.Threading.Tasks;
namespace StructureHelper.Windows.ViewModels.Forces
{
- public class ForceTuplesViewModel : SelectedItemViewModel
+ public class ForceTuplesViewModel : SelectItemVM
{
public override void AddMethod(object parameter)
{
diff --git a/StructureHelper/Windows/ViewModels/ISourceToTargetViewModel.cs b/StructureHelper/Windows/ViewModels/ISourceToTargetViewModel.cs
deleted file mode 100644
index a624e68..0000000
--- a/StructureHelper/Windows/ViewModels/ISourceToTargetViewModel.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using StructureHelper.Infrastructure;
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows;
-
-namespace StructureHelper.Windows.ViewModels
-{
- public interface ISourceToTargetViewModel
- {
- TItem SelectedSourceItem { get; set; }
- TItem SelectedTargetItem { get; set; }
- ObservableCollection SourceItems { get; }
- ObservableCollection TargetItems { get; }
- DataTemplate ItemDataDemplate { get; set; }
- RelayCommand AddAll { get; }
- RelayCommand ClearAll { get; }
- RelayCommand AddSelected { get; }
- RelayCommand RemoveSelected { get; }
- void SetSourceItems(IEnumerable allowedItems);
- void SetTargetItems(IEnumerable targetItems);
- IEnumerable GetTargetItems();
- }
-}
diff --git a/StructureHelper/Windows/ViewModels/Materials/MaterialsViewModel.cs b/StructureHelper/Windows/ViewModels/Materials/MaterialsViewModel.cs
index e8eca2c..7e1cc3c 100644
--- a/StructureHelper/Windows/ViewModels/Materials/MaterialsViewModel.cs
+++ b/StructureHelper/Windows/ViewModels/Materials/MaterialsViewModel.cs
@@ -12,7 +12,7 @@ using System.Windows.Input;
namespace StructureHelper.Windows.ViewModels.Materials
{
- public class MaterialsViewModel : SelectedItemViewModel
+ public class MaterialsViewModel : SelectItemVM
{
ICrossSectionRepository repository;
private ICommand editMaterialsCommand;
diff --git a/StructureHelper/Windows/ViewModels/Materials/PartialFactorsViewModel.cs b/StructureHelper/Windows/ViewModels/Materials/PartialFactorsViewModel.cs
index e0554cb..14f02c8 100644
--- a/StructureHelper/Windows/ViewModels/Materials/PartialFactorsViewModel.cs
+++ b/StructureHelper/Windows/ViewModels/Materials/PartialFactorsViewModel.cs
@@ -7,7 +7,7 @@ using System.Threading.Tasks;
namespace StructureHelper.Windows.ViewModels.Materials
{
- internal class PartialFactorsViewModel : SelectedItemViewModel
+ internal class PartialFactorsViewModel : SelectItemVM
{
public override void AddMethod(object parameter)
{
diff --git a/StructureHelper/Windows/ViewModels/Materials/SafetyFactorsViewModel.cs b/StructureHelper/Windows/ViewModels/Materials/SafetyFactorsViewModel.cs
index 0145c2e..608648e 100644
--- a/StructureHelper/Windows/ViewModels/Materials/SafetyFactorsViewModel.cs
+++ b/StructureHelper/Windows/ViewModels/Materials/SafetyFactorsViewModel.cs
@@ -13,7 +13,7 @@ using System.Windows.Input;
namespace StructureHelper.Windows.ViewModels.Materials
{
- internal class SafetyFactorsViewModel : SelectedItemViewModel
+ internal class SafetyFactorsViewModel : SelectItemVM
{
List safetyFactors;
private RelayCommand showPartialCommand;
diff --git a/StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisVewModelLogic.cs b/StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisVewModelLogic.cs
index ac138b5..6585ce4 100644
--- a/StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisVewModelLogic.cs
+++ b/StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisVewModelLogic.cs
@@ -20,7 +20,7 @@ using System.Windows.Forms;
namespace StructureHelper.Windows.ViewModels.NdmCrossSections
{
- public class AnalysisVewModelLogic : SelectedItemViewModel
+ public class AnalysisVewModelLogic : SelectItemVM
{
private ICrossSectionRepository repository;
private RelayCommand runCommand;
diff --git a/StructureHelper/Windows/ViewModels/Primitives/SelectPrimitivesSourceTarget.cs b/StructureHelper/Windows/ViewModels/Primitives/SelectPrimitivesSourceTarget.cs
new file mode 100644
index 0000000..1641aa3
--- /dev/null
+++ b/StructureHelper/Windows/ViewModels/Primitives/SelectPrimitivesSourceTarget.cs
@@ -0,0 +1,33 @@
+using StructureHelper.Infrastructure.UI.DataContexts;
+using StructureHelper.Properties;
+using StructureHelper.Windows.ViewModels.Materials;
+using StructureHelperCommon.Models.Parameters;
+using StructureHelperLogics.NdmCalculations.Primitives;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelper.Windows.ViewModels
+{
+ public class SelectPrimitivesSourceTarget : SelectItemVM>>
+ {
+ public List AllowedPrimitives { get; set; }
+ public override void AddMethod(object parameter)
+ {
+ var viewModel = SourceTargetFactory.GetSourceTargetVM(AllowedPrimitives, AllowedPrimitives);
+ var namedViewModel = new NamedValue>()
+ {
+ Name = "New option",
+ Value = viewModel
+ };
+ NewItem = namedViewModel;
+ base.AddMethod(parameter);
+ }
+ public SelectPrimitivesSourceTarget(List>> collection) : base(collection)
+ {
+
+ }
+ }
+}
diff --git a/StructureHelper/Windows/ViewModels/SelectedItemViewModel.cs b/StructureHelper/Windows/ViewModels/SelectItemVM.cs
similarity index 87%
rename from StructureHelper/Windows/ViewModels/SelectedItemViewModel.cs
rename to StructureHelper/Windows/ViewModels/SelectItemVM.cs
index c541b1c..c240e4b 100644
--- a/StructureHelper/Windows/ViewModels/SelectedItemViewModel.cs
+++ b/StructureHelper/Windows/ViewModels/SelectItemVM.cs
@@ -1,18 +1,12 @@
-using Microsoft.VisualBasic;
-using StructureHelper.Infrastructure;
-using StructureHelperCommon.Models.Materials.Libraries;
+using StructureHelper.Infrastructure;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Documents;
using System.Windows.Input;
namespace StructureHelper.Windows.ViewModels
{
- public class SelectedItemViewModel : ViewModelBase, ICRUDViewModel where TItem : class
+ public class SelectItemVM : ViewModelBase, ICRUDViewModel where TItem : class
{
private ICommand addCommand;
private ICommand deleteCommand;
@@ -115,7 +109,7 @@ namespace StructureHelper.Windows.ViewModels
}
}
- public SelectedItemViewModel(List collection)
+ public SelectItemVM(List collection)
{
Collection = collection;
Refresh();
@@ -126,7 +120,7 @@ namespace StructureHelper.Windows.ViewModels
OnPropertyChanged(nameof(Items));
AfterItemsEdit?.Invoke(this, new CRUDVMEventArgs());
}
- public delegate void CRUDHandler(SelectedItemViewModel sender, CRUDVMEventArgs e);
+ public delegate void CRUDHandler(SelectItemVM sender, CRUDVMEventArgs e);
public event CRUDHandler? AfterItemsEdit;
}
}
diff --git a/StructureHelper/Windows/ViewModels/SelectItemsViewModel.cs b/StructureHelper/Windows/ViewModels/SelectItemsVM.cs
similarity index 92%
rename from StructureHelper/Windows/ViewModels/SelectItemsViewModel.cs
rename to StructureHelper/Windows/ViewModels/SelectItemsVM.cs
index eb5f60f..304a69b 100644
--- a/StructureHelper/Windows/ViewModels/SelectItemsViewModel.cs
+++ b/StructureHelper/Windows/ViewModels/SelectItemsVM.cs
@@ -18,7 +18,7 @@ namespace StructureHelper.Windows.ViewModels
/// Represents a ViewModel for selecting items from a collection.
///
/// The type of items in the collection.
- public class SelectItemsViewModel : ViewModelBase
+ public class SelectItemsVM : ViewModelBase
where TItem : class
{
private ICommand? selectAllCommand;
@@ -80,7 +80,7 @@ namespace StructureHelper.Windows.ViewModels
}
}
- private void InvertSelection()
+ public void InvertSelection()
{
{
foreach (var item in CollectionItems)
@@ -89,8 +89,11 @@ namespace StructureHelper.Windows.ViewModels
}
};
}
-
- private void SetIsSelected(bool isSelected)
+ ///
+ /// Select all if true, deselect all if false
+ ///
+ /// Default is true
+ public void SetIsSelected(bool isSelected = true)
{
foreach (var item in CollectionItems)
{
@@ -98,7 +101,7 @@ namespace StructureHelper.Windows.ViewModels
}
}
- public SelectItemsViewModel(IEnumerable items)
+ public SelectItemsVM(IEnumerable items)
{
CollectionItems = new ObservableCollection(
items
diff --git a/StructureHelper/Windows/ViewModels/SourceToTargetViewModel.cs b/StructureHelper/Windows/ViewModels/SourceTargetVM.cs
similarity index 94%
rename from StructureHelper/Windows/ViewModels/SourceToTargetViewModel.cs
rename to StructureHelper/Windows/ViewModels/SourceTargetVM.cs
index d813dfa..79fdcc5 100644
--- a/StructureHelper/Windows/ViewModels/SourceToTargetViewModel.cs
+++ b/StructureHelper/Windows/ViewModels/SourceTargetVM.cs
@@ -11,7 +11,7 @@ using System.Windows;
namespace StructureHelper.Windows.ViewModels
{
- public class SourceToTargetViewModel : ViewModelBase, ISourceToTargetViewModel
+ public class SourceTargetVM : ViewModelBase
{
private IEnumerable allowedItems;
private IEnumerable targetItems;
@@ -65,6 +65,7 @@ namespace StructureHelper.Windows.ViewModels
(
addSelected = new RelayCommand(o =>
{
+ if (SelectedSourceItem is null) { return; }
TargetItems.Add(SelectedSourceItem);
SourceItems.Remove(SelectedSourceItem);
}, o => SelectedSourceItem != null));
@@ -78,15 +79,15 @@ namespace StructureHelper.Windows.ViewModels
(
removeSelected = new RelayCommand(o =>
{
+ if (SelectedTargetItem is null) { return; }
SourceItems.Add(SelectedTargetItem);
TargetItems.Remove(SelectedTargetItem);
}, o => SelectedTargetItem != null));
}
}
-
- public SourceToTargetViewModel()
+ public SourceTargetVM()
{
SourceItems = new ObservableCollection();
TargetItems = new ObservableCollection();
diff --git a/StructureHelperCommon/Infrastructures/Exceptions/ErrorString.cs b/StructureHelperCommon/Infrastructures/Exceptions/ErrorString.cs
index bb50945..ed940fd 100644
--- a/StructureHelperCommon/Infrastructures/Exceptions/ErrorString.cs
+++ b/StructureHelperCommon/Infrastructures/Exceptions/ErrorString.cs
@@ -24,5 +24,6 @@
public static string ExpectedWas(System.Type expected, System.Type was) => $"{DataIsInCorrect}: Expected {expected}, but was {was}";
public static string ExpectedWas(System.Type expected, object obj) => ExpectedWas(expected, obj.GetType());
public static string NullReference => "#0018: Null reference";
+ public static string ObjectNotFound => "#0018: Object not found";
}
}
diff --git a/StructureHelperCommon/Models/Parameters/NamedCollection.cs b/StructureHelperCommon/Models/Parameters/NamedCollection.cs
new file mode 100644
index 0000000..cd97a60
--- /dev/null
+++ b/StructureHelperCommon/Models/Parameters/NamedCollection.cs
@@ -0,0 +1,25 @@
+using StructureHelperCommon.Infrastructures.Interfaces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Parameters
+{
+ public class NamedCollection : ISaveable
+ {
+ public Guid Id { get; }
+ public string Name { get; set; }
+ public List Collection { get; set; }
+ public NamedCollection(Guid id)
+ {
+ Id = id;
+ Name = string.Empty;
+ Collection = new List();
+ }
+ public NamedCollection() : this(Guid.NewGuid())
+ {
+ }
+ }
+}
diff --git a/StructureHelperCommon/Models/Parameters/NamedValue.cs b/StructureHelperCommon/Models/Parameters/NamedValue.cs
new file mode 100644
index 0000000..93ac449
--- /dev/null
+++ b/StructureHelperCommon/Models/Parameters/NamedValue.cs
@@ -0,0 +1,22 @@
+using StructureHelperCommon.Infrastructures.Interfaces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Parameters
+{
+ public class NamedValue : ISaveable
+ {
+ public Guid Id { get; }
+ public string Name { get; set; }
+ public T Value { get; set; }
+ public NamedValue(Guid id)
+ {
+ Id = id;
+ }
+ public NamedValue() : this (Guid.NewGuid())
+ { }
+ }
+}
diff --git a/StructureHelperCommon/StructureHelperCommon.csproj b/StructureHelperCommon/StructureHelperCommon.csproj
index e33bff2..99d72f0 100644
--- a/StructureHelperCommon/StructureHelperCommon.csproj
+++ b/StructureHelperCommon/StructureHelperCommon.csproj
@@ -15,8 +15,4 @@
-
-
-
-
diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurveInputData.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurveInputData.cs
index c6bfc39..f4ef0f0 100644
--- a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurveInputData.cs
+++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurveInputData.cs
@@ -1,6 +1,7 @@
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Models.Calculators;
using StructureHelperCommon.Models.Forces;
+using StructureHelperCommon.Models.Parameters;
using StructureHelperCommon.Models.Shapes;
using StructureHelperLogics.NdmCalculations.Primitives;
using System;
@@ -18,7 +19,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces.LimitCurve
{
public List LimitStates { get; }
public List CalcTerms { get; }
- public List Primitives { get; set; }
+ public List> PrimitiveSeries {get;}
public List PredicateEntries { get; }
public SurroundData SurroundData { get; set; }
public int PointCount { get; set; }
@@ -26,10 +27,20 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces.LimitCurve
{
LimitStates = new();
CalcTerms = new();
- Primitives = new();
PredicateEntries = new();
SurroundData = new();
PointCount = 80;
+ PrimitiveSeries = new List>();
+ }
+ public LimitCurveInputData(IEnumerable primitives) : this()
+ {
+ PrimitiveSeries.Add
+ (new NamedCollection()
+ {
+ Name = "V1",
+ Collection = primitives.ToList()
+ }
+ );
}
}
}
diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculator.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculator.cs
index 122e56c..c55a1ca 100644
--- a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculator.cs
+++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculator.cs
@@ -64,16 +64,19 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces.LimitCurve
private List GetCalulators()
{
List calculators = new();
- foreach (var limitState in InputData.LimitStates)
+ foreach (var primitiveSeries in InputData.PrimitiveSeries)
{
- foreach (var calcTerm in InputData.CalcTerms)
+ foreach (var limitState in InputData.LimitStates)
{
- var ndms = NdmPrimitivesService.GetNdms(InputData.Primitives, limitState, calcTerm);
- foreach (var predicateEntry in InputData.PredicateEntries)
+ foreach (var calcTerm in InputData.CalcTerms)
{
- string calcName = $"{predicateEntry.Name}_{limitState}_{calcTerm}";
- LimitCurveCalculator calculator = GetCalculator(ndms, predicateEntry.PredicateType, calcName);
- calculators.Add(calculator);
+ var ndms = NdmPrimitivesService.GetNdms(primitiveSeries.Collection, limitState, calcTerm);
+ foreach (var predicateEntry in InputData.PredicateEntries)
+ {
+ string calcName = $"{primitiveSeries.Name}_{predicateEntry.Name}_{limitState}_{calcTerm}";
+ LimitCurveCalculator calculator = GetCalculator(ndms, predicateEntry.PredicateType, calcName);
+ calculators.Add(calculator);
+ }
}
}
}