Update for production April Release #2
|
@ -43,7 +43,7 @@
|
|||
"rxjs": "^6.5.1",
|
||||
"ts-md5": "^1.2.0",
|
||||
"tslib": "^2.0.0",
|
||||
"uikit": "3.12.0",
|
||||
"uikit": "3.12.2",
|
||||
"zone.js": "~0.11.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
[class.sidebar_mini]="!open && (hasSidebar || hasAdminMenu || hasInternalSidebar)" [class.sidebar_hover]="hover">
|
||||
<div id="modal-container"></div>
|
||||
<ng-container *ngIf="!isHidden">
|
||||
<navbar *ngIf="hasHeader" portal="monitor_dashboard" [header]="menuHeader" [userMenuItems]=userMenuItems [menuItems]="menuItems" [user]="user"></navbar>
|
||||
<navbar *ngIf="hasHeader" portal="monitor_dashboard" [header]="menuHeader" [userMenuItems]=userMenuItems [menuItems]="menuItems" [user]="user"
|
||||
[notificationConfiguration]="isMobile && user && notificationGroupsInitialized?notificationConfiguration:null"></navbar>
|
||||
<div>
|
||||
<dashboard-sidebar *ngIf="stakeholder && isFrontPage && hasSidebar && !hasInternalSidebar" queryParamsHandling="merge" [items]="sideBarItems"
|
||||
[activeItem]="activeTopic?activeTopic.alias:null" [activeSubItem]="activeCategory?activeCategory.alias:null"></dashboard-sidebar>
|
||||
|
@ -15,8 +16,7 @@
|
|||
<router-outlet></router-outlet>
|
||||
</main>
|
||||
<bottom id="bottom" *ngIf="isFrontPage" [centered]="true" [properties]="properties" [showMenuItems]="true"></bottom>
|
||||
<notification-sidebar *ngIf="user && notificationGroupsInitialized" [entities]="entities"
|
||||
[user]="user" [availableGroups]="notificationGroups" service="monitor"></notification-sidebar>
|
||||
<notification-sidebar *ngIf="!isMobile && user && notificationGroupsInitialized" [configuration]="notificationConfiguration" [user]="user"></notification-sidebar>
|
||||
</div>
|
||||
<div *ngIf="view" class="preview uk-text-small uk-flex uk-flex-middle">
|
||||
<span>You are currently in a <span class="uk-text-bold">"Preview"</span> mode. <span class="uk-visible@m"><a (click)="removeView()">The current view</a> of this dashboard may differ.</span></span>
|
||||
|
|
|
@ -24,6 +24,9 @@ import {SmoothScroll} from "./openaireLibrary/utils/smooth-scroll";
|
|||
import {ConnectHelper} from "./openaireLibrary/connect/connectHelper";
|
||||
import {ResourcesService} from "./openaireLibrary/monitor/services/resources.service";
|
||||
import {StringUtils} from "./openaireLibrary/utils/string-utils.class";
|
||||
import {
|
||||
NotificationConfiguration
|
||||
} from "./openaireLibrary/notifications/notifications-sidebar/notifications-sidebar.component";
|
||||
|
||||
|
||||
@Component({
|
||||
|
@ -41,13 +44,13 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||
hasAdminMenu: boolean = false;
|
||||
hasInternalSidebar: boolean = false;
|
||||
isFrontPage: boolean = false;
|
||||
isMobile: boolean = false;
|
||||
view: Visibility;
|
||||
sideBarItems: MenuItem[] = [];
|
||||
backItem: MenuItem = null;
|
||||
menuItems: MenuItem[] = [];
|
||||
notificationGroups: Option[] = [];
|
||||
entities: string[];
|
||||
notificationGroupsInitialized: boolean = false;
|
||||
notificationConfiguration: NotificationConfiguration = new NotificationConfiguration();
|
||||
stakeholderUtils: StakeholderUtils = new StakeholderUtils();
|
||||
public stakeholderEntities = StakeholderEntities;
|
||||
menuHeader: Header = {
|
||||
|
@ -118,6 +121,10 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||
this.isFrontPage = isFrontPage;
|
||||
this.cdr.detectChanges();
|
||||
}));
|
||||
this.subscriptions.push(this.layoutService.isMobile.subscribe(isMobile => {
|
||||
this.isMobile = isMobile;
|
||||
this.cdr.detectChanges();
|
||||
}));
|
||||
this.route.queryParams.subscribe(params => {
|
||||
this.view = params['view'];
|
||||
if(this.stakeholder) {
|
||||
|
@ -132,16 +139,16 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||
}
|
||||
}));
|
||||
this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => {
|
||||
this.updateStakeholder = true;
|
||||
this.updateStakeholder = !this.router.url.includes('user-info');
|
||||
if (user) {
|
||||
this.user = user;
|
||||
if (!this.notificationGroupsInitialized) {
|
||||
this.setNotificationGroups();
|
||||
this.setNotificationConfiguration();
|
||||
}
|
||||
} else if(this.user) {
|
||||
this.user = user;
|
||||
this.notificationGroupsInitialized = false;
|
||||
this.notificationGroups = [];
|
||||
this.notificationConfiguration.availableGroups = [];
|
||||
}
|
||||
if(this.paramsSubscription) {
|
||||
this.paramsSubscription.unsubscribe();
|
||||
|
@ -201,26 +208,27 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||
}
|
||||
}
|
||||
|
||||
public setNotificationGroups() {
|
||||
this.entities = this.stakeholderUtils.types.map(option => option.value);
|
||||
this.notificationGroups = [];
|
||||
public setNotificationConfiguration() {
|
||||
this.notificationConfiguration.entities = this.stakeholderUtils.types.map(option => option.value);
|
||||
this.notificationConfiguration.service = 'monitor';
|
||||
this.notificationConfiguration.availableGroups = [];
|
||||
if (Session.isPortalAdministrator(this.user)) {
|
||||
this.notificationGroups.push({value: Role.PORTAL_ADMIN, label: 'Portal Administrators'});
|
||||
this.notificationConfiguration.availableGroups.push({value: Role.PORTAL_ADMIN, label: 'Portal Administrators'});
|
||||
}
|
||||
for (let type of this.stakeholderUtils.types) {
|
||||
if (Session.isCurator(type.value, this.user) || Session.isPortalAdministrator(this.user)) {
|
||||
this.notificationGroups.push({value: Role.curator(type.value), label: type.label + ' Curators'});
|
||||
this.notificationGroups.push({value: Role.typeManager(type.value), label: type.label + ' Managers'});
|
||||
this.notificationGroups.push({value: Role.typeMember(type.value), label: type.label + ' Members'});
|
||||
this.notificationConfiguration.availableGroups.push({value: Role.curator(type.value), label: type.label + ' Curators'});
|
||||
this.notificationConfiguration.availableGroups.push({value: Role.typeManager(type.value), label: type.label + ' Managers'});
|
||||
this.notificationConfiguration.availableGroups.push({value: Role.typeMember(type.value), label: type.label + ' Members'});
|
||||
}
|
||||
}
|
||||
this.subscriptions.push(this.stakeholderService.getMyStakeholders(this.properties.monitorServiceAPIURL).subscribe(stakeholders => {
|
||||
stakeholders.forEach(stakeholder => {
|
||||
this.notificationGroups.push({
|
||||
this.notificationConfiguration.availableGroups.push({
|
||||
value: Role.manager(stakeholder.type, stakeholder.alias),
|
||||
label: stakeholder.name + ' Managers'
|
||||
});
|
||||
this.notificationGroups.push({
|
||||
this.notificationConfiguration.availableGroups.push({
|
||||
value: Role.member(stakeholder.type, stakeholder.alias),
|
||||
label: stakeholder.name + ' Members'
|
||||
});
|
||||
|
@ -295,11 +303,11 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||
}
|
||||
this.adminMenuItems = [];
|
||||
this.adminMenuItems.push(new MenuItem("general", "General", "", "/admin/" + this.stakeholder.alias, false, [], [], {}, {name: 'badge'}));
|
||||
this.adminMenuItems.push(new MenuItem("indicators", "Indicators", "", "/admin/" + this.stakeholder.alias + '/indicators', false, [], [], {}, {name: 'bar_chart'}));
|
||||
this.adminMenuItems.push(new MenuItem("indicators", "Indicators", "", "/admin/" + this.stakeholder.alias + '/indicators', false, [], [], {}, {name: 'bar_chart'}, null, "uk-visible@m"));
|
||||
if (this.stakeholder.defaultId) {
|
||||
this.adminMenuItems.push(new MenuItem("users", "Users", "", "/admin/" + this.stakeholder.alias + "/users", false, [], [], {}, {name: 'group'}, null, null, "/admin/" + this.stakeholder.alias + "/users"));
|
||||
this.adminMenuItems.push(new MenuItem("users", "Users", "", "/admin/" + this.stakeholder.alias + "/users", false, [], [], {}, {name: 'group'}, null, "uk-visible@m", "/admin/" + this.stakeholder.alias + "/users"));
|
||||
if (this.isCurator()) {
|
||||
this.adminMenuItems.push(new MenuItem("admin-tools", "Pages & Entities", "", "/admin/" + this.stakeholder.alias + "/admin-tools/pages", false, [], [], {}, {name: 'description'}, null, null, "/admin/" + this.stakeholder.alias + "/admin-tools"));
|
||||
this.adminMenuItems.push(new MenuItem("admin-tools", "Pages & Entities", "", "/admin/" + this.stakeholder.alias + "/admin-tools/pages", false, [], [], {}, {name: 'description'}, null, "uk-visible@m", "/admin/" + this.stakeholder.alias + "/admin-tools"));
|
||||
}
|
||||
}
|
||||
this.backItem = new MenuItem("back", "Manage profiles", "", "/admin", false, [], null, {}, {name: 'west'});
|
||||
|
@ -316,10 +324,10 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||
"", "/admin", false, [], [], {}));
|
||||
}
|
||||
if (Session.isPortalAdministrator(this.user)) {
|
||||
this.userMenuItems.push(new MenuItem("adminOptions", "Super Admin options", "", "/admin/admin-tools/portals", false, [], [], {}));
|
||||
this.userMenuItems.push(new MenuItem("adminOptions", "Super Admin options", "", "/admin/admin-tools/portals", false, [], [], {},null, null, "uk-visible@m"));
|
||||
}
|
||||
if (this.isCurator()) {
|
||||
this.userMenuItems.push(new MenuItem("monitorOptions", "Monitor options", "", "/admin/monitor/admin-tools/pages", false, [], [], {}));
|
||||
this.userMenuItems.push(new MenuItem("monitorOptions", "Monitor options", "", "/admin/monitor/admin-tools/pages", false, [], [], {},null, null, "uk-visible@m"));
|
||||
}
|
||||
}
|
||||
if (this.stakeholder) {
|
||||
|
@ -347,7 +355,7 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||
this.menuItems.push(
|
||||
new MenuItem("manage", "Manage",
|
||||
"", "/admin/" + this.stakeholder.alias, false, [], null, {}
|
||||
, null, null, null, null)
|
||||
, null, null, "uk-visible@m", null)
|
||||
);
|
||||
}
|
||||
if (!this.hasAdminMenu && this.isFrontPage) {
|
||||
|
@ -405,10 +413,10 @@ export class AppComponent implements OnInit, OnDestroy {
|
|||
this.backItem = null;
|
||||
this.adminMenuItems.push(new MenuItem("stakeholders", "Manage profiles", "", "/admin", false, [], [], {}, {name: 'settings'}));
|
||||
if (Session.isPortalAdministrator(this.user)) {
|
||||
this.adminMenuItems.push(new MenuItem("super_admin", "Super Admin options", "", "/admin/admin-tools/portals", false, [], [], {}, {name: 'settings'}, null, null, '/admin/admin-tools'));
|
||||
this.adminMenuItems.push(new MenuItem("adminOptions", "Super Admin options", "", "/admin/admin-tools/portals", false, [], [], {}, {name: 'settings'}, null, "uk-visible@m", '/admin/admin-tools'));
|
||||
}
|
||||
if (Session.isPortalAdministrator(this.user) || Session.isMonitorCurator(this.user)) {
|
||||
this.adminMenuItems.push(new MenuItem("monitor", "Monitor options", "", "/admin/monitor/admin-tools/pages", false, [], [], {}, {name: 'settings'}, null, null, '/admin/monitor/admin-tools'));
|
||||
this.adminMenuItems.push(new MenuItem("monitorOptions", "Monitor options", "", "/admin/monitor/admin-tools/pages", false, [], [], {}, {name: 'settings'}, null, "uk-visible@m", '/admin/monitor/admin-tools'));
|
||||
}
|
||||
this.hasAdminMenu = this.hasAdminMenu && this.adminMenuItems.length > 1;
|
||||
}
|
||||
|
|
|
@ -1,14 +1,7 @@
|
|||
<div page-content>
|
||||
<div header *ngIf="stakeholder">
|
||||
<div class="uk-flex uk-flex-middle uk-margin-medium-top info">
|
||||
<div>
|
||||
<div class="uk-text-background uk-text-bold uk-text-small">Manage Profile</div>
|
||||
<h1 class="uk-h6 uk-margin-remove">{{stakeholder.name}}<span *ngIf="editStakeholderComponent && editStakeholderComponent.dirty && !loading" class="uk-text-large"> (unsaved changes)</span></h1>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div actions>
|
||||
<div class="uk-section-xsmall uk-container">
|
||||
<sidebar-mobile-toggle class="uk-margin-top uk-hidden@m uk-display-block"></sidebar-mobile-toggle>
|
||||
<div class="uk-section-xsmall uk-container uk-margin-top">
|
||||
<div class="uk-flex uk-flex-center uk-flex-right@m">
|
||||
<button class="uk-button uk-button-default uk-margin-right"
|
||||
(click)="reset()" [class.uk-disabled]="loading || !editStakeholderComponent.dirty"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import {Component, OnDestroy, OnInit, ViewChild} from "@angular/core";
|
||||
import {ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild} from "@angular/core";
|
||||
import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service";
|
||||
import {EnvProperties} from "../openaireLibrary/utils/properties/env-properties";
|
||||
import {Stakeholder} from "../openaireLibrary/monitor/entities/stakeholder";
|
||||
|
@ -22,6 +22,7 @@ export class GeneralComponent implements OnInit, OnDestroy {
|
|||
@ViewChild('editStakeholderComponent') editStakeholderComponent: EditStakeholderComponent;
|
||||
|
||||
constructor(private stakeholderService: StakeholderService,
|
||||
private cdr: ChangeDetectorRef,
|
||||
private title: Title) {
|
||||
}
|
||||
|
||||
|
@ -29,6 +30,7 @@ export class GeneralComponent implements OnInit, OnDestroy {
|
|||
this.loading = true;
|
||||
this.subscriptions.push(this.stakeholderService.getStakeholderAsObservable().subscribe(stakeholder => {
|
||||
this.stakeholder = stakeholder;
|
||||
this.cdr.detectChanges();
|
||||
if(this.stakeholder) {
|
||||
this.title.setTitle(this.stakeholder.name + " | General");
|
||||
let data = zip(
|
||||
|
|
|
@ -11,6 +11,9 @@ import {ReactiveFormsModule} from "@angular/forms";
|
|||
import {EditStakeholderModule} from "./edit-stakeholder/edit-stakeholder.module";
|
||||
import {PageContentModule} from "../openaireLibrary/dashboard/sharedComponents/page-content/page-content.module";
|
||||
import {LogoUrlPipeModule} from "../openaireLibrary/utils/pipes/logoUrlPipe.module";
|
||||
import {
|
||||
SidebarMobileToggleModule
|
||||
} from "../openaireLibrary/dashboard/sharedComponents/sidebar/sidebar-mobile-toggle/sidebar-mobile-toggle.module";
|
||||
|
||||
@NgModule({
|
||||
declarations: [GeneralComponent],
|
||||
|
@ -24,7 +27,8 @@ import {LogoUrlPipeModule} from "../openaireLibrary/utils/pipes/logoUrlPipe.modu
|
|||
ReactiveFormsModule,
|
||||
EditStakeholderModule,
|
||||
PageContentModule,
|
||||
LogoUrlPipeModule
|
||||
LogoUrlPipeModule,
|
||||
SidebarMobileToggleModule
|
||||
],
|
||||
providers: [
|
||||
PreviousRouteRecorder,
|
||||
|
|
|
@ -1,17 +1,14 @@
|
|||
<div page-content>
|
||||
<div header>
|
||||
<div class="uk-flex uk-flex-middle uk-margin-medium-top info">
|
||||
<div>
|
||||
<div class="uk-text-background uk-text-bold uk-text-small">Manage profiles</div>
|
||||
<h1 class="uk-h6 uk-margin-remove">Profile Templates & Profiles</h1>
|
||||
<sidebar-mobile-toggle class="uk-margin-top uk-hidden@m uk-display-block"></sidebar-mobile-toggle>
|
||||
<div *ngIf="isCurator()" class="uk-margin-remove-bottom uk-margin-medium-top">
|
||||
<slider-tabs [type]="'dynamic'" (activeEmitter)="tab = $event">
|
||||
<slider-tab tabTitle="All" [tabId]="'all'" [active]="tab === 'all'"></slider-tab>
|
||||
<slider-tab tabTitle="Profile templates" [tabId]="'templates'" [active]="tab === 'templates'"></slider-tab>
|
||||
<slider-tab tabTitle="Profiles" [tabId]="'profiles'" [active]="tab === 'profiles'"></slider-tab>
|
||||
</slider-tabs>
|
||||
</div>
|
||||
</div>
|
||||
<ul *ngIf="isCurator()" class="uk-tab uk-margin-remove-bottom uk-margin-medium-top" uk-tab>
|
||||
<li [class.uk-active]="tab === 'all'"><a (click)="tab = 'all'">All</a></li>
|
||||
<li [class.uk-active]="tab === 'templates'"><a (click)="tab = 'templates'">Profile templates</a></li>
|
||||
<li [class.uk-active]="tab === 'profiles'"><a (click)="tab = 'profiles'">Profiles</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div actions>
|
||||
<div class="uk-section-xsmall">
|
||||
<div class="uk-flex uk-flex-right@m uk-flex-center uk-flex-wrap uk-flex-middle">
|
||||
|
@ -118,9 +115,8 @@
|
|||
</div>
|
||||
</ng-container>
|
||||
</ng-template>
|
||||
<modal-alert #editStakeholderModal
|
||||
id="edit_modal" [large]="true" classTitle="uk-background-primary uk-light"
|
||||
(alertOutput)="editStakeholderComponent.save(callback)"
|
||||
<modal-alert #editStakeholderModal [large]="true" classTitle="uk-background-primary uk-light"
|
||||
(alertOutput)="editStakeholderComponent.save(callback)" (cancelOutput)="editStakeholderComponent.removePhoto()"
|
||||
[okDisabled]="editStakeholderComponent.disabled">
|
||||
<div class="uk-height-large uk-position-relative" *ngIf="editStakeholderComponent.loading">
|
||||
<loading class="uk-position-center"></loading>
|
||||
|
|
|
@ -90,10 +90,6 @@ export class ManageStakeholdersComponent implements OnInit, OnDestroy {
|
|||
}, error => {
|
||||
this.loading = false;
|
||||
}));
|
||||
|
||||
this.subscriptions.push(UIkit.util.on(document, 'hidden', '#edit_modal', (): void => {
|
||||
this.editStakeholderComponent.removePhoto();
|
||||
}));
|
||||
}
|
||||
|
||||
ngOnDestroy(): void {
|
||||
|
|
|
@ -15,6 +15,10 @@ import {earth, incognito, restricted} from "../openaireLibrary/utils/icons/icons
|
|||
import {PageContentModule} from "../openaireLibrary/dashboard/sharedComponents/page-content/page-content.module";
|
||||
import {LogoUrlPipeModule} from "../openaireLibrary/utils/pipes/logoUrlPipe.module";
|
||||
import {SearchInputModule} from "../openaireLibrary/sharedComponents/search-input/search-input.module";
|
||||
import {
|
||||
SidebarMobileToggleModule
|
||||
} from "../openaireLibrary/dashboard/sharedComponents/sidebar/sidebar-mobile-toggle/sidebar-mobile-toggle.module";
|
||||
import {SliderTabsModule} from "../openaireLibrary/sharedComponents/tabs/slider-tabs.module";
|
||||
|
||||
@NgModule({
|
||||
declarations: [ManageStakeholdersComponent],
|
||||
|
@ -30,7 +34,9 @@ import {SearchInputModule} from "../openaireLibrary/sharedComponents/search-inpu
|
|||
IconsModule,
|
||||
PageContentModule,
|
||||
LogoUrlPipeModule,
|
||||
SearchInputModule
|
||||
SearchInputModule,
|
||||
SidebarMobileToggleModule,
|
||||
SliderTabsModule
|
||||
],
|
||||
providers: [
|
||||
PreviousRouteRecorder,
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</ng-template>
|
||||
<div page-content [border]="false">
|
||||
<div page-content [border]="isMobile">
|
||||
<div header>
|
||||
<div *ngIf="stakeholder" class="uk-hidden">
|
||||
<h1 class="uk-h6 uk-margin-remove">{{stakeholder.name}}</h1>
|
||||
|
@ -103,7 +103,7 @@
|
|||
<div *ngIf="hasPermission(indicator.visibility)" [ngClass]="getNumberClassBySize(indicator.width)">
|
||||
<div class="uk-card uk-card-default uk-padding-small number-card uk-position-relative"
|
||||
[class.semiFiltered]="indicator.indicatorPaths[0].filtersApplied < countSelectedFilters()">
|
||||
<div *ngIf="!showDescriptionOverlay[j]">
|
||||
<div *ngIf="!indicator.descriptionOverlay">
|
||||
<div
|
||||
class="uk-text-small uk-text-truncate uk-margin-xsmall-bottom uk-margin-right">{{indicator.name}}</div>
|
||||
<div class="number uk-text-small uk-text-bold">
|
||||
|
@ -112,9 +112,9 @@
|
|||
<span *ngIf="!numberResults.get(i + '-' + j)">--</span>
|
||||
</div>
|
||||
<div *ngIf="indicator.description || indicator.additionalDescription"
|
||||
class="uk-position-top-right uk-text-center uk-margin-small-top uk-margin-small-right">
|
||||
class="uk-position-top-right uk-text-center uk-margin-small-top uk-margin-small-right uk-visible@m">
|
||||
<a class="uk-display-inline-block uk-button uk-button-link" uk-tooltip="Note"
|
||||
(click)="toggleDescriptionOverlay($event, j)">
|
||||
(click)="toggleDescriptionOverlay($event, indicator)">
|
||||
<span class="uk-flex uk-flex-middle">
|
||||
<icon name="analytics" type="outlined" [flex]="true"></icon>
|
||||
</span>
|
||||
|
@ -122,12 +122,12 @@
|
|||
</div>
|
||||
</div>
|
||||
<div
|
||||
*ngIf="showDescriptionOverlay[j] && (indicator.description || indicator.additionalDescription)"
|
||||
*ngIf="indicator.descriptionOverlay && (indicator.description || indicator.additionalDescription)"
|
||||
click-outside-or-esc class="uk-overflow-auto"
|
||||
(clickOutside)="closeDescriptionOverlay($event, j)">
|
||||
(clickOutside)="closeDescriptionOverlay($event, indicator)">
|
||||
<div class="uk-position-top-right uk-text-center uk-margin-small-top uk-margin-small-right">
|
||||
<a class="uk-display-inline-block uk-button uk-button-link"
|
||||
(click)="toggleDescriptionOverlay($event, j)">
|
||||
(click)="toggleDescriptionOverlay($event, indicator)">
|
||||
<span class="uk-flex uk-flex-middle">
|
||||
<icon name="close" type="outlined" [flex]="true"></icon>
|
||||
</span>
|
||||
|
@ -154,7 +154,7 @@
|
|||
<ng-template ngFor [ngForOf]="number.indicators" let-indicator let-j="index">
|
||||
<div *ngIf="hasPermission(indicator.visibility)" [ngClass]="getNumberClassBySize(indicator.width)">
|
||||
<div [class.semiFiltered]="indicator.indicatorPaths[0].filtersApplied < countSelectedFilters()">
|
||||
<div *ngIf="!showDescriptionOverlay[j]">
|
||||
<div *ngIf="!indicator.descriptionOverlay">
|
||||
<div
|
||||
class="uk-text-xsmall uk-text-truncate uk-margin-xsmall-bottom uk-margin-right">{{indicator.name}}</div>
|
||||
<div class="number uk-text-small uk-text-bold">
|
||||
|
@ -213,22 +213,22 @@
|
|||
[ngClass]="'uk-height-' + (indicator.height?indicator.height.toLowerCase():'medium')">
|
||||
</div>
|
||||
<div *ngIf="indicator.description || indicator.additionalDescription"
|
||||
class="uk-position-bottom-left uk-margin-left uk-margin-small-bottom">
|
||||
class="uk-position-bottom-left uk-margin-left uk-margin-small-bottom uk-visible@m">
|
||||
<a class="uk-display-inline-block uk-button uk-button-text"
|
||||
(click)="toggleDescriptionOverlay($event, j)">
|
||||
(click)="toggleDescriptionOverlay($event, indicator)">
|
||||
<span class="uk-flex uk-flex-middle">
|
||||
<icon name="analytics" type="outlined" [flex]="true"></icon>
|
||||
<span class="uk-margin-small-left">Note</span>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
<div *ngIf="showDescriptionOverlay[j] && (indicator.description || indicator.additionalDescription)"
|
||||
<div *ngIf="indicator.descriptionOverlay && (indicator.description || indicator.additionalDescription)"
|
||||
class="indicator-description uk-card uk-card-default uk-flex uk-flex-middle uk-flex-center">
|
||||
<div class="inner" click-outside-or-esc
|
||||
(clickOutside)="closeDescriptionOverlay($event, j)">
|
||||
(clickOutside)="closeDescriptionOverlay($event, indicator)">
|
||||
<div class="uk-padding-small">
|
||||
<div class="uk-flex uk-flex-right">
|
||||
<button class="uk-close uk-icon" (click)="toggleDescriptionOverlay($event, j)">
|
||||
<button class="uk-close uk-icon" (click)="toggleDescriptionOverlay($event, indicator)">
|
||||
<icon name="close" ratio="1"></icon>
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
@ -11,15 +11,18 @@ import {HelperService} from "../openaireLibrary/utils/helper/helper.service";
|
|||
import {SEOService} from "../openaireLibrary/sharedComponents/SEO/SEO.service";
|
||||
import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service";
|
||||
import {
|
||||
Category, Indicator,
|
||||
IndicatorPath, IndicatorSize, Section,
|
||||
Category,
|
||||
Indicator,
|
||||
IndicatorPath,
|
||||
IndicatorSize,
|
||||
Section,
|
||||
Stakeholder,
|
||||
SubCategory,
|
||||
Topic,
|
||||
Visibility
|
||||
} from "../openaireLibrary/monitor/entities/stakeholder";
|
||||
import {StatisticsService} from "../utils/services/statistics.service";
|
||||
import {IndicatorUtils, StakeholderUtils} from "../utils/indicator-utils";
|
||||
import {IndicatorUtils} from "../utils/indicator-utils";
|
||||
import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
|
||||
import {UntypedFormBuilder, UntypedFormControl} from "@angular/forms";
|
||||
import {Subscriber, Subscription} from "rxjs";
|
||||
|
@ -51,7 +54,6 @@ export class MonitorComponent implements OnInit, OnDestroy {
|
|||
public loading: boolean = true;
|
||||
public view: Visibility;
|
||||
public indicatorUtils: IndicatorUtils = new IndicatorUtils();
|
||||
public stakeholderUtils: StakeholderUtils = new StakeholderUtils();
|
||||
public activeTopic: Topic = null;
|
||||
public activeCategory: Category = null;
|
||||
public activeSubCategory: SubCategory = null;
|
||||
|
@ -78,7 +80,6 @@ export class MonitorComponent implements OnInit, OnDestroy {
|
|||
privateStakeholder = false;
|
||||
public keyword: UntypedFormControl;
|
||||
public statsUpdateDate: Date;
|
||||
public showDescriptionOverlay: boolean[] = [];
|
||||
public isFullscreen: boolean = false;
|
||||
public isMobile: boolean = false;
|
||||
|
||||
|
@ -487,6 +488,7 @@ export class MonitorComponent implements OnInit, OnDestroy {
|
|||
this.subscriptions.push(this.statisticsService.getNumbers(this.statisticsService.getSourceType(pair[0]), pair[1]).subscribe(response => {
|
||||
if(activeSubcategory === this.activeSubCategory._id) {
|
||||
indexes.forEach(([i, j]) => {
|
||||
if( this.activeSubCategory?.numbers[i]?.indicators[j]) {
|
||||
let result = JSON.parse(JSON.stringify(response));
|
||||
this.activeSubCategory.numbers[i].indicators[j].indicatorPaths[0].jsonPath.forEach(jsonPath => {
|
||||
if (result) {
|
||||
|
@ -502,6 +504,7 @@ export class MonitorComponent implements OnInit, OnDestroy {
|
|||
result = 0;
|
||||
}
|
||||
this.numberResults.set(i + '-' + j, result);
|
||||
}
|
||||
});
|
||||
}
|
||||
}));
|
||||
|
@ -609,14 +612,14 @@ export class MonitorComponent implements OnInit, OnDestroy {
|
|||
this.userManagementService.login();
|
||||
}
|
||||
|
||||
toggleDescriptionOverlay(event, j) {
|
||||
toggleDescriptionOverlay(event, indicator: Indicator) {
|
||||
event.stopPropagation();
|
||||
this.showDescriptionOverlay[j] = !this.showDescriptionOverlay[j];
|
||||
indicator.descriptionOverlay = !indicator.descriptionOverlay;
|
||||
}
|
||||
|
||||
closeDescriptionOverlay(event: ClickEvent,j) {
|
||||
if(event.clicked && this.showDescriptionOverlay[j]) {
|
||||
this.showDescriptionOverlay[j] = false;
|
||||
closeDescriptionOverlay(event: ClickEvent, indicator: Indicator) {
|
||||
if(event.clicked && indicator.descriptionOverlay) {
|
||||
indicator.descriptionOverlay = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 4c19e65edb3db3b546eda029ea90a58298a1f0ad
|
||||
Subproject commit f49149c99e7bf08179d95b56a1aac9848a850344
|
|
@ -189,47 +189,8 @@
|
|||
</div>
|
||||
</aside>
|
||||
<div #pageContent *ngIf="stakeholder && filters" page-content>
|
||||
<div header>
|
||||
<div *ngIf="stakeholder.topics.length > 0 && stakeholder.topics[topicIndex]">
|
||||
<div class="uk-margin-medium-top uk-margin-bottom uk-flex uk-flex-middle info">
|
||||
<div class="uk-width-expand">
|
||||
<div class="uk-text-background uk-text-bold uk-text-small">Manage Indicators</div>
|
||||
<h1 class="uk-h6 uk-margin-remove">{{stakeholder.name}}</h1>
|
||||
</div>
|
||||
<div *ngIf="stakeholder.topics.length > 0 && !pageContent.isStickyActive" class="uk-width-auto">
|
||||
<div class="uk-flex uk-flex-center">
|
||||
<button class="uk-button uk-button-primary uk-flex uk-flex-middle">
|
||||
<icon name="visibility" [flex]="true"></icon>
|
||||
<span class="uk-margin-small-left uk-margin-small-right">Preview</span>
|
||||
<icon name="expand_more" [flex]="true"></icon>
|
||||
</button>
|
||||
<div #preview uk-dropdown="mode: click; pos: bottom-left; offset: 5; delay-hide: 0; flip: false">
|
||||
<ul class="uk-nav uk-dropdown-nav">
|
||||
<li><a target="_blank"
|
||||
[routerLink]="'/' + stakeholder.alias"
|
||||
[queryParams]="{view: 'PUBLIC'}"
|
||||
(click)="hide(preview)">Public view</a>
|
||||
</li>
|
||||
<li><a target="_blank" [routerLink]="'/' + stakeholder.alias"
|
||||
[queryParams]="{view: 'RESTRICTED'}"
|
||||
(click)="hide(preview)">Restricted view</a>
|
||||
</li>
|
||||
<!--<li class="disabled"><a class="uk-disabled uk-text-muted"
|
||||
uk-tooltip="Note: available only in administration dashboard"
|
||||
(click)="hide(element)">Private view</a>
|
||||
</li>-->
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div actions>
|
||||
<div class="uk-grid uk-flex-middle" uk-grid>
|
||||
<div *ngIf="stakeholder.topics.length > 0 && pageContent.isStickyActive"
|
||||
class="uk-width-auto@m uk-margin-small-bottom uk-flex-last@m uk-width-1-1">
|
||||
<div class="uk-flex uk-flex-center">
|
||||
<div *ngIf="stakeholder.topics.length > 0" class="uk-flex uk-flex-center uk-margin-medium-top uk-flex-right@m uk-width-1-1">
|
||||
<button class="uk-button uk-button-primary uk-flex uk-flex-middle">
|
||||
<icon name="visibility" [flex]="true"></icon>
|
||||
<span class="uk-margin-small-left uk-margin-small-right">Preview</span>
|
||||
|
@ -254,10 +215,8 @@
|
|||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uk-margin-medium-top uk-width-expand">
|
||||
<ul *ngIf="stakeholder.topics.length > 0 && stakeholder.topics[topicIndex].categories.length > 0 && stakeholder.topics[topicIndex].categories[categoryIndex]"
|
||||
transition-group class="uk-tab" [id]="'subCategories'">
|
||||
transition-group class="uk-tab uk-margin-xsmall-top" [id]="'subCategories'">
|
||||
<ng-template ngFor [ngForOf]=" stakeholder.topics[topicIndex].categories[categoryIndex].subCategories"
|
||||
let-subCategory let-i="index">
|
||||
<li class="uk-visible-toggle uk-flex" [class.uk-active]="subCategoryIndex === i" transition-group-item>
|
||||
|
@ -356,8 +315,6 @@
|
|||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div inner>
|
||||
<input #file id="import-file" type="file" class="uk-hidden"
|
||||
(change)="indicators.fileChangeEvent($event, this.index)"/>
|
||||
|
|
|
@ -22,11 +22,14 @@ import {LogoUrlPipeModule} from "../openaireLibrary/utils/pipes/logoUrlPipe.modu
|
|||
import {TransitionGroupModule} from "../openaireLibrary/utils/transition-group/transition-group.module";
|
||||
import {NumberRoundModule} from "../openaireLibrary/utils/pipes/number-round.module";
|
||||
import {SideBarModule} from "../openaireLibrary/dashboard/sharedComponents/sidebar/sideBar.module";
|
||||
import {
|
||||
SidebarMobileToggleModule
|
||||
} from "../openaireLibrary/dashboard/sharedComponents/sidebar/sidebar-mobile-toggle/sidebar-mobile-toggle.module";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, TopicRoutingModule, ClickModule, RouterModule, FormsModule, AlertModalModule,
|
||||
ReactiveFormsModule, InputModule, IconsModule, PageContentModule, LoadingModule, NotifyFormModule, LogoUrlPipeModule, TransitionGroupModule, NumberRoundModule, SideBarModule
|
||||
ReactiveFormsModule, InputModule, IconsModule, PageContentModule, LoadingModule, NotifyFormModule, LogoUrlPipeModule, TransitionGroupModule, NumberRoundModule, SideBarModule, SidebarMobileToggleModule
|
||||
],
|
||||
declarations: [
|
||||
TopicComponent, IndicatorsComponent
|
||||
|
|
|
@ -5,12 +5,6 @@
|
|||
</div>
|
||||
<role-users *ngIf="!loading && stakeholder" [id]="stakeholder.alias" [type]="stakeholder.type" [name]="stakeholder.name" [link]="link" [role]="tab" [message]="messages.get(tab)"
|
||||
[emailComposer]="emailComposer" [notificationFn]="notificationFn">
|
||||
<div class="uk-flex uk-flex-middle uk-margin-medium-top info">
|
||||
<div>
|
||||
<div class="uk-text-background uk-text-bold uk-text-small">Manage Users</div>
|
||||
<h1 class="uk-h6 uk-margin-remove">{{stakeholder.name}}</h1>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="uk-tab uk-margin-remove-bottom uk-margin-medium-top">
|
||||
<li [class.uk-active]="tab === 'manager'"><a routerLink="../manager">Managers</a></li>
|
||||
<li [class.uk-active]="tab === 'member'"><a routerLink="../member">Members</a></li>
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 95c2b50a57696a80dd3dd376880f26cb21d65817
|
||||
Subproject commit ca209a54baaa2d9e0004613a68088fdcf4bee43a
|
|
@ -56,6 +56,7 @@
|
|||
/* Dashboard */
|
||||
@dashboard-page-content-background: @monitor-dashboard-background;
|
||||
@dashboard-primary-background: @monitor-color;
|
||||
@dashboard-menu-section-sublist-border: fade(@monitor-color, 30%);
|
||||
|
||||
& #filters_icon .start {
|
||||
stop-color: @monitor-light-color;
|
||||
|
@ -94,6 +95,13 @@
|
|||
top: 400px !important;
|
||||
}
|
||||
|
||||
@media (max-width: @breakpoint-small-max) {
|
||||
#filters_switcher_toggle {
|
||||
top: unset !important;
|
||||
bottom: 10vh;
|
||||
}
|
||||
}
|
||||
|
||||
/* Quick fix for svgs with a class that makes their opacity: 0.5*/
|
||||
svg .a {
|
||||
opacity: 1 !important;
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit c4e2781acc42f281265a70d6cd75616cdd6fa762
|
||||
Subproject commit aa1e6c9df390a4ba0919b5f8591374f7eec75089
|
Loading…
Reference in New Issue