diff --git a/app/src/lang/en-US/index.json b/app/src/lang/en-US/index.json
index 7b17751c38..f79cc6c65e 100644
--- a/app/src/lang/en-US/index.json
+++ b/app/src/lang/en-US/index.json
@@ -373,6 +373,8 @@
"primary_key_field": "Primary Key Field",
"type": "Type",
"number": "Number",
+ "true": "True",
+ "false": "False",
"creating_new_collection": "Creating New Collection",
"status": "Status",
"sort": "Sort",
diff --git a/app/src/modules/settings/routes/data-model/field-detail/components/schema.vue b/app/src/modules/settings/routes/data-model/field-detail/components/schema.vue
index 7e2a4a0d82..efefa247c8 100644
--- a/app/src/modules/settings/routes/data-model/field-detail/components/schema.vue
+++ b/app/src/modules/settings/routes/data-model/field-detail/components/schema.vue
@@ -40,9 +40,47 @@
-
+
{{ $t('default_value') }}
-
+
+
+
+
+
+
@@ -165,39 +203,37 @@ export default defineComponent({
const default_value = computed({
get() {
- switch (state.fieldData.type) {
- case 'boolean':
- return String(state.fieldData.schema.default_value || false);
- default:
- return state.fieldData.schema.default_value;
- }
+ return state.fieldData.schema.default_value;
},
- set(newVal: string) {
- switch (state.fieldData.type) {
- case 'boolean':
- state.fieldData.schema.default_value = Boolean(newVal);
- default:
- return state.fieldData.schema.default_value;
- }
+ set(newVal: any) {
+ state.fieldData.schema.default_value = newVal;
},
});
- return { fieldData: state.fieldData, typesWithLabels, setType, typeDisabled, typePlaceholder, default_value };
+ const default_type = computed(() => {
+ if (['integer', 'bigInteger', 'float', 'decimal'].includes(state.fieldData.type)) return 'number';
+ else if (['string', 'uuid'].includes(state.fieldData.type)) {
+ return 'string';
+ } else if (['timestamp', 'datetime', 'date', 'time'].includes(state.fieldData.type)) {
+ return 'datetime';
+ } else {
+ return state.fieldData.type;
+ }
+ });
+
+ return {
+ fieldData: state.fieldData,
+ typesWithLabels,
+ setType,
+ typeDisabled,
+ typePlaceholder,
+ default_value,
+ default_type,
+ };
function setType(value: typeof types[number]) {
- switch (value) {
- case 'uuid':
- state.fieldData.meta.special = 'uuid';
- break;
- case 'json':
- state.fieldData.meta.special = 'json';
- break;
- case 'boolean':
- state.fieldData.meta.special = 'boolean';
- state.fieldData.schema.is_nullable = false;
- break;
- default:
- state.fieldData.meta.special = null;
+ if (value === 'uuid') {
+ state.fieldData.meta.special = 'uuid';
}
// We'll reset the interface/display as they most likely won't work for the newly selected
@@ -206,6 +242,7 @@ export default defineComponent({
state.fieldData.meta.options = null;
state.fieldData.meta.display = null;
state.fieldData.meta.display_options = null;
+ state.fieldData.schema.default_value = undefined;
state.fieldData.type = value;
}
},
diff --git a/app/src/modules/settings/routes/data-model/field-detail/store.ts b/app/src/modules/settings/routes/data-model/field-detail/store.ts
index 52cea1d8ac..7e9b6b935f 100644
--- a/app/src/modules/settings/routes/data-model/field-detail/store.ts
+++ b/app/src/modules/settings/routes/data-model/field-detail/store.ts
@@ -291,6 +291,25 @@ function initLocalStore(
delete state.fieldData.type;
state.fieldData.meta.special = 'alias';
}
+
+ if (type === 'standard') {
+ watch(
+ () => state.fieldData.type,
+ () => {
+ switch (state.fieldData.type) {
+ case 'json':
+ state.fieldData.meta.special = 'json';
+ break;
+ case 'boolean':
+ state.fieldData.meta.special = 'boolean';
+ state.fieldData.schema.is_nullable = false;
+ break;
+ default:
+ state.fieldData.meta.special = null;
+ }
+ }
+ );
+ }
}
function clearLocalStore() {