Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • Test/xxxx-shaclForm
  • dev
  • main
  • Issue/3240-changeMetadataUpdateButton
  • Issue/3242-UserDeletionOnProfile
  • Issue/3245-maintenanceAPIUpdate
  • Issue/3212-AddEmailforexpiredToken
  • Hotfix/xxxx-podmanComposeFix
  • Issue/3135-newUiUnitTests
  • Issue/3187-VersionStorage
  • Issue/3179-sortDataPublicationServiceList
  • Issue/3193-processingOfPersonalDataConsent
  • Hotfix/2486-ImprovedGitLabTokenHandling
  • Issue/2486-ImprovedGitLabTokenHandling
  • Issue/2511-moveResourceInfoToModalView
  • Issue/2450-AdminPage
  • Issue/3222-FairDOFeedbackChanges
  • Issue/1560-VisibilityAndOrder
  • Issue/3082-visualizeFDOs
  • Issue/3203-brokenCoscineSurfacePage
  • Issue/3192-gitlabTokenUpdateNotPossible
  • Issue/3175-uiQuotaSettingAndDisplayBug
  • Issue/3090-tosProblems
  • Issue/3178-iconColorBug
  • Issue/3176-addNewNFDI4INGLogo
  • Issue/3141-rdsNoLonga
  • Issue/3180-fixMetadataNotLoading
  • Issue/3177-resourceTypeDescriptionTexts
  • Issue/3160-deactivateDownloadForFolders
  • Issue/3111-fixLoadingGitLabResource
  • Issue/3133-subProjectsChanges
  • Issue/3139-dsnrw
  • Issue/3167-changeTextAndAddLink
  • Issue/3070-newIconsForResourceTypes
  • Issue/3145-redesignLoginPage
  • Issue/3093-moreInformationInTheDeletionEmails
  • Issue/3040-closeTokenWindowWithXButton
  • Issue/3152-fixResourceStore
  • Issue/xxxx-DuckDBTest
  • Issue/3152-fixUpdateRequestPayload
  • Issue/2489-addNotificationManagement
  • Issue/3138-tooltipForDisabledCreateActions
  • Issue/3136-orderResourcesInAlphabeticalOrder
  • Issue/3119-respOrg-vol2
  • Issue/3119-respOrg
  • Issue/3129-improvmentsResourceCreation
  • Issue/3068-metadataProfileTitleLanguage
  • Issue/3108-fixChangingOfGitLabToken
  • Issue/3124-confusingInfoMessageForArchivedResource
  • Issue/3098-Fix0Quota
  • Issue/3052-folderUpload
  • Issue/3085-useNewApiClient
  • Issue/3088-fixMissingMetadataForSpecificResources
  • Issue/3043-DataStorageNrwResource
  • Issue/3086-fixProjectCreation
  • Issue/3084-textChangesDataPublication
  • Issue/2969-AddUrlLinkToGitLabRepo
  • Issue/3011-maintenanceMode
  • Issue/3049-quotaDisplayIncorrect
  • Issue/2572-addQuotaInputField
  • Issue/3061-emailVerification
  • Issue/3032-disciplines
  • Issue/3034-quotaPercent
  • Issue/3020-changeRegAppLoginButton
  • Issue/3025-addMissionStatement
  • Issue/2893-rcvDownloadButtonName
  • Issue/3019-changeAccessibilityStatementLink
  • Issue/3026-banner
  • Issue/3027-enablePencilButton
  • Issue/2582-restoreProjectFormData
  • Issue/2995-datastoreInfrastructure
  • Issue/3018-disableMultiFileDownload
  • Issue/3017-admin
  • Issue/2998-fixMetadataProfileSorting
  • Issue/3008-signIn
  • Issue/2446-addingResponsibleOrganization
  • Issue/2992-smallChangesDataPublicationRequest
  • Issue/2999-orgs
  • Hotfix/2989-cookieLength
  • Issue/2960-infiniteLoop
  • test/lo
  • removeInstitutesFromUserTests
  • Issue/2900-removeInsituteField
  • test-test
  • Issue/2991-fixSaveButtonValidationLogic
  • Issue/2983-displayingWrongProjectEnd
  • Issue/2987-updateLogosLoginPage
  • revert-fccd0fd0
  • Issue/2870-adjustInfoGitLabResource
  • Issue/2981-dataPubInDb
  • Issue/2975-reactivateDataPubFeature
  • Issue/5678-smallChangesRenamingApplicationProfile
  • Issue/2881-messageController
  • Issue/2978-renameApplicationProfiletoMetadataProfile
  • Hotfix/2971-fixTextInDataPub
  • Issue/2970-resourceCharLimit
  • Issue/2920-fixRemovingValues
  • Fix/xxxx-ToS400Error
  • Feature/xxxx-turnOffDataPub
  • Issue/xxxx-fixMergeFuckUp
  • 1.28.0-pilot
  • v1.0.0
  • v1.1.0
  • v1.10.0
  • v1.10.1
  • v1.10.2
  • v1.10.3
  • v1.11.0
  • v1.11.1
  • v1.11.2
  • v1.11.3
  • v1.11.4
  • v1.11.5
  • v1.11.6
  • v1.11.7
  • v1.12.0
  • v1.13.0
  • v1.14.0
  • v1.14.1
  • v1.14.2
  • v1.14.3
  • v1.15.0
  • v1.15.1
  • v1.16.0
  • v1.16.1
  • v1.16.2
  • v1.16.3
  • v1.17.0
  • v1.17.1
  • v1.17.2
  • v1.18.0
  • v1.18.1
  • v1.19.0
  • v1.2.0
  • v1.20.0
  • v1.20.1
  • v1.20.2
  • v1.20.3
  • v1.20.4
  • v1.20.5
  • v1.21.0
  • v1.22.0
  • v1.22.1
  • v1.22.2
  • v1.23.0
  • v1.23.1
  • v1.23.2
  • v1.23.3
  • v1.23.4
  • v1.23.5
  • v1.23.6
  • v1.23.6-patch-2417-2427
  • v1.24.0
  • v1.24.1
  • v1.25.0
  • v1.25.1
  • v1.26.0
  • v1.26.1
  • v1.27.0
  • v1.27.1
  • v1.27.1-pilot
  • v1.28.0
  • v1.29.0
  • v1.29.1
  • v1.29.2
  • v1.3.0
  • v1.30.0
  • v1.30.1
  • v1.30.2
  • v1.31.0
  • v1.32.0
  • v1.4.0
  • v1.4.1
  • v1.5.0
  • v1.6.0
  • v1.6.1
  • v1.6.2
  • v1.7.0
  • v1.8.0
  • v1.8.1
  • v1.8.2
  • v1.9.0
  • v2.0.0
  • v2.1.0
  • v2.10.0
  • v2.10.1
  • v2.11.0
  • v2.12.0
  • v2.12.1
  • v2.12.2
  • v2.12.3
  • v2.12.4
  • v2.12.5
  • v2.13.0
  • v2.13.1
  • v2.13.2
  • v2.13.3
  • v2.13.4
  • v2.14.0
  • v2.15.0
200 results

Target

Select target project
  • Coscine / frontend / apps / UI
1 result
Select Git revision
  • Test/xxxx-shaclForm
  • dev
  • main
  • Issue/3240-changeMetadataUpdateButton
  • Issue/3242-UserDeletionOnProfile
  • Issue/3245-maintenanceAPIUpdate
  • Issue/3212-AddEmailforexpiredToken
  • Hotfix/xxxx-podmanComposeFix
  • Issue/3135-newUiUnitTests
  • Issue/3187-VersionStorage
  • Issue/3179-sortDataPublicationServiceList
  • Issue/3193-processingOfPersonalDataConsent
  • Hotfix/2486-ImprovedGitLabTokenHandling
  • Issue/2486-ImprovedGitLabTokenHandling
  • Issue/2511-moveResourceInfoToModalView
  • Issue/2450-AdminPage
  • Issue/3222-FairDOFeedbackChanges
  • Issue/1560-VisibilityAndOrder
  • Issue/3082-visualizeFDOs
  • Issue/3203-brokenCoscineSurfacePage
  • Issue/3192-gitlabTokenUpdateNotPossible
  • Issue/3175-uiQuotaSettingAndDisplayBug
  • Issue/3090-tosProblems
  • Issue/3178-iconColorBug
  • Issue/3176-addNewNFDI4INGLogo
  • Issue/3141-rdsNoLonga
  • Issue/3180-fixMetadataNotLoading
  • Issue/3177-resourceTypeDescriptionTexts
  • Issue/3160-deactivateDownloadForFolders
  • Issue/3111-fixLoadingGitLabResource
  • Issue/3133-subProjectsChanges
  • Issue/3139-dsnrw
  • Issue/3167-changeTextAndAddLink
  • Issue/3070-newIconsForResourceTypes
  • Issue/3145-redesignLoginPage
  • Issue/3093-moreInformationInTheDeletionEmails
  • Issue/3040-closeTokenWindowWithXButton
  • Issue/3152-fixResourceStore
  • Issue/xxxx-DuckDBTest
  • Issue/3152-fixUpdateRequestPayload
  • Issue/2489-addNotificationManagement
  • Issue/3138-tooltipForDisabledCreateActions
  • Issue/3136-orderResourcesInAlphabeticalOrder
  • Issue/3119-respOrg-vol2
  • Issue/3119-respOrg
  • Issue/3129-improvmentsResourceCreation
  • Issue/3068-metadataProfileTitleLanguage
  • Issue/3108-fixChangingOfGitLabToken
  • Issue/3124-confusingInfoMessageForArchivedResource
  • Issue/3098-Fix0Quota
  • Issue/3052-folderUpload
  • Issue/3085-useNewApiClient
  • Issue/3088-fixMissingMetadataForSpecificResources
  • Issue/3043-DataStorageNrwResource
  • Issue/3086-fixProjectCreation
  • Issue/3084-textChangesDataPublication
  • Issue/2969-AddUrlLinkToGitLabRepo
  • Issue/3011-maintenanceMode
  • Issue/3049-quotaDisplayIncorrect
  • Issue/2572-addQuotaInputField
  • Issue/3061-emailVerification
  • Issue/3032-disciplines
  • Issue/3034-quotaPercent
  • Issue/3020-changeRegAppLoginButton
  • Issue/3025-addMissionStatement
  • Issue/2893-rcvDownloadButtonName
  • Issue/3019-changeAccessibilityStatementLink
  • Issue/3026-banner
  • Issue/3027-enablePencilButton
  • Issue/2582-restoreProjectFormData
  • Issue/2995-datastoreInfrastructure
  • Issue/3018-disableMultiFileDownload
  • Issue/3017-admin
  • Issue/2998-fixMetadataProfileSorting
  • Issue/3008-signIn
  • Issue/2446-addingResponsibleOrganization
  • Issue/2992-smallChangesDataPublicationRequest
  • Issue/2999-orgs
  • Hotfix/2989-cookieLength
  • Issue/2960-infiniteLoop
  • test/lo
  • removeInstitutesFromUserTests
  • Issue/2900-removeInsituteField
  • test-test
  • Issue/2991-fixSaveButtonValidationLogic
  • Issue/2983-displayingWrongProjectEnd
  • Issue/2987-updateLogosLoginPage
  • revert-fccd0fd0
  • Issue/2870-adjustInfoGitLabResource
  • Issue/2981-dataPubInDb
  • Issue/2975-reactivateDataPubFeature
  • Issue/5678-smallChangesRenamingApplicationProfile
  • Issue/2881-messageController
  • Issue/2978-renameApplicationProfiletoMetadataProfile
  • Hotfix/2971-fixTextInDataPub
  • Issue/2970-resourceCharLimit
  • Issue/2920-fixRemovingValues
  • Fix/xxxx-ToS400Error
  • Feature/xxxx-turnOffDataPub
  • Issue/xxxx-fixMergeFuckUp
  • 1.28.0-pilot
  • v1.0.0
  • v1.1.0
  • v1.10.0
  • v1.10.1
  • v1.10.2
  • v1.10.3
  • v1.11.0
  • v1.11.1
  • v1.11.2
  • v1.11.3
  • v1.11.4
  • v1.11.5
  • v1.11.6
  • v1.11.7
  • v1.12.0
  • v1.13.0
  • v1.14.0
  • v1.14.1
  • v1.14.2
  • v1.14.3
  • v1.15.0
  • v1.15.1
  • v1.16.0
  • v1.16.1
  • v1.16.2
  • v1.16.3
  • v1.17.0
  • v1.17.1
  • v1.17.2
  • v1.18.0
  • v1.18.1
  • v1.19.0
  • v1.2.0
  • v1.20.0
  • v1.20.1
  • v1.20.2
  • v1.20.3
  • v1.20.4
  • v1.20.5
  • v1.21.0
  • v1.22.0
  • v1.22.1
  • v1.22.2
  • v1.23.0
  • v1.23.1
  • v1.23.2
  • v1.23.3
  • v1.23.4
  • v1.23.5
  • v1.23.6
  • v1.23.6-patch-2417-2427
  • v1.24.0
  • v1.24.1
  • v1.25.0
  • v1.25.1
  • v1.26.0
  • v1.26.1
  • v1.27.0
  • v1.27.1
  • v1.27.1-pilot
  • v1.28.0
  • v1.29.0
  • v1.29.1
  • v1.29.2
  • v1.3.0
  • v1.30.0
  • v1.30.1
  • v1.30.2
  • v1.31.0
  • v1.32.0
  • v1.4.0
  • v1.4.1
  • v1.5.0
  • v1.6.0
  • v1.6.1
  • v1.6.2
  • v1.7.0
  • v1.8.0
  • v1.8.1
  • v1.8.2
  • v1.9.0
  • v2.0.0
  • v2.1.0
  • v2.10.0
  • v2.10.1
  • v2.11.0
  • v2.12.0
  • v2.12.1
  • v2.12.2
  • v2.12.3
  • v2.12.4
  • v2.12.5
  • v2.13.0
  • v2.13.1
  • v2.13.2
  • v2.13.3
  • v2.13.4
  • v2.14.0
  • v2.15.0
200 results
Show changes

Commits on Source 3

84 files
+ 2461
1406
Compare changes
  • Side-by-side
  • Inline

Files

+893 −0

File changed and moved.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Original line Diff line number Diff line
@@ -41,4 +41,4 @@ packageExtensions:
    dependencies:
    dependencies:
      vue: ^2.7.15
      vue: ^2.7.15


