Julius'Lab

Nombre del autor:Julius Hernández

(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 »

(Excel) Cómo contar las veces que se repite un texto en una sola celda de Excel

Ejemplo: la palabra «performer«. Necesitamos contar las veces que se repite esta palabra en cada celda.

El contenido de la celda C2 es el siguiente:

Ariel Barreras(performer), Ariel Barreras(writer)

El contenido de la celda C3 es el siguiente:

Ariel Barreras(performer), Natalia Castrejón(performer), Ariel Barreras(writer)

La primera parte de la fórmula consiste en sustituir la palabra «performer» por un caracter extraño (que no tenga posibilidades de aparecer en alguna de las celdas a comprobar). Eso lo consigue esta fórmula:

=SUSTITUIR($C2,"performer","~")

Al aplicarla a las celdas:

C2: Ariel Barreras(~), Ariel Barreras(writer)
C3: Ariel Barreras(~), Natalia Castrejón(~), Ariel Barreras(writer)

Pero eso sólo es para comprobar, no la aplicaremos directamente. La guardamos en cualquier texto, sin el símbolo de igual: =

La siguiente fórmula, cuenta las veces que aparece dicho caracter en la celda a comprobar, en el caso de la C2:

=LARGO(C2)-LARGO(SUSTITUIR(C2,"~",""))

Aplicándola en la columna F, misma línea, el resultado sería:

F2 (refiriéndose a la celda C2): 1
F3 (refiriéndose a la celda C3): 2

Ahora, en la segunda fórmula, sustituimos la referencia a la celda correspondiente, con la primera fórmula, es decir:

SUSTITUIR($C2,"performer","~")

se inserta en

=LARGO(C2)-LARGO(SUSTITUIR(C2,"~",""))

sustituyendo las apariciones de C2.

La fórmula final es:

=LARGO(SUSTITUIR($C2,"performer","~"))-LARGO(SUSTITUIR(SUSTITUIR($C2,"performer","~"),"~",""))

Utilizado en las hojas de Excel para: SISTEMA DE SAPS RECORDS (http://sistema.sapsrecords.com/)

(Excel) Cómo contar las veces que se repite un texto en una sola celda de Excel Leer más »

(Formidable) Cómo mostrar u ocultar contenido a partir de user_meta keys

1) Agregar este code snippet: https://formidableforms.com/knowledgebase/php-examples/#kb-check-parameter-value

add_shortcode('if_get_param', 'check_get_param_value');
function check_get_param_value( $atts, $content="" ) {
    if ( ! isset( $atts['name'] ) || ! isset( $atts['value'] ) || ! isset( $atts['type'] ) ) {
        return $content;
    }
    
    $type = $atts['type'];
    if ( $type == 'greater_than' ) {
        $type = '>';
    } else if ( $type == 'less_than' ) {
        $type = '<';
    } else if ( $type == 'equals' ) {
        $type = '==';
    } else if ( $type == 'not_equal' ) {
        $type = '!=';
    }

    $get_value = isset( $_GET[ $atts['name'] ] ) ? $_GET[ $atts['name'] ] : '';

    if ( ! FrmFieldsHelper::value_meets_condition( $get_value, $type, $atts['value'] ) ) {
        $content = '';
    }

    return do_shortcode( $content );
}

2) Agregar este code snippet:

add_shortcode('user_meta', 'user_meta_shortcode_handler');
function user_meta_shortcode_handler($atts,$content=null){
 
	if ( !isset( $atts['user_id'] ) ){
		$user = wp_get_current_user();
		$atts['user_id'] = $user->ID;
	}
	if ( !isset( $atts['size'] ) ){
		$atts['size'] = '50';
	}
	if ( !isset( $atts['post'] ) ) {
		$atts['post'] = '';
	}
	if ( !isset( $atts['wpautop'] ) ) {
		$atts['wpautop'] = '';
	}

	$user = new WP_User($atts['user_id']);
 
	if ( !$user->exists() ) return;
 
	if( $atts['key'] == 'avatar'){
		return $atts['pre'] . get_avatar( $user->ID, $atts['size']) . $atts['post'] ;
	}
	if ( $user->has_prop( $atts['key'] ) ){
		if ($atts['wpautop'] == 'on'){
			$value = wpautop( $user->get( $atts['key'] ) );
		} else {
			$value = $user->get( $atts['key'] );
		}
	}
 
	if (!empty( $value )){
		return $atts['pre'] . $value . $atts['post'] ;
	}
 
	return;
}

