diff --git a/app/src/interfaces/_system/system-field/system-field.vue b/app/src/interfaces/_system/system-field/system-field.vue index 0b18b6a4bd..abf4a6bc32 100644 --- a/app/src/interfaces/_system/system-field/system-field.vue +++ b/app/src/interfaces/_system/system-field/system-field.vue @@ -51,6 +51,10 @@ export default defineComponent({ type: Boolean, default: false, }, + allowPrimaryKey: { + type: Boolean, + default: false, + }, }, setup(props) { const fieldsStore = useFieldsStore(); @@ -66,7 +70,7 @@ export default defineComponent({ fields.value.map((field: Field) => { let disabled = false; - if (field?.schema?.is_primary_key === true) disabled = true; + if (props.allowPrimaryKey === false && field?.schema?.is_primary_key === true) disabled = true; if (props.typeAllowList.length > 0 && props.typeAllowList.includes(field.type) === false) disabled = true; return { diff --git a/app/src/panels/metric/index.ts b/app/src/panels/metric/index.ts index c07c518911..8de6e6dd06 100644 --- a/app/src/panels/metric/index.ts +++ b/app/src/panels/metric/index.ts @@ -26,6 +26,7 @@ export default definePanel({ options: { collectionField: 'collection', typeAllowList: ['integer', 'bigInteger', 'float', 'decimal'], + allowPrimaryKey: true, }, width: 'half', },