|
|
|
@ -1,64 +1,83 @@
|
|
|
|
|
class globalFunc {
|
|
|
|
|
DataCheck(arg1, arg2) {
|
|
|
|
|
|
|
|
|
|
var iarg1 = arg1
|
|
|
|
|
if (moment(iarg1).isValid()) {iarg1 = arg1.toString()}
|
|
|
|
|
var iarg2 = arg2
|
|
|
|
|
if (moment(iarg2).isValid()) {iarg2 = arg2.toString()}
|
|
|
|
|
|
|
|
|
|
if (!Array.isArray(iarg2) && !Array.isArray(iarg1)) {
|
|
|
|
|
var resultdc = this.compareData(iarg1, iarg2)
|
|
|
|
|
} else if (!Array.isArray(iarg1)) {
|
|
|
|
|
let tempresult = false
|
|
|
|
|
for (let i = 0; i < iarg2.length; i++) {
|
|
|
|
|
tempresult = tempresult || this.compareData(iarg1, iarg2[i])
|
|
|
|
|
}
|
|
|
|
|
var resultdc = tempresult
|
|
|
|
|
} else if (!Array.isArray(iarg2)) {
|
|
|
|
|
let tempresult = false
|
|
|
|
|
for (let i = 0; i < iarg1.length; i++) {
|
|
|
|
|
tempresult = tempresult || this.compareData(iarg1[i], iarg2)
|
|
|
|
|
}
|
|
|
|
|
var resultdc = tempresult
|
|
|
|
|
} else {
|
|
|
|
|
let tempresult = false
|
|
|
|
|
for (let i = 0; i < arg2.length; i++) {
|
|
|
|
|
for (let j = 0; j < arg1.length; j++) {
|
|
|
|
|
tempresult = tempresult || this.compareData(iarg1[j], iarg2[i])
|
|
|
|
|
|
|
|
|
|
DataCheck(/*luxon, */arg1, arg2) {
|
|
|
|
|
|
|
|
|
|
let tempresult = false
|
|
|
|
|
let iarg1 = arg1
|
|
|
|
|
let iarg2 = arg2
|
|
|
|
|
|
|
|
|
|
switch(true) {
|
|
|
|
|
case Boolean(arg1.isValid):
|
|
|
|
|
case Boolean(arg2.isValid):
|
|
|
|
|
case (!Boolean(iarg2 instanceof Object) && !Boolean(iarg1 instanceof Object)):
|
|
|
|
|
tempresult = this.compareData(/*luxon, */iarg1, iarg2)
|
|
|
|
|
break;
|
|
|
|
|
case (!Boolean(iarg1 instanceof Object)):
|
|
|
|
|
for (let i = 0; i < iarg2.length; i++) {
|
|
|
|
|
tempresult = tempresult || this.compareData(/*luxon, */iarg1, iarg2[i])
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var resultdc = tempresult
|
|
|
|
|
break;
|
|
|
|
|
case (!Boolean(iarg2 instanceof Object)):
|
|
|
|
|
for (let i = 0; i < iarg1.length; i++) {
|
|
|
|
|
tempresult = tempresult || this.compareData(/*luxon, */iarg1[i], iarg2)
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
for (let i = 0; i < iarg2.length; i++) {
|
|
|
|
|
for (let j = 0; j < iarg1.length; j++) {
|
|
|
|
|
tempresult = tempresult || this.compareData(/*luxon, */iarg1[j], iarg2[i])
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return resultdc
|
|
|
|
|
return tempresult
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
compareData(arg1, arg2) {
|
|
|
|
|
compareData(/*luxon, */arg1, arg2) {
|
|
|
|
|
|
|
|
|
|
let tempresult = false;
|
|
|
|
|
let targ1 = arg1
|
|
|
|
|
let toperator = ""
|
|
|
|
|
let targ2 = arg2
|
|
|
|
|
|
|
|
|
|
if (arg2.length > 1 && this.hasOperator(arg2)) {
|
|
|
|
|
switch(this.getOperator(arg2)) {
|
|
|
|
|
case '<':
|
|
|
|
|
tempresult = (parseFloat(arg1) < parseFloat(arg2.replace(this.getOperator(arg2), "")))
|
|
|
|
|
break;
|
|
|
|
|
case '<=':
|
|
|
|
|
tempresult = (parseFloat(arg1) <= parseFloat(arg2.replace(this.getOperator(arg2), "")))
|
|
|
|
|
break;
|
|
|
|
|
case '>':
|
|
|
|
|
tempresult = (parseFloat(arg1) > parseFloat(arg2.replace(this.getOperator(arg2), "")))
|
|
|
|
|
break;
|
|
|
|
|
case '>=':
|
|
|
|
|
tempresult = (parseFloat(arg1) >= parseFloat(arg2.replace(this.getOperator(arg2), "")))
|
|
|
|
|
break;
|
|
|
|
|
case '!':
|
|
|
|
|
if (isNaN(arg2.replace("!", ""))) {
|
|
|
|
|
tempresult = !(arg1.search(new RegExp(arg2, "i")) > -1)
|
|
|
|
|
} else {tempresult = (parseFloat(arg1) != parseFloat(arg2.replace(this.getOperator(arg2), "")))}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
} else {tempresult = (arg1.search(new RegExp(arg2, "i")) > -1)}
|
|
|
|
|
if (this.hasOperator(arg2.toString())) {
|
|
|
|
|
toperator = this.getOperator(arg2)
|
|
|
|
|
targ2 = arg2.replace(toperator, "")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch(true) {
|
|
|
|
|
case Boolean(arg1.isValid):
|
|
|
|
|
targ1 = arg1.toString() //startOf("day")
|
|
|
|
|
break;
|
|
|
|
|
case Boolean(arg2.isValid):
|
|
|
|
|
targ2 = arg2.toString() // startOf("day") //(arg2.isValid) ? arg2.startOf("day") : (luxon.DateTime.fromISO(`${targ2}`)).startOf("day")
|
|
|
|
|
break;
|
|
|
|
|
case (arg1.length == 0):
|
|
|
|
|
targ1 = ''
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch(toperator) {
|
|
|
|
|
case '<':
|
|
|
|
|
tempresult = (targ1 < targ2)
|
|
|
|
|
break;
|
|
|
|
|
case '<=':
|
|
|
|
|
tempresult = (targ1 <= targ2)
|
|
|
|
|
break;
|
|
|
|
|
case '>':
|
|
|
|
|
tempresult = (targ1 > targ2)
|
|
|
|
|
break;
|
|
|
|
|
case '>=':
|
|
|
|
|
tempresult = (targ1 >= targ2)
|
|
|
|
|
break;
|
|
|
|
|
case '!':
|
|
|
|
|
tempresult = (typeof targ1 === 'string' || targ1 instanceof String) ? !(targ1.search(new RegExp(targ2, "i")) > -1) : (targ1 != targ2)
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
tempresult = (typeof targ1 === 'string' || targ1 instanceof String) ? (targ1.search(new RegExp(targ2, "i")) > -1) : (targ1 == targ2)
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return tempresult
|
|
|
|
|
|
|
|
|
@ -70,6 +89,7 @@ class globalFunc {
|
|
|
|
|
case '<':
|
|
|
|
|
case '>':
|
|
|
|
|
case '!':
|
|
|
|
|
case '=':
|
|
|
|
|
tempresult = true
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
@ -77,11 +97,8 @@ class globalFunc {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getOperator(arg1) {
|
|
|
|
|
let tempresult = arg1.charAt(0);
|
|
|
|
|
if (this.hasOperator(arg1.charAt(1))) {
|
|
|
|
|
tempresult = tempresult + arg1.charAt(1)
|
|
|
|
|
}
|
|
|
|
|
return tempresult
|
|
|
|
|
|
|
|
|
|
return (this.hasOperator(arg1.charAt(1))) ? arg1.charAt(0) + arg1.charAt(1) : arg1.charAt(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BuildList(arg1, construct) {
|
|
|
|
@ -104,7 +121,7 @@ class globalFunc {
|
|
|
|
|
|
|
|
|
|
let TempS = ""
|
|
|
|
|
|
|
|
|
|
if (Array.isArray(arg2)) {
|
|
|
|
|
if (arg2 instanceof Object) {
|
|
|
|
|
for (let i = 0; i < arg1.length; i++) {
|
|
|
|
|
if (Boolean(arg1[i])) {
|
|
|
|
|
if (TempS == "") {
|
|
|
|
@ -134,11 +151,8 @@ class globalFunc {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Get1stArg(arg3) {
|
|
|
|
|
if (!Array.isArray(arg3)) {
|
|
|
|
|
return arg3
|
|
|
|
|
} else {
|
|
|
|
|
return arg3[0]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ((arg3 instanceof Object) || (arg3 instanceof Array)) ? arg3[0] : arg3
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
topLevelFilter(pobj, DocType, subType) {
|
|
|
|
@ -155,7 +169,7 @@ class globalFunc {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
IsInSearch(pobj, DocType, darray, iarray) {
|
|
|
|
|
IsInSearch(/*luxon, */pobj, DocType, darray, iarray) {
|
|
|
|
|
|
|
|
|
|
let ilength = iarray.length;
|
|
|
|
|
let result = true
|
|
|
|
@ -169,7 +183,7 @@ class globalFunc {
|
|
|
|
|
if (Boolean(iarray[i])) {
|
|
|
|
|
let pProp = this.GetpProp(pobj, DocType, darray[i])
|
|
|
|
|
if (!Boolean(pProp)) { result = result && false } else {
|
|
|
|
|
result = result && this.DataCheck(pProp, iarray[i])
|
|
|
|
|
result = result && this.DataCheck(/*luxon, */pProp, iarray[i])
|
|
|
|
|
}
|
|
|
|
|
} else {result = result && true}
|
|
|
|
|
}
|
|
|
|
@ -178,7 +192,7 @@ class globalFunc {
|
|
|
|
|
if (Boolean(iarray[i])) {
|
|
|
|
|
let pProp = this.GetpProp(pobj, DocType, darray[i])
|
|
|
|
|
if (!Boolean(pProp)) { result = result && false } else {
|
|
|
|
|
result = result && this.DataCheck(pProp, iarray[i])
|
|
|
|
|
result = result && this.DataCheck(/*luxon, */pProp, iarray[i])
|
|
|
|
|
}
|
|
|
|
|
} else {result = result && true}
|
|
|
|
|
break;
|
|
|
|
@ -188,14 +202,14 @@ class globalFunc {
|
|
|
|
|
return result
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getTable(dv, DocType, darray, iarray, tabletype) {
|
|
|
|
|
getTable(dv, /*luxon, */DocType, darray, iarray, tabletype) {
|
|
|
|
|
|
|
|
|
|
let page = dv.pages()
|
|
|
|
|
.filter(p => p && this.topLevelFilter(p, DocType, 0))
|
|
|
|
|
.where(p => p && this.IsInSearch(p, DocType, darray, iarray))
|
|
|
|
|
|
|
|
|
|
if (typeof page == 'undefined' || typeof page == 'null' || page.length === 0) {
|
|
|
|
|
return this.EmptyQueryMessage()
|
|
|
|
|
.where(p => p && this.IsInSearch(/*luxon, */p, DocType, darray, iarray))
|
|
|
|
|
|
|
|
|
|
if (page.length == 0) {
|
|
|
|
|
return this.EmptyQueryMessage(dv)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dv.table(this.GetTableHeaders(DocType, tabletype), page
|
|
|
|
@ -204,7 +218,7 @@ class globalFunc {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EmptyQueryMessage() {
|
|
|
|
|
EmptyQueryMessage(dv) {
|
|
|
|
|
return dv.el('b', '⚠️ Warning:\nNo result matching your query!')
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -429,7 +443,9 @@ class globalFunc {
|
|
|
|
|
toEmoji(label) {
|
|
|
|
|
let tempresult = ""
|
|
|
|
|
|
|
|
|
|
if (Array.isArray(label)) {
|
|
|
|
|
//other test for below: typeof label == 'object'
|
|
|
|
|
//return Object.entries(label)
|
|
|
|
|
if (label instanceof Object) {
|
|
|
|
|
for (let i = 0; i < label.length; i++) {
|
|
|
|
|
if (tempresult == '') {
|
|
|
|
|
tempresult = this.getEmoji(label[i]);
|
|
|
|
@ -517,7 +533,11 @@ class globalFunc {
|
|
|
|
|
break;
|
|
|
|
|
case 'Colombia':
|
|
|
|
|
tempresult = "🇨🇴"
|
|
|
|
|
break;
|
|
|
|
|
break;
|
|
|
|
|
case 'El Salvador':
|
|
|
|
|
case 'ElSalvador':
|
|
|
|
|
tempresult = "🇸🇻"
|
|
|
|
|
break;
|
|
|
|
|
case 'Pub':
|
|
|
|
|
tempresult = "🍺"
|
|
|
|
|
break;
|
|
|
|
@ -1010,6 +1030,7 @@ class globalFunc {
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result
|
|
|
|
|
}
|
|
|
|
|
}
|