From 6ce2b75ee6fa7374fa5f3ce7f1758733f6cae13e Mon Sep 17 00:00:00 2001 From: argirok Date: Wed, 1 Nov 2023 14:26:09 +0200 Subject: [PATCH 01/11] [develop | WIP | UPDATED] add common properties in library file, delete unused properties --- utils/properties/env-properties.ts | 44 +++- utils/properties/environments/environment.ts | 210 ++++++++++++++++--- 2 files changed, 214 insertions(+), 40 deletions(-) diff --git a/utils/properties/env-properties.ts b/utils/properties/env-properties.ts index 65931eaa..c3a4a613 100644 --- a/utils/properties/env-properties.ts +++ b/utils/properties/env-properties.ts @@ -1,3 +1,5 @@ +import {watch} from "fs/promises"; + export type Environment = "development" | "test" | "beta" | "production"; export type Dashboard = "explore" | "connect" | "monitor" | "aggregator" | "eosc" | "developers" | "faircore4eosc"; export type PortalType = "explore" | "connect" | "community" | "monitor" | "funder" | "ri" | "project" | "organization" | "aggregator" | "eosc" | "faircore4eosc"; @@ -14,16 +16,15 @@ export interface EnvProperties { showAddThis?: boolean; showContent?: boolean; enableEoscDataTransfer?:boolean; - framesAPIURL?: string; - statisticsFrameAPIURL?: string; + statisticsFrameAPIURL?: string; //delete? statisticsFrameNewAPIURL?: string; bipFrameAPIURL?: string; - useNewStatistisTool?: boolean; + useNewStatistisTool?: boolean; //delete? useOldStatisticsSchema?: boolean; monitorStatsFrameUrl?:string; disableFrameLoad?:boolean statisticsAPIURL?: string; - impactFactorsAPIURL?: string; + impactFactorsAPIURL?: string; //??? enermapsURL?: string; claimsAPIURL?: string; searchAPIURLLAst?: string; @@ -51,11 +52,6 @@ export interface EnvProperties { sherpaURLSuffix?: string; zenodo?: string; zenodoCommunities?: string; - openAccess?: string; - openAccessRepo?: string; - fp7Guidlines?: string; - h2020Guidlines?: string; - ercGuidlines?: string; helpdesk?: string; helpdeskEmail?: string; utilsService?: string; @@ -135,10 +131,10 @@ export interface EnvProperties { reCaptchaSiteKey?: string; // contact us recipients admins?: string[]; - lastIndexUpdate?: string; + lastIndexUpdate?: string; //delete? indexInfoAPI?: string; altMetricsAPIURL?: string; - b2noteAPIURL?: string; + b2noteAPIURL?: string; //delete? adminPortalURL?: string; sushiliteURL?: string; notificationsAPIURL?: string; @@ -151,3 +147,29 @@ export interface EnvProperties { eoscDataTransferDestinations?; hasMachineCache?: boolean; } + +export function checkPropertyValues(properties:EnvProperties){ + let keys = Object.keys(properties); + let Warn = 0; + // console.debug( "Environment: " +properties.environment ) + for(let attribute of keys){ + + // console.debug(attribute + ": " +properties[attribute] + " " ) + if (properties.environment == "production" && typeof properties[attribute] == 'string' && (properties[attribute].indexOf("beta.") != -1 || properties[attribute].indexOf("uoa.di.gr") != -1)) { + console.warn("shouldn't be prod? " + attribute + ": " + properties[attribute]); + Warn++; + } + if (properties.environment != "production" && typeof properties[attribute] == 'string' && properties[attribute].indexOf("https://services.") != -1) { + console.warn("should be prod? " + attribute + ": " + properties[attribute]); + Warn++; + } + if (properties.environment != "development" && typeof properties[attribute] == 'string' && properties[attribute].indexOf("uoa.di.gr") != -1) { + console.warn("should be in dev? " + attribute + ": " + properties[attribute]); + Warn++; + } + + } + /*if(Warn > 0){ + alert("check properties: " + Warn) + }*/ +} diff --git a/utils/properties/environments/environment.ts b/utils/properties/environments/environment.ts index 6faf2d7f..133629cd 100644 --- a/utils/properties/environments/environment.ts +++ b/utils/properties/environments/environment.ts @@ -1,45 +1,197 @@ import {EnvProperties} from "../env-properties"; export let common: EnvProperties = { + + bipFrameAPIURL: "https://bip.imsi.athenarc.gr/api/impact-chart?id=", + useNewStatistisTool: true, + openCitationsAPIURL: "https://services.openaire.eu/opencitations/getCitations?id=", + searchCrossrefAPIURL: "https://api.crossref.org/works", + searchDataciteAPIURL: "https://api.datacite.org/works", + searchOrcidURL: "https://pub.orcid.org/v2.1/", + orcidURL: "https://orcid.org/", + orcidAPIURL: "https://services.openaire.eu/uoa-orcid-service/", + orcidTokenURL : "https://orcid.org/oauth/authorize?", + orcidClientId: "APP-IN0O56SBVVTB7NN4", + doiURL: "https://doi.org/", + pmcURL: "http://europepmc.org/articles/", + pmidURL: "https://www.ncbi.nlm.nih.gov/pubmed/", + handleURL: "http://hdl.handle.net/", + cordisURL: "http://cordis.europa.eu/projects/", + openDoarURL: "http://v2.sherpa.ac.uk/id/repository/", + r3DataURL: "http://service.re3data.org/repository/", swhURL: "https://archive.softwareheritage.org/", - // searchCrossrefAPIURL: "https://api.crossref.org/works", - // searchDataciteAPIURL: "https://api.datacite.org/works", - // searchOrcidURL: "https://pub.orcid.org/v2.1/", - // orcidURL: "https://orcid.org/", - // doiURL: "https://doi.org/", - // pmcURL: "http://europepmc.org/articles/", - // pmidURL: "https://www.ncbi.nlm.nih.gov/pubmed/", - // handleURL: "http://hdl.handle.net/", - // cordisURL: "http://cordis.europa.eu/projects/", - // openDoarURL: "http://v2.sherpa.ac.uk/id/repository/", - // r3DataURL: "http://service.re3data.org/repository/", - // fairSharingURL: "https://fairsharing.org/", - // sherpaURL: "http://sherpa.ac.uk/romeo/issn/", - // sherpaURLSuffix: "/", - // zenodo: "https://zenodo.org/", - // openAccess: "https://www.openaire.eu/support/faq#article-id-234", - // openAccessRepo: "https://www.openaire.eu/support/faq#article-id-310", - // fp7Guidlines: "https://www.openaire.eu/open-access-in-fp7-seventh-research-framework-programme", - // h2020Guidlines: "https://www.openaire.eu/oa-publications/h2020/open-access-in-horizon-2020", - // ercGuidlines: "http://erc.europa.eu/sites/default/files/document/file/ERC_Open_Access_Guidelines-revised_2014.pdf", + fairSharingURL: "https://fairsharing.org/", + eoscMarketplaceURL: "https://marketplace.eosc-portal.eu/services/", + sherpaURL: "http://sherpa.ac.uk/romeo/issn/", + sherpaURLSuffix: "/", + zenodo: "https://zenodo.org/", + helpdesk: "https://www.openaire.eu/support/helpdesk", + helpdeskEmail: "helpdesk@openaire.eu", + piwikBaseUrl: "https://analytics.openaire.eu/piwik.php?idsite=", + cookieDomain: ".openaire.eu", + feedbackmail: "feedback@openaire.eu", + csvLimit: 2000, + pagingLimit: 20, + resultsPerPage: 10, + baseLink : "", + searchLinkToResult: "/search/result?id=", + searchLinkToPublication: "/search/publication?articleId=", + searchLinkToProject: "/search/project?projectId=", + searchLinkToDataProvider: "/search/dataprovider?datasourceId=", + searchLinkToDataset: "/search/dataset?datasetId=", + searchLinkToSoftwareLanding: "/search/software?softwareId=", + searchLinkToOrp: "/search/other?orpId=", + searchLinkToOrganization: "/search/organization?organizationId=", + searchLinkToAll: "/search/find/", + searchLinkToPublications: "/search/find/publications", + searchLinkToDataProviders: "/search/find/dataproviders", + searchLinkToProjects: "/search/find/projects", + searchLinkToDatasets: "/search/find/datasets", + searchLinkToSoftware: "/search/find/software", + searchLinkToOrps: "/search/find/other", + searchLinkToOrganizations: "/search/find/organizations", + searchLinkToCompatibleDataProviders: "/search/content-providers", + searchLinkToEntityRegistriesDataProviders: "/search/entity-registries", + searchLinkToJournals: "/search/journals", + searchLinkToResults: "/search/find/research-outcomes", + searchLinkToAdvancedPublications: "/search/advanced/publications", + searchLinkToAdvancedProjects: "/search/advanced/projects", + searchLinkToAdvancedDatasets: "/search/advanced/datasets", + searchLinkToAdvancedSoftware: "/search/advanced/software", + searchLinkToAdvancedOrps: "/search/advanced/other", + searchLinkToAdvancedDataProviders: "/search/advanced/dataproviders", + searchLinkToAdvancedOrganizations: "/search/advanced/organizations", + searchLinkToAdvancedResults: "/search/advanced/research-outcomes", + errorLink: '/error', + showLastIndexInformationLink: true, + lastIndexUpdate: "2020-06-15", + depositLearnHowPage: "/participate/deposit/learn-how", + depositSearchPage: "/participate/deposit/search", + altMetricsAPIURL: "https://api.altmetric.com/v1/doi/", + reCaptchaSiteKey: "6LezhVIUAAAAAOb4nHDd87sckLhMXFDcHuKyS76P", + admins: ['feedback@openaire.eu'], + b2noteAPIURL: 'https://b2note.eudat.eu/', + myOrcidLinksPage: "/my-orcid-links", + footerGrantText: "OpenAIRE has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreements No. 777541 and 101017452" } export let commonDev: EnvProperties = { - // searchAPIURLLAst: "http://beta.services.openaire.eu/search/v2/api/", - // searchResourcesAPIURL: "https://beta.services.openaire.eu/search/v2/api/resources", + environment: "development", + statisticsAPIURL: "http://vatopedi.di.uoa.gr:8080/stats/", + statisticsFrameAPIURL: "https://beta.openaire.eu/stats/", + statisticsFrameNewAPIURL: "https://stats.madgik.di.uoa.gr/stats-api/", + claimsAPIURL: "http://rudie.di.uoa.gr:8980/dnet-claims-service-2.0.0-SNAPSHOT/rest/claimsService/", + searchAPIURLLAst: "http://beta.services.openaire.eu/search/v2/api/", + searchResourcesAPIURL: "https://beta.services.openaire.eu/search/v2/api/resources", + + openCitationsAPIURL: "https://services.openaire.eu/opencitations/getCitations?id=", + csvAPIURL: "https://beta.services.openaire.eu/search/v2/api/reports", + orcidAPIURL: "http://duffy.di.uoa.gr:19480/uoa-orcid-service/", + orcidTokenURL : "https://sandbox.orcid.org/oauth/authorize?", + orcidClientId: "APP-A5M3KTX6NCN67L91", + utilsService: "http://dl170.madgik.di.uoa.gr:8000", + vocabulariesAPI: "https://dev-openaire.d4science.org/provision/mvc/vocabularies/", + loginUrl: "http://mpagasas.di.uoa.gr:19080/login-service/openid_connect_login", + userInfoUrl: "http://mpagasas.di.uoa.gr:19080/login-service/userInfo", + logoutUrl: "http://mpagasas.di.uoa.gr:19080/login-service/openid_logout", + cookieDomain: ".di.uoa.gr", + feedbackmail: "kostis30fylloy@gmail.com", + cacheUrl: "http://dl170.madgik.di.uoa.gr:3000/get?url=", + monitorServiceAPIURL: "http://duffy.di.uoa.gr:19380/uoa-monitor-service", + adminToolsAPIURL: "http://duffy.di.uoa.gr:19280/uoa-admin-tools/", + datasourcesAPI: "https://beta.services.openaire.eu/openaire/ds/api/", + contextsAPI: "https://dev-openaire.d4science.org/openaire/context", + communityAPI: "https://dev-openaire.d4science.org/openaire/community/", + lastIndexInformationLink: "https://www.openaire.eu/aggregation-and-content-provision-workflows", + widgetLink: "https://beta.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=", + claimsInformationLink: "https://www.openaire.eu/linking-beta", + indexInfoAPI: "https://beta.services.openaire.eu/openaire/info/", + admins: ['kostis30fylloy@gmail.com', 'alexandros.martzios@athenarc.gr', 'kgalouni@di.uoa.gr'], + adminPortalURL: "https://beta.admin.connect.openaire.eu", + + } export let commonTest: EnvProperties = { - // searchAPIURLLAst: "https://services.openaire.eu/shadowSearch/v2/api/", - // searchResourcesAPIURL: "https://services.openaire.eu/shadowSearch/v2/api/resources", + environment: "test", + statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/", + statisticsFrameAPIURL: "https://www.openaire.eu/stats/", + statisticsFrameNewAPIURL: "https://services.openaire.eu/stats-tool/", + claimsAPIURL: "https://services.openaire.eu/claims/rest/claimsService/", + searchAPIURLLAst: "https://services.openaire.eu/shadowSearch/v2/api/", + searchResourcesAPIURL: "https://services.openaire.eu/shadowSearch/v2/api/resources", + csvAPIURL: "https://services.openaire.eu/search/v2/api/reports", + utilsService: "https://explore.openaire.eu/utils-service", + vocabulariesAPI: "https://services.openaire.eu/provision/mvc/vocabularies/", + loginUrl: " https://services.openaire.eu/login-service/openid_connect_login", + userInfoUrl: " https://services.openaire.eu/login-service/userInfo", + logoutUrl: "https://services.openaire.eu/login-service/openid_logout", + cacheUrl: "https://explore.openaire.eu/cache/get?url=", + datasourcesAPI: "https://services.openaire.eu/openaire/ds/api/", + monitorServiceAPIURL: "https://services.openaire.eu/uoa-monitor-service", + adminToolsAPIURL: "https://services.openaire.eu/uoa-admin-tools/", + contextsAPI: "https://services.openaire.eu/openaire/context", + communityAPI: "https://services.openaire.eu/openaire/community/", + lastIndexInformationLink: "https://www.openaire.eu/aggregation-and-content-provision-workflows", + widgetLink: "https://www.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=", + claimsInformationLink: "https://www.openaire.eu/linking", + indexInfoAPI: "https://services.openaire.eu/openaire/info/", + + adminPortalURL: "https://admin.explore.openaire.eu", + } export let commonBeta: EnvProperties = { - // searchAPIURLLAst: "http://beta.services.openaire.eu/search/v2/api/", - // searchResourcesAPIURL: "https://beta.services.openaire.eu/search/v2/api/resources", + environment: "beta", + statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/", + statisticsFrameAPIURL: "https://beta.openaire.eu/stats/", + statisticsFrameNewAPIURL: "https://beta.services.openaire.eu/stats-tool/", + claimsAPIURL: "https://beta.services.openaire.eu/claims-new/rest/claimsService/", + searchAPIURLLAst: "https://beta.services.openaire.eu/search/v2/api/", + searchResourcesAPIURL: "https://beta.services.openaire.eu/search/v2/api/resources", + csvAPIURL: "https://beta.services.openaire.eu/search/v2/api/reports", + utilsService: "https://demo.openaire.eu/utils-service", + vocabulariesAPI: "https://beta.services.openaire.eu/provision/mvc/vocabularies/", + loginUrl: "https://beta.services.openaire.eu/login-service/openid_connect_login", + userInfoUrl: "https://beta.services.openaire.eu/login-service/userInfo", + logoutUrl: "https://beta.services.openaire.eu/login-service/openid_logout", + cacheUrl: "https://demo.openaire.eu/cache/get?url=", + datasourcesAPI: "https://beta.services.openaire.eu/openaire/ds/api/", + monitorServiceAPIURL: "https://beta.services.openaire.eu/uoa-monitor-service", + adminToolsAPIURL: "https://beta.services.openaire.eu/uoa-admin-tools/", + contextsAPI: "https://beta.services.openaire.eu/openaire/context", + communityAPI: "https://beta.services.openaire.eu/openaire/community/", + lastIndexInformationLink: "https://beta.openaire.eu/aggregation-and-content-provision-workflows", + widgetLink: "https://beta.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=", + claimsInformationLink: "https://beta.openaire.eu/linking", + indexInfoAPI: "https://beta.services.openaire.eu/openaire/info/", + adminPortalURL: "https://beta.admin.connect.openaire.eu" } export let commonProd: EnvProperties = { - // searchAPIURLLAst: "https://services.openaire.eu/search/v2/api/", - // searchResourcesAPIURL: "https://services.openaire.eu/search/v2/api/resources", -} \ No newline at end of file + environment: "production", + statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/", + statisticsFrameAPIURL: "https://www.openaire.eu/stats/", + statisticsFrameNewAPIURL: "https://services.openaire.eu/stats-tool/", + claimsAPIURL: "https://services.openaire.eu/claims/rest/claimsService/", + searchAPIURLLAst: "https://services.openaire.eu/search/v2/api/", + searchResourcesAPIURL: "https://services.openaire.eu/search/v2/api/resources", + csvAPIURL: "https://services.openaire.eu/search/v2/api/reports", + utilsService: "https://explore.openaire.eu/utils-service", + vocabulariesAPI: "https://services.openaire.eu/provision/mvc/vocabularies/", + loginUrl: " https://services.openaire.eu/login-service/openid_connect_login", + userInfoUrl: " https://services.openaire.eu/login-service/userInfo", + logoutUrl: "https://services.openaire.eu/login-service/openid_logout", + cacheUrl: "https://explore.openaire.eu/cache/get?url=", + datasourcesAPI: "https://services.openaire.eu/openaire/ds/api/", + monitorServiceAPIURL: "https://services.openaire.eu/uoa-monitor-service", + adminToolsAPIURL: "https://services.openaire.eu/uoa-admin-tools/", + contextsAPI: "https://services.openaire.eu/openaire/context", + communityAPI: "https://services.openaire.eu/openaire/community/", + lastIndexInformationLink: "https://www.openaire.eu/aggregation-and-content-provision-workflows", + widgetLink: "https://www.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=", + claimsInformationLink: "https://www.openaire.eu/linking", + indexInfoAPI: "https://services.openaire.eu/openaire/info/", + adminPortalURL: "https://admin.explore.openaire.eu", + +} From 59d64b74e7f34c86ace1d6de30e92dcfccbaeb48 Mon Sep 17 00:00:00 2001 From: argirok Date: Wed, 1 Nov 2023 16:35:46 +0200 Subject: [PATCH 02/11] [develop | WIP] :update common properties - add connect related ones + claims api url --- utils/properties/environments/environment.ts | 35 ++++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/utils/properties/environments/environment.ts b/utils/properties/environments/environment.ts index 133629cd..3378e87b 100644 --- a/utils/properties/environments/environment.ts +++ b/utils/properties/environments/environment.ts @@ -72,7 +72,17 @@ export let common: EnvProperties = { admins: ['feedback@openaire.eu'], b2noteAPIURL: 'https://b2note.eudat.eu/', myOrcidLinksPage: "/my-orcid-links", - footerGrantText: "OpenAIRE has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreements No. 777541 and 101017452" + footerGrantText: "OpenAIRE has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreements No. 777541 and 101017452", + + //connect + enermapsURL:"https://lab.idiap.ch/enermaps", + zenodoCommunities: 'https://zenodo.org/api/communities/', + shareInZenodoPage: '/participate/deposit/zenodo', + afterLoginRedirectLink: '/myCommunities', + searchLinkToCommunities: '/search/find/communities', + + + } export let commonDev: EnvProperties = { @@ -80,7 +90,7 @@ export let commonDev: EnvProperties = { statisticsAPIURL: "http://vatopedi.di.uoa.gr:8080/stats/", statisticsFrameAPIURL: "https://beta.openaire.eu/stats/", statisticsFrameNewAPIURL: "https://stats.madgik.di.uoa.gr/stats-api/", - claimsAPIURL: "http://rudie.di.uoa.gr:8980/dnet-claims-service-2.0.0-SNAPSHOT/rest/claimsService/", + claimsAPIURL: "http://scoobydoo.di.uoa.gr:8880/dnet-claims-service-2.0.0-SNAPSHOT/rest/claimsService/", searchAPIURLLAst: "http://beta.services.openaire.eu/search/v2/api/", searchResourcesAPIURL: "https://beta.services.openaire.eu/search/v2/api/resources", @@ -108,7 +118,9 @@ export let commonDev: EnvProperties = { indexInfoAPI: "https://beta.services.openaire.eu/openaire/info/", admins: ['kostis30fylloy@gmail.com', 'alexandros.martzios@athenarc.gr', 'kgalouni@di.uoa.gr'], adminPortalURL: "https://beta.admin.connect.openaire.eu", - + //connect + communitiesAPI: 'https://dev-openaire.d4science.org/openaire/community/communities', + registryUrl: 'http://mpagasas.di.uoa.gr:8080/dnet-openaire-users-1.0.0-SNAPSHOT/api/registry/', } @@ -117,7 +129,7 @@ export let commonTest: EnvProperties = { statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/", statisticsFrameAPIURL: "https://www.openaire.eu/stats/", statisticsFrameNewAPIURL: "https://services.openaire.eu/stats-tool/", - claimsAPIURL: "https://services.openaire.eu/claims/rest/claimsService/", + claimsAPIURL: "https://services.openaire.eu/claims-new/rest/claimsService/", searchAPIURLLAst: "https://services.openaire.eu/shadowSearch/v2/api/", searchResourcesAPIURL: "https://services.openaire.eu/shadowSearch/v2/api/resources", csvAPIURL: "https://services.openaire.eu/search/v2/api/reports", @@ -139,6 +151,9 @@ export let commonTest: EnvProperties = { adminPortalURL: "https://admin.explore.openaire.eu", + //connect + communitiesAPI: 'https://dev-openaire.d4science.org/openaire/community/communities', + registryUrl: 'http://mpagasas.di.uoa.gr:8080/dnet-openaire-users-1.0.0-SNAPSHOT/api/registry/', } export let commonBeta: EnvProperties = { @@ -165,7 +180,11 @@ export let commonBeta: EnvProperties = { widgetLink: "https://beta.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=", claimsInformationLink: "https://beta.openaire.eu/linking", indexInfoAPI: "https://beta.services.openaire.eu/openaire/info/", - adminPortalURL: "https://beta.admin.connect.openaire.eu" + adminPortalURL: "https://beta.admin.connect.openaire.eu", + + //connect + communitiesAPI: "https://beta.services.openaire.eu/openaire/community/communities", + registryUrl: 'https://beta.services.openaire.eu/uoa-user-management/api/registry/', } export let commonProd: EnvProperties = { @@ -173,7 +192,7 @@ export let commonProd: EnvProperties = { statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/", statisticsFrameAPIURL: "https://www.openaire.eu/stats/", statisticsFrameNewAPIURL: "https://services.openaire.eu/stats-tool/", - claimsAPIURL: "https://services.openaire.eu/claims/rest/claimsService/", + claimsAPIURL: "https://services.openaire.eu/claims-new/rest/claimsService/", searchAPIURLLAst: "https://services.openaire.eu/search/v2/api/", searchResourcesAPIURL: "https://services.openaire.eu/search/v2/api/resources", csvAPIURL: "https://services.openaire.eu/search/v2/api/reports", @@ -194,4 +213,8 @@ export let commonProd: EnvProperties = { indexInfoAPI: "https://services.openaire.eu/openaire/info/", adminPortalURL: "https://admin.explore.openaire.eu", + //connect + communitiesAPI: "https://services.openaire.eu/openaire/community/communities", + registryUrl: 'https://services.openaire.eu/uoa-user-management/api/registry/', + } From 0c0ef48b494ad49cd1f9bad9e08da79b5548b679 Mon Sep 17 00:00:00 2001 From: argirok Date: Wed, 1 Nov 2023 17:49:01 +0200 Subject: [PATCH 03/11] [develop | WIP] : Properties: remove wrong import, add more properties related to admin portal --- utils/properties/env-properties.ts | 1 - utils/properties/environments/environment.ts | 66 ++++++++++++++++++-- 2 files changed, 60 insertions(+), 7 deletions(-) diff --git a/utils/properties/env-properties.ts b/utils/properties/env-properties.ts index c3a4a613..897895a2 100644 --- a/utils/properties/env-properties.ts +++ b/utils/properties/env-properties.ts @@ -1,4 +1,3 @@ -import {watch} from "fs/promises"; export type Environment = "development" | "test" | "beta" | "production"; export type Dashboard = "explore" | "connect" | "monitor" | "aggregator" | "eosc" | "developers" | "faircore4eosc"; diff --git a/utils/properties/environments/environment.ts b/utils/properties/environments/environment.ts index 3378e87b..07f2264a 100644 --- a/utils/properties/environments/environment.ts +++ b/utils/properties/environments/environment.ts @@ -122,6 +122,10 @@ export let commonDev: EnvProperties = { communitiesAPI: 'https://dev-openaire.d4science.org/openaire/community/communities', registryUrl: 'http://mpagasas.di.uoa.gr:8080/dnet-openaire-users-1.0.0-SNAPSHOT/api/registry/', + //admin + miningBackendURL: 'https://beta.services.openaire.eu/interactive-mining', + feedbackmailForMissingEntities: 'feedback@openaire.eu', + connectPortalUrl: 'http://scoobydoo.di.uoa.gr:4200', } export let commonTest: EnvProperties = { @@ -148,12 +152,11 @@ export let commonTest: EnvProperties = { widgetLink: "https://www.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=", claimsInformationLink: "https://www.openaire.eu/linking", indexInfoAPI: "https://services.openaire.eu/openaire/info/", + adminPortalURL: "https://admin.connect.openaire.eu", + baseOpenaireLink: 'https://explore.openaire.eu', + - adminPortalURL: "https://admin.explore.openaire.eu", - //connect - communitiesAPI: 'https://dev-openaire.d4science.org/openaire/community/communities', - registryUrl: 'http://mpagasas.di.uoa.gr:8080/dnet-openaire-users-1.0.0-SNAPSHOT/api/registry/', } export let commonBeta: EnvProperties = { @@ -181,10 +184,18 @@ export let commonBeta: EnvProperties = { claimsInformationLink: "https://beta.openaire.eu/linking", indexInfoAPI: "https://beta.services.openaire.eu/openaire/info/", adminPortalURL: "https://beta.admin.connect.openaire.eu", + baseOpenaireLink: 'https://beta.explore.openaire.eu', //connect communitiesAPI: "https://beta.services.openaire.eu/openaire/community/communities", registryUrl: 'https://beta.services.openaire.eu/uoa-user-management/api/registry/', + //admin + miningBackendURL: 'https://beta.services.openaire.eu/interactive-mining', + feedbackmailForMissingEntities: 'feedback@openaire.eu', + deleteCacheUrl: 'https://demo.openaire.eu/cache/clear', + deleteBrowserCacheUrl: 'https://beta.services.openaire.eu/uoa-admin-tools/cache', + connectPortalUrl: 'https://beta.connect.openaire.eu', + } export let commonProd: EnvProperties = { @@ -211,10 +222,53 @@ export let commonProd: EnvProperties = { widgetLink: "https://www.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=", claimsInformationLink: "https://www.openaire.eu/linking", indexInfoAPI: "https://services.openaire.eu/openaire/info/", - adminPortalURL: "https://admin.explore.openaire.eu", + adminPortalURL: "https://admin.connect.openaire.eu", + baseOpenaireLink: 'https://explore.openaire.eu', //connect communitiesAPI: "https://services.openaire.eu/openaire/community/communities", - registryUrl: 'https://services.openaire.eu/uoa-user-management/api/registry/', + //admin + registryUrl: 'https://services.openaire.eu/uoa-user-management/api/registry/', + miningBackendURL: 'https://beta.services.openaire.eu/interactive-mining', + feedbackmailForMissingEntities: 'feedback@openaire.eu', + deleteCacheUrl: 'https://explore.openaire.eu/cache/clear', + deleteBrowserCacheUrl: 'https://services.openaire.eu/uoa-admin-tools/cache', + connectPortalUrl: 'https://connect.openaire.eu', } + + +/* +* + +Properties to check + +* not in explore + +* isDashboard +showContent + +enableEoscDataTransfer + + +developersApiUrl?: string, + +useHelpTexts?:boolean; + + + searchLinkToStakeholders?: string; + +searchLinkToAdvancedServices?: string; + + +sushiliteURL?: string; + +notificationsAPIURL?: string; + + +egiNotebookLink?: string; + +eoscDataTransferAPI?; + eoscDataTransferLoginUrl?; + eoscDataTransferDestinations?; +* */ From 3e656de39ca585a307b558e46c26de61afc35b96 Mon Sep 17 00:00:00 2001 From: argirok Date: Thu, 2 Nov 2023 09:19:24 +0200 Subject: [PATCH 04/11] [develop | WIP] : Properties: add again clientManagementUrl property --- utils/properties/env-properties.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/properties/env-properties.ts b/utils/properties/env-properties.ts index 897895a2..9f6b6db8 100644 --- a/utils/properties/env-properties.ts +++ b/utils/properties/env-properties.ts @@ -61,6 +61,7 @@ export interface EnvProperties { registryUrl?: string; logoutUrl?: string; userInfoUrl?: string; + clientManagementUrl?: string, developersApiUrl?: string, cookieDomain?: string; feedbackmail?: string; From e38a772bf379611e91b78164ed6137f20fa4dcbd Mon Sep 17 00:00:00 2001 From: "k.triantafyllou" Date: Thu, 2 Nov 2023 11:30:59 +0200 Subject: [PATCH 05/11] [develop | DONE]: Move manage stakeholders to library --- .../manageStakeholders-routing.module.ts | 18 + .../manageStakeholders.component.html | 138 ++++++++ .../manageStakeholders.component.less | 23 ++ .../manageStakeholders.component.ts | 311 ++++++++++++++++++ .../manageStakeholders.module.ts | 50 +++ monitor/entities/stakeholder.ts | 4 +- 6 files changed, 542 insertions(+), 2 deletions(-) create mode 100644 monitor-admin/manageStakeholders/manageStakeholders-routing.module.ts create mode 100644 monitor-admin/manageStakeholders/manageStakeholders.component.html create mode 100644 monitor-admin/manageStakeholders/manageStakeholders.component.less create mode 100644 monitor-admin/manageStakeholders/manageStakeholders.component.ts create mode 100644 monitor-admin/manageStakeholders/manageStakeholders.module.ts diff --git a/monitor-admin/manageStakeholders/manageStakeholders-routing.module.ts b/monitor-admin/manageStakeholders/manageStakeholders-routing.module.ts new file mode 100644 index 00000000..03c01a41 --- /dev/null +++ b/monitor-admin/manageStakeholders/manageStakeholders-routing.module.ts @@ -0,0 +1,18 @@ +import {NgModule} from '@angular/core'; +import {RouterModule} from '@angular/router'; +import {PreviousRouteRecorder} from '../../utils/piwik/previousRouteRecorder.guard'; +import {ManageStakeholdersComponent} from "./manageStakeholders.component"; + +@NgModule({ + imports: [ + RouterModule.forChild([ + { + path: '', + component: ManageStakeholdersComponent, + canDeactivate: [PreviousRouteRecorder] + } + ]) + ] +}) +export class ManageStakeholdersRoutingModule { +} diff --git a/monitor-admin/manageStakeholders/manageStakeholders.component.html b/monitor-admin/manageStakeholders/manageStakeholders.component.html new file mode 100644 index 00000000..5b981cde --- /dev/null +++ b/monitor-admin/manageStakeholders/manageStakeholders.component.html @@ -0,0 +1,138 @@ +
+
+ +
+ + + + + +
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+

Profile Templates

+
+ + + +
+ +
+
+
+
+

+ No profiles to manage yet +

+
+
+

Profiles

+
+ + + +
+ +
+
+
+
+
+
+
+ + + + + + +
+
+ {{text}} +
+
+ + + +
+
+
+
+ +
+ +
+
+ +
+
+ +
+ +
+
+ This stakeholder will permanently be deleted. Are you sure you want to proceed? +
+
diff --git a/monitor-admin/manageStakeholders/manageStakeholders.component.less b/monitor-admin/manageStakeholders/manageStakeholders.component.less new file mode 100644 index 00000000..ee701579 --- /dev/null +++ b/monitor-admin/manageStakeholders/manageStakeholders.component.less @@ -0,0 +1,23 @@ +@import (reference) "~src/assets/openaire-theme/less/color.less"; + +.setType(@color) { + border-bottom: 4px solid fade(@color, 30%); + + & .type { + color: @color; + } +} + +.uk-card { + &.funder { + .setType(@funder-color); + } + + &.ri { + .setType(@ri-color); + } + + &.organization { + .setType(@organization-color); + } +} diff --git a/monitor-admin/manageStakeholders/manageStakeholders.component.ts b/monitor-admin/manageStakeholders/manageStakeholders.component.ts new file mode 100644 index 00000000..5e637b3e --- /dev/null +++ b/monitor-admin/manageStakeholders/manageStakeholders.component.ts @@ -0,0 +1,311 @@ +import {Component, OnDestroy, OnInit, ViewChild} from "@angular/core"; +import {StakeholderService} from "../../monitor/services/stakeholder.service"; +import {EnvProperties} from "../../utils/properties/env-properties"; +import {Stakeholder, StakeholderEntities, Visibility} from "../../monitor/entities/stakeholder"; +import {Subscriber, zip} from "rxjs"; +import {StakeholderUtils} from "../utils/indicator-utils"; +import {UntypedFormBuilder, UntypedFormGroup} from "@angular/forms"; +import {AlertModal} from "../../utils/modal/alert"; +import {Option} from "../../sharedComponents/input/input.component"; +import {Title} from "@angular/platform-browser"; +import {UserManagementService} from "../../services/user-management.service"; +import {Session} from "../../login/utils/helper.class"; +import {EditStakeholderComponent} from "../general/edit-stakeholder/edit-stakeholder.component"; +import {properties} from "src/environments/environment"; +import {ActivatedRoute} from "@angular/router"; +import {CacheIndicatorsService} from "../utils/cache-indicators/cache-indicators.service"; +import {NotificationHandler} from "../../utils/notification-handler"; + +type Tab = 'all' | 'templates'| 'profiles'; + +declare var UIkit; + +@Component({ + selector: 'home', + templateUrl: "./manageStakeholders.component.html", + styleUrls: ["./manageStakeholders.component.less"] +}) +export class ManageStakeholdersComponent implements OnInit, OnDestroy { + + public properties: EnvProperties; + public loading: boolean = true; + public deleteLoading: boolean = false; + public stakeholderUtils: StakeholderUtils = new StakeholderUtils(); + public defaultStakeholders: Stakeholder[]; + public stakeholders: Stakeholder[]; + public alias: string[]; + public stakeholder: Stakeholder; + public index: number; + public user = null; + public tab: Tab = 'all'; + /** + * Filtered Stakeholders + */ + public displayDefaultStakeholders: Stakeholder[]; + public displayStakeholders: Stakeholder[]; + /** + * Top filters + */ + public filters: UntypedFormGroup; + public all: Option = { + value: 'all', + label: 'All' + }; + + public callback: Function; + + /** + * Grid or List View + */ + private subscriptions: any[] = []; + @ViewChild('editStakeholderModal', { static: true }) editStakeholderModal: AlertModal; + @ViewChild('deleteStakeholderModal', { static: true }) deleteStakeholderModal: AlertModal; + @ViewChild('editStakeholderComponent', { static: true }) editStakeholderComponent: EditStakeholderComponent; + + constructor(private stakeholderService: StakeholderService, + private cacheIndicatorsService: CacheIndicatorsService, + private userManagementService: UserManagementService, + private route: ActivatedRoute, + private title: Title, + private fb: UntypedFormBuilder) { + } + + ngOnInit(): void { + this.buildFilters(); + this.properties = properties; + this.title.setTitle('Manage profiles'); + this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => { + this.user = user; + })); + let data = zip( + this.stakeholderService.getDefaultStakeholders(this.properties.monitorServiceAPIURL), + this.stakeholderService.getMyStakeholders(this.properties.monitorServiceAPIURL), + this.stakeholderService.getAlias(this.properties.monitorServiceAPIURL) + ); + this.subscriptions.push(data.subscribe(res => { + this.defaultStakeholders = res[0]; + this.stakeholders = res[1]; + this.displayDefaultStakeholders = res[0]; + this.displayStakeholders = res[1]; + this.alias = res[2]; + this.loading = false; + }, error => { + this.loading = false; + })); + } + + ngOnDestroy(): void { + this.subscriptions.forEach(value => { + if (value instanceof Subscriber) { + value.unsubscribe(); + } else if (value instanceof Function) { + value(); + } + }); + } + + hide(element: any) { + UIkit.dropdown(element).hide(); + } + + + private buildFilters() { + this.filters = this.fb.group({ + status: this.fb.control('all'), + keyword: this.fb.control('') + }); + this.subscriptions.push(this.filters.get('status').valueChanges.subscribe(value => { + this.onStatusChange(value); + })); + this.subscriptions.push(this.filters.get('keyword').valueChanges.subscribe(value => { + this.onKeywordChange(value); + })); + } + + onStatusChange(value) { + this.displayDefaultStakeholders = this.filterStatus(this.defaultStakeholders, value); + this.displayStakeholders = this.filterStatus(this.stakeholders, value); + } + + onKeywordChange(value) { + this.displayDefaultStakeholders = this.filterByKeyword(this.defaultStakeholders, value); + this.displayStakeholders = this.filterByKeyword(this.stakeholders, value); + } + + private filterStatus(stakeholders: Stakeholder[], value): Stakeholder[] { + if (value === 'all') { + return stakeholders; + } else { + return stakeholders.filter(stakeholder => stakeholder.visibility == value); + } + } + + private filterByKeyword(stakeholders: Stakeholder[], value): Stakeholder[] { + if (!value) { + return stakeholders; + } else { + return stakeholders.filter(stakeholder => + stakeholder.name && stakeholder.name.toLowerCase().includes(value.toLowerCase()) || + stakeholder.type && stakeholder.type.toLowerCase().includes(value.toLowerCase()) || + stakeholder.index_id && stakeholder.index_id.toLowerCase().includes(value.toLowerCase()) || + stakeholder.index_shortName && stakeholder.index_shortName.toLowerCase().includes(value.toLowerCase()) || + stakeholder.index_name && stakeholder.index_name.toLowerCase().includes(value.toLowerCase()) + ); + } + } + + public editStakeholder(stakeholder: Stakeholder = null, isDefault: boolean = false) { + if (isDefault) { + this.index = (stakeholder) ? this.defaultStakeholders.findIndex(value => value._id === stakeholder._id) : -1; + } else { + this.index = (stakeholder) ? this.stakeholders.findIndex(value => value._id === stakeholder._id) : -1; + } + if (!stakeholder) { + this.stakeholder = new Stakeholder(null, null, null, + null, null, null, null, null); + } else { + this.stakeholder = stakeholder; + } + this.editStakeholderComponent.init(this.stakeholder, this.alias, this.defaultStakeholders, isDefault, this.index === -1); + if (this.index !== -1) { + this.callback = (stakeholder: Stakeholder) => { + let index: number; + if (stakeholder.defaultId == null) { + index = this.alias.findIndex(value => value == this.defaultStakeholders[this.index].alias); + this.defaultStakeholders[this.index] = stakeholder; + } else { + index = this.alias.findIndex(value => value == this.stakeholders[this.index].alias); + this.stakeholders[this.index] = stakeholder; + } + if(index != -1) { + this.alias[index] = stakeholder.alias; + } + this.editStakeholderModal.cancel(); + }; + this.editStakeholderModal.alertTitle = 'Edit ' + this.stakeholder.name; + this.editStakeholderModal.okButtonText = 'Save Changes'; + } else { + this.callback = (stakeholder: Stakeholder) => { + if (stakeholder.defaultId === null) { + this.defaultStakeholders.push(stakeholder); + } else { + this.stakeholders.push(stakeholder); + } + this.alias.push(stakeholder.alias); + this.editStakeholderModal.cancel(); + }; + this.editStakeholderModal.alertTitle = 'Create a new ' + (isDefault?'Default ':'') + 'Profile'; + this.editStakeholderModal.okButtonText = 'Create'; + } + this.editStakeholderModal.cancelButtonText = 'Cancel'; + this.editStakeholderModal.okButtonLeft = false; + this.editStakeholderModal.alertMessage = false; + this.editStakeholderModal.stayOpen = true; + this.editStakeholderModal.open(); + } + + public createReport(stakeholder: Stakeholder) { + this.cacheIndicatorsService.createReport(stakeholder.alias).subscribe(report => { + NotificationHandler.rise('A caching process for ' + stakeholder.name + ' has been started.' ) + }, error => { + console.log(error); + NotificationHandler.rise(error.message(), 'danger'); + }); + } + + public deleteStakeholderOpen(stakeholder: Stakeholder) { + this.stakeholder = stakeholder; + this.deleteStakeholderModal.alertTitle = 'Delete ' + this.stakeholder.index_name; + this.deleteStakeholderModal.cancelButtonText = 'No'; + this.deleteStakeholderModal.okButtonText = 'Yes'; + this.deleteStakeholderModal.alertMessage = false; + this.deleteStakeholderModal.stayOpen = true; + this.deleteStakeholderModal.open(); + } + + public deleteStakeholder() { + this.deleteLoading = true; + if (!this.stakeholder.defaultId) { + this.index = (this.stakeholder) ? this.defaultStakeholders.findIndex(value => value._id === this.stakeholder._id) : -1; + } else { + this.index = (this.stakeholder) ? this.stakeholders.findIndex(value => value._id === this.stakeholder._id) : -1; + } + this.subscriptions.push(this.stakeholderService.deleteElement(this.properties.monitorServiceAPIURL, [this.stakeholder._id]).subscribe(() => { + UIkit.notification(this.stakeholder.name+ ' has been successfully deleted', { + status: 'success', + timeout: 6000, + pos: 'bottom-right' + }); + if (!this.stakeholder.defaultId) { + this.defaultStakeholders.splice(this.index, 1); + } else { + this.stakeholders.splice(this.index, 1); + } + this.alias = this.alias.filter(item => item !== this.stakeholder.alias); + this.deleteLoading = false; + this.deleteStakeholderModal.cancel(); + }, error => { + UIkit.notification('An error has occurred. Please try again later', { + status: 'danger', + timeout: 6000, + pos: 'bottom-right' + }); + this.deleteLoading = false; + this.deleteStakeholderModal.cancel(); + })); + } + + changeStakeholderStatus(stakeholder: Stakeholder, visibility: Visibility) { + let path = [ + stakeholder._id + ]; + this.subscriptions.push(this.stakeholderService.changeVisibility(this.properties.monitorServiceAPIURL, path, visibility).subscribe(returnedElement => { + stakeholder.visibility = returnedElement.visibility; + UIkit.notification(stakeholder.name+ '\'s status has been successfully changed to ' + stakeholder.visibility.toLowerCase(), { + status: 'success', + timeout: 6000, + pos: 'bottom-right' + }); + }, error => { + UIkit.notification('An error has occurred. Please try again later', { + status: 'danger', + timeout: 6000, + pos: 'bottom-right' + }); + })); + } + + public isManager(): boolean { + return this.isCurator() || (Session.isKindOfMonitorManager(this.user)); + } + + public isProfileManager(stakeholder: Stakeholder): boolean { + return this.isCurator() || (Session.isManager(stakeholder.type, stakeholder.alias, this.user)); + } + + public isCurator(): boolean { + return this.isAdmin() || Session.isMonitorCurator(this.user); + } + + public isAdmin(): boolean { + return Session.isPortalAdministrator(this.user); + } + + get typesAsString() { + return this.stakeholderUtils.types.slice(0, this.stakeholderUtils.types.length - 1).map(type => type.label).join(', ') + + ' or ' + this.stakeholderUtils.types[this.stakeholderUtils.types.length - 1].label + } + + private isTab(tab: Tab): boolean { + switch (tab) { + case "all": + return true; + case "profiles": + return true; + case "templates": + return true; + default: + return false; + } + } +} diff --git a/monitor-admin/manageStakeholders/manageStakeholders.module.ts b/monitor-admin/manageStakeholders/manageStakeholders.module.ts new file mode 100644 index 00000000..41847068 --- /dev/null +++ b/monitor-admin/manageStakeholders/manageStakeholders.module.ts @@ -0,0 +1,50 @@ +import {NgModule} from "@angular/core"; +import {ManageStakeholdersComponent} from "./manageStakeholders.component"; +import {ManageStakeholdersRoutingModule} from "./manageStakeholders-routing.module"; +import {PreviousRouteRecorder} from "../../utils/piwik/previousRouteRecorder.guard"; +import {CommonModule} from "@angular/common"; +import {RouterModule} from "@angular/router"; +import {InputModule} from "../../sharedComponents/input/input.module"; +import {LoadingModule} from "../../utils/loading/loading.module"; +import {AlertModalModule} from "../../utils/modal/alertModal.module"; +import {ReactiveFormsModule} from "@angular/forms"; +import {IconsModule} from "../../utils/icons/icons.module"; +import {IconsService} from "../../utils/icons/icons.service"; +import {earth, incognito, restricted} from "../../utils/icons/icons"; +import {PageContentModule} from "../../dashboard/sharedComponents/page-content/page-content.module"; +import {LogoUrlPipeModule} from "../../utils/pipes/logoUrlPipe.module"; +import {SearchInputModule} from "../../sharedComponents/search-input/search-input.module"; +import { + SidebarMobileToggleModule +} from "../../dashboard/sharedComponents/sidebar/sidebar-mobile-toggle/sidebar-mobile-toggle.module"; +import {SliderTabsModule} from "../../sharedComponents/tabs/slider-tabs.module"; +import {EditStakeholderModule} from "../general/edit-stakeholder/edit-stakeholder.module"; + +@NgModule({ + declarations: [ManageStakeholdersComponent], + imports: [ + ManageStakeholdersRoutingModule, + CommonModule, + RouterModule, + InputModule, + LoadingModule, + AlertModalModule, + ReactiveFormsModule, + EditStakeholderModule, + IconsModule, + PageContentModule, + LogoUrlPipeModule, + SearchInputModule, + SidebarMobileToggleModule, + SliderTabsModule + ], + providers: [ + PreviousRouteRecorder, + ], + exports: [ManageStakeholdersComponent] +}) +export class ManageStakeholdersModule { + constructor(private iconsService: IconsService) { + this.iconsService.registerIcons([earth, incognito, restricted]); + } +} diff --git a/monitor/entities/stakeholder.ts b/monitor/entities/stakeholder.ts index 13ed58cf..357f42ab 100644 --- a/monitor/entities/stakeholder.ts +++ b/monitor/entities/stakeholder.ts @@ -314,6 +314,6 @@ export enum StakeholderEntities { export let stakeholderTypes: Option[] = [ {value: 'funder', label: StakeholderEntities.FUNDER}, {value: 'ri', label: StakeholderEntities.RI}, - {value: 'project', label: StakeholderEntities.PROJECT}, - {value: 'organization', label: StakeholderEntities.ORGANIZATION} + {value: 'organization', label: StakeholderEntities.ORGANIZATION}, + {value: 'project', label: StakeholderEntities.PROJECT} ]; From 06a2ae16ee5576fec34cc1afad614eff45dc715d Mon Sep 17 00:00:00 2001 From: "k.triantafyllou" Date: Fri, 3 Nov 2023 16:52:52 +0200 Subject: [PATCH 06/11] [develop | DONE]: Set header-height to 0px instead of 0 in layout service --- dashboard/sharedComponents/sidebar/layout.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dashboard/sharedComponents/sidebar/layout.service.ts b/dashboard/sharedComponents/sidebar/layout.service.ts index 38ae65c7..02754405 100644 --- a/dashboard/sharedComponents/sidebar/layout.service.ts +++ b/dashboard/sharedComponents/sidebar/layout.service.ts @@ -131,7 +131,7 @@ export class LayoutService { data['hasHeader'] === false) { this.setHasHeader(false); if (typeof document !== "undefined") { - document.documentElement.style.setProperty('--header-height', '0'); + document.documentElement.style.setProperty('--header-height', '0px'); } } else { this.setHasHeader(true); From 3aff9ee76e9bd06ee6beffa660dbccde3eef2cd1 Mon Sep 17 00:00:00 2001 From: "konstantina.galouni" Date: Tue, 7 Nov 2023 13:32:05 +0200 Subject: [PATCH 07/11] [develop | DONE | ADDED] openaireLibrary - environment.ts: Added common properties searchLinkToService, searchLinkToServices, searchLinkToAdvancedServices. --- utils/properties/environments/environment.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/utils/properties/environments/environment.ts b/utils/properties/environments/environment.ts index 07f2264a..60dc03e4 100644 --- a/utils/properties/environments/environment.ts +++ b/utils/properties/environments/environment.ts @@ -38,6 +38,7 @@ export let common: EnvProperties = { searchLinkToPublication: "/search/publication?articleId=", searchLinkToProject: "/search/project?projectId=", searchLinkToDataProvider: "/search/dataprovider?datasourceId=", + searchLinkToService: "/search/service?serviceId=", searchLinkToDataset: "/search/dataset?datasetId=", searchLinkToSoftwareLanding: "/search/software?softwareId=", searchLinkToOrp: "/search/other?orpId=", @@ -45,6 +46,7 @@ export let common: EnvProperties = { searchLinkToAll: "/search/find/", searchLinkToPublications: "/search/find/publications", searchLinkToDataProviders: "/search/find/dataproviders", + searchLinkToServices: "/search/find/services", searchLinkToProjects: "/search/find/projects", searchLinkToDatasets: "/search/find/datasets", searchLinkToSoftware: "/search/find/software", @@ -60,6 +62,7 @@ export let common: EnvProperties = { searchLinkToAdvancedSoftware: "/search/advanced/software", searchLinkToAdvancedOrps: "/search/advanced/other", searchLinkToAdvancedDataProviders: "/search/advanced/dataproviders", + searchLinkToAdvancedServices: "/search/advanced/services", searchLinkToAdvancedOrganizations: "/search/advanced/organizations", searchLinkToAdvancedResults: "/search/advanced/research-outcomes", errorLink: '/error', From 0d75307c761c3c12e8fd779ecdbd779b64b783de Mon Sep 17 00:00:00 2001 From: "konstantina.galouni" Date: Wed, 8 Nov 2023 14:12:50 +0200 Subject: [PATCH 08/11] [develop | DONE | CHANGED]: parsingFunctions.class.ts: Remove old schema parsing for impact based indicators (old was A, B, C - new is C1-C5). --- landingPages/landing-utils/parsingFunctions.class.ts | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/landingPages/landing-utils/parsingFunctions.class.ts b/landingPages/landing-utils/parsingFunctions.class.ts index cad44497..64a855c3 100644 --- a/landingPages/landing-utils/parsingFunctions.class.ts +++ b/landingPages/landing-utils/parsingFunctions.class.ts @@ -902,10 +902,6 @@ export class ParsingFunctions { metric.value = 'Top 1%'; } else if (element.class == 'C4') { metric.value = 'Top 10%'; - } else if (element.class == 'A') { - metric.value = 'Exceptional'; - } else if (element.class == 'B') { - metric.value = 'Substantial'; } else { metric.value = 'Average'; } @@ -922,10 +918,6 @@ export class ParsingFunctions { metric.value = 'Top 1%'; } else if (element.class == 'C4') { metric.value = 'Top 10%'; - } else if (element.class == 'A') { - metric.value = 'Exceptional'; - } else if (element.class == 'B') { - metric.value = 'Substantial'; } else { metric.value = 'Average'; } @@ -942,10 +934,6 @@ export class ParsingFunctions { metric.value = 'Top 1%'; } else if (element.class == 'C4') { metric.value = 'Top 10%'; - } else if (element.class == 'A') { - metric.value = 'Exceptional'; - } else if (element.class == 'B') { - metric.value = 'Substantial'; } else { metric.value = 'Average'; } From 32a34d5a1222c96137bec1f5b93bbbba685cf41e Mon Sep 17 00:00:00 2001 From: "konstantina.galouni" Date: Wed, 8 Nov 2023 16:57:56 +0200 Subject: [PATCH 09/11] [develop | DONE | ADDED]: Added parsing and display for usage counts per data source. 1. resultLandingInfo.ts: a. Commented out deprecated fields from interface Measure. b. Added interface MetricPerDatasource. c. Added in interface Measure, countsPerDatasource?: MetricPerDatasource[]; 2. parsingFunctions.class.ts: In method "parseMeasures()", added parsing for usage counts per data source (countsPerDatasource). 3. resultLanding.component.html: Display countsPerDatasource in table (metrics tab > usage tab) if there is any. --- .../landing-utils/parsingFunctions.class.ts | 53 +++++++++++++++---- .../result/resultLanding.component.html | 18 +++++++ utils/entities/resultLandingInfo.ts | 32 ++++++----- 3 files changed, 82 insertions(+), 21 deletions(-) diff --git a/landingPages/landing-utils/parsingFunctions.class.ts b/landingPages/landing-utils/parsingFunctions.class.ts index 64a855c3..a34ba066 100644 --- a/landingPages/landing-utils/parsingFunctions.class.ts +++ b/landingPages/landing-utils/parsingFunctions.class.ts @@ -1,5 +1,5 @@ import {HostedByCollectedFrom, Project, RelationResult} from "../../utils/result-preview/result-preview"; -import {Context, Measure, Metric, Reference} from "../../utils/entities/resultLandingInfo"; +import {Context, Measure, Metric, MetricPerDatasource, Reference} from "../../utils/entities/resultLandingInfo"; import {Injectable} from '@angular/core'; import {properties} from "../../../../environments/environment"; import {StringUtils} from "../../utils/string-utils.class"; @@ -878,19 +878,43 @@ export class ParsingFunctions { if (elements && elements.length) { let bip: Metric[] = []; let counts: Metric[] = []; + let countsPerDatasource: MetricPerDatasource[] = []; let measure: Measure = {}; + + let datasourcePosition: Map = new Map(); + + let views: number = 0; + let downloads: number = 0; elements.forEach(element => { if (element.id == 'views') { - counts.push({name: 'views', icon: 'visibility', value: element.count, order: 0}); - measure.views = element.count; + views += element.count; + let datasourceId = element.datasource; + if(datasourceId) { + if(datasourcePosition.has(element.datasource)) { + countsPerDatasource[datasourcePosition.get(element.datasource)].views = element.count; + } else { + datasourcePosition.set(element.datasource, countsPerDatasource.length); + countsPerDatasource.push({"datasourceId": element.datasource, "views": element.count, "downloads": 0}) + } + } + // measure.views = element.count; } if (element.id == 'downloads') { - counts.push({name: 'downloads', icon: 'download', value: element.count, order: 1}); - measure.downloads = element.count; + downloads += element.count; + let datasourceId = element.datasource; + if(datasourceId) { + if(datasourcePosition.has(element.datasource)) { + countsPerDatasource[datasourcePosition.get(element.datasource)].downloads = element.count; + } else { + datasourcePosition.set(element.datasource, countsPerDatasource.length); + countsPerDatasource.push({"datasourceId": element.datasource, "views": 0, "downloads": element.count}) + } + } + // measure.downloads = element.count; } if (element.id == 'influence_alt' || element.id == 'citation_count') { bip.push({name: 'citations', icon: 'cite', value: element.score, order: 2}); - measure.citations = element.score; + // measure.citations = element.score; } if (element.id == 'popularity') { let metric: Metric = {name: 'popularity', icon: 'fire', value: null, order: 3}; @@ -905,7 +929,7 @@ export class ParsingFunctions { } else { metric.value = 'Average'; } - measure.popularity = metric.value; + // measure.popularity = metric.value; bip.push(metric); } if (element.id == 'influence') { @@ -921,7 +945,7 @@ export class ParsingFunctions { } else { metric.value = 'Average'; } - measure.influence = metric.value; + // measure.influence = metric.value; bip.push(metric); } if (element.id == 'impulse') { @@ -937,10 +961,21 @@ export class ParsingFunctions { } else { metric.value = 'Average'; } - measure.impulse = metric.value; + // measure.impulse = metric.value; bip.push(metric); } }); + + if(views > 0) { + counts.push({name: 'views', icon: 'visibility', value: views, order: 0}); + } + if(downloads > 0) { + counts.push({name: 'downloads', icon: 'download', value: downloads, order: 1}); + } + if(countsPerDatasource && countsPerDatasource.length > 0) { + measure.countsPerDatasource = countsPerDatasource; + } + measure.bip = bip.sort((a, b) => a.order - b.order); measure.counts = counts.sort((a, b) => a.order - b.order); return measure; diff --git a/landingPages/result/resultLanding.component.html b/landingPages/result/resultLanding.component.html index 6df0320b..ca097000 100644 --- a/landingPages/result/resultLanding.component.html +++ b/landingPages/result/resultLanding.component.html @@ -1240,6 +1240,24 @@ +
+ + + + + + + + + + + + + + + +
Data sourceViewsDownloads
{{datasource.datasourceId}}{{datasource.views}}{{datasource.downloads}}
+
Powered by diff --git a/utils/entities/resultLandingInfo.ts b/utils/entities/resultLandingInfo.ts index 30e1e76b..8a45393b 100644 --- a/utils/entities/resultLandingInfo.ts +++ b/utils/entities/resultLandingInfo.ts @@ -30,20 +30,28 @@ export interface Context { } export interface Measure { - /** @deprecated*/ - downloads?: string; - /** @deprecated*/ - views?: string; - /** @deprecated*/ - influence?: string; - /** @deprecated*/ - popularity?: string; - /** @deprecated*/ - citations?: string; - /** @deprecated*/ - impulse?: string; + // /** @deprecated*/ + // downloads?: string; + // /** @deprecated*/ + // views?: string; + // /** @deprecated*/ + // influence?: string; + // /** @deprecated*/ + // popularity?: string; + // /** @deprecated*/ + // citations?: string; + // /** @deprecated*/ + // impulse?: string; bip?: Metric[] counts?: Metric[] + countsPerDatasource?: MetricPerDatasource[]; +} + +export interface MetricPerDatasource { + datasourceId: string, + // datasourceName: string, + views: number, + downloads: number } export interface Metric { From 68c352d3d275209d52bc3198dad7482ee21d193d Mon Sep 17 00:00:00 2001 From: "konstantina.galouni" Date: Wed, 8 Nov 2023 22:40:04 +0200 Subject: [PATCH 10/11] [develop | DONE | CHANGED]: In deposit page, move "Go to repository" button to top, aligned with the title when possible. 1. searchResultsForOrcid.component.html & searchMyOrcidResults.component.html: Removed [promoteWebsiteURL]="true", since this should be true only in deposit cards. 2. searchResultsInDeposit.component.ts: Added @Input() isMobile: boolean = false; 3. searchResultsInDeposit.component.html: Set parameter [isMobile]="isMobile" to . 4. newSearchPage.component.html: Set parameter [isMobile]="mobile" to . 5. result-preview.component.html: In deposit cards align on the right of the title the "Go to repository" button and in mobile screens show it on the top right of the card. --- deposit/searchResultsInDeposit.component.html | 2 +- deposit/searchResultsInDeposit.component.ts | 1 + .../searchMyOrcidResults.component.html | 2 +- .../searchResultsForOrcid.component.html | 2 +- .../searchUtils/newSearchPage.component.html | 3 +- .../result-preview.component.html | 120 ++++++++++-------- 6 files changed, 73 insertions(+), 57 deletions(-) diff --git a/deposit/searchResultsInDeposit.component.html b/deposit/searchResultsInDeposit.component.html index cfd55620..d622be32 100644 --- a/deposit/searchResultsInDeposit.component.html +++ b/deposit/searchResultsInDeposit.component.html @@ -19,7 +19,7 @@
  • + [isCard]="true" deposit="true" [isMobile]="isMobile">
  • diff --git a/deposit/searchResultsInDeposit.component.ts b/deposit/searchResultsInDeposit.component.ts index cfe75527..34e9ae46 100644 --- a/deposit/searchResultsInDeposit.component.ts +++ b/deposit/searchResultsInDeposit.component.ts @@ -19,6 +19,7 @@ export class SearchResultsInDepositComponent { @Input() status: number; @Input() type: string; @Input() properties:EnvProperties; + @Input() isMobile: boolean = false; public urlParam: string; diff --git a/orcid/my-orcid-links/searchMyOrcidResults.component.html b/orcid/my-orcid-links/searchMyOrcidResults.component.html index 4cbd7292..c1d1ede4 100644 --- a/orcid/my-orcid-links/searchMyOrcidResults.component.html +++ b/orcid/my-orcid-links/searchMyOrcidResults.component.html @@ -23,7 +23,7 @@
    Date: Fri, 10 Nov 2023 19:44:15 +0200 Subject: [PATCH 11/11] [develop | DONE | CHANGED]: data sources landing: Get and parse number of collected fulltexts from a new stats api. 1. env-properties.ts: Added property pdfStatisticsAPIURL?: string; 2. environment.ts: Added pdfStatisticsAPIURL property in all environments. 3. dataProvider.service.ts: Uncomment method "getCollectedFulltexts()". 4. dataProvider.component.ts: Call method "getCollectedFulltexts()" instead of "getDataProviderAggregationStatus()". --- .../dataProvider/dataProvider.component.ts | 42 +++++++++---------- .../dataProvider/dataProvider.service.ts | 8 ++-- utils/properties/env-properties.ts | 1 + utils/properties/environments/environment.ts | 4 ++ 4 files changed, 30 insertions(+), 25 deletions(-) diff --git a/landingPages/dataProvider/dataProvider.component.ts b/landingPages/dataProvider/dataProvider.component.ts index 6c4b8be0..baebcd09 100644 --- a/landingPages/dataProvider/dataProvider.component.ts +++ b/landingPages/dataProvider/dataProvider.component.ts @@ -394,8 +394,8 @@ export class DataProviderComponent { this.updateUrl(this.canonicalUrl); this.seoService.createLinkForCanonicalURL(this.properties.domain +this.properties.baseLink + this._router.url); if (typeof document !== 'undefined') { - this.getDataProviderAggregationStatus(this.dataProviderInfo.originalId); - // this.getCollectedFulltexts(); + // this.getDataProviderAggregationStatus(this.dataProviderInfo.originalId); + this.getCollectedFulltexts(); this.countResultsWithFundingInfo(); } else { this.aggregationStatusIsInitialized = true; @@ -454,34 +454,34 @@ export class DataProviderComponent { } } - private getDataProviderAggregationStatus(originalId: string) { - this.subscriptions.push(this._dataproviderService.getDataproviderAggregationStatus(originalId, this.properties).subscribe( - data => { - this.dataProviderInfo.aggregationStatus = data; - this.aggregationStatusIsInitialized = true; - }, - err => { - //console.log(err); - this.aggregationStatusIsInitialized = true; - this.handleError("Error getting "+this.getTypeName()+" aggregation status for id: " + this.datasourceId, err); - } - )); - } - - // private getCollectedFulltexts() { - // this.subscriptions.push(this._dataproviderService.getCollectedFulltexts(this.datasourceId).subscribe( - // (data: string) => { - // this.dataProviderInfo.aggregationStatus = {"fulltexts": data}; + // private getDataProviderAggregationStatus(originalId: string) { + // this.subscriptions.push(this._dataproviderService.getDataproviderAggregationStatus(originalId, this.properties).subscribe( + // data => { + // this.dataProviderInfo.aggregationStatus = data; // this.aggregationStatusIsInitialized = true; // }, // err => { // //console.log(err); // this.aggregationStatusIsInitialized = true; - // this.handleError("Error getting "+this.getTypeName()+" collected fulltexts for id: " + this.datasourceId, err); + // this.handleError("Error getting "+this.getTypeName()+" aggregation status for id: " + this.datasourceId, err); // } // )); // } + private getCollectedFulltexts() { + this.subscriptions.push(this._dataproviderService.getCollectedFulltexts(this.datasourceId).subscribe( + (data: string) => { + this.dataProviderInfo.aggregationStatus = {"fulltexts": data}; + this.aggregationStatusIsInitialized = true; + }, + err => { + //console.log(err); + this.aggregationStatusIsInitialized = true; + this.handleError("Error getting "+this.getTypeName()+" collected fulltexts for id: " + this.datasourceId, err); + } + )); + } + private countResultsWithFundingInfo() { this.subscriptions.push(this._searchResearchResultsService.countCollectedResultsWithFundingInfo(this.datasourceId).subscribe( fundedContent => { diff --git a/landingPages/dataProvider/dataProvider.service.ts b/landingPages/dataProvider/dataProvider.service.ts index a80645e8..e62dd935 100644 --- a/landingPages/dataProvider/dataProvider.service.ts +++ b/landingPages/dataProvider/dataProvider.service.ts @@ -83,10 +83,10 @@ export class DataProviderService { .pipe(map(res => this.parseDataproviderAggregationStatus(res))); } - // getCollectedFulltexts(datasourceId: string) { - // return this.http.get(properties.pdfStatisticsAPIURL+"/api/stats/getNumberOfPayloadsForDatasource?datasourceId="+datasourceId) - // .pipe(map(res => res)) - // } + getCollectedFulltexts(datasourceId: string) { + return this.http.get(properties.pdfStatisticsAPIURL+"/stats/getNumberOfPayloadsForDatasource?datasourceId="+datasourceId) + .pipe(map(res => res)) + } private handleError (error: HttpErrorResponse) { // in a real world app, we may send the error to some remote logging infrastructure diff --git a/utils/properties/env-properties.ts b/utils/properties/env-properties.ts index 9f6b6db8..f31bab44 100644 --- a/utils/properties/env-properties.ts +++ b/utils/properties/env-properties.ts @@ -15,6 +15,7 @@ export interface EnvProperties { showAddThis?: boolean; showContent?: boolean; enableEoscDataTransfer?:boolean; + pdfStatisticsAPIURL?: string; statisticsFrameAPIURL?: string; //delete? statisticsFrameNewAPIURL?: string; bipFrameAPIURL?: string; diff --git a/utils/properties/environments/environment.ts b/utils/properties/environments/environment.ts index 60dc03e4..c501777d 100644 --- a/utils/properties/environments/environment.ts +++ b/utils/properties/environments/environment.ts @@ -90,6 +90,7 @@ export let common: EnvProperties = { export let commonDev: EnvProperties = { environment: "development", + pdfStatisticsAPIURL: "https://beta.services.openaire.eu/pdf-stats", statisticsAPIURL: "http://vatopedi.di.uoa.gr:8080/stats/", statisticsFrameAPIURL: "https://beta.openaire.eu/stats/", statisticsFrameNewAPIURL: "https://stats.madgik.di.uoa.gr/stats-api/", @@ -133,6 +134,7 @@ export let commonDev: EnvProperties = { export let commonTest: EnvProperties = { environment: "test", + pdfStatisticsAPIURL: "https://services.openaire.eu/pdf-stats", statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/", statisticsFrameAPIURL: "https://www.openaire.eu/stats/", statisticsFrameNewAPIURL: "https://services.openaire.eu/stats-tool/", @@ -164,6 +166,7 @@ export let commonTest: EnvProperties = { export let commonBeta: EnvProperties = { environment: "beta", + pdfStatisticsAPIURL: "https://beta.services.openaire.eu/pdf-stats", statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/", statisticsFrameAPIURL: "https://beta.openaire.eu/stats/", statisticsFrameNewAPIURL: "https://beta.services.openaire.eu/stats-tool/", @@ -203,6 +206,7 @@ export let commonBeta: EnvProperties = { export let commonProd: EnvProperties = { environment: "production", + pdfStatisticsAPIURL: "https://services.openaire.eu/pdf-stats", statisticsAPIURL: "https://beta.services.openaire.eu/stats-api/", statisticsFrameAPIURL: "https://www.openaire.eu/stats/", statisticsFrameNewAPIURL: "https://services.openaire.eu/stats-tool/",