1 de septiembre de 2012

Input Mask Editor en WaveMaker

Buscando un buen Mask plugin para integrar a un proyecto que estaba trabajando pude unir este de jquery
http://digitalbush.com/projects/masked-input-plugin/#demo a un editor de waveker.. aqui les dejo el proyecto de prueba...



Lo primero que hay que hacer es buscar el editor id#..se lo puede hacer con un inspector de codigo como firebug
y luego colocar los enlaces en index.html page de los javascripts que vamos a necesitar 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="resources/javascript/jquery.maskedinput.js"></script>
luego en la funcion "start" poner el masked pattern que necesites
dojo.declare("Main", wm.Page, {
    start: function() {
        try {
            //here we set the mask to current texteditor
            jQuery(function($) {
                $("#dijit_form_TextBox_0").mask("99/99/9999");
            });
        } catch (e) {
            app.toastError(this.name + ".start() Failed: " + e.toString());
        }
    },
    _end: 0
});

js file: http://cloud.github.com/downloads/digitalBush/jquery.maskedinput/jquery.maskedinput-1.3.min.js
Descargar desde aqui el proyecto de ejemplo: www.mavirroco.com/InputMask.1.Alpha.zip

28 de agosto de 2012

Integrar JPEGCAM con WaveMaker para tus fotos en tu web

Hace un tiempo realize una pequeña integracion con JPEGCAM para WaveMaker para sacar fotos desde tu webcam y guardarlas en el servidor. aqui les paso un breve tutorial para poder resolverlo.



Tutorial aqui http://mavirroco.com/DocsJPEGCAMWAVEMAKER.pdf

OFFTOPIC: Scriptlet para numeros en literal en jasperreports

Queria compartir este scriptlet, una clase java para crear funciones especificas en jasper reports, que estaba usando para un reporte en para mostrar los numeros en literal, muy utilizados en facturas.


Bueno no es un post directamente relaciondo a WaveMaker pero quize compartir para que puedan incluirlo en sus aplicaciones.

