CreditCardExample/utils/environment.js
2023-08-31 09:01:31 -06:00

161 lines
7.4 KiB
JavaScript

import functions from 'v-functions'
/**
* @brief Objeto con funciones comunes de ambiente
*/
const environment = {
buildFunctiontsHeaders: (baseHeaders, iconResponse = () => {}, substituteValOnForm = () => {}) => {
const newHeaders = []
if (baseHeaders != null && baseHeaders.length) {
for (let i = 0; i < baseHeaders.length; i++) {
const field = baseHeaders[i]
if (field.substituteValOnForm != null) {
field.substituteValOnForm = (head, _model, _field, _isEdit) => { return substituteValOnForm(head, _model, _field, _isEdit) }
}
if (field.mappingRules != null && field.mappingRules.length) {
const _mappingRules = [...field.mappingRules]
// Insertar Funcion para substituteVal
const rulesValue = _mappingRules.filter((rule) => (rule.type === 'value' || rule.type === 'icon' || rule.type === 'format' || rule.type === 'fieldValue'))
if (rulesValue.length) {
field.substituteVal = (item) => {
const id = field.value
const rules = [...rulesValue]
if (rules.length) {
for (let i = 0; i < rules.length; i++) {
const rule = { ...rules[i] }
const numberRuleValue = Number(rule.value)
const numberFieldValue = Number(item[rule.field])
const areNums = !isNaN(numberRuleValue) && !isNaN(numberFieldValue)
let response = rule.result
if (rule.type === 'icon') {
response = iconResponse(item[id], rule.result, item)
}
if (rule.rule === 'equal') {
if ((!areNums && item[rule.field] === rule.value) || (areNums && numberFieldValue === numberRuleValue)) {
return response
} else if ((rule.value === null || rule.value === '') && (item[rule.field] === null || item[rule.field] === '')) {
return response
}
} else if (rule.rule === 'greater_than') {
if ((!areNums && item[rule.field] > rule.value) || (areNums && numberFieldValue > numberRuleValue)) {
return response
}
} else if (rule.rule === 'less_than') {
if ((!areNums && item[rule.field] < rule.value) || (areNums && numberFieldValue < numberRuleValue)) {
return response
}
} else if (rule.rule === 'not_equal') {
if ((!areNums && item[rule.field] !== rule.value) || (areNums && numberFieldValue !== numberRuleValue)) {
return response
} else if ((rule.value === null || rule.value === '') && (item[rule.field] !== null || item[rule.field] !== '')) {
return response
}
}
if (rule.type === 'format') {
const isNum = !isNaN(numberFieldValue)
try {
if (rule.rule === 'number') {
if (isNum) {
return functions.formatNumber(numberFieldValue, rule.result)
}
return functions.formatNumber(item[rule.field], rule.result)
} else if (rule.rule === 'date') {
if (isNum) {
return functions.formatDate(numberFieldValue, rule.result)
}
return functions.formatDate(item[rule.field], rule.result)
}
} catch (e) {
return item[id]
}
}
if (rule.type === 'fieldValue') {
try {
return item[rule.result]
} catch (e) {
return item[id]
}
}
}
return item[id]
}
return item[id]
}
} else {
field.substituteVal = null
}
// Insertar Funcion para classItem
const rulesClass = _mappingRules.filter((rule) => (rule.type === 'class'))
if (rulesClass.length) {
field.classItem = (item) => {
const rules = [...rulesClass]
let resultClass = ''
if (rules.length) {
for (let i = 0; i < rules.length; i++) {
const rule = { ...rules[i] }
const numberRuleValue = Number(rule.value)
const numberFieldValue = Number(item[rule.field])
const areNums = !isNaN(numberRuleValue) && !isNaN(numberFieldValue)
if (rule.rule === 'equal') {
if ((!areNums && item[rule.field] === rule.value) || (areNums && numberFieldValue === numberRuleValue)) {
resultClass = `${resultClass} ${rule.result}`
} else if ((rule.value === null || rule.value === '') && (item[rule.field] === null || item[rule.field] === '')) {
resultClass = `${resultClass} ${rule.result}`
}
} else if (rule.rule === 'greater_than') {
if ((!areNums && item[rule.field] > rule.value) || (areNums && numberFieldValue > numberRuleValue)) {
resultClass = `${resultClass} ${rule.result}`
}
} else if (rule.rule === 'less_than') {
if ((!areNums && item[rule.field] < rule.value) || (areNums && numberFieldValue < numberRuleValue)) {
resultClass = `${resultClass} ${rule.result}`
}
} else if (rule.rule === 'not_equal') {
if ((!areNums && item[rule.field] !== rule.value) || (areNums && numberFieldValue !== numberRuleValue)) {
resultClass = `${resultClass} ${rule.result}`
} else if ((rule.value === null || rule.value === '') && (item[rule.field] !== null || item[rule.field] !== '')) {
resultClass = `${resultClass} ${rule.result}`
}
}
}
return resultClass
}
return resultClass
}
} else {
field.classItem = null
}
} else {
field.classItem = null
field.substituteVal = null
}
if (field.showInForm != null && field.showInForm === true) {
if (field.formatDefinition != null && field.formatDefinition.action != null) {
if (field.formatDefinition.action === 'format') {
field.format = (val, definition = field.formatDefinition) => {
if (val != null) {
if (definition.value === 'lowercase') {
const valString = String(val)
return valString.toLowerCase()
} else if (definition.value === 'uppercase') {
const valString = String(val)
return valString.toUpperCase()
}
}
return val
}
}
} else {
field.format = null
}
}
newHeaders.push({ ...field })
}
}
return newHeaders
}
}
export default environment