Browse Source

fix: missing setup for barcode & qr columns (#8829)

pull/8832/head
Mert E 2 weeks ago committed by GitHub
parent
commit
69466209fd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 5
      packages/nc-gui/components/smartsheet/column/BarcodeOptions.vue
  2. 5
      packages/nc-gui/components/smartsheet/column/QrCodeOptions.vue
  3. 8
      packages/nc-gui/components/virtual-cell/QrCode.vue
  4. 10
      packages/nc-gui/components/virtual-cell/barcode/Barcode.vue
  5. 12
      packages/nocodb/src/db/BaseModelSqlv2.ts

5
packages/nc-gui/components/smartsheet/column/BarcodeOptions.vue

@ -12,7 +12,7 @@ const { fields, metaColumnById } = useViewColumnsOrThrow()
const vModel = useVModel(props, 'modelValue', emit)
const { setAdditionalValidations, validateInfos, column } = useColumnCreateStoreOrThrow()
const { setAdditionalValidations, validateInfos, column, isEdit } = useColumnCreateStoreOrThrow()
const { t } = useI18n()
@ -36,7 +36,8 @@ onMounted(() => {
...(vModel.value.meta || {}),
}
vModel.value.fk_barcode_value_column_id =
(column?.value?.colOptions as Record<string, any>)?.fk_barcode_value_column_id || columnsAllowedAsBarcodeValue.value?.[0]?.id
(column?.value?.colOptions as Record<string, any>)?.fk_barcode_value_column_id ||
(!isEdit ? columnsAllowedAsBarcodeValue.value?.[0]?.id : null)
})
watch(columnsAllowedAsBarcodeValue, (newColumnsAllowedAsBarcodeValue) => {

5
packages/nc-gui/components/smartsheet/column/QrCodeOptions.vue

@ -14,7 +14,7 @@ const { fields, metaColumnById } = useViewColumnsOrThrow()
const vModel = useVModel(props, 'modelValue', emit)
const { setAdditionalValidations, validateInfos, column } = useColumnCreateStoreOrThrow()
const { setAdditionalValidations, validateInfos, column, isEdit } = useColumnCreateStoreOrThrow()
const columnsAllowedAsQrValue = computed<ColumnType[]>(() => {
return (
@ -32,7 +32,8 @@ const columnsAllowedAsQrValue = computed<ColumnType[]>(() => {
onMounted(() => {
// set default value
vModel.value.fk_qr_value_column_id =
(column?.value?.colOptions as Record<string, any>)?.fk_qr_value_column_id || columnsAllowedAsQrValue.value?.[0]?.id
(column?.value?.colOptions as Record<string, any>)?.fk_qr_value_column_id ||
(!isEdit ? columnsAllowedAsQrValue.value?.[0]?.id : null)
})
setAdditionalValidations({

8
packages/nc-gui/components/virtual-cell/QrCode.vue

@ -12,7 +12,7 @@ const isExpandedFormOpen = inject(IsExpandedFormOpenInj, ref(false))
const tooManyCharsForQrCode = computed(() => qrValue?.value.length > maxNumberOfAllowedCharsForQrValue)
const showQrCode = computed(() => qrValue?.value?.length > 0 && !tooManyCharsForQrCode.value)
const showQrCode = computed(() => qrValue?.value?.length > 0 && !tooManyCharsForQrCode.value && qrValue?.value !== 'ERR!')
const qrCodeOptions: QRCode.QRCodeToDataURLOptions = {
errorCorrectionLevel: 'M',
@ -102,4 +102,10 @@ const { showEditNonEditableFieldWarning, showClearNonEditableFieldWarning } = us
<div v-if="showClearNonEditableFieldWarning" class="text-left text-wrap mt-2 text-[#e65100] text-xs">
{{ $t('msg.warning.nonEditableFields.qrFieldsCannotBeDirectlyChanged') }}
</div>
<a-tooltip v-else-if="!showQrCode && qrValue === 'ERR!'" placement="bottom" class="text-orange-700">
<template #title>
<span class="font-bold">Please select a target field!</span>
</template>
<span>ERR!</span>
</a-tooltip>
</template>

10
packages/nc-gui/components/virtual-cell/barcode/Barcode.vue

@ -29,7 +29,9 @@ const barcodeMeta = computed(() => {
const handleModalOkClick = () => (modalVisible.value = false)
const showBarcode = computed(() => barcodeValue?.value.length > 0 && !tooManyCharsForBarcode.value)
const showBarcode = computed(
() => barcodeValue?.value.length > 0 && !tooManyCharsForBarcode.value && barcodeValue?.value !== 'ERR!',
)
const { showEditNonEditableFieldWarning, showClearNonEditableFieldWarning } = useShowNotEditableWarning()
@ -89,6 +91,12 @@ const rowHeight = inject(RowHeightInj, ref(undefined))
</div>
</template>
</JsBarcodeWrapper>
<a-tooltip v-else-if="!showBarcode && barcodeValue === 'ERR!'" placement="bottom" class="text-orange-700">
<template #title>
<span class="font-bold">Please select a target field!</span>
</template>
<span>ERR!</span>
</a-tooltip>
</div>
<div v-if="tooManyCharsForBarcode" class="nc-cell-field text-left text-wrap text-[#e65100] text-xs">

12
packages/nocodb/src/db/BaseModelSqlv2.ts

@ -2948,6 +2948,12 @@ class BaseModelSqlv2 {
const qrCodeColumn = await column.getColOptions<QrCodeColumn>(
this.context,
);
if (!qrCodeColumn.fk_qr_value_column_id) {
qb.select(this.dbDriver.raw(`? as ??`, ['ERR!', column.id]));
break;
}
const qrValueColumn = await Column.get(this.context, {
colId: qrCodeColumn.fk_qr_value_column_id,
});
@ -2985,6 +2991,12 @@ class BaseModelSqlv2 {
const barcodeColumn = await column.getColOptions<BarcodeColumn>(
this.context,
);
if (!barcodeColumn.fk_barcode_value_column_id) {
qb.select(this.dbDriver.raw(`? as ??`, ['ERR!', column.id]));
break;
}
const barcodeValueColumn = await Column.get(this.context, {
colId: barcodeColumn.fk_barcode_value_column_id,
});

Loading…
Cancel
Save