From 2f5c8d0e64add68d4fac4285281b0b792fec5cb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hanna=20F=C3=BChr?= <fuehr@itc.rwth-aachen.de> Date: Thu, 6 Apr 2023 09:28:19 +0200 Subject: [PATCH] Update: Renaming sidebar and URLs and ordering Licenses alphabetically --- src/components/elements/SidebarMenu.vue | 10 +++++----- src/i18n/de.ts | 12 ++++++------ src/i18n/en.ts | 12 ++++++------ src/modules/project/i18n/de.ts | 13 +++++-------- src/modules/project/i18n/en.ts | 13 +++++-------- ...ings.spec.ts => ConfigurationMetadata.spec.ts} | 6 +++--- .../{Settings.vue => ConfigurationMetadata.vue} | 4 +--- src/modules/project/pages/CreateProject.vue | 2 -- .../project/pages/components/FormMetadata.vue | 3 --- .../project/pages/components/FormReadonlyData.vue | 15 --------------- .../components/modals/DeleteProjectModal.vue | 6 +++--- src/modules/project/routes.ts | 10 +++++----- src/modules/project/store.ts | 12 +++++++++++- 13 files changed, 50 insertions(+), 68 deletions(-) rename src/modules/project/pages/{Settings.spec.ts => ConfigurationMetadata.spec.ts} (91%) rename src/modules/project/pages/{Settings.vue => ConfigurationMetadata.vue} (98%) diff --git a/src/components/elements/SidebarMenu.vue b/src/components/elements/SidebarMenu.vue index e2938493..06d9c1a5 100644 --- a/src/components/elements/SidebarMenu.vue +++ b/src/components/elements/SidebarMenu.vue @@ -51,7 +51,7 @@ import type { Vue.use(VueSidebarMenu); -// TODO: Waiting for role implementation (is owner for showing e.g. settings) +// TODO: Waiting for role implementation (is owner for showing e.g. configuration & metadata) export default defineComponent({ setup() { @@ -208,15 +208,15 @@ export default defineComponent({ icon: "bi bi-gear", child: [ { - title: this.$t("sidebar.projectSettings").toString(), + title: this.$t("sidebar.configurationMetadata").toString(), href: { - name: "project-settings", + name: "project-config-metadata", params: { slug: this.project.slug }, }, icon: "bi bi-pencil", }, { - title: this.$t("sidebar.manageUsers").toString(), + title: this.$t("sidebar.users").toString(), href: { name: "project-members", params: { slug: this.project.slug }, @@ -224,7 +224,7 @@ export default defineComponent({ icon: "bi bi-people", }, { - title: this.$t("sidebar.manageQuota").toString(), + title: this.$t("sidebar.quota").toString(), href: { name: "project-quota", params: { slug: this.project.slug }, diff --git a/src/i18n/de.ts b/src/i18n/de.ts index bd3956ee..2ac59f9f 100644 --- a/src/i18n/de.ts +++ b/src/i18n/de.ts @@ -39,9 +39,9 @@ export default { archived: "Archiviert", - projectSettings: "Projekteinstellungen", - manageUsers: "Benutzerverwaltung", - manageQuota: "Quota verwalten", + configurationMetadata: "Konfiguration & Metadaten", + users: "Mitglieder", + quota: "Quota", } as VueI18n.LocaleMessageObject, buttons: { @@ -153,9 +153,9 @@ export default { project: { page: "{projectName}", create: "Projekt erstellen", - settings: "Projekt bearbeiten", - quota: "Quota Management", - members: "Benutzerverwaltung", + configMetadata: "Projektkonfiguration & -metadaten", + quota: "Projektquota", + members: "Projektmitglieder", }, resource: { page: "{resourceName}", diff --git a/src/i18n/en.ts b/src/i18n/en.ts index b3411e70..a47eb4ec 100644 --- a/src/i18n/en.ts +++ b/src/i18n/en.ts @@ -37,9 +37,9 @@ export default { subProject: "Sub-Project | Sub-Projects", settings: "Settings", - projectSettings: "Project Settings", - manageUsers: "Manage Users", - manageQuota: "Manage Quota", + configurationMetadata: "Configuration & Metadata", + users: "Members", + quota: "Quota", } as VueI18n.LocaleMessageObject, buttons: { @@ -151,9 +151,9 @@ export default { project: { page: "{projectName}", create: "Create Project", - settings: "Project Settings", - quota: "Quota Management", - members: "User Management", + configMetadata: "Project Configuration & Metadata", + quota: "Project Quota", + members: "Project Members", }, resource: { page: "{resourceName}", diff --git a/src/modules/project/i18n/de.ts b/src/modules/project/i18n/de.ts index f8b5b3f7..88d752c1 100644 --- a/src/modules/project/i18n/de.ts +++ b/src/modules/project/i18n/de.ts @@ -27,7 +27,7 @@ export default { // Members.vue members: { - title: "Benutzerverwaltung", + title: "Projektmitglieder", membersTabTitle: "Projektmitglieder", externalUsersTabTitle: "Eingeladene Benutzer", pendingStatus: "Wartet", @@ -115,7 +115,7 @@ export default { // Quota.vue quota: { - headline: "Quota Management", + headline: "Projektquota", resources: "Ressourcen", rangeText: "{allocated} GB zugeteilt", gb: "{number} GB", @@ -170,9 +170,9 @@ export default { "Beim Ändern der Quota ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut. Wenn der Fehler weiter auftritt, wenden Sie sich bitte an Ihre Organization.", }, - // Settings.vue - settings: { - // page title is fetched from `sidebar.projectSettings` + // ConfigurationMetadata.vue + configMetadata: { + headline: "Projektkonfiguration & -metadaten", modal: { deleteModalHeadline: "Projekt wirklich entfernen?", @@ -210,9 +210,6 @@ export default { projectSlugLabel: "@:(form.project.projectSlug)@:(form.project.labelSymbol)", - projectId: "Projekt Id", - projectIdLabel: "@:(form.project.projectId)@:(form.project.labelSymbol)", - projectPersistentId: "Persistent Identifier (PID)", projectPersistentIdLabel: "@:(form.project.projectPersistentId)@:(form.project.labelSymbol)", diff --git a/src/modules/project/i18n/en.ts b/src/modules/project/i18n/en.ts index 360800b1..3a6c7724 100644 --- a/src/modules/project/i18n/en.ts +++ b/src/modules/project/i18n/en.ts @@ -25,7 +25,7 @@ export default { // Members.vue members: { - title: "User Management", + title: "Project Members", membersTabTitle: "Project Members", externalUsersTabTitle: "Invited Users", pendingStatus: "Pending", @@ -110,7 +110,7 @@ export default { // Quota.vue quota: { - headline: "Quota Management", + headline: "Project Quota", resources: "Resources", rangeText: "{allocated} GB allocated", gb: "{number} GB", @@ -166,9 +166,9 @@ export default { "An error occurred while extending the quota. Please try again. If the error persists, contact your organization.", }, - // Settings.vue - settings: { - // page title is fetched from `sidebar.projectSettings` + // ConfigurationMetadata.vue + configMetadata: { + headline: "Project Configuration & Metadata", modal: { deleteModalHeadline: "Do you really want to delete this project?", @@ -205,9 +205,6 @@ export default { projectSlugLabel: "@:(form.project.projectSlug)@:(form.project.labelSymbol)", - projectId: "Project Id", - projectIdLabel: "@:(form.project.projectId)@:(form.project.labelSymbol)", - projectPersistentId: "Persistent Identifier (PID)", projectPersistentIdLabel: "@:(form.project.projectPersistentId)@:(form.project.labelSymbol)", diff --git a/src/modules/project/pages/Settings.spec.ts b/src/modules/project/pages/ConfigurationMetadata.spec.ts similarity index 91% rename from src/modules/project/pages/Settings.spec.ts rename to src/modules/project/pages/ConfigurationMetadata.spec.ts index 2291b04a..fc7e70ef 100644 --- a/src/modules/project/pages/Settings.spec.ts +++ b/src/modules/project/pages/ConfigurationMetadata.spec.ts @@ -16,7 +16,7 @@ import { PiniaVuePlugin } from "pinia"; /* Additional Dependencies */ /* Tested Component */ -import Settings from "./Settings.vue"; +import ConfigurationMetadata from "./ConfigurationMetadata.vue"; import type Vue from "vue"; /* Import of relevant mockup data */ @@ -27,7 +27,7 @@ import { testUserState } from "@/data/mockup/testUser"; const localVue = createLocalVue(); localVue.use(PiniaVuePlugin); -describe("Settings.vue", () => { +describe("ConfigurationMetadata.vue", () => { /* Describe Pre-initialization steps */ /* Description of the test */ @@ -35,7 +35,7 @@ describe("Settings.vue", () => { /* Test Pre-initialization steps */ /* Mount the Component */ - const wrapper = mount(Settings as unknown as typeof Vue, { + const wrapper = mount(ConfigurationMetadata as unknown as typeof Vue, { pinia: createTestingPinia({ createSpy: vitest.fn, initialState: { diff --git a/src/modules/project/pages/Settings.vue b/src/modules/project/pages/ConfigurationMetadata.vue similarity index 98% rename from src/modules/project/pages/Settings.vue rename to src/modules/project/pages/ConfigurationMetadata.vue index ef3c3b3b..553fff03 100644 --- a/src/modules/project/pages/Settings.vue +++ b/src/modules/project/pages/ConfigurationMetadata.vue @@ -1,6 +1,6 @@ <template> <div id="project"> - <CoscineHeadline :headline="$t('sidebar.projectSettings')" /> + <CoscineHeadline :headline="$t('page.configMetadata.headline')" /> <b-row> <div class="col-sm-2" /> <div class="col-sm-8"> @@ -18,8 +18,6 @@ :is-loading="isLoading" /> - <div class="h-divider" /> - <FormMetadata v-model="projectForm" :disabled="!isOwner" diff --git a/src/modules/project/pages/CreateProject.vue b/src/modules/project/pages/CreateProject.vue index 49a78d8e..d4ca9e94 100644 --- a/src/modules/project/pages/CreateProject.vue +++ b/src/modules/project/pages/CreateProject.vue @@ -23,8 +23,6 @@ @validation="formValidations.naming = $event" /><!-- TODO: Fix @validation assignment and typing --> - <div class="h-divider" /> - <FormMetadata v-model="projectForm" :is-loading="isLoading" diff --git a/src/modules/project/pages/components/FormMetadata.vue b/src/modules/project/pages/components/FormMetadata.vue index 44b9402b..0f76e00a 100644 --- a/src/modules/project/pages/components/FormMetadata.vue +++ b/src/modules/project/pages/components/FormMetadata.vue @@ -1,8 +1,5 @@ <template> <div> - <!-- Project Metadata Section --> - <CoscineHeadline :headline="$t('form.project.activatedImportFromParent')" /> - <!-- Copy Metadata --> <CoscineFormGroup v-if="parentProject" diff --git a/src/modules/project/pages/components/FormReadonlyData.vue b/src/modules/project/pages/components/FormReadonlyData.vue index 73dc3343..193ef4ca 100644 --- a/src/modules/project/pages/components/FormReadonlyData.vue +++ b/src/modules/project/pages/components/FormReadonlyData.vue @@ -15,21 +15,6 @@ /> </CoscineFormGroup> - <!-- Project Id --> - <CoscineFormGroup - label-for="Id" - :label="$t('form.project.projectIdLabel')" - :is-loading="isLoading" - type="input" - > - <b-form-input - id="ProjectId" - v-model="projectForm.id" - :readonly="readonly" - required - /> - </CoscineFormGroup> - <!-- Project Persistent Identifier --> <CoscineFormGroup label-for="ProjectPersistentId" diff --git a/src/modules/project/pages/components/modals/DeleteProjectModal.vue b/src/modules/project/pages/components/modals/DeleteProjectModal.vue index 8d5f320b..30799c37 100644 --- a/src/modules/project/pages/components/modals/DeleteProjectModal.vue +++ b/src/modules/project/pages/components/modals/DeleteProjectModal.vue @@ -32,7 +32,7 @@ @keyup.enter.prevent="clickDelete" ></b-form-input> <div class="invalid-tooltip"> - {{ $t("page.settings.modal.deleteModalHelp") }} + {{ $t("page.configMetadata.modal.deleteModalHelp") }} </div> </b-form-group> @@ -55,11 +55,11 @@ import { defineComponent, type PropType } from "vue"; export default defineComponent({ props: { descriptionKey: { - default: "page.settings.modal.deleteModalDescription", + default: "page.configMetadata.modal.deleteModalDescription", type: String, }, titleKey: { - default: "page.settings.modal.deleteModalHeadline", + default: "page.configMetadata.modal.deleteModalHeadline", type: String, }, open: { diff --git a/src/modules/project/routes.ts b/src/modules/project/routes.ts index 80dd7a2e..60794525 100644 --- a/src/modules/project/routes.ts +++ b/src/modules/project/routes.ts @@ -7,7 +7,7 @@ const ListProjects = () => import("./pages/ListProjects.vue"); const ProjectPage = () => import("./pages/ProjectPage.vue"); const Quota = () => import("./pages/Quota.vue"); const Members = () => import("./pages/Members.vue"); -const Settings = () => import("./pages/Settings.vue"); +const ConfigurationMetadata = () => import("./pages/ConfigurationMetadata.vue"); import { ResourceRoutes } from "@/modules/resource/routes"; import { ProjectI18nMessages } from "@/modules/project/i18n/index"; @@ -68,12 +68,12 @@ export const ProjectRoutes: RouteConfig[] = [ }, }, { - path: "settings", - name: "project-settings", - component: Settings, + path: "config-metadata", + name: "project-config-metadata", + component: ConfigurationMetadata, meta: { requiresAuth: true, - breadCrumb: "project.settings", + breadCrumb: "project.configMetadata", }, }, { diff --git a/src/modules/project/store.ts b/src/modules/project/store.ts index c9be5301..c340289c 100644 --- a/src/modules/project/store.ts +++ b/src/modules/project/store.ts @@ -482,7 +482,17 @@ export const useProjectStore = defineStore({ const notificationStore = useNotificationStore(); try { const apiResponse = await LicenseApi.licenseIndex(); - this.licenses = apiResponse.data; + const sortedLicenses = apiResponse.data; + sortedLicenses.sort((a, b) => { + if (a.displayName && b.displayName) { + const valueA = a.displayName.toUpperCase(); + const valueB = b.displayName.toUpperCase(); + return valueA < valueB ? -1 : valueA > valueB ? 1 : 0; + } else { + return 0; + } + }); + this.licenses = sortedLicenses; } catch (error) { // Handle other Status Codes notificationStore.postApiErrorNotification(error as AxiosError); -- GitLab