2024-01-25 05:58:13 +13:00
|
|
|
import { FieldType } from "@budibase/types"
|
2022-11-22 07:33:34 +13:00
|
|
|
|
2024-01-25 05:58:13 +13:00
|
|
|
const parseArrayString = (value: any) => {
|
2023-05-10 23:36:01 +12:00
|
|
|
if (typeof value === "string") {
|
|
|
|
if (value === "") {
|
|
|
|
return []
|
|
|
|
}
|
|
|
|
let result
|
|
|
|
try {
|
|
|
|
result = JSON.parse(value.replace(/'/g, '"'))
|
|
|
|
return result
|
|
|
|
} catch (e) {
|
2023-06-21 23:07:46 +12:00
|
|
|
return value
|
2023-05-10 23:36:01 +12:00
|
|
|
}
|
|
|
|
}
|
|
|
|
return value
|
|
|
|
}
|
|
|
|
|
2022-11-22 07:33:34 +13:00
|
|
|
/**
|
|
|
|
* A map of how we convert various properties in rows to each other based on the row type.
|
|
|
|
*/
|
2022-11-27 04:10:41 +13:00
|
|
|
export const TYPE_TRANSFORM_MAP: any = {
|
2024-01-25 05:58:13 +13:00
|
|
|
[FieldType.LINK]: {
|
2022-11-22 07:33:34 +13:00
|
|
|
"": [],
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2022-11-22 07:33:34 +13:00
|
|
|
[null]: [],
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2022-11-22 07:33:34 +13:00
|
|
|
[undefined]: undefined,
|
2024-01-25 05:58:13 +13:00
|
|
|
parse: (link: any) => {
|
2022-11-22 07:33:34 +13:00
|
|
|
if (Array.isArray(link) && typeof link[0] === "object") {
|
|
|
|
return link.map(el => (el && el._id ? el._id : el))
|
|
|
|
}
|
|
|
|
if (typeof link === "string") {
|
|
|
|
return [link]
|
|
|
|
}
|
|
|
|
return link
|
|
|
|
},
|
|
|
|
},
|
2024-01-25 05:58:13 +13:00
|
|
|
[FieldType.OPTIONS]: {
|
2022-11-22 07:33:34 +13:00
|
|
|
"": null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2022-11-22 07:33:34 +13:00
|
|
|
[null]: null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2022-11-22 07:33:34 +13:00
|
|
|
[undefined]: undefined,
|
|
|
|
},
|
2024-01-25 05:58:13 +13:00
|
|
|
[FieldType.ARRAY]: {
|
|
|
|
//@ts-ignore
|
2022-11-22 07:33:34 +13:00
|
|
|
[null]: [],
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2022-11-22 07:33:34 +13:00
|
|
|
[undefined]: undefined,
|
2023-05-10 23:36:01 +12:00
|
|
|
parse: parseArrayString,
|
2022-11-22 07:33:34 +13:00
|
|
|
},
|
2024-01-25 05:58:13 +13:00
|
|
|
[FieldType.STRING]: {
|
2023-11-23 22:53:35 +13:00
|
|
|
"": null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2023-11-23 22:53:35 +13:00
|
|
|
[null]: null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2022-11-22 07:33:34 +13:00
|
|
|
[undefined]: undefined,
|
|
|
|
},
|
2024-01-25 05:58:13 +13:00
|
|
|
[FieldType.BARCODEQR]: {
|
2023-11-23 22:53:35 +13:00
|
|
|
"": null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2023-11-23 22:53:35 +13:00
|
|
|
[null]: null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2022-11-22 07:33:34 +13:00
|
|
|
[undefined]: undefined,
|
|
|
|
},
|
2024-01-25 05:58:13 +13:00
|
|
|
[FieldType.FORMULA]: {
|
2023-11-23 22:53:35 +13:00
|
|
|
"": null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2023-11-23 22:53:35 +13:00
|
|
|
[null]: null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2022-11-22 07:33:34 +13:00
|
|
|
[undefined]: undefined,
|
|
|
|
},
|
2024-01-25 05:58:13 +13:00
|
|
|
[FieldType.LONGFORM]: {
|
2023-11-23 22:53:35 +13:00
|
|
|
"": null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2023-11-23 22:53:35 +13:00
|
|
|
[null]: null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2022-11-22 07:33:34 +13:00
|
|
|
[undefined]: undefined,
|
|
|
|
},
|
2024-01-25 05:58:13 +13:00
|
|
|
[FieldType.NUMBER]: {
|
2022-11-22 07:33:34 +13:00
|
|
|
"": null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2022-11-22 07:33:34 +13:00
|
|
|
[null]: null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2022-11-22 07:33:34 +13:00
|
|
|
[undefined]: undefined,
|
2024-01-25 05:58:13 +13:00
|
|
|
parse: (n: any) => parseFloat(n),
|
2022-11-22 07:33:34 +13:00
|
|
|
},
|
2024-01-25 05:58:13 +13:00
|
|
|
[FieldType.BIGINT]: {
|
2023-11-23 22:53:35 +13:00
|
|
|
"": null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2023-11-23 22:53:35 +13:00
|
|
|
[null]: null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2023-11-23 22:53:35 +13:00
|
|
|
[undefined]: undefined,
|
|
|
|
},
|
2024-01-25 05:58:13 +13:00
|
|
|
[FieldType.DATETIME]: {
|
2022-11-22 07:33:34 +13:00
|
|
|
"": null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2022-11-22 07:33:34 +13:00
|
|
|
[null]: null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
|
|
|
[undefined]: undefined,
|
|
|
|
parse: (date: any) => {
|
2022-11-22 07:33:34 +13:00
|
|
|
if (date instanceof Date) {
|
|
|
|
return date.toISOString()
|
|
|
|
}
|
|
|
|
return date
|
|
|
|
},
|
|
|
|
},
|
2024-04-03 21:44:35 +13:00
|
|
|
[FieldType.ATTACHMENTS]: {
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2022-11-22 07:33:34 +13:00
|
|
|
[null]: [],
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2022-11-22 07:33:34 +13:00
|
|
|
[undefined]: undefined,
|
2023-05-10 23:36:01 +12:00
|
|
|
parse: parseArrayString,
|
2022-11-22 07:33:34 +13:00
|
|
|
},
|
2024-01-25 05:58:13 +13:00
|
|
|
[FieldType.BOOLEAN]: {
|
2022-11-22 07:33:34 +13:00
|
|
|
"": null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2022-11-22 07:33:34 +13:00
|
|
|
[null]: null,
|
2024-01-25 05:58:13 +13:00
|
|
|
//@ts-ignore
|
2022-11-22 07:33:34 +13:00
|
|
|
[undefined]: undefined,
|
|
|
|
true: true,
|
|
|
|
false: false,
|
|
|
|
},
|
2024-01-25 05:58:13 +13:00
|
|
|
[FieldType.AUTO]: {
|
2022-11-22 07:33:34 +13:00
|
|
|
parse: () => undefined,
|
|
|
|
},
|
2024-01-25 05:58:13 +13:00
|
|
|
[FieldType.JSON]: {
|
|
|
|
parse: (input: any) => {
|
2022-11-22 07:33:34 +13:00
|
|
|
try {
|
|
|
|
if (input === "") {
|
|
|
|
return undefined
|
|
|
|
}
|
|
|
|
return JSON.parse(input)
|
|
|
|
} catch (err) {
|
|
|
|
return input
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|