import { formatCurrency, parseCurrency, formatDate, formatDateTime, formatNumber, formatPercent, formatPhone } from "@/util/format-util"; const getFieldByKey = (fields=[], key='') => { return fields.find(field => field.key === key) } const getFieldValue = (item={}, key='', formatter) => { let rawValue, formattedValue if(key) { /* work through nested fields, if they are nested */ if (key.indexOf('.') >= 0) { const [first, ...rest] = key.split('.') return getFieldValue(item[first], rest.join('.'), formatter) } rawValue = item ? item[key] : '' if (formatter) { /* Built-in shortcuts for common formatting */ if (typeof formatter === 'string') { const [type, ...options] = formatter.split('|') if (type === 'currency') formattedValue = formatCurrency(rawValue, options[0] || undefined, options[1] || undefined, options[2] || undefined) else if(type === 'parseCurrency') formattedValue = parseCurrency(rawValue) else if (type === 'number') formattedValue = formatNumber(rawValue, options[0] || undefined, options[1] || undefined, options[2] || undefined) else if (type === 'percent') formattedValue = formatPercent(rawValue, options[0] || undefined, options[1] || undefined, options[2] || undefined) else if (type === 'dateTime') formattedValue = formatDateTime(rawValue, options[0] || undefined) else if (type === 'phone') formattedValue = formatPhone(rawValue) else if (type === 'date') formattedValue = formatDate(rawValue, options[0] || undefined) else if (type.indexOf('YY') >= 0) formattedValue = formatDate(rawValue, type) } else if (typeof formatter === 'function') { formattedValue = formatter(rawValue, key, item) } } } return { rawValue: rawValue, formattedValue: formattedValue } } const getDisplayValue = (item, field) => { const { rawValue, formattedValue } = getFieldValue(item, field.key, field.formatter) return field && field.formatter && formattedValue ? formattedValue : rawValue } export { getDisplayValue, getFieldByKey, getFieldValue }