API de la librería Ingra 9

Sección: js

Módulo: ingra..js

ingra Clase base de la librería ingra
Básicos numéricos (M)
ingra.red (num, dec) Redondea num a dec decimales. dec==null coma flotante, dec<0 redondea no formatea
ingra.iguales (r1, r2, dec=8) Son iguales los números reales a y b redondeados con dec decimales
ingra.ac (num, dec, presentaCero, omas) Convierte a cadena; presentaCero por defecto cadana vacia si 0; omas pone dec decimales o más
ingra.dc (a, dec) Convierte de cadena a número
ingra.ceros (n, t) Retorna cadena del número n añadiendo t ceros delante
ingra.aleatorio (n) Retorna numero aleatorio entre 0..n-1
ingra.recta (x1, y1, x2, y2, x) Devuelve y para la abscisa x, que esté en la recta de los 4 primeros puntos (semajanza de triángulos de Tales). Admite (x1,y1,x)
ingra.entre (x1, x2, x, margen=0) ¿Está x entre x1 y x2? (1)ok (null)exterior
Básicos de Listas (L)
ingra.dl (ds, codo) De objeto {...} a lista [...]
ingra.ds (dl, cod, codo=null) De lista [...] a objeto {...}, cod: "a" o ["a",...], codo:dl[codo][cod](opcional)
ingra.cl (dl, cod, ordenada=false) De lista de objetos a lista de un campo (si ordenada implica única y sin nulos)
ingra.ao (o, ...vl) OBSOLETA usar objeto literal. De lista a objeto (cod,val, cod,val, ...) | (objeto, cod,val,...) | (objeto,objeto, cod,val,... )
ingra.suma (dl, el) Suma vectores (vector_numérico) o (vector_objetos, campo[.campo]) o (vector_numerico, vector_numérico) o (vector_numerico, constante)
ingra.resta (dl, el) Resta vectores (vector_numerico, vector_numérico) o (vector_numerico, constante)
Básicos de cadenas (S)
ingra.modo (texto, letra, noexiste, novalor, minimo, maximo) Analiza modo en cadena con formato: <modo=letra><valor=numero>..., noexiste:0,novalor:1 // noexiste:0,novalor:1
ingra.modos (texto, defectos, conVectores) Analiza modos en cadena con formato: <modo=letra><valor=numero>... > {letra:numero | letra:[numero]}
ingra.modos2 (texto, defectos) Analiza modos en cadena con formato: <modo=letra><valor=numero>... > {letra:numero | letra:[numero]}
ingra.opcion (i, ...al) Devuelve índice base Opción
ingra.compara (a, b, descendente) Compara a > b ? 1 : a < b ? -1 : 0, si descendente al contrario
Básicos de archivos (F)
ingra.preextension (arc, ponPreextension) Archivo con preextensión añadida (camino/nombre[preextensión].extension)
ingra.extension (arc, ponExtension) Extensión del archivo en minusculas y 3 letras; si ext retorna archivo con nueva extension
ingra.archivo (arc) Nombre del archivo arc con extensión
ingra.nombre (arc, conExtension) Nombre del archivo arc, por defecto sin extensión. conExtension==2 incluye camino1
ingra.camino (arc) Camino del archivo arc
Básicos de objetos (O) Tipos de datos
ingra.esN (o) Es Number (número real o entero), Number.isInteger(o) para enteros
ingra.esB (o) Es Bool (boleano)
ingra.esS (o) Es String
ingra.esF (o) Es Function
ingra.esA (o) Es Array
ingra.esD (o) Es Date
ingra.esR (o) Es RegExp (regular expresión)
ingra.esO (o) Es Object
ingra.cbDefecto (data) cb de defecto, si error presenta en consola

Módulo: ingra.B..js

ingra.B Clase ArrayBuffer; representa un genérico buffer de datos binarios de longitud fija, no se puede manipular el contenido
ingra.B.deFile (file, cb, cbProgress) De File a ArrayBuffer; utiliza FileReader
ingra.B.deCanvas (canvas) De Canvas a Uint8ClampedArray; utiliza ImageData
ingra.B.deString (str) De cadena a buffer
ingra.B.deBase64 (base64) De base64 a buffer
ingra.B.deDataUrl (dataUrl) De dataURL "data:<mime>;base64,<base64>" a buffer
ingra.B.deBlob (blob, cb) De blob a buffer
ingra.B.aString (buf) A cadena
ingra.B.aBlob (buffer, type) A blob
ingra.B.aArray (typedArray) A array normal, = Array.from, constructor === Array,
ingra.B.aBase64 (buf) A base64
ingra.B.get (url, cb) Recibe buffer de una URL
ingra.B.post (url, buffer, cb) Envia buffer a una URL; El metodo send() de las instancias XMLHttpRequest ahora admite vectores tipados y objetos ArrayBuffer como argumento.
ingra.B.dc (str) De cadena a buffer ; usa charCodeAt(16unicode) > Uint16Array
ingra.B.ac (buf) De buffer a cadena; Uint16Array > String.fromCharCode(16unicode)
ingra.B.ac16 (buf) De buffer a cadena; Uint16Array > String.fromCharCode(16unicode)
ingra.B.dc16 (str) De cadena a buffer ; usa charCodeAt(16unicode) > Uint16Array
ingra.B.igual (a, b) Compara buffers
ingra.blob Clase blob (Binary Large OBjects), representation de datos en bruto en disco Blob:{name,size,type,...}; file is a blob
ingra.blob.deBase64 (base64, mime) Convierte de base 64
ingra.blob.deDataUrl (dataUrl) Convierte de data url > deBase64
ingra.blob.deCanvas (canvas, cb, type, quality) De canvas type:"image/png"(/jpeg/webp); quality:0.95(0..1) > deDataUrl > (blob)
ingra.blob.deImage (image) De image
ingra.blob.deTexto (texto, mime) Convierte de texto; mime:'text/css'|'text/html'|...
ingra.blob.aImage (blob, image) Retorna image.src
ingra.blob.aDataUrl (blob) Añade un link desde blob
ingra.base64 Clase base64; base64 usa caracteres "A-Z", "a-z", "0-9", "+", "/" y "=" para codificar binarios
ingra.base64.dc (str) De cadena a base64 == window.atob
ingra.base64.ac (b64) De base64 a cadena == window.btoa
ingra.dataUrl Clase dataUrl
ingra.dataUrl.deTexto (texto, type='text/plain') De texto > dataUrl
ingra.dataUrl.deBlob (blob, cb) De blob|file > ({dataUrl})
ingra.dataUrl.deUrl (url, cb) De url > {dataUrl}
ingra.dataUrl.deImg (img, op) De imagen op:{formato:jpg*|jpeg|png|webp, calidad:0.85, alto[Mm], ancho[Mm], maximo[Mm]} > canvas > {ancho[Mm],alto[Mm],dataUrl}
ingra.dataUrl.deImgSrc (src, op, cb) De imagen (source) op:{formato:jpg*|jpeg|png|webp, calidad:0.85, alto[Mm], ancho[Mm], maximo[Mm]} > Image load > deImg

Módulo: ingra.D..js

