diff --git a/Model/OliviaConf.cs b/Model/OliviaConf.cs
index f1f17db..a66008a 100644
--- a/Model/OliviaConf.cs
+++ b/Model/OliviaConf.cs
@@ -12,6 +12,15 @@ namespace OliviaAddInPro.Model
[Serializable]
class OliviaConf
{
+ public enum OpsRecoCont
+ {
+ [Description("Contenedor lleno")]
+ LlenoUsaDensidad,
+ [Description("Lee campo 'kg a recoger'")]
+ LeeCampoTabla,
+ [Description("Usa 'kg defecto'")]
+ UsaKgDef
+ }
private string m2s(int min)
{
var val = min;
@@ -994,13 +1003,57 @@ namespace OliviaAddInPro.Model
[Description("Indica los kg a utilizar para todos los contenedores")]
public int kgrec_val { get; set; }
[Category("Campos Recogida")]
+ [Browsable(false)]
[DisplayName("¿Lleno?")]
[Description("Indica si se debe considerar que todos los contenedores están llenos")]
public bool is_lleno { get; set; }
[Category("Campos Recogida")]
+ [Browsable(false)]
[DisplayName("¿Lee el campo de kg?")]
[Description("Indica si se deben leer los kg de cada contenedor del campo 'Kg a recoger'")]
public bool is_campo { get; set; }
+ [Category("Campos Recogida")]
+ [DisplayName("Kg contenedor")]
+ [JsonIgnore]
+ [Description("Indica si se usa contenedor lleno, en cuyo caso se emplea la densidad de la " +
+ "fracción en contenedor y su capacidad, o bien si se debe usar el valor por defecto 'Kg defecto' o bien se deben leer los kg de cada contenedor del campo 'Kg a recoger'")]
+ public OpsRecoCont opsRecoCont
+ {
+ get
+ {
+ if(is_lleno)
+ {
+ return OpsRecoCont.LlenoUsaDensidad;
+ }
+ else if(is_campo)
+ {
+ return OpsRecoCont.LeeCampoTabla;
+ }
+ else
+ {
+ return OpsRecoCont.UsaKgDef;
+ }
+ }
+ set
+ {
+ switch(value)
+ {
+ case OpsRecoCont.LlenoUsaDensidad:
+ is_lleno = true;
+ is_campo = false;
+ break;
+ case OpsRecoCont.LeeCampoTabla:
+ is_lleno = false;
+ is_campo = true;
+ break;
+ case OpsRecoCont.UsaKgDef:
+ is_lleno = false;
+ is_campo = false;
+ break;
+ }
+ }
+ }
+
#endregion
#region AtributosRecogida
diff --git a/Services/EjecServ.cs b/Services/EjecServ.cs
index c257dc1..7e68684 100644
--- a/Services/EjecServ.cs
+++ b/Services/EjecServ.cs
@@ -60,7 +60,6 @@ namespace OliviaAddInPro.Services
fue_mal = true;
}
}
- // cps.Value = 80;
//crea el filtro de exportación
if (!fue_mal)
{
@@ -98,7 +97,7 @@ namespace OliviaAddInPro.Services
//amplia la geom para englobar las instalaciones
///////////////////////////////////////////////////////////////////////////
- //exporta la red navegable
+ //exporta la red navegable (buffer, le quita las restr...)
//guarda los nombres del shape
OliviaGlob.Paths.PathNW = OliviaGlob.Paths.DirData + com.NombreShpExportNw;
@@ -151,7 +150,7 @@ namespace OliviaAddInPro.Services
//Ahora hace la geometrÃa de los ámbitos que cumplen la consulta
geomAmbits = HelperGdb.GetGeomConvexHull(fc, filtro, cps).Result;
- if (geomAux == null || geomAux.IsEmpty)
+ if (geomAmbits == null || geomAmbits.IsEmpty)
{
ErrStr = "No se ha podido generar geometrÃa de los ámbitos" + com.ConsultaAmbs + HelperGdb.OutStr;
return null;
diff --git a/View/Limpieza/PaneLimpiezaSub1.xaml b/View/Limpieza/PaneLimpiezaSub1.xaml
index 79788b8..a33a061 100644
--- a/View/Limpieza/PaneLimpiezaSub1.xaml
+++ b/View/Limpieza/PaneLimpiezaSub1.xaml
@@ -5,7 +5,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:extensions="clr-namespace:ArcGIS.Desktop.Extensions;assembly=ArcGIS.Desktop.Extensions"
xmlns:ui="clr-namespace:OliviaAddInPro"
- mc:Ignorable="d" d:DesignWidth="300" Height="350"
+ mc:Ignorable="d" d:DesignWidth="300" Height="396"
d:DataContext="{Binding Path=ui.PaneLimpiezaSub1ViewModel}" Loaded="UserControl_Loaded" Unloaded="UserControl_Unloaded" >
@@ -14,7 +14,7 @@
-
+
@@ -36,7 +36,7 @@
-
@@ -69,5 +69,15 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/View/Limpieza/PaneLimpiezaSub1.xaml.cs b/View/Limpieza/PaneLimpiezaSub1.xaml.cs
index 00fdccd..891153a 100644
--- a/View/Limpieza/PaneLimpiezaSub1.xaml.cs
+++ b/View/Limpieza/PaneLimpiezaSub1.xaml.cs
@@ -41,6 +41,10 @@ namespace OliviaAddInPro
{
e.Handled = !PanelGlobal.IsValid(((TextBox)sender).Text + e.Text, 1, 100);
}
+ private void txtBox_ancho_via_PreviewTextInput(object sender, TextCompositionEventArgs e)
+ {
+ e.Handled = !PanelGlobal.IsValid(((TextBox)sender).Text + e.Text, 1, 50);
+ }
private void Button_Click(object sender, RoutedEventArgs e)
{
@@ -98,5 +102,6 @@ namespace OliviaAddInPro
{
}
+
}
}
diff --git a/ViewModel/Limpieza/PaneLimpiezaSub1ViewModel.cs b/ViewModel/Limpieza/PaneLimpiezaSub1ViewModel.cs
index 38a1d09..c8eb17a 100644
--- a/ViewModel/Limpieza/PaneLimpiezaSub1ViewModel.cs
+++ b/ViewModel/Limpieza/PaneLimpiezaSub1ViewModel.cs
@@ -160,6 +160,34 @@ namespace OliviaAddInPro
base.NotifyPropertyChanged("AmbitosSel");
}
}
+ private string textAnchoVia;
+ public string TextAnchoVia
+ {
+ get { return textAnchoVia; }
+ set { base.SetProperty(ref textAnchoVia, value, () => TextAnchoVia); }
+ }
+ private System.Windows.Visibility visTextAnchoVia = System.Windows.Visibility.Hidden;
+ public System.Windows.Visibility VisTextAnchoVia
+ {
+ get { return visTextAnchoVia; }
+ set { base.SetProperty(ref visTextAnchoVia, value, () => VisTextAnchoVia); }
+ }
+ /*private bool enableListBoxAmb;
+ public bool EnableListBoxAmb
+ {
+ get { return (enableListBoxAmb && CapaAbierta); }
+ set { base.SetProperty(ref enableListBoxAmb, value, () => EnableListBoxAmb); }
+ }
+ public override bool CapaAbierta
+ {
+ get { return base.CapaAbierta; }
+ set
+ {
+ base.CapaAbierta = value;
+ base.NotifyPropertyChanged("CapaAbierta");
+ NotifyPropertyChanged("EnableListBoxAmb");
+ }
+ }*/
#endregion Properties
public PaneLimpiezaSub1ViewModel()
@@ -170,6 +198,7 @@ namespace OliviaAddInPro
lblUdsTimeTto = "min";
lblUdsVeloDespl = "km/h";
limpServ = new LimpiezaServ(null); //no hace falta instancia limp
+ textAnchoVia = LimpiezaDef.Parametros.ancho_via.ToString();
}
/**
@@ -181,6 +210,7 @@ namespace OliviaAddInPro
CapaElems = string.Empty;
OpsAmbs.Clear();
Ambitos.Clear();
+ VisTextAnchoVia = System.Windows.Visibility.Hidden;
OliviaGlob.AddFlagTipEjec(TiposEjecucion.Config); //lo reinicia, por si estaba después de planificar
if (string.IsNullOrEmpty(capa))
return false;
@@ -241,6 +271,7 @@ namespace OliviaAddInPro
//////////////////////////////////////////////////////////////
//rellena el combo de opciones de los ambitos
+ VisTextAnchoVia = System.Windows.Visibility.Hidden;
Ambitos.Clear();
OpsAmbs.Clear();
OpsAmbs.Add("Editable");
@@ -294,12 +325,37 @@ namespace OliviaAddInPro
{
if (opAmb < 0)
return;
- Ambitos.Clear();
- SelOpAmb = opAmb;
- ObservableCollection lista;
- lista = pon_ambitos();
- //checkea los ámbitos de esta opción
- check_ambitos(SelOpAmb, lista);
+ try {
+ Ambitos.Clear();
+ SelOpAmb = opAmb;
+ ObservableCollection lista;
+ lista = pon_ambitos();
+ //checkea los ámbitos de esta opción
+ check_ambitos(SelOpAmb, lista);
+
+ if (SelOpAmb == 1)
+ {
+ //permite visualizar los elementos del ancho de vÃa que se activará cuando se seleccione la opción genérica de ejes de calle siempre y cuando el tiempo de tratamiento sea en ml/h
+ if (UdsTTto != (int)GeneralDef.OlvTiposTto.OlvTipTtoM2h_eje)
+ {
+ VisTextAnchoVia = System.Windows.Visibility.Visible;
+ }
+ }
+ else
+ {
+ VisTextAnchoVia = System.Windows.Visibility.Hidden;
+ }
+ /*if (((TipoTto == (int)LimpiezaDef.TiposTto.TtoBaldMecCalz) && (SelOpAmb >= 2)) ||
+ ((TipoTto == (int)LimpiezaDef.TiposTto.TtoCaidaHoja) && (SelOpAmb >= 2)))
+ EnableListBoxAmb = false; //si uno de los ámbitos es "eje de calle" no se puede combinar con los demás ámbitos
+ else
+ EnableListBoxAmb = true;*/
+ }
+ catch (Exception)
+ {
+ //MessageBox.Show("Error al seleccionar ámbitos", "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
}
/**Checkea de la lista los ámbitos de trabajo en función del tipo de tratamiento
diff --git a/ViewModel/Limpieza/PaneLimpiezaViewModel.cs b/ViewModel/Limpieza/PaneLimpiezaViewModel.cs
index 29d4a74..18fa29a 100644
--- a/ViewModel/Limpieza/PaneLimpiezaViewModel.cs
+++ b/ViewModel/Limpieza/PaneLimpiezaViewModel.cs
@@ -131,6 +131,26 @@ namespace OliviaAddInPro
limp.Ttto = _subPanel1ViewModel.TimeTto;
limp.UdsTTto = _subPanel1ViewModel.UdsTTto;
+ //lee el ancho medio de la vía si está visible (se ha seleccionado la opción genérica Eje de calles)
+ limp.AnchoVia = LimpiezaDef.Parametros.ancho_via;
+ if (_subPanel1ViewModel.VisTextAnchoVia == System.Windows.Visibility.Visible)
+ {
+ try
+ {
+ limp.AnchoVia = Convert.ToDouble(_subPanel1ViewModel.TextAnchoVia);
+ if ((limp.AnchoVia == 0) || (limp.AnchoVia > LimpiezaDef.Parametros.ancho_viaM) || (limp.AnchoVia < LimpiezaDef.Parametros.ancho_viam))
+ {
+ err_str = "El ancho de la vía no está dentro de los límites configurados";
+ return false;
+ }
+ }
+ catch (FormatException)
+ {
+ err_str = "El formato introducido para el ancho de la vía no es válido.";
+ return false;
+ }
+ }
+
//lee las propiedades comunes a recogida
if (!LeeComun(limp,out err_str))
{