[Trunk|Connect]

App component: Add menu for connect pages

Dahsboard page: more layout changes



git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-connect-portal/trunk@55302 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
argiro.kokogiannaki 2019-04-12 11:05:28 +00:00
parent d696879ac3
commit babdec2843
5 changed files with 175 additions and 106 deletions

View File

@ -8,6 +8,8 @@ import { EnvironmentSpecificService} from './openaireLibrary/utils/properties/en
import {CommunitiesService} from "./openaireLibrary/connect/communities/communities.service";
import {Session} from './openaireLibrary/login/utils/helper.class';
import {ConnectHelper} from './openaireLibrary/connect/connectHelper';
import {SubscribeService} from './openaireLibrary/utils/subscribe/subscribe.service';
// import {LayoutService} from "./openaireLibrary/services/layout.service";
@Component({
@ -54,10 +56,13 @@ export class AppComponent {
properties:EnvProperties;
showMenu:boolean = false;
communities = null;
subscriberOfCommunities = [];
managerOfCommunities = [];
// layout = null;
// community: {id:string, name:string, logoUrl:string};
constructor( private route: ActivatedRoute, private propertiesService:EnvironmentSpecificService,
private _communitiesService:CommunitiesService){//, private _layoutService: LayoutService) {
private _communitiesService:CommunitiesService, private _subscribeService: SubscribeService,){//, private _layoutService: LayoutService) {
}
@ -72,8 +77,31 @@ export class AppComponent {
this._communitiesService.getCommunities(this.properties, this.properties.communitiesAPI).subscribe (
communities => {
console.log(communities);
for(var com of communities){
if(Session.isLoggedIn() && com['status'] != "hidden"){
if(Session.isCommunityCurator() || Session.isPortalAdministrator()){
this.managerOfCommunities.push(com);
}else if(com.managers.indexOf(Session.getUserEmail())!=-1){
this.managerOfCommunities.push(com);
}else{
// check if subscriber
if(com['status'] != "private"){
this._subscribeService.isSubscribedToCommunity(com.communityId, Session.getUserEmail(), this.properties.adminToolsAPIURL).subscribe (
isSubscriber => {
if(isSubscriber) {
this.subscriberOfCommunities.push(com);
}
},
error => {
console.error("Error fetching your subscribed communities")
});
}
}
}
if((data['communityId'] && data['communityId']!="" && com.communityId == data['communityId'])
|| (ConnectHelper.getCommunityFromDomain(this.properties.domain) == com.communityId ) ){
community = com;
@ -86,9 +114,6 @@ export class AppComponent {
// );
this.community = {id: community.communityId, name: (community.shortTitle)?community.shortTitle:community.title, logoUrl:community.logoUrl};
this.menuItems= [
// {rootItem: new MenuItem("dashboard","Dashboard","","/",false,[],[],this.properties.environment!="development"?{}:{communityId:community.communityId}),
// items: []
// },
{rootItem: new MenuItem("search","Search","","/search/find",false,[],["/search/find", "/search/find/publications", "/search/find/datasets", "/search/find/software", "/search/find/other", "/search/find/projects", "/search/find/dataproviders"],this.properties.environment!="development"?{}:{communityId:community.communityId}),
items: [new MenuItem("","Publications","","/search/find/publications",false,["publication"],["/search/find/publications"],this.properties.environment!="development"?{}:{communityId:community.communityId}),
new MenuItem("","Research Data","","/search/find/datasets",false,["dataset"],["/search/find/datasets"],this.properties.environment!="development"?{}:{communityId:community.communityId}),
@ -119,6 +144,22 @@ export class AppComponent {
}
if(community == null){
this.menuItems= [];
var myCommunities = [];
if(this.managerOfCommunities.length > 0){
myCommunities.push( new MenuItem("","Managing communities","","/search/find/communities",false,[],[],{role:"%22manager%22"}))
}
if(this.subscriberOfCommunities.length > 0){
myCommunities.push( new MenuItem("","Subscribed to communities","","/search/find/communities",false,[],[],{status:"%22subscribed%22"}))
}
this.menuItems.push({rootItem: new MenuItem("communities","Communities","","/search/find/communities",false,[],null,{}), items: []});
if(this.managerOfCommunities.length > 0 || this.subscriberOfCommunities.length > 0){
this.menuItems.push({rootItem: new MenuItem("myCommunities","My Communities","","",false,[],[],{}), items: myCommunities});
}
this.menuItems.push({rootItem: new MenuItem("howto","Create Community","","/how-to-create-community",false,[],null,{}), items: []});
this.bottomMenuItems =[
new MenuItem("","About","https://beta.openaire.eu/project-factsheets","",false,[],[],{}),
new MenuItem("","News - Events","https://beta.openaire.eu/news-events","",false,[],[],{}),

View File

@ -23,6 +23,7 @@ import {EnvironmentSpecificResolver} from './openaireLibrary/utils/propertie
import {CommunitiesService} from './openaireLibrary/connect/communities/communities.service';
import {LayoutService} from "./openaireLibrary/services/layout.service";
import {SubscribeModule} from './utils/subscribe/subscribe.module';
@NgModule({
@ -34,9 +35,10 @@ import {LayoutService} from "./openaireLibrary/services/layout.service";
ErrorModule,
CKEditorModule,
FormsModule,
NavigationBarModule, //FeedbackModule,
NavigationBarModule, //FeedbackModule,
BottomModule,
CookieLawModule,
SubscribeModule,
BrowserModule.withServerTransition({appId: 'my-app'}),
AppRoutingModule
],

View File

@ -3,7 +3,7 @@
<div *ngIf="communityInfo" class="uk-section uk-margin-top uk-padding-remove-bottom uk-visible@m " uk-sticky="top: #stickhere">
<div class="communityToolBar uk-padding-small uk-margin-small-top">
<div class="uk-container uk-text-center uk-margin-small-top uk-margin-small-bottom">
<manage *ngIf="communityId != null && communityId != ''" [communityId]="communityId" class=" " [buttonSizeSmall]=false></manage>
<manage *ngIf="communityId != null && communityId != '' && isManager()" [communityId]="communityId" class=" " [buttonSizeSmall]=false></manage>
<subscribe *ngIf="communityId != null && communityId != ''" [communityId]="communityId" class=""></subscribe>
<invite *ngIf="showInvite()" [longView]=false [buttonSizeSmall]=false></invite>
</div>
@ -18,6 +18,124 @@
</div>
</div>
</div>
<div *ngIf="communityInfo" class=" " >
<div class="uk-background-muted uk-padding-small">
<div class="uk-container uk-margin-bottom " *ngIf="communityId != null && communityId != '' && community != null">
<div *ngIf="community.title != null" class="uk-text-bold uk-h4 uk-margin-top">
<p> {{community.title}}</p>
</div>
<div *ngIf="community.title == null && community.shortTitle != null" class="uk-text-bold uk-h4 uk-margin-top">
<p> {{community.shortTitle}}</p>
</div>
<div *ngIf="community.description != null" class="uk-text-large">
<p> {{community.description}}</p>
</div>
<div class="uk-grid uk-grid-divider">
<div class="uk-width-1-3@m uk-width-1-1@s uk-first-column uk-margin-top">
<div *ngIf="community.date != null" > <span class="uk-text-bold">Created:</span> {{community.date | date:'dd-MM-yyyy'}}</div>
<subscribe *ngIf="communityId != null" [communityId]="communityId" showNumbers=true class=""></subscribe>
<div *ngIf="community.managers != null && community.managers[0] != '' && community.managers[0] != null"><span class="uk-text-bold"> Curated by:</span>
<span *ngFor='let manager of community.managers; let i = index' >{{manager.substr(0, manager.indexOf('@'))}}<span *ngIf="manager.includes('@') == 0">{{manager}}</span><span *ngIf="i<(community.managers.length-1)">,</span>
</span>
</div>
<div *ngIf=" isRouteEnabled('/participate/share-zenodo')" class="uk-margin-top">
<a [queryParams]=params routerLinkActive="router-link-active" routerLink="/participate/share-zenodo" >
Zenodo communities:<span> {{zenodoCommunityIdS.length + ((masterZenodoCommunity)?1:0)}}</span>
<span class="uk-icon" uk-tooltip="title:<div class='uk-pargin'>Zenodo is a catch-all repository for OpenAIRE<hr>A zenodo community is created and curated by Zenodo users</div>">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" icon="question" ratio="1"><circle fill="none" stroke="#000" stroke-width="1.1" cx="10" cy="10" r="9"></circle><circle cx="10.44" cy="14.42" r="1.05"></circle><path fill="none" stroke="#000" stroke-width="1.2" d="M8.17,7.79 C8.17,4.75 12.72,4.73 12.72,7.72 C12.72,8.67 11.81,9.15 11.23,9.75 C10.75,10.24 10.51,10.73 10.45,11.4 C10.44,11.53 10.43,11.64 10.43,11.75"></path></svg>
</span>
</a>
</div>
</div>
<div class="uk-width-2-3@m uk-width-1-1@s">
<div>
<div class=" uk-text-large uk-margin-bottom">Statistics</div>
<div *ngIf="communityId != null && communityId != ''" class="uk-child-width-1-6@l uk-child-width-1-6@m uk-child-width-1-3@s uk-text-center uk-grid uk-margin-remove">
<div *ngIf="publicationTotal != null && isEntityEnabled('publication') && isRouteEnabled('/search/find/publications')" class="uk-padding-remove-left">
<div class="uk-card uk-card-default uk-card-body uk-padding-remove uk-margin-small-right uk-height-1-1 uk-margin-bottom ">
<div class="uk-margin-top uk-margin-bottom">
<a class="uk-margin-auto-vertical uk-margin-auto" [queryParams]=params routerLinkActive="router-link-active" routerLink="/search/find/publications" ><span class="uk-text-bold">{{publicationTotal|number}}</span>
<p class="uk-text-small uk-margin-remove">publications</p></a>
</div>
</div>
</div>
<div *ngIf="researchDataTotal != null && isEntityEnabled('dataset') && isRouteEnabled('/search/find/datasets')" class="uk-padding-remove-left">
<div class="uk-card uk-card-default uk-card-body uk-padding-remove uk-margin-small-right uk-height-1-1 uk-margin-bottom">
<div class="uk-margin-top uk-margin-bottom">
<a class="uk-margin-auto-vertical uk-margin-auto" [queryParams]=params routerLinkActive="router-link-active" routerLink="/search/find/datasets"><span class="uk-text-bold">{{researchDataTotal|number}}</span>
<p class="uk-text-small uk-margin-remove">research data</p></a>
</div>
</div>
</div>
<div *ngIf="softwareTotal != null && isEntityEnabled('software') && isRouteEnabled('/search/find/software')" class="uk-padding-remove-left">
<div class="uk-card uk-card-default uk-card-body uk-padding-remove uk-margin-small-right uk-height-1-1 uk-margin-bottom ">
<div class="uk-margin-top uk-margin-bottom">
<a class="uk-margin-auto-vertical uk-margin-auto" [queryParams]=params routerLinkActive="router-link-active" routerLink="/search/find/software"><span class="uk-text-bold">{{softwareTotal|number}}</span>
<p class="uk-text-small uk-margin-remove">software</p></a>
</div>
</div>
</div>
<div *ngIf="orpTotal != null && isEntityEnabled('orp') && isRouteEnabled('/search/find/other')" class="uk-padding-remove-left">
<div class="uk-card uk-card-default uk-card-body uk-padding-remove uk-margin-small-right uk-height-1-1 uk-margin-bottom ">
<div class="uk-margin-top uk-margin-bottom">
<a class="uk-margin-auto-vertical uk-margin-auto" [queryParams]=params routerLinkActive="router-link-active" routerLink="/search/find/other"><span class="uk-text-bold">{{orpTotal|number}}</span>
<p class="uk-text-small uk-margin-remove">other products</p></a>
</div>
</div>
</div>
<div *ngIf="projectTotal != null && isEntityEnabled('project') && isRouteEnabled('/search/find/projects')" class="uk-padding-remove-left">
<div class="uk-card uk-card-default uk-card-body uk-padding-remove uk-margin-small-right uk-height-1-1 uk-margin-bottom ">
<div class="uk-margin-top uk-margin-bottom">
<a class="uk-margin-auto-vertical uk-margin-auto" [queryParams]=params routerLinkActive="router-link-active" routerLink="/search/find/projects"><span class="uk-text-bold">{{projectTotal|number}}</span>
<p class="uk-text-small uk-margin-remove">projects</p></a>
</div>
</div>
</div>
<div *ngIf="contentProviderTotal != null && isEntityEnabled('datasource') && isRouteEnabled('/search/find/dataproviders')" class="uk-padding-remove-left">
<div class="uk-card uk-card-default uk-card-body uk-padding-remove uk-margin-small-right uk-height-1-1 uk-margin-bottom ">
<div class="uk-margin-top uk-margin-bottom">
<a class="uk-margin-auto-vertical uk-margin-auto" [queryParams]=params routerLinkActive="router-link-active" routerLink="/search/find/dataproviders"><span class="uk-text-bold">{{contentProviderTotal|number}}</span>
<p class="uk-text-small uk-margin-remove">content providers</p></a>
</div>
</div>
</div>
</div>
<div *ngIf="community.subjects != null && community.subjects.length > 0" class=" uk-text-large uk-margin-bottom uk-margin-top">Subjects related to community</div>
<div *ngIf="community.subjects != null">
<span *ngFor="let subject of community.subjects.slice(0,10) let i=index">
<span *ngIf="subject != ''" class="uk-label uk-margin-small-bottom">{{subject}}</span>
</span>
<span *ngIf="showAll">
<span *ngFor="let subject of community.subjects.slice(10) let i=index">
<span *ngIf="subject != ''" class="uk-label uk-margin-small-bottom">{{subject}}</span>
</span>
</span>
<span *ngIf="!showAll && community.subjects.length > 10">
<a (click)="showAll = !showAll;">
show more
</a>
</span>
<span *ngIf="showAll">
<a (click)="showAll = !showAll;">
show less
</a>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="uk-section tm-middle uk-container uk-margin-small-top uk-padding-remove-top" id="tm-main">
<div class="uk-container uk-margin-bottom uk-grid">
<div class="uk-width-expand uk-padding-remove">
@ -26,104 +144,7 @@
No community chosen
</div>
<div *ngIf="communityId != null && communityId != '' && community != null">
<div *ngIf="community.title != null" class="uk-text-bold uk-h4">
<p> {{community.title}}</p>
</div>
<div *ngIf="community.title == null && community.shortTitle != null" class="uk-text-bold uk-h4">
<p> {{community.shortTitle}}</p>
</div>
<div *ngIf="community.description != null" class="uk-text-large">
<p> {{community.description}}</p>
</div>
<div class="uk-grid uk-grid-divider">
<div class="uk-width-1-2@m uk-width-1-1@s uk-first-column uk-margin-top">
<div *ngIf="community.date != null" > Created: <span class="uk-text-muted">{{community.date | date:'dd-MM-yyyy'}}</span></div>
<subscribe *ngIf="communityId != null" [communityId]="communityId" showNumbers=true class=""></subscribe>
<div *ngIf="community.managers != null && community.managers[0] != '' && community.managers[0] != null"> Curated by:
<span *ngFor='let manager of community.managers; let i = index' class="uk-text-muted">{{manager.substr(0, manager.indexOf('@'))}}<span *ngIf="manager.includes('@') == 0">{{manager}}</span><span *ngIf="i<(community.managers.length-1)">,</span>
</span>
</div>
<div *ngIf=" isRouteEnabled('/participate/share-zenodo')" class="uk-margin-top">
<a [queryParams]=params routerLinkActive="router-link-active" routerLink="/participate/share-zenodo" >
Zenodo communities:<span> {{zenodoCommunityIdS.length + ((masterZenodoCommunity)?1:0)}}</span>
<span class="uk-icon" uk-tooltip="title:<div class='uk-pargin'>Zenodo is a catch-all repository for OpenAIRE<hr>A zenodo community is created and curated by Zenodo users</div>">
<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" icon="question" ratio="1"><circle fill="none" stroke="#000" stroke-width="1.1" cx="10" cy="10" r="9"></circle><circle cx="10.44" cy="14.42" r="1.05"></circle><path fill="none" stroke="#000" stroke-width="1.2" d="M8.17,7.79 C8.17,4.75 12.72,4.73 12.72,7.72 C12.72,8.67 11.81,9.15 11.23,9.75 C10.75,10.24 10.51,10.73 10.45,11.4 C10.44,11.53 10.43,11.64 10.43,11.75"></path></svg>
</span>
</a>
</div>
</div>
<div class="uk-width-1-2@m uk-width-1-1@s">
<div class="uk-grid-medium uk-text-large uk-margin-bottom">Statistics</div>
<div *ngIf="communityId != null && communityId != ''" class="uk-child-width-1-6@l uk-child-width-1-6@m uk-child-width-1-3@s uk-text-center uk-grid uk-grid-medium ">
<div *ngIf="publicationTotal != null && isEntityEnabled('publication') && isRouteEnabled('/search/find/publications')" class="uk-padding-remove-left">
<div class="uk-card uk-card-default uk-card-body uk-padding-remove uk-margin-small-right uk-height-1-1 ">
<a class="uk-margin-auto-vertical uk-margin-auto" [queryParams]=params routerLinkActive="router-link-active" routerLink="/search/find/publications" ><span class="uk-text-bold">{{publicationTotal|number}}</span>
<br><span class="uk-text-small">publications</span></a>
</div>
</div>
<div *ngIf="researchDataTotal != null && isEntityEnabled('dataset') && isRouteEnabled('/search/find/datasets')" class="uk-padding-remove-left">
<div class="uk-card uk-card-default uk-card-body uk-padding-remove uk-margin-small-left uk-margin-small-right uk-height-1-1">
<a class="uk-margin-auto-vertical uk-margin-auto" [queryParams]=params routerLinkActive="router-link-active" routerLink="/search/find/datasets"><span class="uk-text-bold">{{researchDataTotal|number}}</span>
<br><span class="uk-text-small">research data</span></a>
</div>
</div>
<div *ngIf="softwareTotal != null && isEntityEnabled('software') && isRouteEnabled('/search/find/software')" class="uk-padding-remove-left">
<div class="uk-card uk-card-default uk-card-body uk-padding-remove uk-margin-small-right uk-height-1-1 ">
<a class="uk-margin-auto-vertical uk-margin-auto" [queryParams]=params routerLinkActive="router-link-active" routerLink="/search/find/software"><span class="uk-text-bold">{{softwareTotal|number}}</span>
<br><span class="uk-text-small">software</span></a>
</div>
</div>
<div *ngIf="orpTotal != null && isEntityEnabled('orp') && isRouteEnabled('/search/find/other')" class="uk-padding-remove-left">
<div class="uk-card uk-card-default uk-card-body uk-padding-remove uk-margin-small-right uk-height-1-1 ">
<a class="uk-margin-auto-vertical uk-margin-auto" [queryParams]=params routerLinkActive="router-link-active" routerLink="/search/find/other"><span class="uk-text-bold">{{orpTotal|number}}</span>
<br><span class="uk-text-small">other products</span></a>
</div>
</div>
<div *ngIf="projectTotal != null && isEntityEnabled('project') && isRouteEnabled('/search/find/projects')" class="uk-padding-remove-left">
<div class="uk-card uk-card-default uk-card-body uk-padding-remove uk-margin-small-right uk-height-1-1 ">
<a class="uk-margin-auto-vertical uk-margin-auto" [queryParams]=params routerLinkActive="router-link-active" routerLink="/search/find/projects"><span class="uk-text-bold">{{projectTotal|number}}</span>
<br><span class="uk-text-small">projects</span></a>
</div>
</div>
<div *ngIf="contentProviderTotal != null && isEntityEnabled('datasource') && isRouteEnabled('/search/find/dataproviders')" class="uk-padding-remove-left">
<div class="uk-card uk-card-default uk-card-body uk-padding-remove uk-margin-small-right uk-height-1-1 ">
<a class="uk-margin-auto-vertical uk-margin-auto" [queryParams]=params routerLinkActive="router-link-active" routerLink="/search/find/dataproviders"><span class="uk-text-bold">{{contentProviderTotal|number}}</span>
<br><span class="uk-text-small">content providers</span></a>
</div>
</div>
</div>
<div *ngIf="community.subjects != null && community.subjects.length > 0" class="uk-grid-medium uk-text-large uk-margin-bottom">Subjects related to community</div>
<div *ngIf="community.subjects != null">
<span *ngFor="let subject of community.subjects.slice(0,10) let i=index">
<span *ngIf="subject != ''" class="uk-label uk-margin-small-bottom">{{subject}}</span>
</span>
<span *ngIf="showAll">
<span *ngFor="let subject of community.subjects.slice(10) let i=index">
<span *ngIf="subject != ''" class="uk-label uk-margin-small-bottom">{{subject}}</span>
</span>
</span>
<span *ngIf="!showAll && community.subjects.length > 10">
<a (click)="showAll = !showAll;">
show more
</a>
</span>
<span *ngIf="showAll">
<a (click)="showAll = !showAll;">
show less
</a>
</span>
</div>
</div>
</div>
<div *ngIf="isRouteEnabled('/search/find')" class="uk-margin-large-top">
<div class="uk-text-large">Search research results</div>

View File

@ -300,7 +300,12 @@ public activeTab = "publication";
return this.communityInfo.pages.some(x => x['route'] == route && x['isEnabled']===true);
}
showInvite(){
// console.log(Session.isPortalAdministrator() + Session.isCommunityCurator())
return this.isManager();
}
isManager(){
var email = Session.getUserEmail();
var index =-1;
if(email && this.community != null && this.community.managers != null){

View File

@ -112,5 +112,5 @@
"reCaptchaSiteKey": "6LcVtFIUAAAAAB2ac6xYivHxYXKoUvYRPi-6_rLu",
"admins" : ["kostis30fylloy@gmail.com"]
"admins" : ["kostis30fylloy@gmail.com","argirok@di.uoa.gr"]
}