ingra.D Clase date. Generales de tiempo, fecha y hora
ingra.D.fec (d) De date a fecha (aaaammdd)
ingra.D.hor (d) De date a hora (hhmmss)
ingra.D.fechor (d) De date a fechahora (aaaammdd.hhmmss)
ingra.D.diaSemana (d) De date a día de la semana (0)lunes (1)martes ... (7)domingo
ingra.D.ao (d) De date a objeto >{a,m,d,h,mi,s, ms}
ingra.D.id2 (d, sep='.', conMs) De date a formato: aaaammdd.hhmmss[ii]; con milisegundos
ingra.D.id3 (d, sep='.') De date a formato: aaaammdd.hhmmssii
ingra.D.ac (d) De date a formato: "d/m/a h:m:s"
ingra.D.forma (d, frm) De date a formato frm: aaaa(2020) | aa(20) | mmmm(Marzo) | mmm(Mar) | mm(03) | dddd(Martes) | ddd(Mar) | dd(11) | hh(12) | mm(18) | ss(32) // Ejemplo:" dddd, d de mmmm de aaaa"
ingra.D.amd (d) De date a formato "aaaa-mm-dd"
ingra.D.amd2 (d) De date a formato "aaaammdd-hhmmssii" (ISO: aaaa-mm-ddThh:mm:ss.iiiZ 2012-11-30T01:21:00.000Z)"
ingra.D.aFH (d) De Date a fecha y hora > [fec,hor]
A date
ingra.D.dc (a) A date desde formato "d/m/a h:m:s" con cualquier separador
ingra.D.pon (a, b) A date desde (fec,hor) | (fechor) | (Date) | (año, mes, día, horas, minutos, segundos, milisegundos) | (milliseconds) | (isodate String)
ingra.D.deFH (fec, hor) A date desde fecha y hora; admite (fec,hor) o (fechor)
ingra.D.deAMDHMS (ano, mes, dia, hrs, min, seg, ms) A date desde AMDHMS
ingra.D.deDMAHMS (dia, mes, ano, hrs, min, seg, ms) A date desde DMAHMS
Varios
ingra.D.ms2a (ms) De milisegundos a cadena "HHhMMmSSsIIIms"
ingra.D.cuantasVeces (tiempo, funcion) Cuenta veces se ejecuta 'funcion' en 'tiempo'
ingra.D.cuantoTiempo (funcion) Cuenta tiempo (ms) tarda 'funcion' en ejecutarse
ingra.fec Clase fecha entero con formato AAAAMMDD
ingra.fec.pon (d, m, a, noAdmiteIncompleta) Retorna fecha desde (d,m,a) o (Date) o {d,m,a} o (fec) o (a,m,d);
ingra.fec.completa (fec) Retorna fecha completa; debe incluir d,m,a
ingra.fec.actual () Retorna fecha actual
ingra.fec.mesAnterior () Primer día del mes anterior
ingra.fec.dia (fec, dia) Dias de fec (0..31). Si dia retorna fec con dia
ingra.fec.mes (fec, mes) Mes de fec (0..12). Si mes retorna fec con mes
ingra.fec.ano (fec, ano) Año de fec (aaaa). Si ano retorna fec con año
ingra.fec.mesNombre (fec) Nombre del mes de fec (Enero,..)
ingra.fec.diaNombre (fec) Nombre del mdía de fec (Lunes,...)
ingra.fec.aDate (fec) De fec a Date
ingra.fec.agrega (fec, d, m, a) Agrega d(dias) m(meses) a(anos) a fec, d,m,a pueden ser negativos; fec opcional (defecto hoy)
ingra.fec.semanaAno (fec) Nº de semana en el año 1..52 + restos(0,53)
ingra.fec.semanaAnoBuffer (fec, buffer) Nº semana en el año (con buffer para llamadas repetidas) 0..51 (restos a 0 y 51)
ingra.fec.diaSemana (fec, comoTexto) Retorna nombre del día de la semana con 0:LUNES. Admite param. (d,m,a)
ingra.fec.diaSemana1 (sem, ano) Retorna nombre de primer dia de la semana sem
diasMes1 Días del año al comienzo de cada mes (no bisiestos)
diasMes2 Días de cada mes (año no bisiesto)
diasMes2.bisiesto (ano) Retorna true|false
diasMes2.diasAno (ano) Días del año (365 o 366 bisiestos) (ano) o (fec) > nºdias
diasMes2.diasMes (mes, ano) Días del mes. También admite sólo un param (fec) - fecmesdia
diasMes2.diasHasta (fec) Número de dias del año - fecanodia
diasMes2.mesesEntre (f1, f2) Nº de meses entre fechas
diasMes2.diasEntre (f1, f2) Nº de días entre fechas
diasMes2.anos (fec) Fecha en años en decimal
diasMes2.nombre (fec, breve) Formato como '12 Agosto 2009' o 'Ago 2008', incompletas por la izquierda - fec2nom
diasMes2.forma (fec, f) Formato (admite varios) f: aaaa|mmmm|mmm|mm|dddd|ddd|dd|hh|nn|ss|a - fec2forma
diasMes2.ao (fec) De fecha a objeto, aaaammdd > {a,m,d}
diasMes2.do (o) De objeto a fecha, {a,m,d} > aaaammdd
diasMes2./*ac (fec, sep='/', conceros=1, diaSemana=0) Formato a cadena sep='/', conceros:1, diaSemana:0,1,2,3,-1
diasMes2.ac (fec, op) Formato a cadena, op:sep|{sep:'/', conceros:1, diaSemana, sinhoy, concolor, defecto}, (diaSemana>0)nºcaracteres
diasMes2.dc (a, noAdmiteIncompleta) Formato de cadena - str2fec
ingra.hor Clase hora entero con formato HHMMSS
ingra.hor.pon (h, m, s, esIntervalo) Retorna hor, admite Date; h,m,s; si !intervalo h:0..24
ingra.hor.actual () Retorna hor actual
ingra.hor.seg (hor, s) Segundos de 'hor'. Con s(segundos) retorna hor con s incluidos
ingra.hor.min (hor, m) Minutos de 'hor'. Con m(minutos) retorna hor con m incluidos
ingra.hor.hrs (hor, h) Horas de 'hor'. Con h(horas) retorna hor con h incluidas
ingra.hor.entre (hor1, hor2) retorna hora entre dos horas
ingra.hor.media (hor1, hor2) retorna hora media entre dos horas
ingra.hor.agrega (hor, h, m, s) Agrega a hor h(horas), m(minutos) y s(segundos))
ingra.hor.aHoras (hor) De hor a horas decimales
ingra.hor.deHoras (horas) De horas decimale a hor
ingra.hor.ao (hor) De hor a objeto {h,m,s}
ingra.hor.ac (hor, sep=':', def=[2, 2, 2], esPeriodo) Retorna cadena hh:mm:ss; def dígitos en h,m,s; si esPeriodo retorna h:m:s
ingra.hor.dc (a) Retorna hor desde cadena; trocea cadena con cualquier separador no numérico; '.' hora actual
ingra.fechor Clase número real en formato aaammdd.hhmmss
ingra.fechor.actual () Retorna fh actual
ingra.fechor.forma (fh) Retorna fh desde number, string, date o array
ingra.fechor.pon (dia, mes, ano, hrs, min, seg, noAdmiteIncompleta) Retorna fh; admite (fec,hor), (ano,mes,dia)
ingra.fechor.agrega (fec, d, m, a, h, mi, s) Agrega d(dias) m(meses) a(anos) a fec, d,m,a pueden ser negativos; fec opcional (defecto hoy)
ingra.fechor.aFH (fh) Retorna [fec,hor] de fh
ingra.fechor.deFH (f, h) Retorna fh desde [fec,hor]
ingra.fechor.aDate (fh) Retorna Date
ingra.fechor.deDate (d) Retorna fh desde Date
ingra.fechor.aJSON (fh) Retorna formato ISO: 2013-04-14T18:26:46.613Z
ingra.fechor.fec (fh) Retorna la fecha de fh
ingra.fechor.hor (fh) Retorna la hora de fh
ingra.fechor.hrs (fh) Retorna las horas decimales de fh
ingra.fechor.ao (fh) Retorna objeto > {a,m,d,h,mi,s}
ingra.fechor.ac (fh, op) Retorna "d/m/a h:m:s"; con número de dígitos, op:{sep:'/', conceros:1, diaSemana, sinhoy, concolor}, (diaSemana>0)nºcaracteres
ingra.fechor.dc (a) De cadena "d/m/a h:m:s" a fh; admite cualquier separador; '.' o '/' retorna actual; admite ISO
ingra.fechor.diferencia (fh1, fh2) Retorna diferencia entre fhs en horas decimales
ingra.diames Clase número entero en formato mmdd
ingra.diames.pon (d, m) Retorna dm
ingra.diames.actual () Retorna dm actual
ingra.diames.agrega (dm, d, m) Retorna dm incrementado en d(dias), m(meses)
ingra.diames.ac (dm, sep='/', num=2) Retorna "dd/mm"; num(número de cifras)
ingra.diames.dc (a) Retorna fh de cadena "d/m" con cualquier separador; '.' retorna fh actual
ingra.mesano Clase número entero en formato aaaamm
ingra.mesano.pon (m, a) Retorna ma
ingra.mesano.actual () Retorna ma actual
ingra.mesano.agrega (ma, m, a) Retorna ma incrementado en m(meses) a(años)
ingra.mesano.dentro (fec, md1, md2) fec está entre md1 y md2
ingra.mesano.ao (ma) Retorna objeto {a,m}
ingra.mesano.ac (ma, alfa) Retorna "mm/aaaa"; alfa: "nombresMes aaaa"
ingra.mesano.dc (s) Retorna ma de cadena "m/a" con cualquier separador; '.' retorna ma actual

Módulo: ingra.F.js

Lee archivo local // Presenta diálogo del sistema operativo - file:{ name:"a.png", size:47744, type:"image/png", lastModifiedDate }

ingra.F.lee (op, cb) Lee archivo local como texto UTF8, op:{cbProgress} > (data,file,ev)
ingra.F.leeAnsi (op, cb) Lee archivo local como texto ANSI, op:{cbProgress} > (data,file,ev)
ingra.F.leeJson (op, cb) Lee archivo local como JSON, op:{cbProgress} > (objJs,file,ev)
ingra.F.leeDataUrl (op, cb) Lee archivo local como DataUrl, op:{cbProgress} > (dataUrl,file,ev)
ingra.F.leeBuffer (op, cb) Lee archivo local como Buffer, op:{cbProgress} > (buffer,file,ev)
Graba archivo local // Presenta diálogo del sistema operativo
ingra.F.graba (name, texto) Graba archivo de texto utf8
ingra.F.grabaAnsi (name, texto) Graba archivo de texto ansi
ingra.F.grabaBinario (name, data) Graba archivo binario
ingra.F.grabaCanvas (name, canvas, quality) Graba archivo con el contenido de un objeto canvas
ingra.F.descarga (url, name, forzada) Descarga contenido de la url al archivo local name, si no forzada el navegador decide que hacer con los datos a descargar
Graba archivo remoto // XMLHttpRequest POST
ingra.F.sendData (data, url, cb) Envia data a url; XMLHttpRequest POST
ingra.F.sendFile (file, url, cb) Envia file a url
ingra.F.sendCanvas (canvas, url, cb, tipo, calidad) Envia canvas a url; canvas.toDataURL sendData; tipo:png|jpeg|webp; calidad:De jpg

Módulo: ingra.L..js

ingra.L Listas de objetos
ingra.L.compara (a, b, orden) Compara objetos, retorna 1(a>b),0(a=b),-1(a<b), null ~ 0 a todos los efectos en comparaciones
ingra.L.ordena (ol, orden) Ordena lista de objetos sobre si misma
ingra.L.buscai (ol, campos) Busca en lista de objetos el primero que cumple el criterio de campos, retorna -1 o posición en base 0
ingra.L.buscail (ol, campos) Busca en lista de objetos los que cumplen el criterio de campos, retorna lista de posiciones
ingra.L.busca (ol, campos) Busca en lista de objetos el primero que cumple el criterio de campos, retorna el objeto o null
ingra.L.buscal (ol, campos) Busca en lista de objetos los que cumplen el criterio de campos, retorna lista de objetos o []
ingra.L.cuenta (ol, campos) Cuenta en lista de objetos los que cumplan el criterio de campos, retorna número de encontrados
ingra.L.elimina (ol, campos) Elimina los objetos de la lista que cumplan el criterio de campos, retorna número de eliminados
ingra.L.buscaObjeto (ol, o) Busca objeto en lista de objetos, retorna -1 o posición del objeto encontrado en base 0
ingra.L.eliminaObjeto (ol, o) Elimina objeto en lista de objetos, retorna -1 o posición del objeto eliminado en base 0
ingra.L.iniciaCeros (nh, nv) Crea una lista o una matriz rellena de 0s; (nh,nv=0) > nl | nll
ingra.L.agregaSumas (nll, mh, mv) Agrega filas y columnas con el total; (mh=0,mv=0) > nll:[nl+1]+n

Módulo: ingra.M..js

ingra.M (function() librería de matemáticas retorna el objeto M con toda las functiones -1-Revision
M.rad (gra) De grados a radianes
M.gra (rad) De radianes a grados
M.tan2 (rad) Contraria a atan2(y,x), retorna {x,y}
M.igual (n1, n2, mar) Comprueba que son iguales 2 numeros
M.igual0 (n, mar) Comprueba si n es = 0
M.fraccion (n) Retorna la parte decimal del numero
operaciones sobre listas numéricas
M.max (nl, cod) Retorna el valor máximo valor de nl (con parámetro opcional 'cod', retorna el máximo de nl[][cod]) // sin 'cod' equivale a Math.max(...nl)
M.min (nl, cod) Retorna el valor mínimo valor de nl (con parámetro opcional 'cod', retorna el mínimo de nl[][cod]) // sin 'cod' equivale a Math.min(...nl)
M.sum (nl, cod) Retorna la suma de valores de nl (con parámetro opcional 'cod', retorna la suma de nl[][cod])
M.med (nl, cod) Retorna la media de valores de nl (con parámetro opcional 'cod', retorna la media de nl[][cod])
M.dev (nl, cod) Retorna la desviación típica de nl (con parámetro opcional 'cod', retorna la desviación típica de nl[][cod])
M.analiza (nl, cod) Retorna {min,max,sum,med,des} de (nl,cod)
M.unicos (ol, cod) Ordena y elimina duplicados (opcionalmente cod)
operaciones sobre listas con índices
M.eliminaIndices (nl, il) Elimina elementos de nl en il(índices a nl), elimina en orden decreciente para no modificar los índices
M.mueveIndices (nl, i1, i2) Mueve elemento en i1(índice a nl) detrás de i2(índice a nl) en dirección i1-i2
M.mueveIndicesDelante (nl, il, i2) Mueve elemento en i1(índice a nl) delante de i2(índice a nl); i1 puede ser una lista de índices; retorna i2 modificado
M.formatBytes (valor) Retorna valor con dos dígitos significativos en Bytes|KB|MB|GB|TB
M.aleatorio (min, max) Retorna un número aleatorio entero: (min,max) entre min incluido a max excluido // o (numero) desde 0 a numero no incluido
M.aleatorioN (N) Retorna un número aleatorio entero de N cifras; Math.pow(10,5) == 1e5 == 100.000
M.aleatorioC (N) Retorna una cadena de N carácteres aleatorios entre [A,Z]
M.transpuesta (all) Retorna la matriz traspuesta solo 2d
M.determinante (all) Retorna determinante a[3][3]
ingra.bit (v, bit, pone) Operaciones de bits (v)indice (v,bit)valor (v,bit,0)pone0 (v,bit,1)pone1 (v,bit,-1)cambia bit
ingra.bit2l (val, length=8) De valor en bits a lista de 1|undefined

Módulo: ingra.O..js

length (o) Nº de propiedades
vacio (o) ¿Está vacio?
mueve (ori, des) Elimina componentes propios y copia de origen
duplica (oo) Copia no recursiva
copia (origen, destino) Copia profunda copia propiedades y subobjetos). Si destino copia contenido al objeto
deepClone (obj) Copia profunda (copia propiedades y subobjetos)
keys (o) Retorna lista de claves, Object.keys(o);
pon (obj, cod0, val0) (objeto,índice,valor) Admite subobjetos, indice con '.'
igual (a, b) Compara y retorna true|false

Módulo: ingra.S..js

ingra.S Manipulación de cadenas de texto
ingra.S.simple (a) Elimina blancos por delante y por detrás y duplicados
ingra.S.troceaComillas (texto, mantieneComillas) Trocea cadena por espacios externos a '' "" / / [] ()
ingra.S.troceaExterno (condicion, sep) Trocea cadena por espacios externos a '' "" / / [] ()
ingra.S.izquierda (a, sep, porDetras) Retorna la cadena izquierda desde el primer separador. Sin separador, retorna todo. Si porDetras retorna desde el último separador. Sin separador retorna ''
ingra.S.derecha (a, sep, porDetras) Retorna la cadena derecha desde el primer separador. Sin separador, retorna ''. Si porDetras retorna desde el último separador. Sin separador retorna todo
ingra.S.split2 (a, sep, pordetras, conrecorte=1) Retorna lista [anterior,posterior] desde el primer separador 'sep' buscado desde el inicio o si pordetras desde el final
ingra.S.sinComillas (a) Recorta y elimina comillas " o ' si delante y detrás
ingra.S.eliminaLineasBlancas (a) Aplica expresión regular
ingra.S.eliminaComentarios (a, noLineComment) Elimina texto entre marcas /*...*/, si noLineComment, elimina comentarios simples javascript
ingra.S.esNombreArchivoValido (fname) ¿Tiene caracteres válidos para file windows?
ingra.S.nombreArchivoValido (nom) Elimina caracteres \ / : * ? " < > |
ingra.S.codigoValido (cod, noInicial) Código para JS, file, mongoDb, reemplaza con _ caracteres \s\/:*?"<>\ noInicial comprueba que no empiece con número
ingra.S.esCodigoValido (cod, noInicial) ¿Tiene caracteres válidos para mongoDb?
ingra.S.siguiente (s) Devuelve siguiente al nº de la serie, si no acaba en número, añade sufijo "0001"
ingra.S.anterior (s) Devuelve anterior al nº de la serie, si cero o menor, devuelve negativo con el mismo nº de caracteres (A000 > A0-1)
ingra.S.esCodigoMongo (a) Retorna false si contiene |/\. "$*<>:?ñ
ingra.S.esCodigo (a) Retorna false si contiene A-Z
ingra.S.esNumero (a) Retorna false si contiene distinto a 0-9 + - . , e E (- último sino \-)
ingra.S.esEntero (a) Retorna false si contiene distinto a 0-9 + - (- último sino \-)
ingra.S.esAlfanumerico (a) Retorna false si contiene distinto a a-z A-Z 0-9 _
ingra.S.esAlfa (a) Retorna false si contiene distinto a a-z A-Z y espacio en blanco
ingra.S.utf2ansi (s) Cambio juego de caracteres
ingra.S.ansi2utf (s) Cambio juego de caracteres

