diff --git a/dbrepo-ui/api/index.js b/dbrepo-ui/api/index.js index 3050d758e88968c1cb5c25f8c056c426a9935538..ed74b41a8085364ff600214cba82c5ff62bc8efb 100644 --- a/dbrepo-ui/api/index.js +++ b/dbrepo-ui/api/index.js @@ -1,4 +1,5 @@ import axios from 'axios' +import Vue from 'vue' const baseUrl = `${location.protocol}//${location.host}` @@ -10,4 +11,13 @@ const instance = axios.create({ baseURL: baseUrl }) +function displayError (error, warning) { + const { code, message } = error.response.data + console.error(warning, error) + Vue.$toast.error(`[${code}] ${warning}: ${message}`) +} + export default instance +export { + displayError +} diff --git a/dbrepo-ui/api/semantic.service.js b/dbrepo-ui/api/semantic.service.js index 88c6b75388c4d51734ca282c968238d556240c83..662106eb5416aa2943c458f3cbcc797e89615e3e 100644 --- a/dbrepo-ui/api/semantic.service.js +++ b/dbrepo-ui/api/semantic.service.js @@ -1,5 +1,4 @@ -import Vue from 'vue' -import api from '@/api' +import api, { displayError } from '@/api' class SemanticService { findAllOntologies () { @@ -11,9 +10,7 @@ class SemanticService { resolve(ontologies) }) .catch((error) => { - const { code, message } = error.response.data - console.error('Failed to load ontologies', error) - Vue.$toast.error(`[${code}] Failed to load ontologies: ${message}`) + displayError(error, 'Failed to load ontologies') reject(error) }) }) @@ -28,9 +25,7 @@ class SemanticService { resolve(concepts) }) .catch((error) => { - const { code, message } = error.response.data - console.error('Failed to load concepts', error) - Vue.$toast.error(`[${code}] Failed to load concepts: ${message}`) + displayError(error, 'Failed to load concepts') reject(error) }) }) @@ -45,9 +40,7 @@ class SemanticService { resolve(concept) }) .catch((error) => { - const { code, message } = error.response.data - console.error('Failed to update concept', error) - Vue.$toast.error(`[${code}] Failed to update concept: ${message}`) + displayError(error, 'Failed to update concept') reject(error) }) }) @@ -62,9 +55,7 @@ class SemanticService { resolve(units) }) .catch((error) => { - const { code, message } = error.response.data - console.error('Failed to load units', error) - Vue.$toast.error(`[${code}] Failed to load units: ${message}`) + displayError(error, 'Failed to load units') reject(error) }) }) @@ -79,9 +70,7 @@ class SemanticService { resolve(unit) }) .catch((error) => { - const { code, message } = error.response.data - console.error('Failed to update unit', error) - Vue.$toast.error(`[${code}] Failed to update unit: ${message}`) + displayError(error, 'Failed to update unit') reject(error) }) }) @@ -96,9 +85,7 @@ class SemanticService { resolve(ontology) }) .catch((error) => { - const { code, message } = error.response.data - console.error('Failed to load ontology', error) - Vue.$toast.error(`[${code}] Failed to load ontology: ${message}`) + displayError(error, 'Failed to find ontology') reject(error) }) }) @@ -113,9 +100,7 @@ class SemanticService { resolve(ontology) }) .catch((error) => { - const { code, message } = error.response.data - console.error('Failed to register ontology', error) - Vue.$toast.error(`[${code}] Failed to register ontology: ${message}`) + displayError(error, 'Failed to register ontology') reject(error) }) }) @@ -130,9 +115,7 @@ class SemanticService { resolve(ontology) }) .catch((error) => { - const { code, message } = error.response.data - console.error('Failed to update ontology', error) - Vue.$toast.error(`[${code}] Failed to update ontology: ${message}`) + displayError(error, 'Failed to update ontology') reject(error) }) }) @@ -143,9 +126,7 @@ class SemanticService { api.delete(`/api/semantic/ontology/${id}`, { headers: { Accept: 'application/json' } }) .then(() => resolve()) .catch((error) => { - const { code, message } = error.response.data - console.error('Failed to delete ontology', error) - Vue.$toast.error(`[${code}] Failed to delete ontology: ${message}`) + displayError(error, 'Failed to unregister ontology') reject(error) }) }) @@ -160,9 +141,7 @@ class SemanticService { resolve(semantics) }) .catch((error) => { - const { code, message } = error.response.data - console.error('Failed to load table column semantics', error) - Vue.$toast.error(`[${code}] Failed to load table column semantics: ${message}`) + displayError(error, 'Failed to suggest table column semantic') reject(error) }) }) diff --git a/dbrepo-ui/pages/search/index.vue b/dbrepo-ui/pages/search/index.vue index e3ffd53d8f12494187a025c724c11e2860000243..20a0e24fcb10d60c8663acf6375957a3053c9369 100644 --- a/dbrepo-ui/pages/search/index.vue +++ b/dbrepo-ui/pages/search/index.vue @@ -137,6 +137,24 @@ export default { } return item.exchangeName !== undefined }, + isConcept (item) { + if (!item) { + return false + } + if ('_class' in item) { + return /at.tuwien.api.database.table.columns.concepts.ConceptDto/.test(item._class) + } + return false + }, + isUnit (item) { + if (!item) { + return false + } + if ('_class' in item) { + return /at.tuwien.api.database.table.columns.concepts.UnitDto/.test(item._class) + } + return false + }, isTable (item) { if (!item) { return false @@ -188,7 +206,7 @@ export default { return false }, title (item) { - if (this.isDatabase(item) || this.isTable(item) || this.isColumn(item) || this.isView(item)) { + if (this.isDatabase(item) || this.isTable(item) || this.isColumn(item) || this.isView(item) || this.isConcept(item) || this.isUnit(item)) { return item.name } else if (this.isIdentifier(item)) { return item.title @@ -196,16 +214,12 @@ export default { return null }, description (item) { - if (this.isDatabase(item)) { - return item.description - } else if (this.isTable(item)) { + if (this.isDatabase(item) || this.isTable(item) || this.isIdentifier(item) || this.isConcept(item) || this.isUnit(item)) { return item.description } else if (this.isColumn(item)) { return null } else if (this.isView(item)) { return item.query - } else if (this.isIdentifier(item)) { - return item.description } return false },