Esto creará un nuevo shortcode: [user_meta key=»loquesea»]
Reemplaar «loquesea» con el nombre del user meta y encontrará el valor almacenado ahí.

También tiene unos cuantos parámetros que acepta si se quieren usar:

user_id – id del usuario del cual se quiere obtener el meta. Debe dejarse vacía si se quiere que sea igual al usuario actual.
key – meta key del campo que se quiere obtener.
wpautop = «on» – este se usa para áreas de texto o campos wysiwyg.
size = «100» – este se usa para especificar el tamaño del campo de avatar.

Probablemente la mayoría no se necesiten estas extra opciones pero pueden usarse.

3) Usaremos el shortcode frm-set-get (nativo de FormidableForms) para obtener el valor de la meta data (usando nuestro nuevo shortcode user_meta (implementado en el paso 2)) y guardarlo temporalmente, para decirle al shortcode if_get_param (implementado en el paso 1) que use el valor guardado, de la forma siguiente:

[ frm-set-get param=my_user_meta ][user_meta key="loquesea"][ /frm-set-get ]
[if_get_param name="my_user_meta" type="equals" value="VALOR A COMPROBAR"]Contenido si es VERDADERO[/if_get_param]

[if_get_param name="my_user_meta" type="not_equal" value="VALOR A COMPROBAR"]Contenido si es FALSO[/if_get_param]

Solución orientada por Chris de FDM Digitaly adaptada por Julius, desde Slack.

(Formidable) Cómo mostrar u ocultar contenido a partir de user_meta keys Leer más »

(Solución) Falla la importación del sitio web con el plugin All In One WP Migration

Solución: Aumentar los límites en configuración de PHP, en el control panel, con los parámetros listados abajo.
Control Panel > Mi Sitio Web > Configuración de PHP.

(Suponiendo, en el caso específico que me ocurrió, que el archivo de importación .wpress era de 308 MB)

max_execution_time: 30 (max. 300)
max_input_time: 120 (max. 300)
max_input_vars: 1000 (max. 1500)
memory_limit: 256M (max. 256M)
post_max_size: 368M (max. 512M)
upload_max_filesize: 512M (max. 512M)

Los valores entre paréntesis son los máximos que permite el panel de control, los que están en negritas son los que puse y me funcionaron.
Hay que tomar en cuenta que antes de esto, usé el plugin Increase Max File Upload Size, aumentando a 512 Mb, y no funcionó, por lo que el problema supongo que debió haber sido la falta de memoria.

(Solución) Falla la importación del sitio web con el plugin All In One WP Migration Leer más »

(Solución) El sitio no se puede ver en mi equipo (Modech y Starwebs), según que por la IP de Broadcast terminada en 255

Solución: Usar el VPN de Opera Browser.

En Donweb me dicen que es porque el último octeto de mi IP Pública (en el caso específico 187.224.124.255), o sea, el 255, la define como una IP de Broadcast, y que los firewall de Donweb no permiten el acceso a sus webs. Lo cual es una mentira, porque todas las demás webs excepto Modech y Starwebs.uno me permiten el acceso sin problams.

Por lo que deduzco que algún problema de configuración deben tener y no quieren revelarlo, ya que esas dos fueron los dos sitios más antiguos que había creado (desde el 2018), problema que no heredan los hostings nuevos.

La solución extendida fue trasladar el sitio completamente a un hosting nuevo, con el plugin All In One WP Migration, y después trasladar los dominios.

