2020-07-14 17:22:39 +02:00
< ng-template # selected_filters_pills let-margin = "margin" >
<!-- <div class="uk - grid uk - grid - small uk - text - small" uk - grid> -->
< span * ngIf = "periodFilter.selectedFromAndToValues.length > 0" class = "uk-grid-margin" >
2020-07-28 16:57:17 +02:00
< a ( click ) = " clearPeriodFilter ( ) " [ class ] = " ( ( loading ) ? ' uk-disabled ' : ' ' ) + ' uk-link-text ' " > < span class = "selectedFilterLabel" [ class . uk-margin-small-left ] = " margin " title = "Remove {{periodFilter.selectedFromAndToValues}}" >
2020-10-12 14:54:57 +02:00
< i uk-icon = "close" > < / i >
2020-07-14 17:22:39 +02:00
< span class = "uk-margin-small-left" > {{periodFilter.selectedFromAndToValues}}< / span >
2020-07-28 16:57:17 +02:00
< / span > < / a >
2020-07-14 17:22:39 +02:00
< / span >
< ng-container * ngFor = "let filter of filters " >
< ng-container * ngIf = "filter.countSelectedValues > 0" >
< ng-container * ngFor = "let value of filter.values; let i = index; let end = last; " >
< ng-container * ngIf = "value.selected" >
< span class = "uk-grid-margin" >
<!-- if no grid on the div above, remove it and move class 'selectedFilterLabel' on top span -->
< span class = "selectedFilterLabel " [ class . uk-margin-small-left ] = " margin " [ title ] = " ' Remove ' + value . name "
(click)="value.selected = false; filter.radioValue=''; filter.countSelectedValues=
filter.countSelectedValues -1;
filterChanged({value:filter}) ">
2020-07-15 12:06:15 +02:00
< a [ class ] = " ( ( loading ) ? ' uk-disabled ' : ' ' ) + ' uk-link-text ' " >
2020-07-14 17:22:39 +02:00
< span class = " clickable" aria-hidden = "true" >
< span class = "uk-icon" >
< svg width = "16" height = "16" viewBox = "0 0 20 20" xmlns = "http://www.w3.org/2000/svg"
icon="close" ratio="0.8">< path fill = "none" stroke = "#000" stroke-width = "1.6"
d="M16,16 L4,4">< / path > < path fill = "none"
stroke="#000"
stroke-width="1.6"
d="M16,4 L4,16">< / path > < / svg >
< / span >
< / span >
< span class = "uk-margin-small-left"
[innerHtml]="(value.name.length > 34)?value.name.substring(0,34)+'...':value.name">< / span >
< / a >
< / span >
< / span >
< / ng-container >
< / ng-container >
< / ng-container >
< / ng-container >
<!-- </div> -->
< / ng-template >
2020-08-04 09:57:51 +02:00
< div id = "page_content" [ class . greyOut ] = " filterToggle " ( click ) = " ( filterToggle ) ? filterToggle = false:filterToggle" >
< div >
2020-10-12 14:54:57 +02:00
< div class = "uk-navbar-container uk-navbar-transparent uk-sticky uk-sticky-fixed" style = "top: 70px ; position:
2020-06-04 13:30:26 +02:00
fixed; width: 100%">
2020-07-28 16:57:17 +02:00
< div class = "uk-margin-large-left" >
< nav class = " " >
< div * ngIf = "stakeholder && status === errorCodes.DONE && activeTopic" class = "" >
< ul * ngIf = "activeTopic && activeTopic.categories.length > 1"
class="categoriesTabs uk-tab ">
< ng-template ngFor [ ngForOf ] = " activeTopic . categories " let-category let-i = "index" >
2020-10-23 15:58:16 +02:00
< li * ngIf = "isPublicOrIsMember(category.visibility)"
[class.uk-active]="category.alias ===
activeCategory.alias">
2020-07-28 16:57:17 +02:00
< a ( click ) = " navigateTo ( stakeholder . alias , activeTopic . alias , category . alias ) "
class="uk-margin-remove-bottom uk-h4"
>< span > {{category.name}}< / span > < / a >
< / li >
< / ng-template >
< / ul >
< / div >
< / nav >
2020-08-04 09:57:51 +02:00
< ul * ngIf = "activeCategory && countSubCategoriesToShow(activeCategory) > 1"
2020-07-28 16:57:17 +02:00
class="uk-subnav uk-subnav-pill subCategoriesTabs ">
< ng-template ngFor [ ngForOf ] = " activeCategory . subCategories " let-subCategory let-i = "index" >
2020-10-23 15:58:16 +02:00
< li * ngIf = "isPublicOrIsMember(subCategory.visibility)"
2020-07-28 16:57:17 +02:00
[ngClass]="(subCategory.alias === activeSubCategory.alias)?'uk-active':''">
< a ( click ) = " navigateTo ( stakeholder . alias , activeTopic . alias , activeCategory . alias , subCategory . alias ) "
class="uk-margin-remove-bottom uk-h3"
>< span > {{subCategory.name}}< / span > < / a >
2020-06-29 18:26:58 +02:00
< / li >
< / ng-template >
< / ul >
2020-07-28 16:57:17 +02:00
< div * ngIf = "countSelectedFilters() > 0" class = "uk-grid uk-grid-small uk-margin-bottom" >
< span class = "uk-grid-margin" > Filters: < / span >
< ng-container * ngTemplateOutlet = "selected_filters_pills; context: {margin:true}" > < / ng-container >
< / div >
2020-06-29 18:26:58 +02:00
< / div >
< / div >
2020-10-12 14:54:57 +02:00
< div id = "page_content_inner" class = "" [ style . margin-top . px ] = " ( 24 +
2020-07-28 16:57:17 +02:00
(activeCategory & &
activeCategory.subCategories.length > 1?40:0)+(activeTopic & &
activeTopic.categories.length > 1?20:0)+(countSelectedFilters()
> 0?40:0))">
2020-10-23 15:58:16 +02:00
< div class = " indicators" >
2020-06-29 18:26:58 +02:00
< div * ngIf = "privateStakeholder" >
< div class = "uk-text-center uk-height-medium" >
< div class = "uk-h3 " > < i >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" fill = "black" width = "24px" height = "24px" >
< path d = "M0 0h24v24H0z" fill = "none" / >
< path
d="M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z"/>
< / svg >
< / i >
Private data
2020-06-24 15:36:00 +02:00
< / div >
2020-06-29 18:26:58 +02:00
< div class = "uk-text-large " > < / div >
2020-06-24 15:36:00 +02:00
< / div >
2020-06-29 18:26:58 +02:00
< / div >
2020-08-06 09:34:41 +02:00
< div * ngIf = "!privateStakeholder" >
2020-05-13 12:00:12 +02:00
< div
2020-06-29 18:26:58 +02:00
*ngIf="(activeSubCategory & & (activeSubCategory.charts.length == 0 ||
2020-05-13 12:00:12 +02:00
(activeSubCategory.charts.length == 1 & & activeSubCategory.charts[0].indicators.length == 0)))
& & ((activeSubCategory & &
activeSubCategory.description & &
activeSubCategory.description.length > 0) ||
(activeCategory & & activeCategory.description & & activeCategory.description.length > 0) ||
(activeTopic & & activeTopic.description & & activeTopic.description.length > 0))"
2020-06-29 18:26:58 +02:00
class="uk-text-center">
2020-06-26 12:52:58 +02:00
< div class = "uk-h5 uk-height-small uk-margin-large-top uk-margin-xlarge-right uk-margin-xlarge-left" >
2020-06-24 15:36:00 +02:00
{{activeSubCategory & & activeSubCategory.description & & activeSubCategory.description.length > 0 ? activeSubCategory.description
2020-06-29 18:26:58 +02:00
: (activeCategory & & activeCategory.description & & activeCategory.description.length > 0 ? activeCategory.description :
(activeTopic.description & & activeTopic.description.length > 0 ? activeTopic.description : ""))}}
2020-05-13 12:00:12 +02:00
< / div >
2020-06-24 15:36:00 +02:00
2020-05-13 12:00:12 +02:00
< / div >
2020-06-26 12:52:58 +02:00
< div * ngIf = "!loading & & ! privateStakeholder & &
2020-05-13 12:00:12 +02:00
(!activeSubCategory ||
(
(activeSubCategory.numbers.length == 0 || (activeSubCategory.numbers.length == 1 & & activeSubCategory.numbers[0].indicators.length == 0))
& &
(activeSubCategory.charts.length == 0 || (activeSubCategory.charts.length == 1 & & activeSubCategory.charts[0].indicators.length == 0))
2020-06-29 18:26:58 +02:00
) || !activeTopic || !activeCategory || !activeSubCategory)">
2020-06-24 15:36:00 +02:00
< div class = " uk-text-center" >
2019-12-09 11:41:58 +01:00
< div class = "uk-h3" >
No indicators available yet. Stay tuned!
< / div >
< / div >
< / div >
2020-02-06 14:45:11 +01:00
< div * ngIf = "activeSubCategory" class = "uk-grid uk-grid-medium uk-margin-bottom uk-margin-top"
2020-10-12 14:54:57 +02:00
uk-height-match="target: div.uk-card">
2019-12-09 11:41:58 +01:00
< ng-template ngFor [ ngForOf ] = " activeSubCategory . numbers " let-number let-i = "index" >
2020-01-08 12:00:50 +01:00
< h4 class = "uk-width-1-1" > {{number.title}}< / h4 >
< ng-template ngFor [ ngForOf ] = " number . indicators " let-indicator let-j = "index" >
2020-10-23 15:58:16 +02:00
< div * ngIf = "isPublicOrIsMember(indicator.visibility)"
2020-08-04 09:57:51 +02:00
[class.uk-width-1-3@m]="indicator.width === 'small'"
[class.uk-width-1-2@m]="indicator.width === 'medium'"
[class.uk-width-1-1]="indicator.width === 'large'" class=" uk-margin-bottom">
2020-10-12 14:54:57 +02:00
< div class = "uk-card uk-card-default" [ attr . uk-tooltip ] = " indicator . description "
2020-07-28 16:57:17 +02:00
[class.uk-disabled]="indicator.indicatorPaths[0].filtersApplied < countSelectedFilters ( ) "
[class.semiFiltered]="indicator.indicatorPaths[0].filtersApplied < countSelectedFilters ( ) " >
2020-10-12 14:54:57 +02:00
< div class = "uk-card-body uk-text-center" >
2020-08-06 09:34:41 +02:00
< div * ngIf = "properties.environment == 'development'" > Filtered:
{{indicator.indicatorPaths[0].filtersApplied}}
out of
{{countSelectedFilters()}}< / div >
2020-08-04 09:57:51 +02:00
< div class = "uk-text-bold " > {{indicator.name}}< / div >
< h3 * ngIf = "numberResults.get(i + '-' + j)" class = "uk-margin-medium-top uk-text-bold" >
2020-01-08 12:00:50 +01:00
< span > {{numberResults.get(i + '-' + j) | number}}< / span >
2020-08-04 09:57:51 +02:00
< / h3 >
2020-01-08 12:00:50 +01:00
< / div >
2019-12-06 14:52:26 +01:00
< / div >
2019-12-09 11:41:58 +01:00
< / div >
2020-01-08 12:00:50 +01:00
< / ng-template >
2019-12-09 11:41:58 +01:00
< / ng-template >
< / div >
2020-07-10 10:37:51 +02:00
< div * ngIf = "activeSubCategory" >
2020-06-29 18:26:58 +02:00
< div * ngFor = "let chart of activeSubCategory.charts; let i = index;"
class="uk-grid uk-grid-medium uk-margin-bottom uk-flex uk-flex-bottom "
2020-01-10 14:31:53 +01:00
uk-height-match="target: div > div > .chartTitle">
< h3 * ngIf = "chart.title && chart.title.length > 0" class = "uk-width-1-1 uk-margin-top" > {{chart.title}}< / h3 >
2020-01-08 12:00:50 +01:00
< ng-template ngFor [ ngForOf ] = " chart . indicators " let-indicator let-j = "index" >
2020-06-29 18:26:58 +02:00
< div
2020-10-23 15:58:16 +02:00
*ngIf="isPublicOrIsMember(indicator.visibility) & & chartsActiveType.get(i + '-' + j)"
2020-06-29 18:26:58 +02:00
[class.uk-width-1-3@m]="indicator.width === 'small'"
[class.uk-width-1-2@m]="indicator.width === 'medium'"
[class.uk-width-1-1]="indicator.width === 'large'" class="uk-margin-bottom">
2020-01-08 12:00:50 +01:00
< div class = "indicatorBox" >
2020-01-10 14:31:53 +01:00
< h4 class = "uk-margin-bottom chartTitle uk-flex uk-flex-bottom " >
2020-01-08 12:00:50 +01:00
< div > {{indicator.name + " "}}< / div >
< / h4 >
2020-10-12 14:54:57 +02:00
< div class = "uk-card uk-card-default"
2020-07-28 16:57:17 +02:00
[class.uk-disabled]="chartsActiveType.get(i + '-' + j).filtersApplied < countSelectedFilters ( ) "
[class.semiFiltered]="chartsActiveType.get(i + '-' + j).filtersApplied < countSelectedFilters ( ) "
><!-- [
attr
.uk-tooltip]="indicator
.description">-->
2020-10-12 14:54:57 +02:00
< div class = "uk-card-body uk-text-center" >
2020-01-08 12:00:50 +01:00
< div * ngIf = "indicator.indicatorPaths.length > 1" class = "uk-button-group" >
< button * ngFor = "let indicatorPath of indicator.indicatorPaths;"
class="uk-button"
(click)="setActiveChart(i, j, indicatorPath.type)"
[class.uk-button-secondary]="chartsActiveType.get(i + '-' + j).url === indicatorPath.url">
{{indicatorPath.type}}
< / button >
< / div >
2020-08-06 09:34:41 +02:00
< div * ngIf = "properties.environment == 'development'" > Filtered: {{chartsActiveType.get(i + '-' + j).filtersApplied}} out of
{{countSelectedFilters()}}< / div >
2020-01-08 12:00:50 +01:00
< iframe * ngIf = "chartsActiveType.get(i + '-' + j).source !== 'image'"
[src]="chartsActiveType.get(i + '-' + j).safeResourceUrl"
class="uk-width-1-1 uk-height-medium">< / iframe >
<!-- {{chartsActiveType.get(i).safeResourceUrl}} -->
<!-- <a [href]="chartsActiveType.get(i).safeResourceUrl" target="_blank" > ChartuURL</a> -->
< img * ngIf = "chartsActiveType.get(i + '-' + j).source === 'image'"
[src]="chartsActiveType.get(i + '-' + j).safeResourceUrl"
class="uk-width-1-1 uk-height-medium">
2020-06-25 10:10:42 +02:00
< div class = "uk-text-small uk-text-muted" > {{indicator.description}}< / div >
2019-12-09 11:41:58 +01:00
< / div >
< / div >
2019-10-25 15:19:54 +02:00
< / div >
2019-12-09 11:41:58 +01:00
< / div >
2020-01-08 12:00:50 +01:00
< / ng-template >
2020-01-10 14:31:53 +01:00
< / div >
2019-11-28 17:27:49 +01:00
< / div >
2020-08-06 09:34:41 +02:00
< div * ngIf = "!loading && !privateStakeholder && activeSubCategory"
class="uk-width-1-1 uk-text-center uk-text-muted">
< span > Send us your < a [ href ] = " mailText " target = "_self" ( click ) = " mailMe ( ) " > feedback< / a > .< / span >
< / div >
< / div >
2019-12-09 11:41:58 +01:00
< / div >
2019-10-24 09:44:29 +02:00
< / div >
2020-08-04 09:57:51 +02:00
< div * ngIf = "stakeholder" class = "uk-margin-xlarge-top" >
< bottom * ngIf = "properties" [ darkBackground ] = " false "
[centered]="true" [properties]="properties" [showMenuItems]="true">< / bottom >
< / div >
< / div >
2020-06-29 18:26:58 +02:00
< / div >
2020-10-12 14:54:57 +02:00
<!-- (click)="filterToggle= !filterToggle"
[style.display]="(filterToggle?'none':'inherit')"-->
< div * ngIf = "stakeholder && !privateStakeholder" href = "#style_switcher" uk-toggle = "" id = "filters_switcher_toggle" >
< i class = " uk-text-muted" >
< svg style = "margin-top: 8px;" xmlns = "http://www.w3.org/2000/svg" enable-background = "new 0 0 24 24"
viewBox="0 0 20 20"
fill="white" width="24px" height="16px">
< g >
< path d = "M0,0h24 M24,24H0" fill = "none" / >
< path
d="M4.25,5.61C6.57,8.59,10,13,10,13v5c0,1.1,0.9,2,2,2h0c1.1,0,2-0.9,2-2v-5c0,0,3.43-4.41,5.75-7.39 C20.26,4.95,19.79,4,18.95,4H5.04C4.21,4,3.74,4.95,4.25,5.61z"/>
< path d = "M0,0h24v24H0V0z" fill = "none" / >
< / g >
< / svg >
< / i >
< / div >
< div * ngIf = "stakeholder && !privateStakeholder" id = "style_switcher" class = " uk-offcanvas filters_switcher"
uk-offcanvas="flip:true" mode="slide" overlay="" style="z-index:982;" >
< div class = "uk-offcanvas-bar offcanvas-white" >
< div class = "uk-float-right" >
< button class = "uk-offcanvas-close uk-close uk-icon" type = "button" uk-close = "" > < / button >
2020-06-11 19:06:45 +02:00
< / div >
2020-07-10 10:37:51 +02:00
< div class = "uk-padding" >
2020-07-14 17:22:39 +02:00
< div class = "uk-grid uk-flex uk-flex-middle" > < div class = "uk-h4 " > Filters< / div > < a * ngIf = "countSelectedFilters() > 1"
class=" portal-link uk-width-1-2" (click)="clearAll()"> Clear All < / a > < / div >
< div class = "uk-grid uk-grid-small uk-text-small" uk-grid >
< ng-container * ngTemplateOutlet = "selected_filters_pills; context: {margin:false}" > < / ng-container >
2020-07-10 10:37:51 +02:00
< / div >
2020-07-28 17:56:48 +02:00
< div class = "uk-margin-small-top" > < i class = "uk-text-muted uk-text-small" > If your filter selection cannot be applied to a chart, that chart will appear grayed-out.< / i > < / div >
2020-07-10 10:37:51 +02:00
< ul class = "uk-list uk-list-divider uk-margin-medium" >
< li >
< range-filter [ filter ] = " periodFilter " yearMin = "2000" yearMax = "2020" [ mandatoryRange ] = " true "
(onFilterChange)="filter()">< / range-filter >
< / li >
2020-07-14 17:22:39 +02:00
< ng-container * ngFor = "let filter of filters " >
< li * ngIf = "filter.values.length >0" >
< search-filter [ filter ] = " filter " [ showResultCount ] = false
(onFilterChange)="filterChanged($event)">< / search-filter >
< / li >
< / ng-container >
2020-07-10 10:37:51 +02:00
< / ul >
< / div >
< / div >
2020-06-02 14:45:08 +02:00
< / div >
2019-12-04 18:01:55 +01:00