Пример #1
0
        public override string RenderControl()
        {
            if (!Crud.NegocioActivo || !(bool)ElementoDto.ValorDelAtributo(typeof(TElemento), nameof(IUDtoAttribute.OpcionDeCrear)))
            {
                MenuCreacion.QuitarOpcionDeMenu(TipoDeAccionDeCreacion.NuevoElemento);
            }

            string htmContenedorCreacion;

            if (AbrirEnModal)
            {
                htmContenedorCreacion = RendelModalDeCreacion();
            }
            else
            {
                htmContenedorCreacion =
                    $@"
                   <div id=¨{IdHtml}¨ 
                         class=¨{Css.Render(enumCssDiv.DivOculto)} {Css.Render(enumCssCreacion.CuerpoDeCrearcion)}¨
                         controlador=¨{Crud.Controlador}¨>
                           {RenderContenedorDeCreacionCabecera()}
                           {RenderContenedorDeCreacionCuerpo()}
                           {RenderContenedorDeCreacionPie()}
                   </div>
                ";
            }

            return(htmContenedorCreacion.Render());
        }
Пример #2
0
        private static string RenderListaDinamica(DescriptorDeTabla tabla, DescriptorDeControlDeLaTabla descriptorControl, double ancho)
        {
            var atributos = descriptorControl.atributos;
            var valores   = ValoresDeAtributosComunes(tabla, descriptorControl, atributos);

            //throw new Exception($"no se ha definido el atributo {nameof(atributos.MostrarExpresion)} para la lista dinámica de la propiedad {descriptorControl.propiedad}");

            valores["CssContenedor"]    = Css.Render(enumCssControlesDto.ContenedorListaDinamica);
            valores["Css"]              = Css.Render(enumCssControlesDto.ListaDinamica);
            valores["ClaseElemento"]    = atributos.SeleccionarDe.Name;
            valores["MostrarExpresion"] = atributos.MostrarExpresion.IsNullOrEmpty() ?
                                          ElementoDto.ValorDelAtributo(atributos.SeleccionarDe, nameof(IUDtoAttribute.MostrarExpresion)) :
                                          atributos.MostrarExpresion;
            valores["BuscarPor"]        = atributos.BuscarPor;
            valores["Longitud"]         = 3;
            valores["Cantidad"]         = 10;
            valores["CriterioDeFiltro"] = atributos.CriterioDeBusqueda;
            valores["OnInput"]          = $"Crud.{GestorDeEventos.EventosDeListaDinamica}('{TipoAccionDeListaDinamica.cargar}',this)";
            valores["OnChange"]         = $"Crud.{GestorDeEventos.EventosDeListaDinamica}('{TipoAccionDeListaDinamica.perderFoco}',this)";
            valores["Placeholder"]      = $"Seleccionar ({atributos.CriterioDeBusqueda}) ...";
            valores["GuardarEn"]        = atributos.GuardarEn;
            valores["RestringidoPor"]   = atributos.RestringidoPor.ToLower();
            valores["ContenidoEn"]      = tabla.IdHtmlContenedor;

            var a = PlantillasHtml.Render(PlantillasHtml.listaDinamicaDto, valores);

            return(a);
        }
        protected virtual void DefinirColumnasDelGrid()
        {
            Mnt.Datos.AnadirColumna(new ColumnaDelGrid <TElemento> {
                Propiedad = "chksel", Titulo = " ", PorAnchoMnt = 4, PorAnchoSel = 10, Tipo = typeof(bool)
            });
            var propiedades = typeof(TElemento).GetProperties();

            foreach (var p in propiedades)
            {
                var columna = new ColumnaDelGrid <TElemento> {
                    Propiedad = p.Name, Tipo = p.PropertyType
                };
                IUPropiedadAttribute atributos = ElementoDto.ObtenerAtributos(p);

                if (atributos != null)
                {
                    columna.Visible       = atributos.EsVisible(enumModoDeTrabajo.Mantenimiento);
                    columna.Titulo        = atributos.EtiquetaGrid;
                    columna.ConOrdenacion = atributos.Ordenar;
                    columna.OrdenarPor    = atributos.OrdenarPor;
                    columna.Alineada      = atributos.Alineada == Aliniacion.no_definida ? columna.Tipo.Alineada() : atributos.Alineada;
                    columna.PorAnchoMnt   = atributos.PorAnchoMnt;
                    columna.PorAnchoSel   = atributos.PorAnchoSel == 0 ? atributos.PorAnchoMnt : atributos.PorAnchoSel;
                    Mnt.Datos.InsertarColumna(columna, atributos.PosicionEnGrid);
                }
            }
        }
