Merge pull request #13391 from Budibase/BUDI-8122/use-types
Type frontend field types
This commit is contained in:
commit
5c4e5bf19e
13 changed files with 108 additions and 121 deletions
|
@ -1,3 +1,4 @@
|
||||||
|
import { FieldType } from "@budibase/types"
|
||||||
import { FIELDS } from "constants/backend"
|
import { FIELDS } from "constants/backend"
|
||||||
import { tables } from "stores/builder"
|
import { tables } from "stores/builder"
|
||||||
import { get as svelteGet } from "svelte/store"
|
import { get as svelteGet } from "svelte/store"
|
||||||
|
@ -5,14 +6,12 @@ import { get as svelteGet } from "svelte/store"
|
||||||
// currently supported level of relationship depth (server side)
|
// currently supported level of relationship depth (server side)
|
||||||
const MAX_DEPTH = 1
|
const MAX_DEPTH = 1
|
||||||
|
|
||||||
//https://github.com/Budibase/budibase/issues/3030
|
|
||||||
const internalType = "internal"
|
|
||||||
|
|
||||||
const TYPES_TO_SKIP = [
|
const TYPES_TO_SKIP = [
|
||||||
FIELDS.FORMULA.type,
|
FieldType.FORMULA,
|
||||||
FIELDS.LONGFORM.type,
|
FieldType.LONGFORM,
|
||||||
FIELDS.ATTACHMENT.type,
|
FieldType.ATTACHMENT,
|
||||||
internalType,
|
//https://github.com/Budibase/budibase/issues/3030
|
||||||
|
FieldType.INTERNAL,
|
||||||
]
|
]
|
||||||
|
|
||||||
export function getBindings({
|
export function getBindings({
|
||||||
|
@ -26,7 +25,7 @@ export function getBindings({
|
||||||
return bindings
|
return bindings
|
||||||
}
|
}
|
||||||
for (let [column, schema] of Object.entries(table.schema)) {
|
for (let [column, schema] of Object.entries(table.schema)) {
|
||||||
const isRelationship = schema.type === FIELDS.LINK.type
|
const isRelationship = schema.type === FieldType.LINK
|
||||||
// skip relationships after a certain depth and types which
|
// skip relationships after a certain depth and types which
|
||||||
// can't bind to
|
// can't bind to
|
||||||
if (
|
if (
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { RelationshipType } from "constants/backend"
|
import { RelationshipType } from "@budibase/types"
|
||||||
|
|
||||||
const typeMismatch = "Column type of the foreign key must match the primary key"
|
const typeMismatch = "Column type of the foreign key must match the primary key"
|
||||||
const columnBeingUsed = "Column name cannot be an existing column"
|
const columnBeingUsed = "Column name cannot be an existing column"
|
||||||
|
|
|
@ -12,7 +12,7 @@ const getDefaultSchema = rows => {
|
||||||
newSchema[column] = {
|
newSchema[column] = {
|
||||||
name: column,
|
name: column,
|
||||||
type: "string",
|
type: "string",
|
||||||
constraints: FIELDS["STRING"].constraints,
|
constraints: FIELDS.STRING.constraints,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { FieldType } from "@budibase/types"
|
||||||
|
|
||||||
export const convertOldFieldFormat = fields => {
|
export const convertOldFieldFormat = fields => {
|
||||||
if (!fields) {
|
if (!fields) {
|
||||||
return []
|
return []
|
||||||
|
@ -31,17 +33,17 @@ export const getComponentForField = (field, schema) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const FieldTypeToComponentMap = {
|
export const FieldTypeToComponentMap = {
|
||||||
string: "stringfield",
|
[FieldType.STRING]: "stringfield",
|
||||||
number: "numberfield",
|
[FieldType.NUMBER]: "numberfield",
|
||||||
bigint: "bigintfield",
|
[FieldType.BIGINT]: "bigintfield",
|
||||||
options: "optionsfield",
|
[FieldType.OPTIONS]: "optionsfield",
|
||||||
array: "multifieldselect",
|
[FieldType.ARRAY]: "multifieldselect",
|
||||||
boolean: "booleanfield",
|
[FieldType.BOOLEAN]: "booleanfield",
|
||||||
longform: "longformfield",
|
[FieldType.LONGFORM]: "longformfield",
|
||||||
datetime: "datetimefield",
|
[FieldType.DATETIME]: "datetimefield",
|
||||||
attachment: "attachmentfield",
|
[FieldType.ATTACHMENT]: "attachmentfield",
|
||||||
link: "relationshipfield",
|
[FieldType.LINK]: "relationshipfield",
|
||||||
json: "jsonfield",
|
[FieldType.JSON]: "jsonfield",
|
||||||
barcodeqr: "codescanner",
|
[FieldType.BARCODEQR]: "codescanner",
|
||||||
bb_reference: "bbreferencefield",
|
[FieldType.BB_REFERENCE]: "bbreferencefield",
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
import { FieldType, FieldSubtype } from "@budibase/types"
|
import {
|
||||||
|
FieldType,
|
||||||
|
FieldSubtype,
|
||||||
|
INTERNAL_TABLE_SOURCE_ID,
|
||||||
|
AutoFieldSubType,
|
||||||
|
Hosting,
|
||||||
|
} from "@budibase/types"
|
||||||
|
|
||||||
export const AUTO_COLUMN_SUB_TYPES = {
|
export { RelationshipType } from "@budibase/types"
|
||||||
AUTO_ID: "autoID",
|
|
||||||
CREATED_BY: "createdBy",
|
export const AUTO_COLUMN_SUB_TYPES = AutoFieldSubType
|
||||||
CREATED_AT: "createdAt",
|
|
||||||
UPDATED_BY: "updatedBy",
|
|
||||||
UPDATED_AT: "updatedAt",
|
|
||||||
}
|
|
||||||
|
|
||||||
export const AUTO_COLUMN_DISPLAY_NAMES = {
|
export const AUTO_COLUMN_DISPLAY_NAMES = {
|
||||||
AUTO_ID: "Auto ID",
|
AUTO_ID: "Auto ID",
|
||||||
|
@ -167,10 +169,7 @@ export const FILE_TYPES = {
|
||||||
DOCUMENT: ["odf", "docx", "doc", "pdf", "csv"],
|
DOCUMENT: ["odf", "docx", "doc", "pdf", "csv"],
|
||||||
}
|
}
|
||||||
|
|
||||||
export const HostingTypes = {
|
export const HostingTypes = Hosting
|
||||||
CLOUD: "cloud",
|
|
||||||
SELF: "self",
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Roles = {
|
export const Roles = {
|
||||||
ADMIN: "ADMIN",
|
ADMIN: "ADMIN",
|
||||||
|
@ -187,12 +186,6 @@ export function isAutoColumnUserRelationship(subtype) {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export const RelationshipType = {
|
|
||||||
MANY_TO_MANY: "many-to-many",
|
|
||||||
ONE_TO_MANY: "one-to-many",
|
|
||||||
MANY_TO_ONE: "many-to-one",
|
|
||||||
}
|
|
||||||
|
|
||||||
export const PrettyRelationshipDefinitions = {
|
export const PrettyRelationshipDefinitions = {
|
||||||
MANY: "Many rows",
|
MANY: "Many rows",
|
||||||
ONE: "One row",
|
ONE: "One row",
|
||||||
|
@ -218,7 +211,7 @@ export const SWITCHABLE_TYPES = [
|
||||||
...ALLOWABLE_NUMBER_TYPES,
|
...ALLOWABLE_NUMBER_TYPES,
|
||||||
]
|
]
|
||||||
|
|
||||||
export const BUDIBASE_INTERNAL_DB_ID = "bb_internal"
|
export const BUDIBASE_INTERNAL_DB_ID = INTERNAL_TABLE_SOURCE_ID
|
||||||
export const DEFAULT_BB_DATASOURCE_ID = "datasource_internal_bb_default"
|
export const DEFAULT_BB_DATASOURCE_ID = "datasource_internal_bb_default"
|
||||||
export const BUDIBASE_DATASOURCE_TYPE = "budibase"
|
export const BUDIBASE_DATASOURCE_TYPE = "budibase"
|
||||||
export const DB_TYPE_INTERNAL = "internal"
|
export const DB_TYPE_INTERNAL = "internal"
|
||||||
|
@ -265,10 +258,10 @@ export const IntegrationNames = {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const SchemaTypeOptions = [
|
export const SchemaTypeOptions = [
|
||||||
{ label: "Text", value: "string" },
|
{ label: "Text", value: FieldType.STRING },
|
||||||
{ label: "Number", value: "number" },
|
{ label: "Number", value: FieldType.NUMBER },
|
||||||
{ label: "Boolean", value: "boolean" },
|
{ label: "Boolean", value: FieldType.BOOLEAN },
|
||||||
{ label: "Datetime", value: "datetime" },
|
{ label: "Datetime", value: FieldType.DATETIME },
|
||||||
]
|
]
|
||||||
|
|
||||||
export const SchemaTypeOptionsExpanded = SchemaTypeOptions.map(el => ({
|
export const SchemaTypeOptionsExpanded = SchemaTypeOptions.map(el => ({
|
||||||
|
@ -305,10 +298,10 @@ export const PaginationLocations = [
|
||||||
]
|
]
|
||||||
|
|
||||||
export const BannedSearchTypes = [
|
export const BannedSearchTypes = [
|
||||||
"link",
|
FieldType.LINK,
|
||||||
"attachment",
|
FieldType.ATTACHMENT,
|
||||||
"formula",
|
FieldType.FORMULA,
|
||||||
"json",
|
FieldType.JSON,
|
||||||
"jsonarray",
|
"jsonarray",
|
||||||
"queryarray",
|
"queryarray",
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
import { FIELDS } from "constants/backend"
|
import { FieldType } from "@budibase/types"
|
||||||
|
|
||||||
function baseConversion(type) {
|
function baseConversion(type) {
|
||||||
if (type === "string") {
|
if (type === "string") {
|
||||||
return {
|
return {
|
||||||
type: FIELDS.STRING.type,
|
type: FieldType.STRING,
|
||||||
}
|
}
|
||||||
} else if (type === "boolean") {
|
} else if (type === "boolean") {
|
||||||
return {
|
return {
|
||||||
type: FIELDS.BOOLEAN.type,
|
type: FieldType.BOOLEAN,
|
||||||
}
|
}
|
||||||
} else if (type === "number") {
|
} else if (type === "number") {
|
||||||
return {
|
return {
|
||||||
type: FIELDS.NUMBER.type,
|
type: FieldType.NUMBER,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ function recurse(schemaLevel = {}, objectLevel) {
|
||||||
const schema = recurse(schemaLevel[key], value[0])
|
const schema = recurse(schemaLevel[key], value[0])
|
||||||
if (schema) {
|
if (schema) {
|
||||||
schemaLevel[key] = {
|
schemaLevel[key] = {
|
||||||
type: FIELDS.ARRAY.type,
|
type: FieldType.ARRAY,
|
||||||
schema,
|
schema,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ function recurse(schemaLevel = {}, objectLevel) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!schemaLevel.type) {
|
if (!schemaLevel.type) {
|
||||||
return { type: FIELDS.JSON.type, schema: schemaLevel }
|
return { type: FieldType.JSON, schema: schemaLevel }
|
||||||
} else {
|
} else {
|
||||||
return schemaLevel
|
return schemaLevel
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { FieldType } from "@budibase/types"
|
||||||
import { ActionStepID } from "constants/backend/automations"
|
import { ActionStepID } from "constants/backend/automations"
|
||||||
import { TableNames } from "constants"
|
import { TableNames } from "constants"
|
||||||
import {
|
import {
|
||||||
|
@ -20,20 +21,20 @@ export function buildAutoColumn(tableName, name, subtype) {
|
||||||
switch (subtype) {
|
switch (subtype) {
|
||||||
case AUTO_COLUMN_SUB_TYPES.UPDATED_BY:
|
case AUTO_COLUMN_SUB_TYPES.UPDATED_BY:
|
||||||
case AUTO_COLUMN_SUB_TYPES.CREATED_BY:
|
case AUTO_COLUMN_SUB_TYPES.CREATED_BY:
|
||||||
type = FIELDS.LINK.type
|
type = FieldType.LINK
|
||||||
constraints = FIELDS.LINK.constraints
|
constraints = FIELDS.LINK.constraints
|
||||||
break
|
break
|
||||||
case AUTO_COLUMN_SUB_TYPES.AUTO_ID:
|
case AUTO_COLUMN_SUB_TYPES.AUTO_ID:
|
||||||
type = FIELDS.NUMBER.type
|
type = FieldType.NUMBER
|
||||||
constraints = FIELDS.NUMBER.constraints
|
constraints = FIELDS.NUMBER.constraints
|
||||||
break
|
break
|
||||||
case AUTO_COLUMN_SUB_TYPES.UPDATED_AT:
|
case AUTO_COLUMN_SUB_TYPES.UPDATED_AT:
|
||||||
case AUTO_COLUMN_SUB_TYPES.CREATED_AT:
|
case AUTO_COLUMN_SUB_TYPES.CREATED_AT:
|
||||||
type = FIELDS.DATETIME.type
|
type = FieldType.DATETIME
|
||||||
constraints = FIELDS.DATETIME.constraints
|
constraints = FIELDS.DATETIME.constraints
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
type = FIELDS.STRING.type
|
type = FieldType.STRING
|
||||||
constraints = FIELDS.STRING.constraints
|
constraints = FIELDS.STRING.constraints
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
|
import { FieldType } from "@budibase/types"
|
||||||
import { get, writable, derived } from "svelte/store"
|
import { get, writable, derived } from "svelte/store"
|
||||||
import { cloneDeep } from "lodash/fp"
|
import { cloneDeep } from "lodash/fp"
|
||||||
import { API } from "api"
|
import { API } from "api"
|
||||||
import { SWITCHABLE_TYPES, FIELDS } from "constants/backend"
|
import { SWITCHABLE_TYPES } from "constants/backend"
|
||||||
|
|
||||||
export function createTablesStore() {
|
export function createTablesStore() {
|
||||||
const store = writable({
|
const store = writable({
|
||||||
|
@ -83,14 +84,14 @@ export function createTablesStore() {
|
||||||
// make sure tables up to date (related)
|
// make sure tables up to date (related)
|
||||||
let newTableIds = []
|
let newTableIds = []
|
||||||
for (let column of Object.values(updatedTable?.schema || {})) {
|
for (let column of Object.values(updatedTable?.schema || {})) {
|
||||||
if (column.type === FIELDS.LINK.type) {
|
if (column.type === FieldType.LINK) {
|
||||||
newTableIds.push(column.tableId)
|
newTableIds.push(column.tableId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let oldTableIds = []
|
let oldTableIds = []
|
||||||
for (let column of Object.values(oldTable?.schema || {})) {
|
for (let column of Object.values(oldTable?.schema || {})) {
|
||||||
if (column.type === FIELDS.LINK.type) {
|
if (column.type === FieldType.LINK) {
|
||||||
oldTableIds.push(column.tableId)
|
oldTableIds.push(column.tableId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +1,7 @@
|
||||||
|
import { FieldTypeToComponentMap } from "components/design/settings/controls/FieldConfiguration/utils"
|
||||||
import { Component } from "./Component"
|
import { Component } from "./Component"
|
||||||
import { getSchemaForDatasource } from "dataBinding"
|
import { getSchemaForDatasource } from "dataBinding"
|
||||||
|
|
||||||
const fieldTypeToComponentMap = {
|
|
||||||
string: "stringfield",
|
|
||||||
number: "numberfield",
|
|
||||||
bigint: "bigintfield",
|
|
||||||
options: "optionsfield",
|
|
||||||
array: "multifieldselect",
|
|
||||||
boolean: "booleanfield",
|
|
||||||
longform: "longformfield",
|
|
||||||
datetime: "datetimefield",
|
|
||||||
attachment: "attachmentfield",
|
|
||||||
link: "relationshipfield",
|
|
||||||
json: "jsonfield",
|
|
||||||
barcodeqr: "codescanner",
|
|
||||||
}
|
|
||||||
|
|
||||||
export function makeDatasourceFormComponents(datasource) {
|
export function makeDatasourceFormComponents(datasource) {
|
||||||
const { schema } = getSchemaForDatasource(null, datasource, {
|
const { schema } = getSchemaForDatasource(null, datasource, {
|
||||||
formSchema: true,
|
formSchema: true,
|
||||||
|
@ -30,7 +16,7 @@ export function makeDatasourceFormComponents(datasource) {
|
||||||
}
|
}
|
||||||
const fieldType =
|
const fieldType =
|
||||||
typeof fieldSchema === "object" ? fieldSchema.type : fieldSchema
|
typeof fieldSchema === "object" ? fieldSchema.type : fieldSchema
|
||||||
const componentType = fieldTypeToComponentMap[fieldType]
|
const componentType = FieldTypeToComponentMap[fieldType]
|
||||||
const fullComponentType = `@budibase/standard-components/${componentType}`
|
const fullComponentType = `@budibase/standard-components/${componentType}`
|
||||||
if (componentType) {
|
if (componentType) {
|
||||||
const component = new Component(fullComponentType)
|
const component = new Component(fullComponentType)
|
||||||
|
|
|
@ -7,19 +7,19 @@
|
||||||
export let order
|
export let order
|
||||||
|
|
||||||
const FieldTypeToComponentMap = {
|
const FieldTypeToComponentMap = {
|
||||||
string: "stringfield",
|
[FieldType.STRING]: "stringfield",
|
||||||
number: "numberfield",
|
[FieldType.NUMBER]: "numberfield",
|
||||||
bigint: "bigintfield",
|
[FieldType.BIGINT]: "bigintfield",
|
||||||
options: "optionsfield",
|
[FieldType.OPTIONS]: "optionsfield",
|
||||||
array: "multifieldselect",
|
[FieldType.ARRAY]: "multifieldselect",
|
||||||
boolean: "booleanfield",
|
[FieldType.BOOLEAN]: "booleanfield",
|
||||||
longform: "longformfield",
|
[FieldType.LONGFORM]: "longformfield",
|
||||||
datetime: "datetimefield",
|
[FieldType.DATETIME]: "datetimefield",
|
||||||
attachment: "attachmentfield",
|
[FieldType.ATTACHMENT]: "attachmentfield",
|
||||||
link: "relationshipfield",
|
[FieldType.LINK]: "relationshipfield",
|
||||||
json: "jsonfield",
|
[FieldType.JSON]: "jsonfield",
|
||||||
barcodeqr: "codescanner",
|
[FieldType.BARCODEQR]: "codescanner",
|
||||||
bb_reference: "bbreferencefield",
|
[FieldType.BB_REFERENCE]: "bbreferencefield",
|
||||||
}
|
}
|
||||||
|
|
||||||
const getFieldSchema = field => {
|
const getFieldSchema = field => {
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@budibase/bbui": "0.0.0",
|
"@budibase/bbui": "0.0.0",
|
||||||
"@budibase/shared-core": "0.0.0",
|
"@budibase/shared-core": "0.0.0",
|
||||||
|
"@budibase/types": "0.0.0",
|
||||||
"dayjs": "^1.10.8",
|
"dayjs": "^1.10.8",
|
||||||
"lodash": "4.17.21",
|
"lodash": "4.17.21",
|
||||||
"socket.io-client": "^4.6.1"
|
"socket.io-client": "^4.6.1"
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { FieldType } from "@budibase/types"
|
||||||
|
|
||||||
import OptionsCell from "../cells/OptionsCell.svelte"
|
import OptionsCell from "../cells/OptionsCell.svelte"
|
||||||
import DateCell from "../cells/DateCell.svelte"
|
import DateCell from "../cells/DateCell.svelte"
|
||||||
import MultiSelectCell from "../cells/MultiSelectCell.svelte"
|
import MultiSelectCell from "../cells/MultiSelectCell.svelte"
|
||||||
|
@ -12,19 +14,19 @@ import AttachmentCell from "../cells/AttachmentCell.svelte"
|
||||||
import BBReferenceCell from "../cells/BBReferenceCell.svelte"
|
import BBReferenceCell from "../cells/BBReferenceCell.svelte"
|
||||||
|
|
||||||
const TypeComponentMap = {
|
const TypeComponentMap = {
|
||||||
text: TextCell,
|
[FieldType.STRING]: TextCell,
|
||||||
options: OptionsCell,
|
[FieldType.OPTIONS]: OptionsCell,
|
||||||
datetime: DateCell,
|
[FieldType.DATETIME]: DateCell,
|
||||||
barcodeqr: TextCell,
|
[FieldType.BARCODEQR]: TextCell,
|
||||||
longform: LongFormCell,
|
[FieldType.LONGFORM]: LongFormCell,
|
||||||
array: MultiSelectCell,
|
[FieldType.ARRAY]: MultiSelectCell,
|
||||||
number: NumberCell,
|
[FieldType.NUMBER]: NumberCell,
|
||||||
boolean: BooleanCell,
|
[FieldType.BOOLEAN]: BooleanCell,
|
||||||
attachment: AttachmentCell,
|
[FieldType.ATTACHMENT]: AttachmentCell,
|
||||||
link: RelationshipCell,
|
[FieldType.LINK]: RelationshipCell,
|
||||||
formula: FormulaCell,
|
[FieldType.FORMULA]: FormulaCell,
|
||||||
json: JSONCell,
|
[FieldType.JSON]: JSONCell,
|
||||||
bb_reference: BBReferenceCell,
|
[FieldType.BB_REFERENCE]: BBReferenceCell,
|
||||||
}
|
}
|
||||||
export const getCellRenderer = column => {
|
export const getCellRenderer = column => {
|
||||||
return TypeComponentMap[column?.schema?.type] || TextCell
|
return TypeComponentMap[column?.schema?.type] || TextCell
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import { FieldType, FieldTypeSubtypes } from "@budibase/types"
|
||||||
|
|
||||||
export const getColor = (idx, opacity = 0.3) => {
|
export const getColor = (idx, opacity = 0.3) => {
|
||||||
if (idx == null || idx === -1) {
|
if (idx == null || idx === -1) {
|
||||||
idx = 0
|
idx = 0
|
||||||
|
@ -6,22 +8,22 @@ export const getColor = (idx, opacity = 0.3) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const TypeIconMap = {
|
const TypeIconMap = {
|
||||||
text: "Text",
|
[FieldType.STRING]: "Text",
|
||||||
options: "Dropdown",
|
[FieldType.OPTIONS]: "Dropdown",
|
||||||
datetime: "Date",
|
[FieldType.DATETIME]: "Date",
|
||||||
barcodeqr: "Camera",
|
[FieldType.BARCODEQR]: "Camera",
|
||||||
longform: "TextAlignLeft",
|
[FieldType.LONGFORM]: "TextAlignLeft",
|
||||||
array: "Dropdown",
|
[FieldType.ARRAY]: "Dropdown",
|
||||||
number: "123",
|
[FieldType.NUMBER]: "123",
|
||||||
boolean: "Boolean",
|
[FieldType.BOOLEAN]: "Boolean",
|
||||||
attachment: "AppleFiles",
|
[FieldType.ATTACHMENT]: "AppleFiles",
|
||||||
link: "DataCorrelated",
|
[FieldType.LINK]: "DataCorrelated",
|
||||||
formula: "Calculator",
|
[FieldType.FORMULA]: "Calculator",
|
||||||
json: "Brackets",
|
[FieldType.JSON]: "Brackets",
|
||||||
bigint: "TagBold",
|
[FieldType.BIGINT]: "TagBold",
|
||||||
bb_reference: {
|
[FieldType.BB_REFERENCE]: {
|
||||||
user: "User",
|
[FieldTypeSubtypes.BB_REFERENCE.USER]: "User",
|
||||||
users: "UserGroup",
|
[FieldTypeSubtypes.BB_REFERENCE.USERS]: "UserGroup",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue