{"version":3,"file":"src_Client_routes_forecast_module_ts-es2015.js","mappings":"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","sources":["./src/Client/routes/forecast/component.ts","./src/Client/routes/forecast/component.html","./src/Client/routes/forecast/details/component.ts","./src/Client/routes/forecast/details/component.html","./src/Client/routes/forecast/module.ts","./src/Client/routes/forecast/results/component.ts","./src/Client/routes/forecast/results/component.html","./src/Client/routes/forecast/search/component.ts","./src/Client/routes/forecast/search/component.html","./src/Client/services/forecast.service.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AnalyticsService } from '../../services/analytics.service';\r\nimport { NavigatorComponent } from '../navigator.component';\r\n\r\n@Component({\r\n    selector: 'app-forecast',\r\n    templateUrl: './component.html'\r\n})\r\nexport class ForecastComponent extends NavigatorComponent {\r\n    constructor(router: Router, analytics: AnalyticsService) {\r\n        super(router, analytics);\r\n    }\r\n}\r\n","<router-outlet (activate)=\"onRouterOutletActivate($event)\"></router-outlet>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { PageChangedEvent } from 'ngx-bootstrap';\r\nimport { SortDefinition } from '../../../components/results-grid/component';\r\nimport { ServiceError } from '../../../services/base-service';\r\nimport { ForecastService } from '../../../services/forecast.service';\r\n\r\n@Component({\r\n    selector: 'app-forecast-details',\r\n    templateUrl: './component.html',\r\n    styleUrls: ['./component.css']\r\n})\r\nexport class ForecastDetailsComponent implements OnInit {\r\n    public hash: string;\r\n    public dataItem: any;\r\n    public isLoading: boolean;\r\n    public errorMessage: string;\r\n    public gridResults: GridResults<any>;\r\n\r\n    private rowId: number;\r\n\r\n    constructor(private service: ForecastService, route: ActivatedRoute) {\r\n        this.isLoading = true;\r\n        this.hash = route.snapshot.queryParams.hash;\r\n        this.rowId = parseInt(route.snapshot.queryParams.id);\r\n\r\n        this.gridResults = new GridResults<any>(this);\r\n\r\n        this.loadDetails();\r\n    }\r\n\r\n    ngOnInit() {\r\n    }\r\n\r\n    private loadDetails(): any {\r\n        var __this__ = this;\r\n        this.service.getDetails(this.rowId)\r\n            .subscribe(\r\n                function (item) {\r\n                    __this__.dataItem = item;\r\n                    __this__.gridResults.setResults(item.lineItems, []);\r\n                    __this__.errorMessage = null\r\n                },\r\n                function (error: ServiceError) {\r\n                    console.log(error.message);\r\n                    __this__.errorMessage = \"Failed to retrieve forecast details\";\r\n                    __this__.gridResults.setResults([], []);\r\n                    __this__.isLoading = false;\r\n                },\r\n                function () {\r\n                    __this__.isLoading = false;\r\n                });\r\n    }\r\n}\r\n\r\nclass GridResults<T> {\r\n    public pageIndex: number = 1;\r\n    public pageSize: number;\r\n    public pageSizeString: string = '10';\r\n    public filteredItems: T[];\r\n    public searchKeyword: string = '';\r\n\r\n    public items: T[];\r\n    public page: T[];\r\n    public errorMessage: string;\r\n    public ordering: SortDefinition[];\r\n\r\n    public constructor(private owner: ForecastDetailsComponent) {\r\n        this.items = [];\r\n        this.errorMessage = null;\r\n        this.ordering = [];\r\n\r\n        this.updateInstance();\r\n    }\r\n\r\n    public setResults(results: T[], ordering: SortDefinition[]): void {\r\n        this.items = results || [];\r\n        this.errorMessage = null;\r\n        this.ordering = ordering || [];\r\n\r\n        this.updateInstance();\r\n    }\r\n\r\n    public setError<T>(errorMessage: string): void {\r\n        this.items = [];\r\n        this.errorMessage = errorMessage;\r\n        this.ordering = [];\r\n\r\n        this.updateInstance();\r\n    }\r\n\r\n    onPageChanged(event: PageChangedEvent): void {\r\n        this.slicePage(event.page);\r\n    }\r\n\r\n    onPageSizeChanged(): void {\r\n        this.owner.isLoading = true;\r\n        var __this__ = this;\r\n        setTimeout(function () {\r\n            __this__.slicePage(__this__.pageIndex = 1);\r\n        }, 10);\r\n    }\r\n\r\n    updatePages(): void {\r\n        this.slicePage(this.pageIndex);\r\n    }\r\n\r\n    private updateInstance() {\r\n        this.filteredItems = this.items;\r\n        this.pageSizeString = '10';\r\n        if (!this.items || this.items.length <= 10) {\r\n            this.pageSizeString = '0';\r\n        }\r\n\r\n        this.slicePage(1);\r\n    }\r\n\r\n    private slicePage(pageIndex: number): void {\r\n        var newPageSize = parseInt(this.pageSizeString);\r\n        this.pageSize = newPageSize;\r\n        const startItem = newPageSize === 0 ? 0 : (pageIndex - 1) * this.pageSize;\r\n        const endItem = newPageSize === 0 ? this.filteredItems.length : pageIndex * this.pageSize;\r\n        this.page = this.items ? this.filteredItems.slice(startItem, endItem) : [];\r\n        this.owner.isLoading = false;\r\n    }\r\n}\r\n","<div class=\"entry\" style=\"margin-left:15px;margin-right:15px;\">\r\n    <a routerLink=\"/forecast/results\" [queryParams]=\"{'hash':hash}\"><span class=\"fa fa-chevron-left\"></span> <span style=\"margin-left:8px;\">Back to Search Results</span></a>\r\n</div>\r\n<div class=\"entry\" style=\"margin-left:15px;margin-right:15px;\">\r\n    <h1>Forecast Details</h1>\r\n</div>\r\n<div class=\"error-message\" *ngIf=\"errorMessage\">{{errorMessage}}</div>\r\n<div style=\"margin-left:15px;margin-right:15px;\" *ngIf=\"dataItem\">\r\n    <div class=\"row\">\r\n        <div class=\"col\">\r\n            <div class=\"entry\" *ngIf=\"dataItem.agencyName\">\r\n                <div class=\"label\">Agency</div>\r\n                <div class=\"value\">{{dataItem.agencyName}}</div>\r\n            </div>\r\n            <div class=\"entry\" *ngIf=\"dataItem.projectName\">\r\n                <div class=\"label\">Project</div>\r\n                <div class=\"value\">{{dataItem.projectName}}</div>\r\n            </div>\r\n            <div class=\"entry\" *ngIf=\"dataItem.commodity\">\r\n                <div class=\"label\">NIGP Code</div>\r\n                <div class=\"value\">{{dataItem.commodity}}</div>\r\n            </div>\r\n            <div class=\"entry\" *ngIf=\"dataItem.description\">\r\n                <div class=\"label\">Description</div>\r\n                <div class=\"value\">{{dataItem.description}}</div>\r\n            </div>\r\n            <div class=\"entry\" *ngIf=\"dataItem.amount\">\r\n                <div class=\"label\">Estimated Amount</div>\r\n                <div class=\"value\">{{dataItem.amount}}</div>\r\n            </div>\r\n            <div class=\"entry\" *ngIf=\"dataItem.fundingSource\">\r\n                <div class=\"label\">Funding Source</div>\r\n                <div class=\"value\">{{dataItem.fundingSource}}</div>\r\n            </div>\r\n            <div class=\"entry\" *ngIf=\"dataItem.fundingSource\">\r\n                <div class=\"label\">Acquisition</div>\r\n                <div class=\"value\">{{dataItem.acquisition}}</div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n<div *ngIf=\"isLoading\" class=\"loader-overlay text-center\"></div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TypeaheadModule } from 'ngx-bootstrap';\r\nimport { ComponentsModule } from '../../components/module';\r\nimport { NavigationGuard } from '../../providers/navigation-gaurds';\r\nimport { ForecastComponent } from './component';\r\nimport { ForecastDetailsComponent } from './details/component';\r\nimport { ForecastResultsComponent } from './results/component';\r\nimport { ForecastSearchComponent } from './search/component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        ForecastComponent,\r\n        ForecastSearchComponent,\r\n        ForecastResultsComponent,\r\n        ForecastDetailsComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        HttpClientModule,\r\n        ComponentsModule,\r\n        RouterModule.forChild([\r\n            {\r\n                path: '',\r\n                component: ForecastComponent,\r\n                children: [\r\n                    {\r\n                        path: 'search',\r\n                        component: ForecastSearchComponent,\r\n                        canDeactivate: [NavigationGuard]\r\n                    },\r\n                    {\r\n                        path: 'results',\r\n                        component: ForecastResultsComponent,\r\n                        canDeactivate: [NavigationGuard]\r\n                    },\r\n                    {\r\n                        path: 'details',\r\n                        component: ForecastDetailsComponent\r\n                    }\r\n                ]\r\n            }\r\n        ]),\r\n        FormsModule,\r\n        TypeaheadModule.forRoot(),\r\n    ]\r\n})\r\nexport class ForecastModule { }\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Observable, ReplaySubject } from 'rxjs';\r\nimport { CustomDimension, ICustomDimensionProvider } from '../../../common/custom-dimension-provider';\r\nimport { SortOrder } from '../../../common/enums';\r\nimport { ColumnDefinition, Results, ResultsGridComponent, SortDefinition } from '../../../components/results-grid/component';\r\nimport { CriteriaData } from '../../../providers/criteria-data';\r\nimport { IOnBeforeNavigatingAway } from '../../../providers/navigation-gaurds';\r\nimport { PageState, StateStore } from '../../../providers/state-store';\r\nimport { ApiCriteria, ServiceError } from '../../../services/base-service';\r\nimport { ForecastService } from '../../../services/forecast.service';\r\n\r\n@Component({\r\n    selector: 'app-forecast-results',\r\n    templateUrl: './component.html',\r\n    styleUrls: ['./component.css']\r\n})\r\nexport class ForecastResultsComponent implements OnInit, IOnBeforeNavigatingAway, ICustomDimensionProvider {\r\n    public results: ReplaySubject<Results<any>>;\r\n    public pageState: PageState;\r\n\r\n    public criteria: ApiCriteria;\r\n    public hash: string;\r\n\r\n    @ViewChild('grid', { static: true }) grid: ResultsGridComponent;\r\n\r\n    public columns: ColumnDefinition[] = [{\r\n        name: 'project',\r\n        propertyName: 'projectName',\r\n        title: 'Project',\r\n        makeHyperlink: false,\r\n        widthPercentage: 15,\r\n        minWidth: 20,\r\n        cellAlignment: 'center',\r\n        exportedAs: [{ widthPercentage: 15 }],\r\n    },\r\n    {\r\n            name: 'description',\r\n            propertyName: 'projectDescription',\r\n            title: 'Description',\r\n            widthPercentage: 15,\r\n            minWidth: 20,\r\n        cellAlignment: 'center',\r\n            exportedAs: [{ widthPercentage: 15 }],\r\n        },\r\n        {\r\n            name: 'quarter',\r\n            propertyName: 'quarter',\r\n            title: 'Quarter',\r\n            widthPercentage: 10,\r\n            minWidth: 20,\r\n            cellAlignment: 'center',\r\n            exportedAs: [{ widthPercentage: 10 }],\r\n        },\r\n        {\r\n        name: 'agencyName',\r\n        propertyName: 'agencyName',\r\n        title: 'Agency',\r\n        widthPercentage: 15,\r\n        minWidth: 40,\r\n        cellAlignment: 'center',\r\n        exportedAs: [{ widthPercentage: 15 }],\r\n        },\r\n        //{\r\n        //name: 'amount',\r\n        //propertyName: 'amount',\r\n        //title: 'Amount',\r\n        //widthPercentage: 20,\r\n        //minWidth: 20,\r\n        //cellAlignment: 'center',\r\n        //exportedAs: [{ widthPercentage: 10 }],\r\n        //},\r\n        {\r\n            name: 'fundingSource',\r\n            propertyName: 'fundingSource',\r\n            title: 'Estimated Range Value',\r\n            widthPercentage: 15,\r\n            minWidth: 20,\r\n            cellAlignment: 'center',\r\n            exportedAs: [{ widthPercentage: 15 }],\r\n        },\r\n               \r\n        {\r\n            name: 'commodityCode',\r\n            propertyName: 'commodityCode',\r\n            title: 'NIGP Code',\r\n            widthPercentage: 10,\r\n            minWidth: 40,\r\n            cellAlignment: 'center',\r\n            exportedAs: [{ widthPercentage: 10 }],\r\n        }\r\n    ];\r\n\r\n    constructor(private stateStore: StateStore, data: CriteriaData, private service: ForecastService, route: ActivatedRoute, private router: Router) {\r\n        this.hash = route.snapshot.queryParams['hash'];\r\n        var criteria = this.hash ? data.forecast.get(this.hash) : null;\r\n\r\n        if (!ForecastService.validateCriteria(criteria)) {\r\n            router.navigateByUrl('/forecast/search');\r\n        }\r\n\r\n        this.criteria = {\r\n            'FilterBy': criteria ? criteria.toArray() : [],\r\n            'OrderBy': []\r\n        };\r\n\r\n        this.pageState = this.stateStore.getState('forecast', 'results', this.hash);\r\n        if (this.pageState && this.pageState.orderBy) {\r\n            this.criteria.OrderBy.push({ name: this.pageState.orderBy.name, order: this.pageState.orderBy.order });\r\n        }\r\n    }\r\n\r\n    ngOnInit() {\r\n        this.retrieveResults();\r\n    }\r\n\r\n    onNavigatingAway(toUrl: string): boolean | Observable<boolean> | Promise<boolean> {\r\n        this.savePageState();\r\n\r\n        return true;\r\n    }\r\n\r\n    sortBy(field: string) {\r\n        var sortField: SortDefinition;\r\n        if (this.criteria.OrderBy) {\r\n            this.criteria.OrderBy.forEach(function (sort) {\r\n                if (sort.name === field) {\r\n                    sortField = sort;\r\n                }\r\n            }, this);\r\n        }\r\n\r\n        if (sortField) {\r\n            sortField.order = sortField.order === SortOrder.Ascending ? SortOrder.Descending : SortOrder.Ascending;\r\n        }\r\n        else {\r\n            sortField = { name: field, order: SortOrder.Ascending };\r\n            this.criteria.OrderBy = [sortField];\r\n        }\r\n\r\n        if (this.pageState) {\r\n            this.pageState.orderBy = sortField;\r\n        }\r\n\r\n        this.savePageState();\r\n\r\n        this.retrieveResults();\r\n    }\r\n\r\n    onRemoveClick(id: number): void {\r\n        for (var i = 0; i < this.criteria.FilterBy.length; i++) {\r\n            var fitlerItem = this.criteria.FilterBy[i];\r\n            if (fitlerItem.id == id) {\r\n                this.criteria.FilterBy.splice(i, 1);\r\n\r\n                if (fitlerItem.name === 'Title') {\r\n                    for (var j = 0; j < this.criteria.FilterBy.length; j++) {\r\n                        var item = this.criteria.FilterBy[j];\r\n                        if (item.name === 'Keyword') {\r\n                            this.criteria.FilterBy.splice(j, 1);\r\n                            j--;\r\n                        }\r\n                    }\r\n                }\r\n\r\n                break;\r\n            }\r\n        }\r\n\r\n        this.retrieveResults();\r\n    }\r\n\r\n    onEditSearchClick(): void {\r\n        this.router.navigateByUrl('forecast/search?hash=' + this.hash);\r\n    }\r\n\r\n    onRowClick(row): void {\r\n        this.router.navigateByUrl('forecast/details?id=' + encodeURIComponent(row.rowId) + '&hash=' + this.hash);\r\n    }\r\n\r\n    getDimensionData(index: CustomDimension): any {\r\n        switch (index) {\r\n            case 1:\r\n                return this.criteria;\r\n\r\n            default:\r\n                return null;\r\n        }\r\n    }\r\n\r\n    private retrieveResults(): void {\r\n        var __this__ = this;\r\n        this.results = new ReplaySubject<Results<any>>();\r\n        this.service\r\n            .getResults(this.criteria)\r\n            .subscribe(function (data: Results<any>) {\r\n                if (data.errorMessage) {\r\n                    console.warn(data.errorMessage);\r\n                    __this__.results.error({ message: \"Failed to retrieve data\" });\r\n                }\r\n                else {\r\n                   \r\n                    __this__.results.next(data);\r\n                }\r\n            }, function (error: ServiceError): void {\r\n                console.error(error.message);\r\n                __this__.results.error({ message: \"Failed to retrieve data\" });\r\n            }, function () {\r\n                __this__.results.complete();\r\n\r\n                __this__.loadPageState();\r\n            });\r\n    }\r\n\r\n    private loadPageState() {\r\n        this.grid.loadState();\r\n    }\r\n\r\n    private savePageState() {\r\n        this.grid.saveState();\r\n    }\r\n}\r\n","<h1>Search Results</h1>\r\n<app-results-grid #grid\r\n                  [columns]=\"columns\"\r\n                  [results]=\"results\"\r\n                  [state]=\"pageState\"\r\n                  exportFileName=\"Forecast\"\r\n                  (editSearch)=\"onEditSearchClick()\"\r\n                  (removeFilter)=\"onRemoveClick($event.target.id)\"\r\n                  (orderChange)=\"sortBy($event.target.name)\"></app-results-grid>\r\n","import { Component, OnInit, TemplateRef, SimpleChanges, OnChanges } from '@angular/core';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { BsModalRef, BsModalService, TypeaheadMatch } from 'ngx-bootstrap';\r\nimport { Observable, ReplaySubject } from 'rxjs';\r\nimport { INavigationDetails, NavigationTrigger } from 'src/Client/common/navigation-details';\r\nimport { CriteriaCollection, CriteriaData } from '../../../providers/criteria-data';\r\nimport { IOnBeforeNavigatingAway } from '../../../providers/navigation-gaurds';\r\nimport { StateStore } from '../../../providers/state-store';\r\nimport { ForecastService } from '../../../services/forecast.service';\r\nimport { CommonUtilities } from '../../../utilities/common-utilities';\r\nimport { element } from 'protractor';\r\n\r\n@Component({\r\n    selector: 'app-forecast-search',\r\n    templateUrl: './component.html',\r\n    styleUrls: ['./component.css']\r\n})\r\nexport class ForecastSearchComponent implements OnInit, IOnBeforeNavigatingAway, INavigationDetails, OnChanges {\r\n    public formData: ForecastSearchData;\r\n    public allAgencyClusters: any[];\r\n    public allAgencies: any[];\r\n    public allCommodities: NigpItem[];\r\n    public nigpPickerDialog: BsModalRef;\r\n    public isLoading: boolean;\r\n    public searchError: string;\r\n    public allTitles: TitleItem[];\r\n    public PreviousselectedQuarters: Array<string> = [];\r\n    public selectAllchecked: boolean = false;\r\n\r\n    public currentFiscalYear: number = CommonUtilities.getCurrentFiscalYear();\r\n\r\n    private hash: string;\r\n    private navigationTrigger: NavigationTrigger;\r\n\r\n    constructor(private criteriaData: CriteriaData, private state: StateStore, private service: ForecastService, private router: Router, private route: ActivatedRoute, private modalService: BsModalService) {\r\n        this.formData = new ForecastSearchData(this);\r\n\r\n        this.isLoading = true;\r\n        var __this__ = this;\r\n        this.loadPageData().subscribe(null, null, function () { __this__.isLoading = false; });\r\n    }\r\n\r\n    setNavigationDetails(trigger: NavigationTrigger): void {\r\n        this.navigationTrigger = trigger;;\r\n    }\r\n\r\n    ngOnInit() {\r\n        var __this__ = this;\r\n        this.route.queryParams.subscribe(function (query: Params) {\r\n            __this__.initialize(query.hash);\r\n        });\r\n    }\r\n\r\n    onNavigatingAway(toUrl: string): boolean | Observable<boolean> | Promise<boolean> {\r\n        if (!this.hash) {\r\n            var state = this.state.getState('forecast', 'search');\r\n            state.formData = this.formData.save();\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    onSearchClick(event: Event): void {\r\n        event.preventDefault();\r\n\r\n        var criteria = this.formData.save();\r\n\r\n        if (!ForecastService.validateCriteria(criteria)) {\r\n            this.searchError = 'At least one of the criteria must be selected';\r\n        }\r\n        else {\r\n            var hash = this.criteriaData.forecast.add(criteria);\r\n            this.state['forecast.results.' + hash] = null;\r\n            this.router.navigateByUrl('/forecast/results?hash=' + hash);\r\n        }\r\n    }\r\n    ngOnChanges(chnages: SimpleChanges): void {\r\n        console.log(\"change detect \",chnages);\r\n    }\r\n\r\n    getEstimatedRange(): string[] {\r\n        return ['$0 - $10,000', '$10,001 - $100,000', '$100,001 - $250,000', '$250,001 - $500,000', '$500,001 - $1,000,000', '$1,000,001 - $5,000,000' , '$5,000,001 - $10,000,000' ,'>$10,000,001']\r\n        // return CommonUtilities.getFiscalYears(5, 1);\r\n    }\r\n\r\n    getQuarter(): string[] {\r\n        return ['All','Q1','Q2','Q3','Q4']\r\n}\r\n\r\n    onClearClick(event: Event): void {\r\n        event.preventDefault();\r\n\r\n        this.formData.clear();\r\n        this.searchError = null;\r\n        this.formData.selectedEstimatedRange = [];\r\n        this.formData.selectedQuarters = [];\r\n    }\r\n\r\n    OnquarterChnage(event) {\r\n        debugger\r\n        let a = ['All', 'Q1', 'Q2', 'Q3', 'Q4'];\r\n        console.log(\"intial value is : \" + this.PreviousselectedQuarters)\r\n        let arr = a.every(r => this.formData.selectedQuarters.includes(r))\r\n        let element_checked = this.PreviousselectedQuarters.filter(element => !this.formData.selectedQuarters.includes(element))\r\n        if (event.selectedvalue.includes(\"All\")) {\r\n            this.formData.selectedQuarters = ['All', 'Q1', 'Q2', 'Q3', 'Q4']\r\n            this.selectAllchecked = true;\r\n            //this.PreviousselectedQuarters = event.selectedvalue\r\n        }\r\n        else if (this.selectAllchecked && arr) {\r\n            this.formData.selectedQuarters = [];\r\n            this.selectAllchecked = false;\r\n        }\r\n        else {\r\n            this.formData.selectedQuarters = event.selectedvalue;\r\n            //this.PreviousselectedQuarters = event.selectedvalue\r\n        }\r\n    }\r\n\r\n    showModal(event: Event, template: TemplateRef<any>): BsModalRef {\r\n        event.preventDefault();\r\n\r\n        return this.modalService.show(template, { class: 'modal-lg' });\r\n    }\r\n\r\n    closeModel(event: Event, dalogRef: BsModalRef) {\r\n        event.preventDefault();\r\n\r\n        dalogRef.hide();\r\n    }\r\n\r\n    onAgencyClusterChanged(): void {\r\n        if (!this.allAgencyClusters) {\r\n            return;\r\n        }\r\n\r\n        var __this__ = this;\r\n        var selectedCluster = this.allAgencyClusters.find(function (cluster) {\r\n            return cluster.id === __this__.formData.agencyClusterCode;\r\n        }, this);\r\n\r\n        var clusters = selectedCluster ? [selectedCluster] : this.allAgencyClusters;\r\n\r\n        var agencies = [];\r\n        var hasCurrentAgency = false;\r\n\r\n        clusters.forEach(function (cluster) {\r\n            cluster.agencies.forEach(function (agency) {\r\n                agencies.push(agency);\r\n                if (agency.id === __this__.formData.agencyCode) {\r\n                    hasCurrentAgency = true;\r\n                }\r\n            });\r\n        });\r\n\r\n        if (!hasCurrentAgency) {\r\n            this.formData.agencyCode = '';\r\n        }\r\n\r\n        agencies.sort(function (x, y) {\r\n            return x.displayName > y.displayName ? 1 : x.displayName < y.displayName ? -1 : 0;\r\n        });\r\n\r\n        this.allAgencies = agencies;\r\n    }\r\n\r\n    getAllFiscalYears(): string[] {\r\n        return CommonUtilities.getAllFiscalYears();\r\n    }\r\n\r\n    quoteWords(sentence: string): string {\r\n        var value = '';\r\n        sentence.split(' ').forEach(function (word) {\r\n            if (word) {\r\n                value = (value ? value + ' ' : '') + '\"' + word.toLowerCase() + '\"';\r\n            }\r\n        });\r\n\r\n        return value;\r\n    }\r\n\r\n    private initialize(hash: string): void {\r\n        this.hash = hash;\r\n        var criteria: CriteriaCollection;\r\n        if (hash) {\r\n            criteria = this.criteriaData.forecast.get(this.hash);\r\n        }\r\n        else if (this.navigationTrigger === NavigationTrigger.PopState && this.state['forecast.search']) {\r\n            criteria = this.state['forecast.search'].formData;\r\n        }\r\n\r\n        this.formData.initialize(criteria);\r\n    }\r\n\r\n    private loadPageData(): Observable<any> {\r\n        var __this__ = this;\r\n        var subject = new ReplaySubject<any>();\r\n        var counter = 0;\r\n\r\n        counter++;\r\n        this.service.getAllAgencyClusters().subscribe(function (items: any[]) {\r\n            __this__.allAgencyClusters = items;\r\n            __this__.onAgencyClusterChanged();\r\n        }, function () {\r\n            __this__.allAgencyClusters = [];\r\n            __this__.onAgencyClusterChanged();\r\n            counter--;\r\n            if (counter <= 0) {\r\n                subject.complete();\r\n            }\r\n        }, function () {\r\n            counter--;\r\n            if (counter <= 0) {\r\n                subject.complete();\r\n            }\r\n        });\r\n\r\n        counter++;\r\n        this.service.getAllCommodities().subscribe(function (items: any[]) {\r\n            __this__.allCommodities = [];\r\n            items.forEach(function (item) {\r\n                __this__.allCommodities.push({ code: item.code, description: item.code + ' ' + item.description, isSelected: false });\r\n            });\r\n        }, function () {\r\n            __this__.allCommodities = [];\r\n            counter--;\r\n            if (counter <= 0) {\r\n                subject.complete();\r\n            }\r\n        }, function () {\r\n            var code = __this__.formData.commodityCode;\r\n            __this__.formData.commodity = code ? __this__.allCommodities.find(function (item) { return item.code === code; }).description : null;\r\n            counter--;\r\n            if (counter <= 0) {\r\n                subject.complete();\r\n            }\r\n        });\r\n\r\n        counter++;\r\n        this.service.getAllTitles().subscribe(function (items: string[]) {\r\n            __this__.allTitles = [];\r\n            items.forEach(function (item) {\r\n                __this__.allTitles.push({ key: 'title', group: 'Suggested', value: item });\r\n            });\r\n        }, function () {\r\n            __this__.allTitles = [];\r\n            counter--;\r\n            if (counter <= 0) {\r\n                subject.complete();\r\n            }\r\n        }, function () {\r\n            counter--;\r\n            if (counter <= 0) {\r\n                subject.complete();\r\n            }\r\n        });\r\n\r\n        return subject;\r\n    }\r\n}\r\n\r\ndeclare type NigpItem = { code: string, description: string, isSelected: boolean };\r\ndeclare type TitleItem = { key: string, group: string, value: string };\r\n\r\nclass ForecastSearchData {\r\n    public agencyClusterCode: string = '';\r\n    public agencyCode: string = '';\r\n    public commodity: string = '';\r\n    public commodityCode: string = '';\r\n    public quarter: string = '';\r\n    public amount: { from: string; to: any; } = { from: null, to: null };\r\n    //estimatedRange\r\n    public title: string;\r\n    public keywords: string;\r\n    public selectedEstimatedRange: Array<string> = [];\r\n    public selectedQuarters: Array<string> = [];\r\n    public PreviousselectedQuarters: Array<string> = [];\r\n\r\n    private criteria: CriteriaCollection;\r\n\r\n    public constructor(private owner: ForecastSearchComponent) {\r\n    }\r\n\r\n    initialize(criteria: CriteriaCollection): void {\r\n        this.criteria = criteria;\r\n\r\n        this.load();\r\n    }\r\n\r\n\r\n    onCommoditySelected(match: TypeaheadMatch): void {\r\n        this.commodityCode = match.item.code;\r\n\r\n        this.updateSelection(match.item);\r\n    }\r\n\r\n    onCommodityInput(): void {\r\n        this.commodityCode = '';\r\n\r\n        this.updateSelection(null);\r\n    }\r\n\r\n    nigpSelected(item: NigpItem): void {\r\n        this.commodityCode = item.code;\r\n        this.commodity = item.description;\r\n\r\n        this.updateSelection(item);\r\n    }\r\n\r\n    onTitleSelected(match: TypeaheadMatch): void {\r\n        this.title = match.item.key === 'keyword' ? null : match.item.value;\r\n    }\r\n\r\n    // Handles typing in using keyboard\r\n    onCurrencyKeyPressed(event): boolean {\r\n        return event.which === 8 // backspace key (required for firefox)\r\n            || (event.which === 0 && event.keyCode === 9) // tab key (required for firefox)\r\n            || (event.which === 0 && event.keyCode === 46) // delete key (required for firefox)\r\n            || (event.which === 0 && event.keyCode) === 36 // home key (required for firefox)\r\n            || (event.which === 0 && event.keyCode === 35) // end key (required for firefox)\r\n            || (event.which === 0 && event.keyCode) === 37 // left arrow key (required for firefox)\r\n            || (event.which === 0 && event.keyCode) === 39 // right arrow key (required for firefox)\r\n            || (event.ctrlKey && event.which === 97) // Select all action (with ctrl key)\r\n            || (event.ctrlKey && event.which === 99) // Clipboard copy action (with ctrl key)\r\n            || (event.ctrlKey && event.which === 120) // Clipboard cut action (with ctrl key)\r\n            || ((event.target.value.length <= 10 || event.target.selectionEnd > event.target.selectionStart)\r\n                && (!event.shiftKey && event.which >= 48 && event.which <= 57) // Keys 0 to 9 (without shift key)\r\n                || (event.ctrlKey && event.which === 118) // Clipboard paste action (with ctrl key)\r\n            );\r\n    }\r\n\r\n    // Handles typing in using keyboard\r\n    onTitleKeyPressed(event): boolean {\r\n        return event.which === 8 // backspace key (required for firefox)\r\n            || event.which === 32 // space key\r\n            || event.which === 0 && event.keyCode === 35 // end key (required for firefox)\r\n            || event.which === 0 && event.keyCode === 36 // home key (required for firefox)\r\n            || event.which === 0 && event.keyCode === 37 // left arrow key (required for firefox)\r\n            || event.which === 0 && event.keyCode === 39 // right arrow key (required for firefox)\r\n            || event.which === 0 && event.keyCode === 46 // delete key (required for firefox)\r\n            || (event.which >= 65 && event.which <= 90) // Keys A to Z\r\n            || (event.which >= 97 && event.which <= 122) // Keys a to z\r\n            || (!event.shiftKey && event.which >= 48 && event.which <= 57) // Keys 0 to 9 (without shift key)\r\n            ;\r\n    }\r\n\r\n    // Handles other ways of input like pasting from clipboard\r\n    onCurrencyInput(event, field): void {\r\n        var value: string = event.target.value;\r\n        var filteredValue: string = '';\r\n        for (var i = 0; i < value.length; i++) {\r\n            var charCode = value.toUpperCase().charCodeAt(i);\r\n            if (charCode >= 48 && charCode <= 57) {\r\n                filteredValue += value.charAt(i);\r\n            }\r\n        }\r\n\r\n        var currencyValue = parseInt(filteredValue);\r\n        if (isNaN(currencyValue) || currencyValue < 0) {\r\n            currencyValue = 0;\r\n        }\r\n        else if (currencyValue > 9999999999) {\r\n            currencyValue = 9999999999;\r\n        }\r\n\r\n        switch (field) {\r\n            case 'from':\r\n                this.amount = { from: (event.target.value = (currencyValue === 0 ? '' : '$' + currencyValue.toString())), to: this.amount.to };\r\n                break;\r\n\r\n            case 'to':\r\n                this.amount = { from: this.amount.from, to: (event.target.value = (currencyValue == 0 ? '' : '$' + currencyValue.toString())) };\r\n                break;\r\n        }\r\n    }\r\n\r\n    // Handles other ways of input like pasting from clipboard\r\n    onTitleInput(event): void {\r\n        var value: string = event.target.value;\r\n        var filteredValue: string = '';\r\n        for (var i = 0; i < value.length; i++) {\r\n            var charCode = value.toUpperCase().charCodeAt(i);\r\n            if (charCode == 32 || (charCode >= 65 && charCode <= 90) || (charCode >= 65 && charCode <= 90) || (charCode >= 48 && charCode <= 57)) {\r\n                filteredValue += value.charAt(i);\r\n            }\r\n        }\r\n\r\n        filteredValue = filteredValue.trim();\r\n        this.keywords = filteredValue;\r\n\r\n        if (this.owner.allTitles) {\r\n            for (var i = 0; i < this.owner.allTitles.length; i++) {\r\n                if (this.owner.allTitles[i].key === 'keyword') {\r\n                    this.owner.allTitles.splice(i--, 1);\r\n                }\r\n            }\r\n\r\n            this.owner.allTitles.splice(0, 0, { key: 'keyword', group: '', value: filteredValue });\r\n        }\r\n\r\n        this.title = null;\r\n    }\r\n\r\n    onCurrencyBlur(event, field): void {\r\n        const fromAmount = parseInt((this.amount.from || '').substr(1));\r\n        const toAmount = parseInt((this.amount.to || '').substr(1));\r\n\r\n        switch (field) {\r\n            case 'from':\r\n                if (!isNaN(toAmount) && fromAmount > toAmount) {\r\n                    this.amount.from = event.target.value = null;\r\n                }\r\n                break;\r\n\r\n            case 'to':\r\n                if (!isNaN(fromAmount) && fromAmount > toAmount) {\r\n                    this.amount.to = event.target.value = null;\r\n                }\r\n                break;\r\n        }\r\n    }\r\n\r\n    private updateSelection(item: NigpItem) {\r\n        this.owner.allCommodities.forEach(function (it: NigpItem) {\r\n            it.isSelected = item && (it.code === item.code);\r\n        });\r\n    }\r\n\r\n    public clear(): void {\r\n        this.agencyClusterCode = '';\r\n        this.agencyCode = '';\r\n        this.commodityCode = '';\r\n        this.commodity = '';\r\n        this.quarter = '';\r\n        this.amount = { from: null, to: null };\r\n        this.keywords = '';\r\n        this.title = null;\r\n        this.owner.searchError = null;\r\n\r\n        this.owner.onAgencyClusterChanged();\r\n    }\r\n\r\n    public save(): CriteriaCollection {\r\n        var criteria = new CriteriaCollection();\r\n\r\n        if (this.agencyClusterCode) {\r\n            criteria.put('AgencyCluster', this.agencyClusterCode);\r\n        }\r\n\r\n        if (this.agencyCode) {\r\n            criteria.put('Agency', this.agencyCode);\r\n        }\r\n\r\n        if (this.commodityCode) {\r\n            criteria.put('CommodityCode', this.commodityCode);\r\n        }\r\n\r\n        if (this.quarter) {\r\n            criteria.put('Quarter', this.quarter);\r\n        }\r\n\r\n        if (this.amount.from) {\r\n            criteria.put('Amount.From', CommonUtilities.currencyToNumber(this.amount.from));\r\n        }\r\n\r\n        if (this.amount.to) {\r\n            criteria.put('Amount.To', CommonUtilities.currencyToNumber(this.amount.to));\r\n        }\r\n\r\n        this.selectedEstimatedRange.forEach(function (selectedRange) {\r\n            criteria.put('SelectedRange', selectedRange);\r\n        }, this);\r\n\r\n        this.selectedQuarters.forEach(function (selectedQtr) {\r\n            criteria.put('SelectedQtr', selectedQtr);\r\n        }, this);\r\n\r\n        this.keywords.trim().split(' ').forEach(function (keyword: string) {\r\n            if (keyword) {\r\n                criteria.put('Keyword', keyword);\r\n            }\r\n        }, this);\r\n\r\n        if (this.title) {\r\n            criteria.put('Title', this.title);\r\n        }\r\n\r\n        return criteria;\r\n    }\r\n\r\n    private load(): void {\r\n        this.agencyClusterCode = (this.criteria ? this.criteria.get<string>(\"AgencyCluster\")[0] : null) || '';\r\n\r\n        this.agencyCode = (this.criteria ? this.criteria.get<string>(\"Agency\")[0] : null) || '';\r\n\r\n        var code = this.commodityCode = (this.criteria ? this.criteria.get<string>(\"CommodityCode\")[0] : null) || '';\r\n        this.commodity = code ? this.owner.allCommodities ? this.owner.allCommodities.find(function (item) { return item.code === code; }).description : code : null;\r\n\r\n        this.quarter = (this.criteria ? this.criteria.get<string>(\"Quarter\")[0] : null) || '';\r\n        //this.selectedQuarters.forEach(qtr => {\r\n        //    if (qtr) {\r\n        //        criteria.put('\"Quarter\"', qtr);\r\n        //    }\r\n        //});\r\n        this.selectedQuarters = this.criteria ? this.criteria.get<string>('SelectedQtr') : [];\r\n        this.selectedEstimatedRange = this.criteria ? this.criteria.get<string>('SelectedRange') : [];\r\n        //\"SelectedQtr\"\r\n        const fromAmount = this.criteria ? this.criteria.get<number>('Amount.From')[0] : null;\r\n        const toAmount = this.criteria ? this.criteria.get<number>('Amount.To')[0] : null;\r\n        this.amount = {\r\n            from: fromAmount ? '$' + fromAmount.toString() : null,\r\n            to: toAmount ? '$' + toAmount.toString() : null\r\n        };\r\n\r\n        this.keywords = this.criteria ? this.criteria.get<string>('Keyword').join(' ') : '';\r\n        this.title = this.criteria ? this.criteria.get<string>('Title')[0] : null;\r\n\r\n        this.owner.onAgencyClusterChanged();\r\n    }\r\n}\r\n","<h1>Search Forecast</h1>\r\n<form>\r\n    <div class=\"form-group\">\r\n        <div class=\"row\">\r\n            <div class=\"col-lg-6 mt-auto mb-auto\">\r\n                <div class=\"error-message\" *ngIf=\"searchError\">{{searchError}}</div>\r\n            </div>\r\n            <div class=\"col text-right\">\r\n                <button class=\"btn btn-primary \"> <a href=\"//ocp.dc.gov/page/opportunities-support\" target=\"_blank\" class=\"oppurtunity-support-page\">More Information</a></button>\r\n                <button class=\"btn btn-default\" (click)=\"onClearClick($event)\">Clear All</button>\r\n                <button class=\"btn btn-primary\" (click)=\"onSearchClick($event)\">Search Forecast</button>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <hr />\r\n    <div class=\"form-group\">\r\n        <div class=\"row\">\r\n            <div class=\"col-lg-8\">\r\n                <ng-template #customItemTemplate let-item=\"item\" let-index=\"index\">\r\n                    <span>{{item.key === 'keyword' ? 'Search for ' + quoteWords(item.value) : item.value}}</span>\r\n                </ng-template>\r\n                <label class=\"label-head\" for=\"title\">Project Title/Description</label>\r\n                <div class=\"label-sub-head\">Begin typing in keywords or select title from the list</div>\r\n                <input id=\"title\" name=\"title\" type=\"text\" class=\"form-control\" autocomplete=\"off\"\r\n                       title=\"Begin typing in keywords or select title from the list\" [(ngModel)]=\"formData.keywords\"\r\n                       [typeahead]=\"allTitles\" typeaheadGroupField=\"group\" typeaheadOptionField=\"value\" [typeaheadItemTemplate]=\"customItemTemplate\"\r\n                       (typeaheadOnSelect)=\"formData.onTitleSelected($event)\" (input)=\"formData.onTitleInput($event)\" (keypress)=\"formData.onTitleKeyPressed($event)\" />\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"form-group\">\r\n        <div class=\"row\">\r\n            <!--<div class=\"col-lg-4\" title=\"CFO Clusters\">\r\n        <label class=\"label-head\" for=\"agencycluster\">Agency Cluster</label>\r\n        <div class=\"label-sub-head\">Select an agency cluster</div>\r\n        <select id=\"agencycluster\" name=\"agencycluster\" type=\"text\" class=\"form-control\" title=\"Select an agency cluster\" [(ngModel)]=\"formData.agencyClusterCode\" (change)=\"onAgencyClusterChanged()\">\r\n            <option value=\"\"></option>\r\n            <option *ngFor=\"let cluster of allAgencyClusters\" value=\"{{cluster.id}}\">{{cluster.displayName}}</option>\r\n        </select>\r\n    </div>-->\r\n            <div class=\"col-lg-4\">\r\n                <label class=\"label-head\" for=\"agencyname\">Agency</label>\r\n                <div class=\"label-sub-head\">Select an agency</div>\r\n                <select id=\"agencyname\" name=\"agencyname\" type=\"text\" class=\"form-control\" title=\"Select an agency\" [(ngModel)]=\"formData.agencyCode\">\r\n                    <option value=\"\"></option>\r\n                    <option *ngFor=\"let agency of allAgencies\" value=\"{{agency.id}}\">{{agency.displayName}}</option>\r\n                </select>\r\n            </div>\r\n            <div class=\"col-lg-4\">\r\n                <div class=\"row\">\r\n\r\n                    <div class=\"col\">\r\n                        <label class=\"label-head\" for=\"odate\">Estimated Range</label>\r\n                        <div class=\"label-sub-head\">Select Estimated Value Range</div>\r\n                        <app-multiselect-dropdown id=\"es\" name=\"es\" ariaLabel=\"Estimated Range\" title=\"Select Estimated Value Range\"\r\n                                                  [values]=\"getEstimatedRange()\" [selectedvalue]=\"formData.selectedEstimatedRange\"></app-multiselect-dropdown>\r\n\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"form-group\">\r\n        <div class=\"row\">\r\n            <div class=\"col-lg-6\">\r\n                <label class=\"label-head\" for=\"commodity\">NIGP Code</label><a href=\"javascript:void(0)\" title=\"View full list of NIGP codes\" (click)=\"nigpPickerDialog=showModal($event,nigpPicker)\"><span aria-hidden=\"true\" class=\"fa fa-info-circle help-link\"></span></a>\r\n                <div class=\"label-sub-head\">Enter first three digits of NIGP code or a keyword and select from the list</div>\r\n                <input id=\"commodity\" name=\"commodity\" type=\"text\" class=\"form-control\" autocomplete=\"off\"\r\n                       title=\"Enter first three digits of NIGP code or a keyword and select from the list\" [(ngModel)]=\"formData.commodity\"\r\n                       [typeahead]=\"allCommodities\" typeaheadOptionField=\"description\" (typeaheadOnSelect)=\"formData.onCommoditySelected($event)\" (input)=\"formData.onCommodityInput()\" />\r\n                <ng-template #nigpPicker>\r\n                    <div class=\"modal-header\">\r\n                        <h4 class=\"modal-title\">NIGP Codes</h4>\r\n                        <a href=\"javascript:void(0)\" (click)=\"closeModel($event,nigpPickerDialog)\"><span class=\"fa fa-close\"></span></a>\r\n                    </div>\r\n                    <div class=\"modal-body\">\r\n                        <h5>Select an option from below</h5>\r\n                        <div *ngFor=\"let item of allCommodities\">\r\n                            <label><input type=\"radio\" [checked]=\"item.isSelected\" (change)=\"formData.nigpSelected(item)\" /> {{item.description}}</label>\r\n                        </div>\r\n                    </div>\r\n                </ng-template>\r\n            </div>\r\n            <div class=\"col-lg-2\">\r\n                <label class=\"label-head\" for=\"odate\">Quarter</label>\r\n                <div class=\"label-sub-head\">Select a quarter</div>\r\n                <div>\r\n                   \r\n                    <app-multiselect-dropdown id=\"qtr\" name=\"qtr\" ariaLabel=\"Select a quarter\" title=\"Select a quarter\"\r\n                                              [values]=\"getQuarter()\" [selectedvalue]=\"formData.selectedQuarters\" (change)=\"OnquarterChnage(qtr)\" #qtr></app-multiselect-dropdown>\r\n        </div>\r\n            </div>\r\n            <!--<div class=\"col-lg-4\">\r\n                <div class=\"row\">\r\n                   \r\n                    <div class=\"col\">\r\n                        <label class=\"label-head\" for=\"odate\">Estimated Range</label>\r\n                        <div class=\"label-sub-head\">Select Estimated Value Range</div>\r\n                        <app-multiselect-dropdown id=\"es\" name=\"es\" ariaLabel=\"Estimated Range\" title=\"Select Estimated Value Range\"\r\n                                                  [values]=\"getEstimatedRange()\" [selectedvalue]=\"formData.selectedEstimatedRange\"></app-multiselect-dropdown>\r\n\r\n                    </div>\r\n                </div>\r\n            </div>-->\r\n        </div>\r\n    </div>\r\n    <hr />\r\n    <div class=\"form-group\">\r\n        <div class=\"row\">\r\n            <div class=\"col-lg-12\"></div>\r\n            <div class=\"col text-right\">\r\n                <button class=\"btn btn-primary \"  > <a href=\"//ocp.dc.gov/page/opportunities-support\" target=\"_blank\"  class=\"oppurtunity-support-page\">More Information</a></button>\r\n                <button class=\"btn btn-default\" (click)=\"onClearClick($event)\">Clear All</button>\r\n                <button class=\"btn btn-primary\" (click)=\"onSearchClick($event)\">Search Forecast</button>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</form>\r\n<div *ngIf=\"isLoading\" class=\"loader-overlay text-center\"></div>\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, ReplaySubject } from 'rxjs';\r\nimport { Criteria, CriteriaCollection } from '../providers/criteria-data';\r\nimport { ApiCriteria, BaseService } from './base-service';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class ForecastService extends BaseService {\r\n    private agencyClustersSubject: ReplaySubject<any[]>;\r\n    private commoditiesSubject: ReplaySubject<any[]>;\r\n    private titlesSubject: ReplaySubject<string[]>;\r\n\r\n    constructor(httpClient: HttpClient) {\r\n        super(httpClient, 'forecast');\r\n    }\r\n\r\n    public getAllAgencyClusters(): Observable<any[]> {\r\n        return this.agencyClustersSubject || this.getItem('agencies', this.agencyClustersSubject = new ReplaySubject<any[]>());\r\n    }\r\n\r\n    public getAllCommodities(): Observable<any[]> {\r\n        return this.commoditiesSubject || this.getItem('commodities', this.commoditiesSubject = new ReplaySubject<any[]>());\r\n    }\r\n\r\n    public getAllTitles(): Observable<string[]> {\r\n        return this.titlesSubject || this.getItem('titles', this.titlesSubject = new ReplaySubject<string[]>());\r\n    }\r\n\r\n    public getResults(criteria: ApiCriteria): Observable<any> {\r\n        return this.postCriteria('search', criteria, new ReplaySubject());\r\n    }\r\n\r\n    public getDetails(rowId: number): Observable<any> {\r\n        return this.getItem('details?id=' + rowId, new ReplaySubject<any>(), 'Contract details could not be retrieved');\r\n    }\r\n\r\n    public static validateCriteria(criteria: CriteriaCollection): boolean {\r\n        return !!criteria && criteria.count(function (criteria: Criteria) { return criteria.name !== 'DatesOption' && criteria.name !== 'IsExpanded'; }) > 0;\r\n    }\r\n}\r\n"],"names":[],"sourceRoot":"webpack:///"}