From a00cf8f2767aca37812968b4f402abf4c43c13b5 Mon Sep 17 00:00:00 2001 From: Elena Date: Sun, 28 Nov 2021 12:44:08 +0100 Subject: [PATCH] Avances ventana Recogida --- Button/ButtonConfig.cs | 3 +- Config.daml | 22 +- Helper/EnabledComboBoxItem.cs | 47 + Helper/HelperGdb.cs | 50 +- Images/BexDog32.png | Bin 1960 -> 0 bytes Images/Dino32.png | Bin 2335 -> 0 bytes Images/GenericButtonBlue16.png | Bin 1054 -> 0 bytes Images/GenericButtonBlue32.png | Bin 1252 -> 0 bytes Images/GenericButtonGreen16.png | Bin 1056 -> 0 bytes Images/GenericButtonGreen32.png | Bin 1243 -> 0 bytes Images/GenericButtonPurple16.png | Bin 1055 -> 0 bytes Images/GenericButtonPurple32.png | Bin 1255 -> 0 bytes Images/config.png | Bin 2165 -> 1123 bytes Images/config2.png | Bin 0 -> 1789 bytes Images/config_old.png | Bin 0 -> 2165 bytes Images/genericproperties32.png | Bin 0 -> 1211 bytes Images/masking32.png | Bin 0 -> 1578 bytes Images/open32.png | Bin 0 -> 1353 bytes Images/openfolder.png | Bin 0 -> 1185 bytes Images/openfolder32.png | Bin 0 -> 1403 bytes Images/time32.png | Bin 0 -> 2139 bytes Model/ComunDef.cs | 33 + Model/Limpieza.cs | 6 +- Model/LimpiezaDef.cs | 2 +- Model/OliviaConf.cs | 89 +- Model/OliviaGlob.cs | 72 +- Model/OliviaGlob.cs.bak | 370 -------- Model/Recogida.cs | 23 + Model/RecogidaDef.cs | 862 ++++++++++++++++++ Module1.cs | 5 + OliviaAddInPro.csproj | 69 +- Resource1.Designer.cs | 18 + Resource1.resx | 6 + Resources/Cat32.png | Bin 1953 -> 0 bytes Resources/Dino32.png | Bin 2335 -> 0 bytes Resources/Dog32.png | Bin 1960 -> 0 bytes Resources/Panda32.png | Bin 1792 -> 0 bytes Resources/Pizza32.png | Bin 1980 -> 0 bytes Resources/Rabbit32.png | Bin 1865 -> 0 bytes Resources/inicio.png | Bin 0 -> 1211 bytes Resources/inicio24.png | Bin 0 -> 1053 bytes Resources/ptosctrl.png | Bin 0 -> 1353 bytes Resources/ptosctrl24.png | Bin 0 -> 1004 bytes Resources/time.png | Bin 0 -> 2139 bytes Resources/time24.png | Bin 0 -> 1748 bytes Resources/zonas.png | Bin 0 -> 1578 bytes Resources/zonas24.png | Bin 0 -> 1267 bytes Services/ConfigServ.cs | 6 +- Services/EjecServ.cs | 29 +- Services/LimpiezaServ.cs | 36 +- Services/RecogidaServ.cs | 57 ++ View/Limpieza/PaneLimpieza.xaml | 34 +- View/Limpieza/PaneLimpieza.xaml.cs | 11 +- View/Limpieza/PaneLimpiezaSub1.xaml | 8 +- View/Limpieza/PaneLimpiezaSub1.xaml.cs | 9 +- View/Limpieza/PaneLimpiezaSub2.xaml | 11 +- View/Limpieza/PaneLimpiezaSub4.xaml.cs | 2 +- View/Limpieza/openfolder.png | Bin 611 -> 0 bytes View/PaneEjecutar.xaml.cs | 9 +- View/{ => Recogida}/DockpaneRecogida.xaml | 26 +- View/{ => Recogida}/DockpaneRecogida.xaml.cs | 0 View/Recogida/PaneRecogida.xaml | 80 ++ View/Recogida/PaneRecogida.xaml.cs | 53 ++ View/Recogida/PaneRecogidaSub1.xaml | 80 ++ View/Recogida/PaneRecogidaSub1.xaml.cs | 133 +++ View/Recogida/old/PaneRecogidaSub2.xaml | 86 ++ View/Recogida/old/PaneRecogidaSub2.xaml.cs | 143 +++ View/Recogida/old/PaneRecogidaSub4.xaml | 71 ++ View/Recogida/old/PaneRecogidaSub4.xaml.cs | 35 + .../Configuracion/DockpaneConfigViewModel.cs | 14 + .../Limpieza/PaneLimpiezaSub1ViewModel.cs | 56 +- ViewModel/Limpieza/PaneLimpiezaViewModel.cs | 15 +- ViewModel/PanelViewModelBase.cs | 26 + .../DockpaneRecogidaViewModel.cs | 22 +- .../Recogida/PaneRecogidaSub1ViewModel.cs | 575 ++++++++++++ ViewModel/Recogida/PaneRecogidaViewModel.cs | 103 +++ .../Recogida/old/PaneRecogidaSub2ViewModel.cs | 38 + .../Recogida/old/PaneRecogidaSub4ViewModel.cs | 39 + 78 files changed, 2818 insertions(+), 666 deletions(-) create mode 100644 Helper/EnabledComboBoxItem.cs delete mode 100644 Images/BexDog32.png delete mode 100644 Images/Dino32.png delete mode 100644 Images/GenericButtonBlue16.png delete mode 100644 Images/GenericButtonBlue32.png delete mode 100644 Images/GenericButtonGreen16.png delete mode 100644 Images/GenericButtonGreen32.png delete mode 100644 Images/GenericButtonPurple16.png delete mode 100644 Images/GenericButtonPurple32.png create mode 100644 Images/config2.png create mode 100644 Images/config_old.png create mode 100644 Images/genericproperties32.png create mode 100644 Images/masking32.png create mode 100644 Images/open32.png create mode 100644 Images/openfolder.png create mode 100644 Images/openfolder32.png create mode 100644 Images/time32.png create mode 100644 Model/ComunDef.cs delete mode 100644 Model/OliviaGlob.cs.bak create mode 100644 Model/Recogida.cs create mode 100644 Model/RecogidaDef.cs delete mode 100644 Resources/Cat32.png delete mode 100644 Resources/Dino32.png delete mode 100644 Resources/Dog32.png delete mode 100644 Resources/Panda32.png delete mode 100644 Resources/Pizza32.png delete mode 100644 Resources/Rabbit32.png create mode 100644 Resources/inicio.png create mode 100644 Resources/inicio24.png create mode 100644 Resources/ptosctrl.png create mode 100644 Resources/ptosctrl24.png create mode 100644 Resources/time.png create mode 100644 Resources/time24.png create mode 100644 Resources/zonas.png create mode 100644 Resources/zonas24.png create mode 100644 Services/RecogidaServ.cs delete mode 100644 View/Limpieza/openfolder.png rename View/{ => Recogida}/DockpaneRecogida.xaml (60%) rename View/{ => Recogida}/DockpaneRecogida.xaml.cs (100%) create mode 100644 View/Recogida/PaneRecogida.xaml create mode 100644 View/Recogida/PaneRecogida.xaml.cs create mode 100644 View/Recogida/PaneRecogidaSub1.xaml create mode 100644 View/Recogida/PaneRecogidaSub1.xaml.cs create mode 100644 View/Recogida/old/PaneRecogidaSub2.xaml create mode 100644 View/Recogida/old/PaneRecogidaSub2.xaml.cs create mode 100644 View/Recogida/old/PaneRecogidaSub4.xaml create mode 100644 View/Recogida/old/PaneRecogidaSub4.xaml.cs rename ViewModel/{ => Recogida}/DockpaneRecogidaViewModel.cs (77%) create mode 100644 ViewModel/Recogida/PaneRecogidaSub1ViewModel.cs create mode 100644 ViewModel/Recogida/PaneRecogidaViewModel.cs create mode 100644 ViewModel/Recogida/old/PaneRecogidaSub2ViewModel.cs create mode 100644 ViewModel/Recogida/old/PaneRecogidaSub4ViewModel.cs diff --git a/Button/ButtonConfig.cs b/Button/ButtonConfig.cs index 74aee54..5cf9a36 100644 --- a/Button/ButtonConfig.cs +++ b/Button/ButtonConfig.cs @@ -27,7 +27,8 @@ namespace OliviaAddInPro { if (OliviaGlob.TipoEjec == TiposEjecucion.Ninguno) { - OliviaGlob.TipoEjec = TiposEjecucion.Config; + OliviaGlob.TipoEjec = TiposEjecucion.Props; + DockpaneConfigViewModel.Reset(); DockpaneConfigViewModel.Show(); } else diff --git a/Config.daml b/Config.daml index 8842a46..e6f696b 100644 --- a/Config.daml +++ b/Config.daml @@ -1,8 +1,4 @@ - + OliviaAddInPro AddIn de Optimización de la Limpieza Viaria para ArcGIs Pro @@ -23,11 +19,11 @@ - + - - - - - + + + + diff --git a/Helper/EnabledComboBoxItem.cs b/Helper/EnabledComboBoxItem.cs new file mode 100644 index 0000000..3e2f1d8 --- /dev/null +++ b/Helper/EnabledComboBoxItem.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OliviaAddInPro.Helper +{ + class EnabledComboBoxItem : INotifyPropertyChanged + { + public event PropertyChangedEventHandler PropertyChanged; + + private bool isEnabled; + private T item; + + public EnabledComboBoxItem() + { } + + public EnabledComboBoxItem(T item, bool isEnabled = true) + { + this.item = item; + this.isEnabled = isEnabled; + } + + public T Item + { + get { return item; } + set + { + item = value; + if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Item")); + } + } + + + public bool IsEnabled + { + get { return isEnabled; } + set + { + isEnabled = value; + if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("IsEnabled")); + } + } + } +} diff --git a/Helper/HelperGdb.cs b/Helper/HelperGdb.cs index 1555382..dcdda94 100644 --- a/Helper/HelperGdb.cs +++ b/Helper/HelperGdb.cs @@ -325,7 +325,17 @@ namespace OliviaAddInPro.Helper } //Dado un nombre de campo, devuelve los valores que encuentra para ese nombre de campo - public static Task> GetFieldVals(FeatureClass fc, string fieldName, bool uniquevals) + public static Task> GetFieldVals(string capa, string fieldName, bool uniquevals) + { + FeatureClass fc = GetFtClass(capa); + if (fc == null) + return null; + + return GetFieldVals(fc, fieldName, uniquevals); + } + + //Dado un nombre de campo, devuelve los valores que encuentra para ese nombre de campo + public static Task> GetFieldVals(FeatureClass fc, string fieldName, bool uniquevals) { ObservableCollection attribs_st = new ObservableCollection(); ReiniciaOutStr(); @@ -555,6 +565,44 @@ namespace OliviaAddInPro.Helper return n; } + /** + * Devuelve los valores únicos de un campo dado + */ + public static ObservableCollection GetUniqueVals(string capa, string campo) + { + ObservableCollection uniqueVals = null; + FeatureClass ftclass = GetFtClass(capa); + if (ftclass == null) + return null; + + using (FeatureClassDefinition featureClassDefinition = ftclass.GetDefinition()) + { + // Get fields + ArcGIS.Core.Data.Field fld = featureClassDefinition.GetFields().First(x => x.Name.Equals(campo)); + + // Create StatisticsDescriptions + StatisticsDescription uniqStatDesc = new StatisticsDescription(fld, new List() + { ArcGIS.Core.Data.StatisticsFunction.Count }); + + // Create TableStatisticsDescription + TableStatisticsDescription tableStatisticsDescription = new TableStatisticsDescription(new List() { uniqStatDesc}); + tableStatisticsDescription.GroupBy = new List() { fld }; + tableStatisticsDescription.OrderBy = new List() { new SortDescription(fld) }; + + // Calculate Statistics + IReadOnlyList statisticsResults = ftclass.CalculateStatistics(tableStatisticsDescription); + TableStatisticsResult statRes = statisticsResults.ElementAt(0); //solo hay 1 grupo + + // Code to process results goes here... + uniqueVals = new ObservableCollection(); + for(int i=0; i< statRes.StatisticsResults.Count; i++) + { + uniqueVals.Add(statRes.StatisticsResults.ElementAt(i).ToString()); + } + } + Free(ftclass); + return uniqueVals; + } /** * Devuelve el número de entidades de una FeatureClass que cumplen la consulta, o todos si la consulta es empty */ diff --git a/Images/BexDog32.png b/Images/BexDog32.png deleted file mode 100644 index 461fe9142605b5c7725f8ef288663cde27c6dabf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1960 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 LAO7jThNu1kJWIof diff --git a/Images/GenericButtonBlue16.png b/Images/GenericButtonBlue16.png deleted file mode 100644 index ab6cad35ae14a03023bf030c0cd6c1c1d836af2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1054 zcmaJ=NoW&M7#=JwS{tkuto72zv_h3;mTV`j#VCQVWg#+iBZ7XI)1x9^=wj30Ki z?`ET zP3h(g&HDX*o5SUDVhg7=ry;TA)U3Wb0}n09R1Bo(8n79~tX@Dt5=Xj`f@(BqHLF%8 zTrj#M8Z=8Wc1m?aLHNI^sy3`Gl!Tk{{*%~B%^8qRLQ5~05^mgdpY6)vA|@1(Zl-j7 zwqC_VPDi?x(+v=r@PPqAloZWA*k45m0vFdTBx(|j^Fb1GP>LdRVGk2yW8tum<%d`{ z>JC+3mSH@xNF>Vp>sVfw3M$l49V>5QBTcck7*qp$=Ao&afO5>#RZvZuQ<}%(Z^~E0 z%FSa5HO1067}{>_U#+emVg1<4hH&wwA$_P}y_;CrZ_hlP!k6M~oDZc+@3Ozv*GF3R zoowY%@BAy`+L!q1`}8sA>xWxDuRhAJxL4S&8*6Wlwk<6VEmQ_)GnH+-mV2h0+waLQ zE=_iPT#$BjQ%7P;!`l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y-fM)1rW~NvGo8oC-gf}x>-fr*>5v#X0G zOs`9Ra%paAUI|QZ3PP_TPQ9SSkXrz>*(J3ovn(~mttdZN0qkk3Oq^~pcExEPRBsAS zw-~$O)TkpMZko8z{RtPfq^m1)5S5Q;#Sh1 z|Nrd|J20uWF|z3>G);TEGCliwy`E>c-2b#6U#BZ>xDu7aTqW}5@}(jHhMByZn59m2m@s^?)!-A! z$h6#~ToEZL%4Q;1_wTQ~sUVZ^(fS09gwQ?j51O~>mhUsD`RyB3_B1Iqr6A}*+K0f0 zYIC>?8i5i46932iEU@vVB(P#qR5j z=eS~cX6M&1gs)XGw`zbGa957w>XXz5DSuCG`1tF0W9EbdQo=1fl4hMB7+2i&%Vya6 zn9+<~q{)hRO9{)GWTs8rYHaT%c{8r(xJ++hU}R(1c(nah;fBe(LFJC8tDnm{r-UW| DLx-*A diff --git a/Images/GenericButtonGreen16.png b/Images/GenericButtonGreen16.png deleted file mode 100644 index 213e0c1813f40334fae7a9887b2c2decd8057852..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1056 zcmaJ=OK8(z9FNY;IvGwua4HzGr?BSHM`}akSd-RP%ott89z>QVU)R{>Ve)NlcXA#E zLyu*g8kl9d90covLl22X6hULtT!<%vr{iIyw@V}f^e^Xs=SUWHUw&UHA*h!ZyK&60VPS^@+T&~k~WpRQHWN6xH(;Tl? zaX4>6)5)6_E{w2vpCl`q;U1i>A|#1R8V-~V1tdkDKpdo|sa!M=@<&6lGb|&97$)W) ztiB9Q2jYSd6T@|^XetvrFkl_4Zezo{VqG!l7V<0tTbl%G+%|Q*nlz{F7z-U|;sUcP zUk$777)urF+Z9WpU?{h>|FpV(g!JPs8^T4KhV+4f^ll?z&+PNBqf0TL6bI9#&)Gkf z%0N^1^=5G;99i6xSiAFJk@>*Bnr{C1@YnkHu~CrgKL2%dX{m#~vf+99Wcol)Vj%~g z_kWwe|LA7No67Io7dv}T^a{m1l{Gywnzr5n!*<@@;d>kFU@fX;5 BR2~2T diff --git a/Images/GenericButtonGreen32.png b/Images/GenericButtonGreen32.png deleted file mode 100644 index 75ec735da6760a0daf43a70ed5fc84b6e7353353..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1243 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y-fM)1rW~Nv<8kredIJp{{8M-(c8oC-gf}x>-fr*>5v#X0G zOs`9Ra%paAUI|QZ3PLZ?1RQ!ni6OTDXtPUdQD#|cid#{Bt^(N8R+(7b;$&v%#DphYAP1iGQ}cl7y$G1FJ4|nGV_;zP z^>lFzskoK&=l_5E!wyWx93L{cxw#pne_LqD=&(w@Lo_4hKC^=C+g44oN;9pZ;#yBE#a4*8HZS&4~F9 zqr?5pO-*yBO;fgJvh12E!6vbxfg@qj4_+SDHC*5B-#EVE?WeG|_xtxvPBBoIR&QS1 zCfq!Iop~br115!T{=0T37OYP>ap2%F$4Sg}e||Au<7WCH(`e4+u&iEa1Q=d2 zzGR)*$p4^}LF2~BjWRa{?d$$4+-JPP(BgHA@jUBdK8ex;E12D64SvXec>Z2~6R*0P zejIzltIyou&o!Od} K&t;ucLK6TM{;kFU diff --git a/Images/GenericButtonPurple16.png b/Images/GenericButtonPurple16.png deleted file mode 100644 index 01b089507f9a610698e9beef0932c761c4b14e3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1055 zcmaJ=OK8(z98cK;*#kT%xG5M?Hx$>T=_6Z1X)wFJXn)_`5yd#zyIs^ogW(P zYi?+5z%Z;i(a$H*yxkew>d}Ai_o9fV78uXKl%9hH(F9mT*0TUlsNxt%0#Tki@dAV~ ztY)8*&cKW?z)HGGijECws|G@2Sh(9ZL}?sAJPXDYjU&E2enQ}i%n?U|f>$tNAg}aK zn;f%4qQuLhwR21nc*z8gbHqka8DR*I=_bH~ zq~9ZXX&Pr3k`4qJhVH<9UfM@_(Z_h`02^djUngFE2;|L_b8M3DE&D<{j>to3uoP7& z6v%>~)Xg!94uwJvhtKCh79ML#gQD%xEO&*02bN?i22^wncNoR2J_$JjMY@rKYHZSK zR=G^5V3aKy6is@alq!aT@PAWP-L$q~5^Tl$Phu-QWdJG(EPc|HP~&oL$CbgxOdvwt zOzZkYrHVs&9qLwIH}F`B!S@TIq-f5;ff7Ox*o0<5QIkM|=Lp0>DvHcTgMqFtKNDkU zzLTco{z&Piz1~1?EEeZO6)dkylPb_)1uJi1`Knk)461=V^T1S20=d`JRlJlmt5lCA zQkAcam8-`Rt%{{kFqG5Uzgk^6Li%x*o5Dq#P3Z#->D@%aKK9_^9J&;j5_}|WuVsH1 zi`_MCGj;spwNtlU{cmRHAJXB~n`i1?E)>>Nxls`ihd*6^SKPI(J!-tS>{>dPdG-1D z(UrD4_rHRlzdm%1T==qQu_-kC`ieNy)HBD`4BTy9KK)#2qTA~mp3S>5S=Wx?x6$40 zeJj`xyM3+k#>YfQ&q$*caR=1d%U649-M3a-@Tb^L>)`v^h2^YsWfSp1eknS7_7BY~ BR#yN3 diff --git a/Images/GenericButtonPurple32.png b/Images/GenericButtonPurple32.png deleted file mode 100644 index 39f62dbd909f6ea3aea92e464cdec4ad25671294..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1255 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y-fM)1rW~NxVnYp-fr*>5v#X0G zOs`9Ra%paAUI|QZ3PP_bPQ9SSkXrz>*(J3ovn(~mttdZN0qkk3Ox$iU!f75!}IU!8y}ujlXgh*@%Z$2%N7|HhqUH54Q)oucNiV+H$QS{oHk9_ zx@mHEDC1GaFKqYs|83hG>A+$T_=mlXDeUO;KKm4lZU6ZWpO@e7xv6Dt^VEYkg618( z6v(>XN~~tm@kX(D%kMo0FZl^ej&T8 z?@y8T>xtXLXRs+G!J_mD+m0;Ny%#?UuMtmSyZM&U-Jh3@k58=aar-)cpJtY8GZa!z zZ18O1cX(SC#k@k6e}m-$fh(B{mMSO63Qve_UY%{WsQNeqBO62Q=SfzdOx|07iXKl_ KKbLh*2~7YH@3UP1 diff --git a/Images/config.png b/Images/config.png index 9d2c4e9e6fea97bde73dd54db26778785508fcaa..e635bcddad46658b1e455294d4a521c2a8065070 100644 GIT binary patch delta 1102 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 literal 0 HcmV?d00001 diff --git a/Images/genericproperties32.png b/Images/genericproperties32.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1caab3d49bbe3fa271df76b2c836aaf49df060 GIT binary patch literal 1211 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y-fM)1rW~NvfS{N9cIyt$R8oD?d8oC-;n7O$*8aO)|8#=nW zx>}mR^t$9Hm*%GCmB93-AoRN8)C)=sxdlL*T~doO%TiO^it=+6z@E0s#O)R*oaRCG zrr>sqGfutwK*#8Vq82HtVM4(417gAxE|3FH`l)%q^j-u^*r9V;WEmJ3bv<1iLn>}1 z{rUgj{;&g+Sc+d<-NkAJRflA2d!Kn%^gFIHDxBWE`&MRFb!Mb$7yC>JHi;e^_66>S z+>(VJ8&}`iynuVn<(ba|x;Bu^-S`oNeil!*RgD`z4#j?q${uyZ98$ zSZtVmB)8>T_y+xQ=yU3FVqi&_HhH$01{Y&d^W3b=hGm@-Bu;0{;^^dMoTciN)I2+_ zbHWUP1(`}RLaK^9Hr3zeBpy2x$#Z}I{{{6N4Lb1~3Jjgys-&8yOi>A}vaqm_SSiG0 za9a3LvLs*qgG7tszoyKJ{0pCpY;tC}Sv2AN;iVE1hqhL{oXqC&(Nd9rqA1gq50*D` zo&5axc06Uiq@k+1_3{zMD_d#;zHna^aG+ SshtZdPCQ-xT-G@yGywpeM~?Xb literal 0 HcmV?d00001 diff --git a/Images/masking32.png b/Images/masking32.png new file mode 100644 index 0000000000000000000000000000000000000000..05da40249419789551e0a3668a0443f3bac1b913 GIT binary patch literal 1578 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y-fM)1rW~NvfIy<`8NH8oC-gni-i`xH!AHni(5d zxS6@Y^t$9Hm*%GCmB93-AoN<`)C)=sxdlL*T~doO%TiO^it=+6z@E0s#O)SSoaRCG zrr>sq8BV?WK*#8Vq82HtVM4(417gAxE|3FH`l)%q^j-u^*sGSm{>;F@G{@7$F{I+w zn{eN3;Xn~vPcJK#6px;Rj*nLOD&7(@6uq@Wu-l8%$y=Q3YS}{T()&xd{bQe=X`Xeb zb(dzWN0MSnfCraruIbBmKEI=#y`4^`Ef((`*?dnPpK*opE8pQWsdDeK3feV3!@8V{zv;Ohzur=@T3_~M%L*){)yPPF|{BF$hjgICF zX%3zI(>y33H~Mz;4F7YLl{9XC{4QDI3-6)4t?z9cXR2?$aejxv8(FvIosL!3 zz0>pKA57iRbn$?O>g6yd>-*&|o_N33e8tYk_Tc%iEARImw(F5_7Z7sl;1IMp7t8$o zL6rK0sA#7oQ%7gNGn>~-Pp{HDe0JB$e6!gHKif#OE&TW7sHcznGJ)8>q&H_GvRTrm z8cde?zN6~m`?u}KFRraKp6QbiDJFCL;`gq|Gh%bz?`?2*+Obu{WqNYO{HX?YNlbd( zuf+pqpLLtRwWs{kmzlq3t=_HpT1X*LU3+~)^x80~SM$SfpO6Y|-gt3Yvd`RCr?xh% z_tM^?6D_0^f32cK2AeI(!HbSiZOM+IeOdk9FEjo4#2#-$>(Gq@gtZ z^wqHA%Z)9n9(cqSoITqyf#VzN#7UD*)Sq^qq$1LN^zMUh#hf(r6+GMbO8?sJcWKfo zjjDL9sS2k*>3#U|+JZHIn_y<%@s#l8_Ngzb7X}0r+bunz$EYqA$CGWPoss4CPjA1H z9}|n=!Y_@^75_d;w)8MuJM}2-L))#2Z#@i*3W{oT{VsY+y<&XdaOwZ~e><5uZ*o8R sm+g1-Kj#ZShwt-)oA2#^ZqFjYU{Lvv|H|P%#-P&M)78&qol`;+08kxYH2?qr literal 0 HcmV?d00001 diff --git a/Images/open32.png b/Images/open32.png new file mode 100644 index 0000000000000000000000000000000000000000..8c87d0af2fc50b7ab309e2a856be1320d8fd132d GIT binary patch literal 1353 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%o>>?5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0*lEl2^R8JRMC7?NanVBh8E~b{|7LKNFM$QIihK825xnA|Ed*K9n`DsedbsM3LIrrI2|9Aa`|Z4N8w;r zws?_-1BVnUd03^*^HM&1|E_*Bq2|{qKb}P{9;NItb%iq*)`i<1_PsYd;n%s_)?Z2w z%<|5b2w@44RHzfxB7jNlqig+B+W-Xs*Z1evUk5BWDl%HJ19+Mm)d?A^xfQ@^vW zPlJ60$7%zUU8Y7W>ciMCE7(QyRqWc*?|A3j^v3wh5A7+2yrR;|as3 z?RxP?KD2kwFXMCY3%SmBj`_D7Tiu?zV-I2_-7g%7k3VNrQ@wY_!IK^HA0Gbum*TC@<&mWjFY>sr?`QWGz8{<*VCDsk@mpdF+=PREx zk`1?H_+)96koGYB#?D;J!~OSTzG$*L96Z-`*XO3mE0@nL)^ PsBrUi^>bP0l+XkK-H_vi literal 0 HcmV?d00001 diff --git a/Images/openfolder.png b/Images/openfolder.png new file mode 100644 index 0000000000000000000000000000000000000000..f114cdb50ff50796629c17a6cd6d16f35dfe2d86 GIT binary patch literal 1185 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvO-#2=9ZF3nBND}m`vLFhHcsTY(OatnYqyQCInmZhe+73JqDfIV%MiQ6p(IL(9V zO~LIJL!5f`fsWA!MJ-ZP!-Rn82gHOYTp$OY^i%VI>AeV;uxI>O{eyvlQP|VPF{I*F z(x3nT?U_{@1Y;FyZu+iKTh|kmu5!vHhwXup$Q!1bNk16Qxaue*B~GyMob~v+ZOi7F z5*jQb(g&E5-|YI_nfP+)cbDvzw!4fw7_Z;|b7bX==BbU2-aQi!M$DS%7|5Zt?a80| zwru_X@-5N@kH7M-ne}yPg@nt@@5UXUm@@SO5f z92=)2uR-nqtIj*#eu!}RzJL8Tj%Eve=`IP6&6}2p9&TSRFY#_aGq-HZ@k2Y)?+1vi t-}i&d|Ho@4!$Yh+Q=YkX2@5$iFfv${M+a7!S$l&D4Nq4;mvv4FO#lrqm=*v4 literal 0 HcmV?d00001 diff --git a/Images/openfolder32.png b/Images/openfolder32.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e27463d14a73f40544884d88667477c4140c57 GIT binary patch literal 1403 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)y-fM)1rW~Nvfm>Ihn7@9a5Te=t<8oC-=I=MQznmC#n8k#ye z8aSK6^t$9Hm*%GCmB93-fb}|Cn3-D`;nWLC47mkBn_W_iGRsm^+=}vZ6~Lah%Eav! z3!LUb^`>BT3)ml)IQ8lS9itD5TBN9k2?5g&hzU=)Kn^_Vr{)3Edl4{UJA~%@GB7Z{ z^>lFzskoK&=l_5E!wyVpZH#P-`4SifdwP0UMBDUtdxj)MN-jO;v5C2ZwS`Ch+QbtL zf>XGarrlqZ9p>~A?+ zTlV^Y#yNZW`dXQFRvi4_o#M@E5h<}`$2-G{*BT7Es%zwyv5aT(o^9=^4-bu%FC-MQ@rCgJ|J@RN2c|MOiv7y!HdxVJ^srPxe7Azc z{(lwI8^zr@9Gd0lFa&xz#q48`l*`s}yig?ZW zgcQyc6~>t@5>~g?=5Jot#NRw?3-{sF1aZqaZ_OD=apPX;>!iv$CA>EfB6 TJ|qJpo`J#B)z4*}Q$iB}v48GJ literal 0 HcmV?d00001 diff --git a/Images/time32.png b/Images/time32.png new file mode 100644 index 0000000000000000000000000000000000000000..ae176fb5ec58407001acc6ff3ca7eeb129475ac4 GIT binary patch literal 2139 zcmaJ?dstFw9wxlx>R4Mk-m^29<_!=PQdTqsF-+8y@!AdHpsd1S02OUB8?TLJPFdPi zT3*U(bSzhQ!qU;yypyGC>Ut|o%S32{*jg%3*1<;&49n3Ic`&tOJ?A|MnDUQWOTMGQd9jpPaOVglj=FJ8V^n9&H}gNrDF zfcThHAk7CLK>`rKqU?}N8w>`(;ZPWREDndU25fCGwrCsqi$h}U@mL(*b_ek3LCB*C zSZus6ner)?{6s*6i$r`p8XXf8gNm_3L4q(e#?jGH!C`BQlzSkBu{;q&jN}PT))>g3 zkSXBsMI49+C>R-`P?U&(kZ1a_1TOzGEl>EVP4b4J#SA_ggR)VSwB|^o{eM?3_p`T9 z<*tt&2Y4kO&fnLwtbbhXc%M z3?_%CFj#y*&}eunPbgyWm>`u*K*%{z91aWbim@X*P$)#A8rbrfSFs8)aQX7cWKh6~23ZsV#05SSjpuwR7aJnh(Vk5H zD&Hq8>r1(O#JYVIiqoKuEL{2Fv-ClpT<-$8uy;+iKZL=Q+o@zC zUEJ3e;O!X_WwctkQ(vjFIwj+1M9dVrN?J*-P9O_Xk#nDmgr12fi z+5D<9@T#d<96uXrR+1`Vxo!F7Xs7=rwHp(Q5>0dN^Xa*TyF*h&C#&xVZ;*J;JneCc zpITaYU%i@_Xi&ePaXPFQSLdHpl8|pMdu^U2jVR<8WLV$&mTC3AVJy4U9w7`1OEr=L zQRT>%ekAsV3FTJxoiZot!+K2dgo~x_YJ}8?icH{ z=0>4t;rN@midg)}mi*}LKlfLVxLzxbA*Q_z2adzvaF zzY6Etdq>K*#`80BRKhLtE*sViT%x1g(tEd^v7A``&y*GB^j|BW$MY*1;GE8XugYl>&q5E1Sjy zg`4>|(vanFL|<5A~`AfaF zSUIm5zK2{jyKr$dD84lt4n3l-a_)^q2R66w`8%=}sXSBAlKFf!?K^#~;Z4`Lz6asg zRGs>wJ1;?5cT&4k9+gV%nxL9fRjo>!Te{${a+VHdtm-&vrNE2%=C)13!ajEQ+cv`~ zO8O(WT;A5vJXWL>$YiKYCwSBSc}F+V9WMDqKZs8-eELj{u3zRK*wpc6-}H&;^5RMJ z-*(=VpyPS*nTY+t7r4v4cSl1geI7ELSPInY{;Z?c)K{H#ekdCbxDVH=6f5yZsH^68 z#nyHEnC6Syth9&!vF<&Od&2!Dak}!Pzv2+E*X9SZT4*%^Eh1fP?T2f0h`xsYPq)Roc#^uxTK+y zkihAN+i*PqbFX&08o9z9yX-XA6VtXuzx81{+tg3%_rx%aym<_G{Deb~K zgOW6Vy_v=N$?pz)bKTEOrGDHg{_P8_rOv;`f4}cuK!R?*H|DiSD-y5Q^Z7X$B8$B! zRXWC0_XWlFc*n~JUD*frJxe_qZPhi@OX)B(kUeyXIX=W^vJNIS&@)>T_hPo3r-)M9 z>5<=DF~7KQD$zLLotgWyIbs+$+N J)b-$x{{{PQgTep+ literal 0 HcmV?d00001 diff --git a/Model/ComunDef.cs b/Model/ComunDef.cs new file mode 100644 index 0000000..2ca1200 --- /dev/null +++ b/Model/ComunDef.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace OliviaAddInPro.Model +{ + public static class ComunDef + { + //************************************************************************************* + //Enums y structs generales + /** + * Nombre de los campos de la cartografía de la red navegable que se consultan para la exportación + */ + public struct CamposNW + { + public static string cons_onew; //>>>>>> origin/Elena/export - - Paths.PathGdbGen = c.PathGdbGen; - Paths.PathGdbNw = c.red_carreteras; - Paths.PathSimbVSM = c.PathSimbVSM; - Paths.PathSimbESRI = c.PathSimbESRI; - //puerto = c.puerto; - //buff_export = c.buffer_export; - - /////////////////////////////////////// - //Capas, consultas y filtros GENERALES - /*Capas.ftclass_ejes = c.eje_via; - Capas.ftclass_zonas = "SubNiveles"; - Capas.ftclass_restri = "TomTom_Q4_2015___rs"; - Capas.ftclass_muni = c.municipios;*/ - - /////////////////////////////////////// - //Capas, consultas, atributos y filtros de LIMPIEZA - LimpiezaDef.Capas.ftclass_niveles = "a2_Niveles_Limpieza"; - LimpiezaDef.Capas.ftclass_cont = "a_Contendores"; - LimpiezaDef.Capas.ftclass_mobi = "a_Mobiliario"; - LimpiezaDef.Capas.ftclass_limp_mec = "b_LimpMececanica"; - LimpiezaDef.Capas.ftclass_instala = "c_Instalaciones"; - - LimpiezaDef.Campos.consulta_entidad = c.cons_tip_ent; - LimpiezaDef.Campos.consulta_mecan = c.cons_mecaniz; - LimpiezaDef.Campos.consulta_observ = c.cons_obser; - LimpiezaDef.Campos.consulta_anch_tip = c.cons_anch_tip; - LimpiezaDef.Campos.consulta_tipolo = c.cons_tipolo; - LimpiezaDef.Campos.consulta_sector = c.consulta_sector; - LimpiezaDef.Campos.consulta_secuen = c.consulta_secuen; - - LimpiezaDef.Atributos.atr_esca = c.atr_esca; - LimpiezaDef.Atributos.atr_fuent = c.atr_fuent; - LimpiezaDef.Atributos.atr_infan = c.atr_infan; - LimpiezaDef.Atributos.atr_pape = c.atr_pape; - LimpiezaDef.Atributos.atr_paso_niv = c.atr_paso_niv; - LimpiezaDef.Atributos.atr_pipi = c.atr_pipi; - LimpiezaDef.Atributos.atr_sane = c.atr_sane; - LimpiezaDef.Atributos.atr_acera = c.atr_acera; - LimpiezaDef.Atributos.atr_aparc = c.atr_aparc; - LimpiezaDef.Atributos.atr_bord = c.atr_bord; - LimpiezaDef.Atributos.atr_hoja = c.atr_hoja; - LimpiezaDef.Atributos.atr_peat = c.atr_peat; - LimpiezaDef.Atributos.atr_terri = c.atr_terri; - LimpiezaDef.Atributos.atr_ocio = c.atr_ocio; - LimpiezaDef.Atributos.atr_org_ofi = c.atr_org_ofi; - LimpiezaDef.Atributos.atr_parq = c.atr_parq; - LimpiezaDef.Atributos.atr_park = c.atr_park; - LimpiezaDef.Atributos.atr_play = c.atr_play; - LimpiezaDef.Atributos.atr_polid = c.atr_polid; - LimpiezaDef.Atributos.atr_turis = c.atr_turis; - LimpiezaDef.Atributos.atr_solar = c.atr_solar; - LimpiezaDef.Atributos.atr_suelo = c.atr_suelo; - LimpiezaDef.Atributos.atr_ap_lin = c.atr_ap_lin; - LimpiezaDef.Atributos.atr_ap_bat = c.atr_ap_bat; - - //para el grupo PARAMETROS de LIMPIEZA - LimpiezaDef.Parametros.t_ttoM = c.t_tratamiento_max; - LimpiezaDef.Parametros.t_ttom = c.t_tratamiento_min; - LimpiezaDef.Parametros.v_despM = c.v_desplaz_max; - LimpiezaDef.Parametros.v_despm = c.v_desplaz_min; - LimpiezaDef.Parametros.t_cardescM = c.t_carga_desc_max; - LimpiezaDef.Parametros.t_cardescm = c.t_carga_desc_min; - LimpiezaDef.Parametros.t_cardesc = c.t_carga_desc; - LimpiezaDef.Parametros.t_despM = c.t_carga_desc_max; - LimpiezaDef.Parametros.t_despm = c.t_carga_desc_min; - LimpiezaDef.Parametros.t_desp = c.t_desplaz; - LimpiezaDef.Parametros.t_convM = c.t_convenio_max; - LimpiezaDef.Parametros.t_convm = c.t_convenio_min; - LimpiezaDef.Parametros.t_conv = c.t_convenio; - LimpiezaDef.Parametros.t_descansoM = c.t_descanso_max; - LimpiezaDef.Parametros.t_descansom = c.t_descanso_min; - LimpiezaDef.Parametros.t_descanso = c.t_descanso; - LimpiezaDef.Parametros.h_inicio = c.hora_inicio; - LimpiezaDef.Parametros.ancho_viaM = c.ancho_via_max; - LimpiezaDef.Parametros.ancho_viam = c.ancho_via_min; - LimpiezaDef.Parametros.ancho_via = c.ancho_via; - LimpiezaDef.Parametros.ttoBarMan = c.t_tratamiento_BarMan; - LimpiezaDef.Parametros.ttoBarManMant = c.t_tratamiento_BarManMant; - LimpiezaDef.Parametros.ttoBarMMot = c.t_tratamiento_BarMMot; - LimpiezaDef.Parametros.ttoBarMC = c.t_tratamiento_BarMC; - LimpiezaDef.Parametros.ttoBarMAP = c.t_tratamiento_BarMAP; - LimpiezaDef.Parametros.ttoBarMix = c.t_tratamiento_BarMix; - LimpiezaDef.Parametros.ttoBalMan = c.t_tratamiento_BalMan; - LimpiezaDef.Parametros.ttoBalMC = c.t_tratamiento_BalMC; - LimpiezaDef.Parametros.ttoBalMAP = c.t_tratamiento_BalMAP; - LimpiezaDef.Parametros.ttoBalMix = c.t_tratamiento_BalMix; - LimpiezaDef.Parametros.ttoBL = c.t_tratamiento_BL; - LimpiezaDef.Parametros.ttoCH = c.t_tratamiento_CH; - LimpiezaDef.Parametros.ttoVPap = c.t_tratamiento_VPap; - LimpiezaDef.Parametros.ttoLPap = c.t_tratamiento_LPap; - LimpiezaDef.Parametros.ttoLC = c.t_tratamiento_LC; - LimpiezaDef.Parametros.ttoLZI = c.t_tratamiento_LZI; - LimpiezaDef.Parametros.ttoLPip = c.t_tratamiento_LPip; - LimpiezaDef.Parametros.ttoLS = c.t_tratamiento_LS; - LimpiezaDef.Parametros.vdespBarMan = c.v_desp_BarMan; - LimpiezaDef.Parametros.vdespBarManMant = c.v_desp_BarManMant; - LimpiezaDef.Parametros.vdespBarMMot = c.v_desp_BarMMot; - LimpiezaDef.Parametros.vdespBarMC = c.v_desp_BarMC; - LimpiezaDef.Parametros.vdespBarMAP = c.v_desp_BarMAP; - LimpiezaDef.Parametros.vdespBarMix = c.v_desp_BarMix; - LimpiezaDef.Parametros.vdespBalMan = c.v_desp_BalMan; - LimpiezaDef.Parametros.vdespBalMC = c.v_desp_BalMC; - LimpiezaDef.Parametros.vdespBalMAP = c.v_desp_BalMAP; - LimpiezaDef.Parametros.vdespBalMix = c.v_desp_BalMix; - LimpiezaDef.Parametros.vdespBL = c.v_desp_BL; - LimpiezaDef.Parametros.vdespCH = c.v_desp_CH; - LimpiezaDef.Parametros.vdespVPap = c.v_desp_VPap; - LimpiezaDef.Parametros.vdespLPap = c.v_desp_LPap; - LimpiezaDef.Parametros.vdespLC = c.v_desp_LC; - LimpiezaDef.Parametros.vdespLZI = c.v_desp_LZI; - LimpiezaDef.Parametros.vdespLPip = c.v_desp_LPip; - LimpiezaDef.Parametros.vdespLS = c.v_desp_LS; - LimpiezaDef.Parametros.umbral_reco = 80; - - LimpiezaDef.OtrosParam.giro_max = c.Giro_max_vehiculo; - LimpiezaDef.OtrosParam.anch_peat = c.Ancho_peat_def; - LimpiezaDef.OtrosParam.anch_ace = c.Ancho_acera_def; - LimpiezaDef.OtrosParam.anch_aplin = c.Ancho_ap_lin_def; - LimpiezaDef.OtrosParam.anch_apbat = c.Ancho_ap_bat_def; - LimpiezaDef.OtrosParam.anch_bordlib = c.Ancho_bord_lib_def; - LimpiezaDef.OtrosParam.desv_max = c.Desv_max; - LimpiezaDef.OtrosParam.desv_max_abs = c.Desv_max_abs; - - /////////////////////////////////////// - //Capas, consultas, atributos y filtros de RECOGIDA - /* - RecogidaDef.campos_def.cons_id = RecogidaDef.campos.cons_id = "OBJECTID"; - RecogidaDef.campos_def.cons_nomrec = RecogidaDef.campos.cons_nomrec = "NOMB_TIP_REC"; - RecogidaDef.campos_def.cons_lateral = RecogidaDef.campos.cons_lateral = "LATERALIDAD"; - RecogidaDef.campos_def.cons_fracc = RecogidaDef.campos.cons_fracc = "FRACCION"; - RecogidaDef.campos_def.cons_capac = RecogidaDef.campos.cons_capac = "CAPACIDAD"; - RecogidaDef.campos_def.cons_uds = RecogidaDef.campos.cons_uds = "UNIDADES"; - RecogidaDef.campos_def.cons_kgrec = RecogidaDef.campos.cons_kgrec = "KGRECO"; - RecogidaDef.kgrec_cont = RecogidaDef.kgrec_cont = 200; - - //Rellena los tipos de fracción - RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Organica] = "Organica"; - RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Resto] = "Resto"; - RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Envases] = "Envases"; - RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Papel] = "PapelCarton"; - RecogidaDef.tipos_fracc_str[(int)RecogidaDef.TiposFracción.Vidrio] = "Vidrio"; - //Rellena los tipos de carga - RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Trasera] = "Carga Trasera"; - RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Lateral] = "Carga Lateral"; - RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Superior] = "Carga Superior"; - RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Bilateral] = "Carga Bilateral"; - RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.BolseoPtaPta] = "Bolseo"; - RecogidaDef.tipos_carg_str[(int)RecogidaDef.TiposCarga.Lavado] = "Lavado de cont"; - - RecogidaDef.Parametros.t_vaciM = 40000; - RecogidaDef.Parametros.t_vacim = 0; - RecogidaDef.Parametros.t_llegsalM = 40000; - RecogidaDef.Parametros.t_llegsalm = 0; - RecogidaDef.Parametros.t_llegsal = 5; - RecogidaDef.Parametros.t_descM = 40000; - RecogidaDef.Parametros.t_descm = 0; - RecogidaDef.Parametros.t_desc = 40; - RecogidaDef.Parametros.t_convM = 40000; - RecogidaDef.Parametros.t_convm = 0; - RecogidaDef.Parametros.t_conv = 60 * 8; - RecogidaDef.Parametros.t_descansoM = 40000; - RecogidaDef.Parametros.t_descansom = 0; - RecogidaDef.Parametros.t_descanso = 30; - RecogidaDef.Parametros.h_inicio = 420; - RecogidaDef.Parametros.dens_vehi_org = 500; - RecogidaDef.Parametros.dens_vehi_res = 500; - RecogidaDef.Parametros.dens_vehi_env = 120; - RecogidaDef.Parametros.dens_vehi_pap = 250; - RecogidaDef.Parametros.dens_vehi_vid = 350; - RecogidaDef.Parametros.dens_vehi_otr = 100; - RecogidaDef.Parametros.dens_cont_org = 150; - RecogidaDef.Parametros.dens_cont_res = 100; - RecogidaDef.Parametros.dens_cont_env = 28; - RecogidaDef.Parametros.dens_cont_pap = 90; - RecogidaDef.Parametros.dens_cont_vid = 250; - RecogidaDef.Parametros.dens_cont_otr = 100; - RecogidaDef.Parametros.anch_vehi_3 = 2.4; - RecogidaDef.Parametros.anch_vehi_2 = 2.2; - RecogidaDef.Parametros.anch_vehi_s = 2; - RecogidaDef.Parametros.rad_giro_3 = 175; - RecogidaDef.Parametros.rad_giro_2 = 175; - RecogidaDef.Parametros.rad_giro_s = 175; - RecogidaDef.Parametros.t_vaci_tra = 30; - RecogidaDef.Parametros.t_vaci_lat = 90; - RecogidaDef.Parametros.t_vaci_sup = 180; - RecogidaDef.Parametros.t_vaci_bi = 100; - RecogidaDef.Parametros.t_vaci_bol = 5; - RecogidaDef.Parametros.t_vaci_lav = 60; - RecogidaDef.Parametros.t_vaci_otr = 60; - RecogidaDef.Parametros.kgmaxM = 20000; - RecogidaDef.Parametros.kgmaxm = 0; - RecogidaDef.Parametros.carga_maxM = 100; - RecogidaDef.Parametros.carga_maxm = 50; - - //Atributos LATERALIDAD - RecogidaDef.tipos_lateralidad[(int)RecogidaDef.Lateralidad.Ambos] = "Ambos"; - RecogidaDef.tipos_lateralidad[(int)RecogidaDef.Lateralidad.Dcha] = "Derecha"; - RecogidaDef.tipos_lateralidad[(int)RecogidaDef.Lateralidad.Izqda] = "Izquierda"; - - //Campos de SENSORES - RecogidaDef.campos_def.cons_id_sens = RecogidaDef.campos.cons_id_sens = "OBJECTID"; - RecogidaDef.campos_def.cons_url_sens = RecogidaDef.campos.cons_url_sens = "http://localiza.info/Utilidades/APIManager.aspx"; - RecogidaDef.campos_def.cons_fecha_sens = RecogidaDef.campos.cons_fecha_sens = "2000-01-01T00:00:00"; - RecogidaDef.campos_def.cons_fechaf_sens = RecogidaDef.campos.cons_fechaf_sens = "2050-01-01T00:00:00"; - - //Campos de CSV - RecogidaDef.campos_def.cons_id_csv = RecogidaDef.campos.cons_id_csv = "Nº"; - RecogidaDef.campos_def.cons_llen_csv = RecogidaDef.campos.cons_llen_csv = "Lectura"; - RecogidaDef.campos_def.cons_fecha_csv = RecogidaDef.campos.cons_fecha_csv = "Fecha"; - RecogidaDef.campos_def.cons_fechai_csv = RecogidaDef.campos.cons_fechai_csv = "01/01/2000 0:01"; - RecogidaDef.campos_def.cons_fechaf_csv = RecogidaDef.campos.cons_fechaf_csv = "01/01/2049 0:00"; - - //Campos de la red navegable que se leen - ComunDef.CamposNW.cons_onew = "ONEWAY"; - ComunDef.CamposNW.cons_kph = "KPH"; - ComunDef.CamposNW.cons_fow = "FOW"; - ComunDef.CamposNW.cons_name = "NAME"; - //Atributos de la red navegable que se leen - ComunDef.AtributosNW.atr_TF = "TF"; - ComunDef.AtributosNW.atr_FT = "FT"; - ComunDef.AtributosNW.atr_N = "N"; - ComunDef.AtributosNW.atr_pedes = "14"; - - //Nombre de simbolos VSM - RecogidaDef.rellena_simbrec_vsm();*/ - } - } -} diff --git a/Model/Recogida.cs b/Model/Recogida.cs new file mode 100644 index 0000000..fdd89cd --- /dev/null +++ b/Model/Recogida.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using OliviaAddInPro.Helper; +using OliviaAddInPro.Services; + +namespace OliviaAddInPro.Model +{ + class Recogida : TratamientoComun + { + public RecogidaServ Serv { get; set; } = null; + public Recogida() + { + Serv = new RecogidaServ(this); + } + + public void Ejecuta(ModosEjec modo) + { + } + } +} diff --git a/Model/RecogidaDef.cs b/Model/RecogidaDef.cs new file mode 100644 index 0000000..fac37a8 --- /dev/null +++ b/Model/RecogidaDef.cs @@ -0,0 +1,862 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace OliviaAddInPro.Model +{ + + /** + * @file RecogidaDef.cs + * Clase con definiciones de recogida comunes al proyecto Olivia y a OliviaTask. + */ + /** + * Clase con definiciones de recogida comunes al proyecto Olivia y a OliviaTask. + */ + + class RecogidaDef + { + //************************************************************************************* + //Enums y structs generales + /** + * Nombre de los campos (de las capas) sobre los que se realizarán consultas para la recogida + */ + public struct Campos + { + public string cons_id; //4 Program $(ArcGISFolder)\bin\ArcGISPro.exe - AnyCPU + x64 pdbonly @@ -133,10 +133,14 @@ + + + + @@ -145,6 +149,7 @@ + @@ -154,6 +159,14 @@ + + + PaneRecogidaSub1.xaml + + + PaneRecogida.xaml + + DockPaneConfig.xaml @@ -183,10 +196,10 @@ DockpaneLimpieza.xaml - + DockpaneRecogida.xaml - + @@ -200,12 +213,6 @@ - - - - - - @@ -220,6 +227,14 @@ + + MSBuild:Compile + Designer + + + Designer + MSBuild:Compile + Designer MSBuild:Compile @@ -256,7 +271,7 @@ Designer MSBuild:Compile - + Designer MSBuild:Compile @@ -265,12 +280,6 @@ MSBuild:Compile - - - - - - @@ -291,12 +300,6 @@ - - - - - - @@ -306,19 +309,6 @@ - - - - - - - - - - - - - @@ -328,6 +318,15 @@ + + + + + + + + + - + @@ -38,15 +38,11 @@ - - - - + - - + @@ -67,18 +63,18 @@ - - - - - - - - -

+ /// Interaction logic for PaneRecogidaSub1View.xaml + /// + public partial class PaneRecogidaSub1View : UserControl + { + public PaneRecogidaSub1View() + { + InitializeComponent(); + } + + private void Button_Click(object sender, RoutedEventArgs e) + { + string capa=HelperGdb.OpenFileDialog(HelperGdb.TiposOpenFileDlg.OpenFtrClassPoint); + if (!string.IsNullOrEmpty(capa)) + { + label_capareco.Content = System.IO.Path.GetFileNameWithoutExtension(capa); + if (DataContext is PaneRecogidaSub1ViewModel mod) + { + if(!mod.AbiertaCapa(capa)) + label_capareco.Content = Resource1.String_selec_capa; + } + } + else + { + label_capareco.Content = Resource1.String_selec_capa; + if (DataContext is PaneRecogidaSub1ViewModel mod) + mod.AbiertaCapa(null); + } + } + + + private void UserControl_Loaded(object sender, RoutedEventArgs e) + { + } + + private void UserControl_Unloaded(object sender, RoutedEventArgs e) + { + + } + + private void txtBox_kgCapac_PreviewTextInput(object sender, TextCompositionEventArgs e) + { + e.Handled = !PanelGlobal.IsValid(((TextBox)sender).Text + e.Text, 1, 10000); + } + + private void comboBox_frac_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + int i = -1; + if (sender is System.Windows.Controls.ComboBox combo) + { + i = combo.SelectedIndex; + + if (DataContext is PaneRecogidaSub1ViewModel mod) + { + mod.ComboFracSel(i); + } + } + + } + + private void comboBox_tipoCarg_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + int i = -1; + if (sender is System.Windows.Controls.ComboBox combo) + { + i = combo.SelectedIndex; + + if (DataContext is PaneRecogidaSub1ViewModel mod) + { + mod.ComboCargSel(i); + } + } + } + + private void comboBox_tipoVehic_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + int i = -1; + if (sender is System.Windows.Controls.ComboBox combo) + { + i = combo.SelectedIndex; + + if (DataContext is PaneRecogidaSub1ViewModel mod) + { + mod.ComboVehicSel(i); + } + } + } + + private void comboBox_tipoCapac_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + int i = -1; + if (sender is System.Windows.Controls.ComboBox combo) + { + i = combo.SelectedIndex; + + if (DataContext is PaneRecogidaSub1ViewModel mod) + { + mod.ComboCapacSel(i); + } + } + } + + private void txtBox_densCont_PreviewTextInput(object sender, TextCompositionEventArgs e) + { + + } + + private void comboBox_tipoLat_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + + } + } +} diff --git a/View/Recogida/old/PaneRecogidaSub2.xaml b/View/Recogida/old/PaneRecogidaSub2.xaml new file mode 100644 index 0000000..7990f69 --- /dev/null +++ b/View/Recogida/old/PaneRecogidaSub2.xaml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + diff --git a/View/Recogida/old/PaneRecogidaSub2.xaml.cs b/View/Recogida/old/PaneRecogidaSub2.xaml.cs new file mode 100644 index 0000000..a91f95d --- /dev/null +++ b/View/Recogida/old/PaneRecogidaSub2.xaml.cs @@ -0,0 +1,143 @@ +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; +using ArcGIS.Core.Data; +using ArcGIS.Desktop.Core; +using OliviaAddInPro.Helper; +using OliviaAddInPro.View; +using OliviaAddInPro.Model; +using ArcGIS.Core.Geometry; +using ArcGIS.Desktop.Mapping; +using ArcGIS.Desktop.Internal.Framework.Controls; + +namespace OliviaAddInPro +{ + /// + /// Interaction logic for PaneRecogidaSub2View.xaml + /// + public partial class PaneRecogidaSub2View : UserControl + { + public PaneRecogidaSub2View() + { + InitializeComponent(); + } + /* + private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e) + { + e.Handled = !PanelGlobal.IsValid(((TextBox)sender).Text + e.Text,0,9999); + } + + /* + * Saca ventana para seleccionar el campo del que leer para elegir la geometría + * + private ArcGIS.Core.Geometry.Geometry SelecLeeGeom(FeatureClass fc, out string _texto, bool multisel) + { + ArcGIS.Core.Geometry.Geometry geomsal = null; + string texto = ""; + + if (fc != null) + { + //saca la ventana de selección de campo + ShowProWndSelectFields selfwnd = new ShowProWndSelectFields(fc, multisel); + if (selfwnd.SelFieldVals.Count > 0) + { + geomsal = HelperGdb.GetGeomSel(fc, selfwnd.SelField, selfwnd.SelFieldVals).Result; + texto = HelperGdb.TextoSal; + } + } + + _texto = texto; + return geomsal; + } + + private ArcGIS.Core.Geometry.Geometry AbreGeom(out string texto) + { + //inicialmente + ArcGIS.Core.Geometry.Geometry geom = null; + texto = Resource1.String_selec_capa; + + //abre + FeatureClass fc = HelperGdb.OpenFtClassDialog(HelperGdb.TiposOpenFileDlg.OpenFtrClassPolygon); + if (fc != null) + { + //hace geom + geom = SelecLeeGeom(fc, out texto, true); + if (geom == null && (HelperGdb.OutStr.Length > 0)) + HelperGlobal.ponMsg(HelperGdb.OutStr, System.Windows.MessageBoxImage.Error); + + HelperGdb.Free(fc); + } + return geom; + } + + private void button_caparestr_Click(object sender, RoutedEventArgs e) + { + string texto = ""; + ArcGIS.Core.Geometry.Geometry geom = AbreGeom(out texto); + if (DataContext is PaneLimpiezaSub2ViewModel mod) + { + mod.GeomRestr = geom; + } + if (geom != null) + label_caparestr.Content = texto; + else + label_caparestr.Content =Resource1.String_selec_capa; + } + + private void button_capaniv_Click(object sender, RoutedEventArgs e) + { + string texto = ""; + ArcGIS.Core.Geometry.Geometry geom = AbreGeom(out texto); + if (DataContext is PaneLimpiezaSub2ViewModel mod) + { + mod.GeomNiv = geom; + } + if (geom != null) + label_capaniv.Content = texto; + else + label_capaniv.Content = Resource1.String_selec_capa; + } + + private void button_capazon_Click(object sender, RoutedEventArgs e) + { + string texto = ""; + ArcGIS.Core.Geometry.Geometry geom = AbreGeom(out texto); + if (DataContext is PaneLimpiezaSub2ViewModel mod) + { + mod.GeomZon = geom; + } + + if (geom != null) + label_capazon.Content = texto; + else + label_capazon.Content = Resource1.String_selec_capa; + } + + private void button_capainst_Click(object sender, RoutedEventArgs e) + { + string texto = ""; + + ArcGIS.Core.Geometry.Geometry geomsal = AbreGeom(out texto); + + if ((DataContext is PaneLimpiezaSub2ViewModel mod) && geomsal != null && geomsal is MapPoint mp) + { + mod.CoordsInstal = mp.Coordinate2D; + } + if (geomsal != null) + label_capainst.Content = texto; + else + label_capainst.Content = Resource1.String_selec_capa; + }*/ + } +} diff --git a/View/Recogida/old/PaneRecogidaSub4.xaml b/View/Recogida/old/PaneRecogidaSub4.xaml new file mode 100644 index 0000000..58bf95d --- /dev/null +++ b/View/Recogida/old/PaneRecogidaSub4.xaml @@ -0,0 +1,71 @@ + + + + + + + + + + + diff --git a/View/Recogida/old/PaneRecogidaSub4.xaml.cs b/View/Recogida/old/PaneRecogidaSub4.xaml.cs new file mode 100644 index 0000000..67c66f3 --- /dev/null +++ b/View/Recogida/old/PaneRecogidaSub4.xaml.cs @@ -0,0 +1,35 @@ +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 OliviaAddInPro +{ + /// + /// Interaction logic for PaneRecogidaSub4View.xaml + /// + public partial class PaneRecogidaSub4View : UserControl + { + public PaneRecogidaSub4View() + { + InitializeComponent(); + } + + /*private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e) + { + e.Handled = !PanelGlobal.IsValid(((TextBox)sender).Text + e.Text, 0,100); + }*/ + + } +} diff --git a/ViewModel/Configuracion/DockpaneConfigViewModel.cs b/ViewModel/Configuracion/DockpaneConfigViewModel.cs index 50e0169..71051f0 100644 --- a/ViewModel/Configuracion/DockpaneConfigViewModel.cs +++ b/ViewModel/Configuracion/DockpaneConfigViewModel.cs @@ -24,6 +24,7 @@ namespace OliviaAddInPro internal class DockpaneConfigViewModel : DockPane { private bool firstTimeShow = true; + private static bool hideTemp = false; private const string _dockPaneID = "OliviaAddInPro_DockpaneConfig"; protected DockpaneConfigViewModel() { @@ -43,6 +44,19 @@ namespace OliviaAddInPro pane.Activate(); } + internal static void Hide_() + { + DockPane pane = FrameworkApplication.DockPaneManager.Find(_dockPaneID); + if (pane == null) + return; + hideTemp = true; + pane.Hide(); + } + internal static void Reset() + { + //HAY QUE HACER QUE SE LIMPIE TODO + } + //The parameter passed to this method will be true if the Dockpane is being opened and it is false when you close the dockpane //also false the first time protected override void OnShow(bool isVisible) diff --git a/ViewModel/Limpieza/PaneLimpiezaSub1ViewModel.cs b/ViewModel/Limpieza/PaneLimpiezaSub1ViewModel.cs index e3e6bfc..2e4cbfb 100644 --- a/ViewModel/Limpieza/PaneLimpiezaSub1ViewModel.cs +++ b/ViewModel/Limpieza/PaneLimpiezaSub1ViewModel.cs @@ -29,9 +29,7 @@ namespace OliviaAddInPro private ObservableCollection tiposTto = new ObservableCollection(LimpiezaDef.tipos_tto_str); private ObservableCollection opsAmbs=new ObservableCollection(); private int selOpAmb = -1; - private ObservableCollection> ambitos = new ObservableCollection>(); - private bool capaAbierta = false; - + private ObservableCollection> ambitos = new ObservableCollection>(); /** * Array de variables de tipo AmbitsList para mostrar en la lista, se rellena al elegir el tipo de tratamiento */ @@ -54,10 +52,7 @@ namespace OliviaAddInPro bool[] amb_tra_gdb = null; private LimpiezaServ limpServ; - //implementan la interfaz Limpieza - private int selTto = -1; private bool[] ambitosSel; - private string capaElems = ""; #region Properties @@ -66,13 +61,6 @@ namespace OliviaAddInPro get { return Resource1.String_tto; } } - private string lblCapaLimp; - public string LblCapaLimp - { - get { return lblCapaLimp; } - set { base.SetProperty(ref lblCapaLimp, value, () => LblCapaLimp); } - } - private string textVeloDespl; public string TextVeloDespl { @@ -126,12 +114,13 @@ namespace OliviaAddInPro base.NotifyPropertyChanged("TiposTto"); } } + private int tipoTto = -1; public int TipoTto { - get { return selTto; } + get { return tipoTto; } set { - selTto = value; + tipoTto = value; base.NotifyPropertyChanged("TipoTto"); } } @@ -171,29 +160,11 @@ namespace OliviaAddInPro base.NotifyPropertyChanged("AmbitosSel"); } } - public bool CapaAbierta - { - get { return capaAbierta; } - set - { - capaAbierta = value; - base.NotifyPropertyChanged("CapaAbierta"); - } - } - public string CapaElems - { - get { return capaElems; } - set - { - capaElems = value; - base.NotifyPropertyChanged("CapaElems"); - } - } #endregion Properties public PaneLimpiezaSub1ViewModel() { - lblCapaLimp = Resource1.String_selec_capa; + LblCapaElems = Resource1.String_selec_capa; timeTto = 10; textVeloDespl = "10"; lblUdsTimeTto = "min"; @@ -204,7 +175,7 @@ namespace OliviaAddInPro /** * Realiza las comprobaciones para cuando se ha abierto una capa */ - public void AbiertaCapa(string capa) + public bool AbiertaCapa(string capa) { CapaAbierta = false; CapaElems = string.Empty; @@ -212,12 +183,12 @@ namespace OliviaAddInPro Ambitos.Clear(); OliviaGlob.TipoEjec = OliviaGlob.TipoEjec | TiposEjecucion.Config; //lo reinicia, por si estaba después de planificar if (string.IsNullOrEmpty(capa)) - return; + return false; //comprueba los campos de limpieza if (!limpServ.CompruebaCamposLimp(capa)) { - HelperGlobal.ponMsg(HelperGdb.OutStr, System.Windows.MessageBoxImage.Warning); - return; + HelperGlobal.ponMsg(limpServ.ErrStr, System.Windows.MessageBoxImage.Warning); + return false; } amb_tra_gdb = limpServ.BuscAmbGdb(capa); @@ -234,11 +205,12 @@ namespace OliviaAddInPro { HelperGlobal.ponMsg(Resource1.String_error_elems_tabla, System.Windows.MessageBoxImage.Warning); - return; + return false; } //hay elementos en la gdb CapaElems = capa; CapaAbierta = true; + return true; } /** * Realiza los cambios en los ámbitos cuando se ha seleccionado un tratamiento @@ -399,7 +371,7 @@ namespace OliviaAddInPro if (TipoTto < (int)LimpiezaDef.TiposTto.TtoCustom) { //pide un array de booleanos donde es true en las posiciones de los ámbitos comunes - amb_val = limpServ.DameAmbTto(selTto); + amb_val = limpServ.DameAmbTto(tipoTto); //crea un array con el número de elementos del array anterior que sean true ambs_list = new ObservableCollection();//cuenta los trues //rellena el array apuntando los índices y los textos correspondientes a los trues @@ -500,7 +472,7 @@ namespace OliviaAddInPro ambitosSel = new bool[(int)LimpiezaDef.AmbitsTra.AmbN]; //reinicia los ambitos seleccionados if (ambitos.Count == 0) return false; - else if ((selOpAmb == 0) && (selTto < (int)LimpiezaDef.TiposTto.TtoPapeVaci)) + else if ((selOpAmb == 0) && (tipoTto < (int)LimpiezaDef.TiposTto.TtoPapeVaci)) { for (int i = 0; i < ambitos.Count; i++) { @@ -509,7 +481,7 @@ namespace OliviaAddInPro ambitosSel[(int)((AmbitsList)ambs_list_tod_lin[i]).amb_i] = true; } } - else if ((selOpAmb == 0) && (selTto >= (int)LimpiezaDef.TiposTto.TtoPapeVaci)) + else if ((selOpAmb == 0) && (tipoTto >= (int)LimpiezaDef.TiposTto.TtoPapeVaci)) { for (int i = 0; i < ambitos.Count; i++) { diff --git a/ViewModel/Limpieza/PaneLimpiezaViewModel.cs b/ViewModel/Limpieza/PaneLimpiezaViewModel.cs index 07079ad..deef3a5 100644 --- a/ViewModel/Limpieza/PaneLimpiezaViewModel.cs +++ b/ViewModel/Limpieza/PaneLimpiezaViewModel.cs @@ -20,14 +20,15 @@ namespace OliviaAddInPro _subPanel1ViewModel = new PaneLimpiezaSub1ViewModel(); _subPanel2ViewModel = new PaneLimpiezaSub2ViewModel(); _subPanel3ViewModel = new PaneLimpiezaSub3ViewModel(); - _subPanel4ViewModel = new PaneLimpiezaSub4ViewModel(); + _subPanel4ViewModel = new PaneLimpiezaSub4ViewModel(); + OptionsMenu = new ObservableCollection { - new OptionsMenuItem(new BitmapImage(new Uri("pack://application:,,,/OliviaAddInPro;component/Resources/Dog32.png")), Resource1.String_tto, _subPanel1ViewModel), - new OptionsMenuItem(new BitmapImage(new Uri("pack://application:,,,/OliviaAddInPro;component/Resources/Dino32.png")), Resource1.String_zonif, _subPanel2ViewModel), - new OptionsMenuItem(new BitmapImage(new Uri("pack://application:,,,/OliviaAddInPro;component/Resources/Cat32.png")), Resource1.String_ctrol, _subPanel3ViewModel), - new OptionsMenuItem(new BitmapImage(new Uri("pack://application:,,,/OliviaAddInPro;component/Resources/Panda32.png")), Resource1.String_tiempos, _subPanel4ViewModel) + new OptionsMenuItem(new BitmapImage(new Uri("pack://application:,,,/OliviaAddInPro;component/Resources/inicio.png")), Resource1.String_tto, _subPanel1ViewModel), + new OptionsMenuItem(new BitmapImage(new Uri("pack://application:,,,/OliviaAddInPro;component/Resources/zonas.png")), Resource1.String_zonif, _subPanel2ViewModel), + new OptionsMenuItem(new BitmapImage(new Uri("pack://application:,,,/OliviaAddInPro;component/Resources/ptosctrl.png")), Resource1.String_ctrol, _subPanel3ViewModel), + new OptionsMenuItem(new BitmapImage(new Uri("pack://application:,,,/OliviaAddInPro;component/Resources/time.png")), Resource1.String_tiempos, _subPanel4ViewModel) }; SelectedOption = OptionsMenu[0]; limp = OliviaGlob.Limp; @@ -59,6 +60,10 @@ namespace OliviaAddInPro CurrentSubPanelPage = value.SubPanelViewModel; } } + public PaneLimpiezaSub1ViewModel PaneSub1 + { + get { return _subPanel1ViewModel; } + } public bool Lee(out string err_str) { diff --git a/ViewModel/PanelViewModelBase.cs b/ViewModel/PanelViewModelBase.cs index f67f734..5588ef9 100644 --- a/ViewModel/PanelViewModelBase.cs +++ b/ViewModel/PanelViewModelBase.cs @@ -20,6 +20,32 @@ namespace OliviaAddInPro public PaneLimpiezaSub3ViewModel _subPanel3ViewModel; public PaneLimpiezaSub4ViewModel _subPanel4ViewModel; + private string lblCapaElems = Resource1.String_selec_capa; + public string LblCapaElems + { + get { return lblCapaElems; } + set { base.SetProperty(ref lblCapaElems, value, () => LblCapaElems); } + } + private bool capaAbierta = false; + public bool CapaAbierta + { + get { return capaAbierta; } + set + { + capaAbierta = value; + base.NotifyPropertyChanged("CapaAbierta"); + } + } + private string capaElems = ""; + public string CapaElems + { + get { return capaElems; } + set + { + capaElems = value; + base.NotifyPropertyChanged("CapaElems"); + } + } #endregion Properties public bool LeeComun(TratamientoComun com, out string err_str) diff --git a/ViewModel/DockpaneRecogidaViewModel.cs b/ViewModel/Recogida/DockpaneRecogidaViewModel.cs similarity index 77% rename from ViewModel/DockpaneRecogidaViewModel.cs rename to ViewModel/Recogida/DockpaneRecogidaViewModel.cs index 5e9a19d..1d45c1d 100644 --- a/ViewModel/DockpaneRecogidaViewModel.cs +++ b/ViewModel/Recogida/DockpaneRecogidaViewModel.cs @@ -24,9 +24,13 @@ namespace OliviaAddInPro { private bool firstTimeShow = true; private static bool hideTemp = false; + private PaneRecogidaViewModel _pane; private const string _dockPaneID = "OliviaAddInPro_DockpaneRecogida"; - protected DockpaneRecogidaViewModel() { } + protected DockpaneRecogidaViewModel() { + _pane = new PaneRecogidaViewModel(); + CurrentPage = _pane; + } /// /// Show the DockPane. @@ -48,6 +52,10 @@ namespace OliviaAddInPro hideTemp = true; pane.Hide(); } + internal static void Reset() + { + //HAY QUE HACER QUE SE LIMPIE TODO + } //The parameter passed to this method will be true if the Dockpane is being opened and it is false when you close the dockpane //also false the first time @@ -65,7 +73,7 @@ namespace OliviaAddInPro /// /// Text shown near the top of the DockPane. /// - private string _heading = "My DockPane"; + private string _heading = Resource1.String_header_recogida; public string Heading { get { return _heading; } @@ -74,5 +82,15 @@ namespace OliviaAddInPro SetProperty(ref _heading, value, () => Heading); } } + + private PanelViewModelBase _currentPage; + public PanelViewModelBase CurrentPage + { + get { return _currentPage; } + set + { + SetProperty(ref _currentPage, value, () => CurrentPage); + } + } } } diff --git a/ViewModel/Recogida/PaneRecogidaSub1ViewModel.cs b/ViewModel/Recogida/PaneRecogidaSub1ViewModel.cs new file mode 100644 index 0000000..e7a012d --- /dev/null +++ b/ViewModel/Recogida/PaneRecogidaSub1ViewModel.cs @@ -0,0 +1,575 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using ArcGIS.Core.CIM; +using ArcGIS.Core.Data; +using ArcGIS.Core.Data.UtilityNetwork.Trace; +using ArcGIS.Core.Geometry; +using ArcGIS.Desktop.Catalog; +using ArcGIS.Desktop.Core; +using ArcGIS.Desktop.Editing; +using ArcGIS.Desktop.Extensions; +using ArcGIS.Desktop.Framework; +using ArcGIS.Desktop.Framework.Contracts; +using ArcGIS.Desktop.Framework.Dialogs; +using ArcGIS.Desktop.Framework.Threading.Tasks; +using ArcGIS.Desktop.Mapping; +using System.Collections.ObjectModel; +using OliviaAddInPro.Model; +using OliviaAddInPro.Helper; +using ArcGIS.Desktop.Internal.Layouts.Utilities; +using OliviaAddInPro.Services; +using System.Windows; + +namespace OliviaAddInPro +{ + internal class PaneRecogidaSub1ViewModel : PanelViewModelBase + { + private ObservableCollection> tiposFrac = new ObservableCollection>(); + private ObservableCollection> tiposCarg = new ObservableCollection>(); + private ObservableCollection> tiposLate = new ObservableCollection>(); + private ObservableCollection tiposVehic = new ObservableCollection(); + private ObservableCollection tiposCapac = new ObservableCollection(); + private RecogidaServ recoServ = new RecogidaServ(null); //no hace falta instancia reco aquí + + /** + * Array de booleanos enumerando si se existen en la capa seleccionada los tipos de fracción + */ + public bool[] tipos_fracc_bool = new bool[(int)RecogidaDef.TiposFracción.N - 1]; + /** + * Array de booleanos enumerando si se existen en la capa seleccionada los tipos de carga + */ + public bool[] tipos_carg_bool = new bool[(int)RecogidaDef.TiposCarga.N - 1]; + /** + * Array de cadenas de caracteres enumerando si se existen en la capa seleccionada los tipos de vehículos + */ + public bool[] tipos_vehic_bool = new bool[(int)RecogidaDef.TiposVehic.N]; + + #region Properties + + public override string DisplayName + { + get { return Resource1.String_tto; } + } + public ObservableCollection> TiposFrac + { + get { return tiposFrac; } + set + { + tiposFrac = value; + base.NotifyPropertyChanged("TiposFrac"); + } + } + public ObservableCollection> TiposCarg + { + get { return tiposCarg; } + set + { + tiposCarg = value; + base.NotifyPropertyChanged("TiposCarg"); + } + } + public ObservableCollection TiposVehic + { + get { return tiposVehic; } + set + { + tiposVehic = value; + base.NotifyPropertyChanged("TiposVehic"); + } + } + public ObservableCollection TiposCapac + { + get { return tiposCapac; } + set + { + tiposCapac = value; + base.NotifyPropertyChanged("TiposCapac"); + } + } + public ObservableCollection> TiposLate + { + get { return tiposLate; } + set + { + tiposLate = value; + base.NotifyPropertyChanged("TiposLate"); + } + } + private int tipoFrac = -1; + public int TipoFrac + { + get { return tipoFrac; } + set + { + tipoFrac = value; + base.NotifyPropertyChanged("TipoFrac"); + } + } + private int tipoCarg = -1; + public int TipoCarg + { + get { return tipoFrac; } + set + { + tipoCarg = value; + base.NotifyPropertyChanged("TipoCarg"); + } + } + private int tipoVehic = -1; + public int TipoVehic + { + get { return tipoFrac; } + set + { + tipoVehic = value; + base.NotifyPropertyChanged("TipoVehic"); + } + } + private int tipoCapac = -1; + public int TipoCapac + { + get { return tipoCapac; } + set + { + tipoCapac = value; + base.NotifyPropertyChanged("TipoCapac"); + } + } + private int tipoLate = -1; + public int TipoLate + { + get { return tipoLate; } + set + { + tipoCapac = value; + base.NotifyPropertyChanged("TipoLate"); + } + } + private string textKgCapac; + public string TextKgCapac + { + get { return textKgCapac; } + set { base.SetProperty(ref textKgCapac, value, () => TextKgCapac); } + } + private string textDensCont=""; + public string TextDensCont + { + get { return textDensCont; } + set { base.SetProperty(ref textKgCapac, value, () => TextDensCont); } + } + private Visibility visTextDens = Visibility.Hidden; + public Visibility VisTextDens + { + get { return visTextDens; } + + set + { + visTextDens = value; + base.NotifyPropertyChanged("VisTextDens"); + } + } + private Visibility visCombLate = Visibility.Hidden; + public Visibility VisCombLate + { + get { return visCombLate; } + + set + { + visCombLate = value; + base.NotifyPropertyChanged("VisCombLate"); + } + } + private string toolTip_TextDensCont = Resource1.String_tooltip_textbox_denscont; + public string ToolTip_TextDensCont + { + get { return toolTip_TextDensCont; } + + set + { + toolTip_TextDensCont = value; + base.NotifyPropertyChanged("ToolTip_TextDensCont"); + } + } + private bool enabComboCapac = false; + public bool EnabComboCapac + { + get { return CapaAbierta && enabComboCapacFrac; } + set + { + enabComboCapac = value; + base.NotifyPropertyChanged("EnabComboCapac"); + } + } + private bool enabComboCapacFrac + { + get { return enabComboCapacFrac; } + set + { + enabComboCapacFrac = value; + base.NotifyPropertyChanged("EnabComboCapac"); + base.NotifyPropertyChanged("EnabComboCapacFrac"); + } + } + /** + * kg de carga en cada contenedor. + * Si se cogen llenos, vale -1 (los kg son densidad_cont*capac). + * Si se lee el campo, es 0 (los kg son los leídos en el campo). + * Si se pone a todos los cont lo mismo, vale esos kg + */ + private int kgCont = -1; + public int KgCont + { + get { return kgCont; } + set + { + kgCont = value; + base.NotifyPropertyChanged("KgCont"); + } + } + #endregion + + public PaneRecogidaSub1ViewModel() + { + if (RecogidaDef.lleno) + { + KgCont = -1; + } + else if (RecogidaDef.kgrec_camp) + { + KgCont = 0; + } + else + { + KgCont = RecogidaDef.kgrec_cont; + } + } + /** + * Realiza las comprobaciones para cuando se ha abierto una capa + */ + public bool AbiertaCapa(string capa) + { + CapaAbierta = false; + CapaElems = string.Empty; + TiposFrac.Clear(); + TiposCarg.Clear(); + TiposVehic.Clear(); + TiposCapac.Clear(); + OliviaGlob.TipoEjec = OliviaGlob.TipoEjec | TiposEjecucion.Config; //lo reinicia, por si estaba después de planificar + if (string.IsNullOrEmpty(capa)) + return false; + + //comprueba los campos de recogida + if (recoServ.CompruebaCamposReco(capa)>1 || (recoServ.CompruebaCamposReco(capa)==1 && RecogidaDef.kgrec_camp)) + { + HelperGlobal.ponMsg(recoServ.ErrStr, System.Windows.MessageBoxImage.Warning); + return false; + } + //lee qué fracciones hay en la gdb + ObservableCollection valores = recoServ.DameVals(capa, RecogidaDef.campos_def.cons_fracc); + if (valores==null) + { + HelperGlobal.ponMsg(recoServ.ErrStr, System.Windows.MessageBoxImage.Warning); + return false; + } + rellenaFrac(valores); + + //se rellena el array que se incorpora al desplegable relacionado con el tipo de basura + valores = recoServ.DameVals(capa, RecogidaDef.campos_def.cons_nomrec); + if (valores == null) + { + HelperGlobal.ponMsg(recoServ.ErrStr, System.Windows.MessageBoxImage.Warning); + return false; + } + rellenaCarg(valores); + + if (RecogidaDef.lleno) + { + VisTextDens = Visibility.Visible; + } + else + { + VisTextDens = Visibility.Hidden; + } + TiposVehic.Clear(); + for (int i = 0; i < RecogidaDef.tipos_vehic_str.Length; i++) + { + TiposVehic.Add(RecogidaDef.tipos_vehic_str[i]); + } + TiposCapac.Clear(); + + //hay elementos en la gdb + CapaElems = capa; + CapaAbierta = true; + return true; + } + public void rellenaFrac(ObservableCollection valoresFrac) + { + //se redimensionan los arrays de nuevo por si se ha pinchado varias veces en el botón de leer tabla + System.Array.Resize(ref RecogidaDef.tipos_fracc_str, (int)RecogidaDef.TiposFracción.N - 1); + System.Array.Resize(ref tipos_fracc_bool, (int)RecogidaDef.TiposFracción.N - 1); + bool encontrado = false; + int i, j; + for (i = 0; i < valoresFrac.Count; i++) + { + //para que ponga '-' si es un campo vacío + if (valoresFrac[i] == "") + valoresFrac[i] = "-"; + + encontrado = false; + for (j = 0; j < (int)RecogidaDef.TiposFracción.N - 1; j++) + { + if (RecogidaDef.tipos_fracc_str[j] == valoresFrac[i]) + { + tipos_fracc_bool[j] = true; + encontrado = true; + break; + } + } + if (encontrado == false) + { + System.Array.Resize(ref RecogidaDef.tipos_fracc_str, RecogidaDef.tipos_fracc_str.Length + 1); + System.Array.Resize(ref tipos_fracc_bool, tipos_fracc_bool.Length + 1); + RecogidaDef.tipos_fracc_str[RecogidaDef.tipos_fracc_str.Length - 1] = valoresFrac[i]; + tipos_fracc_bool[tipos_fracc_bool.Length - 1] = true; + } + } + for(i=0;i< RecogidaDef.tipos_fracc_str.Length;i++) + { + TiposFrac.Add(new EnabledComboBoxItem(RecogidaDef.tipos_fracc_str[i], tipos_fracc_bool[i])); + } + } + public void rellenaCarg(ObservableCollection valores) + { + int i, j; + bool encontrado; + + //se redimensionan los arrays de nuevo por si se ha pinchado varias veces en el botón de leer tabla + System.Array.Resize(ref RecogidaDef.tipos_carg_str, (int)RecogidaDef.TiposCarga.N - 1); + System.Array.Resize(ref tipos_carg_bool, (int)RecogidaDef.TiposCarga.N - 1); + + for (i = 0; i < valores.Count; i++) + { + //para que ponga '-' si es un campo vacío + if (valores[i] == "") + valores[i] = "-"; + + encontrado = false; + for (j = 0; j < (int)RecogidaDef.TiposCarga.N - 1; j++) + { + if (RecogidaDef.tipos_carg_str[j] == valores[i]) + { + tipos_carg_bool[j] = true; + encontrado = true; + break; + } + } + if (encontrado == false) + { + System.Array.Resize(ref RecogidaDef.tipos_carg_str, RecogidaDef.tipos_carg_str.Length + 1); + System.Array.Resize(ref tipos_carg_bool, tipos_carg_bool.Length + 1); + //reco.tipos_carg_bool[i] = false; + RecogidaDef.tipos_carg_str[RecogidaDef.tipos_carg_str.Length - 1] = valores[i]; + tipos_carg_bool[tipos_carg_bool.Length - 1] = true; + } + } + for (i = 0; i < RecogidaDef.tipos_carg_str.Length; i++) + { + TiposCarg.Add(new EnabledComboBoxItem(RecogidaDef.tipos_carg_str[i], tipos_carg_bool[i])); + } + } + /** + * Realiza los cambios en los ámbitos cuando se ha seleccionado una fracción + */ + public void ComboFracSel(int tto) + { + if (tto < 0) + return; + + try + { + //cuando se selecciona un item pintado en gris (que no existe en la GDB) se actúa como si no se hubiera seleccionado item + TipoFrac = tto; + if ((TipoVehic >= 0) && (TipoCarg >= 0)) + { + //si también se ha seleccionado tipo de carga y de vehículo, se rellena la lista de capacidades + rellena_capac(); + } + if (RecogidaDef.lleno) + { + if (TipoFrac < (int)RecogidaDef.TiposFracción.Otra) + { + TextDensCont = RecogidaDef.dens_frac_cont[TipoFrac].ToString(); + } + else + { + TextDensCont = ""; + } + } + } + catch (Exception) + { + HelperGlobal.ponMsg("Error al seleccionar el tipo de fracción"); + return; + } + + } + /** + * Rellena la lista de capacidades de vehículos disponibles + */ + private void rellena_capac() + { + TiposCapac.Clear(); + TextKgCapac = ""; + if (TipoVehic >= 0 && TipoVehic < (int)RecogidaDef.TiposVehic.N && + TipoCarg >= 0 && TipoCarg < (int)RecogidaDef.TiposCarga.N) + { + TiposCapac.Clear(); + TextKgCapac=""; + if (RecogidaDef.cargas_max_vehic[TipoCarg, TipoVehic].n > 0) + { + for (int i = 0; i < RecogidaDef.cargas_max_vehic[TipoCarg, TipoVehic].n; i++) + TiposCapac.Add(RecogidaDef.cargas_max_vehic[TipoCarg, TipoVehic].vol[i] + " m3"); + } + + } + else if (TipoVehic >= 0 && TipoVehic < (int)RecogidaDef.TiposVehic.N && + TipoCarg >= (int)RecogidaDef.TiposCarga.N) + { + if (RecogidaDef.cargas_max_vehic[(int)RecogidaDef.TiposCarga.Otra, TipoVehic].n > 0) + { + for (int i = 0; i < RecogidaDef.cargas_max_vehic[(int)RecogidaDef.TiposCarga.Otra, TipoVehic].n; i++) + TiposCapac.Add(RecogidaDef.cargas_max_vehic[(int)RecogidaDef.TiposCarga.Otra, TipoVehic].vol[i] + " m3"); + } + } + } + + /** + * Rellena la caja de texto con la capacidad en kg máxima del vehículo seleccionado + */ + private void rellena_kgmax() + { + int kgmax, off; + + if (TipoVehic >= 0 && TipoVehic < (int)RecogidaDef.TiposVehic.N && + TipoCarg >= 0 && TipoCarg < (int)RecogidaDef.TiposCarga.N && + TipoCapac >= 0 && TipoCapac < (int)RecogidaDef.cargas_max_vehic[TipoCarg, TipoVehic].n) + { + if ((RecogidaDef.cargas_max_vehic[TipoCarg, TipoVehic].offset != null) && (TipoFrac < (int)RecogidaDef.TiposFracción.N)) + off = RecogidaDef.cargas_max_vehic[TipoCarg, TipoVehic].offset[TipoCapac, TipoFrac]; + else if ((RecogidaDef.cargas_max_vehic[TipoCarg, TipoVehic].offset != null) && (TipoFrac >= (int)RecogidaDef.TiposFracción.N)) + off = RecogidaDef.cargas_max_vehic[TipoCarg, TipoVehic].offset[TipoCapac, (int)RecogidaDef.TiposFracción.Otra]; + else + off = 0; + if (TipoFrac < (int)RecogidaDef.TiposFracción.N) + kgmax = RecogidaDef.cargas_max_vehic[TipoCarg, TipoVehic].vol[TipoCapac] * RecogidaDef.dens_frac_cami[TipoFrac] + off; + else + kgmax = RecogidaDef.cargas_max_vehic[TipoCarg, TipoVehic].vol[TipoCapac] * RecogidaDef.dens_frac_cami[(int)RecogidaDef.TiposFracción.Otra] + off; + TextKgCapac = kgmax.ToString(); + } + + else if (TipoVehic >= 0 && TipoVehic < (int)RecogidaDef.TiposVehic.N && + TipoCarg >= (int)RecogidaDef.TiposCarga.N && + TipoCapac >= 0 && TipoCapac < (int)RecogidaDef.cargas_max_vehic[(int)RecogidaDef.TiposCarga.Otra, TipoVehic].n) + { + if ((RecogidaDef.cargas_max_vehic[(int)RecogidaDef.TiposCarga.Otra, TipoVehic].offset != null) && (TipoFrac < (int)RecogidaDef.TiposFracción.N)) + off = RecogidaDef.cargas_max_vehic[(int)RecogidaDef.TiposCarga.Otra, TipoVehic].offset[TipoCapac, TipoFrac]; + else if ((RecogidaDef.cargas_max_vehic[(int)RecogidaDef.TiposCarga.Otra, TipoVehic].offset != null) && (TipoFrac >= (int)RecogidaDef.TiposFracción.N)) + off = RecogidaDef.cargas_max_vehic[(int)RecogidaDef.TiposCarga.Otra, TipoVehic].offset[TipoCapac, (int)RecogidaDef.TiposFracción.Otra]; + else + off = 0; + if (TipoFrac < (int)RecogidaDef.TiposFracción.N) + kgmax = RecogidaDef.cargas_max_vehic[(int)RecogidaDef.TiposCarga.Otra, TipoVehic].vol[TipoCapac] * RecogidaDef.dens_frac_cami[TipoFrac] + off; + else + kgmax = RecogidaDef.cargas_max_vehic[(int)RecogidaDef.TiposCarga.Otra, TipoVehic].vol[TipoCapac] * RecogidaDef.dens_frac_cami[(int)RecogidaDef.TiposFracción.Otra] + off; + TextKgCapac = kgmax.ToString(); + } + } + /** + * Realiza los cambios en los ámbitos cuando se ha seleccionado un tipo de carga + */ + public void ComboCargSel(int tto) + { + if (tto < 0) + return; + try + { + TipoCarg=tto; + + if (TipoCarg == (int)RecogidaDef.TiposCarga.Lateral) + VisCombLate = Visibility.Visible; + else + visCombLate = Visibility.Hidden; + if (TipoCarg >= 0 && TipoCarg < (int)RecogidaDef.TiposCarga.N - 1) + { + //cuando se selecciona una carga contemplada en el listado origianl se habilita el comboBox de capacidad ya que sí habrá contemplado datos para tipos de cargas conocidos. + enabComboCapacFrac = true; + //textBox_t_vaciado.Text = RecogidaDef.t_vaci[TipoCarg].ToString(); + if (TipoVehic >= 0) + { + //si también se ha seleccionado tipo de vehículo, se rellena la lista de capacidades + rellena_capac(); + } + } + else if (TipoCarg >= (int)RecogidaDef.TiposCarga.N - 1) + { + //cuando se selecciona una carga no contemplada en el listado original se deshabilita el comboBox de capacidad porque no tendrá datos contemplado para ese caso + enabComboCapacFrac = false; + //textBox_t_vaciado.Text = RecogidaDef.t_vaci[(int)RecogidaDef.TiposCarga.Otra].ToString(); + if (TipoVehic >= 0) + { + //si también se ha seleccionado tipo de vehículo, se rellena la lista de capacidades + rellena_capac(); + } + } + } + catch (Exception) + { + HelperGlobal.ponMsg("Error al seleccionar la carga"); + return; + } + } + /** + * Realiza los cambios en los ámbitos cuando se ha seleccionado un tipo de vehículo + */ + public void ComboVehicSel(int tto) + { + if (tto < 0) + return; + try + { + TipoVehic = tto; + if (TipoVehic >= 0) + { + //si también se ha seleccionado tipo de carga, se rellena la lista de capacidades + rellena_capac(); + } + } + catch (Exception) + { + HelperGlobal.ponMsg("Error al seleccionar el tipo de vehículo"); + return; + } + } + /** + * Realiza los cambios en los ámbitos cuando se ha seleccionado un tipo de capacidad + */ + public void ComboCapacSel(int tto) + { + if (tto < 0) + return; + + try + { + TipoCapac = tto; + rellena_kgmax(); + } + catch (Exception) + { + HelperGlobal.ponMsg("Error al seleccionar la capacidad"); + return; + } + } + } +} diff --git a/ViewModel/Recogida/PaneRecogidaViewModel.cs b/ViewModel/Recogida/PaneRecogidaViewModel.cs new file mode 100644 index 0000000..2f25db7 --- /dev/null +++ b/ViewModel/Recogida/PaneRecogidaViewModel.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using ArcGIS.Core.CIM; +using ArcGIS.Core.Data; +using ArcGIS.Core.Geometry; +using ArcGIS.Desktop.Catalog; +using ArcGIS.Desktop.Core; +using ArcGIS.Desktop.Editing; +using ArcGIS.Desktop.Extensions; +using ArcGIS.Desktop.Framework; +using ArcGIS.Desktop.Framework.Contracts; +using System.Collections.ObjectModel; +using ArcGIS.Desktop.Framework.Dialogs; +using ArcGIS.Desktop.Framework.Threading.Tasks; +using ArcGIS.Desktop.Mapping; +using OliviaAddInPro.Helper; +using OliviaAddInPro.Model; +using System.Windows.Media.Imaging; + +namespace OliviaAddInPro +{ + internal class PaneRecogidaViewModel : PanelViewModelBase + { + private PaneRecogidaSub1ViewModel _subPanel1ViewModel; + //Recogida reco; + + public PaneRecogidaViewModel() + { + _subPanel1ViewModel = new PaneRecogidaSub1ViewModel(); + _subPanel2ViewModel = new PaneLimpiezaSub2ViewModel(); + _subPanel3ViewModel = new PaneLimpiezaSub3ViewModel(); + _subPanel4ViewModel = new PaneLimpiezaSub4ViewModel(); + + OptionsMenu = new ObservableCollection + { + new OptionsMenuItem(new BitmapImage(new Uri("pack://application:,,,/OliviaAddInPro;component/Resources/inicio.png")), Resource1.String_tto, _subPanel1ViewModel), + new OptionsMenuItem(new BitmapImage(new Uri("pack://application:,,,/OliviaAddInPro;component/Resources/zonas.png")), Resource1.String_zonif, _subPanel2ViewModel), + new OptionsMenuItem(new BitmapImage(new Uri("pack://application:,,,/OliviaAddInPro;component/Resources/ptosctrl.png")), Resource1.String_ctrol, _subPanel3ViewModel), + new OptionsMenuItem(new BitmapImage(new Uri("pack://application:,,,/OliviaAddInPro;component/Resources/time.png")), Resource1.String_tiempos, _subPanel4ViewModel) + }; + SelectedOption = OptionsMenu[0]; + //limp = OliviaGlob.Limp; + } + public override string DisplayName + { + get { return Resource1.String_header_limpieza; } + } + private ObservableCollection _optionsMenu = new ObservableCollection(); + public ObservableCollection OptionsMenu + { + get { return _optionsMenu; } + set { SetProperty(ref _optionsMenu, value, () => OptionsMenu); } + } + + private PanelViewModelBase _currentSubPanelPage; + public PanelViewModelBase CurrentSubPanelPage + { + get { return _currentSubPanelPage; } + set { SetProperty(ref _currentSubPanelPage, value, () => CurrentSubPanelPage); } + } + + private OptionsMenuItem _selectionOption; + public OptionsMenuItem SelectedOption + { + get { return _selectionOption; } + set + { + SetProperty(ref _selectionOption, value, () => SelectedOption); + CurrentSubPanelPage = value.SubPanelViewModel; + } + } + public PaneRecogidaSub1ViewModel PaneSub1 + { + get { return _subPanel1ViewModel; } + } + /** + * Lee los paneles y sus elementos + */ + public bool Lee(out string err_str) + { + err_str = ""; + return false; + } + + /** + * Acciones para comenzar ejecución + */ + public void Ejecuta(OliviaAddInPro.Services.ModosEjec modo) + { + string err = ""; + if (!Lee(out err)) + { + HelperGlobal.ponMsg(err); + return; + } + + OliviaGlob.Reco.Ejecuta(modo); + + } + } +} diff --git a/ViewModel/Recogida/old/PaneRecogidaSub2ViewModel.cs b/ViewModel/Recogida/old/PaneRecogidaSub2ViewModel.cs new file mode 100644 index 0000000..77f03c0 --- /dev/null +++ b/ViewModel/Recogida/old/PaneRecogidaSub2ViewModel.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using ArcGIS.Core.CIM; +using ArcGIS.Core.Data; +using ArcGIS.Core.Geometry; +using ArcGIS.Desktop.Catalog; +using ArcGIS.Desktop.Core; +using ArcGIS.Desktop.Editing; +using ArcGIS.Desktop.Extensions; +using ArcGIS.Desktop.Framework; +using ArcGIS.Desktop.Framework.Contracts; +using ArcGIS.Desktop.Framework.Dialogs; +using ArcGIS.Desktop.Framework.Threading.Tasks; +using ArcGIS.Desktop.Mapping; + +namespace OliviaAddInPro +{ + public class PaneRecogidaSub2ViewModel : PanelViewModelBase + { + public PaneRecogidaSub2ViewModel() + { + + } + + + #region Properties + + public override string DisplayName + { + get { return Resource1.String_zonif; } + } + + + #endregion Properties + } +} diff --git a/ViewModel/Recogida/old/PaneRecogidaSub4ViewModel.cs b/ViewModel/Recogida/old/PaneRecogidaSub4ViewModel.cs new file mode 100644 index 0000000..8ad977a --- /dev/null +++ b/ViewModel/Recogida/old/PaneRecogidaSub4ViewModel.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using ArcGIS.Core.CIM; +using ArcGIS.Core.Data; +using ArcGIS.Core.Geometry; +using ArcGIS.Desktop.Catalog; +using ArcGIS.Desktop.Core; +using ArcGIS.Desktop.Editing; +using ArcGIS.Desktop.Extensions; +using ArcGIS.Desktop.Framework; +using ArcGIS.Desktop.Framework.Contracts; +using ArcGIS.Desktop.Framework.Dialogs; +using ArcGIS.Desktop.Framework.Threading.Tasks; +using ArcGIS.Desktop.Mapping; + +namespace OliviaAddInPro +{ + public class PaneRecogidaSub4ViewModel : PanelViewModelBase + { + public PaneRecogidaSub4ViewModel() + { + + } + + + #region Properties + + public override string DisplayName + { + get { return Resource1.String_tiempos; } + } + + + + #endregion Properties + } +}