diff --git a/src/components/DBOverview.vue b/src/components/DBOverview.vue
index d1ad58b2c6ef4065a1d5150150681a2fb38cbed9..3588cddc524a26de09cce224cbe7aba3f554caf3 100644
--- a/src/components/DBOverview.vue
+++ b/src/components/DBOverview.vue
@@ -92,9 +92,7 @@ function injectStuff() {
//a.innerHTML = "fav"
el.addEventListener('click', e => {
classLabelClick(className)
- console.log('clicked on title of', className, e)
})
- console.log('inserted some html in', el)
})
}
}
diff --git a/src/components/MainView.vue b/src/components/MainView.vue
index 36d5588a646e528d6f45faa5d08dd0264d2e05e6..71491ecc539ae382a80b08d9c783be0003ae701b 100644
--- a/src/components/MainView.vue
+++ b/src/components/MainView.vue
@@ -9,7 +9,7 @@ import ExportView from "@/components/ExportView.vue";
import MapView from "@/components/MapView.vue";
import TableOverview from "@/components/TableOverview.vue";
import CreateVirtualView from "@/components/subcomponents/transform/CreateVirtualView.vue";
-import {useUIStore, tabs} from "@/services/uiStore";
+import {tabs, useUIStore} from "@/services/uiStore";
import {storeToRefs} from "pinia";
const constants = useConstantsStore()
@@ -33,6 +33,10 @@ const {tab} = storeToRefs(uiStore)
<v-col cols="9">
<v-sheet color="white">
<v-tabs v-model="tab" align-tabs="start" :items="tabs">
+ <template v-slot:tab="{item}">
+ <v-tab size="large" :key="item.key" :value="item.value" :prepend-icon="item.icon" :text="item.text">
+ </v-tab>
+ </template>
</v-tabs>
<v-tabs-window v-model="tab" class="fill-height">
<v-tabs-window-item value="db-overview" key="db-overview">
diff --git a/src/components/MapView.vue b/src/components/MapView.vue
index ae50689cb8a087b99ed43cfddb75531013ebe4a4..eb73d635d157bdc49640a7a733e051ae4b5b4674 100644
--- a/src/components/MapView.vue
+++ b/src/components/MapView.vue
@@ -229,11 +229,10 @@ async function onSubmit() {
dialog.value.show = true
}
-function recreate(cmEntry: ConceptMappingEntry) {
+function recreate(cm: ConceptMapping) {
console.log(`recreating concept mapping`)
- console.log(cmEntry)
+ console.log(cm)
- const cm = cmEntry.mapping
recreatedMapping.value = cm
selection.selectTable(anyTIDtoTID(cm.base_table))
concept.value = cm.concept
@@ -265,9 +264,12 @@ const expanded = ref([0])
</v-row>
<v-row class="fill-height" no-gutters>
<v-col cols="12">
- <v-card title="New Mapping" class="ma-2 pa-2">
+ <v-card title="Create Mapping" class="ma-2 pa-2">
+ <template v-slot:title><v-card-title>
+ Create Mapping to {{selectedMitM}}
+ </v-card-title></template>
<v-form @submit.prevent="onSubmit" ref="form">
- <v-select :items="conceptList" v-model="concept" label="Concept" :disabled="!!recreatedMapping"></v-select>
+ <v-select :items="conceptList" v-model="concept" label="Select Concept" :disabled="!!recreatedMapping" prepend-icon="mdi-puzzle-outline"></v-select>
<TableSelector v-model:selected-table="selectedTable" source-d-b="either"
:rules="[rules.required]" :disabled="!!recreatedMapping"></TableSelector>
diff --git a/src/components/StatusBar.vue b/src/components/StatusBar.vue
index c32a3accc2c9ecfe5b7d54e2a20c26393dfc705a..41a025fa195701f1f4bc15b983f633950f04b861 100644
--- a/src/components/StatusBar.vue
+++ b/src/components/StatusBar.vue
@@ -34,7 +34,7 @@ async function onResetAction() {
<v-app-bar-title>MitM Exporter</v-app-bar-title>
- <v-select class="pa-2 align-self-center flex-grow-0" :items="mitms" v-model="selectedMitM" variant="plain" hide-details>
+ <v-select class="pa-2 align-self-center justify-start flex-grow-0" :items="mitms" v-model="selectedMitM" variant="plain" label="MitM" hide-details>
</v-select>
<v-spacer></v-spacer>
diff --git a/src/components/subcomponents/map/MappingsTable.vue b/src/components/subcomponents/map/MappingsTable.vue
index 2189e6c25c36a3d7cfd901b7a7e8d96d85d73eb9..cdac89d81043cdf2059e633d6b3f11530396024e 100644
--- a/src/components/subcomponents/map/MappingsTable.vue
+++ b/src/components/subcomponents/map/MappingsTable.vue
@@ -6,6 +6,7 @@ import {storeToRefs} from "pinia";
import {DateTime} from "luxon";
import {useSelectionStore} from "@/services/selectionStore";
import {ConceptMappingEntry, useMappingStore} from "@/services/mappingStore";
+import {ConceptMapping} from "@/services/api";
const selection = useSelectionStore()
const mappings = useMappingStore()
@@ -26,7 +27,7 @@ const props = defineProps({
const mappingsSelection = defineModel("mappingsSelection", {required: false, type: Array, default: []})
-const emit = defineEmits<{ showMapping: ConceptMappingEntry }>()
+const emit = defineEmits<{ showMapping: [ConceptMapping] }>()
const mappingsHeaders = [
{title: "Actions", value: "control"},
@@ -36,12 +37,20 @@ const mappingsHeaders = [
{title: "Time Created", value: "timeCreated"}
]
-const mappingItems = ref([])
+const mappingItems = ref<{
+ mitm: string,
+ concept: string,
+ baseTable: string,
+ mapping: ConceptMapping,
+ timeCreated: string,
+ value: number,
+ key: number
+}[]>([])
watch(currentMappings.value, cms => {
mappingItems.value = cms.map((cm, i) => ({
mitm: cm.mapping.mitm,
- concept: cm.mapping.concept,
+ concept: cm.mapping.concept.toUpperCase(),
baseTable: tableIdToStr(anyTIDtoTID(cm.mapping.base_table)),
control: null,
mapping: cm.mapping,
@@ -56,6 +65,8 @@ watch(currentMappings.value, cms => {
<template>
<v-data-table v-model="mappingsSelection" :headers="mappingsHeaders" :items="mappingItems" select-strategy="all"
:show-select="props.showSelect" return-object hide-default-footer>
+ <template v-slot:[`header.concept`]><v-icon>mdi-puzzle-outline</v-icon> Concept</template>
+ <template v-slot:[`header.baseTable`]><v-icon>mdi-table</v-icon> Base Table</template>
<template v-slot:[`item.control`]="{item}">
<v-btn variant="text" density="comfortable" icon="mdi-delete"
@click.stop="mappings.removeMapping(item.value)"></v-btn>
@@ -63,7 +74,7 @@ watch(currentMappings.value, cms => {
@click.stop="mappings.downloadMapping(item.value)"></v-btn>
<template v-if="props.showView">
<v-btn variant="text" density="comfortable" icon="mdi-eye"
- @click.stop="emit('showMapping', item)"></v-btn>
+ @click.stop="emit('showMapping', item.mapping)"></v-btn>
</template>
</template>
</v-data-table>
diff --git a/src/services/mappingStore.ts b/src/services/mappingStore.ts
index 30799f7de2b9a8ea7dae1be302968c55fec23573..9d88c27fc06791b5135c0f5f3a138f58e4f85a8d 100644
--- a/src/services/mappingStore.ts
+++ b/src/services/mappingStore.ts
@@ -51,7 +51,7 @@ export const useMappingStore = defineStore('mappings', () => {
}
function clearMappings() {
- currentMappings.value = []
+ currentMappings.value.splice(0, currentMappings.value.length)
}
return {
diff --git a/src/services/uiStore.ts b/src/services/uiStore.ts
index 883b1b3293aa3986b94dc08031ea4a34feb193d1..99b8a56999aa4a340206adf1c473bb5ed6568b26 100644
--- a/src/services/uiStore.ts
+++ b/src/services/uiStore.ts
@@ -1,12 +1,12 @@
import {defineStore} from "pinia";
import {ref} from "vue";
-export const tabs: { text: string, value: string, key: string }[] = [
- {text: "DB Overview", value: "db-overview", key: "db-overview"},
- {text: "Table Overview", value: "table-overview", key: "table-overview"},
- {text: "Transform", value: "transform", key: "transform"},
- {text: "Map", value: "map", key: "map"},
- {text: "Export", value: "export", key: "export"}
+export const tabs: { text: string, value: string, key: string, icon?:string }[] = [
+ {text: "DB Overview", value: "db-overview", key: "db-overview", icon: "mdi-web"},
+ {text: "Table Overview", value: "table-overview", key: "table-overview", icon: "mdi-table"},
+ {text: "Transform", value: "transform", key: "transform", icon: "mdi-pencil"},
+ {text: "Map Concepts", value: "map", key: "map", icon: "mdi-puzzle-outline"},
+ {text: "Export", value: "export", key: "export", icon: "mdi-export"}
]
export const useUIStore = defineStore('uiState', () => {