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.
73 lines
2.1 KiB
73 lines
2.1 KiB
2 years ago
|
import { SqlUiFactory, UITypes, isVirtualCol, ColumnType } from "nocodb-sdk";
|
||
|
import useProject from "~/composables/useProject";
|
||
|
|
||
|
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 isSet = 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
|
||
|
};
|
||
|
};
|