1
0
mirror of https://github.com/PanJiaChen/vue-element-admin.git synced 2025-08-13 23:20:12 +08:00
EdwinBetanc0urt 79698ad562 Redefine API to provider access. (#199)
* Migrate login, get session, change role, logout.

* Convert menu.
2019-12-10 10:11:44 -04:00

293 lines
7.8 KiB
JavaScript

import { convertValueFromGRPC } from '@/api/ADempiere/data'
// Decode a HTML text
export function decodeHtml(text) {
var processMetadata = document.createElement('div')
processMetadata.innerHTML = text
return processMetadata.childNodes[0].nodeValue
}
/**
* Checks if value is empty. Deep-checks arrays and objects
* Note: isEmpty([]) == true, isEmpty({}) == true, isEmpty([{0:false},"",0]) == true, isEmpty({0:1}) == false
* @param {boolean|array|object|number|string} value
* @returns {boolean}
*/
export function isEmptyValue(value) {
if (value === undefined || value == null) {
return true
} else if (value === -1 || value === '-1') {
return true
} else if (typeof value === 'string') {
return Boolean(!value.trim().length)
} else if (typeof value === 'function' || typeof value === 'number' || typeof value === 'boolean' || Object.prototype.toString.call(value) === '[object Date]') {
return false
} else if (Object.prototype.toString.call(value) === '[object Map]' && value.size === 0) {
return true
} else if (Array.isArray(value)) {
return Boolean(!value.length)
} else if (typeof value === 'object') {
return Boolean(!Object.keys(value).length)
}
return true
}
export function typeValue(value) {
if (typeof value === 'undefined' || value == null) {
return value
} else if (typeof value === 'string') {
return 'STRING'
} else if (typeof value === 'function') {
return 'FUNCTION'
} else if (typeof value === 'number') {
if (value.isInteger()) {
return 'INTEGER'
} else {
return 'NUMBER'
}
} else if (typeof value === 'boolean') {
return 'BOOLEAN'
} else if (Object.prototype.toString.call(value) === '[object Date]') {
return 'DATE'
} else if (Array.isArray(value)) {
return 'ARRAY'
} else if (typeof value === 'object') {
return 'OBJECT'
}
return value
}
/**
* zero pad
* @param {number} number
* @param {number} pad
* @returns {string}
*/
export function zeroPad(number, pad = 2) {
var zero = Number(pad) - number.toString().length + 1
return Array(+(zero > 0 && zero)).join('0') + number
}
/**
* Get date and time from client in a object value
* @param {string} type Type value of return
* @returns {object|string}
*/
export function clientDateTime(date = null, type = '') {
if (date == null || date === undefined || (typeof date === 'string' && date.trim() === '')) {
// instance the objet Data with current date from client
date = new Date()
} else {
// instance the objet Data with date or time send
date = new Date(date)
}
const currentDate = date.getFullYear() +
'-' + zeroPad(date.getMonth() + 1) +
'-' + zeroPad(date.getDate())
const currentTime = date.getHours() +
':' + date.getMinutes() +
':' + date.getSeconds()
const currentDateTime = {
date: currentDate,
time: currentTime
}
if (type.toLowerCase() === 't') {
// time format HH:II:SS
return currentDateTime.time
} else if (type.toLowerCase() === 'd') {
// date format YYYY-MM-DD
return currentDateTime.date
} else if (type.toLocaleLowerCase() === 'o') {
// object format
return currentDateTime
}
return currentDateTime.date + ' ' + currentDateTime.time
}
/**
* Convert a object to array pairs
* @param {object} objectToConvert, object to convert
* @param {string} nameKey, name from key in pairs
* @param {string} nameValue, name from value in pairs
* @returns {array} [ { nameKe: key, nameValue: value } ]
*/
export function convertObjectToArrayPairs(objectToConvert, nameKey = 'columnName', nameValue = 'value') {
var result = Object.keys(objectToConvert).map(key => {
var returnPairs = {}
returnPairs[nameKey] = key
returnPairs[nameValue] = objectToConvert[key]
return returnPairs
})
return result
}
/**
* Convert array pairs of object to simple object { key:value }
* @param {object} objectToConvert, object to convert
* @param {string} nameKey, name from key in pairs
* @param {string} nameValue, name from value in pairs
*/
export function convertArrayPairsToObject(arrayToConver, nameKey = 'columnName', nameValue = 'value') {
var result = {}
arrayToConver.forEach(element => {
result[element[nameKey]] = element[nameValue]
})
return result
}
export function convertValuesMapToObject(map) {
var objectConverted = {}
map.forEach((value, key) => {
var valueResult = map.get(key)
var tempValue
if (valueResult) {
tempValue = convertValueFromGRPC(value)
}
objectConverted[key] = tempValue
})
return objectConverted
}
export function convertMapToArrayPairs({
toConvert,
nameKey = 'columnName',
nameValue = 'value',
isGRPC = true
}) {
const result = []
if (toConvert) {
toConvert.forEach((value, key) => {
const element = {}
element[nameKey] = key
element[nameValue] = value
if (isGRPC) {
element[nameValue] = convertValueFromGRPC(value)
}
result.push(element)
})
}
return result
}
export function convertHasMapToObject(hasMapToConvert) {
var result = {}
hasMapToConvert.forEach((value, key) => {
result[key] = value
})
return result
}
export function convertFieldListToShareLink(fieldList) {
var attributesListLink = ''
fieldList.map(fieldItem => {
// assign values
var value = fieldItem.value
var valueTo = fieldItem.valueTo
if (!isEmptyValue(value)) {
if (['FieldDate', 'FieldTime'].includes(fieldItem.componentPath) || typeof value === 'object') {
value = value.getTime()
}
attributesListLink += `${fieldItem.columnName}=${encodeURIComponent(value)}&`
}
if (fieldItem.isRange && !isEmptyValue(valueTo)) {
if (['FieldDate', 'FieldTime'].includes(fieldItem.componentPath) || typeof value === 'object') {
valueTo = valueTo.getTime()
}
attributesListLink += `${fieldItem.columnName}_To=${encodeURIComponent(valueTo)}&`
}
})
return attributesListLink.slice(0, -1)
}
/**
*
* @param {*} param0
*/
export function parsedValueComponent({ fieldType, value, referenceType, isMandatory = false }) {
if (value === undefined || value === null) {
return undefined
}
var returnValue
switch (fieldType) {
// data type Number
case 'FieldNumber':
if (String(value).trim() === '') {
returnValue = undefined
if (isMandatory) {
returnValue = 0
}
} else if (typeof value === 'object' && value.hasOwnProperty('query')) {
returnValue = value
} else {
returnValue = Number(value)
}
break
// data type Boolean
case 'FieldYesNo':
if (value === 'false' || value === 'N') {
value = false
} else if (typeof value === 'object' && value.hasOwnProperty('query')) {
returnValue = value
}
returnValue = Boolean(value)
break
// data type String
case 'FieldText':
case 'FieldTextArea':
if (typeof value === 'object' && value.hasOwnProperty('query')) {
returnValue = value
}
returnValue = String(value)
break
// data type Date
case 'FieldDate':
case 'FieldTime ':
if (String(value).trim() === '') {
value = undefined
}
if (!isNaN(value)) {
value = Number(value)
}
if (typeof value === 'number') {
value = new Date(value)
}
if (typeof value === 'object' && value.hasOwnProperty('query')) {
returnValue = value
}
returnValue = value
break
case 'FieldSelect':
if (String(value).trim() === '') {
value = undefined
}
if (referenceType === 'TableDirect') {
if (value !== '' && value !== null && value !== undefined) {
value = Number(value)
}
} // Search or List
returnValue = value
break
default:
returnValue = value
break
}
return returnValue
}