{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/google-analytics-events.service.ts","webpack:///./src/app/main/help.component.html","webpack:///./src/app/main/help.component.ts","webpack:///./src/app/main/main.component.html","webpack:///./src/app/main/main.component.ts","webpack:///./src/app/models/area/area.service.ts","webpack:///./src/app/models/goal/goal.service.ts","webpack:///./src/app/models/indicator/indicator.service.ts","webpack:///./src/app/models/observation/observation.service.ts","webpack:///./src/app/models/observation/observationPivotPage.model.ts","webpack:///./src/app/models/period/period.model.ts","webpack:///./src/app/models/period/period.service.ts","webpack:///./src/app/models/period/periodRange.model.ts","webpack:///./src/app/models/serie/serie.service.ts","webpack:///./src/app/models/target/target.service.ts","webpack:///./src/app/models/user/user.service.ts","webpack:///./src/app/pipes/highlight.ts","webpack:///./src/app/pipes/number-filter.ts","webpack:///./src/app/selector/selector-areas.component.html","webpack:///./src/app/selector/selector-areas.component.ts","webpack:///./src/app/selector/selector-series.component.html","webpack:///./src/app/selector/selector-series.component.ts","webpack:///./src/app/table/multi.component.html","webpack:///./src/app/table/multi.component.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error('Cannot find module \"' + req + '\".');\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","
\r\n\r\n
\r\n\r\n \r\n
\r\n

Frequently Asked Questions\r\n \r\n – as of 20 June 2018\r\n \r\n

\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n

\r\n \r\n Welcome to the dissemination platform of the Global SDG Indicators Database. This platform provides access to data compiled through the UN System in preparation for the Secretary-General's annual report on \"Progress towards the Sustainable Development Goals\"\r\n \r\n

\r\n

\r\n \r\n Please read our\r\n \r\n Frequently Asked Questions\r\n \r\n if you need help using this site. The development of this global SDG database dissemination platform is an ongoing process. Please send your feedback and suggestions for improvements to\r\n \r\n statistics@un.org\r\n \r\n \r\n

\r\n

\r\n \r\n Starting 2019, major updates are expected to be released in March, June/July, September and December. Earlier versions of the database are available \r\n \r\n here\r\n .\r\n \r\n

\r\n

\r\n Explore the \r\n Metadata repository\r\n \r\n\t

\r\n\t \r\n\t
\r\n

\r\n This interface works best with Google Chrome and Firefox and may not properly work under other browsers.\r\n

\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n","import { Component, OnInit, LOCALE_ID, Inject } from '@angular/core';\r\n\r\nimport { environment } from '../environments/environment';\r\n\r\nimport { NgbModal, ModalDismissReasons } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport {GoogleAnalyticsEventsService} from \"./google-analytics-events.service\";\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css'],\r\n providers: [\r\n GoogleAnalyticsEventsService,\r\n ]\r\n})\r\nexport class AppComponent implements OnInit {\r\n\r\n version = '0';\r\n\r\n closeResult: string;\r\n\r\n constructor(\r\n @Inject(LOCALE_ID) protected localeId: string,\r\n private modalService: NgbModal,\r\n public gaEventsService: GoogleAnalyticsEventsService,\r\n ) {\r\n console.log(`Locale: ${localeId}`);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.version = environment.version;\r\n console.log (`Version: ${this.version}`);\r\n }\r\n\r\n modal(content) {\r\n this.modalService.open(content);\r\n }\r\n\r\n modalLarge(content) {\r\n this.modalService.open(content, {size: 'lg'});\r\n }\r\n\r\n onMetadataClicked() {\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_LINK, \"metadataRepository\");\r\n }\r\n\r\n onFaqClicked() {\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_BUTTON, \"FAQ\");\r\n }\r\n\r\n onHelpClicked() {\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_LINK, \"statistics@un.org\");\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { HttpModule } from '@angular/http';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\n// import { ChartModule } from 'angular2-highcharts';\r\n// import { HighchartsStatic } from 'angular2-highcharts/dist/HighchartsService';\r\nimport { NgxDatatableModule } from '@swimlane/ngx-datatable';\r\n// import { NgxDatatableModule } from '@swimlane/ngx-datatable/src';\r\n// import { Angular2Csv } from 'angular2-csv/Angular2-csv';\r\n\r\n// import { TreeModule } from 'angular-tree-component';\r\n\r\n// import { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';\r\n\r\nimport { TreeviewModule } from 'ngx-treeview';\r\n\r\nimport { AppComponent } from './app.component';\r\n\r\nimport { HelpComponent } from './main/help.component';\r\n\r\nimport { TableMultiComponent } from './table/multi.component';\r\n\r\nimport { MainComponent } from './main/main.component';\r\n\r\n// import { SelectorTree } from './selector/selector-tree.component';\r\n\r\nimport { SelectorSeries } from './selector/selector-series.component';\r\nimport { SelectorAreas } from './selector/selector-areas.component';\r\n\r\nimport { HighlightPipe } from './pipes/highlight';\r\nimport { NumberFilterPipe } from './pipes/number-filter';\r\n\r\n// export function highchartsFactory() {\r\n// const hc = require('highcharts');\r\n// const dd = require('highcharts/modules/drilldown');\r\n// dd(hc);\r\n//\r\n// return hc;\r\n// }\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n HelpComponent,\r\n MainComponent,\r\n // SelectorTree,\r\n SelectorSeries,\r\n SelectorAreas,\r\n HighlightPipe,\r\n NumberFilterPipe,\r\n TableMultiComponent,\r\n ],\r\n imports: [\r\n BrowserModule,\r\n HttpModule,\r\n FormsModule,\r\n NgbModule.forRoot(),\r\n // ChartModule,\r\n NgxDatatableModule,\r\n // TreeModule,\r\n TreeviewModule.forRoot(),\r\n NgxDatatableModule,\r\n // NgMultiSelectDropDownModule.forRoot(),\r\n ],\r\n providers: [\r\n // {\r\n // provide: HighchartsStatic,\r\n // useFactory: highchartsFactory\r\n // }\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import {Injectable} from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class GoogleAnalyticsEventsService {\r\n\r\n public emitEvent(eventCategory: string,\r\n eventAction: string,\r\n eventLabel: string = null,\r\n eventValue: number = null) {\r\n ga('send', 'event', {\r\n eventCategory: eventCategory,\r\n eventLabel: eventLabel,\r\n eventAction: eventAction,\r\n eventValue: eventValue\r\n });\r\n }\r\n\r\n readonly TYPE_BUTTON = 'button';\r\n readonly TYPE_LINK = 'link';\r\n readonly TYPE_RADIO = 'radio';\r\n readonly TYPE_CHECKBOX = 'checkbox';\r\n\r\n}\r\n","\r\n\r\n

\r\n \r\n \r\n What is the number of observation in the SDG database?\r\n \r\n \r\n
\r\n The version released on 20 June 2018 contains over 1 million observations. However, this is not the number of unique observations, as several indicators and their data are repeated. For the complete list of the indicators that are repeated in the indicator framework please see https://unstats.un.org/sdgs/indicators/indicators-list/.\r\n

\r\n\r\n

\r\n \r\n \r\n What is a goal, target, indicator, and series?\r\n \r\n \r\n
\r\n A goal expresses an ambitious, but specific, commitment and always starts with a verb/action. A target is a quantified sub-component of a goal that will contribute in a major way to its achievement. A target should be an outcome. An Indicator is a precise metric to assess if a target is being met. There may be more than one indicator associated with a target. A series is a set of regular time-ordered observations of a quantitative characteristic of an individual or collective phenomenon taken at successive, in most cases equidistant, periods / points of time.\r\n

\r\n\r\n

\r\n \r\n \r\n What geographic areas can be selected?\r\n \r\n \r\n
\r\n The selection by geographic area allows a flexible selection of different groupings and subgroupings (aggregates) of countries or areas, and individual countries (or areas), organized hierarchically, excepts for a few groupings that are listed without being part of any hierarchy. The regional groupings are based on the geographic regions defined under the Standard Country or Area Codes for Statistical Use (known as M49) of the United Nations Statistics Division while the other groupings follow different or additional criteria regarding their composition. For detailed information please go to https://unstats.un.org/sdgs/indicators/regional-groups/.\r\n

\r\n\r\n

\r\n \r\n \r\n What is the nature of the data?\r\n \r\n \r\n
\r\n For each value of the indicator, the responsible international agency has been requested to indicate whether the national data were adjusted, estimated, modelled or are the result of global monitoring. The “nature” of the data in the SDG database is determined as follows:\r\n

\r\n\r\n \r\n\r\n

\r\n \r\n \r\n Where can I submit additional questions?\r\n \r\n \r\n
\r\n Please send your question to statistics@un.org with subject line “SDG Indicators global database”.\r\n

\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n// import { Angular2Csv } from 'angular2-csv/Angular2-csv';\r\n\r\n@Component({\r\n selector: 'help',\r\n templateUrl: './help.component.html',\r\n providers: [\r\n ]\r\n})\r\nexport class HelpComponent implements OnInit {\r\n\r\n constructor(\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n}\r\n","\r\n
\r\n

Searching indicators

\r\n
\r\n
\r\n
\r\n You can search by typing specific Goal, Target, or Indicator numbers.\r\n
\r\n

\r\n 1 All series in Goal 1\r\n
\r\n 1.1 All series in Target 1.1\r\n
\r\n 1.1.1 All series in Indicator 1.1.1\r\n

\r\n
\r\n It is also posible to search by specific Series names.\r\n
\r\n

\r\n SI_POV_DAY1 A specific series\r\n

\r\n
\r\n Or any text which is part of the Goal, Target, Indicators or Series description.\r\n
\r\n

\r\n poverty All series by text 'poverty'\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n

Searching areas

\r\n
\r\n
\r\n
\r\n You can search by specific areas names.\r\n
\r\n

\r\n Argen Argentina\r\n
\r\n Afric Africa\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n

Regional groupings and other groupings

\r\n
\r\n
\r\n

\r\n The regional groupings are based on the geographic regions defined under the Standard Country or Area Codes for Statistical Use (known as M49) of the United Nations Statistics Division while the other groupings follow different or additional criteria regarding their composition.\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n

Regional groupings

\r\n
\r\n
\r\n

\r\n The regional groupings are based on the geographic regions defined under the Standard Country or Area Codes for Statistical Use (known as M49) of the United Nations Statistics Division.\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n

Other groupings

\r\n
\r\n
\r\n

\r\n Other groupings refer to groupings that do not follow the geographic regions defined under the Standard Country or Area Codes for Statistical Use (known as M49), or deviate from them in some way.\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n

Dependant items

\r\n
\r\n
\r\n

\r\n The region selection allows a flexible selection of different groupings and subgroupings (aggregates) of countries or areas, and individual countries (or areas), organized hierarchically, excepts for a few groupings that are listed without being part of any hierarchy.\r\n

\r\n\r\n
\r\n
    \r\n
  • The select checkbox allows you to select or unselect items; the checkbox will display “-“ if not all subitems are selected
  • \r\n
  • The additional checkbox “Automatically select dependent items” allows you to automatically include subitems when you select or unselect items
  • \r\n
  • Clicking on “+” and “-“ allows to expand or collapse the list of sub-items, if sub-items are available
  • \r\n
  • Items on the list that are shaded grey have no data
  • \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n

Preparing your download...

\r\n
\r\n
\r\n
\r\n Please wait, it can take a few minutes.\r\n
\r\n\r\n \r\n working...\r\n \r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n

Download large files by email.

\r\n
\r\n
\r\n
\r\n Large data collections take a while to generate. Please enter your email address and a link will be sent to you once it is ready. Thanks.\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n We'll never share your email with anyone else.\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n It looks like this is the first time you use our service, please feel free to fill up the following data for statistic purposes.\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n {{uiLoadingProgress()}}%\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n Last updated on {{lastUpdateAt}}\r\n (\r\n \r\n see history\r\n \r\n )\r\n \r\n   \r\n\r\n \r\n  \r\n \r\n  \r\n \r\n\r\n
\r\n\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n No data found\r\n
\r\n\r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n  Include countries or areas of current selection\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n \r\n \r\n  Automatically select dependant items\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n No items available\r\n
\r\n
\r\n No data found\r\n
\r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n
\r\n

\r\n Observations\r\n

\r\n
\r\n \r\n Scroll down and click on series title to see respective observations\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n Indicator\r\n \r\n {{indicator}},\r\n \r\n  Series: \r\n {{series[serie].description}}\r\n \r\n {{series[serie].code}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n

\r\n\r\n
\r\n","import { Component, ApplicationRef, ChangeDetectorRef, Input, OnInit, ViewChild, ElementRef } from '@angular/core';\r\n\r\nimport * as _ from 'lodash';\r\n\r\nimport * as configFile from \"./../config.json\";\r\n\r\nimport { NgbModal, ModalDismissReasons, NgbPanelChangeEvent } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nimport {GoogleAnalyticsEventsService} from \"./../google-analytics-events.service\";\r\n\r\nimport { environment } from '../../environments/environment';\r\n\r\nimport { Goal } from './../models/goal/goal.model';\r\nimport { GoalService } from './../models/goal/goal.service';\r\nimport { Target } from './../models/target/target.model';\r\nimport { TargetService } from './../models/target/target.service';\r\nimport { Indicator } from './../models/indicator/indicator.model';\r\nimport { IndicatorService } from './../models/indicator/indicator.service';\r\nimport { Serie } from './../models/serie/serie.model';\r\nimport { SerieService } from './../models/serie/serie.service';\r\nimport { Area } from './../models/area/area.model';\r\nimport { AreaNode } from './../models/area/areaNode.model';\r\nimport { AreaService } from './../models/area/area.service';\r\nimport { PeriodService } from './../models/period/period.service';\r\n\r\n// import { Update } from './../models/update/update.model';\r\n// import { UpdateService } from './../models/update/update.service';\r\n\r\nimport { UserService } from './../models/user/user.service';\r\n\r\n// import { SelectorTree } from './../selector/selector-tree.component';\r\nimport { SelectorSeries } from './../selector/selector-series.component';\r\nimport { SelectorAreas } from './../selector/selector-areas.component';\r\n\r\nimport {\r\n TreeviewItem,\r\n TreeviewConfig,\r\n TreeviewEventParser,\r\n DownlineTreeviewEventParser,\r\n DownlineTreeviewItem\r\n} from 'ngx-treeview';\r\n\r\n@Component({\r\n selector: 'main',\r\n templateUrl: './main.component.html',\r\n providers: [\r\n GoogleAnalyticsEventsService,\r\n GoalService,\r\n TargetService,\r\n IndicatorService,\r\n SerieService,\r\n AreaService,\r\n PeriodService,\r\n // UpdateService,\r\n UserService,\r\n { provide: TreeviewEventParser, useClass: DownlineTreeviewEventParser }\r\n ]\r\n})\r\nexport class MainComponent implements OnInit {\r\n\r\n @ViewChild('inputSeriesSearch') inputSeriesSearch : ElementRef;\r\n @ViewChild('inputAreasSearch') inputAreasSearch : ElementRef;\r\n\r\n @ViewChild('includeRegionsCountries') includeRegionsCountries: ElementRef;\r\n @ViewChild('includeMixCountries') includeMixCountries: ElementRef;\r\n\r\n @ViewChild('selectorSeries') selectorSeries: SelectorSeries;\r\n @ViewChild('selectorAreas') selectorAreas: SelectorAreas;\r\n\r\n @ViewChild('observationsTable') observationsTable : ElementRef;\r\n\r\n readonly SERIES_ALL = 'all';\r\n readonly SERIES_SEARCH = 'search';\r\n readonly AREAS_ALL = 'all';\r\n readonly AREAS_REGIONS = 'regions';\r\n readonly AREAS_OTHER = 'other';\r\n readonly AREAS_COUNTRIES = 'countries';\r\n readonly AREAS_SEARCH = 'search';\r\n readonly TIME_ALL = 'all';\r\n readonly TIME_RANGE = 'range';\r\n currentSelector = {\r\n series: this.SERIES_ALL,\r\n areas: this.AREAS_ALL,\r\n time: this.TIME_ALL\r\n };\r\n\r\n readonly TAB_SERIES = 'series';\r\n readonly TAB_AREAS = 'areas';\r\n readonly TAB_TIME = 'time';\r\n currentTab=this.TAB_SERIES;\r\n\r\n _uiLoadingProgress = 0;\r\n uiLoadingProgress() {\r\n return Math.round(this._uiLoadingProgress);\r\n }\r\n uiLoadingProgressStep() {\r\n this._uiLoadingProgress+=(100/9);\r\n }\r\n uiLoadingFinished() {\r\n return (this._uiLoadingProgress>=100);\r\n }\r\n\r\n lastUpdateAt:string;\r\n lastUpdateLog:string;\r\n // updates:Update[];\r\n\r\n _uiDownloadProgress:Number = 0;\r\n _uiDownloadInterval = undefined;\r\n _uiDownloadModal = undefined;\r\n _uiDownloadStartTimestamp = 0;\r\n\r\n //data read from API\r\n goals: Goal[] = undefined;\r\n targets: Target[] = undefined;\r\n indicators: Target[] = undefined;\r\n series: Serie[] = undefined;\r\n areas: Area[] = undefined;\r\n\r\n //seletor data\r\n seriesNodes: Object[] = undefined;\r\n areasNodes: AreaNode[] = undefined;\r\n // periodMin = undefined;\r\n // periodMax = undefined;\r\n periodStart = 0;\r\n periodEnd = 0;\r\n periodStartRange = 0;\r\n periodStartTable = 0;\r\n periodEndTable = 0;\r\n periods = undefined;\r\n\r\n __series: TreeviewItem[] = [];\r\n __seriesSelected: string[] = [];\r\n __seriesSelectedTable: string[] = [];\r\n __seriesTotal = 0;\r\n\r\n // __areasTotal = 0;\r\n __areas: TreeviewItem[] = [];\r\n __areasSelectedRaw: string[] = [];\r\n __areasSelected: string[] = [];\r\n __areasSelectedTable: string[] = [];\r\n __areasSelectedAndEnabledCount: number = 0;\r\n __areasMix: TreeviewItem[] = [];\r\n __areasRegions: TreeviewItem[] = [];\r\n __areasGroupings: TreeviewItem[] = [];\r\n __areasCountries: TreeviewItem[] = [];\r\n __areasSearch: TreeviewItem[] = [];\r\n __areasAvailable:string[] = undefined;\r\n __areasSearchAnyMatch = false;\r\n\r\n\r\n dataCount: number = 0;\r\n private isDataCounting: boolean = false;\r\n private isDownloading = false;\r\n private isSearchingSeries = false;\r\n\r\n regionsIncludeCountries:boolean;\r\n mixIncludeCountries:boolean;\r\n otherIncludeCountries:boolean;\r\n areasAutomaticallySelectChildren:boolean=false;\r\n areasAll:boolean=false;\r\n\r\n userEmailExists:boolean = false;\r\n modalDownloadEmailAddress = '';\r\n modalDownloadUserFirstName:string = '';\r\n modalDownloadUserLastName:string = '';\r\n modalDownloadUserComments:string = '';\r\n modalDownloadUserType:string=\"\";\r\n\r\n showTable: boolean = false;\r\n showTableHighlight: boolean = false;\r\n showTableInitialized = 0;\r\n isRenderingTable = false;\r\n uiShowTableProgress() {\r\n let total = this.__seriesSelectedTable.length;\r\n if (total>0) {\r\n return Math.round((100/total)*this.showTableInitialized);\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n constructor(\r\n public gaEventsService: GoogleAnalyticsEventsService,\r\n private appref: ApplicationRef,\r\n private cdRef:ChangeDetectorRef,\r\n private modalService: NgbModal,\r\n private goalService: GoalService,\r\n private targetService: TargetService,\r\n private indicatorService: IndicatorService,\r\n private serieService: SerieService,\r\n private areaService: AreaService,\r\n private periodService: PeriodService,\r\n // private updateService: UpdateService,\r\n private userService: UserService,\r\n ) {\r\n ga('create', environment.googlaAnalytics, 'auto');\r\n ga('set', 'page', 'Home');\r\n ga('send', 'pageview');\r\n }\r\n\r\n // ===========================================================================\r\n // events\r\n // ===========================================================================\r\n\r\n ngOnInit(): void {\r\n\r\n\r\n this.lastUpdateLog = environment.lastUpdateLog;\r\n this.getLastUpdated();\r\n\r\n // this.loadLogUpdates();\r\n\r\n this.loadSeries();\r\n this.loadAreas();\r\n\r\n }\r\n\r\n private getLastUpdated() {\r\n this.serieService.getLastUpdateAt().then(lastUpdateAt => {\r\n let d = new Date(lastUpdateAt.replace(/\\\"/g, ''));\r\n let s = d.toLocaleDateString('en-US', {\r\n weekday: 'long', year: 'numeric', month: 'long', day: 'numeric'\r\n });\r\n this.lastUpdateAt = s;\r\n });\r\n }\r\n\r\n openModal(content) {\r\n this.modalService.open(content);\r\n }\r\n\r\n // ===========================================================================\r\n // load data from API\r\n // ===========================================================================\r\n\r\n private loadSeries() {\r\n\r\n this.goals = [];\r\n this.goalService.getList().then(items => {\r\n\r\n this.uiLoadingProgressStep();\r\n\r\n for (let goal of items) {\r\n let goalKey = `${goal.code}`;\r\n this.goals[goalKey] = goal;\r\n }\r\n\r\n this.targets = [];\r\n this.targetService.getList().then(items => {\r\n\r\n this.uiLoadingProgressStep();\r\n\r\n for (let target of items) {\r\n let targetKey = `${target.code}`;\r\n this.targets[targetKey] = target;\r\n }\r\n\r\n this.indicators = [];\r\n this.indicatorService.getList().then(items => {\r\n\r\n this.uiLoadingProgressStep();\r\n\r\n for (let indicator of items) {\r\n let indicatorKey = `${indicator.code}`;\r\n this.indicators[indicatorKey] = indicator;\r\n }\r\n\r\n this.series = [];\r\n this.serieService.getList().then(items => {\r\n\r\n this.uiLoadingProgressStep();\r\n\r\n this.seriesNodes = [];\r\n\r\n for (let item of items) {\r\n\r\n this.series[item.code] = item;\r\n\r\n for (let goal of item.goal) {\r\n let goalKey = `${goal}`;\r\n if (!(goalKey in this.seriesNodes)) {\r\n this.seriesNodes[goalKey] = [];\r\n }\r\n }\r\n\r\n for (let target of item.target) {\r\n let chunks = target.split('.');\r\n let goalKey = `${chunks[0]}`;\r\n let targetKey = `${chunks[0]}.${chunks[1]}`;\r\n if (!(targetKey in this.seriesNodes[goalKey])) {\r\n this.seriesNodes[goalKey][targetKey] = [];\r\n }\r\n }\r\n\r\n for (let indicator of item.indicator) {\r\n let chunks = indicator.split('.');\r\n let goalKey = `${chunks[0]}`;\r\n let targetKey = `${chunks[0]}.${chunks[1]}`;\r\n let indicatorKey = `${chunks[0]}.${chunks[1]}.${chunks[2]}`;\r\n if (!(indicatorKey in this.seriesNodes[goalKey][targetKey])) {\r\n this.seriesNodes[goalKey][targetKey][indicatorKey] = [];\r\n }\r\n\r\n if (!(item.code in this.seriesNodes[goalKey][targetKey][indicatorKey])) {\r\n this.seriesNodes[goalKey][targetKey][indicatorKey][item.code] = {};\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n this.__seriesTotal = Object.keys(this.series).length;\r\n\r\n this.buildSeriesTree();\r\n\r\n });\r\n\r\n });\r\n\r\n });\r\n\r\n });\r\n\r\n }\r\n\r\n private loadAreas() {\r\n\r\n this.areas = [];\r\n this.areasNodes = [];\r\n\r\n this.areaService.getTree().then(items => {\r\n\r\n this.uiLoadingProgressStep();\r\n\r\n // this.areasNodes = this.loadAreasRecursive(items);\r\n this.loadAreasRecursive(items);\r\n\r\n this.areasNodes = items;\r\n\r\n this.buildAreasTree();\r\n\r\n this.__areas = this.__areasMix;\r\n });\r\n }\r\n\r\n private loadAreasRecursive(areaNodes: AreaNode[]) {\r\n\r\n // let nodes = [];\r\n\r\n for(let area of areaNodes) {\r\n this.areas[area.geoAreaCode] = area.geoAreaName;\r\n\r\n if (null != area.children) {\r\n // nodes [area.geoAreaCode] = this.loadAreasRecursive(area.children);\r\n this.loadAreasRecursive(area.children);\r\n } else {\r\n // nodes [area.geoAreaCode] = [];\r\n }\r\n }\r\n // return nodes;\r\n }\r\n\r\n // ===========================================================================\r\n // log updates\r\n // ===========================================================================\r\n\r\n // loadLogUpdates() {\r\n //\r\n // this.updateService.getLog().then(updates => {\r\n //\r\n // console.log(updates);\r\n // });\r\n //\r\n // }\r\n\r\n\r\n // ===========================================================================\r\n // current selector changed\r\n // ===========================================================================\r\n\r\n onCurrentSelectorSeriesChanged($event = undefined) {\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_RADIO, \"seriesSelection\", this.currentSelector.series);\r\n\r\n this.selectorSeries.highlightClear();\r\n switch (this.currentSelector.series) {\r\n case this.SERIES_ALL:\r\n this.inputSeriesSearch.nativeElement.value = '';\r\n this.buildSeriesTree(undefined, true);\r\n break;\r\n case this.SERIES_SEARCH:\r\n this.buildSeriesTree('', true);\r\n break;\r\n }\r\n }\r\n\r\n onCurrentSelectorAreasChanged($event = undefined) {\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_RADIO, \"areasSelection\", this.currentSelector.areas);\r\n\r\n this.selectorAreas.highlightClear();\r\n switch (this.currentSelector.areas) {\r\n case this.AREAS_ALL:\r\n this.inputAreasSearch.nativeElement.value = '';\r\n this.__areasSearchAnyMatch = false;\r\n this.__areas = this.__areasMix;\r\n break;\r\n case this.AREAS_REGIONS:\r\n this.inputAreasSearch.nativeElement.value = '';\r\n this.__areasSearchAnyMatch = false;\r\n this.__areas = this.__areasRegions;\r\n break;\r\n case this.AREAS_OTHER:\r\n this.inputAreasSearch.nativeElement.value = '';\r\n this.__areasSearchAnyMatch = false;\r\n this.__areas = this.__areasGroupings;\r\n break;\r\n case this.AREAS_COUNTRIES:\r\n this.inputAreasSearch.nativeElement.value = '';\r\n this.__areasSearchAnyMatch = false;\r\n this.__areas = this.__areasCountries;\r\n break;\r\n case this.SERIES_SEARCH:\r\n this.__areasSearch = [];\r\n this.inputAreasSearch.nativeElement.value = '';\r\n this.__areasSearchAnyMatch = false;\r\n this.__areas = this.__areasSearch;\r\n break;\r\n }\r\n // console.log (this.__areasSelectedRaw);\r\n\r\n this.updateDataCount();\r\n }\r\n\r\n onCurrentSelectorPeriodsChanged($event = undefined) {\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_RADIO, \"periodsSelection\", this.currentSelector.time);\r\n\r\n switch (this.currentSelector.time) {\r\n case this.TIME_ALL:\r\n // let periodMin = Number(this.periods[0]);\r\n let periodMax = Number(this.periods[this.periods.length-1]);\r\n this.periodStart = 2000; //periodMin;\r\n this.periodEnd = periodMax;\r\n break;\r\n case this.TIME_RANGE:\r\n this.periodStart = this.periodStartRange;\r\n break;\r\n }\r\n this.updateDataCount();\r\n }\r\n\r\n onCurrentPeriodChanged($event = undefined) {\r\n this.periodStart = this.periodStartRange;\r\n this.updateDataCount();\r\n }\r\n\r\n // ===========================================================================\r\n // selection changed\r\n // ===========================================================================\r\n\r\n // onSeriesSelectedChanged($event) {\r\n // this.__seriesSelected = $event;\r\n // this.updateAreasAvailable();\r\n //\r\n // // if(null!=this.__areasAvailable)\r\n // // for (let a of this.__areasAvailable) {\r\n // // console.log(a+': '+this.areas[a]);\r\n // // }\r\n //\r\n // this.cdRef.detectChanges();\r\n // }\r\n\r\n onSeriesSelectedChanged(downlineItems: DownlineTreeviewItem[]) {\r\n let items = [];\r\n downlineItems.forEach(downlineItem => {\r\n if (!items.includes(downlineItem.item.value)) {\r\n items.push (downlineItem.item.value);\r\n }\r\n });\r\n this.__seriesSelected = items;\r\n\r\n this.updateAreasAvailable();\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n\r\n private selectAreaAndParents(downlineItem: DownlineTreeviewItem, items:string[]) {\r\n let parent = downlineItem.parent;\r\n if (null!=parent) {\r\n if (parent.item.checked && !items.includes(parent.item.value)) {\r\n items.push (parent.item.value);\r\n }\r\n this.selectAreaAndParents(parent, items);\r\n }\r\n }\r\n onAreasSelectedChanged(downlineItems: DownlineTreeviewItem[]) {\r\n // this.__areasSelectedAndEnabledCount = 0;\r\n let items = [];\r\n let anyDisabled = false;\r\n downlineItems.forEach(downlineItem => {\r\n const item = downlineItem.item;\r\n const value = item.value;\r\n if (0==value) {\r\n anyDisabled = true;\r\n }\r\n // if (0!=value) {\r\n // console.log (item);\r\n // this.__areasSelectedAndEnabledCount++;\r\n // }\r\n if (!items.includes(downlineItem.item.value)) {\r\n items.push (downlineItem.item.value);\r\n }\r\n this.selectAreaAndParents(downlineItem, items);\r\n });\r\n this.__areasSelectedRaw = items;\r\n this.__areasSelectedAndEnabledCount = anyDisabled?\r\n items.length-1: items.length;\r\n\r\n this.updateAreasSelected();\r\n }\r\n\r\n\r\n // onAreasSelectedChanged($event) {\r\n // console.log('onAreasSelectedChanged');\r\n // this.__areasSelectedRaw = $event;\r\n // this.updateAreasSelected();\r\n // }\r\n\r\n private updateAreasSelected() {\r\n\r\n // if (\r\n // (this.AREAS_ALL == this.currentSelector.areas && this.mixIncludeCountries) ||\r\n // (this.AREAS_REGIONS == this.currentSelector.areas && this.regionsIncludeCountries) ||\r\n // (this.AREAS_OTHER == this.currentSelector.areas && this.otherIncludeCountries)\r\n // ) {\r\n // this.__areasSelected = [];\r\n // for (let area of this.__areasSelectedRaw) {\r\n //\r\n // let found = false;\r\n // // for (let areaNode of this.areasNodes) {\r\n // for (let areaNode of this.areasNodes) {\r\n // if (!found) {\r\n // found = this.findAreaCountries(area, areaNode);\r\n // }\r\n // }\r\n // }\r\n // } else {\r\n // this.__areasSelected = this.__areasSelectedRaw;\r\n // }\r\n\r\n this.__areasSelected = this.__areasSelectedRaw;\r\n\r\n // this.__areasSelectedAndEnabledCount = 0;\r\n\r\n // this.__areasSelected.sort(this._sortAsNumber);\r\n //\r\n // console.log('-----------------');\r\n //\r\n // console.log ('areasSelected');\r\n // for(let a of this.__areasSelected) {\r\n // console.log(a);\r\n // }\r\n\r\n // if (this.__areasSelected.includes(0)) {\r\n // this.__areasSelectedAndEnabledCount = this.__areasSelected.length-1;\r\n // } else {\r\n // this.__areasSelectedAndEnabledCount = this.__areasSelected.length;\r\n // }\r\n\r\n // console.log ('areasAvailable');\r\n // for(let a of this.__areasAvailable) {\r\n // console.log(a);\r\n // }\r\n\r\n this.updatePeriodsAvailable();\r\n this.cdRef.detectChanges();\r\n }\r\n // private _sortAsNumber (a:any ,b:any) : number {\r\n // if (Number(a) < Number(b))\r\n // return -1;\r\n // if ( Number(a) > Number(b))\r\n // return 1;\r\n // return 0;\r\n // }\r\n\r\n\r\n private findAreaCountries(area: string, areaNode: AreaNode) {\r\n let found = false;\r\n if (areaNode.geoAreaCode == area) {\r\n found = true;\r\n if (this.__areasAvailable.includes(areaNode.geoAreaCode)) {\r\n this.__areasSelected.push(areaNode.geoAreaCode);\r\n }\r\n this.selectAreaCountries(areaNode);\r\n } else {\r\n if (null!=areaNode.children) {\r\n for (let child of areaNode.children) {\r\n if (!found) {\r\n found = this.findAreaCountries(area, child);\r\n }\r\n }\r\n }\r\n }\r\n return found;\r\n }\r\n\r\n private selectAreaCountries(areaNode: AreaNode) {\r\n if ('Country'==areaNode.type) {\r\n if (!this.__areasSelected.includes(areaNode.geoAreaCode)) {\r\n if (this.__areasAvailable.includes(areaNode.geoAreaCode)) {\r\n this.__areasSelected.push(areaNode.geoAreaCode);\r\n }\r\n }\r\n }\r\n if (null!=areaNode.children) {\r\n for (let child of areaNode.children) {\r\n this.selectAreaCountries(child);\r\n }\r\n }\r\n }\r\n\r\n // ===========================================================================\r\n // focus events\r\n // ===========================================================================\r\n\r\n onInputSeriesSearchFocus() {\r\n if(this.SERIES_SEARCH!=this.currentSelector.series) {\r\n this.currentSelector.series=this.SERIES_SEARCH;\r\n this.onCurrentSelectorSeriesChanged();\r\n }\r\n }\r\n\r\n onInputAreasSearchFocus() {\r\n if(this.AREAS_SEARCH!=this.currentSelector.areas) {\r\n this.currentSelector.areas=this.AREAS_SEARCH;\r\n this.onCurrentSelectorAreasChanged();\r\n }\r\n }\r\n\r\n onPeriodRangeFocus() {\r\n if(this.TIME_RANGE!=this.currentSelector.time) {\r\n this.currentSelector.time=this.TIME_RANGE;\r\n this.onCurrentSelectorPeriodsChanged();\r\n }\r\n }\r\n\r\n // ===========================================================================\r\n // include countries checkboxes\r\n // ===========================================================================\r\n\r\n onOtherIncludeCountriesChanged() {\r\n this.updateAreasSelected();\r\n }\r\n\r\n onRegionsIncludeCountriesChanged() {\r\n this.updateAreasSelected();\r\n }\r\n\r\n onMixIncludeCountriesChanged() {\r\n this.updateAreasSelected();\r\n }\r\n\r\n onAreasAutomaticallySelectChildrenChanged() {\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_CHECKBOX, \"areasDependant\", this.areasAutomaticallySelectChildren?'true':'false');\r\n\r\n }\r\n\r\n // private __areasSelectAll(areas. v:boolean=true) {\r\n // for(let area of areas) {\r\n // if (0!=area.value) {\r\n // area.checked = v;\r\n // }\r\n // if (null!=area.children) {\r\n // this.__areasSelectAll(area.children, v);\r\n // }\r\n // }\r\n // }\r\n // onAreasAllChanged($event) {\r\n // console.log (this.areasAll, $event);\r\n // this.__areasSelectAll(this.__areas, $event);\r\n // }\r\n\r\n // ===========================================================================\r\n // search\r\n // ===========================================================================\r\n\r\n searchSeries(s: string) {\r\n this.isSearchingSeries = true;\r\n let keyword = s.trim().toLowerCase();\r\n\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_BUTTON, \"searchSeries\", keyword);\r\n\r\n this.buildSeriesTree(keyword, false);\r\n if (!this._keywordIsGoal(keyword) && !this._keywordIsTarget(keyword) && !this._keywordIsIndicator(keyword)) {\r\n this.selectorSeries.highlight(keyword);\r\n }\r\n this.isSearchingSeries = false;\r\n }\r\n\r\n searchAreas(s: string) {\r\n let keyword = s.trim().toLowerCase();\r\n\r\n this.__areasSearch = [];\r\n\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_BUTTON, \"searchAreas\", keyword);\r\n\r\n this.__areasSearchAnyMatch = false;\r\n this.buildAreasSearchTree(this.areasNodes, keyword);\r\n\r\n this.selectorAreas.highlight(keyword);\r\n\r\n this.__areas = this.__areasSearch;\r\n // this.cdRef.detectChanges();\r\n }\r\n\r\n // ===========================================================================\r\n // user email validation\r\n // ===========================================================================\r\n\r\n modalDownloadEmailAddressChanged(email) {\r\n this.modalDownloadEmailAddress = email;\r\n this.checkUserEmailExists(email);\r\n }\r\n\r\n checkUserEmailExists(email) {\r\n this.userService.getEmailExist(email).then(exists => {\r\n this.userEmailExists = exists;\r\n });\r\n }\r\n\r\n modalDownloadSubmitEnabled() {\r\n if (this.userEmailExists) {\r\n return true;\r\n } else {\r\n if (''==this.modalDownloadUserType) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n // ===========================================================================\r\n // download\r\n // ===========================================================================\r\n\r\n private cancelDownload () {\r\n if(null!=this._uiDownloadModal) {\r\n this._uiDownloadModal.close();\r\n this._uiDownloadModal = undefined;\r\n }\r\n\r\n if (null!=this._uiDownloadInterval) {\r\n clearInterval(this._uiDownloadInterval);\r\n this._uiDownloadInterval = undefined;\r\n }\r\n this.isDownloading = false;\r\n }\r\n\r\n onCancelDownloadCLicked(modalContent) {\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_BUTTON, \"cancelDownload\");\r\n\r\n this.cancelDownload();\r\n }\r\n\r\n onDownloadClicked(modalContent, modalContentEmail) {\r\n\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_BUTTON, \"downloadAll\");\r\n\r\n if (this.dataCount>10000) {\r\n\r\n this.modalService.open(modalContentEmail, {centered: false, keyboard: false, beforeDismiss: () => false });\r\n\r\n } else {\r\n\r\n this._uiDownloadStartTimestamp = Date.now();\r\n let timestamp = this._uiDownloadStartTimestamp;\r\n\r\n let total = 0;\r\n let goals = [];\r\n let series = [];\r\n for (let goal in this.seriesNodes) {\r\n let seriesCount = 0;\r\n let seriesSelectedCount = 0;\r\n for (let target in this.seriesNodes[goal]) {\r\n for (let indicator in this.seriesNodes[goal][target]) {\r\n for (let serie in this.seriesNodes[goal][target][indicator]) {\r\n\r\n seriesCount++;\r\n\r\n if (this.__seriesSelected.includes(serie)) {\r\n seriesSelectedCount++;\r\n\r\n if (!series.includes(serie)) {\r\n total ++;\r\n }\r\n }\r\n\r\n if (!series.includes(serie)) {\r\n series.push (serie);\r\n }\r\n\r\n }\r\n }\r\n }\r\n if (seriesSelectedCount>0 && seriesCount == seriesSelectedCount) {\r\n goals.push(goal);\r\n }\r\n\r\n }\r\n\r\n // this.openModal(this.modalDownload);\r\n\r\n // this.openModal(modalDownload, {keyboard:false});\r\n\r\n this._uiDownloadModal = this.modalService.open(modalContent, {centered: true, keyboard: false, beforeDismiss: () => {\r\n return false;\r\n } });\r\n\r\n this._uiDownloadProgress = 0;\r\n\r\n let elapsedTime = 0;\r\n let observationsPerSecond = 468579/250;\r\n\r\n this._uiDownloadInterval =\r\n setInterval(function () {\r\n this._uiDownloadProgress = (observationsPerSecond*elapsedTime)*(100/this.dataCount);\r\n elapsedTime++;\r\n // console.log ('elapsed', elapsedTime);\r\n }.bind(this), 1000);\r\n\r\n this.isDownloading = true;\r\n\r\n if (total == series.length) {\r\n\r\n // this.goalService.getDataCSV(\t\r\n\t\tthis.goalService.getDataExcel(\r\n goals,\r\n this.__areasSelected,\r\n this.periodStart,\r\n this.periodEnd\r\n )\r\n .subscribe(res => {\r\n\r\n if (this._uiDownloadStartTimestamp == timestamp) {\r\n this.isDownloading = false;\r\n if (null!=this._uiDownloadInterval) {\r\n clearInterval(this._uiDownloadInterval);\r\n this._uiDownloadInterval = undefined;\r\n }\r\n if(null!=this._uiDownloadModal) {\r\n this._uiDownloadModal.close();\r\n this._uiDownloadModal = undefined;\r\n }\r\n var url = window.URL.createObjectURL(res.data);\r\n var a = document.createElement('a');\r\n document.body.appendChild(a);\r\n a.setAttribute('style', 'display: none');\r\n a.href = url;\r\n a.download = res.filename;\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n a.remove(); // remove the element\r\n }\r\n\r\n }, error => {\r\n console.log('download error:', JSON.stringify(error));\r\n }, () => {\r\n // ('Completed file download.')\r\n });\r\n\r\n } else {\r\n\r\n //this.serieService.getDataCSV(\r\n\t this.serieService.getDataExcel(\r\n this.__seriesSelected,\r\n this.__areasSelected,\r\n this.periodStart,\r\n this.periodEnd\r\n )\r\n .subscribe(res => {\r\n if (this._uiDownloadStartTimestamp == timestamp) {\r\n this.isDownloading = false;\r\n if (null!=this._uiDownloadInterval) {\r\n clearInterval(this._uiDownloadInterval);\r\n this._uiDownloadInterval = undefined;\r\n }\r\n if(null!=this._uiDownloadModal) {\r\n this._uiDownloadModal.close();\r\n this._uiDownloadModal = undefined;\r\n }\r\n var url = window.URL.createObjectURL(res.data);\r\n var a = document.createElement('a');\r\n document.body.appendChild(a);\r\n a.setAttribute('style', 'display: none');\r\n a.href = url;\r\n a.download = res.filename;\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n a.remove(); // remove the element\r\n }\r\n }, error => {\r\n console.log('download error:', JSON.stringify(error));\r\n }, () => {\r\n // ('Completed file download.')\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n onDownloadEmailCLicked(email) {\r\n\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_BUTTON, \"downloadEmail\", email);\r\n\r\n if (this.userEmailExists) {\r\n\r\n //this.serieService.getEmailDataCSV(\r\n\t this.serieService.getEmailDataExcel(\r\n {\r\n email: this.modalDownloadEmailAddress\r\n },\r\n this.__seriesSelected,\r\n this.__areasSelected,\r\n this.periodStart,\r\n this.periodEnd\r\n )\r\n .subscribe(res => {\r\n console.log (res);\r\n });\r\n\r\n } else {\r\n\r\n //this.serieService.getEmailDataCSV(\r\n\t this.serieService.getEmailDataExcel(\r\n {\r\n email: encodeURIComponent(this.modalDownloadEmailAddress),\r\n firstName: encodeURIComponent(this.modalDownloadUserFirstName),\r\n lastName: encodeURIComponent(this.modalDownloadUserLastName),\r\n usertype: encodeURIComponent(this.modalDownloadUserType),\r\n comments: encodeURIComponent(this.modalDownloadUserComments)\r\n },\r\n this.__seriesSelected,\r\n this.__areasSelected,\r\n this.periodStart,\r\n this.periodEnd\r\n )\r\n .subscribe(res => {\r\n console.log (res);\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n onDownloadSeriesClicked(serie, areas, periodStart, periodEnd) {\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_BUTTON, \"downloadSeries\");\r\n\r\n //this.serieService.getDataCSV(\r\n\tthis.serieService.getDataExcel(\r\n [serie],\r\n areas,\r\n periodStart,\r\n periodEnd\r\n )\r\n .subscribe(res => {\r\n var url = window.URL.createObjectURL(res.data);\r\n var a = document.createElement('a');\r\n document.body.appendChild(a);\r\n a.setAttribute('style', 'display: none');\r\n a.href = url;\r\n a.download = res.filename;\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n a.remove(); // remove the element\r\n }, error => {\r\n console.log('download error:', JSON.stringify(error));\r\n }, () => {\r\n // ('Completed file download.')\r\n });\r\n }\r\n\r\n // ===========================================================================\r\n // on info buttons\r\n // ===========================================================================\r\n\r\n onSeriesSearchInfoClicked() {\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_BUTTON, \"seriesSearchInfo\");\r\n }\r\n\r\n onAreasRegionalAndOtherInfoClicked() {\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_BUTTON, \"areasRegionalAndOtherInfo\");\r\n }\r\n\r\n onAreasRegionalInfoClicked() {\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_BUTTON, \"areasRegionalInfo\");\r\n }\r\n\r\n onAreasOtherInfoClicked() {\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_BUTTON, \"areasOtherInfo\");\r\n }\r\n\r\n onAreasSearchInfoClicked() {\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_BUTTON, \"areasSearchInfo\");\r\n }\r\n\r\n onAreasDependantInfoClicked() {\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_BUTTON, \"areasDependantInfo\");\r\n }\r\n\r\n // ===========================================================================\r\n // reset\r\n // ===========================================================================\r\n\r\n resetEnabled() {\r\n return (\r\n !this.isDataCounting && (\r\n 0!=this.__seriesSelected.length ||\r\n this.__areasSelected.length>1 ||\r\n (null!=this.periods && 0!=this.periods.length)\r\n ));\r\n }\r\n\r\n onResetClicked() {\r\n\r\n if(this.resetEnabled()) {\r\n\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_BUTTON, \"resetPrompt\");\r\n\r\n\r\n if (confirm('Do you want to reset the current selection?')) {\r\n\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_BUTTON, \"resetConfirm\");\r\n\r\n this.buildSeriesTree();\r\n\r\n this.buildAreasTree();\r\n\r\n this.__areas = this.__areasMix;\r\n\r\n this.currentTab=this.TAB_SERIES;\r\n\r\n this.__seriesSelectedTable = [];\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n // ===========================================================================\r\n // table\r\n // ===========================================================================\r\n\r\n onShowTableClicked() {\r\n\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_BUTTON, \"showTable\");\r\n\r\n this.__areasSelectedTable = this.__areasSelected;\r\n\r\n this.__seriesSelectedTable = [];\r\n\r\n this.cdRef.detectChanges();\r\n\r\n this.__seriesSelectedTable = this.__seriesSelected;\r\n\r\n this.periodStartTable = this.periodStart;\r\n this.periodEndTable = this.periodEnd;\r\n this.showTable = true;\r\n this.showTableInitialized = 0;\r\n this.showTableHighlight = false;\r\n\r\n this.cdRef.detectChanges();\r\n\r\n this.observationsTable.nativeElement.focus();\r\n\r\n }\r\n\r\n tableTitle(serie:string) {\r\n let title = '';\r\n for(let goal of this.series[serie].goal) {\r\n title = `${title}Goal ${goal}, `;\r\n }\r\n for(let target of this.series[serie].target) {\r\n title = `${title}Target ${target}, `;\r\n }\r\n for(let indicator of this.series[serie].indicator) {\r\n title = `${title}Indicator ${indicator}, `;\r\n }\r\n title = `${title}${this.series[serie].description}`;\r\n return title;\r\n }\r\n\r\n public beforeTableToggle($event: NgbPanelChangeEvent) {\r\n };\r\n\r\n\r\n // ===========================================================================\r\n // tabs\r\n // ===========================================================================\r\n\r\n private updateDataCount() {\r\n this.isDataCounting = true;\r\n this.serieService.getDataCount(\r\n this.__seriesSelected,\r\n this.__areasSelected,\r\n this.periodStart,\r\n this.periodEnd\r\n ).then(count => {\r\n this.dataCount = count;\r\n this.isDataCounting = false;\r\n this.showTableHighlight = true;\r\n });\r\n }\r\n\r\n private updateAreasAvailable() {\r\n\r\n this.__areasAvailable = undefined;\r\n this.areaService.getAvailable(this.__seriesSelected).then(areas => {\r\n this.__areasAvailable = areas;\r\n\r\n this.buildAreasTree();\r\n this.updateDataCount();\r\n\r\n this.currentSelector.areas = this.AREAS_ALL;\r\n this.regionsIncludeCountries = false;\r\n this.mixIncludeCountries = false;\r\n this.__areas = this.__areasMix;\r\n\r\n });\r\n }\r\n\r\n private updatePeriodsAvailable() {\r\n this.periods = undefined;\r\n this.periodStart = 0;\r\n this.periodStartRange = 0;\r\n this.periodEnd = 0;\r\n this.periodService.getAvailable(this.__seriesSelected, this.__areasSelected).then(periods => {\r\n periods.sort();\r\n this.periods = [];\r\n if (1==periods.length) {\r\n periods.push(periods[0]);\r\n }\r\n if (periods.length>=2) {\r\n let periodMin = Number(periods[0]);\r\n let periodMax = Number(periods[periods.length-1]);\r\n for(let y = periodMin; y<=periodMax; y++) {\r\n this.periods.push(y);\r\n }\r\n if (this.TIME_ALL == this.currentSelector.time) {\r\n this.periodStart = 2000;\r\n } else {\r\n this.periodStart = periodMin;\r\n }\r\n this.periodStartRange = periodMin;\r\n this.periodEnd = periodMax;\r\n }\r\n this.updateDataCount();\r\n });\r\n }\r\n\r\n\r\n // ===========================================================================\r\n // trees\r\n // ===========================================================================\r\n\r\n private buildSeriesTree(filter: string = undefined, collapsed: boolean = true) {\r\n // console.log('Building Series Tree with '+filter);\r\n\r\n this.__series = [];\r\n\r\n for (let goalKey in this.seriesNodes) {\r\n\r\n let goal = {\r\n text: `GOAL ${this.goals[goalKey].code}  ${this.goals[goalKey].title}`,\r\n value: goalKey,\r\n collapsed: collapsed,\r\n searchable: [goalKey.toLowerCase()],\r\n keywords: this._getKeywords(`${this.goals[goalKey].title}`),\r\n checked: false,\r\n children: []\r\n };\r\n\r\n for (let targetKey in this.seriesNodes[goalKey]) {\r\n\r\n // if (targetKey=='2.a' || targetKey=='2.b' || targetKey=='2.c' ) {\r\n // continue;\r\n // }\r\n\r\n let target = {\r\n text: `TARGET ${this.targets[targetKey].code}  ${this.targets[targetKey].title}`,\r\n value: targetKey,\r\n collapsed: collapsed,\r\n searchable: [goalKey.toLowerCase(), targetKey.toLowerCase()],\r\n keywords: this._getKeywords(`${this.goals[goalKey].title} ${this.targets[targetKey].title}`),\r\n checked: false,\r\n children: []\r\n };\r\n\r\n for (let indicatorKey in this.seriesNodes[goalKey][targetKey]) {\r\n\r\n let indicator = {\r\n text: `INDICATOR ${this.indicators[indicatorKey].code}  ${this.indicators[indicatorKey].description}`,\r\n value: indicatorKey,\r\n collapsed: collapsed,\r\n searchable: [goalKey.toLowerCase(), targetKey.toLowerCase(), indicatorKey.toLowerCase()],\r\n keywords: this._getKeywords(`${this.goals[goalKey].title} ${this.targets[targetKey].title} ${this.indicators[indicatorKey].description}`),\r\n checked: false,\r\n children: []\r\n };\r\n\r\n for (let serieKey in this.seriesNodes[goalKey][targetKey][indicatorKey]) {\r\n\r\n let serie = {\r\n text: `${this.series[serieKey].description} ${this.series[serieKey].code}`,\r\n value: serieKey,\r\n collapsed: collapsed,\r\n searchable: [goalKey.toLowerCase(), targetKey.toLowerCase(), indicatorKey.toLowerCase(), serieKey.toLowerCase()],\r\n keywords: this._getKeywords(`${this.goals[goalKey].title} ${this.targets[targetKey].title} ${this.indicators[indicatorKey].description} ${this.series[serieKey].code} ${this.series[serieKey].description}`),\r\n checked: false,\r\n children: []\r\n };\r\n\r\n if (filter == null || this._filterSeriesNode(serie, filter)) {\r\n indicator.children.push(serie);\r\n }\r\n\r\n }\r\n if (filter == null || indicator.children.length>0 || this._filterSeriesNode(indicator, filter)) {\r\n\r\n indicator.children.sort(this._sortByText);\r\n\r\n target.children.push(indicator);\r\n }\r\n }\r\n\r\n if (filter == null || target.children.length>0 || this._filterSeriesNode(target, filter)) {\r\n\r\n target.children.sort(this._sortByVersion.bind(this));\r\n goal.children.push(target);\r\n }\r\n }\r\n\r\n if (filter == null || goal.children.length>0 || this._filterSeriesNode(goal, filter)) {\r\n\r\n goal.children.sort(this._sortByVersion.bind(this));\r\n\r\n this.__series.push(new TreeviewItem(goal));\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n private _filterSeriesNode (node: any, s: string) {\r\n\r\n if (0==s.trim().length) {\r\n return false;\r\n }\r\n\r\n if (node.searchable.includes(s)) {\r\n return true;\r\n }\r\n\r\n if (this._keywordIsGoal(s) || this._keywordIsTarget(s) || this._keywordIsIndicator(s)) {\r\n return false;\r\n }\r\n\r\n if (node.keywords.indexOf(s) >= 0) {\r\n return true;\r\n }\r\n }\r\n\r\n\r\n private __buildCountriesTree(nodes, already: string []) {\r\n for(let node of nodes) {\r\n if ('Country'==node.type) {\r\n if (!already.includes(node.geoAreaCode)) {\r\n let __area = {\r\n text: node.geoAreaName,\r\n value: node.geoAreaCode,\r\n collapsed: true,\r\n checked: true,\r\n children: []\r\n };\r\n this.__areasCountries.push(new TreeviewItem(__area));\r\n already.push(node.geoAreaCode);\r\n }\r\n }\r\n if (node.children) {\r\n this.__buildCountriesTree(node.children, already);\r\n }\r\n }\r\n }\r\n\r\n private __buildRegionsTree(nodes, tree, depth=0) {\r\n for(let node of nodes) {\r\n\r\n if (0==depth) {\r\n\r\n if ('World'==node.geoAreaName) {\r\n if (node.children) {\r\n this.__buildRegionsTree(node.children, tree, depth+1);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n if ('Region'==node.type || 'Country'==node.type) {\r\n\r\n let disabled = (\r\n null!=this.__areasAvailable &&\r\n !this.__areasAvailable.includes(node.geoAreaCode)\r\n );\r\n\r\n let __area = {\r\n text: node.geoAreaName,\r\n value: disabled?0:node.geoAreaCode,\r\n collapsed: true,\r\n children: [],\r\n checked: true, //!disabled,\r\n };\r\n\r\n if (null!=node.children) {\r\n this.__buildRegionsTree(node.children, __area.children, depth+1);\r\n }\r\n\r\n tree.push(new TreeviewItem(__area));\r\n }\r\n\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n private __buildGroupingsTree(nodes, tree, depth=0) {\r\n for(let node of nodes) {\r\n\r\n if (0==depth && 'World'==node.geoAreaName) {\r\n continue;\r\n }\r\n\r\n if ('Region'==node.type || 'Country'==node.type) {\r\n\r\n let disabled = (\r\n null!=this.__areasAvailable &&\r\n !this.__areasAvailable.includes(node.geoAreaCode)\r\n );\r\n\r\n let __area = {\r\n text: node.geoAreaName,\r\n value: disabled?0:node.geoAreaCode,\r\n collapsed: true,\r\n children: [],\r\n checked: true, //!disabled,\r\n };\r\n\r\n if (null!=node.children) {\r\n this.__buildGroupingsTree(node.children,__area.children, depth+1);\r\n }\r\n\r\n tree.push(new TreeviewItem(__area));\r\n }\r\n\r\n }\r\n }\r\n\r\n private __buildMixTree(nodes, tree) {\r\n for(let node of nodes) {\r\n\r\n if ('Region'==node.type || 'Country'==node.type) {\r\n\r\n let disabled = (\r\n null!=this.__areasAvailable &&\r\n !this.__areasAvailable.includes(node.geoAreaCode)\r\n );\r\n\r\n let __area = {\r\n text: node.geoAreaName,\r\n value: disabled?0:node.geoAreaCode,\r\n collapsed: true,\r\n children: [],\r\n checked: true, //!disabled,\r\n };\r\n\r\n if (null!=node.children) {\r\n this.__buildMixTree(node.children,__area.children);\r\n }\r\n\r\n tree.push(new TreeviewItem(__area));\r\n }\r\n\r\n }\r\n }\r\n\r\n private buildAreasTree () {\r\n\r\n this.__areasCountries = [];\r\n this.__buildCountriesTree(this.areasNodes, []);\r\n this.__areasCountries.sort(this._sortByText);\r\n this.uiLoadingProgressStep();\r\n\r\n this.__areasRegions = [];\r\n this.__buildRegionsTree(this.areasNodes, this.__areasRegions);\r\n this.uiLoadingProgressStep();\r\n\r\n this.__areasGroupings = [];\r\n this.__buildGroupingsTree(this.areasNodes, this.__areasGroupings);\r\n this.uiLoadingProgressStep();\r\n\r\n this.__areasMix = [];\r\n this.__buildMixTree(this.areasNodes, this.__areasMix);\r\n this.uiLoadingProgressStep();\r\n\r\n return;\r\n\r\n // let groupings = [];\r\n // let mix = [];\r\n // let mixOrdered = [];\r\n //\r\n // for(let areaRoot of this.areasNodes) {\r\n //\r\n // switch (areaRoot.geoAreaName) {\r\n //\r\n // case 'World':\r\n //\r\n // this.buildRegionsTree(this._loadRegionsChildren(areaRoot));\r\n //\r\n // this.buildCountriesTree(this._loadCountriesChildren(areaRoot));\r\n //\r\n // if (null != this.__areasAvailable && this.__areasAvailable.includes(areaRoot.geoAreaCode)) {\r\n // mix[areaRoot.geoAreaCode] = this._loadMixChildren(areaRoot);\r\n // mixOrdered.push(areaRoot.geoAreaCode);\r\n // }\r\n //\r\n // break;\r\n //\r\n // default:\r\n //\r\n // if (null != this.__areasAvailable && this.__areasAvailable.includes(areaRoot.geoAreaCode)) {\r\n // mix[areaRoot.geoAreaCode] = [];\r\n // mixOrdered.push(areaRoot.geoAreaCode);\r\n // groupings.push (areaRoot.geoAreaCode);\r\n // }\r\n // }\r\n //\r\n // }\r\n //\r\n // this.buildMixTree(mix, mixOrdered);\r\n // this.buildGroupingsTree(groupings);\r\n }\r\n\r\n // private _loadMixChildren(area: any, indent=1) {\r\n // let ind = ''\r\n // let nodes = {};\r\n //\r\n // if (null != this.__areasAvailable && this.__areasAvailable.includes(area.geoAreaCode)) {\r\n // if ('children' in area) {\r\n // if (null != area.children) {\r\n // for (let child of area['children']) {\r\n // let nodeKey = child.geoAreaCode;\r\n // if ('Region'==child.type) {\r\n // let children = this._loadMixChildren(child, indent+1);\r\n // nodes [nodeKey] = children;\r\n // }\r\n // }\r\n // }\r\n // }\r\n // }\r\n // return nodes;\r\n // }\r\n\r\n // private _loadCountriesChildren(area: any) {\r\n // let nodes = [];\r\n //\r\n // if (null != this.__areasAvailable && this.__areasAvailable.includes(area.geoAreaCode)) {\r\n // // if (true) {\r\n // if ('Country'==area.type) {\r\n // nodes.push (area.geoAreaCode);\r\n // }\r\n // }\r\n // if ('children' in area) {\r\n // if (null != area.children) {\r\n // for (let child of area['children']) {\r\n // nodes = nodes.concat(this._loadCountriesChildren(child));\r\n // }\r\n // }\r\n // }\r\n //\r\n // return nodes;\r\n // }\r\n\r\n // private _loadRegionsChildren(area: any) {\r\n //\r\n // let nodes = [];\r\n //\r\n // if (null != this.__areasAvailable && this.__areasAvailable.includes(area.geoAreaCode)) {\r\n //\r\n // this.areas[area.geoAreaCode] = area.geoAreaName;\r\n // if ('children' in area) {\r\n // if (null != area.children) {\r\n // for (let child of area['children']) {\r\n // let nodeKey = child.geoAreaCode;\r\n // if ('Region'==child.type) {\r\n // let children = this._loadRegionsChildren(child);\r\n // nodes [nodeKey] = children;\r\n // }\r\n // }\r\n // }\r\n // }\r\n // }\r\n //\r\n // return nodes;\r\n // }\r\n\r\n // private buildMixTreeChildren (node, filter: string = undefined) {\r\n //\r\n // let children = [];\r\n //\r\n // for(let ak in node) {\r\n //\r\n // let a = {\r\n // text: `${this.areas[ak]}`,\r\n // value: ak,\r\n // collapsed: true,\r\n // children: []\r\n // };\r\n //\r\n // if(Object.keys(node[ak]).length>0) {\r\n // a.children = this.buildMixTreeChildren(node[ak], filter);\r\n // }\r\n // children.push (a);\r\n // }\r\n //\r\n // return children;\r\n // }\r\n\r\n // private buildMixTree(nodes: Object[], nodesOrdered, filter: string = undefined) {\r\n // // console.log('Building Mix Tree with '+filter);\r\n //\r\n // this.__areasMix = [];\r\n //\r\n // if (nodes.length>1)\r\n // for (let areaKey of nodesOrdered) {\r\n //\r\n // let __area = {\r\n // text: `${this.areas[areaKey]}`,\r\n // value: areaKey,\r\n // collapsed: true,\r\n // children: []\r\n // };\r\n //\r\n // if(Object.keys(nodes[areaKey]).length>0) {\r\n // __area.children = this.buildMixTreeChildren(nodes[areaKey], filter);\r\n // }\r\n //\r\n // this.__areasMix.push(new TreeviewItem(__area));\r\n // }\r\n //\r\n // this.uiLoadingProgressStep();\r\n // }\r\n\r\n // private buildGroupingsTree(nodes: Object[], filter: string = undefined) {\r\n // // console.log('Building Groupings Tree with '+filter);\r\n //\r\n // this.__areasGroupings = [];\r\n //\r\n // for (let areaKey of nodes) {\r\n //\r\n // let __area = {\r\n // text: `${this.areas[Number(areaKey)]}`,\r\n // value: areaKey,\r\n // collapsed: true,\r\n // children: []\r\n // };\r\n //\r\n // this.__areasGroupings.push(new TreeviewItem(__area));\r\n //\r\n // }\r\n // this.uiLoadingProgressStep();\r\n // }\r\n\r\n // private buildCountriesTree(nodes: Object[], filter: string = undefined) {\r\n //\r\n // this.__areasCountries = [];\r\n //\r\n // for (let areaKey of nodes) {\r\n //\r\n // let __area = {\r\n // text: `${this.areas[Number(areaKey)]}`,\r\n // value: areaKey,\r\n // collapsed: true,\r\n // children: []\r\n // };\r\n //\r\n // this.__areasCountries.push(new TreeviewItem(__area));\r\n // }\r\n // this.__areasCountries.sort(this._sortByText);\r\n //\r\n // this.uiLoadingProgressStep();\r\n // }\r\n\r\n // private buildRegionsTree(nodes: Object[], filter: string = undefined) {\r\n // // console.log('Building Series Tree with '+filter);\r\n //\r\n // this.__areasRegions = [];\r\n //\r\n // for (let areaKey in nodes) {\r\n //\r\n // let __area = {\r\n // text: `${this.areas[areaKey]}`,\r\n // value: areaKey,\r\n // collapsed: true,\r\n // searchable: [`${this.areas[areaKey]}`],\r\n // keywords: `${this.areas[areaKey]}`,\r\n // children: []\r\n // };\r\n //\r\n // // if(Object.keys(nodes[areaKey]).length>0) {\r\n // // this.buildRegionsTreeChildren(__area, nodes[areaKey], filter);\r\n // // }\r\n // if(Object.keys(nodes[areaKey]).length>0) {\r\n // __area.children = this.buildRegionsTreeChildren(nodes[areaKey], filter);\r\n // }\r\n //\r\n //\r\n // this.__areasRegions.push(new TreeviewItem(__area));\r\n //\r\n // }\r\n //\r\n // this.uiLoadingProgressStep();\r\n // }\r\n\r\n // private buildRegionsTreeChildren (node, filter: string = undefined) {\r\n //\r\n // let children = [];\r\n //\r\n // for(let ak in node) {\r\n //\r\n // let a = {\r\n // text: `${this.areas[ak]}`,\r\n // value: ak,\r\n // collapsed: true,\r\n // children: []\r\n // };\r\n //\r\n // if(Object.keys(node[ak]).length>0) {\r\n // a.children = this.buildRegionsTreeChildren(node[ak], filter);\r\n // }\r\n // children.push (a);\r\n // }\r\n //\r\n // return children;\r\n // }\r\n\r\n\r\n\r\n private buildAreasSearchTree(nodes, s:string = undefined) {\r\n\r\n for (let areaNode of nodes) {\r\n\r\n if (areaNode.geoAreaName.toLowerCase().indexOf(s) >= 0) {\r\n this.__areasSearchAnyMatch = true;\r\n\r\n if (null != this.__areasAvailable && this.__areasAvailable.includes(areaNode.geoAreaCode)) {\r\n\r\n let already = false;\r\n for (let a of this.__areasSearch) {\r\n if (a.value == areaNode.geoAreaCode) {\r\n already = true;\r\n }\r\n if (already) {\r\n break;\r\n }\r\n }\r\n if (!already) {\r\n let area = {\r\n text: `${areaNode.geoAreaName}`,\r\n value: areaNode.geoAreaCode,\r\n collapsed: false,\r\n children: []\r\n };\r\n this.__areasSearch.push(new TreeviewItem(area));\r\n }\r\n\r\n }\r\n }\r\n\r\n if (null!=areaNode.children && areaNode.children.length>0) {\r\n this.buildAreasSearchTree(areaNode.children, s);\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n // private buildAreasSearchTree(s:string = undefined) {\r\n //\r\n // this.__areasSearch = [];\r\n //\r\n // for (let ak in this.areas) {\r\n //\r\n // let areaName = String(this.areas[ak]);\r\n //\r\n // if (0==s.trim().length) {\r\n // continue;\r\n // }\r\n //\r\n // if (null != this.__areasAvailable) {\r\n // let found = false;\r\n // for (let a of this.__areasAvailable) {\r\n // if (a == ak) {\r\n // found = true;\r\n // if (areaName.toLowerCase().indexOf(s) >= 0) {\r\n // let area = {\r\n // text: `${areaName}`,\r\n // value: ak,\r\n // collapsed: false,\r\n // children: []\r\n // };\r\n // this.__areasSearch.push(new TreeviewItem(area));\r\n // }\r\n // }\r\n // if (found) {\r\n // break;\r\n // }\r\n // }\r\n // }\r\n //\r\n // // .indludes not working ?!\r\n // // if (null != this.__areasAvailable && this.__areasAvailable.includes(ak)) {\r\n // // if (areaName.toLowerCase().indexOf(s) >= 0) {\r\n // // let area = {\r\n // // text: `${areaName}`,\r\n // // value: ak,\r\n // // collapsed: false,\r\n // // children: []\r\n // // };\r\n // // this.__areasSearch.push(new TreeviewItem(area));\r\n // // }\r\n // // }\r\n //\r\n // }\r\n // }\r\n\r\n onTableMultiInitialized() {\r\n this.showTableInitialized++;\r\n }\r\n\r\n\r\n // ===========================================================================\r\n // helpers\r\n // ===========================================================================\r\n\r\n private _getKeywords(s: string) {\r\n\r\n let tokens = s.split(' ');\r\n\r\n let stopwords = [\r\n 'about', 'after', 'all', 'also', 'am', 'an', 'and', 'another', 'any', 'are', 'as', 'at', 'be',\r\n 'because', 'been', 'before', 'being', 'between', 'both', 'but', 'by', 'came', 'can',\r\n 'come', 'could', 'did', 'do', 'each', 'for', 'from', 'get', 'got', 'has', 'had',\r\n 'he', 'have', 'her', 'here', 'him', 'himself', 'his', 'how', 'if', 'in', 'into',\r\n 'is', 'it', 'like', 'make', 'many', 'me', 'might', 'more', 'most', 'much', 'must',\r\n 'my', 'never', 'now', 'of', 'on', 'only', 'or', 'other', 'our', 'out', 'over',\r\n 'said', 'same', 'see', 'should', 'since', 'some', 'still', 'such', 'take', 'than',\r\n 'that', 'the', 'their', 'them', 'then', 'there', 'these', 'they', 'this', 'those',\r\n 'through', 'to', 'too', 'under', 'up', 'very', 'was', 'way', 'we', 'well', 'were',\r\n 'what', 'where', 'which', 'while', 'who', 'with', 'would', 'you', 'your', 'a', 'i'];\r\n\r\n if (typeof tokens !== 'object' || typeof stopwords != 'object') {\r\n throw new Error('expected Arrays try: removeStopwords(Array[, Array])')\r\n }\r\n\r\n let words = tokens.filter(function(value) {\r\n return stopwords.indexOf(value.toLowerCase()) === -1;\r\n });\r\n return words.filter(function(item, pos) {\r\n return words.indexOf(item) == pos;\r\n }).join(' ').toLowerCase();\r\n }\r\n\r\n private _sortByName (a:any ,b:any) : number {\r\n if (a.name < b.name)\r\n return -1;\r\n if ( a.name > b.name)\r\n return 1;\r\n return 0;\r\n }\r\n\r\n private _sortById (a:any ,b:any) : number {\r\n if (a.id < b.id)\r\n return -1;\r\n if ( a.id > b.id)\r\n return 1;\r\n return 0;\r\n }\r\n\r\n private _sortByText (a:any ,b:any) : number {\r\n if (a.text < b.text)\r\n return -1;\r\n if ( a.text > b.text)\r\n return 1;\r\n return 0;\r\n }\r\n\r\n private _sortByVersion (a:any ,b:any) : number {\r\n return this.cmpVersions(a.value, b.value);\r\n }\r\n\r\n private cmpVersions (a, b) {\r\n\r\n var letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',\r\n 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',];\r\n\r\n var i, diff;\r\n var regExStrip0 = /(\\.0+)+$/;\r\n var segmentsA = a.replace(regExStrip0, '').split('.');\r\n var segmentsB = b.replace(regExStrip0, '').split('.');\r\n\r\n var segmentsAhasLetter = segmentsA.filter(chunk => letters.includes(chunk)).length>0;\r\n var segmentsBhasLetter = segmentsB.filter(chunk => letters.includes(chunk)).length>0;\r\n\r\n if (segmentsAhasLetter && !segmentsBhasLetter) {\r\n return 1;\r\n }\r\n if (!segmentsAhasLetter && segmentsBhasLetter) {\r\n return -1;\r\n }\r\n if (segmentsAhasLetter && segmentsBhasLetter) {\r\n var l = Math.min(segmentsA.length, segmentsB.length);\r\n for (i = 0; i < l; i++) {\r\n\r\n let aIsLetter = letters.includes(segmentsA[i]);\r\n let bIsLetter = letters.includes(segmentsB[i]);\r\n\r\n if (aIsLetter && !bIsLetter) {\r\n return 1;\r\n }\r\n if (!aIsLetter && bIsLetter) {\r\n return -1;\r\n }\r\n if (aIsLetter && bIsLetter) {\r\n return segmentsA[i] > segmentsB[i];\r\n }\r\n if (!aIsLetter && !bIsLetter) {\r\n diff = parseInt(segmentsA[i], 10) - parseInt(segmentsB[i], 10);\r\n if (diff) {\r\n return diff;\r\n }\r\n }\r\n\r\n }\r\n }\r\n if (!segmentsAhasLetter && !segmentsBhasLetter) {\r\n var l = Math.min(segmentsA.length, segmentsB.length);\r\n for (i = 0; i < l; i++) {\r\n diff = parseInt(segmentsA[i], 10) - parseInt(segmentsB[i], 10);\r\n if (diff) {\r\n return diff;\r\n }\r\n }\r\n }\r\n return segmentsA.length - segmentsB.length;\r\n }\r\n\r\n private _keywordIsGoal(s) {\r\n return /[1-9]+/.test(s);\r\n }\r\n\r\n private _keywordIsTarget(s) {\r\n return /[1-9]+.[A-Za-z1-9]+/.test(s);\r\n }\r\n\r\n private _keywordIsIndicator(s) {\r\n return /[1-9]+.[A-Za-z1-9]+.[1-9]+/.test(s);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Headers, Http } from '@angular/http';\r\n\r\nimport 'rxjs/add/operator/toPromise';\r\n\r\nimport { environment } from '../../../environments/environment';\r\nimport { Area } from './area.model';\r\nimport { AreaNode } from './areaNode.model';\r\n\r\n@Injectable()\r\nexport class AreaService {\r\n\r\n constructor(private http: Http) { }\r\n\r\n private getAllUrl(): string {\r\n return `${environment.apiUrl}/GeoArea/List`;\r\n }\r\n\r\n private getTreeUrl(): string {\r\n return `${environment.apiUrl}/GeoArea/Tree`;\r\n }\r\n\r\n private getUrl(serie: string): string {\r\n return `${environment.apiUrl}/Series/${serie}/GeoAreas`;\r\n }\r\n\r\n private getAvailableUrl(series: string[]): string {\r\n let qSeries='';\r\n for (let serie of series) {\r\n if (''!=qSeries) {\r\n qSeries = `${qSeries}&`;\r\n }\r\n qSeries = `${qSeries}seriesCodes=${serie}`;\r\n }\r\n let url = `${environment.apiUrl}/Series/GeoAreaCode?${qSeries}`;\r\n return url;\r\n }\r\n\r\n getAll(): Promise {\r\n return this.http.get(this.getAllUrl())\r\n .toPromise()\r\n .then(response => {\r\n return response.json() as Area[];\r\n })\r\n .catch(this.handleError);\r\n }\r\n\r\n getTree(): Promise {\r\n return this.http.get(this.getTreeUrl())\r\n .toPromise()\r\n .then(response => {\r\n return response.json() as AreaNode[];\r\n })\r\n .catch(this.handleError);\r\n }\r\n\r\n\r\n getSeries(serie: string): Promise {\r\n return this.http.get(this.getUrl(serie))\r\n .toPromise()\r\n .then(response => {\r\n return response.json() as Area[];\r\n })\r\n .catch(this.handleError);\r\n }\r\n\r\n getAvailable(series: string[]): Promise {\r\n let url = this.getAvailableUrl(series);\r\n let chunks = url.split('?');\r\n let headers = new Headers();\r\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\r\n return this.http.post(\r\n chunks[0],\r\n chunks[1], {\r\n headers: headers\r\n })\r\n .toPromise()\r\n .then(response => {\r\n return response.json() as string[];\r\n })\r\n .catch(this.handleError);\r\n }\r\n\r\n private handleError(error: any): Promise {\r\n console.error('An error occurred', error); // for demo purposes only\r\n return Promise.reject(error.message || error);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Headers, Http, ResponseContentType } from '@angular/http';\r\n\r\nimport 'rxjs/add/operator/toPromise';\r\n\r\nimport { environment } from '../../../environments/environment';\r\nimport { ObservationPage } from './../observation/observationPage.model';\r\nimport { ObservationPivotPage } from './../observation/observationPivotPage.model';\r\n// import { Area } from './../area/area.model';\r\nimport { AreaNode } from './../area/areaNode.model';\r\nimport { PeriodRange } from './../period/periodRange.model';\r\nimport { Goal } from './goal.model';\r\n\r\n@Injectable()\r\nexport class GoalService {\r\n\r\n constructor(private http: Http) { }\r\n\r\n private urlList(): string {\r\n return `${environment.apiUrl}/Goal/List`;\r\n }\r\n\r\n private urlData(\r\n goals: Goal[],\r\n page: number,\r\n size: number,\r\n areas: AreaNode[],\r\n periodRange: PeriodRange,\r\n dimensions: any = undefined\r\n ): string {\r\n let qPage = `page=${page}&pageSize=${size}`;\r\n let qArea = '';\r\n if (areas) {\r\n for (let i = 0; i < areas.length; i++) {\r\n qArea = `${qArea}&areaCode=${areas[i].geoAreaCode}`;\r\n }\r\n }\r\n let qPeriod = (periodRange) ? `timePeriodStart=${periodRange.start.year}&timePeriodEnd=${periodRange.end.year}` : '';\r\n let qGoal = '';\r\n if (goals) {\r\n for (let i = 0; i < goals.length; i++) {\r\n qGoal = `${qGoal}&goal=${goals[i].code}`;\r\n }\r\n }\r\n let qDimension = '';\r\n if (dimensions) {\r\n qDimension = `dimensions=${JSON.stringify(dimensions)}`;\r\n }\r\n return `${environment.apiUrl}/Goal/Data?${qGoal}&${qArea}&${qPeriod}&${qPage}&${qDimension}`;\r\n }\r\n\r\n private urlPivotData(goals: Goal[], page: number, size: number, areas: AreaNode[]): string {\r\n let qPage = `page=${page}&pageSize=${size}`;\r\n let qArea = '';\r\n if (areas) {\r\n for (let i = 0; i < areas.length; i++) {\r\n qArea = `${qArea}&areaCode=${areas[i].geoAreaCode}`;\r\n }\r\n }\r\n let qGoal = '';\r\n if (goals) {\r\n for (let i = 0; i < goals.length; i++) {\r\n qGoal = `${qGoal}&goal=${goals[i].code}`;\r\n }\r\n }\r\n return `${environment.apiUrl}/Goal/PivotData?${qGoal}&${qArea}&${qPage}`;\r\n }\r\n\r\n //private urlDataCSV(goals: string[], areas: string[], periodStart: number, periodEnd: number): string {\r\n // let qGoal = '';\r\n // for (let goal of goals) {\r\n // if (''!=qGoal) qGoal+='&';\r\n // qGoal += `goal=${goal}`;\r\n // }\r\n // let qArea = '';\r\n // for (let area of areas) {\r\n // if (''!=qArea) qArea+='&';\r\n // qArea += `areaCodes=${area}`;\r\n // }\r\n // let qPeriod = `timePeriodStart=${periodStart}&timePeriodEnd=${periodEnd}`;\r\n // return `${environment.apiUrl}/Goal/DataCSV?${qGoal}&${qArea}&${qPeriod}`\r\n //}\r\n\r\n private urlDataExcel(goals: string[], areas: string[], periodStart: number, periodEnd: number): string {\r\n let qGoal = '';\r\n for (let goal of goals) {\r\n if ('' != qGoal) qGoal += '&';\r\n qGoal += `goal=${goal}`;\r\n }\r\n let qArea = '';\r\n for (let area of areas) {\r\n if ('' != qArea) qArea += '&';\r\n qArea += `areaCodes=${area}`;\r\n }\r\n let qPeriod = `timePeriodStart=${periodStart}&timePeriodEnd=${periodEnd}`;\r\n return `${environment.apiUrl}/Goal/DataExcel?${qGoal}&${qArea}&${qPeriod}`\r\n }\r\n\r\n getList(): Promise {\r\n return this.http.get(this.urlList())\r\n .toPromise()\r\n .then(response => { return response.json() as Goal[]; })\r\n .catch(this.handleError);\r\n }\r\n\r\n getData(\r\n goals: Goal[],\r\n page: number,\r\n size: number,\r\n areas: AreaNode[],\r\n periodRange: PeriodRange,\r\n dimensions: any = undefined\r\n ): Promise {\r\n return this.http.get(this.urlData(goals, page, size, areas, periodRange, dimensions))\r\n .toPromise()\r\n .then(response => { return response.json() as ObservationPage; })\r\n .catch(this.handleError);\r\n }\r\n\r\n getPivotData(goals: Goal[], page: number, size: number, areas: AreaNode[]): Promise {\r\n return this.http.get(this.urlPivotData(goals, page, size, areas))\r\n .toPromise()\r\n .then(response => { return response.json() as ObservationPivotPage; })\r\n .catch(this.handleError);\r\n }\r\n\r\n //getDataCSV(\r\n // goals: string[],\r\n // areas: string[],\r\n // periodStart: number,\r\n // periodEnd: number\r\n //) {\r\n // let url = this.urlDataCSV(goals, areas, periodStart, periodEnd);\r\n // let chunks = url.split('?');\r\n // let headers = new Headers();\r\n // headers.append('Content-Type', 'application/x-www-form-urlencoded');\r\n // return this.http\r\n // .post(chunks[0], chunks[1], {\r\n // headers: headers,\r\n // responseType: ResponseContentType.Blob\r\n // })\r\n // .map(res => {\r\n // return {\r\n // filename: 'data.csv',\r\n // data: res.blob()\r\n // };\r\n // });\r\n //}\r\n\r\n getDataExcel(\r\n goals: string[],\r\n areas: string[],\r\n periodStart: number,\r\n periodEnd: number\r\n ) {\r\n let url = this.urlDataExcel(goals, areas, periodStart, periodEnd);\r\n let chunks = url.split('?');\r\n let headers = new Headers();\r\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\r\n return this.http\r\n .post(chunks[0], chunks[1], {\r\n headers: headers,\r\n responseType: ResponseContentType.Blob\r\n })\r\n .map(res => {\r\n return {\r\n filename: 'data.xlsx',\r\n data: res.blob()\r\n };\r\n });\r\n }\r\n\r\n private handleError(error: any): Promise {\r\n console.error('An error occurred', error); // for demo purposes only\r\n return Promise.reject(error.message || error);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Headers, Http } from '@angular/http';\r\n\r\nimport 'rxjs/add/operator/toPromise';\r\n\r\nimport { environment } from '../../../environments/environment';\r\nimport { ObservationPage } from './../observation/observationPage.model';\r\nimport { ObservationPivotPage } from './../observation/observationPivotPage.model';\r\n// import { Area } from './../area/area.model';\r\nimport { AreaNode } from './../area/areaNode.model';\r\nimport { PeriodRange } from './../period/periodRange.model';\r\nimport { Indicator } from './indicator.model';\r\n\r\n@Injectable()\r\nexport class IndicatorService {\r\n\r\n constructor(private http: Http) { }\r\n\r\n private urlList(): string {\r\n return `${environment.apiUrl}/Indicator/List`;\r\n }\r\n\r\n private urlData(\r\n indicators: Indicator[],\r\n page: number,\r\n size: number,\r\n areas: AreaNode[],\r\n periodRange: PeriodRange,\r\n dimensions: any = undefined\r\n ): string {\r\n let qPage = `page=${page}&pageSize=${size}`;\r\n let qArea = '';\r\n for (let i = 0; i < areas.length; i++) {\r\n qArea = `${qArea}&areaCode=${areas[i].geoAreaCode}`;\r\n }\r\n let qPeriod = (periodRange) ? `timePeriodStart=${periodRange.start.year}&timePeriodEnd=${periodRange.end.year}` : '';\r\n let qIndicator = '';\r\n for (let i = 0; i < indicators.length; i++) {\r\n qIndicator = `${qIndicator}&indicator=${indicators[i].code}`;\r\n }\r\n let qDimension = '';\r\n if (dimensions) {\r\n qDimension = `dimensions=${JSON.stringify(dimensions)}`;\r\n }\r\n return `${environment.apiUrl}/Indicator/Data?${qIndicator}&${qArea}&${qPeriod}&${qPage}&${qDimension}`;\r\n }\r\n\r\n private urlPivotData(indicators: Indicator[], page: number, size: number, areas: AreaNode[]): string {\r\n let qPage = `page=${page}&pageSize=${size}`;\r\n let qArea = '';\r\n for (let i = 0; i < areas.length; i++) {\r\n qArea = `${qArea}&areaCode=${areas[i].geoAreaCode}`;\r\n }\r\n let qIndicator = '';\r\n for (let i = 0; i < indicators.length; i++) {\r\n qIndicator = `${qIndicator}&indicator=${indicators[i].code}`;\r\n }\r\n return `${environment.apiUrl}/Indicator/PivotData?${qIndicator}&${qArea}&${qPage}`;\r\n }\r\n\r\n private urlByTarget(target: string): string {\r\n return `${environment.apiUrl}/Target/${target}/Indicator/List`;\r\n }\r\n\r\n getList(): Promise {\r\n return this.http.get(this.urlList())\r\n .toPromise()\r\n .then(response => { return response.json() as Indicator[]; })\r\n .catch(this.handleError);\r\n }\r\n\r\n getData(\r\n indicators: Indicator[],\r\n page: number,\r\n size: number,\r\n areas: AreaNode[],\r\n periodRange,\r\n dimensions: any = undefined\r\n ): Promise {\r\n return this.http.get(this.urlData(indicators, page, size, areas, periodRange, dimensions))\r\n .toPromise()\r\n .then(response => { return response.json() as ObservationPage; })\r\n .catch(this.handleError);\r\n }\r\n\r\n getPivotData(indicators: Indicator[], page: number, size: number, areas: AreaNode[]): Promise {\r\n return this.http.get(this.urlPivotData(indicators, page, size, areas))\r\n .toPromise()\r\n .then(response => { return response.json() as ObservationPivotPage; })\r\n .catch(this.handleError);\r\n }\r\n\r\n getByTarget(target: string): Promise {\r\n return this.http.get(this.urlByTarget(target))\r\n .toPromise()\r\n .then(response => {\r\n return response.json()[0].Indicators as Indicator[];\r\n })\r\n .catch(this.handleError);\r\n }\r\n\r\n private handleError(error: any): Promise {\r\n console.error('An error occurred', error); // for demo purposes only\r\n return Promise.reject(error.message || error);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Headers, Http } from '@angular/http';\r\n\r\nimport 'rxjs/add/operator/toPromise';\r\n\r\nimport { environment } from '../../../environments/environment';\r\nimport { ObservationPage } from './observationPage.model';\r\nimport { Observation } from './observation.model';\r\n\r\n@Injectable()\r\nexport class ObservationService {\r\n\r\n constructor(private http: Http) { }\r\n\r\n private getGlobalUrl(page: number, pageSize: number) {\r\n return `https://unstats.un.org/SDGAPI/v1/sdg/Goal/Data?page=${page}&pageSize=${pageSize}`;\r\n }\r\n\r\n private getUrl(serie: string, area: string): string {\r\n return `${environment.apiUrl}/Series/${serie}/Data?areaCode=${area}`;\r\n }\r\n\r\n getGlobalObservations(page: number, pageSize: number): Promise {\r\n return this.http.get(this.getGlobalUrl(page, pageSize))\r\n .toPromise()\r\n .then(response => {\r\n return response.json() as ObservationPage;\r\n })\r\n .catch(this.handleError);\r\n }\r\n\r\n getObservations(serie: string, area: string): Promise {\r\n return this.http.get(this.getUrl(serie, area))\r\n .toPromise()\r\n .then(response => {\r\n return response.json() as Observation[];\r\n })\r\n .catch(this.handleError);\r\n }\r\n\r\n private handleError(error: any): Promise {\r\n console.error('An error occurred', error); // for demo purposes only\r\n return Promise.reject(error.message || error);\r\n }\r\n\r\n}\r\n","import { ObservationPivot } from './observationPivot.model';\r\n\r\nexport class ObservationPivotPage {\r\n pageNumber: number;\r\n size: number;\r\n totalElements: number;\r\n totalPages: number;\r\n data: ObservationPivot[];\r\n dimensions: any[];\r\n attributes: any[];\r\n}\r\n","export class Period {\r\n constructor(year: number) { this.year = year; }\r\n year: number;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Headers, Http } from '@angular/http';\r\n\r\nimport * as configFile from \"./../../config.json\";\r\n\r\nimport { environment } from '../../../environments/environment';\r\nimport { PeriodRange } from './periodRange.model';\r\n\r\n@Injectable()\r\nexport class PeriodService {\r\n\r\n constructor(private http: Http) { }\r\n\r\n private getAvailableUrl(series: string[], areas: string[]): string {\r\n let qSeries='';\r\n for (let serie of series) {\r\n if (''!=qSeries) {\r\n qSeries = `${qSeries}&`;\r\n }\r\n qSeries = `${qSeries}seriesCodes=${serie}`;\r\n }\r\n let qAreas='';\r\n for (let area of areas) {\r\n if (''!=qAreas) {\r\n qAreas = `${qAreas}&`;\r\n }\r\n qAreas = `${qAreas}areaCodes=${area}`;\r\n }\r\n return `${environment.apiUrl}/Series/TimePeriods?${qSeries}&${qAreas}`;\r\n }\r\n\r\n getRange(): PeriodRange {\r\n\r\n let config: any = configFile;\r\n\r\n let min = config.periods.start;\r\n let max = (new Date()).getFullYear();\r\n\r\n let r = new PeriodRange(min, max);\r\n return r;\r\n }\r\n\r\n getAvailable(series: string[], areas: string[]): Promise {\r\n let url = this.getAvailableUrl(series, areas);\r\n let chunks = url.split('?');\r\n let headers = new Headers();\r\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\r\n return this.http.post(\r\n chunks[0],\r\n chunks[1], {\r\n headers: headers\r\n })\r\n .toPromise()\r\n .then(response => {\r\n return response.json() as string[];\r\n })\r\n .catch(this.handleError);\r\n }\r\n\r\n private handleError(error: any): Promise {\r\n console.error('An error occurred', error); // for demo purposes only\r\n return Promise.reject(error.message || error);\r\n }\r\n\r\n}\r\n","import { Period } from './period.model';\r\n\r\nexport class PeriodRange {\r\n constructor(start: number, end: number) {\r\n this.min = new Period(start);\r\n this.max = new Period(end);\r\n this.start = new Period(start);\r\n this.end = new Period(end);\r\n }\r\n start: Period;\r\n end: Period;\r\n\r\n min: Period;\r\n max: Period;\r\n\r\n getRange() {\r\n let r = [];\r\n for (let y = this.start.year; y <= this.end.year; y++) {\r\n r.push('' + y);\r\n }\r\n return r;\r\n }\r\n\r\n getEdges() {\r\n let r = [];\r\n r.push('' + this.start.year);\r\n r.push('' + this.end.year);\r\n return r;\r\n }\r\n\r\n isFullRange() {\r\n return (this.start.year == this.min.year) && (this.end.year == this.max.year);\r\n }\r\n\r\n getDuration() {\r\n return (this.end.year - this.start.year);\r\n }\r\n\r\n reset() {\r\n this.start.year = this.min.year;\r\n this.end.year = this.max.year;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Headers, Http, ResponseContentType } from '@angular/http';\r\nimport 'rxjs/add/operator/map';\r\n// import { HttpHeaders } from '@angular/common/http';\r\n\r\nimport 'rxjs/add/operator/toPromise';\r\nimport 'rxjs/add/operator/map';\r\nimport 'rxjs/operators';\r\n\r\nimport { environment } from '../../../environments/environment';\r\nimport { ObservationPage } from './../observation/observationPage.model';\r\nimport { ObservationPivotPage } from './../observation/observationPivotPage.model';\r\n// import { Area } from './../area/area.model';\r\nimport { DimensionGroup } from './../dimension/dimensionGroup.model';\r\nimport { Area } from './../area/area.model';\r\nimport { AreaNode } from './../area/areaNode.model';\r\nimport { PeriodRange } from './../period/periodRange.model';\r\nimport { Serie } from './serie.model';\r\nimport { SerieSlice } from './serieSlice.model';\r\n\r\n@Injectable()\r\nexport class SerieService {\r\n\r\n constructor(\r\n private http: Http\r\n ) { }\r\n\r\n private urlList(): string {\r\n return `${environment.apiUrl}/Series/List`;\r\n }\r\n\r\n private urlDimensions(serie: Serie): string {\r\n return `${environment.apiUrl}/Series/${serie.code}/Dimensions`;\r\n }\r\n\r\n private urlLastUpdateAt(): string {\r\n return `${environment.apiUrl}/Series/LastUpdated`;\r\n }\r\n\r\n private urlData(\r\n series: Serie[],\r\n page: number,\r\n size: number,\r\n areas: AreaNode[],\r\n periodRange: PeriodRange,\r\n dimensions: any = undefined\r\n ): string {\r\n let qPage = `page=${page}&pageSize=${size}`;\r\n let qArea = '';\r\n for (let i = 0; i < areas.length; i++) {\r\n qArea = `${qArea}&areaCode=${areas[i].geoAreaCode}`;\r\n }\r\n let qPeriod = (periodRange) ? `timePeriodStart=${periodRange.start.year}&timePeriodEnd=${periodRange.end.year}` : '';\r\n let qSerie = '';\r\n for (let i = 0; i < series.length; i++) {\r\n qSerie = `${qSerie}&seriescode=${series[i].code}`;\r\n }\r\n let qDimension = '';\r\n if (dimensions) {\r\n qDimension = `dimensions=${JSON.stringify(dimensions)}`;\r\n }\r\n return `${environment.apiUrl}/Series/Data?${qSerie}&${qArea}&${qPeriod}&${qPage}&${qDimension}`;\r\n }\r\n\r\n private urlDataSimple(\r\n series: string[],\r\n page: number,\r\n size: number,\r\n areas: string[],\r\n periods: number[],\r\n dimensions: any = undefined\r\n ): string {\r\n let qArea = '';\r\n for(let area of areas) {\r\n qArea = `${qArea}&areaCode=${area}`;\r\n }\r\n let qPeriod = `timePeriod=${JSON.stringify(periods)}`;\r\n let qSerie = '';\r\n for(let serie of series) {\r\n qSerie = `${qSerie}&seriesCode=${serie}`;\r\n }\r\n let qDimension = '';\r\n if (dimensions) {\r\n qDimension = `dimensions=${JSON.stringify(dimensions)}`;\r\n }\r\n return `${environment.apiUrl}/Series/Data?${qSerie}&${qArea}&${qPeriod}&${qDimension}`;\r\n }\r\n\r\n private urlPivotData(series: Serie[], page: number, size: number, areas: AreaNode[]): string {\r\n let qPage = `page=${page}&pageSize=${size}`;\r\n let qArea = '';\r\n for (let i = 0; i < areas.length; i++) {\r\n qArea = `${qArea}&areaCode=${areas[i].geoAreaCode}`;\r\n }\r\n let qSerie = '';\r\n for (let i = 0; i < series.length; i++) {\r\n qSerie = `${qSerie}&seriescode=${series[i].code}`;\r\n }\r\n return `${environment.apiUrl}/Series/PivotData?${qSerie}&${qArea}&${qPage}`;\r\n }\r\n\r\n private urlPivotDataSimple(series: string[], page: number, size: number, areas: string[], dimensions: any): string {\r\n let qPage = `page=${page}&pageSize=${size}`;\r\n let qArea = '';\r\n for (let area of areas) {\r\n if (''!=qArea) {\r\n qArea = `${qArea}&`;\r\n }\r\n qArea = `${qArea}areaCode=${area}`;\r\n }\r\n let qSerie = '';\r\n for (let serie of series) {\r\n if (''!=qSerie) {\r\n qSerie = `${qSerie}&`;\r\n }\r\n qSerie = `${qSerie}seriescode=${serie}`;\r\n }\r\n let qDimensions = '';\r\n if (Object.keys(dimensions).length>0) {\r\n let s = [];\r\n for (let dimension in dimensions) {\r\n let values = [];\r\n for (let v of dimensions[dimension]) {\r\n values.push(encodeURIComponent(v.code));\r\n }\r\n s.push({\r\n name: dimension,\r\n values: values\r\n });\r\n }\r\n qDimensions = `dimensions=${JSON.stringify(s)}`;\r\n }\r\n\r\n return `${environment.apiUrl}/Series/PivotData?${qSerie}&${qArea}&${qPage}&${qDimensions}`;\r\n }\r\n\r\n\r\n private urlByIndicator(indicator: string): string {\r\n return `${environment.apiUrl}/Indicator/${indicator}/Series/List`;\r\n }\r\n\r\n private urlAreas(serie: Serie): string {\r\n return `${environment.apiUrl}/Series/${serie.code}/GeoAreas`;\r\n }\r\n\r\n private urlDataSlice(serie: Serie, area: AreaNode, periodRange: string = undefined): string {\r\n let qArea = area.geoAreaCode;\r\n let qPeriods = '';\r\n if (periodRange) {\r\n qPeriods = 'timePeriods=' + periodRange;\r\n }\r\n let qSerie = serie.code;\r\n return `${environment.apiUrl}/Series/${qSerie}/GeoArea/${qArea}/DataSlice?${qPeriods}`;\r\n }\r\n\r\n private urlDataCount(series: string[], areas: string[], periodStart: number, periodEnd: number): string {\r\n let qSerie = '';\r\n for (let serie of series) {\r\n if (''!=qSerie) qSerie+='&';\r\n qSerie += `seriesCodes=${serie}`;\r\n }\r\n let qArea = '';\r\n for (let area of areas) {\r\n if (''!=qArea) qArea+='&';\r\n qArea += `areaCodes=${area}`;\r\n }\r\n let qPeriod = `timePeriodStart=${periodStart}&timePeriodEnd=${periodEnd}`;\r\n let url = `${environment.apiUrl}/Series/DataCount?${qSerie}&${qArea}&${qPeriod}`;\r\n return url;\r\n }\r\n\r\n //private urlDataCSV(series: string[], areas: string[], periodStart: number, periodEnd: number): string {\r\n // let qSerie = '';\r\n // for (let serie of series) {\r\n // if (''!=qSerie) qSerie+='&';\r\n // qSerie += `seriesCodes=${serie}`;\r\n // }\r\n // let qArea = '';\r\n // for (let area of areas) {\r\n // if (''!=qArea) qArea+='&';\r\n // qArea += `areaCodes=${area}`;\r\n // }\r\n // let qPeriod = `timePeriodStart=${periodStart}&timePeriodEnd=${periodEnd}`;\r\n // return `${environment.apiUrl}/Series/DataCSV?${qSerie}&${qArea}&${qPeriod}`\r\n //}\r\n\r\n\r\n private urlDataExcel(series: string[], areas: string[], periodStart: number, periodEnd: number): string {\r\n let qSerie = '';\r\n for (let serie of series) {\r\n if ('' != qSerie) qSerie += '&';\r\n qSerie += `seriesCodes=${serie}`;\r\n }\r\n let qArea = '';\r\n for (let area of areas) {\r\n if ('' != qArea) qArea += '&';\r\n qArea += `areaCodes=${area}`;\r\n }\r\n let qPeriod = `timePeriodStart=${periodStart}&timePeriodEnd=${periodEnd}`;\r\n return `${environment.apiUrl}/Series/DataExcel?${qSerie}&${qArea}&${qPeriod}`\r\n }\r\n\r\n\r\n //private urlEmailDataCSV(data: any, series: string[], areas: string[], periodStart: number, periodEnd: number): string {\r\n // let qData = `email=${data.email}&firstname=${data.firstName}&lastname=${data.lastName}&usertype=${data.usertype}&comments=${data.comments}`;\r\n // let qSerie = '';\r\n // for (let serie of series) {\r\n // if (''!=qSerie) qSerie+='&';\r\n // qSerie += `seriesCodes=${serie}`;\r\n // }\r\n // let qArea = '';\r\n // for (let area of areas) {\r\n // if (''!=qArea) qArea+='&';\r\n // qArea += `areaCodes=${area}`;\r\n // }\r\n // let qPeriod = `timePeriodStart=${periodStart}&timePeriodEnd=${periodEnd}`;\r\n // return `${environment.apiUrl}/Series/EmailDataCSV?${qData}&${qSerie}&${qArea}&${qPeriod}`;\r\n //}\r\n\r\n private urlEmailDataExcel(data: any, series: string[], areas: string[], periodStart: number, periodEnd: number): string {\r\n let qData = `email=${data.email}&firstname=${data.firstName}&lastname=${data.lastName}&usertype=${data.usertype}&comments=${data.comments}`;\r\n let qSerie = '';\r\n for (let serie of series) {\r\n if ('' != qSerie) qSerie += '&';\r\n qSerie += `seriesCodes=${serie}`;\r\n }\r\n let qArea = '';\r\n for (let area of areas) {\r\n if ('' != qArea) qArea += '&';\r\n qArea += `areaCodes=${area}`;\r\n }\r\n let qPeriod = `timePeriodStart=${periodStart}&timePeriodEnd=${periodEnd}`;\r\n return `${environment.apiUrl}/Series/EmailDataExcel?${qData}&${qSerie}&${qArea}&${qPeriod}`;\r\n }\r\n\r\n\r\n private urlPivotDataExcel(series: string[], areas: string[], periodStart: number, periodEnd: number): string {\r\n let qSerie = '';\r\n for (let serie of series) {\r\n if (''!=qSerie) qSerie+='&';\r\n qSerie += `seriesCodes=${serie}`;\r\n }\r\n let qArea = '';\r\n for (let area of areas) {\r\n if (''!=qArea) qArea+='&';\r\n qArea += `areaCodes=${area}`;\r\n }\r\n let qPeriod = `timePeriodStart=${periodStart}&timePeriodEnd=${periodEnd}`;\r\n return `${environment.apiUrl}/Series/PivotDataExcel?${qSerie}&${qArea}&${qPeriod}`\r\n }\r\n\r\n getLastUpdateAt(): Promise {\r\n return this.http.get(this.urlLastUpdateAt())\r\n .toPromise()\r\n .then(response => { return response.text(); })\r\n .catch(this.handleError);\r\n }\r\n\r\n getDimensions(serie: Serie): Promise {\r\n return this.http.get(this.urlDimensions(serie))\r\n .toPromise()\r\n .then(response => { return response.json() as DimensionGroup[]; })\r\n .catch(this.handleError);\r\n }\r\n\r\n getList(): Promise {\r\n return this.http.get(this.urlList())\r\n .toPromise()\r\n .then(response => { return response.json() as Serie[]; })\r\n .catch(this.handleError);\r\n }\r\n\r\n getData(\r\n series: Serie[],\r\n page: number,\r\n size: number,\r\n areas: AreaNode[],\r\n periodRange: PeriodRange,\r\n dimensions: any = undefined\r\n ): Promise {\r\n return this.http.get(this.urlData(series, page, size, areas, periodRange, dimensions))\r\n .toPromise()\r\n .then(response => { return response.json() as ObservationPage; })\r\n .catch(this.handleError);\r\n }\r\n\r\n getDataSimple(\r\n series: string[],\r\n page: number,\r\n size: number,\r\n areas: string[],\r\n periods: number[],\r\n dimensions: any = undefined\r\n ): Promise {\r\n return this.http.get(this.urlDataSimple(series, page, size, areas, periods, dimensions))\r\n .toPromise()\r\n .then(response => { return response.json() as ObservationPage; })\r\n .catch(this.handleError);\r\n }\r\n\r\n getPivotData(series: Serie[], page: number, size: number, areas: AreaNode[]): Promise {\r\n return this.http.get(this.urlPivotData(series, page, size, areas))\r\n .toPromise()\r\n .then(response => { return response.json() as ObservationPivotPage; })\r\n .catch(this.handleError);\r\n }\r\n\r\n getPivotDataSimple(series: string[], page: number, size: number, areas: string[], dimensions: any): Promise {\r\n let url = this.urlPivotDataSimple(series, page, size, areas, dimensions);\r\n let chunks = url.split('?');\r\n let headers = new Headers();\r\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\r\n return this.http.post(\r\n chunks[0],\r\n chunks[1], {\r\n headers: headers\r\n })\r\n .toPromise()\r\n .then(response => { return response.json() as ObservationPivotPage; })\r\n .catch(this.handleError);\r\n }\r\n\r\n getByIndicator(indicator: string): Promise {\r\n return this.http.get(this.urlByIndicator(indicator))\r\n .toPromise()\r\n .then(response => {\r\n return response.json()[0].Series as Serie[];\r\n })\r\n .catch(this.handleError);\r\n }\r\n\r\n getDataSlice(serie: Serie, area: AreaNode, periodRange: PeriodRange, periodRangeEdgesOnly: boolean = false): Promise {\r\n return this.http.get(this.urlDataSlice(serie, area,\r\n periodRangeEdgesOnly ? JSON.stringify(periodRange.getEdges()) : JSON.stringify(periodRange.getRange())\r\n ))\r\n .toPromise()\r\n .then(response => { return response.json() as SerieSlice; })\r\n .catch(this.handleError);\r\n }\r\n\r\n getAreas(serie: Serie): Promise {\r\n return this.http.get(this.urlAreas(serie))\r\n .toPromise()\r\n .then(response => {\r\n return response.json() as Area[];\r\n })\r\n .catch(this.handleError);\r\n }\r\n\r\n getDataCount(\r\n series: string[],\r\n areas: string[],\r\n periodStart: number, periodEnd: number\r\n ): Promise {\r\n let url = this.urlDataCount(series, areas, periodStart, periodEnd);\r\n let chunks = url.split('?');\r\n let headers = new Headers();\r\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\r\n return this.http.post(\r\n chunks[0],\r\n chunks[1],\r\n {\r\n headers: headers\r\n })\r\n .toPromise()\r\n .then(response => {\r\n return response.json() as number;\r\n })\r\n .catch(this.handleError);\r\n }\r\n\r\n\r\n //getDataCSV(\r\n // series: string[],\r\n // areas: string[],\r\n // periodStart: number,\r\n // periodEnd: number\r\n //) {\r\n // let url = this.urlDataCSV(series, areas, periodStart, periodEnd);\r\n // let chunks = url.split('?');\r\n // let headers = new Headers();\r\n // headers.append('Content-Type', 'application/x-www-form-urlencoded');\r\n // return this.http\r\n // .post(chunks[0], chunks[1], {\r\n // headers: headers,\r\n // responseType: ResponseContentType.Blob\r\n // })\r\n // .map(res => {\r\n // return {\r\n // filename: 'data.csv',\r\n // data: res.blob()\r\n // };\r\n // });\r\n //}\r\n\r\n getDataExcel(\r\n series: string[],\r\n areas: string[],\r\n periodStart: number,\r\n periodEnd: number\r\n ) {\r\n let url = this.urlDataExcel(series, areas, periodStart, periodEnd);\r\n let chunks = url.split('?');\r\n let headers = new Headers();\r\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\r\n return this.http\r\n .post(chunks[0], chunks[1], {\r\n headers: headers,\r\n responseType: ResponseContentType.Blob\r\n })\r\n .map(res => {\r\n return {\r\n filename: 'data.xlsx',\r\n data: res.blob()\r\n };\r\n });\r\n }\r\n\r\n //getEmailDataCSV(\r\n // data: any,\r\n // series: string[],\r\n // areas: string[],\r\n // periodStart: number,\r\n // periodEnd: number\r\n //) {\r\n // let url = this.urlEmailDataCSV(\r\n // data,\r\n // series,\r\n // areas,\r\n // periodStart,\r\n // periodEnd\r\n // );\r\n // let chunks = url.split('?');\r\n // let headers = new Headers();\r\n // headers.append('Content-Type', 'application/x-www-form-urlencoded');\r\n // return this.http\r\n // .post(chunks[0], chunks[1], {\r\n // headers: headers,\r\n // responseType: ResponseContentType.Blob\r\n // })\r\n // .map(res => {\r\n // return res.json() as Object;\r\n // });\r\n //}\r\n\r\n getEmailDataExcel(\r\n data: any,\r\n series: string[],\r\n areas: string[],\r\n periodStart: number,\r\n periodEnd: number\r\n ) {\r\n let url = this.urlEmailDataExcel(\r\n data,\r\n series,\r\n areas,\r\n periodStart,\r\n periodEnd\r\n );\r\n let chunks = url.split('?');\r\n let headers = new Headers();\r\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\r\n return this.http\r\n .post(chunks[0], chunks[1], {\r\n headers: headers,\r\n responseType: ResponseContentType.Blob\r\n })\r\n .map(res => {\r\n return res.json() as Object;\r\n });\r\n }\r\n\r\n getPivotDataExcel(\r\n series: string[],\r\n areas: string[],\r\n periodStart: number,\r\n periodEnd: number\r\n ) {\r\n let url = this.urlPivotDataExcel(series, areas, periodStart, periodEnd);\r\n\r\n let filename = 'series';\r\n if (1==series.length) {\r\n filename = series[0];\r\n }\r\n\r\n let chunks = url.split('?');\r\n let headers = new Headers();\r\n headers.append('Content-Type', 'application/x-www-form-urlencoded');\r\n return this.http\r\n .post(chunks[0], chunks[1], {\r\n headers: headers,\r\n responseType: ResponseContentType.Blob\r\n })\r\n .map(res => {\r\n return {\r\n filename: `${filename}.xlsx`,\r\n data: res.blob()\r\n };\r\n });\r\n }\r\n\r\n private handleError(error: any): Promise {\r\n console.error('An error occurred', error); // for demo purposes only\r\n return Promise.reject(error.message || error);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Headers, Http } from '@angular/http';\r\n\r\nimport 'rxjs/add/operator/toPromise';\r\n\r\nimport { environment } from '../../../environments/environment';\r\nimport { ObservationPage } from './../observation/observationPage.model';\r\nimport { ObservationPivotPage } from './../observation/observationPivotPage.model';\r\nimport { AreaNode } from './../area/areaNode.model';\r\n// import { Area } from './../area/area.model';\r\nimport { PeriodRange } from './../period/periodRange.model';\r\nimport { Target } from './target.model';\r\n\r\n@Injectable()\r\nexport class TargetService {\r\n\r\n constructor(private http: Http) { }\r\n\r\n private urlList(): string {\r\n return `${environment.apiUrl}/Target/List`;\r\n }\r\n\r\n private urlData(\r\n targets: Target[],\r\n page: number,\r\n size: number,\r\n areas: AreaNode[],\r\n periodRange: PeriodRange,\r\n dimensions: any = undefined\r\n ): string {\r\n let qPage = `page=${page}&pageSize=${size}`;\r\n let qArea = '';\r\n for (let i = 0; i < areas.length; i++) {\r\n qArea = `${qArea}&areaCode=${areas[i].geoAreaCode}`;\r\n }\r\n let qPeriod = (periodRange) ? `timePeriodStart=${periodRange.start.year}&timePeriodEnd=${periodRange.end.year}` : '';\r\n let qTarget = '';\r\n for (let i = 0; i < targets.length; i++) {\r\n qTarget = `${qTarget}&target=${targets[i].code}`;\r\n }\r\n let qDimension = '';\r\n if (dimensions) {\r\n qDimension = `dimensions=${JSON.stringify(dimensions)}`;\r\n }\r\n return `${environment.apiUrl}/Target/Data?${qTarget}&${qArea}&${qPeriod}&${qPage}&${qDimension}`;\r\n }\r\n //https://unstats.un.org/SDGAPI/v1/sdg/Target/Data?target=1.1&dimensions=[{\"name\":\"Sex\",values:[\"female\"]}]\r\n\r\n private urlPivotData(targets: Target[], page: number, size: number, areas: AreaNode[]): string {\r\n let qPage = `page=${page}&pageSize=${size}`;\r\n let qArea = '';\r\n for (let i = 0; i < areas.length; i++) {\r\n qArea = `${qArea}&areaCode=${areas[i].geoAreaCode}`;\r\n }\r\n let qTarget = '';\r\n for (let i = 0; i < targets.length; i++) {\r\n qTarget = `${qTarget}&target=${targets[i].code}`;\r\n } return `${environment.apiUrl}/Target/PivotData?${qTarget}&${qArea}&${qPage}`;\r\n }\r\n\r\n private urlByGoal(goal: string): string {\r\n return `${environment.apiUrl}/Goal/${goal}/Target/List`;\r\n }\r\n\r\n getList(): Promise {\r\n return this.http.get(this.urlList())\r\n .toPromise()\r\n .then(response => { return response.json() as Target[]; })\r\n .catch(this.handleError);\r\n }\r\n\r\n getData(\r\n targets: Target[],\r\n page: number,\r\n size: number,\r\n areas: AreaNode[],\r\n periodRange: PeriodRange,\r\n dimensions: any = undefined\r\n ): Promise {\r\n return this.http.get(this.urlData(targets, page, size, areas, periodRange, dimensions))\r\n .toPromise()\r\n .then(response => { return response.json() as ObservationPage; })\r\n .catch(this.handleError);\r\n }\r\n\r\n getPivotData(targets: Target[], page: number, size: number, areas: AreaNode[]): Promise {\r\n return this.http.get(this.urlPivotData(targets, page, size, areas))\r\n .toPromise()\r\n .then(response => { return response.json() as ObservationPivotPage; })\r\n .catch(this.handleError);\r\n }\r\n\r\n getByGoal(goal: string): Promise {\r\n return this.http.get(this.urlByGoal(goal))\r\n .toPromise()\r\n .then(response => { return response.json() as Target[]; })\r\n .catch(this.handleError);\r\n }\r\n\r\n private handleError(error: any): Promise {\r\n console.error('An error occurred', error); // for demo purposes only\r\n return Promise.reject(error.message || error);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Headers, Http, ResponseContentType } from '@angular/http';\r\n\r\nimport 'rxjs/add/operator/toPromise';\r\n\r\nimport { environment } from '../../../environments/environment';\r\n\r\n@Injectable()\r\nexport class UserService {\r\n\r\n constructor(private http: Http) { }\r\n\r\n private urlEmailExist(email:string=\"\"): string {\r\n return `${environment.apiUrl}/User/EmailExist?email=${email}`;\r\n }\r\n\r\n getEmailExist(email:string=\"\"): Promise {\r\n return this.http.get(this.urlEmailExist(email))\r\n .toPromise()\r\n .then(response => {\r\n return ('true' == response.text());\r\n })\r\n .catch(this.handleError);\r\n }\r\n\r\n private handleError(error: any): Promise {\r\n console.error('An error occurred', error); // for demo purposes only\r\n return Promise.reject(error.message || error);\r\n }\r\n\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'highlight'\r\n})\r\n\r\nexport class HighlightPipe implements PipeTransform {\r\n transform(text: string, search): string {\r\n var pattern = search.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\r\n // pattern = pattern.split(' ').filter((t) => {\r\n // return t.length > 0;\r\n // }).join('|');\r\n var regex = new RegExp(pattern, 'gi');\r\n\r\n return search ? text ? text.replace(regex, (match) => `${match}`) : text : text;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'numberFilter'\r\n})\r\nexport class NumberFilterPipe implements PipeTransform {\r\n\r\n transform(items: any[], field: string, value: string): any[] {\r\n return items.filter(function(it) {\r\n switch (field) {\r\n case 'min':\r\n return it >= value;\r\n case 'max':\r\n return it <= value;\r\n case 'equals':\r\n return it == value;\r\n case 'not':\r\n return it != value;\r\n default:\r\n return true;\r\n }\r\n })\r\n }\r\n}\r\n","\r\n
\r\n\r\n \r\n \r\n\r\n \r\n  \r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n","import { Component, Input, Output, EventEmitter, OnInit, ViewChild } from '@angular/core';\r\n// import { ITreeState, TreeComponent, TreeNode } from 'angular-tree-component';\r\n\r\nimport { TreeviewItem, TreeviewConfig,\r\n TreeviewEventParser,\r\n DownlineTreeviewEventParser,\r\n DownlineTreeviewItem } from 'ngx-treeview';\r\n\r\n // DownlineTreeviewEventParser.prototype.getLinks = function (item, parent) {\r\n // var _this = this;\r\n // if (!_.isNil(item.children)) {\r\n //\r\n // var link_1 = {\r\n // item: item,\r\n // parent: parent\r\n // };\r\n // var result_2 = [];\r\n // item.children.forEach(function (child) {\r\n // var links = _this.getLinks(child, link_1);\r\n // if (!_.isNil(links)) {\r\n // result_2 = result_2.concat(links);\r\n // }\r\n // });\r\n //\r\n // if (0==result_2.length) {\r\n // if (item.checked) {\r\n // return [link_1];\r\n // }\r\n // } else {\r\n // return result_2;\r\n // }\r\n //\r\n // }\r\n // if (item.checked) {\r\n // return [{\r\n // item: item,\r\n // parent: parent\r\n // }];\r\n // }\r\n // return null;\r\n // };\r\n\r\n@Component({\r\n selector: 'selector-areas',\r\n templateUrl: './selector-areas.component.html',\r\n providers: [\r\n { provide: TreeviewEventParser, useClass: DownlineTreeviewEventParser }\r\n ]\r\n})\r\nexport class SelectorAreas implements OnInit {\r\n\r\n @Input('items') items: TreeviewItem[];\r\n // @Input('decoupleChildFromParent') decoupleChildFromParent: boolean;\r\n\r\n @Input()\r\n set automaticallySelectChildren(automaticallySelectChildren: boolean) {\r\n this.config.decoupleChildFromParent = !automaticallySelectChildren;\r\n }\r\n\r\n\r\n selected:number[];\r\n\r\n highlightText = '';\r\n\r\n @Output() selectedChanged = new EventEmitter();\r\n\r\n config = TreeviewConfig.create({\r\n hasAllCheckBox: true,\r\n hasFilter: false,\r\n hasCollapseExpand: false,\r\n decoupleChildFromParent: false,\r\n maxHeight: 430\r\n });\r\n\r\n constructor(\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n onSelectedChange($event) {\r\n\r\n this.selected = $event.filter((value, index, self) => {\r\n return self.indexOf(value) === index;\r\n });\r\n\r\n this.selectedChanged.emit(this.selected);\r\n\r\n // this.selectedChange.emit(this.selected);\r\n\r\n // if (this.firstSelectionChange) {\r\n // this.initialized.emit();\r\n // this.firstSelectionChange = false;\r\n // }\r\n }\r\n\r\n highlightClear() {\r\n this.highlightText = '';\r\n }\r\n\r\n highlight(keyword: string) {\r\n this.highlightText = keyword;\r\n }\r\n\r\n}\r\n","\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n

searching...

\r\n\r\n\r\n\r\n","import { Component, Input, Output, EventEmitter, OnInit, ViewChild } from '@angular/core';\r\n// import { ITreeState, TreeComponent, TreeNode } from 'angular-tree-component';\r\n\r\nimport { TreeviewItem, TreeviewConfig, TreeviewI18n } from 'ngx-treeview';\r\n\r\n@Component({\r\n selector: 'selector-series',\r\n templateUrl: './selector-series.component.html',\r\n providers: [\r\n ]\r\n})\r\nexport class SelectorSeries implements OnInit {\r\n\r\n @Input('items') items: TreeviewItem[];\r\n @Input('searching') searching: boolean;\r\n\r\n\r\n selected:number[];\r\n\r\n highlightText = '';\r\n\r\n @Output() selectedChanged = new EventEmitter();\r\n\r\n config = TreeviewConfig.create({\r\n hasAllCheckBox: true,\r\n hasFilter: false,\r\n hasCollapseExpand: false,\r\n decoupleChildFromParent: false,\r\n maxHeight: 520,\r\n });\r\n\r\n constructor(\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n onSelectedChange($event) {\r\n\r\n this.selected = $event.filter((value, index, self) => {\r\n return self.indexOf(value) === index;\r\n });\r\n\r\n this.selectedChanged.emit(this.selected);\r\n\r\n // this.selectedChange.emit(this.selected);\r\n\r\n // if (this.firstSelectionChange) {\r\n // this.initialized.emit();\r\n // this.firstSelectionChange = false;\r\n // }\r\n }\r\n\r\n highlightClear() {\r\n this.highlightText = '';\r\n }\r\n\r\n highlight(keyword: string) {\r\n this.highlightText = keyword;\r\n }\r\n\r\n}\r\n","
\r\n Loading ...\r\n
\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n (fn)\r\n \r\n Footnotes\r\n \r\n \r\n \r\n ({{nature.code}})\r\n \r\n {{nature.description}}\r\n \r\n\r\n\r\n

\r\n\r\n
\r\n \r\n {{dataCount}} observations\r\n \r\n  \r\n \r\n Download Excel\r\n \r\n \r\n
\r\n\r\n\r\n\r\n \r\n {{value}}\r\n \r\n\r\n \r\n {{myJSON.parse(value.toString()).__value}}\r\n\r\n \r\n \r\n \r\n fn\r\n \r\n \r\n \r\n \r\n \r\n ,\r\n \r\n \r\n {{myJSON.parse(value.toString()).__nature}}\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n {{myJSON.parse(value.toString()).__value}}\r\n \r\n\r\n\r\n","import { Component, Injectable, Input, Output, EventEmitter, OnInit, TemplateRef, ViewChild } from '@angular/core';\r\n\r\nimport { SerieService } from './../models/serie/serie.service';\r\n\r\nimport { ObservationPage } from './../models/observation/observationPage.model';\r\nimport { Observation } from './../models/observation/observation.model';\r\nimport { ObservationPivotPage } from './../models/observation/observationPivotPage.model';\r\nimport { ObservationPivot } from './../models/observation/observationPivot.model';\r\nimport { ObservationService } from './../models/observation/observation.service';\r\n\r\nimport {GoogleAnalyticsEventsService} from \"./../google-analytics-events.service\";\r\n\r\n// http://swimlane.github.io/ngx-datatable/#server-paging\r\n// https://github.com/swimlane/ngx-datatable/blob/master/demo/paging/paging-server.component.ts\r\n\r\n@Component({\r\n selector: 'table-multi',\r\n templateUrl: './multi.component.html',\r\n providers: [\r\n ObservationService,\r\n SerieService,\r\n ]\r\n})\r\nexport class TableMultiComponent implements OnInit {\r\n\r\n @Input('serie') serie: string = \"\";\r\n @Input('areas') areas: string[] = [];\r\n @Input('periodStart') periodStart: number;\r\n @Input('periodEnd') periodEnd: number;\r\n\r\n @Output() initialized = new EventEmitter();\r\n private ready:boolean = false;\r\n\r\n page = new ObservationPivotPage();\r\n rows = new Array();\r\n columns:any[] = [];\r\n isLoading: boolean = true;\r\n dataCount = 0;\r\n natures:any[] = [];\r\n dimensions:any[] = [];\r\n\r\n myJSON:any;\r\n\r\n isDownloading:boolean = false;\r\n\r\n // dropdownList = [];\r\n selectedDimensions = {};\r\n dropdownSettings = {};\r\n\r\n\r\n @ViewChild('footnotesTemplate') footnotesTemplate: TemplateRef;\r\n @ViewChild('defaultTemplate') defaultTemplate: TemplateRef;\r\n\r\n constructor(\r\n private observationService: ObservationService,\r\n private serieService: SerieService,\r\n public gaEventsService: GoogleAnalyticsEventsService,\r\n ) {\r\n this.myJSON = JSON;\r\n this.page.pageNumber = 0;\r\n this.page.totalElements = 0;\r\n this.page.size = 7;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.updateDataCount();\r\n this.setPage({ offset: 0 });\r\n\r\n this.selectedDimensions = {};\r\n\r\n this.dropdownSettings = {\r\n singleSelection: false,\r\n enableCheckAll: false,\r\n idField: 'code',\r\n textField: 'description',\r\n selectAllText: 'Select All',\r\n unSelectAllText: 'UnSelect All',\r\n itemsShowLimit: 5,\r\n allowSearchFilter: false\r\n };\r\n }\r\n\r\n onDimensionSelect (dimension, item:any) {\r\n // console.log(dimension, item);\r\n console.log(dimension, this.selectedDimensions);\r\n this.setPage({ offset: 0 });\r\n }\r\n onDimensionDeselect (dimension, items: any) {\r\n // console.log(dimension, items);\r\n console.log(dimension, this.selectedDimensions);\r\n this.setPage({ offset: 0 });\r\n }\r\n // onSelectAll (dimension, items: any) {\r\n // console.log(dimension, items);\r\n // }\r\n\r\n private parseDimensionName (name:string) {\r\n return name\r\n .toLowerCase()\r\n .replace(/[\\s,\\/,-]/g, '_')\r\n .replace(/[(,)]/g, '');\r\n }\r\n\r\n setPage(pageInfo) {\r\n\r\n this.serieService.getPivotDataSimple(\r\n [this.serie],\r\n pageInfo.offset+1, this.page.size,\r\n this.areas,\r\n [], //this.selectedDimensions\r\n ).then(observations => {\r\n\r\n // console.log('received page '+observations.pageNumber);\r\n // console.log(observations);\r\n\r\n //fill dimensions only first load\r\n if (0==this.dimensions.length) {\r\n for (let dimension of observations.dimensions) {\r\n this.selectedDimensions[dimension.id] = dimension.codes;\r\n }\r\n this.dimensions = observations.dimensions;\r\n }\r\n\r\n this.page.pageNumber = observations.pageNumber-1;\r\n this.page.totalElements = observations.totalElements;\r\n\r\n for (let a of observations.attributes) {\r\n if ('Nature'==a.id) {\r\n this.natures = [];\r\n for (let nature of a.codes) {\r\n this.natures.push(nature);\r\n }\r\n }\r\n }\r\n\r\n this.columns = [\r\n {name: 'Country', prop: 'geoAreaName', frozenLeft: true},\r\n // {name: 'age', prop: 'age', frozenLeft: true, width: 75},\r\n // {name: 'sex', prop: 'sex', frozenLeft: true, width: 75}\r\n ];\r\n for(let dimension of observations.dimensions) {\r\n\r\n let dimensionName = this.parseDimensionName(dimension.id);\r\n\r\n this.columns.push({\r\n name: dimension.id,\r\n prop: dimensionName,\r\n frozenLeft: true,\r\n width: 100,\r\n cellTemplate: this.defaultTemplate\r\n });\r\n }\r\n for(let year = this.periodStart; year<=this.periodEnd; year++) {\r\n // this.columns.push({name: String(year)});\r\n this.columns.push({\r\n name: String(year),\r\n prop: String(year),\r\n width: 80,\r\n cellTemplate: this.footnotesTemplate\r\n });\r\n }\r\n // console.log(this.columns);\r\n\r\n this.rows = [];\r\n for(let observation of observations.data) {\r\n\r\n let row = {};\r\n\r\n row['geoAreaName'] = observation.geoAreaName;\r\n\r\n for(let dimension of observations.dimensions) {\r\n let dimensionName = this.parseDimensionName(dimension.id);\r\n\r\n let dimensionDesc = observation[dimensionName];\r\n for(let c of dimension.codes) {\r\n if (observation[dimensionName] == c.code) {\r\n dimensionDesc = c.description;\r\n }\r\n }\r\n let j = {\r\n __value: observation[dimensionName],\r\n __title: dimensionDesc\r\n };\r\n row[dimensionName] = JSON.stringify(j);\r\n }\r\n\r\n // row['sex'] = observation.sex;\r\n // row['age'] = observation.age;\r\n\r\n // row['1990'] = 'text';\r\n\r\n for (let y of JSON.parse(observation.years)) {\r\n let year = y.year.replace('[', '').replace(']', '');\r\n\r\n let j = {\r\n __value: '-'\r\n };\r\n\r\n if ('' != y.value) {\r\n j['__value'] = y.value;\r\n }\r\n\r\n if (y.footnotes) {\r\n j['__footnotes'] = y.footnotes;\r\n }\r\n\r\n if (y.Nature) {\r\n j['__nature'] = y.Nature;\r\n }\r\n\r\n row[year] = JSON.stringify(j);\r\n }\r\n\r\n this.rows.push (row);\r\n\r\n }\r\n\r\n this.isLoading = false;\r\n\r\n if (!this.ready) {\r\n this.initialized.emit();\r\n this.ready = true;\r\n }\r\n\r\n // this.rows = observations.data;\r\n });\r\n }\r\n\r\n private updateDataCount() {\r\n\r\n this.serieService.getDataCount(\r\n [this.serie],\r\n this.areas,\r\n this.periodStart,\r\n this.periodEnd\r\n ).then(count => {\r\n this.dataCount = count;\r\n });\r\n\r\n }\r\n\r\n onDownloadSeriesClicked(serie, areas, periodStart, periodEnd) {\r\n this.gaEventsService.emitEvent(\r\n this.gaEventsService.TYPE_BUTTON, \"downloadSeries\");\r\n\r\n this.isDownloading = true;\r\n\r\n this.serieService.getPivotDataExcel(\r\n [serie],\r\n areas,\r\n periodStart,\r\n periodEnd\r\n )\r\n .subscribe(res => {\r\n var url = window.URL.createObjectURL(res.data);\r\n var a = document.createElement('a');\r\n document.body.appendChild(a);\r\n a.setAttribute('style', 'display: none');\r\n a.href = url;\r\n a.download = res.filename;\r\n a.click();\r\n window.URL.revokeObjectURL(url);\r\n a.remove(); // remove the element\r\n\r\n this.isDownloading = false;\r\n }, error => {\r\n console.log('download error:', JSON.stringify(error));\r\n }, () => {\r\n // ('Completed file download.')\r\n });\r\n }\r\n\r\n // this.serieService.getDataSimple(\r\n // [this.serie],\r\n // 1, 1000,\r\n // this.areas,\r\n // [1996, 1997]\r\n // ).then(observations => {\r\n // console.log(observations);\r\n // // this.observationsPivot = observations;\r\n // // this.setRowsAndColumns();\r\n // // this.isLoading = false;\r\n // });\r\n\r\n // this.serieService.getPivotDataSimple(\r\n // [this.serie],\r\n // 1, 50,\r\n // this.areas\r\n // ).then(observations => {\r\n // console.log(observations);\r\n // // this.observationsPivot = observations;\r\n // // this.setRowsAndColumns();\r\n // // this.isLoading = false;\r\n // });\r\n\r\n}\r\n","// The file contents for the current environment will overwrite these during build.\r\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\r\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\r\n// The list of which env maps to which file can be found in `.angular-cli.json`.\r\n\r\nexport const environment = {\r\n production: false,\r\n version: require('../../package.json').version,\r\n googlaAnalytics: 'UA-48267274-6', //un\r\n apiUrl: 'https://unstats.un.org/SDGAPI/v1/sdg',\r\n lastUpdateLog: 'https://unstats.un.org/sdgs/indicators/SDG_Updateinfo.xlsx'\r\n};\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule);\r\n"],"sourceRoot":""}