Spanish [WebApp] Wait for para una ventana modal

Omar Moreno

Member
Licensed User
Longtime User
Saludos a todos, agradezco mucho la ayuda que me puedan brindar a esta situación:

En un documento HTML tengo un boton llamado entrar que se encarga de llamar a un div llamado modal1 para mostrar una ventana modal con mensajes y dos botones.

En la aplicación tengo un modulo de clase llamado WS_04_Login en donde hago referencia al botón entrar y al div modal1.

Al ejecutar la aplicación y hacer click en el botón entrar, se llama al evento entrar_click el cual llama a la subrutina MensajeModalX y se espera el resultado utilizando Wait For.

A la subrutina MensajeModalX le paso 3 parámetros el titulo, el mensaje y el objeto modal1 referenciado como divx as JQueryElement , pero es aquí donde viene la pregunta.

Como se puede hacer para que el Wait For pueda reconocer el objeto divx para el evento MouseUp si este esta referenciado como un JQueryelement, ya que lo que busco es colocar la subrutina MensajeModalX en un modulo de codigo publico para no tener que repetirla en todos los modulos de clase que pudiera tener

B4X:
        'Wait For divx_MouseUp (Params As Map)    '<--- No Funciona se queda en waiting for value ....
        Wait For modal1_Mouseup (Params As Map) '<--- Si Funciona


B4X:
Sub Class_Globals
    Private ws04 As WebSocket 'ignore
    '
    Private modal1 As JQueryElement
    '
    Private usuario As JQueryElement
    Private clave As JQueryElement
    '
End Sub
'
'
'
Sub entrar_Click (Params As Map)
  '
  Dim rs As ResumableSub
  '
  rs = MensajeModalX(modal1, "<i class='material-icons medium red-text'>cancel</i> Invalidos", "<h6><b>Los datos son invalidos, verifique su usuario y contraseña...!!!</b></h6>")
  Wait For (rs) Complete (Res As String)
  Log("Res: " & Res)
  '
End Sub

Sub MensajeModalX(divx As JQueryElement, titulox As String, mensajex As String) As ResumableSub
    '
    Dim strb As StringBuilder
    strb.Initialize
    '
    strb.Append(" <div class='modal-content'> ")
    strb.Append("    <h4>"& titulox & "</h4> ")
    strb.Append("    <p>"& mensajex &"</p> ")
    strb.Append(" </div> ")
    strb.Append(" <div class='modal-footer'> ")
    strb.Append("    <a id='aceptarmsg' href='#!' class='modal-action modal-close waves-effect waves-green btn btn-flag'>Aceptar</a> ")
    strb.Append("    <a id='cancelarmsg' href='#!' class='modal-action modal-close waves-effect waves-green btn btn-flag'>CAncelar</a> ")
    strb.Append(" </div> ")
    '
    divx.SetHtml(strb)
    '
    divx.RunMethod("modal", Array As Object("open"))
   
    Dim salir As Boolean = False
    Dim BotonPulsado As String = ""
    Do While salir = False
        '
        '
        'Wait For divx_MouseUp (Params As Map)    '<--- No Funciona se queda en waiting for value ....
        Wait For modal1_Mouseup (Params As Map) '<--- Si Funciona
        '
        '
        BotonPulsado = Params.Get("target")
        Log("Boton Pulsado: " & BotonPulsado)
        '
        If BotonPulsado = "aceptarmsg" Or BotonPulsado = "cancelarmsg" Then
            salir = True
        End If
        '
    Loop
    '
    divx.RunMethod("modal", Array As Object("close"))
    '
    Return BotonPulsado
    '
End Sub

Si alguien me puede dar alguna idea, he adjuntado el ejemplo y contiene los archivos de Materialice y Jquery para poder ejecutar desconectado.

Gracias.
 

Attachments

  • WaitFor.zip
    384.7 KB · Views: 265
Top