mirror of https://github.com/nocodb/nocodb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.2 KiB
74 lines
2.2 KiB
import type { ColumnType } from 'nocodb-sdk' |
|
import { SqlUiFactory, UITypes, isVirtualCol } from 'nocodb-sdk' |
|
import { useProject } from '#imports' |
|
|
|
export default (column: ColumnType) => { |
|
const { project } = useProject() |
|
|
|
const uiDatatype: UITypes = (column && column.uidt) as UITypes |
|
const abstractType = isVirtualCol(column) |
|
? null |
|
: SqlUiFactory.create(project.value?.bases?.[0]?.config || { client: 'mysql2' }).getAbstractType(column) |
|
|
|
const dataTypeLow = column && column.dt && column.dt.toLowerCase() |
|
const isBoolean = abstractType === 'boolean' |
|
const isString = abstractType === 'string' |
|
const isTextArea = uiDatatype === UITypes.LongText |
|
const isInt = abstractType === 'integer' |
|
const isFloat = abstractType === 'float' |
|
const isDate = abstractType === 'date' || uiDatatype === 'Date' |
|
const isTime = abstractType === 'time' || uiDatatype === 'Time' |
|
const isDateTime = abstractType === 'datetime' || uiDatatype === 'DateTime' |
|
const isJSON = uiDatatype === 'JSON' |
|
const isEnum = uiDatatype === 'SingleSelect' |
|
const isSingleSelect = uiDatatype === 'SingleSelect' |
|
const isSet = uiDatatype === 'MultiSelect' |
|
const isMultiSelect = uiDatatype === 'MultiSelect' |
|
const isURL = uiDatatype === 'URL' |
|
const isEmail = uiDatatype === UITypes.Email |
|
const isAttachment = uiDatatype === 'Attachment' |
|
const isRating = uiDatatype === UITypes.Rating |
|
const isCurrency = uiDatatype === 'Currency' |
|
const isDuration = uiDatatype === UITypes.Duration |
|
const isAutoSaved = [ |
|
UITypes.SingleLineText, |
|
UITypes.LongText, |
|
UITypes.PhoneNumber, |
|
UITypes.Email, |
|
UITypes.URL, |
|
UITypes.Number, |
|
UITypes.Decimal, |
|
UITypes.Percent, |
|
UITypes.Count, |
|
UITypes.AutoNumber, |
|
UITypes.SpecificDBType, |
|
UITypes.Geometry, |
|
].includes(uiDatatype) |
|
const isManualSaved = [UITypes.Currency, UITypes.Year, UITypes.Time, UITypes.Duration].includes(uiDatatype) |
|
|
|
return { |
|
abstractType, |
|
dataTypeLow, |
|
isBoolean, |
|
isString, |
|
isTextArea, |
|
isInt, |
|
isFloat, |
|
isDate, |
|
isTime, |
|
isDateTime, |
|
isJSON, |
|
isEnum, |
|
isSet, |
|
isURL, |
|
isEmail, |
|
isAttachment, |
|
isRating, |
|
isCurrency, |
|
isDuration, |
|
isAutoSaved, |
|
isManualSaved, |
|
isSingleSelect, |
|
isMultiSelect, |
|
} |
|
}
|
|
|