From 32243f544814cceda6124927f70ced9027e3ff0f Mon Sep 17 00:00:00 2001 From: Evgeny Redikultsev Date: Sat, 23 Nov 2024 20:42:21 +0500 Subject: [PATCH] Add version processor window --- .../DTOs/DTOEntities/CompressedMemberDTO.cs | 2 +- .../DTOEntities/CrossSectionNdmAnalysisDTO.cs | 5 + .../ForceCalculatorInputDataDTO.cs | 2 +- .../Manuals/Руководство пользователя.docx | Bin 3016985 -> 3046899 bytes .../UI/Resources/ButtonStyles.xaml | 25 ++- .../Infrastructure/ViewModelBase.cs | 2 + StructureHelper/StructureHelper.csproj.user | 6 + .../InteractionDiagramLogic.cs | 4 +- .../LimitCurveDataViewModel.cs | 6 +- .../ForcesResultsView.xaml | 4 +- .../ForcesResultsViewModel.cs | 4 +- .../UserControls/SurroundDataViewModel.cs | 6 +- .../MainWindow/Analyses/AnalysesLogic.cs | 52 ++++++ .../MainWindow/Analyses/VersionsView.xaml | 49 ++++++ .../MainWindow/Analyses/VersionsView.xaml.cs | 40 +++++ .../MainWindow/Analyses/VersionsViewModel.cs | 103 +++++++++++ .../MainWindow/AnalysesManagerView.xaml | 42 ++++- .../ViewModels/Errors/SafetyProcessor.cs | 8 + .../AnalysisViewModelLogic.cs | 2 +- .../Interfaces/DeepCloningStrategy.cs | 60 +++++++ .../Interfaces/ICloneStrategy.cs | 22 +++ .../Interfaces/ICloningStrategy.cs | 13 ++ .../Models/Analyses/AnalysisUpdateStrategy.cs | 3 + .../Models/Analyses/IAnalysis.cs | 3 + .../Analyses/CrossSectionNdmAnalysis.cs | 10 +- .../Models/CrossSections/CrossSection.cs | 6 +- .../CrossSectionCloneStrategy.cs | 30 ++++ .../CrossSectionRepositoryCloneStrategy.cs | 142 +++++++++++++++ .../Logics/HeadMaterialBaseUpdateStrategy.cs | 5 - .../Logics/HeadMaterialUpdateStrategy.cs | 16 +- .../Logics/HelperMaterialUpdateStrategy.cs | 8 +- .../Analyses/ByForces/IForceCalculator.cs | 3 + .../LimitCurve/ILimitCurveCalculator.cs | 2 +- .../LimitCurve/ILimitCurvesCalculator.cs | 12 ++ .../ILimitCurvesCalculatorInputData.cs | 17 ++ .../ByForces/LimitCurve/ISurroundData.cs | 14 ++ .../ByForces/LimitCurve/ISurroundProc.cs | 2 +- .../LimitCurve/LimitCurveCalculator.cs | 4 +- .../LimitCurve/LimitCurveInputData.cs | 73 -------- .../LimitCurve/LimitCurvesCalculator.cs | 6 +- .../LimitCurvesCalculatorInputData.cs | 51 ++++++ ...tCurvesCalculatorInputDataCloneStrategy.cs | 32 ++++ ...CurvesCalculatorInputDataUpdateStrategy.cs | 42 +++++ .../ByForces/LimitCurve/RectSurroundProc.cs | 2 +- .../ByForces/LimitCurve/RoundSurroundProc.cs | 4 +- .../ByForces/LimitCurve/SurroundData.cs | 2 +- .../LimitCurveInputDataUpdateStrategy.cs | 6 +- .../Logics/SurroundDataUpdateStrategy.cs | 4 +- .../NdmPrimitives/ForcesParametersLogic.cs | 57 +++--- .../HeadMaterialUpdateStrategyTests.cs | 163 ++++++++++++++++++ 50 files changed, 1018 insertions(+), 158 deletions(-) create mode 100644 StructureHelper/Windows/MainWindow/Analyses/VersionsView.xaml create mode 100644 StructureHelper/Windows/MainWindow/Analyses/VersionsView.xaml.cs create mode 100644 StructureHelper/Windows/MainWindow/Analyses/VersionsViewModel.cs create mode 100644 StructureHelperCommon/Infrastructures/Interfaces/DeepCloningStrategy.cs create mode 100644 StructureHelperCommon/Infrastructures/Interfaces/ICloneStrategy.cs create mode 100644 StructureHelperCommon/Infrastructures/Interfaces/ICloningStrategy.cs create mode 100644 StructureHelperLogics/Models/CrossSections/CrossSectionCloneStrategy.cs create mode 100644 StructureHelperLogics/Models/CrossSections/CrossSectionRepositoryCloneStrategy.cs create mode 100644 StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ILimitCurvesCalculator.cs create mode 100644 StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ILimitCurvesCalculatorInputData.cs create mode 100644 StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ISurroundData.cs delete mode 100644 StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurveInputData.cs create mode 100644 StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculatorInputData.cs create mode 100644 StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculatorInputDataCloneStrategy.cs create mode 100644 StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculatorInputDataUpdateStrategy.cs create mode 100644 StructureHelperTests/UnitTests/UpdateStrategiesTests/HeadMaterialUpdateStrategyTests.cs diff --git a/DataAccess/DTOs/DTOEntities/CompressedMemberDTO.cs b/DataAccess/DTOs/DTOEntities/CompressedMemberDTO.cs index 922da97..fe3962a 100644 --- a/DataAccess/DTOs/DTOEntities/CompressedMemberDTO.cs +++ b/DataAccess/DTOs/DTOEntities/CompressedMemberDTO.cs @@ -11,7 +11,7 @@ namespace DataAccess.DTOs public class CompressedMemberDTO : ICompressedMember { [JsonProperty("Id")] - public Guid Id { get; set; } + public Guid Id { get; set; } = Guid.NewGuid(); [JsonProperty("Bucling")] public bool Buckling { get; set; } [JsonProperty("GeometryLength")] diff --git a/DataAccess/DTOs/DTOEntities/CrossSectionNdmAnalysisDTO.cs b/DataAccess/DTOs/DTOEntities/CrossSectionNdmAnalysisDTO.cs index 7656bb2..0d76d9a 100644 --- a/DataAccess/DTOs/DTOEntities/CrossSectionNdmAnalysisDTO.cs +++ b/DataAccess/DTOs/DTOEntities/CrossSectionNdmAnalysisDTO.cs @@ -8,6 +8,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows.Media; namespace DataAccess.DTOs { @@ -21,6 +22,10 @@ namespace DataAccess.DTOs public string Tags { get; set; } [JsonProperty("VersionProcessor")] public IVersionProcessor VersionProcessor { get; set; } = new VersionProcessorDTO(); + [JsonProperty("Comment")] + public string Comment { get; set; } = string.Empty; + [JsonProperty("Color")] + public Color Color { get; set; } = new(); public object Clone() { diff --git a/DataAccess/DTOs/DTOEntities/ForceCalculatorInputDataDTO.cs b/DataAccess/DTOs/DTOEntities/ForceCalculatorInputDataDTO.cs index 5535a5e..91884f7 100644 --- a/DataAccess/DTOs/DTOEntities/ForceCalculatorInputDataDTO.cs +++ b/DataAccess/DTOs/DTOEntities/ForceCalculatorInputDataDTO.cs @@ -17,7 +17,7 @@ namespace DataAccess.DTOs public class ForceCalculatorInputDataDTO : IForceCalculatorInputData { [JsonProperty("Id")] - public Guid Id { get; set; } + public Guid Id { get; set; } = Guid.NewGuid(); [JsonProperty("ForceActions")] public List ForceActions { get; set; } = new(); [JsonProperty("Primitives")] diff --git a/StructureHelper/Documentation/Manuals/Руководство пользователя.docx b/StructureHelper/Documentation/Manuals/Руководство пользователя.docx index a737148e9ff06003f5e5871649e412d7e445471a..7d9ef2240382bbafb8ef7ba3ca30ea07d29cbe58 100644 GIT binary patch delta 119506 zcmZ5`Q*@wBv}`i5ZQGjI$;7s8+x#-IZ95a&6Wg|J8-lu!dORv>y^;7Mt?!Buk zBe4zi;iDZCTTuoK932D_1R4Ycgal;%);@Rx6a+*Gx*nVK2aq~tzrlZ&IxziAQ9@$uX3t~7nD8ST-S-XPcx0m{>*LYd#$0U{_ zn^CMV<5f!<5bHqR?^9hYl!*s4EaBDo&Zx#Wcv0CW$K^qPBEeW4vM)IG>U$^*!B+%c z3WNVe3mtuHgu|%K-o(vxb6PJATUcsNoIOj*LX!U#4LqhqGj^bmCG+3DIE~tgTKMBk zVFY?XPme^6aphRu2L-@(;6AgkHP`7h1`0hUE$mxi+p~ASKo}j=D~8d zx*;S!kKOh&vnZU3;W-r($b*SiyrjpkbaE1D`#Ih4h2O$g-dGfI{Uib}&k?z}#oy^} zBn$@80dgYtcKO2N4M}7LLAS5^mOVwghe|Z9unuhekfZxao1p^9b>o{aFWBcVbeIwrqgfq>$ z(^k_~FLXqyJ~d2`fhOgH#MX^v0)m`M^R5hKotir`@f-O6s}TO#J_43nc%^O{-5P78n+eGWj*%=%Y>r`+X_+vLMo+JK?%ou%jr3>1jsG1K2hcl zErv~l9=>+Q30jRC*KN*<=9y0kHWyYmx25T=Vl7TJch+jB{IZmsrzGYTIoFa%>+O~0 zKSyuQxOy8kGj==WNEPmJ4n+S7;lj>8rz>iv&WQos-W$wWqOS_4s8)!0$QZCpv5P(~ z-KGT+WWEB>KJZ^8v6hOr;03$UkV7OtNXQYOr;%aDA{6n3(V^I=gGH&0%Y4z@Xc37c z(;-6+p~d#qTz;F!kigcCYn?A|n!-RQlr46hZ~b3CCrMT)`FV0iIQ(_vewE&8Y?Pgc(plCal2u;`>Bc&Aqg<` zFwQW3Oc1r^O}BX6BjKru@&&S?iZaFbVNpl)7X<7vQ^JP*2pt%t%Mh08(@aJ70u11% z9Ktc>QasjA=W9AgvKSxzUfy<{!gznWtI<77v1iUqC?B~yggqT%O8?NO!#JIA#$TTB zO?9jB0(P*zWrT6GYb;_R^shIOSfMacsAx$wMY2cnao8k;Rmb4f8;C1RW9c%ehhecz zD3qcxn1_c&S=9TnvyjWh;Ezb}0NUzhf}o0O%hJC0pW5I3{<#|Je_CFv5B?GeBch=l zF@w6KuaItWT@Gxl>K2I^>UV*?UHaP9n)^)ieWbaVlg9nV9Ecdq5q84T_hQB8<3jh? zYmNqmrM^y-+=M`XS*@%>tPKgyni#Z+*d*HI_k~Y{%(9`r%%=X`2SOQ94CIJd#YJ4| z8+X1`+yY8R&m<~4eQxgL0NhcZxqk|fs3#~m5W2LHZ3b(Vhu}50)ql` z3zBaN9HlV~Ih9_n#wN+)@9fLSQI`E=FEE`bWlXKS2k)huOv=8|>BKv=XR8U8RI=<8 z4cv;^@~Q25*0upI8orMm4A!=2bSqnVW7HouGrMc5G0vx|m)(oJ-Zs}KnAB#_S73AO ztK0Q9tk^G3mhBgLZGg_Vo$rku-JMl?yQ>>uIcw`jrlmVa&5d1-PUrm9wOuy<##)E+ zPPN;z2cFKAdYM~!XZO-N|3-&vdA*vTPuJ46fQ@AbW#038b+va{(92u%akI7sgRQ+s zQ}eQZSA>V2b+d=f*0gt}-`k~qwVxYs1FyYP>4t}e#~X8v&{WN>#9HlQ^Ko@7zFGjV z1|iy1m?HF|m&E`4{lDyzUCzj;#$% z&$>NJS~LvkF7563fc7=(6~^m)i50g>p;+CG;JUWe_3pkM9|+y;)yig@83&PVaIt}g zt@}*ft7U_;`wG0Tuu42+*$u4eY9p~u^RY*$G}WLjYIVCy11Eq<+F{7a z#^=&nrQPrPyV)TgaOe&To_MzvPV2M|H+ruxw^XDrQ#h>JCHLuSJK>h4jdN?A=6U~m zACodde#K7H`)jSg>8*D@Ouo?wQ}-zscw1B3MDMlFgiqarGeO(`^$~X8Q`=p?ZUh(w zF8x+~W;-`JcYx~IkBXQ4Z+YN%+>^mY&s^t5PXyI9`t69E)gCg|^?pX{>aTCNrT*4) z_ixPgSFf8okGQSN3i(P#xCGS3LTM4o^~9zgN5W)Th0%}&ezg@&ck6!6 zezd3Kj5LF21)hjE(^s=bPj^88dKojui5g{oH^ts zt$*6kQ!6auEGKG2kOC}G@9u`Kfm{%ycPlQ~s3$=OiUh2O6%K-b20lALhHJQ}g%G^7 zw$B{KC%Z2;LRfTW$aC=?zw%U!AsU71A;}GvXo`fdv`I8}F$Nq)INCCwB~Ui27iYUs z;EeruWlB(@X$Hk0aJ?ixvfaC$e5jn z2n709MN8%u;(D!H3vNuBVN%iE79`uFONn`zFk$Tq&z5qT(gg6=D@4I;d+prSq&fv} z17Rs4%2FBJ?2jDNyRYBpxVlZ5n0>NM^FMn!{62*un@|)z9DfZxJb5D%Uhns4d!N{H zom3ougwDhV;&VaWPZ%21uP0kOi?Z!*6u&bHTyT+Lk&%e6*?hl~Os0WbWTWJJZ=g0a7Y&P%&SJIk8li6VSotAA zf{MOjdJPpFW0UAJDrD5OQzDd!xwJ>)3r@(-%Lol0g8}e2O!fXP@D;>23={De^wvE9-XaBqx)?wesW%{Utht&|gxjkGieW7YYd6934PB_I$^=oi+7OO#0*XAw;77 z8%uYO^Ry0I=URwL^_Av$3=@SWytLX;GTx_kj_RJP5@=6B@uaT)L%Y`ug zA;p^IYdkyl&5STU!OtR(B`!8s|5&l~5zBsM%FB(FnSI3Y9=jnIUhlTjm`{Qij zh`HBW9Z3L1YiBJ6f#kd0T9dkb9V;~+=T|mQ%~Sm{-@91;o3vGD7QI1&-O8_b3UGqk zOpg9gJJD6blRu=mkDqdQs-Nxow}a?THGRtF{zi5$XXjC(fk<;=$<$~m+2Sh+^bND~%9%z}`l5C)4Rr!qHwVl`r9>;mupfgK7c6l;p=Nv` z=uV|w`aQ3@CO)0p@DlmU#F&H0C_~h|UF|H{9OI`r#aS0(VCqDTlGACq2#nxMzXCnl zwTG*dirm64Y5xgov$`-W4Q}Fz4b)d!b5~^K2xzHHmO4_*urrt(_iS$x!s5(Y6Ppd& zX+8lBXFlTE2O!4q6%BIE|I!qtGl5CIOT&=S~o%*71NOiFqAJfHNML&F# z=hhWspug)ppp%aoZR;EiL-_k|9PS<%nF&ANQ59!}zpbf-~S}wF1 zHtnAmW)qPjMXPZ-3uFgKTRxL4WW@=r^X+*k^h` z4!y8GYzyB9AIJ^1bJnrCg(QJEOBxn69e&|A)(*nbr5clL8eVDmZ znGoM*B#O+6^ruYrp!wvTC0nu#VzymW#KXP&p(rGxwQ+r3)FAP0Omq_1J-Uca!>a) z8OIcNQgy~Tg(y+Z$V{CE-_V31chXXgip*Gw(#N)dZ0_57jFeNE|;YKW&}qIVxJ`aMT9hA-0+{K(mK})*m$tHC`T2%?coX$ zulo%Qp=Ms~G1g;FyXW$eo&!L6W``E;At)hA+MLCZnY@Pn5Swmjd(Ft6LO2!eeM@54UMe6*5Drxmx#Q? z*N*4nNZ+n~h+M0(Km)xAcUe{W{K@g(Sx)7y3!>eFh(wKQH&u-2-w^VB7O>md^3*mvkL7$tc^ zt+Ao1YtXu1Vpxh?Y6eH}`LS0bum2GVZWjZ4g=_qIDwIyIm>I;v8mQleUlZlyyW z0%%qIYHTVbNH2$#SKr0-8+dkEJ%i4G3s2Vg)} zCGhheY_C2mt?X>NGfC}H3B&`1NOy7aM|bi^J)66JA14)s*&q@Kkk!c@v!IX2(YbosRHE4uUqHQV>9=+`;po zw+e*b13bhFaPec1(cU2f`ICA{A_Sy!VrPM}Z|~SU`fMh{L#b}Eb>nGej*$~Y#~(Y( zm56iM=`D3KHCJz64XBWlT18S(-kJ+I@zl2{G>G4a>cCkpsF%W4 z_c0bC+{+%K*fCqY&pvu-rM|4vSorSJQ_B%L1W)`CPNT7dLA5qS!vKpqKUb^R4ktR= zc|d{mpQpUIkGJT1tx=JMISwm?R!IbCjm02vBmX^R#x$aadgFEMsQnjD!PX6?tfGk8 zGGuxiThS!73N;qG9M85ptklaO1N@fQ5bt)N_FS4&UrI zwf`#L(90vVYqhEy!io&UJ6^ZF6@`P=DDYto>-s>h?Ax{U)c+;?gC9!#4QKxdsW)*Ywxp%Cf}|KJRrragsu9|r$EG`ri0(KZ$#OMJzB3*v}3aZ%{1DFyWR%L=K^kEM19r;U=@iJRjCXv?_ zmNUwE)>Nq*%@j*_G}cUJ>^ps!W`cfTzsnW7S2pOmi!JYDMHN{62U{@WP}@(Qb7_HW zSTJygm~R;lWFZJ&n+LWj8K4@E4Zr11(u-9HZsZBH(58{uY#{ERpn!emyYx5uzL6py zKYy0RWT za?6;*srAXni#7N0(qB@#uc%6rObWTpUAX#sgmy^L95PV?sRfacAlT;{{eqV4NTC{y zg}&!zC^`_CC)g?121)|v-6s7rtQ1SZ=A9WUw2aN@iLX&wRL8m(N5Ok6N#K_>K!YcG&LH3ZZ;Hiu?C2Nw z%7N3k|HP6X!x3EwRI_#!$~@8WD*GyXU6WGkk&J!jNtJR5 z1$j)n=B4clU?u=t40Je(@)1$)!G14gD<@`J->%Z%-mX^fW^rTX+$Jl;Urd(^t z-_F7YC|kB`jw=vkDLmvJl9+q-lD|8fdxex<_9{(tF1CqPYG$KCa^X)L7EH)CHgOx! z9kKj`0=YO<=_#9zfQd`jpc1NZ2`~tf>m@UFH0R3&I?3em-EeQwl=TkY%v-l>?A-9G zkMC&vsn&T`?H3taZ92Kd*2jmIw>HPGN-h%_O{5)ls|@Vfij+B&$tWADN)%&HI+mRO zDo(pfx}p5xRoE8fe@@g94`?%jkP03|knSc@y`P*RTa%$m{OeF z2d?44s~+Kx$(LqJYMOF&BLX!Yu&jeiXD+2E0%F+l*pEms$IJy$;nPeY&wnhDc(@H; z;KYN$13v!c4ZQZGO?-uz_2i@(O9B)AKJu?_-lKgD@dO%7m=p3L!hloKPGginEZs~( z4w>ogI+b!{pSGUqi3&~cEoAYB-2P+h@6UrtXGsrm(0gK?RI67=VEY&i{e4ajL?HgN z>Yz7X=Nq$6kiZ`{foUvOW1*mWZ<$e%^4YEa81IQm z+F(M}a{`HoUh)7K(|gXU6j12O9fmZNy`iO`zmx8?0fxn)eP!$M4>OTEbL(_QX{KfG zLcLzOhMZUAAja?n#MD|NSpdSg~Lxp=K4ipz3R}$ZX$=nE<{$n*6 zj?Fwi)H_!UsT$o#h^9A?fpWbUcWr)iP=~!iw&?PT6^$hINf}Feh4g!yMk}Fc5SS(^sIlNdI+RwcCLuK53Qlqwo|~NlBx+&tBB$+ z491N`-TV`WeY}UZulg7~ABKqjm;Zv`kE$wwd`secod1F>YJ|TB7JrJM_>4%%ZTgpl z#R9j$ffX}h2>@t#unp2_N)E+CvyD9vVce)!0|U<}x1HdQ>CFfY<7yqF7GN&3>KU*> z=j?(XCTw8BHyJ)xDtl-izXCw>p?+eEib?~+Fe4Vsw1(8P#1%C^@GRUQqCx)^EQ+ci z#oI{LK@7!^u_OUqn~p55J7z$A2EYlMIux4Mz1_u*f&`^Um#v$Pr(FxnB4D^V^G6;{Rz&(JcG2 zUcFqBzZGhGPD*{Vscli)-AD!rVh5H^Xi}o?fwn+&R`~lp!HOW-w6s;YN5O9eyJV4< z4^H_vJ%B=#)ZTNwgNvNXmoa30z>PmBNFDDYtQO!o_pV|S^+qFf4?Qe}&Ll2_Qi`g{ zbwYi@wzxWw5^CPy%@Vse2Zj4%Pq|ZWdO!!AYE+D|xVGQTV-?_6V|64GezrBTO#Li8 z!^k5yYFqmV%!Z$i14ln~fvThOwct~b9Fk$R2Vw^_%+XS(>}0VCRTl0utNw&V`e!4v zfgVF!{Ae6bHKma96N6=otb$5EcZg`+rW}_(W6`}uH*F)kcth-t#2iqYNENwG>g7ji zM_Q7hrluwcV;ZpuzG%QU;^VEEVNMe_%u?Sijc?FG-#EMyne>d{kR4YZTc=By>epNH z1QHUuq6==eLqPvI-6U;0)GK=D?GM!6J#1}DybAvPl)BNV0~Z*$+IjvW_!hYCBI5t2 z!*&Z}?-%RvH;iD!!12T7^B%#FwkJxzWION%h`o8h%Nw@@YQt{@a!ne^L3qCfaNptc1p7{2X1T&f z6>b`(9s_~~Il1Z-ZcC76af$X<1ke4HdZFCo1j*k2Q9&xkKMRPoqFvq9D>&UL0G2_; zkTj^-;cN1hh^1pQf4Eo6wK91ltzXkGQCLvJZf{;CNWURmKak|NB)VQ!q%dc9yTS>C z=#<|?;B%5fC`VPY^Avo5*eTAFcYa+89slqd)4dsCIwL4AcK>{mcr_(10Tc2wL-m1n zGy$_RZdoTw|uBN*-HvVPRjqIEb{7lFZl8hU=EjVNh zRK4B_R{BA@@RMZf&B-zxwm+2_&8lrv{KQaxpXzG0li74$m2mYVSdFT_2G_5pe66dE ztd;4SItm1!avagNyghgqG=|X~>8y+ICy=!3*--uf-Sh{IC%@JODzA2ND#_#YteZf& zT5cIYsX`pyR&Gmo*4K9IhOZ^C4in5T+MTOmY*{}q!p>`<;fHjfy8K(VR*xka4>;Eq z{n%v{xEvlE%HMN**XJqu5gK8bqPG|1;(>r)LW80iO6F@nD`H2;b72BcN;t&JhAvyL zQ)Nfhxf-hDFMlQjphv9+BeMYh@qdVklcm0y#%yWrzF}nV@#fnw4Vh^3f7St^moCc*p~460!ItMo(M{{H;5^ zjhvrwSjI^pq-FoGrEp;kd$=edl~3#A^q3$i5rt&l9L?7NJM!M4BUJE3wJLs;Ke8;d z^ah|CwqGXy_D#wvOf=*U`|H{!g57e4l;RR9XuRDxjSdK&yQ7#4D zE{q|^FjY5|muh57dk+$9JCqpIf{bZN{V;R==@aeLhkXm2s`XbpemQK(9~gHoci*kP zE&gO%Xl#Z6{!&eps0L1iHu$ObOpz=-^)jdz>?h(|a&<)AqaRLaE<5$Fd6RH(WQ!H0 zwMQTAL6p1`3wO+7GTDB-U7fw@jxo~I?}CTMG-8(D|0=bnVqnq9php{`G}}$F_o!`j zdcI`0^E=6`)3xxcZ1&-patz9ig42B)O8eu9FaS3W#G{STWSSKSh_i6#Uy0I|2A@^g z@Lf^MG5b^NzsY25(gaNnwtKWJs^*odR)~pkTCK&T(~R-<&+bt;A(QVwBZRW$qPAu& zY@harJBOm|So^yMV}fTW5#cN=uOb*-&l2OO3kTb_!}!E()Xq{dQPX)?CR|WD^TmW2 zP+gt^*M>bI3>X`{y@Zz_=}=qztC>SWmjWm!py4^q-;vt^H$NheW3Oyn@qBpq-$hLE z^6C`iJ9uB$C0_G*dHit<23F1j^NE@q;bP0i61xuLq)4ksM z4$6+gGHVaovL&&$lXU+c3yodKKYZjEz#1Y4_6OBu)?WUfPr`i1p<<)p&&oC@OyaSY zA5+b4H9@O^EN-=z8e6|{Q95TBHpHzwX-ZuZJyJ2=$ueEgSz$dI7nqAK-+r8P4pP_2 zQ`RBp&?D`wA0@WMHM=waTydG&E7oGQn_59-=PJ7&l!PDV%gGp&FJey12VkWy%ZwOX z56^0D(4Zom;t;lJG-yTE#vvg4&e0+6;{E=hww6b+q)Kn2q{1>e<*U?xd;MWC^Qtdr z`Hi}pi_J^nTkApWR?q%>B{`7|9z_vU?T3Q$;R^s+?-kdN#+3s*YTVQhDtf9@$cJoO zkjRR7OLYgar{n8nXFneYmjptz_X8!)SGUFKC1`DFaMF7m-DR?J#-cV#P>WE`^YtZtlTRYgK zhu(lcGbgGh-)bVT0$TWg2)@j3(4tis(Ay@h9D?DZ`LcduSo+U8Mz+yBHkc$E;(UHn zhI$KPpl0$5bXIT+YtfIT!v}i|v-k>fcOO!hUalMO+t-!j*pDEC!fmI!UOSzeMFv%< z4S=~~9?Vw#!-mAQM+(KOy%Ik;e@EC|e$rUp_^@c5`C@tr0c-^Ss`K;!UlL5;`N_My zzQF8}B~hw6LFiQh6XsO}_L^>f=5MsdpTiZ1U|BWTUKZ*Eks8CAPVwxI0c6q@pNRSG78nG>Y(^kMt9G8rFff*l8t{T z-}|FA=k`9Z0Z;YuXbh$gEh-32))X;qc;P0lvMQI2!hd}uxAq@cA|++_?CvV@$s9aZ zJT5G#GC&)do65<+|0WCIVRM6v=R<+Rhn`M>Yg1GeH?5(u^mjr)8%A2fAO}5zDFoQ` z6yZ`bDQ}J}(Y2|uk+46L1S+Gl3c}S!4zC3(`JUFgi(cF85 z?qh-dy{zap&9Q{@GINFFhI83iN_2Qvx6V4n1e=(({S65fNKBDlCMR)!$2P*mMlko& zi>Tq#4Pd4xbt{+|F{dE+#xDA7;@50Jl%fm#!>Y?|P_it;Ydm9e+F#|lL(YOdARAjS z!mOi$xek+9+bPxT^^;(9`RY!wmAlRTVNLv{{a>+&Q#LF##S1o!T{8bGyo!65`rJ4d z8h80kqRpqJd#xrx(xLT#+)%=5^fG`-LuD`YMQit8(flW{F4_ocTZCKlmGH!J#YE{MO3yg4!Jb$)JJLYZ|{?agMi z@BD%6F1E+E&xbf7K9XLHf4o^=GR0wDSd6}(Jr7Ud@sg0_S83Zc3}aWCa6F=sArCy- z2ig-by-d-G5sCst?_}XC4(!9I3=NAuW!BbYh~bE1IH@Mu9Vd;^r;ETF^W<)7O`(Xw zsEci6gbc~hsL{mYPT>-u3V%Knz!K4rje!Ufj+ZI85anPw1V^a06{qw@cQ?VhuV} z1R*Yv_?1?l$q7atF({=hW7K-yre|LbL(;!Z9x6mF?Wmv50(Snx49B6c+9 z3o4)jMdgEbM6lr|XDdNu9S^6f02grLqIBByS-Z=T%BwYjgr2H$P8bq*c;j%VgiM)q zJn$Qw%cFS|NKp&w;ygY>KA@y!0v5JAJ7a|$bcF+x$H&LLCGCeZNd8sL?o+OU=(=i9 zTp|Y|4K=~Gbd|Mf92(C!r*zXBP))t&Y#@)v8JnCD*7a(o7{5DW^)U z?i6e&N5P6o3ngR6K)OOmAmoyKkmp7^@)Z8FUVw5GXpWDFMQ#Ecae9kd0gmJk;|Uox z+Dc$<$fVSqIL);^IfqVl$AVf59S*&U(L?~}=Xo@|6LeoVFwvKxlmdKwtNQ+kzY{Bk z?0aR7^E4&DMp@1&GKUlK;Ni2=<9AF3T@5w5tSOqUAA4bZcZg`|weutl*bO8#+E+13 zGqXGTz)iH14aE4N&P&Y@0K=-)D%Mru?f`D^77EumUu+r}@7Ojy z+QNNWm!od?PM1wg)WGlu*-d2rE&PIwia~GD?|bMl(yIFEa68z{RHE<5j|g_ZvRh=* zt8j1wd!j!$U4hkmTT9KunyJQ!;>yav3+alv!u-_(*VLowD~9v4OQF63dcvju8p~0H zzw_y3CD(4{xrVK!0+9Syu|QoxqU!H?6tcX$gjhXoZUF{PMj49SFuk1eZeQKFy-M<;tfhb@?&ut95VatV@^ zvyc&>GQ8|5te(jsnJfaX>8sEv}GBaDNoyu|6fdodQ6M4l z!*oX$P}dy`55<)rX*iBolzDdb6oZotQ zK-$?aGY{9?kz^kSGmI8u`U zmlU8F%7A|qLV8jfrbS9i_xQl z1||ZyFJs`qBpEPw!cOWZ{K-S|>`ep^S$MNq{(>Cy3h;rms0I}Mio6X;XqC@(kbm)O z;jmYCigQB#b+?-9%P;(2>=gz52cFnlHBX`)+f0@54jP(9seQUX#*p^`E+@>tk?M;7 z(qpnLlY9#mnV{P$8nO1mf20q3iceLIe*>gqdfNGrei1$$1zieX6%xsmz6w@jp zRo(5|ABY|3P?13`BtzSy zQiA3lz7YUeI7M;`eibw_J*RKn=3ofJPwXkjIWp0v*$-JiNb2F$^)Dux(9taBv?CjO zRtaGQ7?F2+Mt0SP94HxC{rl1tq_1bE_@ zds)ZjZ~MJd#Wg|7b3DG|34Q9%VN5A#9LjRh-3!`vbyyua3z!PkeXapBEU9>uU&+(z zxIz;0p~oNKAjYthbFR?XNsimd1^BLdddko4=f;!U^4loYm>0f(mKx}&bb+1MG0bgx zGqx5GoaGH`$|R1M%^J>`zn{jEuI>D6lM>Oz3F+%f5A>aKxE;WYbU%Io`|NauSbF$x zVFOCaq-jny^|j|H|M-f15T*tKq4M1G^31<*BuyLvG|XsG#W6Dy){Up!u?A9jv}Ud6 ztHSde38oKlbS<=BUu9HXw7{lxiE6caz}E;wdPviEq6$tS7>gOfSQAE81yObzNKitY zF&JU17>nLP2L;g`(U@Y~lD?Xtq;#9v87|CK`V@TtyRsWRcOe~znmkT|Y-o_fBHIS-t)beu}-qEON zS@O-5bwD>XEH&K{H`6$ser|9fFws8qN5~+x-7Yds{!W?BF9DcQ+YlHWR*T4O)K~s58;TC?yJ%Ow_S{s%;^ke(I}tit5V`8Wn5_ z44hJX$^#ykTy@4;dq7ni6%IgrfG!-Um+`g+!nquvOpdn%H12U_NIWy%&fX`WtA$}_>f z1)o7zTVe%CcYwzob()b;AGLg<+Ic~<;f+F8KXWPQ+`?(#1M4}J{RsR z0jnwb+3rQVAnaH}${OLjQFbaP%s{kt^Pwt50RQlM?6np$16>hYXBHaBZ|+H=#Xog& zJCZ~3_;GJ0zwR=%S&md1qCyLFhGFfdzb=*p8C$GHYbHa>3u&2*S!rp=M&`ydW6u>T z$?{@@mOBbkfJ#RMij>+=MUO_y<0kzIgY_k1Vd>C}LiPq(_E$xhZhdq3fSRmKHSxQd zU?nRkj4igq=pYOhTC7wO7fo(rHfdJ~tL~a~3?|8?4!_8P-`B^Y+A~Hc#C1FUeP=Y@ zgmF1wRE;`rIg8u9pqHj+^$%lt-pJZ{h7E`*{nQ*hKv+i6nSc3VF@Fk&vi^iU?dVIn zK1W>Me9OW4kn;LyJ=lN*yP5Ff~L`Z?j@*&Q|5iU+B zwnHR-4mwM4p(VJy$R3v+mY+vO7o!=eIK)W%7D@kKq=!#&TK1b z!OPynXP!$M8tR4m&{Byg^N8P{AKzzus{CjJeotp5N8j;N>dTbE&@EQZHx1msT_U*9 zqq+{n$46t5O{L?fuAM%~MjDPN)DlfeFijFAzG^OnT16~avddg229Z-N)RflYtc=uS zmg*AFZBf;x&t@i*^PBZiP82LLB3L(-ZzOR+3`HTS%GG?6j4+IhA5GS+l8b0Gz-EL3 zkKq?mKmUb2`IG;H`J`$UUYa}#9i-4INZg7Ht~dn&lL`<$NB2sXDjY>myvz&hub__( zaV5rYE=ncRFT^ZN_IsCB{@D{utVs0U`ihDF8R`Ct-N^Ws6_H+Xu9YqgA>Ip-y1w^r zR`AnZUcPfAg_(vXC5j@h_-Cf_Pbyz1K&3NQ32_ve2HGiD`1>SeF>zG>O0y~O{4Ysi zk{EWW*!`C1IZ=+ai&W4-@w)FD2g($OQZd}o-`@KQU93bnu{%ls+Hp1T9mEER@=(aX zS?%CnLSy3|Hf)2dTXw#$M37fby5XDqWx{(z|m0b?cu-E`doVE4O~1FA4yQ!36BHiMX$Ra0zbec;)-j6&x|e?4Kx zIxtIJ3PefA61csJ$(oHWSFr>{m_vZGd4!=&6+%ziq-q#Rk!WQ+!6td#bCt?lqfLrZ zW#eHcJ7F6qQbhMY(4O~(*Gqp}D&_AP3(<&|MD*;93biUuDcv>561Rr{ClnDSBY%xc z;P0s1t~5l{+u`=3DeMYqB+nk{659D<)6-eSCbj6P$?eo5sq6E|OHGoaK)92Bk!$Jf z-f0jZ=Q}o?2dMf+1V5%L%d5zskf$EB6{k0)UfUa6TTw^MfkXDBSyR$VveO^o9V1xi zfJT5Txc(B=O)fDy(A*XR6g1SAd`%TpqYnp@b*rfbSchI&tm6NYMKtbFjA`W5b!F&J z{b!t9l1$6>Uz#UANe*8cERklYy8nJA4M9~o4dZ2v6o9tFLgcU(UVg799<4Y<3?yZL8%rgjrQUosr zY*>7{vf{!2wW^2;qM{|;D>L&fSsGJ{oR9w4M&}LgmDc>1veOfTgO|M?Mmr-oV&DlL zbW9qcRAj9Jl8zDqgnE-HQsMA+rGtj8s0xoSHW*G$1HAtl^OB6t!T^KsW)#oD{>8Pc0_h@q}MhYz*R*7_D7 z#)eWQ@B0^Ym^i7oG(XBLd@VNW-5&j>eOgSzwGa9-i@gUQFc@K@k9tltb2Y|mWlyx% zRMntlvdp7EKGk4mGJroqm!MSEW~-Y;qpun!0{^3xyUQ{cxv0Xi>D%0pP-okvb?j}adam;^#14C3|+-L%4@dvh1 zN{F|{`?m`OX=DDJ5Mup6U1Slg5iwI+2v*8s;*^W(*k#6#;veVCCTk`u1<5|p^!3;4 z=^;A3_Nf~jsjH#X$VIwKSI3`940W5>*eU(;^j%zhz%l?Q0+&)$$83sSBRY$AaaL?a z5+%l=cH?M6J`c~N{)ffTb(~F}h6!1uuqo-1A@8GRDmqV4xY!*2PaVR5)ls9H8P!%_<)4fVlB(qT>$ zbPn_uP}+>M7}Q_G;^2ZQB%4B*;k>>CzJSjMw>~d_RD(kRnuHl#(*9OV&0j1Rs(pW` z!Y!)yN>`y%`<%GPm`6tvNJCtsx?w5ORGp2gurz|F8xo;Xe$>w5B1)?j14 zmi=EM;@|d27oZotvhqD%JQ#^-?Rny&}8K;yZZ%;RP9aT1yC$3xo~ zK(h9<#=VQFxhteZ78NduGLV4AbR9ypKPZgKeKKX_(s#|1HPEF^FGQzKzu^pjxb5(# zHeSKGXQ!v4qq3sX$9ohfvJ^Lh#<`=c^W5P3WaQ-*%8fN+B7A3+MGwNu+Us@RG+G~7 znb~x}d{s`|iIWo~UBOL$b#?#>Q>^M3h%E1vZcEzQu|)EY%gT>Z8`h1fzw2( zzlry>`)|8=;MZVtPIZ^RvR{k6+_iHcm)4&}E|BU}?0YwKxOBJtGoDTx62O=zhCiyB z^|TdoOO=mp?RAJfSKiVCnLAL|a=x`?tK?uiAER-nM=q@z-6fdx%%Quc5$>ZL*aUNv zm#n0;IR3+dE9l6jDg+AO(804hC(M+9!sFd`dqIAHP1dr))W~m+1$lnvFc$Sk4Pwz_ zT$deZcITam>M&hL1{*VKcO@D2`jqda(m)`05L$$ zzdfm)iZ&y`V1mmmk)CO?N8SdXLQxMDok@D+)ffo7QdR}v?P2Rm?+V8tcWUACIK@nZ zfrrcOQQRN)hOWca^+4G&I_kuONmjKls;2&kGP+LxUD<9`5w+);1!m%qDA9#K!qtC6 zRCStA1A&=bg9|4(PFUXjj(CS2JFpJRH%PK}7xS208b|WpsMVilTa~68?(XZurBVg| zCCqD4SyZlo%<7V82#jBtiP#VJ0=Anjr|_$Kzj$UC~=blk@Z7>H!+Ji93lL>mzf3h7VmxIEOQ14!d}^ zhK*7=bByM0Vc&4uDrbbQgfKQMZY{^@xC{A(Rj5K+K^cP8vtK(?w4w1^(j|Y$^-acJ zPt7z<`c_9&Wxu*Z1#IGRZx^PbKN6lXNc8C%8SVV+p(h~!MG_;`nak@pe>GuvA$fRG{ z4j6QX>Wj%+R_A}v$Pe+~TUdXba;(uY1TNyThbLRIr_90zlOb9Pt|5#7{-ZdC{WM6< z2Uv>o%8PHBj}}}cBNom>zdKnM=IdcipOP=Vt$b_%Bd?IS@v2gkcQ`m~4cp$ZhEkOI zfFI(`U<#xzur9JrG5)X(GDSm0mWNl^>?1NJ;)2pysFLFY>YNhh*BpOJynqCZJS_JX z0X1+lUMvO+y=wrDffSY^)GnSf9D;B{+>Pf`t;%@2LNI(>699F!l_h?eGVn56NT)W) zX(}UF(o_i;riU`xL7S6|pLCKje`s4Toc`T3lz^gcd1}ML8Vw<$I7+<~VpJET zQQ}n>oK;u{m6+YzGT48Li?R|THOxcffYvuJE=kd1H)&H7;UGCPFD`AN4a^Wppx}|1 z1eec?OJVPIFuOqJ#kJsC?03~5gX(#4X$xP$#JE|l4O>JV zeJ+N@Adl+J!iG}bP6uNzcmx!Sr_-K0e96Tc+dtr5dA9hp)Lx|(ryvY37p)>WXdEpm zHuK55_UOB`vr!fVwVL=w11fV6__zyWN~0$=a0WkNT=L00Ct9Rr4tSW35D-0z*+^KF z!51M2uCjk{{B%et$47Auc#mcF^6M1_H5Ml(zH9!4xe{{9;8L10W^8Fvok?rj>kTRq z=4-{3d=#OJ^C72&V_Nzy_{q%^3bC$$@Ih$#$^ba=d!Q|6_#zF6KMGY_#W zKDsgt^lL$G=F9#;_={jBvlHoob)Ag(NOIfhoTFQhemfwDqXd0_+bj~PGT9PU(o&#U zDeA{V6kySIvoWDPoDPQ_H(KU`&lX(n6#;*&{z$AX{wOon{>j;jXp1Ba70nT{BB_#+ zNM6cU46?{VyF~wu#yJdXDa5z7RkEXkA5(U}Lv|s@M}0{chW;V^3ZEcWYmS$k!??0@ zH)D48Ja_pPIMRn?XQ8rQ@jr_fS0M^@8FC?@6hWrT9Su5Vj}-1}0~~h%2W@~Wlmvf^ z(n-Tutk&p+wf$U_CgGXD(Gwh;c9t_EiAPIJhtwy!W7j-XSs3KI(ng8g_zmn`*jk>b zN+&u$Qt>0!W4*`6Q2k`Kr&ba2mjHXPB7OxPc@>IdSYEJ;+N0$Rhr%l>Ln1J~Bg(8) zJL3_>!%*6@0~7@DxMsk~TA-~_i!Xn<{G50$Tmz*Z(?`kEd0==TfQ5ZJC-7Mv7T=l< z$4O^McdAX;n#X$_GwO)ys+g$5G3_gwu;rtiuy^#BY6SpIxj+&#pi+hwJ4iy+n!=T* zMmyvSz}!*ix#4%QWs!PPutM3+dU?{0VgebY@gZLAeBW3d&d~$3PwG^vcG7z`s;tD_YN1wV1T>Fd;9x0u8npN zZqE02xA;yX(4E2IvHvk153zq}uk~QtJosg-Of720MTltB=JEWjud0O8!S-Tj`j>d^ zVuwHRLj1(LxsX*?U@Z6V-kBZDZd^OqKfE`e>>e)$$NRgLz*xG%8_o(Z?DWpOA)fA% zbRhtE4TpZ_6)pw&*a7)vM2i3SkIoVstjM^|=CI;F9yu_-jA-!}&I*68I943LcK;^X zH2+m{!!VW1Z+>REQ7)qLw>@Jig^jEIuR%~kV-QJ8QF!Fw5U^Zc!+!`Q8n6B5J@e7t>~Jxg(+dDbr@kb==)dKOD{EO7 zM<8bFkRoEq8>L14dqySk;+B67-SW(fJd-TcO5tiwn$0aSMuTbBixbjW8;n?!M=InV zxojALjHU)7Jcobm<_PfXfDx@a7(rnt!bANO6JOcAjR-0A=U)X8k~AWu7{Ph28Aj5G zkOm{@L(Dv*Nh3m*#9^OnhS6$7NW(B3hS6$7NP`hBMyw)2XpD&CEz3#4Co2TpFi##M znIf+-Y0^ms2ynT{n-}cZH&T^R3gwm4+iId)7vK`FNMwJ=5zGs3X#|nHKAspZ8(pAM z=r2zOs*ZX&L0n+VvMv}VG{unIIo50t6pPzoZBZV0tFxfI3*q{g6Yho;NJ06W9FAX$8@9tLGk<|69@0-UW&Jz&ST&xM$m8DKrl2lblaj7e&g7zfIv*jxxIQ0*_q+E zlsWytUt%bXhm|)j`n6}7e+{tX%?3NF3obTCm_e=Kl7)Q#eg*U(4>^xz-5vCjX@BT7 z5sjl!7t_`2*PGfIcHvakurlNp5oSIC6{2M7OD=zaR!-I_jq)`q(L^wqzW7;?OWJ(_ ztC%)cS?wog$~m^AQ^qE}1M(8aLfslF;iSiVplH#vNu9jZDzmL>tuNGgsC<71m3Wv4 z#QHwe;7RRi^)ApQp|A(cPON&LHQE~eWSl!o?Aj#hw&R}H&9)s+(H}2%bIn(pcV`v& zR-J#eX}BUqpQ`4O?J(Gz0)s(VkLZ%H#v5JjR;ee^Bk|f|et&Oqe?I%>?C#NQ?!aRS z3bHSUsj74_lpGX2vsa3z}UJ-uYMs-1VdQJQ;%4_EKHb^AXQaeHO(tNvr zKrG!piVXzx$U%jLJE#AW6}+PSG3SCkb!T32>+@OuuVM^pLjM%sr&xBT+3nYg!0W6cRxdxp-ya&s4g09Vv0ZJ#W2w3ociKEaEWmP=?*p$~q7&t|_X5raRq$hkE; zG!n=B+en_Z<6I+o)<X1^JdREZhQ39Y0q|8te9=X%u@c z5z--s-n6D}Mu=;Gzj_`6wJam#s_36f>}VQwZ(g8M(-@GA0eL=AQ)R6;V*GrtwH4(? zjBmpHxI|*SQN+%qh+U+#Ttb7@idbVnYH`rGE=|IGNq%At^P_QHZoYp9?PeWcmq_wd z^Q|)*kWsJKL(_bA6SE?m!Qla(0ciy@-7DePZa6pU6aimkq_BTDa}z%2OYq zl#j6UyT~45{?J=G$3cHL0sjeN&uI0}pgpoCWO?kTU1z&_p^9ua3{iF$e}b8uZ!^jb z06fGZRO>m60b*x*ywzE=HFecn^+_I6XLoNk61%Mo*Kk8jTn@E%_0$g~H^F~gCab9Apfd(m8e3eP zoS+XS(sX|2+EI6j9kBNIHNjk!#dSXFSizf8tr4x@M2~v$s5=;V^WH8_2l@r%vYLm7 z(IH6WlaVEq(mDkbzdb1z+LG_anIj+bF%;Pa>5MNU-4m&n&C8XOELADt_`^}l(l zi%#XMqY<>b$jX0j4HH-S>?GrOn2stF3(ph1$PzexOs%ZQSY8?p)V0gw3-z+kQFLVT zt&0nfl&HbZ0@lLpYp7#|M2QV25H;!<546≈4YeFT<$4}YnU{JwE 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

85RW>;{z!klUR$zxj(Cetpwv$t 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

T%UbWEMOOEYBC8ca$)P~Ot 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 delta 89213 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� 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 diff --git a/StructureHelper/Infrastructure/UI/Resources/ButtonStyles.xaml b/StructureHelper/Infrastructure/UI/Resources/ButtonStyles.xaml index c10ad2b..6cfab81 100644 --- a/StructureHelper/Infrastructure/UI/Resources/ButtonStyles.xaml +++ b/StructureHelper/Infrastructure/UI/Resources/ButtonStyles.xaml @@ -408,7 +408,26 @@ - + + + + + + + + + + + + + + + + + + + + @@ -416,7 +435,7 @@ - + @@ -424,7 +443,7 @@ - + diff --git a/StructureHelper/Infrastructure/ViewModelBase.cs b/StructureHelper/Infrastructure/ViewModelBase.cs index 0e9d025..3d29d79 100644 --- a/StructureHelper/Infrastructure/ViewModelBase.cs +++ b/StructureHelper/Infrastructure/ViewModelBase.cs @@ -1,11 +1,13 @@ using System.ComponentModel; using System.Runtime.CompilerServices; +using System.Windows; using StructureHelper.Properties; namespace StructureHelper.Infrastructure { public class ViewModelBase : INotifyPropertyChanged { + public Window OwnerWindow { get; set; } public event PropertyChangedEventHandler PropertyChanged; [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged(T value, T prop, [CallerMemberName] string propertyName = null) diff --git a/StructureHelper/StructureHelper.csproj.user b/StructureHelper/StructureHelper.csproj.user index 1a3452d..7acfc94 100644 --- a/StructureHelper/StructureHelper.csproj.user +++ b/StructureHelper/StructureHelper.csproj.user @@ -66,6 +66,9 @@ Code + + Code + Code @@ -167,6 +170,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 625265f..57d6976 100644 --- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/InteractionDiagramLogic.cs +++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/InteractionDiagramLogic.cs @@ -34,14 +34,14 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu private int stepCount; private static GeometryNames GeometryNames => ProgramSetting.GeometryNames; - public LimitCurveInputData InputData { get; set; } + public LimitCurvesCalculatorInputData InputData { get; set; } public int StepCount { get => stepCount; set => stepCount = value; } public Action SetProgress { get; set; } public bool Result { get; set; } public IShiftTraceLogger? TraceLogger { get; set; } - public InteractionDiagramLogic(LimitCurveInputData inputData) + public InteractionDiagramLogic(LimitCurvesCalculatorInputData inputData) { InputData = inputData; stepCount = InputData.PointCount; diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataViewModel.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataViewModel.cs index f994abb..2d9f1a0 100644 --- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataViewModel.cs +++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/LimitCurveDataViewModel.cs @@ -24,11 +24,11 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu { public class LimitCurveDataViewModel : OkCancelViewModelBase, IDataErrorInfo { - private LimitCurveInputData inputData; + private LimitCurvesCalculatorInputData inputData; //public SurroundDataViewModel SurroundDataViewModel { get; private set; } - public SurroundData SurroundData { get => inputData.SurroundData; } + public ISurroundData SurroundData { get => inputData.SurroundData; } public SelectPrimitivesSourceTarget PrimitiveSeries { get; private set; } public SelectItemsVM PredicateItems { get; private set; } public SelectItemsVM LimitStateItems { get; private set; } @@ -52,7 +52,7 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu public IEnumerable AllowedPrimitives { get; set; } - public LimitCurveDataViewModel(LimitCurveInputData inputData, IEnumerable allowedPrimitives) + public LimitCurveDataViewModel(LimitCurvesCalculatorInputData inputData, IEnumerable allowedPrimitives) { this.inputData = inputData; AllowedPrimitives = allowedPrimitives; diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml index 567bd2d..16895d2 100644 --- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml +++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml @@ -140,13 +140,13 @@ - + - + diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsViewModel.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsViewModel.cs index 81883fe..cbb5c24 100644 --- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsViewModel.cs +++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsViewModel.cs @@ -89,7 +89,7 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu private void ShowInteractionDiagram() { - var inputData = new LimitCurveInputData(ndmPrimitives); + var inputData = new LimitCurvesCalculatorInputData(ndmPrimitives); var vm = new LimitCurveDataViewModel(inputData, ndmPrimitives); //vm.LimitStateItems.SetIsSelected(); //vm.CalcTermITems.SetIsSelected(); @@ -106,7 +106,7 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu ShowInteractionDiagramByInputData(inputData); } - private void ShowInteractionDiagramByInputData(LimitCurveInputData inputData) + private void ShowInteractionDiagramByInputData(LimitCurvesCalculatorInputData inputData) { interactionDiagramLogic = new(inputData); showProgressLogic = new(interactionDiagramLogic) diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/SurroundDataViewModel.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/SurroundDataViewModel.cs index 15fbb13..9d3f718 100644 --- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/SurroundDataViewModel.cs +++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/UserControls/SurroundDataViewModel.cs @@ -23,7 +23,7 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu const string MomentUnitString = "kNm"; static IConvertUnitLogic operationLogic = new ConvertUnitLogic(); static IGetUnitLogic unitLogic = new GetUnitLogic(); - public SurroundData SurroundData + public ISurroundData SurroundData { get => surroundData; set { @@ -50,7 +50,7 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu private static IUnit unitForce = unitLogic.GetUnit(UnitTypes.Force, ForceUnitString); private static IUnit unitMoment = unitLogic.GetUnit(UnitTypes.Moment, MomentUnitString); - private SurroundData surroundData; + private ISurroundData surroundData; public IValueConverter ForceConverter { get => new Force(); } public IValueConverter MomentConverter { get => new Moment();} @@ -183,7 +183,7 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu } } - public SurroundDataViewModel(SurroundData surroundData) + public SurroundDataViewModel(ISurroundData surroundData) { this.SurroundData = surroundData; Logics = new(); diff --git a/StructureHelper/Windows/MainWindow/Analyses/AnalysesLogic.cs b/StructureHelper/Windows/MainWindow/Analyses/AnalysesLogic.cs index c7ab311..1c32ff5 100644 --- a/StructureHelper/Windows/MainWindow/Analyses/AnalysesLogic.cs +++ b/StructureHelper/Windows/MainWindow/Analyses/AnalysesLogic.cs @@ -22,6 +22,8 @@ namespace StructureHelper.Windows.MainWindow private RelayCommand? runCommand; private RelayCommand? editCommand; private RelayCommand? deleteCommand; + private RelayCommand? copyCommand; + private RelayCommand versionsCommand; public IVisualAnalysis? SelectedAnalysis { get; set; } @@ -74,6 +76,56 @@ namespace StructureHelper.Windows.MainWindow } } + public RelayCommand CopyCommand + { + get + { + return copyCommand ??= new RelayCommand(obj => + { + CopyCurrentAnalysis(); + }, + b => SelectedAnalysis is not null); + } + } + + public RelayCommand VersionsCommand + { + get + { + return versionsCommand ??= new RelayCommand(obj => + { + ShowVersions(); + }, + b => SelectedAnalysis is not null); + } + } + + private void ShowVersions() + { + if (SelectedAnalysis is null) { return; } + try + { + VersionsViewModel viewModel = new(SelectedAnalysis.Analysis.VersionProcessor); + var wnd = new VersionsView(viewModel); + wnd.ShowDialog(); + } + catch (Exception ex) + { + // to do + } + } + + private void CopyCurrentAnalysis() + { + if (SelectedAnalysis is not null) + { + var newAnalysis = SelectedAnalysis.Clone() as IVisualAnalysis; + newAnalysis.Analysis.Name += " - copy"; + ProgramSetting.CurrentProject.VisualAnalyses.Add(newAnalysis); + Refresh(); + SelectedAnalysis = newAnalysis; + } + } public AnalysesLogic() { diff --git a/StructureHelper/Windows/MainWindow/Analyses/VersionsView.xaml b/StructureHelper/Windows/MainWindow/Analyses/VersionsView.xaml new file mode 100644 index 0000000..545e271 --- /dev/null +++ b/StructureHelper/Windows/MainWindow/Analyses/VersionsView.xaml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/StructureHelper/Windows/MainWindow/Analyses/VersionsView.xaml.cs b/StructureHelper/Windows/MainWindow/Analyses/VersionsView.xaml.cs new file mode 100644 index 0000000..2b1f227 --- /dev/null +++ b/StructureHelper/Windows/MainWindow/Analyses/VersionsView.xaml.cs @@ -0,0 +1,40 @@ +using StructureHelperCommon.Models.Analyses; +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.MainWindow.Analyses +{ + ///

+ /// Interaction logic for VersionsView.xaml + /// + public partial class VersionsView : Window + { + VersionsViewModel viewModel; + public VersionsView(VersionsViewModel viewModel) + { + InitializeComponent(); + this.viewModel = viewModel; + DataContext = this.viewModel; + if (this.viewModel.OwnerWindow is not null) + { + Owner = this.viewModel.OwnerWindow; + } + } + + public VersionsView(IVersionProcessor versionProcessor) : this (new VersionsViewModel(versionProcessor)) + { + + } + } +} diff --git a/StructureHelper/Windows/MainWindow/Analyses/VersionsViewModel.cs b/StructureHelper/Windows/MainWindow/Analyses/VersionsViewModel.cs new file mode 100644 index 0000000..19c7a22 --- /dev/null +++ b/StructureHelper/Windows/MainWindow/Analyses/VersionsViewModel.cs @@ -0,0 +1,103 @@ +using StructureHelper.Infrastructure; +using StructureHelper.Windows.ViewModels; +using StructureHelperCommon.Infrastructures.Interfaces; +using StructureHelperCommon.Models.Analyses; +using StructureHelperCommon.Models.Calculators; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window; +using System.Windows; +using StructureHelper.Windows.ViewModels.Errors; + +namespace StructureHelper.Windows.MainWindow.Analyses +{ + public class VersionsViewModel : ViewModelBase + { + private IVersionProcessor versionProcessor; + private RelayCommand addNewVersionCommand; + private RelayCommand returnToVersionCommand; + + public VersionsViewModel(IVersionProcessor versionProcessor) + { + this.versionProcessor = versionProcessor; + Refresh(); + } + + public IDateVersion SelectedVersion { get; set; } + public ObservableCollection DateVersions { get; set; } = new(); + + public RelayCommand AddNewVersionCommand + { + get + { + return addNewVersionCommand ??= new RelayCommand(obj => + { + AddNewVersion(); + }, + b => SelectedVersion is not null); + } + } + + public RelayCommand ReturnToVersionCommand + { + get + { + return returnToVersionCommand ??= new RelayCommand(obj => + { + ReturnToVersion(); + }, + b => SelectedVersion is not null); + } + } + + private void ReturnToVersion() + { + if (SelectedVersion is null) return; + if (versionProcessor.Versions.Count <= 1) + { + MessageBox.Show("It is not possible to delete last version", "There is only 1 version", MessageBoxButton.OK, MessageBoxImage.Warning, MessageBoxResult.OK); + return; + } + MessageBoxResult result = MessageBox.Show("Please, confirm deleting", "Delete version(s)?", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel); + if (result != MessageBoxResult.OK) { return; } + SafetyProcessor.RunSafeProcess(RemovingOfVersion, "Error of deleting of version"); + } + + private void RemovingOfVersion() + { + while (SelectedVersion != versionProcessor.GetCurrentVersion()) + { + versionProcessor + .Versions + .Remove(versionProcessor.GetCurrentVersion()); + } + Refresh(); + } + + private void AddNewVersion() + { + if (SelectedVersion is null) { return; } + SafetyProcessor.RunSafeProcess(AddVersion, "Error of adding of new version"); + } + + private void AddVersion() + { + var selectedItem = SelectedVersion.AnalysisVersion as ICloneable; + versionProcessor.AddVersion(selectedItem.Clone() as ISaveable); + Refresh(); + } + + private void Refresh() + { + DateVersions.Clear(); + versionProcessor.Versions.ForEach(x => DateVersions.Add(x)); + SelectedVersion = DateVersions[^1]; + } + + } +} diff --git a/StructureHelper/Windows/MainWindow/AnalysesManagerView.xaml b/StructureHelper/Windows/MainWindow/AnalysesManagerView.xaml index c5a0fcb..b99eb5b 100644 --- a/StructureHelper/Windows/MainWindow/AnalysesManagerView.xaml +++ b/StructureHelper/Windows/MainWindow/AnalysesManagerView.xaml @@ -21,13 +21,23 @@ + + + + + diff --git a/StructureHelper/Windows/ViewModels/Errors/SafetyProcessor.cs b/StructureHelper/Windows/ViewModels/Errors/SafetyProcessor.cs index 2ca2e56..50d55e0 100644 --- a/StructureHelper/Windows/ViewModels/Errors/SafetyProcessor.cs +++ b/StructureHelper/Windows/ViewModels/Errors/SafetyProcessor.cs @@ -8,8 +8,16 @@ using System.Threading.Tasks; namespace StructureHelper.Windows.ViewModels.Errors { + /// + /// Provides safety runing of some action + /// internal static class SafetyProcessor { + /// + /// Invokes action and wrap it in safety try-catch block + /// + /// Action wich will be invoked + /// Short text of error public static void RunSafeProcess(Action action, string shortText = "") { try diff --git a/StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisViewModelLogic.cs b/StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisViewModelLogic.cs index 5bffae7..36a059b 100644 --- a/StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisViewModelLogic.cs +++ b/StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisViewModelLogic.cs @@ -71,7 +71,7 @@ namespace StructureHelper.Windows.ViewModels.NdmCrossSections private void AddLimitCurveCalculator() { - var inputData = new LimitCurveInputData(repository.Primitives); + var inputData = new LimitCurvesCalculatorInputData(repository.Primitives); NewItem = new LimitCurvesCalculator() { Name = "New interaction diagram calculator", diff --git a/StructureHelperCommon/Infrastructures/Interfaces/DeepCloningStrategy.cs b/StructureHelperCommon/Infrastructures/Interfaces/DeepCloningStrategy.cs new file mode 100644 index 0000000..e416f0e --- /dev/null +++ b/StructureHelperCommon/Infrastructures/Interfaces/DeepCloningStrategy.cs @@ -0,0 +1,60 @@ +using StructureHelperCommon.Infrastructures.Exceptions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelperCommon.Infrastructures.Interfaces +{ + public class DeepCloningStrategy : ICloningStrategy + { + private readonly Dictionary _clonedObjects = new Dictionary(); + + public T Clone(T original, ICloneStrategy? cloneStrategy = null) where T : class + { + if (original == null) return null; + + // Check if the object is already cloned + if (_clonedObjects.TryGetValue(original, out var existingClone)) + return (T)existingClone; + + // Perform custom cloning logic based on the object's type + T clone; + if (cloneStrategy is not null) + { + clone = cloneStrategy.GetClone(original); + } + // Check if the object implements ICloneable (or IClone) and use that method + else if (original is ICloneable cloneable) + { + clone = cloneable.Clone() as T; // Use the ICloneable interface's Clone method + } + else + { + throw new StructureHelperException(ErrorStrings.DataIsInCorrect + ": object is not IClonable and cloning strategy is null"); + + } + _clonedObjects[original] = clone; + + return clone; + } + + //private T CreateClone(T original) where T : class + //{ + // // Example logic for creating a clone (modify as needed for your use case) + // var type = original.GetType(); + // var clone = Activator.CreateInstance(type); + + // foreach (var field in type.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)) + // { + // var value = field.GetValue(original); + // field.SetValue(clone, Clone(value)); + // } + + // return (T)clone; + //} + } + +} diff --git a/StructureHelperCommon/Infrastructures/Interfaces/ICloneStrategy.cs b/StructureHelperCommon/Infrastructures/Interfaces/ICloneStrategy.cs new file mode 100644 index 0000000..acb4a5c --- /dev/null +++ b/StructureHelperCommon/Infrastructures/Interfaces/ICloneStrategy.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelperCommon.Infrastructures.Interfaces +{ + /// + /// Creates deep clone of object + /// + /// + public interface ICloneStrategy + { + /// + /// Returns deep clone of object + /// + /// + /// + T GetClone(T sourceObject); + } +} diff --git a/StructureHelperCommon/Infrastructures/Interfaces/ICloningStrategy.cs b/StructureHelperCommon/Infrastructures/Interfaces/ICloningStrategy.cs new file mode 100644 index 0000000..a1f9dd0 --- /dev/null +++ b/StructureHelperCommon/Infrastructures/Interfaces/ICloningStrategy.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelperCommon.Infrastructures.Interfaces +{ + public interface ICloningStrategy + { + T Clone(T original, ICloneStrategy? cloneStrategy = null) where T : class; + } +} diff --git a/StructureHelperCommon/Models/Analyses/AnalysisUpdateStrategy.cs b/StructureHelperCommon/Models/Analyses/AnalysisUpdateStrategy.cs index dd7ee82..bfca454 100644 --- a/StructureHelperCommon/Models/Analyses/AnalysisUpdateStrategy.cs +++ b/StructureHelperCommon/Models/Analyses/AnalysisUpdateStrategy.cs @@ -16,6 +16,9 @@ namespace StructureHelperCommon.Models.Analyses if (ReferenceEquals(targetObject, sourceObject)) { return; } targetObject.Name = sourceObject.Name; targetObject.Tags = sourceObject.Tags; + targetObject.Comment = sourceObject.Comment; + targetObject.Color = sourceObject.Color; + } } } diff --git a/StructureHelperCommon/Models/Analyses/IAnalysis.cs b/StructureHelperCommon/Models/Analyses/IAnalysis.cs index eee4d36..fbbdc55 100644 --- a/StructureHelperCommon/Models/Analyses/IAnalysis.cs +++ b/StructureHelperCommon/Models/Analyses/IAnalysis.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows.Media; namespace StructureHelperCommon.Models.Analyses { @@ -11,6 +12,8 @@ namespace StructureHelperCommon.Models.Analyses { string Name { get; set; } string Tags { get; set; } + string Comment { get; set; } + Color Color { get; set; } IVersionProcessor VersionProcessor { get; set; } } } diff --git a/StructureHelperLogics/Models/Analyses/CrossSectionNdmAnalysis.cs b/StructureHelperLogics/Models/Analyses/CrossSectionNdmAnalysis.cs index 7d65ed4..62ac0bc 100644 --- a/StructureHelperLogics/Models/Analyses/CrossSectionNdmAnalysis.cs +++ b/StructureHelperLogics/Models/Analyses/CrossSectionNdmAnalysis.cs @@ -1,6 +1,8 @@ -using StructureHelperCommon.Models.Analyses; +using StructureHelperCommon.Infrastructures.Interfaces; +using StructureHelperCommon.Models.Analyses; using StructureHelperLogics.Models.Analyses; using StructureHelperLogics.Models.CrossSections; +using System.Windows.Media; namespace StructureHelperLogic.Models.Analyses { @@ -11,6 +13,8 @@ namespace StructureHelperLogic.Models.Analyses public string Name { get; set; } public string Tags { get; set; } public IVersionProcessor VersionProcessor { get; set; } + public string Comment { get; set; } = string.Empty; + public Color Color { get; set; } = Color.FromRgb(128, 0, 0); public CrossSectionNdmAnalysis(Guid id, IVersionProcessor versionProcessor) { @@ -33,6 +37,10 @@ namespace StructureHelperLogic.Models.Analyses { CrossSectionNdmAnalysis newAnalysis = new(); updateStrategy.Update(newAnalysis, this); + var currentVersion = VersionProcessor.GetCurrentVersion().AnalysisVersion as ICloneable; + ISaveable newCrossSection = currentVersion.Clone() as ISaveable; + newAnalysis.VersionProcessor.Versions.Clear(); + newAnalysis.VersionProcessor.AddVersion(newCrossSection); return newAnalysis; } } diff --git a/StructureHelperLogics/Models/CrossSections/CrossSection.cs b/StructureHelperLogics/Models/CrossSections/CrossSection.cs index e32ed17..a963b58 100644 --- a/StructureHelperLogics/Models/CrossSections/CrossSection.cs +++ b/StructureHelperLogics/Models/CrossSections/CrossSection.cs @@ -1,4 +1,5 @@ -using System; +using StructureHelperCommon.Infrastructures.Interfaces; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -8,6 +9,7 @@ namespace StructureHelperLogics.Models.CrossSections { public class CrossSection : ICrossSection { + private ICloneStrategy cloneStrategy = new CrossSectionCloneStrategy(); public ICrossSectionRepository SectionRepository { get; set; } = new CrossSectionRepository(); public Guid Id { get; private set; } @@ -24,7 +26,7 @@ namespace StructureHelperLogics.Models.CrossSections public object Clone() { - throw new NotImplementedException(); + return cloneStrategy.GetClone(this); } } } diff --git a/StructureHelperLogics/Models/CrossSections/CrossSectionCloneStrategy.cs b/StructureHelperLogics/Models/CrossSections/CrossSectionCloneStrategy.cs new file mode 100644 index 0000000..b91ddbd --- /dev/null +++ b/StructureHelperLogics/Models/CrossSections/CrossSectionCloneStrategy.cs @@ -0,0 +1,30 @@ +using StructureHelperCommon.Infrastructures.Interfaces; + +namespace StructureHelperLogics.Models.CrossSections +{ + public class CrossSectionCloneStrategy : ICloneStrategy + { + private ICloneStrategy repositoryCloneStrategy; + private CrossSection targetObject; + + public CrossSectionCloneStrategy(ICloneStrategy repositoryCloneStrategy) + { + this.repositoryCloneStrategy = repositoryCloneStrategy; + } + + public CrossSectionCloneStrategy() : this (new CrossSectionRepositoryCloneStrategy()) + { + + } + + public ICrossSection GetClone(ICrossSection sourceObject) + { + ICrossSectionRepository newRepository = repositoryCloneStrategy.GetClone(sourceObject.SectionRepository); + targetObject = new() + { + SectionRepository = newRepository + }; + return targetObject; + } + } +} diff --git a/StructureHelperLogics/Models/CrossSections/CrossSectionRepositoryCloneStrategy.cs b/StructureHelperLogics/Models/CrossSections/CrossSectionRepositoryCloneStrategy.cs new file mode 100644 index 0000000..5ba37f7 --- /dev/null +++ b/StructureHelperLogics/Models/CrossSections/CrossSectionRepositoryCloneStrategy.cs @@ -0,0 +1,142 @@ +using StructureHelperCommon.Infrastructures.Exceptions; +using StructureHelperCommon.Infrastructures.Interfaces; +using StructureHelperCommon.Models.Calculators; +using StructureHelperCommon.Models.Parameters; +using StructureHelperLogics.Models.Materials; +using StructureHelperLogics.NdmCalculations.Analyses.ByForces; +using StructureHelperLogics.NdmCalculations.Analyses.ByForces.LimitCurve; +using StructureHelperLogics.NdmCalculations.Cracking; +using StructureHelperLogics.NdmCalculations.Primitives; + +namespace StructureHelperLogics.Models.CrossSections +{ + public class CrossSectionRepositoryCloneStrategy : ICloneStrategy + { + private ICloningStrategy cloningStrategy; + private CrossSectionRepository targetRepository; + private IUpdateStrategy limitCurvesInputDataUpdateStrategy; + + public CrossSectionRepositoryCloneStrategy( + ICloningStrategy cloningStrategy, + IUpdateStrategy limitCurvesInputDataUpdateStrategy) + { + this.cloningStrategy = cloningStrategy; + this.limitCurvesInputDataUpdateStrategy = limitCurvesInputDataUpdateStrategy; + } + + public CrossSectionRepositoryCloneStrategy() : this ( + new DeepCloningStrategy(), + new LimitCurvesCalculatorInputDataUpdateStrategy()) + { + + } + + public ICrossSectionRepository GetClone(ICrossSectionRepository sourceObject) + { + targetRepository = new(); + ProcessForces(targetRepository, sourceObject); + ProcessMaterials(targetRepository, sourceObject); + ProcessPrimitives(targetRepository, sourceObject); + ProcessCalculators(targetRepository, sourceObject); + return targetRepository; + } + + private void ProcessCalculators(IHasCalculators targetObject, IHasCalculators sourceObject) + { + targetObject.Calculators.Clear(); + foreach (var calculator in sourceObject.Calculators) + { + var newCalculator = cloningStrategy.Clone(calculator); + if (calculator is IForceCalculator forceCalculator) + { + ProcessForceCalculator(newCalculator, forceCalculator); + } + else if (calculator is CrackCalculator crackCalculator) + { + ProcessCrackCalculator(newCalculator, crackCalculator); + } + else if (calculator is ILimitCurvesCalculator limitCalculator) + { + ProcessLimitCurvesCalculator(newCalculator, limitCalculator); + } + else + { + throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(calculator)); + } + targetRepository.Calculators.Add(newCalculator); + } + } + + private void ProcessLimitCurvesCalculator(ICalculator newCalculator, ILimitCurvesCalculator limitCalculator) + { + var sourceData = limitCalculator.InputData; + var targetData = ((ILimitCurvesCalculator)newCalculator).InputData; + limitCurvesInputDataUpdateStrategy.Update(targetData, sourceData); + foreach (var series in targetData.PrimitiveSeries) + { + List collection = UpdatePrimitivesCollection(series); + series.Collection.AddRange(collection); + } + } + + private void ProcessCrackCalculator(ICalculator newCalculator, CrackCalculator crackCalculator) + { + var sourceData = crackCalculator.InputData; + var targetData = ((ICrackCalculator)newCalculator).InputData; + ProcessPrimitives(targetData, sourceData); + ProcessForces(targetData, sourceData); + } + + private void ProcessForceCalculator(ICalculator newCalculator, IForceCalculator forceCalculator) + { + var sourceData = forceCalculator.InputData; + var targetData = ((IForceCalculator)newCalculator).InputData; + ProcessPrimitives(targetData, sourceData); + ProcessForces(targetData, sourceData); + } + + private List UpdatePrimitivesCollection(NamedCollection series) + { + List collection = new(); + foreach (var item in series.Collection) + { + var newItem = cloningStrategy.Clone(item); + collection.Add(newItem); + } + series.Collection.Clear(); + return collection; + } + + private void ProcessMaterials(IHasHeadMaterials targetObject, IHasHeadMaterials sourceObject) + { + targetObject.HeadMaterials.Clear(); + foreach (var material in sourceObject.HeadMaterials) + { + var newMaterial = cloningStrategy.Clone(material); + targetRepository.HeadMaterials.Add(newMaterial); + } + } + + private void ProcessForces(IHasForceActions targetObject, IHasForceActions sourceObject) + { + targetObject.ForceActions.Clear(); + foreach (var force in sourceObject.ForceActions) + { + var newForce = cloningStrategy.Clone(force); + targetObject.ForceActions.Add(newForce); + } + } + + private void ProcessPrimitives(IHasPrimitives targetObject, IHasPrimitives sourceObject) + { + targetObject.Primitives.Clear(); + foreach (var primitive in sourceObject.Primitives) + { + var newPrimitive = cloningStrategy.Clone(primitive); + var material = cloningStrategy.Clone(primitive.NdmElement.HeadMaterial); + newPrimitive.NdmElement.HeadMaterial = material; + targetObject.Primitives.Add(newPrimitive); + } + } + } +} diff --git a/StructureHelperLogics/Models/Materials/Logics/HeadMaterialBaseUpdateStrategy.cs b/StructureHelperLogics/Models/Materials/Logics/HeadMaterialBaseUpdateStrategy.cs index 6a69959..777f396 100644 --- a/StructureHelperLogics/Models/Materials/Logics/HeadMaterialBaseUpdateStrategy.cs +++ b/StructureHelperLogics/Models/Materials/Logics/HeadMaterialBaseUpdateStrategy.cs @@ -1,11 +1,6 @@ using StructureHelper.Models.Materials; using StructureHelperCommon.Infrastructures.Interfaces; using StructureHelperCommon.Services; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace StructureHelperLogics.Models.Materials { diff --git a/StructureHelperLogics/Models/Materials/Logics/HeadMaterialUpdateStrategy.cs b/StructureHelperLogics/Models/Materials/Logics/HeadMaterialUpdateStrategy.cs index 1964408..a7ca8b4 100644 --- a/StructureHelperLogics/Models/Materials/Logics/HeadMaterialUpdateStrategy.cs +++ b/StructureHelperLogics/Models/Materials/Logics/HeadMaterialUpdateStrategy.cs @@ -6,21 +6,29 @@ namespace StructureHelperLogics.Models.Materials { public class HeadMaterialUpdateStrategy : IUpdateStrategy { - private IUpdateStrategy updateStrategy = new HeadMaterialBaseUpdateStrategy(); + private IUpdateStrategy baseUpdateStrategy; private IUpdateStrategy helperMaterialUpdateStrategy; - public HeadMaterialUpdateStrategy(IUpdateStrategy helperMaterialUpdateStrategy) + public HeadMaterialUpdateStrategy( + IUpdateStrategy baseUpdateStrategy, + IUpdateStrategy helperMaterialUpdateStrategy) { + this.baseUpdateStrategy = baseUpdateStrategy; this.helperMaterialUpdateStrategy = helperMaterialUpdateStrategy; } - public HeadMaterialUpdateStrategy() : this(new HelperMaterialUpdateStrategy()) { } + public HeadMaterialUpdateStrategy() : this( + new HeadMaterialBaseUpdateStrategy(), + new HelperMaterialUpdateStrategy()) + { + + } public void Update(IHeadMaterial targetObject, IHeadMaterial sourceObject) { CheckObject.IsNull(sourceObject); CheckObject.IsNull(targetObject); if (ReferenceEquals(targetObject, sourceObject)) { return; } - updateStrategy.Update(targetObject, sourceObject); + baseUpdateStrategy.Update(targetObject, sourceObject); targetObject.HelperMaterial = sourceObject.HelperMaterial.Clone() as IHelperMaterial; helperMaterialUpdateStrategy.Update(targetObject.HelperMaterial, sourceObject.HelperMaterial); } diff --git a/StructureHelperLogics/Models/Materials/Logics/HelperMaterialUpdateStrategy.cs b/StructureHelperLogics/Models/Materials/Logics/HelperMaterialUpdateStrategy.cs index 6cf10f6..e688fce 100644 --- a/StructureHelperLogics/Models/Materials/Logics/HelperMaterialUpdateStrategy.cs +++ b/StructureHelperLogics/Models/Materials/Logics/HelperMaterialUpdateStrategy.cs @@ -63,13 +63,13 @@ namespace StructureHelperLogics.Models.Materials private void UpdateLibMaterial(IHelperMaterial targetObject, IHelperMaterial sourceObject) { - if (sourceObject is IConcreteLibMaterial) + if (sourceObject is IConcreteLibMaterial concreteLibMaterial) { - concreteStrategy.Update(targetObject as IConcreteLibMaterial, sourceObject as IConcreteLibMaterial); + concreteStrategy.Update(targetObject as IConcreteLibMaterial, concreteLibMaterial); } - else if (sourceObject is IReinforcementLibMaterial) + else if (sourceObject is IReinforcementLibMaterial reinforcementLibMaterial) { - reinforcementStrategy.Update(targetObject as IReinforcementLibMaterial, sourceObject as IReinforcementLibMaterial); + reinforcementStrategy.Update(targetObject as IReinforcementLibMaterial, reinforcementLibMaterial); } else { diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceCalculator.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceCalculator.cs index 0c428fd..8c457a3 100644 --- a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceCalculator.cs +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceCalculator.cs @@ -8,6 +8,9 @@ using System.Threading.Tasks; namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces { + /// + /// Provides calculations of ndm primitives for force actions + /// public interface IForceCalculator : ICalculator, IHasActionByResult { IForceCalculatorInputData InputData { get; set; } diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ILimitCurveCalculator.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ILimitCurveCalculator.cs index c731812..645dd7d 100644 --- a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ILimitCurveCalculator.cs +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ILimitCurveCalculator.cs @@ -5,7 +5,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces public interface ILimitCurveCalculator : ICalculator, IHasActionByResult { Action ActionToOutputResults { get; set; } - SurroundData SurroundData { get; set; } + ISurroundData SurroundData { get; set; } int PointCount { get; set; } ISurroundProc SurroundProcLogic { get; set; } } diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ILimitCurvesCalculator.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ILimitCurvesCalculator.cs new file mode 100644 index 0000000..26366d6 --- /dev/null +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ILimitCurvesCalculator.cs @@ -0,0 +1,12 @@ +using StructureHelperCommon.Infrastructures.Interfaces; +using StructureHelperCommon.Models; +using StructureHelperCommon.Models.Calculators; + +namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces +{ + public interface ILimitCurvesCalculator : ISaveable, ICalculator, IHasActionByResult + { + LimitCurvesCalculatorInputData InputData { get; set; } + string Name { get; set; } + } +} \ No newline at end of file diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ILimitCurvesCalculatorInputData.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ILimitCurvesCalculatorInputData.cs new file mode 100644 index 0000000..be6177b --- /dev/null +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ILimitCurvesCalculatorInputData.cs @@ -0,0 +1,17 @@ +using StructureHelperCommon.Infrastructures.Enums; +using StructureHelperCommon.Models.Calculators; +using StructureHelperCommon.Models.Parameters; +using StructureHelperLogics.NdmCalculations.Primitives; + +namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces +{ + public interface ILimitCurvesCalculatorInputData : IInputData, ICloneable + { + List CalcTerms { get; } + List LimitStates { get; } + int PointCount { get; set; } + List PredicateEntries { get; } + List> PrimitiveSeries { get; } + ISurroundData SurroundData { get; set; } + } +} \ No newline at end of file diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ISurroundData.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ISurroundData.cs new file mode 100644 index 0000000..5237863 --- /dev/null +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ISurroundData.cs @@ -0,0 +1,14 @@ +using StructureHelperCommon.Models.Shapes; + +namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces +{ + public interface ISurroundData : ICloneable + { + double ConstZ { get; set; } + ConstOneDirectionConverter ConvertLogicEntity { get; set; } + double XMax { get; set; } + double XMin { get; set; } + double YMax { get; set; } + double YMin { get; set; } + } +} \ No newline at end of file diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ISurroundProc.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ISurroundProc.cs index b6e48d9..511e919 100644 --- a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ISurroundProc.cs +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/ISurroundProc.cs @@ -9,7 +9,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces { public interface ISurroundProc { - SurroundData SurroundData { get; set; } + ISurroundData SurroundData { get; set; } int PointCount { get; set; } List GetPoints(); } diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurveCalculator.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurveCalculator.cs index 4c24953..c5d79e7 100644 --- a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurveCalculator.cs +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurveCalculator.cs @@ -13,7 +13,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces private ILimitCurveLogic limitCurveLogic; public string Name { get; set; } - public SurroundData SurroundData { get; set; } + public ISurroundData SurroundData { get; set; } public int PointCount { get; set; } public ISurroundProc SurroundProcLogic { get; set; } @@ -27,7 +27,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces public LimitCurveCalculator(ILimitCurveLogic limitCurveLogic) { this.limitCurveLogic = limitCurveLogic; - SurroundData = new(); + SurroundData = new SurroundData(); SurroundProcLogic = new RectSurroundProc(); } diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurveInputData.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurveInputData.cs deleted file mode 100644 index 1fd851c..0000000 --- a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurveInputData.cs +++ /dev/null @@ -1,73 +0,0 @@ -using StructureHelperCommon.Infrastructures.Enums; -using StructureHelperCommon.Infrastructures.Settings; -using StructureHelperCommon.Models.Calculators; -using StructureHelperCommon.Models.Forces; -using StructureHelperCommon.Models.Parameters; -using StructureHelperCommon.Models.Shapes; -using StructureHelperLogics.NdmCalculations.Primitives; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -//Copyright (c) 2023 Redikultsev Evgeny, Ekaterinburg, Russia -//All rights reserved. - -namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces -{ - public class LimitCurveInputData : IInputData, ICloneable - { - public List LimitStates { get; private set; } - public List CalcTerms { get; private set; } - public List> PrimitiveSeries {get; private set; } - public List PredicateEntries { get; private set; } - public SurroundData SurroundData { get; set; } - public int PointCount { get; set; } - public LimitCurveInputData() - { - LimitStates = new(); - CalcTerms = new(); - PredicateEntries = new(); - SurroundData = new(); - PointCount = 80; - PrimitiveSeries = new List>(); - } - public LimitCurveInputData(IEnumerable primitives) : this() - { - PrimitiveSeries.Add - (new NamedCollection() - { - Name = "V1", - Collection = primitives.ToList() - } - ); - } - - public object Clone() - { - var newItem = new LimitCurveInputData() - { - LimitStates = LimitStates.ToList(), - CalcTerms = CalcTerms.ToList(), - PredicateEntries = PredicateEntries.ToList(), - SurroundData = SurroundData.Clone() as SurroundData, - PointCount = PointCount - }; - foreach (var item in PrimitiveSeries) - { - var collection = item.Collection.ToList(); - newItem.PrimitiveSeries.Add - ( - new NamedCollection() - { - Name = item.Name, - Collection = collection - } - ); - } - return newItem; - - } - } -} diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculator.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculator.cs index 25a6e35..8bfd38f 100644 --- a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculator.cs +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculator.cs @@ -11,7 +11,7 @@ using StructureHelperLogics.Services.NdmPrimitives; namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces { - public class LimitCurvesCalculator : ISaveable, ICalculator, IHasActionByResult + public class LimitCurvesCalculator : ILimitCurvesCalculator { private LimitCurvesResult result; private int curvesIterationCount; @@ -21,7 +21,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces public Guid Id { get; } public string Name { get; set; } - public LimitCurveInputData InputData { get; set; } + public LimitCurvesCalculatorInputData InputData { get; set; } public IResult Result => result; public Action ActionToOutputResults { get; set; } @@ -89,7 +89,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces }; var ndms = triangulateLogic.GetNdms(); TraceLogger?.AddMessage($"Number of elementary parts N={ndms.Count()} were obtainded successfully"); - TraceLogger?.AddMessage($"Summary area of elementary parts Asum={ndms.Sum(x=>x.Area * x.StressScale)}", TraceLogStatuses.Debug); + TraceLogger?.AddMessage($"Summary area of elementary parts Asum={ndms.Sum(x => x.Area * x.StressScale)}", TraceLogStatuses.Debug); foreach (var predicateEntry in InputData.PredicateEntries) { string calcName = $"{primitiveSeries.Name}_{predicateEntry.Name}_{limitState}_{calcTerm}"; diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculatorInputData.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculatorInputData.cs new file mode 100644 index 0000000..22b087b --- /dev/null +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculatorInputData.cs @@ -0,0 +1,51 @@ +using StructureHelperCommon.Infrastructures.Enums; +using StructureHelperCommon.Infrastructures.Interfaces; +using StructureHelperCommon.Infrastructures.Settings; +using StructureHelperCommon.Models.Calculators; +using StructureHelperCommon.Models.Forces; +using StructureHelperCommon.Models.Parameters; +using StructureHelperCommon.Models.Shapes; +using StructureHelperLogics.NdmCalculations.Analyses.ByForces.LimitCurve; +using StructureHelperLogics.NdmCalculations.Primitives; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +//Copyright (c) 2023 Redikultsev Evgeny, Ekaterinburg, Russia +//All rights reserved. + +namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces +{ + public class LimitCurvesCalculatorInputData : ILimitCurvesCalculatorInputData + { + private ICloneStrategy cloneStrategy = new LimitCurvesCalculatorInputDataCloneStrategy(); + public List LimitStates { get; private set; } = new(); + public List CalcTerms { get; private set; } = new(); + public List> PrimitiveSeries { get; private set; } = new(); + public List PredicateEntries { get; private set; } = new(); + public ISurroundData SurroundData { get; set; } = new SurroundData(); + public int PointCount { get; set; } = 80; + public LimitCurvesCalculatorInputData() + { + } + public LimitCurvesCalculatorInputData(IEnumerable primitives) + { + PrimitiveSeries.Add + (new NamedCollection() + { + Name = "V1", + Collection = primitives.ToList() + } + ); + } + + public object Clone() + { + var newItem = cloneStrategy.GetClone(this); + return newItem; + + } + } +} diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculatorInputDataCloneStrategy.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculatorInputDataCloneStrategy.cs new file mode 100644 index 0000000..ed94434 --- /dev/null +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculatorInputDataCloneStrategy.cs @@ -0,0 +1,32 @@ +using StructureHelperCommon.Infrastructures.Interfaces; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces.LimitCurve +{ + + public class LimitCurvesCalculatorInputDataCloneStrategy : ICloneStrategy + { + private IUpdateStrategy updateStrategy; + + public LimitCurvesCalculatorInputDataCloneStrategy(IUpdateStrategy updateStrategy) + { + this.updateStrategy = updateStrategy; + } + + public LimitCurvesCalculatorInputDataCloneStrategy() : this (new LimitCurvesCalculatorInputDataUpdateStrategy()) + { + + } + + public ILimitCurvesCalculatorInputData GetClone(ILimitCurvesCalculatorInputData sourceObject) + { + LimitCurvesCalculatorInputData newItem = new(); + updateStrategy.Update(newItem, sourceObject); + return newItem; + } + } +} diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculatorInputDataUpdateStrategy.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculatorInputDataUpdateStrategy.cs new file mode 100644 index 0000000..da66da7 --- /dev/null +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/LimitCurvesCalculatorInputDataUpdateStrategy.cs @@ -0,0 +1,42 @@ +using StructureHelperCommon.Infrastructures.Enums; +using StructureHelperCommon.Infrastructures.Interfaces; +using StructureHelperCommon.Models.Parameters; +using StructureHelperCommon.Services; +using StructureHelperLogics.NdmCalculations.Primitives; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces.LimitCurve +{ + public class LimitCurvesCalculatorInputDataUpdateStrategy : IUpdateStrategy + { + public void Update(ILimitCurvesCalculatorInputData targetObject, ILimitCurvesCalculatorInputData sourceObject) + { + CheckObject.IsNull(targetObject, sourceObject, "Limit curve calculator input data"); + if (ReferenceEquals(targetObject, sourceObject)) { return; } + targetObject.LimitStates.Clear(); + targetObject.CalcTerms.Clear(); + targetObject.PredicateEntries.Clear(); + targetObject.LimitStates.AddRange(sourceObject.LimitStates); + targetObject.CalcTerms.AddRange(sourceObject.CalcTerms); + targetObject.PredicateEntries.AddRange(sourceObject.PredicateEntries); + targetObject.SurroundData = sourceObject.SurroundData.Clone() as ISurroundData; + targetObject.PointCount = sourceObject.PointCount; + foreach (var item in sourceObject.PrimitiveSeries) + { + var collection = item.Collection.ToList(); + targetObject.PrimitiveSeries.Add + ( + new NamedCollection() + { + Name = item.Name, + Collection = collection + } + ); + } + } + } +} diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/RectSurroundProc.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/RectSurroundProc.cs index 9a59403..c268a54 100644 --- a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/RectSurroundProc.cs +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/RectSurroundProc.cs @@ -12,7 +12,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces { private List surroundList; - public SurroundData SurroundData { get; set; } + public ISurroundData SurroundData { get; set; } public int PointCount { get; set; } public RectSurroundProc() diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/RoundSurroundProc.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/RoundSurroundProc.cs index 4520f39..b9b2388 100644 --- a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/RoundSurroundProc.cs +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/RoundSurroundProc.cs @@ -11,12 +11,12 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces { private List surroundList; - public SurroundData SurroundData { get; set; } + public ISurroundData SurroundData { get; set; } public int PointCount { get; set; } public RoundSurroundProc() { - SurroundData = new(); + SurroundData = new SurroundData(); } public List GetPoints() { diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/SurroundData.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/SurroundData.cs index 045e37c..6ac0b3b 100644 --- a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/SurroundData.cs +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/LimitCurve/SurroundData.cs @@ -14,7 +14,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces /// /// Limits of coordinates for workplane /// - public class SurroundData : ICloneable + public class SurroundData : ISurroundData { public double XMax { get; set; } public double XMin { get; set; } diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/Logics/LimitCurveInputDataUpdateStrategy.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/Logics/LimitCurveInputDataUpdateStrategy.cs index f45bdfd..92169b3 100644 --- a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/Logics/LimitCurveInputDataUpdateStrategy.cs +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/Logics/LimitCurveInputDataUpdateStrategy.cs @@ -3,10 +3,10 @@ using StructureHelperCommon.Models.Parameters; namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces.Logics { - internal class LimitCurveInputDataUpdateStrategy : IUpdateStrategy + internal class LimitCurveInputDataUpdateStrategy : IUpdateStrategy { - SurroundDataUpdateStrategy surroundDataUpdateStrategy => new(); - public void Update(LimitCurveInputData targetObject, LimitCurveInputData sourceObject) + IUpdateStrategy surroundDataUpdateStrategy = new SurroundDataUpdateStrategy(); + public void Update(ILimitCurvesCalculatorInputData targetObject, ILimitCurvesCalculatorInputData sourceObject) { if (ReferenceEquals(targetObject, sourceObject)) { return; } targetObject.LimitStates.Clear(); diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/Logics/SurroundDataUpdateStrategy.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/Logics/SurroundDataUpdateStrategy.cs index 5bcba48..7ed53aa 100644 --- a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/Logics/SurroundDataUpdateStrategy.cs +++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/Logics/SurroundDataUpdateStrategy.cs @@ -8,9 +8,9 @@ using System.Threading.Tasks; namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces.Logics { - internal class SurroundDataUpdateStrategy : IUpdateStrategy + internal class SurroundDataUpdateStrategy : IUpdateStrategy { - public void Update(SurroundData targetObject, SurroundData sourceObject) + public void Update(ISurroundData targetObject, ISurroundData sourceObject) { if (ReferenceEquals(targetObject, sourceObject)) { return; } targetObject.XMax = sourceObject.XMax; diff --git a/StructureHelperLogics/Services/NdmPrimitives/ForcesParametersLogic.cs b/StructureHelperLogics/Services/NdmPrimitives/ForcesParametersLogic.cs index 9ae53a1..cb3b9cf 100644 --- a/StructureHelperLogics/Services/NdmPrimitives/ForcesParametersLogic.cs +++ b/StructureHelperLogics/Services/NdmPrimitives/ForcesParametersLogic.cs @@ -17,6 +17,7 @@ namespace StructureHelperLogics.Services.NdmPrimitives { const string prefixInitial = "Initial"; const string prefixActual = "Actual"; + private const string errorValue = "----"; IConvertUnitLogic operationLogic = new ConvertUnitLogic(); IGetUnitLogic unitLogic = new GetUnitLogic(); @@ -186,60 +187,60 @@ namespace StructureHelperLogics.Services.NdmPrimitives return parameters; } - private List> GetDistance(IEnumerable locNdms, IStrainMatrix? locStrainMatrix, PosNegFlag flag, string excentricityName, Func, IStrainMatrix, PosNegFlag, (double dX, double dY, double dSum)> func) + private List> GetDistance(IEnumerable locNdms, IStrainMatrix? locStrainMatrix, PosNegFlag flag, string eccentricityName, Func, IStrainMatrix, PosNegFlag, (double dX, double dY, double dSum)> func) { var parameters = new List>(); var unitType = UnitTypes.Length; var unit = unitLogic.GetUnit(unitType, "mm"); var unitName = unit.Name; var unitMultiPlayer = unit.Multiplyer; - var sumExcenticityX = new ValueParameter() + var sumEccenticityX = new ValueParameter() { IsValid = true, - Name = $"{excentricityName} excentricity", + Name = $"{eccentricityName} eccentricity", ShortName = $"e{firstAxisName.ToLower()},sum", Text = unitName, - Description = $"{excentricityName} force excentricity along {firstAxisName.ToUpper()}-axis" + Description = $"{eccentricityName} force excentricity along {firstAxisName.ToUpper()}-axis" }; var sumExcenticityY = new ValueParameter() { IsValid = true, - Name = $"{excentricityName} excentricity", + Name = $"{eccentricityName} eccentricity", ShortName = $"e{secondAxisName.ToLower()},sum", Text = unitName, - Description = $"{excentricityName} force excentricity along {secondAxisName.ToUpper()}-axis" + Description = $"{eccentricityName} force eccentricity along {secondAxisName.ToUpper()}-axis" }; var sumExcenticity = new ValueParameter() { IsValid = true, - Name = $"{excentricityName} excentricity", + Name = $"{eccentricityName} eccentricity", ShortName = $"e,sum", Text = unitName, - Description = $"{excentricityName} force excentricity" + Description = $"{eccentricityName} force eccentricity" }; try { - var sumExcentricityValue = func.Invoke(locNdms, locStrainMatrix, flag); - sumExcenticityX.Value = (sumExcentricityValue.dX * unitMultiPlayer).ToString(); - sumExcenticityY.Value = (sumExcentricityValue.dY * unitMultiPlayer).ToString(); - sumExcenticity.Value = (sumExcentricityValue.dSum * unitMultiPlayer).ToString(); + var sumEccentricityValue = func.Invoke(locNdms, locStrainMatrix, flag); + sumEccenticityX.Value = (sumEccentricityValue.dX * unitMultiPlayer).ToString(); + sumExcenticityY.Value = (sumEccentricityValue.dY * unitMultiPlayer).ToString(); + sumExcenticity.Value = (sumEccentricityValue.dSum * unitMultiPlayer).ToString(); } catch (Exception ex) { - sumExcenticityX.IsValid = false; - sumExcenticityX.Value = (double.NaN).ToString(); - sumExcenticityX.Description += $": {ex}"; + sumEccenticityX.IsValid = false; + sumEccenticityX.Value = errorValue; + sumEccenticityX.Description += $": {ex}"; sumExcenticityY.IsValid = false; - sumExcenticityY.Value = (double.NaN).ToString(); + sumExcenticityY.Value = errorValue; sumExcenticityY.Description += $": {ex}"; sumExcenticity.IsValid = false; - sumExcenticity.Value = (double.NaN).ToString(); + sumExcenticity.Value = errorValue; sumExcenticity.Description += $": {ex}"; } - parameters.Add(sumExcenticityX); + parameters.Add(sumEccenticityX); parameters.Add(sumExcenticityY); parameters.Add(sumExcenticity); return parameters; @@ -254,7 +255,7 @@ namespace StructureHelperLogics.Services.NdmPrimitives return parameters; } - private IEnumerable> GetLiverArms(IEnumerable locNdms, IStrainMatrix? locStrainMatrix, string excentricityName, Func, IStrainMatrix, (double dX, double dY, double dSum)> func) + private IEnumerable> GetLiverArms(IEnumerable locNdms, IStrainMatrix? locStrainMatrix, string eccentricityName, Func, IStrainMatrix, (double dX, double dY, double dSum)> func) { const string liverArm = "liver arm"; var parameters = new List>(); @@ -265,26 +266,26 @@ namespace StructureHelperLogics.Services.NdmPrimitives var sumLiverArmX = new ValueParameter() { IsValid = true, - Name = $"{excentricityName} {liverArm}", + Name = $"{eccentricityName} {liverArm}", ShortName = $"z,{firstAxisName.ToLower()}", Text = unitName, - Description = $"{excentricityName} {liverArm} along {firstAxisName.ToUpper()}-axis" + Description = $"{eccentricityName} {liverArm} along {firstAxisName.ToUpper()}-axis" }; var sumLiverArmY = new ValueParameter() { IsValid = true, - Name = $"{excentricityName} {liverArm}", + Name = $"{eccentricityName} {liverArm}", ShortName = $"z,{secondAxisName.ToLower()}", Text = unitName, - Description = $"{excentricityName} {liverArm} along {secondAxisName.ToUpper()}-axis" + Description = $"{eccentricityName} {liverArm} along {secondAxisName.ToUpper()}-axis" }; var sumLiverArm = new ValueParameter() { IsValid = true, - Name = $"{excentricityName} {liverArm}", + Name = $"{eccentricityName} {liverArm}", ShortName = $"z,sum", Text = unitName, - Description = $"{excentricityName} {liverArm}" + Description = $"{eccentricityName} {liverArm}" }; try { @@ -296,15 +297,15 @@ namespace StructureHelperLogics.Services.NdmPrimitives catch (Exception ex) { sumLiverArmX.IsValid = false; - sumLiverArmX.Value = (double.NaN).ToString(); + sumLiverArmX.Value = errorValue; sumLiverArmX.Description += $": {ex}"; sumLiverArmY.IsValid = false; - sumLiverArmY.Value = (double.NaN).ToString(); + sumLiverArmY.Value = errorValue; sumLiverArmY.Description += $": {ex}"; sumLiverArm.IsValid = false; - sumLiverArm.Value = (double.NaN).ToString(); + sumLiverArm.Value = errorValue; sumLiverArm.Description += $": {ex}"; } diff --git a/StructureHelperTests/UnitTests/UpdateStrategiesTests/HeadMaterialUpdateStrategyTests.cs b/StructureHelperTests/UnitTests/UpdateStrategiesTests/HeadMaterialUpdateStrategyTests.cs new file mode 100644 index 0000000..874320e --- /dev/null +++ b/StructureHelperTests/UnitTests/UpdateStrategiesTests/HeadMaterialUpdateStrategyTests.cs @@ -0,0 +1,163 @@ +using LoaderCalculator.Data.Materials; +using NUnit.Framework; +using StructureHelper.Models.Materials; +using StructureHelperCommon.Infrastructures.Enums; +using StructureHelperCommon.Infrastructures.Exceptions; +using StructureHelperCommon.Infrastructures.Interfaces; +using StructureHelperCommon.Models.Materials.Libraries; +using StructureHelperLogics.Models.Materials; +using System; +using System.Windows.Media; + +namespace StructureHelperTests.UnitTests.UpdateStrategiesTests +{ + + + [TestFixture] + public class HeadMaterialUpdateStrategyTests + { + private HeadMaterialUpdateStrategy _strategy; + + [SetUp] + public void SetUp() + { + _strategy = new HeadMaterialUpdateStrategy( + new MockBaseUpdateStrategy(), + new MockHelperMaterialUpdateStrategy() + ); + } + + [Test] + public void Update_ShouldThrowException_WhenTargetObjectIsNull() + { + var sourceObject = new MockHeadMaterial(); + + Assert.Throws(() => _strategy.Update(null, sourceObject)); + } + + [Test] + public void Update_ShouldThrowException_WhenSourceObjectIsNull() + { + var targetObject = new MockHeadMaterial(); + + Assert.Throws(() => _strategy.Update(targetObject, null)); + } + + [Test] + public void Update_ShouldNotThrow_WhenTargetAndSourceAreSameReference() + { + var targetAndSource = new MockHeadMaterial(); + + Assert.DoesNotThrow(() => _strategy.Update(targetAndSource, targetAndSource)); + } + + [Test] + public void Update_ShouldUpdateBaseProperties() + { + // Arrange + var targetObject = new MockHeadMaterial { Name = "Original", Color = Color.FromRgb(0,0,0) }; + var sourceObject = new MockHeadMaterial { Name = "Updated", Color = Color.FromRgb(255, 0, 0), HelperMaterial = new MockHelperMaterial() }; + + // Act + _strategy.Update(targetObject, sourceObject); + + // Assert + Assert.AreEqual("Updated", targetObject.Name, "Name should be updated"); + Assert.AreEqual(Color.FromRgb(255, 0, 0), targetObject.Color, "Color should be updated"); + } + + [Test] + public void Update_ShouldCloneAndUpdateHelperMaterial() + { + // Arrange + MockHeadMaterial targetObject = new (){ HelperMaterial = new MockHelperMaterial { Property = "Original" } }; + var sourceObject = new MockHeadMaterial { HelperMaterial = new MockHelperMaterial { Property = "Updated" } }; + + // Act + _strategy.Update(targetObject, sourceObject); + + // Assert + Assert.AreEqual("Updated", (targetObject.HelperMaterial as MockHelperMaterial).Property, "HelperMaterial property should be updated"); + Assert.AreNotSame(sourceObject.HelperMaterial, targetObject.HelperMaterial, + "HelperMaterial should be cloned, not directly assigned"); + } + + #region Mocks + private class MockHeadMaterial : IHeadMaterial + { + public string Name { get; set; } + public Color Color { get; set; } + public IHelperMaterial HelperMaterial { get; set; } + + public Guid Id => throw new NotImplementedException(); + + public object Clone() + { + return new MockHeadMaterial + { + Name = this.Name, + Color = this.Color, + HelperMaterial = this.HelperMaterial?.Clone() as IHelperMaterial + }; + } + + public IMaterial GetLoaderMaterial(LimitStates limitState, CalcTerms calcTerm) + { + throw new NotImplementedException(); + } + + public IMaterial GetCrackedLoaderMaterial(LimitStates limitState, CalcTerms calcTerm) + { + throw new NotImplementedException(); + } + } + + private class MockHelperMaterial : IHelperMaterial + { + public string Property { get; set; } + + public Guid Id => throw new NotImplementedException(); + + public List SafetyFactors { get; set; } + + public object Clone() + { + return new MockHelperMaterial { Property = this.Property }; + } + + public IMaterial GetCrackedLoaderMaterial(LimitStates limitState, CalcTerms calcTerm) + { + throw new NotImplementedException(); + } + + public IMaterial GetLoaderMaterial(LimitStates limitState, CalcTerms calcTerm) + { + throw new NotImplementedException(); + } + } + + private class MockBaseUpdateStrategy : IUpdateStrategy + { + public void Update(IHeadMaterial targetObject, IHeadMaterial sourceObject) + { + if (targetObject == null || sourceObject == null) return; + + targetObject.Name = sourceObject.Name; + targetObject.Color = sourceObject.Color; + } + } + + private class MockHelperMaterialUpdateStrategy : IUpdateStrategy + { + public void Update(IHelperMaterial targetObject, IHelperMaterial sourceObject) + { + if (targetObject != null && sourceObject != null) + { + (targetObject as MockHelperMaterial).Property = (sourceObject as MockHelperMaterial).Property; + } + } + } + #endregion + } + +}