Julius'Lab

diciembre 2021

(Formidable) Establecer orden específico para una Vista con un enlace

Agregar el siguiente código PHP:
(tomado de Change View order based on URL parameter)

add_filter( 'frm_filter_view', 'change_my_view_object', 10, 1);
function change_my_view_object( $view ) {
	if ( $view->ID === 8477 ) { // 8477 is the View id
		if ( isset( $_GET['my_param'] ) && $_GET['my_param'] == 'descent' ) {
			$view->frm_order_by = array( created_at );
			$view->frm_order = array( 'DESC' );
		}
	}

	return $view;
}

En el ejemplo, 8477 es el id de la Vista.

En my_param puede ponerse el nombre del parámetro al gusto, e igualmente en descent, cualquier valor.

En la línea $view->frm_order_by = array( created_at );, dentro de los paréntesis, puede haber un ID de un campo (p.e. 150), campo por el cual se ordenará la Vista. En este ejemplo, se usa created_at como campo a ordenar, lo cual sirve para ordenar por creación de la entrada de forma ascendente o descendente.

En la línea $view->frm_order = array( ‘DESC’ );, se pone ASC o DESC, lo que se desee.

Para implementar, el enlace es como:

https://url.com/?my_param=descent

(Formidable) Establecer orden específico para una Vista con un enlace Leer más »

(Javascript) Convertir un número a formato moneda (currency)

JavaScript tiene un formateador de números (parte de la Internationalization API): Intl.NumberFormat

// Create our number formatter.
var formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',

  // These options are needed to round to whole numbers if that's what you want.
  //minimumFractionDigits: 0, // (this suffices for whole numbers, but will print 2500.10 as $2,500.1)
  //maximumFractionDigits: 0, // (causes 2500.99 to be printed as $2,501)
});

formatter.format(2500); /* $2,500.00 */

Usar undefined en lugar del primer argumento (‘es-MX’ en el ejemplo) para usar el system locale (el «user locale» en caso de que el código esté corriendo en un navegador).

Aquí hay una lista de los «currency codes«.

Código listo para usar (poner dentro del script antes de cualquier número que vaya a desplegarse):

var formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
});

Para formatear lo deseado:

formatter.format(colocar aquí el número o expresión numérica a formatear);
formatter.format(2500); /* $2,500.00 */

Fuente: StackOverflow

(Javascript) Convertir un número a formato moneda (currency) Leer más »

(Javascript) Sumar columnas (o celdas cualquiera, o cualquier elemento) en tablas, grids, etc.

<script type="text/javascript">
        var myIVAtotal = 0;
        document.querySelectorAll(".cotRepIVAsum").forEach(
          function(acell){
             var cellvalue= parseFloat(acell.innerHTML);
             if (!isNaN(cellvalue)) {myIVAtotal += cellvalue;}
         }
        );
    document.getElementById('SumaIVA').innerHTML = myIVAtotal.toFixed(2);
</script>

En el caso en que se aplicó, la necesidad era sumar todas las celdas de una tabla producida por base de datos en Formidable, en una Single Entry View. Finalmente, pueden sumarse cualquier cantidad de elementos una vez rendereados en la página.

En el ejemplo, .cotRepIVAsum es el identificador de class de las celdas de la tabla o elementos que se quieran sumar (funciona con div, span, p, etc. cualquier html tag).
document.querySelectorAll(«.cotRepIVAsum»).forEach revisa cada elemento con la clase definida, parseFloat convierte los valores de las celdas (que vienen como texto en el html) a número con decimales. Luego el if(!isNan(cellvalue)) comprueba si es número, si es así, lo suma a myIVAtotal con myIVAtotal += cellvalue y finalmente lo sustituye en cualquier html con tag, en este casi en div id=»SumaIVA».

EJEMPLO CON ANOTACIONES:

<script type="text/javascript">
        var myIVAtotal = 0; //variable para obtener el valor final
        document.querySelectorAll(".cotRepIVAsum").forEach( //revisa todos los elementos con la clase deseada
          function(acell){
             var cellvalue= parseFloat(acell.innerHTML); //obtiene el valor de la celda revisada (parseFloat obtiene número con decimales, parseInt obtiene sólo enteros
             if (!isNaN(cellvalue)) {myIVAtotal += cellvalue;} //checa si no es número, si lo es, procede a agregar el valor a la sumatoria total
         }
        );
    document.getElementById('SumaIVA').innerHTML = myIVAtotal.toFixed(2); //despliega la sumatoria total en cualquier div con ese tag, toFixed(2) redondea a 2 decimales
</script>

(Javascript) Sumar columnas (o celdas cualquiera, o cualquier elemento) en tablas, grids, etc. Leer más »