Пример #4
0
        internal void AnadirOpcionDeEnviareMail()
        {
            if (!(bool)ElementoDto.ValorDelAtributo(typeof(TElemento), nameof(IUDtoAttribute.OpcionDeEnviar)))
            {
                return;
            }

            var enviarElementos = new EnviarElementos();

            if (Mnt.Crud.Negocio == enumNegocio.No_Definido)
            {
                enviarElementos.NumeroMaximoEnLaMultiseleccion = 1;
            }
            else
            {
                if (Mnt.Crud.Negocio.EsUnNegocio())
                {
                    //Todo--> añadir variable de correos a enviar y variables de entidades de negocio
                    var negocioDtm = GestorDeNegocios.LeerNegocio(Mnt.Crud.Contexto, Mnt.Crud.Negocio);
                }

                enviarElementos.NumeroMaximoEnLaMultiseleccion = 5;
            }

            var opcion = new OpcionDeMenu <TElemento>(Menu, enviarElementos, $"Enviar", enumModoDeAccesoDeDatos.Consultor);

            Menu.Add(opcion);
        }
Пример #5
0
        private static string RenderControlesParaMapearElDto(DescriptorDeTabla tabla, short i, short j)
        {
            var    porcentajeDeEtiqueta   = (short)ElementoDto.ValorDelAtributo(typeof(TElemento), nameof(IUDtoAttribute.AnchoEtiqueta));
            var    pocentajeDeControl     = 100 - porcentajeDeEtiqueta;
            var    porcentajeDelSeparador = (short)ElementoDto.ValorDelAtributo(typeof(TElemento), nameof(IUDtoAttribute.AnchoSeparador));
            var    columna         = tabla.ObtenerFila(i).ObtenerColumna(j);
            var    htmlControles   = "";
            double anchoEtiqueta   = columna.NumeroDeEtiquetasVisibles == 0 ? 0 : porcentajeDeEtiqueta / columna.NumeroDeEtiquetasVisibles;
            double anchoControl    = columna.NumeroControlesVisibles == 0 ? 0 : (pocentajeDeControl - (porcentajeDelSeparador * (columna.NumeroControlesVisibles - 1))) / columna.NumeroControlesVisibles;
            var    anadirSeparador = false;

            if (columna.ColSpan > 1)
            {
                var ajuste = anchoEtiqueta / columna.ColSpan;
                anchoEtiqueta = anchoEtiqueta - ajuste;
                anchoControl  = anchoControl + ajuste;
            }

            double anchoTotal = 0;

            for (short z = 0; z <= columna.PosicionMaxima; z++)
            {
                var descriptorControl = columna.ObtenerControlEnLaPosicion(z);
                if (descriptorControl == null || !descriptorControl.atributos.EsVisible(tabla.ModoDeTrabajo))
                {
                    continue;
                }

                if (anadirSeparador)
                {
                    htmlControles = htmlControles
                                    + $"<div id=¨{tabla.IdHtml}-{i}-{j}-separador¨ class=¨div-separardor-propiedad¨ style=¨width:2%¨></div>";
                    anchoTotal += 2;
                }

                if (!descriptorControl.atributos.Etiqueta.IsNullOrEmpty())
                {
                    htmlControles = htmlControles + RenderEtiquetaDelDto(tabla, descriptorControl, i, j, anchoEtiqueta);
                    anchoTotal    = anchoTotal + anchoEtiqueta;
                }
                else
                {
                    anchoControl = 100;
                }

                if (z == columna.PosicionMaxima)
                {
                    anchoControl = 100 - anchoTotal;
                }

                htmlControles = htmlControles + RenderDescriptorControlDto(tabla, descriptorControl, anchoControl);
                anchoTotal    = anchoTotal + anchoControl;

                anadirSeparador = true;
            }

            return(htmlControles);
        }
Пример #6
0
        internal void AnadirOpcionDeIrACrear()
        {
            if (!(bool)ElementoDto.ValorDelAtributo(typeof(TElemento), nameof(IUDtoAttribute.OpcionDeCrear)))
            {
                return;
            }

            var crearElemento = new CrearElemento();
            var opcion        = new OpcionDeMenu <TElemento>(Menu, crearElemento, $"Nuevo", enumModoDeAccesoDeDatos.Gestor);

            Menu.Add(opcion);
        }
Пример #7
0
        internal void AnadirOpcionDeIrAExportar()
        {
            if (!(bool)ElementoDto.ValorDelAtributo(typeof(TElemento), nameof(IUDtoAttribute.OpcionDeExportar)))
            {
                return;
            }

            var exportarElemento = new ExportarElementos();
            var opcion           = new OpcionDeMenu <TElemento>(Menu, exportarElemento, $"Exportar", enumModoDeAccesoDeDatos.Consultor);

            Menu.Add(opcion);
        }
Пример #8
0
        private void AnadirPropiedad(PropertyInfo propiedad)
        {
            IUPropiedadAttribute atributos = ElementoDto.ObtenerAtributos(propiedad);

            if (atributos != null)
            {
                var descriptorColumna = ObtenerColumna(atributos.Fila, atributos.Columna);

                if (NumeroDeColumnas <= atributos.Columna)
                {
                    NumeroDeColumnas = (short)(atributos.Columna + 1);
                }

                descriptorColumna.AnadirControl(atributos.Posicion, propiedad);
            }
        }
