{"version":3,"file":"436.2a677c22198d194b.js","mappings":"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","names":["getOverviewData","createAction","props","getOverviewDataSuccess","loadRecentSearch","loadRecentSearchSuccess","homeFeatureKey","reducer","createReducer","surveyOverviewSummary","employeeExperienceSummary","supplierInsightsSummary","timePeriod","TimeValueOptions","recentSearch","initialState","on","state","value","payload","surveyStats","employeeStats","supplierStats","homeReducer","action","selectHomeState","createFeatureSelector","fromHome","selectSupplierInsights","createSelector","selectEmployeeExperience","selectSurveyOverview","selectSurveyVolume","volumes","selectTimeSeries","selectHighestSupplier","insights","highestSupplier","selectLowestSupplier","lowestSupplier","selectRecentSearch","selectRecentSearchSortedDate","sort","a","b","creationDate","selectRecentSearchesTopThree","selectRecentSearchSorted","slice","EmployeeExperienceSummaryDoughnutInnerTextComponent","constructor","this","selectors","i0","EmployeeExperienceSummaryDoughnutComponent","store","colorPicker","maintainAspectRatio","cutout","ngOnInit","experienceSummary$","select","Home","pipe","filter","isNotNull","tap","summary","data","datasets","backgroundColor","getColor","score","borderWidth","labels","colorByScore","core","JourneyBarComponent","colorService","plugins","legend","display","tooltip","mode","intersect","position","tooltipBg","scales","y","suggestedMin","grid","x","ticks","font","style","size","xFontSize","color","blueOne","barData$","map","phaseStats","ps","name","toLowerCase","normalized","EmployeeExperienceSummaryComponent","HighestSupplierComponent","_class","tslib_es6","Unsubscriber","LowestSupplierComponent","SupplierInsightSummaryDoughnutComponent","supplierSummary$","doughnutData","averageScore","SupplierInsightsSummaryComponent","SurveyOverviewSummaryDoughnutComponent","survey_overview_summary_doughnut_component_class","overview$","doughnutData$","overview","total","totalCount","complete","completedCount","percentage","Math","round","minutesSpent","minutes","floor","seconds","averageResponseTime","SurveyStatsUtilsService","Date","getMonth","generateSurveyStats","timeSeries","response","template","generateTemplate","forEach","r","get","month","set","values","getNumMonths","currentMonth","getStartIndex","n","start","Map","i","factory","VolumeBarComponent","ssUtils","min","drawBorder","callback","val","index","length","getLabelForValue","Number","toString","substring","toLocaleLowerCase","maxRotation","minRotation","isNotNullOrUndefined","withLatestFrom","v","max","newOptions","options","maxTicksLimit","borderColor","barThickness","tension","fill","SurveyOverviewSummaryComponent","HomeChevronComponent","RecentSearchResultsContainerComponent","SuppliersHireHeaderComponent","CategoryImagesPipe","transform","trim","pure","CategoryItemComponent","ctx_r11","SupplierOverviewComponent","fb","router","route","group","employeeRange","Validators","ServiceTypeQuestions","ServiceTypeData","EmployeeNumberData","Object","keys","_serviceTypeData","responseOptions","k","serviceQuestionsMap","resp","employerProgramForm","onSelectCategory","event","cat","stopPropagation","categorySelected","categoryId","key","categoryName","unselectCategory","reset","resetCategoryCount","onShowmore","categoryVisible","serviceTypeQuestions","invertKV","kv","reduce","obj","routeToSupplierMatching","supplierMatchingParams","serviceTypeId","numberEmployeesId","navigate","snapshot","params","clientId","queryParams","_serviceTypeQuestions","employeeRangeList","_employeeNumberData","onClear","componentAnimations","HomeComponent","home_component_class","lastUpdatedOn","Auth","client","hasInsightsAccess","subscriptions","SubscriptionOptions","dispatch","HomeActions","period","subscribe","onTimeChange","routes","path","component","title","HomeRoutingModule","RouterModule","HomeOverviewService","http","getOverview","timeValue","startDate","endDate","setUTCMonth","setUTCDate","setUTCHours","toISOString","getRecentSearches","HomeEffects","action$","homeOverviewService","createEffect","ofType","switchMap","MarketplaceEffects","searchList","HomeStoreModule","CommonModule","StoreModule","EffectsModule","HomeModule","SharedModule","DashboardModule","ChartsModule","MatTabsModule","SupplierHomeModule"],"sourceRoot":"webpack:///","sources":["./src/app/home/store/actions/time-period.actions.ts","./src/app/home/store/actions/recent-search.actions.ts","./src/app/home/store/reducers/home.reducers.ts","./src/app/home/store/selectors/root.selectors.ts","./src/app/home/store/selectors/home.selectors.ts","./src/app/home/store/selectors/recent-search.selectors.ts","./src/app/home/components/employee-experience-summary-doughnut-inner-text/employee-experience-summary-doughnut-inner-text.component.ts","./src/app/home/components/employee-experience-summary-doughnut-inner-text/employee-experience-summary-doughnut-inner-text.component.html","./src/app/home/components/employee-experience-summary-doughnut/employee-experience-summary-doughnut.component.html","./src/app/home/components/employee-experience-summary-doughnut/employee-experience-summary-doughnut.component.ts","./src/app/home/components/journey-bar/journey-bar.component.ts","./src/app/home/components/journey-bar/journey-bar.component.html","./src/app/home/components/employee-experience-summary/employee-experience-summary.component.ts","./src/app/home/components/employee-experience-summary/employee-experience-summary.component.html","./src/app/home/components/highest-supplier/highest-supplier.component.html","./src/app/home/components/highest-supplier/highest-supplier.component.ts","./src/app/home/components/lowest-supplier/lowest-supplier.component.html","./src/app/home/components/lowest-supplier/lowest-supplier.component.ts","./src/app/home/components/supplier-insight-summary-doughnut/supplier-insight-summary-doughnut.component.html","./src/app/home/components/supplier-insight-summary-doughnut/supplier-insight-summary-doughnut.component.ts","./src/app/home/components/supplier-insights-summary/supplier-insights-summary.component.ts","./src/app/home/components/supplier-insights-summary/supplier-insights-summary.component.html","./src/app/home/components/survey-overview-summary-doughnut/survey-overview-summary-doughnut.component.ts","./src/app/home/components/survey-overview-summary-doughnut/survey-overview-summary-doughnut.component.html","./src/app/home/services/survey-stats-utils.service.ts","./src/app/home/components/volume-bar/volume-bar.component.ts","./src/app/home/components/volume-bar/volume-bar.component.html","./src/app/home/components/survey-overview-summary/survey-overview-summary.component.ts","./src/app/home/components/survey-overview-summary/survey-overview-summary.component.html","./src/app/home/components/home-chevron/home-chevron.component.ts","./src/app/home/components/home-chevron/home-chevron.component.html","./src/app/home/components/recent-search-results/recent-search-results-container/recent-search-results-container.component.html","./src/app/home/components/recent-search-results/recent-search-results-container/recent-search-results-container.component.ts","./src/app/home/components/suppliers-for-hire/suppliers-hire-header/suppliers-hire-header.component.ts","./src/app/home/components/suppliers-for-hire/suppliers-hire-header/suppliers-hire-header.component.html","./src/app/home/services/category-images.pipe.ts","./src/app/home/components/suppliers-for-hire/category-item/category-item.component.ts","./src/app/home/components/suppliers-for-hire/category-item/category-item.component.html","./src/app/home/components/suppliers-for-hire/supplier-category-overview/supplier-category-overview.component.html","./src/app/home/components/suppliers-for-hire/supplier-category-overview/supplier-category-overview.component.ts","./src/app/home/components/home/home.component.html","./src/app/home/components/home/home.component.ts","./src/app/home/home-routing.module.ts","./src/app/home/services/home-overview.service.ts","./src/app/home/store/effects/home.effects.ts","./src/app/home/store/effects/marketplace.effects.ts","./src/app/home/store/home-store.module.ts","./src/app/home/home.module.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\r\nimport { TimeValueOptions } from 'src/app/dashboard';\r\nimport { IHomeOverviewSummary } from '../../models/home-overview-summary.model';\r\n\r\nexport const getOverviewData = createAction(\r\n '[Home] Get Overview Data',\r\n props<{ value: TimeValueOptions }>()\r\n);\r\n\r\nexport const getOverviewDataSuccess = createAction(\r\n '[Home Effects] Get Home Overview Data Success',\r\n props<{ value: IHomeOverviewSummary}>()\r\n);\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { GetRecentSearchesDto } from 'src/app/home/models';\r\n\r\nexport const loadRecentSearch = createAction('[Recent Search Component] Load Recent Search');\r\n\r\nexport const loadRecentSearchSuccess = createAction(\r\n '[Marketplace Effects] Load Recent Search Success',\r\n props<{ recentSearch: GetRecentSearchesDto[] }>()\r\n);\r\n","import { Action, createReducer, on } from '@ngrx/store';\r\nimport { IEmployeeExperienceSummary, ISupplierInsightsSummary, ISurveyStats } from '../../models';\r\nimport { TimeValueOptions } from 'src/app/dashboard';\r\nimport { getOverviewData, getOverviewDataSuccess } from '../actions';\r\nimport {\r\n loadRecentSearch,\r\n loadRecentSearchSuccess,\r\n} from 'src/app/home/store/actions/recent-search.actions';\r\nimport { GetRecentSearchesDto } from 'src/app/home/models';\r\n\r\nexport const homeFeatureKey = 'home';\r\n\r\nexport interface HomeState {\r\n surveyOverviewSummary: ISurveyStats | null;\r\n employeeExperienceSummary: IEmployeeExperienceSummary | null;\r\n supplierInsightsSummary: ISupplierInsightsSummary | null;\r\n timePeriod: TimeValueOptions;\r\n recentSearch: GetRecentSearchesDto[];\r\n}\r\n\r\nconst initialState: HomeState = {\r\n surveyOverviewSummary: null,\r\n employeeExperienceSummary: null,\r\n supplierInsightsSummary: null,\r\n timePeriod: TimeValueOptions.twelveMonths,\r\n recentSearch: [],\r\n};\r\n\r\nconst reducer = createReducer(\r\n initialState,\r\n on(getOverviewData, (state, { value }) => ({\r\n ...state,\r\n timePeriod: value,\r\n })),\r\n\r\n on(getOverviewDataSuccess, (state, payload) => ({\r\n ...state,\r\n surveyOverviewSummary: payload.value.surveyStats,\r\n employeeExperienceSummary: payload.value.employeeStats,\r\n supplierInsightsSummary: payload.value.supplierStats,\r\n })),\r\n\r\n on(loadRecentSearch, (state) => ({\r\n ...state,\r\n recentSearch: [],\r\n })),\r\n\r\n on(loadRecentSearchSuccess, (state, { recentSearch }) => ({\r\n ...state,\r\n recentSearch,\r\n })),\r\n);\r\n\r\nexport function homeReducer(state: HomeState | undefined, action: Action) {\r\n return reducer(state, action);\r\n}\r\n","import { createFeatureSelector } from '@ngrx/store';\r\nimport * as fromHome from '../reducers/home.reducers';\r\n\r\n\r\nexport const selectHomeState = createFeatureSelector(fromHome.homeFeatureKey);\r\n","import { createSelector } from '@ngrx/store';\r\nimport { selectHomeState } from './index';\r\n\r\nexport const selectSupplierInsights = createSelector(selectHomeState, (state) => state.supplierInsightsSummary);\r\n\r\nexport const selectEmployeeExperience = createSelector(selectHomeState, (state) => state.employeeExperienceSummary);\r\n\r\nexport const selectSurveyOverview = createSelector(selectHomeState, (state) => state.surveyOverviewSummary);\r\n\r\nexport const selectSurveyVolume = createSelector(selectSurveyOverview, state => state?.volumes);\r\n\r\nexport const selectTimeSeries = createSelector(selectHomeState, (state) => state.timePeriod);\r\n\r\nexport const selectHighestSupplier = createSelector(selectSupplierInsights, (insights) => insights?.highestSupplier);\r\n\r\nexport const selectLowestSupplier = createSelector(selectSupplierInsights, (insights) => insights?.lowestSupplier);\r\n","import { selectHomeState } from './index';\r\nimport { createSelector } from '@ngrx/store';\r\n\r\nexport const selectRecentSearch = createSelector(selectHomeState, (state) => state?.recentSearch);\r\n\r\nexport const selectRecentSearchSortedDate = createSelector(selectRecentSearch, (recentSearch) => {\r\n if(recentSearch) {\r\n return [...recentSearch].sort((a, b) => (a.creationDate < b.creationDate ? 1 : -1));\r\n }\r\n});\r\n\r\nexport const selectRecentSearchesTopThree = createSelector(selectRecentSearchSortedDate, (selectRecentSearchSorted) => {\r\n return selectRecentSearchSorted?.slice(0, 3);\r\n});\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'maas-employee-experience-summary-doughnut-inner-text',\r\n templateUrl: './employee-experience-summary-doughnut-inner-text.component.html',\r\n styleUrls: ['./employee-experience-summary-doughnut-inner-text.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EmployeeExperienceSummaryDoughnutInnerTextComponent {\r\n @Input() score: number = 0;\r\n @Input() goal: number = 0;\r\n @Input() color: string = '';\r\n}\r\n","
\r\n
{{ score }}
\r\n
\r\n
current score
\r\n
\r\n goal - {{ goal }}\r\n
\r\n
\r\n
\r\n","
\r\n \r\n\r\n \r\n
\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs/internal/Observable';\r\nimport { HomeState } from '../../store/reducers/home.reducers';\r\nimport { Store } from '@ngrx/store';\r\nimport { Home } from '../../store';\r\nimport { ChartColorService } from 'src/app/charts/services/chart-color.service';\r\nimport { IEmployeeExperienceSummary } from '../../models';\r\nimport { filter, tap } from 'rxjs/operators';\r\nimport { ChartData } from 'chart.js';\r\nimport { isNotNull } from '@core';\r\n\r\n@Component({\r\n selector: 'maas-employee-experience-summary-doughnut',\r\n templateUrl: './employee-experience-summary-doughnut.component.html',\r\n styleUrls: ['./employee-experience-summary-doughnut.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EmployeeExperienceSummaryDoughnutComponent implements OnInit {\r\n data: ChartData | undefined;\r\n experienceSummary$: Observable | undefined\r\n\r\n options = {\r\n maintainAspectRatio: false,\r\n cutout: '88%'\r\n };\r\n\r\n constructor(private store: Store, private colorPicker: ChartColorService) {}\r\n\r\n ngOnInit(): void {\r\n this.experienceSummary$ = this.store\r\n .select(Home.selectEmployeeExperience)\r\n .pipe(\r\n filter(isNotNull),\r\n tap(summary => {\r\n this.data = {\r\n datasets: [\r\n {\r\n backgroundColor: [this.getColor(summary.score)],\r\n borderWidth: 0,\r\n data: [100],\r\n },\r\n ],\r\n labels: [],\r\n };\r\n })\r\n );\r\n }\r\n\r\n getColor(score: number): string {\r\n return score ? this.colorPicker.colorByScore(score) ?? '' : '#BDD4E7';\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs/internal/Observable';\r\nimport { map } from 'rxjs/operators';\r\nimport { Store } from '@ngrx/store';\r\nimport { HomeState } from '../../store/reducers/home.reducers';\r\nimport { Home } from '../../store';\r\nimport { ChartColorService } from 'src/app/charts/services/chart-color.service';\r\nimport { tooltipBg, blueOne, xFontSize } from 'src/scss/constants';\r\nimport { ChartData, ChartOptions } from 'chart.js';\r\n\r\n@Component({\r\n selector: 'maas-journey-bar',\r\n templateUrl: './journey-bar.component.html',\r\n styleUrls: ['./journey-bar.component.scss'],\r\n})\r\nexport class JourneyBarComponent implements OnInit {\r\n barData$: Observable | undefined;\r\n options: ChartOptions = {\r\n maintainAspectRatio: false,\r\n plugins: {\r\n legend: {\r\n display: false,\r\n },\r\n tooltip: {\r\n mode: 'index',\r\n intersect: false,\r\n position: 'nearest',\r\n backgroundColor: tooltipBg,\r\n }\r\n },\r\n scales: {\r\n y:\r\n {\r\n\r\n display: false,\r\n suggestedMin: 0,\r\n\r\n grid: {\r\n display: false,\r\n },\r\n },\r\n\r\n x:\r\n {\r\n grid: {\r\n display: false,\r\n },\r\n ticks: {\r\n font:{style:'normal',size:xFontSize},\r\n color: blueOne,\r\n },\r\n },\r\n },\r\n };\r\n\r\n constructor(private store: Store, private colorService: ChartColorService) {}\r\n\r\n ngOnInit(): void {\r\n this.barData$ = this.store.select(Home.selectEmployeeExperience).pipe(\r\n map((summary) => summary?.phaseStats),\r\n map((phaseStats) => {\r\n const barData: ChartData = {\r\n labels: phaseStats?.map(ps => ps.name.toLowerCase()),\r\n datasets: [\r\n {\r\n backgroundColor: phaseStats?.map((ps) => this.colorService.colorByScore(ps.score)),\r\n borderWidth: 0,\r\n normalized: true,\r\n data: phaseStats?.map(ps => ps.score) ?? [],\r\n },\r\n ],\r\n };\r\n\r\n return barData;\r\n })\r\n );\r\n }\r\n}\r\n","\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'maas-employee-experience-summary',\r\n templateUrl: './employee-experience-summary.component.html',\r\n})\r\nexport class EmployeeExperienceSummaryComponent {\r\n}\r\n","
\r\n
\r\n
employee
\r\n
experience
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
journey at a glance
\r\n \r\n
\r\n\r\n
\r\n \r\n experience insights\r\n \r\n
\r\n
\r\n","
highest
\r\n\r\n\r\n \r\n
{{ supplier.name }}
\r\n
\r\n\r\n\r\n \r\n\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { HomeState } from '../../store/reducers/home.reducers';\r\nimport { Home } from '../../store';\r\nimport { Unsubscriber } from '@core';\r\n\r\n@Unsubscriber()\r\n@Component({\r\n selector: 'maas-highest-supplier',\r\n templateUrl: './highest-supplier.component.html',\r\n styleUrls: ['./highest-supplier.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class HighestSupplierComponent {\r\n supplier$ = this.store.select(Home.selectHighestSupplier);\r\n\r\n constructor(private store: Store) {}\r\n}\r\n","
lowest
\r\n\r\n\r\n \r\n
{{ supplier.name }}
\r\n
\r\n\r\n\r\n \r\n\r\n\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { HomeState } from '../../store/reducers/home.reducers';\r\nimport { Store } from '@ngrx/store';\r\nimport { Home } from '../../store';\r\n\r\n@Component({\r\n selector: 'maas-lowest-supplier',\r\n templateUrl: './lowest-supplier.component.html',\r\n styleUrls: ['./lowest-supplier.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LowestSupplierComponent {\r\n supplier$ = this.store.select(Home.selectLowestSupplier);\r\n\r\n constructor(private store: Store) {}\r\n}\r\n","
\r\n \r\n\r\n
\r\n
{{ summary.averageScore }}
\r\n
\r\n
avg. supplier
\r\n
score
\r\n
\r\n
\r\n\r\n
\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { ISupplierInsightsSummary } from '../../models/supplier-insights-summary.model';\r\nimport { Observable } from 'rxjs/internal/Observable';\r\nimport { Store } from '@ngrx/store';\r\nimport { HomeState } from '../../store/reducers/home.reducers';\r\nimport { ChartColorService } from 'src/app/charts/services/chart-color.service';\r\nimport { Home } from '../../store';\r\nimport { filter, tap } from 'rxjs/operators';\r\nimport { ChartData } from 'chart.js';\r\nimport { isNotNull } from '@core';\r\n\r\n@Component({\r\n selector: 'maas-supplier-insight-summary-doughnut',\r\n templateUrl: './supplier-insight-summary-doughnut.component.html',\r\n styleUrls: ['./supplier-insight-summary-doughnut.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SupplierInsightSummaryDoughnutComponent implements OnInit {\r\n supplierSummary$: Observable | undefined;\r\n doughnutData: ChartData | undefined;\r\n\r\n options = {\r\n maintainAspectRatio: false,\r\n cutout: '87%'\r\n };\r\n\r\n constructor(private store: Store, private colorService: ChartColorService) {}\r\n\r\n ngOnInit(): void {\r\n this.supplierSummary$ = this.store\r\n .select(Home.selectSupplierInsights)\r\n .pipe(\r\n filter(isNotNull),\r\n tap((summary: ISupplierInsightsSummary) => {\r\n this.doughnutData = {\r\n datasets: [\r\n {\r\n backgroundColor: [this.getColor(summary?.averageScore ?? 0)],\r\n borderWidth: 0,\r\n data: [100],\r\n },\r\n ],\r\n labels: [],\r\n };\r\n\r\n }));\r\n }\r\n\r\n getColor(score: number): string {\r\n return this.colorService.colorByScore(score) ?? '';\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'maas-supplier-insights-summary',\r\n templateUrl: './supplier-insights-summary.component.html',\r\n})\r\nexport class SupplierInsightsSummaryComponent {\r\n}\r\n","
\r\n
\r\n
suppliers
\r\n
insights
\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 supplier insights\r\n \r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { map } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs/internal/Observable';\r\nimport { HomeState } from '../../store/reducers/home.reducers';\r\nimport { Store } from '@ngrx/store';\r\nimport { Home } from '../../store';\r\nimport { ChartData } from 'chart.js';\r\nimport { Unsubscriber } from '@core';\r\n\r\n@Unsubscriber()\r\n@Component({\r\n selector: 'maas-survey-overview-summary-doughnut',\r\n templateUrl: './survey-overview-summary-doughnut.component.html',\r\n styleUrls: ['./survey-overview-summary-doughnut.component.scss'],\r\n})\r\n\r\nexport class SurveyOverviewSummaryDoughnutComponent implements OnInit {\r\n doughnutData$: Observable | undefined;\r\n\r\n total = 0;\r\n complete = 0;\r\n percentage = 0;\r\n averageResponseTime: string = '';\r\n\r\n options = {\r\n maintainAspectRatio: false,\r\n cutout: '87%'\r\n };\r\n\r\n constructor(private store: Store) {}\r\n\r\n ngOnInit(): void {\r\n const overview$ = this.store.select(Home.selectSurveyOverview);\r\n this.doughnutData$ = overview$.pipe(\r\n map((overview) => {\r\n this.total = overview?.totalCount ?? 0;\r\n this.complete = overview?.completedCount ?? 0;\r\n this.percentage = this.total !== 0 ? Math.round(this.complete / this.total * 100) : 0;\r\n\r\n const value = overview?.minutesSpent ?? 0;\r\n const minutes = Math.floor(value);\r\n const seconds = Math.round((value - minutes) * 60)\r\n this.averageResponseTime = `${minutes}m ${seconds}s`;\r\n\r\n const responded = overview?.completedCount ? overview?.completedCount : 100;\r\n const doughnutData: ChartData = {\r\n datasets: [\r\n {\r\n backgroundColor: [overview?.completedCount ? '#0094D2': '#BDD4E7'],\r\n borderWidth: 0,\r\n data: [responded],\r\n },\r\n ],\r\n labels: [],\r\n };\r\n return doughnutData;\r\n })\r\n );\r\n }\r\n}\r\n","
\r\n \r\n\r\n
\r\n
\r\n
{{ complete }}
\r\n /{{ total }}\r\n
\r\n\r\n
\r\n
\r\n {{ percentage }}% completed\r\n
\r\n\r\n avg. time\r\n {{ averageResponseTime }}\r\n
\r\n
\r\n\r\n
\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { TimeValueOptions } from 'src/app/dashboard';\r\nimport { ISurveyVolume } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SurveyStatsUtilsService {\r\n\r\n // the current month where 1 = Jan\r\n private currentMonth = new Date().getMonth() + 1;\r\n\r\n // generates an array of ISurveyVolume which includes missing month values\r\n // based on the TimeValueOptions and response supplied\r\n public generateSurveyStats(timeSeries: TimeValueOptions, response: ISurveyVolume[]): ISurveyVolume[] {\r\n const template = this.generateTemplate(timeSeries);\r\n\r\n response.forEach(r => {\r\n if (template.get(r.month)) {\r\n template.set(r.month, r)\r\n }\r\n });\r\n\r\n return [...template.values()];\r\n }\r\n\r\n // get the number of expected responses\r\n private getNumMonths(timeSeries: TimeValueOptions) {\r\n switch (timeSeries) {\r\n case TimeValueOptions.twelveMonths:\r\n return 11;\r\n case TimeValueOptions.threeMonths:\r\n return 2;\r\n case TimeValueOptions.currentYear:\r\n return this.currentMonth - 1;\r\n }\r\n }\r\n\r\n // get the month to start with\r\n private getStartIndex(timeSeries: TimeValueOptions) {\r\n switch (timeSeries) {\r\n case TimeValueOptions.twelveMonths:\r\n return this.currentMonth < 12 ? this.currentMonth + 1 : 1;\r\n case TimeValueOptions.threeMonths:\r\n let month = this.currentMonth - 2;\r\n return month > 0 ? month : month + 12;\r\n case TimeValueOptions.currentYear:\r\n return 1;\r\n }\r\n }\r\n\r\n // generate a template with key month (1-12) and default value { month, completedCount: 0 }\r\n private generateTemplate(timeSeries: TimeValueOptions) {\r\n const n = this.getNumMonths(timeSeries);\r\n const start = this.getStartIndex(timeSeries);\r\n\r\n const template = new Map();\r\n for (let i = start; i <= start + n; i++) {\r\n const month = i <= 12 ? i : i - 12;\r\n template.set(month, { month, completedCount: 0})\r\n }\r\n\r\n return template;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs/internal/Observable';\r\nimport { filter, map, tap, withLatestFrom } from 'rxjs/operators';\r\nimport { HomeState } from '../../store/reducers/home.reducers';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { Home } from '../../store';\r\nimport { SurveyStatsUtilsService } from '../../services/survey-stats-utils.service';\r\nimport { blueOne, xFontSize } from 'src/scss/constants';\r\nimport { ChartData, ChartOptions, Tick } from 'chart.js'\r\nimport { ISurveyStats, ISurveyVolume } from '../../models';\r\nimport { isNotNullOrUndefined } from '@core';\r\n\r\n@Component({\r\n selector: 'maas-volume-bar',\r\n templateUrl: './volume-bar.component.html',\r\n styleUrls: ['./volume-bar.component.scss'],\r\n})\r\nexport class VolumeBarComponent implements OnInit {\r\n barData$: Observable | undefined;\r\n options: ChartOptions = {\r\n maintainAspectRatio: false,\r\n plugins:{\r\n legend: {\r\n display: false,\r\n },\r\n },\r\n scales: {\r\n y:\r\n {\r\n min: 0,\r\n ticks: {\r\n display: false\r\n },\r\n grid: {\r\n drawBorder: false,\r\n display: false,\r\n },\r\n },\r\n x:\r\n {\r\n grid: {\r\n display: false,\r\n },\r\n ticks: {\r\n callback: function(val: string | number, index,ticks:Tick[]) {\r\n return index === 0 || index === ticks.length-1 // if first or last tick\r\n ? this.getLabelForValue(Number(val))?.toString().substring(0, 3)?.toLocaleLowerCase() // display the first 3 characters in lowercase\r\n : '' // else display nothing\r\n },\r\n font: {\r\n size: xFontSize,\r\n style:'normal',\r\n },\r\n color: blueOne,\r\n maxRotation: 0,\r\n minRotation: 0\r\n }\r\n },\r\n },\r\n };\r\n\r\n constructor(private store: Store, private ssUtils: SurveyStatsUtilsService) {}\r\n\r\n ngOnInit(): void {\r\n this.barData$ = this.store.pipe(\r\n select(Home.selectSurveyVolume),\r\n filter(isNotNullOrUndefined),\r\n withLatestFrom(this.store.select(Home.selectTimeSeries)),\r\n map(([v, timeSeries]) => {\r\n const volumes = this.ssUtils.generateSurveyStats(timeSeries, v);\r\n const data = volumes.map(v => v.completedCount);\r\n const max = Math.max(...data);\r\n const newOptions = {\r\n ...this.options,\r\n }\r\n if (newOptions.scales?.y?.ticks)\r\n newOptions.scales.y.ticks.maxTicksLimit = (max * 1.10);\r\n this.options = newOptions;\r\n\r\n const labels = volumes.map((v) => {\r\n switch (v.month - 1) {\r\n case 0:\r\n return 'January';\r\n case 1:\r\n return 'February';\r\n case 2:\r\n return 'March';\r\n case 3:\r\n return 'April';\r\n case 4:\r\n return 'May';\r\n case 5:\r\n return 'June';\r\n case 6:\r\n return 'July';\r\n case 7:\r\n return 'August';\r\n case 8:\r\n return 'September';\r\n case 9:\r\n return 'October';\r\n case 10:\r\n return 'November';\r\n case 11:\r\n return 'December';\r\n }\r\n });\r\n\r\n const barData: ChartData = {\r\n labels,\r\n datasets: [\r\n {\r\n backgroundColor: 'rgba(4, 106, 174,0.8)',\r\n borderColor: 'rgba(4, 106, 174,0.2)',\r\n barThickness: 6,\r\n tension: 0.35,\r\n fill: true,\r\n normalized: true,\r\n data,\r\n },\r\n ],\r\n };\r\n\r\n return barData;\r\n }),\r\n );\r\n }\r\n}\r\n","\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'maas-survey-overview-summary',\r\n templateUrl: './survey-overview-summary.component.html',\r\n styleUrls: ['./survey-overview-summary.component.scss'],\r\n})\r\nexport class SurveyOverviewSummaryComponent {\r\n}\r\n","
\r\n
\r\n
survey
\r\n
overview
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
completed
\r\n \r\n
\r\n
\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'maas-home-chevron',\r\n templateUrl: './home-chevron.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class HomeChevronComponent {\r\n\r\n}\r\n","
\r\n
\r\n\r\n
\r\n \"\"\r\n
\r\n
","
\r\n\r\n
\r\n

recent search results

\r\n \r\n
\r\n\r\n
\r\n
service
\r\n
search date
\r\n
status
\r\n
\r\n\r\n\r\n \r\n

{{ i.serviceType }}

\r\n

{{ i.creationDate | date:\"MM/dd/yyyy\" }}

\r\n

{{ i.status }}

\r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n","import { Component } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { RootState } from '@core';\r\nimport { Home } from 'src/app/home/store';\r\n\r\n@Component({\r\n selector: 'maas-recent-search-results-container',\r\n templateUrl: './recent-search-results-container.component.html',\r\n styleUrls: ['./recent-search-results-container.component.scss'],\r\n})\r\nexport class RecentSearchResultsContainerComponent {\r\n data$ = this.store.select(Home.selectRecentSearchesTopThree);\r\n constructor(private store: Store) {}\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'maas-suppliers-hire-header',\r\n templateUrl: './suppliers-hire-header.component.html',\r\n styleUrls: ['./suppliers-hire-header.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SuppliersHireHeaderComponent {\r\n @Input() employeeImpact: number = 0;\r\n}\r\n","
\r\n\r\n
\r\n

pick a service to start your search

\r\n

Find the best supplier for your company. We are the most trusted marketplace for suppliers.

\r\n
\r\n\r\n
\r\n edit profile\r\n
\r\n
\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'categoryImages'\r\n})\r\nexport class CategoryImagesPipe implements PipeTransform {\r\n\r\n // source for icons:\r\n // https://fonts.google.com/icons\r\n\r\n transform(value: string): string {\r\n const categoryName = value.toLowerCase().trim();\r\n\r\n switch (categoryName) {\r\n\r\n case 'banking':\r\n return 'badge';\r\n case 'household goods mover':\r\n return 'local_shipping';\r\n case 'health insurance':\r\n return 'health_and_safety';\r\n case 'language training':\r\n return 'translate';\r\n case 'cultural training':\r\n return 'family_restroom';\r\n case 'temporary living':\r\n return 'home';\r\n case 'destination service provider (dsp)':\r\n return 'travel_explore';\r\n case 'business travel':\r\n return 'business';\r\n case 'immigration':\r\n return 'flight_land';\r\n case 'cost-of-living consulting':\r\n return 'request_quote';\r\n case 'equity services':\r\n return 'balance';\r\n case 'tax services':\r\n return 'paid';\r\n case 'technology solutions':\r\n return 'emoji_objects';\r\n case 'payroll compliance services':\r\n return 'savings';\r\n case 'security and risk services':\r\n return 'security';\r\n case 'professional employer organization (peo)':\r\n return 'corporate_fare';\r\n case 'relocation management company (rmc)':\r\n return 'backpack';\r\n\r\n default:\r\n // image not found\r\n return 'badge';\r\n }\r\n }\r\n\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'maas-category-item',\r\n templateUrl: './category-item.component.html',\r\n styleUrls: ['./category-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CategoryItemComponent {\r\n @Input() categorySelected: boolean = false;\r\n @Input() categoryName: string = '';\r\n}\r\n","\r\n
\r\n\r\n \r\n \r\n\r\n \r\n {{ categoryName }}\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 {{ categoryVisible != serviceTypeQuestions.length ? 'show more' : 'show less' }}\r\n \r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n\r\n clear\r\n
\r\n
\r\n\r\n
\r\n number of employees\r\n \r\n \r\n \r\n \r\n \r\n {{ empRange.value }}\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n supplier search\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { IFitResponse } from 'src/app/home/models';\r\nimport { ServiceTypeQuestions, EmployeeNumberData, ServiceTypeData} from 'src/app/home/services/mock-response';\r\nimport { componentAnimations } from '@core';\r\nimport { KeyValue } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'maas-supplier-category-overview',\r\n templateUrl: './supplier-category-overview.component.html',\r\n styleUrls: ['./supplier-category-overview.component.scss'],\r\n animations: [componentAnimations]\r\n})\r\nexport class SupplierOverviewComponent implements OnInit {\r\n // number of categories to show\r\n public categoryVisible = 10;\r\n public categoryId: number = 0;\r\n public categoryName: string = '';\r\n public categorySelected: boolean = false;\r\n public serviceQuestionsMap: Map = new Map();\r\n\r\n public employerProgramForm = this.fb.group({\r\n employeeRange: ['', Validators.required],\r\n });\r\n\r\n // serviceTypes should come from api eventually\r\n private _serviceTypeQuestions: string[] = ServiceTypeQuestions;\r\n private _serviceTypeData: IFitResponse = ServiceTypeData;\r\n private _employeeNumberData: IFitResponse = EmployeeNumberData;\r\n\r\n constructor(\r\n private fb: UntypedFormBuilder,\r\n private router: Router,\r\n private route: ActivatedRoute\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n Object.keys(this._serviceTypeData.responseOptions).forEach(k => {\r\n this.serviceQuestionsMap.set(Number(k), this._serviceTypeData.responseOptions[k])\r\n });\r\n }\r\n\r\n employeeRange(): string {\r\n /*\r\n method used to provide value to query paramters\r\n if employee field selected, pass a number else no value\r\n */\r\n\r\n const resp = this.employerProgramForm.value;\r\n return resp.employeeRange ?? resp.employeeRange;\r\n }\r\n\r\n onSelectCategory(event: MouseEvent, cat: KeyValue) {\r\n event.stopPropagation();\r\n this.categorySelected = !this.categorySelected;\r\n this.categoryId = cat.key;\r\n this.categoryName = cat.value;\r\n }\r\n\r\n unselectCategory(event: MouseEvent) {\r\n event.stopPropagation();\r\n this.categorySelected = !this.categorySelected;\r\n this.employerProgramForm.reset();\r\n this.resetCategoryCount();\r\n }\r\n\r\n onShowmore() {\r\n this.categoryVisible = this.serviceTypeQuestions.length;\r\n }\r\n\r\n resetCategoryCount() {\r\n this.categoryVisible = 10;\r\n }\r\n\r\n invertKV(kv: { [key: string]: string } ) {\r\n return Object.keys(kv).reduce<{ [key: string]: string }>((obj, key) => {\r\n obj[kv[key]] = key;\r\n return obj;\r\n }, {});\r\n }\r\n\r\n routeToSupplierMatching(): void {\r\n const supplierMatchingParams = {\r\n // serviceType key\r\n 'serviceTypeId': this.categoryId,\r\n // employees number key\r\n 'numberEmployeesId': Number(this.employerProgramForm.get('employeeRange')?.value)\r\n }\r\n\r\n // pass values to supplier matching as query params\r\n this.router.navigate(\r\n [`/app/${this.route.snapshot.params.clientId}/fit/supplier-matching`],\r\n {queryParams: supplierMatchingParams}\r\n );\r\n }\r\n\r\n get serviceTypeQuestions() {\r\n return this._serviceTypeQuestions;\r\n }\r\n\r\n get employeeRangeList() {\r\n return this._employeeNumberData.responseOptions;\r\n }\r\n\r\n onClear(event: MouseEvent) {\r\n this.unselectCategory(event);\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 last updated on {{ lastUpdated +'Z' | date: 'medium' }}\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n\r\n
\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { filter, map, tap } from 'rxjs/operators';\r\n\r\nimport { RootState, Auth, Unsubscriber, SubscriptionOptions, ICurrentClient, isNotNull } from '@core';\r\nimport { TimeValueOptions } from 'src/app/dashboard';\r\nimport { HomeActions, Home } from '../../store';\r\n\r\n@Unsubscriber()\r\n@Component({\r\n selector: 'maas-home',\r\n templateUrl: './home.component.html',\r\n styleUrls: ['./home.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class HomeComponent implements OnInit {\r\n public lastUpdated$ = this.store.select(Home.selectSurveyOverview).pipe(map(overview => overview?.lastUpdatedOn));\r\n public hasInsightsAccess: boolean = false;\r\n public period: TimeValueOptions = TimeValueOptions.twelveMonths;\r\n\r\n constructor(private store: Store) {}\r\n\r\n ngOnInit() {\r\n this.store.select(Auth.selectCurrentClient).pipe(\r\n filter(isNotNull),\r\n tap(\r\n (client: ICurrentClient) => {\r\n this.hasInsightsAccess = (client.subscriptions & SubscriptionOptions.EmployerInsights) === SubscriptionOptions.EmployerInsights;\r\n\r\n if (this.hasInsightsAccess) this.store.dispatch(HomeActions.getOverviewData({ value: this.period }));\r\n this.store.dispatch(HomeActions.loadRecentSearch());\r\n })\r\n ).subscribe();\r\n\r\n }\r\n\r\n onTimeChange(value: TimeValueOptions) {\r\n this.store.dispatch(HomeActions.getOverviewData({ value }));\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { HomeComponent } from './components/home/home.component';\r\n\r\nconst routes: Routes = [\r\n { path: '', component: HomeComponent, title: 'My home' }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class HomeRoutingModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { TimeValueOptions } from 'src/app/dashboard';\r\nimport { IHomeOverviewSummary } from '../models/home-overview-summary.model';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { GetRecentSearchesDto } from 'src/app/home/models';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class HomeOverviewService {\r\n constructor(private http: HttpClient) {}\r\n\r\n getOverview(timeValue: TimeValueOptions) {\r\n const startDate = new Date();\r\n const endDate = new Date();\r\n\r\n switch (timeValue) {\r\n case TimeValueOptions.currentYear:\r\n startDate.setUTCMonth(0);\r\n startDate.setUTCDate(1);\r\n break;\r\n case TimeValueOptions.threeMonths:\r\n startDate.setUTCMonth(startDate.getMonth() - 2);\r\n startDate.setUTCDate(1);\r\n break;\r\n case TimeValueOptions.twelveMonths:\r\n startDate.setUTCMonth(startDate.getMonth() - 11);\r\n startDate.setUTCDate(1);\r\n break;\r\n }\r\n\r\n startDate.setUTCHours(0,0,0,0);\r\n\r\n return this.http.get(\r\n `insights/overview?startDate=${startDate.toISOString()}&endDate=${endDate.toISOString()}`\r\n );\r\n\r\n }\r\n\r\n getRecentSearches() {\r\n return this.http.get(`/fit/recentsearches`);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { HomeOverviewService } from '../../services/home-overview.service';\r\nimport * as HomeActions from '../actions/time-period.actions';\r\nimport { map, switchMap } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class HomeEffects {\r\n\r\n getOverviewData$ = createEffect(() =>\r\n this.action$.pipe(\r\n ofType(HomeActions.getOverviewData),\r\n switchMap((action) =>\r\n this.homeOverviewService.getOverview(action.value).pipe(\r\n map((resp) => HomeActions.getOverviewDataSuccess({value: resp}))\r\n )\r\n )\r\n )\r\n );\r\n\r\n constructor(\r\n private action$: Actions,\r\n private homeOverviewService: HomeOverviewService\r\n ) {}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { map, switchMap } from 'rxjs/operators';\r\n\r\nimport { HomeOverviewService } from 'src/app/home/services/home-overview.service';\r\nimport * as HomeActions from 'src/app/home/store/actions';\r\n\r\n\r\n@Injectable()\r\nexport class MarketplaceEffects {\r\n\r\n getRecentSearch$ = createEffect(() =>\r\n this.action$.pipe(\r\n ofType(HomeActions.loadRecentSearch),\r\n switchMap(() =>\r\n this.homeOverviewService.getRecentSearches().pipe(\r\n map((searchList) => HomeActions.loadRecentSearchSuccess({recentSearch: searchList}))\r\n )\r\n )\r\n )\r\n );\r\n\r\n constructor(\r\n private action$: Actions,\r\n private homeOverviewService: HomeOverviewService,\r\n ) {}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport * as fromHome from './reducers/home.reducers';\r\nimport { homeReducer } from './reducers/home.reducers';\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { HomeEffects } from './effects/home.effects';\r\nimport { MarketplaceEffects } from './effects/marketplace.effects';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n StoreModule.forFeature(fromHome.homeFeatureKey, homeReducer),\r\n EffectsModule.forFeature([HomeEffects, MarketplaceEffects]),\r\n ],\r\n})\r\nexport class HomeStoreModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\n\r\nimport { HomeRoutingModule } from './home-routing.module';\r\nimport { ChartsModule } from '../charts/charts.module';\r\nimport { SharedModule } from '../@shared';\r\nimport { HomeStoreModule } from './store/home-store.module';\r\nimport { CategoryImagesPipe } from './services/category-images.pipe';\r\nimport {\r\n HomeComponent,\r\n EmployeeExperienceSummaryDoughnutComponent,\r\n EmployeeExperienceSummaryDoughnutInnerTextComponent,\r\n JourneyBarComponent,\r\n EmployeeExperienceSummaryComponent,\r\n SupplierInsightsSummaryComponent,\r\n HighestSupplierComponent,\r\n LowestSupplierComponent,\r\n SupplierInsightSummaryDoughnutComponent,\r\n SurveyOverviewSummaryComponent,\r\n SurveyOverviewSummaryDoughnutComponent,\r\n VolumeBarComponent,\r\n HomeChevronComponent,\r\n RecentSearchResultsContainerComponent,\r\n SuppliersHireHeaderComponent,\r\n SupplierOverviewComponent,\r\n CategoryItemComponent,\r\n} from './components';\r\nimport { SupplierHomeModule } from '../supplier-home/supplier-home.module';\r\nimport { DashboardModule } from '../dashboard/dashboard.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n HomeComponent,\r\n EmployeeExperienceSummaryDoughnutComponent,\r\n EmployeeExperienceSummaryDoughnutInnerTextComponent,\r\n JourneyBarComponent,\r\n EmployeeExperienceSummaryComponent,\r\n SupplierInsightsSummaryComponent,\r\n HighestSupplierComponent,\r\n LowestSupplierComponent,\r\n SupplierInsightSummaryDoughnutComponent,\r\n SurveyOverviewSummaryComponent,\r\n SurveyOverviewSummaryDoughnutComponent,\r\n VolumeBarComponent,\r\n HomeChevronComponent,\r\n RecentSearchResultsContainerComponent,\r\n SuppliersHireHeaderComponent,\r\n SupplierOverviewComponent,\r\n CategoryItemComponent,\r\n CategoryImagesPipe,\r\n ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n DashboardModule,\r\n HomeRoutingModule,\r\n ChartsModule,\r\n HomeStoreModule,\r\n MatTabsModule,\r\n SupplierHomeModule\r\n ]\r\n})\r\nexport class HomeModule {}\r\n"],"x_google_ignoreList":[]}