Alfredo Sanz

Respuestas de foro creadas

Viendo 50 entradas - de la 101 a la 150 (de un total de 152)
  • Autor
    Entradas
  • en respuesta a: Error al correr compilado sin Debug #1290
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Seguramente será algún problema con la encriptación de datos que hacemos al quitar el modo debug.

    Pincha en donde pone @soft:6 y en @soft:11 para poder ver el html que da el error y mándame el código que te sale.

    Loading spinner
    en respuesta a: WArrayBrowse no puedo fijar cabeceras #1287
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Bueno, como diría el amigo Quim, lo tengo hecho "a cuchillo" para comprobar que funciona.

    Ahora falta darle "el toque Néfele"

    En unos días estará terminado.

    Loading spinner
    en respuesta a: WArrayBrowse no puedo fijar cabeceras #1283
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Sí,

    En néfele vamos a tener inicialmente dos browses.

    • wArrayBrowse: lo estamos diseñando desde cero, basado en tablas html. Con funciones limitadas pero sencillo de implementar
    • DataTables.net: Va a incorporar todas las funcionalidades de este fantástico plugin (filtrar, ordenar, paginar, etc....)

    El DataTables lo estamos cocinando y espero poder enseñar algo muy prontito.

    El wArrayBrowse, ya es funcional, lo que no quiere decir que no le incorporemos más "cosicas" según se necesiten, por ejemplo:

     

    Contenido no disponible.
    Por favor, acepta las cookies haciendo clic en este aviso

    • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
    • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
    en respuesta a: WArrayBrowse no puedo fijar cabeceras #1280
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Tomo nota.

    Loading spinner
    en respuesta a: abc en un form #1279
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Tal y como lo tienes, cuando metas un dato en el wEdit "cliente", pasado 1 segundo sin modificar el dato, ejecutará tu función "DatosClte" por Ajax.

    En esta función es en la que tienes que verificar si el dato introducido existe o no y devolver la acción correspondiente.

    Fíjate en el ejemplo 5 de los formularios de https://samples.nefele.dev/ejemplo

    Puedes hacer, por ejemlo:

    - Si el código existe, rellenas los campos que faltan.
    - Si el código no existe, muestras un alert que diga que el código no se ha encontrado

    Contenido no disponible.
    Por favor, acepta las cookies haciendo clic en este aviso

    Con esto conseguimos que nos verifique si existe o no el código antes de pulsar el botón aceptar.

    Luego, cambiarás la función "Visparam" ( que se ejecuta cuando pulsas acertar) por tu propia función, en la que guardarás los datos, etc...

     

    y en DatosClte

     

    Loading spinner
    en respuesta a: WArrayBrowse no puedo fijar cabeceras #1264
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Yes, We Can!

    Es buena idea, la "nefelizaremos" para la próxima versión.

     

    Contenido no disponible.
    Por favor, acepta las cookies haciendo clic en este aviso

    Loading spinner
    • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
    • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
    • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
    en respuesta a: Cómo podemos trabajar con una grilla #1261
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Hola!

    Estamos trabajando ya en el control del datatables, en breve tendremos los primeros ejemplos.

    Loading spinner
    en respuesta a: clic en un elemento de un ListView #1257
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Es algo que hemos discutido entre nosotros más de una vez, el problema principal es el diseño responsive.

    Si lo pones en un móvil y son más de 2 botones, la cosa se complica.

    De todas formas, aprovecho para "hacer publicidad" de una de las opciones del foro que nadie está usando.

    En el menú de arriba, tenéis una opción que pone peticiones.

     

    En él podéis añadir vuestras ideas y mejoras a Néfele y otros usuarios pueden votar por ellas, así nosotros podemos saber "qué rumbo" seguir en todas estas cuestiones.

    Lo cierto es que es un plugin de Wp que no funciona muy bien, pero es el único que he encontrado. Si veo que se usa, mi idea es crear un programa en Néfele con las mismas funcionalidades pero que funcione como me gustaría que lo hiciera este.

    He añadido la que comentas, así que .... a votar por ella.

    Loading spinner
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Nada, encantado de resolver tus dudas

    Loading spinner
    Alfredo SanzAlfredo Sanz
    Superadministrador

    No, no, no ...
    Eso no, no,no ...
    No es así ..

    😳

    Realmente, lo que puedes hacer es pasarle valores por GET en lugar de por POST.

    La sintaxis sería &<nombre variable>=<valor>

    Por ejemplo:

    https://samples.nefele.dev/cgi-bin/usuarios.exe?visparam&Nombre=Alfredo&Apellidos=Sanz Pérez

    en tu caso pondrías

     

     

    Loading spinner
    en respuesta a: Uso de icono de Font Awesome #1241
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Hola tocayo (y por cierto, mi segundo apellido es Pérez),

    Aún no están totalmente "nefelizados" los Font Awesome. Para usarlos tendrás que ir "a pelo"

     

     

    Loading spinner
    • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
    en respuesta a: clic en un elemento de un ListView #1236
    Alfredo SanzAlfredo Sanz
    Superadministrador

    No, El ListView tiene sus propios botones y métodos para usarlos

    Contenido no disponible.
    Por favor, acepta las cookies haciendo clic en este aviso

    • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
    • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
    • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
    en respuesta a: Mi aplicación Néfele #1233
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Fenomenal!!

    Loading spinner
    en respuesta a: oCgi:SendScript() #1224
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Marco el hilo como resuelto

    ver: https://nefele.dev/foro/topic/ajax/

    Loading spinner
    en respuesta a: Conexión a BD SQLite #1218
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Estamos preparando una nueva clase para acceso a datos sql basada en ADO y "nefelizada" para su uso en los cgi-

    En unos días podré contar algo más

    Loading spinner
    en respuesta a: ArrayBrowse con mensaje de Alerta en OnClick #1215
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Recordad:

    Todas las funciones y procedimientos del cgi a las que accedamos desde el navegador (el procedure inicial, los que lanzamos al pulsar un botón, etc) así como los que llamamos por Ajax tienen que estar declarados en el enrutador del main.prg

    En cambio, en este caso la función GetRowValue() no hace falta declararla en el enrutados, porque es una función a la que no accedemos "desde fuera" del Cgi, sino que la usamos internamente dentro del propio Cgi. Por lo tanto, no hace falta que la pongamos en el enrutador.

     

    Os dejo el ejemplo funcionando en

    https://samples.nefele.dev/cgi-bin/usuarios.exe?ArrayBrowseAlertOnClick

    Loading spinner
    • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
    en respuesta a: Slider #1209
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Entiendo.

    Para el slider realmente las imágenes son fondos de un div.

    Lo más sencillo es que todas las imágenes tengan las mismas dimensiones

    De todas formas, se puede hacer retocando el css

     

    Loading spinner
    • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
    en respuesta a: Personalizar un poco WMsgAlert #1205
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Tienes las siguientes property

    cTitle  - Título en negrita
    cText  - Texto
    cBackGroundColor - Color de fondo
    cImageUrl - imagen a mostrar en la parte superior

    Loading spinner
    en respuesta a: Slider #1196
    Alfredo SanzAlfredo Sanz
    Superadministrador

    1 ejemplo, please

    Loading spinner
    en respuesta a: Numeros paginación ListView #1180
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Eso lo viste en los ejemplos de datatables que tiene su propia paginación

    El paginador que usamos de materialize es mucho más simple y dá para lo que dá.

    De todas formas me apunto buscar un control de paginación más flexible.

    Loading spinner
    en respuesta a: Listas dentro de listas #1172
    Alfredo SanzAlfredo Sanz
    Superadministrador

    En este caso en concreto, si el prg lo tienes como utf-8, StrToXml() realmente te está devolviendo lo mismo que le has enviado. Se puede quitar tranquilamente

    Loading spinner
    en respuesta a: Listas dentro de listas #1171
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Me corrijo.

    La verdad es que es muy buena idea eso de los ejemplos autocontenidos, he copiado el código que ha publicado Xevi, he compilado y he dado con el problema de una manera muy sencilla ( he tardado 4 minutos)

    Tanto es así, que estoy pensando habrir una nueva sección dentro del foro que sea "ejemplos de usuarios" ¿Qué os parece?

    Bueno, al lío.

    AsciiHTML() es una función que se usa cuando recuperamos datos que nos vienen de otras fuentes distintas al prg ( una base de datos, un archivo de texto, un jSon, etc...)

    Como en este caso estamos haciendo referencia a unos caracteres que ya tenemos codificados utf-8 (porque se lo hemos dicho en editor de xailer), no hace falta hacer nada más, Si a una cadena utf-8 le volvemos a decir que nos la codifique en utf-8 (cons el AsciiHTML) nos va ha devolver cosas raras porque ya estaba codificada inicialmente

    Para que salga bien, tan solo hace falta quitar los AsciiHTML

    Si por ejemplo, la codificación del prg en Xalier es ANSI, para pasar a utf-8 y que se muestren bien, tendríamos que usar

     

     

     

    Loading spinner
    en respuesta a: Listas dentro de listas #1168
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Eso es un problema con las páginas de código

    Prueba con StrToXml( cCadena) en lugar de con AsciiHTML y me cuentas.

    Loading spinner
    en respuesta a: Click en imágenes #1165
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Prueba enlazando el image.o que te adjunto y me cuentas si funciona.

     

    Loading spinner
    • Esta respuesta fue modificada 3 años, 6 meses por Alfredo SanzAlfredo Sanz.
    Adjuntos:
    Debes acceder para ver los archivos adjuntos.
    en respuesta a: Listas dentro de listas #1160
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Hola Daniel,

    Pueden ser varias cosas,

    Mira en la barra inferior del editor de código de Xailer.

    Si te pone ANSI pincha encima y cámbialo a utf-8 en todos los prg

    Si no te funcionas probaremos otra cosa

    Loading spinner
    en respuesta a: Componente Tabs #1155
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Al final del todo, en la línea 123 prueba a poner

    class WTabs FROM ZTabs
    ENDCLASS

     

    Voy a revisarlo, pero creo que nos dejamos por definir la wTabs

    Loading spinner
    en respuesta a: Variables publicas #1148
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Correcto!

    Ten en cuenta que cuanto tú ves el html en el navegador, el cgi ya se ha hecho todo su trabajo e incluso se ha descargado de la memoria del servidor. Así, cuando un usuario está viendo la página web realmente no está consumiendo ningún recurso del servidor. El servidor solo entra en acción cuando construimos la página, con lo cual puedes dar servicio a una gran cantidad de clientes con un servidor con pocos recursos.

    Creo que lo he comentado alguna vez: https://samples.nefele.dev es un servidor web con 1Gb de memoria ram.

    Loading spinner
    en respuesta a: Alerts del sample en un ArrayBrowse #1145
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Me corrijo.

    Entre la línea 6 y la 7 pon:

    :lAlerts := .T.

    El problema lo tienes porque al ser una llamada Ajax, el WebPage no tiene constancia de que se van a usar alertas y por lo tanto no carga el módulo js correspondiente

    Poniendo :lAlerts := .t. en el Webpage le estamos diciendo que aunque (de momento) no lo necesite, carge el módulo de alertas porque no va a hacer falta luego

     

     

    Loading spinner
    en respuesta a: Alerts del sample en un ArrayBrowse #1144
    Alfredo SanzAlfredo Sanz
    Superadministrador

    ponle un ocgi:console( cHtml ) antes de la línea 53 a ver qué nos dice

    Loading spinner
    en respuesta a: Variables publicas #1141
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Ten en cuenta que la programación web utiliza un protocolo "stateless", esto es, cada llamada a una página es indendiente de la anterior, por lo cual no pueden exister variables públicas tal y como las conocemos y tenemos que "hacer magia" para conseguirlas

    En néfele esta magia la hacen dos métodos de la clase oCgi

    oCgi:SetUserData( cVar, uVal )

    Permite guardar una variable y su valor para ser recuperada posteriormente en otra llamada al cgi

    oCgi:GetUserData( cVar, uDefaultVal, lCreate )

    Recupera una variable previamente guardada

    cVar: Nombre de la variable a recuperar
    uDefaultVal: Valor por defecto a asignar en caso de que la variable indicada no exista
    lCreate: Si la variable no existe, la crea para futuros usos

    Loading spinner
    en respuesta a: Imagen en Columna wArrayBrowse #1138
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Ok Xevi,

    Gracias por le aporte

    Loading spinner
    en respuesta a: Imagen en Columna wArrayBrowse #1118
    Alfredo SanzAlfredo Sanz
    Superadministrador

    No.

    La llamada la tienes que hacer por Ajax,

    debajo del :cOnClick := "xCopyAndShow" pon:

    :cAjaxBevel := "nflCargo"

    y cuando haces el SendScript no hace falta que pongas el Tag("script

    Es suficiente poner

    oCGI:SendScript(  "window.open( '/download/" +cPdf+".pdf' )" )

    Pruébalo y me cuentas

     

     

    Loading spinner
    en respuesta a: No comprendo ejemplo #1102
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Hola Daniel.

    Es un tipo de datos conocido como Hash.

    Son muy parecidos a las matrices o arrays, pero con la peculiaridad de que puedes hacer referencia a los elementos, no por un número, sino por un nombre

    Con arrays tendríamos esto:

    aDatos := {}

    aAdd( aDatos, Alfredo)

    oCGI:Console( aDatos[1])

    y nos mostraría Alfredo en el nefele console

    Con Hasesh lo haríamos así

    hDatos := {=>}

    hDatos["nombre"] := "Alfredo"

    oCGI:Console( hDatos["nombre"])

     

     

    Loading spinner
    en respuesta a: Imagen en Columna wArrayBrowse #1089
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Correcto, le pasas parámetros adicionales cuando pulsas en la imagen.

    Loading spinner
    en respuesta a: oCGI:SetCodefCookie ERROR!!! #1087
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Prueba con oCGI:GetCodefCookie("acceso"):Valor y con oCGI:GetCodefCookie("acceso"):Raw

    Loading spinner
    en respuesta a: oCGI:SetCodefCookie ERROR!!! #1085
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Eso es porque están en "modo debug"

    Para facilitar la programación, cuando compilas con el debug no la encripta para que puedas ver su contenido.

    Si compilar sin debug es cuando te la encripta

    Loading spinner
    en respuesta a: Error al compilar ejemplo #1082
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Eso es porque no tienes las librerías de Néfele asignadas al proyecto

    Vete a las propiedades del proyecto y revisa que en la sección librerías tienes la correspondiente a NefeleProject.

    Si no la tienes pulsa en añadir y localiza el fichero libNefeleProject.a y añádelo

     

    Loading spinner
    en respuesta a: API REST Antigua web #1073
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Si claro,

    Revisa este vídeo https://www.youtube.com/watch?v=6P10L0UdnPM

    Ten en cuenta que Néfele es Xailer, por lo cual tanto el cliente como el servidor del api rest puede estar en la app de Néfele.

    Loading spinner
    en respuesta a: WMsgAlert LOGERROR #1068
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Lo que nos está avisando Néfele es que tenemos un control sin oParent (el WMsgAlert():New()) cosa que en este caso es correcto

    Tenemos que afinar aún un poquito estos mensajes

    Loading spinner
    en respuesta a: oCGI:SetCodefCookie ERROR!!! #1067
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Xevi,

    oCGI:SendCodefCookie("acceso","102",600,600,"2")

    Las hemos nombrado empezando con Send y no con Set porque es un dato que enviamos al naveador del cliente

     

    Loading spinner
    en respuesta a: [Nefele] Changelog #973
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Resumen modificaciones Néfele 0.3

    - NéfeleWizard
    + Podemos indicarle la carpeta de Apache y de Xailer de manera manual
    + Nos permite crear un proyecto Néfele vacio, solo con el enrutados y una página con "Hola Mundo"
    % Si seleccionamos un combre de carpeta con un espacio, se sustituye en el proyecto y en el alias por un guion medio "-"

    - wArrayBrowse
    + PROPERTY lIncludeArray INIT .t. // incluye un array json en el html con los datos de la tabla
    + PROPERTY aSaveData INIT {} // Datos a incluir en el array anterior, por defecto toda la tabla
    + FUNCTION jSonToArray( cId ) // Retorna el codigo javascript para convertir el json en un array javascript RETURN 'JSON.parse(document.querySelector("'+cId+'").value)'
    % el Width de la columna ahora puede ser un % (si :nWidth es numérico) o la medida css indicada ( si es una cadena)
    + Ahora el valor de cada elemento del array a mostrar puede ser a su vez un array de tipo { valor a mostrar, tooltip a mostrar }

    - wItemColBrowse
    + PROPERTY cMacro INIT "" // Control a evaluar en la creación de la columna
    + PROPERTY cToolTip INIT "" // tooltip de la celda

    - wBadge
    // Nuevo Control para la creación de Badge
    % Para forzar a que calcule correctamente el ancho del Badge en lChip, reemplazamos los espacios de cText por &nbsp;
    + PROPERTY lChips // El Badget se presenta como un wChips
    + PROPERTY lPulse // Se presenta con efecto Pulse
    + PROPERTY lShadow // Se presenta con sombra
    + PROPERTY cImage // Imagen
    + PROPERTY cAltImage // texto Alternativo
    + PROPERTY cIcon // Icono que aparecera a la izquierda
    + PROPERTY cClrIcon // Color del Icono
    % METHOD Set( cText, cClass, lBold, lNew, lPulse, cClrPane, cClrText )
    + METHOD SetArray( aProperties ) // aProperties := {cText, cClass, lBold, lNew, lPulse, cClrPane, cClrText}

    - wBevel
    + Incorporadas funcionalidades de wPanel
    + PROPERTY lShowFocus INIT .f. // Se resalta al pasar el raton por encima
    + PROPERTY lUseCard INIT .f.
    + PROPERTY nShadowDeep INIT 2 // Tipo de sombra a usar
    + PROPERTY cText INIT "" WRITE INLINE ::FcText := ::AdjustText( Value )
    + PROPERTY cClrTitle INIT "" WRITE INLINE ::FcClrTitle := CheckClr(Value)
    + PROPERTY nFontTitle INIT 5 // Tamaño de la Fuente segun Materialize para el Titulo
    + PROPERTY cTitleAlign INIT xc_Left // Alineación del Titulo
    + PROPERTY lLine INIT .F. // Pone una linea horizontas bajo el Title
    + PROPERTY cBackground // Fondo de la Página (realmente: fondo del tag <main>
    + PROPERTY cBackgroundSize // Tamaño del fondo
    + PROPERTY cBackgroundColor INIT "" // Color del fondo
    + PROPERTY lBackgroundRepeat INIT .T.
    + PROPERTY cBackgroundAlign INIT "center center" // Horizontal y Vertical

    - wBevelFoot
    + PROPERTY lScroolBars INIT .f. // para que no salgan las barras en el footer modal
    % El cId de bevelfooter pasa a ser el cId del bevel + "_" + ::cClassId

    - wButton
    + PROPERTY cClrText INIT "" // Anunque la heredaba de wControl no se estaba aplicando en el Create
    ! PROPERTY lBold Ponia <strong> y no se notaba, lo sustitui por <b>
    + PROPERTY lHide INIT .f. // oculta el botón
    // Llamada a URL externa con o sin parametros por POST y GET
    cAction := URL a llamar
    cUrlParam := Parametros a enviar por GET
    aParams := Parametros a enviar por POST
    Por defecto los parametros por POST se encriptan, se puede deshabilitar en ::lEncript
    + PROPERTY aDefaultClass INIT {'waves-effect waves-light'} //Clases por defecto a aplicar al boton
    + PROPERTY cIconWidth INIT "20px" // Tamaño por defecto del icono
    + PROPERTY nIconRotate // Rotacion en º a aplicar al icono
    + PROPERTY cToolTip

    - wCard
    + Pasa a ser un objeto contenedor dentro del que podemos añadir otros controles, se incuyen en la parte baja
    del card en el area difinida como 'class="card_action"'.

    - wChips
    + PROPERTY lPulse // Se presenta con efecto Pulse
    + PROPERTY lShadow // Se presenta con sombra

    - tCGI
    + METHOD aParamsToHash( lMini )
    // lMini == .T. { Params1 => value1, Params2 => value2, ... }
    // lMini == .F. { Params1 => { value => value1, tmpfile => tmpfile, type => type}, ...}
    ! SendHardCookie no funcionaba bien para formatos fechas. Formato correcto: oCGI:SendHardCookie("Variable","Valor","2020100215:00:00")
    + METHOD SendJSon( cJSon ) // Para hacer envios de JSon bien declarado, no envia cTTFB
    + PROPERTY aColors INIT ArrayColors()
    + PROPERTY cSameSitePolicy INIT "lax" //protección cookies //https://www.tarlogic.com/blog/same-site-cookies-ataques-csrf/
    % Modificado SendStatus para que funcione lNoCache en Firefox
    % METHOD SendScript // Lo he modificado para que no incluya <script></script> porque ya enviamos el tipo mime como application/javascript"
    + METHOD TimeSuicide() // para contener todo el codigo a ejecutar para "Suicidar" nuestro CGI
    % Modificado Suicide() para que utilize TimeSuicide()
    + PROPERTY nSuicideInterval INIT 50 // segundos para que arranque el suicide
    + PROPERTY lPreloadCss INIT .f. //lee los css en modo precarga
    % En las cookies codificadas, el cambio de navegador ahora informa de un error pero no invalida el cookie

    - wEdit
    + Aplicación de la propiedad cAlingSymbol del oMask cuando ::oMask:cPicture == "currency"
    % En la creación de Edit de Fecha se estaba definiendo dos veces minDate y faltaba maxDate
    + METHOD Code() INLINE ::ohtml:cInMain
    + PROPERTY cToolTip
    % cAjaxTimeout ahora se ejecuta cambién cuando el control pierde el foco

    - wFileOpenDlg
    + PROPERTY cAcceptExt INIT {} // extensiones permitidas
    + PROPERTY lRequired INIT .t.
    + PROPERTY cHint // Mensaje que aparece en el control cuando esta vacio, tenga o no el foco

    - wImage
    + PROPERTY cImage2 INIT "" // imagen a mostar si pasamos el cursor sobre la principal
    + PROPERTY cAlt2 INIT ""
    + PROPERTY lClickZoom INIT .T. // Zoom al hacer click en la imagen
    % Quitado el cursor default a pointer. Da la sensación de que se puede hacer click para ir a otro sitio y puede resultar confuso. siempre tenemos :cCursor
    + PROPERTY cAlt INIT "" // permite asignar un alt a la imagen

    - wItemListView
    % En Firefox en el Badge se cortaba cText, si era lChips no pasaba
    - PROPERTY cBadgeClass INIT "bold" // clase a aplicar a los badges en el listview
    + PROPERTY oBadge // para aplicar los badges en el listview

    - wMask
    + PROPERTY cAlingSymbol INIT xc_Right Valores xc_right,xc_left
    // Para posicionar el simbolo de la moneda a la Derecha o a la Izquierda
    + PROPERTY lAutoUnmask INIT .t. // Elimina los caracteres propios de la máscara al consultar el valor
    + PROPERTY cValidatorAPlaceHolder INIT " " //Caracter del placeholder
    + PROPERTY cValidatorBPlaceHolder INIT " " //Caracter del placeholder

    - NefeleFunctions
    + FUNCTION ArrayColors() // Nos da la lista completa de los colores de Materialize { "#rrggbb", "nombre", .F.}
    % FUNCTION CheckClr( cClr )
    cClr puede ser:
    Un valor númerico resultante de rgb(50,255,255)
    Una cadena "#rrggbb"
    o una cadena "rgb(r,g,b)"
    Si corresponde con un color de Materialize nos renorna la Clase del color, si no crea una clase nueva nfl-rrggbb
    y la añade a oCGI:aColors para evitar duplicados
    + FUNCTION ReplaceClrMaterialize( cItem, nCol ) // Busca cItem en la lista de colores Materialize y nos retorna la hexadecimal, si no lo encuentra nos retorna cItem
    % Ahora, la creación de iconos en todo nefele se hace a través de FUNCTION PutIcon()
    + UpdateAjaxById( {{ "id del elemento", valor},{...}}) // actualiza el .value del control con el id indicado con el nuevo valor
    + ReplaceChars( cInput, cSearch, cReplace ) -> cOutput
    + FUNCTION PreloadCss( cCss ) // Permite la precarga del css indicado para evitar bloqueos

    - wPanel
    % Pasa a heredar las funcionalidades de wBevel
    + PROPERTY lUseCard INIT .T. // si .f. no pone la clase Card al panel, que en algunos casos de problemas de ajuste

    - wRebar
    % si cClrText tiene contenido, se lo asigna a cClrTitle, dado que en la mayoría de los controles usamos cCrlText

    - wSeparator
    + PROPERTY cProgressClr INIT ""
    + PROPERTY cProgressPane INIT ""
    + PROPERTY nProgress // muestra un preloader horizontal dentro del separator con el % de linea indicado. si es -1 lo hace indeterminate https://materializecss.com/preloader.html

    - wSideNav
    % METHOD AddItem(cText,cOnClick,cIcon,nStyle,aParams,cAction,aBadge) // añadido aBadge {{texto[, clase a utilizar (new) y color]}} // añade badges al menu
    + PROPERTY cTitleClass INIT "z-depth-5" // Clase a aplicar al Title del menu

    - wItemSidenav
    + PROPERTY oBadge // para aplicar los badges en el SideNav

    - wSplitButton
    % METHOD AddItem(cOnClick, cIcon, cText, lDivider, aParams, cAjaxBevel, lModalResult, aBadge) // añadido aBadge {{texto[, clase a utilizar (new) y color]}} // añade badges

    - wItemFloatButton
    + PROPERTY oBadge // para aplicar los badges en el wSpliButton
    // Pordefecto oBadge:lNew := .T.

    - wTabs
    // Nuevo Control de Tabs
    + PROPERTY cClassId INIT "tab"
    + PROPERTY aWidth init {,,,} // Ojo que no funciona bien materialize
    + PROPERTY aItems INIT {}
    + PROPERTY lFixedWidth INIT .t.
    + METHOD AddItem( cTitle, cTarget, lDisabled, lDefault)

    - wItemTabs
    + PROPERTY cFolder // id del bevel asociado
    + PROPERTY cTitle
    + PROPERTY lDisabled INIT .f.
    + PROPERTY lDefault INIT .F. // Pestaña por defecto

    - tWebPage.prg
    + PROPERTY aBreadCrumbs INIT {} // Pone breadcrumbs al pie de página {{url,texto},...}
    + PROPERTY lSnippet INIT .T. // si .f. no pone description en serp
    + PROPERTY cDescription INIT Application:cDescription //permite un meta description personalizado para la página
    % Movida la sábana al pie de página para que no afecte al seo en buscadores
    % No se estaban cerrando bien los <div> del Footer cuando habia Links
    + PROPERTY lCanonical INIT .T. // permite establecer la url canónica de la web. de momento: la misma url sin acentos y cambiando espacios por guiones
    ! En el fooder no aplicaba bien :cTitleFooter
    % si no se establece :cTitleFooter por defecto pasa a ser :cTitle
    + PROPERTY cUri // cambia la url de la barra del navegador
    + PROPERTY cSearchConsoleCode INIT "" // Identificador para validar Search Console
    + PROPERTY lIndex INIT .T. // Si los robots indexan o no la página
    + PROPERTY lFollow INIT .T. // Si los robot hacen un follo de la página
    + PROPERTY lTrackUserAgent INIT .T. // Crea el fichero TrackUserAgent donde se registra fecha, hora, ip y useragent de todos los accesos
    + PROPERTY lJsMaterialize INIT .t. //Usamos Javascript materialize
    % Actualizada versión de jQuery a la 3.5.1
    % Cambiada la posición del shadowsheet para que ocupe toda la página

    Loading spinner
    en respuesta a: WItemColBrowse #386
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Vaya,

    Por favor, comprueba que en el proyecto estás utilizando la librería correspondiente a la última versión.

    He compilado tu ejemplo y no me da ningún error

    https://samples.nefele.dev/ejemplo?ejemplo

     

    Loading spinner
    en respuesta a: WItemColBrowse #384
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Vaya, tendría que ver el código para saber qué está saliendo mal.

    Mándame la sección de tu prg en la que defines el wArrayBrowse y su columnas y lo reviso.

     

    Este es un fragmento de uno de nuestros ejemplos, por si te puede servir de ayuda

     

     

     

    Loading spinner
    en respuesta a: [Nefele] Changelog #369
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Rev.214b (12-08-2020)

    oEdit:oMask

    + PROPERTY lAutoUnmask INIT .t. // Elimina los caracteres propios de la máscara al consultar el valor

    Loading spinner
    en respuesta a: [Nefele] Changelog #367
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Rev.214 (12-08-2020)

    WebPage

    % Cambiada la posición del shadowsheet para que ocupe toda la página

    Cgi

    % En las cookies codificadas, el cambio de navegador ahora informa de un error pero no invalida el cookie

    Loading spinner
    • Esta respuesta fue modificada 3 años, 8 meses por Alfredo SanzAlfredo Sanz.
    en respuesta a: [Nefele] Changelog #362
    Alfredo SanzAlfredo Sanz
    Superadministrador

    ===== PUBLICADA LA VERSIÓN 0.02 DE NEFELE ====

    Os la podéis descargar de https://nefele.dev/blog/download/nefele-wizard-0-02/

    Loading spinner
    en respuesta a: WItemColBrowse #361
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Hola Ramón:

    Hemos publicado la versión 0.02 de Néfele.

    Descárgatela de https://nefele.dev/blog/download/nefele-wizard-0-02/ y me cuentas si se ha solucionado el problema

    Loading spinner
    en respuesta a: WEdit - Mayúsculas #357
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Prueba con

     

    Loading spinner
    en respuesta a: WEdit - Mayúsculas #354
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Ya, entiendo.

    Si ponemos :oMask:cPicture := "A{1,25}"  estamos diciendo que nos aplique el picture de tipo A con una longitud máxima de campo de 25 caracteres, con lo cual no hace falta usar la propiedad :nLength

    es lo mismo que

    Pero procura no ponerlos  juntos

    Porque esto intenta asignar la longitud dos veces y no funcionará

     

    Loading spinner
    en respuesta a: WEdit - Mayúsculas #317
    Alfredo SanzAlfredo Sanz
    Superadministrador

    Efectivamente, he detectado un bug en lUpperCase

    Por ahora, puedes probar con :oMask:cPicture := "A{ 1, nLen }", donde nLen es la longitud máxima de caracteres a introducir

     

    Ya nos contarás si te funciona

     

    La clase oMask está basada en el InputMask de Robin Herbots (https://github.com/RobinHerbots/Inputmask)

    Loading spinner
    • Esta respuesta fue modificada 3 años, 9 meses por Alfredo SanzAlfredo Sanz.
    • Esta respuesta fue modificada 3 años, 9 meses por Alfredo SanzAlfredo Sanz.
    • Esta respuesta fue modificada 3 años, 9 meses por Alfredo SanzAlfredo Sanz.
Viendo 50 entradas - de la 101 a la 150 (de un total de 152)

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para «permitir cookies» y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en «Aceptar» estarás dando tu consentimiento a esto.

Cerrar