Пример #9
0
        private static string RenderListaDeElemento(DescriptorDeTabla tabla, DescriptorDeControlDeLaTabla descriptorControl, double ancho)
        {
            var atributos = descriptorControl.atributos;

            Dictionary <string, object> valores = ValoresDeAtributosComunes(tabla, descriptorControl, atributos);

            valores["CssContenedor"]    = Css.Render(enumCssControlesDto.ContenedorListaDeElementos);
            valores["Css"]              = Css.Render(enumCssControlesDto.ListaDeElementos);
            valores["ClaseElemento"]    = atributos.SeleccionarDe.Name;
            valores["MostrarExpresion"] = atributos.MostrarExpresion.IsNullOrEmpty() ?
                                          ElementoDto.ValorDelAtributo(atributos.SeleccionarDe, nameof(IUDtoAttribute.MostrarExpresion)) :
                                          atributos.MostrarExpresion;
            valores["GuardarEn"] = atributos.GuardarEn;

            var htmlSelect = PlantillasHtml.Render(PlantillasHtml.listaDeElementosDto, valores);

            return(htmlSelect);
        }
Пример #10
0
        private string RenderZonaDeDatos()
        {
            var mostrarExpresion = $"{(string)ElementoDto.ValorDelAtributo(typeof(TElemento), nameof(IUDtoAttribute.MostrarExpresion))}";

            var expresionElemento = typeof(TElemento).GetField("ExpresionElemento");

            if (expresionElemento != null)
            {
                mostrarExpresion = $"[{expresionElemento.GetValue(typeof(TElemento))}]";
            }
            else
            if (typeof(TElemento).BaseType.Name != nameof(ElementoDto) && typeof(TElemento).BaseType.Name != nameof(AuditoriaDto))
            {
                GestorDeErrores.Emitir($"Debe definir los campos que componen la 'exprexión del elemento' para el objeto {typeof(TElemento).Name}");
            }


            var idHtmlZonaFiltro = ((DescriptorDeMantenimiento <TElemento>)Padre).Filtro.IdHtml;
            var htmlDiv = @$ " <!-- ********************  grid de datos ******************** -->
                              <div id = ¨{IdHtml}¨ 
Пример #11
0
        public FilaDelGrid(ZonaDeDatos <TElemento> datos, ElementoDto elemento)
        {
            Datos = datos;
            var columna = datos.ObtenerColumna("chksel");

            if (columna != null)
            {
                AnadirCelda(new CeldaDelGrid <TElemento>(columna)
                {
                    Valor = false
                });
            }

            columna = datos.ObtenerColumna(nameof(elemento.Id));
            if (columna != null)
            {
                AnadirCelda(new CeldaDelGrid <TElemento>(columna)
                {
                    Valor = elemento.Id
                });
            }
        }
        private string RenderCuerpoCabecera(string htmlTitulo, string htmlMenu)
        {
            if (OrdenacionInicial.IsNullOrEmpty() && typeof(TElemento).TienenLaPropiedad(ltrFiltros.Nombre))
            {
                OrdenacionInicial = $"{ltrFiltros.Nombre}:{ltrFiltros.Nombre}:{enumModoOrdenacion.ascendente.Render()}";
            }
            var clausulaDeOrdenInicial = "";

            if (!OrdenacionInicial.IsNullOrEmpty())
            {
                clausulaDeOrdenInicial = $"{Environment.NewLine}orden-inicial='{OrdenacionInicial.ToLower()}'";
            }


            var propiedades = $@" id='{IdHtml}' 
                        class='{Css.Render(enumCssCuerpo.CuerpoCabecera)}' 
                        grid-del-mnt='{Datos.IdHtml}' 
                        zona-de-filtro='{Filtro.IdHtml}' 
                        zona-de-menu='{ZonaMenu.IdHtml}' 
                        controlador='{Crud.Controlador}' 
                        negocio='{Crud.RenderNegocio}'
                        dto='{Crud.RenderDto}'
                        permite-crear = {(bool)ElementoDto.ValorDelAtributo(typeof(TElemento), nameof(IUDtoAttribute.OpcionDeCrear))}
                        permite-editar = {(bool)ElementoDto.ValorDelAtributo(typeof(TElemento), nameof(IUDtoAttribute.OpcionDeEditar))}
                        permite-borrar = {(bool)ElementoDto.ValorDelAtributo(typeof(TElemento), nameof(IUDtoAttribute.OpcionDeBorrar))}
                        id-negocio='{Crud.RenderIdDeNegocio}'{clausulaDeOrdenInicial}>
                     ";

            return(ModoDescriptor.Mantenimiento == ((DescriptorDeCrud <TElemento>)Padre).Modo ?
                   $@"<div {propiedades}
                    {htmlTitulo}
                    {htmlMenu}
               </div>
                " :
                   $@"<div {propiedades}>
               </div>");
        }