From 807a5d2da7b13826ea4352fc374992616c29ec46 Mon Sep 17 00:00:00 2001 From: 18alantom <2.alan.tom@gmail.com> Date: Mon, 21 Mar 2022 11:28:52 +0530 Subject: [PATCH] incr: remove utils, format from common --- frappe/common/index.js | 4 -- frappe/index.js | 10 +++-- frappe/utils/format.js | 92 ++++++++++++++++++++---------------------- frappe/utils/index.js | 41 +++++-------------- 4 files changed, 61 insertions(+), 86 deletions(-) diff --git a/frappe/common/index.js b/frappe/common/index.js index 2b99b881..269e7ffc 100644 --- a/frappe/common/index.js +++ b/frappe/common/index.js @@ -1,11 +1,7 @@ export default async function initLibs(frappe) { - const utils = await import('../utils'); - const format = await import('../utils/format'); const BaseMeta = await import('frappe/model/meta'); const BaseDocument = await import('frappe/model/document'); - Object.assign(frappe, utils.default); - Object.assign(frappe, format.default); frappe.BaseDocument = BaseDocument.default; frappe.BaseMeta = BaseMeta.default; } diff --git a/frappe/index.js b/frappe/index.js index ebca6054..3db2be5c 100644 --- a/frappe/index.js +++ b/frappe/index.js @@ -2,17 +2,21 @@ import initLibs from 'frappe/common'; import { getMoneyMaker } from 'pesa'; import { markRaw } from 'vue'; import * as errors from './common/errors'; -import utils from './utils'; +import { asyncHandler, getDuplicates, getRandomString } from './utils'; import { DEFAULT_DISPLAY_PRECISION, DEFAULT_INTERNAL_PRECISION, } from './utils/consts'; +import { format } from './utils/format'; import Observable from './utils/observable'; import { t, T } from './utils/translation'; class Frappe { t = t; T = T; + format = format; + getRandomString = getRandomString; + errors = errors; isElectron = false; isServer = false; @@ -114,7 +118,7 @@ class Frappe { let fieldnames = (metaDefinition.fields || []) .map((df) => df.fieldname) .sort(); - let duplicateFieldnames = utils.getDuplicates(fieldnames); + let duplicateFieldnames = getDuplicates(fieldnames); if (duplicateFieldnames.length > 0) { throw new Error( `Duplicate fields in ${doctype}: ${duplicateFieldnames.join(', ')}` @@ -144,7 +148,7 @@ class Frappe { // add to router if client-server this.app.post( `/api/method/${method}`, - this.asyncHandler(async function (request, response) { + asyncHandler(async function (request, response) { let data = await handler(request.body); if (data === undefined) { data = {}; diff --git a/frappe/utils/format.js b/frappe/utils/format.js index a7b0f55d..53c63ebf 100644 --- a/frappe/utils/format.js +++ b/frappe/utils/format.js @@ -2,55 +2,51 @@ import frappe from 'frappe'; import { DateTime } from 'luxon'; import { DEFAULT_DISPLAY_PRECISION, DEFAULT_LOCALE } from './consts'; -export default { - format(value, df, doc) { - if (!df) { - return value; - } - - if (typeof df === 'string') { - df = { fieldtype: df }; - } - - if (df.fieldtype === 'Currency') { - const currency = getCurrency(df, doc); - value = formatCurrency(value, currency); - } else if (df.fieldtype === 'Date') { - let dateFormat; - if (!frappe.SystemSettings) { - dateFormat = 'yyyy-MM-dd'; - } else { - dateFormat = frappe.SystemSettings.dateFormat; - } - - if (typeof value === 'string') { - // ISO String - value = DateTime.fromISO(value); - } else if (Object.prototype.toString.call(value) === '[object Date]') { - // JS Date - value = DateTime.fromJSDate(value); - } - - value = value.toFormat(dateFormat); - if (value === 'Invalid DateTime') { - value = ''; - } - } else if (df.fieldtype === 'Check') { - typeof parseInt(value) === 'number' - ? (value = parseInt(value)) - : (value = Boolean(value)); - } else { - if (value === null || value === undefined) { - value = ''; - } else { - value = value + ''; - } - } +export function format(value, df, doc) { + if (!df) { return value; - }, - formatCurrency, - formatNumber, -}; + } + + if (typeof df === 'string') { + df = { fieldtype: df }; + } + + if (df.fieldtype === 'Currency') { + const currency = getCurrency(df, doc); + value = formatCurrency(value, currency); + } else if (df.fieldtype === 'Date') { + let dateFormat; + if (!frappe.SystemSettings) { + dateFormat = 'yyyy-MM-dd'; + } else { + dateFormat = frappe.SystemSettings.dateFormat; + } + + if (typeof value === 'string') { + // ISO String + value = DateTime.fromISO(value); + } else if (Object.prototype.toString.call(value) === '[object Date]') { + // JS Date + value = DateTime.fromJSDate(value); + } + + value = value.toFormat(dateFormat); + if (value === 'Invalid DateTime') { + value = ''; + } + } else if (df.fieldtype === 'Check') { + typeof parseInt(value) === 'number' + ? (value = parseInt(value)) + : (value = Boolean(value)); + } else { + if (value === null || value === undefined) { + value = ''; + } else { + value = value + ''; + } + } + return value; +} function formatCurrency(value, currency) { let valueString; diff --git a/frappe/utils/index.js b/frappe/utils/index.js index 0abdacf7..23ed1831 100644 --- a/frappe/utils/index.js +++ b/frappe/utils/index.js @@ -1,15 +1,6 @@ -const { pesa } = require('pesa'); +import { pesa } from 'pesa'; -Array.prototype.equals = function (array) { - return ( - this.length == array.length && - this.every(function (item, i) { - return item == array[i]; - }) - ); -}; - -function slug(str) { +export function slug(str) { return str .replace(/(?:^\w|[A-Z]|\b\w)/g, function (letter, index) { return index == 0 ? letter.toLowerCase() : letter.toUpperCase(); @@ -17,17 +8,17 @@ function slug(str) { .replace(/\s+/g, ''); } -function getRandomString() { +export function getRandomString() { return Math.random().toString(36).substr(3); } -async function sleep(seconds) { +export async function sleep(seconds) { return new Promise((resolve) => { setTimeout(resolve, seconds * 1000); }); } -function getQueryString(params) { +export function getQueryString(params) { if (!params) return ''; let parts = []; for (let key in params) { @@ -40,7 +31,7 @@ function getQueryString(params) { return parts.join('&'); } -function asyncHandler(fn) { +export function asyncHandler(fn) { return (req, res, next) => Promise.resolve(fn(req, res, next)).catch((err) => { console.log(err); @@ -53,13 +44,13 @@ function asyncHandler(fn) { * Returns array from 0 to n - 1 * @param {Number} n */ -function range(n) { +export function range(n) { return Array(n) .fill() .map((_, i) => i); } -function unique(list, key = (it) => it) { +export function unique(list, key = (it) => it) { var seen = {}; return list.filter((item) => { var k = key(item); @@ -67,7 +58,7 @@ function unique(list, key = (it) => it) { }); } -function getDuplicates(array) { +export function getDuplicates(array) { let duplicates = []; for (let i in array) { let previous = array[i - 1]; @@ -82,18 +73,6 @@ function getDuplicates(array) { return duplicates; } -function isPesa(value) { +export function isPesa(value) { return value instanceof pesa().constructor; } - -module.exports = { - slug, - getRandomString, - sleep, - getQueryString, - asyncHandler, - range, - unique, - getDuplicates, - isPesa, -};