Skip to content
Snippets Groups Projects
Verified Commit 926683fd authored by Martin Weise's avatar Martin Weise
Browse files

Update layout and added recent on start page

parent 8a3184f5
Branches
Tags
4 merge requests!231CI: Remove build for log-service,!228Better error message handling in the frontend,!223Release of version 1.4.0,!215Resolve "Fix the unit independent search"
...@@ -13,6 +13,7 @@ import lombok.extern.jackson.Jacksonized; ...@@ -13,6 +13,7 @@ import lombok.extern.jackson.Jacksonized;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Transient;
import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType; import org.springframework.data.elasticsearch.annotations.FieldType;
...@@ -36,6 +37,10 @@ public class TableDto { ...@@ -36,6 +37,10 @@ public class TableDto {
@Field(name = "id", type = FieldType.Keyword) @Field(name = "id", type = FieldType.Keyword)
private Long id; private Long id;
@NotNull
@Field(name = "database_id", type = FieldType.Keyword)
private Long tdbid;
@NotNull @NotNull
@org.springframework.data.annotation.Transient @org.springframework.data.annotation.Transient
private DatabaseDto database; private DatabaseDto database;
......
...@@ -59,7 +59,6 @@ public interface TableMapper { ...@@ -59,7 +59,6 @@ public interface TableMapper {
TableBriefDto tableToTableBriefDto(Table data); TableBriefDto tableToTableBriefDto(Table data);
@Mappings({ @Mappings({
@Mapping(source = "id", target = "id"),
@Mapping(target = "name", expression = "java(data.getName())"), @Mapping(target = "name", expression = "java(data.getName())"),
@Mapping(target = "internalName", expression = "java(data.getInternalName())"), @Mapping(target = "internalName", expression = "java(data.getInternalName())"),
@Mapping(target = "queueName", expression = "java(data.getQueueName())"), @Mapping(target = "queueName", expression = "java(data.getQueueName())"),
......
...@@ -245,6 +245,7 @@ public class IndexConfigComponentTest extends BaseUnitTest { ...@@ -245,6 +245,7 @@ public class IndexConfigComponentTest extends BaseUnitTest {
.getMapping(new GetMappingsRequest().indices("table"), RequestOptions.DEFAULT); .getMapping(new GetMappingsRequest().indices("table"), RequestOptions.DEFAULT);
final Map<String, String> types = getTypes("table", response); final Map<String, String> types = getTypes("table", response);
assertEquals("keyword", types.get("id")); assertEquals("keyword", types.get("id"));
assertEquals("keyword", types.get("database_id"));
assertNull(types.get("database")); assertNull(types.get("database"));
assertEquals("keyword", types.get("name")); assertEquals("keyword", types.get("name"));
assertEquals("keyword", types.get("internal_name")); assertEquals("keyword", types.get("internal_name"));
......
...@@ -80,6 +80,9 @@ ...@@ -80,6 +80,9 @@
"id": { "id": {
"type": "keyword" "type": "keyword"
}, },
"database_id": {
"type": "keyword"
},
"internal_name": { "internal_name": {
"type": "keyword" "type": "keyword"
}, },
......
...@@ -197,6 +197,8 @@ def general_search(search_term=None, t1=None, t2=None, fieldValuePairs=None): ...@@ -197,6 +197,8 @@ def general_search(search_term=None, t1=None, t2=None, fieldValuePairs=None):
"_source": [ "_source": [
"_class", "_class",
"id", "id",
"table_id",
"database_id",
"name", "name",
"identifier.*", "identifier.*",
"column_type", "column_type",
......
...@@ -80,6 +80,11 @@ ...@@ -80,6 +80,11 @@
}, },
"information": { "information": {
"links": [ "links": [
{
"text": "Release Notes",
"blank": true,
"href": "https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/blob/dev/CHANGELOG.md"
},
{ {
"text": "Online Documentation", "text": "Online Documentation",
"blank": true, "blank": true,
......
...@@ -25,6 +25,17 @@ ...@@ -25,6 +25,17 @@
<v-list-item-title>{{ $t('layout.information', { name: 'vue-i18n' }) }}</v-list-item-title> <v-list-item-title>{{ $t('layout.information', { name: 'vue-i18n' }) }}</v-list-item-title>
</v-list-item-content> </v-list-item-content>
</v-list-item> </v-list-item>
<v-list-item
to="/search"
router
exact>
<v-list-item-action>
<v-icon>mdi-magnify</v-icon>
</v-list-item-action>
<v-list-item-content>
<v-list-item-title>{{ $t('layout.search', { name: 'vue-i18n' }) }}</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-item <v-list-item
to="/database" to="/database"
router router
...@@ -85,7 +96,7 @@ ...@@ -85,7 +96,7 @@
single-line single-line
hide-details hide-details
append-icon="mdi-magnify" append-icon="mdi-magnify"
:placeholder="$t('layout.search', { name: 'vue-i18n' })" :placeholder="$t('search.fuzzy.placeholder', { name: 'vue-i18n' })"
@click:append="retrieve" /> @click:append="retrieve" />
<v-btn class="ml-2" plain type="submit" name="search-advanced" @click="toggleAdvancedSearch"> <v-btn class="ml-2" plain type="submit" name="search-advanced" @click="toggleAdvancedSearch">
Advanced Advanced
...@@ -364,17 +375,6 @@ export default { ...@@ -364,17 +375,6 @@ export default {
deep: true, deep: true,
immediate: true immediate: true
}, },
user: {
handler () {
if (!this.user) {
return
}
DatabaseService.countAll(true)
.then((count) => {
this.databaseCountFilter = count
})
}
},
'advancedSearchData.type': { 'advancedSearchData.type': {
handler (newType, oldType) { handler (newType, oldType) {
if (!newType) { if (!newType) {
......
...@@ -5,11 +5,16 @@ ...@@ -5,11 +5,16 @@
"mydatabases": "Meine Datenbanken", "mydatabases": "Meine Datenbanken",
"semantics": "Semantik", "semantics": "Semantik",
"ontologies": "Ontologien", "ontologies": "Ontologien",
"search": "Suchen ...", "search": "Suche",
"login": "Anmelden", "login": "Anmelden",
"logout": "Abmelden", "logout": "Abmelden",
"signup": "Registrieren" "signup": "Registrieren"
}, },
"search": {
"fuzzy": {
"placeholder": "Suchen ..."
}
},
"databases": { "databases": {
"recent": "Neue Datenbanken", "recent": "Neue Datenbanken",
"my": "Meine Datenbanken", "my": "Meine Datenbanken",
......
...@@ -5,11 +5,16 @@ ...@@ -5,11 +5,16 @@
"mydatabases": "My Databases", "mydatabases": "My Databases",
"semantics": "Semantics", "semantics": "Semantics",
"ontologies": "Ontologies", "ontologies": "Ontologies",
"search": "Search ...", "search": "Search",
"login": "Login", "login": "Login",
"logout": "Logout", "logout": "Logout",
"signup": "Signup" "signup": "Signup"
}, },
"search": {
"fuzzy": {
"placeholder": "Search ..."
}
},
"databases": { "databases": {
"recent": "Recent Databases", "recent": "Recent Databases",
"my": "My Databases", "my": "My Databases",
......
...@@ -13,68 +13,22 @@ ...@@ -13,68 +13,22 @@
</ul> </ul>
</div> </div>
</v-card-text> </v-card-text>
<v-card-actions>
<v-btn
class="ml-2 mb-2"
color="primary"
to="/database">
Get Started
</v-btn>
</v-card-actions>
</v-card>
<v-card class="mt-4" flat tile>
<v-card-text>
<div>Release Notes</div>
<p class="text-h4 text--primary">
1.3
</p>
<p>
<a href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/blob/e4c6fdc36b3ceaa9f912cf284052459963d96076/CHANGELOG.md">Detailed
Changelog</a>
</p>
<div class="text--primary">
This release fixes bugs related to versioning, increases tasks for developers and data stewards. It enables
organizations to federate identities with their own identity provider through Keycloak.
</div>
</v-card-text>
<v-divider class="mx-4" />
<v-card-text>
<div>Release Notes</div>
<p class="text-h4 text--primary">
1.2
</p>
<p>
<a
href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/blob/ac45842d27fcce47a99683330dc8ea1b8321c3be/CHANGELOG.md">Detailed
Changelog</a>
</p>
<div class="text--primary">
This release adds semantic information to sub- and supersets, time-versioned metadata database, added access
model for giving users access to databases, improved the query store handling.
</div>
</v-card-text>
<v-divider class="mx-4" /> <v-divider class="mx-4" />
<v-card-text>
<div>Release Notes</div>
<p class="text-h4 text--primary">
1.1
</p>
<p>
<a
href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/blob/70b4d1e6398934d88e0080cb89f8cf87c68bf6eb/CHANGELOG">Detailed
Changelog</a>
</p>
<div class="text--primary">
In this release we added long-overdue features like user management so each user has their own database (which
can also be private) as well as data-insert features directly in the portal.
</div>
</v-card-text>
</v-card> </v-card>
<v-toolbar flat>
<v-toolbar-title v-text="$t('databases.recent', { name: 'vue-i18n' })" />
</v-toolbar>
<DatabaseList ref="databases" />
</div> </div>
</template> </template>
<script> <script>
import DatabaseList from '@/components/DatabaseList'
export default { export default {
components: {
DatabaseList
},
computed: { computed: {
infoLinks () { infoLinks () {
const infoLinks = this.$config.infoLinks const infoLinks = this.$config.infoLinks
......
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
<div> <div>
<v-toolbar flat> <v-toolbar flat>
<v-toolbar-title v-text="header" /> <v-toolbar-title v-text="header" />
<v-spacer />
<v-toolbar-title>
<v-btn v-if="canCreateDatabase" color="primary" name="create-database" @click.stop="createDbDialog = true">
<v-icon left>mdi-plus</v-icon> Database
</v-btn>
</v-toolbar-title>
</v-toolbar> </v-toolbar>
<v-progress-linear v-if="loading" color="primary" /> <v-progress-linear v-if="loading" color="primary" />
<v-card <v-card
...@@ -29,22 +35,36 @@ ...@@ -29,22 +35,36 @@
</div> </div>
</v-card-text> </v-card-text>
</v-card> </v-card>
<v-dialog
v-model="createDbDialog"
persistent
max-width="640">
<CreateDB @close="closed" />
</v-dialog>
</div> </div>
</template> </template>
<script> <script>
import EventBus from '@/api/eventBus' import EventBus from '@/api/eventBus'
import SearchService from '@/api/search.service' import SearchService from '@/api/search.service'
import CreateDB from '@/components/dialogs/CreateDB'
export default { export default {
components: {
CreateDB
},
inject: ['advancedSearchData'], inject: ['advancedSearchData'],
data () { data () {
return { return {
results: [], results: [],
loading: false loading: false,
createDbDialog: null
} }
}, },
computed: { computed: {
roles () {
return this.$store.state.roles
},
query () { query () {
if (!this.$route.query || !this.$route.query.q) { if (!this.$route.query || !this.$route.query.q) {
return null return null
...@@ -62,6 +82,12 @@ export default { ...@@ -62,6 +82,12 @@ export default {
return `${this.results.length} results` return `${this.results.length} results`
} }
return `${this.results.length} result` return `${this.results.length} result`
},
canCreateDatabase () {
if (!this.roles) {
return false
}
return this.roles.includes('create-database')
} }
}, },
watch: { watch: {
...@@ -229,11 +255,11 @@ export default { ...@@ -229,11 +255,11 @@ export default {
if (this.isDatabase(item)) { if (this.isDatabase(item)) {
return `/database/${item.id}` return `/database/${item.id}`
} else if (this.isTable(item)) { } else if (this.isTable(item)) {
return `/database/${item.databaseId}/table/${item.id}` return `/database/${item.database_id}/table/${item.id}`
} else if (this.isView(item)) { } else if (this.isView(item)) {
return `/database/${item.vdbid}/view/${item.id}` return `/database/${item.database_id}/view/${item.id}`
} else if (this.isColumn(item)) { } else if (this.isColumn(item)) {
return `/database/${item.cdbid}/table/${item.tid}` return `/database/${item.database_id}/table/${item.table_id}`
} else if (this.isIdentifier(item)) { } else if (this.isIdentifier(item)) {
return `/pid/${item.id}` return `/pid/${item.id}`
} else if (this.isConcept(item) || this.isUnit(item)) { } else if (this.isConcept(item) || this.isUnit(item)) {
...@@ -270,6 +296,12 @@ export default { ...@@ -270,6 +296,12 @@ export default {
tags.push({ text: 'Concept' }) tags.push({ text: 'Concept' })
} }
return tags return tags
},
closed (event) {
this.createDbDialog = false
if (event.success) {
this.$router.push('/database?f=my')
}
} }
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment