diff --git a/dbrepo-analyse-service/api/dto.py b/dbrepo-analyse-service/api/dto.py index 319b06efa25b030e7638deca8fe6d0c72af065e6..59a387f5be4e4398dc4b60e34408189bb4f47b8e 100644 --- a/dbrepo-analyse-service/api/dto.py +++ b/dbrepo-analyse-service/api/dto.py @@ -44,7 +44,6 @@ class ColumnAnalysisDto(BaseModel): null_allowed: bool size: Optional[int] = None d: Optional[int] = None - dfid: Optional[int] = None enums: Optional[list] = None sets: Optional[list] = None diff --git a/dbrepo-analyse-service/determine_dt.py b/dbrepo-analyse-service/determine_dt.py index 0358929165f20d6c53ed5547525b113dc42964ba..dfc5fe17dde5460ad295616665bdd8024a8d594b 100644 --- a/dbrepo-analyse-service/determine_dt.py +++ b/dbrepo-analyse-service/determine_dt.py @@ -74,6 +74,8 @@ def determine_datatypes(filename, enum=False, enum_tol=0.0001, separator=',') -> if pandas.to_numeric(df[name], errors='coerce').notnull().all(): logging.debug(f"mapped column {name} from float64 to decimal") col.type = DataTypeDto.DECIMAL + col.size = 40 + col.d = 20 else: logging.debug(f"mapped column {name} from float64 to text") col.type = DataTypeDto.TEXT diff --git a/dbrepo-analyse-service/test/test_determine_dt.py b/dbrepo-analyse-service/test/test_determine_dt.py index 4be9e331d699649dc943bb75b25fdb5c657c93ce..a6e032384b4256b441be05cb94fb14369e8d0baf 100644 --- a/dbrepo-analyse-service/test/test_determine_dt.py +++ b/dbrepo-analyse-service/test/test_determine_dt.py @@ -36,6 +36,8 @@ class DetermineDatatypesTest(unittest.TestCase): }, "Wert": { "type": "decimal", + "size": 40, + "d": 20, "null_allowed": False, }, "Status": { @@ -81,6 +83,8 @@ class DetermineDatatypesTest(unittest.TestCase): }, "Wert": { "type": "decimal", + "size": 40, + "d": 20, "null_allowed": False, }, "Status": { @@ -125,6 +129,8 @@ class DetermineDatatypesTest(unittest.TestCase): }, "Wert": { "type": "decimal", + "size": 40, + "d": 20, "null_allowed": False, }, "Status": { @@ -149,6 +155,8 @@ class DetermineDatatypesTest(unittest.TestCase): }, "float": { "type": "decimal", + "size": 40, + "d": 20, "null_allowed": False, }, "string": { diff --git a/dbrepo-ui/bun.lockb b/dbrepo-ui/bun.lockb index 20aecae3f32b90faac1b0e97a01889f10f5c9aa7..b82e45d505fdc0e1f41e246f7d1caefe3e23007c 100755 Binary files a/dbrepo-ui/bun.lockb and b/dbrepo-ui/bun.lockb differ diff --git a/dbrepo-ui/components/table/TableSchema.vue b/dbrepo-ui/components/table/TableSchema.vue index 57169a95fa1af760389723064b098d079547d9f4..7fbce1b6ece69fc0da226f75ba4a9cf659c1ee70 100644 --- a/dbrepo-ui/components/table/TableSchema.vue +++ b/dbrepo-ui/components/table/TableSchema.vue @@ -4,6 +4,16 @@ ref="form" v-model="valid" :disabled="disabled"> + <v-row + v-if="showPrimaryKeyWarning"> + <v-col md="8"> + <v-alert + border="start" + color="warning"> + {{ $t('pages.table.subpages.import.schema.primary.warn') }} + </v-alert> + </v-col> + </v-row> <v-row v-for="(c, idx) in columns" :key="`r-${idx}`" @@ -79,7 +89,6 @@ :min="columnType(c).size_min" :max="columnType(c).size_max" :step="columnType(c).size_step" - :value="columnType(c).size_required === true ? columnType(c).size_default : null" :hint="sizeHint(c)" :clearable="!columnType(c).size_required" persistent-hint @@ -163,16 +172,6 @@ @click="addColumn()" /> </v-col> </v-row> - <v-row - v-if="showPrimaryKeyWarning"> - <v-col md="8"> - <v-alert - border="start" - color="warning"> - {{ $t('pages.table.subpages.import.schema.primary.warn') }} - </v-alert> - </v-col> - </v-row> <v-row> <v-col> <v-btn @@ -300,7 +299,7 @@ export default { this.columns.splice(idx, 1) }, addColumn (name = '', type = null, null_allowed = true, primary_key = false, unique = false) { - this.columns.push({ + const column = { name, type, null_allowed, @@ -309,9 +308,10 @@ export default { sets_values: null, enums: [], enums_values: null, - size: 0, d: 0 - }) + } + column.size = this.columnType(column).size_required === true ? this.columnType(column).size_default : null + this.columns.push() this.$refs.form.validate() }, formatValues (column) { diff --git a/dbrepo-ui/locales/en-US.json b/dbrepo-ui/locales/en-US.json index 46ab9b93a4466d78671b08dc78ef091a8c267d87..67d8d749e36151e2804ee7ee5f1e770af8799b89 100644 --- a/dbrepo-ui/locales/en-US.json +++ b/dbrepo-ui/locales/en-US.json @@ -370,7 +370,7 @@ "hint": "Required. First line contains only data" }, "storage": { - "text": "Dataset from Storage Service" + "text": "Uploaded Dataset" }, "quote": { "label": "Quote Encoding", diff --git a/dbrepo-ui/nuxt.config.ts b/dbrepo-ui/nuxt.config.ts index be6fb2940f66b5ae026427b7a4eae964d05fa714..8b2d381fd799da7b2d7a6513dbdf51a447a84326 100644 --- a/dbrepo-ui/nuxt.config.ts +++ b/dbrepo-ui/nuxt.config.ts @@ -1,4 +1,5 @@ import {transformAssetUrls} from 'vite-plugin-vuetify' +import vuetify from 'vite-plugin-vuetify' const proxy: any = {} @@ -117,7 +118,12 @@ export default defineNuxtConfig({ '@artmizu/nuxt-prometheus', '@nuxtjs/i18n', '@pinia/nuxt', - '@pinia-plugin-persistedstate/nuxt' + '@pinia-plugin-persistedstate/nuxt', + async (options, nuxt) => { + nuxt.hooks.hook('vite:extendConfig', config => config.plugins.push( + vuetify() + )) + }, ], pinia: { diff --git a/dbrepo-ui/package.json b/dbrepo-ui/package.json index 5af18adf4d6bd4c58e0e1e89fdf02b8937bb05b3..856f56f4f0294cbc555f7d8d0a3d2e931d45ea58 100644 --- a/dbrepo-ui/package.json +++ b/dbrepo-ui/package.json @@ -45,7 +45,7 @@ "@pinia-plugin-persistedstate/nuxt": "^1.2.0", "@types/qs": "^6.9.12", "sass": "^1.71.0", - "vite-plugin-vuetify": "^2.0.1" + "vite-plugin-vuetify": "^2.0.4" }, "browserslist": [ "defaults and fully supports es6-module", diff --git a/dbrepo-ui/pages/login.vue b/dbrepo-ui/pages/login.vue index 9a412a0b47c4de9bf642f4a8820f41593ef0f960..8a35efe59da3aa75da3ec5f23e4800fe92ea99ef 100644 --- a/dbrepo-ui/pages/login.vue +++ b/dbrepo-ui/pages/login.vue @@ -137,18 +137,12 @@ export default { }) .catch(({code}) => { const toast = useToastInstance() - if (typeof code !== 'string') { - return - } toast.error(this.$t(code)) }) }) .catch(({code}) => { this.loading = false const toast = useToastInstance() - if (typeof code !== 'string') { - return - } toast.error(this.$t(code)) }) .finally(() => { diff --git a/dbrepo-ui/plugins/vuetify.ts b/dbrepo-ui/plugins/vuetify.ts index e942e529f50cbb6f7eddd9d63080a751006aaa94..39a5f8c75a34122bf997ccbe8bb9c7144d51c189 100644 --- a/dbrepo-ui/plugins/vuetify.ts +++ b/dbrepo-ui/plugins/vuetify.ts @@ -1,10 +1,8 @@ // plugins/vuetify.js import { createVuetify, type ThemeDefinition } from 'vuetify' import colors from 'vuetify/util/colors' -import * as components from 'vuetify/components' import * as directives from 'vuetify/directives' import '@mdi/font/css/materialdesignicons.css' -import {rgbParse} from "@kurkle/color"; const tuwThemeLight: ThemeDefinition = { dark: false, @@ -77,7 +75,6 @@ const tuwThemeDarkContrast: ThemeDefinition = { export default defineNuxtPlugin(app => { const vuetify : any = createVuetify({ ssr: true, - components, directives, defaults: { VSelect: { diff --git a/dbrepo-ui/utils/index.ts b/dbrepo-ui/utils/index.ts index 95380474e1ad2608c2862ec3414eca0d8d7f7a67..4f30d8953405445c152dee0b6afd4dc6b44cba3a 100644 --- a/dbrepo-ui/utils/index.ts +++ b/dbrepo-ui/utils/index.ts @@ -1056,17 +1056,9 @@ export function axiosErrorToApiError(error: AxiosError): ApiErrorDto { message: error.message } return errorObj - } else if (error.code === 'ERR_BAD_REQUEST') { - /* timeout */ - const errorObj: ApiErrorDto = { - status: error.code, - code: 'error.axios.malformed', - message: error.message - } - return errorObj } - if (error.response?.data) { - const errorObj: ApiErrorDto = (error.response?.data as ApiErrorDto) + if ('data' in error.response) { + const errorObj: ApiErrorDto = (error.response.data as ApiErrorDto) return errorObj } const errorObj: ApiErrorDto = {