Aqui la clase en java.
import java.text.DecimalFormat; public class EnglishNumberToWords extends JRDefaultScriptlet{ private static final String[] tensNames = { "", " ten", " twenty", " thirty", " forty", " fifty", " sixty", " seventy", " eighty", " ninety" }; private static final String[] numNames = { "", " one", " two", " three", " four", " five", " six", " seven", " eight", " nine", " ten", " eleven", " twelve", " thirteen", " fourteen", " fifteen", " sixteen", " seventeen", " eighteen", " nineteen" }; private static String convertLessThanOneThousand(int number) { String soFar; if (number % 100 < 20){ soFar = numNames[number % 100]; number /= 100; } else { soFar = numNames[number % 10]; number /= 10; soFar = tensNames[number % 10] + soFar; number /= 10; } if (number == 0) return soFar; return numNames[number] + " hundred" + soFar; } public static String convert(long number) { // 0 to 999 999 999 999 if (number == 0) { return "zero"; } String snumber = Long.toString(number); // pad with "0" String mask = "000000000000"; DecimalFormat df = new DecimalFormat(mask); snumber = df.format(number); // XXXnnnnnnnnn int billions = Integer.parseInt(snumber.substring(0,3)); // nnnXXXnnnnnn int millions = Integer.parseInt(snumber.substring(3,6)); // nnnnnnXXXnnn int hundredThousands = Integer.parseInt(snumber.substring(6,9)); // nnnnnnnnnXXX int thousands = Integer.parseInt(snumber.substring(9,12)); String tradBillions; switch (billions) { case 0: tradBillions = ""; break; case 1 : tradBillions = convertLessThanOneThousand(billions) + " billion "; break; default : tradBillions = convertLessThanOneThousand(billions) + " billion "; } String result = tradBillions; String tradMillions; switch (millions) { case 0: tradMillions = ""; break; case 1 : tradMillions = convertLessThanOneThousand(millions) + " million "; break; default : tradMillions = convertLessThanOneThousand(millions) + " million "; } result = result + tradMillions; String tradHundredThousands; switch (hundredThousands) { case 0: tradHundredThousands = ""; break; case 1 : tradHundredThousands = "one thousand "; break; default : tradHundredThousands = convertLessThanOneThousand(hundredThousands) + " thousand "; } result = result + tradHundredThousands; String tradThousand; tradThousand = convertLessThanOneThousand(thousands); result = result + tradThousand; // remove extra spaces! return result.replaceAll("^\\s+", "").replaceAll("\\b\\s{2,}\\b", " "); } }
y desde el ireport podemos usar este scriptlet.




Espero que les sirva.

21 de julio de 2012

Configurando el Log4j para distribuir la salida del server tomcat


Quiero compartir algunas configuraciones que realize hace un tiempo en mi trabajo cuando tuve problemas con mi log file del tomcat. Si tienes muchos proyectos y quieres distribuir las salidas del server de esos proyecto esto te
puede servir.









En este ejemplo voy a usar la clase DailyRollingFileAppender del log4j que trae mi proyecto wavemaker que va a guardar la salida en un archivo nuevo y por fechas ya no en el tipico wm.log en wavemaker.
Para ello editamos el archivos NOMBREDELPROYECT/src/log4j.properties

log4j.rootLogger=warn, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m> (%x) %n
y cambiar por
log4j.rootLogger=warn, stdout

log4j.appender.stdout=org.apache.log4j.DailyRollingFileAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m> (%x) %n
log4j.appender.stdout.file=/yourfolder/yournameoflogfile.log

Espero que les sirva..

10 de abril de 2012

No mas Related Editors in readonly mode....bienvenido evento onBeforeServiceCall

En la ultima version de WaveMaker 6.4.5GA al fin pude decir adios a los tediosos Related editors para colocar mis variables ocultas y enviar como datos estaticos, bueno existian otras formas pero no me convencian.. pero ahora con el evento del liveform  onBeforeServiceCall puedo hacerlo facilmente y ahorrarme de generar mas editors para configurar mis claves foraneas. esto me facilita escribir una sola vez el codigo en vez de hacerlo al insertar o al modificar.

Aqui un ejemplo como puede indicar que campos tiene que llenar con JSON para su clave foranea.


liveForm1BeforeServiceCall: function(inSender, inOperation, inData) {
 try {
       
 inData.tlkpersonnes = {gid:this.getUserId.data.dataValue};

 } catch(e) {
 console.error('ERROR IN liveForm1BeforeServiceCall: ' + e);
 }
  },



1 de marzo de 2012

Lecciones que se debe aprender en cuando uses WaveMaker

Esta revisando algunos articulos de WaveMaker y de repente me impresiono el feedback de un usuario novato de wavemaker, bueno solo de novato por el tiempo que esta usando la herramienta pero si que actualmente me pongo a pensar ya tiene mas experiencia que unos cuentos que conozco.
 Bueno aqui se puede ver las lecciones aprendidas
Off-topic(?): Lessons learned with Wavemaker.

Lo coloca la parte final en español:

Así que aquí están mis lecciones aprendidas hasta ahora (más llegará, estoy seguro):


  • Borrar la caché del navegador. A menudo.
  • Utilice las funciones de depuración del navegador. Firebug y herramientas para desarrolladores de Chrome es su amigo. 
  • Ver wm.log para Hibernate, y otras cosas ServerSide JavaServices.
  • No te olvides de ir a dormir.
  • La tipificación de las variables WaveMaker puede ser complicado, al acceder a ellas en JavaScript o pasarlos a JavaServices. Compruebe que el depurador navegador para JSON es correcta!
  • Los Widgets integrados (generado) para el acceso a la base de datos es muy agradable y un ahorro de tiempo bueno cuando se quiere crear una interfaz de usuario de 1:1 para las tareas comunes CRUD de las tablas de bases de datos. Si quieres hacer cosas más complejas (que implican varias tablas) y, en general, desea comprender lo que sucede en el fondo, empezar desde cero!
  • Los foros de la comunidad en http://dev.wavemaker.com/forums/ son excelentes! Comparable a los foros de PowerCLI (y esperemos que los foros VCO con el tiempo también) en VMTN a encontrar buenas respuestas con una gran cantidad de listas para usar ejemplos de código para cualquier pregunta que tenga ... Sólo asegúrese de elegir un ejemplo que se ajusta a la versión Wavemaker se utiliza!
  • Aprenda Hibernate .
  • Ve a dormir!
  • HQL es excelente!
  • La base de datos integrada para modelar herramientas es buena, pero es posible que se confunda acerca de la forma relacional vs orientado a objetos para el modelado de datos => Una vez más: Aprenda Hibernate y HQL.
  • Vaya. a dormir.
  • Estimado equipo de Wavemaker: ¿Dónde está mi "Referencias Parámetros", ficha en la interfaz gráfica de usuario?
  • No dude en leer los informes de errores Jira . Puede haber algunos errores que son importantes para los casos de uso!
  • No supervisar la documentación de referencia para los Widgets del lado del cliente y del lado del servidor !
  • La documentación es muy bueno, pero a veces demasiado! Se confunde cuando hay 3 ejemplos de códigos diferentes para resolver el mismo problema.
  • Ve a dormir
  • El uso de Eclipse y su integración a SVN / Git para la gestión de código fuente , y aprovechar las características de exportación / importación para el proceso de implementación.
  • Cloudfoundry es una gran plataforma para dev / test! No hay locales más necesario.
  • Spring Roo no está integrado todavía, por desgracia, . Sería muy bueno si se puede aprovechar Roo para la capa de datos. 
  • Ir al slzzzzzzzzzzzzzzzzzzzz

Mis cosas

Powered By Blogger