yarnPath: .yarn/releases/yarn-4.0.0.cjs
yarnPath: .yarn/releases/yarn-4.0.2.cjs
+30 −31
Original line number Original line Diff line number Diff line
{
{
  "name": "ui",
  "name": "ui",
  "version": "2.5.1",
  "version": "2.5.2",
  "private": true,
  "private": true,
  "scripts": {
  "scripts": {
    "dev": "vite",
    "dev": "vite",
@@ -13,9 +13,9 @@
    "coverage": "vitest run --coverage"
    "coverage": "vitest run --coverage"
  },
  },
  "dependencies": {
  "dependencies": {
    "@coscine/api-client": "^3.3.0",
    "@coscine/api-client": "^3.3.1",
    "@coscine/form-generator": "^3.5.1",
    "@coscine/form-generator": "^3.5.3",
    "@dynamic-mapper/mapper": "^1.10.2",
    "@dynamic-mapper/mapper": "^1.10.4",
    "@pinia/testing": "^0.1.3",
    "@pinia/testing": "^0.1.3",
    "@rdfjs-elements/formats-pretty": "^0.6.4",
    "@rdfjs-elements/formats-pretty": "^0.6.4",
    "@rdfjs/data-model": "^2.0.1",
    "@rdfjs/data-model": "^2.0.1",
@@ -24,20 +24,20 @@
    "@rdfjs/types": "^1.1.0",
    "@rdfjs/types": "^1.1.0",
    "@vuelidate/core": "^2.0.3",
    "@vuelidate/core": "^2.0.3",
    "@vuelidate/validators": "^2.0.4",
    "@vuelidate/validators": "^2.0.4",
    "@vueuse/core": "^10.5.0",
    "@vueuse/core": "^10.6.1",
    "axios": "^1.5.1",
    "axios": "^1.6.2",
    "bootstrap": "4.6.1",
    "bootstrap": "4.6.1",
    "bootstrap-icons": "^1.11.1",
    "bootstrap-icons": "^1.11.1",
    "bootstrap-vue": "^2.23.1",
    "bootstrap-vue": "^2.23.1",
    "buffer": "^6.0.3",
    "buffer": "^6.0.3",
    "file-saver": "^2.0.5",
    "file-saver": "^2.0.5",
    "http-status-codes": "^2.3.0",
    "http-status-codes": "^2.3.0",
    "jose": "^4.15.4",
    "jose": "^5.1.1",
    "jquery": "^3.7.1",
    "jquery": "^3.7.1",
    "lodash": "^4.17.21",
    "lodash": "^4.17.21",
    "moment": "^2.29.4",
    "moment": "^2.29.4",
    "pinia": "^2.1.7",
    "pinia": "^2.1.7",
    "rdf-canonize": "^3.4.0",
    "rdf-canonize": "^4.0.1",
    "rdf-ext": "^2.4.0",
    "rdf-ext": "^2.4.0",
    "rdf-parse": "^2.3.2",
    "rdf-parse": "^2.3.2",
    "rdf-validate-shacl": "^0.4.5",
    "rdf-validate-shacl": "^0.4.5",
@@ -59,43 +59,42 @@
    "@semantic-release/gitlab": "^12.0.6",
    "@semantic-release/gitlab": "^12.0.6",
    "@semantic-release/npm": "^10.0.6",
    "@semantic-release/npm": "^10.0.6",
    "@semantic-release/release-notes-generator": "^11.0.7",
    "@semantic-release/release-notes-generator": "^11.0.7",
    "@types/file-saver": "^2.0.6",
    "@types/file-saver": "^2.0.7",
    "@types/lodash": "^4.14.200",
    "@types/lodash": "^4.14.201",
    "@types/rdf-ext": "^2.2.4",
    "@types/rdf-ext": "^2.2.5",
    "@types/rdf-validate-shacl": "^0.4.5",
    "@types/rdf-validate-shacl": "^0.4.6",
    "@types/uuid": "^9.0.6",
    "@types/uuid": "^9.0.7",
    "@types/vue-select": "^3.16.6",
    "@types/vue-select": "^3.16.7",
    "@typescript-eslint/eslint-plugin": "^5.62.0",
    "@typescript-eslint/eslint-plugin": "^6.11.0",
    "@typescript-eslint/parser": "^5.62.0",
    "@typescript-eslint/parser": "^6.11.0",
    "@vitejs/plugin-vue2": "^2.2.0",
    "@vitejs/plugin-vue2": "^2.3.1",
    "@vitest/coverage-c8": "^0.32.4",
    "@vitest/coverage-c8": "^0.33.0",
    "@vue/eslint-config-prettier": "^7.1.0",
    "@vue/eslint-config-prettier": "^8.0.0",
    "@vue/eslint-config-typescript": "^11.0.3",
    "@vue/eslint-config-typescript": "^12.0.0",
    "@vue/runtime-dom": "^3.3.7",
    "@vue/runtime-dom": "^3.3.8",
    "@vue/test-utils": "^1.3.6",
    "@vue/test-utils": "^1.3.6",
    "conventional-changelog-eslint": "^4.0.0",
    "conventional-changelog-eslint": "^4.0.0",
    "eslint": "^8.52.0",
    "eslint": "^8.54.0",
    "eslint-config-prettier": "^8.10.0",
    "eslint-config-prettier": "^9.0.0",
    "eslint-import-resolver-node": "^0.3.9",
    "eslint-import-resolver-node": "^0.3.9",
    "eslint-plugin-eslint-comments": "^3.2.0",
    "eslint-plugin-eslint-comments": "^3.2.0",
    "eslint-plugin-functional": "^5.0.8",
    "eslint-plugin-functional": "^6.0.0",
    "eslint-plugin-import": "^2.29.0",
    "eslint-plugin-import": "^2.29.0",
    "eslint-plugin-prettier": "^4.2.1",
    "eslint-plugin-prettier": "^5.0.1",
    "eslint-plugin-vue": "^9.18.0",
    "eslint-plugin-vue": "^9.18.1",
    "jsdom": "^22.1.0",
    "jsdom": "^22.1.0",
    "jsdom-global": "^3.0.2",
    "jsdom-global": "^3.0.2",
    "lint-staged": "^13.3.0",
    "lint-staged": "^15.1.0",
    "prettier": "^2.8.8",
    "prettier": "^3.1.0",
    "semantic-release": "^21.1.2",
    "semantic-release": "^21.1.2",
    "typescript": "^5.2.2",
    "typescript": "^5.2.2",
    "unplugin-vue-components": "^0.25.2",
    "unplugin-vue-components": "^0.25.2",
    "vite": "^4.5.0",
    "vite": "^5.0.0",
    "vite-aliases": "^0.11.3",
    "vite-aliases": "^0.11.3",
    "vite-plugin-node-polyfills": "^0.9.0",
    "vite-plugin-node-polyfills": "^0.9.0",
    "vite-plugin-rewrite-all": "^1.0.1",
    "vite-plugin-windicss": "^1.9.1",
    "vite-plugin-windicss": "^1.9.1",
    "vitest": "^0.34.6",
    "vitest": "^0.34.6",
    "vue-template-compiler": "^2.7.15"
    "vue-template-compiler": "^2.7.15"
  },
  },
  "packageManager": "yarn@4.0.0"
  "packageManager": "yarn@4.0.2"
}
}
+4 −2
Original line number Original line Diff line number Diff line
@@ -160,7 +160,8 @@ a[target="_blank"]:after {
  font-weight: normal;
  font-weight: normal;
  color: unset;
  color: unset;
  font-family: "bootstrap-icons";
  font-family: "bootstrap-icons";
  src: url("bootstrap-icons.woff2?856008caa5eb66df68595e734e59580d")
  src:
    url("bootstrap-icons.woff2?856008caa5eb66df68595e734e59580d")
      format("woff2"),
      format("woff2"),
    url("bootstrap-icons.woff?856008caa5eb66df68595e734e59580d") format("woff");
    url("bootstrap-icons.woff?856008caa5eb66df68595e734e59580d") format("woff");
}
}
@@ -173,7 +174,8 @@ a[target="_blank"]:after {
  font-weight: normal;
  font-weight: normal;
  color: unset;
  color: unset;
  font-family: "bootstrap-icons";
  font-family: "bootstrap-icons";
  src: url("bootstrap-icons.woff2?856008caa5eb66df68595e734e59580d")
  src:
    url("bootstrap-icons.woff2?856008caa5eb66df68595e734e59580d")
      format("woff2"),
      format("woff2"),
    url("bootstrap-icons.woff?856008caa5eb66df68595e734e59580d") format("woff");
    url("bootstrap-icons.woff?856008caa5eb66df68595e734e59580d") format("woff");
}
}
+3 −3
Original line number Original line Diff line number Diff line
@@ -77,19 +77,19 @@ export default defineComponent({
            return this.$t("banner.maintenance.type.disturbance").toString();
            return this.$t("banner.maintenance.type.disturbance").toString();
          case "Teilstörung":
          case "Teilstörung":
            return this.$t(
            return this.$t(
              "banner.maintenance.type.partialDisturbance"
              "banner.maintenance.type.partialDisturbance",
            ).toString();
            ).toString();
          case "Unterbrechung":
          case "Unterbrechung":
            return this.$t("banner.maintenance.type.interruption").toString();
            return this.$t("banner.maintenance.type.interruption").toString();
          case "eingeschränkt betriebsfähig":
          case "eingeschränkt betriebsfähig":
            return this.$t(
            return this.$t(
              "banner.maintenance.type.limitedOperation"
              "banner.maintenance.type.limitedOperation",
            ).toString();
            ).toString();
          case "Wartung":
          case "Wartung":
            return this.$t("banner.maintenance.type.maintenance").toString();
            return this.$t("banner.maintenance.type.maintenance").toString();
          case "Teilwartung":
          case "Teilwartung":
            return this.$t(
            return this.$t(
              "banner.maintenance.type.partialMaintenance"
              "banner.maintenance.type.partialMaintenance",
            ).toString();
            ).toString();
          default:
          default:
            return this.$t("banner.maintenance.type.maintenance").toString();
            return this.$t("banner.maintenance.type.maintenance").toString();
+4 −4
Original line number Original line Diff line number Diff line
@@ -87,9 +87,9 @@ export default defineComponent({
      ) {
      ) {
        title = title.replace(
        title = title.replace(
          `${this.$t(
          `${this.$t(
            "resourceTypes." + this.resource.type.specificType + ".displayName"
            "resourceTypes." + this.resource.type.specificType + ".displayName",
          )}: `,
          )}: `,
          ""
          "",
        );
        );
      }
      }
      this.setDocumentTitle(title);
      this.setDocumentTitle(title);
@@ -126,7 +126,7 @@ export default defineComponent({
          path.trim() !== "" &&
          path.trim() !== "" &&
          path.trim() !== "p" &&
          path.trim() !== "p" &&
          path.trim() !== "r" &&
          path.trim() !== "r" &&
          path.trim() !== "-"
          path.trim() !== "-",
      );
      );
    },
    },


@@ -190,7 +190,7 @@ export default defineComponent({
        if (this.resource.type?.specificType) {
        if (this.resource.type?.specificType) {
          // e.g. "RWTH-RDS-S3: My Resource Name"
          // e.g. "RWTH-RDS-S3: My Resource Name"
          return `${this.$t(
          return `${this.$t(
            "resourceTypes." + this.resource.type.specificType + ".displayName"
            "resourceTypes." + this.resource.type.specificType + ".displayName",
          )}: ${this.resource.displayName}`;
          )}: ${this.resource.displayName}`;
        }
        }
        return this.resource.displayName;
        return this.resource.displayName;
+5 −5
Original line number Original line Diff line number Diff line
@@ -158,7 +158,7 @@ export default defineComponent({
                    ? `${this.$t(
                    ? `${this.$t(
                        "resourceTypes." +
                        "resourceTypes." +
                          resource.type.specificType +
                          resource.type.specificType +
                          ".displayName"
                          ".displayName",
                      )}: `
                      )}: `
                    : "") + resource.displayName,
                    : "") + resource.displayName,
                href: {
                href: {
@@ -176,7 +176,7 @@ export default defineComponent({
                      ? `${this.$t(
                      ? `${this.$t(
                          "resourceTypes." +
                          "resourceTypes." +
                            resource.type.specificType +
                            resource.type.specificType +
                            ".displayName"
                            ".displayName",
                        )}: `
                        )}: `
                      : "") + resource.displayName,
                      : "") + resource.displayName,
                },
                },
@@ -274,17 +274,17 @@ export default defineComponent({
    widthActive(): string {
    widthActive(): string {
      if (this.sidebarActive) {
      if (this.sidebarActive) {
        return getComputedStyle(document.documentElement).getPropertyValue(
        return getComputedStyle(document.documentElement).getPropertyValue(
          "--sidebar-width-active"
          "--sidebar-width-active",
        );
        );
      } else {
      } else {
        return getComputedStyle(document.documentElement).getPropertyValue(
        return getComputedStyle(document.documentElement).getPropertyValue(
          "--sidebar-default-width"
          "--sidebar-default-width",
        );
        );
      }
      }
    },
    },
    widthCollapsed(): string {
    widthCollapsed(): string {
      return getComputedStyle(document.documentElement).getPropertyValue(
      return getComputedStyle(document.documentElement).getPropertyValue(
        "--sidebar-width-collapsed"
        "--sidebar-width-collapsed",
      );
      );
    },
    },
  },
  },
+1 −1
Original line number Original line Diff line number Diff line
@@ -103,7 +103,7 @@ export default defineComponent({
      ) {
      ) {
        this.tokenExpiredInterval = this.setInterval(
        this.tokenExpiredInterval = this.setInterval(
          this.notifyTokenExpired,
          this.notifyTokenExpired,
          this.mainStore.getCurrentTokenExpirationDuration()
          this.mainStore.getCurrentTokenExpirationDuration(),
        );
        );
      }
      }
    },
    },
+2 −2
Original line number Original line Diff line number Diff line
@@ -63,12 +63,12 @@ export default defineComponent({
            return h("template", { slot: place }, [
            return h("template", { slot: place }, [
              h(value.el, { class: value.class }, value.value),
              h(value.el, { class: value.class }, value.value),
            ]);
            ]);
          }
          },
        );
        );
        toastBody = h(
        toastBody = h(
          "i18n",
          "i18n",
          { props: { path: options.path, tag: options.tag } },
          { props: { path: options.path, tag: options.tag } },
          childNodes
          childNodes,
        );
        );
      }
      }
      // Build the toast body from a string
      // Build the toast body from a string
+3 −3
Original line number Original line Diff line number Diff line
@@ -5,7 +5,7 @@ import * as jose from "jose";
import { ref } from "vue";
import { ref } from "vue";


const secret = jose.base64url.decode(
const secret = jose.base64url.decode(
  "zH4NRP1HMALxxCFnRZABFA7GOJtzU_gIj02alfL1lvI"
  "zH4NRP1HMALxxCFnRZABFA7GOJtzU_gIj02alfL1lvI",
);
);


