diff --git a/packages/nc-gui/components.d.ts b/packages/nc-gui/components.d.ts index 27bc7d0255..4b394ef476 100644 --- a/packages/nc-gui/components.d.ts +++ b/packages/nc-gui/components.d.ts @@ -27,6 +27,7 @@ declare module '@vue/runtime-core' { AForm: typeof import('ant-design-vue/es')['Form'] AFormItem: typeof import('ant-design-vue/es')['FormItem'] AInput: typeof import('ant-design-vue/es')['Input'] + AInputGroup: typeof import('ant-design-vue/es')['InputGroup'] AInputNumber: typeof import('ant-design-vue/es')['InputNumber'] AInputPassword: typeof import('ant-design-vue/es')['InputPassword'] AInputSearch: typeof import('ant-design-vue/es')['InputSearch'] diff --git a/packages/nc-gui/components/cell/GeoData.vue b/packages/nc-gui/components/cell/GeoData.vue new file mode 100644 index 0000000000..0e827b3a78 --- /dev/null +++ b/packages/nc-gui/components/cell/GeoData.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/packages/nc-gui/components/smartsheet/Cell.vue b/packages/nc-gui/components/smartsheet/Cell.vue index 2ed187af22..d3907e7f6b 100644 --- a/packages/nc-gui/components/smartsheet/Cell.vue +++ b/packages/nc-gui/components/smartsheet/Cell.vue @@ -71,6 +71,7 @@ const { isURL, isEmail, isJSON, + isGeoData, isDate, isYear, isDateTime, @@ -130,6 +131,9 @@ const syncAndNavigate = (dir: NavigateDir, e: KeyboardEvent) => { @keydown.shift.enter.exact="syncAndNavigate(NavigateDir.PREV, $event)" > + + @@ -151,6 +155,7 @@ const syncAndNavigate = (dir: NavigateDir, e: KeyboardEvent) => { +
diff --git a/packages/nc-gui/components/smartsheet/header/CellIcon.vue b/packages/nc-gui/components/smartsheet/header/CellIcon.vue index bf15561afa..b0ffaa7396 100644 --- a/packages/nc-gui/components/smartsheet/header/CellIcon.vue +++ b/packages/nc-gui/components/smartsheet/header/CellIcon.vue @@ -24,6 +24,7 @@ import PercentIcon from '~icons/mdi/percent-outline' import DecimalIcon from '~icons/mdi/decimal' import SpecificDBTypeIcon from '~icons/mdi/database-settings' import DurationIcon from '~icons/mdi/timer-outline' +import GeoDataIcon from '~icons/mdi/map-marker' const props = defineProps<{ columnMeta?: ColumnType }>() @@ -38,6 +39,8 @@ const icon = computed(() => { return KeyIcon } else if (additionalColMeta.isJSON.value) { return JSONIcon + } else if (additionalColMeta.isGeoData.value) { + return GeoDataIcon } else if (additionalColMeta.isDate.value) { return CalendarIcon } else if (additionalColMeta.isDateTime.value) { diff --git a/packages/nc-gui/composables/useColumn.ts b/packages/nc-gui/composables/useColumn.ts index a481e227a0..8ac74fcdbf 100644 --- a/packages/nc-gui/composables/useColumn.ts +++ b/packages/nc-gui/composables/useColumn.ts @@ -28,6 +28,7 @@ export function useColumn(column: Ref) { const isTime = computed(() => abstractType.value === 'time' || uiDatatype.value === UITypes.Time) const isDateTime = computed(() => abstractType.value === 'datetime' || uiDatatype.value === UITypes.DateTime) const isJSON = computed(() => uiDatatype.value === UITypes.JSON) + const isGeoData = computed(() => uiDatatype.value === UITypes.GeoData) const isEnum = computed(() => uiDatatype.value === UITypes.SingleSelect) const isSingleSelect = computed(() => uiDatatype.value === UITypes.SingleSelect) const isSet = computed(() => uiDatatype.value === UITypes.MultiSelect) @@ -56,6 +57,7 @@ export function useColumn(column: Ref) { UITypes.AutoNumber, UITypes.SpecificDBType, UITypes.Geometry, + UITypes.GeoData, UITypes.Duration, ].includes(uiDatatype.value), ) @@ -76,6 +78,7 @@ export function useColumn(column: Ref) { isTime, isDateTime, isJSON, + isGeoData, isEnum, isSet, isURL, diff --git a/packages/nc-gui/lang/en.json b/packages/nc-gui/lang/en.json index 4eae80a370..300dcc88b2 100644 --- a/packages/nc-gui/lang/en.json +++ b/packages/nc-gui/lang/en.json @@ -130,6 +130,7 @@ "Currency": "Currency", "Percent": "Percent", "Duration": "Duration", + "GeoData": "GeoData", "Rating": "Rating", "Formula": "Formula", "Rollup": "Rollup", diff --git a/packages/nc-gui/utils/columnUtils.ts b/packages/nc-gui/utils/columnUtils.ts index e6dbf29861..922056ae95 100644 --- a/packages/nc-gui/utils/columnUtils.ts +++ b/packages/nc-gui/utils/columnUtils.ts @@ -7,6 +7,7 @@ import TextSubject from '~icons/mdi/text-subject' import JSONIcon from '~icons/mdi/code-json' import SpecificDBTypeIcon from '~icons/mdi/database-settings' import Attachment from '~icons/mdi/attachment' +import Marker from '~icons/mdi/map-marker' import CheckboxMarkedOutline from '~icons/mdi/checkbox-marked-outline' import FormatListBulletedSquare from '~icons/mdi/format-list-bulleted-square' import ArrowDownDropCircle from '~icons/mdi/arrow-down-drop-circle' @@ -138,6 +139,11 @@ const uiTypes = [ name: UITypes.Geometry, icon: RulerSquareCompass, }, + + { + name: UITypes.GeoData, + icon: Marker, + }, { name: UITypes.JSON, icon: JSONIcon, diff --git a/packages/nocodb-sdk/src/lib/Api.ts b/packages/nocodb-sdk/src/lib/Api.ts index 3334615873..af4f34e42e 100644 --- a/packages/nocodb-sdk/src/lib/Api.ts +++ b/packages/nocodb-sdk/src/lib/Api.ts @@ -595,6 +595,7 @@ export type ColumnReqType = | 'Year' | 'Time' | 'PhoneNumber' + | 'GeoData' | 'Email' | 'URL' | 'Number' diff --git a/packages/nocodb-sdk/src/lib/UITypes.ts b/packages/nocodb-sdk/src/lib/UITypes.ts index d2834416fe..f65dfe666d 100644 --- a/packages/nocodb-sdk/src/lib/UITypes.ts +++ b/packages/nocodb-sdk/src/lib/UITypes.ts @@ -16,6 +16,7 @@ enum UITypes { Year = 'Year', Time = 'Time', PhoneNumber = 'PhoneNumber', + GeoData = 'GeoData', Email = 'Email', URL = 'URL', Number = 'Number', diff --git a/packages/nocodb-sdk/src/lib/XcUIBuilder.ts b/packages/nocodb-sdk/src/lib/XcUIBuilder.ts index b01ad80362..b272b8debc 100644 --- a/packages/nocodb-sdk/src/lib/XcUIBuilder.ts +++ b/packages/nocodb-sdk/src/lib/XcUIBuilder.ts @@ -22,6 +22,7 @@ enum XcType { Year = 'Year', Time = 'Time', PhoneNumber = 'PhoneNumber', + GeoData = 'GeoData', Email = 'Email', URL = 'URL', Number = 'Number', diff --git a/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts b/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts index 3f2f84b26f..de8dd5de53 100644 --- a/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts +++ b/packages/nocodb-sdk/src/lib/sqlUi/MssqlUi.ts @@ -1095,6 +1095,9 @@ export class MssqlUi { case 'Collaborator': colProp.dt = 'varchar'; break; + case 'GeoData': + colProp.dt = 'varchar'; + break; case 'Date': colProp.dt = 'varchar'; @@ -1249,6 +1252,9 @@ export class MssqlUi { case 'Decimal': return ['decimal', 'float']; + case 'GeoData': + return ['decimal', 'float']; + case 'Currency': return [ 'int', diff --git a/scripts/sdk/swagger.json b/scripts/sdk/swagger.json index d218fa9b28..c2861be9bb 100644 --- a/scripts/sdk/swagger.json +++ b/scripts/sdk/swagger.json @@ -8726,6 +8726,7 @@ "Year", "Time", "PhoneNumber", + "GeoData", "Email", "URL", "Number",