[MonitorDashboard]: Fix a bug with header and sidebar. Save sidebar open status per topic
git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-monitor-portal/trunk/monitor_dashboard@57814 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
parent
c3838e06b8
commit
aac3e3d55f
|
@ -32,6 +32,14 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
this.subscriptions.push(this.layoutService.hasSidebar.subscribe(hasSidebar => {
|
||||||
|
this.hasSidebar = hasSidebar;
|
||||||
|
this.cdr.detectChanges();
|
||||||
|
}));
|
||||||
|
this.subscriptions.push(this.layoutService.hasHeader.subscribe(hasHeader => {
|
||||||
|
this.hasHeader = hasHeader;
|
||||||
|
this.cdr.detectChanges();
|
||||||
|
}));
|
||||||
this.propertiesService.loadEnvironment()
|
this.propertiesService.loadEnvironment()
|
||||||
.then(properties => {
|
.then(properties => {
|
||||||
this.properties = properties;
|
this.properties = properties;
|
||||||
|
@ -64,14 +72,6 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
this.subscriptions.push(this.layoutService.hasSidebar.subscribe(hasSidebar => {
|
|
||||||
this.hasSidebar = hasSidebar;
|
|
||||||
this.cdr.detectChanges();
|
|
||||||
}));
|
|
||||||
this.subscriptions.push(this.layoutService.hasHeader.subscribe(hasHeader => {
|
|
||||||
this.hasHeader = hasHeader;
|
|
||||||
this.cdr.detectChanges();
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ngOnDestroy() {
|
public ngOnDestroy() {
|
||||||
|
|
|
@ -3,6 +3,7 @@ import {RouterModule} from '@angular/router';
|
||||||
import {FreeGuard} from '../openaireLibrary/login/freeGuard.guard';
|
import {FreeGuard} from '../openaireLibrary/login/freeGuard.guard';
|
||||||
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
import {MonitorComponent} from "./monitor.component";
|
import {MonitorComponent} from "./monitor.component";
|
||||||
|
import {CanExitGuard} from "../openaireLibrary/utils/can-exit.guard";
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
|
@ -12,28 +13,28 @@ import {MonitorComponent} from "./monitor.component";
|
||||||
path: ':stakeholder',
|
path: ':stakeholder',
|
||||||
component: MonitorComponent,
|
component: MonitorComponent,
|
||||||
canActivate: [FreeGuard],
|
canActivate: [FreeGuard],
|
||||||
canDeactivate: [PreviousRouteRecorder],
|
canDeactivate: [PreviousRouteRecorder, CanExitGuard],
|
||||||
data: {hasHeader: false}
|
data: {hasHeader: false}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ':stakeholder/:topic',
|
path: ':stakeholder/:topic',
|
||||||
component: MonitorComponent,
|
component: MonitorComponent,
|
||||||
canActivate: [FreeGuard],
|
canActivate: [FreeGuard],
|
||||||
canDeactivate: [PreviousRouteRecorder],
|
canDeactivate: [PreviousRouteRecorder, CanExitGuard],
|
||||||
data: {hasHeader: false}
|
data: {hasHeader: false}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ':stakeholder/:topic/:category',
|
path: ':stakeholder/:topic/:category',
|
||||||
component: MonitorComponent,
|
component: MonitorComponent,
|
||||||
canActivate: [FreeGuard],
|
canActivate: [FreeGuard],
|
||||||
canDeactivate: [PreviousRouteRecorder],
|
canDeactivate: [PreviousRouteRecorder, CanExitGuard],
|
||||||
data: {hasHeader: false}
|
data: {hasHeader: false}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: ':stakeholder/:topic/:category/:subCategory',
|
path: ':stakeholder/:topic/:category/:subCategory',
|
||||||
component: MonitorComponent,
|
component: MonitorComponent,
|
||||||
canActivate: [FreeGuard],
|
canActivate: [FreeGuard],
|
||||||
canDeactivate: [PreviousRouteRecorder],
|
canDeactivate: [PreviousRouteRecorder, CanExitGuard],
|
||||||
data: {hasHeader: false}
|
data: {hasHeader: false}
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
|
|
@ -18,12 +18,17 @@ import {IndicatorUtils, StakeholderUtils} from "../utils/indicator-utils";
|
||||||
import {StakeholderCreator} from "../utils/entities/stakeholderCreator";
|
import {StakeholderCreator} from "../utils/entities/stakeholderCreator";
|
||||||
import {LayoutService} from "../library/sharedComponents/sidebar/layout.service";
|
import {LayoutService} from "../library/sharedComponents/sidebar/layout.service";
|
||||||
import {FormBuilder, FormControl} from "@angular/forms";
|
import {FormBuilder, FormControl} from "@angular/forms";
|
||||||
|
import {IDeactivateComponent} from "../openaireLibrary/utils/can-exit.guard";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'monitor',
|
selector: 'monitor',
|
||||||
templateUrl: 'monitor.component.html',
|
templateUrl: 'monitor.component.html',
|
||||||
})
|
})
|
||||||
export class MonitorComponent implements OnInit, OnDestroy {
|
export class MonitorComponent implements OnInit, OnDestroy, IDeactivateComponent {
|
||||||
|
private static sidebarStatus: {
|
||||||
|
id;
|
||||||
|
status;
|
||||||
|
};
|
||||||
public piwiksub: any;
|
public piwiksub: any;
|
||||||
public pageContents = null;
|
public pageContents = null;
|
||||||
public divContents = null;
|
public divContents = null;
|
||||||
|
@ -68,11 +73,9 @@ export class MonitorComponent implements OnInit, OnDestroy {
|
||||||
public ngOnInit() {
|
public ngOnInit() {
|
||||||
this.keyword = this._fb.control('');
|
this.keyword = this._fb.control('');
|
||||||
this.keyword.valueChanges.subscribe(value => {
|
this.keyword.valueChanges.subscribe(value => {
|
||||||
console.log("KEyword Changed!");
|
console.log("Keyword Changed!");
|
||||||
//TODO do a real action
|
//TODO do a real action
|
||||||
});
|
});
|
||||||
this.layoutService.setHasSidebar(false);
|
|
||||||
this.layoutService.setHasHeader(false);
|
|
||||||
this.route.data
|
this.route.data
|
||||||
.subscribe((data: { envSpecific: EnvProperties }) => {
|
.subscribe((data: { envSpecific: EnvProperties }) => {
|
||||||
this.route.params.subscribe(params => {
|
this.route.params.subscribe(params => {
|
||||||
|
@ -130,6 +133,20 @@ export class MonitorComponent implements OnInit, OnDestroy {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
canExit() {
|
||||||
|
if (this.sideBar) {
|
||||||
|
let status = [];
|
||||||
|
this.sideBar.items.forEach(item => {
|
||||||
|
status.push(item.open);
|
||||||
|
});
|
||||||
|
MonitorComponent.sidebarStatus = {
|
||||||
|
id: this.activeTopic.alias,
|
||||||
|
status: status
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public get open() {
|
public get open() {
|
||||||
return this.layoutService.open;
|
return this.layoutService.open;
|
||||||
}
|
}
|
||||||
|
@ -156,24 +173,22 @@ export class MonitorComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
private setView(params: Params) {
|
private setView(params: Params) {
|
||||||
if (params && params['topic']) {
|
if (params && params['topic']) {
|
||||||
this.activeTopic = this.stakeholder.topics.
|
this.activeTopic = this.stakeholder.topics.find(topic => topic.alias === decodeURIComponent(params['topic']) && topic.isPublic && topic.isActive);
|
||||||
find(topic => topic.alias === decodeURIComponent(params['topic']) && topic.isPublic && topic.isActive);
|
|
||||||
if (this.activeTopic) {
|
if (this.activeTopic) {
|
||||||
if (params['category']) {
|
if (params['category']) {
|
||||||
this.activeCategory = this.activeTopic.categories.find(category =>
|
this.activeCategory = this.activeTopic.categories.find(category =>
|
||||||
(category.alias === params['category']) && category.isPublic && category.isActive);
|
(category.alias === params['category']) && category.isPublic && category.isActive);
|
||||||
} else {
|
} else {
|
||||||
this.activeCategory = this.activeTopic.categories.
|
this.activeCategory = this.activeTopic.categories.find(category => category.isPublic && category.isActive);
|
||||||
find(category => category.isPublic && category.isActive);
|
|
||||||
if (this.activeCategory) {
|
if (this.activeCategory) {
|
||||||
this.activeSubCategory = this.activeCategory.subCategories.find(subCategory =>
|
this.activeSubCategory = this.activeCategory.subCategories.find(subCategory =>
|
||||||
subCategory.isPublic && subCategory.isActive);
|
subCategory.isPublic && subCategory.isActive);
|
||||||
if (this.activeSubCategory) {
|
if (this.activeSubCategory) {
|
||||||
this.setSideBar();
|
this.setSideBar();
|
||||||
this.setIndicators();
|
this.setIndicators();
|
||||||
} else {
|
} else {
|
||||||
this.navigateToError();
|
this.navigateToError();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.navigateToError();
|
this.navigateToError();
|
||||||
}
|
}
|
||||||
|
@ -191,36 +206,36 @@ export class MonitorComponent implements OnInit, OnDestroy {
|
||||||
this.setSideBar();
|
this.setSideBar();
|
||||||
this.setIndicators();
|
this.setIndicators();
|
||||||
} else {
|
} else {
|
||||||
this.navigateToError();
|
this.navigateToError();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.navigateToError();
|
this.navigateToError();
|
||||||
} else {
|
} else {
|
||||||
this.activeTopic = this.stakeholder.topics.find(topic => topic.isPublic && topic.isActive);
|
this.activeTopic = this.stakeholder.topics.find(topic => topic.isPublic && topic.isActive);
|
||||||
if(this.activeTopic) {
|
if (this.activeTopic) {
|
||||||
this.activeCategory = this.activeTopic.categories.find(category => category.isPublic && category.isActive);
|
this.activeCategory = this.activeTopic.categories.find(category => category.isPublic && category.isActive);
|
||||||
if (this.activeCategory) {
|
if (this.activeCategory) {
|
||||||
this.activeSubCategory = this.activeCategory.subCategories.find(subCategory => subCategory.isPublic && subCategory.isActive);
|
this.activeSubCategory = this.activeCategory.subCategories.find(subCategory => subCategory.isPublic && subCategory.isActive);
|
||||||
if (this.activeSubCategory) {
|
if (this.activeSubCategory) {
|
||||||
this.setSideBar();
|
this.setSideBar();
|
||||||
this.setIndicators();
|
this.setIndicators();
|
||||||
|
} else {
|
||||||
|
this.navigateToError();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
this.navigateToError();
|
this.navigateToError();
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
this.navigateToError();
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
this.navigateToError();
|
this.navigateToError();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private setSideBar() {
|
private setSideBar() {
|
||||||
let items: Item[] = [];
|
let items: Item[] = [];
|
||||||
this.activeTopic.categories.forEach(category => {
|
this.activeTopic.categories.forEach((category, index) => {
|
||||||
if (category.isPublic && category.isActive) {
|
if (category.isPublic && category.isActive) {
|
||||||
let subItems: Item[] = [];
|
let subItems: Item[] = [];
|
||||||
category.subCategories.forEach(subCategory => {
|
category.subCategories.forEach(subCategory => {
|
||||||
|
@ -230,7 +245,10 @@ export class MonitorComponent implements OnInit, OnDestroy {
|
||||||
null, null, false));
|
null, null, false));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const open = this.activeCategory.alias === category.alias;
|
let open = this.activeCategory.alias === category.alias;
|
||||||
|
if (MonitorComponent.sidebarStatus && MonitorComponent.sidebarStatus.id === this.activeTopic.alias) {
|
||||||
|
open = MonitorComponent.sidebarStatus.status[index];
|
||||||
|
}
|
||||||
items.push(new Item(category.alias, category.name, (
|
items.push(new Item(category.alias, category.name, (
|
||||||
'/' + this.stakeholder.alias + '/' + this.activeTopic.alias + '/' + category.alias),
|
'/' + this.stakeholder.alias + '/' + this.activeTopic.alias + '/' + category.alias),
|
||||||
subItems, null, open));
|
subItems, null, open));
|
||||||
|
|
|
@ -77,7 +77,6 @@ export class StakeholderUtils {
|
||||||
category.subCategories = subTokeep;
|
category.subCategories = subTokeep;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(funder);
|
|
||||||
return funder;
|
return funder;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue