From 546cf3cd5f40843d3a52ccab967424792f479e9b Mon Sep 17 00:00:00 2001 From: mertmit Date: Fri, 16 Sep 2022 16:29:45 +0300 Subject: [PATCH] fix(nc-gui): improved handling of dtxp/dtxs Signed-off-by: mertmit --- .../composables/useColumnCreateStore.ts | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/packages/nc-gui/composables/useColumnCreateStore.ts b/packages/nc-gui/composables/useColumnCreateStore.ts index ef6995df82..1d01368c63 100644 --- a/packages/nc-gui/composables/useColumnCreateStore.ts +++ b/packages/nc-gui/composables/useColumnCreateStore.ts @@ -109,20 +109,22 @@ const [useProvideColumnCreateStore, useColumnCreateStore] = createInjectionState } } - if (column.value?.uidt === UITypes.Currency) { + // keep length and scale for same datatype + if (column.value && formState.value.uidt === column.value?.uidt) { formState.value.dtxp = column.value.dtxp formState.value.dtxs = column.value.dtxs } else { - formState.value.dtxp = 19 - formState.value.dtxs = 2 + // default length and scale for currency + if (formState.value?.uidt === UITypes.Currency) { + formState.value.dtxp = 19 + formState.value.dtxs = 2 + } } formState.value.altered = formState.value.altered || 2 } const onDataTypeChange = () => { - const { isCurrency } = useColumn(ref(formState.value as ColumnType)) - formState.value.rqd = false if (formState.value.uidt !== UITypes.ID) { formState.value.primaryKey = false @@ -135,16 +137,19 @@ const [useProvideColumnCreateStore, useColumnCreateStore] = createInjectionState formState.value.dtx = 'specificType' + // use enum response as dtxp for select columns const selectTypes = [UITypes.MultiSelect, UITypes.SingleSelect] if (column.value && selectTypes.includes(formState.value.uidt) && selectTypes.includes(column.value.uidt as UITypes)) { formState.value.dtxp = column.value.dtxp } - if (isCurrency.value) { - if (column.value?.uidt === UITypes.Currency) { - formState.value.dtxp = column.value.dtxp - formState.value.dtxs = column.value.dtxs - } else { + // keep length and scale for same datatype + if (column.value && formState.value.uidt === column.value?.uidt) { + formState.value.dtxp = column.value.dtxp + formState.value.dtxs = column.value.dtxs + } else { + // default length and scale for currency + if (formState.value?.uidt === UITypes.Currency) { formState.value.dtxp = 19 formState.value.dtxs = 2 }