(Solución) El sitio no se puede ver en mi equipo (Modech y Starwebs), según que por la IP de Broadcast terminada en 255 Leer más »

Syntax Highlighter Evolved – Languages and Examples

[ code language="css" ]

your code here

[ /code ]

The language (or lang) parameter controls how the code is syntax highlighted. The following languages are supported:

actionscript3
bash
clojure
coldfusion
cpp
csharp
css
delphi
diff
erlang
fsharp
groovy
html
java
javafx
javascript
latex (you can also render LaTeX)
matlab (keywords only)
objc
perl
php
powershell
python
r
ruby
scala
sql
text
vb
xml


[ php ]tu código aquí[ /php ]
[ css autolinks="false" classname="myclass" collapse="false" firstline="1" gutter="true" highlight="1-3,6,9" htmlscript="false" light="false" padlinenumbers="false" smarttabs="true" tabsize="4" toolbar="true" title="nombrearchivo-ejemplo.php" ]tu código aquí[ /css ]
[ code lang="js" ]tu código aquí[ /code ]
[ sourcecode language="plain" ]tu código aquí[ /sourcecode ]

lang o language — La sintaxis de lenguaje a resaltar. Alternativamente puedes usarlo simplemente como la etiqueta, por ejemplo [ php ]code[ /php ].
autolinks — Cambia el enlazado automático de las URL.
classname — Añade una clase CSS adicional a la caja de código.
collapse — Cambia la contracción de la caja de código por defecto, teniendo que hacer clic para expandirla. Es bueno en entradas con mucho código.
firstline — Un número entero que especifica qué número debe ser el de la primera línea (para la numeración de líneas).
gutter — Cambia la numeración de línea de la izquierda.
highlight — Una lista de números de línea a resaltar separados por comas. También puedes especificar un rango. Ejemplo: 2,5-10,12
htmlscript — Cambia el resaltado de cualquier HTML/XML adicional. Es bueno cuando estás mezclando HTML/XML con otro lenguaje, como cuando hay PHP dentro de una página web HTML. Por ejemplo, la vista previa anterior lo tiene activado. Esto solo funciona con ciertos lenguajes.
light — Cambia el modo claro, que desactiva la ranura y la barra de herramientas.
padlinenumbers — Controla el relleno del número de línea. Los valores válidos son false (sin relleno), true (relleno automático) o un número entero (relleno forzado).
title (solo en la v3) — Pone algo de texto antes del código. Muy útil cuando se combina con el parámetro collapse.
toolbar — Alternar la barra de herramientas (botones en la v2, el interrogante de información en la v3)
wraplines (solo en la v2) — Alternar el justificado de línea.
quickcode — Activa el modo de edición al hacer doble clic.

Syntax Highlighter Evolved – Languages and Examples Leer más »

Asignar un valor de una función Javascript a un campo en Formidable

<script type="text/javascript">
jQuery(document).ready(function($){ //set a random 9-char key
    var currentValue = '';
    var lenght = 9;
    var randomChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123456789';
    var result = '';
    currentValue = $(field_mediakey).val();
    if ($(field_mediakey).val() == '') {
    for ( var i = 0; i < lenght; i++ ) {
            result += randomChars.charAt(Math.floor(Math.random() * randomChars.length));
        }
        $(field_mediakey).val(result);
    }
    $(field_yzjna).val($(field_mediakey).val());
});
</script>

Asignar un valor de una función Javascript a un campo en Formidable Leer más »

(Javascript) Crear un string alfanumérico random

<script type="text/javascript">
jQuery(document).ready(function($){ //set a random 9-char key
    var lenght = 9; // lenght of key
    var randomChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123456789'; //any string
    var result = '';
    for ( var i = 0; i < lenght; i++ ) { //fills result with 9 random characters from randomChars
            result += randomChars.charAt(Math.floor(Math.random() * randomChars.length));
        }
    return result; // do anything with "result" string
});
</script>

(Javascript) Crear un string alfanumérico random Leer más »