Módulo: ingra.json..js

ingra.eval (js) Función eval() con captura de error
ingra.json Clase con utilidades JSON
ingra.json.a (o) De objeto a cadena; JSON.stringify estándar con '\t'
ingra.json.at (o, op, _nivel) De objeto a cadena de texto con desglose de líneas complejas; incluye \t\r\n
ingra.json.ah (o, op) De objeto a cadena html con desglose de líneas complejas; incluye \t\r\n
ingra.json.ac (o) De objeto a cadena no estándar(con funciones), incluye \t\r\n
ingra.json.acs (o) De objeto a cadena simple, una línea por elemento de vactor u objeto [...]{...}
ingra.json.acn (o, ) De objeto a cadena con desglose por líneas de nivel 1 \t\r\n; orden:líneas ordenadas alfabéticamente; html:texto en html; niveles:número de niveles(defecto 1); incluye \t\r\n
ingra.json.acol (ol, sincorchetes) De lista de objetos a cadena (uno por línea); si no sincorchetes, envuelto en corchetes y con comas al final de cada línea; incluye \t\r\n
ingra.json.acos (os, sinllaves) De objeto a cadena (una linea por propiedad); si no sinllaves, envuelto en llaves y con comas al final de cada línea; incluye \t\r\n
ingra.json.parse (json, cbeo) De cadena a objeto; JSON.parse estándar con captura error, retorna {error:...} si error
De cadena a objeto; JSON.parse estándar con captura error, retorna {error:...} si error
ingra.json.d (json) De cadena a objeto; JSON.parse estándar con captura error
ingra.json.dc (json, d, i, r) De cadena a objeto; retorna obj|{}|{error}; utiliza Function('d,i,r','return ('+json+')'); mantiene la función en caché
ingra.json.dce (json, d, i, r) Evalua expresion: retorna obj|null

