6 de mayo de 2015

Personalizar Wizard widget

En un soporte tuve la necesidad de personalizar el widget wizard en ciertos idiomas pero el texto de los componentes no venia con la propiedad indicada para editar asi
que mediante js y dom me di mañas para poder hacerlo. aqui comparto como podrian hacerlo


para cambian el texto de boton preview

document.getElementById("main_wizardLayers1_prevButton").innerHTML = "Abbrechen";

para cambiar el texto tambien por decorator del wizard

this.wizardLayers1.decorator.cancelCaption = "Abbrechen";
this.wizardLayers1.decorator.nextCaption = "Weiter";
this.wizardLayers1.decorator.doneCaption = "fertig";

para cambiar el texto de datos invalidos en el wizard

wm.locale.phrases["wm.WizardDecorator.TOAST_INVALID"] = "Ungültigen Wert für ${name}";

espero que les sirva

Crear un chart D3 en WaveMaker

Bueno les queria dejar un poco de codigo para incrustar bar chart series d3js en wavemaker 6.x

mas que todo hay que usar un widget html en incluir un tag div para poder llenar alli el chart


 y por su puesto referenciar a d3js y si quiere tambien usar d3 tip pues lo mismo agregar esa referencia.

  <script src="http://d3js.org/d3.v3.min.js"></script>
   <script src="http://labratrevenge.com/d3-tip/javascripts/d3.tip.v0.6.3.js"></script>.

ya en la pagina que vamos a trabajar creamos un objeto json datos tipo array para poder llenar el chart

data = [];
        data.push({
            year: 1,
            Current: 2704659,
            Cashflow: 4499890,
            Savings: 2159981
        });
        data.push({
            year: 2,
            Current: 2027307,
            Cashflow: 3277946,
            Savings: 1420518
        });
 en este ejemplo lleno con 2 series para ustedes podrian adquirir los datos desde algun liveVariable en onSuccess

finalmente colocamos el codigo de d3 y solo referenciamos al html widget como

var svg = d3.select("#chart1")

que en este caso es el div id que tenemos en nuestro html widget

les dejo un proyecto de ejemplo mavirroco.com/d3sample1.1.Alpha.zip

suerte espero que les sirva

16 de mayo de 2014

Limpiar el dojogrid sin actualizar livevariable/servicevariable

Hola les comparto una forma simple de limpiar el dojogrid sin la necesidad de actualizar livevariable/servicevariable y asi no ahorramos hacer un query a nuestra db.

Aqui el codigo

var emptyCells = { items: "" };//creamos un objeto con items vacios 
var emptyStore = new dojo.data.ItemFileWriteStore({data: emptyCells}); this.myGridname.dojoObj.setStore(emptyStore);//aplicamos solo sobre el objeto dojo del grid

Espero que les sirva.

Fuente: http://jadendreamer.wordpress.com/2011/03/07/dojo-tutorial-clear-all-data-from-the-grid/

19 de febrero de 2014

DojoGantt widget en WaveMaker

Hola les quería compartir este widget que estoy utilizando el dojo gantt .es ideal para gestionar proyectos, tareas y recursos en un marco de tiempo.Aquí les muestro lo que se genera el diagrama gantt cargado desde la base de datos.

Este widget esta en la librería de dojo desde la version 1.6 y para la integración con wavemaker no es necesario descargar nada externo.
Aquí les muestro la estructura básica en json.

{
"identifier":"id",
"items":[{
   "id":1,
  "name":"Development Project",
  "startdate":"2012-2-11",
  "tasks":[]
}]
}

y la definicion necesario para crear un widget..en este case necesita un elemento para cargar con id: ganttid

 var ganttChart = new dojox.gantt.GanttChart({
    readOnly: false,
    dataFilePath: "some_url", 
    withResource: false
  }, "ganttid");
  
  ganttChart.init();  
  ganttChart.loadJSONData();
  
});

luego obviamente cargarlo en un widget contenedor de html
 <div id="ganttid">
      </div>

Aqui les muestro la aplicacion corriendo


Bueno luego mejoramos un poco al widget..

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.

Mis cosas

Powered By Blogger