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
  • 2.11.0-privacyPolicy
  • APIv2
  • Docs/Setup
  • Experiment/fix-debugging
  • Experimental/Heinrichs-cypress
  • Feature/xxxx-turnOffDataPub
  • Fix/xxxx-ToS400Error
  • Fix/xxxx-migrateLogin
  • Fix/xxxx-tokenUploadButton
  • Hotfix/0038-correctDownload
  • Hotfix/1917-PublicFilesVisibility
  • Hotfix/1963-fixOrganizationField
  • Hotfix/2015-PublicFilesVisibility
  • Hotfix/2130-uiv2ContactChange
  • Hotfix/2144-invitationCall
  • Hotfix/2150-fixUpload
  • Hotfix/2160-userOrgsInst
  • Hotfix/2190-requiredFieldsForUserProfile
  • Hotfix/2196-RCVTableTranslation
  • Hotfix/2212-fixFiles
  • Hotfix/2226-userProfileSaveButton
  • Hotfix/2232-dependencyFix
  • Hotfix/2233-fixMe
  • Hotfix/2258-saveButtonWorksAsExpected
  • Hotfix/2296-selectedValuesNotReturned
  • Hotfix/2308-defaultLicense
  • Hotfix/2335-fixingSearchRCV
  • Hotfix/2353-dropShape
  • Hotfix/2370-fixDeleteButton
  • Hotfix/2378-linkedFix
  • Hotfix/2379-filesDragAndDrop
  • Hotfix/2382-guestStillBuggy
  • Hotfix/2384-guestsAndLinked
  • Hotfix/2427-adminTrouble
  • Hotfix/2459-EncodingPath
  • Hotfix/2465-orcidLink
  • Hotfix/2465-orcidLink-v1.25.1
  • Hotfix/2504-formGen
  • Hotfix/2541-resCreate
  • Hotfix/2601-correctMetadataIdentity
  • Hotfix/2611-feedback
  • Hotfix/2618-turtle
  • Hotfix/2681-validationErrors
  • Hotfix/2684-correctEncoding
  • Hotfix/2684-fixSubMetadata
  • Hotfix/2713-validateEntryName
  • Hotfix/2734-allowEmptyLicense
  • Hotfix/2765-encodingAgain
  • Hotfix/2852-adaptTextForToSUi
  • Hotfix/2853-optimizationV4
  • Hotfix/2943-reloadingResources
  • Hotfix/2943-searchHighlighting
  • Hotfix/2957-styleAndUpgrade
  • Hotfix/2971-fixTextInDataPub
  • Hotfix/2989-cookieLength
  • Hotfix/662-keepSidebarExpanded
  • Hotfix/xxxx-correctLinking
  • Hotfix/xxxx-folderRecursive
  • Hotfix/xxxx-fullscreenCss
  • Hotfix/xxxx-homepageDisplay
  • Hotfix/xxxx-liveReleaseFixes
  • Hotfix/xxxx-partnerProjects
  • Hotfix/xxxx-workingFileIndex
  • Issue/1782-structualDataIntegration
  • Issue/1792-newMetadataStructure
  • Issue/1822-coscineUIv2App
  • Issue/1824-componentsUIv2
  • Issue/1824-routerAdditions
  • Issue/1825-codeQualityPipelines
  • Issue/1833-newLogin
  • Issue/1843-multipleFilesValidation
  • Issue/1860-searchScoping
  • Issue/1861-searchMetadata
  • Issue/1862-searchFacets
  • Issue/1863-paginationForSearch
  • Issue/1926-userProfile
  • Issue/1927-projectAppMigration
  • Issue/1928-sidebarmenuAddition
  • Issue/1929-vuexToPinia
  • Issue/1938-internalHandling
  • Issue/1951-quotaImplementation
  • Issue/1953-owlImports
  • Issue/1957-resourceAppMigration
  • Issue/1957-resourceAppMigrationNew
  • Issue/1962-SearchAppUI2
  • Issue/1964-tokenExpiryUIv2
  • Issue/1965-userListMigration
  • Issue/1970-breadcrumbs
  • Issue/1971-projectEditCreateMigration
  • Issue/1972-homeDepot
  • Issue/1974-shibbolethLogout
  • Issue/1976-resouceCreationVaildEmail
  • Issue/1979-supportAdminUIv2Migration
  • Issue/1980-userManagement
  • Issue/1985-adaptSidebar
  • Issue/2002-migrateResourceCreate
  • Issue/2003-resourceSettings
  • Issue/2008-quotaManagement
  • Issue/2011-pathConfig
  • Issue/2016-BannerMigration
  • 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
  • 2.11.0-privacyPolicy
  • APIv2
  • Docs/Setup
  • Experiment/fix-debugging
  • Experimental/Heinrichs-cypress
  • Feature/xxxx-turnOffDataPub
  • Fix/xxxx-ToS400Error
  • Fix/xxxx-migrateLogin
  • Fix/xxxx-tokenUploadButton
  • Hotfix/0038-correctDownload
  • Hotfix/1917-PublicFilesVisibility
  • Hotfix/1963-fixOrganizationField
  • Hotfix/2015-PublicFilesVisibility
  • Hotfix/2130-uiv2ContactChange
  • Hotfix/2144-invitationCall
  • Hotfix/2150-fixUpload
  • Hotfix/2160-userOrgsInst
  • Hotfix/2190-requiredFieldsForUserProfile
  • Hotfix/2196-RCVTableTranslation
  • Hotfix/2212-fixFiles
  • Hotfix/2226-userProfileSaveButton
  • Hotfix/2232-dependencyFix
  • Hotfix/2233-fixMe
  • Hotfix/2258-saveButtonWorksAsExpected
  • Hotfix/2296-selectedValuesNotReturned
  • Hotfix/2308-defaultLicense
  • Hotfix/2335-fixingSearchRCV
  • Hotfix/2353-dropShape
  • Hotfix/2370-fixDeleteButton
  • Hotfix/2378-linkedFix
  • Hotfix/2379-filesDragAndDrop
  • Hotfix/2382-guestStillBuggy
  • Hotfix/2384-guestsAndLinked
  • Hotfix/2427-adminTrouble
  • Hotfix/2459-EncodingPath
  • Hotfix/2465-orcidLink
  • Hotfix/2465-orcidLink-v1.25.1
  • Hotfix/2504-formGen
  • Hotfix/2541-resCreate
  • Hotfix/2601-correctMetadataIdentity
  • Hotfix/2611-feedback
  • Hotfix/2618-turtle
  • Hotfix/2681-validationErrors
  • Hotfix/2684-correctEncoding
  • Hotfix/2684-fixSubMetadata
  • Hotfix/2713-validateEntryName
  • Hotfix/2734-allowEmptyLicense
  • Hotfix/2765-encodingAgain
  • Hotfix/2852-adaptTextForToSUi
  • Hotfix/2853-optimizationV4
  • Hotfix/2943-reloadingResources
  • Hotfix/2943-searchHighlighting
  • Hotfix/2957-styleAndUpgrade
  • Hotfix/2971-fixTextInDataPub
  • Hotfix/2989-cookieLength
  • Hotfix/662-keepSidebarExpanded
  • Hotfix/xxxx-correctLinking
  • Hotfix/xxxx-folderRecursive
  • Hotfix/xxxx-fullscreenCss
  • Hotfix/xxxx-homepageDisplay
  • Hotfix/xxxx-liveReleaseFixes
  • Hotfix/xxxx-partnerProjects
  • Hotfix/xxxx-workingFileIndex
  • Issue/1782-structualDataIntegration
  • Issue/1792-newMetadataStructure
  • Issue/1822-coscineUIv2App
  • Issue/1824-componentsUIv2
  • Issue/1824-routerAdditions
  • Issue/1825-codeQualityPipelines
  • Issue/1833-newLogin
  • Issue/1843-multipleFilesValidation
  • Issue/1860-searchScoping
  • Issue/1861-searchMetadata
  • Issue/1862-searchFacets
  • Issue/1863-paginationForSearch
  • Issue/1926-userProfile
  • Issue/1927-projectAppMigration
  • Issue/1928-sidebarmenuAddition
  • Issue/1929-vuexToPinia
  • Issue/1938-internalHandling
  • Issue/1951-quotaImplementation
  • Issue/1953-owlImports
  • Issue/1957-resourceAppMigration
  • Issue/1957-resourceAppMigrationNew
  • Issue/1962-SearchAppUI2
  • Issue/1964-tokenExpiryUIv2
  • Issue/1965-userListMigration
  • Issue/1970-breadcrumbs
  • Issue/1971-projectEditCreateMigration
  • Issue/1972-homeDepot
  • Issue/1974-shibbolethLogout
  • Issue/1976-resouceCreationVaildEmail
  • Issue/1979-supportAdminUIv2Migration
  • Issue/1980-userManagement
  • Issue/1985-adaptSidebar
  • Issue/2002-migrateResourceCreate
  • Issue/2003-resourceSettings
  • Issue/2008-quotaManagement
  • Issue/2011-pathConfig
  • Issue/2016-BannerMigration
  • 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 (6)
{ {
"name": "ui", "name": "ui",
"version": "1.17.2", "version": "1.18.0",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
...@@ -71,6 +71,7 @@ ...@@ -71,6 +71,7 @@
"@vitejs/plugin-vue2": "^1.1.2", "@vitejs/plugin-vue2": "^1.1.2",
"@vue/eslint-config-prettier": "^7.0.0", "@vue/eslint-config-prettier": "^7.0.0",
"@vue/eslint-config-typescript": "^11.0.0", "@vue/eslint-config-typescript": "^11.0.0",
"@vue/runtime-dom": "^3.2.40",
"conventional-changelog-eslint": "^3.0.9", "conventional-changelog-eslint": "^3.0.9",
"eslint": "^8.23.0", "eslint": "^8.23.0",
"eslint-config-prettier": "^8.5.0", "eslint-config-prettier": "^8.5.0",
......
...@@ -128,9 +128,12 @@ export default defineComponent({ ...@@ -128,9 +128,12 @@ export default defineComponent({
}, },
watch: { watch: {
crumbs() { crumbs() {
let title = let title = this.$t("breadcrumbs.home").toString();
if (this.crumbs && this.crumbs.length) {
title =
this.crumbs.map((n) => n.text).at(-1) ?? this.crumbs.map((n) => n.text).at(-1) ??
this.$t("breadcrumbs.home").toString(); this.$t("breadcrumbs.home").toString();
}
if ( if (
this.resource && this.resource &&
this.resource.type && this.resource.type &&
......
...@@ -18,7 +18,11 @@ import type { ProjectObject } from "@coscine/api-client/dist/types/Coscine.Api.P ...@@ -18,7 +18,11 @@ import type { ProjectObject } from "@coscine/api-client/dist/types/Coscine.Api.P
import type { AxiosError } from "axios"; import type { AxiosError } from "axios";
import type { QuotaDimObject } from "@coscine/api-client/dist/types/Coscine.Api.Admin"; import type { QuotaDimObject } from "@coscine/api-client/dist/types/Coscine.Api.Admin";
import useNotificationStore from "@/store/notification"; import useNotificationStore from "@/store/notification";
import { parseRDFDefinition, serializeRDFDefinition } from "./utils/linkedData"; import {
parseRDFDefinition,
resolveImports,
serializeRDFDefinition,
} from "./utils/linkedData";
import factory from "rdf-ext"; import factory from "rdf-ext";
import { useLocalStorage } from "@vueuse/core"; import { useLocalStorage } from "@vueuse/core";
/* /*
...@@ -114,11 +118,15 @@ export const useResourceStore = defineStore({ ...@@ -114,11 +118,15 @@ export const useResourceStore = defineStore({
const apiResponse = await MetadataApi.metadataGetProfile( const apiResponse = await MetadataApi.metadataGetProfile(
resource.applicationProfile resource.applicationProfile
); );
resource.fullApplicationProfile = await parseRDFDefinition( resource.rawApplicationProfile = await parseRDFDefinition(
JSON.stringify(apiResponse.data), JSON.stringify(apiResponse.data),
"application/ld+json", "application/ld+json",
resource.applicationProfile resource.applicationProfile
); );
resource.fullApplicationProfile = await resolveImports(
resource.applicationProfile,
resource.rawApplicationProfile
);
} else { } else {
console.error("Resource's application profile may be undefined."); console.error("Resource's application profile may be undefined.");
} }
...@@ -128,17 +136,27 @@ export const useResourceStore = defineStore({ ...@@ -128,17 +136,27 @@ export const useResourceStore = defineStore({
} }
}, },
async getApplicationProfile(applicationProfile: string): Promise<Dataset> { async getApplicationProfile(
applicationProfile: string,
doResolveImports = true
): Promise<Dataset> {
const notificationStore = useNotificationStore(); const notificationStore = useNotificationStore();
try { try {
const apiResponse = await MetadataApi.metadataGetProfile( const apiResponse = await MetadataApi.metadataGetProfile(
applicationProfile applicationProfile
); );
return await parseRDFDefinition( let returnApplicationProfile = await parseRDFDefinition(
JSON.stringify(apiResponse.data), JSON.stringify(apiResponse.data),
"application/ld+json", "application/ld+json",
applicationProfile applicationProfile
); );
if (doResolveImports) {
returnApplicationProfile = await resolveImports(
applicationProfile,
returnApplicationProfile
);
}
return returnApplicationProfile;
} catch (error) { } catch (error) {
// Handle other Status Codes // Handle other Status Codes
notificationStore.postApiErrorNotification(error as AxiosError); notificationStore.postApiErrorNotification(error as AxiosError);
......
...@@ -7,6 +7,7 @@ import type { ...@@ -7,6 +7,7 @@ import type {
import type { Dataset } from "@rdfjs/types"; import type { Dataset } from "@rdfjs/types";
export interface VisitedResourceObject extends ResourceObject { export interface VisitedResourceObject extends ResourceObject {
rawApplicationProfile: Dataset | null;
fullApplicationProfile: Dataset | null; fullApplicationProfile: Dataset | null;
usedQuota: QuotaDimObject | null | undefined; usedQuota: QuotaDimObject | null | undefined;
storedColumns: string | null; storedColumns: string | null;
......
...@@ -4,6 +4,8 @@ import rdfParser from "rdf-parse"; ...@@ -4,6 +4,8 @@ import rdfParser from "rdf-parse";
import type { Dataset } from "@rdfjs/types"; import type { Dataset } from "@rdfjs/types";
import { serializers } from "@rdfjs-elements/formats-pretty"; import { serializers } from "@rdfjs-elements/formats-pretty";
import stringifyStream from "stream-to-string"; import stringifyStream from "stream-to-string";
import { MetadataApi } from "@coscine/api-client";
import type DatasetExt from "rdf-ext/lib/Dataset";
export async function parseRDFDefinition( export async function parseRDFDefinition(
definition: string, definition: string,
...@@ -41,3 +43,61 @@ export async function serializeRDFDefinition( ...@@ -41,3 +43,61 @@ export async function serializeRDFDefinition(
} }
return await stringifyStream(output as NodeJS.ReadableStream); return await stringifyStream(output as NodeJS.ReadableStream);
} }
/**
* Deals with import statements and create a full application profile
* @param baseUrl Base Url of the starting dataset
* @param dataset The starting dataset
* @returns Full Dataset with every imported dataset
*/
export async function resolveImports(
baseUrl: string,
dataset: Dataset
): Promise<Dataset> {
let fullApplicationProfile = dataset;
const toScanAPs = [dataset];
const owlImportsNode = factory.namedNode(
"http://www.w3.org/2002/07/owl#imports"
);
const visitedAPs = [baseUrl];
while (toScanAPs.length > 0) {
const dataset = toScanAPs.pop();
if (dataset) {
const importedAPs = Array.from(
dataset.match(null, owlImportsNode, null)
).map((quad) => quad.object);
for (const importedAP of importedAPs) {
if (
importedAP.termType === "NamedNode" &&
!visitedAPs.includes(importedAP.value)
) {
try {
const importedApiResponse = await MetadataApi.metadataGetProfile(
importedAP.value
);
const importedApplicationProfile = await parseRDFDefinition(
JSON.stringify(importedApiResponse.data),
"application/ld+json",
importedAP.value
);
fullApplicationProfile = (
fullApplicationProfile as unknown as DatasetExt
).merge(
importedApplicationProfile as unknown as DatasetExt
) as unknown as Dataset;
toScanAPs.push(importedApplicationProfile);
} catch {
console.error(
`The application profile ${importedAP.value} is not accessible.`
);
} finally {
visitedAPs.push(importedAP.value);
}
}
}
}
}
return fullApplicationProfile;
}
...@@ -147,12 +147,8 @@ const config = defineConfig({ ...@@ -147,12 +147,8 @@ const config = defineConfig({
], ],
server: { server: {
hmr: {
clientPort: 443,
},
host: true, host: true,
port: 9234, port: 9234,
strictPort: true,
}, },
}); });
......
This diff is collapsed.