Módulo: ingra.asincrono..js

ingra.asincrono.funciones (...funciones) Ejecuta las funciones de forma secuencial (se ejecuta cada funcion cuando finaliza la anterior)
funciones: funcion(cb,i) ... funcion({error}}); si hay error en alguna función, salta a la última con {error}
ingra.asincrono.recorre (objetos, cbData, cbEnd) Ejecuta cbData de cada objeto de forma secuencial (se ejecuta cada funcion cuando finaliza la anterior)
objetos: lista de objetos, objeto o número, cbData(i,objeto,cb), cbEnd(data) si hay error en aalguna función salta a cbEnd con {error}
ingra.asincrono.paralelo (...funciones) Ejecuta las funciones de forma paralela (se ejecutan a la vez, se concentran en la última)
funcion(cb) ... funcion({datas,error}) si hay error en alguna función, salta a la última con error
ingra.terminadores (function () Terminadores asíncronos // Los terminadores permiten programar funciones que se ejecuten al cerrar el interface actual (cambiar de concepto en Ingrid), fundamentalmente para liberar recursos.
o.agrega (fun) Agrega terminador, agrega una función para que se ejecute al cerrar el interface actual.
o.ejecuta () Ejecuta todos los terminadores y los elimina (automática al cerrar el interface actual)
o.elimina (fun) Elimina terminador sin ejecutar
o.libera () Libera todos los terminadores sin ejecutar

Sección: js.a

Módulo: ingra.ayuda.js

ingra.presentaAyuda (tema, ev) Presenta contenedor con ayuda > https://ayuda8.ingra.es/<tema>

Módulo: ingra.dom.js

ingra.dom Control del DOM de cliente
ingra.dom.id (id) Retorna elemento con el id (getElementById)
ingra.dom.qs (qs, oo) Retorna elemento con consulta (o= oo.querySelector(qs))
ingra.dom.qs2 (qs, oo) Retorna elementos con consulta (ol= oo.querySelectorAll(qs) no es un array);
ingra.dom.head () Retorna el primer <head>
ingra.dom.body () Retorna el primer <body>
ingra.dom.children (oo) Retorna elementos hijo (oo.children no es un array)
ingra.dom.buscaClase (o, clase) Busca clase en ascendentes, retorna ascendente encontrado o null
ingra.dom.crea (etiqueta, oo, html, estilos, atributos, ) Crea elemento DOM. elemento:elemento#id.clase-%type html:value(input)|text(option)|src(img)|href,innerHTML(a)|innerHTML style:{}|[{},{}]
ingra.dom.appendFirst (oo, o) Inserta objeto o al principio del objeto oo
ingra.dom.appendChild (oo, o) Añade objeto o al final del objeto oo
ingra.dom.indiceHijo (child) Retorna el orden del hijo child
ingra.dom.cambia (o1, o2) Reemplaza objeto o1 por o2
ingra.dom.esPadre (oo, o) Retorna true si oo es algún ascendiente de o
ingra.dom.redimensionadorHorizontal (div, cb) Incluye una línea de puntos que permite redimensionar el div
ingra.dom.recargaImagen (src) Recarga cache, evita que el navegador utilice la url en cache

Módulo: ingra.eventos.js

ingra.eventos (function() Eventos gestionados
ie.agrega (o, eventName, cb, useCapture) Agrega evento gestionado // TablaFija, ingraM,ingraG,grafica,canvas_firma
ie.elimina (o, eventName, cb, useCapture) Elimina evento gestionado // TablaFija
ie.libera () Elimina todos los eventos gestionados // ingra.eventos.libera
ie.busca (o, eventName, useCapture) Busca evento gestionado

Sección: js.api

Módulo: ingra.ajax.js

ingra.ajax Librería comunicación AJAX
ingra.ajax.envia (type, url, op, cb, cbProgress) Envia petición HTTP mediante XMLHttpRequest (ajax), si !cb síncrono,
{ansi, nocache, data(enPOST)} > cb(xhr.responseText || xhr.response), cbProgress(ec, progreso_en_%) opcional
{headers:{'crossorigin': 'anonymous'}}
ingra.ajax.get (url, op, cbo) Envia petición HTTP GET de texto > ingra.ajax.envia > cb(texto)
ingra.ajax.getJson (url, op, cb) Envia petición HTTP GET de JSON > deJson > ingra.ajax.envia > cb(object)
ingra.ajax.getBuffer (url, cb, cbProgress) Envia petición HTTP GET de Buffer > cb(buffer)
ingra.ajax.getBlob (url, cb, cbProgress) Envia petición HTTP GET de Blob > cb(blob)
ingra.ajax.post (url, data, cb, cbProgress) Envia petición HTTP POST, op.data|data , data: string|file|blob|buffer > (texto)
ingra.ajax.postJson (url, data, cb, cbProgress) Envia petición HTTP POST, op.data|data > (json)
ingra.ajax.existeUrl (url, cbo) ¿Existe URL? > cbo(true/false) o true/false

Módulo: ingra.audio.js

sonidos

click () sonido: click menos intenso
beep () sonido: beep media intensidad telecontrol_global
beep2 () sonido: beep2 mas intenso
error () sonido: error, usado en dialogos
dog () sonido: dog
boom () sonido: boom
scream () sonido: scream
typewriter () sonido: typewriter
voces (cb) Voces apliables a recitar > [{name.lang,localService,default}] solo hay una con default
recitar (texto, op=) Sintetizador de voz, de texto a audio (web-speech-api) {volume=1,pitch=1,rate=1,voice=default}
Reconocer (op=) Reconocimiento de voz

Módulo: ingra.clipboard.js

ingra.bandeja Clase bandeja (portapapeles)
ingra.bandeja.graba (texto) Copia texto a bandeja
ingra.bandeja.lee () Pega texto de bandeja
ingra.bandeja.grabaJson (cod, data) Copia json a bandeja
ingra.bandeja.leeJson (cod, defecto) Pega json de bandeja
ingra.bandeja.libera (cod) Libera memoria (vacía bandeja)
ingra.leeBandeja (cb) Leer pide permiso. navigator.clipboard.readText
ingra.grabaBandeja (texto, cbo) Grabar en bandeja. navigator.clipboard.writeText

Módulo: ingra.file.js

ingra.file Clase file(blob); Formato para manejar objetos binarios, utilizado lara leer/grabar archivos del sistema operativo // { name:"a.png", size:47744, type:"image/png", lastModifiedDate }
ingra.file.aTexto (file, op, cb) De file a texto; {cbProgress,ev,ansi} > (textoUtf,file,ev)
ingra.file.aJson (file, op, cb) De file a JSON; {cbProgress,ev} > (objJs,file,ev)
ingra.file.aDataUrl (file, op, cb) De file a DataURL; {cbProgress,ev} > (dataUrl,file,ev)
ingra.file.aBuffer (file, op, cb) De file a Buffec; {cbProgress,ev}> (buffer,file,ev)
ingra.file.inputFile (op, cb) {soloImagenes} > (file,ev) // incluye file.ev, y file.url si ext=="url" multiple accept="image/*"
ingra.file.inputFiles (op, cb) {soloImagenes} > (files,ev) // files pueden incluir url
ingra.file.dragDataUrl (obj, cb) > (dataUrl,file,ev)
ingra.file.leeArchivo (...a) Obsoleto > ingra.F.lee
ingra.file.leeArchivoJson (...a) Obsoleto > ingra.F.leeJson
ingra.file.leeArchivoDataURL (...a) Obsoleto > ingra.F.leeDataUrl
ingra.file.leeArchivoBuffer (...a) Obsoleto > ingra.F.leeBuffer
ingra.file.grabaArchivo (...a) Obsoleto > ingra.F.graba

Módulo: ingra.message.js

ingra.mensaje Mensajes entre aplicaciones
ingra.mensaje.escucha (tipo, funcionRecibe) SERVIDOR Registra tipo de mensaje a recibir
ingra.mensaje.envia (tipo, data) CLIENTE Envia mensaje al padre(window.opener) o al hijo(abreHijo)
ingra.mensaje.abreParalelo (url, minima, opciones) CLIENTE inicia hijo PARALELO (url)

Módulo: ingra.websocket.js

ingra.Websocket (servidor, cb) Arranca una conexion websocket. Retorna (conexion)
oo.enviaMensaje (meta, cb) Envía el json de meta con meta.retornos[id]=cb; meta.retorno=id; id=#ultimo
oo.cierra () Cierra conexion

Sección: js.dib

Módulo: ingra.canvas.js

g.elipse (o, strokeFill=1) Dibuja Elipse ({x, y, rw, rh, rot=0, a1=0, a2=360, contra:false, pie:false | p,w,h,x1,y1,x2,y2 | pl }) | (pl)

Módulo: ingra.chart.js

google_pie (g) Gráfica de tarta; g:{ tit:"", titl:[""], numl:[N], ancho:800, alto:375, enHtml:1, conCol:"" }
google_bar (g) Gráfica de barras; g:{ tit:"", titl:[""], numl:[[N]], ejexl:[""], ejeyl:[""], ancho:800<1000, alto:375<1000, enHoriz:0, enHtml:1, conCol:"" }
google_qr (g) Gráfica de código QR; g:{ texto:"", tamano:200, nivel:0, enHtm } > src | html

Módulo: ingra.color..js

ingra.color Objeto color {r,g,b,[a]} 0-255 0-1 defecto(0,0,0,undefined)
ingra.color.dc (s) De Cadena a color, < 0xRRGGBB | {r,g,b,a} | r,g,b,[a] | [r,g,b,[a]] | "[#]rrggbb" | "[#]rgb"
ingra.color.ac (c, s, conalfa) De Color a cadena; s(separador=',') > RsGsB[sA]
ingra.color.pon (s) Define color
ingra.color.x6 (c, sinAbreviar) De color a CSS "#rrggbb" || "#rgb"
ingra.color.x8 (c, sinAbreviar) De color a !CSS "#rrggbbaa" "#rgba"
ingra.color.rgbf (c) de color a CSS "rgb(r,g,b)"
ingra.color.rgbaf (c) De color a CSS "rgba(r,g,b,a)"
ingra.color.css (c, sinAbreviar, sinTransparencia) De color a CSS "rgba(r,g,b,a)" || "#rrggbb" | "#rgb" comprueba c
ingra.color.css4 (c, sinAbreviar) De color a #rrggbbaa
ingra.color.transparencia (c, tra) Pone transparencia número
ingra.color.gris (c) A gris, (0.299 * r + 0.587 * g + 0.114 * b)
ingra.color.claro (c, n, encss) Aclara color, n:(0)c (0.5)defecto (1)blanco
ingra.color.oscuro (c, n, encss) Oscurece color, n:(0)c (0.5)defecto (1)negro
ingra.color.medio (c1, c2, n) Color medio; n:(0)c1 (0.5)defecto (1)c2
ingra.color.aHSL (col) De color RGB a HSL; {r,g,b} > {h,s,l}
ingra.color.deHSL (hsl, col) De color HSL a RGB; {h,s,l} > {r,g,b}
ingra.color.ponH (color, hue) Pon Hue a color (Tono o Matiz), hue:0-360, (0)rojo (60)amarillo (120)verde (180)cian (240)azul (300)magenta
ingra.color.ponS (color, sat, porcentaje) Pon Saturation (Saturación) a color, sat:0(gris)-100(color) o procentaje<100 oscurece
ingra.color.ponL (color, lum, porcentaje) Pon Lumninance (Luminosidad) a color, lum:0(negro)-100(blanco) o procentaje<100 oscurece
ingra.color.serie (col1, col2, numero, desplaza) A serie entre col1 y col2 de numero de colores; desplaza opcional

Módulo: ingra.igra.js

Formato IGRA, igra:{...}

ingra.igra.dibuja (igra, canvas, estatico) Dibuja objeto IGRA en canvas, si estático sin elementos interactivos
ingra.igra.presenta (padre, igra, style, properties) Presenta objeto igra en contenedor (padre)

Módulo: ingra.imagen.js

ingra.imagen Utilidades de imagen
Filtros
ingra.imagen.filtroGrises (canvas, modo) Aplica modo: (0*)media:(r+g+b)/3 o (1)brillo:0.2126*r + 0.7152*g + 0.0722*b
ingra.imagen.filtroBlancoNegro (canvas, modo) Aplica modo: (0*)media=(r+g+b)/3 o (1)brillo:0.2126*r + 0.7152*g + 0.0722*b >128? 255: 0
ingra.imagen.filtroPosteriza (canvas, nivel=2) Aplica posterización nivel:2..255 (2)8 (3)27 (4)64 ...
ingra.imagen.filtroBrillo (canvas, reduce=0) Amplia o reduce el brillo de la imagen
ingra.imagen.filtroInvierte (canvas) Invierte 3 componentes (no incluye transparencia) r,g,b > 255-r,g,b
ingra.imagen.filtroSepia (canvas) Modifica r,g,b > r*[.393,.769,.189], g*[.349,.686,.168] b*[.272,.534,.131]
ingra.imagen.filtroContraste (canvas, contraste=50) Cambia contraste -255..255
ingra.imagen.filtroEspejo (canvas, vertical) Aplica espejo horizontal, si vertical espejo vertical (flip)
Operaciones
ingra.imagen.cambiaColor (canvas, c1, c2, margen=0) Cambia color c1 por c2, no modifica alfa c1,c2:{r,g,b}
ingra.imagen.grabaCanvas (canvas, arc) Diálogo graba archivo con el contenido del canvas; jpg png webp
ingra.imagen.url2canvas (url, cb) Carga imagen, crea canvas del mismo tamaño y dibuja imagen en canvas. > (canvas) url2image createElement drawImage
ingra.imagen.url2image (url, cb) Carga imagen, > (image) onload

Sección: js.ext

Módulo: ingra.csv..js

ingra.csv Utilidades para formato CSV
{titulo"", campos[{}], lineas[][], estadistica{}}
ingra.csv.estadistica (csv, numeroValoreMaxmo=8) Estadística del contenido de un objeto CSV({campos[{}], lineas[[]], titulo})
> estadistica:[codigoCampo:valor[repeticiones]...resto[]]
ingra.csv.lis2tip (ol, cam) analiza tipo de un campo(código) en lista de objetos ol:[{}]
ingra.tex2csv (texto, op) De texto(contenido archivo CSV) a objeto CSV
op:{lintit=0, lincam=0, sinCamposVacios=0, sinLineasVacias=1, conCampos=0, conEstadistica=0} lintit:Línea con título; lincam:Línea con campos
texto|lineas > {titulo"", campos[{}], lineas[][], estadistica{}}
ingra.docl2csv (docl, _caml) Retorna {campos,lineas} con campo:{cod,num,tip}
ingra.csv2tex (csv, ) De objeto CSV a texto CSV
csv:{titulo"", campos[{cod}|cod], docl[{}]|lineas[][]}, op:{sep:';',bom}
Envuelve con " los datos que incluyen separadores o comillas
formato estándar: separador ',' y juego de caracteres ANSI
formato Excel: separador ';' y BOM al comienzo del archivo para detectar utf8
ingra.csv2docl (csv) Retorna lista de documentos docl, cada uno una línea del csv
ingra.csv2table (csv, op) Retorna cadena en formato html "<table>...</table>" - {clase,numeros}
ingra.csv2html (csv, op=) Retorna cadena en formato html "<table>...</table>" - {clase,numeros}
ingra.csv Utilidades para formato CSV {titulo"", campos[{}], lineas[][], estadistica{}}
ingra.csv.tex2csv (tex, op) De texto(contenido archivo CSV) a objeto CSV // op:{lintit=0, lincam=0, lindat=1, sinCamposVacios=0, sinLineasVacias=1, conCampos=0, conEstadistica=0} lintit:Línea con título; lincam:Línea con campos; lindat:Primera línea con datos; en base 1/ // > {titulo"", campos[{}], lineas[][], estadistica{}}
ingra.csv.csv2tex (csv, op) De objeto CSV a texto CSV // csv:{titulo"", campos[{cod}|cod], docl[{}]|lineas[][]}, op:{sep:';',bom}; envuelve con " los datos que incluyen separadores o comillas
ingra.csv.estadistica (csv) Estadística del contenido de un objeto CSV({campos[{}], lineas[[]], titulo}) // > estadistica:[codigoCampo:valor[repeticiones]...resto[]]
ingra.csv.lis2tip (ol, cam) analiza tipo de un campo(código) en lista de objetos ol:[{}]
ingra.docl2csv (docl) Retorna {campos,lineas} con campo:{cod,num,tip}
ingra.csv2table (csv, op) Retorna cadena en formato html "<table>...</table>" - {clase,numeros}

Módulo: ingra.htm..js

ingra.htm Objeto HTML
ingra.htm.dc (a) De ASCII a html; \r\n\t"... > <br> &nbsp; &quot; &#..;
ingra.htm.ac (a) De html a ASCII; elimina <...>; <br>, &nbsp; &quot; &#%d+; > \r\n\t"...
ingra.htm.table (dll, op) Retorna cadena en formato html "<table>...</table>" - {clase,campos,numeros,clase}

Módulo: ingra.rtf..js

ingra.rtf ingra.rtf.aTexto(rtf)
ingra.rtf.aTexto (rtf) De RTF a texto

Sección: js.geo

Módulo: ingra.geo..js

ingra.geo Librería de geometría de objetos Geo {tip:[POLCREBT], ..., punl:[{x,y}]}
ingra.geo.limite (geo, pl, op) Retorna el rectangulo horizontal minimo que contiene geol {enGrados} > {x1,y1,x2,y2,[p4l:pl],[pix:r],[pix4l:pl]};
ingra.geo.medio (geo, pl) Medio del límite, usado por geol.medio
ingra.geo.centroide (geo, pl) Retorna el centroide
ingra.geo.punto (geo, pl, ali, enPixel) Medio del límite, usado por geol.medio. Si enPixel de arriba a abajo
ingra.geo.perimetro (geo, pl) Retorna el perímetro
ingra.geo.area (geo, pl) Retorna el área
ingra.geol Librería de geometría de objetos Geol: [geo]
ingra.geol.limite (geol, rec) Retorna el rectangulo horizontal minimo que contiene a geol
ingra.geol.medio (geol) Retorna el punto medio
ingra.geol.centroide (geol) Retorna el centroide
ingra.geol.perimetro (geol) Retorna el perímetro
ingra.geol.area (geol) Retorna el área
ingra.geol.envolventeConvexa (geoll, margen) Envolvente convexa > geo // convex.hull
ingra.geol.envolventeConcava (geoll, dec) Envolvente cóncava > geol
ingra.geol.islas (geol) Calcula islas geol | {geol} > null | {cambios,orden} cambios en geos, orden cambios en geol
ingra.docgeol Librería de geometría de objetos doc.geol

Módulo: ingra.pun..js

ingra.pun Librería de geometría: Puntos (punto: {x,y,...})
ingra.pun.copia (...p) Copia desde formatos: (x,y) ([x,y]) ({x,y,...}) ({lon,lat}) ({lng,lat}) (number)
ingra.pun.forma (...p) Copia si no tiene formato punto
ingra.pun.dc (a, sep=';') De cadena a punto
ingra.pun.ac (p, dec, sep='; ') De punto a cadena
Retorna el mismo punto
ingra.pun.red1 (p, dec=0) Redondea con 'dec', modifica y retorna p
ingra.pun.suma1 (p, p2) Suma p más p2, modifica y retorna p
ingra.pun.resta1 (p, p2) Resta p menos p2, modifica y retorna p
ingra.pun.mul1 (p, fac) Multiplica p por fac, modifica y retorna p
ingra.pun.div1 (p, fac) Divide p por fac, modifica y retorna p
Retorna pun
ingra.pun.red (p, dec=0) Retorna p redondeado con 'dec' decimales
ingra.pun.suma (p, p2) Suma p más p2 (sinónimo: sum)
ingra.pun.resta (p, p2) Resta p menos p2 (sinónimo: res)
ingra.pun.mul (p, fac) Multiplica p por fac
ingra.pun.div (p, fac) Divide p por fac
ingra.pun.medio (a, b) Punto medio entre 'a' y 'b' (sinónimo: med)
ingra.pun.tamano (a, b, abs) el tamaño o diferencia entre 'a' y 'b' (sinónimo: tam)
ingra.pun.recta (a, b, p) Retorna punto de forma: 'a' es a 'b' como 'p' es a punto
ingra.pun.perpendicular (a, b, p, soloEntre) Retorna punto intersección de la línea formada por 'a' y 'b' y su perpendicular por 'p'
ingra.pun.afactor (a, b, factor) Retorna punto a distancia(factor: 0 a 1 b) de punto a en dirección a punto b
ingra.pun.afactorP (a, b, factor) Retorna punto a distancia(factor: 0 a 1 b) de a en dirección perpendicular a a-b
ingra.pun.adistancia (a, b, distancia) Retorna punto a distancia de punto a en dirección a punto b
ingra.pun.adistanciaP (a, b, distancia) Retorna punto a distancia de punto a en dirección perpendicular a a-b
ingra.pun.incentro (a, b, c) Retorna punto de corte de las bisectrices de un triangulo (a,b,c)
ingra.pun.interseccion (a, b, c, d, soloEntre) Retorna punto interseción entre linea a-b y linea c-d, si soloEntre retorna null si intersección fuera de segmentos
Retorna rectángulo (rec)
ingra.pun.rec (a, b, margen) Retorna rectángulo {x1,y1,x2,y2} con margen opcional
Retorna lista de puntos (punl)
ingra.pun.punl4 (a, b) Retorna los cuatro puntos del rectángulo
ingra.pun.margen4 (a, b, margen) Retorna los cuatro puntos de la línea con margen, también admite un solo punto
ingra.pun.mueveOrtogonal (p0, p) Retorna p ortogonal a p0
retorna valor
ingra.pun.igualE (a, b, margen=Number.EPSILON) Es igual o menor a EPSILON la distancia entre a y b
ingra.pun.igual (a, b, margen) Es igual o menor a margen la distancia entre a y b
ingra.pun.dis2 (a, b) Distancia al cuadrado entre a y b
ingra.pun.dis (a, b) Distancia entre a y b
ingra.pun.area (a, b) Área del rectángulo formado por a y b
ingra.pun.sin (a, b) Retorna el seno del ángulo entre dos puntos (versor)
ingra.pun.cos (a, b) Retorna el coseno del ángulo entre dos puntos (versor)
ingra.pun.tan (a, b) Retorna la tangente del ángulo entre dos puntos (sin/cos)
ingra.pun.ang (a, b, c) Retorna el ángulo (radianes) entre dos o tres puntos 0-360?
ingra.pun.alaDerecha (a, b, c) ¿Está c a la derecha de la línea a-b?
ingra.pun.alaDerecha2 (a, b, c, d) ¿Está d a la derecha de la línea a-b y de la línea b-c?
ingra.pun.intersecta (a, b, c, d) ¿Intersecta el segmento a-b con el c-d?
ingra.pun.modulo (a) Módulo de a SQRT(a.x**2 +a.y**2)
ingra.pun.cross (a, b, co) Producto vectorial o producto cruz (cross) a.x * b.y + a.y * b.x;
ingra.pun.dot (a, b, co) Producto escalar o producto punto, dot(a,b) = a.x * b.x + a.y * b.y = |a|*|b|*cos(ab)
ingra.punl Librería de geometría: Lista de puntos (punl:{pun,...}, pun:{x,y,...})
ingra.punl.copia (arg) Copia desde formatos: (x,y,...) ({x,y},...) ([x,y],...) ([x,y,...]) ([{x,y},...]) ([[x,y],...]) ({x1,y1,x2,y2}) ({left,bottom,right,top})
ingra.punl.forma (arg) Copia si no tiene formato lista de puntos
ingra.punl.dc (a, sep) Convertir de cadena
ingra.punl.ac (pl, dec, sep) Convertir a cadena
ingra.punl.acr (pl, dec, sep) Convertir todos los puntos relativos al primero
ingra.punl.al (pl) Convertir a lista
ingra.punl.all (pl) Convertir a lista de listas
retorna this
ingra.punl.red1 (pl, dec=0) Redondeado al decimal dec
ingra.punl.mas1 (pl, p) Suma p a todos los puntos de pl
ingra.punl.men1 (pl, p) Resta p a todos los puntos de pl
ingra.punl.por1 (pl, fac) Multiplica a todos los puntos de pl por fac
retorna PUNL
ingra.punl.red (pl, dec=0) Redondeado
ingra.punl.mas (pl, p) Suma p a todos los puntos de pl
ingra.punl.men (pl, p) Resta p a todos los puntos de pl
ingra.punl.por (pl, fac) Multiplica a todos los puntos de pl por fac
ingra.punl.regular (o) Crea el poligono regular {x,y,r,n, a=90,r2=r} o {pun,rad,num,ang,rad2} // puntoCentral, númeroVerticas anguloInicial radios
ingra.punl.estrella () Crea una estrella de n lados
ingra.punl.flor () Crea una flor de n lados
ingra.punl.simplifica (pl, margen, altaCalidad) Elimina puntos colindantes mas cercanos que margen (en pixel margen=1)
ingra.punl.punto (pl, cerrado, i) Punto i de la lista de puntos, cíclico, puede ser < 0 y >= pl.length o null si no cerrado
ingra.punl.puntos (pl, cerrado, i1, i2) Puntos desde i1 a i2 incluidos, de la lista de puntos, cíclico, pueden ser < 0 y >= pl.length o null si no cerrado
ingra.punl.limite (pl) Retorna el rectangulo no inclinado mínimo que contiene a pl
Retorna PUN
ingra.punl.centro (pl) De límite (antes medio)
ingra.punl.medio (pl) Medio (antes centro)
ingra.punl.centroide (pl) Centroide == centro de masa (densidad uniforme) == centro de gravedad SUM(a*x)/SUM(a)
Retorna valor
ingra.punl.area (pl) Área (positivo en sentido agujas reloj)
ingra.punl.perimetro (pl, cerrado) Perímetro. Si cerrado, une último con primero
ingra.punl.dentro (pl, pun) Comprueba si pun está dentro de pl
ingra.punl.buscaCercano (pl, cerrado, pun, MARGEN2, soloVertices=false) Distancia del punto a la polilínea return { t:(V|A|S), i(base0), d2, p(i|p|p)};
ingra.punl.distancia (pl, cerrado, pun, soloVertices=false) Distancia del punto a la polilínea
ingra.punl.igualUE (pl, p) ¿Es igual al último?
ingra.punl.chequea (pl, cerrado, margen) Elimina duplicados, retorna nº eliminados
ingra.pun.pon Obsoleto, usar copia
ingra.pun.sum1 Obsoleto, usar suma1
ingra.pun.res1 Obsoleto, usar resta1
ingra.pun.sum Obsoleto, usar suma
ingra.pun.res Obsoleto, usar resta
ingra.pun.med Obsoleto, usar medio
ingra.pun.tam Obsoleto, usar tamano
ingra.punl.pon Obsoleto, usar copia

Módulo: ingra.rec..js

ingra.rec Librería de geometría: Rectángulos (rectángulo: {x1,y1,x2,y2})
ingra.rec.copia (arg) Copia a rectangulo desde formatos: {x1,y1,x2,y2}, [x1,y1,x2,y2], [{x,y},{x,y}], {p,r,x,y,w,h}, {left,bottom,right,top}, "x1,y1,x2,y2" punl, rec, pun
ingra.rec.forma (arg) Copia si no tiene formato rectángulo
Retorna el mismo
ingra.rec.agrega1 (r, pl) crece r para que entre pl
ingra.rec.mueve1 (r, pl) mueve r para incluir el punto/rectan/poligono
ingra.rec.mueveDentro1 (r, r2) mueve r, si es necesrio, para que se mantenga dentro de r2
ingra.rec.creciente1 (r) creciente 1
Retorna rectángulo
ingra.rec.red (r, dec=0) redondea con ingra.red
ingra.rec.suma (r, r2) suma vertice a vértice r a arg
ingra.rec.resta (r, r2) resta vértice a vértice arg a r
ingra.rec.mul (r, fac) return { x1:r.x1*fac, y1:r.y1*fac, x2:r.x2*fac, y2:r.y2*fac }; },
ingra.rec.margen (r, marx, mary) return { x1:r.x1-marx, y1:r.y1-mary, x2:r.x2+marx, y2:r.y2+mary }; },
ingra.rec.agrega (r, pl) agrega a r una polilinea
ingra.rec.mueve (r, p) mueve r hasta contener p
ingra.rec.mueveDentro (r, r2) mueve r si es necesario, para que se mantenga dentro de r2
ingra.rec.creciente (r) creciente 1
ingra.rec.alineacion (r, ali) alineacion, de 4 > 0..8
ingra.rec.xywh (arg) retorna rectangulo x1,y1,x2,y2 dado de la forma x1,y2,width,height
retorna punl
ingra.rec.punl (r) convierte rec en lista de 2 puntos
ingra.rec.punl4 (r) convierte rec en lista de 4 puntos
retorna punto
ingra.rec.recta (r1, r2, p, conCambioDeSigno) retorna punto o rectángulo; r1 es a r2 como p es a
ingra.rec.p1 (r) retorna p1
ingra.rec.p2 (r) retorna p2
ingra.rec.p3 (r) retorna p3
ingra.rec.p4 (r) retorna p4
ingra.rec.tamano (r, medio) retorna width, height
ingra.rec.medio (r) retorna el punto medio del rectangulo
ingra.rec.apunto (r, ali, enPixel) punto de alineación: -6-7-8 -3-4-5 0+1+2 +3+4+5 +6+7+8 +9+10+11
retorna valor
ingra.rec.mayor (r) Retorna la mayor dimensión(ancho o alto), en valor absoluto
ingra.rec.area (r) retorna area
ingra.rec.perimetro (r) retorna perímetro
ingra.rec.distancia2 (r) retorna distancia al cuadrado
ingra.rec.distancia (r) retorna distancia
ingra.rec.buscaCercano (r, pun, d2, soloVertices) retorna distancia del punto al rectangulo return { t:(V|A|S), i(base0), d2, p(i|p|p)};
ingra.rec.compara (cod, a, b, decreciente) cod:per,are,x1,x2,y1,y2,xx,yy
retorna bool
ingra.rec.vacio (r)
ingra.rec.igual (r0, r1) ¿son r0 y r1 iguales?
ingra.rec.dentro (rec, pun, mar, g) en borde true p:pun|rec|punl COMPLETO dentro margenR?
ingra.rec.dentroParcial (rec, pun, mar, g) en borde true p:pun|rec|punl PARCIAL dentro, if g procesa rec.pix .pix4l .p4l
ingra.rec.intersecta (r, r2, incluyeBordes) interseca, en borde false
ingra.recl Librería de geometría: Rectángulos (rectángulo: pl[{x,y}]) con 2 o 3 puntos
ingra.recl.dentro (pl, pun, mar) ¿Está dentro? > bool
ingra.recl.buscaCercano (pl, pun, D2) retorna distancia del punto al rectangulo > { t:VAS, i, p, d2, dentro};
ingra.rin Rectángulos inclinados 2 puntos: centro y horizontal derecha
ingra.rin.punl4 (p0, p1, h2v, ali) o (pl,h2v); p0:centro p1:hotizontalDerecha hv:0o1cuadrado 1/1.618 h2v=!w?0:h/w
ingra.rin.dentroPunl4 (punl4, pun, margen) Comprueba si está pun dentro de pun14
ingra.rin.limite (p0, p1, h2v) o (pl,h2v); p0:centro p1:superiorDerecha hv:0o1cuadrado // Math.atan2(yy,xx) h2v=yy/xx
ingra.rin.buscaCercano (pl, pun, D2) retorna distancia del punto al rectangulo > { t:VAS, i, p, d2, dentro};
ingra.rin.de123 (punl) Formato ingrid7 a ingrid8; pl[1o2o3] a pl[1o2]
ingra.rin.a123 (punl) Formato ingrid8 a ingrid7; pl[1o2] a pl[1o2o3]
ingra.rin.punl4 (pl) Antiguo
ingra.rin.punl23 (pl)
ingra.rin.limite (pl) ingra.punl.limite(ingra.rin0.punl4(pl))
ingra.rin.triangulo (p0, p1) Retorna lista de los puntos del triangulo equilatero con centro en p0 y radio hasta p1
ingra.rin.cuadrado (p0, p1) Retorna lista de los puntos del cuadrado con centro en p0 y radio hasta p1
ingra.rin.rectangulo (p0, p1, h2v) Retorna la lista de los puntos del rectangulo con centro en p0, radio menor p1 y proporcion entre lados de h2v
ingra.lin Librería de geometría: Líneas normalizadas (Línea: {a,b,c} ax+by+c=0)
ingra.lin.copia (arg) Copia línea desde formatos: {a,b,c} [x1,y1,x2,y2] o (x1,y1,x2,y2) [p1,p2] o (p1,p2) {x1,y1,x2,y2}
ingra.lin.forma (arg) Copia si no tiene formato línea
Retorna línea
ingra.lin.normaliza (lin) En la forma normal a·x1+b·y1+c == distancia de x1,y1 a la recta
ingra.lin.perpendicular (lin, p) Perpendicular de un punto a una línea (perpendicular a lin que pasa por p)
ingra.lin.perpendicular3 (p1, p2, p) Perpendicular a la línea p1-p2 que pasa por p, si !p medio de p1,p2
Retorna punto
ingra.lin.intersecta (lin1, lin2) Intersección de dos líneas
Retorna valor
ingra.lin.distancia (lin, p) Distancia o lugar geométrico unitario: (0)en (1)derecha (-1)izquierda. Distancia de un punto a una línea
ingra.rec.pon Obsoleto usar copia
ingra.rec.mas Obsoleto usar suma
ingra.rec.men Obsoleto usar resta
ingra.rec.por Obsoleto urar mul
ingra.lin.pon Obsoleto usar copia

