diff --git a/monitor-admin/utils/indicator-utils.ts b/monitor-admin/utils/indicator-utils.ts
index 6e516ca1..de473d15 100644
--- a/monitor-admin/utils/indicator-utils.ts
+++ b/monitor-admin/utils/indicator-utils.ts
@@ -768,6 +768,7 @@ export class IndicatorUtils {
this.extractOrganization(obj, stakeholder);
this.extractDatasource(obj, stakeholder);
this.extractResearcher(obj, stakeholder);
+ this.extractPublisher(obj, stakeholder);
}
private extractFunder(obj, stakeholder: Stakeholder) {
@@ -849,6 +850,33 @@ export class IndicatorUtils {
}
}
+ private extractPublisher(obj, stakeholder: Stakeholder) {
+ // works for .publisher
+ if (stakeholder.type != 'publisher') {
+ return;
+ }
+ for (let query of this.getQueryObjectName(obj) ? obj[this.getDescriptionObjectName(obj)][this.getQueryObjectName(obj)] : obj[this.getDescriptionObjectName(obj)]) {
+ if (query["query"]["profile"]) {
+ query["query"]["profile"] = ChartHelper.prefix + this.statsProfileParameter + ChartHelper.suffix;
+ }
+ if (!query["query"]["filters"]) {
+ return;
+ }
+ for (let filter of query["query"]["filters"]) {
+ for (let gfilter of filter["groupFilters"]) {
+ let replacedValue = this.replaceIndexValues(gfilter["values"][0], stakeholder);
+ console.log(replacedValue)
+ if (replacedValue) { // don't proceed in replacement if no replaced value matches
+ if (gfilter["field"].indexOf(".publisher") != -1) {
+ console.log(gfilter["values"][0])
+ gfilter["values"][0] = replacedValue;
+ }
+ }
+ }
+ }
+ }
+ }
+
private extractDatasource(obj, stakeholder: Stakeholder) {
// works for .datasource.name and .HostedBy datasource
// and .datasource.id
diff --git a/monitor/services/hasDashboard.guard.ts b/monitor/services/hasDashboard.guard.ts
index 666d8255..6dfb950e 100644
--- a/monitor/services/hasDashboard.guard.ts
+++ b/monitor/services/hasDashboard.guard.ts
@@ -16,11 +16,7 @@ export class HasDashboardGuard {
}
check(path: string, alias: string, type: string, child: string): Observable | boolean {
- let get = this.stakeholderService.getStakeholder(alias);
- if(child) {
- get = this.stakeholderService.getChildStakeholder(alias, type, child);
- }
- return get.pipe(take(1), map(stakeholder => {
+ return (child?this.stakeholderService.getChildStakeholder(alias, type, child):this.stakeholderService.getStakeholder(alias)).pipe(take(1), map(stakeholder => {
return stakeholder.standalone || (!!stakeholder && !!child);
}),tap(authorized => {
if(!authorized){