export const getTestMainState: () => Promise<MainState> = async () => {
export const getTestMainState: () => Promise<MainState> = async () => {
@@ -19,7 +19,7 @@ export const getTestMainState: () => Promise<MainState> = async () => {
            .setIssuer("coscine")
            .setIssuer("coscine")
            .setAudience("coscine")
            .setAudience("coscine")
            .setExpirationTime("2h")
            .setExpirationTime("2h")
            .encrypt(secret)
            .encrypt(secret),
        ),
        ),
      },
      },
      clientcorrelation: {
      clientcorrelation: {
@@ -33,7 +33,7 @@ export const getTestMainState: () => Promise<MainState> = async () => {
        maintenance: {},
        maintenance: {},
        maintenanceVisibility: useLocalStorage(
        maintenanceVisibility: useLocalStorage(
          "coscine.banner.maintenanceVisibility",
          "coscine.banner.maintenanceVisibility",
          ""
          "",
        ),
        ),
        dateString: useLocalStorage("coscine.banner.dateString", ""),
        dateString: useLocalStorage("coscine.banner.dateString", ""),
      },
      },
+1 −1
Original line number Original line Diff line number Diff line
@@ -47,7 +47,7 @@ export const getTestResource: () => Promise<VisitedResourceObject> =
    const ap = await parseRDFDefinition(
    const ap = await parseRDFDefinition(
      baseApplicationProfile,
      baseApplicationProfile,
      baseApplicationProfileFormat,
      baseApplicationProfileFormat,
      apUrl
      apUrl,
    );
    );
    const resourceObject: VisitedResourceObject = {
    const resourceObject: VisitedResourceObject = {
      applicationProfile: { uri: apUrl },
      applicationProfile: { uri: apUrl },
+3 −3
Original line number Original line Diff line number Diff line
@@ -28,17 +28,17 @@ const configuration = new MapperConfiguration((cfg) => {
    disciplines: (opt) =>
    disciplines: (opt) =>
      opt.mapFromUsing(
      opt.mapFromUsing(
        (e) => e.disciplines,
        (e) => e.disciplines,
        DisciplineDto2DisciplineForProjectManipulationDto
        DisciplineDto2DisciplineForProjectManipulationDto,
      ),
      ),
    visibility: (opt) =>
    visibility: (opt) =>
      opt.mapFromUsing(
      opt.mapFromUsing(
        (e) => e.visibility,
        (e) => e.visibility,
        VisibilityDto2VisibilityForProjectManipulationDto
        VisibilityDto2VisibilityForProjectManipulationDto,
      ),
      ),
    organizations: (opt) =>
    organizations: (opt) =>
      opt.mapFromUsing(
      opt.mapFromUsing(
        (e) => e.organizations,
        (e) => e.organizations,
        OrganizationDto2OrganizationForProjectManipulationDto
        OrganizationDto2OrganizationForProjectManipulationDto,
      ),
      ),
  });
  });
  // Other maps
  // Other maps
+20 −20
Original line number Original line Diff line number Diff line
@@ -76,22 +76,22 @@ const configuration = new MapperConfiguration((cfg) => {
        .preCondition((e) => e.license?.id !== undefined)
        .preCondition((e) => e.license?.id !== undefined)
        .mapFromUsing(
        .mapFromUsing(
          (e) => e.license,
          (e) => e.license,
          LicenseDto2LicenseForResourceManipulationDto
          LicenseDto2LicenseForResourceManipulationDto,
        ),
        ),
    visibility: (opt) =>
    visibility: (opt) =>
      opt.mapFromUsing(
      opt.mapFromUsing(
        (e) => e.visibility,
        (e) => e.visibility,
        VisibilityDto2VisibilityForResourceManipulationDto
        VisibilityDto2VisibilityForResourceManipulationDto,
      ),
      ),
    disciplines: (opt) =>
    disciplines: (opt) =>
      opt.mapFromUsing(
      opt.mapFromUsing(
        (e) => e.disciplines,
        (e) => e.disciplines,
        DisciplineDto2DisciplineForResourceManipulationDto
        DisciplineDto2DisciplineForResourceManipulationDto,
      ),
      ),
    resourceTypeOptions: (opt) =>
    resourceTypeOptions: (opt) =>
      opt.mapFromUsing(
      opt.mapFromUsing(
        (e) => e.type?.options,
        (e) => e.type?.options,
        ResourceTypeOptionsDto2ResourceTypeOptionsForUpdateDto
        ResourceTypeOptionsDto2ResourceTypeOptionsForUpdateDto,
      ),
      ),
  });
  });


@@ -102,28 +102,28 @@ const configuration = new MapperConfiguration((cfg) => {
      opt
      opt
        .mapFromUsing(
        .mapFromUsing(
          (e) => e.gitLab,
          (e) => e.gitLab,
          GitLabOptionsDto2GitlabResourceTypeOptionsForUpdateDto
          GitLabOptionsDto2GitlabResourceTypeOptionsForUpdateDto,
        )
        )
        .condition((con) => con.gitLab !== undefined),
        .condition((con) => con.gitLab !== undefined),
    rdsResourceTypeOptions: (opt) =>
    rdsResourceTypeOptions: (opt) =>
      opt
      opt
        .mapFromUsing(
        .mapFromUsing(
          (e) => e.rds,
          (e) => e.rds,
          RdsOptionsDto2RdsResourceTypeOptionsForManipulationDto
          RdsOptionsDto2RdsResourceTypeOptionsForManipulationDto,
        )
        )
        .condition((con) => con.rds !== undefined),
        .condition((con) => con.rds !== undefined),
    rdsS3ResourceTypeOptions: (opt) =>
    rdsS3ResourceTypeOptions: (opt) =>
      opt
      opt
        .mapFromUsing(
        .mapFromUsing(
          (e) => e.rdsS3,
          (e) => e.rdsS3,
          RdsS3OptionsDto2RdsS3ResourceTypeOptionsForManipulationDto
          RdsS3OptionsDto2RdsS3ResourceTypeOptionsForManipulationDto,
        )
        )
        .condition((con) => con.rdsS3 !== undefined),
        .condition((con) => con.rdsS3 !== undefined),
    rdsS3WormResourceTypeOptions: (opt) =>
    rdsS3WormResourceTypeOptions: (opt) =>
      opt
      opt
        .mapFromUsing(
        .mapFromUsing(
          (e) => e.rdsS3Worm,
          (e) => e.rdsS3Worm,
          RdsS3WormOptionsDto2RdsS3WormResourceTypeOptionsForManipulationDto
          RdsS3WormOptionsDto2RdsS3WormResourceTypeOptionsForManipulationDto,
        )
        )
        .condition((con) => con.rdsS3Worm !== undefined),
        .condition((con) => con.rdsS3Worm !== undefined),
  });
  });
@@ -131,50 +131,50 @@ const configuration = new MapperConfiguration((cfg) => {
    linkedResourceTypeOptions: (opt) =>
    linkedResourceTypeOptions: (opt) =>
      opt
      opt
        .preCondition(
        .preCondition(
          (rti) => rti.generalType === CoscineResourceTypes.LinkedData.General
          (rti) => rti.generalType === CoscineResourceTypes.LinkedData.General,
        )
        )
        .mapFrom((rti) =>
        .mapFrom((rti) =>
          rti.generalType === CoscineResourceTypes.LinkedData.General
          rti.generalType === CoscineResourceTypes.LinkedData.General
            ? {}
            ? {}
            : undefined
            : undefined,
        ),
        ),
    gitlabResourceTypeOptions: (opt) =>
    gitlabResourceTypeOptions: (opt) =>
      opt
      opt
        .preCondition(
        .preCondition(
          (rti) => rti.generalType === CoscineResourceTypes.Gitlab.General
          (rti) => rti.generalType === CoscineResourceTypes.Gitlab.General,
        )
        )
        .mapFrom((rti) =>
        .mapFrom((rti) =>
          rti.generalType === CoscineResourceTypes.Gitlab.General
          rti.generalType === CoscineResourceTypes.Gitlab.General
            ? ({} as GitlabResourceTypeOptionsForCreationDto)
            ? ({} as GitlabResourceTypeOptionsForCreationDto)
            : undefined
            : undefined,
        ),
        ),
    rdsResourceTypeOptions: (opt) =>
    rdsResourceTypeOptions: (opt) =>
      opt
      opt
        .preCondition(
        .preCondition(
          (rti) => rti.generalType === CoscineResourceTypes.Rds.General
          (rti) => rti.generalType === CoscineResourceTypes.Rds.General,
        )
        )
        .mapFrom((rti) =>
        .mapFrom((rti) =>
          rti.generalType === CoscineResourceTypes.Rds.General ? {} : undefined
          rti.generalType === CoscineResourceTypes.Rds.General ? {} : undefined,
        ),
        ),
    rdsS3ResourceTypeOptions: (opt) =>
    rdsS3ResourceTypeOptions: (opt) =>
      opt
      opt
        .preCondition(
        .preCondition(
          (rti) => rti.generalType === CoscineResourceTypes.RdsS3.General
          (rti) => rti.generalType === CoscineResourceTypes.RdsS3.General,
        )
        )
        .mapFrom((rti) =>
        .mapFrom((rti) =>
          rti.generalType === CoscineResourceTypes.RdsS3.General
          rti.generalType === CoscineResourceTypes.RdsS3.General
            ? {}
            ? {}
            : undefined
            : undefined,
        ),
        ),
    rdsS3WormResourceTypeOptions: (opt) =>
    rdsS3WormResourceTypeOptions: (opt) =>
      opt
      opt
        .preCondition(
        .preCondition(
          (rti) => rti.generalType === CoscineResourceTypes.RdsS3Worm.General
          (rti) => rti.generalType === CoscineResourceTypes.RdsS3Worm.General,
        )
        )
        .mapFrom((rti) =>
        .mapFrom((rti) =>
          rti.generalType === CoscineResourceTypes.RdsS3Worm.General
          rti.generalType === CoscineResourceTypes.RdsS3Worm.General
            ? {}
            ? {}
            : undefined
            : undefined,
        ),
        ),
  });
  });
  cfg.createAutoMap(GitLabOptionsDto2GitlabResourceTypeOptionsForUpdateDto, {});
  cfg.createAutoMap(GitLabOptionsDto2GitlabResourceTypeOptionsForUpdateDto, {});
@@ -187,14 +187,14 @@ const configuration = new MapperConfiguration((cfg) => {
    {
    {
      quota: (opt) =>
      quota: (opt) =>
        opt.mapFromUsing((e) => e.size, QuotaDto2QuotaForManipulationDto),
        opt.mapFromUsing((e) => e.size, QuotaDto2QuotaForManipulationDto),
    }
    },
  );
  );
  cfg.createAutoMap(
  cfg.createAutoMap(
    RdsS3WormOptionsDto2RdsS3WormResourceTypeOptionsForManipulationDto,
    RdsS3WormOptionsDto2RdsS3WormResourceTypeOptionsForManipulationDto,
    {
    {
      quota: (opt) =>
      quota: (opt) =>
        opt.mapFromUsing((e) => e.size, QuotaDto2QuotaForManipulationDto),
        opt.mapFromUsing((e) => e.size, QuotaDto2QuotaForManipulationDto),
    }
    },
  );
  );


  // Other maps
  // Other maps
+4 −4
Original line number Original line Diff line number Diff line
@@ -41,20 +41,20 @@ const configuration = new MapperConfiguration((cfg) => {
    disciplines: (opt) =>
    disciplines: (opt) =>
      opt.mapFromUsing(
      opt.mapFromUsing(
        (dto) => dto.disciplines,
        (dto) => dto.disciplines,
        DisciplineDto2DisciplineForUserManipulationDto
        DisciplineDto2DisciplineForUserManipulationDto,
      ),
      ),
    language: (opt) =>
    language: (opt) =>
      opt.mapFromUsing(
      opt.mapFromUsing(
        (dto) => dto.language,
        (dto) => dto.language,
        LanguageDto2LanguageForUserManipulationDto
        LanguageDto2LanguageForUserManipulationDto,
      ),
      ),
    institute: (opt) =>
    institute: (opt) =>
      opt.mapFrom((dto) =>
      opt.mapFrom((dto) =>
        dto.institutes?.length ? dto.institutes[0].displayName : ""
        dto.institutes?.length ? dto.institutes[0].displayName : "",
      ),
      ),
    organization: (opt) =>
    organization: (opt) =>
      opt.mapFrom((dto) =>
      opt.mapFrom((dto) =>
        dto.organizations?.length ? dto.organizations[0].displayName : null
        dto.organizations?.length ? dto.organizations[0].displayName : null,
      ),
      ),
  });
  });
  cfg.createAutoMap(TitleDto2TitleForUserManipulationDto, {});
  cfg.createAutoMap(TitleDto2TitleForUserManipulationDto, {});