Módulo: ingra.cur..js

ingra.cur Librería de geometría: Curvas (punl: {p1,...})
ingra.cur.controlQuadratic4 (p1, p2, p3, p4, conContinuidad) Puntos de control entre puntos p1-p2 y p3-p > punto control {pi}; con continuidad tangentes comunes
ingra.cur.medioQuadratic4 (p1, p2, p3, p4, conContinuidad) Punto medio cuadrática entre p1-p2 y p3-p4 > pm
ingra.cur.medioQuadratic (p2, pc, p3) Punto medio cuadrática entre anclas p2,p3 y control pc
ingra.cur.medioQuadraticL (p2, pc, p3, nivel) Puntos medios cuadratica entre anclas p2,p3 y control pc > (nivel)puntos (0)1,(1)3,(2)7,(3)15,(4)31
ingra.cur.controlBezier4 (p1, p2, p3, p4, conContinuidad) Puntos de control entre puntos p1-p2 y p3-p4 > puntos control {pi,pj}; con continuidad tangentes comunes
ingra.cur.medioBezier4 (p1, p2, p3, p4, conContinuidad) Punto medio bezier entre puntos p1-p2 y p3-p4 > pm
ingra.cur.medioBezier (p2, pi, pj, p3) Punto medio bezier, p2 y p3 puntos ancla; pi y pj puntos control > pm
ingra.cur.medioBezierL (p2, pi, pj, p3, nivel) Puntos medios bezier, p2 y p3 puntos ancla; pi y pj puntos control > (nivel)puntos (0)1,(1)3,(2)7,(3)15,(4)31
ingra.cur.puntoBezier (p2, pi, pj, p3, t) Punto en curva bezier, p2 y p3 puntos ancla; pi y pj puntos control; t:0(p2)..1(p3) p5.js
ingra.cur.arco2p (p1, p2, enPixel) Cuarto de círculo definido por dos puntos, desde p1 a p2 > {pc,r,a1,a2,anti,pm}
ingra.cur.arco3p (p1, p2, p3) Arco de círculo definido por tres puntos, desde p1 a p3 pasando por p2 > {pc,r,a1,a2,anti,pm}
ingra.cur.elipsePunto (pc, a, b, ang) Retorna punto en elipse, pc punto central, a y b semiejes, ang en grados desde x+

Módulo: ingra.google.js

ingra.google Objeto google
ingra.google.punto2url (pun, presenta) De punto en coordenadas geográficas a url de google maps
ingra.google.direccion2url (direccion, presenta) De dirección a url de google maps · "Calle Cronos,24 28037 Madrid" > "https:/www.google.es/maps/place/Calle+Cronos,+24,+28037+Madrid"
ingra.google.direccionPresenta (parent, clase, direccion, cbo) Presenta subventana con dirección en google maps; parent(dom) > cb({omap}); google_maps_address2 ($parent, div_id, address) // div_id

Sección: js.impresor

Módulo: ingra.impresor3.js

ingra.Impresor3 (imp) Objeto impresor {tema,pagina, title,style,script})
Funciones en línea, retornan html // Se incluyen en textos: "En un lugar "+imp.rojo("De la mancha")+" de cuyo nombre"
imp.enlinea (eti, html, style, properties) Etiqueta html en línea
imp.negrita (...al) span con estilo "font-weight:bold" > enlinea(span,...al)
imp.oblicua (...al) span con estilo "font-style:oblique" > enlinea(span,...al)
imp.tachada (...al) span con estilo "text-decoration:line-through" > enlinea(span,...al)
imp.rojo (...al) span con estilo "color:ROJO' > enlinea(span,...al)
imp.azul (...al) span con estilo "color:AZUL' > enlinea(span,...al)
imp.span (...al) > enlinea(span,...al)
imp.code (...al) > enlinea(code,...al)
imp._a (...al) > enlinea(a,...al), si no incluye href en properties: href=html
Funciones de bloque, retornan identificador del bloque // ocupan un espacio horizontal completo, el identificador que se puede utilizar en los hijos del bloque
imp.etiqueta (eti, ...al) Etiqueta html: al:[pad,html,style,properties]
imp.h1 (...al) > etiqueta(h1,...al)
imp.h2 (...al) > etiqueta(h2,...al)
imp.h3 (...al) > etiqueta(h3,...al)
imp.h4 (...al) > etiqueta(h4,...al)
imp.h5 (...al) > etiqueta(h5,...al)
imp.h6 (...al) > etiqueta(h6,...al)
imp.p (...al) > etiqueta(p,...al)
imp.a (...al) > etiqueta(a,...al)
imp.table (...al) > etiqueta(table,...al),
imp.tr (...al) > etiqueta(tr,...al)
imp.td (...al) > etiqueta(h1,...al), si padre es 'table', inserta 'tr'
imp.th (...al) > etiqueta(h1,...al), si padre es 'table', inserta 'tr'
imp.div (...al) > etiqueta(div,...al)
imp.hr (...al) > etiqueta(hr,...al)
imp.canvas (...al) > etiqueta(canvas,...al)
imp.img (...al) > etiqueta(img,...al), si no incluye src en properties: src=html
Utilidades
imp.error (data) > div ERROR:... rojo
imp.titular (...al) Monta una envolvente con h3, div {pageBreakInside:'avoid'} envolviendo (etiqueta h3 ...al) > retorna identificador de div
imp.salto (pad=0) Salta página, incrementa contador imp.pagn, agrega div con {pageBreakAfter:'always'}), agrega ... en presentación
Funciones compuestas
imp.preparaTabla (tabla) Prepara tabla antes de imprimir, chequea o crea caml, analiza tipo de datos si no definido
imp.tabla (tabla, style, properties) Tabla con documentos o datos y modificadores, ver imp.preparaTabla
imp.imagenes () Lista de imágenes, ima:{url,url2,pis,cod}, tit:titulo num:número por fila
imp.inca (meta, style, properties) Mapa con objeto INCA
imp.igra (igra, style, properties) Gráfica con objeto IGRA, {pad,...}
imp.qrcode (qrcode, style, properties) Gráfica con imagen QR
Impresiones múltiples
imp.iniciaParcial () Inicia impresiones parciales parcial, ingra.Impresor3.parcial:{oll,imp}
imp.montaParcial (cb) Monta impresiones parciales

