{{indexmenu_n>1}} ===== NODO SYS-MESSAGE ===== \\ El nodo **sys-message** es un nodo especial de la colección “Empresas”, para recibir eventos de XOneLive. \\ \\ Utilizado para realizar acciones cuando esté ocurriendo alguno de los eventos llevados a cabo por el XOneLive. \\ \\ Estos eventos están codificados numéricamente, y a continuación se pone un ejemplo de cada uno de ellos donde mostramos un mensaje descriptivo de la acción a la que pertenece cada código de evento.\\ \\ Actualmente no se pueden controlar únicamente uno ó dos casos aislados del XOneLive y no hacer nada en los otros, si se especifica el nodo para sacar un mensaje con el código 1002, el programador debe gestionar también el caso 1003 (Provisión segura), puesto que el framework encontrará el nodo y entenderá que es el programador el que se hará cargo de las acciones a realizar. ==== EJEMPLO DE USO ==== function sysMessage(codigo,message) { var cadena=""; switch(codigo) { case 1000: cadena=" Actualización descargándose (un mensaje por cada actualización)."; break; case 1001: cadena=" Actualización aplicada (un mensaje por cada actualización)."; break; case 1002: cadena=" Se han aplicado todas las actualizaciones (al comprobar las actualizaciones puede haber más de una, éste se invoca al aplicar todas)."; appData.getCurrentEnterprise().setVariables("ACTUALIZACIONES",1); // Obtenemos un puntero al objeto del menú principal que está en una variable global (En el before-edit del entry-point se habrá inicializado esta variable con self) var objeto=appData.getCurrentEnterprise().getVariables("MENUPRINCIPALFASE1"); var view=ui.getView(appData.getCurrentEnterprise().getVariables("MENUPRINCIPALFASE1")); if (view != undefined) { if (objeto != undefined) { objeto.executeNode("comprobarActualizaciones"); } } break; case 1003: /* Provisionamiento seguro. */ /* Declarar el nodo sys-message requiere que este caso lo controle el programador, /* es responsabilidad del programador limpiar la cola de réplica y cerrar la aplicación. /* ************************ */ //ui.showToast("Live: " + liveResponse.liveReceiver); ui.msgBox("Advertencia, se ha programado una actualización de base de datos. Se van a replicar todos los datos y cerrar la aplicación.", "Mensaje", 0); var bResult = replica.processReplicatorQueue(liveResponse); if (bResult) { //ui.msgBox("Cola de salida del replicador procesada correctamente. Cerrando aplicación.", "Mensaje", 0); appData.failWithMessage(-11888, "##EXITAPP##"); } else { ui.showToast("Error al procesar la cola de salida"); } break; } } ==== CODIGO ADICIONAL ==== A continuación se desarrolla a modo de ejemplo un código para mostrar una ventana flotante cuando se recibe el código 1002 desde el XOneLive (Cuando se han aplicado todas las actualizaciones pendientes).\\ \\ === Colección entry-point === En la colección entry-point, hemos de definir un frame flotante que será el que mostremos al usuario cuando recibamos la notificación desde el XOneLive. \\ En el código siguiente, se pone visible el frame flotante "frmActualizacion" y se programa un contador con una cuenta atrás que se muestra en dicha ventana\\ \\ function comprobarActualizaciones() { if (appData.getCurrentEnterprise().getVariables("ACTUALIZACIONES")==1) { self.MAP_ACTUALIZACION=1; ui.getView(self).refreshAll("frmActualizacion"); appData.getCurrentEnterprise().setVariables("CONTADOR",10); //##XONE_TRANSLATE_NEXT_LINE## self.MAP_TXT_TITLE4="La aplicación se reseteará en " + appData.getCurrentEnterprise().getVariables("CONTADOR"); ui.refresh("MAP_TXT_TITLE4"); self.MAP_BANDERACANCELAR=0; ui.executeActionAfterDelay("contador",1); } } function contador() { if (self.MAP_BANDERACANCELAR==0) { var contador=appData.getCurrentEnterprise().getVariables("CONTADOR")-1; appData.getCurrentEnterprise().setVariables("CONTADOR",contador); //##XONE_TRANSLATE_NEXT_LINE## self.MAP_TXT_TITLE4="La aplicación se reseteará en " + appData.getCurrentEnterprise().getVariables("CONTADOR"); ui.refresh("MAP_TXT_TITLE4"); if (appData.getCurrentEnterprise().getVariables("CONTADOR")==0) { appData.getCurrentEnterprise().setVariables("ACTUALIZACIONES",0); ui.restartApp(); } else { ui.executeActionAfterDelay("contador",1); } } } \\ Código CSS utilizado\\ .ppal_subtitulo { extends:prop; width:96%; fontsize:10; fontbold:true; labelwidth:0; text-border:false; locked:true; text-forecolor:#FFFFFF; align:center|center; text-align:center|center; } .btn_MsgActualizacion { bgcolor:#CCFF0000; forecolor:#FFFFFF; width:33%; lmargin:11%; height:60p; text-align:left|top; textfont-size:12; tmargin:3%; }