+5 −5
Original line number Original line Diff line number Diff line
@@ -215,14 +215,14 @@ export default defineComponent({
      return projectQuotas.map((entry) => {
      return projectQuotas.map((entry) => {
        // Find corresponding entry
        // Find corresponding entry
        const resourceType = this.resourceTypes?.find(
        const resourceType = this.resourceTypes?.find(
          (q) => q.specificType === entry.resourceType?.specificType
          (q) => q.specificType === entry.resourceType?.specificType,
        );
        );


        // Populate the extended project quota object
        // Populate the extended project quota object
        const extended = {
        const extended = {
          ...entry,
          ...entry,
          iDisplayName: this.$t(
          iDisplayName: this.$t(
            `resourceTypes.${entry.resourceType?.specificType}.displayName`
            `resourceTypes.${entry.resourceType?.specificType}.displayName`,
          ).toString(),
          ).toString(),
          isEnabled: resourceType?.isEnabled,
          isEnabled: resourceType?.isEnabled,
          isQuotaAvailable: resourceType?.isQuotaAvailable,
          isQuotaAvailable: resourceType?.isQuotaAvailable,
@@ -323,7 +323,7 @@ export default defineComponent({
  methods: {
  methods: {
    async saveNewQuota(
    async saveNewQuota(
      project: ProjectDto | null | undefined,
      project: ProjectDto | null | undefined,
      resourceQuota: ExtendedProjectQuotaDto
      resourceQuota: ExtendedProjectQuotaDto,
    ) {
    ) {
      if (
      if (
        project &&
        project &&
@@ -340,7 +340,7 @@ export default defineComponent({
          const success = await this.adminStore.updateProjectQuota(
          const success = await this.adminStore.updateProjectQuota(
            project.id,
            project.id,
            resourceQuota.resourceType.id,
            resourceQuota.resourceType.id,
            quota
            quota,
          );
          );
          if (success) {
          if (success) {
            // On Success
            // On Success
@@ -395,7 +395,7 @@ export default defineComponent({
    },
    },
    formatUsed(quota: QuotaDto): string {
    formatUsed(quota: QuotaDto): string {
      return FileUtil.formatBytes(
      return FileUtil.formatBytes(
        FileUtil.convertCapacityUnits(quota, QuotaUnit.Byte)
        FileUtil.convertCapacityUnits(quota, QuotaUnit.Byte),
      );
      );
    },
    },
  },
  },
+6 −6
Original line number Original line Diff line number Diff line
@@ -69,8 +69,8 @@ describe("Admin", () => {
    // Resource types that are "active" are displayed and their count is equal to the count in the store
    // Resource types that are "active" are displayed and their count is equal to the count in the store
    expect(rowsOfEnabledOnlyResTypes.length).toEqual(
    expect(rowsOfEnabledOnlyResTypes.length).toEqual(
      wrapper.vm.$pinia.state.value.resource.resourceTypes.filter(
      wrapper.vm.$pinia.state.value.resource.resourceTypes.filter(
        (e: { isEnabled: boolean }) => e.isEnabled
        (e: { isEnabled: boolean }) => e.isEnabled,
      ).length
      ).length,
    );
    );


    quotaTable.vm.$data.showOnlyEnabledResources = false;
    quotaTable.vm.$data.showOnlyEnabledResources = false;
@@ -80,7 +80,7 @@ describe("Admin", () => {
      .findAll("tr");
      .findAll("tr");
    // Resource types both "active" and "hidden" are displayed and their count is equal to the count in the store
    // Resource types both "active" and "hidden" are displayed and their count is equal to the count in the store
    expect(rowsOfEnabledAndHiddenResTypes.length).toBeGreaterThanOrEqual(
    expect(rowsOfEnabledAndHiddenResTypes.length).toBeGreaterThanOrEqual(
      wrapper.vm.$pinia.state.value.resource.resourceTypes.length
      wrapper.vm.$pinia.state.value.resource.resourceTypes.length,
    );
    );


    // Ensure that input fields and buttons are rendered only on entries where isQuotaAvailable === true.
    // Ensure that input fields and buttons are rendered only on entries where isQuotaAvailable === true.
@@ -107,7 +107,7 @@ describe("Admin", () => {
        // If a button is present, it should be disabled when the input is empty
        // If a button is present, it should be disabled when the input is empty
        if (isButtonPresent) {
        if (isButtonPresent) {
          expect(
          expect(
            (buttons.at(0)?.element as HTMLButtonElement).disabled
            (buttons.at(0)?.element as HTMLButtonElement).disabled,
          ).toBeTruthy();
          ).toBeTruthy();
        }
        }


@@ -138,13 +138,13 @@ describe("Admin", () => {


          // Check that only one input field has the value "5"
          // Check that only one input field has the value "5"
          const inputWithValueFive = inputs.filter(
          const inputWithValueFive = inputs.filter(
            (input) => (input.element as HTMLInputElement).value === "5"
            (input) => (input.element as HTMLInputElement).value === "5",
          );
          );
          expect(inputWithValueFive.length).toBe(1);
          expect(inputWithValueFive.length).toBe(1);


          // Check that only one button is enabled
          // Check that only one button is enabled
          const enabledButtons = buttons.filter(
          const enabledButtons = buttons.filter(
            (button) => !(button.element as HTMLButtonElement).disabled
            (button) => !(button.element as HTMLButtonElement).disabled,
          );
          );
          expect(enabledButtons.length).toBe(1);
          expect(enabledButtons.length).toBe(1);
        }
        }
+4 −4
Original line number Original line Diff line number Diff line
@@ -52,10 +52,10 @@ export const useAdminStore = defineStore({
      try {
      try {
        const apiProjectResponse = await ProjectApi.getProject(
        const apiProjectResponse = await ProjectApi.getProject(
          projectString,
          projectString,
          false
          false,
        );
        );
        const projectQuotas = await wrapListRequest((pageNumber: number) =>
        const projectQuotas = await wrapListRequest((pageNumber: number) =>
          ProjectQuotaApi.getProjectQuotas(projectString, pageNumber, 150)
          ProjectQuotaApi.getProjectQuotas(projectString, pageNumber, 150),
        );
        );
        this.project = apiProjectResponse.data.data;
        this.project = apiProjectResponse.data.data;
        this.projectQuotas = projectQuotas;
        this.projectQuotas = projectQuotas;
@@ -67,7 +67,7 @@ export const useAdminStore = defineStore({
    async updateProjectQuota(
    async updateProjectQuota(
      projectId: string,
      projectId: string,
      resourceTypeId: string,
      resourceTypeId: string,
      quota: QuotaDto
      quota: QuotaDto,
    ): Promise<boolean> {
    ): Promise<boolean> {
      const notificationStore = useNotificationStore();
      const notificationStore = useNotificationStore();
      try {
      try {
@@ -78,7 +78,7 @@ export const useAdminStore = defineStore({
        await ProjectQuotaApi.updateProjectQuota(
        await ProjectQuotaApi.updateProjectQuota(
          projectId,
          projectId,
          resourceTypeId,
          resourceTypeId,
          projectQuotaForUpdateDto
          projectQuotaForUpdateDto,
        );
        );
        return true;
        return true;
      } catch (error) {
      } catch (error) {
+2 −2
Original line number Original line Diff line number Diff line
@@ -101,7 +101,7 @@ export default defineComponent({
          ? 1
          ? 1
          : b.displayName > a.displayName
          : b.displayName > a.displayName
            ? -1
            ? -1
          : 0
            : 0,
      );
      );
      return options;
      return options;
    },
    },
+6 −6
Original line number Original line Diff line number Diff line
@@ -38,7 +38,7 @@ describe("ToS.vue", () => {


    // initial state, Confirm Button is disabled
    // initial state, Confirm Button is disabled
    expect(wrapper.get("#confirmBtn").attributes()["disabled"]).toBe(
    expect(wrapper.get("#confirmBtn").attributes()["disabled"]).toBe(
      "disabled"
      "disabled",
    );
    );


    // check TosAccepted and PpAccepted
    // check TosAccepted and PpAccepted
@@ -50,7 +50,7 @@ describe("ToS.vue", () => {


    // Confirm button should be active
    // Confirm button should be active
    expect(wrapper.get("#confirmBtn").attributes()["disabled"]).not.toBe(
    expect(wrapper.get("#confirmBtn").attributes()["disabled"]).not.toBe(
      "disabled"
      "disabled",
    );
    );
  });
  });


@@ -70,7 +70,7 @@ describe("ToS.vue", () => {


    // initial state, Confirm Button is disabled
    // initial state, Confirm Button is disabled
    expect(wrapper.get("#confirmBtn").attributes()["disabled"]).toBe(
    expect(wrapper.get("#confirmBtn").attributes()["disabled"]).toBe(
      "disabled"
      "disabled",
    );
    );


    // check TosAccepted
    // check TosAccepted
@@ -79,7 +79,7 @@ describe("ToS.vue", () => {


    // Confirm button should be disabled, since PP not accepted
    // Confirm button should be disabled, since PP not accepted
    expect(wrapper.get("#confirmBtn").attributes()["disabled"]).toBe(
    expect(wrapper.get("#confirmBtn").attributes()["disabled"]).toBe(
      "disabled"
      "disabled",
    );
    );
  });
  });


@@ -99,7 +99,7 @@ describe("ToS.vue", () => {


    // initial state, Confirm Button is disabled
    // initial state, Confirm Button is disabled
    expect(wrapper.get("#confirmBtn").attributes()["disabled"]).toBe(
    expect(wrapper.get("#confirmBtn").attributes()["disabled"]).toBe(
      "disabled"
      "disabled",
    );
    );


    // check PpAccepted
    // check PpAccepted
@@ -108,7 +108,7 @@ describe("ToS.vue", () => {


    // Confirm button should be disabled, since PP not accepted
    // Confirm button should be disabled, since PP not accepted
    expect(wrapper.get("#confirmBtn").attributes()["disabled"]).toBe(
    expect(wrapper.get("#confirmBtn").attributes()["disabled"]).toBe(
      "disabled"
      "disabled",
    );
    );
  });
  });
});
});
+3 −3
Original line number Original line Diff line number Diff line
@@ -24,11 +24,11 @@ describe("Login Store", () => {
    /* Fill the local storage */
    /* Fill the local storage */
    localStorage.setItem(
    localStorage.setItem(
      "coscine.clientcorrelation.id",
      "coscine.clientcorrelation.id",
      "f7aef8bc-77f4-4679-9f5d-5724fbdf4513"
      "f7aef8bc-77f4-4679-9f5d-5724fbdf4513",
    );
    );
    localStorage.setItem(
    localStorage.setItem(
      "coscine.authorization.bearer",
      "coscine.authorization.bearer",
      "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
      "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    );
    );
    localStorage.setItem("coscine.locale", "en");
    localStorage.setItem("coscine.locale", "en");
    localStorage.setItem("coscine.banner.maintenanceVisibility", "");
    localStorage.setItem("coscine.banner.maintenanceVisibility", "");
@@ -44,7 +44,7 @@ describe("Login Store", () => {
    expect(localStorage.getItem("coscine.authorization.bearer")).toBeNull();
    expect(localStorage.getItem("coscine.authorization.bearer")).toBeNull();
    expect(sessionStorage.length).toBe(0);
    expect(sessionStorage.length).toBe(0);
    expect(window.location.href).toBe(
    expect(window.location.href).toBe(
      "/coscine/api/Coscine.Api.STS/account/logout"
      "/coscine/api/Coscine.Api.STS/account/logout",
    );
    );
  });
  });
});
});
+1 −1
Original line number Original line Diff line number Diff line
@@ -120,7 +120,7 @@ export const useLoginStore = defineStore({
            `https://orcid.org/userStatus.json${
            `https://orcid.org/userStatus.json${
              logUserOut ? "?logUserOut=true" : ""
              logUserOut ? "?logUserOut=true" : ""
            }`,
            }`,
            { withCredentials: true }
            { withCredentials: true },
          )
          )
          .then((result) => {
          .then((result) => {
            return result.data["loggedIn"] as boolean;
            return result.data["loggedIn"] as boolean;
+1 −1
Original line number Original line Diff line number Diff line
@@ -231,7 +231,7 @@ export default defineComponent({
          const success = await this.pidStore.contactPidOwner(
          const success = await this.pidStore.contactPidOwner(
            prefix,
            prefix,
            id,
            id,
            this.form
            this.form,
          );
          );


          if (success) {
          if (success) {
+2 −2
Original line number Original line Diff line number Diff line
@@ -70,14 +70,14 @@ export const usePidStore = defineStore({
    async contactPidOwner(
    async contactPidOwner(
      prefix: string,
      prefix: string,
      id: string,
      id: string,
      pidRequestDto: PidRequestDto
      pidRequestDto: PidRequestDto,
    ): Promise<boolean | null> {
    ): Promise<boolean | null> {
      const notificationStore = useNotificationStore();
      const notificationStore = useNotificationStore();
      try {
      try {
        const apiResponse = await PidApi.sendRequestToOwner(
        const apiResponse = await PidApi.sendRequestToOwner(
          prefix,
          prefix,
          id,
          id,
          pidRequestDto
          pidRequestDto,
        );
        );
        // Note: Beware that only 204 (No Content) is considered a success in this implementation.
        // Note: Beware that only 204 (No Content) is considered a success in this implementation.
        return apiResponse.status === StatusCodes.NO_CONTENT ? true : false;
        return apiResponse.status === StatusCodes.NO_CONTENT ? true : false;
+1 −1
Original line number Original line Diff line number Diff line
@@ -88,7 +88,7 @@ export default defineComponent({
      }
      }
      // Load list of Available Resource Types for the project if not present
      // Load list of Available Resource Types for the project if not present
      await this.resourceStore.retrieveAvailableResourceTypesInformationForProject(
      await this.resourceStore.retrieveAvailableResourceTypesInformationForProject(
        this.project
        this.project,
      );
      );
    },
    },
  },
  },
+4 −4
Original line number Original line Diff line number Diff line
@@ -49,10 +49,10 @@ describe("ConfigurationMetadata.vue", () => {


    // Check initial state of buttons
    // Check initial state of buttons
    expect(
    expect(
      (wrapper.get("#DeleteProjectBtn").element as HTMLButtonElement).disabled
      (wrapper.get("#DeleteProjectBtn").element as HTMLButtonElement).disabled,
    ).toBeFalsy(); // Delete button - active
    ).toBeFalsy(); // Delete button - active
    expect(
    expect(
      (wrapper.get("#SubmitProjectBtn").element as HTMLButtonElement).disabled
      (wrapper.get("#SubmitProjectBtn").element as HTMLButtonElement).disabled,
    ).toBeTruthy(); // Submit button - disabled
    ).toBeTruthy(); // Submit button - disabled


    await wrapper.vm.$nextTick();
    await wrapper.vm.$nextTick();
@@ -67,10 +67,10 @@ describe("ConfigurationMetadata.vue", () => {


    // Buttons should be enabled
    // Buttons should be enabled
    expect(
    expect(
      (wrapper.get("#DeleteProjectBtn").element as HTMLButtonElement).disabled
      (wrapper.get("#DeleteProjectBtn").element as HTMLButtonElement).disabled,
    ).toBeFalsy(); // Delete button - active
    ).toBeFalsy(); // Delete button - active
    expect(
    expect(
      (wrapper.get("#SubmitProjectBtn").element as HTMLButtonElement).disabled
      (wrapper.get("#SubmitProjectBtn").element as HTMLButtonElement).disabled,
    ).toBeFalsy(); // Submit button - active
    ).toBeFalsy(); // Submit button - active
  });
  });
});
});
+2 −2
Original line number Original line Diff line number Diff line
@@ -194,7 +194,7 @@ export default defineComponent({
        // Fill the form. Note that regular assignment breaks reactivity!
        // Fill the form. Note that regular assignment breaks reactivity!
        const mapped = projectMapper.map(
        const mapped = projectMapper.map(
          ProjectDto2ProjectForUpdateDto,
          ProjectDto2ProjectForUpdateDto,
          this.project
          this.project,
        );
        );
        Object.assign(this.projectForUpdate, mapped); // Use this to only copy the properties
        Object.assign(this.projectForUpdate, mapped); // Use this to only copy the properties
        this.isLoading = false;
        this.isLoading = false;
@@ -249,7 +249,7 @@ export default defineComponent({


      const success = await this.projectStore.updateProject(
      const success = await this.projectStore.updateProject(
        this.project.id,
        this.project.id,
        this.projectForUpdate
        this.projectForUpdate,
      );
      );


      this.isWaitingForResponse = false;
      this.isWaitingForResponse = false;
+2 −2
Original line number Original line Diff line number Diff line
@@ -126,7 +126,7 @@ export default defineComponent({
      const memberships = this.userStore.user?.organizations;
      const memberships = this.userStore.user?.organizations;
      if (memberships) {
      if (memberships) {
        return memberships.some(
        return memberships.some(
          (membership) => membership.uri === "https://ror.org/04xfq0f34"
          (membership) => membership.uri === "https://ror.org/04xfq0f34",
        );
        );
      }
      }
      return false;
      return false;
@@ -175,7 +175,7 @@ export default defineComponent({
      // Trigger API call to create a new project
      // Trigger API call to create a new project
      this.isWaitingForResponse = true;
      this.isWaitingForResponse = true;
      const createdProject = await this.projectStore.storeProject(
      const createdProject = await this.projectStore.storeProject(
        this.projectForCreation
        this.projectForCreation,
      );
      );
      if (createdProject) {
      if (createdProject) {
        // On Success
        // On Success
+1 −1
Original line number Original line Diff line number Diff line
@@ -71,7 +71,7 @@ export default defineComponent({
        this.$router.push(to);
        this.$router.push(to);
      } else {
      } else {
        console.error(
        console.error(
          `Slug for ${project.displayName} is possibly undefined...`
          `Slug for ${project.displayName} is possibly undefined...`,
        );
        );
      }
      }
    },
    },
+7 −7
Original line number Original line Diff line number Diff line
@@ -186,7 +186,7 @@ export default defineComponent({
    memberRole(): RoleDto | null | undefined {
    memberRole(): RoleDto | null | undefined {
      if (this.roles) {
      if (this.roles) {
        return this.roles.find(
        return this.roles.find(
          (role) => role.displayName === this.roleStrings.member
          (role) => role.displayName === this.roleStrings.member,
        );
        );
      }
      }
      return null;
      return null;
@@ -194,7 +194,7 @@ export default defineComponent({
    ownerRole(): RoleDto | null | undefined {
    ownerRole(): RoleDto | null | undefined {
      if (this.roles) {
      if (this.roles) {
        return this.roles.find(
        return this.roles.find(
          (role) => role.displayName === this.roleStrings.owner
          (role) => role.displayName === this.roleStrings.owner,
        );
        );
      }
      }
      return null;
      return null;
@@ -202,7 +202,7 @@ export default defineComponent({
    ownerCount(): number {
    ownerCount(): number {
      if (this.projectRoles && this.ownerRole) {
      if (this.projectRoles && this.ownerRole) {
        return this.projectRoles.filter(
        return this.projectRoles.filter(
          (projectRole) => projectRole.role?.id === this.ownerRole?.id
          (projectRole) => projectRole.role?.id === this.ownerRole?.id,
        ).length;
        ).length;
      }
      }
      return 0;
      return 0;
@@ -290,7 +290,7 @@ export default defineComponent({
      projectId: string,
      projectId: string,
      value: ProjectInvitationForProjectManipulationDto,
      value: ProjectInvitationForProjectManipulationDto,
      toastText: string,
      toastText: string,
      errorText: string
      errorText: string,
    ) {
    ) {
      try {
      try {
        await this.projectStore.storeInvitation(projectId, value);
        await this.projectStore.storeInvitation(projectId, value);
@@ -327,7 +327,7 @@ export default defineComponent({
        this.project?.id ?? "",
        this.project?.id ?? "",
        invitation,
        invitation,
        text,
        text,
        errorText
        errorText,
      );
      );
    },
    },


@@ -344,7 +344,7 @@ export default defineComponent({
          project: this.projectName,
          project: this.projectName,
        }).toString();
        }).toString();
        const worked = await this.projectStore.deleteInvitation(
        const worked = await this.projectStore.deleteInvitation(
          this.selectedInvitation
          this.selectedInvitation,
        );
        );
        if (worked) {
        if (worked) {
          await this.projectStore.retrieveInvitations(this.project);
          await this.projectStore.retrieveInvitations(this.project);
@@ -405,7 +405,7 @@ export default defineComponent({
          projectRole.id,
          projectRole.id,
          {
          {
            roleId: projectRole.role?.id,
            roleId: projectRole.role?.id,
          } as ProjectRoleForProjectManipulationDto
          } as ProjectRoleForProjectManipulationDto,
        );
        );
        await this.getProjectRoles();
        await this.getProjectRoles();
        this.notificationStore.postNotification({
        this.notificationStore.postNotification({
+3 −3
Original line number Original line Diff line number Diff line
@@ -202,7 +202,7 @@ export default defineComponent({
        this.$router.push(to);
        this.$router.push(to);
      } else {
      } else {
        console.error(
        console.error(
          `Slug for ${project.displayName} is possibly undefined...`
          `Slug for ${project.displayName} is possibly undefined...`,
        );
        );
      }
      }
    },
    },
@@ -213,7 +213,7 @@ export default defineComponent({
        this.$router.push(to);
        this.$router.push(to);
      } else {
      } else {
        console.error(
        console.error(
          `ID for ${resource.displayName} is possibly undefined...`
          `ID for ${resource.displayName} is possibly undefined...`,
        );
        );
      }
      }
    },
    },
@@ -224,7 +224,7 @@ export default defineComponent({
        this.$router.push(to);
        this.$router.push(to);
      } else {
      } else {
        console.error(
        console.error(
          `ID for ${resource.displayName} is possibly undefined...`
          `ID for ${resource.displayName} is possibly undefined...`,
        );
        );
      }
      }
    },
    },
+16 −16
Original line number Original line Diff line number Diff line
@@ -332,7 +332,7 @@ export default defineComponent({
    },
    },
    resources(): ResourceDto[] | null | undefined {
    resources(): ResourceDto[] | null | undefined {
      return this.project?.resources?.filter(
      return this.project?.resources?.filter(
        (r) => r.type?.id === this.selectedResourceTypeId
        (r) => r.type?.id === this.selectedResourceTypeId,
      );
      );
    },
    },
    resourceTypesQuotas(): ProjectQuotaDto[] | null {
    resourceTypesQuotas(): ProjectQuotaDto[] | null {
@@ -347,7 +347,7 @@ export default defineComponent({
          if (r.isQuotaAvailable && r.isEnabled) {
          if (r.isQuotaAvailable && r.isEnabled) {
            const labeledResourceType: ExtendedResourceTypeInformationDto = {
            const labeledResourceType: ExtendedResourceTypeInformationDto = {
              iDisplayName: this.$t(
              iDisplayName: this.$t(
                "resourceTypes." + r.specificType + ".displayName"
                "resourceTypes." + r.specificType + ".displayName",
              ).toString(),
              ).toString(),
            };
            };
            Object.assign(labeledResourceType, r);
            Object.assign(labeledResourceType, r);
@@ -367,7 +367,7 @@ export default defineComponent({
      | ExtendedResourceTypeInformationDto
      | ExtendedResourceTypeInformationDto
      | undefined {
      | undefined {
      return this.resourceTypesInformation?.find(
      return this.resourceTypesInformation?.find(
        (rt) => rt.id === this.selectedResourceTypeId
        (rt) => rt.id === this.selectedResourceTypeId,
      );
      );
    },
    },
  },
  },
@@ -427,7 +427,7 @@ export default defineComponent({
        const success = await this.projectStore.updateResourceTypeProjectQuota(
        const success = await this.projectStore.updateResourceTypeProjectQuota(
          this.project,
          this.project,
          this.selectedResourceTypeInformation,
          this.selectedResourceTypeInformation,
          projectQuotaForUpdate
          projectQuotaForUpdate,
        );
        );
        if (success) {
        if (success) {
          // On Success
          // On Success
@@ -435,7 +435,7 @@ export default defineComponent({
          await this.projectStore.retrieveResourceTypeQuotas(this.project);
          await this.projectStore.retrieveResourceTypeQuotas(this.project);
          this.notificationStore.postNotification({
          this.notificationStore.postNotification({
            title: this.$t(
            title: this.$t(
              "page.quota.resourceTypeQuotaChangedSuccessTitle"
              "page.quota.resourceTypeQuotaChangedSuccessTitle",
            ).toString(),
            ).toString(),
            body: this.$t("page.quota.resourceTypeQuotaChangedSuccessBody", {
            body: this.$t("page.quota.resourceTypeQuotaChangedSuccessBody", {
              ProjectName: this.project.displayName,
              ProjectName: this.project.displayName,
@@ -446,10 +446,10 @@ export default defineComponent({
          // On Failure
          // On Failure
          this.notificationStore.postNotification({
          this.notificationStore.postNotification({
            title: this.$t(
            title: this.$t(
              "page.quota.resourceTypeQuotaChangedFailureTitle"
              "page.quota.resourceTypeQuotaChangedFailureTitle",
            ).toString(),
            ).toString(),
            body: this.$t(
            body: this.$t(
              "page.quota.resourceTypeQuotaChangedFailureBody"
              "page.quota.resourceTypeQuotaChangedFailureBody",
            ).toString(),
            ).toString(),
            variant: "warning",
            variant: "warning",
          });
          });
@@ -464,7 +464,7 @@ export default defineComponent({
     * @returns {Promise<void>} - A promise that resolves once the quota is updated.
     * @returns {Promise<void>} - A promise that resolves once the quota is updated.
     */
     */
    async updateResourceQuota(
    async updateResourceQuota(
      resourceQuotaDto: ResourceQuotaDto
      resourceQuotaDto: ResourceQuotaDto,
    ): Promise<void> {
    ): Promise<void> {
      if (
      if (
        this.project?.id &&
        this.project?.id &&
@@ -482,7 +482,7 @@ export default defineComponent({
        const success = await this.projectStore.updateResourceQuota(
        const success = await this.projectStore.updateResourceQuota(
          this.project.id,
          this.project.id,
          resourceQuotaDto?.resource.id,
          resourceQuotaDto?.resource.id,
          desiredReservedResourceQuota
          desiredReservedResourceQuota,
        );
        );


        if (success) {
        if (success) {
@@ -491,11 +491,11 @@ export default defineComponent({
          await this.projectStore.retrieveResourceTypeQuotas(this.project);
          await this.projectStore.retrieveResourceTypeQuotas(this.project);
          this.notificationStore.postNotification({
          this.notificationStore.postNotification({
            title: this.$t(
            title: this.$t(
              "page.quota.resourceQuotaChangedSuccessTitle"
              "page.quota.resourceQuotaChangedSuccessTitle",
            ).toString(),
            ).toString(),
            body: this.$t("page.quota.resourceQuotaChangedSuccessBody", {
            body: this.$t("page.quota.resourceQuotaChangedSuccessBody", {
              ResourceName: this.resources?.find(
              ResourceName: this.resources?.find(
                (r) => r.id === resourceQuotaDto.resource?.id
                (r) => r.id === resourceQuotaDto.resource?.id,
              )?.displayName,
              )?.displayName,
              AmountInGB: this.toGiB(resourceQuotaDto.reserved),
              AmountInGB: this.toGiB(resourceQuotaDto.reserved),
            }).toString(),
            }).toString(),
@@ -504,10 +504,10 @@ export default defineComponent({
          // On Failure
          // On Failure
          this.notificationStore.postNotification({
          this.notificationStore.postNotification({
            title: this.$t(
            title: this.$t(
              "page.quota.resourceQuotaChangedFailureTitle"
              "page.quota.resourceQuotaChangedFailureTitle",
            ).toString(),
            ).toString(),
            body: this.$t(
            body: this.$t(
              "page.quota.resourceQuotaChangedFailureBody"
              "page.quota.resourceQuotaChangedFailureBody",
            ).toString(),
            ).toString(),
            variant: "warning",
            variant: "warning",
          });
          });
@@ -549,7 +549,7 @@ export default defineComponent({
     */
     */
    formatUsed(quota: QuotaDto): string {
    formatUsed(quota: QuotaDto): string {
      return FileUtil.formatBytes(
      return FileUtil.formatBytes(
        FileUtil.convertCapacityUnits(quota, QuotaUnit.Byte)
        FileUtil.convertCapacityUnits(quota, QuotaUnit.Byte),
      );
      );
    },
    },


@@ -601,8 +601,8 @@ export default defineComponent({
    cloneSelectedQuotas() {
    cloneSelectedQuotas() {
      this.selectedQuotas = _.cloneDeep(
      this.selectedQuotas = _.cloneDeep(
        this.resourceTypesQuotas?.find(
        this.resourceTypesQuotas?.find(
          (rtq) => rtq.resourceType?.id === this.selectedResourceTypeId
          (rtq) => rtq.resourceType?.id === this.selectedResourceTypeId,
        )
        ),
      );
      );
    },
    },


+8 −8
Original line number Original line Diff line number Diff line
@@ -244,7 +244,7 @@
        <b-link
        <b-link
          :href="
          :href="
            $t(
            $t(
              'form.project.projectMetadataVisibilityLabelPopoverUrl'
              'form.project.projectMetadataVisibilityLabelPopoverUrl',
            ).toString()
            ).toString()
          "
          "
          target="_blank"
          target="_blank"
@@ -348,7 +348,7 @@ export default defineComponent({
  },
  },
  emits: {
  emits: {
    validation: (
    validation: (
      _: BaseValidation<ProjectForCreationDto | ProjectForUpdateDto>
      _: BaseValidation<ProjectForCreationDto | ProjectForUpdateDto>,
    ) => true,
    ) => true,
  },
  },


@@ -522,20 +522,20 @@ export default defineComponent({
        project.disciplines?.map((discipline) =>
        project.disciplines?.map((discipline) =>
          projectMapper.map(
          projectMapper.map(
            DisciplineDto2DisciplineForProjectManipulationDto,
            DisciplineDto2DisciplineForProjectManipulationDto,
            discipline
            discipline,
          )
          ),
        ) ?? [];
        ) ?? [];
      this.projectForManipulation.organizations =
      this.projectForManipulation.organizations =
        project.organizations?.map((organization) =>
        project.organizations?.map((organization) =>
          projectMapper.map(
          projectMapper.map(
            OrganizationDto2OrganizationForProjectManipulationDto,
            OrganizationDto2OrganizationForProjectManipulationDto,
            organization
            organization,
          )
          ),
        ) ?? [];
        ) ?? [];
      this.projectForManipulation.keywords = project.keywords;
      this.projectForManipulation.keywords = project.keywords;
      this.projectForManipulation.visibility = projectMapper.map(
      this.projectForManipulation.visibility = projectMapper.map(
        VisibilityDto2VisibilityForProjectManipulationDto,
        VisibilityDto2VisibilityForProjectManipulationDto,
        project.visibility
        project.visibility,
      );
      );
      this.projectForManipulation.grantId = project.grantId;
      this.projectForManipulation.grantId = project.grantId;


@@ -564,7 +564,7 @@ export default defineComponent({
    setDefaultVisibility() {
    setDefaultVisibility() {
      if (this.visibilities) {
      if (this.visibilities) {
        const visibility = this.visibilities.find(
        const visibility = this.visibilities.find(
          (entry) => entry.displayName === "Project Members"
          (entry) => entry.displayName === "Project Members",
        );
        );


        if (visibility?.id) {
        if (visibility?.id) {
+1 −1
Original line number Original line Diff line number Diff line
@@ -122,7 +122,7 @@ export default defineComponent({
  },
  },
  emits: {
  emits: {
    validation: (
    validation: (
      _: BaseValidation<ProjectForCreationDto | ProjectForUpdateDto>
      _: BaseValidation<ProjectForCreationDto | ProjectForUpdateDto>,
    ) => true,
    ) => true,
  },
  },


+1 −1
Original line number Original line Diff line number Diff line
@@ -90,7 +90,7 @@ export default defineComponent({
    copyPid() {
    copyPid() {
      if (this.projectForm) {
      if (this.projectForm) {
        navigator.clipboard.writeText(
        navigator.clipboard.writeText(
          "http://hdl.handle.net/" + this.projectForm.pid
          "http://hdl.handle.net/" + this.projectForm.pid,
        );
        );
        this.$root.$emit("bv::show::tooltip", "copyPidTooltip");
        this.$root.$emit("bv::show::tooltip", "copyPidTooltip");
      }
      }
+3 −3
Original line number Original line Diff line number Diff line
@@ -165,7 +165,7 @@ export default defineComponent({
      return this.projectRoles?.find(
      return this.projectRoles?.find(
        (r) =>
        (r) =>
          r.user?.id === this.currentUser?.id &&
          r.user?.id === this.currentUser?.id &&
          r.project?.id === this.project?.id
          r.project?.id === this.project?.id,
      );
      );
    },
    },
    isOwner(): boolean | undefined {
    isOwner(): boolean | undefined {
@@ -177,7 +177,7 @@ export default defineComponent({
        return currentRoles.filter(
        return currentRoles.filter(
          (projectRole) =>
          (projectRole) =>
            projectRole.role &&
            projectRole.role &&
            projectRole.role.displayName === this.ownerString
            projectRole.role.displayName === this.ownerString,
        ).length;
        ).length;
      }
      }
      return undefined;
      return undefined;
@@ -189,7 +189,7 @@ export default defineComponent({
      if (this.project) {
      if (this.project) {
        this.projectStore.deleteProjectAssociation(
        this.projectStore.deleteProjectAssociation(
          this.project,
          this.project,
          this.currentUserProjectRole
          this.currentUserProjectRole,
        );
        );
      }
      }
    },
    },
+3 −3
Original line number Original line Diff line number Diff line
@@ -284,7 +284,7 @@ export default defineComponent({
      }
      }
      this.queryTimer = window.setTimeout(
      this.queryTimer = window.setTimeout(
        () => this.fetchUserOptions(search, loading),
        () => this.fetchUserOptions(search, loading),
        1000
        1000,
      );
      );
    },
    },
    async fetchUserOptions(search: string, loading: (value: boolean) => void) {
    async fetchUserOptions(search: string, loading: (value: boolean) => void) {
+3 −3
Original line number Original line Diff line number Diff line
@@ -123,7 +123,7 @@ export default defineComponent({
      if (this.projects && this.project) {
      if (this.projects && this.project) {
        const currentProject = this.project;
        const currentProject = this.project;
        return this.projects.filter(
        return this.projects.filter(
          (project) => project.id !== currentProject.id
          (project) => project.id !== currentProject.id,
        );
        );
      }
      }
      return null;
      return null;
@@ -140,8 +140,8 @@ export default defineComponent({
        (projectRole) =>
        (projectRole) =>
          !this.projectRoles?.some(
          !this.projectRoles?.some(
            (currentProjectRole) =>
            (currentProjectRole) =>
              projectRole.user?.id === currentProjectRole.user?.id
              projectRole.user?.id === currentProjectRole.user?.id,
          )
          ),
      );
      );
      this.additionalMembers.forEach((additionalMember) => {
      this.additionalMembers.forEach((additionalMember) => {
        if (this.memberRole) {
        if (this.memberRole) {
+2 −2
Original line number Original line Diff line number Diff line
@@ -82,7 +82,7 @@ export default defineComponent({
  },
  },
  methods: {
  methods: {
    getRoleNameFromId(
    getRoleNameFromId(
      roleId: string | null | undefined
      roleId: string | null | undefined,
    ): string | null | undefined {
    ): string | null | undefined {
      if (this.roles && roleId) {
      if (this.roles && roleId) {
        for (const role of this.roles) {
        for (const role of this.roles) {
@@ -110,7 +110,7 @@ export default defineComponent({
        this.candidateForInvitation.projectId,
        this.candidateForInvitation.projectId,
        this.candidateForInvitation,
        this.candidateForInvitation,
        text,
        text,
        errorText
        errorText,
      );
      );
      this.$bvModal.hide("inviteUserModal");
      this.$bvModal.hide("inviteUserModal");
    },
    },
+38 −38
Original line number Original line Diff line number Diff line
@@ -133,7 +133,7 @@ export const useProjectStore = defineStore({
          currentParentProjectId !== "00000000-0000-0000-0000-000000000000"
          currentParentProjectId !== "00000000-0000-0000-0000-000000000000"
        ) {
        ) {
          const parentProject = this.allProjects.find(
          const parentProject = this.allProjects.find(
            (project) => project.id === currentParentProjectId
            (project) => project.id === currentParentProjectId,
          );
          );
          if (parentProject) {
          if (parentProject) {
            if (parentProjects.includes(parentProject)) {
            if (parentProjects.includes(parentProject)) {
@@ -181,7 +181,7 @@ export const useProjectStore = defineStore({
      if (currentRoles && currentUser) {
      if (currentRoles && currentUser) {
        const userProjectRole = currentRoles.find(
        const userProjectRole = currentRoles.find(
          (projectRole) =>
          (projectRole) =>
            projectRole.user && projectRole.user.id === currentUser.id
            projectRole.user && projectRole.user.id === currentUser.id,
        );
        );
        return userProjectRole ? userProjectRole.role : null;
        return userProjectRole ? userProjectRole.role : null;
      } else {
      } else {
@@ -228,7 +228,7 @@ export const useProjectStore = defineStore({
      const notificationStore = useNotificationStore();
      const notificationStore = useNotificationStore();
      try {
      try {
        this.allProjects = await wrapListRequest((pageNumber: number) =>
        this.allProjects = await wrapListRequest((pageNumber: number) =>
          ProjectApi.getProjects(false, pageNumber, 150)
          ProjectApi.getProjects(false, pageNumber, 150),
        );
        );
      } catch (error) {
      } catch (error) {
        // Handle other Status Codes
        // Handle other Status Codes
@@ -240,7 +240,7 @@ export const useProjectStore = defineStore({
      const notificationStore = useNotificationStore();
      const notificationStore = useNotificationStore();
      try {
      try {
        this.topLevelProjects = await wrapListRequest((pageNumber: number) =>
        this.topLevelProjects = await wrapListRequest((pageNumber: number) =>
          ProjectApi.getProjects(true, pageNumber, 150)
          ProjectApi.getProjects(true, pageNumber, 150),
        );
        );
      } catch (error) {
      } catch (error) {
        // Handle other Status Codes
        // Handle other Status Codes
@@ -265,7 +265,7 @@ export const useProjectStore = defineStore({
      try {
      try {
        if (project?.id && project?.slug) {
        if (project?.id && project?.slug) {
          const apiResponse = await ProjectInvitationApi.getProjectInvitations(
          const apiResponse = await ProjectInvitationApi.getProjectInvitations(
            project.id
            project.id,
          );
          );
          this.visitedProjects[project.slug].invitations =
          this.visitedProjects[project.slug].invitations =
            apiResponse.data.data ?? null;
            apiResponse.data.data ?? null;
@@ -290,7 +290,7 @@ export const useProjectStore = defineStore({
      project: ProjectDto | null,
      project: ProjectDto | null,
      pageNumber?: number,
      pageNumber?: number,
      pageSize?: number,
      pageSize?: number,
      orderBy?: string
      orderBy?: string,
    ): Promise<ResourceDtoPagedResponse> {
    ): Promise<ResourceDtoPagedResponse> {
      const notificationStore = useNotificationStore();
      const notificationStore = useNotificationStore();
      try {
      try {
@@ -299,7 +299,7 @@ export const useProjectStore = defineStore({
            project.id,
            project.id,
            pageNumber,
            pageNumber,
            pageSize,
            pageSize,
            orderBy
            orderBy,
          );
          );
          return apiResponse.data;
          return apiResponse.data;
        } else {
        } else {
@@ -344,7 +344,7 @@ export const useProjectStore = defineStore({
            // Retrieve the next page
            // Retrieve the next page
            resources = await this.getPagedResourcesForProject(
            resources = await this.getPagedResourcesForProject(
              project,
              project,
              nextPage
              nextPage,
            );
            );
            if (resources.data) {
            if (resources.data) {
              // Extend the data with the newly fetched data
              // Extend the data with the newly fetched data
@@ -366,14 +366,14 @@ export const useProjectStore = defineStore({
     * @returns {Promise<void>} - A promise that resolves once the resource type quotas are retrieved.
     * @returns {Promise<void>} - A promise that resolves once the resource type quotas are retrieved.
     */
     */
    async retrieveResourceTypeQuotas(
    async retrieveResourceTypeQuotas(
      project: ProjectDto | null
      project: ProjectDto | null,
    ): Promise<void> {
    ): Promise<void> {
      const notificationStore = useNotificationStore();
      const notificationStore = useNotificationStore();
      try {
      try {
        if (project?.id && project?.slug) {
        if (project?.id && project?.slug) {
          const projectId = project.id;
          const projectId = project.id;
          const projectQuotas = await wrapListRequest((pageNumber: number) =>
          const projectQuotas = await wrapListRequest((pageNumber: number) =>
            ProjectQuotaApi.getProjectQuotas(projectId, pageNumber)
            ProjectQuotaApi.getProjectQuotas(projectId, pageNumber),
          );
          );
          this.visitedProjects[project.slug].quotas = projectQuotas ?? [];
          this.visitedProjects[project.slug].quotas = projectQuotas ?? [];
        } else {
        } else {
@@ -403,7 +403,7 @@ export const useProjectStore = defineStore({
    async updateResourceTypeProjectQuota(
    async updateResourceTypeProjectQuota(
      project: ProjectDto,
      project: ProjectDto,
      resourceType: ResourceTypeInformationDto,
      resourceType: ResourceTypeInformationDto,
      quota: ProjectQuotaForUpdateDto
      quota: ProjectQuotaForUpdateDto,
    ): Promise<boolean> {
    ): Promise<boolean> {
      const notificationStore = useNotificationStore();
      const notificationStore = useNotificationStore();
      try {
      try {
@@ -411,12 +411,12 @@ export const useProjectStore = defineStore({
          await ProjectQuotaApi.updateProjectQuota(
          await ProjectQuotaApi.updateProjectQuota(
            project.id,
            project.id,
            resourceType.id,
            resourceType.id,
            quota
            quota,
          );
          );
          return true;
          return true;
        } else {
        } else {
          console.error(
          console.error(
            "Selected project's or the selected resource type's ID is undefined."
            "Selected project's or the selected resource type's ID is undefined.",
          );
          );
          return false;
          return false;
        }
        }
@@ -437,21 +437,21 @@ export const useProjectStore = defineStore({
    async updateResourceQuota(
    async updateResourceQuota(
      projectId: string,
      projectId: string,
      resourceId: string,
      resourceId: string,
      desiredReservedQuota: QuotaForManipulationDto
      desiredReservedQuota: QuotaForManipulationDto,
    ): Promise<boolean> {
    ): Promise<boolean> {
      const notificationStore = useNotificationStore();
      const notificationStore = useNotificationStore();
      try {
      try {
        const resource = this.currentProject?.resources?.find(
        const resource = this.currentProject?.resources?.find(
          (r) => resourceId === r.id
          (r) => resourceId === r.id,
        );
        );
        if (!resource)
        if (!resource)
          throw new Error(
          throw new Error(
            `Resource with id: ${resourceId} not found in the current project`
            `Resource with id: ${resourceId} not found in the current project`,
          );
          );


        const resourceForUpdate = resourceMapper.map(
        const resourceForUpdate = resourceMapper.map(
          ResourceDto2ResourceForUpdateDto,
          ResourceDto2ResourceForUpdateDto,
          resource
          resource,
        );
        );


        /**
        /**
@@ -491,7 +491,7 @@ export const useProjectStore = defineStore({
        await ProjectResourceApi.updateResourceForProject(
        await ProjectResourceApi.updateResourceForProject(
          projectId,
          projectId,
          resourceId,
          resourceId,
          resourceForUpdate
          resourceForUpdate,
        );
        );
        return true;
        return true;
      } catch (error) {
      } catch (error) {
@@ -502,7 +502,7 @@ export const useProjectStore = defineStore({
    },
    },


    async getOrganizationByURL(
    async getOrganizationByURL(
      url: string
      url: string,
    ): Promise<OrganizationDto | undefined | null> {
    ): Promise<OrganizationDto | undefined | null> {
      const notificationStore = useNotificationStore();
      const notificationStore = useNotificationStore();
      try {
      try {
@@ -519,7 +519,7 @@ export const useProjectStore = defineStore({
      const notificationStore = useNotificationStore();
      const notificationStore = useNotificationStore();
      try {
      try {
        const organizationDtos = await wrapListRequest((pageNumber: number) =>
        const organizationDtos = await wrapListRequest((pageNumber: number) =>
          OrganizationApi.getOrganizations(filter, pageNumber, 150)
          OrganizationApi.getOrganizations(filter, pageNumber, 150),
        );
        );
        this.organizations = organizationDtos;
        this.organizations = organizationDtos;
      } catch (error) {
      } catch (error) {
@@ -545,7 +545,7 @@ export const useProjectStore = defineStore({
        const apiResponse = await LicenseApi.getLicenses(
        const apiResponse = await LicenseApi.getLicenses(
          undefined,
          undefined,
          undefined,
          undefined,
          "displayname asc"
          "displayname asc",
        );
        );
        this.licenses = apiResponse.data.data ?? null;
        this.licenses = apiResponse.data.data ?? null;
      } catch (error) {
      } catch (error) {
@@ -558,7 +558,7 @@ export const useProjectStore = defineStore({
      const notificationStore = useNotificationStore();
      const notificationStore = useNotificationStore();
      try {
      try {
        const disciplineDtos = await wrapListRequest((pageNumber: number) =>
        const disciplineDtos = await wrapListRequest((pageNumber: number) =>
          DisciplineApi.getDisciplines(pageNumber, 150, "displayNameDe asc")
          DisciplineApi.getDisciplines(pageNumber, 150, "displayNameDe asc"),
        );
        );
        this.disciplines = disciplineDtos ?? null;
        this.disciplines = disciplineDtos ?? null;
      } catch (error) {
      } catch (error) {
@@ -595,7 +595,7 @@ export const useProjectStore = defineStore({
          this.refreshProjectInformation();
          this.refreshProjectInformation();
          removeQueryParameterFromUrl(
          removeQueryParameterFromUrl(
            this.router.currentRoute,
            this.router.currentRoute,
            invitationTokenQueryParameter
            invitationTokenQueryParameter,
          );
          );
        }
        }
      } catch (error) {
      } catch (error) {
@@ -603,7 +603,7 @@ export const useProjectStore = defineStore({
        notificationStore.postApiErrorNotification(error as AxiosError);
        notificationStore.postApiErrorNotification(error as AxiosError);
        removeQueryParameterFromUrl(
        removeQueryParameterFromUrl(
          this.router.currentRoute,
          this.router.currentRoute,
          invitationTokenQueryParameter
          invitationTokenQueryParameter,
        );
        );
      }
      }
    },
    },
@@ -628,7 +628,7 @@ export const useProjectStore = defineStore({
    },
    },


    async storeProject(
    async storeProject(
      project: ProjectForCreationDto
      project: ProjectForCreationDto,
    ): Promise<ProjectDto | null> {
    ): Promise<ProjectDto | null> {
      const notificationStore = useNotificationStore();
      const notificationStore = useNotificationStore();
      try {
      try {
@@ -643,7 +643,7 @@ export const useProjectStore = defineStore({


    async updateProject(
    async updateProject(
      projectId: string,
      projectId: string,
      project: ProjectForUpdateDto
      project: ProjectForUpdateDto,
    ): Promise<boolean> {
    ): Promise<boolean> {
      const notificationStore = useNotificationStore();
      const notificationStore = useNotificationStore();
      try {
      try {
@@ -730,8 +730,8 @@ export const useProjectStore = defineStore({
            ProjectMemberApi.getMemberships(
            ProjectMemberApi.getMemberships(
              project.id as string,
              project.id as string,
              pageNumber,
              pageNumber,
              50
              50,
            )
            ),
          );
          );
          this.visitedProjects[project.slug].roles = projectRoles ?? [];
          this.visitedProjects[project.slug].roles = projectRoles ?? [];
        } else {
        } else {
@@ -757,7 +757,7 @@ export const useProjectStore = defineStore({
        if (projectRole.id && projectRole.project?.id) {
        if (projectRole.id && projectRole.project?.id) {
          await ProjectMemberApi.deleteMembership(
          await ProjectMemberApi.deleteMembership(
            projectRole.project.id,
            projectRole.project.id,
            projectRole.id
            projectRole.id,
          );
          );
          return true;
          return true;
        } else {
        } else {
@@ -778,13 +778,13 @@ export const useProjectStore = defineStore({


    async addMembershipToProject(
    async addMembershipToProject(
      projectId: string,
      projectId: string,
      projectRoleForProjectCreationDto: ProjectRoleForProjectCreationDto
      projectRoleForProjectCreationDto: ProjectRoleForProjectCreationDto,
    ) {
    ) {
      const notificationStore = useNotificationStore();
      const notificationStore = useNotificationStore();
      try {
      try {
        await ProjectMemberApi.addMembership(
        await ProjectMemberApi.addMembership(
          projectId,
          projectId,
          projectRoleForProjectCreationDto
          projectRoleForProjectCreationDto,
        );
        );
      } catch (error) {
      } catch (error) {
        // Handle other Status Codes
        // Handle other Status Codes
@@ -795,14 +795,14 @@ export const useProjectStore = defineStore({
    async updateMembershipOfProject(
    async updateMembershipOfProject(
      projectId: string,
      projectId: string,
      membershipId: string,
      membershipId: string,
      projectRoleForProjectManipulationDto: ProjectRoleForProjectManipulationDto
      projectRoleForProjectManipulationDto: ProjectRoleForProjectManipulationDto,
    ) {
    ) {
      const notificationStore = useNotificationStore();
      const notificationStore = useNotificationStore();
      try {
      try {
        await ProjectMemberApi.updateMembership(
        await ProjectMemberApi.updateMembership(
          projectId,
          projectId,
          membershipId,
          membershipId,
          projectRoleForProjectManipulationDto
          projectRoleForProjectManipulationDto,
        );
        );
      } catch (error) {
      } catch (error) {
        // Handle other Status Codes
        // Handle other Status Codes
@@ -816,7 +816,7 @@ export const useProjectStore = defineStore({
        if (projectInvitation.project?.id && projectInvitation.id) {
        if (projectInvitation.project?.id && projectInvitation.id) {
          await ProjectInvitationApi.deleteProjectInvitation(
          await ProjectInvitationApi.deleteProjectInvitation(
            projectInvitation.project.id,
            projectInvitation.project.id,
            projectInvitation.id
            projectInvitation.id,
          );
          );
          return true;
          return true;
        } else {
        } else {
@@ -836,13 +836,13 @@ export const useProjectStore = defineStore({


    async storeInvitation(
    async storeInvitation(
      projectId: string,
      projectId: string,
      invitation: ProjectInvitationForProjectManipulationDto
      invitation: ProjectInvitationForProjectManipulationDto,
    ) {
    ) {
      const notificationStore = useNotificationStore();
      const notificationStore = useNotificationStore();
      try {
      try {
        await ProjectInvitationApi.createProjectInvitation(
        await ProjectInvitationApi.createProjectInvitation(
          projectId,
          projectId,
          invitation
          invitation,
        );
        );
      } catch (error) {
      } catch (error) {
        // Handle other Status Codes
        // Handle other Status Codes
@@ -852,14 +852,14 @@ export const useProjectStore = defineStore({


    async deleteProjectAssociation(
    async deleteProjectAssociation(
      project: ProjectDto,
      project: ProjectDto,
      projectRole: ProjectRoleDto | null | undefined
      projectRole: ProjectRoleDto | null | undefined,
    ) {
    ) {
      const notificationStore = useNotificationStore();
      const notificationStore = useNotificationStore();
      try {
      try {
        if (project?.slug && projectRole?.project?.id && projectRole?.id) {
        if (project?.slug && projectRole?.project?.id && projectRole?.id) {
          await ProjectMemberApi.deleteMembership(
          await ProjectMemberApi.deleteMembership(
            projectRole.project.id,
            projectRole.project.id,
            projectRole.id
            projectRole.id,
          );
          );
          this.visitedProjects[project.slug].roles = null;
          this.visitedProjects[project.slug].roles = null;
          this.refreshProjectInformation();
          this.refreshProjectInformation();
+4 −4
Original line number Original line Diff line number Diff line
@@ -45,7 +45,7 @@ export default defineComponent({
    },
    },
    resourceTypeInformation(): ResourceTypeInformationDto | undefined {
    resourceTypeInformation(): ResourceTypeInformationDto | undefined {
      return this.resourceStore.enabledResourceTypes?.find(
      return this.resourceStore.enabledResourceTypes?.find(
        (resourceType) => resourceType.id === this.resource?.type?.id
        (resourceType) => resourceType.id === this.resource?.type?.id,
      );
      );
    },
    },
    moduleIsReady(): boolean {
    moduleIsReady(): boolean {
@@ -86,7 +86,7 @@ export default defineComponent({
        await this.resourceStore.retrieveUnsetResource(
        await this.resourceStore.retrieveUnsetResource(
          this.project.id,
          this.project.id,
          this.resource,
          this.resource,
          route
          route,
        );
        );
        if (this.resource) {
        if (this.resource) {
          if (!this.resourceStore.currentFullApplicationProfile) {
          if (!this.resourceStore.currentFullApplicationProfile) {
@@ -117,7 +117,7 @@ export default defineComponent({
            ] as VueI18n.LocaleMessageObject;
            ] as VueI18n.LocaleMessageObject;
            this.$i18n.mergeLocaleMessage(
            this.$i18n.mergeLocaleMessage(
              "de",
              "de",
              cloneDeep(resourceTypeDefinition)
              cloneDeep(resourceTypeDefinition),
            );
            );
          }
          }
        }
        }
@@ -134,7 +134,7 @@ export default defineComponent({
            ] as VueI18n.LocaleMessageObject;
            ] as VueI18n.LocaleMessageObject;
            this.$i18n.mergeLocaleMessage(
            this.$i18n.mergeLocaleMessage(
              "en",
              "en",
              cloneDeep(resourceTypeDefinition)
              cloneDeep(resourceTypeDefinition),
            );
            );
          }
          }
        }
        }
+5 −5
Original line number Original line Diff line number Diff line
@@ -18,7 +18,7 @@
        <b-link
        <b-link
          :href="
          :href="
            $t(
            $t(
              'page.createResource.applicationProfile.applicationProfilePopoverUrl'
              'page.createResource.applicationProfile.applicationProfilePopoverUrl',
            ).toString()
            ).toString()
          "
          "
          target="_blank"
          target="_blank"
@@ -43,7 +43,7 @@
          :show-labels="false"
          :show-labels="false"
          :placeholder="
          :placeholder="
            $t(
            $t(
              'page.createResource.applicationProfile.selectApplicationProfile'
              'page.createResource.applicationProfile.selectApplicationProfile',
            )
            )
          "
          "
          select-label=""
          select-label=""
@@ -232,7 +232,7 @@ export default defineComponent({
      // An application profile has been selected. Set selection in dropdown.
      // An application profile has been selected. Set selection in dropdown.
      if (this.resourceForCreation.applicationProfile) {
      if (this.resourceForCreation.applicationProfile) {
        this.selectedApplicationProfile = this.applicationProfiles.find(
        this.selectedApplicationProfile = this.applicationProfiles.find(
          (ap) => ap.uri === this.resourceForCreation.applicationProfile.uri
          (ap) => ap.uri === this.resourceForCreation.applicationProfile.uri,
        );
        );
      }
      }
    },
    },
@@ -265,7 +265,7 @@ export default defineComponent({
     * @returns {GroupedApplicationProfile[]} An array of GroupedApplicationProfile objects representing the grouped application profiles.
     * @returns {GroupedApplicationProfile[]} An array of GroupedApplicationProfile objects representing the grouped application profiles.
     */
     */
    groupApplicationProfiles(
    groupApplicationProfiles(
      applicationProfiles: ApplicationProfileDto[]
      applicationProfiles: ApplicationProfileDto[],
    ): GroupedApplicationProfile[] {
    ): GroupedApplicationProfile[] {
      const groupedProfiles: GroupedApplicationProfile[] = [];
      const groupedProfiles: GroupedApplicationProfile[] = [];


@@ -282,7 +282,7 @@ export default defineComponent({
          const groupName = text.substring(0, indexOfSlash).toUpperCase();
          const groupName = text.substring(0, indexOfSlash).toUpperCase();


          const groupEntry = groupedProfiles.find(
          const groupEntry = groupedProfiles.find(
            (element) => element.uri === groupName
            (element) => element.uri === groupName,
          );
          );


          if (groupEntry && groupEntry.profiles) {
          if (groupEntry && groupEntry.profiles) {
+8 −8
Original line number Original line Diff line number Diff line
@@ -17,7 +17,7 @@
          <b-link
          <b-link
            :href="
            :href="
              $t(
              $t(
                'page.createResource.configuration.labels.resourceTypePopoverUrl'
                'page.createResource.configuration.labels.resourceTypePopoverUrl',
              ).toString()
              ).toString()
            "
            "
            target="_blank"
            target="_blank"
@@ -98,7 +98,7 @@
        :label="`${$t(
        :label="`${$t(
          'resourceTypes.' +
          'resourceTypes.' +
            selectedResourceTypeInformation.specificType +
            selectedResourceTypeInformation.specificType +
            '.fullName'
            '.fullName',
        )}:`"
        )}:`"
      >
      >
        <p>
        <p>
@@ -106,7 +106,7 @@
            $t(
            $t(
              "resourceTypes." +
              "resourceTypes." +
                selectedResourceTypeInformation.specificType +
                selectedResourceTypeInformation.specificType +
                ".description"
                ".description",
            )
            )
          }}
          }}
        </p>
        </p>
@@ -143,7 +143,7 @@
        <b-link
        <b-link
          :href="
          :href="
            $t(
            $t(
              'page.createResource.configuration.disclaimerAPHelpUrl'
              'page.createResource.configuration.disclaimerAPHelpUrl',
            ).toString()
            ).toString()
          "
          "
          target="_blank"
          target="_blank"
@@ -309,7 +309,7 @@ export default defineComponent({
        resourceTypes.forEach((r) => {
        resourceTypes.forEach((r) => {
          const labeledResourceType: ExtendedResourceTypeInformationDto = {
          const labeledResourceType: ExtendedResourceTypeInformationDto = {
            iDisplayName: this.$t(
            iDisplayName: this.$t(
              "resourceTypes." + r.specificType + ".displayName"
              "resourceTypes." + r.specificType + ".displayName",
            ).toString(),
            ).toString(),
          };
          };
          Object.assign(labeledResourceType, r);
          Object.assign(labeledResourceType, r);
@@ -375,7 +375,7 @@ export default defineComponent({
      if (this.resourceTypes) {
      if (this.resourceTypes) {
        // A resource type has been selected, but the dropdown is empty. Set selection in dropdown.
        // A resource type has been selected, but the dropdown is empty. Set selection in dropdown.
        const selection = this.resourceTypes.find(
        const selection = this.resourceTypes.find(
          (r) => r.id === this.resourceForCreation.resourceTypeId
          (r) => r.id === this.resourceForCreation.resourceTypeId,
        );
        );
        if (selection) {
        if (selection) {
          this.selectedResourceTypeInformation = selection;
          this.selectedResourceTypeInformation = selection;
@@ -399,7 +399,7 @@ export default defineComponent({
     * @param {ResourceTypeInformationDto | null} resourceTypeInformation - The information about the selected resource type.
     * @param {ResourceTypeInformationDto | null} resourceTypeInformation - The information about the selected resource type.
     */
     */
    setSelectedResourceTypeInformation(
    setSelectedResourceTypeInformation(
      resourceTypeInformation: ResourceTypeInformationDto | null
      resourceTypeInformation: ResourceTypeInformationDto | null,
    ) {
    ) {
      this.resourceForCreation.resourceTypeId =
      this.resourceForCreation.resourceTypeId =
        resourceTypeInformation?.id ?? "";
        resourceTypeInformation?.id ?? "";
@@ -407,7 +407,7 @@ export default defineComponent({
      if (resourceTypeInformation) {
      if (resourceTypeInformation) {
        this.resourceForCreation.resourceTypeOptions = resourceMapper.map(
        this.resourceForCreation.resourceTypeOptions = resourceMapper.map(
          ResourceTypeInformationDto2ResourceTypeOptionsForCreationDto,
          ResourceTypeInformationDto2ResourceTypeOptionsForCreationDto,
          resourceTypeInformation
          resourceTypeInformation,
        );
        );
      } else {
      } else {
        this.resourceForCreation.resourceTypeOptions = {};
        this.resourceForCreation.resourceTypeOptions = {};
+11 −8
Original line number Original line Diff line number Diff line
@@ -134,7 +134,7 @@ export default defineComponent({
      if (this.projectStore.currentResourceTypesQuotas) {
      if (this.projectStore.currentResourceTypesQuotas) {
        const resourceTypeId = this.resourceForCreation.resourceTypeId;
        const resourceTypeId = this.resourceForCreation.resourceTypeId;
        const quota = this.projectStore.currentResourceTypesQuotas.find(
        const quota = this.projectStore.currentResourceTypesQuotas.find(
          (q) => q.resourceType?.id === resourceTypeId
          (q) => q.resourceType?.id === resourceTypeId,
        );
        );
        if (quota) {
        if (quota) {
          // Calculate slider maximum from Reserved and Used
          // Calculate slider maximum from Reserved and Used
@@ -174,7 +174,8 @@ export default defineComponent({
            ?.quota?.value !== undefined
            ?.quota?.value !== undefined
        ) {
        ) {
          this.sliderValue =
          this.sliderValue =
            this.resourceForCreation.resourceTypeOptions?.rdsResourceTypeOptions?.quota?.value;
            this.resourceForCreation.resourceTypeOptions?.rdsResourceTypeOptions
              ?.quota?.value;
        }
        }
        // Handle general resource type - RDS S3
        // Handle general resource type - RDS S3
        else if (
        else if (
@@ -182,7 +183,8 @@ export default defineComponent({
            ?.quota?.value !== undefined
            ?.quota?.value !== undefined
        ) {
        ) {
          this.sliderValue =
          this.sliderValue =
            this.resourceForCreation.resourceTypeOptions?.rdsS3ResourceTypeOptions?.quota?.value;
            this.resourceForCreation.resourceTypeOptions
              ?.rdsS3ResourceTypeOptions?.quota?.value;
        }
        }
        // Handle general resource type - RDS S3 WORM
        // Handle general resource type - RDS S3 WORM
        else if (
        else if (
@@ -190,7 +192,8 @@ export default defineComponent({
            ?.rdsS3WormResourceTypeOptions?.quota?.value !== undefined
            ?.rdsS3WormResourceTypeOptions?.quota?.value !== undefined
        ) {
        ) {
          this.sliderValue =
          this.sliderValue =
            this.resourceForCreation.resourceTypeOptions?.rdsS3WormResourceTypeOptions?.quota?.value;
            this.resourceForCreation.resourceTypeOptions
              ?.rdsS3WormResourceTypeOptions?.quota?.value;
        }
        }
      }
      }
    },
    },
@@ -212,7 +215,7 @@ export default defineComponent({
        this.$set(
        this.$set(
          resourceTypeOptionsForManipulationDto,
          resourceTypeOptionsForManipulationDto,
          "rdsResourceTypeOptions",
          "rdsResourceTypeOptions",
          { quota: { value: size, unit: QuotaUnit.GibiByte } }
          { quota: { value: size, unit: QuotaUnit.GibiByte } },
        );
        );
      }
      }
      // Evaluate general resource type - RDS S3
      // Evaluate general resource type - RDS S3
@@ -223,7 +226,7 @@ export default defineComponent({
        this.$set(
        this.$set(
          resourceTypeOptionsForManipulationDto,
          resourceTypeOptionsForManipulationDto,
          "rdsS3ResourceTypeOptions",
          "rdsS3ResourceTypeOptions",
          { quota: { value: size, unit: QuotaUnit.GibiByte } }
          { quota: { value: size, unit: QuotaUnit.GibiByte } },
        );
        );
      }
      }
      // Evaluate general resource type - RDS S3 WORM
      // Evaluate general resource type - RDS S3 WORM
@@ -234,13 +237,13 @@ export default defineComponent({
        this.$set(
        this.$set(
          resourceTypeOptionsForManipulationDto,
          resourceTypeOptionsForManipulationDto,
          "rdsS3WormResourceTypeOptions",
          "rdsS3WormResourceTypeOptions",
          { quota: { value: size, unit: QuotaUnit.GibiByte } }
          { quota: { value: size, unit: QuotaUnit.GibiByte } },
        );
        );
      }
      }
      this.$set(
      this.$set(
        this.resourceForCreation,
        this.resourceForCreation,
        "resourceTypeOptions",
        "resourceTypeOptions",
        resourceTypeOptionsForManipulationDto
        resourceTypeOptionsForManipulationDto,
      );
      );
    },
    },


+6 −6
Original line number Original line Diff line number Diff line
@@ -19,7 +19,7 @@
              ? $t(
              ? $t(
                  'resourceTypes.' +
                  'resourceTypes.' +
                    selectedResourceTypeInformation.specificType +
                    selectedResourceTypeInformation.specificType +
                    '.displayName'
                    '.displayName',
                )
                )
              : $t('resourceTypes.resource')
              : $t('resourceTypes.resource')
          "
          "
@@ -166,7 +166,7 @@ export default defineComponent({
    },
    },
    selectedResourceTypeInformation(): ResourceTypeInformationDto | undefined {
    selectedResourceTypeInformation(): ResourceTypeInformationDto | undefined {
      return this.resourceStore.enabledResourceTypes?.find(
      return this.resourceStore.enabledResourceTypes?.find(
        (rt) => rt.id === this.resourceForCreation.resourceTypeId
        (rt) => rt.id === this.resourceForCreation.resourceTypeId,
      );
      );
    },
    },
    user(): UserDto | null | undefined {
    user(): UserDto | null | undefined {
@@ -180,7 +180,7 @@ export default defineComponent({
        return this.$t("default.gb", {
        return this.$t("default.gb", {
          number: this.toGiB(
          number: this.toGiB(
            this.resourceForCreation.resourceTypeOptions?.rdsResourceTypeOptions
            this.resourceForCreation.resourceTypeOptions?.rdsResourceTypeOptions
              ?.quota
              ?.quota,
          ),
          ),
        }).toString();
        }).toString();
      } else if (
      } else if (
@@ -190,7 +190,7 @@ export default defineComponent({
        return this.$t("default.gb", {
        return this.$t("default.gb", {
          number: this.toGiB(
          number: this.toGiB(
            this.resourceForCreation.resourceTypeOptions
            this.resourceForCreation.resourceTypeOptions
              ?.rdsS3ResourceTypeOptions?.quota
              ?.rdsS3ResourceTypeOptions?.quota,
          ),
          ),
        }).toString();
        }).toString();
      } else if (
      } else if (
@@ -200,7 +200,7 @@ export default defineComponent({
        return this.$t("default.gb", {
        return this.$t("default.gb", {
          number: this.toGiB(
          number: this.toGiB(
            this.resourceForCreation.resourceTypeOptions
            this.resourceForCreation.resourceTypeOptions
              ?.rdsS3WormResourceTypeOptions?.quota
              ?.rdsS3WormResourceTypeOptions?.quota,
          ),
          ),
        }).toString();
        }).toString();
      } else {
      } else {
@@ -248,7 +248,7 @@ export default defineComponent({
        const createdResource =
        const createdResource =
          await this.resourceStore.createResourceForProject(
          await this.resourceStore.createResourceForProject(
            this.project,
            this.project,
            this.resourceForCreation
            this.resourceForCreation,
          );
          );


        if (createdResource) {
        if (createdResource) {
+4 −4
Original line number Original line Diff line number Diff line
@@ -311,7 +311,7 @@ export default defineComponent({
  emits: {
  emits: {
    valid: (_: boolean) => true,
    valid: (_: boolean) => true,
    validation: (
    validation: (
      _: BaseValidation<ResourceForCreationDto | ResourceForUpdateDto>
      _: BaseValidation<ResourceForCreationDto | ResourceForUpdateDto>,
    ) => true,
    ) => true,
    input: (_: ResourceForCreationDto | ResourceForUpdateDto) => true,
    input: (_: ResourceForCreationDto | ResourceForUpdateDto) => true,
  },
  },
@@ -466,7 +466,7 @@ export default defineComponent({
        ...fromProject,
        ...fromProject,
        ...fromResource,
        ...fromResource,
      ].filter(
      ].filter(
        (discipline) => discipline.id !== undefined
        (discipline) => discipline.id !== undefined,
      ) as DisciplineForResourceManipulationDto[];
      ) as DisciplineForResourceManipulationDto[];
      this.resourceForUpdate.disciplines = disciplinesForManipulation;
      this.resourceForUpdate.disciplines = disciplinesForManipulation;
    },
    },
@@ -497,7 +497,7 @@ export default defineComponent({
          "license",
          "license",
          license?.id
          license?.id
            ? ({ id: license?.id } as LicenseForResourceManipulationDto)
            ? ({ id: license?.id } as LicenseForResourceManipulationDto)
            : undefined
            : undefined,
        );
        );
        this.v$.resourceForUpdate.license?.$touch();
        this.v$.resourceForUpdate.license?.$touch();
      } else if (!id) {
      } else if (!id) {
@@ -511,7 +511,7 @@ export default defineComponent({
    setDefaultVisibility() {
    setDefaultVisibility() {
      if (this.visibilities) {
      if (this.visibilities) {
        const visibility = this.visibilities.find(
        const visibility = this.visibilities.find(
          (entry) => entry.displayName === "Project Members"
          (entry) => entry.displayName === "Project Members",
        );
        );


        if (visibility?.id) {
        if (visibility?.id) {
+9 −9
Original line number Original line Diff line number Diff line
@@ -271,7 +271,7 @@ export default defineComponent({
    async verifyDomainAndToken(suppressNotifications: boolean) {
    async verifyDomainAndToken(suppressNotifications: boolean) {
      this.gitlabProjects = await this.resourceStore.getGitlabAllProjects(
      this.gitlabProjects = await this.resourceStore.getGitlabAllProjects(
        this.gitlabInformation.domain,
        this.gitlabInformation.domain,
        this.gitlabInformation.accessToken
        this.gitlabInformation.accessToken,
      );
      );
      this.v$.gitlabInformation.$touch();
      this.v$.gitlabInformation.$touch();
      if (
      if (
@@ -294,17 +294,17 @@ export default defineComponent({
        this.$set(
        this.$set(
          this.resourceForCreation,
          this.resourceForCreation,
          "resourceTypeOptions",
          "resourceTypeOptions",
          resourceTypeOptionsForManipulationDto
          resourceTypeOptionsForManipulationDto,
        );
        );


        if (!suppressNotifications) {
        if (!suppressNotifications) {
          // Post success notification
          // Post success notification
          this.notificationStore.postNotification({
          this.notificationStore.postNotification({
            title: this.$t(
            title: this.$t(
              "resourceType.gitlab.verificationToast.success.title"
              "resourceType.gitlab.verificationToast.success.title",
            ).toString(),
            ).toString(),
            body: this.$t(
            body: this.$t(
              "resourceType.gitlab.verificationToast.success.body"
              "resourceType.gitlab.verificationToast.success.body",
            ).toString(),
            ).toString(),
          });
          });
        }
        }
@@ -315,10 +315,10 @@ export default defineComponent({
          // Post failure notification
          // Post failure notification
          this.notificationStore.postNotification({
          this.notificationStore.postNotification({
            title: this.$t(
            title: this.$t(
              "resourceType.gitlab.verificationToast.failure.title"
              "resourceType.gitlab.verificationToast.failure.title",
            ).toString(),
            ).toString(),
            body: this.$t(
            body: this.$t(
              "resourceType.gitlab.verificationToast.failure.body"
              "resourceType.gitlab.verificationToast.failure.body",
            ).toString(),
            ).toString(),
            variant: "warning",
            variant: "warning",
          });
          });
@@ -335,7 +335,7 @@ export default defineComponent({
          await this.resourceStore.getGitlabBranchesForProject(
          await this.resourceStore.getGitlabBranchesForProject(
            this.gitlabInformation.project.id,
            this.gitlabInformation.project.id,
            this.gitlabInformation.domain,
            this.gitlabInformation.domain,
            this.gitlabInformation.accessToken
            this.gitlabInformation.accessToken,
          );
          );
      }
      }
      // Set the information inside the resource
      // Set the information inside the resource
@@ -394,13 +394,13 @@ export default defineComponent({
        if (this.gitlabProjects) {
        if (this.gitlabProjects) {
          this.gitlabInformation.project =
          this.gitlabInformation.project =
            this.gitlabProjects.find(
            this.gitlabProjects.find(
              (p) => p.id === resourceTypeOptions.projectId
              (p) => p.id === resourceTypeOptions.projectId,
            ) ?? null;
            ) ?? null;
          await this.setSelectedGitLabProject();
          await this.setSelectedGitLabProject();
          if (this.gitlabBranches) {
          if (this.gitlabBranches) {
            this.gitlabInformation.branch =
            this.gitlabInformation.branch =
              this.gitlabBranches.find(
              this.gitlabBranches.find(
                (r) => r.name === resourceTypeOptions.branch
                (r) => r.name === resourceTypeOptions.branch,
              ) ?? null;
              ) ?? null;
            this.setSelectedGitLabReference();
            this.setSelectedGitLabReference();
          }
          }
+4 −4
Original line number Original line Diff line number Diff line
@@ -60,13 +60,13 @@ describe("FilesView.vue", async () => {
  // Mock the API calls
  // Mock the API calls
  const resourceStore = useResourceStore(testingPinia);
  const resourceStore = useResourceStore(testingPinia);
  vi.mocked(resourceStore.getMetadataTree).mockReturnValue(
  vi.mocked(resourceStore.getMetadataTree).mockReturnValue(
    Promise.resolve(getMetadataTreeResponse)
    Promise.resolve(getMetadataTreeResponse),
  );
  );
  vi.mocked(resourceStore.getFileTree).mockReturnValue(
  vi.mocked(resourceStore.getFileTree).mockReturnValue(
    Promise.resolve(getFileTreeResponse)
    Promise.resolve(getFileTreeResponse),
  );
  );
  vi.mocked(resourceStore.getVocabularyInstances).mockReturnValue(
  vi.mocked(resourceStore.getVocabularyInstances).mockReturnValue(
    Promise.resolve({ en: [], de: [] })
    Promise.resolve({ en: [], de: [] }),
  );
  );


  beforeEach(() => {
  beforeEach(() => {
@@ -110,6 +110,6 @@ describe("FilesView.vue", async () => {
    {
    {
      // Override the maximum run time for this test (10 sec), due to the sleep() calls
      // Override the maximum run time for this test (10 sec), due to the sleep() calls
      timeout: 10000,
      timeout: 10000,
    }
    },
  );
  );
});
});