Sección: js.inca

Módulo: inca..js

ii.ordena (inca) Ordena por código capas y conceptos y por tamaño geos, uisado en importaciones de dxi,shp,...

Módulo: incaV.js

ingra.IncaV (div, app, inca) Inca Ventana, interfaz de inca en ventana
ingra.incav.simple (div, app, inca, cbo) Inca Ventana Simple, {ide:'simc,conMemotia:true} > IncaV > carga inca
ingra.incav.app (app, inca, cbo) Inca Ventana Aplicación, crea ventana, eventos y pie, {ide:'appc,conMemotia:true} > IncaV
ingra.incav.html (app, inca) Inca Ventana HTML, monta html con incav.app e inca incrustados > IncaV

Módulo: incaC.js

ingra.IncaC (contenedor, app, inca) Inca Contenedor, interfaz de inca en contenedor
ingra.incac.simple (contenedor, app, inca, cbo) Inca Contenedor Simple, {ide:'simc,conMemotia:true} > IncaC > carga inca
ingra.incac.app (app, inca, cbo) Inca Contenedor Aplicación, crea contenedor, eventos y pie, {ide:'appc,conMemotia:true} > IncaC
ingra.incac.html (app, inca) Inca Contenedor HTML, monta html con incac.app e inca incrustados > IncaC

Sección: js.presenta

Módulo: ingra.presenta.js

ingra.presenta.ventana (meta) presenta contenido en ventana independiente
ingra.presenta.contenedor (contenedor, op=) presenta contenido en contenedor

Sección: js.ui

Módulo: ingra.contenedor.js

ingra.Contenedor (oPadre, titulo, opciones, estilos, propiedades) Objeto contenedor; opciones:{res,pis,clase,id,relacion,...}
o.pista (a) Pista
o.titulo (a, pis) Título (pista opcional)
o.contador (a) Contador
o.contenido (a) Contenido
o.liberaContenedor () Libera
o.liberaContenido (liberaIconos) Libera contenido, opcional libera iconos
o.liberaIconos () Libera solo iconos
o.libera () Libera
o.oculto () Retorna bool
o.oculta () Oculta
o.presenta () Presenta
o.ponPestana () Contenedor hijo
o.ponModoPestanas () Contenedor padre, pestaña última o primera
ponModoPestanas (oConcepto) contenedor padre, modo persianas a pestañas

Módulo: ingra.dialogo.js

ingra.dialogoCierra (i) Cierra el último diálogo abierto
ingra.dialogoMensaje (html) Actualiza el último diálogo abierto
ingra.dialogoError (titulo, mensaje, op, cbo) Presenta diálogo de error; op|milisegundos !!!!! > cbo({error})
ingra.dialogoAviso (titulo, mensaje, op, cbo) Presenta diálogo de aviso; op|milisegundos
ingra.dialogoInforma (titular, mensaje, op, cbo) Presenta diálogo de unformación; op|milisegundos
ingra.dialogoPregunta (titular, mensaje, botones, cbo) Diálogo pregunta; (titular|op, [mensaje], [botones=["Si","No"]], cbo) > ret:(0(b0|-13) N(bn) Ultimo(Ultimo|-27|-1|-2|-3)
ingra.dialogoPreguntaSN (titular, mensaje, fSi, fNo, fResto) Diálogo pregunta "Si" o "No"; ([titular], mensaje, fSi, [fNo], [fResto]) > fSi(0), fNo(1), fResto(-13,-1,-2,-3,-27); si no fResto (-13)Si (resto)No
ingra.dialogoPreguntaAC (titular, mensaje, fAcepta, fCancela, fResto) Diálogo pregunta T('Acepta') o T(T('Cancela')); ([titular], mensaje, fAcepta, [fCancela], [fResto]) > fAcepta(0), fCancela(1), fResto(-13,-1,-2,-3,-27); si no fResto (-13)Acepta (resto)Cancela
ingra.dialogoEdita (titular, mensaje, valor, botones, cbo) Diálogo con editor; (titular|op, [mensaje], [valor], [botones], [cbo]) > ingra.dialogoEdita1
ingra.dialogoEditaAC (titular, mensaje, valor, fAcepta, fCancela) Diálogo con editor; (titular, [mensaje], [valor], fAcepta, [fCancela])
ingra.dialogoSeleccion (titulo, columnas, filas, actual, cb) Dialogo de selección
ingra.dialogoSeleccionTCD (titulo, filas, actual, cb) Diálogo de selección Tipo|Código|Descripción
ingra.dialogoMultiseleccion (op, cb) Multiselección {titulo, columnas:[{}]|"res;tip;ali|...", filas:[[]], sell, ...} > (ret,sell) titulo="Diálogo de selección múltiple" botones=[T('Acepta'),T('Cancela')]
ingra.dialogoColor (op, fAcepta, fCancela) Diálogo de selección de color; {color,...} > {color:x8, ret} ret:(0,-13)acepta (1,2,-27)cancela titulo="Selección de color" botones=[T('Acepta'),T('Cancela')]
ingra.dialogoIcono (op, fAcepta, fCancela) Diálogo de selección de icono; {icono,...} > (icono,ret) titulo="Selección de iconos" botones=["Deselecciona",T('Acepta'),T('Cancela')]
ingra.dialogoProgreso (titular, op) Diálogo de progreso; op|titular botones:['Interrmupir']
ingra.dialogoProgresoNI (op) Diálogo de progreso No Interrumpible; op|titular botones:['No interrumpible'] solamente cierra con ingra.dialogo.cierra
ingra.inter (html, creasino) Actualización de diálogo actual y comprobación de interrupción